@gmaps-kit/react
Version:
React components and hooks for Google Maps with gmaps-kit - useGeocoding, useDirections, usePlaces, useMarkers, useStreetView and more
2 lines • 28.3 kB
JavaScript
;var le=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var He=Object.prototype.hasOwnProperty;var qe=(a,l)=>{for(var e in l)le(a,e,{get:l[e],enumerable:!0})},ie=(a,l,e,m)=>{if(l&&typeof l=="object"||typeof l=="function")for(let u of Ne(l))!He.call(a,u)&&u!==e&&le(a,u,{get:()=>l[u],enumerable:!(m=We(l,u))||m.enumerable});return a},R=(a,l,e)=>(ie(a,l,"default"),e&&ie(e,l,"default"));var Ae=a=>ie(le({},"__esModule",{value:!0}),a);var v={};qe(v,{InfoWindow:()=>Ue,Map:()=>Oe,Marker:()=>Ge,isMarkerClustererLoaded:()=>ce,useBicycling:()=>Re,useClustering:()=>he,useDirections:()=>Pe,useDistanceMatrix:()=>xe,useElevation:()=>we,useGeocoding:()=>pe,useGeocodingService:()=>ye,useGeometry:()=>ke,useGoogleMaps:()=>ue,useHeatmap:()=>be,useInfoWindows:()=>Ee,useMap:()=>oe,useMapEvents:()=>Se,useMarkers:()=>re,useMaxZoom:()=>Ce,usePlaces:()=>de,usePlacesNew:()=>Le,useStreetView:()=>ve,useTraffic:()=>Ie,useTransit:()=>Te});module.exports=Ae(v);var X=require("react"),te=require("@gmaps-kit/core");function ue(a){let[l,e]=(0,X.useState)(!1),[m,u]=(0,X.useState)(!1),[f,d]=(0,X.useState)(null),c=async()=>{if(!(l||m)){u(!0),d(null);try{await(0,te.loadGoogleMaps)({apiKey:a.apiKey,libraries:a.libraries||["places","geometry"]}),e(!0),a.onLoad?.()}catch(n){let s=n instanceof Error?n:new Error("Failed to load Google Maps");d(s),a.onError?.(s)}finally{u(!1)}}};return(0,X.useEffect)(()=>{(0,te.isGoogleMapsLoaded)()&&e(!0)},[]),{isLoaded:l,isLoading:m,error:f,load:c}}var S=require("react"),T=require("@gmaps-kit/core");function oe(a,l={}){let[e,m]=(0,S.useState)(null),[u,f]=(0,S.useState)(!1),[d,c]=(0,S.useState)(null),[n,s]=(0,S.useState)(null),o=(0,S.useMemo)(()=>l,[l.center?.lat,l.center?.lng,l.zoom,l.mapTypeId,l.mapId,l.onMapReady]),r=(0,S.useCallback)(()=>{if(!(!a||e))try{let L={center:o.center||{lat:40.7128,lng:-74.006},zoom:o.zoom||10,mapTypeId:o.mapTypeId,mapId:o.mapId},M=(0,T.createMap)(a,L);m(M),f(!0),c((0,T.getMapCenter)(M.map)),s((0,T.getMapZoom)(M.map)),o.onMapReady?.(M)}catch(L){console.error("Failed to initialize map:",L)}},[a,o,e]);(0,S.useEffect)(()=>{r()},[r]);let t=(0,S.useCallback)(L=>{e&&((0,T.setMapCenter)(e.map,L),c(L))},[e]),g=(0,S.useCallback)(L=>{e&&((0,T.setMapZoom)(e.map,L),s(L))},[e]),i=(0,S.useCallback)((L,M)=>{e&&((0,T.panTo)(e.map,L,M),c(L),M!==void 0&&s(M))},[e]),p=(0,S.useCallback)(L=>{e&&(0,T.fitMapToMarkers)(e.map,L)},[e]);return{mapInstance:e,isReady:u,center:d,zoom:n,setCenter:t,setZoom:g,panTo:i,fitToMarkers:p}}var Z=require("react"),w=require("@gmaps-kit/core");function re(a){let[l,e]=(0,Z.useState)([]),m=(0,Z.useCallback)(n=>{if(!a)throw new Error("Map instance is not available");let s=(0,w.addMarker)(a.map,{position:n.position,title:n.title,content:n.content,draggable:n.draggable,clickable:n.clickable,zIndex:n.zIndex});return n.onClick&&(0,w.addMarkerClickListener)(s,n.onClick),n.onDrag&&(0,w.addMarkerDragListener)(s,n.onDrag),n.onDragEnd&&(0,w.addMarkerDragEndListener)(s,n.onDragEnd),e(o=>[...o,s]),s},[a]),u=(0,Z.useCallback)(n=>{(0,w.removeMarker)(n),e(s=>s.filter(o=>o!==n))},[]),f=(0,Z.useCallback)((n,s)=>{s.position&&(0,w.updateMarkerPosition)(n,s.position),s.content&&(0,w.updateMarkerContent)(n,s.content),s.draggable!==void 0&&(0,w.setMarkerDraggable)(n,s.draggable)},[]),d=(0,Z.useCallback)(()=>{l.forEach(n=>{n.map=null}),e([])},[l]),c=(0,Z.useCallback)(n=>(0,w.getMarkerPosition)(n),[]);return(0,Z.useEffect)(()=>{a||e([])},[a]),{markers:l,addMarker:m,removeMarker:u,updateMarker:f,clearAllMarkers:d,getMarkerPosition:c}}var N=require("react"),k=require("@gmaps-kit/core");function pe(){let[a,l]=(0,N.useState)(!1),[e,m]=(0,N.useState)(null),u=(0,N.useCallback)(async t=>{l(!0),m(null);try{return await t()}catch(g){let i=g instanceof Error?g:new Error("Geocoding operation failed");throw m(i),i}finally{l(!1)}},[]),f=(0,N.useCallback)(async t=>u(async()=>(await(0,k.geocodeAsync)(t)).map(i=>({address:i.address,location:i.location,placeId:i.placeId}))),[u]),d=(0,N.useCallback)(async t=>u(async()=>{let g=await(0,k.geocodeFirst)(t);return g?{address:g.address,location:g.location,placeId:g.placeId}:null}),[u]),c=(0,N.useCallback)(async t=>u(async()=>(await(0,k.reverseGeocodeAsync)(t)).map(i=>({address:i.address,location:i.location,placeId:i.placeId}))),[u]),n=(0,N.useCallback)(async t=>u(async()=>{let g=await(0,k.reverseGeocodeFirst)(t);return g?{address:g.address,location:g.location,placeId:g.placeId}:null}),[u]),s=(0,N.useCallback)(async(t,g)=>u(async()=>(await(0,k.geocodeWithComponents)(t,g,()=>{}),(await(0,k.geocodeAsync)(t)).map(p=>({address:p.address,location:p.location,placeId:p.placeId})))),[u]),o=(0,N.useCallback)(async(t,g)=>u(async()=>(await(0,k.geocodeWithBounds)(t,g,()=>{}),(await(0,k.geocodeAsync)(t)).map(p=>({address:p.address,location:p.location,placeId:p.placeId})))),[u]),r=(0,N.useCallback)(async(t,g)=>u(async()=>(await(0,k.geocodeWithRegion)(t,g,()=>{}),(await(0,k.geocodeAsync)(t)).map(p=>({address:p.address,location:p.location,placeId:p.placeId})))),[u]);return{isLoading:a,error:e,geocode:f,geocodeFirst:d,reverseGeocode:c,reverseGeocodeFirst:n,geocodeWithComponents:s,geocodeWithBounds:o,geocodeWithRegion:r}}var P=require("react"),me=require("@gmaps-kit/core");function de(a){let{apiKey:l,baseUrl:e,fetchImpl:m,language:u,region:f,requestInit:d}=a,c=(0,P.useMemo)(()=>new me.PlacesClient({apiKey:l,baseUrl:e,fetchImpl:m,language:u,region:f,requestInit:d}),[l,e,m,u,f,d]),n=(0,P.useRef)(!0);(0,P.useEffect)(()=>()=>{n.current=!1},[]);let[s,o]=(0,P.useState)({isLoading:!1,lastOperation:null,error:null}),r=(0,P.useRef)(0),t=(0,P.useCallback)(async(y,B)=>{r.current+=1,n.current&&o(ee=>({isLoading:!0,lastOperation:ee.lastOperation,error:null}));let ge=null;try{return await B()}catch(ee){throw ge=ee,ee}finally{r.current=Math.max(0,r.current-1),n.current&&o({isLoading:r.current>0,lastOperation:y,error:ge})}},[]),g=(0,P.useCallback)(y=>t("findPlaceFromText",()=>c.findPlaceFromText(y)),[c,t]),i=(0,P.useCallback)(y=>t("textSearch",()=>c.textSearch(y)),[c,t]),p=(0,P.useCallback)(y=>t("nearbySearch",()=>c.nearbySearch(y)),[c,t]),L=(0,P.useCallback)(y=>t("placeDetails",()=>c.placeDetails(y)),[c,t]),M=(0,P.useCallback)(y=>t("autocomplete",()=>c.autocomplete(y)),[c,t]),x=(0,P.useCallback)(y=>t("queryAutocomplete",()=>c.queryAutocomplete(y)),[c,t]),h=(0,P.useCallback)((y,B)=>t("textSearchNextPage",()=>c.textSearchNextPage(y,B)),[c,t]),A=(0,P.useCallback)((y,B)=>t("nearbySearchNextPage",()=>c.nearbySearchNextPage(y,B)),[c,t]),J=(0,P.useCallback)((y,B)=>c.buildPhotoUrl(y,B),[c]);return{client:c,isLoading:s.isLoading,error:s.error,lastOperation:s.lastOperation,findPlaceFromText:g,textSearch:i,nearbySearch:p,placeDetails:L,autocomplete:M,queryAutocomplete:x,textSearchNextPage:h,nearbySearchNextPage:A,buildPhotoUrl:J}}var b=require("react"),fe=require("@gmaps-kit/core");function Le(a){let{apiKey:l,baseUrl:e,fetchImpl:m,languageCode:u,regionCode:f,requestInit:d}=a,c=(0,b.useMemo)(()=>new fe.PlacesNewClient({apiKey:l,baseUrl:e,fetchImpl:m,languageCode:u,regionCode:f,requestInit:d}),[l,e,m,u,f,d]),n=(0,b.useRef)(!0);(0,b.useEffect)(()=>()=>{n.current=!1},[]);let[s,o]=(0,b.useState)({isLoading:!1,lastOperation:null,error:null}),r=(0,b.useRef)(0),t=(0,b.useCallback)(async(h,A)=>{r.current+=1,n.current&&o(y=>({isLoading:!0,lastOperation:y.lastOperation,error:null}));let J=null;try{return await A()}catch(y){throw J=y,y}finally{r.current=Math.max(0,r.current-1),n.current&&o({isLoading:r.current>0,lastOperation:h,error:J})}},[]),g=(0,b.useCallback)(h=>t("textSearch",()=>c.textSearch(h)),[c,t]),i=(0,b.useCallback)(h=>t("nearbySearch",()=>c.nearbySearch(h)),[c,t]),p=(0,b.useCallback)(h=>t("placeDetails",()=>c.placeDetails(h)),[c,t]),L=(0,b.useCallback)(h=>t("autocomplete",()=>c.autocomplete(h)),[c,t]),M=(0,b.useCallback)(h=>t("getPhoto",()=>c.getPhoto(h)),[c,t]),x=(0,b.useCallback)((h,A)=>c.buildPhotoUrl(h,A),[c]);return{client:c,isLoading:s.isLoading,error:s.error,lastOperation:s.lastOperation,textSearch:g,nearbySearch:i,placeDetails:p,autocomplete:L,getPhoto:M,buildPhotoUrl:x}}var H=require("react"),Me=require("@gmaps-kit/core");function ye(a){let{apiKey:l,baseUrl:e,fetchImpl:m,language:u,region:f,channel:d,timeoutMs:c,requestInit:n,retryConfig:s}=a,o=(0,H.useMemo)(()=>new Me.GeocodingClient({apiKey:l,baseUrl:e,fetchImpl:m,language:u,region:f,channel:d,timeoutMs:c,requestInit:n,retryConfig:s}),[l,e,m,u,f,d,c,n,s?.retries,s?.delayMs,s?.backoffFactor,s?.retryStatuses&&s.retryStatuses.join(",")]),r=(0,H.useRef)(!0);(0,H.useEffect)(()=>()=>{r.current=!1},[]);let[t,g]=(0,H.useState)({isLoading:!1,lastOperation:null,error:null}),i=(0,H.useCallback)(async(M,x)=>{r.current&&g({isLoading:!0,lastOperation:M,error:null});try{let h=await x();return r.current&&g({isLoading:!1,lastOperation:M,error:null}),h}catch(h){throw r.current&&g({isLoading:!1,lastOperation:M,error:h}),h}},[]),p=(0,H.useCallback)(M=>i("geocode",()=>o.geocode(M)),[o,i]),L=(0,H.useCallback)(M=>i("reverseGeocode",()=>o.reverseGeocode(M)),[o,i]);return{client:o,isLoading:t.isLoading,error:t.error,lastOperation:t.lastOperation,geocode:p,reverseGeocode:L}}var C=require("react"),O=require("@gmaps-kit/core");function ve(a,l={}){let[e,m]=(0,C.useState)(null),[u,f]=(0,C.useState)(!1),d=(0,C.useMemo)(()=>l.eventHandlers,[l.eventHandlers]),c=(0,C.useCallback)(()=>{if(!(!a||e))try{let i=(0,O.createStreetViewPanorama)(a,l,d);m(i),f(!0)}catch(i){console.error("Failed to initialize Street View panorama:",i)}},[a,e,l,d]);(0,C.useEffect)(()=>{c()},[c]);let n=(0,C.useCallback)(i=>{e&&(0,O.setStreetViewPosition)(e.panorama,i)},[e]),s=(0,C.useCallback)(()=>e?(0,O.getStreetViewPosition)(e.panorama):null,[e]),o=(0,C.useCallback)(i=>{e&&(0,O.setStreetViewPov)(e.panorama,i)},[e]),r=(0,C.useCallback)(()=>e?(0,O.getStreetViewPov)(e.panorama):null,[e]),t=(0,C.useCallback)(i=>{e&&(0,O.setStreetViewVisibility)(e.panorama,i)},[e]),g=(0,C.useCallback)(()=>e?(0,O.isStreetViewVisible)(e.panorama):!1,[e]);return{instance:e,isReady:u,setPosition:n,getPosition:s,setPov:o,getPov:r,setVisible:t,isVisible:g}}var D=require("react");function Re(){let[a]=(0,D.useState)(!1),[l]=(0,D.useState)(null),[e,m]=(0,D.useState)(null),[u,f]=(0,D.useState)(!1),d=(0,D.useCallback)(t=>{let g=new google.maps.BicyclingLayer;return t?.map&&(g.setMap(t.map),f(!0)),m(g),g},[]),c=(0,D.useCallback)(()=>{e&&(e.setMap(e.getMap()),f(!0))},[e]),n=(0,D.useCallback)(()=>{e&&(e.setMap(null),f(!1))},[e]),s=(0,D.useCallback)(()=>{u?n():c()},[u,c,n]),o=(0,D.useCallback)(()=>{if(e){let t=e.getMap();t&&(e.setMap(null),setTimeout(()=>{e.setMap(t)},100))}},[e]),r=(0,D.useCallback)(()=>{e&&(e.setMap(null),m(null),f(!1))},[e]);return(0,D.useEffect)(()=>()=>{e&&e.setMap(null)},[e]),{isLoading:a,error:l,bicyclingLayer:e,isVisible:u,createBicyclingLayer:d,showBicycling:c,hideBicycling:n,toggleBicycling:s,refreshBicycling:o,removeBicyclingLayer:r}}var I=require("react");function ce(){return typeof google.maps.MarkerClusterer<"u"}function he(){let[a,l]=(0,I.useState)(null),[e,m]=(0,I.useState)(!1),u=(0,I.useCallback)((g,i,p={})=>{if(!ce())throw new Error("MarkerClusterer library is not loaded. Please include the markerclusterer library from https://github.com/googlemaps/js-markerclusterer.");let L={gridSize:p.gridSize||60,maxZoom:p.maxZoom||15,minimumClusterSize:p.minimumClusterSize||2,averageCenter:p.averageCenter||!1,ignoreHidden:p.ignoreHidden||!1,enableRetinaIcons:p.enableRetinaIcons||!1,styles:p.styles,imagePath:p.imagePath,imageExtension:p.imageExtension||"png",zoomOnClick:p.zoomOnClick!==!1},M=new google.maps.MarkerClusterer(g.map,i,L);return l(M),m(!0),M},[]),f=(0,I.useCallback)(g=>{if(!a)throw new Error("Clusterer is not initialized");a.addMarkers(g)},[a]),d=(0,I.useCallback)(g=>{if(!a)throw new Error("Clusterer is not initialized");a.removeMarkers(g)},[a]),c=(0,I.useCallback)(()=>{if(!a)throw new Error("Clusterer is not initialized");a.clearMarkers()},[a]),n=(0,I.useCallback)(()=>{if(!a)throw new Error("Clusterer is not initialized");a.redraw()},[a]),s=(0,I.useCallback)(()=>a,[a]),o=(0,I.useCallback)(()=>a?a.getTotalMarkers():0,[a]),r=(0,I.useCallback)(()=>a?a.getTotalClusters():0,[a]),t=(0,I.useCallback)(()=>a?a.getMarkers():[],[a]);return(0,I.useEffect)(()=>()=>{a&&a.clearMarkers()},[a]),{clusterer:a,isReady:e,createClusterer:u,addMarkersToCluster:f,removeMarkersFromCluster:d,clearCluster:c,redrawCluster:n,getClusterer:s,getTotalMarkers:o,getTotalClusters:r,getMarkers:t}}var z=require("react"),V=require("@gmaps-kit/core");function Pe(){let[a,l]=(0,z.useState)(!1),[e,m]=(0,z.useState)(null),[u,f]=(0,z.useState)(null),d=(0,z.useCallback)(async r=>{l(!0),m(null);try{return await r()}catch(t){let g=t instanceof Error?t:new Error("Directions operation failed");throw m(g),g}finally{l(!1)}},[]),c=(0,z.useCallback)(async r=>d(async()=>{let t={origin:r.origin,destination:r.destination,travelMode:r.travelMode||google.maps.TravelMode.DRIVING,waypoints:r.waypoints,optimizeWaypoints:r.optimizeWaypoints,avoidHighways:r.avoidHighways,avoidTolls:r.avoidTolls,...r.region&&{region:r.region}},g=new google.maps.DirectionsService,i=await new Promise((A,J)=>{g.route(t,(y,B)=>{B===google.maps.DirectionsStatus.OK&&y?A(y):J(new Error(`Directions request failed: ${B}`))})}),p=(0,V.getTotalDistance)(i),L=(0,V.getTotalDuration)(i),M=(0,V.getDirectionsBounds)(i),h={directions:i,distance:p,duration:L,bounds:M,renderer:null};return f(h),h}),[d]),n=(0,z.useCallback)(r=>{if(!u?.directions)throw new Error("No directions result available");(0,V.createDirectionsRenderer)(r).setDirections(u.directions)},[u]),s=(0,z.useCallback)(()=>{console.log("Clear directions from map - renderer needs to be passed")},[]),o=(0,z.useCallback)(r=>{if(!u?.directions)throw new Error("No directions result available");(0,V.fitMapToRoute)(r.map,u.directions)},[u]);return{isLoading:a,error:e,result:u,getDirections:c,renderDirections:n,clearDirectionsFromMap:s,fitMapToRoute:o}}var $=require("react"),ae=require("@gmaps-kit/core");function xe(){let[a,l]=(0,$.useState)(!1),[e,m]=(0,$.useState)(null),[u,f]=(0,$.useState)(null),d=(0,$.useCallback)(async s=>{l(!0),m(null);try{return await s()}catch(o){let r=o instanceof Error?o:new Error("Distance matrix operation failed");throw m(r),r}finally{l(!1)}},[]),c=(0,$.useCallback)(async s=>d(async()=>{let r={results:await(0,ae.getDistanceMatrixAsync)({origins:s.origins,destinations:s.destinations,travelMode:s.travelMode,avoidHighways:s.avoidHighways,avoidTolls:s.avoidTolls,unitSystem:s.unitSystem}),origins:s.origins,destinations:s.destinations,service:null};return f(r),r}),[d]),n=(0,$.useCallback)(s=>(0,ae.createDistanceMatrixService)(s),[]);return{isLoading:a,error:e,result:u,getDistanceMatrix:c,createService:n}}var K=require("react");function we(){let[a,l]=(0,K.useState)(!1),[e,m]=(0,K.useState)(null),[u,f]=(0,K.useState)(null),d=(0,K.useCallback)(async o=>{l(!0),m(null);try{return await o()}catch(r){let t=r instanceof Error?r:new Error("Elevation operation failed");throw m(t),t}finally{l(!1)}},[]),c=(0,K.useCallback)(async o=>d(async()=>{let r=new google.maps.ElevationService,t={locations:o.locations},i=(await new Promise((p,L)=>{r.getElevationForLocations(t,(M,x)=>{x===google.maps.ElevationStatus.OK&&M?p(M):L(new Error(`Elevation request failed: ${x}`))})})).map(p=>({elevation:p.elevation,resolution:p.resolution,location:{lat:p.location?.lat()||0,lng:p.location?.lng()||0}}));return f(i),i}),[d]),n=(0,K.useCallback)(async o=>d(async()=>{if(!o.path)throw new Error("Path is required for elevation along path");let r=new google.maps.ElevationService,t={path:o.path,samples:o.samples||256},i=(await new Promise((p,L)=>{r.getElevationAlongPath(t,(M,x)=>{x===google.maps.ElevationStatus.OK&&M?p(M):L(new Error(`Elevation request failed: ${x}`))})})).map(p=>({elevation:p.elevation,resolution:p.resolution,location:{lat:p.location?.lat()||0,lng:p.location?.lng()||0}}));return f(i),i}),[d]),s=(0,K.useCallback)(()=>new google.maps.ElevationService,[]);return{isLoading:a,error:e,results:u,getElevationForLocations:c,getElevationAlongPath:n,createElevationService:s}}var E=require("react");function ke(){let[a]=(0,E.useState)(!1),[l]=(0,E.useState)(null),[e]=(0,E.useState)(null),m=(0,E.useCallback)((i,p)=>google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(i.lat,i.lng),new google.maps.LatLng(p.lat,p.lng)),[]),u=(0,E.useCallback)((i,p)=>google.maps.geometry.spherical.computeHeading(new google.maps.LatLng(i.lat,i.lng),new google.maps.LatLng(p.lat,p.lng)),[]),f=(0,E.useCallback)((i,p,L)=>{let M=google.maps.geometry.spherical.computeOffset(new google.maps.LatLng(i.lat,i.lng),p,L);return{lat:M.lat(),lng:M.lng()}},[]),d=(0,E.useCallback)((i,p,L)=>{let M=google.maps.geometry.spherical.computeOffsetOrigin(new google.maps.LatLng(i.lat,i.lng),p,L);if(!M)throw new Error("Could not compute offset origin");return{lat:M.lat(),lng:M.lng()}},[]),c=(0,E.useCallback)(i=>{let p=i.map(L=>new google.maps.LatLng(L.lat,L.lng));return google.maps.geometry.spherical.computeLength(p)},[]),n=(0,E.useCallback)(i=>{let p=i.map(L=>new google.maps.LatLng(L.lat,L.lng));return google.maps.geometry.spherical.computeArea(p)},[]),s=(0,E.useCallback)(i=>{if(i.length===0)return new google.maps.LatLngBounds;let p=new google.maps.LatLngBounds;return i.forEach(L=>{p.extend(new google.maps.LatLng(L.lat,L.lng))}),p},[]),o=(0,E.useCallback)(i=>{if(i.length===0)return{lat:0,lng:0};if(i.length===1)return i[0];let p=i.reduce((M,x)=>M+x.lat,0)/i.length,L=i.reduce((M,x)=>M+x.lng,0)/i.length;return{lat:p,lng:L}},[]),r=(0,E.useCallback)((i,p,L)=>{let M=new google.maps.LatLng(i.lat,i.lng),x=p.map(A=>new google.maps.LatLng(A.lat,A.lng)),h=new google.maps.Polyline({path:x});return google.maps.geometry.poly.isLocationOnEdge(M,h,L)},[]),t=(0,E.useCallback)(i=>{let p=i.map(L=>new google.maps.LatLng(L.lat,L.lng));return google.maps.geometry.encoding.encodePath(p)},[]),g=(0,E.useCallback)(i=>google.maps.geometry.encoding.decodePath(i).map(L=>({lat:L.lat(),lng:L.lng()})),[]);return{isLoading:a,error:l,results:e,computeDistanceBetween:m,computeHeading:u,computeOffset:f,computeOffsetOrigin:d,computeLength:c,computeArea:n,computeBounds:s,computeCenter:o,isLocationOnEdge:r,encodePath:t,decodePath:g,spherical:google.maps.geometry.spherical,encoding:google.maps.geometry.encoding,poly:google.maps.geometry.poly}}var W=require("react");function be(){let[a]=(0,W.useState)(!1),[l]=(0,W.useState)(null),[e,m]=(0,W.useState)(null),u=(0,W.useCallback)(o=>{try{let t={data:o.data.map(i=>({location:new google.maps.LatLng(i.location.lat,i.location.lng),weight:i.weight||1})),map:o.map,radius:o.radius||20,opacity:o.opacity||.6,maxIntensity:o.maxIntensity||1,gradient:o.gradient,dissipating:o.dissipating!==!1},g=new google.maps.visualization.HeatmapLayer(t);return m(g),g}catch(r){throw r instanceof Error?r:new Error("Heatmap creation failed")}},[]),f=(0,W.useCallback)(o=>{if(e){let r=o.map(t=>({location:new google.maps.LatLng(t.location.lat,t.location.lng),weight:t.weight||1}));e.setData(r)}},[e]),d=(0,W.useCallback)(o=>{e&&(o.radius!==void 0&&e.set("radius",o.radius),o.opacity!==void 0&&e.set("opacity",o.opacity),o.maxIntensity!==void 0&&e.set("maxIntensity",o.maxIntensity),o.gradient!==void 0&&e.set("gradient",o.gradient),o.dissipating!==void 0&&e.set("dissipating",o.dissipating))},[e]),c=(0,W.useCallback)(o=>{if(e)if(o)e.setMap(o);else{let r=e.getMap();r&&e.setMap(r)}},[e]),n=(0,W.useCallback)(()=>{e&&e.setMap(null)},[e]),s=(0,W.useCallback)(()=>{e&&(e.setMap(null),m(null))},[e]);return(0,W.useEffect)(()=>()=>{e&&e.setMap(null)},[e]),{isLoading:a,error:l,heatmapLayer:e,createHeatmap:u,updateHeatmapData:f,setHeatmapOptions:d,showHeatmap:c,hideHeatmap:n,removeHeatmap:s}}var q=require("react"),F=require("@gmaps-kit/core");function Ee(){let[a,l]=(0,q.useState)([]),[e,m]=(0,q.useState)(null),u=(0,q.useCallback)(o=>{let r=typeof o.content=="string"?o.content:o.content.outerHTML,g={infoWindow:(0,F.createInfoWindow)({content:r,position:o.position,maxWidth:o.maxWidth,pixelOffset:o.pixelOffset,disableAutoPan:!1}),id:`infowindow-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,isOpen:!1,content:o.content,position:o.position};return l(i=>[...i,g]),g},[]),f=(0,q.useCallback)((o,r,t)=>{if(!t)throw new Error("Map instance is required to open InfoWindow");if(e&&(0,F.closeInfoWindow)(e.infoWindow),r)(0,F.openInfoWindow)(o.infoWindow,r,t.map);else if(o.position)o.infoWindow.setPosition(o.position),o.infoWindow.open(t.map);else throw new Error("Either marker or position must be provided");l(g=>g.map(i=>i.id===o.id?{...i,isOpen:!0}:{...i,isOpen:!1})),m({...o,isOpen:!0})},[e]),d=(0,q.useCallback)(o=>{(0,F.closeInfoWindow)(o.infoWindow),l(r=>r.map(t=>t.id===o.id?{...t,isOpen:!1}:t)),e?.id===o.id&&m(null)},[e]),c=(0,q.useCallback)(()=>{a.forEach(o=>{(0,F.closeInfoWindow)(o.infoWindow)}),l(o=>o.map(r=>({...r,isOpen:!1}))),m(null)},[a]),n=(0,q.useCallback)((o,r)=>{o.infoWindow.setContent(r),l(t=>t.map(g=>g.id===o.id?{...g,content:r}:g)),e?.id===o.id&&m({...o,content:r})},[e]),s=(0,q.useCallback)(o=>{o.isOpen&&(0,F.closeInfoWindow)(o.infoWindow),l(r=>r.filter(t=>t.id!==o.id)),e?.id===o.id&&m(null)},[e]);return(0,q.useEffect)(()=>()=>{a.forEach(o=>{o.isOpen&&(0,F.closeInfoWindow)(o.infoWindow)})},[a]),{infoWindows:a,activeInfoWindow:e,createInfoWindowInstance:u,openInfoWindowInstance:f,closeInfoWindowInstance:d,closeAllInfoWindows:c,updateInfoWindowContent:n,removeInfoWindow:s}}var _=require("react");function Se(){let[a,l]=(0,_.useState)({isDragging:!1,isZooming:!1,lastClickPosition:null,lastRightClickPosition:null,currentZoom:null,currentCenter:null,currentBounds:null}),[e,m]=(0,_.useState)([]),u=(0,_.useCallback)((c,n)=>{let s=c.map,o=[];if(n.onClick){let r=s.addListener("click",t=>{t.latLng&&l(g=>({...g,lastClickPosition:{lat:t.latLng.lat(),lng:t.latLng.lng()}})),n.onClick?.(t)});o.push(r)}if(n.onRightClick){let r=s.addListener("rightclick",t=>{t.latLng&&l(g=>({...g,lastRightClickPosition:{lat:t.latLng.lat(),lng:t.latLng.lng()}})),n.onRightClick?.(t)});o.push(r)}if(n.onDoubleClick){let r=s.addListener("dblclick",n.onDoubleClick);o.push(r)}if(n.onDrag){let r=s.addListener("drag",()=>{l(t=>({...t,isDragging:!0})),n.onDrag?.()});o.push(r)}if(n.onDragStart){let r=s.addListener("dragstart",()=>{l(t=>({...t,isDragging:!0})),n.onDragStart?.()});o.push(r)}if(n.onDragEnd){let r=s.addListener("dragend",()=>{l(t=>({...t,isDragging:!1})),n.onDragEnd?.()});o.push(r)}if(n.onZoomChanged){let r=s.addListener("zoom_changed",()=>{l(t=>({...t,currentZoom:s.getZoom()||null,isZooming:!0})),n.onZoomChanged?.()});o.push(r)}if(n.onCenterChanged){let r=s.addListener("center_changed",()=>{let t=s.getCenter();l(g=>({...g,currentCenter:t?{lat:t.lat(),lng:t.lng()}:null})),n.onCenterChanged?.()});o.push(r)}if(n.onBoundsChanged){let r=s.addListener("bounds_changed",()=>{l(t=>({...t,currentBounds:s.getBounds()||null})),n.onBoundsChanged?.()});o.push(r)}if(n.onIdle){let r=s.addListener("idle",()=>{l(t=>({...t,isDragging:!1,isZooming:!1})),n.onIdle?.()});o.push(r)}if(n.onTilesLoaded){let r=s.addListener("tilesloaded",n.onTilesLoaded);o.push(r)}if(n.onHeadingChanged){let r=s.addListener("heading_changed",n.onHeadingChanged);o.push(r)}if(n.onTiltChanged){let r=s.addListener("tilt_changed",n.onTiltChanged);o.push(r)}m(r=>[...r,...o])},[]),f=(0,_.useCallback)(c=>{e.forEach(n=>{google.maps.event.removeListener(n)}),m([])},[e]),d=(0,_.useCallback)(c=>{let n=c.map,s=n.getCenter(),o=n.getBounds(),r=n.getZoom();return{isDragging:!1,isZooming:!1,lastClickPosition:a.lastClickPosition,lastRightClickPosition:a.lastRightClickPosition,currentZoom:r||null,currentCenter:s?{lat:s.lat(),lng:s.lng()}:null,currentBounds:o||null}},[a.lastClickPosition,a.lastRightClickPosition]);return(0,_.useEffect)(()=>()=>{e.forEach(c=>{google.maps.event.removeListener(c)})},[e]),{eventState:a,addEventListeners:u,removeEventListeners:f,getCurrentMapState:d}}var Q=require("react");function Ce(){let[a,l]=(0,Q.useState)(!1),[e,m]=(0,Q.useState)(null),[u,f]=(0,Q.useState)(null),d=(0,Q.useCallback)(async s=>{l(!0),m(null);try{return await s()}catch(o){let r=o instanceof Error?o:new Error("Max Zoom operation failed");throw m(r),r}finally{l(!1)}},[]),c=(0,Q.useCallback)(async s=>d(async()=>{let o=new google.maps.MaxZoomService,t={maxZoom:(await new Promise((g,i)=>{o.getMaxZoomAtLatLng(s.location,p=>{p&&p.status===google.maps.MaxZoomStatus.OK?g(p):i(new Error(`Max Zoom request failed: ${p?.status||"Unknown error"}`))})})).zoom,location:{lat:s.location.lat,lng:s.location.lng}};return f(t),t}),[d]),n=(0,Q.useCallback)(()=>new google.maps.MaxZoomService,[]);return{isLoading:a,error:e,result:u,getMaxZoom:c,createMaxZoomService:n}}var G=require("react");function Ie(){let[a]=(0,G.useState)(!1),[l]=(0,G.useState)(null),[e,m]=(0,G.useState)(null),[u,f]=(0,G.useState)(!1),d=(0,G.useCallback)(t=>{try{let g=new google.maps.TrafficLayer;return t?.map&&(g.setMap(t.map),f(!0)),m(g),g}catch(g){throw g instanceof Error?g:new Error("Traffic layer creation failed")}},[]),c=(0,G.useCallback)(()=>{e&&(e.setMap(e.getMap()),f(!0))},[e]),n=(0,G.useCallback)(()=>{e&&(e.setMap(null),f(!1))},[e]),s=(0,G.useCallback)(()=>{u?n():c()},[u,c,n]),o=(0,G.useCallback)(()=>{if(e){let t=e.getMap();t&&(e.setMap(null),setTimeout(()=>{e.setMap(t)},100))}},[e]),r=(0,G.useCallback)(()=>{e&&(e.setMap(null),m(null),f(!1))},[e]);return(0,G.useEffect)(()=>()=>{e&&e.setMap(null)},[e]),{isLoading:a,error:l,trafficLayer:e,isVisible:u,createTrafficLayer:d,showTraffic:c,hideTraffic:n,toggleTraffic:s,refreshTraffic:o,removeTrafficLayer:r}}var U=require("react");function Te(){let[a]=(0,U.useState)(!1),[l]=(0,U.useState)(null),[e,m]=(0,U.useState)(null),[u,f]=(0,U.useState)(!1),d=(0,U.useCallback)(t=>{try{let g=new google.maps.TransitLayer;return t?.map&&(g.setMap(t.map),f(!0)),m(g),g}catch(g){throw g instanceof Error?g:new Error("Transit layer creation failed")}},[]),c=(0,U.useCallback)(()=>{e&&(e.setMap(e.getMap()),f(!0))},[e]),n=(0,U.useCallback)(()=>{e&&(e.setMap(null),f(!1))},[e]),s=(0,U.useCallback)(()=>{u?n():c()},[u,c,n]),o=(0,U.useCallback)(()=>{if(e){let t=e.getMap();t&&(e.setMap(null),setTimeout(()=>{e.setMap(t)},100))}},[e]),r=(0,U.useCallback)(()=>{e&&(e.setMap(null),m(null),f(!1))},[e]);return(0,U.useEffect)(()=>()=>{e&&e.setMap(null)},[e]),{isLoading:a,error:l,transitLayer:e,isVisible:u,createTransitLayer:d,showTransit:c,hideTransit:n,toggleTransit:s,refreshTransit:o,removeTransitLayer:r}}var ne=require("react");var De=require("react/jsx-runtime"),Oe=({id:a,className:l,style:e,children:m,onMapReady:u,...f})=>{let d=(0,ne.useRef)(null);return oe(a,{...f,onMapReady:u}),(0,ne.useEffect)(()=>{d.current&&!d.current.id&&(d.current.id=a)},[a]),(0,De.jsx)("div",{ref:d,id:a,className:l,style:e,children:m})};var se=require("react");var Ge=({mapInstance:a,onMarkerCreated:l,...e})=>{let{addMarker:m,removeMarker:u}=re(a),f=(0,se.useRef)(null);return(0,se.useEffect)(()=>{if(!a)return;f.current&&u(f.current);let d=m(e);return f.current=d,l?.(d),()=>{f.current&&(u(f.current),f.current=null)}},[a,e.position.lat,e.position.lng,e.title,e.content,e.draggable,e.clickable,e.zIndex,e.onClick,e.onDrag,e.onDragEnd,m,u,l]),null};var Y=require("react"),j=require("@gmaps-kit/core"),Ue=({mapInstance:a,marker:l,content:e,position:m,isOpen:u=!1,onClose:f})=>{let d=(0,Y.useRef)(null);return(0,Y.useEffect)(()=>{if(a){if(!d.current){let c=(0,j.createInfoWindow)({content:typeof e=="string"?e:""});d.current=c,c.addListener("closeclick",()=>{f?.()})}d.current&&d.current.setContent(typeof e=="string"?e:"")}},[e,f]),(0,Y.useEffect)(()=>{if(!(!a||!d.current))if(u){if(l)(0,j.openInfoWindow)(d.current,l,a.map);else if(m){let c=new google.maps.marker.AdvancedMarkerElement({position:m,map:a.map});(0,j.openInfoWindow)(d.current,c,a.map),setTimeout(()=>{c.map=null},100)}}else(0,j.closeInfoWindow)(d.current)},[a,l,m,u]),(0,Y.useEffect)(()=>()=>{d.current&&(0,j.closeInfoWindow)(d.current)},[]),null};R(v,require("@gmaps-kit/core"),module.exports);0&&(module.exports={InfoWindow,Map,Marker,isMarkerClustererLoaded,useBicycling,useClustering,useDirections,useDistanceMatrix,useElevation,useGeocoding,useGeocodingService,useGeometry,useGoogleMaps,useHeatmap,useInfoWindows,useMap,useMapEvents,useMarkers,useMaxZoom,usePlaces,usePlacesNew,useStreetView,useTraffic,useTransit,...require("@gmaps-kit/core")});
//# sourceMappingURL=index.js.map