1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="aac95ea1-5e12-4936-ae13-c49d7c553279",e._sentryDebugIdIdentifier="sentry-dbid-aac95ea1-5e12-4936-ae13-c49d7c553279")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3493],{53310:function(e,t,r){r.d(t,{Z:function(){return app_rating_schema_jsonld_AppRatingSchemaJsonLd}});var n=r(97458);r(52983);var app_rating_schema_jsonld_AppRatingSchemaJsonLd=e=>{let{appRating:t}=e;return(0,n.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify({"@context":"https://schema.org","@type":"Organization",name:"SpotHero",url:"https://spothero.com",logo:"http://spothero.com/static/main/img/common/spothero-logo-share.jpg",contactPoint:{"@type":"ContactPoint",telephone:"844-324-7768",contactType:"customer service"},sameAs:["https://www.facebook.com/SpotHero/","https://twitter.com/SpotHero","https://www.instagram.com/spothero/"],owns:{"@type":"SoftwareApplication",name:"SpotHero",operatingSystem:["ANDROID","iOS"],applicationCategory:"Maps & Navigation",aggregateRating:{"@type":"AggregateRating",ratingValue:t.rating,ratingCount:t.ratingCount},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}})}})}},53973:function(e,t,r){r.d(t,{Z:function(){return n.Z}});var n=r(76833)},91993:function(e,t,r){var n=r(97458);r(52983);var a=r(89384),o=r(89659);t.Z=e=>{let{boxClassName:t="",...r}=e;return(0,n.jsx)(o.xu,{className:"".concat(t," PoweredByGoogle"),children:(0,n.jsx)(a.Z,{className:"PoweredByGoogleImage",src:"front-end/powered-by-google",width:144,height:18,lazyLoad:!0,alt:"Powered by Google",...r})})}},63701:function(e,t,r){r.d(t,{o:function(){return combineDateTime}});var n=r(82378);let combineDateTime=function(e,t){let r,a,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if("string"==typeof t)[r,a]=t.split(":").map(Number);else{let e=o?(0,n.Z)(t).tz(o):(0,n.Z)(t);r=e.get("hour"),a=e.get("minute")}return o?(0,n.Z)(e).tz(o).set("hour",r).set("minute",a).set("second",0):(0,n.Z)(e).set("hour",r).set("minute",a).set("second",0)}},80422:function(e,t,r){r.d(t,{Z:function(){return trackDateEntered}});var n=r(91581),a=r(91699),o=r(43678),i=r(89618),s=r(63701);let getDateType=e=>{if("power_booking"===e)return"PowerBooking";if("monthly"===e)return"Monthly";if("hourly"===e)return"HourlyDaily";throw Error("Invalid parkingSubType: ".concat(e))},getPowerBookingProperties=e=>{let t=(0,i.PU)(),r=e.powerBookingDates[0],n=e.powerBookingDates[e.powerBookingDates.length-1];return{search_start_time_utc:(0,s.o)((0,o.ZP)(r),e.powerBookingStartTime).toISOString(),search_end_time_utc:(0,s.o)((0,o.ZP)(n),e.powerBookingEndTime).toISOString(),search_length:(0,i.O)({starts:r,ends:n}),search_lead_time:(0,i.O)({starts:(0,o.ZP)().tz(t),ends:(0,o.ZP)(r).tz(t,!0),unit:"minute"}),days_selected:e.powerBookingDates.map(t=>({search_start_time_utc:(0,s.o)(t,e.powerBookingStartTime).toISOString(),search_end_time_utc:(0,s.o)(t,e.powerBookingEndTime).toISOString()})),date_type:getDateType(e.parkingSubType),default_timezone:t,default_search_length:null,default_search_end_time_utc:null,default_search_start_time_utc:null,search_start_time_diff_from_default:null,search_end_time_diff_from_default:null}},getDateRangeProperties=e=>{let t=(0,i.PU)();return{search_start_time_utc:(0,o.ZP)(e.dateRangeStartDate).toISOString(),search_end_time_utc:(0,o.ZP)(e.dateRangeEndDate).toISOString(),search_length:(0,i.O)({starts:e.dateRangeStartDate,ends:e.dateRangeEndDate}),search_lead_time:(0,i.O)({starts:(0,o.ZP)().tz(t),ends:(0,o.ZP)(e.dateRangeStartDate).tz(t,!0),unit:"minute"}),days_selected:[],date_type:getDateType(e.parkingSubType),default_timezone:t,default_search_length:(0,i.O)({starts:e.originalDateRangeStartDate,ends:e.originalDateRangeEndDate}),default_search_end_time_utc:(0,o.ZP)(e.originalDateRangeEndDate).toISOString(),default_search_start_time_utc:(0,o.ZP)(e.originalDateRangeStartDate).toISOString(),search_start_time_diff_from_default:(0,i.O)({starts:e.originalDateRangeStartDate,ends:e.dateRangeStartDate,unit:"minute"}),search_end_time_diff_from_default:(0,i.O)({starts:e.originalDateRangeEndDate,ends:e.dateRangeEndDate,unit:"minute"})}},getMonthlyProperties=e=>{let t=(0,i.PU)();return{search_start_time_utc:(0,o.ZP)(e.monthlyStartDate).toISOString(),search_end_time_utc:null,search_length:null,search_lead_time:(0,i.O)({starts:(0,o.ZP)().tz(t),ends:(0,o.ZP)(e.monthlyStartDate).tz(t,!0),unit:"minute"}),days_selected:[],date_type:getDateType(e.parkingSubType),default_timezone:t,default_search_length:null,default_search_end_time_utc:null,default_search_start_time_utc:(0,o.ZP)(e.originalMonthlyStartDate).toISOString(),search_start_time_diff_from_default:(0,i.O)({starts:e.originalMonthlyStartDate,ends:e.monthlyStartDate,unit:"minute"}),search_end_time_diff_from_default:null}};function trackDateEntered(e){try{let{parkingSubType:t}=e,r={};"power_booking"===t?r=getPowerBookingProperties(e):"monthly"===t?r=getMonthlyProperties(e):"hourly"===t&&(r=getDateRangeProperties(e)),n.Z.track({event:"Date Entered",properties:r,additionalOptions:{context:{protocols:{event_version:1}}}})}catch(e){a.Z.sendSentryMessage({error:e,customErrorMessage:"Segment Event Failed - trackDateEntered"})}}},65960:function(e,t,r){r.d(t,{Z:function(){return trackErrorMessageDisplayed}});var n=r(91581),a=r(91699);function trackErrorMessageDisplayed(e){let{message:t,action:r=null,screen:o=null,errorMessage:i=null,errorHeader:s=null,currentScreenName:l=null,city:d=null,pageType:c=null,parkingType:g=null,query:u=null,searchId:p=null}=e,toObjectWhenTruthy=(e,t)=>t?{[e]:t}:{};try{n.Z.track({event:"Error Message Displayed",properties:{"error message":t,...toObjectWhenTruthy("error_message",i),...toObjectWhenTruthy("error action",r),...toObjectWhenTruthy("error screen",o),...toObjectWhenTruthy("error_header",s),...toObjectWhenTruthy("current_screen_name",l),...toObjectWhenTruthy("city",d),...toObjectWhenTruthy("page_type",c),...toObjectWhenTruthy("parking_type",g),...toObjectWhenTruthy("query",u),...toObjectWhenTruthy("search_id",p)}})}catch(e){a.Z.sendSentryMessage({error:e,customErrorMessage:"Segment Event Failed - trackErrorMessageDisplayed"})}}},60380:function(e,t,r){r.d(t,{Z:function(){return trackPowerBookingOpened},g:function(){return o}});var n=r(91581),a=r(91699);let o={monthly:"monthly_midfunnel",transient:"transient_midfunnel",monthly_homepage:"monthly_homepage",transient_homepage:"transient_homepage"};function trackPowerBookingOpened(e){let{source:t}=e;try{n.Z.track({event:"Power Booking Opened",properties:{source:t},additionalOptions:{context:{protocols:{event_version:1}}}})}catch(e){a.Z.sendSentryMessage({error:e,customErrorMessage:"Segment Event Failed - trackPowerBookingOpened"})}}},26352:function(e,t,r){r.d(t,{ZP:function(){return search_suggestion_selected}});
1var n=r(91581),a=r(91699),o=r(4462),i=r(21423),search_suggestion_selected=function(e){let{userRawText:t,description:r,placeId:s,parkingType:l,powerBooking:d,useCurrentLocation:c=!1,eventId:g=null,suggestionType:u=null,googlePlacesTypes:p=[],isRecentSearch:h=!1}=e,_={user_raw_text:t,description:r,place_id:s,parking_type:l,power_booking:d,...Array.isArray(p)&&p.length?{google_places_type:p.map(e=>({value:e}))}:{},use_current_location:c,...g&&{event_id:g},...u&&{suggestion_type:u},is_recent_search:h};!function(e){try{Array.isArray(e)&&e.length>0?o.default.set(i.BU.SEARCH_GOOGLE_PLACES_TYPE.STORAGE_KEY,e,i.f5.SESSION):o.default.remove(i.BU.SEARCH_GOOGLE_PLACES_TYPE.STORAGE_KEY,i.f5.SESSION)}catch(e){a.Z.sendSentryMessage({error:e,customErrorMessage:"Failed to persist Google Places types in session storage"})}}(p);try{n.Z.track({event:"Search Suggestion Selected",properties:_,additionalOptions:{context:{protocols:{event_version:6}}}})}catch(e){a.Z.sendSentryMessage({error:e,customErrorMessage:"Segment Event Failed - trackSearchSuggestionSelected"})}}},37258:function(e,t,r){r.d(t,{Z:function(){return find_parking_spots_button_FindParkingSpotsButton}});var n=r(97458),a=r(92593),o=r(41483),i=r(60380),s=r(43678),l=r(97237),d=r(42958),c=r(22866),g=r(65960),u=r(63701);let getAddressFromGeocodeData=e=>{let{address_components:t,formatted_address:r,geometry:n,place_id:a}=e,o={search_string:r,latitude:n?n.location.lat():null,longitude:n?n.location.lng():null,places_id:a,places_place_id:a};return t&&t.forEach(e=>{e.types.includes("street_number")?"street"in o?o.street="".concat(e.long_name," ").concat(o.street):o.street=e.long_name:e.types.includes("route")?"street"in o?o.street="".concat(o.street," ").concat(e.long_name):o.street=e.long_name:e.types.includes("locality")?o.city=e.long_name:e.types.includes("administrative_area_level_1")?o.state=e.short_name:e.types.includes("postal_code")&&(o.zipCode=e.long_name)}),o},getSearchParamsForUserEnteredAddress=async e=>{let{currentSearch:t,selectedSuggestion:r,googleMapsLibraries:n,firstSuggestion:a}=e,o=new n.geocoding.Geocoder;return new Promise((e,i)=>{o.geocode({address:t},(t,o)=>{let s=t;if(o!==n.geocoding.GeocoderStatus.OK&&(s=[]),s.length){let t=getAddressFromGeocodeData(s[0]);return(0,c.isGoogleAutocompleteSuggestion)(r)?e({search_string:r.description,latitude:t.latitude,longitude:t.longitude,google_places_id:r.place_id,google_places_place_id:r.place_id,google_places_reference:"reference"in r&&r.reference||r.place_id}):e({search_string:t.search_string,latitude:t.latitude,longitude:t.longitude,google_places_id:t.places_id,google_places_place_id:t.places_place_id,google_places_reference:t.places_reference})}if(a)return e(getSearchParamsForUserEnteredAddress({currentSearch:a,googleMapsLibraries:n}));i("Failed geocode")})})};var p=r(94254),h=r(56526),_=r(92783);let buildSearchUrl=async e=>{let t,{parkingType:r,parkingSubType:n,startDate:a,endDate:o,timezone:d,monthlyStartDate:g,dates:p,startTime:h,endTime:_,selectedSuggestion:m,defaultSuggestion:y,siteUrl:f,spotheroV1ApiUrl:S,googleMapsLibraries:k,isMidfunnel:b=!1,locationId:P,locationKind:w,operatorId:v,hideEventModal:D=!1}=e,x=P,O=w,j="hourly"===r?i.g.transient:i.g.monthly,E=null,Z=null,C=[],R=[];if("hourly"===n||"airport"===n?(E=(0,s.ZP)(a).tz(d),Z=(0,s.ZP)(o).tz(d)):"monthly"===n?E=(0,s.ZP)(g):"power_booking"===n&&(C=p.map(e=>{let t=(0,s.ZP)(e,"MM-DD-YYYY");return(0,u.o)(t,h).format("YYYY-MM-DDTHH:mm:ss")}),R=p.map(e=>{let t=(0,s.ZP)(e,"MM-DD-YYYY");return(0,u.o)(t,_).format("YYYY-MM-DDTHH:mm:ss")})),m){if(m.isParkingNearMe){var T,I;t=await getSearchParamsForUserEnteredAddress({currentSearch:"".concat(null===(T=m.location)||void 0===T?void 0:T.latitude,",").concat(null===(I=m.location)||void 0===I?void 0:I.longitude),googleMapsLibraries:k})}else(0,c.isAirportSuggestion)(m)?(t={},x=m.iataCode,O="airport"):t=y&&m.description===y.description&&P&&"destination"===w?{}:await getSearchParamsForUserEnteredAddress({currentSearch:m.description,selectedSuggestion:m,googleMapsLibraries:k})}return await (0,l.Tt)({location:t,isMonthly:"monthly"===n,starts:E,ends:Z,locationId:x,locationKind:O,siteUrl:f,spotheroV1ApiUrl:S,isPowerBooking:"power_booking"===n,powerBookingStarts:C,powerBookingEnds:R,powerBookingSource:j,isMidfunnel:b,operatorId:v,hideEventModal:D})};var find_parking_spots_button_FindParkingSpotsButton=e=>{let{label:t="Find Parking Spots",partialStore:r,onClick:i}=e,{parkingType:s,parkingSubType:l,timezone:u,dates:m,startTime:y,endTime:f,errorType:S,startDate:k,endDate:b,monthlyStartDate:P,locationId:w,locationKind:v,searchButtonRef:D,events:x,defaultSuggestion:O,selectedSuggestion:j,setIsInputInvalid:E}=r,{isLoaderShowing:Z,setIsLoaderShowing:C}=(0,c.useShowLoader)(),{googleMapsLibraries:R}=(0,p.e)(),{siteUrl:T,spotheroV1ApiUrl:I}=(0,d.Z)(),M=(0,h.fx)({}),A=(0,h.Kj)(),handleFindParkingSpots=async()=>{C(!0);let e=!!(w&&v);if(null===j&&!e){(0,g.Z)({message:"Empty Search Input",errorMessage:"Empty Search Input",errorHeader:"Empty Search Input"}),E(!0),C(!1);return}if("power_booking"===l&&S){var t;null===(t=D.current)||void 0===t||t.setAttribute("data-has-error","true"),C(!1);return}i&&i();try{let e=new URL(window.location.href),t=await buildSearchUrl({parkingType:s,parkingSubType:l,startDate:k,endDate:b,timezone:u,monthlyStartDate:P,dates:m,startTime:y,endTime:f,selectedSuggestion:j,defaultSuggestion:O,siteUrl:T,spotheroV1ApiUrl:I,googleMapsLibraries:R,locationId:w,locationKind:v,isMidfunnel:!!(null==x?void 0:x.length),hideEventModal:"true"===e.searchParams.get("hide_event_modal"),...A?{operatorId:h.xA}:{}});if(t){let r=new URL(t);
1e.searchParams.forEach((e,t)=>{r.searchParams.has(t)||r.searchParams.append(t,e)}),window.location.assign(r.href)}}catch(e){C(!1),_.Tb(e,{tags:{component:"FindParkingSpotsButton",action:"buildSearchUrl"}})}};return(0,n.jsx)(a.zx,{className:"find-parking-spots-button",variant:"primary",onClick:handleFindParkingSpots,ref:D,"data-testid":"FindParkingSpotsButton-button",iconSpacing:3,leftIcon:Z&&(0,n.jsx)(o.k,{alignItems:"center",justifyContent:"center",width:3.5,height:3.5,children:(0,n.jsx)(a.aN,{size:5,thickness:10,color:"primary.default","data-testid":"FindParkingSpotsButton-loader"})}),...M,children:t})}},76447:function(e,t,r){r.d(t,{Z:function(){return hero_Hero}});var n=r(97458);r(52983);var a=r(18158),o=r.n(a),i=r(92593),s=r(4233),l=r(89659),d=r(89384),hero_HeroImage=e=>{let{isPrismicImage:t,imageSrc:r="v1723744392/homepage/woman-driving-car.jpg",imageAlt:a="A person walking around a parking lot pleased that she had a great parking experience with SpotHero",cloudinaryImageProps:o=null}=e;return(0,n.jsx)(l.xu,{borderRadius:"3xl",overflow:"hidden",width:"100%",aspectRatio:"16/9",position:"relative",display:{base:"none",desktop:"block"},"data-testid":"hero-image",children:o?(0,n.jsx)(d.Z,{src:o.cloudinaryImageId,alt:o.alt,layout:"fill",objectFit:"cover",priority:!0}):(0,n.jsx)(d.Z,{src:r,loader:t?e=>{let{src:t}=e;return"".concat(t,"&dpr=2")}:void 0,alt:a,layout:"fill",objectFit:"cover",priority:!0})})},c=r(53973),g=r(77177),u=r(19201),p=r(22866),search_component_skeleton_SearchComponentSkeleton=()=>{let{parkingType:e}=(0,p.useFindParkingSpotsButtonPartialStore)();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(l.xu,{display:{base:"flex",tablet:"none"},flexDirection:"column",gap:4,backgroundColor:"white",rounded:"lg","data-testid":"search-component-skeleton-mobile",children:[(0,n.jsx)(u.O,{height:"40px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200",display:"airport"===e?"none":"block"}),(0,n.jsx)(u.O,{height:"56px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200",display:"airport"===e?"none":"block"}),(0,n.jsx)(u.O,{height:"56px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200"}),(0,n.jsx)(u.O,{height:"56px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200"}),(0,n.jsx)(u.O,{height:"40px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200"})]}),(0,n.jsxs)(l.xu,{display:{base:"none",tablet:"flex"},flexDirection:"column",gap:4,backgroundColor:"white",rounded:"lg","data-testid":"search-component-skeleton-desktop",children:[(0,n.jsx)(u.O,{height:"40px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200",display:"airport"===e?"none":"block"}),(0,n.jsx)(u.O,{height:"56px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200",display:"airport"===e?"none":"block"}),(0,n.jsx)(u.O,{height:"56px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200"}),(0,n.jsx)(u.O,{height:"40px",borderRadius:"md",startColor:"gray.100",endColor:"gray.200"})]})]})};let h=o()(()=>Promise.resolve().then(r.bind(r,22866)).then(e=>e.SearchComponent),{loadableGenerated:{webpack:()=>[null]},loading:()=>(0,n.jsx)(search_component_skeleton_SearchComponentSkeleton,{}),ssr:!1});var hero_Hero=e=>{let{title:t="Parking made easy, wherever you go",address:r="",breadcrumbs:a,heroImage:o,customValueProps:l=null}=e,d=Array.isArray(a)&&!!a.length;return(0,n.jsxs)(i.W2,{"data-testid":"HomeHero",paddingX:4,marginX:"auto",marginTop:{base:20,tablet:24},children:[d&&(0,n.jsx)(c.Z,{items:a}),(0,n.jsx)(i.X6,{as:"h1",fontWeight:"semibold",paddingY:4,paddingTop:d?4:0,paddingBottom:{base:4,mobileXL:8},lineHeight:"short",display:{base:"block",desktop:"block"},children:t}),(0,n.jsxs)(i.rj,{templateColumns:"repeat(12, 1fr)",gridGap:0,children:[(0,n.jsxs)(i.P4,{colSpan:{base:12,desktop:5},children:[r&&(0,n.jsxs)(i.xv,{fontSize:"sm",paddingTop:0,paddingBottom:6,children:[(0,n.jsx)(s.J,{as:g.YeX,marginRight:"2"}),r]}),!!l&&l,(0,n.jsx)(h,{})]}),(0,n.jsx)(i.P4,{colStart:7,colSpan:7,children:(0,n.jsx)(hero_HeroImage,{imageSrc:null==o?void 0:o.url,imageAlt:null==o?void 0:o.alt,isPrismicImage:!!(null==o?void 0:o.url),cloudinaryImageProps:null==o?void 0:o.cloudinaryImageProps})})]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.