{"version":3,"file":"MultiLocationMap.6ZdufEDb.mjs","names":["useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/A5ckDw2mKXLYwSzNLJrZ/BVPCIeAr1FFCDtTQBuwm/MultiLocationMap.js"],"sourcesContent":["// Requested update: support both `latLng` and `coordinates`, parse defensively, harden script loading with timeout/readiness checks, and show fallback UI on failures.\n// Multi-location map component without API key, using OpenStreetMap + Leaflet CDN\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{startTransition,useEffect,useMemo,useRef,useState}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,useCustomPin,customPinImage={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Custom Pin\"},customPinSize,markerColor,popoverBackground,popoverTextColor,mapTheme,borderRadius,enableClustering,showPopup,style}=props;const mapRef=useRef(null);const leafletRef=useRef(null);const firstMarkerRef=useRef(null);const[loadError,setLoadError]=useState(null);const parsedMarkers=useMemo(()=>{const parseCoordinateString=value=>{if(typeof value!==\"string\")return null;const parts=value.split(\",\").map(segment=>segment.trim());if(parts.length!==2)return null;const lat=Number(parts[0]);const lng=Number(parts[1]);if(!Number.isFinite(lat)||!Number.isFinite(lng))return null;if(lat<-90||lat>90||lng<-180||lng>180)return null;return{lat,lng};};return markers.map(marker=>{const parsed=parseCoordinateString(marker.coordinates)??parseCoordinateString(marker.latLng);if(!parsed)return null;return{...marker,parsed};}).filter(entry=>entry!==null);},[markers]);useEffect(()=>{if(!mapRef.current||typeof window===\"undefined\")return;startTransition(()=>setLoadError(null));// If leaflet already loaded, skip\nif(window.L&&leafletRef.current){leafletRef.current.remove();leafletRef.current=null;}function createTimeoutError(message){return new Error(message);}function loadScriptWithTimeout(id,src,isReady,timeoutMs,timeoutMessage){if(isReady())return Promise.resolve();return new Promise((resolve,reject)=>{let settled=false;const complete=()=>{if(!settled){settled=true;clearTimeout(timeoutId);}};const onReady=()=>{if(isReady()){complete();resolve();}};const onError=()=>{complete();reject(new Error(`Failed to load script: ${src}`));};const timeoutId=window.setTimeout(()=>{complete();reject(createTimeoutError(timeoutMessage));},timeoutMs);let script=document.getElementById(id);if(!script){script=document.createElement(\"script\");script.id=id;script.src=src;script.async=true;script.onload=onReady;script.onerror=onError;document.body.appendChild(script);}else{script.addEventListener(\"load\",onReady,{once:true});script.addEventListener(\"error\",onError,{once:true});onReady();}});}function waitForCondition(condition,timeoutMs,timeoutMessage){if(condition())return Promise.resolve();return new Promise((resolve,reject)=>{const start=Date.now();const intervalId=window.setInterval(()=>{if(condition()){window.clearInterval(intervalId);resolve();return;}if(Date.now()-start>timeoutMs){window.clearInterval(intervalId);reject(createTimeoutError(timeoutMessage));}},50);});}// Dynamically load Leaflet CSS & JS if not present\nfunction ensureLeafletLoaded(){if(window.L)return Promise.resolve(window.L);return new Promise((resolve,reject)=>{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\";link.onerror=()=>reject(new Error(\"Failed to load Leaflet CSS.\"));document.head.appendChild(link);}loadScriptWithTimeout(\"leaflet-script\",\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\",()=>Boolean(window.L),8e3,\"Timed out while loading Leaflet.\").then(()=>resolve(window.L)).catch(reject);});}// Dynamically load Leaflet.markercluster plugin\nfunction ensureMarkerClusterLoaded(){if(window.L&&window.L.markerClusterGroup){return Promise.resolve(window.L);}return new Promise((resolve,reject)=>{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\";link.onerror=()=>reject(new Error(\"Failed to load 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\";linkDefault.onerror=()=>reject(new Error(\"Failed to load MarkerCluster default CSS.\"));document.head.appendChild(linkDefault);}loadScriptWithTimeout(\"leaflet-markercluster-script\",\"https://unpkg.com/leaflet.markercluster@1.5.3/dist/leaflet.markercluster.js\",()=>Boolean(window.L&&window.L.markerClusterGroup),8e3,\"Timed out while loading Leaflet marker clustering.\").then(()=>waitForCondition(()=>Boolean(window.L&&window.L.markerClusterGroup),2e3,\"Leaflet marker clustering plugin did not become ready.\")).then(()=>resolve(window.L)).catch(reject);});}ensureLeafletLoaded().then(L=>{// Load marker cluster plugin if clustering is enabled\nconst loadPromise=enableClustering?ensureMarkerClusterLoaded():Promise.resolve(L);return loadPromise.then(()=>{if(!mapRef.current)return;// 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(parsedMarkers.length>0){const validCoords=parsedMarkers.map(m=>[m.parsed.lat,m.parsed.lng]);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}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png\";break;case\"standard\":default:tileUrl=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\";break;}L.tileLayer(tileUrl,{maxZoom:19}).addTo(map);if(parsedMarkers.length>0){// 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();let size=\"small\";if(count>10)size=\"medium\";if(count>50)size=\"large\";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                    \">${count}</div>`,className:\"custom-cluster-icon\",iconSize:L.point(40,40)});}}):null;for(const markerData of parsedMarkers){const{name,address,parsed}=markerData;const latitude=parsed.lat;const longitude=parsed.lng;let marker;if(useCustomPin&&customPinImage.src){// Create custom icon\nconst customIcon=L.icon({iconUrl:customPinImage.src,iconSize:[customPinSize,customPinSize],iconAnchor:[customPinSize/2,customPinSize],popupAnchor:[0,-customPinSize]});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)// Center on SF by default\n;}// Open popup if showPopup is enabled and there's exactly 1 valid marker\nif(showPopup&&parsedMarkers.length===1&&firstMarkerRef.current){const popupTimer=window.setTimeout(()=>{if(firstMarkerRef.current){firstMarkerRef.current.openPopup();}},100);return()=>window.clearTimeout(popupTimer);}// 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);}});}).catch(error=>{const message=error instanceof Error?error.message:\"Failed to load map.\";startTransition(()=>setLoadError(message));});return()=>{if(leafletRef.current){leafletRef.current.remove();leafletRef.current=null;}firstMarkerRef.current=null;};},[parsedMarkers,zoom,useCustomPin,customPinImage,customPinSize,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\"});if(loadError){return /*#__PURE__*/_jsx(\"div\",{style:{width:style?.width||\"100%\",height:style?.height||\"100%\",borderRadius,overflow:\"hidden\",position:\"relative\",background:\"#F5F5F5\",color:\"#000000\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:16,textAlign:\"center\"},\"aria-label\":\"Map failed to load\",role:\"region\",children:\"Unable to load map. Please check network access to map scripts and tiles.\"});}return /*#__PURE__*/_jsx(\"div\",{ref:mapRef,style:{width:style?.width||\"100%\",height:style?.height||\"100%\",borderRadius,overflow:\"hidden\",position:\"relative\",zIndex:0,isolation:\"isolate\",...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\"}}},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:18,step:1,description:\"Initial zoom level (1 = world view, 18 = 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\"},useCustomPin:{type:ControlType.Boolean,title:\"Custom Pin\",defaultValue:false,enabledTitle:\"Custom\",disabledTitle:\"Default\"},customPinImage:{type:ControlType.ResponsiveImage,title:\"Pin Image\",hidden:({useCustomPin})=>!useCustomPin},customPinSize:{type:ControlType.Number,title:\"Pin Size\",defaultValue:40,min:20,max:100,step:1,hidden:({useCustomPin})=>!useCustomPin},markerColor:{type:ControlType.Color,title:\"Pin Color\",defaultValue:\"#1A6DFF\",hidden:({useCustomPin})=>useCustomPin},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\":{\"framerIntrinsicHeight\":\"320\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"480\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MultiLocationMap.map"],"mappings":"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"}