{"version":3,"file":"LeafletMapComponent.CeuJ3Roa.mjs","names":["useRef","useState","props"],"sources":["https:/framerusercontent.com/modules/egFgxN78vc8OGNth4rbJ/QaiDR0f0BZvGNB6ZOWNM/LeafletMapComponent.js"],"sourcesContent":["// 👇 Add this at the top of your file\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export function LeafletMapComponent(props){const mapRef=useRef(null);const[assets,setAssets]=useState([]);const overlayRef=useRef(null);const[overlayVisible,setOverlayVisible]=useState(true);useEffect(()=>{const loadLeaflet=async()=>{if(!window.L){const leafletCss=document.createElement(\"link\");leafletCss.rel=\"stylesheet\";leafletCss.href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\";document.head.appendChild(leafletCss);const leafletScript=document.createElement(\"script\");leafletScript.src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\";leafletScript.onload=()=>loadMiniMap();document.body.appendChild(leafletScript);}else{loadMiniMap();}};const loadMiniMap=async()=>{if(!window.L||!window.L.Control||!window.L.Control.MiniMap){const miniMapCss=document.createElement(\"link\");miniMapCss.rel=\"stylesheet\";miniMapCss.href=\"https://unpkg.com/leaflet-minimap/dist/Control.MiniMap.min.css\";document.head.appendChild(miniMapCss);const miniMapScript=document.createElement(\"script\");miniMapScript.src=\"https://unpkg.com/leaflet-minimap/dist/Control.MiniMap.min.js\";miniMapScript.onload=()=>{initMap();styleLeafletControls();};document.body.appendChild(miniMapScript);}else{initMap();styleLeafletControls();}};const initMap=()=>{if(mapRef.current&&mapRef.current._leaflet_id)return;const map=window.L.map(\"leaflet-map\",{center:[-33.7344,19.0572],zoom:18,minZoom:props.minZoom,maxZoom:22,zoomControl:true});mapRef.current=map;const baseMaps={Terrain:window.L.tileLayer(\"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\",{attribution:\"Map data \\xa9 OpenTopoMap, SRTM | \\xa9 OpenStreetMap contributors\",maxNativeZoom:17,maxZoom:22}),Satellite:window.L.tileLayer(\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\",{attribution:\"Tiles \\xa9 Esri\",maxNativeZoom:18,maxZoom:22})};const mainLayer=baseMaps[props.mapStyle];mainLayer.addTo(map);window.L.control.layers(baseMaps).addTo(map);// 🎯 Add MiniMap\nconst miniMap=new window.L.Control.MiniMap(window.L.tileLayer(\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\",{attribution:\"Tiles \\xa9 Esri\",maxZoom:16,minZoom:0,scrollWheelZoom:false,zoomAnimation:false}),{toggleDisplay:true,minimized:false,position:\"bottomright\",width:150,height:150,aimingRectOptions:{color:\"#fff\",weight:1,fillOpacity:0},shadowRectOptions:{fillOpacity:0,stroke:0}});miniMap.addTo(map);// Access the MiniMap's internal map and disable all interaction\nconst miniMapInstance=miniMap._miniMap;miniMapInstance.dragging.disable();miniMapInstance.touchZoom.disable();miniMapInstance.doubleClickZoom.disable();miniMapInstance.scrollWheelZoom.disable();miniMapInstance.boxZoom.disable();miniMapInstance.keyboard.disable();// // Optional: Hide zoom controls if visible\n// miniMapInstance.zoomControl.remove()\n// // Optional: Prevent any click events\n// miniMapInstance.getContainer().style.pointerEvents = \"none\"\nfetch(props.geojsonUrl).then(res=>res.json()).then(data=>{const layers=[];const geoLayer=window.L.geoJSON(data,{onEachFeature:(feature,layer)=>{const props=feature.properties;const name=props.Asset||props[\"Asset \"]||\"Unnamed\";const func=props.Function||\"-\";const owner=props.Owner||\"-\";const value=props.Value||\"-\";const area=props.Area||\"-\";const popup=`\n                                <div class=\"popup-theme\">\n                                    <strong>Asset: ${name}</strong><br/>\n                                    Function: ${func}<br/>\n                                    Owner: ${owner}<br/>\n                                    Value: ${value}<br/>\n                                    Area: ${area}\n                                </div>\n                            `;layer.on(\"click\",()=>{layer.bindPopup(popup).openPopup();});const image=props.Image||props[\"image_url\"]||null;layers.push({name,layer,image});},style:feature=>({color:feature.properties.stroke||\"#3388ff\",weight:feature.properties[\"stroke-width\"]||2,opacity:feature.properties[\"stroke-opacity\"]||1,fillColor:feature.properties.fill||\"#3388ff\",fillOpacity:feature.properties[\"fill-opacity\"]||.4})});overlayRef.current=geoLayer;geoLayer.addTo(map);setAssets(layers);});};const styleLeafletControls=()=>{const style=document.createElement(\"style\");style.innerHTML=`\n                .leaflet-control-zoom, .leaflet-control-layers {\n                    font-family: 'Departure Mono Regular', monospace !important;\n                    background-color: #111 !important;\n                    border: 1px solid #fff !important;\n                    border-radius: 0px !important;\n                    color: #fff !important;\n                }\n                .leaflet-control-zoom a, .leaflet-control-layers-toggle {\n                    background-color: #111 !important;\n                    border: 1px solid #fff !important;\n                    color: #fff !important;\n                    font-size: 14px !important;\n                    text-align: center !important;\n                    width: 26px !important;\n                    height: 26px !important;\n                    line-height: 26px !important;\n                }\n                .leaflet-popup-content-wrapper {\n                    background-color: #111 !important;\n                    color: #fff !important;\n                    border: 1px solid #fff !important;\n                    border-radius: 0px !important;\n                    font-family: 'Departure Mono Regular', monospace !important;\n                    font-size: 12px !important;\n                }\n                .leaflet-popup-tip {\n                    background: #111 !important;\n                }\n                .asset-list-box {\n                    position: absolute;\n                    bottom: 12px;\n                    left: 12px;\n                    background-color: #111;\n                    border: 1px solid white;\n                    padding: 10px;\n                    max-height: 200px;\n                    overflow-y: auto;\n                    font-family: 'Departure Mono Regular', monospace;\n                    font-size: 12px;\n                    color: white;\n                    z-index: 999;\n                    width: 180px;\n                    scrollbar-width: thin;\n                    scrollbar-color: #fff #111;\n                }\n                .asset-list-box::-webkit-scrollbar {\n                    width: 6px;\n                }\n                .asset-list-box::-webkit-scrollbar-thumb {\n                    background-color: #fff;\n                }\n                .asset-list-box::-webkit-scrollbar-track {\n                    background-color: #111;\n                }\n                .asset-list-box div {\n                    cursor: pointer;\n                    padding: 4px 0;\n                    border-bottom: 1px solid #333;\n                }\n                .asset-list-box div:hover {\n                    background-color: #222;\n                }\n                .asset-list-box img {\n                    border-radius: 0px;\n                }\n            `;document.head.appendChild(style);};loadLeaflet();},[props.geojsonUrl,props.mapStyle,props.minZoom]);const handleZoomTo=layer=>{const map=mapRef.current;if(map&&layer){map.fitBounds(layer.getBounds(),{maxZoom:20});}};const toggleOverlay=()=>{const map=mapRef.current;const overlay=overlayRef.current;if(!map||!overlay)return;if(overlayVisible){map.removeLayer(overlay);}else{overlay.addTo(map);}setOverlayVisible(!overlayVisible);};return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{id:\"leaflet-map\",style:{width:\"100%\",height:\"100%\",overflow:\"hidden\"}}),/*#__PURE__*/_jsx(\"div\",{className:\"asset-list-box\",children:assets.map((a,index)=>/*#__PURE__*/_jsxs(\"div\",{onClick:()=>handleZoomTo(a.layer),style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:[a.image?/*#__PURE__*/_jsx(\"img\",{src:a.image,alt:a.name,style:{width:\"40px\",height:\"40px\",objectFit:\"cover\",border:\"1px solid #fff\"}}):/*#__PURE__*/_jsx(\"div\",{style:{width:\"40px\",height:\"40px\",backgroundColor:\"#222\",border:\"1px solid #444\"}}),/*#__PURE__*/_jsx(\"span\",{children:a.name})]},index))}),/*#__PURE__*/_jsx(\"button\",{onClick:toggleOverlay,style:{position:\"absolute\",bottom:\"12px\",left:\"210px\",padding:\"6px 12px\",fontFamily:\"Departure Mono Regular\",backgroundColor:\"#111\",color:\"#fff\",border:\"1px solid #fff\",borderRadius:0,fontSize:\"12px\",cursor:\"pointer\",zIndex:1e3},children:overlayVisible?\"Hide Overlay\":\"Show Overlay\"})]});}addPropertyControls(LeafletMapComponent,{geojsonUrl:{type:ControlType.String,title:\"GeoJSON URL\",defaultValue:\"https://raw.githubusercontent.com/themaslowinitiative/maslowmaps/main/GroundswellMysticRiver.geojson\"},mapStyle:{type:ControlType.Enum,title:\"Map Style\",options:[\"Terrain\",\"Satellite\"],defaultValue:\"Satellite\"},minZoom:{type:ControlType.Number,title:\"Min Zoom\",defaultValue:17,min:1,max:20}});\nexport const __FramerMetadata__ = {\"exports\":{\"LeafletMapComponent\":{\"type\":\"reactComponent\",\"name\":\"LeafletMapComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LeafletMapComponent.map"],"mappings":"8MAC0J,SAAgB,EAAoB,EAAM,CAAC,IAAM,EAAOA,EAAO,KAAK,CAAM,CAAC,EAAO,GAAWC,EAAS,EAAE,CAAC,CAAO,EAAWD,EAAO,KAAK,CAAM,CAAC,EAAe,GAAmBC,EAAS,GAAK,CAAC,MAAc,CAAC,IAAM,EAAY,SAAS,CAAC,GAAI,EAAO,EAAuY,GAAa,KAAlZ,CAAC,IAAM,EAAW,SAAS,cAAc,OAAO,CAAC,EAAW,IAAI,aAAa,EAAW,KAAK,mDAAmD,SAAS,KAAK,YAAY,EAAW,CAAC,IAAM,EAAc,SAAS,cAAc,SAAS,CAAC,EAAc,IAAI,kDAAkD,EAAc,WAAW,GAAa,CAAC,SAAS,KAAK,YAAY,EAAc,GAA8B,EAAY,SAAS,CAAC,GAAG,CAAC,EAAO,GAAG,CAAC,EAAO,EAAE,SAAS,CAAC,EAAO,EAAE,QAAQ,QAAQ,CAAC,IAAM,EAAW,SAAS,cAAc,OAAO,CAAC,EAAW,IAAI,aAAa,EAAW,KAAK,iEAAiE,SAAS,KAAK,YAAY,EAAW,CAAC,IAAM,EAAc,SAAS,cAAc,SAAS,CAAC,EAAc,IAAI,gEAAgE,EAAc,WAAW,CAAC,GAAS,CAAC,GAAsB,EAAG,SAAS,KAAK,YAAY,EAAc,MAAO,GAAS,CAAC,GAAsB,EAAU,MAAY,CAAC,GAAG,EAAO,SAAS,EAAO,QAAQ,YAAY,OAAO,IAAM,EAAI,EAAO,EAAE,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,KAAK,GAAG,QAAQ,EAAM,QAAQ,QAAQ,GAAG,YAAY,GAAK,CAAC,CAAC,EAAO,QAAQ,EAAI,IAAM,EAAS,CAAC,QAAQ,EAAO,EAAE,UAAU,mDAAmD,CAAC,YAAY,8DAAoE,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAO,EAAE,UAAU,gGAAgG,CAAC,YAAY,eAAkB,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAiB,EAAS,EAAM,UAAoB,MAAM,EAAI,CAAC,EAAO,EAAE,QAAQ,OAAO,EAAS,CAAC,MAAM,EAAI,CACliE,IAAM,EAAQ,IAAI,EAAO,EAAE,QAAQ,QAAQ,EAAO,EAAE,UAAU,gGAAgG,CAAC,YAAY,eAAkB,QAAQ,GAAG,QAAQ,EAAE,gBAAgB,GAAM,cAAc,GAAM,CAAC,CAAC,CAAC,cAAc,GAAK,UAAU,GAAM,SAAS,cAAc,MAAM,IAAI,OAAO,IAAI,kBAAkB,CAAC,MAAM,OAAO,OAAO,EAAE,YAAY,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAQ,MAAM,EAAI,CACrc,IAAM,EAAgB,EAAQ,SAAS,EAAgB,SAAS,SAAS,CAAC,EAAgB,UAAU,SAAS,CAAC,EAAgB,gBAAgB,SAAS,CAAC,EAAgB,gBAAgB,SAAS,CAAC,EAAgB,QAAQ,SAAS,CAAC,EAAgB,SAAS,SAAS,CAItQ,MAAM,EAAM,WAAW,CAAC,KAAK,GAAK,EAAI,MAAM,CAAC,CAAC,KAAK,GAAM,CAAC,IAAM,EAAO,EAAE,CAAO,EAAS,EAAO,EAAE,QAAQ,EAAK,CAAC,eAAe,EAAQ,IAAQ,CAAC,IAAMC,EAAM,EAAQ,WAAiB,EAAKA,EAAM,OAAOA,EAAM,WAAW,UAAoI,EAAM;;qDAE7S,EAAK;gDAFmLA,EAAM,UAAU,IAGxM;6CAHwNA,EAAM,OAAO,IAIvO;6CAJuPA,EAAM,OAAO,IAKpQ;4CALmRA,EAAM,MAAM,IAMjS;;8BAEnB,EAAM,GAAG,YAAY,CAAC,EAAM,UAAU,EAAM,CAAC,WAAW,EAAG,CAAC,IAAM,EAAMA,EAAM,OAAOA,EAAM,WAAc,KAAK,EAAO,KAAK,CAAC,OAAK,QAAM,QAAM,CAAC,EAAG,MAAM,IAAU,CAAC,MAAM,EAAQ,WAAW,QAAQ,UAAU,OAAO,EAAQ,WAAW,iBAAiB,EAAE,QAAQ,EAAQ,WAAW,mBAAmB,EAAE,UAAU,EAAQ,WAAW,MAAM,UAAU,YAAY,EAAQ,WAAW,iBAAiB,GAAG,EAAE,CAAC,CAAC,EAAW,QAAQ,EAAS,EAAS,MAAM,EAAI,CAAC,EAAU,EAAO,EAAG,EAAS,MAAyB,CAAC,IAAM,EAAM,SAAS,cAAc,QAAQ,CAAC,EAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkEhkB,SAAS,KAAK,YAAY,EAAM,EAAG,GAAa,EAAG,CAAC,EAAM,WAAW,EAAM,SAAS,EAAM,QAAQ,CAAC,CAAC,IAAM,EAAa,GAAO,CAAC,IAAM,EAAI,EAAO,QAAW,GAAK,GAAO,EAAI,UAAU,EAAM,WAAW,CAAC,CAAC,QAAQ,GAAG,CAAC,EAA2N,OAAoB,EAAM,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,CAAC,SAAS,CAAc,EAAK,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,CAAC,CAAC,CAAc,EAAK,MAAM,CAAC,UAAU,iBAAiB,SAAS,EAAO,KAAK,EAAE,IAAqB,EAAM,MAAM,CAAC,YAAY,EAAa,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,WAAW,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,MAAmB,EAAK,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU,QAAQ,OAAO,iBAAiB,CAAC,CAAC,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,gBAAgB,OAAO,OAAO,iBAAiB,CAAC,CAAC,CAAc,EAAK,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAM,CAAC,CAAC,CAAC,CAAc,EAAK,SAAS,CAAC,YAAx5B,CAAC,IAAM,EAAI,EAAO,QAAc,EAAQ,EAAW,QAAW,CAAC,GAAK,CAAC,IAAkB,EAAgB,EAAI,YAAY,EAAQ,CAAO,EAAQ,MAAM,EAAI,CAAE,EAAkB,CAAC,EAAe,GAAkvB,MAAM,CAAC,SAAS,WAAW,OAAO,OAAO,KAAK,QAAQ,QAAQ,WAAW,WAAW,yBAAyB,gBAAgB,OAAO,MAAM,OAAO,OAAO,iBAAiB,aAAa,EAAE,SAAS,OAAO,OAAO,UAAU,OAAO,IAAI,CAAC,SAAS,EAAe,eAAe,eAAe,CAAC,CAAC,CAAC,CAAC,sBAhFl5C,IAA6C,IAAoD,CAgFmzC,EAAoB,EAAoB,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,uGAAuG,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,UAAU,YAAY,CAAC,aAAa,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC"}