@thibezer/ui-components-kit 2.10.1 → 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +2 -2
  3. package/dist/camadas.cjs +2 -2
  4. package/dist/camadas.js +6 -9
  5. package/dist/canvas.cjs +50 -50
  6. package/dist/canvas.js +2219 -2083
  7. package/dist/components/ui-canvas-cad/cad-linha-padrao.d.ts +27 -0
  8. package/dist/components/ui-canvas-cad/index.d.ts +2 -0
  9. package/dist/components/ui-canvas-cad/tipos.d.ts +25 -4
  10. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +10 -1
  11. package/dist/components/ui-cores/cores-utils.d.ts +1 -1
  12. package/dist/components/ui-cores/tipos.d.ts +2 -2
  13. package/dist/components/ui-cores/ui-controle-cores.d.ts +1 -1
  14. package/dist/components/ui-cores/ui-seletor-cor.d.ts +8 -4
  15. package/dist/cores.cjs +1 -1
  16. package/dist/cores.js +2 -2
  17. package/dist/custom-elements.json +17522 -17235
  18. package/dist/form-validacao-BIOXxt-1.js +140 -0
  19. package/dist/form-validacao-ytRYSF3E.cjs +1 -0
  20. package/dist/gerencigeo-canvas/feature_types.d.ts +17 -0
  21. package/dist/gerencigeo-canvas/motor/estilo.d.ts +8 -0
  22. package/dist/gerencigeo-canvas/motor/index.d.ts +1 -0
  23. package/dist/gerencigeo-canvas/motor/tipos-linha.d.ts +22 -0
  24. package/dist/gerencigeo-canvas/renderers/renderizador_formas.d.ts +2 -0
  25. package/dist/gerencigeo-canvas/types.d.ts +11 -0
  26. package/dist/index.cjs +1 -1
  27. package/dist/index.js +2 -2
  28. package/dist/motor-BCWqlv3e.cjs +1 -0
  29. package/dist/motor-CXjQjVba.js +1386 -0
  30. package/dist/motor.cjs +1 -1
  31. package/dist/motor.js +45 -38
  32. package/dist/register.cjs +1 -1
  33. package/dist/register.js +2 -2
  34. package/dist/svg-seguro-BsbNQqpd.js +50 -0
  35. package/dist/svg-seguro-C76iLlAZ.cjs +1 -0
  36. package/dist/tipos-elementos.d.ts +9 -0
  37. package/dist/tipos-vue.d.ts +9 -0
  38. package/dist/ui-badge-BxT-sDmV.cjs +28 -0
  39. package/dist/ui-badge-C0eKBI8E.js +183 -0
  40. package/dist/ui-botao-BOOnP8ds.cjs +12 -0
  41. package/dist/ui-botao-DfqSivHl.js +165 -0
  42. package/dist/ui-botao-OGJV6Vfk.js +165 -0
  43. package/dist/ui-botao-psS1juof.cjs +12 -0
  44. package/dist/ui-campo-texto-Cnn2UAkS.cjs +16 -0
  45. package/dist/ui-campo-texto-Uu2dJE_0.js +379 -0
  46. package/dist/ui-card-B86lJXTP.cjs +20 -0
  47. package/dist/ui-card-C_o5_0cB.js +111 -0
  48. package/dist/{ui-controle-cores-DMtTUtLk.js → ui-controle-cores-B4R6ct4I.js} +9 -10
  49. package/dist/ui-controle-cores-BS0WYPdi.js +572 -0
  50. package/dist/{ui-controle-cores-CohlwXJK.cjs → ui-controle-cores-C8um-If9.cjs} +2 -2
  51. package/dist/ui-controle-cores-CHMKGemo.cjs +141 -0
  52. package/dist/ui-controle-cores-Dog7ERYv.js +697 -0
  53. package/dist/ui-controle-cores-Er6ZcQ7U.cjs +111 -0
  54. package/dist/ui-modal-CvGFGh1h.cjs +18 -0
  55. package/dist/ui-modal-DBOtSTbR.js +238 -0
  56. package/dist/ui-paleta-ferramentas-CEZYcN4J.js +624 -0
  57. package/dist/ui-paleta-ferramentas-CU4icLl0.js +1171 -0
  58. package/dist/ui-paleta-ferramentas-Ccmo-rB5.cjs +21 -0
  59. package/dist/ui-paleta-ferramentas-DLwZHIDv.cjs +21 -0
  60. package/dist/ui-paleta-ferramentas-DNN5i6nL.js +860 -0
  61. package/dist/ui-paleta-ferramentas-Dbj1kBS9.cjs +18 -0
  62. package/dist/ui-paleta-ferramentas-DbwdWVtT.js +1173 -0
  63. package/dist/ui-paleta-ferramentas-bvqxj1Yd.cjs +21 -0
  64. package/dist/ui-segmented-D6b6zxVs.cjs +19 -0
  65. package/dist/ui-segmented-DyF5YLsV.js +418 -0
  66. package/dist/ui-segmented-rn9RxRGM.cjs +19 -0
  67. package/dist/ui-segmented-wUraId2e.js +412 -0
  68. package/dist/ui-seletor-cor-C4U2eqxY.cjs +82 -0
  69. package/dist/ui-seletor-cor-D2_C6Aor.js +391 -0
  70. package/dist/ui-skeleton-DI4_9WOX.js +428 -0
  71. package/dist/ui-skeleton-SPYqku8P.cjs +52 -0
  72. package/dist/ui-skeleton-W9uwIceA.js +585 -0
  73. package/dist/ui-skeleton-elhKIh2B.cjs +33 -0
  74. package/dist/ui-switch-BcOqOkiV.js +856 -0
  75. package/dist/ui-switch-D7iPKDj-.cjs +53 -0
  76. package/dist/ui-tabela-propriedades-BBr5sqki.cjs +145 -0
  77. package/dist/ui-tabela-propriedades-BecPqC-e.cjs +141 -0
  78. package/dist/ui-tabela-propriedades-BokvDD3b.js +2648 -0
  79. package/dist/ui-tabela-propriedades-Boy7I5yW.js +2412 -0
  80. package/dist/ui-tabela-propriedades-C-PeuW1i.cjs +141 -0
  81. package/dist/ui-tabela-propriedades-Df9ajC6M.js +2648 -0
  82. package/dist/ui-toast-Bp_NlM5G.js +156 -0
  83. package/dist/ui-toast-DGTZKne5.cjs +20 -0
  84. package/dist/zero-js-triggers-C_KrvFOQ.js +244 -0
  85. package/dist/zero-js-triggers-C_gtaojZ.cjs +1 -0
  86. package/package.json +187 -186
  87. package/dist/motor-BB6tB6U-.cjs +0 -1
  88. package/dist/motor-BKT2eStP.js +0 -1301
  89. package/dist/ui-seletor-cor-D9iI7yew.js +0 -413
  90. package/dist/ui-seletor-cor-Ft06TEUH.cjs +0 -110
package/dist/canvas.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Ra=Object.defineProperty;var Ba=(n,t,e)=>t in n?Ra(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var f=(n,t,e)=>Ba(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const b=require("leaflet"),E=require("./leaflet-DcO7uRC-.cjs"),g=require("./motor-BB6tB6U-.cjs"),Ut=require("./listener-bag-D5omxZ9h.cjs"),vo=require("./ssr-safe-CiHD1adl.cjs"),ge={perimetroWeight:1,fechamentoWeight:1,vizinhoWeight:1,bancoWeight:1,markerSizeBase:10,markerStyleM:"circle-dot",markerSizeM:14,markerStyleP:"circle",markerSizeP:10,markerStyleV:"cross",markerSizeV:8,enableAnimations:!1,preferCanvas:!0,crosshair:!1,satOpacity:1,magnetSnap:!1},rt=class rt{constructor(){f(this,"config");this.config=this.loadConfig()}static getInstance(){return rt.instance||(rt.instance=new rt),rt.instance}loadConfig(){try{const t=typeof localStorage<"u"?localStorage.getItem("gerencigeo_mapa_config"):null;if(t)return{...ge,...JSON.parse(t)}}catch(t){console.error("Erro ao carregar configurações do mapa",t)}return{...ge}}saveConfig(t){this.config={...this.config,...t},typeof localStorage<"u"&&localStorage.setItem("gerencigeo_mapa_config",JSON.stringify(this.config))}getConfig(){return this.config=this.loadConfig(),{...this.config}}};f(rt,"instance");let Wt=rt;const ze="sob-demanda",Va=700;function Zt(n){const t=typeof n=="string"?n.trim().toLowerCase():"";return t==="automatico"||t==="desligado"||t==="sob-demanda"?t:ze}const qt=new WeakMap;function Ha(n){const t=n&&typeof n=="object"?n.options:void 0;return!!t&&t.closeButton!==void 0&&t.autoPan!==void 0}function ke(n,t){const e=n?qt.get(n):void 0;return e?e.liberar(t):t()}class Ga{constructor(t,e=ze){f(this,"liberados",0);f(this,"emClique",!1);f(this,"pendentes",new Map);f(this,"instalado",!0);f(this,"original");f(this,"container",null);f(this,"marcarClique",()=>{this.emClique=!0,queueMicrotask(()=>{this.emClique=!1})});var a;this.map=t,this.modoAtual=e,this.original=t.addLayer;const o=this;t.addLayer=function(i){return Ha(i)?o.aoAbrir(this,i):o.original.call(this,i)},this.container=typeof t.getContainer=="function"?t.getContainer():null,(a=this.container)==null||a.addEventListener("click",this.marcarClique,!0),qt.set(t,this)}get modo(){return this.modoAtual}definirModo(t){this.modoAtual=Zt(t),this.modoAtual!=="sob-demanda"&&this.cancelarPendentes()}liberar(t){this.liberados++;try{return t()}finally{this.liberados--}}destruir(){var t;this.instalado&&(this.instalado=!1,this.cancelarPendentes(),(t=this.container)==null||t.removeEventListener("click",this.marcarClique,!0),delete this.map.addLayer,qt.get(this.map)===this&&qt.delete(this.map))}aoAbrir(t,e){return this.modoAtual==="automatico"?this.original.call(t,e):this.emClique&&this.liberados===0?(this.modoAtual==="sob-demanda"&&this.aguardarDuploClique(e),t):(e.options&&(e.options.autoPan=!1),this.original.call(t,e))}aguardarDuploClique(t){const e=t&&typeof t=="object"?t._source:null;if(!e||typeof e.on!="function"||typeof e.off!="function"||this.pendentes.has(e))return;let o;const a=()=>{e.off("dblclick",i),o!==void 0&&clearTimeout(o),this.pendentes.delete(e)},i=r=>{a(),this.liberar(()=>{var s;return(s=e.openPopup)==null?void 0:s.call(e,typeof e.getLatLng=="function"||r==null?void 0:r.latlng)})};o=setTimeout(a,Va),e.on("dblclick",i),this.pendentes.set(e,a)}cancelarPendentes(){for(const t of[...this.pendentes.values()])t();this.pendentes.clear()}}async function ja(n,t,e,o){const a=n.getSize(),i=n.getBounds(),r=i.getSouthWest(),s=i.getNorthEast(),c=`${r.lng},${r.lat},${s.lng},${s.lat}`;let l=0,d=0;try{if(t.containerPoint)l=Math.round(t.containerPoint.x),d=Math.round(t.containerPoint.y);else if(t.layerPoint){const y=n.layerPointToContainerPoint(t.layerPoint);l=Math.round(y.x),d=Math.round(y.y)}}catch{l=0,d=0}const h=`https://acervofundiario.incra.gov.br/i3geo/ogc.php?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=certificada_sigef_particular_pr&LAYERS=certificada_sigef_particular_pr&INFO_FORMAT=application/json&X=${l}&Y=${d}&WIDTH=${a.x}&HEIGHT=${a.y}&SRS=EPSG:4326&BBOX=${c}`,u=n.getContainer();u.style.cursor="wait";const m=b.popup({className:"compact-sigef-popup",maxWidth:250}).setLatLng(t.latlng).setContent(`
1
+ "use strict";var Ga=Object.defineProperty;var ja=(i,t,e)=>t in i?Ga(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var f=(i,t,e)=>ja(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const b=require("leaflet"),E=require("./leaflet-DcO7uRC-.cjs"),m=require("./motor-BCWqlv3e.cjs"),Zt=require("./listener-bag-D5omxZ9h.cjs"),Po=require("./ssr-safe-CiHD1adl.cjs"),ye={perimetroWeight:1,fechamentoWeight:1,vizinhoWeight:1,bancoWeight:1,markerSizeBase:10,markerStyleM:"circle-dot",markerSizeM:14,markerStyleP:"circle",markerSizeP:10,markerStyleV:"cross",markerSizeV:8,enableAnimations:!1,preferCanvas:!0,crosshair:!1,satOpacity:1,magnetSnap:!1},rt=class rt{constructor(){f(this,"config");this.config=this.loadConfig()}static getInstance(){return rt.instance||(rt.instance=new rt),rt.instance}loadConfig(){try{const t=typeof localStorage<"u"?localStorage.getItem("gerencigeo_mapa_config"):null;if(t)return{...ye,...JSON.parse(t)}}catch(t){console.error("Erro ao carregar configurações do mapa",t)}return{...ye}}saveConfig(t){this.config={...this.config,...t},typeof localStorage<"u"&&localStorage.setItem("gerencigeo_mapa_config",JSON.stringify(this.config))}getConfig(){return this.config=this.loadConfig(),{...this.config}}};f(rt,"instance");let Xt=rt;const Ie="sob-demanda",Ua=700;function Yt(i){const t=typeof i=="string"?i.trim().toLowerCase():"";return t==="automatico"||t==="desligado"||t==="sob-demanda"?t:Ie}const Ft=new WeakMap;function Wa(i){const t=i&&typeof i=="object"?i.options:void 0;return!!t&&t.closeButton!==void 0&&t.autoPan!==void 0}function De(i,t){const e=i?Ft.get(i):void 0;return e?e.liberar(t):t()}class Za{constructor(t,e=Ie){f(this,"liberados",0);f(this,"emClique",!1);f(this,"pendentes",new Map);f(this,"instalado",!0);f(this,"original");f(this,"container",null);f(this,"marcarClique",()=>{this.emClique=!0,queueMicrotask(()=>{this.emClique=!1})});var a;this.map=t,this.modoAtual=e,this.original=t.addLayer;const o=this;t.addLayer=function(n){return Wa(n)?o.aoAbrir(this,n):o.original.call(this,n)},this.container=typeof t.getContainer=="function"?t.getContainer():null,(a=this.container)==null||a.addEventListener("click",this.marcarClique,!0),Ft.set(t,this)}get modo(){return this.modoAtual}definirModo(t){this.modoAtual=Yt(t),this.modoAtual!=="sob-demanda"&&this.cancelarPendentes()}liberar(t){this.liberados++;try{return t()}finally{this.liberados--}}destruir(){var t;this.instalado&&(this.instalado=!1,this.cancelarPendentes(),(t=this.container)==null||t.removeEventListener("click",this.marcarClique,!0),delete this.map.addLayer,Ft.get(this.map)===this&&Ft.delete(this.map))}aoAbrir(t,e){return this.modoAtual==="automatico"?this.original.call(t,e):this.emClique&&this.liberados===0?(this.modoAtual==="sob-demanda"&&this.aguardarDuploClique(e),t):(e.options&&(e.options.autoPan=!1),this.original.call(t,e))}aguardarDuploClique(t){const e=t&&typeof t=="object"?t._source:null;if(!e||typeof e.on!="function"||typeof e.off!="function"||this.pendentes.has(e))return;let o;const a=()=>{e.off("dblclick",n),o!==void 0&&clearTimeout(o),this.pendentes.delete(e)},n=r=>{a(),this.liberar(()=>{var s;return(s=e.openPopup)==null?void 0:s.call(e,typeof e.getLatLng=="function"||r==null?void 0:r.latlng)})};o=setTimeout(a,Ua),e.on("dblclick",n),this.pendentes.set(e,a)}cancelarPendentes(){for(const t of[...this.pendentes.values()])t();this.pendentes.clear()}}async function Xa(i,t,e,o){const a=i.getSize(),n=i.getBounds(),r=n.getSouthWest(),s=n.getNorthEast(),c=`${r.lng},${r.lat},${s.lng},${s.lat}`;let l=0,d=0;try{if(t.containerPoint)l=Math.round(t.containerPoint.x),d=Math.round(t.containerPoint.y);else if(t.layerPoint){const y=i.layerPointToContainerPoint(t.layerPoint);l=Math.round(y.x),d=Math.round(y.y)}}catch{l=0,d=0}const h=`https://acervofundiario.incra.gov.br/i3geo/ogc.php?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=certificada_sigef_particular_pr&LAYERS=certificada_sigef_particular_pr&INFO_FORMAT=application/json&X=${l}&Y=${d}&WIDTH=${a.x}&HEIGHT=${a.y}&SRS=EPSG:4326&BBOX=${c}`,p=i.getContainer();p.style.cursor="wait";const g=b.popup({className:"compact-sigef-popup",maxWidth:250}).setLatLng(t.latlng).setContent(`
2
2
  <div style="font-family:var(--ui-fonte-base, sans-serif); display:flex; align-items:center; gap:8px; color:rgba(255,255,255,0.9); font-size:12px;">
3
3
  <svg style="animation:spin 1s linear infinite; width:14px; height:14px; flex-shrink:0;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
4
4
  <circle cx="12" cy="12" r="10" stroke="rgba(255,255,255,0.2)" stroke-width="4" fill="none"></circle>
@@ -6,12 +6,12 @@
6
6
  </svg>
7
7
  Consultando...
8
8
  </div>
9
- `);ke(n,()=>m.openOn(n)),o.currentAbortController&&o.currentAbortController.abort(),o.currentAbortController=new AbortController;const v=o.currentAbortController.signal,p=setTimeout(()=>{o.currentAbortController&&o.currentAbortController.abort()},8e3);try{const A=typeof window<"u"&&(window.location.origin.includes("localhost")||window.location.origin.includes("127.0.0.1")||window.location.origin.includes("[::1]"))?`${e}/proxy/sigef?url=${encodeURIComponent(h)}`:`${window.location.origin}/api.php?action=proxy_sigef&url=${encodeURIComponent(h)}`,k=await fetch(A,{signal:v});clearTimeout(p);let S=null;if(k.ok){const L=await k.text();try{S=JSON.parse(L)}catch{S=null}}if(S&&S.features&&S.features.length>0){const L=S.features[0],x=L.properties||{},P=String(L.id||x.parcela_codigo||x.co_parcela||x.id_parcela||""),C=String(x.nome_area||x.nome_imovel||"Imóvel Sem Nome");if(P){const w=encodeURIComponent(P),I=`https://sigef.incra.gov.br/geo/exportar/parcela/shp/${w}/`,M=`https://sigef.incra.gov.br/geo/parcela/detalhe/${w}/`,z=document.createElement("div");z.style.cssText="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.4; min-width:180px;",z.innerHTML=`
9
+ `);De(i,()=>g.openOn(i)),o.currentAbortController&&o.currentAbortController.abort(),o.currentAbortController=new AbortController;const v=o.currentAbortController.signal,u=setTimeout(()=>{o.currentAbortController&&o.currentAbortController.abort()},8e3);try{const A=typeof window<"u"&&(window.location.origin.includes("localhost")||window.location.origin.includes("127.0.0.1")||window.location.origin.includes("[::1]"))?`${e}/proxy/sigef?url=${encodeURIComponent(h)}`:`${window.location.origin}/api.php?action=proxy_sigef&url=${encodeURIComponent(h)}`,k=await fetch(A,{signal:v});clearTimeout(u);let S=null;if(k.ok){const C=await k.text();try{S=JSON.parse(C)}catch{S=null}}if(S&&S.features&&S.features.length>0){const C=S.features[0],x=C.properties||{},P=String(C.id||x.parcela_codigo||x.co_parcela||x.id_parcela||""),L=String(x.nome_area||x.nome_imovel||"Imóvel Sem Nome");if(P){const w=encodeURIComponent(P),I=`https://sigef.incra.gov.br/geo/exportar/parcela/shp/${w}/`,M=`https://sigef.incra.gov.br/geo/parcela/detalhe/${w}/`,z=document.createElement("div");z.style.cssText="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.4; min-width:180px;",z.innerHTML=`
10
10
  <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; padding-bottom:5px; border-bottom:1px solid rgba(255, 255, 255, 0.1);">
11
11
  <span style="font-weight:700; font-size:11px; color:#10b981; text-transform:uppercase; letter-spacing:0.5px;">SIGEF</span>
12
12
  <span style="font-size:10px; color:rgba(255, 255, 255, 0.5);">${E.escapeHtml(x.situacao_informada||x.status||"Certificada")}</span>
13
13
  </div>
14
- <div style="font-weight:700; font-size:12px; margin-bottom:4px; color:#ffffff; word-break:break-word;">${E.escapeHtml(C)}</div>
14
+ <div style="font-weight:700; font-size:12px; margin-bottom:4px; color:#ffffff; word-break:break-word;">${E.escapeHtml(L)}</div>
15
15
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.7); margin-bottom:2px;">Cód: <span style="font-family:var(--ui-fonte-codigo, monospace);">${E.escapeHtml(x.codigo_imovel||"N/A")}</span></div>
16
16
  <div style="display:flex; gap:12px; font-size:11px; color:rgba(255, 255, 255, 0.7); margin-bottom:6px;">
17
17
  <span>Mat: <strong style="color:#ffffff;">${E.escapeHtml(x.registro_matricula||x.matricula||"N/A")}</strong></span>
@@ -31,107 +31,107 @@
31
31
  Abrir no SIGEF
32
32
  </a>
33
33
  </div>
34
- `;const D=z.querySelector(".btn-importar-confrontante-sigef");D&&D.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:importar_vizinho_sigef",{detail:{uuid:P,nome:C}}))}),m.setContent(z)}else m.setContent(`
34
+ `;const D=z.querySelector(".btn-importar-confrontante-sigef");D&&D.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:importar_vizinho_sigef",{detail:{uuid:P,nome:L}}))}),g.setContent(z)}else g.setContent(`
35
35
  <div style="font-family:var(--ui-fonte-base, sans-serif); font-size:12px; color:#b45309; padding:2px 0;">
36
36
  Lote identificado, mas código da parcela indisponível.
37
37
  </div>
38
- `)}else m.setContent(`
38
+ `)}else g.setContent(`
39
39
  <div style="font-family:var(--ui-fonte-base, sans-serif); font-size:12px; color:rgba(255, 255, 255, 0.7); padding:2px 0;">
40
40
  Nenhum imóvel SIGEF certificado neste ponto.
41
41
  </div>
42
- `)}catch(y){y.name==="AbortError"?m.setContent(`
42
+ `)}catch(y){y.name==="AbortError"?g.setContent(`
43
43
  <div style="font-family:var(--ui-fonte-base, sans-serif); font-size:12px; color:#f59e0b; padding:2px 0;">
44
44
  Consulta cancelada ou tempo limite de resposta esgotado.
45
45
  </div>
46
- `):(console.warn("Erro ao consultar SIGEF:",y),m.setContent(`
46
+ `):(console.warn("Erro ao consultar SIGEF:",y),g.setContent(`
47
47
  <div style="font-family:var(--ui-fonte-base, sans-serif); font-size:12px; color:#f59e0b; padding:2px 0;">
48
48
  Serviço de consulta SIGEF indisponível nesta área.
49
49
  </div>
50
- `))}finally{u.style.cursor=""}}function Ua(n,t){if(!n)return;const e=Math.floor(n.getZoom()),o=Math.max(e,12),a=Math.min(e+1,19),i=t.pad(.2),r=["mt0","mt1","mt2","mt3"];let s=0;const c=32;for(let l=o;l<=a&&s<c;l++){const d=i.getNorthWest(),h=i.getSouthEast(),u=Ue(d.lng,l),m=Ue(h.lng,l),v=We(d.lat,l),p=We(h.lat,l);for(let y=u;y<=m&&s<c;y++)for(let A=v;A<=p&&s<c;A++){const S=`https://${r[(y+A)%r.length]}.google.com/vt/lyrs=s,h&x=${y}&y=${A}&z=${l}`,L=new Image;L.src=S,s++}}}function Ue(n,t){return Math.floor((n+180)/360*Math.pow(2,t))}function We(n,t){const e=n*Math.PI/180;return Math.floor((1-Math.log(Math.tan(e)+1/Math.cos(e))/Math.PI)/2*Math.pow(2,t))}const Wa={zoomSnap:.25,zoomDelta:.5,wheelPxPerZoomLevel:90};function Za(n,t){const e=n;return!e||!t||e._popup!==t?!1:(e._popup=null,!0)}function Xa(n){n.on("popupclose",t=>{Za(n,t.popup)})}class yo{constructor(t){f(this,"map",null);f(this,"configManager",Wt.getInstance());f(this,"config",this.configManager.getConfig());f(this,"apiBaseUrl","/api");f(this,"bancoPontosGroup",b.layerGroup());f(this,"pontosVizinhosGroup",b.layerGroup());f(this,"controller");f(this,"containerElement",null);f(this,"bc");f(this,"sigefState",{});f(this,"popups",null);f(this,"modoPopups",ze);this.controller=t}definirModoPopups(t){var e;this.modoPopups=Zt(t),(e=this.popups)==null||e.definirModo(this.modoPopups)}init(t){var o;if(this.map){(o=this.popups)==null||o.destruir(),this.popups=null;try{this.map.off(),this.map.remove()}catch{}finally{this.map=null}}const e=typeof t=="string"?document.getElementById(t):t;if(!e)return null;if(this.containerElement=e,e._leaflet_id)try{delete e._leaflet_id}catch{e._leaflet_id=void 0}if(this.map=b.map(e,{maxZoom:24,scrollWheelZoom:!0,preferCanvas:this.config.preferCanvas!==void 0?this.config.preferCanvas:!0,zoomControl:!1,...Wa}).setView([-23.7661,-53.3204],14),this.popups=new Ga(this.map,this.modoPopups),this.listenConfigBroadcast(),this.applyMapStyles(),Xa(this.map),!this.map.getPane("sigefPane")){const a=this.map.createPane("sigefPane");a.style.zIndex="390"}if(!this.map.getPane("perimetroPane")){const a=this.map.createPane("perimetroPane");a.style.zIndex="520"}if(!this.map.getPane("verticesPane")){const a=this.map.createPane("verticesPane");a.style.zIndex="650"}return b.control.scale({metric:!0,imperial:!1,position:"bottomleft"}).addTo(this.map),this.map.on("click",a=>{var s,c,l;if(this.controller.modoCliqueSequencialAtivo||this.controller.canvasInteracao&&this.controller.canvasInteracao.selectionHappened)return;const i=(s=this.controller.canvasInteracao)==null?void 0:s.ctx;if((c=i==null?void 0:i.ferramentaAtiva)!=null&&c.call(i)||(l=i==null?void 0:i.edicaoAtiva)!=null&&l.call(i))return;(this.controller.layerManager?this.controller.layerManager.isLayerActiveAndSelectable("sigef"):!1)&&this.consultarSigef(a)}),setTimeout(()=>{this.invalidateSize()},250),this.map}invalidateSize(t=!1){var e,o;if(this.map)try{const a=(o=(e=this.map).getContainer)==null?void 0:o.call(e);if(!a||!a.parentNode)return;this.map.invalidateSize({animate:t,pan:!1})}catch{}}applyMapStyles(){const t=this.containerElement||document.getElementById("mapa-triagem");t&&(t.style.cursor=this.config.crosshair?"crosshair":"")}listenConfigBroadcast(){if(!(typeof BroadcastChannel>"u"))try{this.bc=new BroadcastChannel("gerencigeo_map_config"),this.bc.onmessage=t=>{t.data==="RELOAD_REQUIRED"&&(this.config=this.configManager.getConfig(),this.applyMapStyles(),window.dispatchEvent(new CustomEvent("gerencigeo:map_config_changed",{detail:this.config})))}}catch{}}destroy(){var t;if(this.sigefState.currentAbortController&&(this.sigefState.currentAbortController.abort(),this.sigefState.currentAbortController=void 0),this.bc){try{this.bc.close()}catch{}this.bc=void 0}if(this.map){(t=this.popups)==null||t.destruir(),this.popups=null;try{this.map.off(),this.map.remove()}catch{}finally{this.map=null}}if(this.containerElement&&this.containerElement._leaflet_id)try{delete this.containerElement._leaflet_id}catch{this.containerElement._leaflet_id=void 0}}preCarregarTilesRegiao(t){Ua(this.map,t)}async consultarSigef(t){this.map&&await ja(this.map,t,this.apiBaseUrl,this.sigefState)}}function Ze(n){if(!n)return!1;const t=n;return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||t.isContentEditable===!0}const Ya='button, a[href], summary, [role="button"], [role="menuitem"], [role="tab"], [role="switch"], [role="checkbox"], [role="option"]';function bo(n){var e;const t=((e=n.composedPath)==null?void 0:e.call(n)[0])??n.target;return t instanceof Element?t.closest(Ya)!==null:!1}function Mt(n){var o,a;const t=(o=n==null?void 0:n.composedPath)==null?void 0:o.call(n)[0];if(t instanceof Element)return Ze(t);let e=typeof document>"u"?null:document.activeElement;for(;(a=e==null?void 0:e.shadowRoot)!=null&&a.activeElement;)e=e.shadowRoot.activeElement;return Ze(e)}const xo=["verticesPane","perimetroPane","overlayPane","markerPane","pane-vertices","pane-perimetro","pane-vizinhos","pane-homologados","pane-homologados-pontos"];class Ka{constructor(t,e,o){f(this,"map");f(this,"mapContainer");f(this,"ctx");f(this,"selectionDiv",null);f(this,"isSelecting",!1);f(this,"selectStartPos",{x:0,y:0});f(this,"selectStartPoint",null);this.map=t,this.mapContainer=e,this.ctx=o,this.criarDivSelecao()}criarDivSelecao(){this.selectionDiv||(this.selectionDiv=document.createElement("div"),this.selectionDiv.className="cad-selection-box",this.selectionDiv.style.position="absolute",this.selectionDiv.style.zIndex="9999",this.selectionDiv.style.pointerEvents="none",this.selectionDiv.style.display="none",this.selectionDiv.style.borderRadius="2px",this.mapContainer.style.position="relative",this.mapContainer.appendChild(this.selectionDiv))}setPanesPointerEvents(t){xo.forEach(e=>{const o=this.map.getPane(e);o&&(o.style.pointerEvents=t)})}iniciarSelecao(t){const e=this.mapContainer.getBoundingClientRect(),o=t.clientX-e.left,a=t.clientY-e.top;this.isSelecting=!0,this.selectStartPos={x:o,y:a},this.selectStartPoint=this.map.mouseEventToContainerPoint(t),this.selectionDiv&&(this.selectionDiv.style.left=`${o}px`,this.selectionDiv.style.top=`${a}px`,this.selectionDiv.style.width="0px",this.selectionDiv.style.height="0px",this.selectionDiv.style.display="block"),this.setPanesPointerEvents("none")}atualizarSelecao(t){if(!this.isSelecting||!this.selectionDiv)return;const e=this.mapContainer.getBoundingClientRect(),o=t.clientX-e.left,a=t.clientY-e.top,i=Math.abs(o-this.selectStartPos.x),r=Math.abs(a-this.selectStartPos.y),s=Math.min(o,this.selectStartPos.x),c=Math.min(a,this.selectStartPos.y);this.selectionDiv.style.left=`${Math.round(s)}px`,this.selectionDiv.style.top=`${Math.round(c)}px`,this.selectionDiv.style.width=`${Math.round(i)}px`,this.selectionDiv.style.height=`${Math.round(r)}px`,o>=this.selectStartPos.x?(this.selectionDiv.style.background="rgba(14, 116, 144, 0.22)",this.selectionDiv.style.border="1px solid #06b6d4"):(this.selectionDiv.style.background="rgba(16, 185, 129, 0.22)",this.selectionDiv.style.border="1px dashed #10b981")}finalizarSelecao(t,e,o){var k,S,L,x,P,C,w,I,M;if(!this.isSelecting)return!1;this.isSelecting=!1,this.selectionDiv&&(this.selectionDiv.style.display="none"),this.map.closePopup();try{this.setPanesPointerEvents("auto"),(k=this.ctx.layerManager)==null||k.ensurePanes()}catch{}const a=this.mapContainer.getBoundingClientRect(),i=t.clientX-a.left,r=t.clientY-a.top,s=this.map.mouseEventToContainerPoint(t),c=Math.abs(i-this.selectStartPos.x),l=Math.abs(r-this.selectStartPos.y);if(c<4&&l<4){const z=t.target;if(z&&((S=z.classList)!=null&&S.contains("leaflet-container")||z.id==="mapa-triagem"||(L=z.closest)!=null&&L.call(z,".leaflet-pane"))){const D=((x=z.closest)==null?void 0:x.call(z,".custom-leaflet-marker"))||((P=z.closest)==null?void 0:P.call(z,".custom-div-icon")),_=t.ctrlKey||t.metaKey||t.shiftKey;!D&&!_&&o()}return!1}if(!this.selectStartPoint)return!1;const d={x1:Math.min(this.selectStartPoint.x,s.x),y1:Math.min(this.selectStartPoint.y,s.y),x2:Math.max(this.selectStartPoint.x,s.x),y2:Math.max(this.selectStartPoint.y,s.y)},h=s.x>=this.selectStartPoint.x?"window":"crossing";(w=(C=this.ctx).selecionarFeicoesNaCaixa)==null||w.call(C,d,h,t.ctrlKey||t.metaKey);const u=((I=this.ctx.mapaController)==null?void 0:I.getMarkers())||[],m=((M=this.ctx.mapaController)==null?void 0:M.getVizinhosMarkers())||[],v=[],p=[],y=!this.ctx.layerManager||this.ctx.layerManager.isLayerActiveAndSelectable("vertices"),A=!this.ctx.layerManager||this.ctx.layerManager.isLayerActiveAndSelectable("vizinhos");return y&&u.forEach(z=>{const D=z.pontoId;if(!D)return;const _=this.map.latLngToContainerPoint(z.getLatLng());_.x>=d.x1&&_.x<=d.x2&&_.y>=d.y1&&_.y<=d.y2&&v.push(D)}),A&&m.forEach(z=>{const D=z.pontoId;if(!D)return;const _=this.map.latLngToContainerPoint(z.getLatLng());_.x>=d.x1&&_.x<=d.x2&&_.y>=d.y1&&_.y<=d.y2&&p.push(D)}),t.ctrlKey||t.metaKey?(v.forEach(z=>{this.ctx.selectedPontoIds.includes(z)?this.ctx.selectedPontoIds=this.ctx.selectedPontoIds.filter(D=>D!==z):this.ctx.selectedPontoIds.push(z)}),p.forEach(z=>{this.ctx.selectedVizinhoPontoIds.includes(z)?this.ctx.selectedVizinhoPontoIds=this.ctx.selectedVizinhoPontoIds.filter(D=>D!==z):this.ctx.selectedVizinhoPontoIds.push(z)})):(this.ctx.selectedPontoIds=v,this.ctx.selectedVizinhoPontoIds=p),this.ctx.selectedPontoIds.length>0&&(this.ctx.lastSelectedPontoId=this.ctx.selectedPontoIds[this.ctx.selectedPontoIds.length-1]),e(),!0}cancelarSelecao(){this.isSelecting&&(this.isSelecting=!1,this.selectionDiv&&(this.selectionDiv.style.display="none"),this.setPanesPointerEvents("auto"),this.ctx.layerManager&&this.ctx.layerManager.ensurePanes())}destruir(){this.selectionDiv&&this.selectionDiv.parentNode&&(this.selectionDiv.parentNode.removeChild(this.selectionDiv),this.selectionDiv=null),this.setPanesPointerEvents("auto")}}function dt(n){return`pane-${n}`}const Po=["poligono","linha","ponto","texto"];function Co(n,t){return`${dt(n)}-${t}`}function U(n,t,e){const o=n.getPane(dt(t))??n.createPane(dt(t)),a=Co(t,e);if(!n.getPane(a)){const i=n.createPane(a,o);i.style.zIndex=String((Po.indexOf(e)+1)*100)}return a}const Xe="ui-canvas-hit-test-estilo",Ft=6,Lo=4,Ja=4,zt={poligono:1,linha:2,ponto:3,texto:3};function So(n){var a;const t=n.getRootNode(),e=t instanceof ShadowRoot?t:document.head;if((a=e.querySelector)!=null&&a.call(e,`#${Xe}`))return;const o=document.createElement("style");o.id=Xe,o.textContent=".leaflet-pane > canvas { pointer-events: none !important; }",e.appendChild(o)}const Xt=new WeakMap;function Ie(n,t,e){let o=Xt.get(n);o||(o=new Map,Xt.set(n,o)),o.set(t,e)}function De(n,t,e){const o=Xt.get(n);(o==null?void 0:o.get(t))===e&&o.delete(t)}function ie(n,t){var e,o;return t+(((e=n.options)==null?void 0:e.stroke)===!1?0:(((o=n.options)==null?void 0:o.weight)??0)/2)}function Qa(n,t,e){let o=1/0;for(const a of n){for(let i=1;i<a.length;i++)o=Math.min(o,b.LineUtil.pointToSegmentDistance(t,a[i-1],a[i]));e&&a.length>2&&(o=Math.min(o,b.LineUtil.pointToSegmentDistance(t,a[a.length-1],a[0])))}return o}function ti(n){const t=n._pxBounds;return t?(t.max.x-t.min.x)*(t.max.y-t.min.y):0}function ei(n,t,e){var o,a,i;if(!((o=n.options)!=null&&o.interactive))return null;if(n._point&&n._radius!==void 0){const r=n._radius,s=n._radiusY??n._radius,c=n._point.distanceTo(t),l=(r+s)/2,d=e==="ponto"?Lo:ie(n,Ft);return n.options.fill!==!1&&e==="poligono"?c<=l+1?0:null:e==="ponto"?c<=l+d?c:null:Math.abs(c-l)<=d?Math.abs(c-l):null}if(n._parts){const r=n instanceof b.Polygon,s=Qa(n._parts,t,r);return e==="linha"?s<=ie(n,Ft)?s:null:r&&((a=n._containsPoint)!=null&&a.call(n,t))?0:s<=ie(n,Ft)?s:null}return(i=n._containsPoint)!=null&&i.call(n,t)?0:null}function oi(n){const t=[];for(let e=n._drawFirst;e;e=e.next)t.push(e.layer);return t}function _e(n,t,e){var r;const o=n._paneRenderers;if(!o)return[];const a=t.filter(s=>s.visivel&&s.interativo&&!s.bloqueada).sort((s,c)=>c.zIndex-s.zIndex),i=[];for(const s of a){for(const l of Po){const d=o[Co(s.id,l)];if(d)for(const h of oi(d).reverse()){const u=ei(h,e,l);u!==null&&i.push({camada:s,tipo:l,alvo:h,distancia:u,area:ti(h)})}}const c=(r=Xt.get(n))==null?void 0:r.get(s.id);if(c)try{for(const l of c.consultar(e))i.push({camada:s,tipo:l.tipo,alvo:c.alvo,distancia:l.distancia,area:l.area,feicao:l.feicao,chave:l.chave})}catch{}}return i.sort((s,c)=>zt[s.tipo]!==zt[c.tipo]?zt[c.tipo]-zt[s.tipo]:s.camada.zIndex!==c.camada.zIndex?c.camada.zIndex-s.camada.zIndex:s.tipo==="poligono"&&s.area!==c.area?s.area-c.area:0)}const ve=new WeakMap;function ai(n,t,e){const o=e.map(r=>r.chave===void 0?String(b.Util.stamp(r.alvo)):`${b.Util.stamp(r.alvo)}:${r.chave}`),a=ve.get(n);let i=0;return a&&Math.hypot(a.x-t.x,a.y-t.y)<=Ja&&a.ids.length===o.length&&a.ids.every((r,s)=>r===o[s])&&(i=(a.indice+1)%e.length),ve.set(n,{x:t.x,y:t.y,ids:o,indice:i}),e[i]}function Mo(n,t,e){const o=n.mouseEventToLayerPoint(e),a=_e(n,t,o);if(a.length===0)return ve.delete(n),!1;const i=ai(n,o,a);return i.alvo.fire(e.type,{originalEvent:e,latlng:n.mouseEventToLatLng(e),layerPoint:o,containerPoint:n.mouseEventToContainerPoint(e),...i.feicao!==void 0?{feicaoHit:i.feicao}:{}},!0),!0}function ii(n,t,e){return _e(n,t,n.mouseEventToLayerPoint(e))[0]??null}const Ye=".cad-vertex-handle, .cad-vertex-ghost, .cad-bezier-handle, #cm-vertex-edit-hud, #cm-draw-hud";class Ao{constructor(t){f(this,"ctx");f(this,"map",null);f(this,"mapContainer",null);f(this,"selecaoBox",null);f(this,"isPanning",!1);f(this,"lastMousePos",{x:0,y:0});f(this,"lastMiddleClickTime",0);f(this,"touchStartPos",{x:0,y:0});f(this,"isTouchPanning",!1);f(this,"removerSupressao",null);f(this,"selectionHappened",!1);f(this,"panHappened",!1);f(this,"handleTouchStart",t=>{var e,o;if(!(!this.map||!this.mapContainer))if(t.touches.length===1){if((o=(e=t.target)==null?void 0:e.closest)!=null&&o.call(e,Ye)){this.isTouchPanning=!1;return}this.isTouchPanning=!0,this.touchStartPos={x:t.touches[0].clientX,y:t.touches[0].clientY}}else t.touches.length===2&&(this.isTouchPanning=!1)});f(this,"handleTouchMove",t=>{if(!(!this.map||!this.mapContainer))if(t.touches.length===1&&this.isTouchPanning){t.preventDefault(),this.panHappened=!0;const e=this.touchStartPos.x-t.touches[0].clientX,o=this.touchStartPos.y-t.touches[0].clientY;this.map.panBy([e,o],{animate:!1}),this.touchStartPos={x:t.touches[0].clientX,y:t.touches[0].clientY}}else t.touches.length===2&&(this.panHappened=!0)});f(this,"handleTouchEnd",()=>{this.isTouchPanning=!1,setTimeout(()=>{this.panHappened=!1},120)});f(this,"handleContextMenu",t=>{var e,o;t.preventDefault(),(o=(e=this.ctx).aoMenuContexto)==null||o.call(e,t)});f(this,"handleClick",t=>{var e,o,a,i,r,s;!this.map||!this.ctx.layerManager||(o=(e=this.ctx).ferramentaAtiva)!=null&&o.call(e)||(i=(a=this.ctx).edicaoAtiva)!=null&&i.call(a)||(s=(r=t.target)==null?void 0:r.closest)!=null&&s.call(r,".leaflet-marker-icon")||Mo(this.map,this.ctx.layerManager.getLayers(),t)});f(this,"handleMouseDown",t=>{var e,o,a,i,r,s,c;if(!(!this.map||!this.mapContainer)){if(this.cancelarSupressaoClique(),t.button===1){if(t.preventDefault(),Date.now()-this.lastMiddleClickTime<300){this.lastMiddleClickTime=0,this.zoomExtents();return}this.isPanning=!0,this.panHappened=!1,this.lastMousePos={x:t.clientX,y:t.clientY},this.mapContainer.style.cursor="grabbing";return}if(t.button===0){if((o=(e=t.target)==null?void 0:e.closest)!=null&&o.call(e,Ye)||(i=(a=this.ctx).ferramentaAtiva)!=null&&i.call(a)||(s=(r=this.ctx).edicaoAtiva)!=null&&s.call(r)||(this.selectionHappened=!1,this.ctx.mapaController&&this.ctx.mapaController.modoCliqueSequencialAtivo))return;(c=this.selecaoBox)==null||c.iniciarSelecao(t)}}});f(this,"handleMouseMove",t=>{var e;if(!(!this.map||!this.mapContainer)){if(this.isPanning){const o=this.lastMousePos.x-t.clientX,a=this.lastMousePos.y-t.clientY;(Math.abs(o)>1||Math.abs(a)>1)&&(this.panHappened=!0),this.map.panBy([o,a],{animate:!1}),this.lastMousePos={x:t.clientX,y:t.clientY};return}(e=this.selecaoBox)==null||e.atualizarSelecao(t)}});f(this,"handleMouseUp",t=>{this.isPanning&&(this.isPanning=!1,t.button===1&&!this.panHappened&&(this.lastMiddleClickTime=Date.now()),this.mapContainer&&(this.mapContainer.style.cursor="grab"),setTimeout(()=>{this.panHappened=!1},120)),this.selecaoBox&&this.selecaoBox.isSelecting&&this.selecaoBox.finalizarSelecao(t,()=>this.notificarSelecao(),()=>this.limparSelecao())&&(this.selectionHappened=!0,this.suprimirProximoClique())});f(this,"handleKeyDown",t=>{var e;if(t.key==="Escape"){if(Mt(t))return;(e=this.selecaoBox)==null||e.cancelarSelecao(),this.limparSelecao()}});this.ctx={selectedPontoIds:[],selectedVizinhoPontoIds:[],lastSelectedPontoId:null,pontosList:[],...t}}ativar(t,e){this.ctx.mapaController=t,e&&(this.ctx.containerHost=e),this.map=t.getMap(),this.map&&(this.mapContainer=this.map.getContainer(),this.mapContainer&&(this.map.dragging.disable(),this.map.doubleClickZoom.disable(),this.map.boxZoom.disable(),this.selecaoBox=new Ka(this.map,this.mapContainer,this.ctx),So(this.mapContainer),this.mapContainer.addEventListener("click",this.handleClick),this.mapContainer.addEventListener("mousedown",this.handleMouseDown),this.mapContainer.addEventListener("mousemove",this.handleMouseMove),window.addEventListener("mouseup",this.handleMouseUp),this.mapContainer.addEventListener("contextmenu",this.handleContextMenu),window.addEventListener("keydown",this.handleKeyDown),this.mapContainer.addEventListener("touchstart",this.handleTouchStart,{passive:!1}),this.mapContainer.addEventListener("touchmove",this.handleTouchMove,{passive:!1}),this.mapContainer.addEventListener("touchend",this.handleTouchEnd),this.mapContainer.addEventListener("touchcancel",this.handleTouchEnd)))}desativar(){this.mapContainer&&(this.mapContainer.removeEventListener("click",this.handleClick),this.mapContainer.removeEventListener("mousedown",this.handleMouseDown),this.mapContainer.removeEventListener("mousemove",this.handleMouseMove),this.mapContainer.removeEventListener("contextmenu",this.handleContextMenu),this.mapContainer.removeEventListener("touchstart",this.handleTouchStart),this.mapContainer.removeEventListener("touchmove",this.handleTouchMove),this.mapContainer.removeEventListener("touchend",this.handleTouchEnd),this.mapContainer.removeEventListener("touchcancel",this.handleTouchEnd)),window.removeEventListener("mouseup",this.handleMouseUp),window.removeEventListener("keydown",this.handleKeyDown),this.cancelarSupressaoClique(),this.selecaoBox&&(this.selecaoBox.destruir(),this.selecaoBox=null),this.map&&(this.map.dragging.enable(),this.map.doubleClickZoom.enable(),this.map.boxZoom.enable())}suprimirProximoClique(){this.cancelarSupressaoClique(),this.removerSupressao=()=>window.removeEventListener("click",t,!0);const t=e=>{e.stopImmediatePropagation(),e.preventDefault(),this.cancelarSupressaoClique()};window.addEventListener("click",t,!0)}cancelarSupressaoClique(){var t;(t=this.removerSupressao)==null||t.call(this),this.removerSupressao=null}limparSelecao(){var t,e,o,a;(e=(t=this.ctx).aoLimparSelecao)==null||e.call(t),this.ctx.mapaController&&this.ctx.mapaController.context.selectedSegmentoId&&this.ctx.mapaController.selectSegmento(null),(this.ctx.selectedPontoIds.length>0||this.ctx.selectedVizinhoPontoIds.length>0)&&(this.ctx.selectedPontoIds=[],this.ctx.selectedVizinhoPontoIds=[],this.ctx.lastSelectedPontoId=null,this.ctx.mapaController&&(this.ctx.mapaController.context.selectedPontoIds=[],(a=(o=this.ctx.mapaController).atualizarDestaqueMarcadores)==null||a.call(o)),this.notificarSelecao())}notificarSelecao(){var t,e;this.ctx.mapaController&&(this.ctx.mapaController.context.selectedPontoIds=[...this.ctx.selectedPontoIds],(e=(t=this.ctx.mapaController).atualizarDestaqueMarcadores)==null||e.call(t)),this.ctx.atualizarDestaqueLinhasTabela&&this.ctx.atualizarDestaqueLinhasTabela(),this.ctx.onSelectionChange&&this.ctx.onSelectionChange(this.ctx.selectedPontoIds,this.ctx.selectedVizinhoPontoIds),window.dispatchEvent(new CustomEvent("gerencigeo:ponto-selecionado",{detail:{selectedPontoIds:this.ctx.selectedPontoIds,selectedVizinhoPontoIds:this.ctx.selectedVizinhoPontoIds,lastSelectedPontoId:this.ctx.lastSelectedPontoId}}))}zoomExtents(){if(!this.ctx.pontosList||this.ctx.pontosList.length===0)return;const t=this.ctx.pontosList.filter(e=>e.tipo_ponto!=="B"&&e.tipo!=="B");t.length>0&&this.ctx.mapaController&&this.ctx.mapaController.fitBounds(t)}destroy(){this.desativar()}}class N{static register(t,e){this.renderers.set(t.toLowerCase(),e)}static get(t){return this.renderers.get(t.toLowerCase())}static has(t){return this.renderers.has(t.toLowerCase())}static getRegisteredTypes(){return Array.from(this.renderers.keys())}}f(N,"renderers",new Map);class Eo{render(t,e,o){var c,l,d;const a=((c=t.dados)==null?void 0:c.url)||"https://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}",i=((l=t.dados)==null?void 0:l.subdomains)||["mt0","mt1","mt2","mt3"],r=((d=t.dados)==null?void 0:d.attribution)||"Google Satélite";return b.tileLayer(a,{maxZoom:24,maxNativeZoom:20,subdomains:i,attribution:r,keepBuffer:16,updateWhenZooming:!1,updateWhenIdle:!0,className:"smooth-zoom-layer",opacity:t.opacidade!==void 0?t.opacidade:1,pane:`pane-${t.id}`})}update(t,e,o){e instanceof b.TileLayer&&o.opacidade!==void 0&&e.setOpacity(o.opacidade)}destroy(t,e){e.hasLayer(t)&&e.removeLayer(t)}}class wo{render(t,e,o){var l,d,h,u;const a=((l=t.dados)==null?void 0:l.url)||"https://acervofundiario.incra.gov.br/i3geo/ogc.php",i=((d=t.dados)==null?void 0:d.layers)||"certificada_sigef_particular_pr",r=((h=t.dados)==null?void 0:h.format)||"image/png",s=((u=t.dados)==null?void 0:u.attribution)||"INCRA/SIGEF";return b.tileLayer.wms(a,{layers:i,format:r,transparent:!0,version:"1.1.1",pane:`pane-${t.id}`,attribution:s,className:"sigef-wms-layer",keepBuffer:8,updateWhenZooming:!1,updateWhenIdle:!0,opacity:t.opacidade!==void 0?t.opacidade:.85})}update(t,e,o){e instanceof b.TileLayer.WMS&&o.opacidade!==void 0&&e.setOpacity(o.opacidade)}destroy(t,e){e.hasLayer(t)&&e.removeLayer(t)}}function zo(n,t,e){const o=n.estilo.espessuraLinha||e.config.perimetroWeight||2,a=e.graphicScale.lineScaleMultiplier||1;if(n.estilo.scaleMode==="world"){const i=n.estilo.dimensaoMetros||.3,r=t.getCenter(),s=t.getZoom(),c=40075016686e-3*Math.abs(Math.cos(r.lat*Math.PI/180))/Math.pow(2,s+8),l=i/(c>0?c:1);return Math.max(1,Math.round(l*a))}return Math.max(1,Math.round(o*a))}function st(n,t,e,o,a){const i=Math.max(Math.round(e+3),4);b.polyline(t,{color:"#080d0a",weight:i,opacity:.85,lineCap:"round",lineJoin:"round",dashArray:a,pane:o,interactive:!1}).addTo(n)}function Ke(n,t,e,o,a){var v,p,y,A,k,S,L,x;const i=n.id==="homologados",r=((v=n.dados)==null?void 0:v.conexoes)??(Array.isArray(n.dados)&&n.dados.length>0&&"origemId"in n.dados[0]?n.dados:null),s=((p=n.dados)==null?void 0:p.segmentos)||o.segmentos||[],c=((y=n.dados)==null?void 0:y.pontos)||(i?o.bancoPontos||[]:o.pontos)||[],l=zo(n,e,o),d=n.opacidade!==void 0?n.opacidade:1,h=n.interativo&&!n.bloqueada,u=[];c.forEach(P=>{const C=E.parseCoordenada(P.lat??P.latitude??P.y,P.lon??P.lng??P.longitude??P.x);C&&u.push({...P,lat:C.lat,lon:C.lon})});const m=P=>{const C=u.find(w=>String(w.id)===String(P));if(C)return C;if(o.pontos){const w=o.pontos.find(I=>String(I.id)===String(P));if(w){const I=E.parseCoordenada(w.lat,w.lon);if(I)return{...w,lat:I.lat,lon:I.lon}}}return null};if(r&&Array.isArray(r)){r.forEach(P=>{var I,M,z,D,_,R,F;const C=m(P.origemId),w=m(P.destinoId);if(C&&w&&C.lat&&C.lon&&w.lat&&w.lon){const B=P.tipoLinha==="tracejada"||((I=P.estilo)==null?void 0:I.tipoLinha)==="tracejada",T=((M=P.estilo)==null?void 0:M.cor)||((z=P.estilo)==null?void 0:z.color)||n.estilo.corPrimaria||"#00f5a0",$=((D=P.estilo)==null?void 0:D.espessura)||((_=P.estilo)==null?void 0:_.weight)||l,O=[[C.lat,C.lon],[w.lat,w.lon]],V=B?"6, 6":n.estilo.dashArray;st(t,O,$,a,V);const q=b.polyline(O,{color:T,weight:$,opacity:((R=P.estilo)==null?void 0:R.opacidade)??d,dashArray:V,pane:a,interactive:h});if(h){const H=P.acoes||n.acoes||((F=n.dados)==null?void 0:F.acoes)||[],j=`${P.origemId}-${P.destinoId}`,Y=E.renderPopupAcoesHtml(H,j);q.bindPopup(`
50
+ `))}finally{p.style.cursor=""}}function Ya(i,t){if(!i)return;const e=Math.floor(i.getZoom()),o=Math.max(e,12),a=Math.min(e+1,19),n=t.pad(.2),r=["mt0","mt1","mt2","mt3"];let s=0;const c=32;for(let l=o;l<=a&&s<c;l++){const d=n.getNorthWest(),h=n.getSouthEast(),p=Xe(d.lng,l),g=Xe(h.lng,l),v=Ye(d.lat,l),u=Ye(h.lat,l);for(let y=p;y<=g&&s<c;y++)for(let A=v;A<=u&&s<c;A++){const S=`https://${r[(y+A)%r.length]}.google.com/vt/lyrs=s,h&x=${y}&y=${A}&z=${l}`,C=new Image;C.src=S,s++}}}function Xe(i,t){return Math.floor((i+180)/360*Math.pow(2,t))}function Ye(i,t){const e=i*Math.PI/180;return Math.floor((1-Math.log(Math.tan(e)+1/Math.cos(e))/Math.PI)/2*Math.pow(2,t))}const Ka={zoomSnap:.25,zoomDelta:.5,wheelPxPerZoomLevel:90};function Ja(i,t){const e=i;return!e||!t||e._popup!==t?!1:(e._popup=null,!0)}function Qa(i){i.on("popupclose",t=>{Ja(i,t.popup)})}class Lo{constructor(t){f(this,"map",null);f(this,"configManager",Xt.getInstance());f(this,"config",this.configManager.getConfig());f(this,"apiBaseUrl","/api");f(this,"bancoPontosGroup",b.layerGroup());f(this,"pontosVizinhosGroup",b.layerGroup());f(this,"controller");f(this,"containerElement",null);f(this,"bc");f(this,"sigefState",{});f(this,"popups",null);f(this,"modoPopups",Ie);this.controller=t}definirModoPopups(t){var e;this.modoPopups=Yt(t),(e=this.popups)==null||e.definirModo(this.modoPopups)}init(t){var o;if(this.map){(o=this.popups)==null||o.destruir(),this.popups=null;try{this.map.off(),this.map.remove()}catch{}finally{this.map=null}}const e=typeof t=="string"?document.getElementById(t):t;if(!e)return null;if(this.containerElement=e,e._leaflet_id)try{delete e._leaflet_id}catch{e._leaflet_id=void 0}if(this.map=b.map(e,{maxZoom:24,scrollWheelZoom:!0,preferCanvas:this.config.preferCanvas!==void 0?this.config.preferCanvas:!0,zoomControl:!1,...Ka}).setView([-23.7661,-53.3204],14),this.popups=new Za(this.map,this.modoPopups),this.listenConfigBroadcast(),this.applyMapStyles(),Qa(this.map),!this.map.getPane("sigefPane")){const a=this.map.createPane("sigefPane");a.style.zIndex="390"}if(!this.map.getPane("perimetroPane")){const a=this.map.createPane("perimetroPane");a.style.zIndex="520"}if(!this.map.getPane("verticesPane")){const a=this.map.createPane("verticesPane");a.style.zIndex="650"}return b.control.scale({metric:!0,imperial:!1,position:"bottomleft"}).addTo(this.map),this.map.on("click",a=>{var s,c,l;if(this.controller.modoCliqueSequencialAtivo||this.controller.canvasInteracao&&this.controller.canvasInteracao.selectionHappened)return;const n=(s=this.controller.canvasInteracao)==null?void 0:s.ctx;if((c=n==null?void 0:n.ferramentaAtiva)!=null&&c.call(n)||(l=n==null?void 0:n.edicaoAtiva)!=null&&l.call(n))return;(this.controller.layerManager?this.controller.layerManager.isLayerActiveAndSelectable("sigef"):!1)&&this.consultarSigef(a)}),setTimeout(()=>{this.invalidateSize()},250),this.map}invalidateSize(t=!1){var e,o;if(this.map)try{const a=(o=(e=this.map).getContainer)==null?void 0:o.call(e);if(!a||!a.parentNode)return;this.map.invalidateSize({animate:t,pan:!1})}catch{}}applyMapStyles(){const t=this.containerElement||document.getElementById("mapa-triagem");t&&(t.style.cursor=this.config.crosshair?"crosshair":"")}listenConfigBroadcast(){if(!(typeof BroadcastChannel>"u"))try{this.bc=new BroadcastChannel("gerencigeo_map_config"),this.bc.onmessage=t=>{t.data==="RELOAD_REQUIRED"&&(this.config=this.configManager.getConfig(),this.applyMapStyles(),window.dispatchEvent(new CustomEvent("gerencigeo:map_config_changed",{detail:this.config})))}}catch{}}destroy(){var t;if(this.sigefState.currentAbortController&&(this.sigefState.currentAbortController.abort(),this.sigefState.currentAbortController=void 0),this.bc){try{this.bc.close()}catch{}this.bc=void 0}if(this.map){(t=this.popups)==null||t.destruir(),this.popups=null;try{this.map.off(),this.map.remove()}catch{}finally{this.map=null}}if(this.containerElement&&this.containerElement._leaflet_id)try{delete this.containerElement._leaflet_id}catch{this.containerElement._leaflet_id=void 0}}preCarregarTilesRegiao(t){Ya(this.map,t)}async consultarSigef(t){this.map&&await Xa(this.map,t,this.apiBaseUrl,this.sigefState)}}function Ke(i){if(!i)return!1;const t=i;return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||t.isContentEditable===!0}const ti='button, a[href], summary, [role="button"], [role="menuitem"], [role="tab"], [role="switch"], [role="checkbox"], [role="option"]';function Co(i){var e;const t=((e=i.composedPath)==null?void 0:e.call(i)[0])??i.target;return t instanceof Element?t.closest(ti)!==null:!1}function Mt(i){var o,a;const t=(o=i==null?void 0:i.composedPath)==null?void 0:o.call(i)[0];if(t instanceof Element)return Ke(t);let e=typeof document>"u"?null:document.activeElement;for(;(a=e==null?void 0:e.shadowRoot)!=null&&a.activeElement;)e=e.shadowRoot.activeElement;return Ke(e)}const So=["verticesPane","perimetroPane","overlayPane","markerPane","pane-vertices","pane-perimetro","pane-vizinhos","pane-homologados","pane-homologados-pontos"];class ei{constructor(t,e,o){f(this,"map");f(this,"mapContainer");f(this,"ctx");f(this,"selectionDiv",null);f(this,"isSelecting",!1);f(this,"selectStartPos",{x:0,y:0});f(this,"selectStartPoint",null);this.map=t,this.mapContainer=e,this.ctx=o,this.criarDivSelecao()}criarDivSelecao(){this.selectionDiv||(this.selectionDiv=document.createElement("div"),this.selectionDiv.className="cad-selection-box",this.selectionDiv.style.position="absolute",this.selectionDiv.style.zIndex="9999",this.selectionDiv.style.pointerEvents="none",this.selectionDiv.style.display="none",this.selectionDiv.style.borderRadius="2px",this.mapContainer.style.position="relative",this.mapContainer.appendChild(this.selectionDiv))}setPanesPointerEvents(t){So.forEach(e=>{const o=this.map.getPane(e);o&&(o.style.pointerEvents=t)})}iniciarSelecao(t){const e=this.mapContainer.getBoundingClientRect(),o=t.clientX-e.left,a=t.clientY-e.top;this.isSelecting=!0,this.selectStartPos={x:o,y:a},this.selectStartPoint=this.map.mouseEventToContainerPoint(t),this.selectionDiv&&(this.selectionDiv.style.left=`${o}px`,this.selectionDiv.style.top=`${a}px`,this.selectionDiv.style.width="0px",this.selectionDiv.style.height="0px",this.selectionDiv.style.display="block"),this.setPanesPointerEvents("none")}atualizarSelecao(t){if(!this.isSelecting||!this.selectionDiv)return;const e=this.mapContainer.getBoundingClientRect(),o=t.clientX-e.left,a=t.clientY-e.top,n=Math.abs(o-this.selectStartPos.x),r=Math.abs(a-this.selectStartPos.y),s=Math.min(o,this.selectStartPos.x),c=Math.min(a,this.selectStartPos.y);this.selectionDiv.style.left=`${Math.round(s)}px`,this.selectionDiv.style.top=`${Math.round(c)}px`,this.selectionDiv.style.width=`${Math.round(n)}px`,this.selectionDiv.style.height=`${Math.round(r)}px`,o>=this.selectStartPos.x?(this.selectionDiv.style.background="rgba(14, 116, 144, 0.22)",this.selectionDiv.style.border="1px solid #06b6d4"):(this.selectionDiv.style.background="rgba(16, 185, 129, 0.22)",this.selectionDiv.style.border="1px dashed #10b981")}finalizarSelecao(t,e,o){var k,S,C,x,P,L,w,I,M;if(!this.isSelecting)return!1;this.isSelecting=!1,this.selectionDiv&&(this.selectionDiv.style.display="none"),this.map.closePopup();try{this.setPanesPointerEvents("auto"),(k=this.ctx.layerManager)==null||k.ensurePanes()}catch{}const a=this.mapContainer.getBoundingClientRect(),n=t.clientX-a.left,r=t.clientY-a.top,s=this.map.mouseEventToContainerPoint(t),c=Math.abs(n-this.selectStartPos.x),l=Math.abs(r-this.selectStartPos.y);if(c<4&&l<4){const z=t.target;if(z&&((S=z.classList)!=null&&S.contains("leaflet-container")||z.id==="mapa-triagem"||(C=z.closest)!=null&&C.call(z,".leaflet-pane"))){const D=((x=z.closest)==null?void 0:x.call(z,".custom-leaflet-marker"))||((P=z.closest)==null?void 0:P.call(z,".custom-div-icon")),_=t.ctrlKey||t.metaKey||t.shiftKey;!D&&!_&&o()}return!1}if(!this.selectStartPoint)return!1;const d={x1:Math.min(this.selectStartPoint.x,s.x),y1:Math.min(this.selectStartPoint.y,s.y),x2:Math.max(this.selectStartPoint.x,s.x),y2:Math.max(this.selectStartPoint.y,s.y)},h=s.x>=this.selectStartPoint.x?"window":"crossing";(w=(L=this.ctx).selecionarFeicoesNaCaixa)==null||w.call(L,d,h,t.ctrlKey||t.metaKey);const p=((I=this.ctx.mapaController)==null?void 0:I.getMarkers())||[],g=((M=this.ctx.mapaController)==null?void 0:M.getVizinhosMarkers())||[],v=[],u=[],y=!this.ctx.layerManager||this.ctx.layerManager.isLayerActiveAndSelectable("vertices"),A=!this.ctx.layerManager||this.ctx.layerManager.isLayerActiveAndSelectable("vizinhos");return y&&p.forEach(z=>{const D=z.pontoId;if(!D)return;const _=this.map.latLngToContainerPoint(z.getLatLng());_.x>=d.x1&&_.x<=d.x2&&_.y>=d.y1&&_.y<=d.y2&&v.push(D)}),A&&g.forEach(z=>{const D=z.pontoId;if(!D)return;const _=this.map.latLngToContainerPoint(z.getLatLng());_.x>=d.x1&&_.x<=d.x2&&_.y>=d.y1&&_.y<=d.y2&&u.push(D)}),t.ctrlKey||t.metaKey?(v.forEach(z=>{this.ctx.selectedPontoIds.includes(z)?this.ctx.selectedPontoIds=this.ctx.selectedPontoIds.filter(D=>D!==z):this.ctx.selectedPontoIds.push(z)}),u.forEach(z=>{this.ctx.selectedVizinhoPontoIds.includes(z)?this.ctx.selectedVizinhoPontoIds=this.ctx.selectedVizinhoPontoIds.filter(D=>D!==z):this.ctx.selectedVizinhoPontoIds.push(z)})):(this.ctx.selectedPontoIds=v,this.ctx.selectedVizinhoPontoIds=u),this.ctx.selectedPontoIds.length>0&&(this.ctx.lastSelectedPontoId=this.ctx.selectedPontoIds[this.ctx.selectedPontoIds.length-1]),e(),!0}cancelarSelecao(){this.isSelecting&&(this.isSelecting=!1,this.selectionDiv&&(this.selectionDiv.style.display="none"),this.setPanesPointerEvents("auto"),this.ctx.layerManager&&this.ctx.layerManager.ensurePanes())}destruir(){this.selectionDiv&&this.selectionDiv.parentNode&&(this.selectionDiv.parentNode.removeChild(this.selectionDiv),this.selectionDiv=null),this.setPanesPointerEvents("auto")}}function dt(i){return`pane-${i}`}const Mo=["poligono","linha","ponto","texto"];function Ao(i,t){return`${dt(i)}-${t}`}function U(i,t,e){const o=i.getPane(dt(t))??i.createPane(dt(t)),a=Ao(t,e);if(!i.getPane(a)){const n=i.createPane(a,o);n.style.zIndex=String((Mo.indexOf(e)+1)*100)}return a}const Je="ui-canvas-hit-test-estilo",Nt=6,Eo=4,oi=4,zt={poligono:1,linha:2,ponto:3,texto:3};function wo(i){var a;const t=i.getRootNode(),e=t instanceof ShadowRoot?t:document.head;if((a=e.querySelector)!=null&&a.call(e,`#${Je}`))return;const o=document.createElement("style");o.id=Je,o.textContent=".leaflet-pane > canvas { pointer-events: none !important; }",e.appendChild(o)}const Kt=new WeakMap;function _e(i,t,e){let o=Kt.get(i);o||(o=new Map,Kt.set(i,o)),o.set(t,e)}function Te(i,t,e){const o=Kt.get(i);(o==null?void 0:o.get(t))===e&&o.delete(t)}function re(i,t){var e,o;return t+(((e=i.options)==null?void 0:e.stroke)===!1?0:(((o=i.options)==null?void 0:o.weight)??0)/2)}function ai(i,t,e){let o=1/0;for(const a of i){for(let n=1;n<a.length;n++)o=Math.min(o,b.LineUtil.pointToSegmentDistance(t,a[n-1],a[n]));e&&a.length>2&&(o=Math.min(o,b.LineUtil.pointToSegmentDistance(t,a[a.length-1],a[0])))}return o}function ii(i){const t=i._pxBounds;return t?(t.max.x-t.min.x)*(t.max.y-t.min.y):0}function ni(i,t,e){var o,a,n;if(!((o=i.options)!=null&&o.interactive))return null;if(i._point&&i._radius!==void 0){const r=i._radius,s=i._radiusY??i._radius,c=i._point.distanceTo(t),l=(r+s)/2,d=e==="ponto"?Eo:re(i,Nt);return i.options.fill!==!1&&e==="poligono"?c<=l+1?0:null:e==="ponto"?c<=l+d?c:null:Math.abs(c-l)<=d?Math.abs(c-l):null}if(i._parts){const r=i instanceof b.Polygon,s=ai(i._parts,t,r);return e==="linha"?s<=re(i,Nt)?s:null:r&&((a=i._containsPoint)!=null&&a.call(i,t))?0:s<=re(i,Nt)?s:null}return(n=i._containsPoint)!=null&&n.call(i,t)?0:null}function ri(i){const t=[];for(let e=i._drawFirst;e;e=e.next)t.push(e.layer);return t}function Oe(i,t,e){var r;const o=i._paneRenderers;if(!o)return[];const a=t.filter(s=>s.visivel&&s.interativo&&!s.bloqueada).sort((s,c)=>c.zIndex-s.zIndex),n=[];for(const s of a){for(const l of Mo){const d=o[Ao(s.id,l)];if(d)for(const h of ri(d).reverse()){const p=ni(h,e,l);p!==null&&n.push({camada:s,tipo:l,alvo:h,distancia:p,area:ii(h)})}}const c=(r=Kt.get(i))==null?void 0:r.get(s.id);if(c)try{for(const l of c.consultar(e))n.push({camada:s,tipo:l.tipo,alvo:c.alvo,distancia:l.distancia,area:l.area,feicao:l.feicao,chave:l.chave})}catch{}}return n.sort((s,c)=>zt[s.tipo]!==zt[c.tipo]?zt[c.tipo]-zt[s.tipo]:s.camada.zIndex!==c.camada.zIndex?c.camada.zIndex-s.camada.zIndex:s.tipo==="poligono"&&s.area!==c.area?s.area-c.area:0)}const be=new WeakMap;function si(i,t,e){const o=e.map(r=>r.chave===void 0?String(b.Util.stamp(r.alvo)):`${b.Util.stamp(r.alvo)}:${r.chave}`),a=be.get(i);let n=0;return a&&Math.hypot(a.x-t.x,a.y-t.y)<=oi&&a.ids.length===o.length&&a.ids.every((r,s)=>r===o[s])&&(n=(a.indice+1)%e.length),be.set(i,{x:t.x,y:t.y,ids:o,indice:n}),e[n]}function zo(i,t,e){const o=i.mouseEventToLayerPoint(e),a=Oe(i,t,o);if(a.length===0)return be.delete(i),!1;const n=si(i,o,a);return n.alvo.fire(e.type,{originalEvent:e,latlng:i.mouseEventToLatLng(e),layerPoint:o,containerPoint:i.mouseEventToContainerPoint(e),...n.feicao!==void 0?{feicaoHit:n.feicao}:{}},!0),!0}function ci(i,t,e){return Oe(i,t,i.mouseEventToLayerPoint(e))[0]??null}const Qe=".cad-vertex-handle, .cad-vertex-ghost, .cad-bezier-handle, #cm-vertex-edit-hud, #cm-draw-hud";class ko{constructor(t){f(this,"ctx");f(this,"map",null);f(this,"mapContainer",null);f(this,"selecaoBox",null);f(this,"isPanning",!1);f(this,"lastMousePos",{x:0,y:0});f(this,"lastMiddleClickTime",0);f(this,"touchStartPos",{x:0,y:0});f(this,"isTouchPanning",!1);f(this,"removerSupressao",null);f(this,"selectionHappened",!1);f(this,"panHappened",!1);f(this,"handleTouchStart",t=>{var e,o;if(!(!this.map||!this.mapContainer))if(t.touches.length===1){if((o=(e=t.target)==null?void 0:e.closest)!=null&&o.call(e,Qe)){this.isTouchPanning=!1;return}this.isTouchPanning=!0,this.touchStartPos={x:t.touches[0].clientX,y:t.touches[0].clientY}}else t.touches.length===2&&(this.isTouchPanning=!1)});f(this,"handleTouchMove",t=>{if(!(!this.map||!this.mapContainer))if(t.touches.length===1&&this.isTouchPanning){t.preventDefault(),this.panHappened=!0;const e=this.touchStartPos.x-t.touches[0].clientX,o=this.touchStartPos.y-t.touches[0].clientY;this.map.panBy([e,o],{animate:!1}),this.touchStartPos={x:t.touches[0].clientX,y:t.touches[0].clientY}}else t.touches.length===2&&(this.panHappened=!0)});f(this,"handleTouchEnd",()=>{this.isTouchPanning=!1,setTimeout(()=>{this.panHappened=!1},120)});f(this,"handleContextMenu",t=>{var e,o;t.preventDefault(),(o=(e=this.ctx).aoMenuContexto)==null||o.call(e,t)});f(this,"handleClick",t=>{var e,o,a,n,r,s;!this.map||!this.ctx.layerManager||(o=(e=this.ctx).ferramentaAtiva)!=null&&o.call(e)||(n=(a=this.ctx).edicaoAtiva)!=null&&n.call(a)||(s=(r=t.target)==null?void 0:r.closest)!=null&&s.call(r,".leaflet-marker-icon")||zo(this.map,this.ctx.layerManager.getLayers(),t)});f(this,"handleMouseDown",t=>{var e,o,a,n,r,s,c;if(!(!this.map||!this.mapContainer)){if(this.cancelarSupressaoClique(),t.button===1){if(t.preventDefault(),Date.now()-this.lastMiddleClickTime<300){this.lastMiddleClickTime=0,this.zoomExtents();return}this.isPanning=!0,this.panHappened=!1,this.lastMousePos={x:t.clientX,y:t.clientY},this.mapContainer.style.cursor="grabbing";return}if(t.button===0){if((o=(e=t.target)==null?void 0:e.closest)!=null&&o.call(e,Qe)||(n=(a=this.ctx).ferramentaAtiva)!=null&&n.call(a)||(s=(r=this.ctx).edicaoAtiva)!=null&&s.call(r)||(this.selectionHappened=!1,this.ctx.mapaController&&this.ctx.mapaController.modoCliqueSequencialAtivo))return;(c=this.selecaoBox)==null||c.iniciarSelecao(t)}}});f(this,"handleMouseMove",t=>{var e;if(!(!this.map||!this.mapContainer)){if(this.isPanning){const o=this.lastMousePos.x-t.clientX,a=this.lastMousePos.y-t.clientY;(Math.abs(o)>1||Math.abs(a)>1)&&(this.panHappened=!0),this.map.panBy([o,a],{animate:!1}),this.lastMousePos={x:t.clientX,y:t.clientY};return}(e=this.selecaoBox)==null||e.atualizarSelecao(t)}});f(this,"handleMouseUp",t=>{this.isPanning&&(this.isPanning=!1,t.button===1&&!this.panHappened&&(this.lastMiddleClickTime=Date.now()),this.mapContainer&&(this.mapContainer.style.cursor="grab"),setTimeout(()=>{this.panHappened=!1},120)),this.selecaoBox&&this.selecaoBox.isSelecting&&this.selecaoBox.finalizarSelecao(t,()=>this.notificarSelecao(),()=>this.limparSelecao())&&(this.selectionHappened=!0,this.suprimirProximoClique())});f(this,"handleKeyDown",t=>{var e;if(t.key==="Escape"){if(Mt(t))return;(e=this.selecaoBox)==null||e.cancelarSelecao(),this.limparSelecao()}});this.ctx={selectedPontoIds:[],selectedVizinhoPontoIds:[],lastSelectedPontoId:null,pontosList:[],...t}}ativar(t,e){this.ctx.mapaController=t,e&&(this.ctx.containerHost=e),this.map=t.getMap(),this.map&&(this.mapContainer=this.map.getContainer(),this.mapContainer&&(this.map.dragging.disable(),this.map.doubleClickZoom.disable(),this.map.boxZoom.disable(),this.selecaoBox=new ei(this.map,this.mapContainer,this.ctx),wo(this.mapContainer),this.mapContainer.addEventListener("click",this.handleClick),this.mapContainer.addEventListener("mousedown",this.handleMouseDown),this.mapContainer.addEventListener("mousemove",this.handleMouseMove),window.addEventListener("mouseup",this.handleMouseUp),this.mapContainer.addEventListener("contextmenu",this.handleContextMenu),window.addEventListener("keydown",this.handleKeyDown),this.mapContainer.addEventListener("touchstart",this.handleTouchStart,{passive:!1}),this.mapContainer.addEventListener("touchmove",this.handleTouchMove,{passive:!1}),this.mapContainer.addEventListener("touchend",this.handleTouchEnd),this.mapContainer.addEventListener("touchcancel",this.handleTouchEnd)))}desativar(){this.mapContainer&&(this.mapContainer.removeEventListener("click",this.handleClick),this.mapContainer.removeEventListener("mousedown",this.handleMouseDown),this.mapContainer.removeEventListener("mousemove",this.handleMouseMove),this.mapContainer.removeEventListener("contextmenu",this.handleContextMenu),this.mapContainer.removeEventListener("touchstart",this.handleTouchStart),this.mapContainer.removeEventListener("touchmove",this.handleTouchMove),this.mapContainer.removeEventListener("touchend",this.handleTouchEnd),this.mapContainer.removeEventListener("touchcancel",this.handleTouchEnd)),window.removeEventListener("mouseup",this.handleMouseUp),window.removeEventListener("keydown",this.handleKeyDown),this.cancelarSupressaoClique(),this.selecaoBox&&(this.selecaoBox.destruir(),this.selecaoBox=null),this.map&&(this.map.dragging.enable(),this.map.doubleClickZoom.enable(),this.map.boxZoom.enable())}suprimirProximoClique(){this.cancelarSupressaoClique(),this.removerSupressao=()=>window.removeEventListener("click",t,!0);const t=e=>{e.stopImmediatePropagation(),e.preventDefault(),this.cancelarSupressaoClique()};window.addEventListener("click",t,!0)}cancelarSupressaoClique(){var t;(t=this.removerSupressao)==null||t.call(this),this.removerSupressao=null}limparSelecao(){var t,e,o,a;(e=(t=this.ctx).aoLimparSelecao)==null||e.call(t),this.ctx.mapaController&&this.ctx.mapaController.context.selectedSegmentoId&&this.ctx.mapaController.selectSegmento(null),(this.ctx.selectedPontoIds.length>0||this.ctx.selectedVizinhoPontoIds.length>0)&&(this.ctx.selectedPontoIds=[],this.ctx.selectedVizinhoPontoIds=[],this.ctx.lastSelectedPontoId=null,this.ctx.mapaController&&(this.ctx.mapaController.context.selectedPontoIds=[],(a=(o=this.ctx.mapaController).atualizarDestaqueMarcadores)==null||a.call(o)),this.notificarSelecao())}notificarSelecao(){var t,e;this.ctx.mapaController&&(this.ctx.mapaController.context.selectedPontoIds=[...this.ctx.selectedPontoIds],(e=(t=this.ctx.mapaController).atualizarDestaqueMarcadores)==null||e.call(t)),this.ctx.atualizarDestaqueLinhasTabela&&this.ctx.atualizarDestaqueLinhasTabela(),this.ctx.onSelectionChange&&this.ctx.onSelectionChange(this.ctx.selectedPontoIds,this.ctx.selectedVizinhoPontoIds),window.dispatchEvent(new CustomEvent("gerencigeo:ponto-selecionado",{detail:{selectedPontoIds:this.ctx.selectedPontoIds,selectedVizinhoPontoIds:this.ctx.selectedVizinhoPontoIds,lastSelectedPontoId:this.ctx.lastSelectedPontoId}}))}zoomExtents(){if(!this.ctx.pontosList||this.ctx.pontosList.length===0)return;const t=this.ctx.pontosList.filter(e=>e.tipo_ponto!=="B"&&e.tipo!=="B");t.length>0&&this.ctx.mapaController&&this.ctx.mapaController.fitBounds(t)}destroy(){this.desativar()}}class ${static register(t,e){this.renderers.set(t.toLowerCase(),e)}static get(t){return this.renderers.get(t.toLowerCase())}static has(t){return this.renderers.has(t.toLowerCase())}static getRegisteredTypes(){return Array.from(this.renderers.keys())}}f($,"renderers",new Map);class Io{render(t,e,o){var c,l,d;const a=((c=t.dados)==null?void 0:c.url)||"https://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}",n=((l=t.dados)==null?void 0:l.subdomains)||["mt0","mt1","mt2","mt3"],r=((d=t.dados)==null?void 0:d.attribution)||"Google Satélite";return b.tileLayer(a,{maxZoom:24,maxNativeZoom:20,subdomains:n,attribution:r,keepBuffer:16,updateWhenZooming:!1,updateWhenIdle:!0,className:"smooth-zoom-layer",opacity:t.opacidade!==void 0?t.opacidade:1,pane:`pane-${t.id}`})}update(t,e,o){e instanceof b.TileLayer&&o.opacidade!==void 0&&e.setOpacity(o.opacidade)}destroy(t,e){e.hasLayer(t)&&e.removeLayer(t)}}class Do{render(t,e,o){var l,d,h,p;const a=((l=t.dados)==null?void 0:l.url)||"https://acervofundiario.incra.gov.br/i3geo/ogc.php",n=((d=t.dados)==null?void 0:d.layers)||"certificada_sigef_particular_pr",r=((h=t.dados)==null?void 0:h.format)||"image/png",s=((p=t.dados)==null?void 0:p.attribution)||"INCRA/SIGEF";return b.tileLayer.wms(a,{layers:n,format:r,transparent:!0,version:"1.1.1",pane:`pane-${t.id}`,attribution:s,className:"sigef-wms-layer",keepBuffer:8,updateWhenZooming:!1,updateWhenIdle:!0,opacity:t.opacidade!==void 0?t.opacidade:.85})}update(t,e,o){e instanceof b.TileLayer.WMS&&o.opacidade!==void 0&&e.setOpacity(o.opacidade)}destroy(t,e){e.hasLayer(t)&&e.removeLayer(t)}}function _o(i,t,e){const o=i.estilo.espessuraLinha||e.config.perimetroWeight||2,a=e.graphicScale.lineScaleMultiplier||1;if(i.estilo.scaleMode==="world"){const n=i.estilo.dimensaoMetros||.3,r=t.getCenter(),s=t.getZoom(),c=40075016686e-3*Math.abs(Math.cos(r.lat*Math.PI/180))/Math.pow(2,s+8),l=n/(c>0?c:1);return Math.max(1,Math.round(l*a))}return Math.max(1,Math.round(o*a))}function st(i,t,e,o,a){const n=Math.max(Math.round(e+3),4);b.polyline(t,{color:"#080d0a",weight:n,opacity:.85,lineCap:"round",lineJoin:"round",dashArray:a,pane:o,interactive:!1}).addTo(i)}function to(i,t,e,o,a){var v,u,y,A,k,S,C,x;const n=i.id==="homologados",r=((v=i.dados)==null?void 0:v.conexoes)??(Array.isArray(i.dados)&&i.dados.length>0&&"origemId"in i.dados[0]?i.dados:null),s=((u=i.dados)==null?void 0:u.segmentos)||o.segmentos||[],c=((y=i.dados)==null?void 0:y.pontos)||(n?o.bancoPontos||[]:o.pontos)||[],l=_o(i,e,o),d=i.opacidade!==void 0?i.opacidade:1,h=i.interativo&&!i.bloqueada,p=[];c.forEach(P=>{const L=E.parseCoordenada(P.lat??P.latitude??P.y,P.lon??P.lng??P.longitude??P.x);L&&p.push({...P,lat:L.lat,lon:L.lon})});const g=P=>{const L=p.find(w=>String(w.id)===String(P));if(L)return L;if(o.pontos){const w=o.pontos.find(I=>String(I.id)===String(P));if(w){const I=E.parseCoordenada(w.lat,w.lon);if(I)return{...w,lat:I.lat,lon:I.lon}}}return null};if(r&&Array.isArray(r)){r.forEach(P=>{var I,M,z,D,_,R,F;const L=g(P.origemId),w=g(P.destinoId);if(L&&w&&L.lat&&L.lon&&w.lat&&w.lon){const B=P.tipoLinha==="tracejada"||((I=P.estilo)==null?void 0:I.tipoLinha)==="tracejada",T=((M=P.estilo)==null?void 0:M.cor)||((z=P.estilo)==null?void 0:z.color)||i.estilo.corPrimaria||"#00f5a0",N=((D=P.estilo)==null?void 0:D.espessura)||((_=P.estilo)==null?void 0:_.weight)||l,O=[[L.lat,L.lon],[w.lat,w.lon]],V=B?"6, 6":i.estilo.dashArray;st(t,O,N,a,V);const q=b.polyline(O,{color:T,weight:N,opacity:((R=P.estilo)==null?void 0:R.opacidade)??d,dashArray:V,pane:a,interactive:h});if(h){const H=P.acoes||i.acoes||((F=i.dados)==null?void 0:F.acoes)||[],j=`${P.origemId}-${P.destinoId}`,Y=E.renderPopupAcoesHtml(H,j);q.bindPopup(`
51
51
  <div style="font-family:sans-serif; color:rgba(255, 255, 255, 0.9); line-height:1.3;">
52
52
  <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">Conexão ${E.escapeHtml(String(P.origemId))} ↔ ${E.escapeHtml(String(P.destinoId))}</div>
53
53
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Tipo: ${E.escapeHtml(P.tipoLinha||"contínua")}</div>
54
54
  ${Y}
55
55
  </div>
56
- `,{className:"compact-popup",maxWidth:220}),q.on("popupopen",et=>{if(o.modoSequencial){q.closePopup();return}E.bindPopupAcoesEvents(et.popup,P,o,q)})}q.addTo(t)}});return}if((A=n.dados)!=null&&A.polilinhaSequencial||((k=n.dados)==null?void 0:k.fechar)!==void 0&&u.length>=2){const P=((S=n.dados)==null?void 0:S.chaveGrupo)||o.chaveGrupo,C=E.agruparPontosPorChave(u,P),w=((L=n.dados)==null?void 0:L.fechar)!==!1,I=n.estilo.corPrimaria||"#00f5a0";Object.entries(C).forEach(([M,z])=>{const D=E.ordenarPontosPorSequencia(z);if(D.length<2)return;const _=D.map(F=>[F.lat,F.lon]);st(t,_,l,a,n.estilo.dashArray);const R=b.polyline(_,{color:I,weight:l,opacity:d,dashArray:n.estilo.dashArray,pane:a,interactive:h});if(h&&R.bindPopup(`
56
+ `,{className:"compact-popup",maxWidth:220}),q.on("popupopen",et=>{if(o.modoSequencial){q.closePopup();return}E.bindPopupAcoesEvents(et.popup,P,o,q)})}q.addTo(t)}});return}if((A=i.dados)!=null&&A.polilinhaSequencial||((k=i.dados)==null?void 0:k.fechar)!==void 0&&p.length>=2){const P=((S=i.dados)==null?void 0:S.chaveGrupo)||o.chaveGrupo,L=E.agruparPontosPorChave(p,P),w=((C=i.dados)==null?void 0:C.fechar)!==!1,I=i.estilo.corPrimaria||"#00f5a0";Object.entries(L).forEach(([M,z])=>{const D=E.ordenarPontosPorSequencia(z);if(D.length<2)return;const _=D.map(F=>[F.lat,F.lon]);st(t,_,l,a,i.estilo.dashArray);const R=b.polyline(_,{color:I,weight:l,opacity:d,dashArray:i.estilo.dashArray,pane:a,interactive:h});if(h&&R.bindPopup(`
57
57
  <div style="font-family:sans-serif; color:rgba(255, 255, 255, 0.9); line-height:1.3;">
58
58
  <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">Polilinha: Grupo ${E.escapeHtml(M)}</div>
59
59
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Vértices: ${D.length}</div>
60
60
  </div>
61
- `,{className:"compact-popup",maxWidth:220}),R.addTo(t),w&&_.length>=3){const F=_[_.length-1],B=_[0],T=[F,B];st(t,T,l,a,"4, 4"),b.polyline(T,{color:I,weight:l,opacity:d,dashArray:"4, 4",pane:a,interactive:h}).addTo(t)}});return}if(!i&&s&&s.length>0)s.forEach(P=>{var I;const C=u.find(M=>String(M.id)===String(P.ponto_inicio_id)),w=u.find(M=>String(M.id)===String(P.ponto_fim_id));if(C&&w&&C.lat&&C.lon&&w.lat&&w.lon){const M=P.tipo_limite_sigef||P.tipo_limite||"",z=P.metodo_posicionamento_sigef||P.metodo_posicionamento||"",D=M==="LA1"?"#10b981":M==="LN1"?"#3b82f6":"#00f5a0",_=P.id!=null?P.id:`${P.ponto_inicio_id}-${P.ponto_fim_id}`,R=o.selectedSegmentoId!=null&&(String(o.selectedSegmentoId)===String(P.id)||String(o.selectedSegmentoId)===String(_)),F=R?"#facc15":n.estilo.corPrimaria||D,B=[[C.lat,C.lon],[w.lat,w.lon]],T=R?l+3:l,$=M==="LN1"?"6, 6":n.estilo.dashArray;st(t,B,R?T+2:T,a,$);const O=b.polyline(B,{color:F,weight:T,opacity:R?1:d,dashArray:$,pane:a,interactive:h});if(O.segmentoId=_,O.segmento=P,h){O.on("click",j=>{j&&j.originalEvent&&j.originalEvent.stopPropagation(),o.onSegmentoClick&&o.onSegmentoClick(_,P,{lat:(C.lat+w.lat)/2,lon:(C.lon+w.lon)/2})});const V=P.acoes||n.acoes||((I=n.dados)==null?void 0:I.acoes)||[],q=`${P.ponto_inicio_id}-${P.ponto_fim_id}`,H=E.renderPopupAcoesHtml(V,q);O.bindPopup(`
61
+ `,{className:"compact-popup",maxWidth:220}),R.addTo(t),w&&_.length>=3){const F=_[_.length-1],B=_[0],T=[F,B];st(t,T,l,a,"4, 4"),b.polyline(T,{color:I,weight:l,opacity:d,dashArray:"4, 4",pane:a,interactive:h}).addTo(t)}});return}if(!n&&s&&s.length>0)s.forEach(P=>{var I;const L=p.find(M=>String(M.id)===String(P.ponto_inicio_id)),w=p.find(M=>String(M.id)===String(P.ponto_fim_id));if(L&&w&&L.lat&&L.lon&&w.lat&&w.lon){const M=P.tipo_limite_sigef||P.tipo_limite||"",z=P.metodo_posicionamento_sigef||P.metodo_posicionamento||"",D=M==="LA1"?"#10b981":M==="LN1"?"#3b82f6":"#00f5a0",_=P.id!=null?P.id:`${P.ponto_inicio_id}-${P.ponto_fim_id}`,R=o.selectedSegmentoId!=null&&(String(o.selectedSegmentoId)===String(P.id)||String(o.selectedSegmentoId)===String(_)),F=R?"#facc15":i.estilo.corPrimaria||D,B=[[L.lat,L.lon],[w.lat,w.lon]],T=R?l+3:l,N=M==="LN1"?"6, 6":i.estilo.dashArray;st(t,B,R?T+2:T,a,N);const O=b.polyline(B,{color:F,weight:T,opacity:R?1:d,dashArray:N,pane:a,interactive:h});if(O.segmentoId=_,O.segmento=P,h){O.on("click",j=>{j&&j.originalEvent&&j.originalEvent.stopPropagation(),o.onSegmentoClick&&o.onSegmentoClick(_,P,{lat:(L.lat+w.lat)/2,lon:(L.lon+w.lon)/2})});const V=P.acoes||i.acoes||((I=i.dados)==null?void 0:I.acoes)||[],q=`${P.ponto_inicio_id}-${P.ponto_fim_id}`,H=E.renderPopupAcoesHtml(V,q);O.bindPopup(`
62
62
  <div style="font-family:sans-serif; color:rgba(255, 255, 255, 0.9); line-height:1.3;">
63
- <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">${E.escapeHtml(C.nome_vertice)} ↔ ${E.escapeHtml(w.nome_vertice)}</div>
63
+ <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">${E.escapeHtml(L.nome_vertice)} ↔ ${E.escapeHtml(w.nome_vertice)}</div>
64
64
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Limite: ${E.escapeHtml(M||"N/A")} · ${E.escapeHtml(z||"N/A")}</div>
65
65
  ${H}
66
66
  </div>
67
- `,{className:"compact-popup",maxWidth:220}),O.on("popupopen",j=>{if(o.modoSequencial){O.closePopup();return}E.bindPopupAcoesEvents(j.popup,P,o,O)})}O.addTo(t)}});else if(u&&u.length>=2){const P=u.filter(z=>z.lat&&z.lon&&z.tipo_ponto!=="B"&&z.tipo!=="B"&&z.ignorar_poligono!==1),C=((x=n.dados)==null?void 0:x.chaveGrupo)||o.chaveGrupo,w=E.agruparPontosPorChave(P,C),I=n.estilo.corPrimaria||(i?"#f59e0b":"#10b981"),M=n.estilo.dashArray||(i?"6, 8":void 0);Object.values(w).forEach(z=>{const D=E.ordenarPontosPorSequencia(z);if(D.length<2)return;const _=D.map(F=>[F.lat,F.lon]);if(st(t,_,l,a,M),b.polyline(_,{color:I,weight:l,opacity:d,dashArray:M,pane:a,interactive:h}).addTo(t),_.length>=3){const F=_[_.length-1],B=_[0],T=i?"6, 8":"4, 4",$=[F,B];st(t,$,l,a,T),b.polyline($,{color:I,weight:l,opacity:d,dashArray:T,pane:a,interactive:h}).addTo(t)}})}}class ko{constructor(){f(this,"zoomListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),i=U(e,t.id,"linha");Ke(t,a,e,o,i);const r=()=>{if(t.estilo.scaleMode==="world"){const s=zo(t,e,o);a.eachLayer(c=>{c.setStyle&&c.setStyle({weight:s})})}};return e.on("zoomend",r),this.zoomListenerMap.set(a,r),a}update(t,e,o,a,i){(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),Ke(t,e,i,a,U(i,t.id,"linha")))}destroy(t,e){const o=this.zoomListenerMap.get(t);o&&(e.off("zoomend",o),this.zoomListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}const Yt=300;function Kt(n){return n>Yt?"compacta":"normal"}function Te(n,t){if(n<=Yt)return 1;const e=Math.max(.7,1-.3*Math.log10(n/Yt)),o=t>=18?1:t>=16?.92:t>=14?.82:.72;return Math.max(.6,e*o)}function Io(n){if(!n)return"#00f5a0";const t=n.trim();if(t.startsWith("#")||t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("var("))return t;if(t.includes("bg-[#")&&t.includes("]")){const o=t.match(/bg-\[(#[a-fA-F0-9]+)\]/);if(o)return o[1]}const e={"bg-mint-vibrant":"#00f5a0","bg-indigo-500":"#6366f1","bg-rose-500":"#f43f5e","bg-amber-500":"#f59e0b","bg-forest-deep":"#06130b","bg-purple-500":"#a855f7","bg-blue-500":"#3b82f6","bg-emerald-500":"#10b981"};for(const[o,a]of Object.entries(e))if(t.includes(o))return a;return"#00f5a0"}function Je(n){return n.replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t])}const ne={diamond:"6,0.8 11.2,6 6,11.2 0.8,6",triangle:"6,1 11.4,10.6 0.6,10.6"},re={cross:["M6 1.2V10.8","M1.2 6H10.8"],x:["M2 2L10 10","M10 2L2 10"]};function Pt(n,t,e,o="",a="",i=!1,r={}){const s=i||o.includes("ponto-selecionado")||o.includes("cad-marker-selected"),c=r.densidade==="compacta",l=Je(Io(e)),d=t+6,h=s?`color-mix(in srgb, ${l} 38%, #000000)`:l,u=s?1:c?.72:.9,m=s?"rgba(255,255,255,0.95)":c?"rgba(0,0,0,0.55)":"rgba(0,0,0,0.7)",v=s?1.3:c?.8:1,p=s?"rgba(255,255,255,0.9)":"rgba(0,0,0,0.6)",y=(C,w,I,M="")=>`class="${C}" stroke="${w}" stroke-width="${I}" vector-effect="non-scaling-stroke" ${M}`,A=n in ne?`<polygon points="${ne[n]}" style="fill:${h}" fill-opacity="${u}" stroke-linejoin="round" ${y("cad-pt-contorno",m,v)} />`:n in re?re[n].map(C=>`<path d="${C}" fill="none" stroke-linecap="round" ${y("cad-pt-halo",p,c?2.6:3.4)} /><path d="${C}" fill="none" stroke-linecap="round" ${y("cad-pt-traco",s?h:l,c?1.3:1.8,`stroke-opacity="${s?1:c?.9:1}"`)} />`).join(""):n==="square"?`<rect x="1.2" y="1.2" width="9.6" height="9.6" rx="1.4" style="fill:${h}" fill-opacity="${u}" ${y("cad-pt-contorno",m,v)} />`:`<circle cx="6" cy="6" r="5.2" style="fill:${h}" fill-opacity="${u}" ${y("cad-pt-contorno",m,v)} />`,k=!c&&!s&&!(n in re)?n in ne?"":n==="square"?'<rect x="2.2" y="2.2" width="7.6" height="7.6" rx="0.9" fill="none" stroke="rgba(255,255,255,0.45)" stroke-width="0.8" vector-effect="non-scaling-stroke" />':'<circle cx="6" cy="6" r="4.3" fill="none" stroke="rgba(255,255,255,0.45)" stroke-width="0.8" vector-effect="non-scaling-stroke" />':"",S=n==="circle-dot"?'<circle cx="6" cy="6" r="1.7" fill="#ffffff" stroke="rgba(0,0,0,0.45)" stroke-width="0.6" vector-effect="non-scaling-stroke" />':"",L=`cad-pt ${c?"cad-pt-compacto":""} ${e} ${o} ${s?"ponto-selecionado":""}`.replace(/\s+/g," ").trim(),x=t;return`
68
- <div ${a?`id="${Je(a)}"`:""} class="${L}" style="display:flex; align-items:center; justify-content:center; width:${d}px; height:${d}px; position:relative; pointer-events:auto; background:none !important;">
67
+ `,{className:"compact-popup",maxWidth:220}),O.on("popupopen",j=>{if(o.modoSequencial){O.closePopup();return}E.bindPopupAcoesEvents(j.popup,P,o,O)})}O.addTo(t)}});else if(p&&p.length>=2){const P=p.filter(z=>z.lat&&z.lon&&z.tipo_ponto!=="B"&&z.tipo!=="B"&&z.ignorar_poligono!==1),L=((x=i.dados)==null?void 0:x.chaveGrupo)||o.chaveGrupo,w=E.agruparPontosPorChave(P,L),I=i.estilo.corPrimaria||(n?"#f59e0b":"#10b981"),M=i.estilo.dashArray||(n?"6, 8":void 0);Object.values(w).forEach(z=>{const D=E.ordenarPontosPorSequencia(z);if(D.length<2)return;const _=D.map(F=>[F.lat,F.lon]);if(st(t,_,l,a,M),b.polyline(_,{color:I,weight:l,opacity:d,dashArray:M,pane:a,interactive:h}).addTo(t),_.length>=3){const F=_[_.length-1],B=_[0],T=n?"6, 8":"4, 4",N=[F,B];st(t,N,l,a,T),b.polyline(N,{color:I,weight:l,opacity:d,dashArray:T,pane:a,interactive:h}).addTo(t)}})}}class To{constructor(){f(this,"zoomListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),n=U(e,t.id,"linha");to(t,a,e,o,n);const r=()=>{if(t.estilo.scaleMode==="world"){const s=_o(t,e,o);a.eachLayer(c=>{c.setStyle&&c.setStyle({weight:s})})}};return e.on("zoomend",r),this.zoomListenerMap.set(a,r),a}update(t,e,o,a,n){(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),to(t,e,n,a,U(n,t.id,"linha")))}destroy(t,e){const o=this.zoomListenerMap.get(t);o&&(e.off("zoomend",o),this.zoomListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}const Jt=300;function Qt(i){return i>Jt?"compacta":"normal"}function qe(i,t){if(i<=Jt)return 1;const e=Math.max(.7,1-.3*Math.log10(i/Jt)),o=t>=18?1:t>=16?.92:t>=14?.82:.72;return Math.max(.6,e*o)}function Oo(i){if(!i)return"#00f5a0";const t=i.trim();if(t.startsWith("#")||t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("var("))return t;if(t.includes("bg-[#")&&t.includes("]")){const o=t.match(/bg-\[(#[a-fA-F0-9]+)\]/);if(o)return o[1]}const e={"bg-mint-vibrant":"#00f5a0","bg-indigo-500":"#6366f1","bg-rose-500":"#f43f5e","bg-amber-500":"#f59e0b","bg-forest-deep":"#06130b","bg-purple-500":"#a855f7","bg-blue-500":"#3b82f6","bg-emerald-500":"#10b981"};for(const[o,a]of Object.entries(e))if(t.includes(o))return a;return"#00f5a0"}function eo(i){return i.replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t])}const se={diamond:"6,0.8 11.2,6 6,11.2 0.8,6",triangle:"6,1 11.4,10.6 0.6,10.6"},ce={cross:["M6 1.2V10.8","M1.2 6H10.8"],x:["M2 2L10 10","M10 2L2 10"]};function Pt(i,t,e,o="",a="",n=!1,r={}){const s=n||o.includes("ponto-selecionado")||o.includes("cad-marker-selected"),c=r.densidade==="compacta",l=eo(Oo(e)),d=t+6,h=s?`color-mix(in srgb, ${l} 38%, #000000)`:l,p=s?1:c?.72:.9,g=s?"rgba(255,255,255,0.95)":c?"rgba(0,0,0,0.55)":"rgba(0,0,0,0.7)",v=s?1.3:c?.8:1,u=s?"rgba(255,255,255,0.9)":"rgba(0,0,0,0.6)",y=(L,w,I,M="")=>`class="${L}" stroke="${w}" stroke-width="${I}" vector-effect="non-scaling-stroke" ${M}`,A=i in se?`<polygon points="${se[i]}" style="fill:${h}" fill-opacity="${p}" stroke-linejoin="round" ${y("cad-pt-contorno",g,v)} />`:i in ce?ce[i].map(L=>`<path d="${L}" fill="none" stroke-linecap="round" ${y("cad-pt-halo",u,c?2.6:3.4)} /><path d="${L}" fill="none" stroke-linecap="round" ${y("cad-pt-traco",s?h:l,c?1.3:1.8,`stroke-opacity="${s?1:c?.9:1}"`)} />`).join(""):i==="square"?`<rect x="1.2" y="1.2" width="9.6" height="9.6" rx="1.4" style="fill:${h}" fill-opacity="${p}" ${y("cad-pt-contorno",g,v)} />`:`<circle cx="6" cy="6" r="5.2" style="fill:${h}" fill-opacity="${p}" ${y("cad-pt-contorno",g,v)} />`,k=!c&&!s&&!(i in ce)?i in se?"":i==="square"?'<rect x="2.2" y="2.2" width="7.6" height="7.6" rx="0.9" fill="none" stroke="rgba(255,255,255,0.45)" stroke-width="0.8" vector-effect="non-scaling-stroke" />':'<circle cx="6" cy="6" r="4.3" fill="none" stroke="rgba(255,255,255,0.45)" stroke-width="0.8" vector-effect="non-scaling-stroke" />':"",S=i==="circle-dot"?'<circle cx="6" cy="6" r="1.7" fill="#ffffff" stroke="rgba(0,0,0,0.45)" stroke-width="0.6" vector-effect="non-scaling-stroke" />':"",C=`cad-pt ${c?"cad-pt-compacto":""} ${e} ${o} ${s?"ponto-selecionado":""}`.replace(/\s+/g," ").trim(),x=t;return`
68
+ <div ${a?`id="${eo(a)}"`:""} class="${C}" style="display:flex; align-items:center; justify-content:center; width:${d}px; height:${d}px; position:relative; pointer-events:auto; background:none !important;">
69
69
  <svg width="${x}" height="${x}" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" style="overflow:visible; display:block;">
70
70
  ${A}${k}${S}
71
71
  </svg>
72
72
  </div>
73
- `}class Do{constructor(){f(this,"zoomListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),i=U(e,t.id,"ponto");this.rebuildPoints(t,a,e,o,i);const r=()=>{a.eachLayer(s=>{if(!(s.setIcon&&s.baseSize&&s.shapeStyle&&s.markerBg&&s.pontoId!==void 0))return;const c=s.densTotal||0;if(t.estilo.scaleMode!=="world"&&Kt(c)!=="compacta")return;const l=this.calculateSize(t,e,o,s.baseSize,c);l!==s.tamanhoPx&&(s.tamanhoPx=l,s.setIcon(this.criarIcone(t,o,s.shapeStyle,l,s.markerBg,s.pontoId,!!s.isSelected,c)))})};return e.on("zoomend",r),this.zoomListenerMap.set(a,r),a}criarIcone(t,e,o,a,i,r,s,c){const l=e.config.enableAnimations?"cad-pt-anim":"",d=Pt(o,a,i,l,`map-marker-${t.id}-${r}`,s,{densidade:Kt(c)});return b.divIcon({html:d,className:`custom-leaflet-marker ${s?"cad-marker-selected":""}`.trim(),iconSize:[a+6,a+6]})}calculateSize(t,e,o,a,i=0){const r=o.graphicScale.markerScaleMultiplier||1;if(t.estilo.scaleMode==="world"){const c=t.estilo.dimensaoMetros||.25,l=e.getCenter(),d=e.getZoom(),h=40075016686e-3*Math.abs(Math.cos(l.lat*Math.PI/180))/Math.pow(2,d+8),u=c/(h>0?h:1);return Math.max(3,Math.round(u*r))}const s=Te(i,e.getZoom());return Math.max(s<1?5:4,Math.round(a*r*s))}rebuildPoints(t,e,o,a,i){var m;const s=t.id==="homologados-pontos"?a.bancoPontos||[]:((m=t.dados)==null?void 0:m.pontos)||a.pontos||[],c=t.interativo&&!t.bloqueada,l=t.id==="vizinhos",d=t.id==="homologados"||t.id==="homologados-pontos",h=a.selectedPontoIds||[],u=s.length;s.forEach(v=>{var A;const p=v.lat??v.latitude,y=v.lon??v.lng??v.longitude;if(p!==void 0&&y!==void 0&&p!==0&&y!==0&&!isNaN(Number(p))&&!isNaN(Number(y))){const k=v.tipo_ponto==="B"||v.tipo==="B",S=v.tipo_ponto==="M"||v.tipo==="M";let L=t.estilo.estiloMarcador||"x",x=t.estilo.corPrimaria||"bg-mint-vibrant",P=t.estilo.tamanhoMarcador||7;d?(L="circle",x=t.estilo.corPrimaria||"#f59e0b",P=8):l?(L=S?"circle-dot":t.estilo.estiloMarcador||"cross",x=t.estilo.corPrimaria||"#a855f7",P=S?10:8):S?(x="#6366f1",L="circle-dot",P=10):k&&(x="#f43f5e",L="square",P=9);const C=!!(v.selecionado||h.length>0&&(h.includes(v.id)||h.includes(String(v.id))||h.includes(Number(v.id)))),w=this.calculateSize(t,o,a,P,u),I=this.criarIcone(t,a,L,w,x,v.id,C,u),M=b.marker([Number(p),Number(y)],{icon:I,pane:i,interactive:c});if(C&&M.setZIndexOffset(2e3),M.pontoId=v.id,M.layerId=t.id,M.isVizinho=l,M.baseSize=P,M.shapeStyle=L,M.markerBg=x,M.isSelected=C,M.densTotal=u,M.tamanhoPx=w,c){const z=d?"Vértice Homologado SIGEF":l?"Confrontante (Importado)":S?"Base Homologada PPP":k?"Base de Campo (Translação)":"Vértice de Perímetro",D=v.acoes||t.acoes||((A=t.dados)==null?void 0:A.acoes)||[],_=E.renderPopupAcoesHtml(D,v.id);M.bindPopup(`
73
+ `}class qo{constructor(){f(this,"zoomListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),n=U(e,t.id,"ponto");this.rebuildPoints(t,a,e,o,n);const r=()=>{a.eachLayer(s=>{if(!(s.setIcon&&s.baseSize&&s.shapeStyle&&s.markerBg&&s.pontoId!==void 0))return;const c=s.densTotal||0;if(t.estilo.scaleMode!=="world"&&Qt(c)!=="compacta")return;const l=this.calculateSize(t,e,o,s.baseSize,c);l!==s.tamanhoPx&&(s.tamanhoPx=l,s.setIcon(this.criarIcone(t,o,s.shapeStyle,l,s.markerBg,s.pontoId,!!s.isSelected,c)))})};return e.on("zoomend",r),this.zoomListenerMap.set(a,r),a}criarIcone(t,e,o,a,n,r,s,c){const l=e.config.enableAnimations?"cad-pt-anim":"",d=Pt(o,a,n,l,`map-marker-${t.id}-${r}`,s,{densidade:Qt(c)});return b.divIcon({html:d,className:`custom-leaflet-marker ${s?"cad-marker-selected":""}`.trim(),iconSize:[a+6,a+6]})}calculateSize(t,e,o,a,n=0){const r=o.graphicScale.markerScaleMultiplier||1;if(t.estilo.scaleMode==="world"){const c=t.estilo.dimensaoMetros||.25,l=e.getCenter(),d=e.getZoom(),h=40075016686e-3*Math.abs(Math.cos(l.lat*Math.PI/180))/Math.pow(2,d+8),p=c/(h>0?h:1);return Math.max(3,Math.round(p*r))}const s=qe(n,e.getZoom());return Math.max(s<1?5:4,Math.round(a*r*s))}rebuildPoints(t,e,o,a,n){var g;const s=t.id==="homologados-pontos"?a.bancoPontos||[]:((g=t.dados)==null?void 0:g.pontos)||a.pontos||[],c=t.interativo&&!t.bloqueada,l=t.id==="vizinhos",d=t.id==="homologados"||t.id==="homologados-pontos",h=a.selectedPontoIds||[],p=s.length;s.forEach(v=>{var A;const u=v.lat??v.latitude,y=v.lon??v.lng??v.longitude;if(u!==void 0&&y!==void 0&&u!==0&&y!==0&&!isNaN(Number(u))&&!isNaN(Number(y))){const k=v.tipo_ponto==="B"||v.tipo==="B",S=v.tipo_ponto==="M"||v.tipo==="M";let C=t.estilo.estiloMarcador||"x",x=t.estilo.corPrimaria||"bg-mint-vibrant",P=t.estilo.tamanhoMarcador||7;d?(C="circle",x=t.estilo.corPrimaria||"#f59e0b",P=8):l?(C=S?"circle-dot":t.estilo.estiloMarcador||"cross",x=t.estilo.corPrimaria||"#a855f7",P=S?10:8):S?(x="#6366f1",C="circle-dot",P=10):k&&(x="#f43f5e",C="square",P=9);const L=!!(v.selecionado||h.length>0&&(h.includes(v.id)||h.includes(String(v.id))||h.includes(Number(v.id)))),w=this.calculateSize(t,o,a,P,p),I=this.criarIcone(t,a,C,w,x,v.id,L,p),M=b.marker([Number(u),Number(y)],{icon:I,pane:n,interactive:c});if(L&&M.setZIndexOffset(2e3),M.pontoId=v.id,M.layerId=t.id,M.isVizinho=l,M.baseSize=P,M.shapeStyle=C,M.markerBg=x,M.isSelected=L,M.densTotal=p,M.tamanhoPx=w,c){const z=d?"Vértice Homologado SIGEF":l?"Confrontante (Importado)":S?"Base Homologada PPP":k?"Base de Campo (Translação)":"Vértice de Perímetro",D=v.acoes||t.acoes||((A=t.dados)==null?void 0:A.acoes)||[],_=E.renderPopupAcoesHtml(D,v.id);M.bindPopup(`
74
74
  <div style="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.3;">
75
75
  <div style="font-weight:700; font-size:13px; margin-bottom:4px; color:#ffffff;">${E.escapeHtml(v.nome_vertice||String(v.id))}</div>
76
76
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">${E.escapeHtml(z)} · ${E.escapeHtml(v.tipo_ponto||v.tipo||"Vértice")}</div>
77
- <div style="font-size:11px; color:rgba(255, 255, 255, 0.45); font-family:var(--ui-fonte-codigo, monospace); margin-top:4px;">Lat ${Number(p).toFixed(6)} &nbsp; Lon ${Number(y).toFixed(6)}</div>
77
+ <div style="font-size:11px; color:rgba(255, 255, 255, 0.45); font-family:var(--ui-fonte-codigo, monospace); margin-top:4px;">Lat ${Number(u).toFixed(6)} &nbsp; Lon ${Number(y).toFixed(6)}</div>
78
78
  ${_}
79
79
  </div>
80
- `,{className:"compact-popup",maxWidth:240}),D&&D.length>0&&M.on("popupopen",R=>{E.bindPopupAcoesEvents(R.popup,v,a,M)}),M.on("click",()=>{a.onMarkerClick&&a.onMarkerClick(v.id,l,v,{lat:Number(p),lon:Number(y)})})}M.addTo(e)}})}update(t,e,o,a,i){(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),this.rebuildPoints(t,e,i,a,U(i,t.id,"ponto")))}destroy(t,e){const o=this.zoomListenerMap.get(t);o&&(e.off("zoomend",o),this.zoomListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}class _o{render(t,e,o){const a=b.layerGroup();return this.rebuildPolygons(t,a,o,e),a}rebuildPolygons(t,e,o,a){var m,v;const i=U(a,t.id,"poligono"),r=U(a,t.id,"ponto"),c=(((m=t.dados)==null?void 0:m.poligonos)??(Array.isArray(t.dados)?t.dados:null))||((v=t.dados)==null?void 0:v.confrontantes)||o.confrontantes||[],l=t.interativo&&!t.bloqueada,d=t.estilo.corPrimaria||"#a855f7",h=t.estilo.espessuraLinha||1,u=t.opacidade!==void 0?t.opacidade:.8;c.forEach(p=>{var C,w,I,M,z,D,_,R,F,B;if(!p)return;const y=((C=p.estilo)==null?void 0:C.cor)||((w=p.estilo)==null?void 0:w.color)||d,A=((I=p.estilo)==null?void 0:I.espessura)||((M=p.estilo)==null?void 0:M.weight)||h,k=((z=p.estilo)==null?void 0:z.opacidade)??u,S=((D=p.estilo)==null?void 0:D.fillColor)||y,L=((_=p.estilo)==null?void 0:_.fillOpacity)??Math.min(.14,k*.1),x=((R=p.estilo)==null?void 0:R.dashArray)||t.estilo.dashArray||"4, 6";if(p.coordenadas&&Array.isArray(p.coordenadas)&&p.coordenadas.length>=3){const T=Array.isArray(p.coordenadas[0])&&Array.isArray(p.coordenadas[0][0]);let $;if(T?$=p.coordenadas.map(O=>O.map(V=>{const q=E.parseCoordenada(V[0],V[1]);return q?[q.lat,q.lon]:null}).filter(Boolean)):$=p.coordenadas.map(O=>{const V=E.parseCoordenada(O[0],O[1]);return V?[V.lat,V.lon]:null}).filter(Boolean),$&&(T?((F=$[0])==null?void 0:F.length)>=3:$.length>=3)){const O=b.polygon($,{color:y,weight:A,opacity:k,dashArray:x,fillColor:S,fillOpacity:L,lineJoin:"round",pane:i,interactive:l});if(O.poligonoId=p.id,O.layerId=t.id,l){let V="";p.metadados&&Object.keys(p.metadados).length>0&&(V=Object.entries(p.metadados).map(([q,H])=>`<div style="font-size:11px;"><strong>${E.escapeHtml(q)}:</strong> ${E.escapeHtml(String(H))}</div>`).join("")),O.bindPopup(`
80
+ `,{className:"compact-popup",maxWidth:240}),D&&D.length>0&&M.on("popupopen",R=>{E.bindPopupAcoesEvents(R.popup,v,a,M)}),M.on("click",()=>{a.onMarkerClick&&a.onMarkerClick(v.id,l,v,{lat:Number(u),lon:Number(y)})})}M.addTo(e)}})}update(t,e,o,a,n){(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),this.rebuildPoints(t,e,n,a,U(n,t.id,"ponto")))}destroy(t,e){const o=this.zoomListenerMap.get(t);o&&(e.off("zoomend",o),this.zoomListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}class Fo{render(t,e,o){const a=b.layerGroup();return this.rebuildPolygons(t,a,o,e),a}rebuildPolygons(t,e,o,a){var g,v;const n=U(a,t.id,"poligono"),r=U(a,t.id,"ponto"),c=(((g=t.dados)==null?void 0:g.poligonos)??(Array.isArray(t.dados)?t.dados:null))||((v=t.dados)==null?void 0:v.confrontantes)||o.confrontantes||[],l=t.interativo&&!t.bloqueada,d=t.estilo.corPrimaria||"#a855f7",h=t.estilo.espessuraLinha||1,p=t.opacidade!==void 0?t.opacidade:.8;c.forEach(u=>{var L,w,I,M,z,D,_,R,F,B;if(!u)return;const y=((L=u.estilo)==null?void 0:L.cor)||((w=u.estilo)==null?void 0:w.color)||d,A=((I=u.estilo)==null?void 0:I.espessura)||((M=u.estilo)==null?void 0:M.weight)||h,k=((z=u.estilo)==null?void 0:z.opacidade)??p,S=((D=u.estilo)==null?void 0:D.fillColor)||y,C=((_=u.estilo)==null?void 0:_.fillOpacity)??Math.min(.14,k*.1),x=((R=u.estilo)==null?void 0:R.dashArray)||t.estilo.dashArray||"4, 6";if(u.coordenadas&&Array.isArray(u.coordenadas)&&u.coordenadas.length>=3){const T=Array.isArray(u.coordenadas[0])&&Array.isArray(u.coordenadas[0][0]);let N;if(T?N=u.coordenadas.map(O=>O.map(V=>{const q=E.parseCoordenada(V[0],V[1]);return q?[q.lat,q.lon]:null}).filter(Boolean)):N=u.coordenadas.map(O=>{const V=E.parseCoordenada(O[0],O[1]);return V?[V.lat,V.lon]:null}).filter(Boolean),N&&(T?((F=N[0])==null?void 0:F.length)>=3:N.length>=3)){const O=b.polygon(N,{color:y,weight:A,opacity:k,dashArray:x,fillColor:S,fillOpacity:C,lineJoin:"round",pane:n,interactive:l});if(O.poligonoId=u.id,O.layerId=t.id,l){let V="";u.metadados&&Object.keys(u.metadados).length>0&&(V=Object.entries(u.metadados).map(([q,H])=>`<div style="font-size:11px;"><strong>${E.escapeHtml(q)}:</strong> ${E.escapeHtml(String(H))}</div>`).join("")),O.bindPopup(`
81
81
  <div style="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.3; min-width:180px;">
82
- <div style="font-weight:700; font-size:12px; color:#c084fc; margin-bottom:3px; border-bottom:1px solid rgba(255,255,255,0.1); padding-bottom:3px;">Polígono ${E.escapeHtml(String(p.id??""))}</div>
83
- ${V||`<div style="font-size:11px;">Área vetorial definida por ${p.coordenadas.length} vértices</div>`}
82
+ <div style="font-weight:700; font-size:12px; color:#c084fc; margin-bottom:3px; border-bottom:1px solid rgba(255,255,255,0.1); padding-bottom:3px;">Polígono ${E.escapeHtml(String(u.id??""))}</div>
83
+ ${V||`<div style="font-size:11px;">Área vetorial definida por ${u.coordenadas.length} vértices</div>`}
84
84
  </div>
85
- `,{className:"compact-popup",maxWidth:220}),O.on("popupopen",()=>{o.modoSequencial&&O.closePopup()})}O.addTo(e);return}}const P=p.wkt||p.poligono_wkt;if(P){const T=[...P.matchAll(/\(([^()]+)\)/g)];if(T.length>0){const $=E.escapeHtml(p.nome_propriedade||`Polígono ${String(p.id||"")}`),O=E.escapeHtml(p.nome||"Proprietário"),V=[];if(T.forEach(q=>{const H=q[1].split(",").map(j=>{const Y=j.trim().split(/\s+/);if(Y.length<2)return null;const et=E.parseCoordenada(Y[1],Y[0]);return et?[et.lat,et.lon]:null}).filter(j=>j!==null);H.length>=3&&V.push(H)}),V.length>0){const q=V.length===1?V[0]:V,H=b.polygon(q,{color:y,weight:A,opacity:k,dashArray:x,fillColor:S,fillOpacity:L,lineJoin:"round",pane:i,interactive:l});if(H.poligonoId=p.id,H.layerId=t.id,l){const j=p.acoes||t.acoes||((B=t.dados)==null?void 0:B.acoes)||[],Y=E.renderPopupAcoesHtml(j,p.id);H.bindPopup(`
85
+ `,{className:"compact-popup",maxWidth:220}),O.on("popupopen",()=>{o.modoSequencial&&O.closePopup()})}O.addTo(e);return}}const P=u.wkt||u.poligono_wkt;if(P){const T=[...P.matchAll(/\(([^()]+)\)/g)];if(T.length>0){const N=E.escapeHtml(u.nome_propriedade||`Polígono ${String(u.id||"")}`),O=E.escapeHtml(u.nome||"Proprietário"),V=[];if(T.forEach(q=>{const H=q[1].split(",").map(j=>{const Y=j.trim().split(/\s+/);if(Y.length<2)return null;const et=E.parseCoordenada(Y[1],Y[0]);return et?[et.lat,et.lon]:null}).filter(j=>j!==null);H.length>=3&&V.push(H)}),V.length>0){const q=V.length===1?V[0]:V,H=b.polygon(q,{color:y,weight:A,opacity:k,dashArray:x,fillColor:S,fillOpacity:C,lineJoin:"round",pane:n,interactive:l});if(H.poligonoId=u.id,H.layerId=t.id,l){const j=u.acoes||t.acoes||((B=t.dados)==null?void 0:B.acoes)||[],Y=E.renderPopupAcoesHtml(j,u.id);H.bindPopup(`
86
86
  <div style="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.3; min-width:180px;">
87
- <div style="font-weight:700; font-size:12px; color:#c084fc; margin-bottom:3px; border-bottom:1px solid rgba(255,255,255,0.1); padding-bottom:3px;">${$}</div>
88
- <div style="font-size:11px; margin-bottom:2px;"><strong>Identificador:</strong> ${E.escapeHtml(String(p.id??""))}</div>
89
- ${p.nome?`<div style="font-size:11px;"><strong>Proprietário:</strong> ${O}</div>`:""}
87
+ <div style="font-weight:700; font-size:12px; color:#c084fc; margin-bottom:3px; border-bottom:1px solid rgba(255,255,255,0.1); padding-bottom:3px;">${N}</div>
88
+ <div style="font-size:11px; margin-bottom:2px;"><strong>Identificador:</strong> ${E.escapeHtml(String(u.id??""))}</div>
89
+ ${u.nome?`<div style="font-size:11px;"><strong>Proprietário:</strong> ${O}</div>`:""}
90
90
  ${Y}
91
91
  </div>
92
- `,{className:"compact-popup",maxWidth:220}),H.on("popupopen",et=>{if(o.modoSequencial){H.closePopup();return}E.bindPopupAcoesEvents(et.popup,p,o,H)})}H.addTo(e)}}}p.pontos&&p.pontos.length>0&&p.pontos.forEach(T=>{var O;const $=E.parseCoordenada(T.lat??T.latitude??T.y,T.lon??T.lng??T.longitude??T.x);if($){const V=b.divIcon({html:'<div class="cad-pt" style="width:12px; height:12px; display:flex; align-items:center; justify-content:center;"><svg width="8" height="8" viewBox="0 0 12 12" style="overflow:visible; display:block;"><circle cx="6" cy="6" r="5.2" fill="#a855f7" fill-opacity="0.85" stroke="rgba(0,0,0,0.65)" stroke-width="1" vector-effect="non-scaling-stroke" /><circle cx="6" cy="6" r="4.3" fill="none" stroke="rgba(255,255,255,0.5)" stroke-width="0.8" vector-effect="non-scaling-stroke" /></svg></div>',className:"custom-leaflet-marker",iconSize:[12,12]}),q=b.marker([$.lat,$.lon],{icon:V,pane:r,interactive:l});if(q.pontoId=T.id,q.isVizinho=!0,q.layerId=t.id,l){const H=T.acoes||p.acoes||t.acoes||((O=t.dados)==null?void 0:O.acoes)||[],j=E.renderPopupAcoesHtml(H,T.id);q.bindPopup(`
92
+ `,{className:"compact-popup",maxWidth:220}),H.on("popupopen",et=>{if(o.modoSequencial){H.closePopup();return}E.bindPopupAcoesEvents(et.popup,u,o,H)})}H.addTo(e)}}}u.pontos&&u.pontos.length>0&&u.pontos.forEach(T=>{var O;const N=E.parseCoordenada(T.lat??T.latitude??T.y,T.lon??T.lng??T.longitude??T.x);if(N){const V=b.divIcon({html:'<div class="cad-pt" style="width:12px; height:12px; display:flex; align-items:center; justify-content:center;"><svg width="8" height="8" viewBox="0 0 12 12" style="overflow:visible; display:block;"><circle cx="6" cy="6" r="5.2" fill="#a855f7" fill-opacity="0.85" stroke="rgba(0,0,0,0.65)" stroke-width="1" vector-effect="non-scaling-stroke" /><circle cx="6" cy="6" r="4.3" fill="none" stroke="rgba(255,255,255,0.5)" stroke-width="0.8" vector-effect="non-scaling-stroke" /></svg></div>',className:"custom-leaflet-marker",iconSize:[12,12]}),q=b.marker([N.lat,N.lon],{icon:V,pane:r,interactive:l});if(q.pontoId=T.id,q.isVizinho=!0,q.layerId=t.id,l){const H=T.acoes||u.acoes||t.acoes||((O=t.dados)==null?void 0:O.acoes)||[],j=E.renderPopupAcoesHtml(H,T.id);q.bindPopup(`
93
93
  <div style="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.3; min-width:170px;">
94
94
  <div style="font-weight:700; font-size:12px; color:#c084fc; margin-bottom:3px;">${E.escapeHtml(T.nome_vertice||String(T.id))}</div>
95
- <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Confrontante: ${E.escapeHtml(p.nome||"Desconhecido")}</div>
96
- <div style="font-size:10px; color:rgba(255, 255, 255, 0.45); font-family:var(--ui-fonte-codigo, monospace); margin-top:3px;">Lat ${$.lat.toFixed(6)} &nbsp; Lon ${$.lon.toFixed(6)}</div>
95
+ <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Confrontante: ${E.escapeHtml(u.nome||"Desconhecido")}</div>
96
+ <div style="font-size:10px; color:rgba(255, 255, 255, 0.45); font-family:var(--ui-fonte-codigo, monospace); margin-top:3px;">Lat ${N.lat.toFixed(6)} &nbsp; Lon ${N.lon.toFixed(6)}</div>
97
97
  ${j}
98
98
  </div>
99
- `,{className:"compact-popup",maxWidth:220}),q.on("click",()=>{o.modoSequencial&&q.closePopup(),o.onMarkerClick&&o.onMarkerClick(T.id,!0,T,{lat:$.lat,lon:$.lon})}),q.on("popupopen",Y=>{if(o.modoSequencial){q.closePopup();return}E.bindPopupAcoesEvents(Y.popup,T,o,q)})}q.addTo(e)}})})}update(t,e,o,a,i){o.opacidade!==void 0&&o.estilo===void 0&&o.dados===void 0&&o.interativo===void 0&&o.bloqueada===void 0||(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),this.rebuildPolygons(t,e,a,i))}destroy(t,e){t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}class To{constructor(){f(this,"moveListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),i=`pane-${t.id}`,r=()=>{if(a.clearLayers(),!t.visivel)return;if(e.getZoom()>20){const c=e.getBounds(),l=c.getSouth(),d=c.getNorth(),h=c.getWest(),u=c.getEast(),m=e.getCenter(),v=8999e-9,p=Math.cos(m.lat*Math.PI/180),y=v/(p>.1?p:1),A=Math.floor((d-l)/v),k=Math.floor((u-h)/y);if(A<200&&k<200){const S=Math.ceil(l/v)*v;for(let x=S;x<=d;x+=v)b.polyline([[x,h],[x,u]],{color:t.estilo.corPrimaria||"rgba(0, 245, 160, 0.18)",weight:t.estilo.espessuraLinha||.6,interactive:!1,pane:i}).addTo(a);const L=Math.ceil(h/y)*y;for(let x=L;x<=u;x+=y)b.polyline([[l,x],[d,x]],{color:t.estilo.corPrimaria||"rgba(0, 245, 160, 0.18)",weight:t.estilo.espessuraLinha||.6,interactive:!1,pane:i}).addTo(a)}}};return r(),e.on("zoomend moveend",r),this.moveListenerMap.set(a,r),a}update(t,e){t.visivel||e.clearLayers()}destroy(t,e){const o=this.moveListenerMap.get(t);o&&(e.off("zoomend moveend",o),this.moveListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}function Oo(n,t){var r,s;const e=n._nosCurva,o=n._renderer,a=n._map;if(!e||e.length<2||!o||!a)return!1;const i=c=>a.latLngToLayerPoint([c[0],c[1]]);if(o._ctx&&o._fillStroke){if(!o._drawing||!((r=n._parts)!=null&&r.length))return!0;const c=o._ctx;c.beginPath();for(const l of g.passosDaCurva(e,t)){const d=l.pts.map(i);l.cmd==="M"?c.moveTo(d[0].x,d[0].y):l.cmd==="L"?c.lineTo(d[0].x,d[0].y):c.bezierCurveTo(d[0].x,d[0].y,d[1].x,d[1].y,d[2].x,d[2].y)}return t&&c.closePath(),o._fillStroke(c,n),!0}return o._setPath?(o._setPath(n,(s=n._parts)!=null&&s.length?g.caminhoSvg(e,t,i):"M0 0"),!0):!1}class qo extends b.Polyline{constructor(){super(...arguments);f(this,"_nosCurva",null)}definirCurva(e){this._nosCurva=e}_updatePath(){Oo(this,!1)||b.Polyline.prototype._updatePath.call(this)}}class Fo extends b.Polygon{constructor(){super(...arguments);f(this,"_nosCurva",null)}definirCurva(e){this._nosCurva=e}_updatePath(){Oo(this,!0)||b.Polygon.prototype._updatePath.call(this)}}function Oe(n,t){const e=g.nosDaGeometria(n);if(!e)return null;const o=n.tipo==="Polygon"?new Fo(n.aneis[0],t):new qo(n.coordenadas,t);return o.definirCurva(e),o}function $o(n,t){n.definirCurva(g.nosDaGeometria(t)),n.setLatLngs(t.tipo==="Polygon"?t.aneis[0]:t.coordenadas)}function ht(n){const{lat:t,lng:e}=g.metrosPorGrau(n[0]);return{lat0:n[0],lon0:n[1],mLat:t,mLng:Math.max(e,1)}}function ye(n,t){return[(n[1]-t.lon0)*t.mLng,(n[0]-t.lat0)*t.mLat]}function ut(n,t){return[t.lat0+n[1]/t.mLat,t.lon0+n[0]/t.mLng]}function qe(n,t){const e=o=>{let a=!1;for(let i=0,r=o.length-1;i<o.length;r=i++){const[s,c]=o[i],[l,d]=o[r];s>n[0]!=l>n[0]&&n[1]<(d-c)*(n[0]-s)/(l-s)+c&&(a=!a)}return a};return!t[0]||!e(t[0])?!1:!t.slice(1).some(e)}function No(n,t,e,o){const a=t[0]-n[0],i=t[1]-n[1],r=o[0]-e[0],s=o[1]-e[1],c=a*s-i*r;if(Math.abs(c)<1e-12)return null;const l=((e[0]-n[0])*s-(e[1]-n[1])*r)/c,d=((e[0]-n[0])*i-(e[1]-n[1])*a)/c;return l<0||l>1||d<0||d>=1?null:{t:l,u:d}}function Jt(n){let t=0;for(let e=0;e<n.length;e++){const[o,a]=n[e],[i,r]=n[(e+1)%n.length];t+=o*r-i*a}return Math.abs(t)/2}function Ro(n,t){if(n.length<3||t.length<2)return null;const e=ht(n[0]),o=n.map(r=>ye(r,e)),a=t.map(r=>ye(r,e)),i=Bo(o,a,0);return i&&i.length>=2?i.map(r=>r.map(s=>ut(s,e))):null}function Bo(n,t,e){if(e>8)return null;const o=n.length,a=[];for(let x=0;x<t.length-1;x++)for(let P=0;P<o;P++){const C=No(t[x],t[x+1],n[P],n[(P+1)%o]);C&&a.push({tLinha:x+C.t,tAnel:P+C.u,ponto:[t[x][0]+C.t*(t[x+1][0]-t[x][0]),t[x][1]+C.t*(t[x+1][1]-t[x][1])]})}if(a.sort((x,P)=>x.tLinha-P.tLinha),a.length<2)return null;const[i,r]=a,s=[];for(let x=Math.floor(i.tLinha)+1;x<=Math.floor(r.tLinha);x++)x>i.tLinha&&x<r.tLinha&&s.push(t[x]);const c=[i.ponto,...s,r.ponto];let l=i,d=r,h=c;i.tAnel>r.tAnel&&(l=r,d=i,h=[...c].reverse());const u=Math.floor(l.tAnel),m=Math.floor(d.tAnel),v=h.slice(1,-1),p=[l.ponto];for(let x=u+1;x<=m;x++)p.push(n[x%o]);p.push(d.ponto,...[...v].reverse());const y=[d.ponto];for(let x=m+1;x<=u+o;x++)y.push(n[x%o]);y.push(l.ponto,...v);const k=Jt(n)*1e-9,S=[p,y].filter(x=>x.length>=3&&Jt(x)>k);if(S.length<2)return null;const L=[r.ponto,...t.slice(Math.floor(r.tLinha)+1)];if(a.length>2&&L.length>=2){const x=[];for(const P of S){const C=Bo(P,L,e+1);C?x.push(...C):x.push(P)}return x}return S}function pt(n,t){return n.map(e=>ye(e,t))}const Q=(n,t)=>Math.hypot(n[0]-t[0],n[1]-t[1]);function Vo(n,t=0){if(n.length===0||n.some(i=>i.length<2))return null;const e=ht(n[0][0]),o=n.slice(1).map(i=>pt(i,e));let a=pt(n[0],e);for(;o.length>0;){let i=null;if(o.forEach((d,h)=>{const u=a[0],m=a[a.length-1],v=[{inverter:!1,noFim:!0,d:Q(m,d[0])},{inverter:!0,noFim:!0,d:Q(m,d[d.length-1])},{inverter:!1,noFim:!1,d:Q(u,d[d.length-1])},{inverter:!0,noFim:!1,d:Q(u,d[0])}];for(const p of v)(!i||p.d<i.d)&&(i={idx:h,...p})}),!i||i.d>t)return null;const{idx:r,inverter:s,noFim:c}=i;let l=o.splice(r,1)[0];s&&(l=[...l].reverse()),a=c?[...a,...Q(a[a.length-1],l[0])>0?l:l.slice(1)]:[...l,...Q(l[l.length-1],a[0])>0?a:a.slice(1)]}return a.map(i=>ut(i,e))}function ni(n,t,e,o){const a=No(n,t,e,o);return!!a&&a.t>1e-9&&a.t<1-1e-9&&a.u>1e-9}function ri(n,t){for(let e=0;e<n.length;e++)for(let o=0;o<t.length;o++)if(ni(n[e],n[(e+1)%n.length],t[o],t[(o+1)%t.length]))return!0;return!1}function Ho(n,t,e=0){if(n.length<3||t.length<3)return null;const o=ht(n[0]),a=pt(n,o),i=pt(t,o);if(ri(a,i))return null;let r={i:0,j:0,d:1/0};for(let d=0;d<a.length;d++)for(let h=0;h<i.length;h++){const u=Q(a[d],i[h]);u<r.d&&(r={i:d,j:h,d:u})}if(r.d>e)return null;const{i:s,j:c}=r,l=[];for(let d=0;d<=a.length;d++)l.push(a[(s+d)%a.length]);for(let d=0;d<=i.length;d++)l.push(i[(c+d)%i.length]);return l.map(d=>ut(d,o))}const Qe=16;function to(n,t,e,o){const a=[];for(let i=0;i<=Qe;i++){const r=e+(o-e)*i/Qe;a.push([n[0]+t*Math.cos(r),n[1]+t*Math.sin(r)])}return a}function kt(n,t){const e=Q(n,t)||1;return[-(t[1]-n[1])/e,(t[0]-n[0])/e]}function se(n,t,e){const o=n.length,a=[],i=o;for(let r=0;r<i;r++){const s=e?n[(r-1+o)%o]:n[Math.max(0,r-1)],c=n[r],l=e?n[(r+1)%o]:n[Math.min(o-1,r+1)],d=r===0&&!e?kt(c,l):kt(s,c),h=r===o-1&&!e?kt(s,c):kt(c,l);let u=d[0]+h[0],m=d[1]+h[1];const v=Math.hypot(u,m);if(v<1e-9){a.push([c[0]+d[0]*t,c[1]+d[1]*t]);continue}u/=v,m/=v;const p=u*d[0]+m*d[1],y=Math.min(1/Math.max(p,.5),2);a.push([c[0]+u*t*y,c[1]+m*t*y])}return a}function si(n){let t=0;for(let e=0;e<n.length;e++){const[o,a]=n[e],[i,r]=n[(e+1)%n.length];t+=(i-o)*(r+a)}return t>0}function Go(n,t){if(!Number.isFinite(t)||t===0)return null;if(n.tipo==="Point"||n.tipo==="Text"||n.tipo==="Circle"){const e=n.tipo==="Circle"?n.centro:n.coordenada,o=n.tipo==="Circle"?n.raioMetros+t:t;if(o<=0)return null;const a=ht(e),i=64;return Array.from({length:i},(r,s)=>[o*Math.cos(2*Math.PI*s/i),o*Math.sin(2*Math.PI*s/i)]).map(r=>ut(r,a))}if(n.tipo==="LineString"){if(t<0||n.coordenadas.length<2||g.ehMultilinha(n))return null;const e=ht(n.coordenadas[0]),o=pt(n.coordenadas,e),a=se(o,t,!1),i=se([...o].reverse(),t,!1),r=o[o.length-1],s=o[0],c=Math.atan2(r[1]-o[o.length-2][1],r[0]-o[o.length-2][0]),l=Math.atan2(s[1]-o[1][1],s[0]-o[1][0]),d=to(r,t,c+Math.PI/2,c-Math.PI/2),h=to(s,t,l+Math.PI/2,l-Math.PI/2);return[...a,...d,...i,...h].map(u=>ut(u,e))}if(n.tipo==="Polygon"){const e=n.aneis[0];if(!e||e.length<3)return null;const o=ht(e[0]);let a=pt(e,o);si(a)&&(a=[...a].reverse());const r=se(a,-t,!0);return r.length<3||t<0&&Jt(r)>=Jt(a)?null:r.map(s=>ut(s,o))}return null}function jo(n,t,e){const o=a=>{const i=g.metrosPorGrau(a[0]),r=e/i.lat,s=t/Math.max(i.lng,1);return[a[0]+r,a[1]+s]};switch(n.tipo){case"Point":return{tipo:"Point",coordenada:o(n.coordenada)};case"Text":return{...n,coordenada:o(n.coordenada)};case"Circle":return{...n,centro:o(n.centro)};case"LineString":{const a=g.criarLinha(g.partesDaLinha(n).map(i=>i.map(o)));return n.curva?{...a,curva:g.moverNos(n.curva,o)}:a}case"Polygon":{const a={tipo:"Polygon",aneis:n.aneis.map(i=>i.map(o))};return n.curva?{...a,curva:g.moverNos(n.curva,o)}:a}}}const eo={m:1,km:1e3,ft:.3048,mi:1609.344},oo={m2:1,ha:1e4,km2:1e6,ac:4046.8564224,alqueire:24200};function ci(n,t,e){return n*eo[t]/eo[e]}function li(n,t,e){return n*oo[t]/oo[e]}function di(n,t,e=2){const o=t==="lat"?n<0?"S":"N":n<0?"O":"L",a=Math.abs(n);let i=Math.floor(a),r=Math.floor((a-i)*60),s=Number(((a-i-r/60)*3600).toFixed(e));s>=60&&(s=0,r+=1),r>=60&&(r=0,i+=1);const c=s.toFixed(e).padStart(e?e+3:2,"0");return`${i}°${String(r).padStart(2,"0")}'${c}"${o}`}function hi(n){var u;if(typeof n!="string")return null;const t=n.trim().toUpperCase().replace(",","."),e=(u=/[NSLEOW]$/.exec(t))==null?void 0:u[0],o=t.replace(/[NSLEOW]$/,"").trim(),a=o.match(/-?\d+(?:\.\d+)?/g);if(!a||a.length===0||a.length>3||!/^[-\d\s°'"′″.]+$/.test(o))return null;const[i,r="0",s="0"]=a,c=Math.abs(Number(i)),l=Number(r),d=Number(s);if(l<0||l>=60||d<0||d>=60)return null;let h=c+l/60+d/3600;return(i.startsWith("-")||e==="S"||e==="O"||e==="W")&&(h=-h),h}function ui(n,t){return g.distanciaMetros(n,t)}function $t(n,t,e){return{...n,id:t,geometria:e??JSON.parse(JSON.stringify(n.geometria)),estilo:n.estilo?{...n.estilo}:void 0,propriedades:{...n.propriedades}}}const Uo=5e3;function At(n){return n.tipo==="Polygon"?3:n.tipo==="LineString"?2:1}function be(n,t=!1){if(n.bloqueada||t)return"bloqueada";const e=n.geometria;return e.tipo!=="Point"&&e.tipo!=="LineString"&&e.tipo!=="Polygon"&&e.tipo!=="Circle"?"tipo-nao-suportado":e.tipo==="Polygon"&&e.aneis.length!==1?"poligono-com-furos":g.ehMultilinha(e)?"multiparte":Z(e).length>Uo?"muitos-vertices":null}function Z(n){return n.tipo==="Point"?[n.coordenada]:n.tipo==="LineString"?n.coordenadas:n.tipo==="Polygon"?n.aneis[0]??[]:[]}function Et(n,t){return n.tipo==="Point"?{tipo:"Point",coordenada:t[0]}:n.tipo==="LineString"?{tipo:"LineString",coordenadas:t}:n.tipo==="Polygon"?{tipo:"Polygon",aneis:[t]}:n}function pi(n,t,e){const o=Z(n).slice();return t<0||t>=o.length?n:(o[t]=e,Et(n,o))}function Wo(n,t,e){if(n.tipo!=="LineString"&&n.tipo!=="Polygon")return n;const o=Z(n).slice();return t<0||t>=o.length?n:(o.splice(t+1,0,e),Et(n,o))}function Zo(n,t){if(n.tipo!=="LineString"&&n.tipo!=="Polygon")return null;const e=Z(n);return t<0||t>=e.length||e.length<=At(n)?null:Et(n,e.filter((o,a)=>a!==t))}function Fe(n,t){return[(n[0]+t[0])/2,(n[1]+t[1])/2]}function $e(n){const t=Z(n).length,e=[];if(n.tipo!=="LineString"&&n.tipo!=="Polygon")return e;for(let o=0;o<t-1;o++)e.push([o,o+1]);return n.tipo==="Polygon"&&t>2&&e.push([t-1,0]),e}function X(n){return(n.tipo==="LineString"||n.tipo==="Polygon")&&n.curva&&n.curva.length>=At(n)?n.curva:null}const Xo=.5;function Yo(n,t){return[n[0],n[1]+t/Math.max(g.metrosPorGrau(n[0]).lng,1)]}function it(n){var t;return n.tipo==="Circle"?[n.centro,Yo(n.centro,n.raioMetros)]:((t=X(n))==null?void 0:t.map(e=>e.ponto))??Z(n)}function ft(n,t){const e=n.tipo==="Polygon",o=g.amostrarCurva(t,e);return e?{tipo:"Polygon",aneis:[o],curva:t}:{tipo:"LineString",coordenadas:o,curva:t}}function xe(n,t){if(n.tipo==="Circle")return t.length<2?n:{...n,centro:t[0],raioMetros:Math.max(Xo,g.distanciaMetros(t[0],t[1]))};const e=X(n);if(!e||e.length!==t.length)return Et(n,t);const o=e.map((a,i)=>{const r=t[i][0]-a.ponto[0],s=t[i][1]-a.ponto[1],c=d=>[d[0]+r,d[1]+s],l={ponto:t[i]};return a.entrada&&(l.entrada=c(a.entrada)),a.saida&&(l.saida=c(a.saida)),l});return ft(n,o)}function ct(n,t,e){return[n[0]+(t[0]-n[0])*e,n[1]+(t[1]-n[1])*e]}function fi(n,t,e){const[o,a]=g.controlesDoSegmento(n,t);let i=.5,r=1/0;for(let s=1;s<64;s++){const c=s/64,l=g.pontoDaCubica(n.ponto,o,a,t.ponto,c),d=(l[0]-e[0])**2+(l[1]-e[1])**2;d<r&&(r=d,i=c)}return i}function lt(n,t,e){const o=X(n);if(!o){const r=Z(n);return Fe(r[t],r[e])}const[a,i]=g.controlesDoSegmento(o[t],o[e]);return g.pontoDaCubica(o[t].ponto,a,i,o[e].ponto,.5)}function Ne(n){const t=X(n);if(!t)return $e(n);const e=[];for(let o=0;o<t.length-1;o++)e.push([o,o+1]);return n.tipo==="Polygon"&&t.length>2&&e.push([t.length-1,0]),e}function Ko(n,t,e){const o=X(n);if(!o)return Wo(n,t,e);if(t<0||t>=o.length)return n;const a=(t+1)%o.length,i=o[t],r=o[a],s=i.saida===void 0&&r.entrada===void 0;let c,l=i,d=r;if(s)c={ponto:e};else{const u=fi(i,r,e),[m,v]=g.controlesDoSegmento(i,r),p=ct(i.ponto,m,u),y=ct(m,v,u),A=ct(v,r.ponto,u),k=ct(p,y,u),S=ct(y,A,u);c={ponto:ct(k,S,u),entrada:k,saida:S},l={...i,saida:p},d={...r,entrada:A}}const h=o.slice();return h[t]=l,h[a]=d,h.splice(t+1,0,c),ft(n,h)}function Jo(n,t){const e=X(n);return e?t<0||t>=e.length||e.length<=At(n)?null:ft(n,e.filter((o,a)=>a!==t)):Zo(n,t)}function mt(n){return n.tipo!=="LineString"&&n.tipo!=="Polygon"?null:X(n)??Z(n).map(t=>({ponto:[t[0],t[1]]}))}const Qo=40;function ta(n,t,e){const o=mt(n);if(!o||t<0||t>=o.length)return null;const a=n.tipo==="Polygon",i=o.length,r=e==="saida"?t<i-1?o[t+1]:a?o[0]:null:t>0?o[t-1]:a?o[i-1]:null;if(!r)return null;const s=o[t].ponto;return[s[0]+(r.ponto[0]-s[0])/3,s[1]+(r.ponto[1]-s[1])/3]}function ea(n,t,e,o,a=!0){const i=mt(n);if(!i||t<0||t>=i.length)return n;const r={...i[t],[e]:o};a&&(r[e==="saida"?"entrada":"saida"]=g.espelhoDaAlca(r.ponto,o));const s=i.slice();return s[t]=r,ft(n,s)}function oa(n,t){const e=mt(n);if(!e||t<0||t>=e.length)return n;const o=e[t],a=e.slice();if(o.entrada||o.saida)return a[t]={ponto:o.ponto},ft(n,a);const i=n.tipo==="Polygon",r=e.length,s=t>0?e[t-1]:i?e[r-1]:null,c=t<r-1?e[t+1]:i?e[0]:null;if(!s&&!c)return n;const l=o.ponto;let d,h;if(s&&c)d=(c.ponto[0]-s.ponto[0])/6,h=(c.ponto[1]-s.ponto[1])/6;else{const u=(c??s).ponto,m=c?1:-1;d=(u[0]-l[0])/3*m,h=(u[1]-l[1])/3*m}return a[t]={ponto:l,saida:[l[0]+d,l[1]+h],entrada:[l[0]-d,l[1]-h]},ft(n,a)}const aa=6,ce=(n,t)=>Math.hypot(n.x-t.x,n.y-t.y);function ao(n,t,e){const o=e.x-t.x,a=e.y-t.y,i=o*o+a*a,r=i===0?0:Math.max(0,Math.min(1,((n.x-t.x)*o+(n.y-t.y)*a)/i));return Math.hypot(n.x-(t.x+r*o),n.y-(t.y+r*a))}function mi(n,t){const e=n.geometria;if(e.tipo!=="Polygon")return 0;let o=1/0,a=-1/0,i=1/0,r=-1/0;for(const s of e.aneis[0]){const c=t(s);c.x<o&&(o=c.x),c.x>a&&(a=c.x),c.y<i&&(i=c.y),c.y>r&&(r=c.y)}return(a-o)*(r-i)}function wt(n,t,e,o=aa){let a=null,i=null,r=null;for(const s of t){if(s.excluida||s.oculta)continue;const c=s.geometria;if(c.tipo==="Point"||c.tipo==="Text"){const l=ce(n,e(c.coordenada));l<=o+2&&(!a||l<a.d)&&(a={f:s,d:l})}else if(c.tipo==="LineString"){let l=1/0;for(const d of g.partesDaLinha(c)){const h=d.map(e);for(let u=1;u<h.length;u++)l=Math.min(l,ao(n,h[u-1],h[u]))}l<=o&&(!i||l<i.d)&&(i={f:s,d:l})}else if(c.tipo==="Circle"){const l=e(c.centro),d=e([c.centro[0]+c.raioMetros/111320,c.centro[1]]),h=ce(l,d);if(ce(n,l)<=h){const u=Math.PI*h*h;(!r||u<r.a)&&(r={f:s,a:u})}}else{const l=c.aneis[0].map(e);let d=1/0;for(const[u,m]of $e(c))d=Math.min(d,ao(n,l[u],l[m]));if(qe([n.y,n.x],[l.map(u=>[u.y,u.x]),...c.aneis.slice(1).map(u=>u.map(e).map(m=>[m.y,m.x]))])||d<=o){const u=mi(s,e);(!r||u<r.a)&&(r={f:s,a:u})}}}return(a==null?void 0:a.f)??(i==null?void 0:i.f)??(r==null?void 0:r.f)??null}const It=.1,gi=2,vi=typeof requestAnimationFrame=="function"?n=>{requestAnimationFrame(n)}:n=>{setTimeout(n,16)};class yi extends b.Layer{constructor(e,o){super();f(this,"canvas",null);f(this,"agendado",!1);f(this,"vivo",!1);f(this,"nomePane");f(this,"obterMarcas");f(this,"ultimaPintura",0);this.nomePane=e,this.obterMarcas=o}onAdd(e){const o=e.getPane(this.nomePane);if(!o)return this;const a=b.DomUtil.create("canvas","leaflet-zoom-animated cad-marcas-lod");return a.style.pointerEvents="none",a.setAttribute("aria-hidden","true"),o.appendChild(a),this.canvas=a,this.vivo=!0,e.on("zoomstart",this.esconder,this),e.on("resize",this.solicitarRedesenho,this),this.solicitarRedesenho(),this}onRemove(e){var o;return this.vivo=!1,e.off("zoomstart",this.esconder,this),e.off("resize",this.solicitarRedesenho,this),(o=this.canvas)==null||o.remove(),this.canvas=null,this}solicitarRedesenho(){this.agendado||!this.vivo||(this.agendado=!0,vi(()=>{this.agendado=!1,this.vivo&&this.redesenhar()}))}esconder(){this.canvas&&(this.canvas.style.display="none")}redesenhar(){const e=this._map,o=this.canvas;if(!(!e||!o))try{const a=e.getSize(),i=Math.ceil(a.x*(1+2*It)),r=Math.ceil(a.y*(1+2*It));if(!(i>0&&r>0))return;const s=Math.min(gi,typeof window<"u"&&window.devicePixelRatio||1),c=e.containerPointToLayerPoint([-a.x*It,-a.y*It]).round();(o.width!==Math.round(i*s)||o.height!==Math.round(r*s))&&(o.width=Math.round(i*s),o.height=Math.round(r*s)),o.style.width=`${i}px`,o.style.height=`${r}px`,b.DomUtil.setPosition(o,c),o.style.display="";const l=o.getContext("2d");if(!l)return;l.setTransform(s,0,0,s,0,0),l.clearRect(0,0,i,r);const d=e.getPixelOrigin().add(c);this.ultimaPintura=g.pintarMarcas(l,this.obterMarcas(),e.getZoom(),d.x,d.y,i,r)}catch{}}}const ia=new WeakMap,Qt={tower:'<path d="M12 2 L8 22 M12 2 L16 22 M9.5 12 H14.5 M8.7 17 H15.3 M12 2 L9.5 12 L14.5 12 Z" />',tree:'<path d="M12 22 V14 M12 3 L5 14 H19 Z" />',warning:'<path d="M12 3 L22 20 H2 Z M12 9 V14 M12 17 V17.5" />',water:'<path d="M12 3 C12 3 5 11 5 15.5 A7 7 0 0 0 19 15.5 C19 11 12 3 12 3 Z" />',boundary:'<path d="M12 2 L22 12 L12 22 L2 12 Z" />'};function Nt(n,t,e=!1){const o=n.estilo??{},a=o.tamanhoIcone??t.tamanhoMarcador,i=typeof a=="number"&&Number.isFinite(a)&&a>0?a:22,r=e?g.COR_SELECAO:g.corSegura(o.corTraco??o.corPreenchimento??t.corPrimaria,g.COR_PADRAO),s=Number.isFinite(o.rotacaoIcone)?o.rotacaoIcone:0,c=Qt[o.icone??""]??"";return b.divIcon({className:`custom-leaflet-marker${e?" cad-feicao-selecionada":""}`,iconSize:[i,i],html:`<svg width="${i}" height="${i}" viewBox="0 0 24 24" fill="${r}" fill-opacity="0.25" stroke="${r}" stroke-width="1.6" stroke-linejoin="round" stroke-linecap="round" style="transform:rotate(${s}deg);overflow:visible;display:block${e?`;filter:drop-shadow(0 0 3px ${g.COR_SELECAO})`:""}">${c}</svg>`})}function Rt(n,t,e=!1){const o=n.estilo??{},a=n.geometria.tipo==="Text"?n.geometria.texto:"",i=e?g.COR_SELECAO:g.corSegura(o.corTraco??t.corPrimaria,"#ffffff"),r=Number.isFinite(o.tamanhoFonte)?o.tamanhoFonte:13,c=`display:inline-block;white-space:nowrap;transform:translate(-50%,-50%) rotate(${Number.isFinite(o.rotacaoIcone)?o.rotacaoIcone:0}deg);color:${i};font-size:${r}px;font-weight:600;`,l=g.corSegura(o.corFundo,"");if(l){const h=g.corSegura(o.corBorda,""),u=typeof o.opacidadeFundo=="number"&&Number.isFinite(o.opacidadeFundo)?Math.min(1,Math.max(0,o.opacidadeFundo)):.85,m=typeof o.raioBorda=="number"&&Number.isFinite(o.raioBorda)?Math.min(50,Math.max(0,o.raioBorda)):4,v=e?`1px solid ${g.COR_SELECAO}`:h?`1px solid ${h}`:"none";return b.divIcon({className:`custom-leaflet-marker cad-feicao-texto cad-feicao-selo${e?" cad-feicao-selecionada":""}`,iconSize:void 0,html:`<span style="${c}position:relative;padding:2px 6px;border-radius:${m}px;border:${v}"><span style="position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:${l};opacity:${u}"></span><span style="position:relative">${E.escapeHtml(a)}</span></span>`})}const d=o.halo?"text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;":"";return b.divIcon({className:`custom-leaflet-marker cad-feicao-texto${e?" cad-feicao-selecionada":""}`,iconSize:void 0,html:`<span style="${c}${d}">${E.escapeHtml(a)}</span>`})}function na(n,t){const e=n<10?30:n<100?38:46,o=g.corSegura(t.corPrimaria,g.COR_PADRAO);return b.divIcon({className:"custom-leaflet-marker cad-feicao-cluster",iconSize:[e,e],html:`<div style="width:${e}px;height:${e}px;border-radius:50%;background:${o};opacity:.9;border:2px solid rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;color:#fff;font:700 12px sans-serif;text-shadow:0 0 2px #000">${n}</div>`})}function Pe(n,t){return{color:n.cor,stroke:n.traco,weight:n.peso,dashArray:n.dash,fill:n.preencher,fillColor:n.corPreenchimento,fillOpacity:n.opacidadePreenchimento,lineJoin:"round",interactive:t}}const bi=150,xi=100,Bt=300,le=.75,Pi=20,Ci=.3,de=typeof requestAnimationFrame=="function"?n=>{requestAnimationFrame(n)}:n=>{setTimeout(n,16)};class ra{constructor(){f(this,"estados",new WeakMap);f(this,"selecionadas",ia);f(this,"tokenLote",new WeakMap)}render(t,e,o){const a=b.layerGroup();return this.sincronizar(t,a,e,o,!0),a}update(t,e,o,a,i){if(o.dados===void 0&&o.estilo===void 0&&o.interativo===void 0&&o.bloqueada===void 0)return;const r=o.estilo!==void 0||o.interativo!==void 0||o.bloqueada!==void 0;this.sincronizar(t,e,i,a,r)}destroy(t,e){const o=this.estados.get(t);o&&(o.vivo=!1,e.off("moveend zoomend",o.aoMover),this.descartarMarcas(o)),t.clearLayers(),this.estados.delete(t),this.tokenLote.set(t,(this.tokenLote.get(t)??0)+1),e.hasLayer(t)&&e.removeLayer(t)}reavaliarVersoes(t){const e=this.estados.get(t);e&&(e.revisao++,e.revisaoBase++,this.reconciliar(t,e,!1,null))}feicaoVisivel(t,e){const o=this.estados.get(t),a=o==null?void 0:o.context.regraVersoes;return!o||!a||a.visivel(e,o.oficiais)}consultarProximas(t,e){const o=this.estados.get(t);if(!o)return[];const a=[];for(const i of o.indice.consultar(e)){const r=o.loja.get(i);r&&!r.oculta&&a.push(r)}return a}previsualizar(t,e){var r;const o=this.estados.get(t),a=o==null?void 0:o.entradas.get(e.id);if(!o||!a)return;const i=o.map._loaded?o.map.getZoom():0;this.remendar(a.layer,this.paraDesenho(e,i),o.layerDef,o.interativo,!!((r=this.selecionadas.get(o.layerDef))!=null&&r.has(e.id)))}estatisticas(t){const e=this.estados.get(t);return e?{total:e.loja.size,materializadas:e.entradas.size,marcasLOD:e.marcas.size,clusters:e.clusters.size,avaliacoesLOD:e.avaliacoesLOD}:null}idsDesenhados(t){const e=this.estados.get(t);return e?{materializadas:[...e.entradas.keys()].sort(),marcas:[...e.marcas.keys()].sort()}:null}feicoesDe(t){const e=t.dados,o=Array.isArray(e)?e:e==null?void 0:e.feicoes;return Array.isArray(o)?o:[]}obterEstado(t,e,o,a){let i=this.estados.get(t);if(!i){const r={layerDef:e,interativo:!1,map:o,context:a,loja:new Map,indice:new g.IndiceEspacial,revisao:0,revisaoBase:0,listaSincronizada:null,oficiais:new Set,contOficiais:new Map,nPrevias:0,contPrevias:new Map,entradas:new Map,marcas:new Map,camadaMarcas:null,fonteHit:null,lod:new Map,zoomLod:-1,avaliacoesLOD:0,clusters:new Map,nPontos:0,nPontosRev:-1,agrupador:null,agrupadorRev:-1,culling:!1,agendado:!1,vivo:!0,aoMover:()=>{r.agendado||!r.vivo||(r.agendado=!0,de(()=>{r.agendado=!1,r.vivo&&this.reconciliar(t,r,!1,null)}))}};o.on("moveend zoomend",r.aoMover),this.estados.set(t,r),i=r}return i.layerDef=e,i.map=o,i.context=a,i.interativo=e.interativo&&!e.bloqueada,i}sincronizar(t,e,o,a,i){var v;const r=this.obterEstado(e,t,o,a),s=this.feicoesDe(t),c=(v=t.dados)==null?void 0:v.delta;if(!i&&this.aplicarDelta(e,r,s,c))return;const l=s.filter(p=>!p.excluida),d=new Set,h=new Set;for(const p of l)h.add(p.id),r.loja.get(p.id)!==p&&d.add(p.id);const u=[...r.loja.keys()].filter(p=>!h.has(p));if(d.size>0||u.length>0){if(r.revisao++,r.revisaoBase++,r.lod.clear(),r.loja.size===0||d.size+u.length>l.length*Ci)r.indice.construir(l);else{for(const p of l)d.has(p.id)&&r.indice.atualizar(p);for(const p of u)r.indice.remover(p)}r.loja=new Map(l.map(p=>[p.id,p])),this.recontarOficiais(r,l)}r.listaSincronizada=s;const m=this.selecionadas.get(t);if(m)for(const p of[...m])h.has(p)||m.delete(p);this.reconciliar(e,r,i,d)}recontarOficiais(t,e){t.contOficiais=new Map,t.contPrevias=new Map,t.nPrevias=0;for(const o of e){if(o.excluida)continue;if(g.statusDe(o)!=="oficial"){t.nPrevias++;const i=g.entidadeDe(o);t.contPrevias.set(i,(t.contPrevias.get(i)??0)+1);continue}const a=g.entidadeDe(o);t.contOficiais.set(a,(t.contOficiais.get(a)??0)+1)}t.oficiais=new Set(t.contOficiais.keys())}aplicarDelta(t,e,o,a){if(!a||a.base!==e.listaSincronizada)return!1;const{loja:i}=e,r=this.selecionadas.get(e.layerDef),s=p=>p.geometria.tipo==="Point"&&this.desenhavel(e,p),c=new Map,l=(p,y)=>{if(!p||p.excluida||g.statusDe(p)!=="oficial")return;const A=g.entidadeDe(p);c.has(A)||c.set(A,e.oficiais.has(A));const k=(e.contOficiais.get(A)??0)+y;k<=0?(e.contOficiais.delete(A),e.oficiais.delete(A)):(e.contOficiais.set(A,k),e.oficiais.add(A))},d=[],h=[],u=(p,y)=>{const A=g.entidadeDe(p),k=(e.contPrevias.get(A)??0)+y;k<=0?e.contPrevias.delete(A):e.contPrevias.set(A,k)},m=p=>{const y=i.get(p);y&&(e.lod.delete(p),g.statusDe(y)==="previa"&&(e.nPrevias--,u(y,-1)),l(y,-1),s(y)&&e.nPontos--,i.delete(p),e.indice.remover(p),r==null||r.delete(p),h.push(p))};for(const p of a.removidas)m(p);for(const p of a.mudadas){if(p.excluida){m(p.id);continue}const y=i.get(p.id);e.lod.delete(p.id),g.statusDe(p)==="previa"&&(e.nPrevias++,u(p,1)),y&&(g.statusDe(y)==="previa"&&(e.nPrevias--,u(y,-1)),l(y,-1),s(y)&&e.nPontos--),i.set(p.id,p),e.indice.atualizar(p),l(p,1),s(p)&&e.nPontos++,d.push(p.id)}let v=!1;if(e.nPrevias>0)for(const[p,y]of c)y!==e.oficiais.has(p)&&(v=!0);return e.listaSincronizada=o,e.revisao++,v&&e.revisaoBase++,this.reconciliarParcial(t,e,d,h,v),!0}ressimplificar(t,e){return t.zoomDesenho===e||g.vertices(t.feicao.geometria)<g.MIN_VERTICES_SIMPLIFICAR?!1:e<g.ZOOM_SEM_SIMPLIFICACAO||t.zoomDesenho<g.ZOOM_SEM_SIMPLIFICACAO}paraDesenho(t,e){const o=g.simplificarGeometria(t.geometria,e);return o===t.geometria?t:{...t,geometria:o}}desenhavel(t,e){if(e.oculta)return!1;const o=t.context.regraVersoes;return!o||o.visivel(e,t.oficiais)}estaCarregado(t){return!!t._loaded}caixaDe(t){return{minLon:t.getWest(),minLat:t.getSouth(),maxLon:t.getEast(),maxLat:t.getNorth()}}comoMarca(t,e,o,a){var c;if(o<0||a)return!1;const i=e.geometria.tipo;if(i==="Point"||i==="Text"||(c=e.estilo)!=null&&c.mostrarRotulo)return!1;if(t.contPrevias.size>0){const l=g.entidadeDe(e);if(t.contPrevias.has(l)&&t.oficiais.has(l))return!1}o!==t.zoomLod&&(t.lod.clear(),t.zoomLod=o);const r=t.lod.get(e.id);if(r!==void 0)return r;t.avaliacoesLOD++;const s=g.ehMarca(t.indice.caixaDe(e.id),o);return t.lod.set(e.id,s),s}novaMarca(t,e,o){const a=t.indice.caixaDe(e.id);if(!a)return null;const i=e.estilo??{},r=g.corSegura(i.corPreenchimento??i.corTraco??t.layerDef.estilo.corPrimaria,g.COR_PADRAO);return{id:e.id,lat:(a.minLat+a.maxLat)/2,lon:(a.minLon+a.maxLon)/2,cor:r,lado:g.ladoMarca(g.diagonalPx(a,o)),fonte:e}}colocarFeicao(t,e,o,a,i,r,s){if(this.comoMarca(e,o,i,r)){this.tirarEntrada(t,e,o.id);const c=e.marcas.get(o.id);if(!c||c.fonte!==o){const l=this.novaMarca(e,o,i);l&&e.marcas.set(o.id,l)}return}e.marcas.delete(o.id),this.materializar(t,e,o,a,r,s)}sincronizarMarcas(t){if(t.marcas.size===0){t.camadaMarcas&&this.descartarMarcas(t);return}if(!t.camadaMarcas){const e=U(t.map,t.layerDef.id,"poligono"),o=new yi(e,()=>t.marcas.values());t.camadaMarcas=o,o.addTo(t.map),o.on("click",a=>{var s,c;const{feicaoHit:i,originalEvent:r}=a;!i||!t.vivo||(c=(s=t.context).onLayerAction)==null||c.call(s,"feicao-clique",{camadaId:t.layerDef.id,feicao:i,aditivo:!!(r&&(r.ctrlKey||r.metaKey||r.shiftKey))})}),t.fonteHit=this.fonteDeMarcas(t,o),Ie(t.map,t.layerDef.id,t.fonteHit)}t.camadaMarcas.solicitarRedesenho()}fonteDeMarcas(t,e){return{alvo:e,consultar:o=>{const{map:a}=t;if(!t.vivo||!t.interativo||!t.layerDef.visivel||t.marcas.size===0||!this.estaCarregado(a))return[];const i=a.layerPointToContainerPoint(o),r=8,s=a.containerPointToLatLng([i.x-r,i.y+r]),c=a.containerPointToLatLng([i.x+r,i.y-r]),l={minLat:Math.min(s.lat,c.lat),maxLat:Math.max(s.lat,c.lat),minLon:Math.min(s.lng,c.lng),maxLon:Math.max(s.lng,c.lng)},d=[];for(const v of t.indice.consultar(l)){const p=t.marcas.has(v)?t.loja.get(v):void 0;p&&d.push(p)}const h=v=>{const p=a.latLngToContainerPoint(v);return{x:p.x,y:p.y}},u=a.getZoom(),m=[];for(let v=0;v<Pi&&d.length>0;v++){const p=wt({x:i.x,y:i.y},d,h);if(!p)break;d.splice(d.indexOf(p),1);const y=g.diagonalPx(t.indice.caixaDe(p.id)??l,u);m.push({feicao:p,chave:p.id,tipo:p.geometria.tipo==="LineString"?"linha":"poligono",distancia:0,area:Number.isFinite(y)?y*y/2:0})}return m}}}descartarMarcas(t){t.fonteHit&&De(t.map,t.layerDef.id,t.fonteHit),t.fonteHit=null,t.camadaMarcas&&(t.map.removeLayer(t.camadaMarcas),t.camadaMarcas=null),t.marcas.clear()}materializar(t,e,o,a,i,r){try{this.materializarFeicao(t,e,o,a,i,r)}catch{this.tirarEntrada(t,e,o.id)}}materializarFeicao(t,e,o,a,i,r){const s=this.formaDe(o),c=e.entradas.get(o.id);if(c&&c.forma===s){const h=c.feicao!==o||this.ressimplificar(c,a);r===!0||h?(this.remendar(c.layer,this.paraDesenho(o,a),e.layerDef,e.interativo,i),c.feicao=o,c.zoomDesenho=a):r==="estilo"&&this.restilizar(c.layer,o,e.layerDef,e.interativo,i);return}const l=this.paraDesenho(o,a);c&&t.removeLayer(c.layer);const d=this.criar(l,e.layerDef,e.map,e.interativo,i);this.ligarEventos(d,o.id,e.layerDef,e.entradas,e.context),this.aplicarRotulo(d,o),t.addLayer(d),e.entradas.set(o.id,{layer:d,forma:s,feicao:o,zoomDesenho:a})}tirarEntrada(t,e,o){const a=e.entradas.get(o);a&&(t.removeLayer(a.layer),e.entradas.delete(o))}colocarCluster(t,e,o,a){const i=e.clusters.get(o);if((i==null?void 0:i.assinatura)===a.assinatura)return;i&&t.removeLayer(i.marker);const r=this.criarMarcadorCluster(a.coordenada,a.total,()=>{var s,c;return Array.from(((c=(s=e.agrupador)==null?void 0:s.celula(o))==null?void 0:c.membros.values())??[])},e);t.addLayer(r),e.clusters.set(o,{marker:r,assinatura:a.assinatura})}tirarCluster(t,e,o){const a=e.clusters.get(o);a&&(t.removeLayer(a.marker),e.clusters.delete(o))}agrupadorAtivo(t,e){const o=r=>this.desenhavel(t,r);if(t.nPontosRev!==t.revisaoBase){let r=0;for(const s of t.loja.values())s.geometria.tipo==="Point"&&o(s)&&r++;t.nPontos=r,t.nPontosRev=t.revisaoBase}if(!g.deveAgrupar(t.nPontos,e))return t.agrupador=null,null;const a=t.agrupador;if(a&&a.zoom===e&&t.agrupadorRev===t.revisaoBase)return a;const i=new g.AgrupadorCluster(e,r=>t.map.project(b.latLng(r[0],r[1]),e));for(const r of t.loja.values())r.geometria.tipo==="Point"&&o(r)&&i.inserir({id:r.id,coordenada:r.geometria.coordenada});return t.agrupador=i,t.agrupadorRev=t.revisaoBase,i}reconciliar(t,e,o,a){var k;const{map:i,layerDef:r,loja:s}=e,c=this.selecionadas.get(r),l=this.estaCarregado(i),d=l?i.getZoom():0,h=l&&s.size>Bt?i.getBounds().pad(le):null,u=h?this.caixaDe(h):null;e.culling=h!==null;const m=u?e.indice.consultar(u):s.keys(),v=new Set(m);if(c)for(const S of c)s.has(S)&&v.add(S);for(const S of[...v]){const L=s.get(S);L&&!this.desenhavel(e,L)&&v.delete(S)}const p=new Map,y=l?this.agrupadorAtivo(e,d):null;if(y||(e.agrupador=null),y){for(const L of[...v])y.emCluster(L)&&v.delete(L);const S=new Map;if(c)for(const L of c){const x=y.chaveDoPonto(L),P=x===void 0||(k=y.celula(x))==null?void 0:k.membros.get(L);if(x!==void 0&&P){const C=S.get(x);C?C.push(P):S.set(x,[P])}}for(const[L,x]of y.celulasAgrupadas()){const P=S.get(L);if(P)for(const I of P)v.add(I.id);const C=x.membros.size,w=C-((P==null?void 0:P.length)??0);if(w===1)for(const I of x.membros.values()){if(c!=null&&c.has(I.id))continue;const M=e.indice.caixaDe(I.id);(!u||M&&g.caixasSeTocam(M,u))&&v.add(I.id);break}if(!(h&&!h.contains([x.somaLat/C,x.somaLon/C]))&&w>=2){let I=x.somaLat,M=x.somaLon;if(P)for(const D of P)I-=D.coordenada[0],M-=D.coordenada[1];const z=[I/w,M/w];p.set(L,{coordenada:z,total:C,assinatura:`${L}:${C}:${w}:${z[0].toFixed(7)}:${z[1].toFixed(7)}`})}}}const A=l?d:-1;for(const S of v){const L=s.get(S);L&&this.colocarFeicao(t,e,L,d,A,!!(c!=null&&c.has(S)),o||!!(a!=null&&a.has(S)))}for(const S of[...e.entradas.keys()])v.has(S)&&s.has(S)||this.tirarEntrada(t,e,S);for(const S of[...e.marcas.keys()])(!v.has(S)||!s.has(S))&&e.marcas.delete(S);this.sincronizarMarcas(e);for(const[S,L]of p)this.colocarCluster(t,e,S,L);for(const S of[...e.clusters.keys()])p.has(S)||this.tirarCluster(t,e,S)}reconciliarParcial(t,e,o,a,i){this.reconciliarParcialInterno(t,e,o,a,i),this.sincronizarMarcas(e)}reconciliarParcialInterno(t,e,o,a,i){const{map:r,layerDef:s,loja:c}=e,l=this.estaCarregado(r),d=l?r.getZoom():0,h=l&&c.size>Bt,u=l&&g.deveAgrupar(e.nPontos,d),m=e.agrupador;if(i||h!==e.culling||u!==(m!==null)||m!==null&&(m.zoom!==d||e.agrupadorRev!==e.revisaoBase)){this.reconciliar(t,e,!1,new Set(o));return}const v=this.selecionadas.get(s),p=C=>this.desenhavel(e,C),y=h?r.getBounds().pad(le):null,A=y?this.caixaDe(y):null,k=l?d:-1,S=(C,w)=>{const I=c.get(C);if(!I||!p(I)){this.tirarEntrada(t,e,C),e.marcas.delete(C);return}const M=!!(v!=null&&v.has(C));if(!M&&A){const z=e.indice.caixaDe(C);if(!z||!g.caixasSeTocam(z,A)){this.tirarEntrada(t,e,C),e.marcas.delete(C);return}}this.colocarFeicao(t,e,I,d,k,M,w)},L=new Set,x=[];for(const C of a){this.tirarEntrada(t,e,C),e.marcas.delete(C);const w=m==null?void 0:m.remover(C);w!==void 0&&L.add(w)}for(const C of o){e.marcas.delete(C);const w=c.get(C);if(!w)continue;const I=m==null?void 0:m.remover(C);I!==void 0&&L.add(I),m&&w.geometria.tipo==="Point"&&p(w)?L.add(m.inserir({id:C,coordenada:w.geometria.coordenada})):x.push(C)}for(const C of x)S(C,!0);if(!m)return;const P=new Set(o);for(const C of L){const w=m.celula(C);if(!w||w.membros.size<2){if(this.tirarCluster(t,e,C),w)for(const B of w.membros.keys())S(B,P.has(B));continue}const I=w.membros.size;let M=w.somaLat,z=w.somaLon,D=0;for(const B of w.membros.values())v!=null&&v.has(B.id)&&(D++,M-=B.coordenada[0],z-=B.coordenada[1]);const _=I-D;for(const B of w.membros.values())v!=null&&v.has(B.id)||_===1?S(B.id,P.has(B.id)):this.tirarEntrada(t,e,B.id);const R=[w.somaLat/I,w.somaLon/I];if(y&&!y.contains(R)||_<2){this.tirarCluster(t,e,C);continue}const F=[M/_,z/_];this.colocarCluster(t,e,C,{coordenada:F,total:I,assinatura:`${C}:${I}:${_}:${F[0].toFixed(7)}:${F[1].toFixed(7)}`})}}criarMarcadorCluster(t,e,o,a){const i=na(e,a.layerDef.estilo),r=b.marker(t,{icon:i,pane:U(a.map,a.layerDef.id,"ponto"),keyboard:!1});return r.bindTooltip(`${e} feições agrupadas`,{direction:"top"}),r.on("click",()=>{const s=o();s.length>0&&a.map.fitBounds(b.latLngBounds(s.map(c=>c.coordenada)),{padding:[60,60],maxZoom:18})}),r}aplicarSelecao(t,e){const o=this.estados.get(t);if(!o)return;const a=this.selecionadas.get(o.layerDef)??new Set,i=new Set(e);this.selecionadas.set(o.layerDef,i);const r=[];for(const y of i)a.has(y)||r.push(y);for(const y of a)i.has(y)||r.push(y);if(r.length===0)return;const{map:s,loja:c}=o,l=this.estaCarregado(s),d=l?s.getZoom():0,h=l?d:-1,u=l&&c.size>Bt?this.caixaDe(s.getBounds().pad(le)):null,m=o.agrupador!==null&&r.some(y=>{var A;return((A=c.get(y))==null?void 0:A.geometria.tipo)==="Point"}),v=y=>{const A=c.get(y);if(!A)return;const k=i.has(y);if(!this.desenhavel(o,A)){this.tirarEntrada(t,o,y),o.marcas.delete(y);return}if(!k&&u){const L=o.indice.caixaDe(y);if(!L||!g.caixasSeTocam(L,u)){this.tirarEntrada(t,o,y),o.marcas.delete(y);return}}this.colocarFeicao(t,o,A,d,h,k,"estilo");const S=k?o.entradas.get(y):void 0;S&&"bringToFront"in S.layer&&S.layer.bringToFront()},p=(this.tokenLote.get(t)??0)+1;if(this.tokenLote.set(t,p),r.length<=bi)r.forEach(v);else{const y=l?this.caixaDe(s.getBounds()):null,A=x=>{if(!y)return!0;const P=o.indice.caixaDe(x);return!P||g.caixasSeTocam(P,y)},k=r.filter(A),S=r.filter(x=>!A(x));k.forEach(v);const L=()=>{this.tokenLote.get(t)!==p||!o.vivo||(S.splice(0,xi).forEach(v),S.length>0?de(L):this.sincronizarMarcas(o))};S.length>0&&de(L)}m?this.reconciliar(t,o,!1,null):this.sincronizarMarcas(o)}formaDe(t){var o;const e=t.geometria;return e.tipo==="Point"?`Point:${(o=t.estilo)!=null&&o.icone&&Qt[t.estilo.icone]?t.estilo.icone:""}`:g.nosDaGeometria(e)?`${e.tipo}:curva`:e.tipo}paneDe(t){switch(t.geometria.tipo){case"Polygon":case"Circle":return"poligono";case"LineString":return"linha";case"Point":return"ponto";default:return"texto"}}estiloVetor(t,e,o,a=!1){return Pe(g.estiloVetorDe(t,e.estilo,a),o)}criar(t,e,o,a,i){var d;const r=U(o,e.id,this.paneDe(t)),s=t.geometria,c=this.estiloVetor(t,e,a,i),l=Oe(s,{...c,pane:r});if(l)return l;switch(s.tipo){case"Polygon":return b.polygon(s.aneis.length===1?s.aneis[0]:s.aneis,{...c,pane:r});case"Circle":return b.circle(s.centro,{...c,radius:s.raioMetros,pane:r});case"LineString":return b.polyline(s.partes&&s.partes.length>1?g.partesDaLinha(s):s.coordenadas,{...c,pane:r});case"Point":{const h=(d=t.estilo)==null?void 0:d.icone;return h&&Qt[h]?b.marker(s.coordenada,{icon:this.iconeSvg(t,e,i),pane:r,interactive:a}):b.circleMarker(s.coordenada,{...c,radius:g.raioPontoPx(t,e.estilo),pane:r})}default:return b.marker(s.coordenada,{icon:this.iconeTexto(t,e,i),pane:r,interactive:a,draggable:a&&!t.bloqueada})}}remendar(t,e,o,a,i){var c,l;const r=e.geometria,s=this.estiloVetor(e,o,a,i);(t instanceof qo||t instanceof Fo)&&g.nosDaGeometria(r)?($o(t,r),t.setStyle(s)):r.tipo==="Polygon"?(t.setLatLngs(r.aneis.length===1?r.aneis[0]:r.aneis),t.setStyle(s)):r.tipo==="LineString"?(t.setLatLngs(r.partes&&r.partes.length>1?g.partesDaLinha(r):r.coordenadas),t.setStyle(s)):r.tipo==="Circle"?(t.setLatLng(r.centro),t.setRadius(r.raioMetros),t.setStyle(s)):r.tipo==="Point"&&t instanceof b.CircleMarker?(t.setLatLng(r.coordenada),t.setRadius(g.raioPontoPx(e,o.estilo)),t.setStyle(s)):t instanceof b.Marker&&(t.setLatLng(r.tipo==="Point"||r.tipo==="Text"?r.coordenada:t.getLatLng()),t.setIcon(r.tipo==="Text"?this.iconeTexto(e,o,i):this.iconeSvg(e,o,i)),r.tipo==="Text"&&(a&&!e.bloqueada?(c=t.dragging)==null||c.enable():(l=t.dragging)==null||l.disable())),this.aplicarRotulo(t,e)}restilizar(t,e,o,a,i){t instanceof b.Marker?t.setIcon(e.geometria.tipo==="Text"?this.iconeTexto(e,o,i):this.iconeSvg(e,o,i)):t instanceof b.Path&&t.setStyle(this.estiloVetor(e,o,a,i))}iconeSvg(t,e,o=!1){return Nt(t,e.estilo,o)}iconeTexto(t,e,o=!1){return Rt(t,e.estilo,o)}aplicarRotulo(t,e){const o=e.estilo;if(!(o!=null&&o.mostrarRotulo)||e.geometria.tipo==="Text"){t.unbindTooltip();return}const a=g.textoRotulo(e,o.campoRotulo);if(!a){t.unbindTooltip();return}const i=document.createElement("span");i.textContent=a,t.getTooltip()?t.setTooltipContent(i):t.bindTooltip(i,{permanent:!0,direction:"center",className:"cad-feicao-rotulo",interactive:!1})}ligarEventos(t,e,o,a,i){t.on("click",r=>{var l;const s=a.get(e);if(!s)return;const c=r==null?void 0:r.originalEvent;(l=i.onLayerAction)==null||l.call(i,"feicao-clique",{camadaId:o.id,feicao:s.feicao,aditivo:!!(c&&(c.ctrlKey||c.metaKey||c.shiftKey))})}),t instanceof b.Marker&&t.on("dragend",()=>{var l;const r=a.get(e);if(!r||r.feicao.geometria.tipo!=="Text")return;const{lat:s,lng:c}=t.getLatLng();r.feicao={...r.feicao,geometria:{...r.feicao.geometria,coordenada:[s,c]}},(l=i.onLayerAction)==null||l.call(i,"feicao-movida",{camadaId:o.id,feicao:r.feicao})})}}const Li="rgba(255,255,255,0.9)";function sa(n){if(!n)return[];const t=n.split(/[\s,]+/).map(Number).filter(e=>Number.isFinite(e)&&e>=0);return t.length>0&&t.some(e=>e>0)?t.length%2===1?[...t,...t]:t:[]}const K=n=>Number.isFinite(n),Si=new Set(["marca","poligono","circulo","linha","ponto"]);function Ce(n){let t=0;if(n)for(const e of n.itens)Si.has(e.forma)&&t++;return t}class Re{constructor(t){f(this,"destaques",new Set);f(this,"destruido",!1);f(this,"ultima",{itens:0,marcas:0,preenchimentos:0,tracos:0,chamadas:0});this.alvos=t}destacar(t){this.destaques=new Set(t)}limpar(){const t=this.alvos.sobreposicao();t&&this.limparSuperficie(t)}destruir(){this.destruido=!0,this.destaques.clear()}desenhar(t,e,o={}){const a={itens:0,marcas:0,preenchimentos:0,tracos:0,chamadas:0};if(this.destruido||!t)return a;const i=o.alvo==="sobreposicao",r=e&&K(e.dpr)&&e.dpr>0?e.dpr:1;if(i){const s=this.alvos.sobreposicao();s&&o.limpar!==!1&&this.limparSuperficie(s,r)}for(const s of t.camadas){const c=i?this.alvos.sobreposicao():this.alvos.camada(s.camadaId);if(!c)continue;!i&&o.limpar!==!1?this.limparSuperficie(c,r):c.ctx.setTransform(r,0,0,r,0,0);const l=o.recorte;l&&(c.ctx.save(),c.ctx.beginPath(),c.ctx.rect(l.x,l.y,l.largura,l.altura),c.ctx.clip());try{this.pintarCamada(c,s,t.origem,i,a)}finally{l&&c.ctx.restore()}}return this.ultima=a,a}limparSuperficie(t,e){const o=e??t.dpr;t.ctx.setTransform(1,0,0,1,0,0),t.ctx.clearRect(0,0,Math.ceil(t.largura*o),Math.ceil(t.altura*o)),t.ctx.setTransform(o,0,0,o,0,0)}pintarCamada(t,e,o,a,i){const r=t.ctx,s=[],c=[],l=[],d=[];for(const h of e.itens)switch(h.forma){case"marca":s.push(h);break;case"poligono":case"circulo":c.push(h);break;case"linha":l.push(h);break;case"ponto":d.push(h);break}if(i.itens+=s.length+c.length+l.length+d.length,r.lineJoin="round",r.lineCap="round",a)for(const h of[...c,...l,...d])(h.destaque||this.destaques.has(h.id))&&this.halo(r,h,o,i);this.pintarMarcas(r,s,o,i),this.pintarGrupos(r,c,o,i,!0),this.pintarGrupos(r,l,o,i,!1),this.pintarGrupos(r,d,o,i,!0),r.globalAlpha=1,r.setLineDash([])}agrupar(t){const e=new Map;for(const o of t){const a=e.get(o.estilo);a?a.push(o):e.set(o.estilo,[o])}return e}pintarMarcas(t,e,o,a){for(const[i,r]of this.agrupar(e)){t.fillStyle=i.corPreenchimento,t.globalAlpha=i.opacidadePreenchimento,a.chamadas+=2;for(const s of r){const c=s.geometriaEmPx[0];if(!c)continue;const l=c[0]-o.x,d=c[1]-o.y;if(!(K(l)&&K(d)))continue;const h=s.raioPx>=2?2:1;t.fillRect(Math.round(l-h/2),Math.round(d-h/2),h,h),a.marcas++,a.chamadas++}}}caminho(t,e,o){if(e.forma==="circulo"||e.forma==="ponto"){const i=e.geometriaEmPx[0];if(!i)return;const r=i[0]-o.x,s=i[1]-o.y;K(r)&&K(s)&&K(e.raioPx)&&(t.moveTo(r+e.raioPx,s),t.arc(r,s,e.raioPx,0,Math.PI*2));return}const a=e.forma==="poligono";for(const i of e.geometriaEmPx){const r=i.length>>1;if(r<2)continue;let s=!1;for(let c=0;c<r;c++){const l=i[c*2]-o.x,d=i[c*2+1]-o.y;K(l)&&K(d)&&(s?t.lineTo(l,d):(t.moveTo(l,d),s=!0))}s&&a&&t.closePath()}}pintarGrupos(t,e,o,a,i){for(const[r,s]of this.agrupar(e)){const c=i&&r.preencher&&r.opacidadePreenchimento>0,l=r.traco&&r.peso>0;if(!(!c&&!l)){c&&(t.fillStyle=r.corPreenchimento),l&&(t.strokeStyle=r.cor,t.lineWidth=r.peso,t.setLineDash(sa(r.dash))),a.chamadas+=3;for(const d of s)t.beginPath(),this.caminho(t,d,o),c&&(t.globalAlpha=r.opacidadePreenchimento,t.fill(),a.preenchimentos++,a.chamadas++),l&&(t.globalAlpha=1,t.stroke(),a.tracos++,a.chamadas++)}}}halo(t,e,o,a){t.strokeStyle=Li,t.lineWidth=Math.max(e.estilo.peso,1)+4,t.globalAlpha=.9,t.setLineDash([]),t.beginPath(),this.caminho(t,e,o),t.stroke(),a.tracos++,a.chamadas+=4}}function ca(n,t,e,o){const a=[],i=Math.abs(e),r=Math.abs(o);return i>0&&a.push({x:e>0?n-i:0,y:0,largura:i,altura:t}),r>0&&a.push({x:e>0?0:i,y:o>0?t-r:0,largura:n-i,altura:r}),a}const oe=class oe extends b.Canvas{constructor(e,o){super(e);f(this,"aoPintar");f(this,"incremental");f(this,"limiteProprio");f(this,"itens",0);f(this,"conteudoValido",!1);f(this,"branco",!0);f(this,"mundoMin",null);f(this,"regioesDaVez",null);f(this,"falhas",0);f(this,"ultimoErro",null);this.aoPintar=o,this.incremental=!!e.incremental,this.limiteProprio=e.limiteRepintar}get limiteRepintar(){const e=this.limiteProprio??oe.limiteRepintar;return e>0?e:0}onAdd(e){return super.onAdd(e),this.regioesDaVez=null,this.pintar(),this}_update(){const e=this,o=e._map;if(!o||o._animatingZoom&&e._bounds)return;const a=e._bounds?{mundo:this.mundoMin,x:e._bounds.getSize().x,y:e._bounds.getSize().y,zoom:e._zoom}:null;b.Renderer.prototype._update.call(this);const i=e._bounds,r=o.getPixelOrigin(),s={x:r.x+i.min.x,y:r.y+i.min.y},c=e._container,l=e._ctx,d=i.getSize(),h=b.Browser.retina?2:1;b.DomUtil.setPosition(c,i.min);const u=this.incremental&&this.conteudoValido&&!!a&&a.zoom===e._zoom&&a.x===d.x&&a.y===d.y&&c.width===h*d.x&&c.height===h*d.y;let m=null,v=!1;if(u&&a&&a.mundo){const p=s.x-a.mundo.x,y=s.y-a.mundo.y;!this.branco&&this.itens<=this.limiteRepintar?v=!0:Math.abs(p)<d.x&&Math.abs(y)<d.y&&((p!==0||y!==0)&&!this.branco&&(l.save(),l.setTransform(1,0,0,1,0,0),l.globalCompositeOperation="copy",l.drawImage(c,-p*h,-y*h),l.restore()),m=ca(d.x,d.y,p,y))}!m&&!v&&((!this.branco||c.width!==h*d.x||c.height!==h*d.y)&&(c.width=h*d.x,c.height=h*d.y),this.branco=!0,c.style.width=`${d.x}px`,c.style.height=`${d.y}px`,this.conteudoValido=!1),this.regioesDaVez=m,this.mundoMin=s,l.setTransform(1,0,0,1,0,0),this.fire("update")}_updatePaths(){this._postponeUpdatePaths||this.pintarQuadro(this.regioesDaVez)}pintar(){this.pintarQuadro(null)}pintarQuadro(e){const o=this.quadroAtual(e);if(this.regioesDaVez=null,!!o)try{const a=this.aoPintar(o),i=typeof a=="number"?a>0?a:0:a===!1?0:Number.POSITIVE_INFINITY;this.itens=e?(this.branco?0:this.itens)+i:i,this.branco=this.itens===0,this.conteudoValido=!0}catch(a){this.conteudoValido=!1,this.branco=!1,this.itens=Number.POSITIVE_INFINITY,this.falhas++,this.ultimoErro=a}}quadroAtual(e=null){const o=this,a=o._map,i=o._bounds,r=o._ctx;if(!a||!i||!r)return null;try{const s=i.getSize(),c=a.getPixelOrigin(),l=a.layerPointToLatLng(i.min),d=a.layerPointToLatLng(i.max);return{ctx:r,dpr:b.Browser.retina?2:1,larguraPx:s.x,alturaPx:s.y,origemPx:{x:c.x+i.min.x,y:c.y+i.min.y},caixa:{minLat:d.lat,maxLat:l.lat,minLon:l.lng,maxLon:d.lng},zoom:a.getZoom(),regioes:e,branco:this.branco}}catch{return null}}};f(oe,"limiteRepintar",500);let Ct=oe;const Le="cad-formas-sobreposicao",Mi="7000",Dt=8,Ai=8,Ei=20,Se=typeof requestAnimationFrame=="function"?n=>{requestAnimationFrame(n)}:n=>{setTimeout(n,16)},wi=new Set(["icone","texto","cluster","rotulo","curva"]),tt=new WeakMap;function nt(n){return{caixa:n.caixa,zoom:n.zoom,larguraPx:n.larguraPx,alturaPx:n.alturaPx,dpr:n.dpr,origemPx:n.origemPx}}const zi=n=>!!n._loaded;function ki(n){const t=tt.get(n);if(t)return t;const e={estados:new Set,quadro:null,agendado:!1,noMapa:!1};return e.pintor=new Re({camada:()=>null,sobreposicao:()=>e.quadro?{ctx:e.quadro.ctx,largura:e.quadro.larguraPx,altura:e.quadro.alturaPx,dpr:e.quadro.dpr}:null}),e.canvas=new Ct({pane:Le,padding:.1},o=>{e.quadro=o;const a=nt(o),i=[];for(const r of[...e.estados].sort((s,c)=>s.layerDef.zIndex-c.layerDef.zIndex)){if(!r.vivo||!r.layerDef.visivel)continue;const s=r.motor.listaSobreposicao(r.layerDef.id,a);s&&s.itens.length>0&&i.push(s)}return o.branco&&i.length===0?!1:(e.pintor.desenhar({vista:a,origem:o.origemPx,camadas:i},a,{alvo:"sobreposicao"}),i.length>0)}),tt.set(n,e),e}function Ii(n,t){t.noMapa||(t.noMapa=!0,n.whenReady(()=>{if(!n.getPane(Le)){const e=n.createPane(Le);e.style.zIndex=Mi,e.style.pointerEvents="none"}tt.get(n)===t&&n.addLayer(t.canvas)}))}function _t(n){n.agendado||(n.agendado=!0,Se(()=>{n.agendado=!1,n.noMapa&&n.canvas.pintar()}))}class la{constructor(){f(this,"estados",new WeakMap);f(this,"selecionadas",ia)}render(t,e,o){const a=b.layerGroup(),i=new g.MotorFormas,r=o.regraVersoes;r&&i.definirRegra((d,h)=>r.visivel(d,h)),i.definirCamada(this.defMotor(t)),i.definirFeicoes(t.id,this.feicoesDe(t));const s=this.selecionadas.get(t);s&&i.selecionar(t.id,s);const c={layerDef:t,map:e,context:o,grupo:a,motor:i,interativo:t.interativo&&!t.bloqueada,quadro:null,dom:new Map,fonteHit:null,agendado:!1,agendadoDom:!1,vivo:!0,ultima:null};c.pintor=new Re({camada:()=>c.quadro?{ctx:c.quadro.ctx,largura:c.quadro.larguraPx,altura:c.quadro.alturaPx,dpr:c.quadro.dpr}:null,sobreposicao:()=>null}),e.getPane(dt(t.id))||e.createPane(dt(t.id)),c.base=new Ct({pane:dt(t.id),padding:.1,incremental:!0},d=>this.pintarBase(c,d)),this.estados.set(a,c),e.whenReady(()=>{c.vivo&&a.addLayer(c.base)});const l=ki(e);return l.estados.add(c),Ii(e,l),this.registrarHit(c),a}update(t,e,o,a,i){var s;const r=this.estados.get(e);if(r&&(r.layerDef=t,r.context=a,r.interativo=t.interativo&&!t.bloqueada,!(o.dados===void 0&&o.estilo===void 0&&o.interativo===void 0&&o.bloqueada===void 0))){if(r.motor.definirCamada(this.defMotor(t)),o.dados!==void 0){const c=this.feicoesDe(t),l=(s=t.dados)==null?void 0:s.delta;l?r.motor.aplicarDelta(t.id,c,l):r.motor.definirFeicoes(t.id,c);const d=this.selecionadas.get(t);if(d)for(const h of[...d])r.motor.feicao(t.id,h)||d.delete(h)}if(o.estilo!==void 0||o.interativo!==void 0||o.bloqueada!==void 0){for(const c of r.dom.values())r.grupo.removeLayer(c.layer);r.dom.clear()}this.pedirBase(r)}}destroy(t,e){const o=t,a=this.estados.get(o);if(a){a.vivo=!1,a.fonteHit&&De(a.map,a.layerDef.id,a.fonteHit),a.fonteHit=null;const i=tt.get(a.map);i&&(i.estados.delete(a),_t(i)),a.pintor.destruir(),a.dom.clear()}o.clearLayers(),this.estados.delete(o),e.hasLayer(o)&&e.removeLayer(o)}reavaliarVersoes(t){const e=this.estados.get(t);e&&(e.motor.reavaliarVersoes(e.layerDef.id),this.pedirBase(e))}feicaoVisivel(t,e){const o=this.estados.get(t);return!o||o.motor.feicaoVisivel(o.layerDef.id,e)}consultarProximas(t,e){const o=this.estados.get(t);return o?o.motor.consultarCaixa(o.layerDef.id,e):[]}previsualizar(t,e){const o=this.estados.get(t);if(!o)return;const a=o.layerDef.id,i=!o.motor.temPrevia(a,e.id);o.motor.previsualizar(a,e),i&&this.pedirBase(o);const r=tt.get(o.map);r&&_t(r)}aplicarSelecao(t,e){const o=this.estados.get(t);if(!o)return;const a=o.layerDef.id;this.selecionadas.set(o.layerDef,new Set(e));const{entrou:i,saiu:r}=o.motor.selecionar(a,e);if(i.length===0&&r.length===0)return;const s=[...i,...r];for(const l of s)this.atualizarSelecaoDom(o,l);o.motor.selecaoAfetaAgrupamento(a,s)&&this.pedirDom(o);const c=tt.get(o.map);c&&_t(c)}estatisticas(t){const e=this.estados.get(t);if(!e)return null;const o=this.listaAtual(e),a=(o==null?void 0:o.estatisticas)??e.motor.estatisticas(e.layerDef.id);return a?{total:a.total,materializadas:a.desenhadas+a.marcadoresDom,marcasLOD:a.marcasLOD,clusters:a.clusters,avaliacoesLOD:a.avaliacoesLOD,desenhadas:a.desenhadas,marcadoresDom:a.marcadoresDom,canvases:2,renderizador:"canvas"}:null}idsDesenhados(t){const e=this.estados.get(t);if(!e)return null;const o=this.listaAtual(e);if(!o)return{materializadas:[],marcas:[]};const a=e.motor.selecionadas(e.layerDef.id),i=new Set,r=new Set;for(const l of o.itens)l.forma==="cluster"||l.forma==="rotulo"||(l.forma==="marca"?a.has(l.id)?i.add(l.id):r.add(l.id):i.add(l.id));const s=e.base.quadroAtual(),c=s?e.motor.listaSobreposicao(e.layerDef.id,nt(s)):null;for(const l of(c==null?void 0:c.itens)??[])i.add(l.id);return{materializadas:[...i].sort(),marcas:[...r].sort()}}redesenharAgora(t){var o;const e=this.estados.get(t);e&&(e.base.pintar(),(o=tt.get(e.map))==null||o.canvas.pintar())}defMotor(t){return{id:t.id,zIndex:t.zIndex,opacidade:t.opacidade,visivel:t.visivel,interativo:t.interativo,bloqueada:t.bloqueada,estilo:t.estilo??{}}}feicoesDe(t){const e=t.dados,o=Array.isArray(e)?e:e==null?void 0:e.feicoes;return Array.isArray(o)?o:[]}pedirBase(t){t.agendado||!t.vivo||(t.agendado=!0,Se(()=>{t.agendado=!1,t.vivo&&t.base.pintar()}))}pedirDom(t){t.agendadoDom||!t.vivo||(t.agendadoDom=!0,Se(()=>{if(t.agendadoDom=!1,!t.vivo)return;const e=t.base.quadroAtual();if(!e)return;const o=t.motor.listaDesenho(nt(e),{camadas:[t.layerDef.id],parte:"dom"}).camadas[0];o&&this.sincronizarDom(t,o)}))}listaAtual(t){const e=t.base.quadroAtual();return e?t.motor.listaDesenho(nt(e),{camadas:[t.layerDef.id]}).camadas[0]??null:t.ultima}vistaDaFaixa(t,e){const o=Ai,[a,i]=g.latLonDoMundo(t.origemPx.x+e.x-o,t.origemPx.y+e.y-o,t.zoom),[r,s]=g.latLonDoMundo(t.origemPx.x+e.x+e.largura+o,t.origemPx.y+e.y+e.altura+o,t.zoom);return{...nt(t),larguraPx:e.largura,alturaPx:e.altura,caixa:{minLat:r,maxLat:a,minLon:i,maxLon:s}}}pintarBase(t,e){if(!t.vivo)return!e.branco;t.quadro=e;const o=t.layerDef.id;let a;if(e.regioes){a=0;for(const s of e.regioes){const c=this.vistaDaFaixa(e,s),l=t.motor.listaDesenho(c,{camadas:[o],parte:"canvas"}),d=Ce(l.camadas[0]);d!==0&&(t.pintor.desenhar(l,c,{limpar:!1,recorte:s}),a+=d)}const r=t.motor.listaDesenho(nt(e),{camadas:[o],parte:"dom"}).camadas[0];r&&this.sincronizarDom(t,r)}else{const r=nt(e),s=t.motor.listaDesenho(r,{camadas:[o]}),c=s.camadas[0]??null,l=Ce(c);c?l===0&&e.branco?a=0:(t.pintor.desenhar(s,r),a=l):a=!e.branco,t.ultima=c,c&&this.sincronizarDom(t,c)}const i=tt.get(t.map);return i&&_t(i),a}acao(t,e,o){var i,r;if(!e)return;const a=o==null?void 0:o.originalEvent;(r=(i=t.context).onLayerAction)==null||r.call(i,"feicao-clique",{camadaId:t.layerDef.id,feicao:t.motor.feicao(t.layerDef.id,e.id)??e,aditivo:!!(a&&(a.ctrlKey||a.metaKey||a.shiftKey))})}sincronizarDom(t,e){const o=new Set;for(const a of e.itens){if(!wi.has(a.forma))continue;const i=`${a.forma}:${a.id}`;o.add(i);try{this.colocarDom(t,i,a)}catch{const r=t.dom.get(i);r&&t.grupo.removeLayer(r.layer),t.dom.delete(i)}}for(const[a,i]of t.dom)o.has(a)||(t.grupo.removeLayer(i.layer),t.dom.delete(a))}colocarDom(t,e,o){var d,h;const{map:a,layerDef:i,grupo:r}=t,s=o.feicao??null,c=t.dom.get(e),l=i.estilo??{};if(o.forma==="icone"&&s&&o.coordenada){if(c){c.fonte!==s?(c.layer.setLatLng(o.coordenada),c.layer.setIcon(Nt(s,l,o.selecionada)),c.fonte=s,c.selecionada=o.selecionada):c.selecionada!==o.selecionada&&this.trocarIcone(c,s,l,o.selecionada);return}const u=b.marker(o.coordenada,{icon:Nt(s,l,o.selecionada),pane:U(a,i.id,"ponto"),interactive:t.interativo,keyboard:!1});u.on("click",m=>this.acao(t,s,m)),r.addLayer(u),t.dom.set(e,{layer:u,fonte:s,selecionada:o.selecionada,assinatura:""});return}if(o.forma==="texto"&&s&&o.coordenada){if(c){if(c.fonte!==s){const m=c.layer;m.setLatLng(o.coordenada),m.setIcon(Rt(s,l,o.selecionada)),t.interativo&&!s.bloqueada?(d=m.dragging)==null||d.enable():(h=m.dragging)==null||h.disable(),c.fonte=s,c.selecionada=o.selecionada}else c.selecionada!==o.selecionada&&this.trocarIcone(c,s,l,o.selecionada);return}const u=b.marker(o.coordenada,{icon:Rt(s,l,o.selecionada),pane:U(a,i.id,"texto"),interactive:t.interativo,draggable:t.interativo&&!s.bloqueada,keyboard:!1});u.on("click",m=>this.acao(t,s,m)),u.on("dragend",()=>{var A,k;const m=t.motor.feicao(i.id,s.id)??s;if(m.geometria.tipo!=="Text")return;const{lat:v,lng:p}=u.getLatLng(),y={...m,geometria:{...m.geometria,coordenada:[v,p]}};(k=(A=t.context).onLayerAction)==null||k.call(A,"feicao-movida",{camadaId:i.id,feicao:y})}),r.addLayer(u),t.dom.set(e,{layer:u,fonte:s,selecionada:o.selecionada,assinatura:""});return}if(o.forma==="cluster"&&o.coordenada){const u=o.total??0,m=`${o.id}:${u}:${o.restantes??0}:${o.coordenada[0].toFixed(7)}:${o.coordenada[1].toFixed(7)}`;if((c==null?void 0:c.assinatura)===m)return;c&&r.removeLayer(c.layer);const v=b.marker(o.coordenada,{icon:na(u,l),pane:U(a,i.id,"ponto"),keyboard:!1});v.bindTooltip(`${u} feições agrupadas`,{direction:"top"}),v.on("click",()=>{const p=t.motor.membrosDoCluster(i.id,o.id);p.length>0&&a.fitBounds(b.latLngBounds(p.map(y=>y.coordenada)),{padding:[60,60],maxZoom:18})}),r.addLayer(v),t.dom.set(e,{layer:v,fonte:null,selecionada:!1,assinatura:m});return}if(o.forma==="rotulo"&&o.coordenada&&o.texto){const u=`${o.texto}:${o.coordenada[0]}:${o.coordenada[1]}`;if((c==null?void 0:c.assinatura)===u)return;c&&r.removeLayer(c.layer);const m=document.createElement("span");m.textContent=o.texto;const v=b.marker(o.coordenada,{icon:b.divIcon({className:"cad-feicao-rotulo-ancora",iconSize:[0,0]}),pane:U(a,i.id,"texto"),interactive:!1,keyboard:!1});v.bindTooltip(m,{permanent:!0,direction:"center",className:"cad-feicao-rotulo",interactive:!1}),r.addLayer(v),t.dom.set(e,{layer:v,fonte:null,selecionada:!1,assinatura:u});return}if(o.forma==="curva"&&s){const u=s.geometria,m=p=>Pe(g.estiloVetorDe(s,l,p),t.interativo);if(c){const p=c.layer;c.fonte!==s?($o(p,u),p.setStyle(m(o.selecionada)),c.fonte=s,c.selecionada=o.selecionada):c.selecionada!==o.selecionada&&(p.setStyle(m(o.selecionada)),c.selecionada=o.selecionada);return}const v=Oe(u,{...m(o.selecionada),pane:U(a,i.id,u.tipo==="Polygon"?"poligono":"linha")});if(!v||!g.nosDaGeometria(u))return;v.on("click",p=>this.acao(t,s,p)),r.addLayer(v),t.dom.set(e,{layer:v,fonte:s,selecionada:o.selecionada,assinatura:""})}}trocarIcone(t,e,o,a){t.layer.setIcon(e.geometria.tipo==="Text"?Rt(e,o,a):Nt(e,o,a)),t.selecionada=a}atualizarSelecaoDom(t,e){const o=t.motor.feicao(t.layerDef.id,e);if(!o)return;const a=t.motor.selecionadas(t.layerDef.id).has(e),i=t.layerDef.estilo??{};for(const s of[`icone:${e}`,`texto:${e}`]){const c=t.dom.get(s);c&&c.selecionada!==a&&this.trocarIcone(c,o,i,a)}const r=t.dom.get(`curva:${e}`);r&&r.selecionada!==a&&(r.layer.setStyle(Pe(g.estiloVetorDe(o,i,a),t.interativo)),r.selecionada=a)}registrarHit(t){const e={alvo:t.base,consultar:o=>{const{map:a,layerDef:i,motor:r}=t;if(!t.vivo||!t.interativo||!i.visivel||!zi(a))return[];const s=a.layerPointToContainerPoint(o),c=a.containerPointToLatLng([s.x-Dt,s.y+Dt]),l=a.containerPointToLatLng([s.x+Dt,s.y-Dt]),d={minLat:Math.min(c.lat,l.lat),maxLat:Math.max(c.lat,l.lat),minLon:Math.min(c.lng,l.lng),maxLon:Math.max(c.lng,l.lng)},h=r.consultarCaixa(i.id,d).filter(v=>{var y;if(!r.feicaoVisivel(i.id,v))return!1;const p=v.geometria;return p.tipo==="Text"||g.nosDaGeometria(p)?!1:p.tipo==="Point"?!((y=v.estilo)!=null&&y.icone)&&!r.pontoAgrupado(i.id,v.id):!0}),u=v=>{const p=a.latLngToContainerPoint(v);return{x:p.x,y:p.y}},m=[];for(let v=0;v<Ei&&h.length>0;v++){const p=wt({x:s.x,y:s.y},h,u);if(!p)break;h.splice(h.indexOf(p),1);const y=r.caixaDe(i.id,p.id),A=y?(()=>{const k=a.latLngToContainerPoint([y.minLat,y.minLon]),S=a.latLngToContainerPoint([y.maxLat,y.maxLon]);return Math.abs(S.x-k.x)*Math.abs(S.y-k.y)})():0;m.push({feicao:p,chave:p.id,distancia:0,area:Number.isFinite(A)?A:0,tipo:p.geometria.tipo==="Point"?"ponto":p.geometria.tipo==="LineString"?"linha":"poligono"})}return m}};t.fonteHit=e,Ie(t.map,t.layerDef.id,e),t.base.on("click",o=>{var s,c;const{feicaoHit:a,originalEvent:i}=o;if(!a||!t.vivo)return;const r=i;(c=(s=t.context).onLayerAction)==null||c.call(s,"feicao-clique",{camadaId:t.layerDef.id,feicao:a,aditivo:!!(r&&(r.ctrlKey||r.metaKey||r.shiftKey))})})}}function bt(n){return String(n??"").trim().toLowerCase()==="canvas"?"canvas":"leaflet"}class da{constructor(t=new ra,e=new la){f(this,"roteamento",new WeakMap);this.leaflet=t,this.canvas=e}modo(t){var e;try{return bt((e=t.renderizador)==null?void 0:e.call(t))}catch{return"leaflet"}}de(t){return this.roteamento.get(t)??this.leaflet}modoDe(t){return this.roteamento.get(t)===this.canvas?"canvas":"leaflet"}render(t,e,o){const a=this.modo(o)==="canvas"?this.canvas:this.leaflet,i=a.render(t,e,o);return i&&this.roteamento.set(i,a),i}update(t,e,o,a,i){this.de(e).update(t,e,o,a,i)}destroy(t,e){this.de(t).destroy(t,e),this.roteamento.delete(t)}reavaliarVersoes(t){this.de(t).reavaliarVersoes(t)}feicaoVisivel(t,e){return this.de(t).feicaoVisivel(t,e)}consultarProximas(t,e){return this.de(t).consultarProximas(t,e)}previsualizar(t,e){this.de(t).previsualizar(t,e)}estatisticas(t){const e=this.de(t).estatisticas(t);return e?{renderizador:this.modoDe(t),...e}:null}idsDesenhados(t){return this.de(t).idsDesenhados(t)}aplicarSelecao(t,e){this.de(t).aplicarSelecao(t,e)}}N.register("tile",new Eo);N.register("wms",new wo);N.register("vetorial-linhas",new ko);N.register("vetorial-pontos",new Do);N.register("vetorial-poligonos",new _o);N.register("grid",new To);N.register("feicoes",new da);const Me=[{id:"satelite",nome:"Satélite Google Híbrido",categoria:"base",tipo:"tile",visivel:!0,opacidade:1,zIndex:200,interativo:!1,bloqueada:!1,estilo:{scaleMode:"screen"}},{id:"sigef",nome:"Acervo Fundiário SIGEF (INCRA)",categoria:"wms",tipo:"wms",visivel:!0,opacidade:.85,zIndex:390,interativo:!0,bloqueada:!1,estilo:{scaleMode:"screen"}},{id:"homologados",nome:"Poligonal Homologada (Banco)",categoria:"referencia",tipo:"vetorial-linhas",visivel:!0,opacidade:.9,zIndex:420,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#f59e0b",espessuraLinha:1,dashArray:"6, 8",scaleMode:"screen"}},{id:"homologados-pontos",nome:"Marcos Homologados (Banco)",categoria:"referencia",tipo:"vetorial-pontos",visivel:!0,opacidade:1,zIndex:430,interativo:!0,bloqueada:!1,estilo:{tamanhoMarcador:8,estiloMarcador:"circle",scaleMode:"screen"}},{id:"perimetro",nome:"Divisas e Poligonal do Imóvel",categoria:"levantamento",tipo:"vetorial-linhas",visivel:!0,opacidade:1,zIndex:520,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#00f5a0",espessuraLinha:1,scaleMode:"screen",dimensaoMetros:.3}},{id:"vizinhos",nome:"Imóveis Confrontantes (WKT/CSV)",categoria:"referencia",tipo:"vetorial-poligonos",visivel:!0,opacidade:.8,zIndex:440,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#a855f7",espessuraLinha:1,dashArray:"4, 6",scaleMode:"screen"}},{id:"vertices",nome:"Vértices e Marcos do Levantamento",categoria:"levantamento",tipo:"vetorial-pontos",visivel:!0,opacidade:1,zIndex:650,interativo:!0,bloqueada:!1,estilo:{tamanhoMarcador:8,scaleMode:"screen",dimensaoMetros:.25}},{id:"grade",nome:"Grade de Coordenadas UTM",categoria:"referencia",tipo:"grid",visivel:!0,opacidade:.5,zIndex:700,interativo:!1,bloqueada:!1,estilo:{corPrimaria:"rgba(0, 245, 160, 0.18)",espessuraLinha:.6,scaleMode:"screen"}}],Di=new Set(["tile","wms","grid"]);class ha{constructor(t){f(this,"layers",[]);f(this,"layerInstances",new Map);f(this,"map",null);f(this,"context",null);f(this,"listeners",[]);f(this,"renderPendente",!1);this.layers=(t||Me).map(e=>({...e,estilo:{...e.estilo}}))}descartarCamadasPadrao(){if(this.map)return;const t=new Set(Me.map(e=>e.id));this.layers=this.layers.filter(e=>!t.has(e.id)||e.tipo==="feicoes")}attachMap(t,e){this.map=t,this.context=e,this.ensurePanes(),this.renderAllLayers()}ensurePanes(){this.map&&this.layers.forEach(t=>{const e=`pane-${t.id}`;let o=this.map.getPane(e);o||(o=this.map.createPane(e)),o&&(o.style.zIndex=String(t.zIndex),o.style.pointerEvents=t.interativo&&!t.bloqueada&&t.visivel?"auto":"none")})}renderAllLayers(t=!1){this.renderPendente=!1,!(!this.map||!this.context)&&(this.layers.forEach(e=>{if(!(t&&Di.has(e.tipo)&&e.visivel&&this.layerInstances.has(e.id))){if(this.layerInstances.has(e.id)){const o=this.layerInstances.get(e.id),a=N.get(e.tipo);a&&a.destroy(o,this.map),this.layerInstances.delete(e.id)}if(e.visivel){const o=N.get(e.tipo);if(o){const a=o.render(e,this.map,this.context);a&&(a.addTo(this.map),this.layerInstances.set(e.id,a))}}}}),this.notifyChange())}recriarCamadasDoTipo(t){if(this.flushRender(),!this.map||!this.context)return;const e=N.get(t);if(e){for(const o of this.layers){if(o.tipo!==t)continue;const a=this.layerInstances.get(o.id);if(a&&(e.destroy(a,this.map),this.layerInstances.delete(o.id)),!o.visivel)continue;const i=e.render(o,this.map,this.context);i&&(i.addTo(this.map),this.layerInstances.set(o.id,i))}this.notifyChange()}}flushRender(){this.renderPendente&&this.renderAllLayers(!0)}agendarRender(){this.renderPendente||(this.renderPendente=!0,queueMicrotask(()=>this.flushRender()))}setLayerVisibility(t,e){this.flushRender();const o=this.layers.find(r=>r.id===t);if(!o||o.visivel===e||(o.visivel=e,!this.map||!this.context))return;const a=`pane-${o.id}`,i=this.map.getPane(a);if(i&&(i.style.display=e?"":"none",i.style.pointerEvents=o.visivel&&o.interativo&&!o.bloqueada?"auto":"none"),e){if(!this.layerInstances.has(t)){const r=N.get(o.tipo);if(r){const s=r.render(o,this.map,this.context);s&&(s.addTo(this.map),this.layerInstances.set(t,s))}}}else if(this.layerInstances.has(t)){const r=this.layerInstances.get(t),s=N.get(o.tipo);s&&s.destroy(r,this.map),this.layerInstances.delete(t)}this.notifyChange()}setLayerOpacity(t,e){this.flushRender();const o=this.layers.find(i=>i.id===t);if(!o)return;if(o.opacidade=Math.max(0,Math.min(1,e)),this.map){const i=this.map.getPane(`pane-${t}`);i&&(i.style.opacity=String(o.opacidade))}const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const i=N.get(o.tipo);i&&i.update(o,a,{opacidade:o.opacidade},this.context,this.map)}this.notifyChange()}setLayerZIndex(t,e){const o=this.layers.find(a=>a.id===t);if(o){if(o.zIndex=e,this.map){const a=this.map.getPane(`pane-${t}`);a&&(a.style.zIndex=String(e))}this.notifyChange()}}setLayerBlocked(t,e){const o=this.layers.find(a=>a.id===t);if(o){if(o.bloqueada=e,this.map){const a=this.map.getPane(`pane-${t}`);a&&(a.style.pointerEvents=o.visivel&&o.interativo&&!e?"auto":"none")}this.notifyChange()}}setLayerScaleMode(t,e){this.flushRender();const o=this.layers.find(i=>i.id===t);if(!o)return;o.estilo.scaleMode=e;const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const i=N.get(o.tipo);i&&i.update(o,a,{estilo:o.estilo},this.context,this.map)}this.notifyChange()}setGraphicScale(t){this.context&&(this.context.graphicScale={...this.context.graphicScale,...t},this.agendarRender())}updateContext(t){this.context&&(this.context={...this.context,...t},this.agendarRender())}getLayers(){return[...this.layers]}getActiveSelectableLayers(){return this.layers.filter(t=>t.visivel&&t.interativo&&!t.bloqueada)}isLayerActiveAndSelectable(t){const e=this.layers.find(o=>o.id===t);return!!(e&&e.visivel&&e.interativo&&!e.bloqueada)}exportState(){return this.layers.map(t=>({id:t.id,visivel:t.visivel,opacidade:t.opacidade,zIndex:t.zIndex,bloqueada:t.bloqueada,estilo:{...t.estilo}}))}importState(t){!t||!Array.isArray(t)||(t.forEach(e=>{const o=this.layers.find(a=>a.id===e.id);o&&(e.visivel!==void 0&&(o.visivel=e.visivel),e.opacidade!==void 0&&(o.opacidade=e.opacidade),e.zIndex!==void 0&&(o.zIndex=e.zIndex),e.bloqueada!==void 0&&(o.bloqueada=e.bloqueada),e.estilo&&(o.estilo={...o.estilo,...e.estilo}))}),this.ensurePanes(),this.renderAllLayers())}onChange(t){return this.listeners.push(t),()=>{this.listeners=this.listeners.filter(e=>e!==t)}}notifyChange(){const t=this.getLayers();this.listeners.forEach(e=>{try{e(t)}catch(o){console.error("Erro no listener de camadas:",o)}})}getAllLayerInstances(){return this.flushRender(),Array.from(this.layerInstances.values())}getLayerInstance(t){return this.flushRender(),this.layerInstances.get(t)}getLayer(t){return this.layers.find(e=>e.id===t)}getLayerDef(t){return this.layers.find(e=>e.id===t)}getOrCreateLayer(t,e,o){let a=this.layers.find(i=>i.id===t);return a||(a={id:t,nome:o,categoria:"custom",tipo:e,visivel:!0,opacidade:1,zIndex:600,interativo:!0,bloqueada:!1,estilo:{scaleMode:"screen"}},this.layers.push(a),this.ensurePanes()),a}setLayerData(t,e){this.flushRender();const o=this.layers.find(i=>i.id===t);if(!o)return;o.dados=e;const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const i=N.get(o.tipo);i&&i.update(o,a,{dados:e},this.context,this.map)}else if(o.visivel&&this.map&&this.context){const i=N.get(o.tipo);if(i){const r=i.render(o,this.map,this.context);r&&(r.addTo(this.map),this.layerInstances.set(t,r))}}this.notifyChange()}clearLayers(t){this.flushRender(),(t&&t.length>0?t:Array.from(this.layerInstances.keys())).forEach(o=>{if(this.layerInstances.has(o)){const a=this.layerInstances.get(o),i=this.layers.find(r=>r.id===o);if(i){const r=N.get(i.tipo);r&&r.destroy(a,this.map)}this.layerInstances.delete(o)}}),this.notifyChange()}destroy(){this.renderPendente=!1,this.map&&(this.layerInstances.forEach((t,e)=>{const o=this.layers.find(a=>a.id===e);if(o){const a=N.get(o.tipo);a&&a.destroy(t,this.map)}}),this.layerInstances.clear()),this.listeners=[]}}function ua(n,t){var r,s;if(t==null)return null;const e=String(t).trim(),o=c=>c?(c.lon=c.lng,c):null,i=n.getMarkers().find(c=>{var m,v,p,y;const l=c.pontoId,d=c.elementoId??c.id??((m=c.options)==null?void 0:m.pontoId)??((v=c.options)==null?void 0:v.id),h=(p=c.elemento)==null?void 0:p.nome_vertice,u=(y=c.elemento)==null?void 0:y.codigo_completo;return String(l)===e||String(d)===e||h&&String(h).toLowerCase()===e.toLowerCase()||u&&String(u).toLowerCase()===e.toLowerCase()});if(i&&typeof i.getLatLng=="function")return o(i.getLatLng());if(n.layerManager)for(const c of n.layerManager.getAllLayerInstances()){let l=null;const d=h=>{var v,p,y,A,k;if(l)return;const u=h.pontoId??h.elementoId??h.id??((v=h.options)==null?void 0:v.id)??((p=h.options)==null?void 0:p.pontoId),m=((y=h.elemento)==null?void 0:y.nome)??((A=h.elemento)==null?void 0:A.nome_vertice)??((k=h.options)==null?void 0:k.nome);(String(u)===e||m&&String(m).toLowerCase()===e.toLowerCase())&&(typeof h.getLatLng=="function"?l=h.getLatLng():typeof h.getBounds=="function"&&(l=h.getBounds().getCenter()))};if(d(c),typeof c.eachLayer=="function"&&c.eachLayer(d),l)return o(l)}if(n.context.pontos&&n.context.pontos.length>0){const c=n.context.pontos.find(l=>String(l.id)===e||l.nome_vertice&&String(l.nome_vertice).toLowerCase()===e.toLowerCase());if(c){const l=c.lat??c.latitude??c.y,d=c.lon??c.lng??c.longitude??c.x,h=E.parseCoordenada(l,d);if(h)return o(b.latLng(h.lat,h.lon))}}if(n.context.bancoPontos&&n.context.bancoPontos.length>0){const c=n.context.bancoPontos.find(l=>String(l.id)===e||l.codigo_completo&&String(l.codigo_completo).toLowerCase()===e.toLowerCase()||l.nome_vertice&&String(l.nome_vertice).toLowerCase()===e.toLowerCase());if(c){const l=c.lat??c.latitude??c.y,d=c.lon??c.lng??c.longitude??c.x,h=E.parseCoordenada(l,d);if(h)return o(b.latLng(h.lat,h.lon))}}if(n.context.confrontantes&&n.context.confrontantes.length>0){const c=n.context.confrontantes.find(l=>String(l.id)===e||l.nome&&String(l.nome).toLowerCase()===e.toLowerCase()||l.nome_propriedade&&String(l.nome_propriedade).toLowerCase()===e.toLowerCase());if(c){if(c.pontos&&c.pontos.length>0){let l=0,d=0,h=0;for(const u of c.pontos){const m=u.lat??u.latitude??u.y,v=u.lon??u.lng??u.longitude??u.x,p=E.parseCoordenada(m,v);p&&(l+=p.lat,d+=p.lon,h++)}if(h>0)return o(b.latLng(l/h,d/h))}if(c.poligono_wkt){const l=E.extrairCentroDeWkt(c.poligono_wkt);if(l)return o(b.latLng(l.lat,l.lon))}}}if(n.context.segmentos&&n.context.segmentos.length>0){const c=n.context.segmentos.find(l=>String(l.id)===e||`${l.ponto_inicio_id}-${l.ponto_fim_id}`===e);if(c){const l=(r=n.context.pontos)==null?void 0:r.find(h=>String(h.id)===String(c.ponto_inicio_id)),d=(s=n.context.pontos)==null?void 0:s.find(h=>String(h.id)===String(c.ponto_fim_id));if(l&&d){const h=E.parseCoordenada(l.lat??l.latitude,l.lon??l.longitude),u=E.parseCoordenada(d.lat??d.latitude,d.lon??d.longitude);if(h&&u)return o(b.latLng((h.lat+u.lat)/2,(h.lon+u.lon)/2))}}}if(n.layerManager){for(const c of n.layerManager.getLayers())if(c.dados){if(Array.isArray(c.dados.pontos)){const l=c.dados.pontos.find(d=>String(d.id)===e||d.nome_vertice&&String(d.nome_vertice)===e);if(l){const d=E.parseCoordenada(l.lat,l.lon);if(d)return o(b.latLng(d.lat,d.lon))}}if(Array.isArray(c.dados.poligonos)){const l=c.dados.poligonos.find(d=>String(d.id)===e);if(l){if(l.wkt){const d=E.extrairCentroDeWkt(l.wkt);if(d)return o(b.latLng(d.lat,d.lon))}if(Array.isArray(l.coordenadas)&&l.coordenadas.length>0){let d=0,h=0,u=0;for(const m of l.coordenadas){const v=E.parseCoordenada(m[0],m[1])||E.parseCoordenada(m[1],m[0]);v&&(d+=v.lat,h+=v.lon,u++)}if(u>0)return o(b.latLng(d/u,h/u))}}}}}return null}function _i(n,t,e,o){var m,v;Ae(t,n.getMap());const a=n.getMap();if(!a)return;const i=ua(n,e);if(!i){console.warn(`[ui-canvas-cad] Elemento com identificador "${e}" não encontrado para destaque.`);return}const r=(o==null?void 0:o.pan)===!0,s=o==null?void 0:o.zoom;r?s!==void 0?typeof a.flyTo=="function"?a.flyTo(i,s,{animate:!0}):a.setView(i,s,{animate:!0}):typeof a.panTo=="function"?a.panTo(i,{animate:!0}):a.setView(i,a.getZoom(),{animate:!0}):s!==void 0&&a.setZoom(s,{animate:!0});const c=(o==null?void 0:o.cor)||"#00f5a0",l="pane-destaque";let d=a.getPane(l);d||(d=a.createPane(l)),d&&(d.style.zIndex="850",d.style.pointerEvents="none");const h=b.divIcon({className:"cad-destaque-marker-container",html:`
99
+ `,{className:"compact-popup",maxWidth:220}),q.on("click",()=>{o.modoSequencial&&q.closePopup(),o.onMarkerClick&&o.onMarkerClick(T.id,!0,T,{lat:N.lat,lon:N.lon})}),q.on("popupopen",Y=>{if(o.modoSequencial){q.closePopup();return}E.bindPopupAcoesEvents(Y.popup,T,o,q)})}q.addTo(e)}})})}update(t,e,o,a,n){o.opacidade!==void 0&&o.estilo===void 0&&o.dados===void 0&&o.interativo===void 0&&o.bloqueada===void 0||(o.opacidade!==void 0||o.estilo!==void 0||o.dados!==void 0||o.interativo!==void 0||o.bloqueada!==void 0)&&(e.clearLayers(),this.rebuildPolygons(t,e,a,n))}destroy(t,e){t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}class No{constructor(){f(this,"moveListenerMap",new WeakMap)}render(t,e,o){const a=b.layerGroup(),n=`pane-${t.id}`,r=()=>{if(a.clearLayers(),!t.visivel)return;if(e.getZoom()>20){const c=e.getBounds(),l=c.getSouth(),d=c.getNorth(),h=c.getWest(),p=c.getEast(),g=e.getCenter(),v=8999e-9,u=Math.cos(g.lat*Math.PI/180),y=v/(u>.1?u:1),A=Math.floor((d-l)/v),k=Math.floor((p-h)/y);if(A<200&&k<200){const S=Math.ceil(l/v)*v;for(let x=S;x<=d;x+=v)b.polyline([[x,h],[x,p]],{color:t.estilo.corPrimaria||"rgba(0, 245, 160, 0.18)",weight:t.estilo.espessuraLinha||.6,interactive:!1,pane:n}).addTo(a);const C=Math.ceil(h/y)*y;for(let x=C;x<=p;x+=y)b.polyline([[l,x],[d,x]],{color:t.estilo.corPrimaria||"rgba(0, 245, 160, 0.18)",weight:t.estilo.espessuraLinha||.6,interactive:!1,pane:n}).addTo(a)}}};return r(),e.on("zoomend moveend",r),this.moveListenerMap.set(a,r),a}update(t,e){t.visivel||e.clearLayers()}destroy(t,e){const o=this.moveListenerMap.get(t);o&&(e.off("zoomend moveend",o),this.moveListenerMap.delete(t)),t.clearLayers(),e.hasLayer(t)&&e.removeLayer(t)}}function $o(i,t){var r,s;const e=i._nosCurva,o=i._renderer,a=i._map;if(!e||e.length<2||!o||!a)return!1;const n=c=>a.latLngToLayerPoint([c[0],c[1]]);if(o._ctx&&o._fillStroke){if(!o._drawing||!((r=i._parts)!=null&&r.length))return!0;const c=o._ctx;c.beginPath();for(const l of m.passosDaCurva(e,t)){const d=l.pts.map(n);l.cmd==="M"?c.moveTo(d[0].x,d[0].y):l.cmd==="L"?c.lineTo(d[0].x,d[0].y):c.bezierCurveTo(d[0].x,d[0].y,d[1].x,d[1].y,d[2].x,d[2].y)}return t&&c.closePath(),o._fillStroke(c,i),!0}return o._setPath?(o._setPath(i,(s=i._parts)!=null&&s.length?m.caminhoSvg(e,t,n):"M0 0"),!0):!1}class Ro extends b.Polyline{constructor(){super(...arguments);f(this,"_nosCurva",null)}definirCurva(e){this._nosCurva=e}_updatePath(){$o(this,!1)||b.Polyline.prototype._updatePath.call(this)}}class Bo extends b.Polygon{constructor(){super(...arguments);f(this,"_nosCurva",null)}definirCurva(e){this._nosCurva=e}_updatePath(){$o(this,!0)||b.Polygon.prototype._updatePath.call(this)}}function Fe(i,t){const e=m.nosDaGeometria(i);if(!e)return null;const o=i.tipo==="Polygon"?new Bo(i.aneis[0],t):new Ro(i.coordenadas,t);return o.definirCurva(e),o}function Vo(i,t){i.definirCurva(m.nosDaGeometria(t)),i.setLatLngs(t.tipo==="Polygon"?t.aneis[0]:t.coordenadas)}function ht(i){const{lat:t,lng:e}=m.metrosPorGrau(i[0]);return{lat0:i[0],lon0:i[1],mLat:t,mLng:Math.max(e,1)}}function xe(i,t){return[(i[1]-t.lon0)*t.mLng,(i[0]-t.lat0)*t.mLat]}function ut(i,t){return[t.lat0+i[1]/t.mLat,t.lon0+i[0]/t.mLng]}function Ne(i,t){const e=o=>{let a=!1;for(let n=0,r=o.length-1;n<o.length;r=n++){const[s,c]=o[n],[l,d]=o[r];s>i[0]!=l>i[0]&&i[1]<(d-c)*(i[0]-s)/(l-s)+c&&(a=!a)}return a};return!t[0]||!e(t[0])?!1:!t.slice(1).some(e)}function Ho(i,t,e,o){const a=t[0]-i[0],n=t[1]-i[1],r=o[0]-e[0],s=o[1]-e[1],c=a*s-n*r;if(Math.abs(c)<1e-12)return null;const l=((e[0]-i[0])*s-(e[1]-i[1])*r)/c,d=((e[0]-i[0])*n-(e[1]-i[1])*a)/c;return l<0||l>1||d<0||d>=1?null:{t:l,u:d}}function te(i){let t=0;for(let e=0;e<i.length;e++){const[o,a]=i[e],[n,r]=i[(e+1)%i.length];t+=o*r-n*a}return Math.abs(t)/2}function Go(i,t){if(i.length<3||t.length<2)return null;const e=ht(i[0]),o=i.map(r=>xe(r,e)),a=t.map(r=>xe(r,e)),n=jo(o,a,0);return n&&n.length>=2?n.map(r=>r.map(s=>ut(s,e))):null}function jo(i,t,e){if(e>8)return null;const o=i.length,a=[];for(let x=0;x<t.length-1;x++)for(let P=0;P<o;P++){const L=Ho(t[x],t[x+1],i[P],i[(P+1)%o]);L&&a.push({tLinha:x+L.t,tAnel:P+L.u,ponto:[t[x][0]+L.t*(t[x+1][0]-t[x][0]),t[x][1]+L.t*(t[x+1][1]-t[x][1])]})}if(a.sort((x,P)=>x.tLinha-P.tLinha),a.length<2)return null;const[n,r]=a,s=[];for(let x=Math.floor(n.tLinha)+1;x<=Math.floor(r.tLinha);x++)x>n.tLinha&&x<r.tLinha&&s.push(t[x]);const c=[n.ponto,...s,r.ponto];let l=n,d=r,h=c;n.tAnel>r.tAnel&&(l=r,d=n,h=[...c].reverse());const p=Math.floor(l.tAnel),g=Math.floor(d.tAnel),v=h.slice(1,-1),u=[l.ponto];for(let x=p+1;x<=g;x++)u.push(i[x%o]);u.push(d.ponto,...[...v].reverse());const y=[d.ponto];for(let x=g+1;x<=p+o;x++)y.push(i[x%o]);y.push(l.ponto,...v);const k=te(i)*1e-9,S=[u,y].filter(x=>x.length>=3&&te(x)>k);if(S.length<2)return null;const C=[r.ponto,...t.slice(Math.floor(r.tLinha)+1)];if(a.length>2&&C.length>=2){const x=[];for(const P of S){const L=jo(P,C,e+1);L?x.push(...L):x.push(P)}return x}return S}function pt(i,t){return i.map(e=>xe(e,t))}const Q=(i,t)=>Math.hypot(i[0]-t[0],i[1]-t[1]);function Uo(i,t=0){if(i.length===0||i.some(n=>n.length<2))return null;const e=ht(i[0][0]),o=i.slice(1).map(n=>pt(n,e));let a=pt(i[0],e);for(;o.length>0;){let n=null;if(o.forEach((d,h)=>{const p=a[0],g=a[a.length-1],v=[{inverter:!1,noFim:!0,d:Q(g,d[0])},{inverter:!0,noFim:!0,d:Q(g,d[d.length-1])},{inverter:!1,noFim:!1,d:Q(p,d[d.length-1])},{inverter:!0,noFim:!1,d:Q(p,d[0])}];for(const u of v)(!n||u.d<n.d)&&(n={idx:h,...u})}),!n||n.d>t)return null;const{idx:r,inverter:s,noFim:c}=n;let l=o.splice(r,1)[0];s&&(l=[...l].reverse()),a=c?[...a,...Q(a[a.length-1],l[0])>0?l:l.slice(1)]:[...l,...Q(l[l.length-1],a[0])>0?a:a.slice(1)]}return a.map(n=>ut(n,e))}function li(i,t,e,o){const a=Ho(i,t,e,o);return!!a&&a.t>1e-9&&a.t<1-1e-9&&a.u>1e-9}function di(i,t){for(let e=0;e<i.length;e++)for(let o=0;o<t.length;o++)if(li(i[e],i[(e+1)%i.length],t[o],t[(o+1)%t.length]))return!0;return!1}function Wo(i,t,e=0){if(i.length<3||t.length<3)return null;const o=ht(i[0]),a=pt(i,o),n=pt(t,o);if(di(a,n))return null;let r={i:0,j:0,d:1/0};for(let d=0;d<a.length;d++)for(let h=0;h<n.length;h++){const p=Q(a[d],n[h]);p<r.d&&(r={i:d,j:h,d:p})}if(r.d>e)return null;const{i:s,j:c}=r,l=[];for(let d=0;d<=a.length;d++)l.push(a[(s+d)%a.length]);for(let d=0;d<=n.length;d++)l.push(n[(c+d)%n.length]);return l.map(d=>ut(d,o))}const oo=16;function ao(i,t,e,o){const a=[];for(let n=0;n<=oo;n++){const r=e+(o-e)*n/oo;a.push([i[0]+t*Math.cos(r),i[1]+t*Math.sin(r)])}return a}function kt(i,t){const e=Q(i,t)||1;return[-(t[1]-i[1])/e,(t[0]-i[0])/e]}function le(i,t,e){const o=i.length,a=[],n=o;for(let r=0;r<n;r++){const s=e?i[(r-1+o)%o]:i[Math.max(0,r-1)],c=i[r],l=e?i[(r+1)%o]:i[Math.min(o-1,r+1)],d=r===0&&!e?kt(c,l):kt(s,c),h=r===o-1&&!e?kt(s,c):kt(c,l);let p=d[0]+h[0],g=d[1]+h[1];const v=Math.hypot(p,g);if(v<1e-9){a.push([c[0]+d[0]*t,c[1]+d[1]*t]);continue}p/=v,g/=v;const u=p*d[0]+g*d[1],y=Math.min(1/Math.max(u,.5),2);a.push([c[0]+p*t*y,c[1]+g*t*y])}return a}function hi(i){let t=0;for(let e=0;e<i.length;e++){const[o,a]=i[e],[n,r]=i[(e+1)%i.length];t+=(n-o)*(r+a)}return t>0}function Zo(i,t){if(!Number.isFinite(t)||t===0)return null;if(i.tipo==="Point"||i.tipo==="Text"||i.tipo==="Circle"){const e=i.tipo==="Circle"?i.centro:i.coordenada,o=i.tipo==="Circle"?i.raioMetros+t:t;if(o<=0)return null;const a=ht(e),n=64;return Array.from({length:n},(r,s)=>[o*Math.cos(2*Math.PI*s/n),o*Math.sin(2*Math.PI*s/n)]).map(r=>ut(r,a))}if(i.tipo==="LineString"){if(t<0||i.coordenadas.length<2||m.ehMultilinha(i))return null;const e=ht(i.coordenadas[0]),o=pt(i.coordenadas,e),a=le(o,t,!1),n=le([...o].reverse(),t,!1),r=o[o.length-1],s=o[0],c=Math.atan2(r[1]-o[o.length-2][1],r[0]-o[o.length-2][0]),l=Math.atan2(s[1]-o[1][1],s[0]-o[1][0]),d=ao(r,t,c+Math.PI/2,c-Math.PI/2),h=ao(s,t,l+Math.PI/2,l-Math.PI/2);return[...a,...d,...n,...h].map(p=>ut(p,e))}if(i.tipo==="Polygon"){const e=i.aneis[0];if(!e||e.length<3)return null;const o=ht(e[0]);let a=pt(e,o);hi(a)&&(a=[...a].reverse());const r=le(a,-t,!0);return r.length<3||t<0&&te(r)>=te(a)?null:r.map(s=>ut(s,o))}return null}function Xo(i,t,e){const o=a=>{const n=m.metrosPorGrau(a[0]),r=e/n.lat,s=t/Math.max(n.lng,1);return[a[0]+r,a[1]+s]};switch(i.tipo){case"Point":return{tipo:"Point",coordenada:o(i.coordenada)};case"Text":return{...i,coordenada:o(i.coordenada)};case"Circle":return{...i,centro:o(i.centro)};case"LineString":{const a=m.criarLinha(m.partesDaLinha(i).map(n=>n.map(o)));return i.curva?{...a,curva:m.moverNos(i.curva,o)}:a}case"Polygon":{const a={tipo:"Polygon",aneis:i.aneis.map(n=>n.map(o))};return i.curva?{...a,curva:m.moverNos(i.curva,o)}:a}}}const io={m:1,km:1e3,ft:.3048,mi:1609.344},no={m2:1,ha:1e4,km2:1e6,ac:4046.8564224,alqueire:24200};function ui(i,t,e){return i*io[t]/io[e]}function pi(i,t,e){return i*no[t]/no[e]}function fi(i,t,e=2){const o=t==="lat"?i<0?"S":"N":i<0?"O":"L",a=Math.abs(i);let n=Math.floor(a),r=Math.floor((a-n)*60),s=Number(((a-n-r/60)*3600).toFixed(e));s>=60&&(s=0,r+=1),r>=60&&(r=0,n+=1);const c=s.toFixed(e).padStart(e?e+3:2,"0");return`${n}°${String(r).padStart(2,"0")}'${c}"${o}`}function mi(i){var p;if(typeof i!="string")return null;const t=i.trim().toUpperCase().replace(",","."),e=(p=/[NSLEOW]$/.exec(t))==null?void 0:p[0],o=t.replace(/[NSLEOW]$/,"").trim(),a=o.match(/-?\d+(?:\.\d+)?/g);if(!a||a.length===0||a.length>3||!/^[-\d\s°'"′″.]+$/.test(o))return null;const[n,r="0",s="0"]=a,c=Math.abs(Number(n)),l=Number(r),d=Number(s);if(l<0||l>=60||d<0||d>=60)return null;let h=c+l/60+d/3600;return(n.startsWith("-")||e==="S"||e==="O"||e==="W")&&(h=-h),h}function gi(i,t){return m.distanciaMetros(i,t)}function $t(i,t,e){return{...i,id:t,geometria:e??JSON.parse(JSON.stringify(i.geometria)),estilo:i.estilo?{...i.estilo}:void 0,propriedades:{...i.propriedades}}}const Yo=5e3;function At(i){return i.tipo==="Polygon"?3:i.tipo==="LineString"?2:1}function Pe(i,t=!1){if(i.bloqueada||t)return"bloqueada";const e=i.geometria;return e.tipo!=="Point"&&e.tipo!=="LineString"&&e.tipo!=="Polygon"&&e.tipo!=="Circle"?"tipo-nao-suportado":e.tipo==="Polygon"&&e.aneis.length!==1?"poligono-com-furos":m.ehMultilinha(e)?"multiparte":Z(e).length>Yo?"muitos-vertices":null}function Z(i){return i.tipo==="Point"?[i.coordenada]:i.tipo==="LineString"?i.coordenadas:i.tipo==="Polygon"?i.aneis[0]??[]:[]}function Et(i,t){return i.tipo==="Point"?{tipo:"Point",coordenada:t[0]}:i.tipo==="LineString"?{tipo:"LineString",coordenadas:t}:i.tipo==="Polygon"?{tipo:"Polygon",aneis:[t]}:i}function vi(i,t,e){const o=Z(i).slice();return t<0||t>=o.length?i:(o[t]=e,Et(i,o))}function Ko(i,t,e){if(i.tipo!=="LineString"&&i.tipo!=="Polygon")return i;const o=Z(i).slice();return t<0||t>=o.length?i:(o.splice(t+1,0,e),Et(i,o))}function Jo(i,t){if(i.tipo!=="LineString"&&i.tipo!=="Polygon")return null;const e=Z(i);return t<0||t>=e.length||e.length<=At(i)?null:Et(i,e.filter((o,a)=>a!==t))}function $e(i,t){return[(i[0]+t[0])/2,(i[1]+t[1])/2]}function Re(i){const t=Z(i).length,e=[];if(i.tipo!=="LineString"&&i.tipo!=="Polygon")return e;for(let o=0;o<t-1;o++)e.push([o,o+1]);return i.tipo==="Polygon"&&t>2&&e.push([t-1,0]),e}function X(i){return(i.tipo==="LineString"||i.tipo==="Polygon")&&i.curva&&i.curva.length>=At(i)?i.curva:null}const Qo=.5;function ta(i,t){return[i[0],i[1]+t/Math.max(m.metrosPorGrau(i[0]).lng,1)]}function it(i){var t;return i.tipo==="Circle"?[i.centro,ta(i.centro,i.raioMetros)]:((t=X(i))==null?void 0:t.map(e=>e.ponto))??Z(i)}function ft(i,t){const e=i.tipo==="Polygon",o=m.amostrarCurva(t,e);return e?{tipo:"Polygon",aneis:[o],curva:t}:{tipo:"LineString",coordenadas:o,curva:t}}function Le(i,t){if(i.tipo==="Circle")return t.length<2?i:{...i,centro:t[0],raioMetros:Math.max(Qo,m.distanciaMetros(t[0],t[1]))};const e=X(i);if(!e||e.length!==t.length)return Et(i,t);const o=e.map((a,n)=>{const r=t[n][0]-a.ponto[0],s=t[n][1]-a.ponto[1],c=d=>[d[0]+r,d[1]+s],l={ponto:t[n]};return a.entrada&&(l.entrada=c(a.entrada)),a.saida&&(l.saida=c(a.saida)),l});return ft(i,o)}function ct(i,t,e){return[i[0]+(t[0]-i[0])*e,i[1]+(t[1]-i[1])*e]}function yi(i,t,e){const[o,a]=m.controlesDoSegmento(i,t);let n=.5,r=1/0;for(let s=1;s<64;s++){const c=s/64,l=m.pontoDaCubica(i.ponto,o,a,t.ponto,c),d=(l[0]-e[0])**2+(l[1]-e[1])**2;d<r&&(r=d,n=c)}return n}function lt(i,t,e){const o=X(i);if(!o){const r=Z(i);return $e(r[t],r[e])}const[a,n]=m.controlesDoSegmento(o[t],o[e]);return m.pontoDaCubica(o[t].ponto,a,n,o[e].ponto,.5)}function Be(i){const t=X(i);if(!t)return Re(i);const e=[];for(let o=0;o<t.length-1;o++)e.push([o,o+1]);return i.tipo==="Polygon"&&t.length>2&&e.push([t.length-1,0]),e}function ea(i,t,e){const o=X(i);if(!o)return Ko(i,t,e);if(t<0||t>=o.length)return i;const a=(t+1)%o.length,n=o[t],r=o[a],s=n.saida===void 0&&r.entrada===void 0;let c,l=n,d=r;if(s)c={ponto:e};else{const p=yi(n,r,e),[g,v]=m.controlesDoSegmento(n,r),u=ct(n.ponto,g,p),y=ct(g,v,p),A=ct(v,r.ponto,p),k=ct(u,y,p),S=ct(y,A,p);c={ponto:ct(k,S,p),entrada:k,saida:S},l={...n,saida:u},d={...r,entrada:A}}const h=o.slice();return h[t]=l,h[a]=d,h.splice(t+1,0,c),ft(i,h)}function oa(i,t){const e=X(i);return e?t<0||t>=e.length||e.length<=At(i)?null:ft(i,e.filter((o,a)=>a!==t)):Jo(i,t)}function mt(i){return i.tipo!=="LineString"&&i.tipo!=="Polygon"?null:X(i)??Z(i).map(t=>({ponto:[t[0],t[1]]}))}const aa=40;function ia(i,t,e){const o=mt(i);if(!o||t<0||t>=o.length)return null;const a=i.tipo==="Polygon",n=o.length,r=e==="saida"?t<n-1?o[t+1]:a?o[0]:null:t>0?o[t-1]:a?o[n-1]:null;if(!r)return null;const s=o[t].ponto;return[s[0]+(r.ponto[0]-s[0])/3,s[1]+(r.ponto[1]-s[1])/3]}function na(i,t,e,o,a=!0){const n=mt(i);if(!n||t<0||t>=n.length)return i;const r={...n[t],[e]:o};a&&(r[e==="saida"?"entrada":"saida"]=m.espelhoDaAlca(r.ponto,o));const s=n.slice();return s[t]=r,ft(i,s)}function ra(i,t){const e=mt(i);if(!e||t<0||t>=e.length)return i;const o=e[t],a=e.slice();if(o.entrada||o.saida)return a[t]={ponto:o.ponto},ft(i,a);const n=i.tipo==="Polygon",r=e.length,s=t>0?e[t-1]:n?e[r-1]:null,c=t<r-1?e[t+1]:n?e[0]:null;if(!s&&!c)return i;const l=o.ponto;let d,h;if(s&&c)d=(c.ponto[0]-s.ponto[0])/6,h=(c.ponto[1]-s.ponto[1])/6;else{const p=(c??s).ponto,g=c?1:-1;d=(p[0]-l[0])/3*g,h=(p[1]-l[1])/3*g}return a[t]={ponto:l,saida:[l[0]+d,l[1]+h],entrada:[l[0]-d,l[1]-h]},ft(i,a)}const sa=6,de=(i,t)=>Math.hypot(i.x-t.x,i.y-t.y);function ro(i,t,e){const o=e.x-t.x,a=e.y-t.y,n=o*o+a*a,r=n===0?0:Math.max(0,Math.min(1,((i.x-t.x)*o+(i.y-t.y)*a)/n));return Math.hypot(i.x-(t.x+r*o),i.y-(t.y+r*a))}function bi(i,t){const e=i.geometria;if(e.tipo!=="Polygon")return 0;let o=1/0,a=-1/0,n=1/0,r=-1/0;for(const s of e.aneis[0]){const c=t(s);c.x<o&&(o=c.x),c.x>a&&(a=c.x),c.y<n&&(n=c.y),c.y>r&&(r=c.y)}return(a-o)*(r-n)}function wt(i,t,e,o=sa){let a=null,n=null,r=null;for(const s of t){if(s.excluida||s.oculta)continue;const c=s.geometria;if(c.tipo==="Point"||c.tipo==="Text"){const l=de(i,e(c.coordenada));l<=o+2&&(!a||l<a.d)&&(a={f:s,d:l})}else if(c.tipo==="LineString"){let l=1/0;for(const d of m.partesDaLinha(c)){const h=d.map(e);for(let p=1;p<h.length;p++)l=Math.min(l,ro(i,h[p-1],h[p]))}l<=o&&(!n||l<n.d)&&(n={f:s,d:l})}else if(c.tipo==="Circle"){const l=e(c.centro),d=e([c.centro[0]+c.raioMetros/111320,c.centro[1]]),h=de(l,d);if(de(i,l)<=h){const p=Math.PI*h*h;(!r||p<r.a)&&(r={f:s,a:p})}}else{const l=c.aneis[0].map(e);let d=1/0;for(const[p,g]of Re(c))d=Math.min(d,ro(i,l[p],l[g]));if(Ne([i.y,i.x],[l.map(p=>[p.y,p.x]),...c.aneis.slice(1).map(p=>p.map(e).map(g=>[g.y,g.x]))])||d<=o){const p=bi(s,e);(!r||p<r.a)&&(r={f:s,a:p})}}}return(a==null?void 0:a.f)??(n==null?void 0:n.f)??(r==null?void 0:r.f)??null}const It=.1,xi=2,Pi=typeof requestAnimationFrame=="function"?i=>{requestAnimationFrame(i)}:i=>{setTimeout(i,16)};class Li extends b.Layer{constructor(e,o){super();f(this,"canvas",null);f(this,"agendado",!1);f(this,"vivo",!1);f(this,"nomePane");f(this,"obterMarcas");f(this,"ultimaPintura",0);this.nomePane=e,this.obterMarcas=o}onAdd(e){const o=e.getPane(this.nomePane);if(!o)return this;const a=b.DomUtil.create("canvas","leaflet-zoom-animated cad-marcas-lod");return a.style.pointerEvents="none",a.setAttribute("aria-hidden","true"),o.appendChild(a),this.canvas=a,this.vivo=!0,e.on("zoomstart",this.esconder,this),e.on("resize",this.solicitarRedesenho,this),this.solicitarRedesenho(),this}onRemove(e){var o;return this.vivo=!1,e.off("zoomstart",this.esconder,this),e.off("resize",this.solicitarRedesenho,this),(o=this.canvas)==null||o.remove(),this.canvas=null,this}solicitarRedesenho(){this.agendado||!this.vivo||(this.agendado=!0,Pi(()=>{this.agendado=!1,this.vivo&&this.redesenhar()}))}esconder(){this.canvas&&(this.canvas.style.display="none")}redesenhar(){const e=this._map,o=this.canvas;if(!(!e||!o))try{const a=e.getSize(),n=Math.ceil(a.x*(1+2*It)),r=Math.ceil(a.y*(1+2*It));if(!(n>0&&r>0))return;const s=Math.min(xi,typeof window<"u"&&window.devicePixelRatio||1),c=e.containerPointToLayerPoint([-a.x*It,-a.y*It]).round();(o.width!==Math.round(n*s)||o.height!==Math.round(r*s))&&(o.width=Math.round(n*s),o.height=Math.round(r*s)),o.style.width=`${n}px`,o.style.height=`${r}px`,b.DomUtil.setPosition(o,c),o.style.display="";const l=o.getContext("2d");if(!l)return;l.setTransform(s,0,0,s,0,0),l.clearRect(0,0,n,r);const d=e.getPixelOrigin().add(c);this.ultimaPintura=m.pintarMarcas(l,this.obterMarcas(),e.getZoom(),d.x,d.y,n,r)}catch{}}}const ca=new WeakMap,ee={tower:'<path d="M12 2 L8 22 M12 2 L16 22 M9.5 12 H14.5 M8.7 17 H15.3 M12 2 L9.5 12 L14.5 12 Z" />',tree:'<path d="M12 22 V14 M12 3 L5 14 H19 Z" />',warning:'<path d="M12 3 L22 20 H2 Z M12 9 V14 M12 17 V17.5" />',water:'<path d="M12 3 C12 3 5 11 5 15.5 A7 7 0 0 0 19 15.5 C19 11 12 3 12 3 Z" />',boundary:'<path d="M12 2 L22 12 L12 22 L2 12 Z" />'};function Rt(i,t,e=!1){const o=i.estilo??{},a=o.tamanhoIcone??t.tamanhoMarcador,n=typeof a=="number"&&Number.isFinite(a)&&a>0?a:22,r=e?m.COR_SELECAO:m.corSegura(o.corTraco??o.corPreenchimento??t.corPrimaria,m.COR_PADRAO),s=Number.isFinite(o.rotacaoIcone)?o.rotacaoIcone:0,c=ee[o.icone??""]??"";return b.divIcon({className:`custom-leaflet-marker${e?" cad-feicao-selecionada":""}`,iconSize:[n,n],html:`<svg width="${n}" height="${n}" viewBox="0 0 24 24" fill="${r}" fill-opacity="0.25" stroke="${r}" stroke-width="1.6" stroke-linejoin="round" stroke-linecap="round" style="transform:rotate(${s}deg);overflow:visible;display:block${e?`;filter:drop-shadow(0 0 3px ${m.COR_SELECAO})`:""}">${c}</svg>`})}function Bt(i,t,e=!1){const o=i.estilo??{},a=i.geometria.tipo==="Text"?i.geometria.texto:"",n=e?m.COR_SELECAO:m.corSegura(o.corTraco??t.corPrimaria,"#ffffff"),r=Number.isFinite(o.tamanhoFonte)?o.tamanhoFonte:13,c=`display:inline-block;white-space:nowrap;transform:translate(-50%,-50%) rotate(${Number.isFinite(o.rotacaoIcone)?o.rotacaoIcone:0}deg);color:${n};font-size:${r}px;font-weight:600;`,l=m.corSegura(o.corFundo,"");if(l){const h=m.corSegura(o.corBorda,""),p=typeof o.opacidadeFundo=="number"&&Number.isFinite(o.opacidadeFundo)?Math.min(1,Math.max(0,o.opacidadeFundo)):.85,g=typeof o.raioBorda=="number"&&Number.isFinite(o.raioBorda)?Math.min(50,Math.max(0,o.raioBorda)):4,v=e?`1px solid ${m.COR_SELECAO}`:h?`1px solid ${h}`:"none";return b.divIcon({className:`custom-leaflet-marker cad-feicao-texto cad-feicao-selo${e?" cad-feicao-selecionada":""}`,iconSize:void 0,html:`<span style="${c}position:relative;padding:2px 6px;border-radius:${g}px;border:${v}"><span style="position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:${l};opacity:${p}"></span><span style="position:relative">${E.escapeHtml(a)}</span></span>`})}const d=o.halo?"text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000;":"";return b.divIcon({className:`custom-leaflet-marker cad-feicao-texto${e?" cad-feicao-selecionada":""}`,iconSize:void 0,html:`<span style="${c}${d}">${E.escapeHtml(a)}</span>`})}function la(i,t){const e=i<10?30:i<100?38:46,o=m.corSegura(t.corPrimaria,m.COR_PADRAO);return b.divIcon({className:"custom-leaflet-marker cad-feicao-cluster",iconSize:[e,e],html:`<div style="width:${e}px;height:${e}px;border-radius:50%;background:${o};opacity:.9;border:2px solid rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;color:#fff;font:700 12px sans-serif;text-shadow:0 0 2px #000">${i}</div>`})}function Ce(i,t){return{color:i.cor,stroke:i.traco,weight:i.peso,opacity:i.opacidadeTraco??1,dashArray:i.dash,dashOffset:i.deslocamentoDash?String(i.deslocamentoDash):void 0,fill:i.preencher,fillColor:i.corPreenchimento,fillOpacity:i.opacidadePreenchimento,lineCap:i.terminacao??"round",lineJoin:i.juncao??"round",interactive:t}}const Ci=150,Si=100,Vt=300,he=.75,Mi=20,Ai=.3,ue=typeof requestAnimationFrame=="function"?i=>{requestAnimationFrame(i)}:i=>{setTimeout(i,16)};class da{constructor(){f(this,"estados",new WeakMap);f(this,"selecionadas",ca);f(this,"tokenLote",new WeakMap)}render(t,e,o){const a=b.layerGroup();return this.sincronizar(t,a,e,o,!0),a}update(t,e,o,a,n){if(o.dados===void 0&&o.estilo===void 0&&o.interativo===void 0&&o.bloqueada===void 0)return;const r=o.estilo!==void 0||o.interativo!==void 0||o.bloqueada!==void 0;this.sincronizar(t,e,n,a,r)}destroy(t,e){const o=this.estados.get(t);o&&(o.vivo=!1,e.off("moveend zoomend",o.aoMover),this.descartarMarcas(o)),t.clearLayers(),this.estados.delete(t),this.tokenLote.set(t,(this.tokenLote.get(t)??0)+1),e.hasLayer(t)&&e.removeLayer(t)}reavaliarVersoes(t){const e=this.estados.get(t);e&&(e.revisao++,e.revisaoBase++,this.reconciliar(t,e,!1,null))}feicaoVisivel(t,e){const o=this.estados.get(t),a=o==null?void 0:o.context.regraVersoes;return!o||!a||a.visivel(e,o.oficiais)}consultarProximas(t,e){const o=this.estados.get(t);if(!o)return[];const a=[];for(const n of o.indice.consultar(e)){const r=o.loja.get(n);r&&!r.oculta&&a.push(r)}return a}previsualizar(t,e){var r;const o=this.estados.get(t),a=o==null?void 0:o.entradas.get(e.id);if(!o||!a)return;const n=o.map._loaded?o.map.getZoom():0;this.remendar(a.layer,this.paraDesenho(e,n),o.layerDef,o.interativo,!!((r=this.selecionadas.get(o.layerDef))!=null&&r.has(e.id)))}estatisticas(t){const e=this.estados.get(t);return e?{total:e.loja.size,materializadas:e.entradas.size,marcasLOD:e.marcas.size,clusters:e.clusters.size,avaliacoesLOD:e.avaliacoesLOD}:null}idsDesenhados(t){const e=this.estados.get(t);return e?{materializadas:[...e.entradas.keys()].sort(),marcas:[...e.marcas.keys()].sort()}:null}feicoesDe(t){const e=t.dados,o=Array.isArray(e)?e:e==null?void 0:e.feicoes;return Array.isArray(o)?o:[]}obterEstado(t,e,o,a){let n=this.estados.get(t);if(!n){const r={layerDef:e,interativo:!1,map:o,context:a,loja:new Map,indice:new m.IndiceEspacial,revisao:0,revisaoBase:0,listaSincronizada:null,oficiais:new Set,contOficiais:new Map,nPrevias:0,contPrevias:new Map,entradas:new Map,marcas:new Map,camadaMarcas:null,fonteHit:null,lod:new Map,zoomLod:-1,avaliacoesLOD:0,clusters:new Map,nPontos:0,nPontosRev:-1,agrupador:null,agrupadorRev:-1,culling:!1,agendado:!1,vivo:!0,aoMover:()=>{r.agendado||!r.vivo||(r.agendado=!0,ue(()=>{r.agendado=!1,r.vivo&&this.reconciliar(t,r,!1,null)}))}};o.on("moveend zoomend",r.aoMover),this.estados.set(t,r),n=r}return n.layerDef=e,n.map=o,n.context=a,n.interativo=e.interativo&&!e.bloqueada,n}sincronizar(t,e,o,a,n){var v;const r=this.obterEstado(e,t,o,a),s=this.feicoesDe(t),c=(v=t.dados)==null?void 0:v.delta;if(!n&&this.aplicarDelta(e,r,s,c))return;const l=s.filter(u=>!u.excluida),d=new Set,h=new Set;for(const u of l)h.add(u.id),r.loja.get(u.id)!==u&&d.add(u.id);const p=[...r.loja.keys()].filter(u=>!h.has(u));if(d.size>0||p.length>0){if(r.revisao++,r.revisaoBase++,r.lod.clear(),r.loja.size===0||d.size+p.length>l.length*Ai)r.indice.construir(l);else{for(const u of l)d.has(u.id)&&r.indice.atualizar(u);for(const u of p)r.indice.remover(u)}r.loja=new Map(l.map(u=>[u.id,u])),this.recontarOficiais(r,l)}r.listaSincronizada=s;const g=this.selecionadas.get(t);if(g)for(const u of[...g])h.has(u)||g.delete(u);this.reconciliar(e,r,n,d)}recontarOficiais(t,e){t.contOficiais=new Map,t.contPrevias=new Map,t.nPrevias=0;for(const o of e){if(o.excluida)continue;if(m.statusDe(o)!=="oficial"){t.nPrevias++;const n=m.entidadeDe(o);t.contPrevias.set(n,(t.contPrevias.get(n)??0)+1);continue}const a=m.entidadeDe(o);t.contOficiais.set(a,(t.contOficiais.get(a)??0)+1)}t.oficiais=new Set(t.contOficiais.keys())}aplicarDelta(t,e,o,a){if(!a||a.base!==e.listaSincronizada)return!1;const{loja:n}=e,r=this.selecionadas.get(e.layerDef),s=u=>u.geometria.tipo==="Point"&&this.desenhavel(e,u),c=new Map,l=(u,y)=>{if(!u||u.excluida||m.statusDe(u)!=="oficial")return;const A=m.entidadeDe(u);c.has(A)||c.set(A,e.oficiais.has(A));const k=(e.contOficiais.get(A)??0)+y;k<=0?(e.contOficiais.delete(A),e.oficiais.delete(A)):(e.contOficiais.set(A,k),e.oficiais.add(A))},d=[],h=[],p=(u,y)=>{const A=m.entidadeDe(u),k=(e.contPrevias.get(A)??0)+y;k<=0?e.contPrevias.delete(A):e.contPrevias.set(A,k)},g=u=>{const y=n.get(u);y&&(e.lod.delete(u),m.statusDe(y)==="previa"&&(e.nPrevias--,p(y,-1)),l(y,-1),s(y)&&e.nPontos--,n.delete(u),e.indice.remover(u),r==null||r.delete(u),h.push(u))};for(const u of a.removidas)g(u);for(const u of a.mudadas){if(u.excluida){g(u.id);continue}const y=n.get(u.id);e.lod.delete(u.id),m.statusDe(u)==="previa"&&(e.nPrevias++,p(u,1)),y&&(m.statusDe(y)==="previa"&&(e.nPrevias--,p(y,-1)),l(y,-1),s(y)&&e.nPontos--),n.set(u.id,u),e.indice.atualizar(u),l(u,1),s(u)&&e.nPontos++,d.push(u.id)}let v=!1;if(e.nPrevias>0)for(const[u,y]of c)y!==e.oficiais.has(u)&&(v=!0);return e.listaSincronizada=o,e.revisao++,v&&e.revisaoBase++,this.reconciliarParcial(t,e,d,h,v),!0}ressimplificar(t,e){return t.zoomDesenho===e||m.vertices(t.feicao.geometria)<m.MIN_VERTICES_SIMPLIFICAR?!1:e<m.ZOOM_SEM_SIMPLIFICACAO||t.zoomDesenho<m.ZOOM_SEM_SIMPLIFICACAO}paraDesenho(t,e){const o=m.simplificarGeometria(t.geometria,e);return o===t.geometria?t:{...t,geometria:o}}desenhavel(t,e){if(e.oculta)return!1;const o=t.context.regraVersoes;return!o||o.visivel(e,t.oficiais)}estaCarregado(t){return!!t._loaded}caixaDe(t){return{minLon:t.getWest(),minLat:t.getSouth(),maxLon:t.getEast(),maxLat:t.getNorth()}}comoMarca(t,e,o,a){var c;if(o<0||a)return!1;const n=e.geometria.tipo;if(n==="Point"||n==="Text"||(c=e.estilo)!=null&&c.mostrarRotulo)return!1;if(t.contPrevias.size>0){const l=m.entidadeDe(e);if(t.contPrevias.has(l)&&t.oficiais.has(l))return!1}o!==t.zoomLod&&(t.lod.clear(),t.zoomLod=o);const r=t.lod.get(e.id);if(r!==void 0)return r;t.avaliacoesLOD++;const s=m.ehMarca(t.indice.caixaDe(e.id),o);return t.lod.set(e.id,s),s}novaMarca(t,e,o){const a=t.indice.caixaDe(e.id);if(!a)return null;const n=e.estilo??{},r=m.corSegura(n.corPreenchimento??n.corTraco??t.layerDef.estilo.corPrimaria,m.COR_PADRAO);return{id:e.id,lat:(a.minLat+a.maxLat)/2,lon:(a.minLon+a.maxLon)/2,cor:r,lado:m.ladoMarca(m.diagonalPx(a,o)),fonte:e}}colocarFeicao(t,e,o,a,n,r,s){if(this.comoMarca(e,o,n,r)){this.tirarEntrada(t,e,o.id);const c=e.marcas.get(o.id);if(!c||c.fonte!==o){const l=this.novaMarca(e,o,n);l&&e.marcas.set(o.id,l)}return}e.marcas.delete(o.id),this.materializar(t,e,o,a,r,s)}sincronizarMarcas(t){if(t.marcas.size===0){t.camadaMarcas&&this.descartarMarcas(t);return}if(!t.camadaMarcas){const e=U(t.map,t.layerDef.id,"poligono"),o=new Li(e,()=>t.marcas.values());t.camadaMarcas=o,o.addTo(t.map),o.on("click",a=>{var s,c;const{feicaoHit:n,originalEvent:r}=a;!n||!t.vivo||(c=(s=t.context).onLayerAction)==null||c.call(s,"feicao-clique",{camadaId:t.layerDef.id,feicao:n,aditivo:!!(r&&(r.ctrlKey||r.metaKey||r.shiftKey))})}),t.fonteHit=this.fonteDeMarcas(t,o),_e(t.map,t.layerDef.id,t.fonteHit)}t.camadaMarcas.solicitarRedesenho()}fonteDeMarcas(t,e){return{alvo:e,consultar:o=>{const{map:a}=t;if(!t.vivo||!t.interativo||!t.layerDef.visivel||t.marcas.size===0||!this.estaCarregado(a))return[];const n=a.layerPointToContainerPoint(o),r=8,s=a.containerPointToLatLng([n.x-r,n.y+r]),c=a.containerPointToLatLng([n.x+r,n.y-r]),l={minLat:Math.min(s.lat,c.lat),maxLat:Math.max(s.lat,c.lat),minLon:Math.min(s.lng,c.lng),maxLon:Math.max(s.lng,c.lng)},d=[];for(const v of t.indice.consultar(l)){const u=t.marcas.has(v)?t.loja.get(v):void 0;u&&d.push(u)}const h=v=>{const u=a.latLngToContainerPoint(v);return{x:u.x,y:u.y}},p=a.getZoom(),g=[];for(let v=0;v<Mi&&d.length>0;v++){const u=wt({x:n.x,y:n.y},d,h);if(!u)break;d.splice(d.indexOf(u),1);const y=m.diagonalPx(t.indice.caixaDe(u.id)??l,p);g.push({feicao:u,chave:u.id,tipo:u.geometria.tipo==="LineString"?"linha":"poligono",distancia:0,area:Number.isFinite(y)?y*y/2:0})}return g}}}descartarMarcas(t){t.fonteHit&&Te(t.map,t.layerDef.id,t.fonteHit),t.fonteHit=null,t.camadaMarcas&&(t.map.removeLayer(t.camadaMarcas),t.camadaMarcas=null),t.marcas.clear()}materializar(t,e,o,a,n,r){try{this.materializarFeicao(t,e,o,a,n,r)}catch{this.tirarEntrada(t,e,o.id)}}materializarFeicao(t,e,o,a,n,r){const s=this.formaDe(o),c=e.entradas.get(o.id);if(c&&c.forma===s){const h=c.feicao!==o||this.ressimplificar(c,a);r===!0||h?(this.remendar(c.layer,this.paraDesenho(o,a),e.layerDef,e.interativo,n),c.feicao=o,c.zoomDesenho=a):r==="estilo"&&this.restilizar(c.layer,o,e.layerDef,e.interativo,n);return}const l=this.paraDesenho(o,a);c&&t.removeLayer(c.layer);const d=this.criar(l,e.layerDef,e.map,e.interativo,n);this.ligarEventos(d,o.id,e.layerDef,e.entradas,e.context),this.aplicarRotulo(d,o),t.addLayer(d),e.entradas.set(o.id,{layer:d,forma:s,feicao:o,zoomDesenho:a})}tirarEntrada(t,e,o){const a=e.entradas.get(o);a&&(t.removeLayer(a.layer),e.entradas.delete(o))}colocarCluster(t,e,o,a){const n=e.clusters.get(o);if((n==null?void 0:n.assinatura)===a.assinatura)return;n&&t.removeLayer(n.marker);const r=this.criarMarcadorCluster(a.coordenada,a.total,()=>{var s,c;return Array.from(((c=(s=e.agrupador)==null?void 0:s.celula(o))==null?void 0:c.membros.values())??[])},e);t.addLayer(r),e.clusters.set(o,{marker:r,assinatura:a.assinatura})}tirarCluster(t,e,o){const a=e.clusters.get(o);a&&(t.removeLayer(a.marker),e.clusters.delete(o))}agrupadorAtivo(t,e){const o=r=>this.desenhavel(t,r);if(t.nPontosRev!==t.revisaoBase){let r=0;for(const s of t.loja.values())s.geometria.tipo==="Point"&&o(s)&&r++;t.nPontos=r,t.nPontosRev=t.revisaoBase}if(!m.deveAgrupar(t.nPontos,e))return t.agrupador=null,null;const a=t.agrupador;if(a&&a.zoom===e&&t.agrupadorRev===t.revisaoBase)return a;const n=new m.AgrupadorCluster(e,r=>t.map.project(b.latLng(r[0],r[1]),e));for(const r of t.loja.values())r.geometria.tipo==="Point"&&o(r)&&n.inserir({id:r.id,coordenada:r.geometria.coordenada});return t.agrupador=n,t.agrupadorRev=t.revisaoBase,n}reconciliar(t,e,o,a){var k;const{map:n,layerDef:r,loja:s}=e,c=this.selecionadas.get(r),l=this.estaCarregado(n),d=l?n.getZoom():0,h=l&&s.size>Vt?n.getBounds().pad(he):null,p=h?this.caixaDe(h):null;e.culling=h!==null;const g=p?e.indice.consultar(p):s.keys(),v=new Set(g);if(c)for(const S of c)s.has(S)&&v.add(S);for(const S of[...v]){const C=s.get(S);C&&!this.desenhavel(e,C)&&v.delete(S)}const u=new Map,y=l?this.agrupadorAtivo(e,d):null;if(y||(e.agrupador=null),y){for(const C of[...v])y.emCluster(C)&&v.delete(C);const S=new Map;if(c)for(const C of c){const x=y.chaveDoPonto(C),P=x===void 0||(k=y.celula(x))==null?void 0:k.membros.get(C);if(x!==void 0&&P){const L=S.get(x);L?L.push(P):S.set(x,[P])}}for(const[C,x]of y.celulasAgrupadas()){const P=S.get(C);if(P)for(const I of P)v.add(I.id);const L=x.membros.size,w=L-((P==null?void 0:P.length)??0);if(w===1)for(const I of x.membros.values()){if(c!=null&&c.has(I.id))continue;const M=e.indice.caixaDe(I.id);(!p||M&&m.caixasSeTocam(M,p))&&v.add(I.id);break}if(!(h&&!h.contains([x.somaLat/L,x.somaLon/L]))&&w>=2){let I=x.somaLat,M=x.somaLon;if(P)for(const D of P)I-=D.coordenada[0],M-=D.coordenada[1];const z=[I/w,M/w];u.set(C,{coordenada:z,total:L,assinatura:`${C}:${L}:${w}:${z[0].toFixed(7)}:${z[1].toFixed(7)}`})}}}const A=l?d:-1;for(const S of v){const C=s.get(S);C&&this.colocarFeicao(t,e,C,d,A,!!(c!=null&&c.has(S)),o||!!(a!=null&&a.has(S)))}for(const S of[...e.entradas.keys()])v.has(S)&&s.has(S)||this.tirarEntrada(t,e,S);for(const S of[...e.marcas.keys()])(!v.has(S)||!s.has(S))&&e.marcas.delete(S);this.sincronizarMarcas(e);for(const[S,C]of u)this.colocarCluster(t,e,S,C);for(const S of[...e.clusters.keys()])u.has(S)||this.tirarCluster(t,e,S)}reconciliarParcial(t,e,o,a,n){this.reconciliarParcialInterno(t,e,o,a,n),this.sincronizarMarcas(e)}reconciliarParcialInterno(t,e,o,a,n){const{map:r,layerDef:s,loja:c}=e,l=this.estaCarregado(r),d=l?r.getZoom():0,h=l&&c.size>Vt,p=l&&m.deveAgrupar(e.nPontos,d),g=e.agrupador;if(n||h!==e.culling||p!==(g!==null)||g!==null&&(g.zoom!==d||e.agrupadorRev!==e.revisaoBase)){this.reconciliar(t,e,!1,new Set(o));return}const v=this.selecionadas.get(s),u=L=>this.desenhavel(e,L),y=h?r.getBounds().pad(he):null,A=y?this.caixaDe(y):null,k=l?d:-1,S=(L,w)=>{const I=c.get(L);if(!I||!u(I)){this.tirarEntrada(t,e,L),e.marcas.delete(L);return}const M=!!(v!=null&&v.has(L));if(!M&&A){const z=e.indice.caixaDe(L);if(!z||!m.caixasSeTocam(z,A)){this.tirarEntrada(t,e,L),e.marcas.delete(L);return}}this.colocarFeicao(t,e,I,d,k,M,w)},C=new Set,x=[];for(const L of a){this.tirarEntrada(t,e,L),e.marcas.delete(L);const w=g==null?void 0:g.remover(L);w!==void 0&&C.add(w)}for(const L of o){e.marcas.delete(L);const w=c.get(L);if(!w)continue;const I=g==null?void 0:g.remover(L);I!==void 0&&C.add(I),g&&w.geometria.tipo==="Point"&&u(w)?C.add(g.inserir({id:L,coordenada:w.geometria.coordenada})):x.push(L)}for(const L of x)S(L,!0);if(!g)return;const P=new Set(o);for(const L of C){const w=g.celula(L);if(!w||w.membros.size<2){if(this.tirarCluster(t,e,L),w)for(const B of w.membros.keys())S(B,P.has(B));continue}const I=w.membros.size;let M=w.somaLat,z=w.somaLon,D=0;for(const B of w.membros.values())v!=null&&v.has(B.id)&&(D++,M-=B.coordenada[0],z-=B.coordenada[1]);const _=I-D;for(const B of w.membros.values())v!=null&&v.has(B.id)||_===1?S(B.id,P.has(B.id)):this.tirarEntrada(t,e,B.id);const R=[w.somaLat/I,w.somaLon/I];if(y&&!y.contains(R)||_<2){this.tirarCluster(t,e,L);continue}const F=[M/_,z/_];this.colocarCluster(t,e,L,{coordenada:F,total:I,assinatura:`${L}:${I}:${_}:${F[0].toFixed(7)}:${F[1].toFixed(7)}`})}}criarMarcadorCluster(t,e,o,a){const n=la(e,a.layerDef.estilo),r=b.marker(t,{icon:n,pane:U(a.map,a.layerDef.id,"ponto"),keyboard:!1});return r.bindTooltip(`${e} feições agrupadas`,{direction:"top"}),r.on("click",()=>{const s=o();s.length>0&&a.map.fitBounds(b.latLngBounds(s.map(c=>c.coordenada)),{padding:[60,60],maxZoom:18})}),r}aplicarSelecao(t,e){const o=this.estados.get(t);if(!o)return;const a=this.selecionadas.get(o.layerDef)??new Set,n=new Set(e);this.selecionadas.set(o.layerDef,n);const r=[];for(const y of n)a.has(y)||r.push(y);for(const y of a)n.has(y)||r.push(y);if(r.length===0)return;const{map:s,loja:c}=o,l=this.estaCarregado(s),d=l?s.getZoom():0,h=l?d:-1,p=l&&c.size>Vt?this.caixaDe(s.getBounds().pad(he)):null,g=o.agrupador!==null&&r.some(y=>{var A;return((A=c.get(y))==null?void 0:A.geometria.tipo)==="Point"}),v=y=>{const A=c.get(y);if(!A)return;const k=n.has(y);if(!this.desenhavel(o,A)){this.tirarEntrada(t,o,y),o.marcas.delete(y);return}if(!k&&p){const C=o.indice.caixaDe(y);if(!C||!m.caixasSeTocam(C,p)){this.tirarEntrada(t,o,y),o.marcas.delete(y);return}}this.colocarFeicao(t,o,A,d,h,k,"estilo");const S=k?o.entradas.get(y):void 0;S&&"bringToFront"in S.layer&&S.layer.bringToFront()},u=(this.tokenLote.get(t)??0)+1;if(this.tokenLote.set(t,u),r.length<=Ci)r.forEach(v);else{const y=l?this.caixaDe(s.getBounds()):null,A=x=>{if(!y)return!0;const P=o.indice.caixaDe(x);return!P||m.caixasSeTocam(P,y)},k=r.filter(A),S=r.filter(x=>!A(x));k.forEach(v);const C=()=>{this.tokenLote.get(t)!==u||!o.vivo||(S.splice(0,Si).forEach(v),S.length>0?ue(C):this.sincronizarMarcas(o))};S.length>0&&ue(C)}g?this.reconciliar(t,o,!1,null):this.sincronizarMarcas(o)}formaDe(t){var o;const e=t.geometria;return e.tipo==="Point"?`Point:${(o=t.estilo)!=null&&o.icone&&ee[t.estilo.icone]?t.estilo.icone:""}`:m.nosDaGeometria(e)?`${e.tipo}:curva`:e.tipo}paneDe(t){switch(t.geometria.tipo){case"Polygon":case"Circle":return"poligono";case"LineString":return"linha";case"Point":return"ponto";default:return"texto"}}estiloVetor(t,e,o,a=!1){return Ce(m.estiloVetorDe(t,e.estilo,a),o)}criar(t,e,o,a,n){var d;const r=U(o,e.id,this.paneDe(t)),s=t.geometria,c=this.estiloVetor(t,e,a,n),l=Fe(s,{...c,pane:r});if(l)return l;switch(s.tipo){case"Polygon":return b.polygon(s.aneis.length===1?s.aneis[0]:s.aneis,{...c,pane:r});case"Circle":return b.circle(s.centro,{...c,radius:s.raioMetros,pane:r});case"LineString":return b.polyline(s.partes&&s.partes.length>1?m.partesDaLinha(s):s.coordenadas,{...c,pane:r});case"Point":{const h=(d=t.estilo)==null?void 0:d.icone;return h&&ee[h]?b.marker(s.coordenada,{icon:this.iconeSvg(t,e,n),pane:r,interactive:a}):b.circleMarker(s.coordenada,{...c,radius:m.raioPontoPx(t,e.estilo),pane:r})}default:return b.marker(s.coordenada,{icon:this.iconeTexto(t,e,n),pane:r,interactive:a,draggable:a&&!t.bloqueada})}}remendar(t,e,o,a,n){var c,l;const r=e.geometria,s=this.estiloVetor(e,o,a,n);(t instanceof Ro||t instanceof Bo)&&m.nosDaGeometria(r)?(Vo(t,r),t.setStyle(s)):r.tipo==="Polygon"?(t.setLatLngs(r.aneis.length===1?r.aneis[0]:r.aneis),t.setStyle(s)):r.tipo==="LineString"?(t.setLatLngs(r.partes&&r.partes.length>1?m.partesDaLinha(r):r.coordenadas),t.setStyle(s)):r.tipo==="Circle"?(t.setLatLng(r.centro),t.setRadius(r.raioMetros),t.setStyle(s)):r.tipo==="Point"&&t instanceof b.CircleMarker?(t.setLatLng(r.coordenada),t.setRadius(m.raioPontoPx(e,o.estilo)),t.setStyle(s)):t instanceof b.Marker&&(t.setLatLng(r.tipo==="Point"||r.tipo==="Text"?r.coordenada:t.getLatLng()),t.setIcon(r.tipo==="Text"?this.iconeTexto(e,o,n):this.iconeSvg(e,o,n)),r.tipo==="Text"&&(a&&!e.bloqueada?(c=t.dragging)==null||c.enable():(l=t.dragging)==null||l.disable())),this.aplicarRotulo(t,e)}restilizar(t,e,o,a,n){t instanceof b.Marker?t.setIcon(e.geometria.tipo==="Text"?this.iconeTexto(e,o,n):this.iconeSvg(e,o,n)):t instanceof b.Path&&t.setStyle(this.estiloVetor(e,o,a,n))}iconeSvg(t,e,o=!1){return Rt(t,e.estilo,o)}iconeTexto(t,e,o=!1){return Bt(t,e.estilo,o)}aplicarRotulo(t,e){const o=e.estilo;if(!(o!=null&&o.mostrarRotulo)||e.geometria.tipo==="Text"){t.unbindTooltip();return}const a=m.textoRotulo(e,o.campoRotulo);if(!a){t.unbindTooltip();return}const n=document.createElement("span");n.textContent=a,t.getTooltip()?t.setTooltipContent(n):t.bindTooltip(n,{permanent:!0,direction:"center",className:"cad-feicao-rotulo",interactive:!1})}ligarEventos(t,e,o,a,n){t.on("click",r=>{var l;const s=a.get(e);if(!s)return;const c=r==null?void 0:r.originalEvent;(l=n.onLayerAction)==null||l.call(n,"feicao-clique",{camadaId:o.id,feicao:s.feicao,aditivo:!!(c&&(c.ctrlKey||c.metaKey||c.shiftKey))})}),t instanceof b.Marker&&t.on("dragend",()=>{var l;const r=a.get(e);if(!r||r.feicao.geometria.tipo!=="Text")return;const{lat:s,lng:c}=t.getLatLng();r.feicao={...r.feicao,geometria:{...r.feicao.geometria,coordenada:[s,c]}},(l=n.onLayerAction)==null||l.call(n,"feicao-movida",{camadaId:o.id,feicao:r.feicao})})}}const Ei="rgba(255,255,255,0.9)";function ha(i){if(!i)return[];const t=i.split(/[\s,]+/).map(Number).filter(e=>Number.isFinite(e)&&e>=0);return t.length>0&&t.some(e=>e>0)?t.length%2===1?[...t,...t]:t:[]}const K=i=>Number.isFinite(i),wi=new Set(["marca","poligono","circulo","linha","ponto"]);function Se(i){let t=0;if(i)for(const e of i.itens)wi.has(e.forma)&&t++;return t}class Ve{constructor(t){f(this,"destaques",new Set);f(this,"destruido",!1);f(this,"ultima",{itens:0,marcas:0,preenchimentos:0,tracos:0,chamadas:0});this.alvos=t}destacar(t){this.destaques=new Set(t)}limpar(){const t=this.alvos.sobreposicao();t&&this.limparSuperficie(t)}destruir(){this.destruido=!0,this.destaques.clear()}desenhar(t,e,o={}){const a={itens:0,marcas:0,preenchimentos:0,tracos:0,chamadas:0};if(this.destruido||!t)return a;const n=o.alvo==="sobreposicao",r=e&&K(e.dpr)&&e.dpr>0?e.dpr:1;if(n){const s=this.alvos.sobreposicao();s&&o.limpar!==!1&&this.limparSuperficie(s,r)}for(const s of t.camadas){const c=n?this.alvos.sobreposicao():this.alvos.camada(s.camadaId);if(!c)continue;!n&&o.limpar!==!1?this.limparSuperficie(c,r):c.ctx.setTransform(r,0,0,r,0,0);const l=o.recorte;l&&(c.ctx.save(),c.ctx.beginPath(),c.ctx.rect(l.x,l.y,l.largura,l.altura),c.ctx.clip());try{this.pintarCamada(c,s,t.origem,n,a)}finally{l&&c.ctx.restore()}}return this.ultima=a,a}limparSuperficie(t,e){const o=e??t.dpr;t.ctx.setTransform(1,0,0,1,0,0),t.ctx.clearRect(0,0,Math.ceil(t.largura*o),Math.ceil(t.altura*o)),t.ctx.setTransform(o,0,0,o,0,0)}pintarCamada(t,e,o,a,n){const r=t.ctx,s=[],c=[],l=[],d=[];for(const h of e.itens)switch(h.forma){case"marca":s.push(h);break;case"poligono":case"circulo":c.push(h);break;case"linha":l.push(h);break;case"ponto":d.push(h);break}if(n.itens+=s.length+c.length+l.length+d.length,r.lineJoin="round",r.lineCap="round",a)for(const h of[...c,...l,...d])(h.destaque||this.destaques.has(h.id))&&this.halo(r,h,o,n);this.pintarMarcas(r,s,o,n),this.pintarGrupos(r,c,o,n,!0),this.pintarGrupos(r,l,o,n,!1),this.pintarGrupos(r,d,o,n,!0),r.globalAlpha=1,r.setLineDash([]),r.lineDashOffset=0}agrupar(t){const e=new Map;for(const o of t){const a=e.get(o.estilo);a?a.push(o):e.set(o.estilo,[o])}return e}pintarMarcas(t,e,o,a){for(const[n,r]of this.agrupar(e)){t.fillStyle=n.corPreenchimento,t.globalAlpha=n.opacidadePreenchimento,a.chamadas+=2;for(const s of r){const c=s.geometriaEmPx[0];if(!c)continue;const l=c[0]-o.x,d=c[1]-o.y;if(!(K(l)&&K(d)))continue;const h=s.raioPx>=2?2:1;t.fillRect(Math.round(l-h/2),Math.round(d-h/2),h,h),a.marcas++,a.chamadas++}}}caminho(t,e,o){if(e.forma==="circulo"||e.forma==="ponto"){const n=e.geometriaEmPx[0];if(!n)return;const r=n[0]-o.x,s=n[1]-o.y;K(r)&&K(s)&&K(e.raioPx)&&(t.moveTo(r+e.raioPx,s),t.arc(r,s,e.raioPx,0,Math.PI*2));return}const a=e.forma==="poligono";for(const n of e.geometriaEmPx){const r=n.length>>1;if(r<2)continue;let s=!1;for(let c=0;c<r;c++){const l=n[c*2]-o.x,d=n[c*2+1]-o.y;K(l)&&K(d)&&(s?t.lineTo(l,d):(t.moveTo(l,d),s=!0))}s&&a&&t.closePath()}}pintarGrupos(t,e,o,a,n){for(const[r,s]of this.agrupar(e)){const c=n&&r.preencher&&r.opacidadePreenchimento>0,l=r.traco&&r.peso>0;if(!(!c&&!l)){c&&(t.fillStyle=r.corPreenchimento),l&&(t.strokeStyle=r.cor,t.lineWidth=r.peso,t.setLineDash(ha(r.dash)),t.lineDashOffset=r.deslocamentoDash??0,t.lineCap=r.terminacao??"round",t.lineJoin=r.juncao??"round"),a.chamadas+=3;for(const d of s)t.beginPath(),this.caminho(t,d,o),c&&(t.globalAlpha=r.opacidadePreenchimento,t.fill(),a.preenchimentos++,a.chamadas++),l&&(t.globalAlpha=r.opacidadeTraco??1,t.stroke(),a.tracos++,a.chamadas++)}}}halo(t,e,o,a){t.strokeStyle=Ei,t.lineWidth=Math.max(e.estilo.peso,1)+4,t.globalAlpha=.9,t.setLineDash([]),t.lineCap="round",t.lineJoin="round",t.beginPath(),this.caminho(t,e,o),t.stroke(),a.tracos++,a.chamadas+=4}}function ua(i,t,e,o){const a=[],n=Math.abs(e),r=Math.abs(o);return n>0&&a.push({x:e>0?i-n:0,y:0,largura:n,altura:t}),r>0&&a.push({x:e>0?0:n,y:o>0?t-r:0,largura:i-n,altura:r}),a}const ie=class ie extends b.Canvas{constructor(e,o){super(e);f(this,"aoPintar");f(this,"incremental");f(this,"limiteProprio");f(this,"itens",0);f(this,"conteudoValido",!1);f(this,"branco",!0);f(this,"mundoMin",null);f(this,"regioesDaVez",null);f(this,"falhas",0);f(this,"ultimoErro",null);this.aoPintar=o,this.incremental=!!e.incremental,this.limiteProprio=e.limiteRepintar}get limiteRepintar(){const e=this.limiteProprio??ie.limiteRepintar;return e>0?e:0}onAdd(e){return super.onAdd(e),this.regioesDaVez=null,this.pintar(),this}_update(){const e=this,o=e._map;if(!o||o._animatingZoom&&e._bounds)return;const a=e._bounds?{mundo:this.mundoMin,x:e._bounds.getSize().x,y:e._bounds.getSize().y,zoom:e._zoom}:null;b.Renderer.prototype._update.call(this);const n=e._bounds,r=o.getPixelOrigin(),s={x:r.x+n.min.x,y:r.y+n.min.y},c=e._container,l=e._ctx,d=n.getSize(),h=b.Browser.retina?2:1;b.DomUtil.setPosition(c,n.min);const p=this.incremental&&this.conteudoValido&&!!a&&a.zoom===e._zoom&&a.x===d.x&&a.y===d.y&&c.width===h*d.x&&c.height===h*d.y;let g=null,v=!1;if(p&&a&&a.mundo){const u=s.x-a.mundo.x,y=s.y-a.mundo.y;!this.branco&&this.itens<=this.limiteRepintar?v=!0:Math.abs(u)<d.x&&Math.abs(y)<d.y&&((u!==0||y!==0)&&!this.branco&&(l.save(),l.setTransform(1,0,0,1,0,0),l.globalCompositeOperation="copy",l.drawImage(c,-u*h,-y*h),l.restore()),g=ua(d.x,d.y,u,y))}!g&&!v&&((!this.branco||c.width!==h*d.x||c.height!==h*d.y)&&(c.width=h*d.x,c.height=h*d.y),this.branco=!0,c.style.width=`${d.x}px`,c.style.height=`${d.y}px`,this.conteudoValido=!1),this.regioesDaVez=g,this.mundoMin=s,l.setTransform(1,0,0,1,0,0),this.fire("update")}_updatePaths(){this._postponeUpdatePaths||this.pintarQuadro(this.regioesDaVez)}pintar(){this.pintarQuadro(null)}pintarQuadro(e){const o=this.quadroAtual(e);if(this.regioesDaVez=null,!!o)try{const a=this.aoPintar(o),n=typeof a=="number"?a>0?a:0:a===!1?0:Number.POSITIVE_INFINITY;this.itens=e?(this.branco?0:this.itens)+n:n,this.branco=this.itens===0,this.conteudoValido=!0}catch(a){this.conteudoValido=!1,this.branco=!1,this.itens=Number.POSITIVE_INFINITY,this.falhas++,this.ultimoErro=a}}quadroAtual(e=null){const o=this,a=o._map,n=o._bounds,r=o._ctx;if(!a||!n||!r)return null;try{const s=n.getSize(),c=a.getPixelOrigin(),l=a.layerPointToLatLng(n.min),d=a.layerPointToLatLng(n.max);return{ctx:r,dpr:b.Browser.retina?2:1,larguraPx:s.x,alturaPx:s.y,origemPx:{x:c.x+n.min.x,y:c.y+n.min.y},caixa:{minLat:d.lat,maxLat:l.lat,minLon:l.lng,maxLon:d.lng},zoom:a.getZoom(),regioes:e,branco:this.branco}}catch{return null}}};f(ie,"limiteRepintar",500);let Lt=ie;const Me="cad-formas-sobreposicao",zi="7000",Dt=8,ki=8,Ii=20,Ae=typeof requestAnimationFrame=="function"?i=>{requestAnimationFrame(i)}:i=>{setTimeout(i,16)},Di=new Set(["icone","texto","cluster","rotulo","curva"]),tt=new WeakMap;function nt(i){return{caixa:i.caixa,zoom:i.zoom,larguraPx:i.larguraPx,alturaPx:i.alturaPx,dpr:i.dpr,origemPx:i.origemPx}}const _i=i=>!!i._loaded;function Ti(i){const t=tt.get(i);if(t)return t;const e={estados:new Set,quadro:null,agendado:!1,noMapa:!1};return e.pintor=new Ve({camada:()=>null,sobreposicao:()=>e.quadro?{ctx:e.quadro.ctx,largura:e.quadro.larguraPx,altura:e.quadro.alturaPx,dpr:e.quadro.dpr}:null}),e.canvas=new Lt({pane:Me,padding:.1},o=>{e.quadro=o;const a=nt(o),n=[];for(const r of[...e.estados].sort((s,c)=>s.layerDef.zIndex-c.layerDef.zIndex)){if(!r.vivo||!r.layerDef.visivel)continue;const s=r.motor.listaSobreposicao(r.layerDef.id,a);s&&s.itens.length>0&&n.push(s)}return o.branco&&n.length===0?!1:(e.pintor.desenhar({vista:a,origem:o.origemPx,camadas:n},a,{alvo:"sobreposicao"}),n.length>0)}),tt.set(i,e),e}function Oi(i,t){t.noMapa||(t.noMapa=!0,i.whenReady(()=>{if(!i.getPane(Me)){const e=i.createPane(Me);e.style.zIndex=zi,e.style.pointerEvents="none"}tt.get(i)===t&&i.addLayer(t.canvas)}))}function _t(i){i.agendado||(i.agendado=!0,Ae(()=>{i.agendado=!1,i.noMapa&&i.canvas.pintar()}))}class pa{constructor(){f(this,"estados",new WeakMap);f(this,"selecionadas",ca)}render(t,e,o){const a=b.layerGroup(),n=new m.MotorFormas,r=o.regraVersoes;r&&n.definirRegra((d,h)=>r.visivel(d,h)),n.definirCamada(this.defMotor(t)),n.definirFeicoes(t.id,this.feicoesDe(t));const s=this.selecionadas.get(t);s&&n.selecionar(t.id,s);const c={layerDef:t,map:e,context:o,grupo:a,motor:n,interativo:t.interativo&&!t.bloqueada,quadro:null,dom:new Map,fonteHit:null,agendado:!1,agendadoDom:!1,vivo:!0,ultima:null};c.pintor=new Ve({camada:()=>c.quadro?{ctx:c.quadro.ctx,largura:c.quadro.larguraPx,altura:c.quadro.alturaPx,dpr:c.quadro.dpr}:null,sobreposicao:()=>null}),e.getPane(dt(t.id))||e.createPane(dt(t.id)),c.base=new Lt({pane:dt(t.id),padding:.1,incremental:!0},d=>this.pintarBase(c,d)),this.estados.set(a,c),e.whenReady(()=>{c.vivo&&a.addLayer(c.base)});const l=Ti(e);return l.estados.add(c),Oi(e,l),this.registrarHit(c),a}update(t,e,o,a,n){var s;const r=this.estados.get(e);if(r&&(r.layerDef=t,r.context=a,r.interativo=t.interativo&&!t.bloqueada,!(o.dados===void 0&&o.estilo===void 0&&o.interativo===void 0&&o.bloqueada===void 0))){if(r.motor.definirCamada(this.defMotor(t)),o.dados!==void 0){const c=this.feicoesDe(t),l=(s=t.dados)==null?void 0:s.delta;l?r.motor.aplicarDelta(t.id,c,l):r.motor.definirFeicoes(t.id,c);const d=this.selecionadas.get(t);if(d)for(const h of[...d])r.motor.feicao(t.id,h)||d.delete(h)}if(o.estilo!==void 0||o.interativo!==void 0||o.bloqueada!==void 0){for(const c of r.dom.values())r.grupo.removeLayer(c.layer);r.dom.clear()}this.pedirBase(r)}}destroy(t,e){const o=t,a=this.estados.get(o);if(a){a.vivo=!1,a.fonteHit&&Te(a.map,a.layerDef.id,a.fonteHit),a.fonteHit=null;const n=tt.get(a.map);n&&(n.estados.delete(a),_t(n)),a.pintor.destruir(),a.dom.clear()}o.clearLayers(),this.estados.delete(o),e.hasLayer(o)&&e.removeLayer(o)}reavaliarVersoes(t){const e=this.estados.get(t);e&&(e.motor.reavaliarVersoes(e.layerDef.id),this.pedirBase(e))}feicaoVisivel(t,e){const o=this.estados.get(t);return!o||o.motor.feicaoVisivel(o.layerDef.id,e)}consultarProximas(t,e){const o=this.estados.get(t);return o?o.motor.consultarCaixa(o.layerDef.id,e):[]}previsualizar(t,e){const o=this.estados.get(t);if(!o)return;const a=o.layerDef.id,n=!o.motor.temPrevia(a,e.id);o.motor.previsualizar(a,e),n&&this.pedirBase(o);const r=tt.get(o.map);r&&_t(r)}aplicarSelecao(t,e){const o=this.estados.get(t);if(!o)return;const a=o.layerDef.id;this.selecionadas.set(o.layerDef,new Set(e));const{entrou:n,saiu:r}=o.motor.selecionar(a,e);if(n.length===0&&r.length===0)return;const s=[...n,...r];for(const l of s)this.atualizarSelecaoDom(o,l);o.motor.selecaoAfetaAgrupamento(a,s)&&this.pedirDom(o);const c=tt.get(o.map);c&&_t(c)}estatisticas(t){const e=this.estados.get(t);if(!e)return null;const o=this.listaAtual(e),a=(o==null?void 0:o.estatisticas)??e.motor.estatisticas(e.layerDef.id);return a?{total:a.total,materializadas:a.desenhadas+a.marcadoresDom,marcasLOD:a.marcasLOD,clusters:a.clusters,avaliacoesLOD:a.avaliacoesLOD,desenhadas:a.desenhadas,marcadoresDom:a.marcadoresDom,canvases:2,renderizador:"canvas"}:null}idsDesenhados(t){const e=this.estados.get(t);if(!e)return null;const o=this.listaAtual(e);if(!o)return{materializadas:[],marcas:[]};const a=e.motor.selecionadas(e.layerDef.id),n=new Set,r=new Set;for(const l of o.itens)l.forma==="cluster"||l.forma==="rotulo"||(l.forma==="marca"?a.has(l.id)?n.add(l.id):r.add(l.id):n.add(l.id));const s=e.base.quadroAtual(),c=s?e.motor.listaSobreposicao(e.layerDef.id,nt(s)):null;for(const l of(c==null?void 0:c.itens)??[])n.add(l.id);return{materializadas:[...n].sort(),marcas:[...r].sort()}}redesenharAgora(t){var o;const e=this.estados.get(t);e&&(e.base.pintar(),(o=tt.get(e.map))==null||o.canvas.pintar())}defMotor(t){return{id:t.id,zIndex:t.zIndex,opacidade:t.opacidade,visivel:t.visivel,interativo:t.interativo,bloqueada:t.bloqueada,estilo:t.estilo??{}}}feicoesDe(t){const e=t.dados,o=Array.isArray(e)?e:e==null?void 0:e.feicoes;return Array.isArray(o)?o:[]}pedirBase(t){t.agendado||!t.vivo||(t.agendado=!0,Ae(()=>{t.agendado=!1,t.vivo&&t.base.pintar()}))}pedirDom(t){t.agendadoDom||!t.vivo||(t.agendadoDom=!0,Ae(()=>{if(t.agendadoDom=!1,!t.vivo)return;const e=t.base.quadroAtual();if(!e)return;const o=t.motor.listaDesenho(nt(e),{camadas:[t.layerDef.id],parte:"dom"}).camadas[0];o&&this.sincronizarDom(t,o)}))}listaAtual(t){const e=t.base.quadroAtual();return e?t.motor.listaDesenho(nt(e),{camadas:[t.layerDef.id]}).camadas[0]??null:t.ultima}vistaDaFaixa(t,e){const o=ki,[a,n]=m.latLonDoMundo(t.origemPx.x+e.x-o,t.origemPx.y+e.y-o,t.zoom),[r,s]=m.latLonDoMundo(t.origemPx.x+e.x+e.largura+o,t.origemPx.y+e.y+e.altura+o,t.zoom);return{...nt(t),larguraPx:e.largura,alturaPx:e.altura,caixa:{minLat:r,maxLat:a,minLon:n,maxLon:s}}}pintarBase(t,e){if(!t.vivo)return!e.branco;t.quadro=e;const o=t.layerDef.id;let a;if(e.regioes){a=0;for(const s of e.regioes){const c=this.vistaDaFaixa(e,s),l=t.motor.listaDesenho(c,{camadas:[o],parte:"canvas"}),d=Se(l.camadas[0]);d!==0&&(t.pintor.desenhar(l,c,{limpar:!1,recorte:s}),a+=d)}const r=t.motor.listaDesenho(nt(e),{camadas:[o],parte:"dom"}).camadas[0];r&&this.sincronizarDom(t,r)}else{const r=nt(e),s=t.motor.listaDesenho(r,{camadas:[o]}),c=s.camadas[0]??null,l=Se(c);c?l===0&&e.branco?a=0:(t.pintor.desenhar(s,r),a=l):a=!e.branco,t.ultima=c,c&&this.sincronizarDom(t,c)}const n=tt.get(t.map);return n&&_t(n),a}acao(t,e,o){var n,r;if(!e)return;const a=o==null?void 0:o.originalEvent;(r=(n=t.context).onLayerAction)==null||r.call(n,"feicao-clique",{camadaId:t.layerDef.id,feicao:t.motor.feicao(t.layerDef.id,e.id)??e,aditivo:!!(a&&(a.ctrlKey||a.metaKey||a.shiftKey))})}sincronizarDom(t,e){const o=new Set;for(const a of e.itens){if(!Di.has(a.forma))continue;const n=`${a.forma}:${a.id}`;o.add(n);try{this.colocarDom(t,n,a)}catch{const r=t.dom.get(n);r&&t.grupo.removeLayer(r.layer),t.dom.delete(n)}}for(const[a,n]of t.dom)o.has(a)||(t.grupo.removeLayer(n.layer),t.dom.delete(a))}colocarDom(t,e,o){var d,h;const{map:a,layerDef:n,grupo:r}=t,s=o.feicao??null,c=t.dom.get(e),l=n.estilo??{};if(o.forma==="icone"&&s&&o.coordenada){if(c){c.fonte!==s?(c.layer.setLatLng(o.coordenada),c.layer.setIcon(Rt(s,l,o.selecionada)),c.fonte=s,c.selecionada=o.selecionada):c.selecionada!==o.selecionada&&this.trocarIcone(c,s,l,o.selecionada);return}const p=b.marker(o.coordenada,{icon:Rt(s,l,o.selecionada),pane:U(a,n.id,"ponto"),interactive:t.interativo,keyboard:!1});p.on("click",g=>this.acao(t,s,g)),r.addLayer(p),t.dom.set(e,{layer:p,fonte:s,selecionada:o.selecionada,assinatura:""});return}if(o.forma==="texto"&&s&&o.coordenada){if(c){if(c.fonte!==s){const g=c.layer;g.setLatLng(o.coordenada),g.setIcon(Bt(s,l,o.selecionada)),t.interativo&&!s.bloqueada?(d=g.dragging)==null||d.enable():(h=g.dragging)==null||h.disable(),c.fonte=s,c.selecionada=o.selecionada}else c.selecionada!==o.selecionada&&this.trocarIcone(c,s,l,o.selecionada);return}const p=b.marker(o.coordenada,{icon:Bt(s,l,o.selecionada),pane:U(a,n.id,"texto"),interactive:t.interativo,draggable:t.interativo&&!s.bloqueada,keyboard:!1});p.on("click",g=>this.acao(t,s,g)),p.on("dragend",()=>{var A,k;const g=t.motor.feicao(n.id,s.id)??s;if(g.geometria.tipo!=="Text")return;const{lat:v,lng:u}=p.getLatLng(),y={...g,geometria:{...g.geometria,coordenada:[v,u]}};(k=(A=t.context).onLayerAction)==null||k.call(A,"feicao-movida",{camadaId:n.id,feicao:y})}),r.addLayer(p),t.dom.set(e,{layer:p,fonte:s,selecionada:o.selecionada,assinatura:""});return}if(o.forma==="cluster"&&o.coordenada){const p=o.total??0,g=`${o.id}:${p}:${o.restantes??0}:${o.coordenada[0].toFixed(7)}:${o.coordenada[1].toFixed(7)}`;if((c==null?void 0:c.assinatura)===g)return;c&&r.removeLayer(c.layer);const v=b.marker(o.coordenada,{icon:la(p,l),pane:U(a,n.id,"ponto"),keyboard:!1});v.bindTooltip(`${p} feições agrupadas`,{direction:"top"}),v.on("click",()=>{const u=t.motor.membrosDoCluster(n.id,o.id);u.length>0&&a.fitBounds(b.latLngBounds(u.map(y=>y.coordenada)),{padding:[60,60],maxZoom:18})}),r.addLayer(v),t.dom.set(e,{layer:v,fonte:null,selecionada:!1,assinatura:g});return}if(o.forma==="rotulo"&&o.coordenada&&o.texto){const p=`${o.texto}:${o.coordenada[0]}:${o.coordenada[1]}`;if((c==null?void 0:c.assinatura)===p)return;c&&r.removeLayer(c.layer);const g=document.createElement("span");g.textContent=o.texto;const v=b.marker(o.coordenada,{icon:b.divIcon({className:"cad-feicao-rotulo-ancora",iconSize:[0,0]}),pane:U(a,n.id,"texto"),interactive:!1,keyboard:!1});v.bindTooltip(g,{permanent:!0,direction:"center",className:"cad-feicao-rotulo",interactive:!1}),r.addLayer(v),t.dom.set(e,{layer:v,fonte:null,selecionada:!1,assinatura:p});return}if(o.forma==="curva"&&s){const p=s.geometria,g=u=>Ce(m.estiloVetorDe(s,l,u),t.interativo);if(c){const u=c.layer;c.fonte!==s?(Vo(u,p),u.setStyle(g(o.selecionada)),c.fonte=s,c.selecionada=o.selecionada):c.selecionada!==o.selecionada&&(u.setStyle(g(o.selecionada)),c.selecionada=o.selecionada);return}const v=Fe(p,{...g(o.selecionada),pane:U(a,n.id,p.tipo==="Polygon"?"poligono":"linha")});if(!v||!m.nosDaGeometria(p))return;v.on("click",u=>this.acao(t,s,u)),r.addLayer(v),t.dom.set(e,{layer:v,fonte:s,selecionada:o.selecionada,assinatura:""})}}trocarIcone(t,e,o,a){t.layer.setIcon(e.geometria.tipo==="Text"?Bt(e,o,a):Rt(e,o,a)),t.selecionada=a}atualizarSelecaoDom(t,e){const o=t.motor.feicao(t.layerDef.id,e);if(!o)return;const a=t.motor.selecionadas(t.layerDef.id).has(e),n=t.layerDef.estilo??{};for(const s of[`icone:${e}`,`texto:${e}`]){const c=t.dom.get(s);c&&c.selecionada!==a&&this.trocarIcone(c,o,n,a)}const r=t.dom.get(`curva:${e}`);r&&r.selecionada!==a&&(r.layer.setStyle(Ce(m.estiloVetorDe(o,n,a),t.interativo)),r.selecionada=a)}registrarHit(t){const e={alvo:t.base,consultar:o=>{const{map:a,layerDef:n,motor:r}=t;if(!t.vivo||!t.interativo||!n.visivel||!_i(a))return[];const s=a.layerPointToContainerPoint(o),c=a.containerPointToLatLng([s.x-Dt,s.y+Dt]),l=a.containerPointToLatLng([s.x+Dt,s.y-Dt]),d={minLat:Math.min(c.lat,l.lat),maxLat:Math.max(c.lat,l.lat),minLon:Math.min(c.lng,l.lng),maxLon:Math.max(c.lng,l.lng)},h=r.consultarCaixa(n.id,d).filter(v=>{var y;if(!r.feicaoVisivel(n.id,v))return!1;const u=v.geometria;return u.tipo==="Text"||m.nosDaGeometria(u)?!1:u.tipo==="Point"?!((y=v.estilo)!=null&&y.icone)&&!r.pontoAgrupado(n.id,v.id):!0}),p=v=>{const u=a.latLngToContainerPoint(v);return{x:u.x,y:u.y}},g=[];for(let v=0;v<Ii&&h.length>0;v++){const u=wt({x:s.x,y:s.y},h,p);if(!u)break;h.splice(h.indexOf(u),1);const y=r.caixaDe(n.id,u.id),A=y?(()=>{const k=a.latLngToContainerPoint([y.minLat,y.minLon]),S=a.latLngToContainerPoint([y.maxLat,y.maxLon]);return Math.abs(S.x-k.x)*Math.abs(S.y-k.y)})():0;g.push({feicao:u,chave:u.id,distancia:0,area:Number.isFinite(A)?A:0,tipo:u.geometria.tipo==="Point"?"ponto":u.geometria.tipo==="LineString"?"linha":"poligono"})}return g}};t.fonteHit=e,_e(t.map,t.layerDef.id,e),t.base.on("click",o=>{var s,c;const{feicaoHit:a,originalEvent:n}=o;if(!a||!t.vivo)return;const r=n;(c=(s=t.context).onLayerAction)==null||c.call(s,"feicao-clique",{camadaId:t.layerDef.id,feicao:a,aditivo:!!(r&&(r.ctrlKey||r.metaKey||r.shiftKey))})})}}function bt(i){return String(i??"").trim().toLowerCase()==="canvas"?"canvas":"leaflet"}class fa{constructor(t=new da,e=new pa){f(this,"roteamento",new WeakMap);this.leaflet=t,this.canvas=e}modo(t){var e;try{return bt((e=t.renderizador)==null?void 0:e.call(t))}catch{return"leaflet"}}de(t){return this.roteamento.get(t)??this.leaflet}modoDe(t){return this.roteamento.get(t)===this.canvas?"canvas":"leaflet"}render(t,e,o){const a=this.modo(o)==="canvas"?this.canvas:this.leaflet,n=a.render(t,e,o);return n&&this.roteamento.set(n,a),n}update(t,e,o,a,n){this.de(e).update(t,e,o,a,n)}destroy(t,e){this.de(t).destroy(t,e),this.roteamento.delete(t)}reavaliarVersoes(t){this.de(t).reavaliarVersoes(t)}feicaoVisivel(t,e){return this.de(t).feicaoVisivel(t,e)}consultarProximas(t,e){return this.de(t).consultarProximas(t,e)}previsualizar(t,e){this.de(t).previsualizar(t,e)}estatisticas(t){const e=this.de(t).estatisticas(t);return e?{renderizador:this.modoDe(t),...e}:null}idsDesenhados(t){return this.de(t).idsDesenhados(t)}aplicarSelecao(t,e){this.de(t).aplicarSelecao(t,e)}}$.register("tile",new Io);$.register("wms",new Do);$.register("vetorial-linhas",new To);$.register("vetorial-pontos",new qo);$.register("vetorial-poligonos",new Fo);$.register("grid",new No);$.register("feicoes",new fa);const Ee=[{id:"satelite",nome:"Satélite Google Híbrido",categoria:"base",tipo:"tile",visivel:!0,opacidade:1,zIndex:200,interativo:!1,bloqueada:!1,estilo:{scaleMode:"screen"}},{id:"sigef",nome:"Acervo Fundiário SIGEF (INCRA)",categoria:"wms",tipo:"wms",visivel:!0,opacidade:.85,zIndex:390,interativo:!0,bloqueada:!1,estilo:{scaleMode:"screen"}},{id:"homologados",nome:"Poligonal Homologada (Banco)",categoria:"referencia",tipo:"vetorial-linhas",visivel:!0,opacidade:.9,zIndex:420,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#f59e0b",espessuraLinha:1,dashArray:"6, 8",scaleMode:"screen"}},{id:"homologados-pontos",nome:"Marcos Homologados (Banco)",categoria:"referencia",tipo:"vetorial-pontos",visivel:!0,opacidade:1,zIndex:430,interativo:!0,bloqueada:!1,estilo:{tamanhoMarcador:8,estiloMarcador:"circle",scaleMode:"screen"}},{id:"perimetro",nome:"Divisas e Poligonal do Imóvel",categoria:"levantamento",tipo:"vetorial-linhas",visivel:!0,opacidade:1,zIndex:520,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#00f5a0",espessuraLinha:1,scaleMode:"screen",dimensaoMetros:.3}},{id:"vizinhos",nome:"Imóveis Confrontantes (WKT/CSV)",categoria:"referencia",tipo:"vetorial-poligonos",visivel:!0,opacidade:.8,zIndex:440,interativo:!0,bloqueada:!1,estilo:{corPrimaria:"#a855f7",espessuraLinha:1,dashArray:"4, 6",scaleMode:"screen"}},{id:"vertices",nome:"Vértices e Marcos do Levantamento",categoria:"levantamento",tipo:"vetorial-pontos",visivel:!0,opacidade:1,zIndex:650,interativo:!0,bloqueada:!1,estilo:{tamanhoMarcador:8,scaleMode:"screen",dimensaoMetros:.25}},{id:"grade",nome:"Grade de Coordenadas UTM",categoria:"referencia",tipo:"grid",visivel:!0,opacidade:.5,zIndex:700,interativo:!1,bloqueada:!1,estilo:{corPrimaria:"rgba(0, 245, 160, 0.18)",espessuraLinha:.6,scaleMode:"screen"}}],qi=new Set(["tile","wms","grid"]);class ma{constructor(t){f(this,"layers",[]);f(this,"layerInstances",new Map);f(this,"map",null);f(this,"context",null);f(this,"listeners",[]);f(this,"renderPendente",!1);this.layers=(t||Ee).map(e=>({...e,estilo:{...e.estilo}}))}descartarCamadasPadrao(){if(this.map)return;const t=new Set(Ee.map(e=>e.id));this.layers=this.layers.filter(e=>!t.has(e.id)||e.tipo==="feicoes")}attachMap(t,e){this.map=t,this.context=e,this.ensurePanes(),this.renderAllLayers()}ensurePanes(){this.map&&this.layers.forEach(t=>{const e=`pane-${t.id}`;let o=this.map.getPane(e);o||(o=this.map.createPane(e)),o&&(o.style.zIndex=String(t.zIndex),o.style.pointerEvents=t.interativo&&!t.bloqueada&&t.visivel?"auto":"none")})}renderAllLayers(t=!1){this.renderPendente=!1,!(!this.map||!this.context)&&(this.layers.forEach(e=>{if(!(t&&qi.has(e.tipo)&&e.visivel&&this.layerInstances.has(e.id))){if(this.layerInstances.has(e.id)){const o=this.layerInstances.get(e.id),a=$.get(e.tipo);a&&a.destroy(o,this.map),this.layerInstances.delete(e.id)}if(e.visivel){const o=$.get(e.tipo);if(o){const a=o.render(e,this.map,this.context);a&&(a.addTo(this.map),this.layerInstances.set(e.id,a))}}}}),this.notifyChange())}recriarCamadasDoTipo(t){if(this.flushRender(),!this.map||!this.context)return;const e=$.get(t);if(e){for(const o of this.layers){if(o.tipo!==t)continue;const a=this.layerInstances.get(o.id);if(a&&(e.destroy(a,this.map),this.layerInstances.delete(o.id)),!o.visivel)continue;const n=e.render(o,this.map,this.context);n&&(n.addTo(this.map),this.layerInstances.set(o.id,n))}this.notifyChange()}}flushRender(){this.renderPendente&&this.renderAllLayers(!0)}agendarRender(){this.renderPendente||(this.renderPendente=!0,queueMicrotask(()=>this.flushRender()))}setLayerVisibility(t,e){this.flushRender();const o=this.layers.find(r=>r.id===t);if(!o||o.visivel===e||(o.visivel=e,!this.map||!this.context))return;const a=`pane-${o.id}`,n=this.map.getPane(a);if(n&&(n.style.display=e?"":"none",n.style.pointerEvents=o.visivel&&o.interativo&&!o.bloqueada?"auto":"none"),e){if(!this.layerInstances.has(t)){const r=$.get(o.tipo);if(r){const s=r.render(o,this.map,this.context);s&&(s.addTo(this.map),this.layerInstances.set(t,s))}}}else if(this.layerInstances.has(t)){const r=this.layerInstances.get(t),s=$.get(o.tipo);s&&s.destroy(r,this.map),this.layerInstances.delete(t)}this.notifyChange()}setLayerOpacity(t,e){this.flushRender();const o=this.layers.find(n=>n.id===t);if(!o)return;if(o.opacidade=Math.max(0,Math.min(1,e)),this.map){const n=this.map.getPane(`pane-${t}`);n&&(n.style.opacity=String(o.opacidade))}const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const n=$.get(o.tipo);n&&n.update(o,a,{opacidade:o.opacidade},this.context,this.map)}this.notifyChange()}setLayerZIndex(t,e){const o=this.layers.find(a=>a.id===t);if(o){if(o.zIndex=e,this.map){const a=this.map.getPane(`pane-${t}`);a&&(a.style.zIndex=String(e))}this.notifyChange()}}setLayerBlocked(t,e){const o=this.layers.find(a=>a.id===t);if(o){if(o.bloqueada=e,this.map){const a=this.map.getPane(`pane-${t}`);a&&(a.style.pointerEvents=o.visivel&&o.interativo&&!e?"auto":"none")}this.notifyChange()}}setLayerScaleMode(t,e){this.flushRender();const o=this.layers.find(n=>n.id===t);if(!o)return;o.estilo.scaleMode=e;const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const n=$.get(o.tipo);n&&n.update(o,a,{estilo:o.estilo},this.context,this.map)}this.notifyChange()}setGraphicScale(t){this.context&&(this.context.graphicScale={...this.context.graphicScale,...t},this.agendarRender())}updateContext(t){this.context&&(this.context={...this.context,...t},this.agendarRender())}getLayers(){return[...this.layers]}getActiveSelectableLayers(){return this.layers.filter(t=>t.visivel&&t.interativo&&!t.bloqueada)}isLayerActiveAndSelectable(t){const e=this.layers.find(o=>o.id===t);return!!(e&&e.visivel&&e.interativo&&!e.bloqueada)}exportState(){return this.layers.map(t=>({id:t.id,visivel:t.visivel,opacidade:t.opacidade,zIndex:t.zIndex,bloqueada:t.bloqueada,estilo:{...t.estilo}}))}importState(t){!t||!Array.isArray(t)||(t.forEach(e=>{const o=this.layers.find(a=>a.id===e.id);o&&(e.visivel!==void 0&&(o.visivel=e.visivel),e.opacidade!==void 0&&(o.opacidade=e.opacidade),e.zIndex!==void 0&&(o.zIndex=e.zIndex),e.bloqueada!==void 0&&(o.bloqueada=e.bloqueada),e.estilo&&(o.estilo={...o.estilo,...e.estilo}))}),this.ensurePanes(),this.renderAllLayers())}onChange(t){return this.listeners.push(t),()=>{this.listeners=this.listeners.filter(e=>e!==t)}}notifyChange(){const t=this.getLayers();this.listeners.forEach(e=>{try{e(t)}catch(o){console.error("Erro no listener de camadas:",o)}})}getAllLayerInstances(){return this.flushRender(),Array.from(this.layerInstances.values())}getLayerInstance(t){return this.flushRender(),this.layerInstances.get(t)}getLayer(t){return this.layers.find(e=>e.id===t)}getLayerDef(t){return this.layers.find(e=>e.id===t)}getOrCreateLayer(t,e,o){let a=this.layers.find(n=>n.id===t);return a||(a={id:t,nome:o,categoria:"custom",tipo:e,visivel:!0,opacidade:1,zIndex:600,interativo:!0,bloqueada:!1,estilo:{scaleMode:"screen"}},this.layers.push(a),this.ensurePanes()),a}setLayerData(t,e){this.flushRender();const o=this.layers.find(n=>n.id===t);if(!o)return;o.dados=e;const a=this.layerInstances.get(t);if(a&&this.map&&this.context){const n=$.get(o.tipo);n&&n.update(o,a,{dados:e},this.context,this.map)}else if(o.visivel&&this.map&&this.context){const n=$.get(o.tipo);if(n){const r=n.render(o,this.map,this.context);r&&(r.addTo(this.map),this.layerInstances.set(t,r))}}this.notifyChange()}clearLayers(t){this.flushRender(),(t&&t.length>0?t:Array.from(this.layerInstances.keys())).forEach(o=>{if(this.layerInstances.has(o)){const a=this.layerInstances.get(o),n=this.layers.find(r=>r.id===o);if(n){const r=$.get(n.tipo);r&&r.destroy(a,this.map)}this.layerInstances.delete(o)}}),this.notifyChange()}destroy(){this.renderPendente=!1,this.map&&(this.layerInstances.forEach((t,e)=>{const o=this.layers.find(a=>a.id===e);if(o){const a=$.get(o.tipo);a&&a.destroy(t,this.map)}}),this.layerInstances.clear()),this.listeners=[]}}function ga(i,t){var r,s;if(t==null)return null;const e=String(t).trim(),o=c=>c?(c.lon=c.lng,c):null,n=i.getMarkers().find(c=>{var g,v,u,y;const l=c.pontoId,d=c.elementoId??c.id??((g=c.options)==null?void 0:g.pontoId)??((v=c.options)==null?void 0:v.id),h=(u=c.elemento)==null?void 0:u.nome_vertice,p=(y=c.elemento)==null?void 0:y.codigo_completo;return String(l)===e||String(d)===e||h&&String(h).toLowerCase()===e.toLowerCase()||p&&String(p).toLowerCase()===e.toLowerCase()});if(n&&typeof n.getLatLng=="function")return o(n.getLatLng());if(i.layerManager)for(const c of i.layerManager.getAllLayerInstances()){let l=null;const d=h=>{var v,u,y,A,k;if(l)return;const p=h.pontoId??h.elementoId??h.id??((v=h.options)==null?void 0:v.id)??((u=h.options)==null?void 0:u.pontoId),g=((y=h.elemento)==null?void 0:y.nome)??((A=h.elemento)==null?void 0:A.nome_vertice)??((k=h.options)==null?void 0:k.nome);(String(p)===e||g&&String(g).toLowerCase()===e.toLowerCase())&&(typeof h.getLatLng=="function"?l=h.getLatLng():typeof h.getBounds=="function"&&(l=h.getBounds().getCenter()))};if(d(c),typeof c.eachLayer=="function"&&c.eachLayer(d),l)return o(l)}if(i.context.pontos&&i.context.pontos.length>0){const c=i.context.pontos.find(l=>String(l.id)===e||l.nome_vertice&&String(l.nome_vertice).toLowerCase()===e.toLowerCase());if(c){const l=c.lat??c.latitude??c.y,d=c.lon??c.lng??c.longitude??c.x,h=E.parseCoordenada(l,d);if(h)return o(b.latLng(h.lat,h.lon))}}if(i.context.bancoPontos&&i.context.bancoPontos.length>0){const c=i.context.bancoPontos.find(l=>String(l.id)===e||l.codigo_completo&&String(l.codigo_completo).toLowerCase()===e.toLowerCase()||l.nome_vertice&&String(l.nome_vertice).toLowerCase()===e.toLowerCase());if(c){const l=c.lat??c.latitude??c.y,d=c.lon??c.lng??c.longitude??c.x,h=E.parseCoordenada(l,d);if(h)return o(b.latLng(h.lat,h.lon))}}if(i.context.confrontantes&&i.context.confrontantes.length>0){const c=i.context.confrontantes.find(l=>String(l.id)===e||l.nome&&String(l.nome).toLowerCase()===e.toLowerCase()||l.nome_propriedade&&String(l.nome_propriedade).toLowerCase()===e.toLowerCase());if(c){if(c.pontos&&c.pontos.length>0){let l=0,d=0,h=0;for(const p of c.pontos){const g=p.lat??p.latitude??p.y,v=p.lon??p.lng??p.longitude??p.x,u=E.parseCoordenada(g,v);u&&(l+=u.lat,d+=u.lon,h++)}if(h>0)return o(b.latLng(l/h,d/h))}if(c.poligono_wkt){const l=E.extrairCentroDeWkt(c.poligono_wkt);if(l)return o(b.latLng(l.lat,l.lon))}}}if(i.context.segmentos&&i.context.segmentos.length>0){const c=i.context.segmentos.find(l=>String(l.id)===e||`${l.ponto_inicio_id}-${l.ponto_fim_id}`===e);if(c){const l=(r=i.context.pontos)==null?void 0:r.find(h=>String(h.id)===String(c.ponto_inicio_id)),d=(s=i.context.pontos)==null?void 0:s.find(h=>String(h.id)===String(c.ponto_fim_id));if(l&&d){const h=E.parseCoordenada(l.lat??l.latitude,l.lon??l.longitude),p=E.parseCoordenada(d.lat??d.latitude,d.lon??d.longitude);if(h&&p)return o(b.latLng((h.lat+p.lat)/2,(h.lon+p.lon)/2))}}}if(i.layerManager){for(const c of i.layerManager.getLayers())if(c.dados){if(Array.isArray(c.dados.pontos)){const l=c.dados.pontos.find(d=>String(d.id)===e||d.nome_vertice&&String(d.nome_vertice)===e);if(l){const d=E.parseCoordenada(l.lat,l.lon);if(d)return o(b.latLng(d.lat,d.lon))}}if(Array.isArray(c.dados.poligonos)){const l=c.dados.poligonos.find(d=>String(d.id)===e);if(l){if(l.wkt){const d=E.extrairCentroDeWkt(l.wkt);if(d)return o(b.latLng(d.lat,d.lon))}if(Array.isArray(l.coordenadas)&&l.coordenadas.length>0){let d=0,h=0,p=0;for(const g of l.coordenadas){const v=E.parseCoordenada(g[0],g[1])||E.parseCoordenada(g[1],g[0]);v&&(d+=v.lat,h+=v.lon,p++)}if(p>0)return o(b.latLng(d/p,h/p))}}}}}return null}function Fi(i,t,e,o){var g,v;we(t,i.getMap());const a=i.getMap();if(!a)return;const n=ga(i,e);if(!n){console.warn(`[ui-canvas-cad] Elemento com identificador "${e}" não encontrado para destaque.`);return}const r=(o==null?void 0:o.pan)===!0,s=o==null?void 0:o.zoom;r?s!==void 0?typeof a.flyTo=="function"?a.flyTo(n,s,{animate:!0}):a.setView(n,s,{animate:!0}):typeof a.panTo=="function"?a.panTo(n,{animate:!0}):a.setView(n,a.getZoom(),{animate:!0}):s!==void 0&&a.setZoom(s,{animate:!0});const c=(o==null?void 0:o.cor)||"#00f5a0",l="pane-destaque";let d=a.getPane(l);d||(d=a.createPane(l)),d&&(d.style.zIndex="850",d.style.pointerEvents="none");const h=b.divIcon({className:"cad-destaque-marker-container",html:`
100
100
  <div class="cad-pulse-highlight" style="--cad-pulse-cor: ${E.escapeHtml(c)};">
101
101
  <div class="cad-pulse-core"></div>
102
102
  <div class="cad-pulse-ring ring-1"></div>
103
103
  <div class="cad-pulse-ring ring-2"></div>
104
104
  </div>
105
- `,iconSize:[52,52],iconAnchor:[26,26]});t.destaqueMarker=b.marker(i,{icon:h,pane:l,interactive:!1,keyboard:!1}),t.destaqueMarker.addTo(a);const u=(v=(m=t.destaqueMarker).getElement)==null?void 0:v.call(m);u&&(u.style.pointerEvents="none"),o!=null&&o.duracaoMs&&o.duracaoMs>0&&(t.destaqueTimeoutId=window.setTimeout(()=>{Ae(t,a)},o.duracaoMs))}function Ae(n,t){n.destaqueTimeoutId!==null&&(window.clearTimeout(n.destaqueTimeoutId),n.destaqueTimeoutId=null),n.destaqueMarker&&(t&&t.hasLayer(n.destaqueMarker)?t.removeLayer(n.destaqueMarker):typeof n.destaqueMarker.remove=="function"&&n.destaqueMarker.remove(),n.destaqueMarker=null)}function Ti(n,t){const e=new Map;n.forEach(a=>{const i=a.lat??a.latitude??a.y,r=a.lon??a.lng??a.longitude??a.x,s=E.parseCoordenada(i,r);s&&(a.lat=s.lat,a.lon=s.lon);const c=a.confrontante_id??a.id_confrontante??0;e.has(c)||e.set(c,[]),e.get(c).push(a)});const o=new Map;return t.forEach(a=>{const i=a.id!==void 0&&a.id!==null?a.id:0;o.set(i,{...a,pontos:[]})}),e.forEach((a,i)=>{var r,s;if(o.has(i)){const c=o.get(i);c.pontos=a}else o.set(i,{id:i,nome:((r=a[0])==null?void 0:r.nome_confrontante)||"Confrontante",nome_propriedade:((s=a[0])==null?void 0:s.nome_propriedade)||"",pontos:a})}),Array.from(o.values()).filter(a=>a.pontos&&a.pontos.length>0||!!a.poligono_wkt)}function Oi(n,t){const e=new Map;return t.forEach(o=>{o.id!==void 0&&o.id!==null&&o.pontos&&o.pontos.length>0&&e.set(o.id,o.pontos)}),n.map(o=>{const a=o.id!==void 0&&o.id!==null?o.id:void 0;return a!==void 0&&(!o.pontos||o.pontos.length===0)&&e.has(a)?{...o,pontos:e.get(a)}:{...o}})}function qi(n,t,e=!1){let o=[...n];e&&t&&t.forEach(i=>{i.pontos&&o.push(...i.pontos)});const a=o.map(i=>{const r=i.lat??i.latitude??i.y,s=i.lon??i.lng??i.longitude??i.x,c=E.parseCoordenada(r,s);return c?b.latLng(c.lat,c.lon):null}).filter(i=>i!==null);return a.length===1?{single:a[0]}:a.length>1?{bounds:b.latLngBounds(a)}:null}function Fi(n,t){var i;(i=t==null?void 0:t.flushRender)==null||i.call(t);const e=[],o=new Set,a=r=>{r instanceof b.Marker&&r.pontoId!==void 0&&!o.has(r)&&(o.add(r),e.push(r))};return n&&n.eachLayer(r=>{a(r),typeof r.eachLayer=="function"&&r.eachLayer(a)}),t&&t.getAllLayerInstances().forEach(r=>{a(r),typeof r.eachLayer=="function"&&r.eachLayer(a)}),e}function $i(n,t,e="vertices",o){const a=t||[];n.layerManager.getOrCreateLayer(e,"vetorial-pontos","Pontos / Vértices"),e==="vertices"&&(n.context.pontos=a,n.canvasInteracao.ctx.pontosList=a,o&&(n.customMarkerClickCallback=i=>{const r=a.find(s=>String(s.id)===String(i))||{id:i,lat:0,lon:0};o(r)})),n.layerManager.setLayerData(e,{pontos:a,onClique:o}),n.layerManager.setLayerVisibility(e,!0)}function Ni(n,t,e="linhas"){const o=t||[];n.layerManager.getOrCreateLayer(e,"vetorial-linhas","Conexões / Linhas"),(e==="linhas"||e==="perimetro")&&(n.context.segmentos=o.map(a=>({ponto_inicio_id:Number(a.origemId)||0,ponto_fim_id:Number(a.destinoId)||0,tipo_limite_sigef:a.tipoLinha==="tracejada"?"LN1":"LA1"}))),n.layerManager.setLayerData(e,{conexoes:o}),n.layerManager.setLayerVisibility(e,!0)}function Ri(n,t,e=!0,o="polilinha",a){const i=t||[];n.layerManager.getOrCreateLayer(o,"vetorial-linhas","Polilinhas"),(o==="polilinha"||o==="perimetro")&&(n.context.pontos=i,n.context.segmentos=[],n.canvasInteracao.ctx.pontosList=i);const r=a||n.chaveGrupo||n.context.chaveGrupo;n.layerManager.setLayerData(o,{pontos:i,fechar:e!==!1,polilinhaSequencial:!0,chaveGrupo:r}),n.layerManager.setLayerVisibility(o,!0)}function Bi(n,t,e="poligonos"){const o=t||[];n.layerManager.getOrCreateLayer(e,"vetorial-poligonos","Polígonos"),n.layerManager.setLayerData(e,{poligonos:o}),n.layerManager.setLayerVisibility(e,!0)}function Vi(n,t,e){const o=t||[];if(e!=null){const a=e||[];n.context.pontos=a,n.canvasInteracao.ctx.pontosList=a}n.context.segmentos=o,n.layerManager.updateContext({segmentos:o,...e!=null?{pontos:n.context.pontos}:{}})}function Hi(n,t=!1){n.context.pontos=[],n.context.segmentos=[],n.context.confrontantes=[],n.canvasInteracao.ctx.pontosList=[],n.canvasInteracao.limparSelecao();const e={pontos:[],segmentos:[],confrontantes:[]};t||(n.context.bancoPontos=[],e.bancoPontos=[]),n.layerManager.updateContext(e)}function io(n){return n!=null&&!isNaN(Number(n))&&String(n).trim()!==""?Number(n):n}function Gi(n,t){var s,c;const e=n.core.map,o=n.layerManager.getLayerDef(t.layerId),a=t.baseSize||8,i=((s=n.context.graphicScale)==null?void 0:s.markerScaleMultiplier)||1;if(e&&((c=o==null?void 0:o.estilo)==null?void 0:c.scaleMode)==="world"){const l=o.estilo.dimensaoMetros||.25,d=e.getCenter(),h=e.getZoom(),u=40075016686e-3*Math.abs(Math.cos(d.lat*Math.PI/180))/Math.pow(2,h+8),m=l/(u>0?u:1);return Math.max(3,Math.round(m*i))}const r=Te(t.densTotal||0,(e==null?void 0:e.getZoom())??18);return Math.max(r<1?5:4,Math.round(a*i*r))}function ji(n,t,e,o,a){const i=Gi(n,e),r=n.context.config.enableAnimations?"cad-pt-anim":"",s=Pt(e.shapeStyle,i,e.markerBg,r,`map-marker-${e.layerId||"pts"}-${o}`,a,{densidade:Kt(e.densTotal||0)});e.tamanhoPx=i,t.setIcon(b.divIcon({html:s,className:`custom-leaflet-marker ${a?"cad-marker-selected ponto-selecionado":""}`,iconSize:[i+6,i+6]}))}function Ui(n){const t=n.context.selectedPontoIds||[],e=n.canvasInteracao.ctx.selectedVizinhoPontoIds||[],o=new Set([...t.map(String),...e.map(String)]);for(const a of n.getMarkers()){const i=a,r=i.pontoId;if(r==null)continue;const s=o.has(String(r));if(i.isSelected===s)continue;i.isSelected=s,a.setZIndexOffset(s?2e3:0),i.shapeStyle&&i.baseSize&&i.markerBg&&ji(n,a,i,r,s);const c=a.getElement();c&&(s?c.classList.add("cad-marker-selected","ponto-selecionado"):c.classList.remove("cad-marker-selected","ponto-selecionado"))}}class ae{constructor(t){f(this,"core");f(this,"layerManager");f(this,"canvasInteracao");f(this,"context");f(this,"modoCliqueSequencialAtivo",!1);f(this,"chaveGrupo");f(this,"zonaProjecao",22);f(this,"levantamentoId",null);f(this,"customMarkerClickCallback");f(this,"customPopupActionCallback");f(this,"destaqueState",{destaqueMarker:null,destaqueTimeoutId:null});this.core=new yo(this),this.layerManager=new ha(t),this.canvasInteracao=new Ao({mapaController:this,layerManager:this.layerManager}),this.context={pontos:[],segmentos:[],bancoPontos:[],confrontantes:[],zonaProjecao:22,config:this.core.config,graphicScale:{markerScaleMultiplier:1,lineScaleMultiplier:1,scaleModeGlobal:"screen"},onMarkerClick:(e,o)=>{if(this.modoCliqueSequencialAtivo||this.context.modoSequencial)return;const a=io(e);if(this.customMarkerClickCallback)try{this.customMarkerClickCallback(a,o)}catch(i){console.error("Erro no customMarkerClickCallback:",i)}o?this.canvasInteracao.ctx.selectedVizinhoPontoIds=[a]:(this.canvasInteracao.ctx.selectedPontoIds=[a],this.canvasInteracao.ctx.lastSelectedPontoId=a),this.context.selectedPontoIds=[...this.canvasInteracao.ctx.selectedPontoIds],this.atualizarDestaqueMarcadores(),window.dispatchEvent(new CustomEvent("gerencigeo:ponto-selecionado",{detail:{selectedPontoIds:[a],lastSelectedPontoId:a,isVizinho:o}}))},onPopupAcao:(e,o,a)=>{if(this.customPopupActionCallback)try{this.customPopupActionCallback(e,o,a)}catch(i){console.error("Erro no customPopupActionCallback:",i)}}}}init(t,e){const o=this.core.init(t);return o&&(this.layerManager.attachMap(o,this.context),this.canvasInteracao.ativar(this,e)),o}invalidateSize(){try{this.core&&(typeof this.core.invalidateSize=="function"?this.core.invalidateSize():this.core.map&&typeof this.core.map.invalidateSize=="function"&&this.core.map.invalidateSize())}catch{}}setPontos(t){const e=t||[];this.context.pontos=e,this.canvasInteracao.ctx.pontosList=e,this.layerManager.updateContext({pontos:e})}setSegmentos(t){const e=t||[];this.context.segmentos=e,this.layerManager.updateContext({segmentos:e})}setBancoPontos(t){const e=t||[];this.context.bancoPontos=e,this.layerManager.updateContext({bancoPontos:e})}setConfrontantes(t){const e=t||[];this.context.confrontantes=e,this.layerManager.updateContext({confrontantes:e})}plotarPontos(t,e="vertices",o){$i(this,t,e,o)}plotarConexoes(t,e="linhas"){Ni(this,t,e)}plotarPolilinhaSequencial(t,e=!0,o="polilinha",a){Ri(this,t,e,o,a)}plotarPoligonos(t,e="poligonos"){Bi(this,t,e)}limparCamadas(t){this.layerManager.clearLayers(t),(!t||t.length===0)&&this.canvasInteracao.limparSelecao()}obterMarcadores(t){if(t){const e=[],o=this.layerManager.getLayerInstance(t);if(o){const a=i=>{i instanceof b.Marker&&e.push(i)};a(o),typeof o.eachLayer=="function"&&o.eachLayer(a)}return e}return this.getMarkers()}plotPontos(t,e){e&&(this.customMarkerClickCallback=e),this.setPontos(t||[])}plotSegmentos(t,e){Vi(this,t,e)}plotPolilinhaTemporaria(t){const e=t||[];this.context.pontos=e,this.context.segmentos=[],this.canvasInteracao.ctx.pontosList=e,this.layerManager.updateContext({pontos:e,segmentos:[]})}plotPoligonalHomologada(t){const e=t||[];this.setBancoPontos(e),this.layerManager.setLayerVisibility("homologados",!0),this.layerManager.setLayerVisibility("homologados-pontos",!0)}plotPontosVizinhos(t){const e=Ti(t||[],this.context.confrontantes||[]);this.setConfrontantes(e),this.layerManager.setLayerVisibility("vizinhos",!0)}plotPoligonosVizinhos(t){const e=Oi(t||[],this.context.confrontantes||[]);this.setConfrontantes(e),this.layerManager.setLayerVisibility("vizinhos",!0)}clearOverlays(t=!1){Hi(this,t)}setGraphicScale(t){this.layerManager.setGraphicScale(t)}exportState(){return this.layerManager.exportState()}importState(t){this.layerManager.importState(t)}selectPonto(t,e){if(!this.core.map)return;const o=String(t),a=this.getMarkers().find(r=>String(r.pontoId)===o);if(a&&e!==void 0){const r=this.core.map;r.setView(a.getLatLng(),e),ke(r,()=>a.openPopup())}const i=io(t);this.canvasInteracao.ctx.selectedPontoIds=[i],this.canvasInteracao.ctx.lastSelectedPontoId=i,this.context.selectedPontoIds=[i],this.atualizarDestaqueMarcadores()}atualizarDestaqueMarcadores(){Ui(this)}selectSegmento(t){const e=t!=null?String(t):null;(this.context.selectedSegmentoId??null)!==e&&(this.context.selectedSegmentoId=e,this.layerManager.updateContext({selectedSegmentoId:e}))}fitBounds(t,e=[40,40],o=!1){if(!this.core.map)return;const a=qi(t||this.context.pontos||[],this.context.confrontantes,o);if(a){a.single?this.core.map.setView(a.single,18):a.bounds&&(this.core.map.fitBounds(a.bounds,{padding:e}),this.core.map.once("moveend",()=>{this.core.preCarregarTilesRegiao(a.bounds)}));try{this.core.map.invalidateSize()}catch{}}}getMarkers(){return Fi(this.core.map,this.layerManager)}getVizinhosMarkers(){return this.getMarkers().filter(t=>!!t.isVizinho)}get destaqueAtivo(){return this.destaqueState.destaqueMarker!==null}localizarCoordenadasElemento(t){return ua(this,t)}destacarElemento(t,e){_i(this,this.destaqueState,t,e)}limparDestaque(){Ae(this.destaqueState,this.getMap())}destroy(){if(this.limparDestaque(),this.canvasInteracao.desativar(),this.layerManager.destroy(),this.core.destroy(),this.core.map)try{this.core.map.off(),this.core.map.remove()}catch{}finally{this.core.map=null}}getMap(){return this.core.map}}function pa(n,t,e,o){if(!n)return;if(n.querySelectorAll(".layer-item").length===t.length){t.forEach(i=>{var s,c;const r=n.querySelector(`.layer-item[data-layer-id="${i.id}"]`);if(r){const l=r.querySelector(".layer-chk-visibility");l&&l.checked!==i.visivel&&(l.checked=i.visivel);const d=r.querySelector(".layer-opacity-slider"),h=r.querySelector(".opacity-percent-label"),u=Math.round(i.opacidade*100);d&&parseInt(d.value,10)!==u&&(d.value=String(u)),h&&(h.textContent=`${u}%`);const m=r.querySelector(".btn-lock-layer");m&&(m.classList.toggle("active",!!i.bloqueada),m.title=i.bloqueada?"Desbloquear Camada":"Bloquear Camada");const v=r.querySelector(".btn-toggle-scale-mode");v&&((s=i.estilo)!=null&&s.scaleMode)&&(v.textContent=((c=i.estilo)==null?void 0:c.scaleMode)==="world"?"Métrico":"Tela")}});return}n.innerHTML=`
106
- ${t.map(i=>{var r,s;return`
107
- <div class="layer-item" data-layer-id="${i.id}">
105
+ `,iconSize:[52,52],iconAnchor:[26,26]});t.destaqueMarker=b.marker(n,{icon:h,pane:l,interactive:!1,keyboard:!1}),t.destaqueMarker.addTo(a);const p=(v=(g=t.destaqueMarker).getElement)==null?void 0:v.call(g);p&&(p.style.pointerEvents="none"),o!=null&&o.duracaoMs&&o.duracaoMs>0&&(t.destaqueTimeoutId=window.setTimeout(()=>{we(t,a)},o.duracaoMs))}function we(i,t){i.destaqueTimeoutId!==null&&(window.clearTimeout(i.destaqueTimeoutId),i.destaqueTimeoutId=null),i.destaqueMarker&&(t&&t.hasLayer(i.destaqueMarker)?t.removeLayer(i.destaqueMarker):typeof i.destaqueMarker.remove=="function"&&i.destaqueMarker.remove(),i.destaqueMarker=null)}function Ni(i,t){const e=new Map;i.forEach(a=>{const n=a.lat??a.latitude??a.y,r=a.lon??a.lng??a.longitude??a.x,s=E.parseCoordenada(n,r);s&&(a.lat=s.lat,a.lon=s.lon);const c=a.confrontante_id??a.id_confrontante??0;e.has(c)||e.set(c,[]),e.get(c).push(a)});const o=new Map;return t.forEach(a=>{const n=a.id!==void 0&&a.id!==null?a.id:0;o.set(n,{...a,pontos:[]})}),e.forEach((a,n)=>{var r,s;if(o.has(n)){const c=o.get(n);c.pontos=a}else o.set(n,{id:n,nome:((r=a[0])==null?void 0:r.nome_confrontante)||"Confrontante",nome_propriedade:((s=a[0])==null?void 0:s.nome_propriedade)||"",pontos:a})}),Array.from(o.values()).filter(a=>a.pontos&&a.pontos.length>0||!!a.poligono_wkt)}function $i(i,t){const e=new Map;return t.forEach(o=>{o.id!==void 0&&o.id!==null&&o.pontos&&o.pontos.length>0&&e.set(o.id,o.pontos)}),i.map(o=>{const a=o.id!==void 0&&o.id!==null?o.id:void 0;return a!==void 0&&(!o.pontos||o.pontos.length===0)&&e.has(a)?{...o,pontos:e.get(a)}:{...o}})}function Ri(i,t,e=!1){let o=[...i];e&&t&&t.forEach(n=>{n.pontos&&o.push(...n.pontos)});const a=o.map(n=>{const r=n.lat??n.latitude??n.y,s=n.lon??n.lng??n.longitude??n.x,c=E.parseCoordenada(r,s);return c?b.latLng(c.lat,c.lon):null}).filter(n=>n!==null);return a.length===1?{single:a[0]}:a.length>1?{bounds:b.latLngBounds(a)}:null}function Bi(i,t){var n;(n=t==null?void 0:t.flushRender)==null||n.call(t);const e=[],o=new Set,a=r=>{r instanceof b.Marker&&r.pontoId!==void 0&&!o.has(r)&&(o.add(r),e.push(r))};return i&&i.eachLayer(r=>{a(r),typeof r.eachLayer=="function"&&r.eachLayer(a)}),t&&t.getAllLayerInstances().forEach(r=>{a(r),typeof r.eachLayer=="function"&&r.eachLayer(a)}),e}function Vi(i,t,e="vertices",o){const a=t||[];i.layerManager.getOrCreateLayer(e,"vetorial-pontos","Pontos / Vértices"),e==="vertices"&&(i.context.pontos=a,i.canvasInteracao.ctx.pontosList=a,o&&(i.customMarkerClickCallback=n=>{const r=a.find(s=>String(s.id)===String(n))||{id:n,lat:0,lon:0};o(r)})),i.layerManager.setLayerData(e,{pontos:a,onClique:o}),i.layerManager.setLayerVisibility(e,!0)}function Hi(i,t,e="linhas"){const o=t||[];i.layerManager.getOrCreateLayer(e,"vetorial-linhas","Conexões / Linhas"),(e==="linhas"||e==="perimetro")&&(i.context.segmentos=o.map(a=>({ponto_inicio_id:Number(a.origemId)||0,ponto_fim_id:Number(a.destinoId)||0,tipo_limite_sigef:a.tipoLinha==="tracejada"?"LN1":"LA1"}))),i.layerManager.setLayerData(e,{conexoes:o}),i.layerManager.setLayerVisibility(e,!0)}function Gi(i,t,e=!0,o="polilinha",a){const n=t||[];i.layerManager.getOrCreateLayer(o,"vetorial-linhas","Polilinhas"),(o==="polilinha"||o==="perimetro")&&(i.context.pontos=n,i.context.segmentos=[],i.canvasInteracao.ctx.pontosList=n);const r=a||i.chaveGrupo||i.context.chaveGrupo;i.layerManager.setLayerData(o,{pontos:n,fechar:e!==!1,polilinhaSequencial:!0,chaveGrupo:r}),i.layerManager.setLayerVisibility(o,!0)}function ji(i,t,e="poligonos"){const o=t||[];i.layerManager.getOrCreateLayer(e,"vetorial-poligonos","Polígonos"),i.layerManager.setLayerData(e,{poligonos:o}),i.layerManager.setLayerVisibility(e,!0)}function Ui(i,t,e){const o=t||[];if(e!=null){const a=e||[];i.context.pontos=a,i.canvasInteracao.ctx.pontosList=a}i.context.segmentos=o,i.layerManager.updateContext({segmentos:o,...e!=null?{pontos:i.context.pontos}:{}})}function Wi(i,t=!1){i.context.pontos=[],i.context.segmentos=[],i.context.confrontantes=[],i.canvasInteracao.ctx.pontosList=[],i.canvasInteracao.limparSelecao();const e={pontos:[],segmentos:[],confrontantes:[]};t||(i.context.bancoPontos=[],e.bancoPontos=[]),i.layerManager.updateContext(e)}function so(i){return i!=null&&!isNaN(Number(i))&&String(i).trim()!==""?Number(i):i}function Zi(i,t){var s,c;const e=i.core.map,o=i.layerManager.getLayerDef(t.layerId),a=t.baseSize||8,n=((s=i.context.graphicScale)==null?void 0:s.markerScaleMultiplier)||1;if(e&&((c=o==null?void 0:o.estilo)==null?void 0:c.scaleMode)==="world"){const l=o.estilo.dimensaoMetros||.25,d=e.getCenter(),h=e.getZoom(),p=40075016686e-3*Math.abs(Math.cos(d.lat*Math.PI/180))/Math.pow(2,h+8),g=l/(p>0?p:1);return Math.max(3,Math.round(g*n))}const r=qe(t.densTotal||0,(e==null?void 0:e.getZoom())??18);return Math.max(r<1?5:4,Math.round(a*n*r))}function Xi(i,t,e,o,a){const n=Zi(i,e),r=i.context.config.enableAnimations?"cad-pt-anim":"",s=Pt(e.shapeStyle,n,e.markerBg,r,`map-marker-${e.layerId||"pts"}-${o}`,a,{densidade:Qt(e.densTotal||0)});e.tamanhoPx=n,t.setIcon(b.divIcon({html:s,className:`custom-leaflet-marker ${a?"cad-marker-selected ponto-selecionado":""}`,iconSize:[n+6,n+6]}))}function Yi(i){const t=i.context.selectedPontoIds||[],e=i.canvasInteracao.ctx.selectedVizinhoPontoIds||[],o=new Set([...t.map(String),...e.map(String)]);for(const a of i.getMarkers()){const n=a,r=n.pontoId;if(r==null)continue;const s=o.has(String(r));if(n.isSelected===s)continue;n.isSelected=s,a.setZIndexOffset(s?2e3:0),n.shapeStyle&&n.baseSize&&n.markerBg&&Xi(i,a,n,r,s);const c=a.getElement();c&&(s?c.classList.add("cad-marker-selected","ponto-selecionado"):c.classList.remove("cad-marker-selected","ponto-selecionado"))}}class ne{constructor(t){f(this,"core");f(this,"layerManager");f(this,"canvasInteracao");f(this,"context");f(this,"modoCliqueSequencialAtivo",!1);f(this,"chaveGrupo");f(this,"zonaProjecao",22);f(this,"levantamentoId",null);f(this,"customMarkerClickCallback");f(this,"customPopupActionCallback");f(this,"destaqueState",{destaqueMarker:null,destaqueTimeoutId:null});this.core=new Lo(this),this.layerManager=new ma(t),this.canvasInteracao=new ko({mapaController:this,layerManager:this.layerManager}),this.context={pontos:[],segmentos:[],bancoPontos:[],confrontantes:[],zonaProjecao:22,config:this.core.config,graphicScale:{markerScaleMultiplier:1,lineScaleMultiplier:1,scaleModeGlobal:"screen"},onMarkerClick:(e,o)=>{if(this.modoCliqueSequencialAtivo||this.context.modoSequencial)return;const a=so(e);if(this.customMarkerClickCallback)try{this.customMarkerClickCallback(a,o)}catch(n){console.error("Erro no customMarkerClickCallback:",n)}o?this.canvasInteracao.ctx.selectedVizinhoPontoIds=[a]:(this.canvasInteracao.ctx.selectedPontoIds=[a],this.canvasInteracao.ctx.lastSelectedPontoId=a),this.context.selectedPontoIds=[...this.canvasInteracao.ctx.selectedPontoIds],this.atualizarDestaqueMarcadores(),window.dispatchEvent(new CustomEvent("gerencigeo:ponto-selecionado",{detail:{selectedPontoIds:[a],lastSelectedPontoId:a,isVizinho:o}}))},onPopupAcao:(e,o,a)=>{if(this.customPopupActionCallback)try{this.customPopupActionCallback(e,o,a)}catch(n){console.error("Erro no customPopupActionCallback:",n)}}}}init(t,e){const o=this.core.init(t);return o&&(this.layerManager.attachMap(o,this.context),this.canvasInteracao.ativar(this,e)),o}invalidateSize(){try{this.core&&(typeof this.core.invalidateSize=="function"?this.core.invalidateSize():this.core.map&&typeof this.core.map.invalidateSize=="function"&&this.core.map.invalidateSize())}catch{}}setPontos(t){const e=t||[];this.context.pontos=e,this.canvasInteracao.ctx.pontosList=e,this.layerManager.updateContext({pontos:e})}setSegmentos(t){const e=t||[];this.context.segmentos=e,this.layerManager.updateContext({segmentos:e})}setBancoPontos(t){const e=t||[];this.context.bancoPontos=e,this.layerManager.updateContext({bancoPontos:e})}setConfrontantes(t){const e=t||[];this.context.confrontantes=e,this.layerManager.updateContext({confrontantes:e})}plotarPontos(t,e="vertices",o){Vi(this,t,e,o)}plotarConexoes(t,e="linhas"){Hi(this,t,e)}plotarPolilinhaSequencial(t,e=!0,o="polilinha",a){Gi(this,t,e,o,a)}plotarPoligonos(t,e="poligonos"){ji(this,t,e)}limparCamadas(t){this.layerManager.clearLayers(t),(!t||t.length===0)&&this.canvasInteracao.limparSelecao()}obterMarcadores(t){if(t){const e=[],o=this.layerManager.getLayerInstance(t);if(o){const a=n=>{n instanceof b.Marker&&e.push(n)};a(o),typeof o.eachLayer=="function"&&o.eachLayer(a)}return e}return this.getMarkers()}plotPontos(t,e){e&&(this.customMarkerClickCallback=e),this.setPontos(t||[])}plotSegmentos(t,e){Ui(this,t,e)}plotPolilinhaTemporaria(t){const e=t||[];this.context.pontos=e,this.context.segmentos=[],this.canvasInteracao.ctx.pontosList=e,this.layerManager.updateContext({pontos:e,segmentos:[]})}plotPoligonalHomologada(t){const e=t||[];this.setBancoPontos(e),this.layerManager.setLayerVisibility("homologados",!0),this.layerManager.setLayerVisibility("homologados-pontos",!0)}plotPontosVizinhos(t){const e=Ni(t||[],this.context.confrontantes||[]);this.setConfrontantes(e),this.layerManager.setLayerVisibility("vizinhos",!0)}plotPoligonosVizinhos(t){const e=$i(t||[],this.context.confrontantes||[]);this.setConfrontantes(e),this.layerManager.setLayerVisibility("vizinhos",!0)}clearOverlays(t=!1){Wi(this,t)}setGraphicScale(t){this.layerManager.setGraphicScale(t)}exportState(){return this.layerManager.exportState()}importState(t){this.layerManager.importState(t)}selectPonto(t,e){if(!this.core.map)return;const o=String(t),a=this.getMarkers().find(r=>String(r.pontoId)===o);if(a&&e!==void 0){const r=this.core.map;r.setView(a.getLatLng(),e),De(r,()=>a.openPopup())}const n=so(t);this.canvasInteracao.ctx.selectedPontoIds=[n],this.canvasInteracao.ctx.lastSelectedPontoId=n,this.context.selectedPontoIds=[n],this.atualizarDestaqueMarcadores()}atualizarDestaqueMarcadores(){Yi(this)}selectSegmento(t){const e=t!=null?String(t):null;(this.context.selectedSegmentoId??null)!==e&&(this.context.selectedSegmentoId=e,this.layerManager.updateContext({selectedSegmentoId:e}))}fitBounds(t,e=[40,40],o=!1){if(!this.core.map)return;const a=Ri(t||this.context.pontos||[],this.context.confrontantes,o);if(a){a.single?this.core.map.setView(a.single,18):a.bounds&&(this.core.map.fitBounds(a.bounds,{padding:e}),this.core.map.once("moveend",()=>{this.core.preCarregarTilesRegiao(a.bounds)}));try{this.core.map.invalidateSize()}catch{}}}getMarkers(){return Bi(this.core.map,this.layerManager)}getVizinhosMarkers(){return this.getMarkers().filter(t=>!!t.isVizinho)}get destaqueAtivo(){return this.destaqueState.destaqueMarker!==null}localizarCoordenadasElemento(t){return ga(this,t)}destacarElemento(t,e){Fi(this,this.destaqueState,t,e)}limparDestaque(){we(this.destaqueState,this.getMap())}destroy(){if(this.limparDestaque(),this.canvasInteracao.desativar(),this.layerManager.destroy(),this.core.destroy(),this.core.map)try{this.core.map.off(),this.core.map.remove()}catch{}finally{this.core.map=null}}getMap(){return this.core.map}}function va(i,t,e,o){if(!i)return;if(i.querySelectorAll(".layer-item").length===t.length){t.forEach(n=>{var s,c;const r=i.querySelector(`.layer-item[data-layer-id="${n.id}"]`);if(r){const l=r.querySelector(".layer-chk-visibility");l&&l.checked!==n.visivel&&(l.checked=n.visivel);const d=r.querySelector(".layer-opacity-slider"),h=r.querySelector(".opacity-percent-label"),p=Math.round(n.opacidade*100);d&&parseInt(d.value,10)!==p&&(d.value=String(p)),h&&(h.textContent=`${p}%`);const g=r.querySelector(".btn-lock-layer");g&&(g.classList.toggle("active",!!n.bloqueada),g.title=n.bloqueada?"Desbloquear Camada":"Bloquear Camada");const v=r.querySelector(".btn-toggle-scale-mode");v&&((s=n.estilo)!=null&&s.scaleMode)&&(v.textContent=((c=n.estilo)==null?void 0:c.scaleMode)==="world"?"Métrico":"Tela")}});return}i.innerHTML=`
106
+ ${t.map(n=>{var r,s;return`
107
+ <div class="layer-item" data-layer-id="${n.id}">
108
108
  <div class="layer-item-row">
109
109
  <label class="layer-item-label">
110
- <input type="checkbox" class="layer-chk-visibility" data-layer-id="${i.id}" ${i.visivel?"checked":""} />
111
- <span>${i.nome}</span>
110
+ <input type="checkbox" class="layer-chk-visibility" data-layer-id="${n.id}" ${n.visivel?"checked":""} />
111
+ <span>${n.nome}</span>
112
112
  </label>
113
113
  <div class="layer-item-actions">
114
- <button class="btn-layer-action btn-lock-layer ${i.bloqueada?"active":""}" data-layer-id="${i.id}" type="button" title="${i.bloqueada?"Desbloquear Camada":"Bloquear Camada"}">
115
- ${i.bloqueada?'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>':'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></svg>'}
114
+ <button class="btn-layer-action btn-lock-layer ${n.bloqueada?"active":""}" data-layer-id="${n.id}" type="button" title="${n.bloqueada?"Desbloquear Camada":"Bloquear Camada"}">
115
+ ${n.bloqueada?'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>':'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 9.9-1"/></svg>'}
116
116
  </button>
117
- ${(r=i.estilo)!=null&&r.scaleMode?`
118
- <span class="scale-mode-pill btn-toggle-scale-mode" data-layer-id="${i.id}" title="Alternar modo de escala">
119
- ${((s=i.estilo)==null?void 0:s.scaleMode)==="world"?"Métrico":"Tela"}
117
+ ${(r=n.estilo)!=null&&r.scaleMode?`
118
+ <span class="scale-mode-pill btn-toggle-scale-mode" data-layer-id="${n.id}" title="Alternar modo de escala">
119
+ ${((s=n.estilo)==null?void 0:s.scaleMode)==="world"?"Métrico":"Tela"}
120
120
  </span>
121
121
  `:""}
122
122
  </div>
123
123
  </div>
124
124
  <div class="layer-controls-row">
125
125
  <span>Opacidade</span>
126
- <input type="range" min="0" max="100" value="${Math.round(i.opacidade*100)}" class="layer-opacity-slider" data-layer-id="${i.id}" />
127
- <span class="opacity-percent-label" style="font-family:var(--ui-fonte-codigo, monospace); font-size:9px; width:28px; text-align:right;">${Math.round(i.opacidade*100)}%</span>
126
+ <input type="range" min="0" max="100" value="${Math.round(n.opacidade*100)}" class="layer-opacity-slider" data-layer-id="${n.id}" />
127
+ <span class="opacity-percent-label" style="font-family:var(--ui-fonte-codigo, monospace); font-size:9px; width:28px; text-align:right;">${Math.round(n.opacidade*100)}%</span>
128
128
  </div>
129
129
  </div>
130
130
  `}).join("")}
131
- `,e.cleanup(),n.querySelectorAll(".layer-chk-visibility").forEach(i=>{e.add(i,"change",r=>{const s=r.target.getAttribute("data-layer-id"),c=r.target.checked;s&&o.setLayerVisibility(s,c)})}),n.querySelectorAll(".layer-opacity-slider").forEach(i=>{e.add(i,"input",r=>{const s=r.target.getAttribute("data-layer-id"),c=parseInt(r.target.value,10),l=c/100,d=r.target.closest(".layer-item"),h=d==null?void 0:d.querySelector(".opacity-percent-label");h&&(h.textContent=`${c}%`),s&&o.setLayerOpacity(s,l)})}),n.querySelectorAll(".btn-lock-layer").forEach(i=>{e.add(i,"click",r=>{const s=r.currentTarget.getAttribute("data-layer-id");if(s){const c=t.find(l=>l.id===s);c&&o.setLayerBlocked(s,!c.bloqueada)}})}),n.querySelectorAll(".btn-toggle-scale-mode").forEach(i=>{e.add(i,"click",r=>{var c;const s=r.currentTarget.getAttribute("data-layer-id");if(s){const l=t.find(d=>d.id===s);if(l){const d=((c=l.estilo)==null?void 0:c.scaleMode)==="world"?"screen":"world";o.setLayerScaleMode(s,d)}}})})}function Wi(n){return n.context.selectedPontoIds||n.canvasInteracao.ctx.selectedPontoIds||[]}function fa(n,t){n.canvasInteracao.ctx.selectedPontoIds=[...t],n.context.selectedPontoIds=[...t]}function Be(n){const t=n;return(t==null?void 0:t.originalEvent)||t||{}}function Zi(n){const t=n,e=Be(n),o=typeof e.composedPath=="function"?e.composedPath():[];return o.length>0?o[0]:e.target||(t==null?void 0:t.target)||null}function Xi(n,t,e){var i,r,s,c;if(t)return{x:Math.round(t.x),y:Math.round(t.y)};const o=n;if(o!=null&&o.containerPoint||o!=null&&o.layerPoint)return{x:Math.round(((i=o.containerPoint)==null?void 0:i.x)??((r=o.layerPoint)==null?void 0:r.x)??0),y:Math.round(((s=o.containerPoint)==null?void 0:s.y)??((c=o.layerPoint)==null?void 0:c.y)??0)};const a=Be(n);return{x:Math.round((a.clientX??0)-e.left),y:Math.round((a.clientY??0)-e.top)}}function Yi(n,t){const e=t||(n==null?void 0:n.latlng);return e&&typeof e.lat=="number"?{lat:e.lat,lng:e.lng??e.lon??0}:null}function ma(n,t,e,o){var v,p;if(n.modoSequencial||n.controller.canvasInteracao.selectionHappened||n.controller.canvasInteracao.panHappened||n.mouseMovedSinceDown)return!1;const a=Be(t),i=Zi(t);if(i){const y='.custom-leaflet-marker, .leaflet-marker-icon, .leaflet-interactive, .compact-popup, .leaflet-popup, .ui-popup-btn, .cad-btn-tool, .qgis-layer-panel, [class*="leaflet-marker"], [class*="leaflet-popup"]';if(((v=i.matches)==null?void 0:v.call(i,y))||((p=i.closest)==null?void 0:p.call(i,y)))return!1}const r=n.controller.getMap();if(!r||!n.mapContainer)return!1;const s=Xi(t,o,n.mapContainer.getBoundingClientRect()),l=Yi(t,e)??r.containerPointToLatLng(b.point(s.x,s.y)),d=l.lat,h=l.lng,u=n.controller.layerManager?n.controller.layerManager.getLayers().filter(y=>y.visivel).map(y=>y.id):[],m=a;return n.host.dispatchEvent(new CustomEvent("ui-canvas-clique",{detail:{coordenadas:{lat:d,lng:h},pontoPixel:s,eventoOriginal:m,lat:d,lon:h,lng:h,camadasAtivas:u},bubbles:!0,composed:!0})),!0}function ga(n,t,e,o){const a=o||n.obterElementoPorId(e);n.host.dispatchEvent(new CustomEvent("ui-acao-popup",{detail:{acaoId:t,elementoId:e,elemento:a??{id:e}},bubbles:!0,composed:!0})),n.fecharPopup()}function va(n,t,e,o,a,i,r){let s=o||n.obterElementoPorId(t),c=a;if(!c&&s){const l=s,d=l.lat??l.latitude??0,h=l.lon??l.lng??l.longitude??0;c={lat:Number(d),lon:Number(h)}}if(c||(c={lat:0,lon:0}),n.modoSequencial){n.fecharPopup(),n.host.dispatchEvent(new CustomEvent("ui-clique-sequencial",{detail:{id:t,elemento:s??{id:t,lat:c.lat,lon:c.lon},coordenadas:c},bubbles:!0,composed:!0}));return}if(r)try{const l=t!=null&&!isNaN(Number(t))&&String(t).trim()!==""?Number(t):t;r(l,e)}catch(l){console.error("Erro no callback de clique de marcador:",l)}if(i)try{i(t,e,s,c)}catch(l){console.error("Erro no handler anterior de marker click:",l)}n.controller.context.selectedSegmentoId&&n.controller.selectSegmento(null),n.host.dispatchEvent(new CustomEvent("ui-ponto-selecionado",{detail:{selectedIds:[t],lastSelectedId:t,isVizinho:e},bubbles:!0,composed:!0})),n.host.dispatchEvent(new CustomEvent("ui-elemento-selecionado",{detail:{id:t,elemento:s,tipo:e?"vizinho":"vertice",coordenadas:c},bubbles:!0,composed:!0}))}function ya(n,t,e,o,a){if(n.modoSequencial){n.fecharPopup();return}if(n.controller.canvasInteracao.ctx.selectedPontoIds=[],n.controller.canvasInteracao.ctx.selectedVizinhoPontoIds=[],n.controller.canvasInteracao.ctx.lastSelectedPontoId=null,fa(n.controller,[]),n.controller.atualizarDestaqueMarcadores(),n.controller.selectSegmento(t),a)try{a(t,e)}catch(i){console.error("Erro no callback de clique de segmento:",i)}n.host.dispatchEvent(new CustomEvent("ui-segmento-selecionado",{detail:{segmentoId:t,segmento:e,pontoInicioId:e==null?void 0:e.ponto_inicio_id,pontoFimId:e==null?void 0:e.ponto_fim_id,coordenadas:o},bubbles:!0,composed:!0})),n.host.dispatchEvent(new CustomEvent("ui-elemento-selecionado",{detail:{id:t,elemento:e,tipo:"segmento",coordenadas:o},bubbles:!0,composed:!0}))}function ba(n,t){let e=null,o=null,a=0,i=0;function r(){var d;try{if(!n.isConnected)return;const h=t.getMap();if(!h)return;const u=(d=h.getContainer)==null?void 0:d.call(h);if(!u||!u.parentNode)return;t.invalidateSize()}catch{}}function s(d=25){o!==null&&(window.clearTimeout(o),o=null),o=window.setTimeout(()=>{o=null,r()},d)}function c(){l(),!(typeof ResizeObserver>"u")&&(e=new ResizeObserver(d=>{for(const h of d){let u=0,m=0;h.contentRect?(u=h.contentRect.width,m=h.contentRect.height):h.borderBoxSize&&h.borderBoxSize.length>0?(u=h.borderBoxSize[0].inlineSize,m=h.borderBoxSize[0].blockSize):(u=n.clientWidth||n.offsetWidth,m=n.clientHeight||n.offsetHeight),u>0&&m>0&&(Math.abs(u-a)>=.5||Math.abs(m-i)>=.5)&&(a=u,i=m,s(25))}}),e.observe(n))}function l(){e&&(e.disconnect(),e=null),o!==null&&(window.clearTimeout(o),o=null)}return{observe:c,disconnect:l,invalidateSizeSafely:r}}class Ki{constructor(t){f(this,"canal",null);f(this,"contexto");this.contexto=t}conectar(t){this.desconectar();const e=t!==void 0?t:this.contexto.host.getAttribute("canal-configuracao");if(!(!e||typeof BroadcastChannel>"u"))try{this.canal=new BroadcastChannel(e),this.canal.onmessage=o=>{this.processarMensagem(o.data)}}catch(o){console.warn(`[ui-canvas-cad] Erro ao conectar ao BroadcastChannel "${e}":`,o)}}processarMensagem(t){if(!t||typeof t!="object")return;const e=t,o=e.tipo||"ESTILOS_ALTERADOS",a=e.configuracoes||e;if(a.crosshair!==void 0){const i=!!a.crosshair;this.contexto.mapContainer&&(this.contexto.mapContainer.style.cursor=i?"crosshair":"");const r=this.contexto.controller.getMap();if(r){const s=r.getContainer();s&&(s.style.cursor=i?"crosshair":"")}this.contexto.controller.core.config.crosshair=i}if(a.opacidadeBase!==void 0){const i=parseFloat(a.opacidadeBase);isNaN(i)||this.contexto.setLayerOpacity("satelite",i)}if(a.satOpacity!==void 0){const i=parseFloat(a.satOpacity);isNaN(i)||this.contexto.setLayerOpacity("satelite",i)}a.opacidades&&typeof a.opacidades=="object"&&Object.entries(a.opacidades).forEach(([i,r])=>{const s=parseFloat(String(r));isNaN(s)||this.contexto.setLayerOpacity(i,s)}),this.contexto.host.dispatchEvent(new CustomEvent("ui-config-aplicada",{detail:{tipo:o,configuracoes:a},bubbles:!0,composed:!0}))}desconectar(){if(this.canal){try{this.canal.close()}catch{}this.canal=null}}}class Ji{constructor(t){f(this,"contexto");f(this,"uiListeners",new Ut.ListenerBag);f(this,"isLayersPanelOpen",!1);f(this,"mouseMovedSinceDown",!1);f(this,"mouseDownPos",{x:0,y:0});this.contexto=t}get estaPainelAberto(){return this.isLayersPanelOpen}get houveMovimentoMouse(){return this.mouseMovedSinceDown}toggleLayersPanel(){this.isLayersPanelOpen=!this.isLayersPanelOpen,this.contexto.layersPanel&&(this.isLayersPanelOpen?this.contexto.layersPanel.classList.remove("collapsed"):this.contexto.layersPanel.classList.add("collapsed"));const t=this.contexto.shadow.getElementById("btn-toggle-layers");t==null||t.classList.toggle("active",this.isLayersPanelOpen)}closeLayersPanel(){var e;this.isLayersPanelOpen=!1,(e=this.contexto.layersPanel)==null||e.classList.add("collapsed");const t=this.contexto.shadow.getElementById("btn-toggle-layers");t==null||t.classList.remove("active")}vincularEventos(){this.uiListeners.cleanup();const t=this.contexto.shadow.getElementById("btn-toggle-layers"),e=this.contexto.shadow.getElementById("btn-close-layers"),o=this.contexto.shadow.getElementById("btn-zoom-extents"),a=this.contexto.shadow.getElementById("btn-clear-selection"),i=this.contexto.shadow.getElementById("btn-toggle-snap");this.uiListeners.add(t,"click",()=>{this.contexto.onToggleCamadas?this.contexto.onToggleCamadas():this.toggleLayersPanel()}),this.uiListeners.add(e,"click",()=>{this.contexto.onCloseCamadas?this.contexto.onCloseCamadas():this.closeLayersPanel()}),this.uiListeners.add(o,"click",()=>{var r,s;(s=(r=this.contexto).onZoomExtents)==null||s.call(r)}),this.uiListeners.add(a,"click",()=>{var r,s;(s=(r=this.contexto).onLimparSelecao)==null||s.call(r)}),this.uiListeners.add(i,"click",()=>{var r,s;(s=(r=this.contexto).onToggleSnap)==null||s.call(r)}),this.contexto.mapContainer&&(this.uiListeners.add(this.contexto.mapContainer,"mousedown",r=>{r.button===0&&(this.mouseDownPos={x:r.clientX,y:r.clientY},this.mouseMovedSinceDown=!1)}),this.uiListeners.add(this.contexto.mapContainer,"mousemove",r=>{Math.hypot(r.clientX-this.mouseDownPos.x,r.clientY-this.mouseDownPos.y)>=4&&(this.mouseMovedSinceDown=!0)}),this.uiListeners.add(this.contexto.mapContainer,"click",r=>{var s,c;r.button===0&&(this.mouseMovedSinceDown||(c=(s=this.contexto).onTratarCliqueCanvas)==null||c.call(s,r))})),this.uiListeners.add(this.contexto.shadow,"click",r=>{var l,d,h;const s=r.composedPath?r.composedPath()[0]:r.target,c=(l=s==null?void 0:s.closest)==null?void 0:l.call(s,".ui-popup-btn");if(c){r.preventDefault(),r.stopPropagation();const u=c.getAttribute("data-acao-id"),m=c.getAttribute("data-elemento-id");u&&m!==null&&((h=(d=this.contexto).onDispararAcaoPopup)==null||h.call(d,u,m))}})}limpar(){this.uiListeners.cleanup()}}class Qi{constructor(t){f(this,"contexto");f(this,"_pontos",[]);f(this,"_segmentos",[]);f(this,"_bancoPontos",[]);f(this,"_confrontantes",[]);f(this,"customMarkerClickHandler");this.contexto=t}get pontos(){return this._pontos}set pontos(t){this._pontos=t||[],this.contexto.obterController().setPontos(this._pontos)}get segmentos(){return this._segmentos}set segmentos(t){this._segmentos=t||[],this.contexto.obterController().setSegmentos(this._segmentos)}get bancoPontos(){return this._bancoPontos}set bancoPontos(t){this._bancoPontos=t||[],this.contexto.obterController().setBancoPontos(this._bancoPontos)}get confrontantes(){return this._confrontantes}set confrontantes(t){this._confrontantes=t||[],this.contexto.obterController().setConfrontantes(this._confrontantes)}sincronizarInicial(){const t=this.contexto.obterController();this._pontos.length>0&&t.setPontos(this._pontos),this._segmentos.length>0&&t.setSegmentos(this._segmentos),this._bancoPontos.length>0&&t.setBancoPontos(this._bancoPontos),this._confrontantes.length>0&&t.setConfrontantes(this._confrontantes)}obterElementoPorId(t){return this._pontos.find(e=>String(e.id)===String(t))||this._bancoPontos.find(e=>String(e.id)===String(t))||this._confrontantes.find(e=>String(e.id)===String(t))}plotarPontos(t,e="vertices",o){const a=t||[];e==="vertices"&&(this._pontos=a),this.contexto.obterController().plotarPontos(a,e,o)}plotarConexoes(t,e="linhas"){const o=t||[];this.contexto.obterController().plotarConexoes(o,e)}plotarPolilinhaSequencial(t,e=!0,o="polilinha",a){const i=t||[];(o==="polilinha"||o==="perimetro")&&(this._pontos=i,this._segmentos=[]);const r=a??this.contexto.obterChaveGrupo();this.contexto.obterController().plotarPolilinhaSequencial(i,e,o,r)}plotarPoligonos(t,e="poligonos"){const o=t||[];this.contexto.obterController().plotarPoligonos(o,e)}limparCamadas(t){!t||t.length===0?(this._pontos=[],this._segmentos=[],this._confrontantes=[]):(t.includes("vertices")&&(this._pontos=[]),(t.includes("linhas")||t.includes("perimetro")||t.includes("polilinha"))&&(this._segmentos=[]),(t.includes("poligonos")||t.includes("vizinhos"))&&(this._confrontantes=[])),this.contexto.obterController().limparCamadas(t)}obterMarcadores(t){return this.contexto.obterController().obterMarcadores(t)}plotPontos(t,e){e&&(this.customMarkerClickHandler=e);const o=t||[];this._pontos=o,this.contexto.obterController().plotPontos(o,e)}plotSegmentos(t,e){const o=t||[];e!=null&&(this._pontos=e||[]),this._segmentos=o,this.contexto.obterController().plotSegmentos(o,e)}plotPolilinhaTemporaria(t){const e=t||[];this._pontos=e,this._segmentos=[],this.contexto.obterController().plotPolilinhaTemporaria(e)}plotPoligonalHomologada(t){const e=t||[];this._bancoPontos=e,this.contexto.obterController().plotPoligonalHomologada(e),this.contexto.setLayerVisibility("homologados",!0),this.contexto.setLayerVisibility("homologados-pontos",!0)}plotPontosVizinhos(t){const e=t||[],o=this.contexto.obterController();o.plotPontosVizinhos(e),this._confrontantes=o.context.confrontantes||[]}plotPoligonosVizinhos(t){const e=t||[],o=this.contexto.obterController();o.plotPoligonosVizinhos(e),this._confrontantes=o.context.confrontantes||[]}clearOverlays(t=!1){this._pontos=[],this._segmentos=[],this._confrontantes=[],t||(this._bancoPontos=[]),this.contexto.obterController().clearOverlays(t)}getMarkers(){return this.contexto.obterController().getMarkers()}getVizinhosMarkers(){return this.contexto.obterController().getVizinhosMarkers()}}const tn=':host{display:block;width:100%;height:520px;position:relative;border-radius:var(--ui-raio-lg, 10px);overflow:hidden;box-shadow:0 10px 30px -5px #0009;border:1px solid rgba(255,255,255,.1);background:#080d0a;color:#fff;font-family:var(--ui-fonte-base, "Inter", sans-serif);user-select:none;-webkit-user-select:none}*,*:before,*:after{box-sizing:border-box}.cad-root{position:relative;width:100%;height:100%;display:flex;overflow:hidden}.cad-map-container{width:100%;height:100%;background:#080d0a;z-index:1}.qgis-layer-panel{position:absolute;top:12px;left:12px;z-index:var(--ui-z-workspace-hud, 500);width:290px;max-height:calc(100% - 24px);background:#0a120eeb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.15);border-radius:8px;box-shadow:0 20px 40px #000000b3;display:flex;flex-direction:column;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .25s ease;overflow:hidden}.qgis-layer-panel.collapsed{transform:translate(-310px);opacity:0;pointer-events:none}.layer-panel-header{padding:10px 14px;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between}.layer-panel-title{font-size:12px;font-weight:700;letter-spacing:.5px;color:#00f5a0;display:flex;align-items:center;gap:6px;text-transform:uppercase}.layer-panel-close{background:transparent;border:none;color:#ffffff80;cursor:pointer;padding:2px;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;transition:all .15s}.layer-panel-close:hover{color:#fff;background:#ffffff1a}.layer-panel-body{padding:8px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;max-height:400px}.layer-panel-body::-webkit-scrollbar{width:5px}.layer-panel-body::-webkit-scrollbar-track{background:transparent}.layer-panel-body::-webkit-scrollbar-thumb{background:#fff3;border-radius:var(--ui-raio-sm, 4px)}.layer-panel-body::-webkit-scrollbar-thumb:hover{background:#00f5a066}.layer-item{background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.08);border-radius:0;padding:4px;display:flex;flex-direction:column;gap:3px;transition:background .15s ease}.layer-item:last-child{border-bottom:none}.layer-item:hover{background:#ffffff08;border-radius:var(--ui-raio-sm, 4px)}.layer-item-row{display:flex;align-items:center;justify-content:space-between;min-height:18px}.layer-item-label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;line-height:1.2;color:#ffffffe6;cursor:pointer;-webkit-user-select:none;user-select:none}.layer-chk-visibility{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:14px;height:14px;border:1px solid rgba(255,255,255,.4);border-radius:3px;background:#0006;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;position:relative;transition:all .15s ease;flex-shrink:0;margin:0}.layer-chk-visibility:hover{border-color:#00f5a0}.layer-chk-visibility:checked{background:#00f5a0;border-color:#00f5a0}.layer-chk-visibility:checked:after{content:"";width:3.5px;height:7px;border:solid #04150c;border-width:0 1.5px 1.5px 0;transform:rotate(45deg) translateY(-.5px);display:block}.layer-item-actions{display:flex;align-items:center;gap:4px}.btn-layer-action{background:transparent;border:none;color:#fff6;cursor:pointer;padding:2px;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-layer-action:hover{color:#00f5a0;background:#ffffff14}.btn-layer-action.active{color:#f43f5e;background:#f43f5e26}.layer-controls-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:9.5px;line-height:1;color:#ffffff80;padding-left:21px}.layer-opacity-slider{flex:1;height:3px;margin:0;border-radius:2px;background:#ffffff26;accent-color:#00f5a0;cursor:pointer}.scale-mode-pill{font-size:8.5px;font-weight:600;padding:1px 6px;border-radius:6px;background:#ffffff0f;color:#ffffffb3;cursor:pointer;border:1px solid rgba(255,255,255,.1);transition:all .15s;line-height:1.2}.scale-mode-pill:hover{border-color:#00f5a0;color:#00f5a0;background:#00f5a01a}:host([sem-painel-camadas]) .qgis-layer-panel,:host([sem-painel-camadas]) #btn-toggle-layers,:host([sem-barra-rapida]) .cad-quick-toolbar{display:none!important}.cad-quick-toolbar{position:absolute;top:12px;right:12px;z-index:var(--ui-z-workspace-hud, 500);display:flex;flex-direction:column;gap:6px;background:#0c1510eb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:5px;box-shadow:0 10px 25px -5px #0009}.cad-btn-tool{background:transparent;border:none;color:#fff9;cursor:pointer;padding:7px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:all .15s}.cad-btn-tool:hover{background:#ffffff1a;color:#fff}.cad-btn-tool.active{background:#00f5a026;color:#00f5a0;border:1px solid rgba(0,245,160,.3)}.cad-selection-box{pointer-events:none;box-sizing:border-box}.custom-leaflet-marker{cursor:pointer}.custom-leaflet-marker:hover{z-index:1800!important}.custom-leaflet-marker .cad-pt svg{transition:transform .12s ease-out}.custom-leaflet-marker:hover .cad-pt svg{transform:scale(1.3)}.leaflet-popup-content-wrapper{background:#0f1712!important;color:#f8fafc!important;border:1px solid rgba(255,255,255,.15)!important;border-radius:8px!important;box-shadow:0 10px 25px #0009!important;padding:0!important;backdrop-filter:blur(16px)!important;-webkit-backdrop-filter:blur(16px)!important}.leaflet-popup-tip{background:#0f1712!important;border:1px solid rgba(255,255,255,.15)!important;box-shadow:none!important}.leaflet-popup-close-button{color:#fff9!important;padding:6px!important;transition:color .15s ease}.leaflet-popup-close-button:hover{color:#fff!important}.leaflet-popup-content{margin:12px 14px!important;line-height:1.4;font-family:inherit;color:#f8fafc}.compact-popup .leaflet-popup-content{margin:10px 12px!important}.ui-popup-actions-footer{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.1);justify-content:flex-end;align-items:center;flex-wrap:wrap}.ui-popup-btn{display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:11px;font-weight:500;padding:4px 9px;border-radius:var(--ui-raio-borda, 6px);cursor:pointer;transition:all .15s ease;border:1px solid transparent;outline:none;line-height:1.25;-webkit-user-select:none;user-select:none}.ui-popup-btn-primary{background:var(--ui-cor-primaria, #00f5a0);color:#080d0a;font-weight:600;border-color:var(--ui-cor-primaria, #00f5a0)}.ui-popup-btn-primary:hover{filter:brightness(1.1);box-shadow:0 0 10px #00f5a059}.ui-popup-btn-secondary{background:#ffffff14;color:#fff;border-color:#ffffff2e}.ui-popup-btn-secondary:hover{background:#ffffff29;border-color:#ffffff4d}.ui-popup-btn-destrutivo{background:#ef444426;color:#f87171;border-color:#ef444459}.ui-popup-btn-destrutivo:hover{background:#ef444440;border-color:#ef444499;color:#fff}@media (max-width: 520px){.qgis-layer-panel{top:8px;left:8px;right:8px;width:auto;max-height:calc(100% - 16px)}.qgis-layer-panel.collapsed{transform:translateY(-115%)}.layer-panel-close{min-width:36px;min-height:36px;font-size:16px}.layer-action-btn{min-width:32px;min-height:32px}}.cad-destaque-marker-container{pointer-events:none!important;background:transparent!important;border:none!important;overflow:visible!important}.cad-destaque-marker-container *{pointer-events:none!important}.cad-pulse-highlight{position:relative;width:52px;height:52px;display:flex;align-items:center;justify-content:center;pointer-events:none!important;user-select:none;-webkit-user-select:none}.cad-pulse-core{position:absolute;width:12px;height:12px;border-radius:50%;background-color:var(--cad-pulse-cor, #00f5a0);border:2px solid #ffffff;box-sizing:border-box;pointer-events:none!important}.cad-pulse-ring{position:absolute;width:100%;height:100%;border-radius:50%;border:2px solid var(--cad-pulse-cor, #00f5a0);background-color:color-mix(in srgb,var(--cad-pulse-cor, #00f5a0) 14%,transparent);box-sizing:border-box;pointer-events:none!important;opacity:0;animation:cad-pulse-ping 1.8s cubic-bezier(0,0,.2,1) infinite}.cad-pulse-ring.ring-2{animation-delay:.9s}@keyframes cad-pulse-ping{0%{transform:scale(.3);opacity:.9}70%{opacity:.35}to{transform:scale(1);opacity:0}}@media (prefers-reduced-motion: reduce){.cad-pulse-ring{animation:none;opacity:.6;transform:scale(.6)}}.cad-marker-selected,.ponto-selecionado{z-index:2000!important}@media (prefers-reduced-motion: reduce){.custom-leaflet-marker .cad-pt svg{transition:none}}.ui-popup-actions-footer{margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.12);display:flex;gap:6px;flex-wrap:wrap}.ui-popup-btn{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;font-size:11px;font-weight:600;border-radius:var(--ui-raio-sm, 4px);border:1px solid rgba(255,255,255,.15);background:#ffffff14;color:#fff;cursor:pointer;line-height:1.2;transition:all .15s ease;-webkit-user-select:none;user-select:none}.ui-popup-btn:hover{background:#ffffff2e;border-color:#ffffff4d}.ui-popup-btn-primary{background:#00f5a0;color:#06130b;border-color:#00f5a0}.ui-popup-btn-primary:hover{background:#10ffad;box-shadow:0 0 8px #00f5a066}.ui-popup-btn-danger{background:#f43f5e33;color:#f43f5e;border-color:#f43f5e66}.ui-popup-btn-danger:hover{background:#f43f5e59;color:#fff}.cad-draw-toolbar{right:auto;left:12px;max-height:calc(100% - 24px);overflow-y:auto}.cad-draw-btn{font:600 11px var(--ui-fonte-base, sans-serif);padding:5px 9px;white-space:nowrap;justify-content:flex-start}.cad-ferramenta-ativa .leaflet-marker-icon{pointer-events:none!important}.cad-aviso{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:calc(var(--ui-z-workspace-hud, 500) + 1);box-sizing:border-box;max-width:min(calc(100% - 200px),460px);padding:8px 14px;border-radius:var(--ui-raio-borda, 6px);border:1px solid var(--ui-cor-aviso, #f59e0b);background:#0c1510f2;color:var(--ui-cor-texto, #ffffff);font:600 12px var(--ui-fonte-base, sans-serif);line-height:1.35;box-shadow:0 10px 25px -5px #0009;pointer-events:none}.cad-aviso[hidden]{display:none}.cad-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}';function en(){return`
131
+ `,e.cleanup(),i.querySelectorAll(".layer-chk-visibility").forEach(n=>{e.add(n,"change",r=>{const s=r.target.getAttribute("data-layer-id"),c=r.target.checked;s&&o.setLayerVisibility(s,c)})}),i.querySelectorAll(".layer-opacity-slider").forEach(n=>{e.add(n,"input",r=>{const s=r.target.getAttribute("data-layer-id"),c=parseInt(r.target.value,10),l=c/100,d=r.target.closest(".layer-item"),h=d==null?void 0:d.querySelector(".opacity-percent-label");h&&(h.textContent=`${c}%`),s&&o.setLayerOpacity(s,l)})}),i.querySelectorAll(".btn-lock-layer").forEach(n=>{e.add(n,"click",r=>{const s=r.currentTarget.getAttribute("data-layer-id");if(s){const c=t.find(l=>l.id===s);c&&o.setLayerBlocked(s,!c.bloqueada)}})}),i.querySelectorAll(".btn-toggle-scale-mode").forEach(n=>{e.add(n,"click",r=>{var c;const s=r.currentTarget.getAttribute("data-layer-id");if(s){const l=t.find(d=>d.id===s);if(l){const d=((c=l.estilo)==null?void 0:c.scaleMode)==="world"?"screen":"world";o.setLayerScaleMode(s,d)}}})})}function Ki(i){return i.context.selectedPontoIds||i.canvasInteracao.ctx.selectedPontoIds||[]}function ya(i,t){i.canvasInteracao.ctx.selectedPontoIds=[...t],i.context.selectedPontoIds=[...t]}function He(i){const t=i;return(t==null?void 0:t.originalEvent)||t||{}}function Ji(i){const t=i,e=He(i),o=typeof e.composedPath=="function"?e.composedPath():[];return o.length>0?o[0]:e.target||(t==null?void 0:t.target)||null}function Qi(i,t,e){var n,r,s,c;if(t)return{x:Math.round(t.x),y:Math.round(t.y)};const o=i;if(o!=null&&o.containerPoint||o!=null&&o.layerPoint)return{x:Math.round(((n=o.containerPoint)==null?void 0:n.x)??((r=o.layerPoint)==null?void 0:r.x)??0),y:Math.round(((s=o.containerPoint)==null?void 0:s.y)??((c=o.layerPoint)==null?void 0:c.y)??0)};const a=He(i);return{x:Math.round((a.clientX??0)-e.left),y:Math.round((a.clientY??0)-e.top)}}function tn(i,t){const e=t||(i==null?void 0:i.latlng);return e&&typeof e.lat=="number"?{lat:e.lat,lng:e.lng??e.lon??0}:null}function ba(i,t,e,o){var v,u;if(i.modoSequencial||i.controller.canvasInteracao.selectionHappened||i.controller.canvasInteracao.panHappened||i.mouseMovedSinceDown)return!1;const a=He(t),n=Ji(t);if(n){const y='.custom-leaflet-marker, .leaflet-marker-icon, .leaflet-interactive, .compact-popup, .leaflet-popup, .ui-popup-btn, .cad-btn-tool, .qgis-layer-panel, [class*="leaflet-marker"], [class*="leaflet-popup"]';if(((v=n.matches)==null?void 0:v.call(n,y))||((u=n.closest)==null?void 0:u.call(n,y)))return!1}const r=i.controller.getMap();if(!r||!i.mapContainer)return!1;const s=Qi(t,o,i.mapContainer.getBoundingClientRect()),l=tn(t,e)??r.containerPointToLatLng(b.point(s.x,s.y)),d=l.lat,h=l.lng,p=i.controller.layerManager?i.controller.layerManager.getLayers().filter(y=>y.visivel).map(y=>y.id):[],g=a;return i.host.dispatchEvent(new CustomEvent("ui-canvas-clique",{detail:{coordenadas:{lat:d,lng:h},pontoPixel:s,eventoOriginal:g,lat:d,lon:h,lng:h,camadasAtivas:p},bubbles:!0,composed:!0})),!0}function xa(i,t,e,o){const a=o||i.obterElementoPorId(e);i.host.dispatchEvent(new CustomEvent("ui-acao-popup",{detail:{acaoId:t,elementoId:e,elemento:a??{id:e}},bubbles:!0,composed:!0})),i.fecharPopup()}function Pa(i,t,e,o,a,n,r){let s=o||i.obterElementoPorId(t),c=a;if(!c&&s){const l=s,d=l.lat??l.latitude??0,h=l.lon??l.lng??l.longitude??0;c={lat:Number(d),lon:Number(h)}}if(c||(c={lat:0,lon:0}),i.modoSequencial){i.fecharPopup(),i.host.dispatchEvent(new CustomEvent("ui-clique-sequencial",{detail:{id:t,elemento:s??{id:t,lat:c.lat,lon:c.lon},coordenadas:c},bubbles:!0,composed:!0}));return}if(r)try{const l=t!=null&&!isNaN(Number(t))&&String(t).trim()!==""?Number(t):t;r(l,e)}catch(l){console.error("Erro no callback de clique de marcador:",l)}if(n)try{n(t,e,s,c)}catch(l){console.error("Erro no handler anterior de marker click:",l)}i.controller.context.selectedSegmentoId&&i.controller.selectSegmento(null),i.host.dispatchEvent(new CustomEvent("ui-ponto-selecionado",{detail:{selectedIds:[t],lastSelectedId:t,isVizinho:e},bubbles:!0,composed:!0})),i.host.dispatchEvent(new CustomEvent("ui-elemento-selecionado",{detail:{id:t,elemento:s,tipo:e?"vizinho":"vertice",coordenadas:c},bubbles:!0,composed:!0}))}function La(i,t,e,o,a){if(i.modoSequencial){i.fecharPopup();return}if(i.controller.canvasInteracao.ctx.selectedPontoIds=[],i.controller.canvasInteracao.ctx.selectedVizinhoPontoIds=[],i.controller.canvasInteracao.ctx.lastSelectedPontoId=null,ya(i.controller,[]),i.controller.atualizarDestaqueMarcadores(),i.controller.selectSegmento(t),a)try{a(t,e)}catch(n){console.error("Erro no callback de clique de segmento:",n)}i.host.dispatchEvent(new CustomEvent("ui-segmento-selecionado",{detail:{segmentoId:t,segmento:e,pontoInicioId:e==null?void 0:e.ponto_inicio_id,pontoFimId:e==null?void 0:e.ponto_fim_id,coordenadas:o},bubbles:!0,composed:!0})),i.host.dispatchEvent(new CustomEvent("ui-elemento-selecionado",{detail:{id:t,elemento:e,tipo:"segmento",coordenadas:o},bubbles:!0,composed:!0}))}function Ca(i,t){let e=null,o=null,a=0,n=0;function r(){var d;try{if(!i.isConnected)return;const h=t.getMap();if(!h)return;const p=(d=h.getContainer)==null?void 0:d.call(h);if(!p||!p.parentNode)return;t.invalidateSize()}catch{}}function s(d=25){o!==null&&(window.clearTimeout(o),o=null),o=window.setTimeout(()=>{o=null,r()},d)}function c(){l(),!(typeof ResizeObserver>"u")&&(e=new ResizeObserver(d=>{for(const h of d){let p=0,g=0;h.contentRect?(p=h.contentRect.width,g=h.contentRect.height):h.borderBoxSize&&h.borderBoxSize.length>0?(p=h.borderBoxSize[0].inlineSize,g=h.borderBoxSize[0].blockSize):(p=i.clientWidth||i.offsetWidth,g=i.clientHeight||i.offsetHeight),p>0&&g>0&&(Math.abs(p-a)>=.5||Math.abs(g-n)>=.5)&&(a=p,n=g,s(25))}}),e.observe(i))}function l(){e&&(e.disconnect(),e=null),o!==null&&(window.clearTimeout(o),o=null)}return{observe:c,disconnect:l,invalidateSizeSafely:r}}class en{constructor(t){f(this,"canal",null);f(this,"contexto");this.contexto=t}conectar(t){this.desconectar();const e=t!==void 0?t:this.contexto.host.getAttribute("canal-configuracao");if(!(!e||typeof BroadcastChannel>"u"))try{this.canal=new BroadcastChannel(e),this.canal.onmessage=o=>{this.processarMensagem(o.data)}}catch(o){console.warn(`[ui-canvas-cad] Erro ao conectar ao BroadcastChannel "${e}":`,o)}}processarMensagem(t){if(!t||typeof t!="object")return;const e=t,o=e.tipo||"ESTILOS_ALTERADOS",a=e.configuracoes||e;if(a.crosshair!==void 0){const n=!!a.crosshair;this.contexto.mapContainer&&(this.contexto.mapContainer.style.cursor=n?"crosshair":"");const r=this.contexto.controller.getMap();if(r){const s=r.getContainer();s&&(s.style.cursor=n?"crosshair":"")}this.contexto.controller.core.config.crosshair=n}if(a.opacidadeBase!==void 0){const n=parseFloat(a.opacidadeBase);isNaN(n)||this.contexto.setLayerOpacity("satelite",n)}if(a.satOpacity!==void 0){const n=parseFloat(a.satOpacity);isNaN(n)||this.contexto.setLayerOpacity("satelite",n)}a.opacidades&&typeof a.opacidades=="object"&&Object.entries(a.opacidades).forEach(([n,r])=>{const s=parseFloat(String(r));isNaN(s)||this.contexto.setLayerOpacity(n,s)}),this.contexto.host.dispatchEvent(new CustomEvent("ui-config-aplicada",{detail:{tipo:o,configuracoes:a},bubbles:!0,composed:!0}))}desconectar(){if(this.canal){try{this.canal.close()}catch{}this.canal=null}}}class on{constructor(t){f(this,"contexto");f(this,"uiListeners",new Zt.ListenerBag);f(this,"isLayersPanelOpen",!1);f(this,"mouseMovedSinceDown",!1);f(this,"mouseDownPos",{x:0,y:0});this.contexto=t}get estaPainelAberto(){return this.isLayersPanelOpen}get houveMovimentoMouse(){return this.mouseMovedSinceDown}toggleLayersPanel(){this.isLayersPanelOpen=!this.isLayersPanelOpen,this.contexto.layersPanel&&(this.isLayersPanelOpen?this.contexto.layersPanel.classList.remove("collapsed"):this.contexto.layersPanel.classList.add("collapsed"));const t=this.contexto.shadow.getElementById("btn-toggle-layers");t==null||t.classList.toggle("active",this.isLayersPanelOpen)}closeLayersPanel(){var e;this.isLayersPanelOpen=!1,(e=this.contexto.layersPanel)==null||e.classList.add("collapsed");const t=this.contexto.shadow.getElementById("btn-toggle-layers");t==null||t.classList.remove("active")}vincularEventos(){this.uiListeners.cleanup();const t=this.contexto.shadow.getElementById("btn-toggle-layers"),e=this.contexto.shadow.getElementById("btn-close-layers"),o=this.contexto.shadow.getElementById("btn-zoom-extents"),a=this.contexto.shadow.getElementById("btn-clear-selection"),n=this.contexto.shadow.getElementById("btn-toggle-snap");this.uiListeners.add(t,"click",()=>{this.contexto.onToggleCamadas?this.contexto.onToggleCamadas():this.toggleLayersPanel()}),this.uiListeners.add(e,"click",()=>{this.contexto.onCloseCamadas?this.contexto.onCloseCamadas():this.closeLayersPanel()}),this.uiListeners.add(o,"click",()=>{var r,s;(s=(r=this.contexto).onZoomExtents)==null||s.call(r)}),this.uiListeners.add(a,"click",()=>{var r,s;(s=(r=this.contexto).onLimparSelecao)==null||s.call(r)}),this.uiListeners.add(n,"click",()=>{var r,s;(s=(r=this.contexto).onToggleSnap)==null||s.call(r)}),this.contexto.mapContainer&&(this.uiListeners.add(this.contexto.mapContainer,"mousedown",r=>{r.button===0&&(this.mouseDownPos={x:r.clientX,y:r.clientY},this.mouseMovedSinceDown=!1)}),this.uiListeners.add(this.contexto.mapContainer,"mousemove",r=>{Math.hypot(r.clientX-this.mouseDownPos.x,r.clientY-this.mouseDownPos.y)>=4&&(this.mouseMovedSinceDown=!0)}),this.uiListeners.add(this.contexto.mapContainer,"click",r=>{var s,c;r.button===0&&(this.mouseMovedSinceDown||(c=(s=this.contexto).onTratarCliqueCanvas)==null||c.call(s,r))})),this.uiListeners.add(this.contexto.shadow,"click",r=>{var l,d,h;const s=r.composedPath?r.composedPath()[0]:r.target,c=(l=s==null?void 0:s.closest)==null?void 0:l.call(s,".ui-popup-btn");if(c){r.preventDefault(),r.stopPropagation();const p=c.getAttribute("data-acao-id"),g=c.getAttribute("data-elemento-id");p&&g!==null&&((h=(d=this.contexto).onDispararAcaoPopup)==null||h.call(d,p,g))}})}limpar(){this.uiListeners.cleanup()}}class an{constructor(t){f(this,"contexto");f(this,"_pontos",[]);f(this,"_segmentos",[]);f(this,"_bancoPontos",[]);f(this,"_confrontantes",[]);f(this,"customMarkerClickHandler");this.contexto=t}get pontos(){return this._pontos}set pontos(t){this._pontos=t||[],this.contexto.obterController().setPontos(this._pontos)}get segmentos(){return this._segmentos}set segmentos(t){this._segmentos=t||[],this.contexto.obterController().setSegmentos(this._segmentos)}get bancoPontos(){return this._bancoPontos}set bancoPontos(t){this._bancoPontos=t||[],this.contexto.obterController().setBancoPontos(this._bancoPontos)}get confrontantes(){return this._confrontantes}set confrontantes(t){this._confrontantes=t||[],this.contexto.obterController().setConfrontantes(this._confrontantes)}sincronizarInicial(){const t=this.contexto.obterController();this._pontos.length>0&&t.setPontos(this._pontos),this._segmentos.length>0&&t.setSegmentos(this._segmentos),this._bancoPontos.length>0&&t.setBancoPontos(this._bancoPontos),this._confrontantes.length>0&&t.setConfrontantes(this._confrontantes)}obterElementoPorId(t){return this._pontos.find(e=>String(e.id)===String(t))||this._bancoPontos.find(e=>String(e.id)===String(t))||this._confrontantes.find(e=>String(e.id)===String(t))}plotarPontos(t,e="vertices",o){const a=t||[];e==="vertices"&&(this._pontos=a),this.contexto.obterController().plotarPontos(a,e,o)}plotarConexoes(t,e="linhas"){const o=t||[];this.contexto.obterController().plotarConexoes(o,e)}plotarPolilinhaSequencial(t,e=!0,o="polilinha",a){const n=t||[];(o==="polilinha"||o==="perimetro")&&(this._pontos=n,this._segmentos=[]);const r=a??this.contexto.obterChaveGrupo();this.contexto.obterController().plotarPolilinhaSequencial(n,e,o,r)}plotarPoligonos(t,e="poligonos"){const o=t||[];this.contexto.obterController().plotarPoligonos(o,e)}limparCamadas(t){!t||t.length===0?(this._pontos=[],this._segmentos=[],this._confrontantes=[]):(t.includes("vertices")&&(this._pontos=[]),(t.includes("linhas")||t.includes("perimetro")||t.includes("polilinha"))&&(this._segmentos=[]),(t.includes("poligonos")||t.includes("vizinhos"))&&(this._confrontantes=[])),this.contexto.obterController().limparCamadas(t)}obterMarcadores(t){return this.contexto.obterController().obterMarcadores(t)}plotPontos(t,e){e&&(this.customMarkerClickHandler=e);const o=t||[];this._pontos=o,this.contexto.obterController().plotPontos(o,e)}plotSegmentos(t,e){const o=t||[];e!=null&&(this._pontos=e||[]),this._segmentos=o,this.contexto.obterController().plotSegmentos(o,e)}plotPolilinhaTemporaria(t){const e=t||[];this._pontos=e,this._segmentos=[],this.contexto.obterController().plotPolilinhaTemporaria(e)}plotPoligonalHomologada(t){const e=t||[];this._bancoPontos=e,this.contexto.obterController().plotPoligonalHomologada(e),this.contexto.setLayerVisibility("homologados",!0),this.contexto.setLayerVisibility("homologados-pontos",!0)}plotPontosVizinhos(t){const e=t||[],o=this.contexto.obterController();o.plotPontosVizinhos(e),this._confrontantes=o.context.confrontantes||[]}plotPoligonosVizinhos(t){const e=t||[],o=this.contexto.obterController();o.plotPoligonosVizinhos(e),this._confrontantes=o.context.confrontantes||[]}clearOverlays(t=!1){this._pontos=[],this._segmentos=[],this._confrontantes=[],t||(this._bancoPontos=[]),this.contexto.obterController().clearOverlays(t)}getMarkers(){return this.contexto.obterController().getMarkers()}getVizinhosMarkers(){return this.contexto.obterController().getVizinhosMarkers()}}const nn=':host{display:block;width:100%;height:520px;position:relative;border-radius:var(--ui-raio-lg, 10px);overflow:hidden;box-shadow:0 10px 30px -5px #0009;border:1px solid rgba(255,255,255,.1);background:#080d0a;color:#fff;font-family:var(--ui-fonte-base, "Inter", sans-serif);user-select:none;-webkit-user-select:none}*,*:before,*:after{box-sizing:border-box}.cad-root{position:relative;width:100%;height:100%;display:flex;overflow:hidden}.cad-map-container{width:100%;height:100%;background:#080d0a;z-index:1}.qgis-layer-panel{position:absolute;top:12px;left:12px;z-index:var(--ui-z-workspace-hud, 500);width:290px;max-height:calc(100% - 24px);background:#0a120eeb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.15);border-radius:8px;box-shadow:0 20px 40px #000000b3;display:flex;flex-direction:column;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .25s ease;overflow:hidden}.qgis-layer-panel.collapsed{transform:translate(-310px);opacity:0;pointer-events:none}.layer-panel-header{padding:10px 14px;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between}.layer-panel-title{font-size:12px;font-weight:700;letter-spacing:.5px;color:#00f5a0;display:flex;align-items:center;gap:6px;text-transform:uppercase}.layer-panel-close{background:transparent;border:none;color:#ffffff80;cursor:pointer;padding:2px;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;transition:all .15s}.layer-panel-close:hover{color:#fff;background:#ffffff1a}.layer-panel-body{padding:8px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;max-height:400px}.layer-panel-body::-webkit-scrollbar{width:5px}.layer-panel-body::-webkit-scrollbar-track{background:transparent}.layer-panel-body::-webkit-scrollbar-thumb{background:#fff3;border-radius:var(--ui-raio-sm, 4px)}.layer-panel-body::-webkit-scrollbar-thumb:hover{background:#00f5a066}.layer-item{background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.08);border-radius:0;padding:4px;display:flex;flex-direction:column;gap:3px;transition:background .15s ease}.layer-item:last-child{border-bottom:none}.layer-item:hover{background:#ffffff08;border-radius:var(--ui-raio-sm, 4px)}.layer-item-row{display:flex;align-items:center;justify-content:space-between;min-height:18px}.layer-item-label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;line-height:1.2;color:#ffffffe6;cursor:pointer;-webkit-user-select:none;user-select:none}.layer-chk-visibility{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:14px;height:14px;border:1px solid rgba(255,255,255,.4);border-radius:3px;background:#0006;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;position:relative;transition:all .15s ease;flex-shrink:0;margin:0}.layer-chk-visibility:hover{border-color:#00f5a0}.layer-chk-visibility:checked{background:#00f5a0;border-color:#00f5a0}.layer-chk-visibility:checked:after{content:"";width:3.5px;height:7px;border:solid #04150c;border-width:0 1.5px 1.5px 0;transform:rotate(45deg) translateY(-.5px);display:block}.layer-item-actions{display:flex;align-items:center;gap:4px}.btn-layer-action{background:transparent;border:none;color:#fff6;cursor:pointer;padding:2px;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-layer-action:hover{color:#00f5a0;background:#ffffff14}.btn-layer-action.active{color:#f43f5e;background:#f43f5e26}.layer-controls-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:9.5px;line-height:1;color:#ffffff80;padding-left:21px}.layer-opacity-slider{flex:1;height:3px;margin:0;border-radius:2px;background:#ffffff26;accent-color:#00f5a0;cursor:pointer}.scale-mode-pill{font-size:8.5px;font-weight:600;padding:1px 6px;border-radius:6px;background:#ffffff0f;color:#ffffffb3;cursor:pointer;border:1px solid rgba(255,255,255,.1);transition:all .15s;line-height:1.2}.scale-mode-pill:hover{border-color:#00f5a0;color:#00f5a0;background:#00f5a01a}:host([sem-painel-camadas]) .qgis-layer-panel,:host([sem-painel-camadas]) #btn-toggle-layers,:host([sem-barra-rapida]) .cad-quick-toolbar{display:none!important}.cad-quick-toolbar{position:absolute;top:12px;right:12px;z-index:var(--ui-z-workspace-hud, 500);display:flex;flex-direction:column;gap:6px;background:#0c1510eb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:5px;box-shadow:0 10px 25px -5px #0009}.cad-btn-tool{background:transparent;border:none;color:#fff9;cursor:pointer;padding:7px;border-radius:5px;display:flex;align-items:center;justify-content:center;transition:all .15s}.cad-btn-tool:hover{background:#ffffff1a;color:#fff}.cad-btn-tool.active{background:#00f5a026;color:#00f5a0;border:1px solid rgba(0,245,160,.3)}.cad-selection-box{pointer-events:none;box-sizing:border-box}.custom-leaflet-marker{cursor:pointer}.custom-leaflet-marker:hover{z-index:1800!important}.custom-leaflet-marker .cad-pt svg{transition:transform .12s ease-out}.custom-leaflet-marker:hover .cad-pt svg{transform:scale(1.3)}.leaflet-popup-content-wrapper{background:#0f1712!important;color:#f8fafc!important;border:1px solid rgba(255,255,255,.15)!important;border-radius:8px!important;box-shadow:0 10px 25px #0009!important;padding:0!important;backdrop-filter:blur(16px)!important;-webkit-backdrop-filter:blur(16px)!important}.leaflet-popup-tip{background:#0f1712!important;border:1px solid rgba(255,255,255,.15)!important;box-shadow:none!important}.leaflet-popup-close-button{color:#fff9!important;padding:6px!important;transition:color .15s ease}.leaflet-popup-close-button:hover{color:#fff!important}.leaflet-popup-content{margin:12px 14px!important;line-height:1.4;font-family:inherit;color:#f8fafc}.compact-popup .leaflet-popup-content{margin:10px 12px!important}.ui-popup-actions-footer{display:flex;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.1);justify-content:flex-end;align-items:center;flex-wrap:wrap}.ui-popup-btn{display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:11px;font-weight:500;padding:4px 9px;border-radius:var(--ui-raio-borda, 6px);cursor:pointer;transition:all .15s ease;border:1px solid transparent;outline:none;line-height:1.25;-webkit-user-select:none;user-select:none}.ui-popup-btn-primary{background:var(--ui-cor-primaria, #00f5a0);color:#080d0a;font-weight:600;border-color:var(--ui-cor-primaria, #00f5a0)}.ui-popup-btn-primary:hover{filter:brightness(1.1);box-shadow:0 0 10px #00f5a059}.ui-popup-btn-secondary{background:#ffffff14;color:#fff;border-color:#ffffff2e}.ui-popup-btn-secondary:hover{background:#ffffff29;border-color:#ffffff4d}.ui-popup-btn-destrutivo{background:#ef444426;color:#f87171;border-color:#ef444459}.ui-popup-btn-destrutivo:hover{background:#ef444440;border-color:#ef444499;color:#fff}@media (max-width: 520px){.qgis-layer-panel{top:8px;left:8px;right:8px;width:auto;max-height:calc(100% - 16px)}.qgis-layer-panel.collapsed{transform:translateY(-115%)}.layer-panel-close{min-width:36px;min-height:36px;font-size:16px}.layer-action-btn{min-width:32px;min-height:32px}}.cad-destaque-marker-container{pointer-events:none!important;background:transparent!important;border:none!important;overflow:visible!important}.cad-destaque-marker-container *{pointer-events:none!important}.cad-pulse-highlight{position:relative;width:52px;height:52px;display:flex;align-items:center;justify-content:center;pointer-events:none!important;user-select:none;-webkit-user-select:none}.cad-pulse-core{position:absolute;width:12px;height:12px;border-radius:50%;background-color:var(--cad-pulse-cor, #00f5a0);border:2px solid #ffffff;box-sizing:border-box;pointer-events:none!important}.cad-pulse-ring{position:absolute;width:100%;height:100%;border-radius:50%;border:2px solid var(--cad-pulse-cor, #00f5a0);background-color:color-mix(in srgb,var(--cad-pulse-cor, #00f5a0) 14%,transparent);box-sizing:border-box;pointer-events:none!important;opacity:0;animation:cad-pulse-ping 1.8s cubic-bezier(0,0,.2,1) infinite}.cad-pulse-ring.ring-2{animation-delay:.9s}@keyframes cad-pulse-ping{0%{transform:scale(.3);opacity:.9}70%{opacity:.35}to{transform:scale(1);opacity:0}}@media (prefers-reduced-motion: reduce){.cad-pulse-ring{animation:none;opacity:.6;transform:scale(.6)}}.cad-marker-selected,.ponto-selecionado{z-index:2000!important}@media (prefers-reduced-motion: reduce){.custom-leaflet-marker .cad-pt svg{transition:none}}.ui-popup-actions-footer{margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.12);display:flex;gap:6px;flex-wrap:wrap}.ui-popup-btn{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;font-size:11px;font-weight:600;border-radius:var(--ui-raio-sm, 4px);border:1px solid rgba(255,255,255,.15);background:#ffffff14;color:#fff;cursor:pointer;line-height:1.2;transition:all .15s ease;-webkit-user-select:none;user-select:none}.ui-popup-btn:hover{background:#ffffff2e;border-color:#ffffff4d}.ui-popup-btn-primary{background:#00f5a0;color:#06130b;border-color:#00f5a0}.ui-popup-btn-primary:hover{background:#10ffad;box-shadow:0 0 8px #00f5a066}.ui-popup-btn-danger{background:#f43f5e33;color:#f43f5e;border-color:#f43f5e66}.ui-popup-btn-danger:hover{background:#f43f5e59;color:#fff}.cad-draw-toolbar{right:auto;left:12px;max-height:calc(100% - 24px);overflow-y:auto}.cad-draw-btn{font:600 11px var(--ui-fonte-base, sans-serif);padding:5px 9px;white-space:nowrap;justify-content:flex-start}.cad-ferramenta-ativa .leaflet-marker-icon{pointer-events:none!important}.cad-aviso{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:calc(var(--ui-z-workspace-hud, 500) + 1);box-sizing:border-box;max-width:min(calc(100% - 200px),460px);padding:8px 14px;border-radius:var(--ui-raio-borda, 6px);border:1px solid var(--ui-cor-aviso, #f59e0b);background:#0c1510f2;color:var(--ui-cor-texto, #ffffff);font:600 12px var(--ui-fonte-base, sans-serif);line-height:1.35;box-shadow:0 10px 25px -5px #0009;pointer-events:none}.cad-aviso[hidden]{display:none}.cad-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}';function rn(){return`
132
132
  <style>
133
133
  ${E.leafletCss}
134
- ${tn}
134
+ ${nn}
135
135
  </style>
136
136
  <div class="cad-root" id="cad-root" role="region" aria-label="Mapa CAD">
137
137
  <div class="cad-map-container" id="cad-map-container"></div>
@@ -164,14 +164,14 @@
164
164
  </button>
165
165
  </div>
166
166
  </div>
167
- `}function on(n,t,e,o){if(e!==o){if(t==="sat-opacity"){const a=parseFloat(o);isNaN(a)||n.setLayerOpacity("satelite",a)}else if(t==="scale-mode")(o==="world"||o==="screen")&&(n.setLayerScaleMode("perimetro",o),n.setLayerScaleMode("vertices",o));else if(t==="modo-sequencial")n.host.modoSequencial=o!==null&&o!=="false";else if(t==="chave-grupo")n.host.chaveGrupo=o||void 0;else if(t==="zona-projecao"||t==="fuso"){const a=parseInt(o,10);!isNaN(a)&&a>0&&(n.atualizarZonaProjecao(a),t==="fuso"&&n.host.getAttribute("zona-projecao")!==o?n.host.setAttribute("zona-projecao",o):t==="zona-projecao"&&n.host.hasAttribute("fuso")&&n.host.getAttribute("fuso")!==o&&n.host.setAttribute("fuso",o),n.controller.zonaProjecao=a,n.controller.context.zonaProjecao=a)}else if(t==="canal-configuracao")n.broadcastConfig.conectar(o);else if(t==="crosshair"){const a=o!==null&&o!=="false";n.mapContainer&&(n.mapContainer.style.cursor=a?"crosshair":"");const i=n.controller.getMap();if(i){const r=i.getContainer();r&&(r.style.cursor=a?"crosshair":"")}n.controller.core.config.crosshair=a}}}function xa(n){const t=n;if(!t||!t._leaflet_id)return!1;try{delete t._leaflet_id}catch{t._leaflet_id=void 0}return!0}function an(n){if(!n.mapContainer)return;if(n.controller.getMap()||xa(n.mapContainer),n.controller.init(n.mapContainer,n.shadow),n.toolbarPainel.vincularEventos(),n.renderLayersUI(),n.host.hasAttribute("modo-sequencial")&&(n.controller.modoCliqueSequencialAtivo=!0,n.controller.context.modoSequencial=!0),n.host.hasAttribute("chave-grupo")){const o=n.host.getAttribute("chave-grupo");o&&(n.host.chaveGrupo=o)}if(n.host.hasAttribute("zona-projecao")||n.host.hasAttribute("fuso")){const o=n.host.zonaProjecao;n.controller.zonaProjecao=o,n.controller.context.zonaProjecao=o}if(n.host.hasAttribute("crosshair")){const o=n.host.getAttribute("crosshair")!=="false";n.mapContainer&&(n.mapContainer.style.cursor=o?"crosshair":""),n.controller.core.config.crosshair=o}n.colecoesDados.sincronizarInicial(),n.controller.layerManager.onChange(o=>{n.renderLayersUI(),n.host.dispatchEvent(new CustomEvent("ui-camadas-alteradas",{detail:{layers:o},bubbles:!0,composed:!0}))});const t=n.controller.context.onMarkerClick;n.controller.context.onMarkerClick=(o,a,i,r)=>{va(n.obterContextoEventos(),o,a,i,r,t,n.colecoesDados.customMarkerClickHandler)},n.controller.context.onSegmentoClick=(o,a,i)=>{ya(n.obterContextoEventos(),o,a,i)},n.controller.context.onPopupAcao=(o,a,i)=>{n.dispararAcaoPopup(o,a,i)};const e=n.controller.getMap();e&&e.on("click",o=>{n.toolbarPainel.houveMovimentoMouse||n.tratarCliqueLivreCanvas(o,o.latlng,o.containerPoint)}),setTimeout(()=>{n.invalidateSizeSafely()},150)}const nn={"sem-camada":"Escolha uma camada de desenho antes de usar esta ferramenta.","camada-invalida":"A camada de desenho não é uma camada de feições.","camada-bloqueada":"A camada de desenho está bloqueada.","geometria-invalida":"Não foi possível criar a figura: a geometria é inválida."},rn={bloqueada:"Esta feição (ou a camada dela) está bloqueada e não pode ser editada.","poligono-com-furos":"Polígono com furos não pode ser editado no mapa.",multiparte:"Feição com várias partes não pode ser editada no mapa.","muitos-vertices":"A feição tem vértices demais para editar no mapa.","tipo-nao-suportado":"Este tipo de feição não tem vértices para editar.",inexistente:"A feição não existe mais.","sem-selecao":"Selecione uma feição para editar os vértices."};function Pa(n,t,e){return typeof t=="string"&&Object.prototype.hasOwnProperty.call(n,t)?n[t]:e}function sn(n){return Pa(nn,n,"Não foi possível ativar a ferramenta de desenho.")}function cn(n){return Pa(rn,n,"Não foi possível editar os vértices desta feição.")}function ln(n){n.querySelectorAll(".cad-quick-toolbar .cad-btn-tool, .layer-panel-close").forEach(t=>{const e=t.getAttribute("title");e&&!t.hasAttribute("aria-label")&&t.setAttribute("aria-label",e)})}function no(n,t){const e=n.getElementById("btn-toggle-snap");e==null||e.classList.toggle("active",t),e==null||e.setAttribute("aria-pressed",String(t))}function dn(n){return n<=0?"Nenhuma feição selecionada":n===1?"1 feição selecionada":`${n} feições selecionadas`}function hn(n){return n?`Ferramenta ${n} ativa`:"Ferramenta desativada"}function he(n,t){const e=n.getElementById("cad-status");e&&e.textContent!==t&&(e.textContent=t)}const un=5e3;function pn(n,t,e){const o=n.getElementById("cad-aviso");return o?(e!==void 0&&window.clearTimeout(e),o.textContent=t,o.hidden=!1,window.setTimeout(()=>{o.hidden=!0,o.textContent=""},un)):e}function fn(n,t){let e;const o=c=>l=>{var h;if(n.hasAttribute("sem-avisos"))return;const d=c((h=l.detail)==null?void 0:h.motivo);he(t,d),e=pn(t,d,e)},a=o(sn),i=o(cn),r=c=>{var d;const l=(d=c.detail)==null?void 0:d.feicoes;he(t,dn(Array.isArray(l)?l.length:0))},s=c=>{var d;const l=((d=c.detail)==null?void 0:d.ferramenta)??null;he(t,hn(l))};return n.addEventListener("cad-selecao",r),n.addEventListener("cad-ferramenta",s),n.addEventListener("cad-desenho-recusado",a),n.addEventListener("cad-edicao-recusada",i),()=>{n.removeEventListener("cad-selecao",r),n.removeEventListener("cad-ferramenta",s),n.removeEventListener("cad-desenho-recusado",a),n.removeEventListener("cad-edicao-recusada",i),e!==void 0&&window.clearTimeout(e),e=void 0;const c=t.getElementById("cad-aviso");c&&(c.hidden=!0,c.textContent="")}}function W(n,t){let e,o;if(Array.isArray(n))[e,o]=n;else if(n&&typeof n=="object"){const i=n;e=i.lat??i.latitude,o=i.lng??i.lon??i.longitude}else return null;const a=E.parseCoordenada(e,o,t);return!a||!Number.isFinite(a.lat)||!Number.isFinite(a.lon)?null:[a.lat,a.lon]}function mn(n,t){return n[0]===t[0]&&n[1]===t[1]}function Ve(n,t){const e=n.map(o=>W(o,t)).filter(o=>o!==null);return e.length>1&&mn(e[0],e[e.length-1])&&e.pop(),e.length>=3?e:null}function Ee(n,t){const e=n.map(o=>W(o,t)).filter(o=>o!==null);return e.length>=2?e:null}function Ca(n,t){if(!Array.isArray(n)||n.length===0)return null;const o=(Array.isArray(n[0])&&Array.isArray(n[0][0])?n:[n]).map(a=>Ve(a,t));return o.some(a=>a===null)?null:o}function gn(n,t){const e=E.parseCoordenada(n.lat,n.lon);return e?{id:String(n.id),camadaId:t,geometria:{tipo:"Point",coordenada:[e.lat,e.lon]},propriedades:{...n}}:null}function vn(n,t,e){const o=t.get(String(n.ponto_inicio_id)),a=t.get(String(n.ponto_fim_id));if(!o||!a)return null;const i=E.parseCoordenada(o.lat,o.lon),r=E.parseCoordenada(a.lat,a.lon);if(!i||!r)return null;const s=(n.tipo_limite_sigef??n.tipo_limite)==="LN1";return{id:String(n.id??`${n.ponto_inicio_id}-${n.ponto_fim_id}`),camadaId:e,geometria:{tipo:"LineString",coordenadas:[[i.lat,i.lon],[r.lat,r.lon]]},estilo:s?{dashArray:"6, 6"}:void 0,propriedades:{...n}}}function yn(n,t){if(!n.poligono_wkt)return null;const e=/POLYGON\s*\(\s*\(\s*(.*?)\s*\)\s*\)/i.exec(n.poligono_wkt);if(!e)return null;const o=e[1].split(",").map(i=>{const[r,s]=i.trim().split(/\s+/);return[s,r]}),a=Ve(o);return a?{id:String(n.id??n.nome??""),camadaId:t,geometria:{tipo:"Polygon",aneis:[a]},propriedades:{nome:n.nome,nome_propriedade:n.nome_propriedade}}:null}function ro(n,t){const e=g.normalizarNos(n);if(!e)return null;const o=[];for(const a of e){const i=W(a.ponto,t);if(!i)return null;const r={ponto:i},s=a.entrada&&W(a.entrada,{...t,aceitarOrigem:!0}),c=a.saida&&W(a.saida,{...t,aceitarOrigem:!0});s&&(r.entrada=s),c&&(r.saida=c),o.push(r)}return o}const bn=new Set(["Point","LineString","Polygon","Circle","Text"]);function Vt(n,t,e){if(!n||typeof n!="object")return null;const o=n,a=o.geometria;if(!a||!bn.has(a.tipo)||o.id===void 0||o.id===null||o.id==="")return null;let i=null;switch(a.tipo){case"Point":{const s=W(a.coordenada,e);s&&(i={tipo:"Point",coordenada:s});break}case"Text":{const s=W(a.coordenada,e);s&&typeof a.texto=="string"&&a.texto&&(i={tipo:"Text",coordenada:s,texto:a.texto});break}case"LineString":{const s=Array.isArray(a.partes)?a.partes.map(l=>Array.isArray(l)?Ee(l,e):null).filter(l=>l!==null):[];if(s.length>0)i=g.criarLinha(s);else{const l=Array.isArray(a.coordenadas)?Ee(a.coordenadas,e):null;l&&(i=g.criarLinha([l]))}const c=s.length<=1?ro(a.curva,e):null;i&&i.tipo==="LineString"&&c&&c.length>=2&&(i={tipo:"LineString",coordenadas:g.amostrarCurva(c,!1),curva:c});break}case"Polygon":{const s=Array.isArray(a.aneis)?Ca(a.aneis,e):null;s&&(i={tipo:"Polygon",aneis:s});const c=s&&s.length===1?ro(a.curva,e):null;i&&c&&c.length>=3&&(i={tipo:"Polygon",aneis:[g.amostrarCurva(c,!0)],curva:c});break}case"Circle":{const s=W(a.centro,e),c=Number(a.raioMetros);s&&Number.isFinite(c)&&c>0&&(i={tipo:"Circle",centro:s,raioMetros:c});break}}if(!i)return null;const r={id:String(o.id),camadaId:t,geometria:i,estilo:o.estilo&&typeof o.estilo=="object"?{...o.estilo}:void 0,propriedades:o.propriedades&&typeof o.propriedades=="object"?{...o.propriedades}:{},bloqueada:!!o.bloqueada,status:"oficial",excluida:!!o.excluida};return o.oculta&&(r.oculta=!0),(typeof o.entidadeId=="string"||typeof o.entidadeId=="number")&&(r.entidadeId=String(o.entidadeId)),r.status=g.statusDe({...r,status:o.status}),r}const ue="cad-cursores",xn=/^#[0-9a-f]{3,8}$/i,Pn="#94a3b8";function te(n){return typeof n=="string"&&xn.test(n.trim())?n.trim():Pn}const Cn='<svg width="18" height="18" viewBox="0 0 24 24" style="display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))"><path d="M3 2 L3 19 L8 14.5 L11.5 22 L14.5 20.5 L11 13.5 L18 13 Z" fill="currentColor" stroke="#fff" stroke-width="1.2" stroke-linejoin="round"/></svg>';function so(n){const t=document.createElement("div");t.style.cssText=`color:${te(n.cor)};position:relative;pointer-events:none`,t.innerHTML=Cn;const e=document.createElement("span");return e.textContent=String(n.nome??n.id),e.style.cssText=`position:absolute;left:16px;top:14px;white-space:nowrap;font:600 11px sans-serif;color:#fff;background:${te(n.cor)};padding:1px 5px;border-radius:3px;max-width:160px;overflow:hidden;text-overflow:ellipsis`,t.appendChild(e),b.divIcon({className:"custom-leaflet-marker cad-cursor-remoto",iconSize:[18,18],iconAnchor:[3,2],html:t})}class La{constructor(t){f(this,"marcadores",new Map);this.obterMapa=t}get quantidade(){return this.marcadores.size}atualizar(t,e){const o=this.obterMapa();if(!o||!t||t.id===void 0||t.id===null||t.id===""||!Number.isFinite(e==null?void 0:e[0])||!Number.isFinite(e==null?void 0:e[1]))return!1;const a=String(t.id),i=`${t.nome??""}\0${te(t.cor)}`,r=this.marcadores.get(a);if(r)return r.marker.setLatLng(e),r.assinatura!==i&&(r.marker.setIcon(so(t)),r.assinatura=i),!0;o.getPane(ue)||(o.createPane(ue).style.zIndex="9500");const s=b.marker(e,{icon:so(t),pane:ue,interactive:!1,keyboard:!1}).addTo(o);return this.marcadores.set(a,{marker:s,assinatura:i}),!0}remover(t){const e=this.marcadores.get(String(t));return e?(e.marker.remove(),this.marcadores.delete(String(t)),!0):!1}limpar(){for(const t of this.marcadores.values())t.marker.remove();this.marcadores.clear()}}const Tt=n=>`${n.camadaId}\0${n.id}`;class Sa{constructor(t){f(this,"itens",new Map);this.dep=t}get quantidade(){return this.itens.size}contem(t){return this.itens.has(Tt(t))}obter(){const t=[];for(const e of this.itens.values()){const o=this.dep.obterFeicao(e);o&&t.push(o)}return t}selecionar(t,e=!1){const o=this.assinatura(),a=new Set;e||this.itens.forEach(i=>a.add(i.camadaId)),e||this.itens.clear();for(const i of t)this.alcancavel(i)&&(this.itens.set(Tt(i),{camadaId:i.camadaId,id:i.id}),a.add(i.camadaId));this.finalizar(o,a)}alternar(t){const e=this.assinatura(),o=Tt(t);this.itens.has(o)?this.itens.delete(o):this.alcancavel(t)&&this.itens.set(o,{camadaId:t.camadaId,id:t.id}),this.finalizar(e,new Set([t.camadaId]))}alternarVarias(t){const e=this.assinatura(),o=new Set;for(const a of t){const i=Tt(a);this.itens.has(i)?this.itens.delete(i):this.alcancavel(a)&&this.itens.set(i,{camadaId:a.camadaId,id:a.id}),o.add(a.camadaId)}this.finalizar(e,o)}alcancavel(t){const e=this.dep.obterFeicao(t);return!!e&&(!this.dep.selecionavel||this.dep.selecionavel(e))}limpar(){if(this.itens.size===0)return;const t=this.assinatura(),e=new Set([...this.itens.values()].map(o=>o.camadaId));this.itens.clear(),this.finalizar(t,e)}reconciliar(){const t=this.assinatura(),e=new Set;for(const[o,a]of this.itens){const i=this.dep.obterFeicao(a);(!i||i.excluida||this.dep.visivel&&!this.dep.visivel(i))&&(this.itens.delete(o),e.add(a.camadaId))}e.size!==0&&this.finalizar(t,e)}assinatura(){return[...this.itens.keys()].join("|")}finalizar(t,e){for(const a of e){const i=new Set;for(const r of this.itens.values())r.camadaId===a&&i.add(r.id);this.dep.aplicarVisual(a,i)}if(this.assinatura()===t)return;const o=this.obter();this.dep.aoSelecionar(o),o.length<=1&&this.dep.aoSelecionarUma(o[0]??null)}}const Ln={Point:"Ponto",LineString:"Linha",Polygon:"Polígono",Circle:"Círculo",Text:"Texto"},Sn=new Set(["name","nome","category","categoria","description","descricao","author","autor","date","data","created_at","criadoEm"]),co=6;function gt(n,t){var e;for(const o of t){const a=(e=n.propriedades)==null?void 0:e[o];if(a!=null&&String(a)!=="")return String(a)}return""}function Mn(n){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n),e=t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3])):new Date(n);return Number.isNaN(e.getTime())?n:e.toLocaleDateString("pt-BR")}function An(n){const t=typeof n=="object"?JSON.stringify(n):String(n);return t.length>80?`${t.slice(0,77)}...`:t}function Lt(n){const t=n.geometria;switch(t.tipo){case"Point":case"Text":return t.coordenada;case"Circle":return t.centro;case"LineString":return t.coordenadas[Math.floor(t.coordenadas.length/2)];case"Polygon":{const e=t.aneis[0],o=e.reduce((i,r)=>i+r[0],0)/e.length,a=e.reduce((i,r)=>i+r[1],0)/e.length;return[o,a]}}}function En(n){const t=n.geometria,e=[],o=g.areaDaGeometria(t),a=g.extensaoDaGeometria(t);if(t.tipo==="Polygon")e.push(["Área",g.formatarArea(o??0)],["Perímetro",g.formatarExtensao(a??0)]),e.push(["Vértices",String(t.aneis.reduce((s,c)=>s+c.length,0))]);else if(t.tipo==="LineString"){const s=g.partesDaLinha(t);e.push(["Extensão",g.formatarExtensao(a??0)],["Vértices",String(s.reduce((c,l)=>c+l.length,0))]),s.length>1&&e.push(["Partes",String(s.length)])}else t.tipo==="Circle"&&e.push(["Raio",g.formatarExtensao(t.raioMetros)],["Área",g.formatarArea(o??0)]);const[i,r]=Lt(n);return e.push(["Coordenadas",`${i.toFixed(6)}, ${r.toFixed(6)}`]),e}class Ma{constructor(t){f(this,"popup",null);f(this,"feicaoAtual",null);f(this,"margens",{topo:20,base:20,esquerda:20,direita:20});this.dep=t}definirMargens(t){this.margens={...this.margens,...t}}get aberto(){return this.feicaoAtual}abrir(t){const e=this.dep.obterMapa();if(!e)return;this.fechar(),this.feicaoAtual=t,this.popup=b.popup({className:"compact-popup",maxWidth:280,closeOnClick:!1,autoClose:!1,autoPanPaddingTopLeft:b.point(this.margens.esquerda,this.margens.topo),autoPanPaddingBottomRight:b.point(this.margens.direita,this.margens.base)}).setLatLng(Lt(t)).setContent(this.montar(t));const o=this.popup;this.dep.liberar?this.dep.liberar(()=>o.openOn(e)):o.openOn(e)}atualizar(t){var e;!this.popup||((e=this.feicaoAtual)==null?void 0:e.id)!==t.id||this.feicaoAtual.camadaId!==t.camadaId||(this.feicaoAtual=t,this.popup.setLatLng(Lt(t)).setContent(this.montar(t)))}fechar(){const t=this.popup;this.popup=null,this.feicaoAtual=null,t==null||t.close()}montar(t){var p;const e=this.dep.obterCamada(t.camadaId),o=g.corSegura(((p=t.estilo)==null?void 0:p.corTraco)??(e==null?void 0:e.estilo.corPrimaria),"#38bdf8"),a=(y,A="",k)=>{const S=document.createElement(y);return A&&(S.style.cssText=A),k!==void 0&&(S.textContent=k),S},i=a("div","font-family:var(--ui-fonte-base,sans-serif);color:rgba(255,255,255,.9);line-height:1.35;min-width:200px;border-left:3px solid "+o+";padding-left:8px");i.className="cad-feicao-popup",i.appendChild(a("div","font-weight:700;font-size:13px;margin-bottom:1px",gt(t,["name","nome"])||t.id));const r=gt(t,["category","categoria"]),s=[Ln[t.geometria.tipo],(e==null?void 0:e.nome)??t.camadaId,r].filter(Boolean).join(" · ");i.appendChild(a("div","font-size:11px;color:rgba(255,255,255,.6);margin-bottom:4px",s));const c=gt(t,["description","descricao"]);c&&i.appendChild(a("div","font-size:11px;margin-bottom:4px",c));const l=y=>{const A=a("div","font-size:11px;margin-bottom:4px");for(const[k,S]of y){const L=a("div");L.appendChild(a("strong","",`${k}: `)),L.appendChild(document.createTextNode(S)),A.appendChild(L)}return A};i.appendChild(l(En(t)));const d=Object.entries(t.propriedades??{}).filter(([y,A])=>!Sn.has(y)&&A!==void 0&&A!==null&&A!=="");d.length>0&&(i.appendChild(l(d.slice(0,co).map(([y,A])=>[y,An(A)]))),d.length>co&&i.appendChild(a("div","font-size:10px;color:rgba(255,255,255,.55);margin-bottom:4px",`${d.length} atributos`)));const h=gt(t,["author","autor"]),u=gt(t,["date","data","created_at","criadoEm"]);if(h||u){const y=[h,u?Mn(u):""].filter(Boolean).join(" · ");i.appendChild(a("div","font-size:10px;color:rgba(255,255,255,.55);margin-bottom:4px",y))}const m=a("div","display:flex;gap:4px;flex-wrap:wrap;margin-top:6px"),v=[["inspecionar","Inspecionar"],["zoom","Zoom"]];t.geometria.tipo==="LineString"||t.geometria.tipo==="Polygon"||t.geometria.tipo==="Point"?v.push(["vertices","Vértices"]):t.geometria.tipo==="Circle"&&v.push(["vertices","Editar"]),t.geometria.tipo==="Point"&&v.push(["copiar","Copiar"]);for(const[y,A]of v){const k=a("button","font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:inherit;cursor:pointer",A);k.type="button",k.dataset.acao=y,k.addEventListener("click",S=>{S.stopPropagation(),this.dep.aoAcao(y,this.feicaoAtual??t)}),m.appendChild(k)}return i.appendChild(m),i}}class wn{constructor(t){f(this,"_ligado",!0);f(this,"_altSegurado",!1);f(this,"atalhoS",!0);f(this,"conectado",!1);f(this,"aoTeclaBaixo",t=>{var e,o;if(t.key==="Alt"){this.definirAlt(!0);return}this.atalhoS&&(t.key==="s"||t.key==="S")&&!t.ctrlKey&&!t.metaKey&&!t.altKey&&!Mt(t)&&(((o=(e=this.contexto).aplica)==null?void 0:o.call(e))??!0)&&this.alternar()});f(this,"aoTeclaCima",t=>{t.key==="Alt"&&this.definirAlt(!1)});f(this,"aoPerderFoco",()=>{this.definirAlt(!1)});this.contexto=t}get ativo(){return this._ligado&&!this._altSegurado}get ligado(){return this._ligado}definir(t){this._ligado!==t&&(this._ligado=t,this.notificar())}alternar(){this.definir(!this._ligado)}conectar(){if(this.conectado)return;this.conectado=!0;const t=this.contexto.alvo??window;t.addEventListener("keydown",this.aoTeclaBaixo),t.addEventListener("keyup",this.aoTeclaCima),t.addEventListener("blur",this.aoPerderFoco)}desconectar(){if(!this.conectado)return;this.conectado=!1;const t=this.contexto.alvo??window;t.removeEventListener("keydown",this.aoTeclaBaixo),t.removeEventListener("keyup",this.aoTeclaCima),t.removeEventListener("blur",this.aoPerderFoco),this._altSegurado=!1}definirAlt(t){this._altSegurado!==t&&(this._altSegurado=t,this.notificar())}notificar(){this.contexto.aoMudar({ativo:this.ativo,ligado:this._ligado,temporario:this._altSegurado})}}const G="feicoes";class zn{constructor(t){this.p=t}dividirComLinha(t){const e=this.p.obterLayerManager(),o=l=>(this.p.emitir("cad-divisao-falhou",{motivo:l}),!1),a=this.p.selecionadas().filter(l=>l.geometria.tipo==="Polygon");let i=a;if(i.length===0){i=[];for(const l of e.getActiveSelectableLayers())l.tipo===G&&i.push(...this.p.lista(l.id).filter(d=>d.geometria.tipo==="Polygon"&&this.p.desenhada(d)))}if(i.length===0)return o(a.length===0&&this.p.selecionadas().some(l=>g.ehMultilinha(l.geometria))?"multiparte":"nenhum-poligono");const r=l=>{var d;return!!l.bloqueada||!!((d=e.getLayerDef(l.camadaId))!=null&&d.bloqueada)},s=i.filter(l=>!r(l)&&l.geometria.tipo==="Polygon"&&l.geometria.aneis.length===1);if(s.length===0)return o(i.some(r)?"bloqueada":"poligono-com-furos");let c=!1;for(const l of s){if(l.geometria.tipo!=="Polygon")continue;const d=Ro(l.geometria.aneis[0],t);if(!d)continue;this.p.divisaoAtiva()&&this.p.estaSelecionada({camadaId:l.camadaId,id:l.id})&&this.p.encerrarDesenho(),this.p.removerFeicao(l.camadaId,l.id);const h=[];if(d.forEach((u,m)=>{const v=$t(l,this.p.idLivre(l.camadaId,`${l.id}-${m+1}`),{tipo:"Polygon",aneis:[u]}),p=this.p.adicionarFeicao(l.camadaId,v);p&&h.push(p)}),h.length!==d.length){for(const u of h)this.p.removerFeicao(u.camadaId,u.id);return this.p.adicionarFeicao(l.camadaId,l),o("geometria-invalida")}if(this.p.emitir("cad-feicao-dividida",{origem:l,partes:h}),c=!0,a.length===0)break}return c||o("sem-intersecao")}gerarBuffer(t,e,o,a={}){const i=this.p.buscar(t,e);if(!i)return null;const r=Go(i.geometria,o);if(!r)return null;const s=a.camadaDestino??t,c=this.p.adicionarFeicao(s,{id:a.id??this.p.idLivre(s,`${e}-buffer`),geometria:{tipo:"Polygon",aneis:[r]},estilo:i.estilo?{...i.estilo}:void 0,propriedades:{...i.propriedades,origem:e}});return c&&this.p.emitir("cad-feicao-criada",{camadaId:s,feicao:c}),c}duplicarFeicao(t,e,o={},a={}){const i=this.p.buscar(t,e);if(!i)return null;const r=jo(i.geometria,o.lesteM??0,o.norteM??0),s=this.p.adicionarFeicao(t,$t(i,a.id??this.p.idLivre(t,`${e}-copia`),r));return s&&this.p.emitir("cad-feicao-criada",{camadaId:t,feicao:s}),s}juntarFeicoes(t,e,o={}){const a=h=>(this.p.emitir("cad-uniao-falhou",{motivo:h}),null),i=e.map(h=>this.p.buscar(t,h));if(i.length<2||i.some(h=>!h))return a("feicoes-insuficientes");const r=i;if(new Set(r.map(h=>h.id)).size!==r.length)return a("feicoes-insuficientes");const s=this.p.obterLayerManager();if(r.some(h=>{var u;return h.excluida||h.bloqueada||((u=s.getLayerDef(h.camadaId))==null?void 0:u.bloqueada)}))return a("bloqueada");const c=o.toleranciaM??0;let l=null;if(r.every(h=>h.geometria.tipo==="LineString")){if(r.some(m=>g.ehMultilinha(m.geometria)))return a("multiparte");const h=r.map(m=>m.geometria.coordenadas),u=Vo(h,c);u&&(l=g.criarLinha([u]))}else if(r.every(h=>h.geometria.tipo==="Polygon"&&h.geometria.aneis.length===1)){let h=r[0].geometria.aneis[0];for(const u of r.slice(1))h=h?Ho(h,u.geometria.aneis[0],c):null;h&&(l={tipo:"Polygon",aneis:[h]})}else return a("tipos-incompativeis");if(!l)return a("sem-ligacao");for(const h of r)this.p.removerFeicao(t,h.id);const d=this.p.adicionarFeicao(t,$t(r[0],o.id??this.p.idLivre(t,`${r[0].id}-uniao`),l));if(!d){for(const h of r)this.p.adicionarFeicao(t,h);return a("geometria-invalida")}return this.p.emitir("cad-feicao-unida",{origens:r,resultado:d}),d}}class kn{constructor(t,e){f(this,"cacheOficiais",new WeakMap);this.p=t,this.regra=e}oficiaisDe(t){const e=this.p.lista(t);let o=this.cacheOficiais.get(e);return o||(o=g.RegraVersoes.oficiais(e),this.cacheOficiais.set(e,o)),o}visivelPorVersao(t){const e=this.p.obterLayerManager().getLayerInstance(t.camadaId),o=N.get(G);return e&&o?o.feicaoVisivel(e,t):this.regra.visivel(t,this.oficiaisDe(t.camadaId))}desenhada(t){return!t.excluida&&!t.oculta&&this.visivelPorVersao(t)}aplicarVersoes(){const t=this.p.obterLayerManager(),e=N.get(G);for(const o of t.getLayers()){if(o.tipo!==G)continue;const a=t.getLayerInstance(o.id);a&&e&&e.reavaliarVersoes(a)}this.p.aposDados()}get previasGlobais(){return this.regra.global}definirPreviasGlobais(t){const e=!!t;this.regra.global!==e&&(this.regra.global=e,this.aplicarVersoes(),this.p.emitir("cad-previas",{global:e}))}alternarPreviasGlobais(){this.definirPreviasGlobais(!this.regra.global)}alternarPrevia(t,e){const o=this.p.buscar(t,e);if(!o)return null;const a=g.entidadeDe(o),i=this.regra.alternarIndividual(t,a);return this.aplicarVersoes(),this.p.emitir("cad-previas",{camadaId:t,entidadeId:a,ativa:i}),i}previaSolicitada(t,e){const o=this.p.buscar(t,e);return!!o&&this.regra.previaSolicitada(o)}garantirVisivel(t){const e=this.p.obterLayerManager(),o=e.getLayerDef(t.camadaId);if(o&&!o.visivel&&e.setLayerVisibility(t.camadaId,!0),!this.visivelPorVersao(t)){const a=g.entidadeDe(t);this.regra.definirIndividual(t.camadaId,a,!0),this.aplicarVersoes(),this.p.emitir("cad-previas",{camadaId:t.camadaId,entidadeId:a,ativa:!0})}}}class In{constructor(t){this.p=t}limitesDe(t){let e=1/0,o=1/0,a=-1/0,i=-1/0;for(const r of t){const[[s,c],[l,d]]=g.limitesDaGeometria(r.geometria);s<e&&(e=s),c<o&&(o=c),l>a&&(a=l),d>i&&(i=d)}return Number.isFinite(e)?[[e,o],[a,i]]:null}enquadrar(t){const e=this.p.obterMapa(),o=this.limitesDe(t);return!e||!o?!1:(o[0][0]===o[1][0]&&o[0][1]===o[1][1]?e.flyTo([o[0][0],o[0][1]],Math.max(e.getZoom(),17)):e.fitBounds(o,{padding:[60,60],maxZoom:18}),!0)}zoomParaFeicao(t,e){const o=this.p.buscar(t,e);return!o||o.excluida?!1:(this.p.garantirVisivel(o),this.enquadrar([o]))}zoomParaFeicoes(t){const e=[];for(const o of Array.isArray(t)?t:[]){const a=this.p.buscar(o.camadaId,o.id);a&&!a.excluida&&(this.p.garantirVisivel(a),e.push(a))}return e.length>0&&this.enquadrar(e)}ajustarTudo(){const t=[];for(const e of this.p.obterLayerManager().getLayers())e.tipo!==G||!e.visivel||t.push(...this.p.lista(e.id).filter(o=>this.p.desenhada(o)));return this.enquadrar(t)}ajustarCamada(t){const e=this.p.obterLayerManager(),o=e.getLayerDef(t);return!o||o.tipo!==G?!1:(o.visivel||e.setLayerVisibility(t,!0),this.enquadrar(this.p.lista(t).filter(a=>this.p.desenhada(a))))}}const lo=36,Dn=.45;function _n(n,t){const e=Math.abs(t[0]-n[0]),o=Math.abs(t[1]-n[1]);if(e===0&&o===0)return null;const a=[];for(let i=0;i<lo;i++){const r=i*2*Math.PI/lo;a.push([n[0]+e*Math.sin(r),n[1]+o*Math.cos(r)])}return a}function Aa(n,t){const e=Math.cos(n[0]*Math.PI/180)||1,o=t[0]-n[0],a=(t[1]-n[1])*e,i=Math.hypot(o,a);return i===0?null:{raio:i,inicio:Math.atan2(o,a),cosLat:e}}function Tn(n,t,e=6){const o=Aa(n,t);if(!o||e<3)return null;const a=[];for(let i=0;i<e;i++){const r=o.inicio+i*2*Math.PI/e;a.push([n[0]+o.raio*Math.sin(r),n[1]+o.raio*Math.cos(r)/o.cosLat])}return a}function On(n,t,e=5){const o=Aa(n,t);if(!o||e<3)return null;const a=e*2,i=[];for(let r=0;r<a;r++){const s=r%2===0?o.raio:o.raio*Dn,c=o.inicio+r*2*Math.PI/a;i.push([n[0]+s*Math.sin(c),n[1]+s*Math.cos(c)/o.cosLat])}return i}const ee=["ponto","linha","poligono","retangulo","elipse","poligono-regular","estrela","circulo","texto","caneta","medir-distancia","medir-area","dividir","selecao-laco","conta-gotas"],Ht=2;function He(n){return typeof n=="string"&&ee.includes(n)}function St(n){return n.entrada??(n.alca?g.espelhoDaAlca(n.ponto,n.alca):void 0)}function xt(n){return n.map(t=>{const e={ponto:t.ponto};return t.alca?(e.saida=t.alca,e.entrada=St(t)):t.entrada&&(e.entrada=t.entrada),e})}function Ea(n){return g.amostrarCurva(xt(n),!1)}function pe(n,t){const e=g.temAlcas(n);if(t){const a=e?g.amostrarCurva(n,!0):n.map(i=>i.ponto);return e?{tipo:"Polygon",aneis:[a],curva:n}:{tipo:"Polygon",aneis:[a]}}const o=e?g.amostrarCurva(n,!1):n.map(a=>a.ponto);return e?{tipo:"LineString",coordenadas:o,curva:n}:{tipo:"LineString",coordenadas:o}}const qn=(n,t)=>n[0]===t[0]&&n[1]===t[1],ho={elipse:_n,"poligono-regular":(n,t)=>Tn(n,t,6),estrela:(n,t)=>On(n,t,5)};class Gt{constructor(t,e=!1){f(this,"pontos",[]);f(this,"cursor",null);f(this,"ancoras",[]);this.ferramenta=t,this.fechar=e}get nos(){return this.ferramenta==="caneta"?this.ancoras.length:this.pontos.length}get ehSequencial(){return["linha","poligono","caneta","medir-distancia","medir-area","dividir","selecao-laco"].includes(this.ferramenta)}get ehArea(){return this.ferramenta==="poligono"||this.ferramenta==="medir-area"||this.ferramenta==="selecao-laco"||this.ferramenta==="caneta"&&this.fechar}get fechaNoPrimeiro(){return this.nos>=3&&(this.ehArea||this.ferramenta==="caneta")}get primeiro(){var t;return(this.ferramenta==="caneta"?(t=this.ancoras[0])==null?void 0:t.ponto:this.pontos[0])??null}get minimo(){return this.ehArea?3:2}get podeConcluir(){return this.ehSequencial&&this.nos>=this.minimo}mover(t){this.cursor=t}clicar(t){switch(this.ferramenta){case"ponto":return{concluida:{tipo:"Point",coordenada:t}};case"texto":return{concluida:{tipo:"Text",coordenada:t,texto:""}};case"retangulo":if(this.pontos.length===0)return this.pontos.push(t),{};{const e=this.retangulo(this.pontos[0],t);return e?{concluida:e}:{aviso:"Os dois cantos precisam diferir em latitude e em longitude."}}case"circulo":if(this.pontos.length===0)return this.pontos.push(t),{};{const e=g.distanciaMetros(this.pontos[0],t);return e>=Ht?{concluida:{tipo:"Circle",centro:this.pontos[0],raioMetros:e}}:{aviso:`Raio mínimo de ${Ht} m: clique mais longe do centro.`}}case"elipse":case"poligono-regular":case"estrela":{if(this.pontos.length===0)return this.pontos.push(t),{};const e=ho[this.ferramenta](this.pontos[0],t);return e?{concluida:{tipo:"Polygon",aneis:[e]}}:{aviso:"Clique num ponto diferente do centro."}}case"caneta":return this.ancoras.push({ponto:t}),{};case"conta-gotas":return{};default:return this.pontos.length>0&&qn(this.pontos[this.pontos.length-1],t)?{}:(this.pontos.push(t),{})}}definirAlca(t){const e=this.ancoras[this.ancoras.length-1];this.ferramenta==="caneta"&&e&&(e.alca=t)}moverAlcaDaAncora(t,e,o,a=!0){const i=this.ancoras[t];if(this.ferramenta!=="caneta"||!i)return;if(a){i.alca=e==="saida"?o:g.espelhoDaAlca(i.ponto,o),delete i.entrada;return}const r=St(i);e==="saida"?(i.alca=o,r&&(i.entrada=r)):(i.alca??(i.alca=i.ponto),i.entrada=o)}desfazer(){const t=this.ferramenta==="caneta"?this.ancoras:this.pontos;return t.length===0?!1:(t.pop(),!0)}vertices(){return this.ferramenta==="caneta"?Ea(this.ancoras):this.pontos}retangulo(t,e){return t[0]===e[0]||t[1]===e[1]?null:{tipo:"Polygon",aneis:[[[t[0],t[1]],[t[0],e[1]],[e[0],e[1]],[e[0],t[1]]]]}}previa(){const t=this.cursor;switch(this.ferramenta){case"retangulo":return this.pontos.length===1&&t?this.retangulo(this.pontos[0],t):null;case"circulo":{if(this.pontos.length!==1||!t)return null;const e=g.distanciaMetros(this.pontos[0],t);return e>=Ht?{tipo:"Circle",centro:this.pontos[0],raioMetros:e}:null}case"caneta":{if(this.ancoras.length===0)return null;const e=xt(t?[...this.ancoras,{ponto:t}]:this.ancoras);return e.length<2?null:pe(e,this.ehArea&&e.length>=3)}case"elipse":case"poligono-regular":case"estrela":{if(this.pontos.length!==1||!t)return null;const e=ho[this.ferramenta](this.pontos[0],t);return e?{tipo:"Polygon",aneis:[e]}:null}case"ponto":case"texto":case"conta-gotas":return null;default:{const e=t?[...this.pontos,t]:[...this.pontos];return e.length<2?null:this.ehArea&&e.length>=3?{tipo:"Polygon",aneis:[e]}:{tipo:"LineString",coordenadas:e}}}}concluir(){if(!this.podeConcluir)return null;if(this.ferramenta==="caneta")return pe(xt(this.ancoras),this.ehArea);const t=this.vertices();return this.ehArea?{tipo:"Polygon",aneis:[t]}:{tipo:"LineString",coordenadas:t}}concluirFechando(){return this.fechaNoPrimeiro?this.ferramenta==="caneta"?pe(xt(this.ancoras),!0):{tipo:"Polygon",aneis:[this.vertices()]}:null}comprimentoMetros(){const t=this.cursor&&this.nos>0?[...this.vertices(),this.cursor]:this.vertices();return g.comprimentoMetros(t,!1)}}const wa={topo:0,base:16,esquerda:0,direita:0},za=16,ka=.92,jt={topo:"--cad-hud-topo",base:"--cad-hud-base",esquerda:"--cad-hud-esquerda",direita:"--cad-hud-direita"},Ge="position:absolute;box-sizing:border-box;z-index:10000;left:calc(var(--cad-hud-esquerda,0px) + (100% - var(--cad-hud-esquerda,0px) - var(--cad-hud-direita,0px)) / 2);bottom:var(--cad-hud-base,16px);transform:translateX(-50%);width:max-content;max-width:min(92%, calc(100% - var(--cad-hud-esquerda,0px) - var(--cad-hud-direita,0px) - 16px));max-height:calc(100% - var(--cad-hud-topo,0px) - var(--cad-hud-base,16px) - 8px);overflow:hidden;display:flex;flex-wrap:wrap;";function Fn(n,t,e={}){const o={...wa,...e},a=Math.max(0,n-o.esquerda-o.direita);return{centroX:o.esquerda+a/2,base:o.base,larguraMax:Math.max(0,Math.min(n*ka,a-za)),alturaMax:Math.max(0,t-o.topo-o.base-8)}}function Ia(n,t){for(const e of Object.keys(jt)){const o=t[e];typeof o=="number"&&Number.isFinite(o)&&o>=0?n.style.setProperty(jt[e],`${o}px`):n.style.removeProperty(jt[e])}}const Da="cm-draw-hud",we="cad-ferramenta-ativa",J="cad-desenho",ot="#22d3ee",$n=4,Nn=450,Rn=10,Bn=8,Vn=2500,Hn={ponto:"Ponto",linha:"Linha",poligono:"Polígono",retangulo:"Retângulo",elipse:"Elipse","poligono-regular":"Polígono regular (hexágono)",estrela:"Estrela",circulo:"Círculo",texto:"Texto",caneta:"Caneta (Bézier)","medir-distancia":"Medir distância","medir-area":"Medir área",dividir:"Dividir polígono","selecao-laco":"Seleção por laço","conta-gotas":"Conta-gotas"},Gn={ponto:"Clique para colocar",linha:"Clique nos vértices · Enter ou duplo clique conclui",poligono:"Clique nos vértices · Enter ou duplo clique conclui",retangulo:"Clique nos dois cantos",elipse:"Clique no centro e depois no canto da caixa","poligono-regular":"Clique no centro e depois num vértice",estrela:"Clique no centro e depois numa ponta",circulo:"Clique no centro e depois num ponto da borda",texto:"Clique onde o texto vai",caneta:"Clique = reta · arraste = curva · arraste as alças já colocadas para ajustar (Shift solta a simetria) · Enter conclui · 1º ponto fecha","medir-distancia":"Clique nos pontos · Enter conclui","medir-area":"Clique nos vértices · Enter conclui",dividir:"Desenhe a linha de corte · Enter aplica","selecao-laco":"Desenhe o laço · Enter ou 1º ponto fecha e seleciona","conta-gotas":"Clique numa feição para copiar o estilo"};class _a{constructor(t){f(this,"sessao",null);f(this,"fechar",!1);f(this,"grupo",null);f(this,"previa",null);f(this,"marcas",null);f(this,"medicao",null);f(this,"marcadorSnap",null);f(this,"hud",null);f(this,"campoTexto",null);f(this,"arrastando",null);f(this,"ultimoClique",null);f(this,"avisoTimer",null);f(this,"aoClicar",t=>{var i;const e=this.sessao;if(!e||e.ferramenta==="caneta"||this.campoTexto||((i=t.originalEvent)==null?void 0:i.button)!==void 0&&t.originalEvent.button!==0)return;const o=this.coordenada(t);if(e.ferramenta==="conta-gotas"){this.dep.aoAmostrar(o,t.originalEvent);return}if(e.ehSequencial&&this.repetido(t)||this.fechaNoPrimeiroVertice(t))return;const a=e.clicar(o);if(a.concluida){a.concluida.tipo==="Text"?this.pedirTexto(o):this.finalizar(a.concluida);return}this.atualizar(),a.aviso&&this.avisar(a.aviso)});f(this,"aoPressionar",t=>{var a;const e=this.sessao;if(!e||e.ferramenta!=="caneta"||((a=t.originalEvent)==null?void 0:a.button)!==0||this.repetido(t)||this.fechaNoPrimeiroVertice(t))return;const o=this.alcaSobOPonteiro(t);if(o){this.arrastando=o;return}e.clicar(this.coordenada(t)),this.arrastando={i:e.ancoras.length-1,qual:"saida"},this.atualizar()});f(this,"aoSoltar",()=>{this.arrastando=null});f(this,"aoMover",t=>{var a;const e=this.sessao;if(!e)return;const o=this.coordenada(t);e.mover(o),this.arrastando?e.moverAlcaDaAncora(this.arrastando.i,this.arrastando.qual,o,!((a=t.originalEvent)!=null&&a.shiftKey)):e.ferramenta==="caneta"&&(this.dep.map.getContainer().style.cursor=this.alcaSobOPonteiro(t)?"move":"crosshair"),this.atualizar()});f(this,"aoDuploClique",()=>{this.concluir()});f(this,"aoTecla",t=>{const e=this.sessao;if(!e)return;const o=Mt(t);if(t.key==="Escape"){if(o&&!this.campoTexto)return;this.campoTexto?this.cancelarTexto():e.nos>0?this.reiniciar():this.desativar(),t.preventDefault();return}if(!o)if(t.key==="Enter"){if(bo(t))return;this.concluir(),t.preventDefault()}else(t.key==="Backspace"||(t.ctrlKey||t.metaKey)&&t.key.toLowerCase()==="z")&&(e.desfazer()&&this.atualizar(),t.preventDefault())});this.dep=t}get ferramenta(){var t;return((t=this.sessao)==null?void 0:t.ferramenta)??null}get ativo(){return this.sessao!==null}get nos(){var t;return((t=this.sessao)==null?void 0:t.nos)??0}desfazerVertice(){var t;return(t=this.sessao)!=null&&t.desfazer()?(this.atualizar(),!0):!1}ativar(t,e={}){var r;const o=(r=this.sessao)==null?void 0:r.ferramenta;this.desligar(),o&&this.dep.aoDesativar(o),this.limparMedicao();const a=this.dep.map;this.fechar=!!e.fechar,this.sessao=new Gt(t,this.fechar),a.getPane(J)||(a.createPane(J).style.zIndex="8500"),this.grupo=b.layerGroup().addTo(a),this.marcas=b.layerGroup().addTo(this.grupo);const i=a.getContainer();i.classList.add(we),i.style.cursor=t==="conta-gotas"?"copy":"crosshair",a.on("click",this.aoClicar),a.on("dblclick",this.aoDuploClique),a.on("mousemove",this.aoMover),a.on("mousedown",this.aoPressionar),window.addEventListener("mouseup",this.aoSoltar),window.addEventListener("keydown",this.aoTecla),this.montarHud(),this.atualizar()}desativar(){var e;const t=(e=this.sessao)==null?void 0:e.ferramenta;t&&(this.desligar(),this.dep.aoDesativar(t))}limparMedicao(){var t;(t=this.medicao)==null||t.remove(),this.medicao=null}desligar(){var o,a;const t=this.dep.map;t.off("click",this.aoClicar),t.off("dblclick",this.aoDuploClique),t.off("mousemove",this.aoMover),t.off("mousedown",this.aoPressionar),window.removeEventListener("mouseup",this.aoSoltar),window.removeEventListener("keydown",this.aoTecla);const e=t.getContainer();e.classList.remove(we),e.style.cursor="",(o=this.grupo)==null||o.remove(),this.grupo=null,this.previa=null,this.marcas=null,this.marcadorSnap=null,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=null,(a=this.hud)==null||a.remove(),this.hud=null,this.campoTexto=null,this.sessao=null,this.arrastando=null,this.ultimoClique=null}coordenada(t){const e=[t.latlng.lat,t.latlng.lng];if(!this.dep.snapAtivo())return this.esconderSnap(),e;const o=this.dep.buscarSnap(e);return o?(this.mostrarSnap(o.coordenada),o.coordenada):(this.esconderSnap(),e)}repetido(t){const e=this.ultimoClique,o=Date.now(),a=t.containerPoint,i=!!e&&Math.hypot(e.x-a.x,e.y-a.y)<=$n&&o-e.t<=Nn;return this.ultimoClique={x:a.x,y:a.y,t:o},i}fechaNoPrimeiroVertice(t){const e=this.sessao,o=e==null?void 0:e.primeiro;if(!e||!o||!e.fechaNoPrimeiro)return!1;const a=this.dep.map.latLngToContainerPoint(o);if(Math.hypot(a.x-t.containerPoint.x,a.y-t.containerPoint.y)>Rn)return!1;const i=e.concluirFechando();return i&&this.finalizar(i),!!i}alcaSobOPonteiro(t){const e=this.sessao;if(!e)return null;const o=this.dep.map,a=i=>{const r=o.latLngToContainerPoint(i);return Math.hypot(r.x-t.containerPoint.x,r.y-t.containerPoint.y)<=Bn};for(let i=e.ancoras.length-1;i>=0;i--){const r=e.ancoras[i];if(r.alca&&a(r.alca))return{i,qual:"saida"};const s=St(r);if(s&&a(s))return{i,qual:"entrada"}}for(let i=e.ancoras.length-1;i>=0;i--)if(a(e.ancoras[i].ponto))return{i,qual:"saida"};return null}concluir(){const t=this.sessao;if(!t)return;const e=t.concluir();e?this.finalizar(e):t.ehSequencial&&t.nos>0&&!t.podeConcluir&&this.avisar(`Faltam ${t.minimo-t.nos} ponto(s): mínimo de ${t.minimo}.`)}avisar(t){var o;const e=(o=this.hud)==null?void 0:o.querySelector('[data-campo="aviso"]');e&&(e.textContent=t,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=setTimeout(()=>{e.textContent="",this.avisoTimer=null},Vn))}botaoDireito(){const t=this.sessao;if(t){if(this.campoTexto){this.cancelarTexto();return}t.podeConcluir?this.concluir():t.nos>0&&t.desfazer()?this.atualizar():this.desativar()}}reiniciar(){var e;const t=(e=this.sessao)==null?void 0:e.ferramenta;t&&(this.sessao=new Gt(t,this.fechar),this.ultimoClique=null,this.arrastando=null,this.atualizar())}finalizar(t){const e=this.sessao.ferramenta,o=e==="medir-distancia"||e==="medir-area"?this.mostrarMedicao(t,e):null;this.sessao=new Gt(e,this.fechar),this.ultimoClique=null,this.atualizar(),o&&this.dep.aoMedir(o),this.dep.aoGeometria(e,t)}pedirTexto(t){var o,a;if(!this.hud||(a=(o=this.dep).aoSolicitarTexto)!=null&&a.call(o,t)||!this.hud)return;const e=document.createElement("input");e.type="text",e.placeholder="Texto…",e.style.cssText="padding:3px 6px;border-radius:4px;border:1px solid #475569;background:#0f172a;color:#fff;min-width:160px",e.addEventListener("keydown",i=>{if(i.stopPropagation(),i.key==="Enter"){const r=e.value.trim();this.cancelarTexto(),r&&this.finalizar({tipo:"Text",coordenada:t,texto:r})}else i.key==="Escape"&&this.cancelarTexto()}),this.campoTexto=e,this.hud.insertBefore(e,this.hud.querySelector('[data-campo="dica"]')),e.focus()}cancelarTexto(){var t;(t=this.campoTexto)==null||t.remove(),this.campoTexto=null}atualizar(){const t=this.sessao;if(!t||!this.grupo||!this.marcas)return;this.previa&&(this.grupo.removeLayer(this.previa),this.previa=null);const e=t.previa();e&&(this.previa=this.desenharGeometria(e,!0),this.grupo.addLayer(this.previa)),this.marcas.clearLayers();const o=t.ferramenta==="caneta"?t.ancoras.map(a=>a.ponto):t.pontos;if(t.ferramenta==="caneta")for(const a of t.ancoras){const i=St(a);if(!(!a.alca||!i)){this.marcas.addLayer(b.polyline([i,a.ponto,a.alca],{pane:J,color:ot,weight:1,opacity:.8,interactive:!1}));for(const r of[i,a.alca])this.marcas.addLayer(b.circleMarker(r,{pane:J,radius:4,color:ot,weight:1.5,fillColor:"#fff",fillOpacity:1,interactive:!1}))}}for(const a of o)this.marcas.addLayer(b.circleMarker(a,{pane:J,radius:4,color:"#111",weight:1,fillColor:ot,fillOpacity:1,interactive:!1}));this.atualizarHud(e)}desenharGeometria(t,e){const o={pane:J,color:ot,weight:2,dashArray:e?"6 4":void 0,fillColor:ot,fillOpacity:.15,interactive:!1},a=Oe(t,o);if(a)return a;if(t.tipo==="Polygon")return b.polygon(t.aneis,o);if(t.tipo==="Circle")return b.circle(t.centro,{...o,radius:t.raioMetros});if(t.tipo==="LineString")return b.polyline(t.coordenadas,o);const i=(t.tipo==="Point",t.coordenada);return b.circleMarker(i,{...o,radius:5})}mostrarMedicao(t,e){this.limparMedicao();const o=b.layerGroup().addTo(this.dep.map);this.medicao=o,o.addLayer(this.desenharGeometria(t,!1));const a=t.tipo==="Polygon"?t.aneis[0]:t.tipo==="LineString"?t.coordenadas:[],i=t.tipo==="Polygon",r=(l,d)=>{const h=document.createElement("div");h.textContent=d,h.style.cssText="white-space:nowrap;font:600 11px sans-serif;color:#fff;background:rgba(15,23,42,.85);padding:1px 5px;border-radius:3px;transform:translate(-50%,-50%)",o.addLayer(b.marker(l,{pane:J,interactive:!1,keyboard:!1,icon:b.divIcon({className:"custom-leaflet-marker",iconSize:void 0,html:h})}))},s=i?a.length:a.length-1;for(let l=0;l<s;l++){const d=a[l],h=a[(l+1)%a.length];r([(d[0]+h[0])/2,(d[1]+h[1])/2],g.formatarExtensao(g.distanciaMetros(d,h)))}const c={tipo:e==="medir-area"?"area":"distancia",pontos:a,comprimentoM:g.comprimentoMetros(a,!1)};if(t.tipo==="Polygon")c.areaM2=g.areaDaGeometria(t)??0,c.perimetroM=g.extensaoDaGeometria(t)??0;else if(e==="medir-distancia"&&a.length>=3){const l={tipo:"Polygon",aneis:[a]};c.areaM2=g.areaDaGeometria(l)??0,c.perimetroM=g.extensaoDaGeometria(l)??0}return c}mostrarSnap(t){this.grupo&&(this.marcadorSnap?this.marcadorSnap.setLatLng(t):this.marcadorSnap=b.marker(t,{pane:J,interactive:!1,keyboard:!1,icon:b.divIcon({className:"custom-leaflet-marker cm-snap",iconSize:[18,18],html:'<div style="width:18px;height:18px;box-sizing:border-box;border:2px solid #22d3ee;transform:rotate(45deg);border-radius:2px"></div>'})}).addTo(this.grupo))}esconderSnap(){var t;this.marcadorSnap&&((t=this.grupo)==null||t.removeLayer(this.marcadorSnap),this.marcadorSnap=null)}montarHud(){const t=this.sessao;if(!t)return;const e=document.createElement("div");e.id=Da,e.style.cssText=Ge+"gap:10px;align-items:center;padding:6px 12px;border-radius:8px;background:rgba(15,23,42,.92);color:#fff;font:12px var(--ui-fonte-base,sans-serif);border:1px solid rgba(255,255,255,.2);pointer-events:auto";const o=c=>{const l=document.createElement("span");return l.dataset.campo=c,l},a=document.createElement("strong");a.textContent=Hn[t.ferramenta];const i=o("dica");i.style.opacity=".7",i.textContent=Gn[t.ferramenta];const r=(c,l,d=!1)=>{const h=document.createElement("button");return h.type="button",h.textContent=c,h.style.cssText=`padding:3px 10px;border-radius:4px;border:1px solid ${d?ot:"rgba(255,255,255,.3)"};background:${d?ot:"transparent"};color:${d?"#111":"#fff"};cursor:pointer;font-weight:600`,h.addEventListener("click",l),h},s=o("aviso");s.style.color="#fbbf24",s.setAttribute("role","status"),e.append(a,o("nos"),o("medida"),i,s),t.ehSequencial&&e.append(r("Concluir",()=>this.concluir(),!0)),e.append(r("Sair",()=>this.desativar())),b.DomEvent.disableClickPropagation(e),b.DomEvent.disableScrollPropagation(e),this.dep.map.getContainer().appendChild(e),this.hud=e}atualizarHud(t){const e=this.sessao;if(!this.hud||!e)return;const o=this.hud.querySelector('[data-campo="nos"]'),a=this.hud.querySelector('[data-campo="medida"]');if(o&&(o.textContent=e.nos>0?`Nós: ${e.nos}`:""),!a)return;let i="";if((t==null?void 0:t.tipo)==="Polygon")i=`Área: ${g.formatarArea(g.areaDaGeometria(t)??0)} · Perímetro: ${g.formatarExtensao(g.extensaoDaGeometria(t)??0)}`;else if((t==null?void 0:t.tipo)==="LineString"){if(i=`Extensão: ${g.formatarExtensao(e.comprimentoMetros())}`,e.ferramenta==="medir-distancia"&&e.nos>=3&&t.coordenadas.length>=3){const r={tipo:"Polygon",aneis:[t.coordenadas]};i+=` · Área: ${g.formatarArea(g.areaDaGeometria(r)??0)} · Perímetro: ${g.formatarExtensao(g.extensaoDaGeometria(r)??0)}`}}else(t==null?void 0:t.tipo)==="Circle"&&(i=`Raio: ${g.formatarExtensao(t.raioMetros)}`);a.textContent=i}clicarEm(t){const e=this.sessao;if(!e)return;const o=e.clicar(t);o.concluida?o.concluida.tipo==="Text"?this.pedirTexto(t):this.finalizar(o.concluida):(this.atualizar(),o.aviso&&this.avisar(o.aviso))}moverPara(t){var e;(e=this.sessao)==null||e.mover(t),this.atualizar()}}const jn=new Set(["ponto","linha","poligono","retangulo","elipse","poligono-regular","estrela","circulo","texto","caneta"]);class Un{constructor(t){f(this,"desenho",null);f(this,"camadaDesenho",null);f(this,"estiloDesenho",{});f(this,"sequenciaId",0);this.p=t}get controle(){return this.desenho}get ativo(){var t;return!!((t=this.desenho)!=null&&t.ativo)}botaoDireito(){var t;(t=this.desenho)==null||t.botaoDireito()}destruir(){var t;(t=this.desenho)==null||t.desativar(),this.desenho=null}get ferramentaAtiva(){var t;return((t=this.desenho)==null?void 0:t.ferramenta)??null}definirCamadaDesenho(t){this.camadaDesenho=t||null}get camadaDeDesenho(){return this.camadaDesenho}definirEstiloDesenho(t){this.estiloDesenho={...t}}obterEstiloDesenho(){return{...this.estiloDesenho}}alternarFerramenta(t){var e;return((e=this.desenho)==null?void 0:e.ferramenta)===t?(this.desenho.desativar(),{ok:!0}):this.ativarFerramenta(t)}ativarFerramenta(t,e={}){var i,r;if(!He(t))return{ok:!1,motivo:"ferramenta-invalida"};const o=this.p.obterMapa();if(!o)return{ok:!1,motivo:"sem-mapa"};if(jn.has(t)){const s=this.motivoCamadaDesenhoInvalida();if(s)return this.p.emitir("cad-desenho-recusado",{ferramenta:t,motivo:s}),{ok:!1,motivo:s}}this.p.prepararDesenho(),this.desenho||(this.desenho=new _a({map:o,buscarSnap:s=>this.p.buscarSnapEm(s),snapAtivo:()=>this.p.snapAtivo(),aoGeometria:(s,c)=>this.concluirFerramenta(s,c),aoMedir:s=>this.p.emitir("cad-medicao",s),aoAmostrar:s=>this.amostrarEstilo(s),aoSolicitarTexto:s=>this.solicitarTexto(s),aoDesativar:()=>{var s,c;this.p.emitir("cad-ferramenta",{ferramenta:null}),(c=(s=this.p).aoFerramenta)==null||c.call(s,null)}})),this.desenho.ativar(t,e),this.p.emitir("cad-ferramenta",{ferramenta:t}),(r=(i=this.p).aoFerramenta)==null||r.call(i,t);const a=e.iniciarEm?this.p.normalizarCoordenada(e.iniciarEm):null;return a&&this.desenho.clicarEm(a),{ok:!0}}desativarFerramenta(){var t;(t=this.desenho)==null||t.desativar()}limparMedicao(){var t;(t=this.desenho)==null||t.limparMedicao()}get nosDesenho(){var t;return((t=this.desenho)==null?void 0:t.nos)??0}desfazerVerticeDesenho(){var t;return((t=this.desenho)==null?void 0:t.desfazerVertice())??!1}motivoCamadaDesenhoInvalida(){if(!this.camadaDesenho)return"sem-camada";const t=this.p.obterLayerManager().getLayerDef(this.camadaDesenho);return t&&t.tipo!==G?"camada-invalida":t!=null&&t.bloqueada?"camada-bloqueada":null}novoId(t,e){const o=new Set(this.p.lista(e).map(i=>i.id));let a;do this.sequenciaId++,a=`${t}-${Date.now().toString(36)}${this.sequenciaId.toString(36)}`;while(o.has(a));return a}solicitarTexto(t){const e={coordenada:t,camadaId:this.camadaDesenho,concluir:o=>{const a=typeof o=="string"?o.trim():"";return a?this.concluirFerramenta("texto",{tipo:"Text",coordenada:t,texto:a}):null}};return this.p.emitir("cad-texto-solicitado",e,!0)===!0}concluirFerramenta(t,e){if(t==="dividir")return e.tipo==="LineString"&&this.p.dividirComLinha(e.coordenadas),null;if(t==="medir-distancia"||t==="medir-area")return null;if(t==="selecao-laco")return e.tipo==="Polygon"&&this.p.selecionarNoLaco(e.aneis[0]),null;const o=this.camadaDesenho;if(!o)return null;const a=Object.keys(this.estiloDesenho).length>0,i=this.p.adicionarFeicao(o,{id:this.novoId(t,o),geometria:e,estilo:a?{...this.estiloDesenho}:void 0,propriedades:{}});return i?this.p.emitir("cad-feicao-criada",{camadaId:o,feicao:i}):this.p.emitir("cad-desenho-recusado",{ferramenta:t,motivo:"geometria-invalida"}),i}amostrarEstilo(t){const e=this.p.obterMapa();if(!e)return;const o=e.latLngToContainerPoint(t),a=this.p.candidatasEm(t,8),i=wt({x:o.x,y:o.y},a,d=>e.latLngToContainerPoint(d));if(!i){this.p.emitir("cad-conta-gotas",{cor:"",feicao:null,estilo:{}});return}const r=this.p.obterLayerManager().getLayerDef(i.camadaId),s=i.estilo??{},c={},l=s.corTraco??(r==null?void 0:r.estilo.corPrimaria);l&&(c.corTraco=l),s.corPreenchimento&&(c.corPreenchimento=s.corPreenchimento),s.espessuraTraco!==void 0&&(c.espessuraTraco=s.espessuraTraco),s.opacidadePreenchimento!==void 0&&(c.opacidadePreenchimento=s.opacidadePreenchimento),s.dashArray&&(c.dashArray=s.dashArray),this.estiloDesenho={...this.estiloDesenho,...c},this.p.emitir("cad-conta-gotas",{cor:l??s.corPreenchimento??"",feicao:i,estilo:c})}}class Wn{constructor(t){f(this,"posicoes",new Map);this.p=t}lista(t){var o;const e=(o=this.p.obterLayerManager().getLayerDef(t))==null?void 0:o.dados;return Array.isArray(e==null?void 0:e.feicoes)?e.feicoes:[]}posicaoDe(t){const e=this.lista(t),o=this.posicoes.get(t);if(o&&o.lista===e)return o.pos;const a=new Map;for(let i=0;i<e.length;i++)a.set(e[i].id,i);return this.posicoes.set(t,{lista:e,pos:a}),a}buscar(t,e){const o=this.lista(t),a=this.posicaoDe(t).get(e),i=a===void 0?void 0:o[a];if(i&&i.id===e)return i;if(a===void 0)return;this.posicoes.delete(t);const r=this.posicaoDe(t).get(e);return r===void 0?void 0:o[r]}garantirCamada(t,e){const o=this.p.obterLayerManager(),a=o.getLayerDef(t);if(a&&a.tipo!==G)return!1;const i=o.getOrCreateLayer(t,G,(e==null?void 0:e.nome)??t);return e!=null&&e.nome&&(i.nome=e.nome),e!=null&&e.estilo&&(i.estilo={...i.estilo,...e.estilo}),(e==null?void 0:e.interativo)!==void 0&&(i.interativo=e.interativo),(e==null?void 0:e.zIndex)!==void 0&&o.setLayerZIndex(t,e.zIndex),(e==null?void 0:e.opacidade)!==void 0&&o.setLayerOpacity(t,e.opacidade),o.ensurePanes(),!0}definirFeicoes(t,e,o){if(!this.garantirCamada(t,o))return{aceitas:0,recusadas:["camada existente não é de feições"]};const a=[],i=new Map;return(Array.isArray(e)?e:[]).forEach((r,s)=>{const c=Vt(r,t,this.p.opcoesNormalizacao());c?i.set(c.id,c):a.push(String((r==null?void 0:r.id)??`#${s}`))}),this.p.obterLayerManager().setLayerData(t,{feicoes:[...i.values()]}),this.p.aposDados(),{aceitas:i.size,recusadas:a}}adicionarFeicao(t,e,o){return this.aplicar(t,{adicionar:[e]},o).adicionadas[0]??null}atualizarFeicao(t,e,o,a){return this.aplicar(t,{atualizar:[{...o,id:e}]},a).atualizadas[0]??null}substituir(t,e){this.p.obterLayerManager().getLayerDef(t)&&this.aplicar(t,{adicionar:[e]})}removerFeicao(t,e){return this.aplicar(t,{remover:[e]}).resultado.removidas>0}aplicarLote(t,e,o){return this.aplicar(t,e,o).resultado}mesclar(t,e,o,a){const i=a&&e.propriedades&&typeof e.propriedades=="object"?{...e.propriedades}:{...t.propriedades,...e.propriedades};return Vt({...t,...e,id:t.id,estilo:{...t.estilo,...e.estilo},propriedades:i},o,this.p.opcoesNormalizacao())}aplicar(t,e,o={}){const a={adicionadas:0,atualizadas:0,removidas:0,recusadas:[]},i=[],r=[],s=Array.isArray(e==null?void 0:e.adicionar)?e.adicionar:[],c=Array.isArray(e==null?void 0:e.atualizar)?e.atualizar:[],l=Array.isArray(e==null?void 0:e.remover)?e.remover:[],d=(M,z)=>String((M==null?void 0:M.id)??`#${z}`),h=[],u=M=>(a.recusadas.push(...h),M),m=[];s.forEach((M,z)=>{const D=Vt(M,t,this.p.opcoesNormalizacao());D?m.push(D):h.push(d(M,z))});const v=this.p.obterLayerManager(),p=v.getLayerDef(t);if(!(!p||p.tipo===G)||!p&&m.length===0)return c.forEach((M,z)=>a.recusadas.push(d(M,z))),m.forEach(M=>h.push(M.id)),u({resultado:a,adicionadas:i,atualizadas:r});if((m.length>0||p)&&!this.garantirCamada(t,o))return m.forEach(M=>h.push(M.id)),u({resultado:a,adicionadas:i,atualizadas:r});const A=this.lista(t),k=this.posicaoDe(t),S=A.slice(),L=[],x=[];let P=!1;for(const M of l){const z=String(M),D=k.get(z);D===void 0||S[D]===null||(S[D]=null,L.push(z),a.removidas++,P=!0)}c.forEach((M,z)=>{const D=M&&typeof M=="object"&&M.id!==void 0&&M.id!==null?String(M.id):"",_=k.get(D),R=_===void 0?null:S[_],F=R?this.mesclar(R,M,t,!!o.substituirPropriedades):null;if(!F||_===void 0){a.recusadas.push(D||d(M,z));return}S[_]=F,x.push(F),r.push(F),a.atualizadas++});for(const M of m){const z=k.get(M.id);z!==void 0&&S[z]!==null?S[z]=M:(k.set(M.id,S.length),S.push(M)),x.push(M),i.push(M),a.adicionadas++}if(x.length===0&&L.length===0)return u({resultado:a,adicionadas:i,atualizadas:r});const C=P?S.filter(M=>M!==null):S,I={feicoes:C,delta:{base:A,mudadas:x,removidas:L}};return v.setLayerData(t,I),delete I.delta,P?this.posicoes.delete(t):this.posicoes.set(t,{lista:C,pos:k}),this.p.aposDados(),u({resultado:a,adicionadas:i,atualizadas:r})}}const Ta="cm-vertex-edit-hud",at="cad-edicao-vertices",Ot="#facc15",fe="#f472b6",Zn="#22d3ee",Xn=600,Yn=100,Kn=24,Jn=2500,me=(n,t)=>n===t||JSON.stringify(n)===JSON.stringify(t);class Oa{constructor(t){f(this,"feicaoAtual",null);f(this,"base",null);f(this,"inicial",null);f(this,"historico",[]);f(this,"refeitos",[]);f(this,"pts",[]);f(this,"alcas",[]);f(this,"fantasmas",[]);f(this,"alcasBezier",[]);f(this,"marcadorSnap",null);f(this,"hud",null);f(this,"grupo",null);f(this,"ultimaInsercao",0);f(this,"selecionado",null);f(this,"arrastando",0);f(this,"gravando",!1);f(this,"retangulo",!1);f(this,"avisoTimer",null);f(this,"aoZoom",()=>{this.feicaoAtual&&this.arrastando===0&&this.reconstruir()});f(this,"aoTecla",t=>{if(!this.feicaoAtual||t.defaultPrevented||Mt(t))return;const e=t.ctrlKey||t.metaKey,o=t.key.toLowerCase();if(e&&!t.altKey&&o==="z")t.shiftKey?this.refazer():this.desfazer();else if(e&&!t.altKey&&o==="y")this.refazer();else if(t.key==="Delete"||t.key==="Backspace"){if(this.selecionado===null)return;this.excluir(this.selecionado)}else if(t.key==="Enter")this.parar();else return;t.preventDefault()});this.dep=t}get ativo(){return this.feicaoAtual!==null}get ehCirculo(){var t;return((t=this.feicaoAtual)==null?void 0:t.geometria.tipo)==="Circle"}get feicao(){return this.feicaoAtual}get noSelecionado(){return this.selecionado}get podeDesfazer(){return this.historico.length>0}get podeRefazer(){return this.refeitos.length>0}iniciar(t){this.parar(),this.feicaoAtual=t,this.base=t,this.inicial=t,this.historico=[],this.refeitos=[],this.selecionado=null,this.pts=it(t.geometria).map(o=>[o[0],o[1]]),this.retangulo=this.detectarRetangulo();const e=this.dep.map;if(!e.getPane(at)){const o=e.createPane(at);o.style.zIndex="9000"}this.grupo=b.layerGroup().addTo(e),e.on("zoomend",this.aoZoom),window.addEventListener("keydown",this.aoTecla),this.montarHud(),this.reconstruir()}parar(){var e,o;const t=this.feicaoAtual;t&&(this.feicaoAtual=null,this.base=null,this.inicial=null,this.historico=[],this.refeitos=[],this.selecionado=null,this.arrastando=0,this.alcas=[],this.fantasmas=[],this.alcasBezier=[],this.dep.map.off("zoomend",this.aoZoom),window.removeEventListener("keydown",this.aoTecla),this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=null,(e=this.grupo)==null||e.remove(),this.grupo=null,this.marcadorSnap=null,(o=this.hud)==null||o.remove(),this.hud=null,this.dep.aoEncerrar(t))}cancelar(){const t=this.feicaoAtual,e=this.inicial;if(!(!t||!e)){if(!me(e.geometria,t.geometria)){const o={...t,geometria:e.geometria};this.dep.previsualizar(o),this.gravar(o)}this.parar()}}sincronizar(t){if(!(!this.feicaoAtual||this.feicaoAtual.id!==t.id)){if(this.gravando){this.feicaoAtual=t,this.base=t,this.ehCirculo&&this.circuloCompativel(t)||(this.pts=it(t.geometria).map(e=>[e[0],e[1]])),this.retangulo=this.detectarRetangulo(),this.reconstruir();return}if(this.arrastando>0){this.feicaoAtual={...t,geometria:this.feicaoAtual.geometria};return}if(this.base&&me(t.geometria,this.base.geometria)){this.feicaoAtual=t,this.base=t;return}this.feicaoAtual=t,this.base=t,this.inicial=t,this.historico=[],this.refeitos=[],this.selecionado=null,this.pts=it(t.geometria).map(e=>[e[0],e[1]]),this.retangulo=this.detectarRetangulo(),this.reconstruir()}}circuloCompativel(t){const e=t.geometria;return e.tipo!=="Circle"||this.pts.length<2?!1:e.centro[0]===this.pts[0][0]&&e.centro[1]===this.pts[0][1]&&Math.abs(g.distanciaMetros(this.pts[0],this.pts[1])-e.raioMetros)<.01}atualizarSnapNoHud(){var e;const t=(e=this.hud)==null?void 0:e.querySelector('[data-campo="snap"]');t&&(t.textContent=`Snap ${this.dep.snapLigado()?"on":"off"} (S)`)}geometriaAtual(){return xe(this.feicaoAtual.geometria,this.pts)}feicaoComPontos(){return{...this.feicaoAtual,geometria:this.geometriaAtual()}}detectarRetangulo(){var c;const t=(c=this.feicaoAtual)==null?void 0:c.geometria;if(!t||t.tipo!=="Polygon"||t.curva||this.pts.length!==4)return!1;const[e,o,a,i]=this.pts,r=e[0]===o[0]&&o[1]===a[1]&&a[0]===i[0]&&i[1]===e[1],s=e[1]===o[1]&&o[0]===a[0]&&a[1]===i[1]&&i[0]===e[0];return r||s}reconstruir(){var e;if((e=this.grupo)==null||e.clearLayers(),this.alcas=[],this.fantasmas=[],this.alcasBezier=[],!this.feicaoAtual||!this.grupo)return;this.selecionado!==null&&this.selecionado>=this.pts.length&&(this.selecionado=null);const t=this.feicaoAtual.geometria;if(this.pts.forEach((o,a)=>{const i=this.criarAlca(o,a);this.alcas.push(i),this.grupo.addLayer(i)}),this.criarAlcasBezier(),t.tipo!=="Point")for(const[o,a]of Ne(this.geometriaAtual())){if(!this.segmentoLongoNaTela(o,a))continue;const i=this.criarFantasma(o,a);this.fantasmas.push(i),this.grupo.addLayer(i.marker)}this.atualizarHud()}segmentoLongoNaTela(t,e){const o=this.pts[t],a=this.pts[e];if(!o||!a)return!1;const i=this.dep.map.latLngToContainerPoint(o),r=this.dep.map.latLngToContainerPoint(a);return Math.hypot(i.x-r.x,i.y-r.y)>=Kn}icone(t,e,o){return b.divIcon({className:`custom-leaflet-marker ${t}`,iconSize:[e,e],html:`<div style="width:${e}px;height:${e}px;box-sizing:border-box;${o}"></div>`})}iconeAlca(t){const e=this.ehCirculo&&t===1,o=this.selecionado===t,a=o?Zn:Ot,i=o?"2px solid #fff;box-shadow:0 0 0 2px #0e7490":"2px solid #111";return this.icone("cad-vertex-handle",12,`background:${a};border:${i};border-radius:${e?"50%":"2px"};cursor:${e?"ew-resize":"move"}`)}criarAlca(t,e){const o=b.marker(t,{icon:this.iconeAlca(e),draggable:!0,pane:at,keyboard:!1});return o.on("dragstart",()=>{this.arrastando++}),o.on("drag",a=>{const i=a.originalEvent;this.aoArrastar(o,e,!!(i!=null&&i.shiftKey))}),o.on("dragend",()=>{this.arrastando=Math.max(0,this.arrastando-1),this.esconderSnap(),this.selecionado=e,this.retangulo=this.detectarRetanguloDe(this.pts),this.confirmar(this.feicaoComPontos()),this.atualizarSelecaoVisual()}),o.on("click",a=>{b.DomEvent.stopPropagation(a.originalEvent),this.selecionarNo(e)}),o.on("contextmenu",a=>{b.DomEvent.preventDefault(a.originalEvent),b.DomEvent.stopPropagation(a.originalEvent),this.excluir(e)}),o.on("dblclick",a=>{b.DomEvent.stopPropagation(a.originalEvent),!(Date.now()-this.ultimaInsercao<Xn)&&this.alternarSuave(e)}),o}detectarRetanguloDe(t){const e=this.pts;this.pts=t;try{return this.detectarRetangulo()}finally{this.pts=e}}selecionarNo(t){this.selecionado=t!==null&&t>=0&&t<this.pts.length?t:null,this.atualizarSelecaoVisual(),this.atualizarBotoes()}atualizarSelecaoVisual(){this.alcas.forEach((t,e)=>t.setIcon(this.iconeAlca(e))),this.atualizarBotoes()}criarAlcasBezier(){var e;const t=(e=this.feicaoAtual)==null?void 0:e.geometria;!t||t.tipo!=="LineString"&&t.tipo!=="Polygon"||this.pts.forEach((o,a)=>this.completarAlcasDoNo(a))}posicaoDaAlca(t,e,o){var r,s;const a=(s=(r=X(t))==null?void 0:r[e])==null?void 0:s[o];if(a)return{pos:a,latente:!1};if(this.pts.length>Qo)return null;const i=ta(t,e,o);return i?{pos:i,latente:!0}:null}iconeDaAlca(t){return this.icone("cad-bezier-handle",10,t?`background:transparent;border:2px dashed ${fe};opacity:.6;border-radius:50%;cursor:move`:`background:#fff;border:2px solid ${fe};border-radius:50%;cursor:move`)}completarAlcasDoNo(t){var a;const e=this.feicaoAtual&&this.geometriaAtual(),o=e&&((a=mt(e))==null?void 0:a[t]);if(!(!e||!o||!this.grupo))for(const i of["entrada","saida"]){const r=this.posicaoDaAlca(e,t,i);if(!r||this.alcasBezier.some(d=>d.i===t&&d.qual===i))continue;const s=b.polyline([o.ponto,r.pos],{pane:at,color:fe,weight:1,opacity:r.latente?.35:.8,dashArray:r.latente?"3 3":void 0,interactive:!1}),c=b.marker(r.pos,{icon:this.iconeDaAlca(r.latente),draggable:!0,pane:at,keyboard:!1}),l={marker:c,haste:s,i:t,qual:i,latente:r.latente};c.on("dragstart",()=>{this.arrastando++}),c.on("drag",d=>{const h=d.originalEvent;this.aoArrastarAlca(l,!(h!=null&&h.shiftKey))}),c.on("dragend",()=>{this.arrastando=Math.max(0,this.arrastando-1),this.confirmar(this.feicaoAtual)}),this.alcasBezier.push(l),this.grupo.addLayer(s),this.grupo.addLayer(c)}}sincronizarAlcasBezier(){const t=this.feicaoAtual&&this.geometriaAtual(),e=t&&mt(t);if(!(!t||!e))for(const o of this.alcasBezier){const a=this.posicaoDaAlca(t,o.i,o.qual);if(!a||!e[o.i])continue;const{lat:i,lng:r}=o.marker.getLatLng();(i!==a.pos[0]||r!==a.pos[1])&&o.marker.setLatLng(a.pos),o.haste.setLatLngs([e[o.i].ponto,a.pos]),o.latente!==a.latente&&(o.latente=a.latente,o.marker.setIcon(this.iconeDaAlca(a.latente)),o.haste.setStyle({opacity:a.latente?.35:.8,dashArray:a.latente?"3 3":void 0}))}}aoArrastarAlca(t,e){const o=this.feicaoAtual;if(!o)return;const{lat:a,lng:i}=t.marker.getLatLng(),r=ea(o.geometria,t.i,t.qual,[a,i],e);this.feicaoAtual={...o,geometria:r},this.completarAlcasDoNo(t.i),this.sincronizarAlcasBezier(),this.dep.previsualizar(this.feicaoAtual),this.atualizarHud()}alternarSuave(t){const e=this.feicaoAtual;if(!e)return;const o=oa(e.geometria,t);o!==e.geometria&&(this.feicaoAtual={...e,geometria:o},this.reconstruir(),this.dep.previsualizar(this.feicaoAtual),this.confirmar(this.feicaoAtual))}criarFantasma(t,e){const o=b.marker(lt(this.geometriaAtual(),t,e),{icon:this.icone("cad-vertex-ghost",9,`background:${Ot};opacity:.45;border:1px solid #111;border-radius:50%;cursor:copy`),draggable:!0,pane:at,keyboard:!1});return o.on("click",a=>{b.DomEvent.stopPropagation(a.originalEvent),this.ultimaInsercao=Date.now(),this.inserir(t)}),o.on("drag",()=>this.aoArrastarFantasma(o,t)),o.on("dragend",()=>{this.esconderSnap(),this.ultimaInsercao=Date.now(),this.inserir(t,this.posicaoDoFantasma(o))}),{marker:o,i:t,j:e}}posicaoDoFantasma(t){var a;const e=this.feicaoAtual,o=[t.getLatLng().lat,t.getLatLng().lng];return!e||!this.dep.snapLigado()?o:((a=this.dep.buscarSnap(o,{feicaoId:e.id,camadaId:e.camadaId}))==null?void 0:a.coordenada)??o}aoArrastarFantasma(t,e){const o=this.posicaoDoFantasma(t);o[0]!==t.getLatLng().lat||o[1]!==t.getLatLng().lng?(t.setLatLng(o),this.mostrarSnap(o)):this.esconderSnap();const a=this.comInsercao(e,o);a&&(this.dep.previsualizar(a.feicao),this.atualizarHud(a.feicao.geometria))}aoArrastar(t,e,o=!1){var s;const a=this.feicaoAtual;if(!a)return;let i=[t.getLatLng().lat,t.getLatLng().lng];const r=this.dep.snapLigado()?this.dep.buscarSnap(i,{feicaoId:a.id,camadaId:a.camadaId,vertice:e}):null;if(r?(i=r.coordenada,t.setLatLng(i),this.mostrarSnap(i)):this.esconderSnap(),a.geometria.tipo==="Circle"&&e===0){const c=i[0]-this.pts[0][0],l=i[1]-this.pts[0][1];this.pts[1]=[this.pts[1][0]+c,this.pts[1][1]+l],(s=this.alcas[1])==null||s.setLatLng(this.pts[1])}this.retangulo&&!o?this.moverCantoDoRetangulo(e,i):this.pts[e]=i;for(const c of this.fantasmas)this.retangulo&&!o?c.marker.setLatLng(lt(this.geometriaAtual(),c.i,c.j)):(c.i===e||c.j===e)&&c.marker.setLatLng(lt(this.geometriaAtual(),c.i,c.j));this.dep.previsualizar(this.feicaoComPontos()),this.atualizarAlcasDoNo(e),this.atualizarHud()}moverCantoDoRetangulo(t,e){var s,c;const o=this.pts[(t+2)%4],a=(t+1)%4,i=(t+3)%4,r=this.pts[a][0]===this.pts[t][0];this.pts[t]=e,this.pts[a]=r?[e[0],o[1]]:[o[0],e[1]],this.pts[i]=r?[o[0],e[1]]:[e[0],o[1]],(s=this.alcas[a])==null||s.setLatLng(this.pts[a]),(c=this.alcas[i])==null||c.setLatLng(this.pts[i])}atualizarAlcasDoNo(t){this.sincronizarAlcasBezier()}comInsercao(t,e){const o=this.feicaoAtual;if(!o||this.pts.length===0)return null;const a=this.geometriaAtual(),i=lt(a,t,(t+1)%this.pts.length),r=Ko(a,t,i);if(r===a)return null;const s=it(r).map(c=>[c[0],c[1]]);return e&&Number.isFinite(e[0])&&Number.isFinite(e[1])&&(s[t+1]=e),{feicao:{...o,geometria:xe(r,s)},pts:s}}inserir(t,e){const o=this.comInsercao(t,e);if(!o){this.reconstruir(),this.feicaoAtual&&this.dep.previsualizar(this.feicaoComPontos());return}this.pts=o.pts,this.feicaoAtual=o.feicao,this.retangulo=!1,this.selecionado=t+1,this.reconstruir(),this.dep.previsualizar(o.feicao),this.confirmar(o.feicao)}confirmar(t){const e=this.base;e&&!me(e.geometria,t.geometria)&&(this.historico.push(e),this.historico.length>Yn&&this.historico.shift(),this.refeitos=[]),this.feicaoAtual=t,this.base=t,this.gravar(t),this.atualizarBotoes()}gravar(t){this.gravando=!0;try{this.dep.aoGesto(t)}finally{this.gravando=!1}}excluir(t){if(!this.feicaoAtual)return!1;const o=this.geometriaAtual(),a=Jo(o,t);if(!a)return o.tipo==="Circle"?this.avisar("Círculo: mova o centro ou a borda (não há nós para excluir)."):o.tipo==="Point"?this.avisar("Um ponto tem um único nó."):this.avisar(`Mínimo de ${At(o)} nós: não dá para excluir mais.`),!1;this.pts=it(a).map(r=>[r[0],r[1]]),this.retangulo=!1,this.selecionado=null,this.reconstruir();const i=this.feicaoComPontos();return this.dep.previsualizar(i),this.confirmar(i),!0}excluirSelecionado(){return this.selecionado===null?(this.avisar("Clique num nó para selecioná-lo e então exclua."),!1):this.excluir(this.selecionado)}excluirVertice(t){const e=this.pts.length;return this.excluir(t),this.pts.length<e}inserirVerticeApos(t){t<0||t>=this.pts.length||this.inserir(t)}desfazer(){const t=this.historico.pop();return!t||!this.base?(this.avisar("Nada a desfazer."),!1):(this.refeitos.push(this.base),this.aplicarEstado(t),!0)}refazer(){const t=this.refeitos.pop();return!t||!this.base?(this.avisar("Nada a refazer."),!1):(this.historico.push(this.base),this.aplicarEstado(t),!0)}aplicarEstado(t){if(!this.feicaoAtual)return;const e={...this.feicaoAtual,geometria:t.geometria};this.feicaoAtual=e,this.base=e,this.pts=it(e.geometria).map(o=>[o[0],o[1]]),this.retangulo=this.detectarRetangulo(),this.reconstruir(),this.dep.previsualizar(e),this.gravar(e),this.atualizarBotoes()}mostrarSnap(t){this.grupo&&(this.marcadorSnap?this.marcadorSnap.setLatLng(t):this.marcadorSnap=b.marker(t,{icon:b.divIcon({className:"custom-leaflet-marker cm-snap",iconSize:[18,18],html:'<div style="width:18px;height:18px;box-sizing:border-box;border:2px solid #22d3ee;transform:rotate(45deg);border-radius:2px"></div>'}),interactive:!1,pane:at,keyboard:!1}).addTo(this.grupo))}esconderSnap(){var t;this.marcadorSnap&&((t=this.grupo)==null||t.removeLayer(this.marcadorSnap),this.marcadorSnap=null)}montarHud(){var d;const t=this.dep.map.getContainer(),e=document.createElement("div");e.id=Ta,e.style.cssText=Ge+"gap:8px;align-items:center;padding:4px 10px;border-radius:8px;background:rgba(15,23,42,.92);color:#fff;font:11px var(--ui-fonte-base,sans-serif);border:1px solid rgba(255,255,255,.2);pointer-events:auto";const o=h=>{const u=document.createElement("span");return u.dataset.campo=h,u},a=(h,u,m,v,p=!1)=>{const y=document.createElement("button");return y.type="button",y.dataset.acao=h,y.textContent=u,y.title=m,y.style.cssText=`padding:2px 8px;font-size:11px;border-radius:4px;border:1px solid ${p?Ot:"rgba(255,255,255,.3)"};background:${p?Ot:"transparent"};color:${p?"#111":"#fff"};font-weight:600;cursor:pointer`,y.addEventListener("click",v),y},i=(d=this.feicaoAtual)==null?void 0:d.geometria.tipo,r=document.createElement("strong");r.textContent=this.ehCirculo?"Círculo":"Editando";const s=o("snap");s.style.cursor="pointer",s.style.whiteSpace="nowrap",s.title="Alternar snap (S). Alt desliga temporariamente.",s.style.opacity=".85",s.addEventListener("click",()=>this.dep.alternarSnap());const c=o("dica");c.style.opacity=".7",c.textContent=i==="Circle"?"Ctrl+Z desfaz · Enter conclui":i==="Point"?"Arraste para mover · Ctrl+Z desfaz · Enter conclui":"Arraste ○ p/ curvar · ponto do meio: novo nó · botão direito ou Delete no nó: excluir · 2× clique: curva/canto · Shift: alça livre · Ctrl+Z desfaz",c.title="Alças pontilhadas ainda são retas. Shift vale durante o arraste. Enter, Esc ou Concluir sai; clicar fora não sai.",c.style.fontSize="10px";const l=o("aviso");l.style.color="#fbbf24",l.setAttribute("role","status"),e.append(r,o("nos"),o("medida"),s,c,l),e.append(a("desfazer","Desfazer","Desfazer o último gesto (Ctrl+Z)",()=>this.desfazer())),e.append(a("refazer","Refazer","Refazer (Ctrl+Shift+Z ou Ctrl+Y)",()=>this.refazer())),(i==="LineString"||i==="Polygon")&&e.append(a("excluir-no","Excluir nó","Exclui o nó selecionado (Delete); clique num nó para selecioná-lo",()=>this.excluirSelecionado())),e.append(a("cancelar","Cancelar","Descartar tudo o que foi alterado nesta edição",()=>this.cancelar())),e.append(a("concluir","Concluir","Concluir a edição (Enter ou Esc)",()=>this.parar(),!0)),b.DomEvent.disableClickPropagation(e),b.DomEvent.disableScrollPropagation(e),t.appendChild(e),this.hud=e,this.atualizarSnapNoHud(),this.atualizarBotoes()}atualizarBotoes(){if(!this.hud)return;const t={desfazer:this.historico.length>0,refazer:this.refeitos.length>0,"excluir-no":this.selecionado!==null};for(const[e,o]of Object.entries(t)){const a=this.hud.querySelector(`[data-acao="${e}"]`);a&&(a.disabled=!o,a.style.opacity=o?"1":".4",a.style.cursor=o?"pointer":"default")}}avisar(t){var o;const e=(o=this.hud)==null?void 0:o.querySelector('[data-campo="aviso"]');e&&(e.textContent=t,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=setTimeout(()=>{e.textContent="",this.avisoTimer=null},Jn))}atualizarHud(t){if(!this.hud||!this.feicaoAtual)return;const e=t??this.geometriaAtual(),o=this.hud.querySelector('[data-campo="nos"]'),a=this.hud.querySelector('[data-campo="medida"]');o&&(o.textContent=e.tipo==="Circle"?"Centro move · borda = raio":`${this.pts.length} nós`),a&&(e.tipo==="Polygon"?a.textContent=`Área ${g.formatarArea(g.areaDaGeometria(e)??0)} · perím. ${g.formatarExtensao(g.extensaoDaGeometria(e)??0)}`:e.tipo==="LineString"?a.textContent=g.formatarExtensao(g.extensaoDaGeometria(e)??0):e.tipo==="Point"?a.textContent=`${e.coordenada[0].toFixed(6)}, ${e.coordenada[1].toFixed(6)}`:e.tipo==="Circle"&&(a.textContent=`Raio: ${g.formatarExtensao(e.raioMetros)} · Área: ${g.formatarArea(g.areaDaGeometria(e)??0)}`))}vertices(){return this.pts.map(t=>[t[0],t[1]])}get totalAlcasBezier(){return this.alcasBezier.length}arrastarAlcaPara(t,e,o,a=!1){const i=this.alcasBezier.find(r=>r.i===t&&r.qual===e);i&&(i.marker.setLatLng(o),this.aoArrastarAlca(i,!a),this.confirmar(this.feicaoAtual))}alternarSuavidadeDoNo(t){this.alternarSuave(t)}arrastarPara(t,e,o=!1){const a=this.alcas[t];a&&(a.setLatLng(e),this.aoArrastar(a,t,o),a.fire("dragend"))}}class Qn{constructor(t){f(this,"editor",null);f(this,"pararDeVigiarCamada",null);this.p=t}get editando(){var t;return!!((t=this.editor)!=null&&t.ativo)}get editorAtual(){return this.editor}get feicao(){var t;return(t=this.editor)!=null&&t.ativo?this.editor.feicao:null}sincronizar(t){var e;(e=this.editor)==null||e.sincronizar(t)}atualizarSnapNoHud(){var t;(t=this.editor)==null||t.atualizarSnapNoHud()}iniciarEdicao(t,e){var d,h,u;const o=this.p.buscar(t,e);if(!o||o.excluida)return{ok:!1,motivo:"inexistente"};const a=this.p.obterLayerManager().getLayerDef(t),i=be(o,!!(a!=null&&a.bloqueada));if(i)return this.p.emitir("cad-edicao-recusada",{motivo:i,feicao:o}),{ok:!1,motivo:i};const r=this.p.obterMapa();if(!r)return{ok:!1,motivo:"sem-mapa"};this.p.desativarFerramenta(),(d=this.editor)==null||d.parar(),this.p.aplicarMargensHud(),this.p.selecionarUma({camadaId:t,id:e}),this.p.fecharPopup();const s=this.p.obterLayerManager(),c=N.get(G),l=new Oa({map:r,snapLigado:()=>this.p.snapAtivo(),alternarSnap:()=>this.p.alternarSnap(),buscarSnap:(m,v)=>this.p.buscarSnapEm(m,v),previsualizar:m=>{const v=s.getLayerInstance(m.camadaId);v&&c&&c.previsualizar(v,m)},aoGesto:m=>{this.p.substituir(m.camadaId,m),this.p.emitir("cad-feicao-atualizada",{camadaId:m.camadaId,feicao:m})},aoEncerrar:m=>{var p,y;this.editor=null,this.vigiarCamada(null),(y=(p=this.p).aoEdicao)==null||y.call(p,!1);const v=this.p.buscar(m.camadaId,m.id)??m;this.p.emitir("cad-edicao-concluida",{feicao:v}),this.p.reabrirPopupDaSelecao()}});return this.editor=l,l.iniciar(o),(u=(h=this.p).aoEdicao)==null||u.call(h,!0),this.vigiarCamada(s),this.p.emitir("cad-edicao-iniciada",{feicao:o}),{ok:!0}}vigiarCamada(t){var e;(e=this.pararDeVigiarCamada)==null||e.call(this),this.pararDeVigiarCamada=null,t&&(this.pararDeVigiarCamada=t.onChange(()=>{const o=this.feicao;if(!o)return;const a=t.getLayerDef(o.camadaId);(!a||!a.visivel||a.bloqueada)&&this.parar()}))}selecionadaEditavel(){const t=this.p.selecionadas();if(t.length!==1)return null;const e=this.p.obterLayerManager().getLayerDef(t[0].camadaId);return be(t[0],!!(e!=null&&e.bloqueada))===null?t[0]:null}editarSelecionada(){if(this.editando)return!1;const t=this.selecionadaEditavel();return!!t&&this.iniciarEdicao(t.camadaId,t.id).ok}alternarEdicaoDaSelecao(){if(this.editando)return this.parar(),{ok:!0};const t=this.p.selecionadas();return t.length!==1?(this.p.emitir("cad-edicao-recusada",{motivo:"sem-selecao",feicao:null}),{ok:!1,motivo:"sem-selecao"}):this.iniciarEdicao(t[0].camadaId,t[0].id)}parar(){var t;(t=this.editor)==null||t.parar()}}const je=10,vt=(n,t)=>Math.hypot(n.x-t.x,n.y-t.y);function uo(n,t,e){const o=e.x-t.x,a=e.y-t.y,i=o*o+a*a,r=i===0?0:Math.max(0,Math.min(1,((n.x-t.x)*o+(n.y-t.y)*a)/i));return{t:r,d:Math.hypot(n.x-(t.x+r*o),n.y-(t.y+r*a))}}function qa(n,t,e,o={},a){const i=o.toleranciaPx??je,r=o.vertice!==!1,s=o.meio!==!1,c=o.aresta!==!1;let l=null,d=null,h=null;const u=(m,v)=>!m||v.distanciaPx<m.distanciaPx?v:m;for(const m of t){if(m.excluida||m.oculta)continue;const v=!!a&&a.feicaoId===m.id&&(a.camadaId===void 0||a.camadaId===m.camadaId),p=m.geometria,y={feicaoId:m.id,camadaId:m.camadaId};if(p.tipo==="Point"||p.tipo==="Text"||p.tipo==="Circle"){if(!r||v)continue;const L=p.tipo==="Circle"?p.centro:p.coordenada,x=vt(n,e(L));x<=i&&(l=u(l,{tipo:"vertice",coordenada:L,distanciaPx:x,...y}));continue}if(v&&(p.tipo==="LineString"||p.tipo==="Polygon")&&p.curva)continue;const A=p.tipo==="LineString"||p.tipo==="Polygon"?X(p):null;if(A){if(r)for(const L of A){const x=vt(n,e(L.ponto));x<=i&&(l=u(l,{tipo:"vertice",coordenada:L.ponto,distanciaPx:x,...y}))}if(s)for(const[L,x]of Ne(p)){const P=lt(p,L,x),C=vt(n,e(P));C<=i&&(d=u(d,{tipo:"meio",coordenada:P,distanciaPx:C,...y}))}if(c){const L=Z(p),x=L.map(e),P=[];for(let C=0;C<L.length-1;C++)P.push([C,C+1]);p.tipo==="Polygon"&&L.length>2&&P.push([L.length-1,0]);for(const[C,w]of P){const{t:I,d:M}=uo(n,x[C],x[w]);if(M<=i){const z=[L[C][0]+I*(L[w][0]-L[C][0]),L[C][1]+I*(L[w][1]-L[C][1])];h=u(h,{tipo:"aresta",coordenada:z,distanciaPx:M,...y})}}}continue}const k=p.tipo==="LineString"?g.partesDaLinha(p).map(L=>({pts:L,fechado:!1})):[{pts:Z(p),fechado:p.tipo==="Polygon"}],S=v?a.vertice:void 0;for(const{pts:L,fechado:x}of k){const P=L.map(e);if(r)for(let w=0;w<L.length;w++){if(w===S)continue;const I=vt(n,P[w]);I<=i&&(l=u(l,{tipo:"vertice",coordenada:L[w],distanciaPx:I,...y}))}if(!s&&!c)continue;const C=[];for(let w=0;w<L.length-1;w++)C.push([w,w+1]);x&&L.length>2&&C.push([L.length-1,0]);for(const[w,I]of C)if(!(S!==void 0&&(w===S||I===S))&&!(v&&S===void 0)){if(s){const M=Fe(L[w],L[I]),z=vt(n,e(M));z<=i&&(d=u(d,{tipo:"meio",coordenada:M,distanciaPx:z,...y}))}if(c){const{t:M,d:z}=uo(n,P[w],P[I]);if(z<=i){const D=[L[w][0]+M*(L[I][0]-L[w][0]),L[w][1]+M*(L[I][1]-L[w][1])];h=u(h,{tipo:"aresta",coordenada:D,distanciaPx:z,...y})}}}}}return l??d??h}class tr{constructor(t){this.p=t}candidatasEm(t,e){const o=this.p.obterMapa(),a=this.p.obterLayerManager(),i=N.get(G);if(!o||!i)return[];const r=o.latLngToContainerPoint(t),s=o.containerPointToLatLng([r.x-e,r.y+e]),c=o.containerPointToLatLng([r.x+e,r.y-e]),l={minLon:Math.min(s.lng,c.lng),maxLon:Math.max(s.lng,c.lng),minLat:Math.min(s.lat,c.lat),maxLat:Math.max(s.lat,c.lat)},d=[];for(const h of a.getLayers()){if(h.tipo!==G||!h.visivel)continue;const u=a.getLayerInstance(h.id);u&&d.push(...i.consultarProximas(u,l).filter(m=>this.p.desenhada(m)))}return d}buscarSnapEm(t,e){const o=this.p.obterMapa();if(!o)return null;const a=o.latLngToContainerPoint(t),i=this.candidatasEm(t,je);return qa({x:a.x,y:a.y},i,r=>o.latLngToContainerPoint(r),{},e)}feicaoSob(t,e){const o=this.p.obterMapa();if(!o)return null;const a=o.getContainer().getBoundingClientRect(),i=b.point(t-a.left,e-a.top),r=o.containerPointToLatLng(i),s=[r.lat,r.lng];return{feicao:wt({x:i.x,y:i.y},this.candidatasEm(s,8),l=>o.latLngToContainerPoint(l)),coordenada:s}}}class er{constructor(t){f(this,"hoverId",null);f(this,"hoverAgendado",!1);this.p=t}aoMoverMouse(t){if(t.buttons!==0||this.p.interacaoAtiva()){this.hoverId!==null&&(this.hoverId=null,this.p.emitir("cad-feicao-hover",{feicao:null}));return}if(this.hoverAgendado)return;this.hoverAgendado=!0;const{clientX:o,clientY:a}=t;let i=!1;const r=()=>{if(i)return;i=!0,this.hoverAgendado=!1;const s=this.p.feicaoSob(o,a),c=s!=null&&s.feicao?`${s.feicao.camadaId}\0${s.feicao.id}`:null;c!==this.hoverId&&(this.hoverId=c,this.p.emitir("cad-feicao-hover",{feicao:(s==null?void 0:s.feicao)??null}))};typeof requestAnimationFrame=="function"&&requestAnimationFrame(r),setTimeout(r,100)}menuContexto(t){if(this.p.botaoDireitoDaFerramenta())return;const e=this.p.feicaoSob(t.clientX,t.clientY);e&&this.p.emitir("cad-feicao-menu",{feicao:e.feicao,coordenada:e.coordenada,x:t.clientX,y:t.clientY})}duploClique(t){var a,i;if(this.p.interacaoAtiva())return;const e=this.p.feicaoSob(t.clientX,t.clientY);!(e!=null&&e.feicao)||this.p.emitir("cad-feicao-duplo-clique",{camadaId:e.feicao.camadaId,feicao:e.feicao,coordenada:e.coordenada},!0)===!0||!this.p.abrirPopup||((i=(a=this.p).popupNoDuploClique)==null?void 0:i.call(a))===!1||this.p.abrirPopup(e.feicao)}limpar(){this.hoverId=null}}const or=111320;function yt(n,t){return n.x>=t.x1&&n.x<=t.x2&&n.y>=t.y1&&n.y<=t.y2}function po(n,t,e){let o=0,a=1;const i=t.x-n.x,r=t.y-n.y,s=[-i,i,-r,r],c=[n.x-e.x1,e.x2-n.x,n.y-e.y1,e.y2-n.y];for(let l=0;l<4;l++)if(s[l]===0){if(c[l]<0)return!1}else{const d=c[l]/s[l];if(s[l]<0){if(d>a)return!1;d>o&&(o=d)}else{if(d<o)return!1;d<a&&(a=d)}}return!0}function fo(n,t){let e=!1;for(let o=0,a=t.length-1;o<t.length;a=o++){const i=t[o],r=t[a];i.y>n.y!=r.y>n.y&&n.x<(r.x-i.x)*(n.y-i.y)/(r.y-i.y)+i.x&&(e=!e)}return e}function mo(n,t,e){for(let o=1;o<n.length;o++)if(po(n[o-1],n[o],t))return!0;return e&&n.length>2&&po(n[n.length-1],n[0],t)}function ar(n,t,e){const o=e(n),a=e([n[0]+t/or,n[1]]);return Math.hypot(a.x-o.x,a.y-o.y)}function Fa(n,t,e,o){if(n.oculta)return!1;const a=n.geometria,i=o==="window";switch(a.tipo){case"Point":case"Text":return yt(e(a.coordenada),t);case"LineString":{const r=g.partesDaLinha(a).map(s=>s.map(e));return i?r.every(s=>s.every(c=>yt(c,t))):r.some(s=>s.some(c=>yt(c,t))||mo(s,t,!1))}case"Polygon":{const r=a.aneis.map(l=>l.map(e)),s=r[0];if(!s)return!1;if(i)return s.every(l=>yt(l,t));if(r.some(l=>l.some(d=>yt(d,t))||mo(l,t,!0)))return!0;const c={x:t.x1,y:t.y1};return fo(c,s)&&!r.slice(1).some(l=>fo(c,l))}case"Circle":{const r=e(a.centro),s=ar(a.centro,a.raioMetros,e);if(i)return r.x-s>=t.x1&&r.x+s<=t.x2&&r.y-s>=t.y1&&r.y+s<=t.y2;const c=Math.max(t.x1,Math.min(r.x,t.x2)),l=Math.max(t.y1,Math.min(r.y,t.y2));return Math.hypot(r.x-c,r.y-l)<=s}}}function $a(n,t){if(t.length<3||n.oculta)return!1;const e=a=>qe(a,[t]),o=n.geometria;switch(o.tipo){case"Point":case"Text":return e(o.coordenada);case"Circle":return e(o.centro);case"LineString":return g.partesDaLinha(o).some(a=>a.some(e));case"Polygon":{const a=o.aneis[0]??[];if(a.some(e))return!0;if(a.length<3)return!1;const i=a.reduce((r,s)=>[r[0]+s[0],r[1]+s[1]],[0,0]);return e([i[0]/a.length,i[1]/a.length])}}}class ir{constructor(t){this.p=t}selecionarNoLaco(t){const e=[];for(const o of this.p.obterLayerManager().getActiveSelectableLayers())if(o.tipo===G)for(const a of this.p.lista(o.id))this.p.desenhada(a)&&$a(a,t)&&e.push({camadaId:o.id,id:a.id});this.p.desativarFerramenta(),this.p.selecionar(e)}selecionarNaCaixa(t,e,o){const a=this.p.obterMapa();if(!a)return;const i=s=>a.latLngToContainerPoint(s),r=[];for(const s of this.p.obterLayerManager().getActiveSelectableLayers())if(s.tipo===G)for(const c of this.p.lista(s.id))this.p.desenhada(c)&&Fa(c,t,i,e)&&r.push({camadaId:s.id,id:c.id});o?this.p.alternarVarias(r):this.p.selecionar(r)}}function nr(n){return n.key!=="Enter"||n.defaultPrevented||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey?!1:!Mt(n)&&!bo(n)}class rr{constructor(t){f(this,"ouvintes",new Ut.ListenerBag);f(this,"aoTecla",t=>{try{if(!nr(t)||this.p.ocupado()||!this.p.atalhosValem())return;this.p.editarSelecionada()&&t.preventDefault()}catch(e){console.error("[ui-canvas-cad] falha no atalho Enter da edição",e)}});this.p=t}conectar(t=window){this.ouvintes.cleanup(),this.ouvintes.add(t,"keydown",this.aoTecla)}desconectar(){this.ouvintes.cleanup()}}class sr{constructor(t){f(this,"operacoes");f(this,"selecao");f(this,"popup");f(this,"edicao");f(this,"teclado");f(this,"consulta");f(this,"ponteiro");f(this,"regiao");f(this,"snap");f(this,"ferramentas");f(this,"versoes");f(this,"camera");f(this,"repositorio");f(this,"cursores");f(this,"margensHud",{});f(this,"aceitarOrigem",!1);f(this,"opcoesPopup",{copiarParaAreaDeTransferencia:!0});this.contexto=t,this.repositorio=new Wn({obterLayerManager:()=>this.contexto.obterLayerManager(),opcoesNormalizacao:()=>this.opcoesNormalizacao(),aposDados:()=>this.aposDados()}),this.consulta=new tr({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),desenhada:e=>this.desenhada(e)}),this.ponteiro=new er({emitir:(e,o,a)=>this.contexto.emitir(e,o,a),feicaoSob:(e,o)=>this.consulta.feicaoSob(e,o),interacaoAtiva:()=>this.ferramentas.ativo||this.edicao.editando,popupNoDuploClique:()=>this.modoPopups()!=="desligado",botaoDireitoDaFerramenta:()=>this.ferramentas.ativo?(this.ferramentas.botaoDireito(),!0):!1,abrirPopup:e=>this.popup.abrir(e)}),this.regiao=new ir({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),desativarFerramenta:()=>this.ferramentas.desativarFerramenta(),selecionar:e=>this.selecao.selecionar(e),alternarVarias:e=>this.selecao.alternarVarias(e)}),this.edicao=new Qn({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o)=>this.contexto.emitir(e,o),buscar:(e,o)=>this.buscar(e,o),substituir:(e,o)=>this.substituir(e,o),desativarFerramenta:()=>this.ferramentas.desativarFerramenta(),aplicarMargensHud:()=>this.aplicarMargensHud(),selecionarUma:e=>this.selecao.selecionar([e]),selecionadas:()=>this.selecao.obter(),aoEdicao:e=>{var o,a;return(a=(o=this.contexto).aoEdicao)==null?void 0:a.call(o,e)},fecharPopup:()=>this.popup.fechar(),reabrirPopupDaSelecao:()=>{if(this.modoPopups()!=="automatico")return;const e=this.selecao.obter();e.length===1&&this.popup.abrir(e[0])},snapAtivo:()=>this.snap.ativo,alternarSnap:()=>this.snap.alternar(),buscarSnapEm:(e,o)=>this.buscarSnapEm(e,o)}),this.teclado=new rr({ocupado:()=>this.edicao.editando||this.ferramentas.ativo,atalhosValem:()=>this.atalhosValem(),editarSelecionada:()=>this.edicao.editarSelecionada()}),this.versoes=new kn({obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o)=>this.contexto.emitir(e,o),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),aposDados:()=>this.aposDados()},t.regra??new g.RegraVersoes),this.ferramentas=new Un({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o,a)=>this.contexto.emitir(e,o,a),aoFerramenta:e=>{var o,a;return(a=(o=this.contexto).aoFerramenta)==null?void 0:a.call(o,e)},lista:e=>this.lista(e),adicionarFeicao:(e,o)=>this.adicionarFeicao(e,o),buscarSnapEm:e=>this.buscarSnapEm(e),snapAtivo:()=>this.snap.ativo,prepararDesenho:()=>{this.edicao.parar(),this.popup.fechar(),this.aplicarMargensHud()},normalizarCoordenada:e=>W(e,this.opcoesNormalizacao()),dividirComLinha:e=>this.dividirComLinha(e),selecionarNoLaco:e=>this.selecionarNoLaco(e),candidatasEm:(e,o)=>this.candidatasEm(e,o)}),this.camera=new In({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),garantirVisivel:e=>this.versoes.garantirVisivel(e)}),this.operacoes=new zn({emitir:(e,o)=>this.contexto.emitir(e,o),obterLayerManager:()=>this.contexto.obterLayerManager(),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),idLivre:(e,o)=>this.idLivre(e,o),adicionarFeicao:(e,o)=>this.adicionarFeicao(e,o),removerFeicao:(e,o)=>this.removerFeicao(e,o),selecionadas:()=>this.selecao.obter(),estaSelecionada:e=>this.selecao.contem(e),divisaoAtiva:()=>this.ferramentas.ferramentaAtiva==="dividir",encerrarDesenho:()=>this.ferramentas.desativarFerramenta()}),this.cursores=new La(()=>this.contexto.obterMapa()),this.snap=new wn({aplica:()=>this.atalhosValem(),aoMudar:e=>{var o,a;this.contexto.emitir("cad-snap",e),this.edicao.atualizarSnapNoHud(),(a=(o=this.contexto).aoSnapMudar)==null||a.call(o,e.ligado)}}),this.popup=new Ma({obterMapa:()=>this.contexto.obterMapa(),obterCamada:e=>this.contexto.obterLayerManager().getLayerDef(e),aoAcao:(e,o)=>this.tratarAcaoPopup(e,o),liberar:e=>this.contexto.liberarPopups?this.contexto.liberarPopups(e):e()}),this.selecao=new Sa({obterFeicao:e=>this.buscar(e.camadaId,e.id),aplicarVisual:(e,o)=>{const a=this.contexto.obterLayerManager().getLayerInstance(e),i=N.get(G);a&&i&&i.aplicarSelecao(a,o)},aoSelecionar:e=>{if(this.contexto.emitir("cad-selecao",{feicoes:e}),this.edicao.editando){const o=this.edicao.feicao;e.length===1&&e[0].id===o.id&&e[0].camadaId===o.camadaId||this.edicao.parar();return}e.length===1&&this.modoPopups()==="automatico"?this.popup.abrir(e[0]):this.popup.fechar()},aoSelecionarUma:e=>this.contexto.emitir("cad-feicao-selecionada",{feicao:e}),visivel:e=>this.selecionavelAgora(e),selecionavel:e=>!e.oculta})}aposDados(){if(this.selecao.reconciliar(),this.edicao.editando){const o=this.edicao.feicao,a=this.buscar(o.camadaId,o.id);!a||a.excluida||a.bloqueada?this.edicao.parar():a!==o&&this.edicao.sincronizar(a)}const t=this.popup.aberto;if(!t)return;const e=this.buscar(t.camadaId,t.id);e&&!e.excluida?this.popup.atualizar(e):this.popup.fechar()}lista(t){return this.repositorio.lista(t)}buscar(t,e){return this.repositorio.buscar(t,e)}opcoesNormalizacao(){return{aceitarOrigem:this.aceitarOrigem}}definirFeicoes(t,e,o){return this.repositorio.definirFeicoes(t,e,o)}adicionarFeicao(t,e,o){return this.repositorio.adicionarFeicao(t,e,o)}atualizarFeicao(t,e,o,a){return this.repositorio.atualizarFeicao(t,e,o,a)}substituir(t,e){this.repositorio.substituir(t,e)}removerFeicao(t,e){return this.repositorio.removerFeicao(t,e)}aplicarLote(t,e,o){return this.repositorio.aplicarLote(t,e,o)}obterFeicoes(t){return this.lista(t).map(e=>({...e}))}tratarAcaoCamada(t,e){if(t==="feicao-movida")return this.substituir(e.camadaId,e.feicao),"cad-feicao-atualizada";if(t==="feicao-clique"){if(this.ferramentas.ativo)return null;const o={camadaId:e.camadaId,id:e.feicao.id};return e.aditivo?this.selecao.alternar(o):this.selecao.selecionar([o]),"cad-feicao-clique"}return null}selecionarFeicoes(t,e=!1){this.selecao.selecionar(Array.isArray(t)?t:[],e)}alternarSelecaoFeicao(t){this.selecao.alternar(t)}limparSelecaoFeicoes(){this.selecao.limpar()}aoPedirLimpeza(){this.ferramentas.ativo||(this.edicao.editando?this.edicao.parar():this.selecao.limpar())}obterFeicoesSelecionadas(){return this.selecao.obter()}selecionarNoLaco(t){this.regiao.selecionarNoLaco(t)}selecionarNaCaixa(t,e,o){this.regiao.selecionarNaCaixa(t,e,o)}definirMargensPopup(t){this.popup.definirMargens(t)}fecharPopup(){this.popup.fechar()}modoPopups(){var t,e;return((e=(t=this.contexto).modoPopups)==null?void 0:e.call(t))??"automatico"}abrirPopupFeicao(t,e){if(typeof t!="string"||typeof e!="string")return!1;const o=this.buscar(t,e);return!o||o.excluida||!this.desenhada(o)?!1:(this.popup.abrir(o),!0)}aoDuploClique(t){this.ponteiro.duploClique(t)}definirOpcoesPopup(t){this.opcoesPopup={...this.opcoesPopup,...t}}obterOpcoesPopup(){return{...this.opcoesPopup}}definirMargensHud(t){this.margensHud={...this.margensHud,...t},this.aplicarMargensHud()}aplicarMargensHud(){const t=this.contexto.obterMapa();t&&Ia(t.getContainer(),this.margensHud)}get regraVersoes(){return this.versoes.regra}visivelPorVersao(t){return this.versoes.visivelPorVersao(t)}desenhada(t){return this.versoes.desenhada(t)}selecionavelAgora(t){const e=this.edicao.feicao;return e&&e.id===t.id&&e.camadaId===t.camadaId?!0:!t.oculta&&this.visivelPorVersao(t)}get previasGlobais(){return this.versoes.previasGlobais}definirPreviasGlobais(t){this.versoes.definirPreviasGlobais(t)}alternarPreviasGlobais(){this.versoes.alternarPreviasGlobais()}alternarPrevia(t,e){return this.versoes.alternarPrevia(t,e)}previaSolicitada(t,e){return this.versoes.previaSolicitada(t,e)}atualizarCursorRemoto(t,e){const o=W(e,this.opcoesNormalizacao());return!!o&&this.cursores.atualizar(t,o)}removerCursorRemoto(t){return this.cursores.remover(t)}limparCursoresRemotos(){this.cursores.limpar()}get cursoresRemotos(){return this.cursores.quantidade}zoomParaFeicao(t,e){return this.camera.zoomParaFeicao(t,e)}zoomParaFeicoes(t){return this.camera.zoomParaFeicoes(t)}ajustarTudo(){return this.camera.ajustarTudo()}ajustarCamada(t){return this.camera.ajustarCamada(t)}aoMoverMouse(t){this.ponteiro.aoMoverMouse(t)}menuContexto(t){this.ponteiro.menuContexto(t)}destruir(){this.ferramentas.destruir(),this.cursores.limpar(),this.ponteiro.limpar()}tratarAcaoPopup(t,e){var o,a,i;if(t==="zoom"&&this.zoomParaFeicao(e.camadaId,e.id),t==="vertices"&&this.iniciarEdicao(e.camadaId,e.id),t==="copiar"&&this.opcoesPopup.copiarParaAreaDeTransferencia){const[r,s]=Lt(e);(i=(a=(o=globalThis.navigator)==null?void 0:o.clipboard)==null?void 0:a.writeText(`${r.toFixed(6)}, ${s.toFixed(6)}`))==null||i.catch(()=>{})}this.contexto.emitir("cad-feicao-acao",{acao:t,feicao:e})}get snapLigado(){return this.snap.ligado}get snapAtivo(){return this.snap.ativo}definirSnap(t){this.snap.definir(!!t)}alternarSnap(){this.snap.alternar()}conectarTeclado(){this.snap.conectar(),this.teclado.conectar()}desconectarTeclado(){this.snap.desconectar(),this.teclado.desconectar()}atalhosValem(){var t,e;return this.edicao.editando||this.ferramentas.ativo||(((e=(t=this.contexto).atalhoValido)==null?void 0:e.call(t))??!0)}alternarEdicaoDaSelecao(){return this.edicao.alternarEdicaoDaSelecao()}candidatasEm(t,e){return this.consulta.candidatasEm(t,e)}buscarSnapEm(t,e){return this.consulta.buscarSnapEm(t,e)}get editor(){return this.edicao.editorAtual}get editando(){return this.edicao.editando}iniciarEdicao(t,e){return this.edicao.iniciarEdicao(t,e)}pararEdicao(){this.edicao.parar()}get desenho(){return this.ferramentas.controle}amostrarEstilo(t){this.ferramentas.amostrarEstilo(t)}get ferramentaAtiva(){return this.ferramentas.ferramentaAtiva}definirCamadaDesenho(t){this.ferramentas.definirCamadaDesenho(t)}get camadaDeDesenho(){return this.ferramentas.camadaDeDesenho}definirEstiloDesenho(t){this.ferramentas.definirEstiloDesenho(t)}obterEstiloDesenho(){return this.ferramentas.obterEstiloDesenho()}alternarFerramenta(t){return this.ferramentas.alternarFerramenta(t)}ativarFerramenta(t,e={}){return this.ferramentas.ativarFerramenta(t,e)}desativarFerramenta(){this.ferramentas.desativarFerramenta()}limparMedicao(){this.ferramentas.limparMedicao()}get nosDesenho(){return this.ferramentas.nosDesenho}desfazerVerticeDesenho(){return this.ferramentas.desfazerVerticeDesenho()}definirAtalhoSnap(t){this.snap.atalhoS=t}idLivre(t,e){const o=new Set(this.lista(t).map(i=>i.id));if(!o.has(e))return e;let a=2;for(;o.has(`${e}_${a}`);)a++;return`${e}_${a}`}dividirComLinha(t){return this.operacoes.dividirComLinha(t)}gerarBuffer(t,e,o,a={}){return this.operacoes.gerarBuffer(t,e,o,a)}duplicarFeicao(t,e,o={},a={}){return this.operacoes.duplicarFeicao(t,e,o,a)}juntarFeicoes(t,e,o={}){return this.operacoes.juntarFeicoes(t,e,o)}}const go={ponto:"Ponto",linha:"Linha",poligono:"Polígono",retangulo:"Retângulo",elipse:"Elipse","poligono-regular":"Hexágono",estrela:"Estrela",circulo:"Círculo",texto:"Texto",caneta:"Caneta","medir-distancia":"Medir","medir-area":"Área",dividir:"Dividir","selecao-laco":"Laço","conta-gotas":"Cor"};function cr(n){if(!n)return[];const t=n.split(/[\s,]+/).map(o=>o.trim().toLowerCase()).filter(Boolean);if(t.includes("todas"))return[...ee];const e=new Set(t.filter(He));return ee.filter(o=>e.has(o))}function lr(n){if(!n)return!1;const t=n.split(/[\s,]+/).map(e=>e.trim().toLowerCase());return t.includes("todas")||t.includes("editar")}class dr{constructor(t){f(this,"barra",null);f(this,"editando",!1);this.ctx=t}montar(t,e=!1){var i;(i=this.barra)==null||i.remove(),this.barra=null;const o=e&&!!this.ctx.aoEditar;if(t.length===0&&!o)return;const a=document.createElement("div");a.className="cad-quick-toolbar cad-draw-toolbar",a.setAttribute("role","toolbar"),a.setAttribute("aria-label","Ferramentas de desenho");for(const r of t){const s=document.createElement("button");s.type="button",s.className="cad-btn-tool cad-draw-btn",s.dataset.ferramenta=r,s.textContent=go[r],s.title=go[r],s.setAttribute("aria-pressed","false"),s.addEventListener("click",()=>this.ctx.aoEscolher(r)),a.appendChild(s)}if(o){const r=document.createElement("button");r.type="button",r.className="cad-btn-tool cad-draw-btn",r.dataset.acao="editar",r.textContent="Editar",r.title="Editar os vértices da feição selecionada (Enter ou duplo clique)",r.setAttribute("aria-pressed",String(this.editando)),r.classList.toggle("active",this.editando),r.addEventListener("click",()=>this.ctx.aoEditar()),a.appendChild(r)}this.ctx.raiz.appendChild(a),this.barra=a}marcarEdicao(t){var o;this.editando=t;const e=(o=this.barra)==null?void 0:o.querySelector('[data-acao="editar"]');e&&(e.classList.toggle("active",t),e.setAttribute("aria-pressed",String(t)))}marcar(t){var e;(e=this.barra)==null||e.querySelectorAll("[data-ferramenta]").forEach(o=>{const a=o.dataset.ferramenta===t;o.classList.toggle("active",a),o.setAttribute("aria-pressed",String(a))})}desmontar(){var t;(t=this.barra)==null||t.remove(),this.barra=null}}const hr="data-cad-estilos-externos";function ur(n){try{return Array.from(n.cssRules,t=>t.cssText).join(`
168
- `)}catch{return""}}function pr(n){return typeof n=="string"?n.trim()?[n]:[]:Array.isArray(n)?n.map(t=>typeof t=="string"?t:ur(t)).filter(t=>t.trim()!==""):[]}class fr{constructor(t){f(this,"textos",[]);f(this,"adotadas",[]);f(this,"fallback",null);this.shadow=t}get pedido(){return this.textos}definir(t){this.textos=pr(t),this.aplicar()}limpar(){this.remover()}aplicar(){if(this.remover(),this.textos.length===0)return;const t=this.shadow;if(typeof CSSStyleSheet<"u"&&Array.isArray(t.adoptedStyleSheets))try{this.adotadas=this.textos.map(o=>{const a=new CSSStyleSheet;return a.replaceSync(o),a}),t.adoptedStyleSheets=[...t.adoptedStyleSheets,...this.adotadas];return}catch{this.adotadas=[]}const e=document.createElement("style");e.setAttribute(hr,""),e.textContent=this.textos.join(`
169
- `),this.shadow.appendChild(e),this.fallback=e}remover(){var e;const t=this.shadow;this.adotadas.length>0&&Array.isArray(t.adoptedStyleSheets)&&(t.adoptedStyleSheets=t.adoptedStyleSheets.filter(o=>!this.adotadas.includes(o))),this.adotadas=[],(e=this.fallback)==null||e.remove(),this.fallback=null}}class Na extends vo.SafeHTMLElement{constructor(){super();f(this,"shadow");f(this,"mapContainer",null);f(this,"layersPanel",null);f(this,"controller");f(this,"controladorTamanho");f(this,"toolbarPainel");f(this,"broadcastConfig");f(this,"colecoesDados");f(this,"feicoes");f(this,"barraFerramentas");f(this,"hoverListeners",new Ut.ListenerBag);f(this,"desligarAnuncios",null);f(this,"layerItemListeners",new Ut.ListenerBag);f(this,"initTimeout");f(this,"estilosExternos");f(this,"lastPopupActionEmit");f(this,"lastCanvasClickTime",0);f(this,"ponteiroSobre",!1);f(this,"_chaveGrupo");f(this,"_zonaProjecao",22);this.shadow=this.attachShadow({mode:"open"}),this.controller=new ae,this.controladorTamanho=ba(this,this.controller),this.shadow.innerHTML=en(),this.estilosExternos=new fr(this.shadow),this.mapContainer=this.shadow.getElementById("cad-map-container"),this.layersPanel=this.shadow.getElementById("qgis-layer-panel"),this.toolbarPainel=new Ji({shadow:this.shadow,mapContainer:this.mapContainer,layersPanel:this.layersPanel,onToggleCamadas:()=>this.toggleLayersPanel(),onCloseCamadas:()=>this.closeLayersPanel(),onZoomExtents:()=>this.zoomExtents(),onLimparSelecao:()=>this.limparSelecao(),onToggleSnap:()=>this.feicoes.alternarSnap(),onTratarCliqueCanvas:i=>this.tratarCliqueLivreCanvas(i),onDispararAcaoPopup:(i,r)=>this.dispararAcaoPopup(i,r)}),this.broadcastConfig=new Ki({host:this,controller:this.controller,mapContainer:this.mapContainer,setLayerOpacity:(i,r)=>this.setLayerOpacity(i,r)}),this.colecoesDados=new Qi({obterController:()=>this.controller,obterChaveGrupo:()=>this.chaveGrupo,setLayerVisibility:(i,r)=>this.setLayerVisibility(i,r)});const e=new g.RegraVersoes,o=this.controller.context,a=this.controller.canvasInteracao.ctx;Object.assign(o,{regraVersoes:e,renderizador:()=>this.renderizador}),this.feicoes=new sr({obterLayerManager:()=>this.controller.layerManager,obterMapa:()=>this.controller.getMap(),regra:e,modoPopups:()=>this.popups,liberarPopups:i=>ke(this.controller.getMap(),i),aoFerramenta:i=>{this.barraFerramentas.marcar(i)},aoSnapMudar:i=>{no(this.shadow,i)},aoEdicao:i=>{this.barraFerramentas.marcarEdicao(i)},atalhoValido:()=>this.ponteiroSobre||this.matchesFocoInterno()||this.ehUnicoCanvas(),emitir:(i,r,s)=>{const c=new CustomEvent(i,{detail:r,bubbles:!0,composed:!0,cancelable:!!s});return this.dispatchEvent(c),c.defaultPrevented}}),Object.assign(o,{onLayerAction:(i,r)=>{const s=this.feicoes.tratarAcaoCamada(i,r);s&&this.dispatchEvent(new CustomEvent(s,{detail:r,bubbles:!0,composed:!0}))}}),this.barraFerramentas=new dr({raiz:this.shadow.getElementById("cad-root"),aoEscolher:i=>{this.feicoes.alternarFerramenta(i)},aoEditar:()=>{this.feicoes.alternarEdicaoDaSelecao()}}),this.montarBarra(this.getAttribute("ferramentas")),Object.assign(a,{aoMenuContexto:i=>this.feicoes.menuContexto(i),ferramentaAtiva:()=>this.feicoes.ferramentaAtiva!==null,edicaoAtiva:()=>this.feicoes.editando,aoLimparSelecao:()=>this.feicoes.aoPedirLimpeza(),selecionarFeicoesNaCaixa:(i,r,s)=>this.feicoes.selecionarNaCaixa(i,r,s)}),ln(this.shadow),no(this.shadow,!0)}static get observedAttributes(){return["sat-opacity","scale-mode","crosshair","modo-sequencial","chave-grupo","zona-projecao","fuso","canal-configuracao","ferramentas","sem-atalho-snap","aceitar-origem","sem-camadas-padrao","sem-painel-camadas","sem-barra-rapida","popups","renderizador","sem-avisos"]}connectedCallback(){var o;const e=this.getAttribute("zona-projecao")||this.getAttribute("fuso");if(e){const a=parseInt(e,10);!isNaN(a)&&a>0&&(this._zonaProjecao=a,this.controller.zonaProjecao=a,this.controller.context.zonaProjecao=a)}this.controller.core.definirModoPopups(this.popups),this.controladorTamanho.observe(),this.feicoes.conectarTeclado(),this.hoverListeners.cleanup(),this.mapContainer&&(this.hoverListeners.add(this.mapContainer,"mousemove",a=>this.feicoes.aoMoverMouse(a)),this.hoverListeners.add(this.mapContainer,"dblclick",a=>this.feicoes.aoDuploClique(a))),this.hoverListeners.add(this,"mouseenter",()=>{this.ponteiroSobre=!0}),this.hoverListeners.add(this,"mouseleave",()=>{this.ponteiroSobre=!1}),this.montarBarra(this.getAttribute("ferramentas")),this.broadcastConfig.conectar(),(o=this.desligarAnuncios)==null||o.call(this),this.desligarAnuncios=fn(this,this.shadow),this.estilosExternos.aplicar(),this.initTimeout=window.setTimeout(()=>{this.initTimeout=void 0,this.inicializarAgora()},0)}montarBarra(e){var o;(o=this.barraFerramentas)==null||o.montar(cr(e),lr(e))}ehUnicoCanvas(){var o;const e=this.getRootNode();return(((o=e.querySelectorAll)==null?void 0:o.call(e,"ui-canvas-cad").length)??1)<=1}matchesFocoInterno(){try{return this.matches(":focus-within")}catch{return!1}}destroy(){var e;this.initTimeout&&(window.clearTimeout(this.initTimeout),this.initTimeout=void 0),this.controladorTamanho.disconnect(),this.estilosExternos.limpar(),this.feicoes.pararEdicao(),this.feicoes.desativarFerramenta(),this.feicoes.limparMedicao(),this.feicoes.desconectarTeclado(),this.feicoes.destruir(),this.hoverListeners.cleanup(),(e=this.desligarAnuncios)==null||e.call(this),this.desligarAnuncios=null,this.broadcastConfig.desconectar(),this.limparDestaque(),this.toolbarPainel.limpar(),this.layerItemListeners.cleanup(),this.controller.destroy(),xa(this.mapContainer)}disconnectedCallback(){this.destroy()}invalidateSizeSafely(){this.controladorTamanho.invalidateSizeSafely()}attributeChangedCallback(e,o,a){var i,r,s,c,l,d,h,u;if(e==="sem-atalho-snap"){(i=this.feicoes)==null||i.definirAtalhoSnap(a===null);return}if(!(e==="sem-camadas-padrao"||e==="sem-barra-rapida"||e==="sem-avisos")){if(e==="sem-painel-camadas"){a!==null&&((r=this.toolbarPainel)==null||r.closeLayersPanel());return}if(e==="popups"){(s=this.controller)==null||s.core.definirModoPopups(Zt(a));return}if(e==="renderizador"){bt(o)!==bt(a)&&((c=this.controller)==null||c.layerManager.recriarCamadasDoTipo("feicoes"));return}if(e==="aceitar-origem"){this.feicoes&&(this.feicoes.aceitarOrigem=a!==null&&a!=="false");return}if(e==="ferramentas"){this.montarBarra(a),(d=this.barraFerramentas)==null||d.marcar(((l=this.feicoes)==null?void 0:l.ferramentaAtiva)??null),(u=this.barraFerramentas)==null||u.marcarEdicao(!!((h=this.feicoes)!=null&&h.editando));return}on({host:this,controller:this.controller,mapContainer:this.mapContainer,broadcastConfig:this.broadcastConfig,setLayerOpacity:(m,v)=>this.setLayerOpacity(m,v),setLayerScaleMode:(m,v)=>this.setLayerScaleMode(m,v),atualizarZonaProjecao:m=>{this._zonaProjecao=m}},e,o,a)}}inicializarAgora(){this.initTimeout!==void 0&&(window.clearTimeout(this.initTimeout),this.initTimeout=void 0);const e=this.controller.getMap();return e||(this.hasAttribute("sem-camadas-padrao")&&this.controller.layerManager.descartarCamadasPadrao(),this.initCAD(),this.controller.getMap())}definirEstilosExternos(e){this.estilosExternos.definir(e)}initCAD(){an({host:this,shadow:this.shadow,mapContainer:this.mapContainer,controller:this.controller,toolbarPainel:this.toolbarPainel,colecoesDados:this.colecoesDados,obterContextoEventos:()=>this.obterContextoEventos(),renderLayersUI:()=>this.renderLayersUI(),invalidateSizeSafely:()=>this.invalidateSizeSafely(),tratarCliqueLivreCanvas:(e,o,a)=>this.tratarCliqueLivreCanvas(e,o,a),dispararAcaoPopup:(e,o,a)=>this.dispararAcaoPopup(e,o,a)})}obterContextoEventos(){return{host:this,controller:this.controller,mapContainer:this.mapContainer,modoSequencial:this.modoSequencial,mouseMovedSinceDown:this.toolbarPainel.houveMovimentoMouse,obterElementoPorId:e=>this.colecoesDados.obterElementoPorId(e),fecharPopup:()=>{var e;(e=this.controller.getMap())==null||e.closePopup()}}}tratarCliqueLivreCanvas(e,o,a){const i=Date.now();i-this.lastCanvasClickTime<50||(this.lastCanvasClickTime=i,ma(this.obterContextoEventos(),e,o,a))}dispararAcaoPopup(e,o,a){const i=Date.now();this.lastPopupActionEmit&&this.lastPopupActionEmit.acaoId===e&&this.lastPopupActionEmit.elementoId===o&&i-this.lastPopupActionEmit.time<50||(this.lastPopupActionEmit={acaoId:e,elementoId:o,time:i},ga(this.obterContextoEventos(),e,o,a))}toggleLayersPanel(){this.hasAttribute("sem-painel-camadas")||this.toolbarPainel.toggleLayersPanel()}closeLayersPanel(){this.toolbarPainel.closeLayersPanel()}renderLayersUI(){const e=this.shadow.getElementById("layers-list-container");pa(e,this.controller.layerManager.getLayers(),this.layerItemListeners,{setLayerVisibility:(o,a)=>this.setLayerVisibility(o,a),setLayerOpacity:(o,a)=>this.setLayerOpacity(o,a),setLayerBlocked:(o,a)=>this.controller.layerManager.setLayerBlocked(o,a),setLayerScaleMode:(o,a)=>this.setLayerScaleMode(o,a)})}get pontos(){return this.colecoesDados.pontos}set pontos(e){this.colecoesDados.pontos=e}get segmentos(){return this.colecoesDados.segmentos}set segmentos(e){this.colecoesDados.segmentos=e}get bancoPontos(){return this.colecoesDados.bancoPontos}set bancoPontos(e){this.colecoesDados.bancoPontos=e}get pontosHomologados(){return this.bancoPontos}set pontosHomologados(e){this.bancoPontos=e}get confrontantes(){return this.colecoesDados.confrontantes}set confrontantes(e){this.colecoesDados.confrontantes=e}get vizinhos(){return this.confrontantes}set vizinhos(e){this.confrontantes=e}get aceitarOrigem(){return this.hasAttribute("aceitar-origem")&&this.getAttribute("aceitar-origem")!=="false"}set aceitarOrigem(e){e?this.setAttribute("aceitar-origem",""):this.removeAttribute("aceitar-origem")}get popups(){return Zt(this.getAttribute("popups"))}set popups(e){this.setAttribute("popups",String(e))}get renderizador(){return bt(this.getAttribute("renderizador"))}set renderizador(e){this.setAttribute("renderizador",String(e))}estatisticasFeicoes(e){const o=this.controller.layerManager.getLayerInstance(e),a=N.get("feicoes");return o&&a?a.estatisticas(o):null}get modoSequencial(){return this.hasAttribute("modo-sequencial")}set modoSequencial(e){var a;const o=!!e;o?this.hasAttribute("modo-sequencial")||this.setAttribute("modo-sequencial",""):this.hasAttribute("modo-sequencial")&&this.removeAttribute("modo-sequencial"),this.controller.modoCliqueSequencialAtivo=o,this.controller.context.modoSequencial=o,o&&((a=this.controller.getMap())==null||a.closePopup())}get chaveGrupo(){return this.getAttribute("chave-grupo")||this._chaveGrupo}set chaveGrupo(e){this._chaveGrupo=e,e?this.getAttribute("chave-grupo")!==e&&this.setAttribute("chave-grupo",e):this.hasAttribute("chave-grupo")&&this.removeAttribute("chave-grupo"),this.controller.chaveGrupo=e,this.controller.context.chaveGrupo=e,this.controller.layerManager.updateContext({chaveGrupo:e})}get zonaProjecao(){return this._zonaProjecao??22}set zonaProjecao(e){const o=typeof e=="number"?Math.floor(e):parseInt(String(e),10);if(!isNaN(o)&&o>0){this._zonaProjecao=o;const a=String(o);this.getAttribute("zona-projecao")!==a&&this.setAttribute("zona-projecao",a),this.hasAttribute("fuso")&&this.getAttribute("fuso")!==a&&this.setAttribute("fuso",a),this.controller.zonaProjecao=o,this.controller.context.zonaProjecao=o}}get canalConfiguracao(){return this.getAttribute("canal-configuracao")}set canalConfiguracao(e){e?this.setAttribute("canal-configuracao",e):this.removeAttribute("canal-configuracao")}fitBounds(e,o=[40,40],a=!1){this.controller.fitBounds(e,o,a)}zoomExtents(){this.controller.canvasInteracao.zoomExtents()}selectPonto(e,o){this.controller.selectPonto(e,o)}selecionarPonto(e,o){this.controller.selectPonto(e,o)}get pontosSelecionados(){return Wi(this.controller)}set pontosSelecionados(e){const o=Array.isArray(e)?e:[];fa(this.controller,o),this.controller.atualizarDestaqueMarcadores()}atualizarDestaqueMarcadores(){this.controller.atualizarDestaqueMarcadores()}selectSegmento(e){this.controller.selectSegmento(e)}get segmentoSelecionado(){return this.controller.context.selectedSegmentoId||null}set segmentoSelecionado(e){this.controller.selectSegmento(e)}limparSelecao(){this.controller.canvasInteracao.limparSelecao(),this.feicoes.limparSelecaoFeicoes()}setLayerVisibility(e,o){this.controller.layerManager.setLayerVisibility(e,o)}setLayerOpacity(e,o){this.controller.layerManager.setLayerOpacity(e,o)}setLayerScaleMode(e,o){this.controller.layerManager.setLayerScaleMode(e,o)}setGraphicScale(e){this.controller.setGraphicScale(e)}exportState(){return this.controller.exportState()}importState(e){this.controller.importState(e)}invalidateSize(){this.invalidateSizeSafely()}get destaqueAtivo(){return this.controller.destaqueAtivo}destacarElemento(e,o){this.inicializarAgora(),this.controller.destacarElemento(e,o)}limparDestaque(){this.controller.limparDestaque()}plotarPontos(e,o="vertices",a){this.colecoesDados.plotarPontos(e,o,a)}plotarConexoes(e,o="linhas"){this.colecoesDados.plotarConexoes(e,o)}plotarPolilinhaSequencial(e,o=!0,a="polilinha",i){this.colecoesDados.plotarPolilinhaSequencial(e,o,a,i)}plotarPoligonos(e,o="poligonos"){this.colecoesDados.plotarPoligonos(e,o)}limparCamadas(e){this.colecoesDados.limparCamadas(e)}obterMarcadores(e){return this.colecoesDados.obterMarcadores(e)}plotPontos(e,o){this.colecoesDados.plotPontos(e,o)}plotSegmentos(e,o){this.colecoesDados.plotSegmentos(e,o)}plotPolilinhaTemporaria(e){this.colecoesDados.plotPolilinhaTemporaria(e)}plotPoligonalHomologada(e){this.colecoesDados.plotPoligonalHomologada(e)}plotPontosVizinhos(e){this.colecoesDados.plotPontosVizinhos(e)}plotPoligonosVizinhos(e){this.colecoesDados.plotPoligonosVizinhos(e)}clearOverlays(e=!1){this.colecoesDados.clearOverlays(e)}getMarkers(){return this.colecoesDados.getMarkers()}getVizinhosMarkers(){return this.colecoesDados.getVizinhosMarkers()}definirFeicoes(e,o,a){return this.feicoes.definirFeicoes(e,o,a)}adicionarFeicao(e,o,a){return this.feicoes.adicionarFeicao(e,o,a)}atualizarFeicao(e,o,a,i){return this.feicoes.atualizarFeicao(e,o,a,i)}aplicarLote(e,o,a){return this.feicoes.aplicarLote(e,o,a)}removerFeicao(e,o){return this.feicoes.removerFeicao(e,o)}obterFeicoes(e){return this.feicoes.obterFeicoes(e)}selecionarFeicoes(e,o=!1){this.feicoes.selecionarFeicoes(e,o)}selecionarFeicao(e,o){this.feicoes.selecionarFeicoes([{camadaId:e,id:o}])}alternarSelecaoFeicao(e,o){this.feicoes.alternarSelecaoFeicao({camadaId:e,id:o})}limparSelecaoFeicoes(){this.feicoes.limparSelecaoFeicoes()}obterFeicoesSelecionadas(){return this.feicoes.obterFeicoesSelecionadas()}editarVertices(e,o){return this.feicoes.iniciarEdicao(e,o)}pararEdicaoVertices(){this.feicoes.pararEdicao()}get editandoVertices(){return this.feicoes.editando}get snapLigado(){return this.feicoes.snapLigado}definirSnap(e){this.feicoes.definirSnap(e)}alternarSnap(){this.feicoes.alternarSnap()}definirCamadaDesenho(e){this.feicoes.definirCamadaDesenho(e)}get camadaDesenho(){return this.feicoes.camadaDeDesenho}definirEstiloDesenho(e){this.feicoes.definirEstiloDesenho(e)}obterEstiloDesenho(){return this.feicoes.obterEstiloDesenho()}definirFerramenta(e,o){return e===null?(this.feicoes.desativarFerramenta(),{ok:!0}):this.feicoes.ativarFerramenta(e,o)}get ferramentaAtiva(){return this.feicoes.ferramentaAtiva}limparMedicao(){this.feicoes.limparMedicao()}get nosDesenho(){return this.feicoes.nosDesenho}desfazerVerticeDesenho(){return this.feicoes.desfazerVerticeDesenho()}definirAtalhoSnap(e){this.feicoes.definirAtalhoSnap(e)}gerarBuffer(e,o,a,i){return this.feicoes.gerarBuffer(e,o,a,i)}duplicarFeicao(e,o,a,i){return this.feicoes.duplicarFeicao(e,o,a,i)}juntarFeicoes(e,o,a){return this.feicoes.juntarFeicoes(e,o,a)}zoomParaFeicao(e,o){return this.feicoes.zoomParaFeicao(e,o)}zoomParaFeicoes(e){return this.feicoes.zoomParaFeicoes(e)}ajustarTudo(){return this.feicoes.ajustarTudo()}ajustarCamada(e){return this.feicoes.ajustarCamada(e)}get previasGlobais(){return this.feicoes.previasGlobais}definirPreviasGlobais(e){this.feicoes.definirPreviasGlobais(e)}alternarPreviasGlobais(){this.feicoes.alternarPreviasGlobais()}alternarPrevia(e,o){return this.feicoes.alternarPrevia(e,o)}previaSolicitada(e,o){return this.feicoes.previaSolicitada(e,o)}atualizarCursorRemoto(e,o){return this.feicoes.atualizarCursorRemoto(e,o)}removerCursorRemoto(e){return this.feicoes.removerCursorRemoto(e)}limparCursoresRemotos(){this.feicoes.limparCursoresRemotos()}fecharPopupFeicao(){this.feicoes.fecharPopup()}abrirPopupFeicao(e,o){return this.feicoes.abrirPopupFeicao(e,o)}definirOpcoesPopup(e){this.feicoes.definirOpcoesPopup(e)}definirMargensPopup(e){this.feicoes.definirMargensPopup(e)}definirMargensHud(e){this.feicoes.definirMargensHud(e)}getMap(){return this.controller.getMap()}getController(){return this.controller}getLayerManager(){return this.controller.layerManager}}vo.definirCustomElement("ui-canvas-cad",Na);class mr{constructor(t,e){f(this,"polylines",[]);f(this,"bancoPontosAtivo",!1);f(this,"core");this.core=t}setBancoPontosAtivo(t){this.bancoPontosAtivo=t}plotSegmentos(t,e){this.core.map&&t.forEach(o=>{const a=e.find(r=>String(r.id)===String(o.ponto_inicio_id)),i=e.find(r=>String(r.id)===String(o.ponto_fim_id));if(a&&i&&a.lat&&a.lon&&i.lat&&i.lon){const r=o.tipo_limite_sigef||o.tipo_limite||"",s=o.metodo_posicionamento_sigef||o.metodo_posicionamento||"",c=this.bancoPontosAtivo?"#94a3b8":r==="LA1"?"#10b981":"#3b82f6",l=this.core.config.perimetroWeight,d=this.bancoPontosAtivo?.4:1,h=[[a.lat,a.lon],[i.lat,i.lon]],u=b.polyline(h,{color:"#080d0a",weight:l+3,opacity:.85,lineCap:"round",lineJoin:"round",dashArray:r==="LN1"?"6, 6":void 0,pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(u);const m=b.polyline(h,{color:c,weight:l,opacity:d,dashArray:r==="LN1"?"6, 6":void 0,pane:"perimetroPane"}).bindPopup(`
167
+ `}function sn(i,t,e,o){if(e!==o){if(t==="sat-opacity"){const a=parseFloat(o);isNaN(a)||i.setLayerOpacity("satelite",a)}else if(t==="scale-mode")(o==="world"||o==="screen")&&(i.setLayerScaleMode("perimetro",o),i.setLayerScaleMode("vertices",o));else if(t==="modo-sequencial")i.host.modoSequencial=o!==null&&o!=="false";else if(t==="chave-grupo")i.host.chaveGrupo=o||void 0;else if(t==="zona-projecao"||t==="fuso"){const a=parseInt(o,10);!isNaN(a)&&a>0&&(i.atualizarZonaProjecao(a),t==="fuso"&&i.host.getAttribute("zona-projecao")!==o?i.host.setAttribute("zona-projecao",o):t==="zona-projecao"&&i.host.hasAttribute("fuso")&&i.host.getAttribute("fuso")!==o&&i.host.setAttribute("fuso",o),i.controller.zonaProjecao=a,i.controller.context.zonaProjecao=a)}else if(t==="canal-configuracao")i.broadcastConfig.conectar(o);else if(t==="crosshair"){const a=o!==null&&o!=="false";i.mapContainer&&(i.mapContainer.style.cursor=a?"crosshair":"");const n=i.controller.getMap();if(n){const r=n.getContainer();r&&(r.style.cursor=a?"crosshair":"")}i.controller.core.config.crosshair=a}}}function Sa(i){const t=i;if(!t||!t._leaflet_id)return!1;try{delete t._leaflet_id}catch{t._leaflet_id=void 0}return!0}function cn(i){if(!i.mapContainer)return;if(i.controller.getMap()||Sa(i.mapContainer),i.controller.init(i.mapContainer,i.shadow),i.toolbarPainel.vincularEventos(),i.renderLayersUI(),i.host.hasAttribute("modo-sequencial")&&(i.controller.modoCliqueSequencialAtivo=!0,i.controller.context.modoSequencial=!0),i.host.hasAttribute("chave-grupo")){const o=i.host.getAttribute("chave-grupo");o&&(i.host.chaveGrupo=o)}if(i.host.hasAttribute("zona-projecao")||i.host.hasAttribute("fuso")){const o=i.host.zonaProjecao;i.controller.zonaProjecao=o,i.controller.context.zonaProjecao=o}if(i.host.hasAttribute("crosshair")){const o=i.host.getAttribute("crosshair")!=="false";i.mapContainer&&(i.mapContainer.style.cursor=o?"crosshair":""),i.controller.core.config.crosshair=o}i.colecoesDados.sincronizarInicial(),i.controller.layerManager.onChange(o=>{i.renderLayersUI(),i.host.dispatchEvent(new CustomEvent("ui-camadas-alteradas",{detail:{layers:o},bubbles:!0,composed:!0}))});const t=i.controller.context.onMarkerClick;i.controller.context.onMarkerClick=(o,a,n,r)=>{Pa(i.obterContextoEventos(),o,a,n,r,t,i.colecoesDados.customMarkerClickHandler)},i.controller.context.onSegmentoClick=(o,a,n)=>{La(i.obterContextoEventos(),o,a,n)},i.controller.context.onPopupAcao=(o,a,n)=>{i.dispararAcaoPopup(o,a,n)};const e=i.controller.getMap();e&&e.on("click",o=>{i.toolbarPainel.houveMovimentoMouse||i.tratarCliqueLivreCanvas(o,o.latlng,o.containerPoint)}),setTimeout(()=>{i.invalidateSizeSafely()},150)}const ln={"sem-camada":"Escolha uma camada de desenho antes de usar esta ferramenta.","camada-invalida":"A camada de desenho não é uma camada de feições.","camada-bloqueada":"A camada de desenho está bloqueada.","geometria-invalida":"Não foi possível criar a figura: a geometria é inválida."},dn={bloqueada:"Esta feição (ou a camada dela) está bloqueada e não pode ser editada.","poligono-com-furos":"Polígono com furos não pode ser editado no mapa.",multiparte:"Feição com várias partes não pode ser editada no mapa.","muitos-vertices":"A feição tem vértices demais para editar no mapa.","tipo-nao-suportado":"Este tipo de feição não tem vértices para editar.",inexistente:"A feição não existe mais.","sem-selecao":"Selecione uma feição para editar os vértices."};function Ma(i,t,e){return typeof t=="string"&&Object.prototype.hasOwnProperty.call(i,t)?i[t]:e}function hn(i){return Ma(ln,i,"Não foi possível ativar a ferramenta de desenho.")}function un(i){return Ma(dn,i,"Não foi possível editar os vértices desta feição.")}function pn(i){i.querySelectorAll(".cad-quick-toolbar .cad-btn-tool, .layer-panel-close").forEach(t=>{const e=t.getAttribute("title");e&&!t.hasAttribute("aria-label")&&t.setAttribute("aria-label",e)})}function co(i,t){const e=i.getElementById("btn-toggle-snap");e==null||e.classList.toggle("active",t),e==null||e.setAttribute("aria-pressed",String(t))}function fn(i){return i<=0?"Nenhuma feição selecionada":i===1?"1 feição selecionada":`${i} feições selecionadas`}function mn(i){return i?`Ferramenta ${i} ativa`:"Ferramenta desativada"}function pe(i,t){const e=i.getElementById("cad-status");e&&e.textContent!==t&&(e.textContent=t)}const gn=5e3;function vn(i,t,e){const o=i.getElementById("cad-aviso");return o?(e!==void 0&&window.clearTimeout(e),o.textContent=t,o.hidden=!1,window.setTimeout(()=>{o.hidden=!0,o.textContent=""},gn)):e}function yn(i,t){let e;const o=c=>l=>{var h;if(i.hasAttribute("sem-avisos"))return;const d=c((h=l.detail)==null?void 0:h.motivo);pe(t,d),e=vn(t,d,e)},a=o(hn),n=o(un),r=c=>{var d;const l=(d=c.detail)==null?void 0:d.feicoes;pe(t,fn(Array.isArray(l)?l.length:0))},s=c=>{var d;const l=((d=c.detail)==null?void 0:d.ferramenta)??null;pe(t,mn(l))};return i.addEventListener("cad-selecao",r),i.addEventListener("cad-ferramenta",s),i.addEventListener("cad-desenho-recusado",a),i.addEventListener("cad-edicao-recusada",n),()=>{i.removeEventListener("cad-selecao",r),i.removeEventListener("cad-ferramenta",s),i.removeEventListener("cad-desenho-recusado",a),i.removeEventListener("cad-edicao-recusada",n),e!==void 0&&window.clearTimeout(e),e=void 0;const c=t.getElementById("cad-aviso");c&&(c.hidden=!0,c.textContent="")}}function W(i,t){let e,o;if(Array.isArray(i))[e,o]=i;else if(i&&typeof i=="object"){const n=i;e=n.lat??n.latitude,o=n.lng??n.lon??n.longitude}else return null;const a=E.parseCoordenada(e,o,t);return!a||!Number.isFinite(a.lat)||!Number.isFinite(a.lon)?null:[a.lat,a.lon]}function bn(i,t){return i[0]===t[0]&&i[1]===t[1]}function Ge(i,t){const e=i.map(o=>W(o,t)).filter(o=>o!==null);return e.length>1&&bn(e[0],e[e.length-1])&&e.pop(),e.length>=3?e:null}function ze(i,t){const e=i.map(o=>W(o,t)).filter(o=>o!==null);return e.length>=2?e:null}function Aa(i,t){if(!Array.isArray(i)||i.length===0)return null;const o=(Array.isArray(i[0])&&Array.isArray(i[0][0])?i:[i]).map(a=>Ge(a,t));return o.some(a=>a===null)?null:o}function xn(i,t){const e=E.parseCoordenada(i.lat,i.lon);return e?{id:String(i.id),camadaId:t,geometria:{tipo:"Point",coordenada:[e.lat,e.lon]},propriedades:{...i}}:null}function Pn(i,t,e){const o=t.get(String(i.ponto_inicio_id)),a=t.get(String(i.ponto_fim_id));if(!o||!a)return null;const n=E.parseCoordenada(o.lat,o.lon),r=E.parseCoordenada(a.lat,a.lon);if(!n||!r)return null;const s=(i.tipo_limite_sigef??i.tipo_limite)==="LN1";return{id:String(i.id??`${i.ponto_inicio_id}-${i.ponto_fim_id}`),camadaId:e,geometria:{tipo:"LineString",coordenadas:[[n.lat,n.lon],[r.lat,r.lon]]},estilo:s?{dashArray:"6, 6"}:void 0,propriedades:{...i}}}function Ln(i,t){if(!i.poligono_wkt)return null;const e=/POLYGON\s*\(\s*\(\s*(.*?)\s*\)\s*\)/i.exec(i.poligono_wkt);if(!e)return null;const o=e[1].split(",").map(n=>{const[r,s]=n.trim().split(/\s+/);return[s,r]}),a=Ge(o);return a?{id:String(i.id??i.nome??""),camadaId:t,geometria:{tipo:"Polygon",aneis:[a]},propriedades:{nome:i.nome,nome_propriedade:i.nome_propriedade}}:null}function lo(i,t){const e=m.normalizarNos(i);if(!e)return null;const o=[];for(const a of e){const n=W(a.ponto,t);if(!n)return null;const r={ponto:n},s=a.entrada&&W(a.entrada,{...t,aceitarOrigem:!0}),c=a.saida&&W(a.saida,{...t,aceitarOrigem:!0});s&&(r.entrada=s),c&&(r.saida=c),o.push(r)}return o}const Cn=new Set(["Point","LineString","Polygon","Circle","Text"]);function Ht(i,t,e){if(!i||typeof i!="object")return null;const o=i,a=o.geometria;if(!a||!Cn.has(a.tipo)||o.id===void 0||o.id===null||o.id==="")return null;let n=null;switch(a.tipo){case"Point":{const s=W(a.coordenada,e);s&&(n={tipo:"Point",coordenada:s});break}case"Text":{const s=W(a.coordenada,e);s&&typeof a.texto=="string"&&a.texto&&(n={tipo:"Text",coordenada:s,texto:a.texto});break}case"LineString":{const s=Array.isArray(a.partes)?a.partes.map(l=>Array.isArray(l)?ze(l,e):null).filter(l=>l!==null):[];if(s.length>0)n=m.criarLinha(s);else{const l=Array.isArray(a.coordenadas)?ze(a.coordenadas,e):null;l&&(n=m.criarLinha([l]))}const c=s.length<=1?lo(a.curva,e):null;n&&n.tipo==="LineString"&&c&&c.length>=2&&(n={tipo:"LineString",coordenadas:m.amostrarCurva(c,!1),curva:c});break}case"Polygon":{const s=Array.isArray(a.aneis)?Aa(a.aneis,e):null;s&&(n={tipo:"Polygon",aneis:s});const c=s&&s.length===1?lo(a.curva,e):null;n&&c&&c.length>=3&&(n={tipo:"Polygon",aneis:[m.amostrarCurva(c,!0)],curva:c});break}case"Circle":{const s=W(a.centro,e),c=Number(a.raioMetros);s&&Number.isFinite(c)&&c>0&&(n={tipo:"Circle",centro:s,raioMetros:c});break}}if(!n)return null;const r={id:String(o.id),camadaId:t,geometria:n,estilo:o.estilo&&typeof o.estilo=="object"?{...o.estilo}:void 0,propriedades:o.propriedades&&typeof o.propriedades=="object"?{...o.propriedades}:{},bloqueada:!!o.bloqueada,status:"oficial",excluida:!!o.excluida};return o.oculta&&(r.oculta=!0),(typeof o.entidadeId=="string"||typeof o.entidadeId=="number")&&(r.entidadeId=String(o.entidadeId)),r.status=m.statusDe({...r,status:o.status}),r}const fe="cad-cursores",Sn=/^#[0-9a-f]{3,8}$/i,Mn="#94a3b8";function oe(i){return typeof i=="string"&&Sn.test(i.trim())?i.trim():Mn}const An='<svg width="18" height="18" viewBox="0 0 24 24" style="display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))"><path d="M3 2 L3 19 L8 14.5 L11.5 22 L14.5 20.5 L11 13.5 L18 13 Z" fill="currentColor" stroke="#fff" stroke-width="1.2" stroke-linejoin="round"/></svg>';function ho(i){const t=document.createElement("div");t.style.cssText=`color:${oe(i.cor)};position:relative;pointer-events:none`,t.innerHTML=An;const e=document.createElement("span");return e.textContent=String(i.nome??i.id),e.style.cssText=`position:absolute;left:16px;top:14px;white-space:nowrap;font:600 11px sans-serif;color:#fff;background:${oe(i.cor)};padding:1px 5px;border-radius:3px;max-width:160px;overflow:hidden;text-overflow:ellipsis`,t.appendChild(e),b.divIcon({className:"custom-leaflet-marker cad-cursor-remoto",iconSize:[18,18],iconAnchor:[3,2],html:t})}class Ea{constructor(t){f(this,"marcadores",new Map);this.obterMapa=t}get quantidade(){return this.marcadores.size}atualizar(t,e){const o=this.obterMapa();if(!o||!t||t.id===void 0||t.id===null||t.id===""||!Number.isFinite(e==null?void 0:e[0])||!Number.isFinite(e==null?void 0:e[1]))return!1;const a=String(t.id),n=`${t.nome??""}\0${oe(t.cor)}`,r=this.marcadores.get(a);if(r)return r.marker.setLatLng(e),r.assinatura!==n&&(r.marker.setIcon(ho(t)),r.assinatura=n),!0;o.getPane(fe)||(o.createPane(fe).style.zIndex="9500");const s=b.marker(e,{icon:ho(t),pane:fe,interactive:!1,keyboard:!1}).addTo(o);return this.marcadores.set(a,{marker:s,assinatura:n}),!0}remover(t){const e=this.marcadores.get(String(t));return e?(e.marker.remove(),this.marcadores.delete(String(t)),!0):!1}limpar(){for(const t of this.marcadores.values())t.marker.remove();this.marcadores.clear()}}const Tt=i=>`${i.camadaId}\0${i.id}`;class wa{constructor(t){f(this,"itens",new Map);this.dep=t}get quantidade(){return this.itens.size}contem(t){return this.itens.has(Tt(t))}obter(){const t=[];for(const e of this.itens.values()){const o=this.dep.obterFeicao(e);o&&t.push(o)}return t}selecionar(t,e=!1){const o=this.assinatura(),a=new Set;e||this.itens.forEach(n=>a.add(n.camadaId)),e||this.itens.clear();for(const n of t)this.alcancavel(n)&&(this.itens.set(Tt(n),{camadaId:n.camadaId,id:n.id}),a.add(n.camadaId));this.finalizar(o,a)}alternar(t){const e=this.assinatura(),o=Tt(t);this.itens.has(o)?this.itens.delete(o):this.alcancavel(t)&&this.itens.set(o,{camadaId:t.camadaId,id:t.id}),this.finalizar(e,new Set([t.camadaId]))}alternarVarias(t){const e=this.assinatura(),o=new Set;for(const a of t){const n=Tt(a);this.itens.has(n)?this.itens.delete(n):this.alcancavel(a)&&this.itens.set(n,{camadaId:a.camadaId,id:a.id}),o.add(a.camadaId)}this.finalizar(e,o)}alcancavel(t){const e=this.dep.obterFeicao(t);return!!e&&(!this.dep.selecionavel||this.dep.selecionavel(e))}limpar(){if(this.itens.size===0)return;const t=this.assinatura(),e=new Set([...this.itens.values()].map(o=>o.camadaId));this.itens.clear(),this.finalizar(t,e)}reconciliar(){const t=this.assinatura(),e=new Set;for(const[o,a]of this.itens){const n=this.dep.obterFeicao(a);(!n||n.excluida||this.dep.visivel&&!this.dep.visivel(n))&&(this.itens.delete(o),e.add(a.camadaId))}e.size!==0&&this.finalizar(t,e)}assinatura(){return[...this.itens.keys()].join("|")}finalizar(t,e){for(const a of e){const n=new Set;for(const r of this.itens.values())r.camadaId===a&&n.add(r.id);this.dep.aplicarVisual(a,n)}if(this.assinatura()===t)return;const o=this.obter();this.dep.aoSelecionar(o),o.length<=1&&this.dep.aoSelecionarUma(o[0]??null)}}const En={Point:"Ponto",LineString:"Linha",Polygon:"Polígono",Circle:"Círculo",Text:"Texto"},wn=new Set(["name","nome","category","categoria","description","descricao","author","autor","date","data","created_at","criadoEm"]),uo=6;function gt(i,t){var e;for(const o of t){const a=(e=i.propriedades)==null?void 0:e[o];if(a!=null&&String(a)!=="")return String(a)}return""}function zn(i){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(i),e=t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3])):new Date(i);return Number.isNaN(e.getTime())?i:e.toLocaleDateString("pt-BR")}function kn(i){const t=typeof i=="object"?JSON.stringify(i):String(i);return t.length>80?`${t.slice(0,77)}...`:t}function Ct(i){const t=i.geometria;switch(t.tipo){case"Point":case"Text":return t.coordenada;case"Circle":return t.centro;case"LineString":return t.coordenadas[Math.floor(t.coordenadas.length/2)];case"Polygon":{const e=t.aneis[0],o=e.reduce((n,r)=>n+r[0],0)/e.length,a=e.reduce((n,r)=>n+r[1],0)/e.length;return[o,a]}}}function In(i){const t=i.geometria,e=[],o=m.areaDaGeometria(t),a=m.extensaoDaGeometria(t);if(t.tipo==="Polygon")e.push(["Área",m.formatarArea(o??0)],["Perímetro",m.formatarExtensao(a??0)]),e.push(["Vértices",String(t.aneis.reduce((s,c)=>s+c.length,0))]);else if(t.tipo==="LineString"){const s=m.partesDaLinha(t);e.push(["Extensão",m.formatarExtensao(a??0)],["Vértices",String(s.reduce((c,l)=>c+l.length,0))]),s.length>1&&e.push(["Partes",String(s.length)])}else t.tipo==="Circle"&&e.push(["Raio",m.formatarExtensao(t.raioMetros)],["Área",m.formatarArea(o??0)]);const[n,r]=Ct(i);return e.push(["Coordenadas",`${n.toFixed(6)}, ${r.toFixed(6)}`]),e}class za{constructor(t){f(this,"popup",null);f(this,"feicaoAtual",null);f(this,"margens",{topo:20,base:20,esquerda:20,direita:20});this.dep=t}definirMargens(t){this.margens={...this.margens,...t}}get aberto(){return this.feicaoAtual}abrir(t){const e=this.dep.obterMapa();if(!e)return;this.fechar(),this.feicaoAtual=t,this.popup=b.popup({className:"compact-popup",maxWidth:280,closeOnClick:!1,autoClose:!1,autoPanPaddingTopLeft:b.point(this.margens.esquerda,this.margens.topo),autoPanPaddingBottomRight:b.point(this.margens.direita,this.margens.base)}).setLatLng(Ct(t)).setContent(this.montar(t));const o=this.popup;this.dep.liberar?this.dep.liberar(()=>o.openOn(e)):o.openOn(e)}atualizar(t){var e;!this.popup||((e=this.feicaoAtual)==null?void 0:e.id)!==t.id||this.feicaoAtual.camadaId!==t.camadaId||(this.feicaoAtual=t,this.popup.setLatLng(Ct(t)).setContent(this.montar(t)))}fechar(){const t=this.popup;this.popup=null,this.feicaoAtual=null,t==null||t.close()}montar(t){var u;const e=this.dep.obterCamada(t.camadaId),o=m.corSegura(((u=t.estilo)==null?void 0:u.corTraco)??(e==null?void 0:e.estilo.corPrimaria),"#38bdf8"),a=(y,A="",k)=>{const S=document.createElement(y);return A&&(S.style.cssText=A),k!==void 0&&(S.textContent=k),S},n=a("div","font-family:var(--ui-fonte-base,sans-serif);color:rgba(255,255,255,.9);line-height:1.35;min-width:200px;border-left:3px solid "+o+";padding-left:8px");n.className="cad-feicao-popup",n.appendChild(a("div","font-weight:700;font-size:13px;margin-bottom:1px",gt(t,["name","nome"])||t.id));const r=gt(t,["category","categoria"]),s=[En[t.geometria.tipo],(e==null?void 0:e.nome)??t.camadaId,r].filter(Boolean).join(" · ");n.appendChild(a("div","font-size:11px;color:rgba(255,255,255,.6);margin-bottom:4px",s));const c=gt(t,["description","descricao"]);c&&n.appendChild(a("div","font-size:11px;margin-bottom:4px",c));const l=y=>{const A=a("div","font-size:11px;margin-bottom:4px");for(const[k,S]of y){const C=a("div");C.appendChild(a("strong","",`${k}: `)),C.appendChild(document.createTextNode(S)),A.appendChild(C)}return A};n.appendChild(l(In(t)));const d=Object.entries(t.propriedades??{}).filter(([y,A])=>!wn.has(y)&&A!==void 0&&A!==null&&A!=="");d.length>0&&(n.appendChild(l(d.slice(0,uo).map(([y,A])=>[y,kn(A)]))),d.length>uo&&n.appendChild(a("div","font-size:10px;color:rgba(255,255,255,.55);margin-bottom:4px",`${d.length} atributos`)));const h=gt(t,["author","autor"]),p=gt(t,["date","data","created_at","criadoEm"]);if(h||p){const y=[h,p?zn(p):""].filter(Boolean).join(" · ");n.appendChild(a("div","font-size:10px;color:rgba(255,255,255,.55);margin-bottom:4px",y))}const g=a("div","display:flex;gap:4px;flex-wrap:wrap;margin-top:6px"),v=[["inspecionar","Inspecionar"],["zoom","Zoom"]];t.geometria.tipo==="LineString"||t.geometria.tipo==="Polygon"||t.geometria.tipo==="Point"?v.push(["vertices","Vértices"]):t.geometria.tipo==="Circle"&&v.push(["vertices","Editar"]),t.geometria.tipo==="Point"&&v.push(["copiar","Copiar"]);for(const[y,A]of v){const k=a("button","font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:inherit;cursor:pointer",A);k.type="button",k.dataset.acao=y,k.addEventListener("click",S=>{S.stopPropagation(),this.dep.aoAcao(y,this.feicaoAtual??t)}),g.appendChild(k)}return n.appendChild(g),n}}class Dn{constructor(t){f(this,"_ligado",!0);f(this,"_altSegurado",!1);f(this,"atalhoS",!0);f(this,"conectado",!1);f(this,"aoTeclaBaixo",t=>{var e,o;if(t.key==="Alt"){this.definirAlt(!0);return}this.atalhoS&&(t.key==="s"||t.key==="S")&&!t.ctrlKey&&!t.metaKey&&!t.altKey&&!Mt(t)&&(((o=(e=this.contexto).aplica)==null?void 0:o.call(e))??!0)&&this.alternar()});f(this,"aoTeclaCima",t=>{t.key==="Alt"&&this.definirAlt(!1)});f(this,"aoPerderFoco",()=>{this.definirAlt(!1)});this.contexto=t}get ativo(){return this._ligado&&!this._altSegurado}get ligado(){return this._ligado}definir(t){this._ligado!==t&&(this._ligado=t,this.notificar())}alternar(){this.definir(!this._ligado)}conectar(){if(this.conectado)return;this.conectado=!0;const t=this.contexto.alvo??window;t.addEventListener("keydown",this.aoTeclaBaixo),t.addEventListener("keyup",this.aoTeclaCima),t.addEventListener("blur",this.aoPerderFoco)}desconectar(){if(!this.conectado)return;this.conectado=!1;const t=this.contexto.alvo??window;t.removeEventListener("keydown",this.aoTeclaBaixo),t.removeEventListener("keyup",this.aoTeclaCima),t.removeEventListener("blur",this.aoPerderFoco),this._altSegurado=!1}definirAlt(t){this._altSegurado!==t&&(this._altSegurado=t,this.notificar())}notificar(){this.contexto.aoMudar({ativo:this.ativo,ligado:this._ligado,temporario:this._altSegurado})}}const G="feicoes";class _n{constructor(t){this.p=t}dividirComLinha(t){const e=this.p.obterLayerManager(),o=l=>(this.p.emitir("cad-divisao-falhou",{motivo:l}),!1),a=this.p.selecionadas().filter(l=>l.geometria.tipo==="Polygon");let n=a;if(n.length===0){n=[];for(const l of e.getActiveSelectableLayers())l.tipo===G&&n.push(...this.p.lista(l.id).filter(d=>d.geometria.tipo==="Polygon"&&this.p.desenhada(d)))}if(n.length===0)return o(a.length===0&&this.p.selecionadas().some(l=>m.ehMultilinha(l.geometria))?"multiparte":"nenhum-poligono");const r=l=>{var d;return!!l.bloqueada||!!((d=e.getLayerDef(l.camadaId))!=null&&d.bloqueada)},s=n.filter(l=>!r(l)&&l.geometria.tipo==="Polygon"&&l.geometria.aneis.length===1);if(s.length===0)return o(n.some(r)?"bloqueada":"poligono-com-furos");let c=!1;for(const l of s){if(l.geometria.tipo!=="Polygon")continue;const d=Go(l.geometria.aneis[0],t);if(!d)continue;this.p.divisaoAtiva()&&this.p.estaSelecionada({camadaId:l.camadaId,id:l.id})&&this.p.encerrarDesenho(),this.p.removerFeicao(l.camadaId,l.id);const h=[];if(d.forEach((p,g)=>{const v=$t(l,this.p.idLivre(l.camadaId,`${l.id}-${g+1}`),{tipo:"Polygon",aneis:[p]}),u=this.p.adicionarFeicao(l.camadaId,v);u&&h.push(u)}),h.length!==d.length){for(const p of h)this.p.removerFeicao(p.camadaId,p.id);return this.p.adicionarFeicao(l.camadaId,l),o("geometria-invalida")}if(this.p.emitir("cad-feicao-dividida",{origem:l,partes:h}),c=!0,a.length===0)break}return c||o("sem-intersecao")}gerarBuffer(t,e,o,a={}){const n=this.p.buscar(t,e);if(!n)return null;const r=Zo(n.geometria,o);if(!r)return null;const s=a.camadaDestino??t,c=this.p.adicionarFeicao(s,{id:a.id??this.p.idLivre(s,`${e}-buffer`),geometria:{tipo:"Polygon",aneis:[r]},estilo:n.estilo?{...n.estilo}:void 0,propriedades:{...n.propriedades,origem:e}});return c&&this.p.emitir("cad-feicao-criada",{camadaId:s,feicao:c}),c}duplicarFeicao(t,e,o={},a={}){const n=this.p.buscar(t,e);if(!n)return null;const r=Xo(n.geometria,o.lesteM??0,o.norteM??0),s=this.p.adicionarFeicao(t,$t(n,a.id??this.p.idLivre(t,`${e}-copia`),r));return s&&this.p.emitir("cad-feicao-criada",{camadaId:t,feicao:s}),s}juntarFeicoes(t,e,o={}){const a=h=>(this.p.emitir("cad-uniao-falhou",{motivo:h}),null),n=e.map(h=>this.p.buscar(t,h));if(n.length<2||n.some(h=>!h))return a("feicoes-insuficientes");const r=n;if(new Set(r.map(h=>h.id)).size!==r.length)return a("feicoes-insuficientes");const s=this.p.obterLayerManager();if(r.some(h=>{var p;return h.excluida||h.bloqueada||((p=s.getLayerDef(h.camadaId))==null?void 0:p.bloqueada)}))return a("bloqueada");const c=o.toleranciaM??0;let l=null;if(r.every(h=>h.geometria.tipo==="LineString")){if(r.some(g=>m.ehMultilinha(g.geometria)))return a("multiparte");const h=r.map(g=>g.geometria.coordenadas),p=Uo(h,c);p&&(l=m.criarLinha([p]))}else if(r.every(h=>h.geometria.tipo==="Polygon"&&h.geometria.aneis.length===1)){let h=r[0].geometria.aneis[0];for(const p of r.slice(1))h=h?Wo(h,p.geometria.aneis[0],c):null;h&&(l={tipo:"Polygon",aneis:[h]})}else return a("tipos-incompativeis");if(!l)return a("sem-ligacao");for(const h of r)this.p.removerFeicao(t,h.id);const d=this.p.adicionarFeicao(t,$t(r[0],o.id??this.p.idLivre(t,`${r[0].id}-uniao`),l));if(!d){for(const h of r)this.p.adicionarFeicao(t,h);return a("geometria-invalida")}return this.p.emitir("cad-feicao-unida",{origens:r,resultado:d}),d}}class Tn{constructor(t,e){f(this,"cacheOficiais",new WeakMap);this.p=t,this.regra=e}oficiaisDe(t){const e=this.p.lista(t);let o=this.cacheOficiais.get(e);return o||(o=m.RegraVersoes.oficiais(e),this.cacheOficiais.set(e,o)),o}visivelPorVersao(t){const e=this.p.obterLayerManager().getLayerInstance(t.camadaId),o=$.get(G);return e&&o?o.feicaoVisivel(e,t):this.regra.visivel(t,this.oficiaisDe(t.camadaId))}desenhada(t){return!t.excluida&&!t.oculta&&this.visivelPorVersao(t)}aplicarVersoes(){const t=this.p.obterLayerManager(),e=$.get(G);for(const o of t.getLayers()){if(o.tipo!==G)continue;const a=t.getLayerInstance(o.id);a&&e&&e.reavaliarVersoes(a)}this.p.aposDados()}get previasGlobais(){return this.regra.global}definirPreviasGlobais(t){const e=!!t;this.regra.global!==e&&(this.regra.global=e,this.aplicarVersoes(),this.p.emitir("cad-previas",{global:e}))}alternarPreviasGlobais(){this.definirPreviasGlobais(!this.regra.global)}alternarPrevia(t,e){const o=this.p.buscar(t,e);if(!o)return null;const a=m.entidadeDe(o),n=this.regra.alternarIndividual(t,a);return this.aplicarVersoes(),this.p.emitir("cad-previas",{camadaId:t,entidadeId:a,ativa:n}),n}previaSolicitada(t,e){const o=this.p.buscar(t,e);return!!o&&this.regra.previaSolicitada(o)}garantirVisivel(t){const e=this.p.obterLayerManager(),o=e.getLayerDef(t.camadaId);if(o&&!o.visivel&&e.setLayerVisibility(t.camadaId,!0),!this.visivelPorVersao(t)){const a=m.entidadeDe(t);this.regra.definirIndividual(t.camadaId,a,!0),this.aplicarVersoes(),this.p.emitir("cad-previas",{camadaId:t.camadaId,entidadeId:a,ativa:!0})}}}class On{constructor(t){this.p=t}limitesDe(t){let e=1/0,o=1/0,a=-1/0,n=-1/0;for(const r of t){const[[s,c],[l,d]]=m.limitesDaGeometria(r.geometria);s<e&&(e=s),c<o&&(o=c),l>a&&(a=l),d>n&&(n=d)}return Number.isFinite(e)?[[e,o],[a,n]]:null}enquadrar(t){const e=this.p.obterMapa(),o=this.limitesDe(t);return!e||!o?!1:(o[0][0]===o[1][0]&&o[0][1]===o[1][1]?e.flyTo([o[0][0],o[0][1]],Math.max(e.getZoom(),17)):e.fitBounds(o,{padding:[60,60],maxZoom:18}),!0)}zoomParaFeicao(t,e){const o=this.p.buscar(t,e);return!o||o.excluida?!1:(this.p.garantirVisivel(o),this.enquadrar([o]))}zoomParaFeicoes(t){const e=[];for(const o of Array.isArray(t)?t:[]){const a=this.p.buscar(o.camadaId,o.id);a&&!a.excluida&&(this.p.garantirVisivel(a),e.push(a))}return e.length>0&&this.enquadrar(e)}ajustarTudo(){const t=[];for(const e of this.p.obterLayerManager().getLayers())e.tipo!==G||!e.visivel||t.push(...this.p.lista(e.id).filter(o=>this.p.desenhada(o)));return this.enquadrar(t)}ajustarCamada(t){const e=this.p.obterLayerManager(),o=e.getLayerDef(t);return!o||o.tipo!==G?!1:(o.visivel||e.setLayerVisibility(t,!0),this.enquadrar(this.p.lista(t).filter(a=>this.p.desenhada(a))))}}const po=36,qn=.45;function Fn(i,t){const e=Math.abs(t[0]-i[0]),o=Math.abs(t[1]-i[1]);if(e===0&&o===0)return null;const a=[];for(let n=0;n<po;n++){const r=n*2*Math.PI/po;a.push([i[0]+e*Math.sin(r),i[1]+o*Math.cos(r)])}return a}function ka(i,t){const e=Math.cos(i[0]*Math.PI/180)||1,o=t[0]-i[0],a=(t[1]-i[1])*e,n=Math.hypot(o,a);return n===0?null:{raio:n,inicio:Math.atan2(o,a),cosLat:e}}function Nn(i,t,e=6){const o=ka(i,t);if(!o||e<3)return null;const a=[];for(let n=0;n<e;n++){const r=o.inicio+n*2*Math.PI/e;a.push([i[0]+o.raio*Math.sin(r),i[1]+o.raio*Math.cos(r)/o.cosLat])}return a}function $n(i,t,e=5){const o=ka(i,t);if(!o||e<3)return null;const a=e*2,n=[];for(let r=0;r<a;r++){const s=r%2===0?o.raio:o.raio*qn,c=o.inicio+r*2*Math.PI/a;n.push([i[0]+s*Math.sin(c),i[1]+s*Math.cos(c)/o.cosLat])}return n}const ae=["ponto","linha","poligono","retangulo","elipse","poligono-regular","estrela","circulo","texto","caneta","medir-distancia","medir-area","dividir","selecao-laco","conta-gotas"],Gt=2;function je(i){return typeof i=="string"&&ae.includes(i)}function St(i){return i.entrada??(i.alca?m.espelhoDaAlca(i.ponto,i.alca):void 0)}function xt(i){return i.map(t=>{const e={ponto:t.ponto};return t.alca?(e.saida=t.alca,e.entrada=St(t)):t.entrada&&(e.entrada=t.entrada),e})}function Ia(i){return m.amostrarCurva(xt(i),!1)}function me(i,t){const e=m.temAlcas(i);if(t){const a=e?m.amostrarCurva(i,!0):i.map(n=>n.ponto);return e?{tipo:"Polygon",aneis:[a],curva:i}:{tipo:"Polygon",aneis:[a]}}const o=e?m.amostrarCurva(i,!1):i.map(a=>a.ponto);return e?{tipo:"LineString",coordenadas:o,curva:i}:{tipo:"LineString",coordenadas:o}}const Rn=(i,t)=>i[0]===t[0]&&i[1]===t[1],fo={elipse:Fn,"poligono-regular":(i,t)=>Nn(i,t,6),estrela:(i,t)=>$n(i,t,5)};class jt{constructor(t,e=!1){f(this,"pontos",[]);f(this,"cursor",null);f(this,"ancoras",[]);this.ferramenta=t,this.fechar=e}get nos(){return this.ferramenta==="caneta"?this.ancoras.length:this.pontos.length}get ehSequencial(){return["linha","poligono","caneta","medir-distancia","medir-area","dividir","selecao-laco"].includes(this.ferramenta)}get ehArea(){return this.ferramenta==="poligono"||this.ferramenta==="medir-area"||this.ferramenta==="selecao-laco"||this.ferramenta==="caneta"&&this.fechar}get fechaNoPrimeiro(){return this.nos>=3&&(this.ehArea||this.ferramenta==="caneta")}get primeiro(){var t;return(this.ferramenta==="caneta"?(t=this.ancoras[0])==null?void 0:t.ponto:this.pontos[0])??null}get minimo(){return this.ehArea?3:2}get podeConcluir(){return this.ehSequencial&&this.nos>=this.minimo}mover(t){this.cursor=t}clicar(t){switch(this.ferramenta){case"ponto":return{concluida:{tipo:"Point",coordenada:t}};case"texto":return{concluida:{tipo:"Text",coordenada:t,texto:""}};case"retangulo":if(this.pontos.length===0)return this.pontos.push(t),{};{const e=this.retangulo(this.pontos[0],t);return e?{concluida:e}:{aviso:"Os dois cantos precisam diferir em latitude e em longitude."}}case"circulo":if(this.pontos.length===0)return this.pontos.push(t),{};{const e=m.distanciaMetros(this.pontos[0],t);return e>=Gt?{concluida:{tipo:"Circle",centro:this.pontos[0],raioMetros:e}}:{aviso:`Raio mínimo de ${Gt} m: clique mais longe do centro.`}}case"elipse":case"poligono-regular":case"estrela":{if(this.pontos.length===0)return this.pontos.push(t),{};const e=fo[this.ferramenta](this.pontos[0],t);return e?{concluida:{tipo:"Polygon",aneis:[e]}}:{aviso:"Clique num ponto diferente do centro."}}case"caneta":return this.ancoras.push({ponto:t}),{};case"conta-gotas":return{};default:return this.pontos.length>0&&Rn(this.pontos[this.pontos.length-1],t)?{}:(this.pontos.push(t),{})}}definirAlca(t){const e=this.ancoras[this.ancoras.length-1];this.ferramenta==="caneta"&&e&&(e.alca=t)}moverAlcaDaAncora(t,e,o,a=!0){const n=this.ancoras[t];if(this.ferramenta!=="caneta"||!n)return;if(a){n.alca=e==="saida"?o:m.espelhoDaAlca(n.ponto,o),delete n.entrada;return}const r=St(n);e==="saida"?(n.alca=o,r&&(n.entrada=r)):(n.alca??(n.alca=n.ponto),n.entrada=o)}desfazer(){const t=this.ferramenta==="caneta"?this.ancoras:this.pontos;return t.length===0?!1:(t.pop(),!0)}vertices(){return this.ferramenta==="caneta"?Ia(this.ancoras):this.pontos}retangulo(t,e){return t[0]===e[0]||t[1]===e[1]?null:{tipo:"Polygon",aneis:[[[t[0],t[1]],[t[0],e[1]],[e[0],e[1]],[e[0],t[1]]]]}}previa(){const t=this.cursor;switch(this.ferramenta){case"retangulo":return this.pontos.length===1&&t?this.retangulo(this.pontos[0],t):null;case"circulo":{if(this.pontos.length!==1||!t)return null;const e=m.distanciaMetros(this.pontos[0],t);return e>=Gt?{tipo:"Circle",centro:this.pontos[0],raioMetros:e}:null}case"caneta":{if(this.ancoras.length===0)return null;const e=xt(t?[...this.ancoras,{ponto:t}]:this.ancoras);return e.length<2?null:me(e,this.ehArea&&e.length>=3)}case"elipse":case"poligono-regular":case"estrela":{if(this.pontos.length!==1||!t)return null;const e=fo[this.ferramenta](this.pontos[0],t);return e?{tipo:"Polygon",aneis:[e]}:null}case"ponto":case"texto":case"conta-gotas":return null;default:{const e=t?[...this.pontos,t]:[...this.pontos];return e.length<2?null:this.ehArea&&e.length>=3?{tipo:"Polygon",aneis:[e]}:{tipo:"LineString",coordenadas:e}}}}concluir(){if(!this.podeConcluir)return null;if(this.ferramenta==="caneta")return me(xt(this.ancoras),this.ehArea);const t=this.vertices();return this.ehArea?{tipo:"Polygon",aneis:[t]}:{tipo:"LineString",coordenadas:t}}concluirFechando(){return this.fechaNoPrimeiro?this.ferramenta==="caneta"?me(xt(this.ancoras),!0):{tipo:"Polygon",aneis:[this.vertices()]}:null}comprimentoMetros(){const t=this.cursor&&this.nos>0?[...this.vertices(),this.cursor]:this.vertices();return m.comprimentoMetros(t,!1)}}const Da={topo:0,base:16,esquerda:0,direita:0},_a=16,Ta=.92,Ut={topo:"--cad-hud-topo",base:"--cad-hud-base",esquerda:"--cad-hud-esquerda",direita:"--cad-hud-direita"},Ue="position:absolute;box-sizing:border-box;z-index:10000;left:calc(var(--cad-hud-esquerda,0px) + (100% - var(--cad-hud-esquerda,0px) - var(--cad-hud-direita,0px)) / 2);bottom:var(--cad-hud-base,16px);transform:translateX(-50%);width:max-content;max-width:min(92%, calc(100% - var(--cad-hud-esquerda,0px) - var(--cad-hud-direita,0px) - 16px));max-height:calc(100% - var(--cad-hud-topo,0px) - var(--cad-hud-base,16px) - 8px);overflow:hidden;display:flex;flex-wrap:wrap;";function Bn(i,t,e={}){const o={...Da,...e},a=Math.max(0,i-o.esquerda-o.direita);return{centroX:o.esquerda+a/2,base:o.base,larguraMax:Math.max(0,Math.min(i*Ta,a-_a)),alturaMax:Math.max(0,t-o.topo-o.base-8)}}function Oa(i,t){for(const e of Object.keys(Ut)){const o=t[e];typeof o=="number"&&Number.isFinite(o)&&o>=0?i.style.setProperty(Ut[e],`${o}px`):i.style.removeProperty(Ut[e])}}const qa="cm-draw-hud",ke="cad-ferramenta-ativa",J="cad-desenho",ot="#22d3ee",Vn=4,Hn=450,Gn=10,jn=8,Un=2500,Wn={ponto:"Ponto",linha:"Linha",poligono:"Polígono",retangulo:"Retângulo",elipse:"Elipse","poligono-regular":"Polígono regular (hexágono)",estrela:"Estrela",circulo:"Círculo",texto:"Texto",caneta:"Caneta (Bézier)","medir-distancia":"Medir distância","medir-area":"Medir área",dividir:"Dividir polígono","selecao-laco":"Seleção por laço","conta-gotas":"Conta-gotas"},Zn={ponto:"Clique para colocar",linha:"Clique nos vértices · Enter ou duplo clique conclui",poligono:"Clique nos vértices · Enter ou duplo clique conclui",retangulo:"Clique nos dois cantos",elipse:"Clique no centro e depois no canto da caixa","poligono-regular":"Clique no centro e depois num vértice",estrela:"Clique no centro e depois numa ponta",circulo:"Clique no centro e depois num ponto da borda",texto:"Clique onde o texto vai",caneta:"Clique = reta · arraste = curva · arraste as alças já colocadas para ajustar (Shift solta a simetria) · Enter conclui · 1º ponto fecha","medir-distancia":"Clique nos pontos · Enter conclui","medir-area":"Clique nos vértices · Enter conclui",dividir:"Desenhe a linha de corte · Enter aplica","selecao-laco":"Desenhe o laço · Enter ou 1º ponto fecha e seleciona","conta-gotas":"Clique numa feição para copiar o estilo"};class Fa{constructor(t){f(this,"sessao",null);f(this,"fechar",!1);f(this,"grupo",null);f(this,"previa",null);f(this,"marcas",null);f(this,"medicao",null);f(this,"marcadorSnap",null);f(this,"hud",null);f(this,"campoTexto",null);f(this,"arrastando",null);f(this,"ultimoClique",null);f(this,"avisoTimer",null);f(this,"aoClicar",t=>{var n;const e=this.sessao;if(!e||e.ferramenta==="caneta"||this.campoTexto||((n=t.originalEvent)==null?void 0:n.button)!==void 0&&t.originalEvent.button!==0)return;const o=this.coordenada(t);if(e.ferramenta==="conta-gotas"){this.dep.aoAmostrar(o,t.originalEvent);return}if(e.ehSequencial&&this.repetido(t)||this.fechaNoPrimeiroVertice(t))return;const a=e.clicar(o);if(a.concluida){a.concluida.tipo==="Text"?this.pedirTexto(o):this.finalizar(a.concluida);return}this.atualizar(),a.aviso&&this.avisar(a.aviso)});f(this,"aoPressionar",t=>{var a;const e=this.sessao;if(!e||e.ferramenta!=="caneta"||((a=t.originalEvent)==null?void 0:a.button)!==0||this.repetido(t)||this.fechaNoPrimeiroVertice(t))return;const o=this.alcaSobOPonteiro(t);if(o){this.arrastando=o;return}e.clicar(this.coordenada(t)),this.arrastando={i:e.ancoras.length-1,qual:"saida"},this.atualizar()});f(this,"aoSoltar",()=>{this.arrastando=null});f(this,"aoMover",t=>{var a;const e=this.sessao;if(!e)return;const o=this.coordenada(t);e.mover(o),this.arrastando?e.moverAlcaDaAncora(this.arrastando.i,this.arrastando.qual,o,!((a=t.originalEvent)!=null&&a.shiftKey)):e.ferramenta==="caneta"&&(this.dep.map.getContainer().style.cursor=this.alcaSobOPonteiro(t)?"move":"crosshair"),this.atualizar()});f(this,"aoDuploClique",()=>{this.concluir()});f(this,"aoTecla",t=>{const e=this.sessao;if(!e)return;const o=Mt(t);if(t.key==="Escape"){if(o&&!this.campoTexto)return;this.campoTexto?this.cancelarTexto():e.nos>0?this.reiniciar():this.desativar(),t.preventDefault();return}if(!o)if(t.key==="Enter"){if(Co(t))return;this.concluir(),t.preventDefault()}else(t.key==="Backspace"||(t.ctrlKey||t.metaKey)&&t.key.toLowerCase()==="z")&&(e.desfazer()&&this.atualizar(),t.preventDefault())});this.dep=t}get ferramenta(){var t;return((t=this.sessao)==null?void 0:t.ferramenta)??null}get ativo(){return this.sessao!==null}get nos(){var t;return((t=this.sessao)==null?void 0:t.nos)??0}desfazerVertice(){var t;return(t=this.sessao)!=null&&t.desfazer()?(this.atualizar(),!0):!1}ativar(t,e={}){var r;const o=(r=this.sessao)==null?void 0:r.ferramenta;this.desligar(),o&&this.dep.aoDesativar(o),this.limparMedicao();const a=this.dep.map;this.fechar=!!e.fechar,this.sessao=new jt(t,this.fechar),a.getPane(J)||(a.createPane(J).style.zIndex="8500"),this.grupo=b.layerGroup().addTo(a),this.marcas=b.layerGroup().addTo(this.grupo);const n=a.getContainer();n.classList.add(ke),n.style.cursor=t==="conta-gotas"?"copy":"crosshair",a.on("click",this.aoClicar),a.on("dblclick",this.aoDuploClique),a.on("mousemove",this.aoMover),a.on("mousedown",this.aoPressionar),window.addEventListener("mouseup",this.aoSoltar),window.addEventListener("keydown",this.aoTecla),this.montarHud(),this.atualizar()}desativar(){var e;const t=(e=this.sessao)==null?void 0:e.ferramenta;t&&(this.desligar(),this.dep.aoDesativar(t))}limparMedicao(){var t;(t=this.medicao)==null||t.remove(),this.medicao=null}desligar(){var o,a;const t=this.dep.map;t.off("click",this.aoClicar),t.off("dblclick",this.aoDuploClique),t.off("mousemove",this.aoMover),t.off("mousedown",this.aoPressionar),window.removeEventListener("mouseup",this.aoSoltar),window.removeEventListener("keydown",this.aoTecla);const e=t.getContainer();e.classList.remove(ke),e.style.cursor="",(o=this.grupo)==null||o.remove(),this.grupo=null,this.previa=null,this.marcas=null,this.marcadorSnap=null,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=null,(a=this.hud)==null||a.remove(),this.hud=null,this.campoTexto=null,this.sessao=null,this.arrastando=null,this.ultimoClique=null}coordenada(t){const e=[t.latlng.lat,t.latlng.lng];if(!this.dep.snapAtivo())return this.esconderSnap(),e;const o=this.dep.buscarSnap(e);return o?(this.mostrarSnap(o.coordenada),o.coordenada):(this.esconderSnap(),e)}repetido(t){const e=this.ultimoClique,o=Date.now(),a=t.containerPoint,n=!!e&&Math.hypot(e.x-a.x,e.y-a.y)<=Vn&&o-e.t<=Hn;return this.ultimoClique={x:a.x,y:a.y,t:o},n}fechaNoPrimeiroVertice(t){const e=this.sessao,o=e==null?void 0:e.primeiro;if(!e||!o||!e.fechaNoPrimeiro)return!1;const a=this.dep.map.latLngToContainerPoint(o);if(Math.hypot(a.x-t.containerPoint.x,a.y-t.containerPoint.y)>Gn)return!1;const n=e.concluirFechando();return n&&this.finalizar(n),!!n}alcaSobOPonteiro(t){const e=this.sessao;if(!e)return null;const o=this.dep.map,a=n=>{const r=o.latLngToContainerPoint(n);return Math.hypot(r.x-t.containerPoint.x,r.y-t.containerPoint.y)<=jn};for(let n=e.ancoras.length-1;n>=0;n--){const r=e.ancoras[n];if(r.alca&&a(r.alca))return{i:n,qual:"saida"};const s=St(r);if(s&&a(s))return{i:n,qual:"entrada"}}for(let n=e.ancoras.length-1;n>=0;n--)if(a(e.ancoras[n].ponto))return{i:n,qual:"saida"};return null}concluir(){const t=this.sessao;if(!t)return;const e=t.concluir();e?this.finalizar(e):t.ehSequencial&&t.nos>0&&!t.podeConcluir&&this.avisar(`Faltam ${t.minimo-t.nos} ponto(s): mínimo de ${t.minimo}.`)}avisar(t){var o;const e=(o=this.hud)==null?void 0:o.querySelector('[data-campo="aviso"]');e&&(e.textContent=t,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=setTimeout(()=>{e.textContent="",this.avisoTimer=null},Un))}botaoDireito(){const t=this.sessao;if(t){if(this.campoTexto){this.cancelarTexto();return}t.podeConcluir?this.concluir():t.nos>0&&t.desfazer()?this.atualizar():this.desativar()}}reiniciar(){var e;const t=(e=this.sessao)==null?void 0:e.ferramenta;t&&(this.sessao=new jt(t,this.fechar),this.ultimoClique=null,this.arrastando=null,this.atualizar())}finalizar(t){const e=this.sessao.ferramenta,o=e==="medir-distancia"||e==="medir-area"?this.mostrarMedicao(t,e):null;this.sessao=new jt(e,this.fechar),this.ultimoClique=null,this.atualizar(),o&&this.dep.aoMedir(o),this.dep.aoGeometria(e,t)}pedirTexto(t){var o,a;if(!this.hud||(a=(o=this.dep).aoSolicitarTexto)!=null&&a.call(o,t)||!this.hud)return;const e=document.createElement("input");e.type="text",e.placeholder="Texto…",e.style.cssText="padding:3px 6px;border-radius:4px;border:1px solid #475569;background:#0f172a;color:#fff;min-width:160px",e.addEventListener("keydown",n=>{if(n.stopPropagation(),n.key==="Enter"){const r=e.value.trim();this.cancelarTexto(),r&&this.finalizar({tipo:"Text",coordenada:t,texto:r})}else n.key==="Escape"&&this.cancelarTexto()}),this.campoTexto=e,this.hud.insertBefore(e,this.hud.querySelector('[data-campo="dica"]')),e.focus()}cancelarTexto(){var t;(t=this.campoTexto)==null||t.remove(),this.campoTexto=null}atualizar(){const t=this.sessao;if(!t||!this.grupo||!this.marcas)return;this.previa&&(this.grupo.removeLayer(this.previa),this.previa=null);const e=t.previa();e&&(this.previa=this.desenharGeometria(e,!0),this.grupo.addLayer(this.previa)),this.marcas.clearLayers();const o=t.ferramenta==="caneta"?t.ancoras.map(a=>a.ponto):t.pontos;if(t.ferramenta==="caneta")for(const a of t.ancoras){const n=St(a);if(!(!a.alca||!n)){this.marcas.addLayer(b.polyline([n,a.ponto,a.alca],{pane:J,color:ot,weight:1,opacity:.8,interactive:!1}));for(const r of[n,a.alca])this.marcas.addLayer(b.circleMarker(r,{pane:J,radius:4,color:ot,weight:1.5,fillColor:"#fff",fillOpacity:1,interactive:!1}))}}for(const a of o)this.marcas.addLayer(b.circleMarker(a,{pane:J,radius:4,color:"#111",weight:1,fillColor:ot,fillOpacity:1,interactive:!1}));this.atualizarHud(e)}desenharGeometria(t,e){const o={pane:J,color:ot,weight:2,dashArray:e?"6 4":void 0,fillColor:ot,fillOpacity:.15,interactive:!1},a=Fe(t,o);if(a)return a;if(t.tipo==="Polygon")return b.polygon(t.aneis,o);if(t.tipo==="Circle")return b.circle(t.centro,{...o,radius:t.raioMetros});if(t.tipo==="LineString")return b.polyline(t.coordenadas,o);const n=(t.tipo==="Point",t.coordenada);return b.circleMarker(n,{...o,radius:5})}mostrarMedicao(t,e){this.limparMedicao();const o=b.layerGroup().addTo(this.dep.map);this.medicao=o,o.addLayer(this.desenharGeometria(t,!1));const a=t.tipo==="Polygon"?t.aneis[0]:t.tipo==="LineString"?t.coordenadas:[],n=t.tipo==="Polygon",r=(l,d)=>{const h=document.createElement("div");h.textContent=d,h.style.cssText="white-space:nowrap;font:600 11px sans-serif;color:#fff;background:rgba(15,23,42,.85);padding:1px 5px;border-radius:3px;transform:translate(-50%,-50%)",o.addLayer(b.marker(l,{pane:J,interactive:!1,keyboard:!1,icon:b.divIcon({className:"custom-leaflet-marker",iconSize:void 0,html:h})}))},s=n?a.length:a.length-1;for(let l=0;l<s;l++){const d=a[l],h=a[(l+1)%a.length];r([(d[0]+h[0])/2,(d[1]+h[1])/2],m.formatarExtensao(m.distanciaMetros(d,h)))}const c={tipo:e==="medir-area"?"area":"distancia",pontos:a,comprimentoM:m.comprimentoMetros(a,!1)};if(t.tipo==="Polygon")c.areaM2=m.areaDaGeometria(t)??0,c.perimetroM=m.extensaoDaGeometria(t)??0;else if(e==="medir-distancia"&&a.length>=3){const l={tipo:"Polygon",aneis:[a]};c.areaM2=m.areaDaGeometria(l)??0,c.perimetroM=m.extensaoDaGeometria(l)??0}return c}mostrarSnap(t){this.grupo&&(this.marcadorSnap?this.marcadorSnap.setLatLng(t):this.marcadorSnap=b.marker(t,{pane:J,interactive:!1,keyboard:!1,icon:b.divIcon({className:"custom-leaflet-marker cm-snap",iconSize:[18,18],html:'<div style="width:18px;height:18px;box-sizing:border-box;border:2px solid #22d3ee;transform:rotate(45deg);border-radius:2px"></div>'})}).addTo(this.grupo))}esconderSnap(){var t;this.marcadorSnap&&((t=this.grupo)==null||t.removeLayer(this.marcadorSnap),this.marcadorSnap=null)}montarHud(){const t=this.sessao;if(!t)return;const e=document.createElement("div");e.id=qa,e.style.cssText=Ue+"gap:10px;align-items:center;padding:6px 12px;border-radius:8px;background:rgba(15,23,42,.92);color:#fff;font:12px var(--ui-fonte-base,sans-serif);border:1px solid rgba(255,255,255,.2);pointer-events:auto";const o=c=>{const l=document.createElement("span");return l.dataset.campo=c,l},a=document.createElement("strong");a.textContent=Wn[t.ferramenta];const n=o("dica");n.style.opacity=".7",n.textContent=Zn[t.ferramenta];const r=(c,l,d=!1)=>{const h=document.createElement("button");return h.type="button",h.textContent=c,h.style.cssText=`padding:3px 10px;border-radius:4px;border:1px solid ${d?ot:"rgba(255,255,255,.3)"};background:${d?ot:"transparent"};color:${d?"#111":"#fff"};cursor:pointer;font-weight:600`,h.addEventListener("click",l),h},s=o("aviso");s.style.color="#fbbf24",s.setAttribute("role","status"),e.append(a,o("nos"),o("medida"),n,s),t.ehSequencial&&e.append(r("Concluir",()=>this.concluir(),!0)),e.append(r("Sair",()=>this.desativar())),b.DomEvent.disableClickPropagation(e),b.DomEvent.disableScrollPropagation(e),this.dep.map.getContainer().appendChild(e),this.hud=e}atualizarHud(t){const e=this.sessao;if(!this.hud||!e)return;const o=this.hud.querySelector('[data-campo="nos"]'),a=this.hud.querySelector('[data-campo="medida"]');if(o&&(o.textContent=e.nos>0?`Nós: ${e.nos}`:""),!a)return;let n="";if((t==null?void 0:t.tipo)==="Polygon")n=`Área: ${m.formatarArea(m.areaDaGeometria(t)??0)} · Perímetro: ${m.formatarExtensao(m.extensaoDaGeometria(t)??0)}`;else if((t==null?void 0:t.tipo)==="LineString"){if(n=`Extensão: ${m.formatarExtensao(e.comprimentoMetros())}`,e.ferramenta==="medir-distancia"&&e.nos>=3&&t.coordenadas.length>=3){const r={tipo:"Polygon",aneis:[t.coordenadas]};n+=` · Área: ${m.formatarArea(m.areaDaGeometria(r)??0)} · Perímetro: ${m.formatarExtensao(m.extensaoDaGeometria(r)??0)}`}}else(t==null?void 0:t.tipo)==="Circle"&&(n=`Raio: ${m.formatarExtensao(t.raioMetros)}`);a.textContent=n}clicarEm(t){const e=this.sessao;if(!e)return;const o=e.clicar(t);o.concluida?o.concluida.tipo==="Text"?this.pedirTexto(t):this.finalizar(o.concluida):(this.atualizar(),o.aviso&&this.avisar(o.aviso))}moverPara(t){var e;(e=this.sessao)==null||e.mover(t),this.atualizar()}}const Xn=["tipoLinha","escalaTipoLinha","deslocamentoTracejado","opacidadeTraco","terminacaoTraco","juncaoTraco"],Yn=new Set(["ponto","linha","poligono","retangulo","elipse","poligono-regular","estrela","circulo","texto","caneta"]);class Kn{constructor(t){f(this,"desenho",null);f(this,"camadaDesenho",null);f(this,"estiloDesenho",{});f(this,"sequenciaId",0);this.p=t}get controle(){return this.desenho}get ativo(){var t;return!!((t=this.desenho)!=null&&t.ativo)}botaoDireito(){var t;(t=this.desenho)==null||t.botaoDireito()}destruir(){var t;(t=this.desenho)==null||t.desativar(),this.desenho=null}get ferramentaAtiva(){var t;return((t=this.desenho)==null?void 0:t.ferramenta)??null}definirCamadaDesenho(t){this.camadaDesenho=t||null}get camadaDeDesenho(){return this.camadaDesenho}definirEstiloDesenho(t){this.estiloDesenho={...t}}obterEstiloDesenho(){return{...this.estiloDesenho}}alternarFerramenta(t){var e;return((e=this.desenho)==null?void 0:e.ferramenta)===t?(this.desenho.desativar(),{ok:!0}):this.ativarFerramenta(t)}ativarFerramenta(t,e={}){var n,r;if(!je(t))return{ok:!1,motivo:"ferramenta-invalida"};const o=this.p.obterMapa();if(!o)return{ok:!1,motivo:"sem-mapa"};if(Yn.has(t)){const s=this.motivoCamadaDesenhoInvalida();if(s)return this.p.emitir("cad-desenho-recusado",{ferramenta:t,motivo:s}),{ok:!1,motivo:s}}this.p.prepararDesenho(),this.desenho||(this.desenho=new Fa({map:o,buscarSnap:s=>this.p.buscarSnapEm(s),snapAtivo:()=>this.p.snapAtivo(),aoGeometria:(s,c)=>this.concluirFerramenta(s,c),aoMedir:s=>this.p.emitir("cad-medicao",s),aoAmostrar:s=>this.amostrarEstilo(s),aoSolicitarTexto:s=>this.solicitarTexto(s),aoDesativar:()=>{var s,c;this.p.emitir("cad-ferramenta",{ferramenta:null}),(c=(s=this.p).aoFerramenta)==null||c.call(s,null)}})),this.desenho.ativar(t,e),this.p.emitir("cad-ferramenta",{ferramenta:t}),(r=(n=this.p).aoFerramenta)==null||r.call(n,t);const a=e.iniciarEm?this.p.normalizarCoordenada(e.iniciarEm):null;return a&&this.desenho.clicarEm(a),{ok:!0}}desativarFerramenta(){var t;(t=this.desenho)==null||t.desativar()}limparMedicao(){var t;(t=this.desenho)==null||t.limparMedicao()}get nosDesenho(){var t;return((t=this.desenho)==null?void 0:t.nos)??0}desfazerVerticeDesenho(){var t;return((t=this.desenho)==null?void 0:t.desfazerVertice())??!1}motivoCamadaDesenhoInvalida(){if(!this.camadaDesenho)return"sem-camada";const t=this.p.obterLayerManager().getLayerDef(this.camadaDesenho);return t&&t.tipo!==G?"camada-invalida":t!=null&&t.bloqueada?"camada-bloqueada":null}novoId(t,e){const o=new Set(this.p.lista(e).map(n=>n.id));let a;do this.sequenciaId++,a=`${t}-${Date.now().toString(36)}${this.sequenciaId.toString(36)}`;while(o.has(a));return a}solicitarTexto(t){const e={coordenada:t,camadaId:this.camadaDesenho,concluir:o=>{const a=typeof o=="string"?o.trim():"";return a?this.concluirFerramenta("texto",{tipo:"Text",coordenada:t,texto:a}):null}};return this.p.emitir("cad-texto-solicitado",e,!0)===!0}concluirFerramenta(t,e){if(t==="dividir")return e.tipo==="LineString"&&this.p.dividirComLinha(e.coordenadas),null;if(t==="medir-distancia"||t==="medir-area")return null;if(t==="selecao-laco")return e.tipo==="Polygon"&&this.p.selecionarNoLaco(e.aneis[0]),null;const o=this.camadaDesenho;if(!o)return null;const a=Object.keys(this.estiloDesenho).length>0,n=this.p.adicionarFeicao(o,{id:this.novoId(t,o),geometria:e,estilo:a?{...this.estiloDesenho}:void 0,propriedades:{}});return n?this.p.emitir("cad-feicao-criada",{camadaId:o,feicao:n}):this.p.emitir("cad-desenho-recusado",{ferramenta:t,motivo:"geometria-invalida"}),n}amostrarEstilo(t){const e=this.p.obterMapa();if(!e)return;const o=e.latLngToContainerPoint(t),a=this.p.candidatasEm(t,8),n=wt({x:o.x,y:o.y},a,d=>e.latLngToContainerPoint(d));if(!n){this.p.emitir("cad-conta-gotas",{cor:"",feicao:null,estilo:{}});return}const r=this.p.obterLayerManager().getLayerDef(n.camadaId),s=n.estilo??{},c={},l=s.corTraco??(r==null?void 0:r.estilo.corPrimaria);l&&(c.corTraco=l),s.corPreenchimento&&(c.corPreenchimento=s.corPreenchimento),s.espessuraTraco!==void 0&&(c.espessuraTraco=s.espessuraTraco),s.opacidadePreenchimento!==void 0&&(c.opacidadePreenchimento=s.opacidadePreenchimento),s.dashArray&&(c.dashArray=s.dashArray);for(const d of Xn)s[d]!==void 0&&(c[d]=s[d]);this.estiloDesenho={...this.estiloDesenho,...c},this.p.emitir("cad-conta-gotas",{cor:l??s.corPreenchimento??"",feicao:n,estilo:c})}}class Jn{constructor(t){f(this,"posicoes",new Map);this.p=t}lista(t){var o;const e=(o=this.p.obterLayerManager().getLayerDef(t))==null?void 0:o.dados;return Array.isArray(e==null?void 0:e.feicoes)?e.feicoes:[]}posicaoDe(t){const e=this.lista(t),o=this.posicoes.get(t);if(o&&o.lista===e)return o.pos;const a=new Map;for(let n=0;n<e.length;n++)a.set(e[n].id,n);return this.posicoes.set(t,{lista:e,pos:a}),a}buscar(t,e){const o=this.lista(t),a=this.posicaoDe(t).get(e),n=a===void 0?void 0:o[a];if(n&&n.id===e)return n;if(a===void 0)return;this.posicoes.delete(t);const r=this.posicaoDe(t).get(e);return r===void 0?void 0:o[r]}garantirCamada(t,e){const o=this.p.obterLayerManager(),a=o.getLayerDef(t);if(a&&a.tipo!==G)return!1;const n=o.getOrCreateLayer(t,G,(e==null?void 0:e.nome)??t);return e!=null&&e.nome&&(n.nome=e.nome),e!=null&&e.estilo&&(n.estilo={...n.estilo,...e.estilo}),(e==null?void 0:e.interativo)!==void 0&&(n.interativo=e.interativo),(e==null?void 0:e.zIndex)!==void 0&&o.setLayerZIndex(t,e.zIndex),(e==null?void 0:e.opacidade)!==void 0&&o.setLayerOpacity(t,e.opacidade),o.ensurePanes(),!0}definirFeicoes(t,e,o){if(!this.garantirCamada(t,o))return{aceitas:0,recusadas:["camada existente não é de feições"]};const a=[],n=new Map;return(Array.isArray(e)?e:[]).forEach((r,s)=>{const c=Ht(r,t,this.p.opcoesNormalizacao());c?n.set(c.id,c):a.push(String((r==null?void 0:r.id)??`#${s}`))}),this.p.obterLayerManager().setLayerData(t,{feicoes:[...n.values()]}),this.p.aposDados(),{aceitas:n.size,recusadas:a}}adicionarFeicao(t,e,o){return this.aplicar(t,{adicionar:[e]},o).adicionadas[0]??null}atualizarFeicao(t,e,o,a){return this.aplicar(t,{atualizar:[{...o,id:e}]},a).atualizadas[0]??null}substituir(t,e){this.p.obterLayerManager().getLayerDef(t)&&this.aplicar(t,{adicionar:[e]})}removerFeicao(t,e){return this.aplicar(t,{remover:[e]}).resultado.removidas>0}aplicarLote(t,e,o){return this.aplicar(t,e,o).resultado}mesclar(t,e,o,a){const n=a&&e.propriedades&&typeof e.propriedades=="object"?{...e.propriedades}:{...t.propriedades,...e.propriedades};return Ht({...t,...e,id:t.id,estilo:{...t.estilo,...e.estilo},propriedades:n},o,this.p.opcoesNormalizacao())}aplicar(t,e,o={}){const a={adicionadas:0,atualizadas:0,removidas:0,recusadas:[]},n=[],r=[],s=Array.isArray(e==null?void 0:e.adicionar)?e.adicionar:[],c=Array.isArray(e==null?void 0:e.atualizar)?e.atualizar:[],l=Array.isArray(e==null?void 0:e.remover)?e.remover:[],d=(M,z)=>String((M==null?void 0:M.id)??`#${z}`),h=[],p=M=>(a.recusadas.push(...h),M),g=[];s.forEach((M,z)=>{const D=Ht(M,t,this.p.opcoesNormalizacao());D?g.push(D):h.push(d(M,z))});const v=this.p.obterLayerManager(),u=v.getLayerDef(t);if(!(!u||u.tipo===G)||!u&&g.length===0)return c.forEach((M,z)=>a.recusadas.push(d(M,z))),g.forEach(M=>h.push(M.id)),p({resultado:a,adicionadas:n,atualizadas:r});if((g.length>0||u)&&!this.garantirCamada(t,o))return g.forEach(M=>h.push(M.id)),p({resultado:a,adicionadas:n,atualizadas:r});const A=this.lista(t),k=this.posicaoDe(t),S=A.slice(),C=[],x=[];let P=!1;for(const M of l){const z=String(M),D=k.get(z);D===void 0||S[D]===null||(S[D]=null,C.push(z),a.removidas++,P=!0)}c.forEach((M,z)=>{const D=M&&typeof M=="object"&&M.id!==void 0&&M.id!==null?String(M.id):"",_=k.get(D),R=_===void 0?null:S[_],F=R?this.mesclar(R,M,t,!!o.substituirPropriedades):null;if(!F||_===void 0){a.recusadas.push(D||d(M,z));return}S[_]=F,x.push(F),r.push(F),a.atualizadas++});for(const M of g){const z=k.get(M.id);z!==void 0&&S[z]!==null?S[z]=M:(k.set(M.id,S.length),S.push(M)),x.push(M),n.push(M),a.adicionadas++}if(x.length===0&&C.length===0)return p({resultado:a,adicionadas:n,atualizadas:r});const L=P?S.filter(M=>M!==null):S,I={feicoes:L,delta:{base:A,mudadas:x,removidas:C}};return v.setLayerData(t,I),delete I.delta,P?this.posicoes.delete(t):this.posicoes.set(t,{lista:L,pos:k}),this.p.aposDados(),p({resultado:a,adicionadas:n,atualizadas:r})}}const Na="cm-vertex-edit-hud",at="cad-edicao-vertices",Ot="#facc15",ge="#f472b6",Qn="#22d3ee",tr=600,er=100,or=24,ar=2500,ve=(i,t)=>i===t||JSON.stringify(i)===JSON.stringify(t);class $a{constructor(t){f(this,"feicaoAtual",null);f(this,"base",null);f(this,"inicial",null);f(this,"historico",[]);f(this,"refeitos",[]);f(this,"pts",[]);f(this,"alcas",[]);f(this,"fantasmas",[]);f(this,"alcasBezier",[]);f(this,"marcadorSnap",null);f(this,"hud",null);f(this,"grupo",null);f(this,"ultimaInsercao",0);f(this,"selecionado",null);f(this,"arrastando",0);f(this,"gravando",!1);f(this,"retangulo",!1);f(this,"avisoTimer",null);f(this,"aoZoom",()=>{this.feicaoAtual&&this.arrastando===0&&this.reconstruir()});f(this,"aoTecla",t=>{if(!this.feicaoAtual||t.defaultPrevented||Mt(t))return;const e=t.ctrlKey||t.metaKey,o=t.key.toLowerCase();if(e&&!t.altKey&&o==="z")t.shiftKey?this.refazer():this.desfazer();else if(e&&!t.altKey&&o==="y")this.refazer();else if(t.key==="Delete"||t.key==="Backspace"){if(this.selecionado===null)return;this.excluir(this.selecionado)}else if(t.key==="Enter")this.parar();else return;t.preventDefault()});this.dep=t}get ativo(){return this.feicaoAtual!==null}get ehCirculo(){var t;return((t=this.feicaoAtual)==null?void 0:t.geometria.tipo)==="Circle"}get feicao(){return this.feicaoAtual}get noSelecionado(){return this.selecionado}get podeDesfazer(){return this.historico.length>0}get podeRefazer(){return this.refeitos.length>0}iniciar(t){this.parar(),this.feicaoAtual=t,this.base=t,this.inicial=t,this.historico=[],this.refeitos=[],this.selecionado=null,this.pts=it(t.geometria).map(o=>[o[0],o[1]]),this.retangulo=this.detectarRetangulo();const e=this.dep.map;if(!e.getPane(at)){const o=e.createPane(at);o.style.zIndex="9000"}this.grupo=b.layerGroup().addTo(e),e.on("zoomend",this.aoZoom),window.addEventListener("keydown",this.aoTecla),this.montarHud(),this.reconstruir()}parar(){var e,o;const t=this.feicaoAtual;t&&(this.feicaoAtual=null,this.base=null,this.inicial=null,this.historico=[],this.refeitos=[],this.selecionado=null,this.arrastando=0,this.alcas=[],this.fantasmas=[],this.alcasBezier=[],this.dep.map.off("zoomend",this.aoZoom),window.removeEventListener("keydown",this.aoTecla),this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=null,(e=this.grupo)==null||e.remove(),this.grupo=null,this.marcadorSnap=null,(o=this.hud)==null||o.remove(),this.hud=null,this.dep.aoEncerrar(t))}cancelar(){const t=this.feicaoAtual,e=this.inicial;if(!(!t||!e)){if(!ve(e.geometria,t.geometria)){const o={...t,geometria:e.geometria};this.dep.previsualizar(o),this.gravar(o)}this.parar()}}sincronizar(t){if(!(!this.feicaoAtual||this.feicaoAtual.id!==t.id)){if(this.gravando){this.feicaoAtual=t,this.base=t,this.ehCirculo&&this.circuloCompativel(t)||(this.pts=it(t.geometria).map(e=>[e[0],e[1]])),this.retangulo=this.detectarRetangulo(),this.reconstruir();return}if(this.arrastando>0){this.feicaoAtual={...t,geometria:this.feicaoAtual.geometria};return}if(this.base&&ve(t.geometria,this.base.geometria)){this.feicaoAtual=t,this.base=t;return}this.feicaoAtual=t,this.base=t,this.inicial=t,this.historico=[],this.refeitos=[],this.selecionado=null,this.pts=it(t.geometria).map(e=>[e[0],e[1]]),this.retangulo=this.detectarRetangulo(),this.reconstruir()}}circuloCompativel(t){const e=t.geometria;return e.tipo!=="Circle"||this.pts.length<2?!1:e.centro[0]===this.pts[0][0]&&e.centro[1]===this.pts[0][1]&&Math.abs(m.distanciaMetros(this.pts[0],this.pts[1])-e.raioMetros)<.01}atualizarSnapNoHud(){var e;const t=(e=this.hud)==null?void 0:e.querySelector('[data-campo="snap"]');t&&(t.textContent=`Snap ${this.dep.snapLigado()?"on":"off"} (S)`)}geometriaAtual(){return Le(this.feicaoAtual.geometria,this.pts)}feicaoComPontos(){return{...this.feicaoAtual,geometria:this.geometriaAtual()}}detectarRetangulo(){var c;const t=(c=this.feicaoAtual)==null?void 0:c.geometria;if(!t||t.tipo!=="Polygon"||t.curva||this.pts.length!==4)return!1;const[e,o,a,n]=this.pts,r=e[0]===o[0]&&o[1]===a[1]&&a[0]===n[0]&&n[1]===e[1],s=e[1]===o[1]&&o[0]===a[0]&&a[1]===n[1]&&n[0]===e[0];return r||s}reconstruir(){var e;if((e=this.grupo)==null||e.clearLayers(),this.alcas=[],this.fantasmas=[],this.alcasBezier=[],!this.feicaoAtual||!this.grupo)return;this.selecionado!==null&&this.selecionado>=this.pts.length&&(this.selecionado=null);const t=this.feicaoAtual.geometria;if(this.pts.forEach((o,a)=>{const n=this.criarAlca(o,a);this.alcas.push(n),this.grupo.addLayer(n)}),this.criarAlcasBezier(),t.tipo!=="Point")for(const[o,a]of Be(this.geometriaAtual())){if(!this.segmentoLongoNaTela(o,a))continue;const n=this.criarFantasma(o,a);this.fantasmas.push(n),this.grupo.addLayer(n.marker)}this.atualizarHud()}segmentoLongoNaTela(t,e){const o=this.pts[t],a=this.pts[e];if(!o||!a)return!1;const n=this.dep.map.latLngToContainerPoint(o),r=this.dep.map.latLngToContainerPoint(a);return Math.hypot(n.x-r.x,n.y-r.y)>=or}icone(t,e,o){return b.divIcon({className:`custom-leaflet-marker ${t}`,iconSize:[e,e],html:`<div style="width:${e}px;height:${e}px;box-sizing:border-box;${o}"></div>`})}iconeAlca(t){const e=this.ehCirculo&&t===1,o=this.selecionado===t,a=o?Qn:Ot,n=o?"2px solid #fff;box-shadow:0 0 0 2px #0e7490":"2px solid #111";return this.icone("cad-vertex-handle",12,`background:${a};border:${n};border-radius:${e?"50%":"2px"};cursor:${e?"ew-resize":"move"}`)}criarAlca(t,e){const o=b.marker(t,{icon:this.iconeAlca(e),draggable:!0,pane:at,keyboard:!1});return o.on("dragstart",()=>{this.arrastando++}),o.on("drag",a=>{const n=a.originalEvent;this.aoArrastar(o,e,!!(n!=null&&n.shiftKey))}),o.on("dragend",()=>{this.arrastando=Math.max(0,this.arrastando-1),this.esconderSnap(),this.selecionado=e,this.retangulo=this.detectarRetanguloDe(this.pts),this.confirmar(this.feicaoComPontos()),this.atualizarSelecaoVisual()}),o.on("click",a=>{b.DomEvent.stopPropagation(a.originalEvent),this.selecionarNo(e)}),o.on("contextmenu",a=>{b.DomEvent.preventDefault(a.originalEvent),b.DomEvent.stopPropagation(a.originalEvent),this.excluir(e)}),o.on("dblclick",a=>{b.DomEvent.stopPropagation(a.originalEvent),!(Date.now()-this.ultimaInsercao<tr)&&this.alternarSuave(e)}),o}detectarRetanguloDe(t){const e=this.pts;this.pts=t;try{return this.detectarRetangulo()}finally{this.pts=e}}selecionarNo(t){this.selecionado=t!==null&&t>=0&&t<this.pts.length?t:null,this.atualizarSelecaoVisual(),this.atualizarBotoes()}atualizarSelecaoVisual(){this.alcas.forEach((t,e)=>t.setIcon(this.iconeAlca(e))),this.atualizarBotoes()}criarAlcasBezier(){var e;const t=(e=this.feicaoAtual)==null?void 0:e.geometria;!t||t.tipo!=="LineString"&&t.tipo!=="Polygon"||this.pts.forEach((o,a)=>this.completarAlcasDoNo(a))}posicaoDaAlca(t,e,o){var r,s;const a=(s=(r=X(t))==null?void 0:r[e])==null?void 0:s[o];if(a)return{pos:a,latente:!1};if(this.pts.length>aa)return null;const n=ia(t,e,o);return n?{pos:n,latente:!0}:null}iconeDaAlca(t){return this.icone("cad-bezier-handle",10,t?`background:transparent;border:2px dashed ${ge};opacity:.6;border-radius:50%;cursor:move`:`background:#fff;border:2px solid ${ge};border-radius:50%;cursor:move`)}completarAlcasDoNo(t){var a;const e=this.feicaoAtual&&this.geometriaAtual(),o=e&&((a=mt(e))==null?void 0:a[t]);if(!(!e||!o||!this.grupo))for(const n of["entrada","saida"]){const r=this.posicaoDaAlca(e,t,n);if(!r||this.alcasBezier.some(d=>d.i===t&&d.qual===n))continue;const s=b.polyline([o.ponto,r.pos],{pane:at,color:ge,weight:1,opacity:r.latente?.35:.8,dashArray:r.latente?"3 3":void 0,interactive:!1}),c=b.marker(r.pos,{icon:this.iconeDaAlca(r.latente),draggable:!0,pane:at,keyboard:!1}),l={marker:c,haste:s,i:t,qual:n,latente:r.latente};c.on("dragstart",()=>{this.arrastando++}),c.on("drag",d=>{const h=d.originalEvent;this.aoArrastarAlca(l,!(h!=null&&h.shiftKey))}),c.on("dragend",()=>{this.arrastando=Math.max(0,this.arrastando-1),this.confirmar(this.feicaoAtual)}),this.alcasBezier.push(l),this.grupo.addLayer(s),this.grupo.addLayer(c)}}sincronizarAlcasBezier(){const t=this.feicaoAtual&&this.geometriaAtual(),e=t&&mt(t);if(!(!t||!e))for(const o of this.alcasBezier){const a=this.posicaoDaAlca(t,o.i,o.qual);if(!a||!e[o.i])continue;const{lat:n,lng:r}=o.marker.getLatLng();(n!==a.pos[0]||r!==a.pos[1])&&o.marker.setLatLng(a.pos),o.haste.setLatLngs([e[o.i].ponto,a.pos]),o.latente!==a.latente&&(o.latente=a.latente,o.marker.setIcon(this.iconeDaAlca(a.latente)),o.haste.setStyle({opacity:a.latente?.35:.8,dashArray:a.latente?"3 3":void 0}))}}aoArrastarAlca(t,e){const o=this.feicaoAtual;if(!o)return;const{lat:a,lng:n}=t.marker.getLatLng(),r=na(o.geometria,t.i,t.qual,[a,n],e);this.feicaoAtual={...o,geometria:r},this.completarAlcasDoNo(t.i),this.sincronizarAlcasBezier(),this.dep.previsualizar(this.feicaoAtual),this.atualizarHud()}alternarSuave(t){const e=this.feicaoAtual;if(!e)return;const o=ra(e.geometria,t);o!==e.geometria&&(this.feicaoAtual={...e,geometria:o},this.reconstruir(),this.dep.previsualizar(this.feicaoAtual),this.confirmar(this.feicaoAtual))}criarFantasma(t,e){const o=b.marker(lt(this.geometriaAtual(),t,e),{icon:this.icone("cad-vertex-ghost",9,`background:${Ot};opacity:.45;border:1px solid #111;border-radius:50%;cursor:copy`),draggable:!0,pane:at,keyboard:!1});return o.on("click",a=>{b.DomEvent.stopPropagation(a.originalEvent),this.ultimaInsercao=Date.now(),this.inserir(t)}),o.on("drag",()=>this.aoArrastarFantasma(o,t)),o.on("dragend",()=>{this.esconderSnap(),this.ultimaInsercao=Date.now(),this.inserir(t,this.posicaoDoFantasma(o))}),{marker:o,i:t,j:e}}posicaoDoFantasma(t){var a;const e=this.feicaoAtual,o=[t.getLatLng().lat,t.getLatLng().lng];return!e||!this.dep.snapLigado()?o:((a=this.dep.buscarSnap(o,{feicaoId:e.id,camadaId:e.camadaId}))==null?void 0:a.coordenada)??o}aoArrastarFantasma(t,e){const o=this.posicaoDoFantasma(t);o[0]!==t.getLatLng().lat||o[1]!==t.getLatLng().lng?(t.setLatLng(o),this.mostrarSnap(o)):this.esconderSnap();const a=this.comInsercao(e,o);a&&(this.dep.previsualizar(a.feicao),this.atualizarHud(a.feicao.geometria))}aoArrastar(t,e,o=!1){var s;const a=this.feicaoAtual;if(!a)return;let n=[t.getLatLng().lat,t.getLatLng().lng];const r=this.dep.snapLigado()?this.dep.buscarSnap(n,{feicaoId:a.id,camadaId:a.camadaId,vertice:e}):null;if(r?(n=r.coordenada,t.setLatLng(n),this.mostrarSnap(n)):this.esconderSnap(),a.geometria.tipo==="Circle"&&e===0){const c=n[0]-this.pts[0][0],l=n[1]-this.pts[0][1];this.pts[1]=[this.pts[1][0]+c,this.pts[1][1]+l],(s=this.alcas[1])==null||s.setLatLng(this.pts[1])}this.retangulo&&!o?this.moverCantoDoRetangulo(e,n):this.pts[e]=n;for(const c of this.fantasmas)this.retangulo&&!o?c.marker.setLatLng(lt(this.geometriaAtual(),c.i,c.j)):(c.i===e||c.j===e)&&c.marker.setLatLng(lt(this.geometriaAtual(),c.i,c.j));this.dep.previsualizar(this.feicaoComPontos()),this.atualizarAlcasDoNo(e),this.atualizarHud()}moverCantoDoRetangulo(t,e){var s,c;const o=this.pts[(t+2)%4],a=(t+1)%4,n=(t+3)%4,r=this.pts[a][0]===this.pts[t][0];this.pts[t]=e,this.pts[a]=r?[e[0],o[1]]:[o[0],e[1]],this.pts[n]=r?[o[0],e[1]]:[e[0],o[1]],(s=this.alcas[a])==null||s.setLatLng(this.pts[a]),(c=this.alcas[n])==null||c.setLatLng(this.pts[n])}atualizarAlcasDoNo(t){this.sincronizarAlcasBezier()}comInsercao(t,e){const o=this.feicaoAtual;if(!o||this.pts.length===0)return null;const a=this.geometriaAtual(),n=lt(a,t,(t+1)%this.pts.length),r=ea(a,t,n);if(r===a)return null;const s=it(r).map(c=>[c[0],c[1]]);return e&&Number.isFinite(e[0])&&Number.isFinite(e[1])&&(s[t+1]=e),{feicao:{...o,geometria:Le(r,s)},pts:s}}inserir(t,e){const o=this.comInsercao(t,e);if(!o){this.reconstruir(),this.feicaoAtual&&this.dep.previsualizar(this.feicaoComPontos());return}this.pts=o.pts,this.feicaoAtual=o.feicao,this.retangulo=!1,this.selecionado=t+1,this.reconstruir(),this.dep.previsualizar(o.feicao),this.confirmar(o.feicao)}confirmar(t){const e=this.base;e&&!ve(e.geometria,t.geometria)&&(this.historico.push(e),this.historico.length>er&&this.historico.shift(),this.refeitos=[]),this.feicaoAtual=t,this.base=t,this.gravar(t),this.atualizarBotoes()}gravar(t){this.gravando=!0;try{this.dep.aoGesto(t)}finally{this.gravando=!1}}excluir(t){if(!this.feicaoAtual)return!1;const o=this.geometriaAtual(),a=oa(o,t);if(!a)return o.tipo==="Circle"?this.avisar("Círculo: mova o centro ou a borda (não há nós para excluir)."):o.tipo==="Point"?this.avisar("Um ponto tem um único nó."):this.avisar(`Mínimo de ${At(o)} nós: não dá para excluir mais.`),!1;this.pts=it(a).map(r=>[r[0],r[1]]),this.retangulo=!1,this.selecionado=null,this.reconstruir();const n=this.feicaoComPontos();return this.dep.previsualizar(n),this.confirmar(n),!0}excluirSelecionado(){return this.selecionado===null?(this.avisar("Clique num nó para selecioná-lo e então exclua."),!1):this.excluir(this.selecionado)}excluirVertice(t){const e=this.pts.length;return this.excluir(t),this.pts.length<e}inserirVerticeApos(t){t<0||t>=this.pts.length||this.inserir(t)}desfazer(){const t=this.historico.pop();return!t||!this.base?(this.avisar("Nada a desfazer."),!1):(this.refeitos.push(this.base),this.aplicarEstado(t),!0)}refazer(){const t=this.refeitos.pop();return!t||!this.base?(this.avisar("Nada a refazer."),!1):(this.historico.push(this.base),this.aplicarEstado(t),!0)}aplicarEstado(t){if(!this.feicaoAtual)return;const e={...this.feicaoAtual,geometria:t.geometria};this.feicaoAtual=e,this.base=e,this.pts=it(e.geometria).map(o=>[o[0],o[1]]),this.retangulo=this.detectarRetangulo(),this.reconstruir(),this.dep.previsualizar(e),this.gravar(e),this.atualizarBotoes()}mostrarSnap(t){this.grupo&&(this.marcadorSnap?this.marcadorSnap.setLatLng(t):this.marcadorSnap=b.marker(t,{icon:b.divIcon({className:"custom-leaflet-marker cm-snap",iconSize:[18,18],html:'<div style="width:18px;height:18px;box-sizing:border-box;border:2px solid #22d3ee;transform:rotate(45deg);border-radius:2px"></div>'}),interactive:!1,pane:at,keyboard:!1}).addTo(this.grupo))}esconderSnap(){var t;this.marcadorSnap&&((t=this.grupo)==null||t.removeLayer(this.marcadorSnap),this.marcadorSnap=null)}montarHud(){var d;const t=this.dep.map.getContainer(),e=document.createElement("div");e.id=Na,e.style.cssText=Ue+"gap:8px;align-items:center;padding:4px 10px;border-radius:8px;background:rgba(15,23,42,.92);color:#fff;font:11px var(--ui-fonte-base,sans-serif);border:1px solid rgba(255,255,255,.2);pointer-events:auto";const o=h=>{const p=document.createElement("span");return p.dataset.campo=h,p},a=(h,p,g,v,u=!1)=>{const y=document.createElement("button");return y.type="button",y.dataset.acao=h,y.textContent=p,y.title=g,y.style.cssText=`padding:2px 8px;font-size:11px;border-radius:4px;border:1px solid ${u?Ot:"rgba(255,255,255,.3)"};background:${u?Ot:"transparent"};color:${u?"#111":"#fff"};font-weight:600;cursor:pointer`,y.addEventListener("click",v),y},n=(d=this.feicaoAtual)==null?void 0:d.geometria.tipo,r=document.createElement("strong");r.textContent=this.ehCirculo?"Círculo":"Editando";const s=o("snap");s.style.cursor="pointer",s.style.whiteSpace="nowrap",s.title="Alternar snap (S). Alt desliga temporariamente.",s.style.opacity=".85",s.addEventListener("click",()=>this.dep.alternarSnap());const c=o("dica");c.style.opacity=".7",c.textContent=n==="Circle"?"Ctrl+Z desfaz · Enter conclui":n==="Point"?"Arraste para mover · Ctrl+Z desfaz · Enter conclui":"Arraste ○ p/ curvar · ponto do meio: novo nó · botão direito ou Delete no nó: excluir · 2× clique: curva/canto · Shift: alça livre · Ctrl+Z desfaz",c.title="Alças pontilhadas ainda são retas. Shift vale durante o arraste. Enter, Esc ou Concluir sai; clicar fora não sai.",c.style.fontSize="10px";const l=o("aviso");l.style.color="#fbbf24",l.setAttribute("role","status"),e.append(r,o("nos"),o("medida"),s,c,l),e.append(a("desfazer","Desfazer","Desfazer o último gesto (Ctrl+Z)",()=>this.desfazer())),e.append(a("refazer","Refazer","Refazer (Ctrl+Shift+Z ou Ctrl+Y)",()=>this.refazer())),(n==="LineString"||n==="Polygon")&&e.append(a("excluir-no","Excluir nó","Exclui o nó selecionado (Delete); clique num nó para selecioná-lo",()=>this.excluirSelecionado())),e.append(a("cancelar","Cancelar","Descartar tudo o que foi alterado nesta edição",()=>this.cancelar())),e.append(a("concluir","Concluir","Concluir a edição (Enter ou Esc)",()=>this.parar(),!0)),b.DomEvent.disableClickPropagation(e),b.DomEvent.disableScrollPropagation(e),t.appendChild(e),this.hud=e,this.atualizarSnapNoHud(),this.atualizarBotoes()}atualizarBotoes(){if(!this.hud)return;const t={desfazer:this.historico.length>0,refazer:this.refeitos.length>0,"excluir-no":this.selecionado!==null};for(const[e,o]of Object.entries(t)){const a=this.hud.querySelector(`[data-acao="${e}"]`);a&&(a.disabled=!o,a.style.opacity=o?"1":".4",a.style.cursor=o?"pointer":"default")}}avisar(t){var o;const e=(o=this.hud)==null?void 0:o.querySelector('[data-campo="aviso"]');e&&(e.textContent=t,this.avisoTimer&&clearTimeout(this.avisoTimer),this.avisoTimer=setTimeout(()=>{e.textContent="",this.avisoTimer=null},ar))}atualizarHud(t){if(!this.hud||!this.feicaoAtual)return;const e=t??this.geometriaAtual(),o=this.hud.querySelector('[data-campo="nos"]'),a=this.hud.querySelector('[data-campo="medida"]');o&&(o.textContent=e.tipo==="Circle"?"Centro move · borda = raio":`${this.pts.length} nós`),a&&(e.tipo==="Polygon"?a.textContent=`Área ${m.formatarArea(m.areaDaGeometria(e)??0)} · perím. ${m.formatarExtensao(m.extensaoDaGeometria(e)??0)}`:e.tipo==="LineString"?a.textContent=m.formatarExtensao(m.extensaoDaGeometria(e)??0):e.tipo==="Point"?a.textContent=`${e.coordenada[0].toFixed(6)}, ${e.coordenada[1].toFixed(6)}`:e.tipo==="Circle"&&(a.textContent=`Raio: ${m.formatarExtensao(e.raioMetros)} · Área: ${m.formatarArea(m.areaDaGeometria(e)??0)}`))}vertices(){return this.pts.map(t=>[t[0],t[1]])}get totalAlcasBezier(){return this.alcasBezier.length}arrastarAlcaPara(t,e,o,a=!1){const n=this.alcasBezier.find(r=>r.i===t&&r.qual===e);n&&(n.marker.setLatLng(o),this.aoArrastarAlca(n,!a),this.confirmar(this.feicaoAtual))}alternarSuavidadeDoNo(t){this.alternarSuave(t)}arrastarPara(t,e,o=!1){const a=this.alcas[t];a&&(a.setLatLng(e),this.aoArrastar(a,t,o),a.fire("dragend"))}}class ir{constructor(t){f(this,"editor",null);f(this,"pararDeVigiarCamada",null);this.p=t}get editando(){var t;return!!((t=this.editor)!=null&&t.ativo)}get editorAtual(){return this.editor}get feicao(){var t;return(t=this.editor)!=null&&t.ativo?this.editor.feicao:null}sincronizar(t){var e;(e=this.editor)==null||e.sincronizar(t)}atualizarSnapNoHud(){var t;(t=this.editor)==null||t.atualizarSnapNoHud()}iniciarEdicao(t,e){var d,h,p;const o=this.p.buscar(t,e);if(!o||o.excluida)return{ok:!1,motivo:"inexistente"};const a=this.p.obterLayerManager().getLayerDef(t),n=Pe(o,!!(a!=null&&a.bloqueada));if(n)return this.p.emitir("cad-edicao-recusada",{motivo:n,feicao:o}),{ok:!1,motivo:n};const r=this.p.obterMapa();if(!r)return{ok:!1,motivo:"sem-mapa"};this.p.desativarFerramenta(),(d=this.editor)==null||d.parar(),this.p.aplicarMargensHud(),this.p.selecionarUma({camadaId:t,id:e}),this.p.fecharPopup();const s=this.p.obterLayerManager(),c=$.get(G),l=new $a({map:r,snapLigado:()=>this.p.snapAtivo(),alternarSnap:()=>this.p.alternarSnap(),buscarSnap:(g,v)=>this.p.buscarSnapEm(g,v),previsualizar:g=>{const v=s.getLayerInstance(g.camadaId);v&&c&&c.previsualizar(v,g)},aoGesto:g=>{this.p.substituir(g.camadaId,g),this.p.emitir("cad-feicao-atualizada",{camadaId:g.camadaId,feicao:g})},aoEncerrar:g=>{var u,y;this.editor=null,this.vigiarCamada(null),(y=(u=this.p).aoEdicao)==null||y.call(u,!1);const v=this.p.buscar(g.camadaId,g.id)??g;this.p.emitir("cad-edicao-concluida",{feicao:v}),this.p.reabrirPopupDaSelecao()}});return this.editor=l,l.iniciar(o),(p=(h=this.p).aoEdicao)==null||p.call(h,!0),this.vigiarCamada(s),this.p.emitir("cad-edicao-iniciada",{feicao:o}),{ok:!0}}vigiarCamada(t){var e;(e=this.pararDeVigiarCamada)==null||e.call(this),this.pararDeVigiarCamada=null,t&&(this.pararDeVigiarCamada=t.onChange(()=>{const o=this.feicao;if(!o)return;const a=t.getLayerDef(o.camadaId);(!a||!a.visivel||a.bloqueada)&&this.parar()}))}selecionadaEditavel(){const t=this.p.selecionadas();if(t.length!==1)return null;const e=this.p.obterLayerManager().getLayerDef(t[0].camadaId);return Pe(t[0],!!(e!=null&&e.bloqueada))===null?t[0]:null}editarSelecionada(){if(this.editando)return!1;const t=this.selecionadaEditavel();return!!t&&this.iniciarEdicao(t.camadaId,t.id).ok}alternarEdicaoDaSelecao(){if(this.editando)return this.parar(),{ok:!0};const t=this.p.selecionadas();return t.length!==1?(this.p.emitir("cad-edicao-recusada",{motivo:"sem-selecao",feicao:null}),{ok:!1,motivo:"sem-selecao"}):this.iniciarEdicao(t[0].camadaId,t[0].id)}parar(){var t;(t=this.editor)==null||t.parar()}}const We=10,vt=(i,t)=>Math.hypot(i.x-t.x,i.y-t.y);function mo(i,t,e){const o=e.x-t.x,a=e.y-t.y,n=o*o+a*a,r=n===0?0:Math.max(0,Math.min(1,((i.x-t.x)*o+(i.y-t.y)*a)/n));return{t:r,d:Math.hypot(i.x-(t.x+r*o),i.y-(t.y+r*a))}}function Ra(i,t,e,o={},a){const n=o.toleranciaPx??We,r=o.vertice!==!1,s=o.meio!==!1,c=o.aresta!==!1;let l=null,d=null,h=null;const p=(g,v)=>!g||v.distanciaPx<g.distanciaPx?v:g;for(const g of t){if(g.excluida||g.oculta)continue;const v=!!a&&a.feicaoId===g.id&&(a.camadaId===void 0||a.camadaId===g.camadaId),u=g.geometria,y={feicaoId:g.id,camadaId:g.camadaId};if(u.tipo==="Point"||u.tipo==="Text"||u.tipo==="Circle"){if(!r||v)continue;const C=u.tipo==="Circle"?u.centro:u.coordenada,x=vt(i,e(C));x<=n&&(l=p(l,{tipo:"vertice",coordenada:C,distanciaPx:x,...y}));continue}if(v&&(u.tipo==="LineString"||u.tipo==="Polygon")&&u.curva)continue;const A=u.tipo==="LineString"||u.tipo==="Polygon"?X(u):null;if(A){if(r)for(const C of A){const x=vt(i,e(C.ponto));x<=n&&(l=p(l,{tipo:"vertice",coordenada:C.ponto,distanciaPx:x,...y}))}if(s)for(const[C,x]of Be(u)){const P=lt(u,C,x),L=vt(i,e(P));L<=n&&(d=p(d,{tipo:"meio",coordenada:P,distanciaPx:L,...y}))}if(c){const C=Z(u),x=C.map(e),P=[];for(let L=0;L<C.length-1;L++)P.push([L,L+1]);u.tipo==="Polygon"&&C.length>2&&P.push([C.length-1,0]);for(const[L,w]of P){const{t:I,d:M}=mo(i,x[L],x[w]);if(M<=n){const z=[C[L][0]+I*(C[w][0]-C[L][0]),C[L][1]+I*(C[w][1]-C[L][1])];h=p(h,{tipo:"aresta",coordenada:z,distanciaPx:M,...y})}}}continue}const k=u.tipo==="LineString"?m.partesDaLinha(u).map(C=>({pts:C,fechado:!1})):[{pts:Z(u),fechado:u.tipo==="Polygon"}],S=v?a.vertice:void 0;for(const{pts:C,fechado:x}of k){const P=C.map(e);if(r)for(let w=0;w<C.length;w++){if(w===S)continue;const I=vt(i,P[w]);I<=n&&(l=p(l,{tipo:"vertice",coordenada:C[w],distanciaPx:I,...y}))}if(!s&&!c)continue;const L=[];for(let w=0;w<C.length-1;w++)L.push([w,w+1]);x&&C.length>2&&L.push([C.length-1,0]);for(const[w,I]of L)if(!(S!==void 0&&(w===S||I===S))&&!(v&&S===void 0)){if(s){const M=$e(C[w],C[I]),z=vt(i,e(M));z<=n&&(d=p(d,{tipo:"meio",coordenada:M,distanciaPx:z,...y}))}if(c){const{t:M,d:z}=mo(i,P[w],P[I]);if(z<=n){const D=[C[w][0]+M*(C[I][0]-C[w][0]),C[w][1]+M*(C[I][1]-C[w][1])];h=p(h,{tipo:"aresta",coordenada:D,distanciaPx:z,...y})}}}}}return l??d??h}class nr{constructor(t){this.p=t}candidatasEm(t,e){const o=this.p.obterMapa(),a=this.p.obterLayerManager(),n=$.get(G);if(!o||!n)return[];const r=o.latLngToContainerPoint(t),s=o.containerPointToLatLng([r.x-e,r.y+e]),c=o.containerPointToLatLng([r.x+e,r.y-e]),l={minLon:Math.min(s.lng,c.lng),maxLon:Math.max(s.lng,c.lng),minLat:Math.min(s.lat,c.lat),maxLat:Math.max(s.lat,c.lat)},d=[];for(const h of a.getLayers()){if(h.tipo!==G||!h.visivel)continue;const p=a.getLayerInstance(h.id);p&&d.push(...n.consultarProximas(p,l).filter(g=>this.p.desenhada(g)))}return d}buscarSnapEm(t,e){const o=this.p.obterMapa();if(!o)return null;const a=o.latLngToContainerPoint(t),n=this.candidatasEm(t,We);return Ra({x:a.x,y:a.y},n,r=>o.latLngToContainerPoint(r),{},e)}feicaoSob(t,e){const o=this.p.obterMapa();if(!o)return null;const a=o.getContainer().getBoundingClientRect(),n=b.point(t-a.left,e-a.top),r=o.containerPointToLatLng(n),s=[r.lat,r.lng];return{feicao:wt({x:n.x,y:n.y},this.candidatasEm(s,8),l=>o.latLngToContainerPoint(l)),coordenada:s}}}class rr{constructor(t){f(this,"hoverId",null);f(this,"hoverAgendado",!1);this.p=t}aoMoverMouse(t){if(t.buttons!==0||this.p.interacaoAtiva()){this.hoverId!==null&&(this.hoverId=null,this.p.emitir("cad-feicao-hover",{feicao:null}));return}if(this.hoverAgendado)return;this.hoverAgendado=!0;const{clientX:o,clientY:a}=t;let n=!1;const r=()=>{if(n)return;n=!0,this.hoverAgendado=!1;const s=this.p.feicaoSob(o,a),c=s!=null&&s.feicao?`${s.feicao.camadaId}\0${s.feicao.id}`:null;c!==this.hoverId&&(this.hoverId=c,this.p.emitir("cad-feicao-hover",{feicao:(s==null?void 0:s.feicao)??null}))};typeof requestAnimationFrame=="function"&&requestAnimationFrame(r),setTimeout(r,100)}menuContexto(t){if(this.p.botaoDireitoDaFerramenta())return;const e=this.p.feicaoSob(t.clientX,t.clientY);e&&this.p.emitir("cad-feicao-menu",{feicao:e.feicao,coordenada:e.coordenada,x:t.clientX,y:t.clientY})}duploClique(t){var a,n;if(this.p.interacaoAtiva())return;const e=this.p.feicaoSob(t.clientX,t.clientY);!(e!=null&&e.feicao)||this.p.emitir("cad-feicao-duplo-clique",{camadaId:e.feicao.camadaId,feicao:e.feicao,coordenada:e.coordenada},!0)===!0||!this.p.abrirPopup||((n=(a=this.p).popupNoDuploClique)==null?void 0:n.call(a))===!1||this.p.abrirPopup(e.feicao)}limpar(){this.hoverId=null}}const sr=111320;function yt(i,t){return i.x>=t.x1&&i.x<=t.x2&&i.y>=t.y1&&i.y<=t.y2}function go(i,t,e){let o=0,a=1;const n=t.x-i.x,r=t.y-i.y,s=[-n,n,-r,r],c=[i.x-e.x1,e.x2-i.x,i.y-e.y1,e.y2-i.y];for(let l=0;l<4;l++)if(s[l]===0){if(c[l]<0)return!1}else{const d=c[l]/s[l];if(s[l]<0){if(d>a)return!1;d>o&&(o=d)}else{if(d<o)return!1;d<a&&(a=d)}}return!0}function vo(i,t){let e=!1;for(let o=0,a=t.length-1;o<t.length;a=o++){const n=t[o],r=t[a];n.y>i.y!=r.y>i.y&&i.x<(r.x-n.x)*(i.y-n.y)/(r.y-n.y)+n.x&&(e=!e)}return e}function yo(i,t,e){for(let o=1;o<i.length;o++)if(go(i[o-1],i[o],t))return!0;return e&&i.length>2&&go(i[i.length-1],i[0],t)}function cr(i,t,e){const o=e(i),a=e([i[0]+t/sr,i[1]]);return Math.hypot(a.x-o.x,a.y-o.y)}function Ba(i,t,e,o){if(i.oculta)return!1;const a=i.geometria,n=o==="window";switch(a.tipo){case"Point":case"Text":return yt(e(a.coordenada),t);case"LineString":{const r=m.partesDaLinha(a).map(s=>s.map(e));return n?r.every(s=>s.every(c=>yt(c,t))):r.some(s=>s.some(c=>yt(c,t))||yo(s,t,!1))}case"Polygon":{const r=a.aneis.map(l=>l.map(e)),s=r[0];if(!s)return!1;if(n)return s.every(l=>yt(l,t));if(r.some(l=>l.some(d=>yt(d,t))||yo(l,t,!0)))return!0;const c={x:t.x1,y:t.y1};return vo(c,s)&&!r.slice(1).some(l=>vo(c,l))}case"Circle":{const r=e(a.centro),s=cr(a.centro,a.raioMetros,e);if(n)return r.x-s>=t.x1&&r.x+s<=t.x2&&r.y-s>=t.y1&&r.y+s<=t.y2;const c=Math.max(t.x1,Math.min(r.x,t.x2)),l=Math.max(t.y1,Math.min(r.y,t.y2));return Math.hypot(r.x-c,r.y-l)<=s}}}function Va(i,t){if(t.length<3||i.oculta)return!1;const e=a=>Ne(a,[t]),o=i.geometria;switch(o.tipo){case"Point":case"Text":return e(o.coordenada);case"Circle":return e(o.centro);case"LineString":return m.partesDaLinha(o).some(a=>a.some(e));case"Polygon":{const a=o.aneis[0]??[];if(a.some(e))return!0;if(a.length<3)return!1;const n=a.reduce((r,s)=>[r[0]+s[0],r[1]+s[1]],[0,0]);return e([n[0]/a.length,n[1]/a.length])}}}class lr{constructor(t){this.p=t}selecionarNoLaco(t){const e=[];for(const o of this.p.obterLayerManager().getActiveSelectableLayers())if(o.tipo===G)for(const a of this.p.lista(o.id))this.p.desenhada(a)&&Va(a,t)&&e.push({camadaId:o.id,id:a.id});this.p.desativarFerramenta(),this.p.selecionar(e)}selecionarNaCaixa(t,e,o){const a=this.p.obterMapa();if(!a)return;const n=s=>a.latLngToContainerPoint(s),r=[];for(const s of this.p.obterLayerManager().getActiveSelectableLayers())if(s.tipo===G)for(const c of this.p.lista(s.id))this.p.desenhada(c)&&Ba(c,t,n,e)&&r.push({camadaId:s.id,id:c.id});o?this.p.alternarVarias(r):this.p.selecionar(r)}}function dr(i){return i.key!=="Enter"||i.defaultPrevented||i.ctrlKey||i.metaKey||i.altKey||i.shiftKey?!1:!Mt(i)&&!Co(i)}class hr{constructor(t){f(this,"ouvintes",new Zt.ListenerBag);f(this,"aoTecla",t=>{try{if(!dr(t)||this.p.ocupado()||!this.p.atalhosValem())return;this.p.editarSelecionada()&&t.preventDefault()}catch(e){console.error("[ui-canvas-cad] falha no atalho Enter da edição",e)}});this.p=t}conectar(t=window){this.ouvintes.cleanup(),this.ouvintes.add(t,"keydown",this.aoTecla)}desconectar(){this.ouvintes.cleanup()}}class ur{constructor(t){f(this,"operacoes");f(this,"selecao");f(this,"popup");f(this,"edicao");f(this,"teclado");f(this,"consulta");f(this,"ponteiro");f(this,"regiao");f(this,"snap");f(this,"ferramentas");f(this,"versoes");f(this,"camera");f(this,"repositorio");f(this,"cursores");f(this,"margensHud",{});f(this,"aceitarOrigem",!1);f(this,"opcoesPopup",{copiarParaAreaDeTransferencia:!0});this.contexto=t,this.repositorio=new Jn({obterLayerManager:()=>this.contexto.obterLayerManager(),opcoesNormalizacao:()=>this.opcoesNormalizacao(),aposDados:()=>this.aposDados()}),this.consulta=new nr({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),desenhada:e=>this.desenhada(e)}),this.ponteiro=new rr({emitir:(e,o,a)=>this.contexto.emitir(e,o,a),feicaoSob:(e,o)=>this.consulta.feicaoSob(e,o),interacaoAtiva:()=>this.ferramentas.ativo||this.edicao.editando,popupNoDuploClique:()=>this.modoPopups()!=="desligado",botaoDireitoDaFerramenta:()=>this.ferramentas.ativo?(this.ferramentas.botaoDireito(),!0):!1,abrirPopup:e=>this.popup.abrir(e)}),this.regiao=new lr({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),desativarFerramenta:()=>this.ferramentas.desativarFerramenta(),selecionar:e=>this.selecao.selecionar(e),alternarVarias:e=>this.selecao.alternarVarias(e)}),this.edicao=new ir({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o)=>this.contexto.emitir(e,o),buscar:(e,o)=>this.buscar(e,o),substituir:(e,o)=>this.substituir(e,o),desativarFerramenta:()=>this.ferramentas.desativarFerramenta(),aplicarMargensHud:()=>this.aplicarMargensHud(),selecionarUma:e=>this.selecao.selecionar([e]),selecionadas:()=>this.selecao.obter(),aoEdicao:e=>{var o,a;return(a=(o=this.contexto).aoEdicao)==null?void 0:a.call(o,e)},fecharPopup:()=>this.popup.fechar(),reabrirPopupDaSelecao:()=>{if(this.modoPopups()!=="automatico")return;const e=this.selecao.obter();e.length===1&&this.popup.abrir(e[0])},snapAtivo:()=>this.snap.ativo,alternarSnap:()=>this.snap.alternar(),buscarSnapEm:(e,o)=>this.buscarSnapEm(e,o)}),this.teclado=new hr({ocupado:()=>this.edicao.editando||this.ferramentas.ativo,atalhosValem:()=>this.atalhosValem(),editarSelecionada:()=>this.edicao.editarSelecionada()}),this.versoes=new Tn({obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o)=>this.contexto.emitir(e,o),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),aposDados:()=>this.aposDados()},t.regra??new m.RegraVersoes),this.ferramentas=new Kn({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),emitir:(e,o,a)=>this.contexto.emitir(e,o,a),aoFerramenta:e=>{var o,a;return(a=(o=this.contexto).aoFerramenta)==null?void 0:a.call(o,e)},lista:e=>this.lista(e),adicionarFeicao:(e,o)=>this.adicionarFeicao(e,o),buscarSnapEm:e=>this.buscarSnapEm(e),snapAtivo:()=>this.snap.ativo,prepararDesenho:()=>{this.edicao.parar(),this.popup.fechar(),this.aplicarMargensHud()},normalizarCoordenada:e=>W(e,this.opcoesNormalizacao()),dividirComLinha:e=>this.dividirComLinha(e),selecionarNoLaco:e=>this.selecionarNoLaco(e),candidatasEm:(e,o)=>this.candidatasEm(e,o)}),this.camera=new On({obterMapa:()=>this.contexto.obterMapa(),obterLayerManager:()=>this.contexto.obterLayerManager(),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),garantirVisivel:e=>this.versoes.garantirVisivel(e)}),this.operacoes=new _n({emitir:(e,o)=>this.contexto.emitir(e,o),obterLayerManager:()=>this.contexto.obterLayerManager(),buscar:(e,o)=>this.buscar(e,o),lista:e=>this.lista(e),desenhada:e=>this.desenhada(e),idLivre:(e,o)=>this.idLivre(e,o),adicionarFeicao:(e,o)=>this.adicionarFeicao(e,o),removerFeicao:(e,o)=>this.removerFeicao(e,o),selecionadas:()=>this.selecao.obter(),estaSelecionada:e=>this.selecao.contem(e),divisaoAtiva:()=>this.ferramentas.ferramentaAtiva==="dividir",encerrarDesenho:()=>this.ferramentas.desativarFerramenta()}),this.cursores=new Ea(()=>this.contexto.obterMapa()),this.snap=new Dn({aplica:()=>this.atalhosValem(),aoMudar:e=>{var o,a;this.contexto.emitir("cad-snap",e),this.edicao.atualizarSnapNoHud(),(a=(o=this.contexto).aoSnapMudar)==null||a.call(o,e.ligado)}}),this.popup=new za({obterMapa:()=>this.contexto.obterMapa(),obterCamada:e=>this.contexto.obterLayerManager().getLayerDef(e),aoAcao:(e,o)=>this.tratarAcaoPopup(e,o),liberar:e=>this.contexto.liberarPopups?this.contexto.liberarPopups(e):e()}),this.selecao=new wa({obterFeicao:e=>this.buscar(e.camadaId,e.id),aplicarVisual:(e,o)=>{const a=this.contexto.obterLayerManager().getLayerInstance(e),n=$.get(G);a&&n&&n.aplicarSelecao(a,o)},aoSelecionar:e=>{if(this.contexto.emitir("cad-selecao",{feicoes:e}),this.edicao.editando){const o=this.edicao.feicao;e.length===1&&e[0].id===o.id&&e[0].camadaId===o.camadaId||this.edicao.parar();return}e.length===1&&this.modoPopups()==="automatico"?this.popup.abrir(e[0]):this.popup.fechar()},aoSelecionarUma:e=>this.contexto.emitir("cad-feicao-selecionada",{feicao:e}),visivel:e=>this.selecionavelAgora(e),selecionavel:e=>!e.oculta})}aposDados(){if(this.selecao.reconciliar(),this.edicao.editando){const o=this.edicao.feicao,a=this.buscar(o.camadaId,o.id);!a||a.excluida||a.bloqueada?this.edicao.parar():a!==o&&this.edicao.sincronizar(a)}const t=this.popup.aberto;if(!t)return;const e=this.buscar(t.camadaId,t.id);e&&!e.excluida?this.popup.atualizar(e):this.popup.fechar()}lista(t){return this.repositorio.lista(t)}buscar(t,e){return this.repositorio.buscar(t,e)}opcoesNormalizacao(){return{aceitarOrigem:this.aceitarOrigem}}definirFeicoes(t,e,o){return this.repositorio.definirFeicoes(t,e,o)}adicionarFeicao(t,e,o){return this.repositorio.adicionarFeicao(t,e,o)}atualizarFeicao(t,e,o,a){return this.repositorio.atualizarFeicao(t,e,o,a)}substituir(t,e){this.repositorio.substituir(t,e)}removerFeicao(t,e){return this.repositorio.removerFeicao(t,e)}aplicarLote(t,e,o){return this.repositorio.aplicarLote(t,e,o)}obterFeicoes(t){return this.lista(t).map(e=>({...e}))}tratarAcaoCamada(t,e){if(t==="feicao-movida")return this.substituir(e.camadaId,e.feicao),"cad-feicao-atualizada";if(t==="feicao-clique"){if(this.ferramentas.ativo)return null;const o={camadaId:e.camadaId,id:e.feicao.id};return e.aditivo?this.selecao.alternar(o):this.selecao.selecionar([o]),"cad-feicao-clique"}return null}selecionarFeicoes(t,e=!1){this.selecao.selecionar(Array.isArray(t)?t:[],e)}alternarSelecaoFeicao(t){this.selecao.alternar(t)}limparSelecaoFeicoes(){this.selecao.limpar()}aoPedirLimpeza(){this.ferramentas.ativo||(this.edicao.editando?this.edicao.parar():this.selecao.limpar())}obterFeicoesSelecionadas(){return this.selecao.obter()}selecionarNoLaco(t){this.regiao.selecionarNoLaco(t)}selecionarNaCaixa(t,e,o){this.regiao.selecionarNaCaixa(t,e,o)}definirMargensPopup(t){this.popup.definirMargens(t)}fecharPopup(){this.popup.fechar()}modoPopups(){var t,e;return((e=(t=this.contexto).modoPopups)==null?void 0:e.call(t))??"automatico"}abrirPopupFeicao(t,e){if(typeof t!="string"||typeof e!="string")return!1;const o=this.buscar(t,e);return!o||o.excluida||!this.desenhada(o)?!1:(this.popup.abrir(o),!0)}aoDuploClique(t){this.ponteiro.duploClique(t)}definirOpcoesPopup(t){this.opcoesPopup={...this.opcoesPopup,...t}}obterOpcoesPopup(){return{...this.opcoesPopup}}definirMargensHud(t){this.margensHud={...this.margensHud,...t},this.aplicarMargensHud()}aplicarMargensHud(){const t=this.contexto.obterMapa();t&&Oa(t.getContainer(),this.margensHud)}get regraVersoes(){return this.versoes.regra}visivelPorVersao(t){return this.versoes.visivelPorVersao(t)}desenhada(t){return this.versoes.desenhada(t)}selecionavelAgora(t){const e=this.edicao.feicao;return e&&e.id===t.id&&e.camadaId===t.camadaId?!0:!t.oculta&&this.visivelPorVersao(t)}get previasGlobais(){return this.versoes.previasGlobais}definirPreviasGlobais(t){this.versoes.definirPreviasGlobais(t)}alternarPreviasGlobais(){this.versoes.alternarPreviasGlobais()}alternarPrevia(t,e){return this.versoes.alternarPrevia(t,e)}previaSolicitada(t,e){return this.versoes.previaSolicitada(t,e)}atualizarCursorRemoto(t,e){const o=W(e,this.opcoesNormalizacao());return!!o&&this.cursores.atualizar(t,o)}removerCursorRemoto(t){return this.cursores.remover(t)}limparCursoresRemotos(){this.cursores.limpar()}get cursoresRemotos(){return this.cursores.quantidade}zoomParaFeicao(t,e){return this.camera.zoomParaFeicao(t,e)}zoomParaFeicoes(t){return this.camera.zoomParaFeicoes(t)}ajustarTudo(){return this.camera.ajustarTudo()}ajustarCamada(t){return this.camera.ajustarCamada(t)}aoMoverMouse(t){this.ponteiro.aoMoverMouse(t)}menuContexto(t){this.ponteiro.menuContexto(t)}destruir(){this.ferramentas.destruir(),this.cursores.limpar(),this.ponteiro.limpar()}tratarAcaoPopup(t,e){var o,a,n;if(t==="zoom"&&this.zoomParaFeicao(e.camadaId,e.id),t==="vertices"&&this.iniciarEdicao(e.camadaId,e.id),t==="copiar"&&this.opcoesPopup.copiarParaAreaDeTransferencia){const[r,s]=Ct(e);(n=(a=(o=globalThis.navigator)==null?void 0:o.clipboard)==null?void 0:a.writeText(`${r.toFixed(6)}, ${s.toFixed(6)}`))==null||n.catch(()=>{})}this.contexto.emitir("cad-feicao-acao",{acao:t,feicao:e})}get snapLigado(){return this.snap.ligado}get snapAtivo(){return this.snap.ativo}definirSnap(t){this.snap.definir(!!t)}alternarSnap(){this.snap.alternar()}conectarTeclado(){this.snap.conectar(),this.teclado.conectar()}desconectarTeclado(){this.snap.desconectar(),this.teclado.desconectar()}atalhosValem(){var t,e;return this.edicao.editando||this.ferramentas.ativo||(((e=(t=this.contexto).atalhoValido)==null?void 0:e.call(t))??!0)}alternarEdicaoDaSelecao(){return this.edicao.alternarEdicaoDaSelecao()}candidatasEm(t,e){return this.consulta.candidatasEm(t,e)}buscarSnapEm(t,e){return this.consulta.buscarSnapEm(t,e)}get editor(){return this.edicao.editorAtual}get editando(){return this.edicao.editando}iniciarEdicao(t,e){return this.edicao.iniciarEdicao(t,e)}pararEdicao(){this.edicao.parar()}get desenho(){return this.ferramentas.controle}amostrarEstilo(t){this.ferramentas.amostrarEstilo(t)}get ferramentaAtiva(){return this.ferramentas.ferramentaAtiva}definirCamadaDesenho(t){this.ferramentas.definirCamadaDesenho(t)}get camadaDeDesenho(){return this.ferramentas.camadaDeDesenho}definirEstiloDesenho(t){this.ferramentas.definirEstiloDesenho(t)}obterEstiloDesenho(){return this.ferramentas.obterEstiloDesenho()}alternarFerramenta(t){return this.ferramentas.alternarFerramenta(t)}ativarFerramenta(t,e={}){return this.ferramentas.ativarFerramenta(t,e)}desativarFerramenta(){this.ferramentas.desativarFerramenta()}limparMedicao(){this.ferramentas.limparMedicao()}get nosDesenho(){return this.ferramentas.nosDesenho}desfazerVerticeDesenho(){return this.ferramentas.desfazerVerticeDesenho()}definirAtalhoSnap(t){this.snap.atalhoS=t}idLivre(t,e){const o=new Set(this.lista(t).map(n=>n.id));if(!o.has(e))return e;let a=2;for(;o.has(`${e}_${a}`);)a++;return`${e}_${a}`}dividirComLinha(t){return this.operacoes.dividirComLinha(t)}gerarBuffer(t,e,o,a={}){return this.operacoes.gerarBuffer(t,e,o,a)}duplicarFeicao(t,e,o={},a={}){return this.operacoes.duplicarFeicao(t,e,o,a)}juntarFeicoes(t,e,o={}){return this.operacoes.juntarFeicoes(t,e,o)}}const bo={ponto:"Ponto",linha:"Linha",poligono:"Polígono",retangulo:"Retângulo",elipse:"Elipse","poligono-regular":"Hexágono",estrela:"Estrela",circulo:"Círculo",texto:"Texto",caneta:"Caneta","medir-distancia":"Medir","medir-area":"Área",dividir:"Dividir","selecao-laco":"Laço","conta-gotas":"Cor"};function pr(i){if(!i)return[];const t=i.split(/[\s,]+/).map(o=>o.trim().toLowerCase()).filter(Boolean);if(t.includes("todas"))return[...ae];const e=new Set(t.filter(je));return ae.filter(o=>e.has(o))}function fr(i){if(!i)return!1;const t=i.split(/[\s,]+/).map(e=>e.trim().toLowerCase());return t.includes("todas")||t.includes("editar")}class mr{constructor(t){f(this,"barra",null);f(this,"editando",!1);this.ctx=t}montar(t,e=!1){var n;(n=this.barra)==null||n.remove(),this.barra=null;const o=e&&!!this.ctx.aoEditar;if(t.length===0&&!o)return;const a=document.createElement("div");a.className="cad-quick-toolbar cad-draw-toolbar",a.setAttribute("role","toolbar"),a.setAttribute("aria-label","Ferramentas de desenho");for(const r of t){const s=document.createElement("button");s.type="button",s.className="cad-btn-tool cad-draw-btn",s.dataset.ferramenta=r,s.textContent=bo[r],s.title=bo[r],s.setAttribute("aria-pressed","false"),s.addEventListener("click",()=>this.ctx.aoEscolher(r)),a.appendChild(s)}if(o){const r=document.createElement("button");r.type="button",r.className="cad-btn-tool cad-draw-btn",r.dataset.acao="editar",r.textContent="Editar",r.title="Editar os vértices da feição selecionada (Enter ou duplo clique)",r.setAttribute("aria-pressed",String(this.editando)),r.classList.toggle("active",this.editando),r.addEventListener("click",()=>this.ctx.aoEditar()),a.appendChild(r)}this.ctx.raiz.appendChild(a),this.barra=a}marcarEdicao(t){var o;this.editando=t;const e=(o=this.barra)==null?void 0:o.querySelector('[data-acao="editar"]');e&&(e.classList.toggle("active",t),e.setAttribute("aria-pressed",String(t)))}marcar(t){var e;(e=this.barra)==null||e.querySelectorAll("[data-ferramenta]").forEach(o=>{const a=o.dataset.ferramenta===t;o.classList.toggle("active",a),o.setAttribute("aria-pressed",String(a))})}desmontar(){var t;(t=this.barra)==null||t.remove(),this.barra=null}}const gr="data-cad-estilos-externos";function vr(i){try{return Array.from(i.cssRules,t=>t.cssText).join(`
168
+ `)}catch{return""}}function yr(i){return typeof i=="string"?i.trim()?[i]:[]:Array.isArray(i)?i.map(t=>typeof t=="string"?t:vr(t)).filter(t=>t.trim()!==""):[]}class br{constructor(t){f(this,"textos",[]);f(this,"adotadas",[]);f(this,"fallback",null);this.shadow=t}get pedido(){return this.textos}definir(t){this.textos=yr(t),this.aplicar()}limpar(){this.remover()}aplicar(){if(this.remover(),this.textos.length===0)return;const t=this.shadow;if(typeof CSSStyleSheet<"u"&&Array.isArray(t.adoptedStyleSheets))try{this.adotadas=this.textos.map(o=>{const a=new CSSStyleSheet;return a.replaceSync(o),a}),t.adoptedStyleSheets=[...t.adoptedStyleSheets,...this.adotadas];return}catch{this.adotadas=[]}const e=document.createElement("style");e.setAttribute(gr,""),e.textContent=this.textos.join(`
169
+ `),this.shadow.appendChild(e),this.fallback=e}remover(){var e;const t=this.shadow;this.adotadas.length>0&&Array.isArray(t.adoptedStyleSheets)&&(t.adoptedStyleSheets=t.adoptedStyleSheets.filter(o=>!this.adotadas.includes(o))),this.adotadas=[],(e=this.fallback)==null||e.remove(),this.fallback=null}}const Ze={"linha-cor":"cor","linha-espessura":"espessura","linha-tipo":"tipo","linha-escala":"escala","linha-tracejado":"tracejado","linha-deslocamento":"deslocamento","linha-opacidade":"opacidade","linha-terminacao":"terminacao","linha-juncao":"juncao"},Wt={cor:"corTraco",espessura:"espessuraTraco",tipo:"tipoLinha",escala:"escalaTipoLinha",tracejado:"dashArray",deslocamento:"deslocamentoTracejado",opacidade:"opacidadeTraco",terminacao:"terminacaoTraco",juncao:"juncaoTraco"},xr=100,Pr=/^\s*\d+(\.\d+)?([\s,]+\d+(\.\d+)?)*\s*$/;function Lr(i){return Object.prototype.hasOwnProperty.call(Ze,i)}const qt=i=>{const t=typeof i=="number"?i:typeof i=="string"&&i.trim()!==""?Number(i):NaN;return Number.isFinite(t)?t:void 0};function Cr(i,t){if(t!=null)switch(i){case"cor":return(typeof t=="string"?m.corSegura(t,""):"")||void 0;case"espessura":{const e=qt(t);return e!==void 0&&e>=0?Math.min(xr,e):void 0}case"escala":{const e=qt(t);return e!==void 0&&e>0?e:void 0}case"deslocamento":return qt(t);case"opacidade":{const e=qt(t);return e!==void 0?Math.min(1,Math.max(0,e)):void 0}case"tipo":return m.normalizarTipoLinha(t);case"tracejado":return typeof t=="string"&&Pr.test(t)?t.trim():void 0;case"terminacao":return m.terminacaoCanvas(t)?t:void 0;case"juncao":return m.juncaoCanvas(t)?t:void 0;default:return}}function xo(i,t){const e={...i};if(!t||typeof t!="object")return e;for(const o of Object.keys(Wt)){if(!Object.prototype.hasOwnProperty.call(t,o))continue;const a=Cr(o,t[o]);a===void 0?delete e[Wt[o]]:e[Wt[o]]=a}return e}function Sr(i){const t={};for(const[e,o]of Object.entries(Wt)){const a=i[o];a!==void 0&&(t[e]=a)}return t}function Mr(i,t){return{[Ze[i]]:t}}class Ha extends Po.SafeHTMLElement{constructor(){super();f(this,"shadow");f(this,"mapContainer",null);f(this,"layersPanel",null);f(this,"controller");f(this,"controladorTamanho");f(this,"toolbarPainel");f(this,"broadcastConfig");f(this,"colecoesDados");f(this,"feicoes");f(this,"barraFerramentas");f(this,"hoverListeners",new Zt.ListenerBag);f(this,"desligarAnuncios",null);f(this,"layerItemListeners",new Zt.ListenerBag);f(this,"initTimeout");f(this,"estilosExternos");f(this,"lastPopupActionEmit");f(this,"lastCanvasClickTime",0);f(this,"ponteiroSobre",!1);f(this,"_chaveGrupo");f(this,"_zonaProjecao",22);this.shadow=this.attachShadow({mode:"open"}),this.controller=new ne,this.controladorTamanho=Ca(this,this.controller),this.shadow.innerHTML=rn(),this.estilosExternos=new br(this.shadow),this.mapContainer=this.shadow.getElementById("cad-map-container"),this.layersPanel=this.shadow.getElementById("qgis-layer-panel"),this.toolbarPainel=new on({shadow:this.shadow,mapContainer:this.mapContainer,layersPanel:this.layersPanel,onToggleCamadas:()=>this.toggleLayersPanel(),onCloseCamadas:()=>this.closeLayersPanel(),onZoomExtents:()=>this.zoomExtents(),onLimparSelecao:()=>this.limparSelecao(),onToggleSnap:()=>this.feicoes.alternarSnap(),onTratarCliqueCanvas:n=>this.tratarCliqueLivreCanvas(n),onDispararAcaoPopup:(n,r)=>this.dispararAcaoPopup(n,r)}),this.broadcastConfig=new en({host:this,controller:this.controller,mapContainer:this.mapContainer,setLayerOpacity:(n,r)=>this.setLayerOpacity(n,r)}),this.colecoesDados=new an({obterController:()=>this.controller,obterChaveGrupo:()=>this.chaveGrupo,setLayerVisibility:(n,r)=>this.setLayerVisibility(n,r)});const e=new m.RegraVersoes,o=this.controller.context,a=this.controller.canvasInteracao.ctx;Object.assign(o,{regraVersoes:e,renderizador:()=>this.renderizador}),this.feicoes=new ur({obterLayerManager:()=>this.controller.layerManager,obterMapa:()=>this.controller.getMap(),regra:e,modoPopups:()=>this.popups,liberarPopups:n=>De(this.controller.getMap(),n),aoFerramenta:n=>{this.barraFerramentas.marcar(n)},aoSnapMudar:n=>{co(this.shadow,n)},aoEdicao:n=>{this.barraFerramentas.marcarEdicao(n)},atalhoValido:()=>this.ponteiroSobre||this.matchesFocoInterno()||this.ehUnicoCanvas(),emitir:(n,r,s)=>{const c=new CustomEvent(n,{detail:r,bubbles:!0,composed:!0,cancelable:!!s});return this.dispatchEvent(c),c.defaultPrevented}}),Object.assign(o,{onLayerAction:(n,r)=>{const s=this.feicoes.tratarAcaoCamada(n,r);s&&this.dispatchEvent(new CustomEvent(s,{detail:r,bubbles:!0,composed:!0}))}}),this.barraFerramentas=new mr({raiz:this.shadow.getElementById("cad-root"),aoEscolher:n=>{this.feicoes.alternarFerramenta(n)},aoEditar:()=>{this.feicoes.alternarEdicaoDaSelecao()}}),this.montarBarra(this.getAttribute("ferramentas")),Object.assign(a,{aoMenuContexto:n=>this.feicoes.menuContexto(n),ferramentaAtiva:()=>this.feicoes.ferramentaAtiva!==null,edicaoAtiva:()=>this.feicoes.editando,aoLimparSelecao:()=>this.feicoes.aoPedirLimpeza(),selecionarFeicoesNaCaixa:(n,r,s)=>this.feicoes.selecionarNaCaixa(n,r,s)}),pn(this.shadow),co(this.shadow,!0)}static get observedAttributes(){return["sat-opacity","scale-mode","crosshair","modo-sequencial","chave-grupo","zona-projecao","fuso","canal-configuracao","ferramentas","sem-atalho-snap","aceitar-origem","sem-camadas-padrao","sem-painel-camadas","sem-barra-rapida","popups","renderizador","sem-avisos","linha-cor","linha-espessura","linha-tipo","linha-escala","linha-tracejado","linha-deslocamento","linha-opacidade","linha-terminacao","linha-juncao"]}connectedCallback(){var o;const e=this.getAttribute("zona-projecao")||this.getAttribute("fuso");if(e){const a=parseInt(e,10);!isNaN(a)&&a>0&&(this._zonaProjecao=a,this.controller.zonaProjecao=a,this.controller.context.zonaProjecao=a)}this.controller.core.definirModoPopups(this.popups),this.controladorTamanho.observe(),this.feicoes.conectarTeclado(),this.hoverListeners.cleanup(),this.mapContainer&&(this.hoverListeners.add(this.mapContainer,"mousemove",a=>this.feicoes.aoMoverMouse(a)),this.hoverListeners.add(this.mapContainer,"dblclick",a=>this.feicoes.aoDuploClique(a))),this.hoverListeners.add(this,"mouseenter",()=>{this.ponteiroSobre=!0}),this.hoverListeners.add(this,"mouseleave",()=>{this.ponteiroSobre=!1}),this.montarBarra(this.getAttribute("ferramentas")),this.broadcastConfig.conectar(),(o=this.desligarAnuncios)==null||o.call(this),this.desligarAnuncios=yn(this,this.shadow),this.estilosExternos.aplicar(),this.initTimeout=window.setTimeout(()=>{this.initTimeout=void 0,this.inicializarAgora()},0)}montarBarra(e){var o;(o=this.barraFerramentas)==null||o.montar(pr(e),fr(e))}ehUnicoCanvas(){var o;const e=this.getRootNode();return(((o=e.querySelectorAll)==null?void 0:o.call(e,"ui-canvas-cad").length)??1)<=1}matchesFocoInterno(){try{return this.matches(":focus-within")}catch{return!1}}destroy(){var e;this.initTimeout&&(window.clearTimeout(this.initTimeout),this.initTimeout=void 0),this.controladorTamanho.disconnect(),this.estilosExternos.limpar(),this.feicoes.pararEdicao(),this.feicoes.desativarFerramenta(),this.feicoes.limparMedicao(),this.feicoes.desconectarTeclado(),this.feicoes.destruir(),this.hoverListeners.cleanup(),(e=this.desligarAnuncios)==null||e.call(this),this.desligarAnuncios=null,this.broadcastConfig.desconectar(),this.limparDestaque(),this.toolbarPainel.limpar(),this.layerItemListeners.cleanup(),this.controller.destroy(),Sa(this.mapContainer)}disconnectedCallback(){this.destroy()}invalidateSizeSafely(){this.controladorTamanho.invalidateSizeSafely()}attributeChangedCallback(e,o,a){var n,r,s,c,l,d,h,p,g;if(e==="sem-atalho-snap"){(n=this.feicoes)==null||n.definirAtalhoSnap(a===null);return}if(!(e==="sem-camadas-padrao"||e==="sem-barra-rapida"||e==="sem-avisos")){if(e==="sem-painel-camadas"){a!==null&&((r=this.toolbarPainel)==null||r.closeLayersPanel());return}if(e==="popups"){(s=this.controller)==null||s.core.definirModoPopups(Yt(a));return}if(e==="renderizador"){bt(o)!==bt(a)&&((c=this.controller)==null||c.layerManager.recriarCamadasDoTipo("feicoes"));return}if(Lr(e)){(l=this.feicoes)==null||l.definirEstiloDesenho(xo(this.feicoes.obterEstiloDesenho(),Mr(e,a)));return}if(e==="aceitar-origem"){this.feicoes&&(this.feicoes.aceitarOrigem=a!==null&&a!=="false");return}if(e==="ferramentas"){this.montarBarra(a),(h=this.barraFerramentas)==null||h.marcar(((d=this.feicoes)==null?void 0:d.ferramentaAtiva)??null),(g=this.barraFerramentas)==null||g.marcarEdicao(!!((p=this.feicoes)!=null&&p.editando));return}sn({host:this,controller:this.controller,mapContainer:this.mapContainer,broadcastConfig:this.broadcastConfig,setLayerOpacity:(v,u)=>this.setLayerOpacity(v,u),setLayerScaleMode:(v,u)=>this.setLayerScaleMode(v,u),atualizarZonaProjecao:v=>{this._zonaProjecao=v}},e,o,a)}}inicializarAgora(){this.initTimeout!==void 0&&(window.clearTimeout(this.initTimeout),this.initTimeout=void 0);const e=this.controller.getMap();return e||(this.hasAttribute("sem-camadas-padrao")&&this.controller.layerManager.descartarCamadasPadrao(),this.initCAD(),this.controller.getMap())}definirEstilosExternos(e){this.estilosExternos.definir(e)}initCAD(){cn({host:this,shadow:this.shadow,mapContainer:this.mapContainer,controller:this.controller,toolbarPainel:this.toolbarPainel,colecoesDados:this.colecoesDados,obterContextoEventos:()=>this.obterContextoEventos(),renderLayersUI:()=>this.renderLayersUI(),invalidateSizeSafely:()=>this.invalidateSizeSafely(),tratarCliqueLivreCanvas:(e,o,a)=>this.tratarCliqueLivreCanvas(e,o,a),dispararAcaoPopup:(e,o,a)=>this.dispararAcaoPopup(e,o,a)})}obterContextoEventos(){return{host:this,controller:this.controller,mapContainer:this.mapContainer,modoSequencial:this.modoSequencial,mouseMovedSinceDown:this.toolbarPainel.houveMovimentoMouse,obterElementoPorId:e=>this.colecoesDados.obterElementoPorId(e),fecharPopup:()=>{var e;(e=this.controller.getMap())==null||e.closePopup()}}}tratarCliqueLivreCanvas(e,o,a){const n=Date.now();n-this.lastCanvasClickTime<50||(this.lastCanvasClickTime=n,ba(this.obterContextoEventos(),e,o,a))}dispararAcaoPopup(e,o,a){const n=Date.now();this.lastPopupActionEmit&&this.lastPopupActionEmit.acaoId===e&&this.lastPopupActionEmit.elementoId===o&&n-this.lastPopupActionEmit.time<50||(this.lastPopupActionEmit={acaoId:e,elementoId:o,time:n},xa(this.obterContextoEventos(),e,o,a))}toggleLayersPanel(){this.hasAttribute("sem-painel-camadas")||this.toolbarPainel.toggleLayersPanel()}closeLayersPanel(){this.toolbarPainel.closeLayersPanel()}renderLayersUI(){const e=this.shadow.getElementById("layers-list-container");va(e,this.controller.layerManager.getLayers(),this.layerItemListeners,{setLayerVisibility:(o,a)=>this.setLayerVisibility(o,a),setLayerOpacity:(o,a)=>this.setLayerOpacity(o,a),setLayerBlocked:(o,a)=>this.controller.layerManager.setLayerBlocked(o,a),setLayerScaleMode:(o,a)=>this.setLayerScaleMode(o,a)})}get pontos(){return this.colecoesDados.pontos}set pontos(e){this.colecoesDados.pontos=e}get segmentos(){return this.colecoesDados.segmentos}set segmentos(e){this.colecoesDados.segmentos=e}get bancoPontos(){return this.colecoesDados.bancoPontos}set bancoPontos(e){this.colecoesDados.bancoPontos=e}get pontosHomologados(){return this.bancoPontos}set pontosHomologados(e){this.bancoPontos=e}get confrontantes(){return this.colecoesDados.confrontantes}set confrontantes(e){this.colecoesDados.confrontantes=e}get vizinhos(){return this.confrontantes}set vizinhos(e){this.confrontantes=e}get aceitarOrigem(){return this.hasAttribute("aceitar-origem")&&this.getAttribute("aceitar-origem")!=="false"}set aceitarOrigem(e){e?this.setAttribute("aceitar-origem",""):this.removeAttribute("aceitar-origem")}get popups(){return Yt(this.getAttribute("popups"))}set popups(e){this.setAttribute("popups",String(e))}get renderizador(){return bt(this.getAttribute("renderizador"))}set renderizador(e){this.setAttribute("renderizador",String(e))}estatisticasFeicoes(e){const o=this.controller.layerManager.getLayerInstance(e),a=$.get("feicoes");return o&&a?a.estatisticas(o):null}get modoSequencial(){return this.hasAttribute("modo-sequencial")}set modoSequencial(e){var a;const o=!!e;o?this.hasAttribute("modo-sequencial")||this.setAttribute("modo-sequencial",""):this.hasAttribute("modo-sequencial")&&this.removeAttribute("modo-sequencial"),this.controller.modoCliqueSequencialAtivo=o,this.controller.context.modoSequencial=o,o&&((a=this.controller.getMap())==null||a.closePopup())}get chaveGrupo(){return this.getAttribute("chave-grupo")||this._chaveGrupo}set chaveGrupo(e){this._chaveGrupo=e,e?this.getAttribute("chave-grupo")!==e&&this.setAttribute("chave-grupo",e):this.hasAttribute("chave-grupo")&&this.removeAttribute("chave-grupo"),this.controller.chaveGrupo=e,this.controller.context.chaveGrupo=e,this.controller.layerManager.updateContext({chaveGrupo:e})}get zonaProjecao(){return this._zonaProjecao??22}set zonaProjecao(e){const o=typeof e=="number"?Math.floor(e):parseInt(String(e),10);if(!isNaN(o)&&o>0){this._zonaProjecao=o;const a=String(o);this.getAttribute("zona-projecao")!==a&&this.setAttribute("zona-projecao",a),this.hasAttribute("fuso")&&this.getAttribute("fuso")!==a&&this.setAttribute("fuso",a),this.controller.zonaProjecao=o,this.controller.context.zonaProjecao=o}}get canalConfiguracao(){return this.getAttribute("canal-configuracao")}set canalConfiguracao(e){e?this.setAttribute("canal-configuracao",e):this.removeAttribute("canal-configuracao")}fitBounds(e,o=[40,40],a=!1){this.controller.fitBounds(e,o,a)}zoomExtents(){this.controller.canvasInteracao.zoomExtents()}selectPonto(e,o){this.controller.selectPonto(e,o)}selecionarPonto(e,o){this.controller.selectPonto(e,o)}get pontosSelecionados(){return Ki(this.controller)}set pontosSelecionados(e){const o=Array.isArray(e)?e:[];ya(this.controller,o),this.controller.atualizarDestaqueMarcadores()}atualizarDestaqueMarcadores(){this.controller.atualizarDestaqueMarcadores()}selectSegmento(e){this.controller.selectSegmento(e)}get segmentoSelecionado(){return this.controller.context.selectedSegmentoId||null}set segmentoSelecionado(e){this.controller.selectSegmento(e)}limparSelecao(){this.controller.canvasInteracao.limparSelecao(),this.feicoes.limparSelecaoFeicoes()}setLayerVisibility(e,o){this.controller.layerManager.setLayerVisibility(e,o)}setLayerOpacity(e,o){this.controller.layerManager.setLayerOpacity(e,o)}setLayerScaleMode(e,o){this.controller.layerManager.setLayerScaleMode(e,o)}setGraphicScale(e){this.controller.setGraphicScale(e)}exportState(){return this.controller.exportState()}importState(e){this.controller.importState(e)}invalidateSize(){this.invalidateSizeSafely()}get destaqueAtivo(){return this.controller.destaqueAtivo}destacarElemento(e,o){this.inicializarAgora(),this.controller.destacarElemento(e,o)}limparDestaque(){this.controller.limparDestaque()}plotarPontos(e,o="vertices",a){this.colecoesDados.plotarPontos(e,o,a)}plotarConexoes(e,o="linhas"){this.colecoesDados.plotarConexoes(e,o)}plotarPolilinhaSequencial(e,o=!0,a="polilinha",n){this.colecoesDados.plotarPolilinhaSequencial(e,o,a,n)}plotarPoligonos(e,o="poligonos"){this.colecoesDados.plotarPoligonos(e,o)}limparCamadas(e){this.colecoesDados.limparCamadas(e)}obterMarcadores(e){return this.colecoesDados.obterMarcadores(e)}plotPontos(e,o){this.colecoesDados.plotPontos(e,o)}plotSegmentos(e,o){this.colecoesDados.plotSegmentos(e,o)}plotPolilinhaTemporaria(e){this.colecoesDados.plotPolilinhaTemporaria(e)}plotPoligonalHomologada(e){this.colecoesDados.plotPoligonalHomologada(e)}plotPontosVizinhos(e){this.colecoesDados.plotPontosVizinhos(e)}plotPoligonosVizinhos(e){this.colecoesDados.plotPoligonosVizinhos(e)}clearOverlays(e=!1){this.colecoesDados.clearOverlays(e)}getMarkers(){return this.colecoesDados.getMarkers()}getVizinhosMarkers(){return this.colecoesDados.getVizinhosMarkers()}definirFeicoes(e,o,a){return this.feicoes.definirFeicoes(e,o,a)}adicionarFeicao(e,o,a){return this.feicoes.adicionarFeicao(e,o,a)}atualizarFeicao(e,o,a,n){return this.feicoes.atualizarFeicao(e,o,a,n)}aplicarLote(e,o,a){return this.feicoes.aplicarLote(e,o,a)}removerFeicao(e,o){return this.feicoes.removerFeicao(e,o)}obterFeicoes(e){return this.feicoes.obterFeicoes(e)}selecionarFeicoes(e,o=!1){this.feicoes.selecionarFeicoes(e,o)}selecionarFeicao(e,o){this.feicoes.selecionarFeicoes([{camadaId:e,id:o}])}alternarSelecaoFeicao(e,o){this.feicoes.alternarSelecaoFeicao({camadaId:e,id:o})}limparSelecaoFeicoes(){this.feicoes.limparSelecaoFeicoes()}obterFeicoesSelecionadas(){return this.feicoes.obterFeicoesSelecionadas()}editarVertices(e,o){return this.feicoes.iniciarEdicao(e,o)}pararEdicaoVertices(){this.feicoes.pararEdicao()}get editandoVertices(){return this.feicoes.editando}get snapLigado(){return this.feicoes.snapLigado}definirSnap(e){this.feicoes.definirSnap(e)}alternarSnap(){this.feicoes.alternarSnap()}definirCamadaDesenho(e){this.feicoes.definirCamadaDesenho(e)}get camadaDesenho(){return this.feicoes.camadaDeDesenho}definirEstiloDesenho(e){this.feicoes.definirEstiloDesenho(e)}obterEstiloDesenho(){return this.feicoes.obterEstiloDesenho()}definirLinhaPadrao(e){this.feicoes.definirEstiloDesenho(xo(this.feicoes.obterEstiloDesenho(),e))}obterLinhaPadrao(){return Sr(this.feicoes.obterEstiloDesenho())}definirFerramenta(e,o){return e===null?(this.feicoes.desativarFerramenta(),{ok:!0}):this.feicoes.ativarFerramenta(e,o)}get ferramentaAtiva(){return this.feicoes.ferramentaAtiva}limparMedicao(){this.feicoes.limparMedicao()}get nosDesenho(){return this.feicoes.nosDesenho}desfazerVerticeDesenho(){return this.feicoes.desfazerVerticeDesenho()}definirAtalhoSnap(e){this.feicoes.definirAtalhoSnap(e)}gerarBuffer(e,o,a,n){return this.feicoes.gerarBuffer(e,o,a,n)}duplicarFeicao(e,o,a,n){return this.feicoes.duplicarFeicao(e,o,a,n)}juntarFeicoes(e,o,a){return this.feicoes.juntarFeicoes(e,o,a)}zoomParaFeicao(e,o){return this.feicoes.zoomParaFeicao(e,o)}zoomParaFeicoes(e){return this.feicoes.zoomParaFeicoes(e)}ajustarTudo(){return this.feicoes.ajustarTudo()}ajustarCamada(e){return this.feicoes.ajustarCamada(e)}get previasGlobais(){return this.feicoes.previasGlobais}definirPreviasGlobais(e){this.feicoes.definirPreviasGlobais(e)}alternarPreviasGlobais(){this.feicoes.alternarPreviasGlobais()}alternarPrevia(e,o){return this.feicoes.alternarPrevia(e,o)}previaSolicitada(e,o){return this.feicoes.previaSolicitada(e,o)}atualizarCursorRemoto(e,o){return this.feicoes.atualizarCursorRemoto(e,o)}removerCursorRemoto(e){return this.feicoes.removerCursorRemoto(e)}limparCursoresRemotos(){this.feicoes.limparCursoresRemotos()}fecharPopupFeicao(){this.feicoes.fecharPopup()}abrirPopupFeicao(e,o){return this.feicoes.abrirPopupFeicao(e,o)}definirOpcoesPopup(e){this.feicoes.definirOpcoesPopup(e)}definirMargensPopup(e){this.feicoes.definirMargensPopup(e)}definirMargensHud(e){this.feicoes.definirMargensHud(e)}getMap(){return this.controller.getMap()}getController(){return this.controller}getLayerManager(){return this.controller.layerManager}}Po.definirCustomElement("ui-canvas-cad",Ha);class Ar{constructor(t,e){f(this,"polylines",[]);f(this,"bancoPontosAtivo",!1);f(this,"core");this.core=t}setBancoPontosAtivo(t){this.bancoPontosAtivo=t}plotSegmentos(t,e){this.core.map&&t.forEach(o=>{const a=e.find(r=>String(r.id)===String(o.ponto_inicio_id)),n=e.find(r=>String(r.id)===String(o.ponto_fim_id));if(a&&n&&a.lat&&a.lon&&n.lat&&n.lon){const r=o.tipo_limite_sigef||o.tipo_limite||"",s=o.metodo_posicionamento_sigef||o.metodo_posicionamento||"",c=this.bancoPontosAtivo?"#94a3b8":r==="LA1"?"#10b981":"#3b82f6",l=this.core.config.perimetroWeight,d=this.bancoPontosAtivo?.4:1,h=[[a.lat,a.lon],[n.lat,n.lon]],p=b.polyline(h,{color:"#080d0a",weight:l+3,opacity:.85,lineCap:"round",lineJoin:"round",dashArray:r==="LN1"?"6, 6":void 0,pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(p);const g=b.polyline(h,{color:c,weight:l,opacity:d,dashArray:r==="LN1"?"6, 6":void 0,pane:"perimetroPane"}).bindPopup(`
170
170
  <div style="font-family:sans-serif; color:rgba(255, 255, 255, 0.9); line-height:1.3;">
171
- <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">${E.escapeHtml(a.nome_vertice)} ↔ ${E.escapeHtml(i.nome_vertice)}</div>
171
+ <div style="font-weight:700; font-size:12px; margin-bottom:3px; color:#ffffff;">${E.escapeHtml(a.nome_vertice)} ↔ ${E.escapeHtml(n.nome_vertice)}</div>
172
172
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">Limite: ${E.escapeHtml(r)} · ${E.escapeHtml(s)}</div>
173
173
  </div>
174
- `,{className:"compact-popup",maxWidth:220}).addTo(this.core.map);this.polylines.push(m)}})}plotPolilinhaTemporaria(t){var c,l,d;if(!this.core.map)return;const e=t.filter(h=>h.lat&&h.lon&&h.lat!==0&&h.lon!==0&&h.tipo_ponto!=="B"&&h.tipo!=="B"&&h.ignorar_poligono!==1);if(e.length<2)return;const o=((c=this.core.controller)==null?void 0:c.chaveGrupo)||((d=(l=this.core.controller)==null?void 0:l.context)==null?void 0:d.chaveGrupo),a=E.agruparPontosPorChave(e,o),i=this.bancoPontosAtivo?"#94a3b8":"#10b981",r=this.core.config.fechamentoWeight||2,s=this.bancoPontosAtivo?.4:1;Object.values(a).forEach(h=>{const u=E.ordenarPontosPorSequencia(h);if(u.length<2)return;for(let k=0;k<u.length-1;k++){const S=u[k],L=u[k+1],x=[[S.lat,S.lon],[L.lat,L.lon]],P=b.polyline(x,{color:"#080d0a",weight:r+3,opacity:.85,lineCap:"round",lineJoin:"round",pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(P);const C=b.polyline(x,{color:i,weight:r,opacity:s,pane:"perimetroPane"}).addTo(this.core.map);this.polylines.push(C)}const m=u[u.length-1],v=u[0],p=[[m.lat,m.lon],[v.lat,v.lon]],y=b.polyline(p,{color:"#080d0a",weight:r+2.5,opacity:.75,dashArray:"4, 4",pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(y);const A=b.polyline(p,{color:i,weight:r,opacity:s,dashArray:"4, 4",pane:"perimetroPane"}).addTo(this.core.map);this.polylines.push(A)})}plotPoligonalHomologada(t){var i,r,s;if(!this.core.map||!this.core.bancoPontosGroup)return;this.core.bancoPontosGroup.clearLayers();const e=t.filter(c=>c.lat&&c.lon&&c.lat!==0&&c.lon!==0);if(e.length===0)return;this.bancoPontosAtivo=!0,e.forEach(c=>{const l=`
174
+ `,{className:"compact-popup",maxWidth:220}).addTo(this.core.map);this.polylines.push(g)}})}plotPolilinhaTemporaria(t){var c,l,d;if(!this.core.map)return;const e=t.filter(h=>h.lat&&h.lon&&h.lat!==0&&h.lon!==0&&h.tipo_ponto!=="B"&&h.tipo!=="B"&&h.ignorar_poligono!==1);if(e.length<2)return;const o=((c=this.core.controller)==null?void 0:c.chaveGrupo)||((d=(l=this.core.controller)==null?void 0:l.context)==null?void 0:d.chaveGrupo),a=E.agruparPontosPorChave(e,o),n=this.bancoPontosAtivo?"#94a3b8":"#10b981",r=this.core.config.fechamentoWeight||2,s=this.bancoPontosAtivo?.4:1;Object.values(a).forEach(h=>{const p=E.ordenarPontosPorSequencia(h);if(p.length<2)return;for(let k=0;k<p.length-1;k++){const S=p[k],C=p[k+1],x=[[S.lat,S.lon],[C.lat,C.lon]],P=b.polyline(x,{color:"#080d0a",weight:r+3,opacity:.85,lineCap:"round",lineJoin:"round",pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(P);const L=b.polyline(x,{color:n,weight:r,opacity:s,pane:"perimetroPane"}).addTo(this.core.map);this.polylines.push(L)}const g=p[p.length-1],v=p[0],u=[[g.lat,g.lon],[v.lat,v.lon]],y=b.polyline(u,{color:"#080d0a",weight:r+2.5,opacity:.75,dashArray:"4, 4",pane:"perimetroPane",interactive:!1}).addTo(this.core.map);this.polylines.push(y);const A=b.polyline(u,{color:n,weight:r,opacity:s,dashArray:"4, 4",pane:"perimetroPane"}).addTo(this.core.map);this.polylines.push(A)})}plotPoligonalHomologada(t){var n,r,s;if(!this.core.map||!this.core.bancoPontosGroup)return;this.core.bancoPontosGroup.clearLayers();const e=t.filter(c=>c.lat&&c.lon&&c.lat!==0&&c.lon!==0);if(e.length===0)return;this.bancoPontosAtivo=!0,e.forEach(c=>{const l=`
175
175
  <div class="w-4.5 h-4.5 bg-amber-500 text-slate-950 border-2 border-slate-900 rounded-full flex items-center justify-center text-[7px] font-black font-mono shadow-md hover:scale-125 transition-transform" id="banco-marker-${c.id}">
176
176
  H
177
177
  </div>
@@ -185,13 +185,13 @@
185
185
  <div style="font-size:10px; color:rgba(255, 255, 255, 0.45);">Método: ${E.escapeHtml(c.metodo_posicionamento)||"N/A"} · Limite: ${E.escapeHtml(c.tipo_limite)||"N/A"}</div>
186
186
  ${c.confrontante_descritivo?`<div style="font-size:10px; color:rgba(255, 255, 255, 0.65); border-top:1px solid rgba(255, 255, 255, 0.1); padding-top:4px; margin-top:4px; word-break:break-word;"><strong>Conf:</strong> ${E.escapeHtml(c.confrontante_descritivo)}</div>`:""}
187
187
  </div>
188
- `;b.marker([c.lat,c.lon],{icon:d,pane:"verticesPane"}).bindPopup(h,{className:"compact-popup",maxWidth:220}).addTo(this.core.bancoPontosGroup)});const o=((i=this.core.controller)==null?void 0:i.chaveGrupo)||((s=(r=this.core.controller)==null?void 0:r.context)==null?void 0:s.chaveGrupo),a=E.agruparPontosPorChave(e,o);for(const c in a){const l=E.ordenarPontosPorSequencia(a[c]);if(l.length>=2){const d=l.map(h=>b.latLng(h.lat,h.lon));d.push(b.latLng(l[0].lat,l[0].lon)),b.polyline(d,{color:"#f59e0b",weight:this.core.config.bancoWeight,dashArray:"6, 8",pane:"perimetroPane"}).addTo(this.core.bancoPontosGroup)}}}clearLinhas(){this.core.map&&this.polylines.forEach(t=>this.core.map.removeLayer(t)),this.core.bancoPontosGroup&&this.core.bancoPontosGroup.clearLayers(),this.polylines=[]}}class gr{constructor(t,e){f(this,"markers",[]);f(this,"vizinhosMarkers",[]);f(this,"vizinhosPoligonos",[]);f(this,"core");f(this,"controller");this.core=t,this.controller=e}plotPontos(t,e){this.core.map&&t.forEach(o=>{var a,i,r;if(o.lat&&o.lon&&o.lat!==0&&o.lon!==0){const s=o.tipo_ponto==="B"||o.tipo==="B",c=o.tipo_ponto==="M"||o.tipo==="M";let l="bg-mint-vibrant",d="x",h=7;c?(l="bg-indigo-500",h=9):s&&(l="bg-rose-500",h=9);const u=this.core.config.enableAnimations?"transition-all duration-150":"",m=(i=(a=this.controller)==null?void 0:a.linhas)!=null&&i.bancoPontosAtivo?"opacity-40 hover:opacity-100":"",v=Pt(d,h,l,`${u} ${m}`,`map-marker-${o.id}`),p=b.divIcon({html:v,className:"custom-leaflet-marker flex items-center justify-center",iconSize:[h+6,h+6]}),y=c?"Base Homologada PPP":s?"Base de Campo (Translação)":"Vértice de Perímetro",A=b.marker([o.lat,o.lon],{icon:p,pane:"verticesPane"});A.pontoId=o.id,(r=this.controller)!=null&&r.modoCliqueSequencialAtivo||A.bindPopup(`
188
+ `;b.marker([c.lat,c.lon],{icon:d,pane:"verticesPane"}).bindPopup(h,{className:"compact-popup",maxWidth:220}).addTo(this.core.bancoPontosGroup)});const o=((n=this.core.controller)==null?void 0:n.chaveGrupo)||((s=(r=this.core.controller)==null?void 0:r.context)==null?void 0:s.chaveGrupo),a=E.agruparPontosPorChave(e,o);for(const c in a){const l=E.ordenarPontosPorSequencia(a[c]);if(l.length>=2){const d=l.map(h=>b.latLng(h.lat,h.lon));d.push(b.latLng(l[0].lat,l[0].lon)),b.polyline(d,{color:"#f59e0b",weight:this.core.config.bancoWeight,dashArray:"6, 8",pane:"perimetroPane"}).addTo(this.core.bancoPontosGroup)}}}clearLinhas(){this.core.map&&this.polylines.forEach(t=>this.core.map.removeLayer(t)),this.core.bancoPontosGroup&&this.core.bancoPontosGroup.clearLayers(),this.polylines=[]}}class Er{constructor(t,e){f(this,"markers",[]);f(this,"vizinhosMarkers",[]);f(this,"vizinhosPoligonos",[]);f(this,"core");f(this,"controller");this.core=t,this.controller=e}plotPontos(t,e){this.core.map&&t.forEach(o=>{var a,n,r;if(o.lat&&o.lon&&o.lat!==0&&o.lon!==0){const s=o.tipo_ponto==="B"||o.tipo==="B",c=o.tipo_ponto==="M"||o.tipo==="M";let l="bg-mint-vibrant",d="x",h=7;c?(l="bg-indigo-500",h=9):s&&(l="bg-rose-500",h=9);const p=this.core.config.enableAnimations?"transition-all duration-150":"",g=(n=(a=this.controller)==null?void 0:a.linhas)!=null&&n.bancoPontosAtivo?"opacity-40 hover:opacity-100":"",v=Pt(d,h,l,`${p} ${g}`,`map-marker-${o.id}`),u=b.divIcon({html:v,className:"custom-leaflet-marker flex items-center justify-center",iconSize:[h+6,h+6]}),y=c?"Base Homologada PPP":s?"Base de Campo (Translação)":"Vértice de Perímetro",A=b.marker([o.lat,o.lon],{icon:u,pane:"verticesPane"});A.pontoId=o.id,(r=this.controller)!=null&&r.modoCliqueSequencialAtivo||A.bindPopup(`
189
189
  <div style="font-family:var(--ui-fonte-base, sans-serif); color:rgba(255, 255, 255, 0.9); line-height:1.3;">
190
190
  <div style="font-weight:700; font-size:13px; margin-bottom:4px; color:#ffffff;">${E.escapeHtml(o.nome_vertice)}</div>
191
191
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.65);">${E.escapeHtml(y)} · ${E.escapeHtml(o.tipo_ponto||o.tipo)}</div>
192
192
  <div style="font-size:11px; color:rgba(255, 255, 255, 0.45); font-family:var(--ui-fonte-codigo, monospace); margin-top:4px;">Lat ${o.lat.toFixed(6)} &nbsp; Lon ${o.lon.toFixed(6)}</div>
193
193
  </div>
194
- `,{className:"compact-popup",maxWidth:220}),A.addTo(this.core.map),A.setZIndexOffset(1e3),A.on("click",()=>{e(o.id)}),this.markers.push(A)}})}plotPontosVizinhos(t){if(!this.core.map||!this.core.pontosVizinhosGroup)return;this.core.map.hasLayer(this.core.pontosVizinhosGroup)||this.core.pontosVizinhosGroup.addTo(this.core.map),this.vizinhosMarkers&&this.vizinhosMarkers.length>0&&(this.vizinhosMarkers.forEach(o=>{o.off(),o.unbindPopup()}),this.vizinhosMarkers=[]),this.core.pontosVizinhosGroup.clearLayers();const e=new Map;(t||[]).forEach(o=>{const a=o.lat??o.latitude??o.y,i=o.lon??o.lng??o.longitude??o.x,r=typeof a=="string"?parseFloat(a.replace(",",".")):Number(a),s=typeof i=="string"?parseFloat(i.replace(",",".")):Number(i);if(r!==void 0&&s!==void 0&&!isNaN(r)&&!isNaN(s)&&r!==0&&s!==0){o.lat=r,o.lon=s;const c=o.confrontante_id!==void 0&&o.confrontante_id!==null?String(o.confrontante_id):"0";e.has(c)||e.set(c,[]),e.get(c).push(o)}}),e.forEach(o=>{if(o.length>=2){o.sort((i,r)=>Number(i.id)-Number(r.id));const a=o.map(i=>b.latLng(i.lat,i.lon));o.length>2&&a.push(b.latLng(o[0].lat,o[0].lon)),b.polyline(a,{color:"#a855f7",weight:this.core.config.vizinhoWeight,dashArray:"4, 6",pane:"overlayPane"}).addTo(this.core.pontosVizinhosGroup)}o.forEach(a=>{var u,m;const i=document.createElement("div");i.className="p-2 font-sans text-xs bg-[#0c1510] text-white min-w-[200px] rounded",i.innerHTML=`
194
+ `,{className:"compact-popup",maxWidth:220}),A.addTo(this.core.map),A.setZIndexOffset(1e3),A.on("click",()=>{e(o.id)}),this.markers.push(A)}})}plotPontosVizinhos(t){if(!this.core.map||!this.core.pontosVizinhosGroup)return;this.core.map.hasLayer(this.core.pontosVizinhosGroup)||this.core.pontosVizinhosGroup.addTo(this.core.map),this.vizinhosMarkers&&this.vizinhosMarkers.length>0&&(this.vizinhosMarkers.forEach(o=>{o.off(),o.unbindPopup()}),this.vizinhosMarkers=[]),this.core.pontosVizinhosGroup.clearLayers();const e=new Map;(t||[]).forEach(o=>{const a=o.lat??o.latitude??o.y,n=o.lon??o.lng??o.longitude??o.x,r=typeof a=="string"?parseFloat(a.replace(",",".")):Number(a),s=typeof n=="string"?parseFloat(n.replace(",",".")):Number(n);if(r!==void 0&&s!==void 0&&!isNaN(r)&&!isNaN(s)&&r!==0&&s!==0){o.lat=r,o.lon=s;const c=o.confrontante_id!==void 0&&o.confrontante_id!==null?String(o.confrontante_id):"0";e.has(c)||e.set(c,[]),e.get(c).push(o)}}),e.forEach(o=>{if(o.length>=2){o.sort((n,r)=>Number(n.id)-Number(r.id));const a=o.map(n=>b.latLng(n.lat,n.lon));o.length>2&&a.push(b.latLng(o[0].lat,o[0].lon)),b.polyline(a,{color:"#a855f7",weight:this.core.config.vizinhoWeight,dashArray:"4, 6",pane:"overlayPane"}).addTo(this.core.pontosVizinhosGroup)}o.forEach(a=>{var p,g;const n=document.createElement("div");n.className="p-2 font-sans text-xs bg-[#0c1510] text-white min-w-[200px] rounded",n.innerHTML=`
195
195
  <div class="font-bold text-purple-400 mb-1 border-b border-white/10 pb-1">Confrontante (Importado)</div>
196
196
  <div class="mb-1"><strong>Vértice:</strong> <span class="font-mono">${E.escapeHtml(a.nome_vertice||"")}</span></div>
197
197
  <div class="mb-1"><strong>Proprietário:</strong> ${E.escapeHtml(a.nome_confrontante||"")||"Desconhecido"}</div>
@@ -206,10 +206,10 @@
206
206
  Ocultar
207
207
  </button>
208
208
  </div>
209
- `,(u=i.querySelector(".btn-integrar"))==null||u.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:integrar_vizinho",{detail:{pontoId:a.id}}))}),(m=i.querySelector(".btn-ocultar"))==null||m.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:ocultar_vizinho",{detail:{pontoId:a.id}}))});let r=this.core.config.markerStyleV||"cross",s=this.core.config.markerSizeV||8;a.tipo_ponto==="M"||a.tipo==="M"||a.tipo==="B"?(r=this.core.config.markerStyleM||"circle-dot",s=this.core.config.markerSizeM||14):(a.tipo_ponto==="P"||a.tipo==="P"||a.tipo==="O")&&(r=this.core.config.markerStyleP||"circle",s=this.core.config.markerSizeP||10);const c=this.core.config.enableAnimations?"transition-all duration-150":"",l=Pt(r,s,"bg-[#a855f7]",c,`map-marker-vizinho-${a.id}`),d=b.divIcon({html:l,className:"custom-leaflet-marker flex items-center justify-center",iconSize:[s+4,s+4]}),h=b.marker([a.lat,a.lon],{icon:d,pane:"overlayPane"}).bindPopup(i,{className:"custom-leaflet-popup"});h.pontoId=a.id,h.isVizinho=!0,h.addTo(this.core.pontosVizinhosGroup),this.vizinhosMarkers.push(h)})})}plotPoligonosVizinhos(t){!this.core.map||!this.core.pontosVizinhosGroup||(this.core.map.hasLayer(this.core.pontosVizinhosGroup)||this.core.pontosVizinhosGroup.addTo(this.core.map),this.vizinhosPoligonos.length>0&&(this.vizinhosPoligonos.forEach(e=>e.off()),this.vizinhosPoligonos=[]),(t||[]).forEach(e=>{if(!e||!e.poligono_wkt)return;const o=/POLYGON\s*\(\s*\(\s*(.*?)\s*\)\s*\)/i.exec(e.poligono_wkt);if(!o)return;const a=o[1].split(",").map(c=>{const l=c.trim().split(/\s+/),d=parseFloat(l[0]),h=parseFloat(l[1]);return!isNaN(h)&&!isNaN(d)?[h,d]:null}).filter(c=>c!==null);if(a.length<3)return;const i=E.escapeHtml(e.nome_propriedade||"Propriedade Vizinha"),r=E.escapeHtml(e.nome||"Desconhecido"),s=b.polygon(a,{color:"#a855f7",weight:this.core.config.vizinhoWeight,dashArray:"4, 6",fillColor:"#a855f7",fillOpacity:.05,pane:"overlayPane"}).bindPopup(`
209
+ `,(p=n.querySelector(".btn-integrar"))==null||p.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:integrar_vizinho",{detail:{pontoId:a.id}}))}),(g=n.querySelector(".btn-ocultar"))==null||g.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("gerencigeo:ocultar_vizinho",{detail:{pontoId:a.id}}))});let r=this.core.config.markerStyleV||"cross",s=this.core.config.markerSizeV||8;a.tipo_ponto==="M"||a.tipo==="M"||a.tipo==="B"?(r=this.core.config.markerStyleM||"circle-dot",s=this.core.config.markerSizeM||14):(a.tipo_ponto==="P"||a.tipo==="P"||a.tipo==="O")&&(r=this.core.config.markerStyleP||"circle",s=this.core.config.markerSizeP||10);const c=this.core.config.enableAnimations?"transition-all duration-150":"",l=Pt(r,s,"bg-[#a855f7]",c,`map-marker-vizinho-${a.id}`),d=b.divIcon({html:l,className:"custom-leaflet-marker flex items-center justify-center",iconSize:[s+4,s+4]}),h=b.marker([a.lat,a.lon],{icon:d,pane:"overlayPane"}).bindPopup(n,{className:"custom-leaflet-popup"});h.pontoId=a.id,h.isVizinho=!0,h.addTo(this.core.pontosVizinhosGroup),this.vizinhosMarkers.push(h)})})}plotPoligonosVizinhos(t){!this.core.map||!this.core.pontosVizinhosGroup||(this.core.map.hasLayer(this.core.pontosVizinhosGroup)||this.core.pontosVizinhosGroup.addTo(this.core.map),this.vizinhosPoligonos.length>0&&(this.vizinhosPoligonos.forEach(e=>e.off()),this.vizinhosPoligonos=[]),(t||[]).forEach(e=>{if(!e||!e.poligono_wkt)return;const o=/POLYGON\s*\(\s*\(\s*(.*?)\s*\)\s*\)/i.exec(e.poligono_wkt);if(!o)return;const a=o[1].split(",").map(c=>{const l=c.trim().split(/\s+/),d=parseFloat(l[0]),h=parseFloat(l[1]);return!isNaN(h)&&!isNaN(d)?[h,d]:null}).filter(c=>c!==null);if(a.length<3)return;const n=E.escapeHtml(e.nome_propriedade||"Propriedade Vizinha"),r=E.escapeHtml(e.nome||"Desconhecido"),s=b.polygon(a,{color:"#a855f7",weight:this.core.config.vizinhoWeight,dashArray:"4, 6",fillColor:"#a855f7",fillOpacity:.05,pane:"overlayPane"}).bindPopup(`
210
210
  <div class="p-2 font-sans text-xs bg-[#0c1510] text-white min-w-[200px] rounded">
211
211
  <div class="font-bold text-purple-400 mb-1 border-b border-white/10 pb-1">Limite do Vizinho (Importado)</div>
212
- <div class="mb-1"><strong>Propriedade:</strong> ${i}</div>
212
+ <div class="mb-1"><strong>Propriedade:</strong> ${n}</div>
213
213
  <div class="mb-1"><strong>Proprietário:</strong> ${r}</div>
214
214
  </div>
215
- `,{className:"custom-leaflet-popup"});s.addTo(this.core.pontosVizinhosGroup),this.vizinhosPoligonos.push(s)}))}clearMarkers(){this.markers&&(this.markers.forEach(t=>{t.off(),t.unbindPopup(),this.core.map&&this.core.map.removeLayer(t)}),this.markers=[]),this.vizinhosMarkers&&(this.vizinhosMarkers.forEach(t=>{t.off(),t.unbindPopup()}),this.vizinhosMarkers=[]),this.vizinhosPoligonos&&(this.vizinhosPoligonos.forEach(t=>t.off()),this.vizinhosPoligonos=[]),this.core.pontosVizinhosGroup&&this.core.pontosVizinhosGroup.clearLayers()}}exports.agruparPontosPorChave=E.agruparPontosPorChave;exports.bindPopupAcoesEvents=E.bindPopupAcoesEvents;exports.escapeHtml=E.escapeHtml;exports.extrairCentroDeWkt=E.extrairCentroDeWkt;exports.formatUTM=E.formatUTM;exports.ordenarPontosPorSequencia=E.ordenarPontosPorSequencia;exports.parseCoordenada=E.parseCoordenada;exports.renderPopupAcoesHtml=E.renderPopupAcoesHtml;exports.AgrupadorCluster=g.AgrupadorCluster;exports.CELULA_CLUSTER_PX=g.CELULA_CLUSTER_PX;exports.COR_PADRAO=g.COR_PADRAO;exports.COR_SELECAO=g.COR_SELECAO;exports.DadosCamada=g.DadosCamada;exports.IndiceEspacial=g.IndiceEspacial;exports.InternadorEstilos=g.InternadorEstilos;exports.LIMITE_MARCA_PX=g.LIMITE_MARCA_PX;exports.MAX_PONTOS_SEM_CLUSTER=g.MAX_PONTOS_SEM_CLUSTER;exports.MIN_VERTICES_SIMPLIFICAR=g.MIN_VERTICES_SIMPLIFICAR;exports.MotorFormas=g.MotorFormas;exports.OPACIDADE_MARCA=g.OPACIDADE_MARCA;exports.RegraVersoes=g.RegraVersoes;exports.ZOOM_DESMEMBRAR=g.ZOOM_DESMEMBRAR;exports.ZOOM_SEM_SIMPLIFICACAO=g.ZOOM_SEM_SIMPLIFICACAO;exports.agruparMarcasPorCor=g.agruparMarcasPorCor;exports.agruparPontos=g.agruparPontos;exports.areaDaGeometria=g.areaDaGeometria;exports.areaMetros2=g.areaMetros2;exports.caixaDaFeicao=g.caixaDaFeicao;exports.caixaPx=g.caixaPx;exports.caixasSeTocam=g.caixasSeTocam;exports.centroDe=g.centroDe;exports.comprimentoMetros=g.comprimentoMetros;exports.corSegura=g.corSegura;exports.criarLinha=g.criarLinha;exports.deveAgrupar=g.deveAgrupar;exports.diagonalPx=g.diagonalPx;exports.distanciaMetros=g.distanciaMetros;exports.ehMarca=g.ehMarca;exports.ehMultilinha=g.ehMultilinha;exports.entidadeDe=g.entidadeDe;exports.escalaDoZoom=g.escalaDoZoom;exports.escalaLatitude=g.escalaLatitude;exports.estiloVetorDe=g.estiloVetorDe;exports.extensaoDaGeometria=g.extensaoDaGeometria;exports.formatarArea=g.formatarArea;exports.formatarExtensao=g.formatarExtensao;exports.ladoMarca=g.ladoMarca;exports.latLonDoMundo=g.latLonDoMundo;exports.limitesDaGeometria=g.limitesDaGeometria;exports.metrosPorGrau=g.metrosPorGrau;exports.metrosPorPixel=g.metrosPorPixel;exports.partesDaLinha=g.partesDaLinha;exports.pintarMarcas=g.pintarMarcas;exports.projetarCentro=g.projetarCentro;exports.projetarEm=g.projetarEm;exports.projetarMercator=g.projetarMercator;exports.projetarVertices=g.projetarVertices;exports.raioCirculoPx=g.raioCirculoPx;exports.raioPontoPx=g.raioPontoPx;exports.simplificarAnel=g.simplificarAnel;exports.simplificarGeometria=g.simplificarGeometria;exports.simplificarLinha=g.simplificarLinha;exports.simplificarPx=g.simplificarPx;exports.statusDe=g.statusDe;exports.textoRotulo=g.textoRotulo;exports.toleranciaPorZoom=g.toleranciaPorZoom;exports.vertices=g.vertices;exports.CADMapaController=ae;exports.CAD_INTERACTIVE_PANES=xo;exports.CLASSE_FERRAMENTA_ATIVA=we;exports.CSS_POSICAO_HUD=Ge;exports.CanvasCADController=ae;exports.CanvasFormas=Ct;exports.CanvasInteracao=Ao;exports.CanvasLayerManager=ha;exports.ControleDesenho=_a;exports.CursoresRemotos=La;exports.DEFAULT_CONFIG=ge;exports.DEFAULT_LAYERS=Me;exports.DespachanteFeicoes=da;exports.EditorVertices=Oa;exports.FERRAMENTAS=ee;exports.FOLGA_HUD=za;exports.FRACAO_LARGURA_HUD=ka;exports.FeicaoPopup=Ma;exports.FeicoesCanvasRenderer=la;exports.FeicoesLayerRenderer=ra;exports.GerenciGeoMapaController=ae;exports.GridLayerRenderer=To;exports.ICONES_FEICAO=Qt;exports.ID_HUD_DESENHO=Da;exports.ID_HUD_EDICAO=Ta;exports.LIMIAR_DENSIDADE_ALTA=Yt;exports.LIMITE_CULLING=Bt;exports.LayerRendererFactory=N;exports.MARGEM_HUD_PADRAO=wa;exports.MAX_NOS_COM_ALCA_LATENTE=Qo;exports.MAX_VERTICES_EDICAO=Uo;exports.MapaConfigManager=Wt;exports.MapaCore=yo;exports.MapaLinhas=mr;exports.MapaMarcadores=gr;exports.PROPRIEDADES_HUD=jt;exports.PintorCanvas2D=Re;exports.RAIO_MINIMO_CIRCULO_M=Ht;exports.RAIO_MINIMO_EDICAO_CIRCULO_M=Xo;exports.SelecaoFeicoes=Sa;exports.SessaoDesenho=Gt;exports.TOLERANCIA_AMOSTRA_PX=aa;exports.TOLERANCIA_LINHA_PX=Ft;exports.TOLERANCIA_PONTO_PX=Lo;exports.TOLERANCIA_SNAP_PX=je;exports.TileLayerRenderer=Eo;exports.UICanvasCAD=Na;exports.VectorLinesLayerRenderer=ko;exports.VectorPointsLayerRenderer=Do;exports.VectorPolygonsLayerRenderer=_o;exports.WmsLayerRenderer=wo;exports.alcaLatente=ta;exports.alternarSuavidade=oa;exports.amostrarBezier=Ea;exports.aplicarMargensHud=Ia;exports.buscarSnap=qa;exports.clonarFeicao=$t;exports.comPontos=xe;exports.comVertices=Et;exports.confrontanteParaFeicao=yn;exports.consultarFeicoesNoPonto=_e;exports.contarItensCanvas=Ce;exports.converterArea=li;exports.converterComprimento=ci;exports.coordenadaDeReferencia=Lt;exports.corHexSegura=te;exports.criarControladorTamanho=ba;exports.ddParaDms=di;exports.deslocarGeometria=jo;exports.distanciaEntre=ui;exports.dividirPoligonoComLinha=Ro;exports.dmsParaDd=hi;exports.ehFerramenta=He;exports.entradaDaAncora=St;exports.extrairCorPonto=Io;exports.fatorDensidade=Te;exports.feicaoNaCaixa=Fa;exports.feicaoNoLaco=$a;exports.feicaoNoPonto=wt;exports.feicaoNoTopo=ii;exports.garantirCanvasSemEventos=So;exports.gerarBuffer=Go;exports.getPointShapeHtml=Pt;exports.inserirPonto=Ko;exports.inserirVertice=Wo;exports.juntarLinhas=Vo;exports.juntarPoligonos=Ho;exports.lerModoRenderizador=bt;exports.minimoVertices=At;exports.modoDensidade=Kt;exports.moverAlca=ea;exports.moverVertice=pi;exports.normalizarAnel=Ve;exports.normalizarCoordenada=W;exports.normalizarFeicaoEntrada=Vt;exports.normalizarLinha=Ee;exports.normalizarPoligono=Ca;exports.nosDe=X;exports.nosDeAncoras=xt;exports.nosOuVertices=mt;exports.parseDash=sa;exports.pontoDaBordaDoCirculo=Yo;exports.pontoMedio=Fe;exports.pontoMedioDoSegmento=lt;exports.pontoNoPoligono=qe;exports.pontoParaFeicao=gn;exports.pontosDe=it;exports.posicaoHud=Fn;exports.processarAcaoPopup=ga;exports.processarCliqueLivreCanvas=ma;exports.regioesExpostas=ca;exports.registrarFonteHit=Ie;exports.removerFonteHit=De;exports.removerPonto=Jo;exports.removerVertice=Zo;exports.renderizarPainelCamadas=pa;exports.resolverCliqueCentral=Mo;exports.segmentoParaFeicao=vn;exports.segmentosDe=$e;exports.segmentosDoEditor=Ne;exports.tratarCliqueMarcador=va;exports.tratarCliqueSegmento=ya;exports.verificarEditavel=be;exports.verticesDe=Z;
215
+ `,{className:"custom-leaflet-popup"});s.addTo(this.core.pontosVizinhosGroup),this.vizinhosPoligonos.push(s)}))}clearMarkers(){this.markers&&(this.markers.forEach(t=>{t.off(),t.unbindPopup(),this.core.map&&this.core.map.removeLayer(t)}),this.markers=[]),this.vizinhosMarkers&&(this.vizinhosMarkers.forEach(t=>{t.off(),t.unbindPopup()}),this.vizinhosMarkers=[]),this.vizinhosPoligonos&&(this.vizinhosPoligonos.forEach(t=>t.off()),this.vizinhosPoligonos=[]),this.core.pontosVizinhosGroup&&this.core.pontosVizinhosGroup.clearLayers()}}exports.agruparPontosPorChave=E.agruparPontosPorChave;exports.bindPopupAcoesEvents=E.bindPopupAcoesEvents;exports.escapeHtml=E.escapeHtml;exports.extrairCentroDeWkt=E.extrairCentroDeWkt;exports.formatUTM=E.formatUTM;exports.ordenarPontosPorSequencia=E.ordenarPontosPorSequencia;exports.parseCoordenada=E.parseCoordenada;exports.renderPopupAcoesHtml=E.renderPopupAcoesHtml;exports.AgrupadorCluster=m.AgrupadorCluster;exports.CELULA_CLUSTER_PX=m.CELULA_CLUSTER_PX;exports.COR_PADRAO=m.COR_PADRAO;exports.COR_SELECAO=m.COR_SELECAO;exports.DadosCamada=m.DadosCamada;exports.IndiceEspacial=m.IndiceEspacial;exports.InternadorEstilos=m.InternadorEstilos;exports.LIMITE_MARCA_PX=m.LIMITE_MARCA_PX;exports.MAX_PONTOS_SEM_CLUSTER=m.MAX_PONTOS_SEM_CLUSTER;exports.MIN_VERTICES_SIMPLIFICAR=m.MIN_VERTICES_SIMPLIFICAR;exports.MotorFormas=m.MotorFormas;exports.OPACIDADE_MARCA=m.OPACIDADE_MARCA;exports.RegraVersoes=m.RegraVersoes;exports.TIPOS_LINHA=m.TIPOS_LINHA;exports.ZOOM_DESMEMBRAR=m.ZOOM_DESMEMBRAR;exports.ZOOM_SEM_SIMPLIFICACAO=m.ZOOM_SEM_SIMPLIFICACAO;exports.agruparMarcasPorCor=m.agruparMarcasPorCor;exports.agruparPontos=m.agruparPontos;exports.areaDaGeometria=m.areaDaGeometria;exports.areaMetros2=m.areaMetros2;exports.caixaDaFeicao=m.caixaDaFeicao;exports.caixaPx=m.caixaPx;exports.caixasSeTocam=m.caixasSeTocam;exports.centroDe=m.centroDe;exports.comprimentoMetros=m.comprimentoMetros;exports.corSegura=m.corSegura;exports.criarLinha=m.criarLinha;exports.dashTipoLinha=m.dashTipoLinha;exports.deveAgrupar=m.deveAgrupar;exports.diagonalPx=m.diagonalPx;exports.distanciaMetros=m.distanciaMetros;exports.ehMarca=m.ehMarca;exports.ehMultilinha=m.ehMultilinha;exports.ehTipoLinha=m.ehTipoLinha;exports.entidadeDe=m.entidadeDe;exports.escalaDoZoom=m.escalaDoZoom;exports.escalaLatitude=m.escalaLatitude;exports.escalaTipoLinhaSegura=m.escalaTipoLinhaSegura;exports.estiloVetorDe=m.estiloVetorDe;exports.extensaoDaGeometria=m.extensaoDaGeometria;exports.formatarArea=m.formatarArea;exports.formatarExtensao=m.formatarExtensao;exports.juncaoCanvas=m.juncaoCanvas;exports.ladoMarca=m.ladoMarca;exports.latLonDoMundo=m.latLonDoMundo;exports.limitesDaGeometria=m.limitesDaGeometria;exports.metrosPorGrau=m.metrosPorGrau;exports.metrosPorPixel=m.metrosPorPixel;exports.normalizarTipoLinha=m.normalizarTipoLinha;exports.partesDaLinha=m.partesDaLinha;exports.pintarMarcas=m.pintarMarcas;exports.projetarCentro=m.projetarCentro;exports.projetarEm=m.projetarEm;exports.projetarMercator=m.projetarMercator;exports.projetarVertices=m.projetarVertices;exports.raioCirculoPx=m.raioCirculoPx;exports.raioPontoPx=m.raioPontoPx;exports.simplificarAnel=m.simplificarAnel;exports.simplificarGeometria=m.simplificarGeometria;exports.simplificarLinha=m.simplificarLinha;exports.simplificarPx=m.simplificarPx;exports.statusDe=m.statusDe;exports.terminacaoCanvas=m.terminacaoCanvas;exports.textoRotulo=m.textoRotulo;exports.toleranciaPorZoom=m.toleranciaPorZoom;exports.vertices=m.vertices;exports.ATRIBUTOS_LINHA_PADRAO=Ze;exports.CADMapaController=ne;exports.CAD_INTERACTIVE_PANES=So;exports.CLASSE_FERRAMENTA_ATIVA=ke;exports.CSS_POSICAO_HUD=Ue;exports.CanvasCADController=ne;exports.CanvasFormas=Lt;exports.CanvasInteracao=ko;exports.CanvasLayerManager=ma;exports.ControleDesenho=Fa;exports.CursoresRemotos=Ea;exports.DEFAULT_CONFIG=ye;exports.DEFAULT_LAYERS=Ee;exports.DespachanteFeicoes=fa;exports.EditorVertices=$a;exports.FERRAMENTAS=ae;exports.FOLGA_HUD=_a;exports.FRACAO_LARGURA_HUD=Ta;exports.FeicaoPopup=za;exports.FeicoesCanvasRenderer=pa;exports.FeicoesLayerRenderer=da;exports.GerenciGeoMapaController=ne;exports.GridLayerRenderer=No;exports.ICONES_FEICAO=ee;exports.ID_HUD_DESENHO=qa;exports.ID_HUD_EDICAO=Na;exports.LIMIAR_DENSIDADE_ALTA=Jt;exports.LIMITE_CULLING=Vt;exports.LayerRendererFactory=$;exports.MARGEM_HUD_PADRAO=Da;exports.MAX_NOS_COM_ALCA_LATENTE=aa;exports.MAX_VERTICES_EDICAO=Yo;exports.MapaConfigManager=Xt;exports.MapaCore=Lo;exports.MapaLinhas=Ar;exports.MapaMarcadores=Er;exports.PROPRIEDADES_HUD=Ut;exports.PintorCanvas2D=Ve;exports.RAIO_MINIMO_CIRCULO_M=Gt;exports.RAIO_MINIMO_EDICAO_CIRCULO_M=Qo;exports.SelecaoFeicoes=wa;exports.SessaoDesenho=jt;exports.TOLERANCIA_AMOSTRA_PX=sa;exports.TOLERANCIA_LINHA_PX=Nt;exports.TOLERANCIA_PONTO_PX=Eo;exports.TOLERANCIA_SNAP_PX=We;exports.TileLayerRenderer=Io;exports.UICanvasCAD=Ha;exports.VectorLinesLayerRenderer=To;exports.VectorPointsLayerRenderer=qo;exports.VectorPolygonsLayerRenderer=Fo;exports.WmsLayerRenderer=Do;exports.alcaLatente=ia;exports.alternarSuavidade=ra;exports.amostrarBezier=Ia;exports.aplicarMargensHud=Oa;exports.buscarSnap=Ra;exports.clonarFeicao=$t;exports.comPontos=Le;exports.comVertices=Et;exports.confrontanteParaFeicao=Ln;exports.consultarFeicoesNoPonto=Oe;exports.contarItensCanvas=Se;exports.converterArea=pi;exports.converterComprimento=ui;exports.coordenadaDeReferencia=Ct;exports.corHexSegura=oe;exports.criarControladorTamanho=Ca;exports.ddParaDms=fi;exports.deslocarGeometria=Xo;exports.distanciaEntre=gi;exports.dividirPoligonoComLinha=Go;exports.dmsParaDd=mi;exports.ehFerramenta=je;exports.entradaDaAncora=St;exports.extrairCorPonto=Oo;exports.fatorDensidade=qe;exports.feicaoNaCaixa=Ba;exports.feicaoNoLaco=Va;exports.feicaoNoPonto=wt;exports.feicaoNoTopo=ci;exports.garantirCanvasSemEventos=wo;exports.gerarBuffer=Zo;exports.getPointShapeHtml=Pt;exports.inserirPonto=ea;exports.inserirVertice=Ko;exports.juntarLinhas=Uo;exports.juntarPoligonos=Wo;exports.lerModoRenderizador=bt;exports.minimoVertices=At;exports.modoDensidade=Qt;exports.moverAlca=na;exports.moverVertice=vi;exports.normalizarAnel=Ge;exports.normalizarCoordenada=W;exports.normalizarFeicaoEntrada=Ht;exports.normalizarLinha=ze;exports.normalizarPoligono=Aa;exports.nosDe=X;exports.nosDeAncoras=xt;exports.nosOuVertices=mt;exports.parseDash=ha;exports.pontoDaBordaDoCirculo=ta;exports.pontoMedio=$e;exports.pontoMedioDoSegmento=lt;exports.pontoNoPoligono=Ne;exports.pontoParaFeicao=xn;exports.pontosDe=it;exports.posicaoHud=Bn;exports.processarAcaoPopup=xa;exports.processarCliqueLivreCanvas=ba;exports.regioesExpostas=ua;exports.registrarFonteHit=_e;exports.removerFonteHit=Te;exports.removerPonto=oa;exports.removerVertice=Jo;exports.renderizarPainelCamadas=va;exports.resolverCliqueCentral=zo;exports.segmentoParaFeicao=Pn;exports.segmentosDe=Re;exports.segmentosDoEditor=Be;exports.tratarCliqueMarcador=Pa;exports.tratarCliqueSegmento=La;exports.verificarEditavel=Pe;exports.verticesDe=Z;