{"version":3,"file":"MultiLocationMap.DPSB3LpL.mjs","names":["useRef","style"],"sources":["https:/framerusercontent.com/modules/HMXM6b1GgASjioBALkQJ/TRotw1toAwdy52q1fjrT/MultiLocationMap.js"],"sourcesContent":["// Multi-location map component without API key, using OpenStreetMap + Leaflet CDN\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * MultiLocationMap (OpenStreetMap powered map)\n * Shows multiple markers on a map without requiring an API key\n *\n * @framerIntrinsicWidth 480\n * @framerIntrinsicHeight 320\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function MultiLocationMap(props){const{markers,zoom,customPinSize,clusterPinImage={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Cluster pin\"},markerColor,popoverBackground,popoverTextColor,mapTheme,borderRadius,enableClustering,showPopup,style}=props;const mapRef=useRef(null);const leafletRef=useRef(null);const firstMarkerRef=useRef(null);useEffect(()=>{if(!mapRef.current||typeof window===\"undefined\")return;// If leaflet already loaded, skip\nif(window.L&&leafletRef.current){leafletRef.current.remove();leafletRef.current=null;}// Dynamically load Leaflet CSS & JS if not present\nfunction ensureLeafletLoaded(){if(window.L)return Promise.resolve(window.L);return new Promise(resolve=>{const exists=document.getElementById(\"leaflet-style\");if(!exists){const link=document.createElement(\"link\");link.id=\"leaflet-style\";link.rel=\"stylesheet\";link.href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\";document.head.appendChild(link);}const script=document.createElement(\"script\");script.src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\";script.onload=()=>resolve(window.L);document.body.appendChild(script);});}// Dynamically load Leaflet.markercluster plugin\nfunction ensureMarkerClusterLoaded(){if(window.L&&window.L.markerClusterGroup){return Promise.resolve(window.L);}return new Promise(resolve=>{const cssExists=document.getElementById(\"leaflet-markercluster-style\");if(!cssExists){const link=document.createElement(\"link\");link.id=\"leaflet-markercluster-style\";link.rel=\"stylesheet\";link.href=\"https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.css\";document.head.appendChild(link);const linkDefault=document.createElement(\"link\");linkDefault.id=\"leaflet-markercluster-default-style\";linkDefault.rel=\"stylesheet\";linkDefault.href=\"https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.Default.css\";document.head.appendChild(linkDefault);}const scriptExists=document.getElementById(\"leaflet-markercluster-script\");if(!scriptExists){const script=document.createElement(\"script\");script.id=\"leaflet-markercluster-script\";script.src=\"https://unpkg.com/leaflet.markercluster@1.5.3/dist/leaflet.markercluster.js\";script.onload=()=>resolve(window.L);document.body.appendChild(script);}else{resolve(window.L);}});}ensureLeafletLoaded().then(L=>{// Load marker cluster plugin if clustering is enabled\nconst loadPromise=enableClustering?ensureMarkerClusterLoaded():Promise.resolve(L);return loadPromise.then(async()=>{if(!mapRef.current)return;// Prevent double init\nmapRef.current.innerHTML=\"\";// Load Google Font Inter\nconst fontExists=document.getElementById(\"google-font-inter\");if(!fontExists){const link=document.createElement(\"link\");link.id=\"google-font-inter\";link.rel=\"stylesheet\";link.href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\";document.head.appendChild(link);}const map=L.map(mapRef.current,{zoomControl:true,attributionControl:false});leafletRef.current=map;// Compute bounds if markers exist\nlet bounds=null;if(markers.length>0){const validCoords=markers.map(m=>{const parts=m.coordinates.split(\",\").map(s=>s.trim());if(parts.length!==2)return null;const lat=parseFloat(parts[0]);const lng=parseFloat(parts[1]);if(isNaN(lat)||isNaN(lng))return null;return[lat,lng];}).filter(coord=>coord!==null);if(validCoords.length>0){bounds=L.latLngBounds(validCoords);}}// Select tile layer based on theme\nlet tileUrl=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\";switch(mapTheme){case\"dark\":tileUrl=\"https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png\";break;case\"satellite\":tileUrl=\"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\";break;case\"topo\":tileUrl=\"https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png\";break;case\"light\":tileUrl=\"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png\";break;case\"standard\":default:tileUrl=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\";break;}L.tileLayer(tileUrl,{maxZoom:22,maxNativeZoom:19}).addTo(map);if(markers.length>0){const pinMetaBySrc=new Map;// Preload pin images to respect their aspect ratio\nconst uniquePinSrcs=Array.from(new Set(markers.map(m=>m.pinImage?.src).filter(Boolean)));if(uniquePinSrcs.length>0){await Promise.all(uniquePinSrcs.map(src=>new Promise(resolve=>{const img=new window.Image;img.onload=()=>{const w=img.naturalWidth||img.width;const h=img.naturalHeight||img.height;if(w>0&&h>0)pinMetaBySrc.set(src,{w,h});resolve();};img.onerror=()=>resolve();img.src=src;})));}// Create marker cluster group if clustering is enabled\nconst markerGroup=enableClustering&&L.markerClusterGroup?L.markerClusterGroup({showCoverageOnHover:false,zoomToBoundsOnClick:true,spiderfyOnMaxZoom:true,removeOutsideVisibleBounds:true,iconCreateFunction:function(cluster){const count=cluster.getChildCount();const clusterSrc=clusterPinImage?.src;if(clusterSrc){return L.divIcon({html:`\n                        <div style=\"\n                          position: relative;\n                          width: 40px;\n                          height: 40px;\n                          display: block;\n                        \" >\n                          <img src=\"${clusterSrc}\" alt=\"\" style=\"\n                            width: 40px;\n                            height: 40px;\n                            object-fit: contain;\n                            display: block;\n                          \" />\n                        </div>\n                      `,className:\"custom-cluster-icon\",iconSize:L.point(40,40)});}return L.divIcon({html:`<div style=\"\n                      background: ${markerColor};\n                      color: white;\n                      border-radius: 50%;\n                      width: 40px;\n                      height: 40px;\n                      display: flex;\n                      align-items: center;\n                      justify-content: center;\n                      font-family: 'Inter', sans-serif;\n                      font-weight: 600;\n                      font-size: 14px;\n                      border: 3px solid white;\n                      box-shadow: 0 2px 8px rgba(0,0,0,0.3);\n                    \"></div>`,className:\"custom-cluster-icon\",iconSize:L.point(40,40)});}}):null;for(const markerData of markers){const{coordinates,name,address,pinImage}=markerData;// Parse coordinates from \"lat, lng\" format\nconst parts=coordinates.split(\",\").map(s=>s.trim());if(parts.length!==2)continue;// Skip invalid format\nconst latitude=parseFloat(parts[0]);const longitude=parseFloat(parts[1]);// Skip if parsing failed\nif(isNaN(latitude)||isNaN(longitude))continue;let marker;const pinSrc=pinImage?.src;if(pinSrc){const meta=pinMetaBySrc.get(pinSrc);// Respect uploaded image aspect ratio (scale to fit within customPinSize)\nlet iconW=customPinSize;let iconH=customPinSize;if(meta){const scale=customPinSize/Math.max(meta.w,meta.h);iconW=Math.max(1,Math.round(meta.w*scale));iconH=Math.max(1,Math.round(meta.h*scale));}// Create custom icon\nconst customIcon=L.icon({iconUrl:pinSrc,iconSize:[iconW,iconH],iconAnchor:[iconW/2,iconH],popupAnchor:[0,-iconH]});marker=L.marker([latitude,longitude],{icon:customIcon});}else{// Use default circle marker\nmarker=L.circleMarker([latitude,longitude],{radius:10,color:markerColor,fillColor:markerColor,fillOpacity:.85,weight:2});// Add hover effect only for circle markers\nmarker.on(\"mouseover\",function(){this.setStyle({radius:12,fillOpacity:1});});marker.on(\"mouseout\",function(){this.setStyle({radius:10,fillOpacity:.85});});}// Create custom popup with styled content\nconst popupContent=`\n              <div style=\"\n                padding: 12px 16px;\n                background: ${popoverBackground};\n                color: ${popoverTextColor};\n                border-radius: 8px;\n                font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n                font-size: 14px;\n                font-weight: 500;\n                line-height: 1.4;\n                min-width: 120px;\n              \">\n                <div style=\"font-weight: 600; margin-bottom: 4px;\">${name}</div>\n                <div style=\"font-weight: 400; opacity: 0.8;\">${address}</div>\n              </div>\n            `;marker.bindPopup(popupContent,{closeButton:true,className:\"custom-popup\",maxWidth:300,autoPan:true});// Store reference to first marker\nif(!firstMarkerRef.current){firstMarkerRef.current=marker;}// Add marker to cluster group or directly to map\nif(markerGroup){markerGroup.addLayer(marker);}else{marker.addTo(map);}}// Add cluster group to map if clustering is enabled\nif(markerGroup){map.addLayer(markerGroup);}if(bounds)map.fitBounds(bounds,{padding:[24,24],maxZoom:zoom});else map.setView([37.77,-122.41],zoom);}// Open popup if showPopup is enabled and there's exactly 1 marker\nif(showPopup&&markers.length===1&&firstMarkerRef.current){setTimeout(()=>{if(firstMarkerRef.current){firstMarkerRef.current.openPopup();}},100);}// Add custom CSS for popup styling\nconst styleId=\"leaflet-custom-popup-style\";if(!document.getElementById(styleId)){const style=document.createElement(\"style\");style.id=styleId;style.textContent=`\n            .custom-popup .leaflet-popup-content-wrapper {\n              background: transparent;\n              box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n              padding: 0;\n              border-radius: 8px;\n            }\n            .custom-popup .leaflet-popup-content {\n              margin: 0;\n              line-height: 1;\n            }\n            .custom-popup .leaflet-popup-tip {\n              background: ${popoverBackground};\n            }\n            .custom-cluster-icon {\n              background: transparent !important;\n              border: none !important;\n            }\n          `;document.head.appendChild(style);}});});return()=>{if(leafletRef.current){leafletRef.current.remove();leafletRef.current=null;}firstMarkerRef.current=null;};},[markers,zoom,customPinSize,clusterPinImage,markerColor,popoverBackground,popoverTextColor,mapTheme,enableClustering,showPopup]);if(RenderTarget.current()===RenderTarget.thumbnail)return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",background:\"#eee\",borderRadius,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",minHeight:320,minWidth:480},children:\"Map preview\"});return /*#__PURE__*/_jsx(\"div\",{ref:mapRef,style:{width:style?.width||\"100%\",height:style?.height||\"100%\",borderRadius,overflow:\"hidden\",...style},\"aria-label\":\"Map with multiple locations\",role:\"region\"});}addPropertyControls(MultiLocationMap,{markers:{type:ControlType.Array,title:\"Markers\",description:\"Add locations to display on the map. Use 'Lat, Lng' format (e.g., 59.1997, 17.6172)\",control:{type:ControlType.Object,controls:{name:{type:ControlType.String,title:\"Name\",defaultValue:\"Property Name\",description:\"Property designation or name\"},address:{type:ControlType.String,title:\"Address\",defaultValue:\"Street Address\",description:\"Street address or location\"},coordinates:{type:ControlType.String,title:\"Lat, Lng\",defaultValue:\"37.77, -122.41\",placeholder:\"59.1997, 17.6172\",description:\"Copy coordinates directly from Google Maps\"},pinImage:{type:ControlType.ResponsiveImage,title:\"Pin Image\"}}},defaultValue:[{coordinates:\"37.77, -122.41\",name:\"San Francisco Property\",address:\"Market Street\"},{coordinates:\"34.05, -118.25\",name:\"Los Angeles Property\",address:\"Hollywood Blvd\"},{coordinates:\"40.7128, -74.006\",name:\"New York Property\",address:\"Broadway\"}]},zoom:{type:ControlType.Number,title:\"Zoom Level\",defaultValue:4,min:1,max:22,step:1,description:\"Initial zoom level (1 = world view, 22 = street level)\"},mapTheme:{type:ControlType.Enum,title:\"Map Theme\",options:[\"standard\",\"dark\",\"satellite\",\"topo\",\"light\"],optionTitles:[\"Standard\",\"Dark\",\"Satellite\",\"Topographic\",\"Light\"],defaultValue:\"standard\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:8,min:0,max:50,step:1},enableClustering:{type:ControlType.Boolean,title:\"Cluster Pins\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Group nearby markers into clusters with count badges\"},clusterPinImage:{type:ControlType.ResponsiveImage,title:\"Cluster Image\",description:\"Optional custom image for clustered pins (count overlays on top).\"},customPinSize:{type:ControlType.Number,title:\"Pin Image Size\",defaultValue:40,min:20,max:100,step:1,description:\"Size (px) for any marker that has a Pin Image set\"},markerColor:{type:ControlType.Color,title:\"Marker Color\",defaultValue:\"#1A6DFF\",description:\"Used for default circle markers and cluster badges\"},showPopup:{type:ControlType.Boolean,title:\"Auto-Open Popup\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Automatically open popup on load (only works with exactly 1 marker)\",hidden:({markers})=>markers.length!==1},popoverBackground:{type:ControlType.Color,title:\"Popup Background\",defaultValue:\"#FFFFFF\"},popoverTextColor:{type:ControlType.Color,title:\"Popup Text Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MultiLocationMap\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"480\",\"framerIntrinsicHeight\":\"320\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MultiLocationMap.map"],"mappings":"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"}