{"version":3,"file":"static/js/395.c85a5ef0.chunk.js","mappings":"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","sources":["components/atoms/TopCities/index.js","components/atoms/TopBusinesses/index.js","components/atoms/Cities/index.js","components/sections/PopularCities/index.js","routes/Landing/index.js"],"sourcesContent":["import React from 'react'\n\nimport { NavLink } from 'react-router-dom'\n\nimport { SiteContext } from 'context/site-context'\n\nimport './index.scss'\n\nconst TopCities = () => {\n  const [ site, setSite] = React.useContext(SiteContext)\n\n  const handleCityClick = (e, location) => {\n    localStorage.setItem('geoInfo', JSON.stringify({\n      location: location,\n      city: location.split(', ')[0],\n      region_code: location.split(', ')[1],\n    }))\n\n    setSite({\n      ...site,\n      location: location,\n    })\n  }\n\n  const getCities = () => site.popular_cities ? site.popular_cities.filter( city => city.isTop ) : []\n\n  return <div className=\"top-cities-container\">\n    <ul>\n      {getCities().map( city => {\n        return <li key={city.label}><NavLink to={`/${city.label.split(', ')[1].toLowerCase()}/${city.label.split(', ')[0].toLowerCase()}${!!new URLSearchParams(window.location.search).get('useSampleData') ? '&useSampleData=true' : ''}`} onClick={ e => handleCityClick(e, city.label)}>{city.label}</NavLink></li>\n      })}\n    </ul>\n  </div>\n}\n\nexport default TopCities\n","import React from 'react'\n\nimport { NavLink } from 'react-router-dom'\n\nimport { SiteContext } from 'context/site-context'\n\nimport {\n  getAddress,\n  getProfileUrl,\n  isWebpSupported,\n} from 'helpers'\n\nimport TopCities from 'components/atoms/TopCities'\n\nimport './index.scss'\n\nconst MAX_CATEGORIES_TO_SHOW = 3\nconst MAX_LISTINGS_TO_SHOW = 2\n\nconst TopBusinesses = ({ className = '' }) => {\n  const [ site, setSite ] = React.useContext(SiteContext)\n\n  return <React.Fragment>\n    {Object.entries(site.topBusinesses).length > 0 ? <div className={`top-businesses-container ${className}`}>\n      <div className=\"container\">\n        <h3>Top <span className=\"highlight\">Businesses</span> in {site.location}</h3>\n        <div className=\"categories-wrapper\">\n          {\n            Object.entries(site.topBusinesses)\n              .filter( key => key[0] !== site.upsellCategory ) // Filter out any that match the hero\n              .filter( (key, i) => i < MAX_CATEGORIES_TO_SHOW ) // Restrict the number of categories to render\n              .map( key => {\n              return <div className=\"panel\" key={key[0]}>\n              <h3 style={{\n                backgroundImage: `url(${isWebpSupported() && site.discover[key[0]].imageWebP ? site.discover[key[0]].imageWebP : site.discover[key[0]].image})`,\n                backgroundPosition: 'center center',\n                backgroundRepeat: 'no-repeat',\n                backgroundSize: 'cover'}}><span>{site.discover[key[0]].label}</span></h3>\n              <div className=\"listings-container\">\n                <ul>\n                  {key[1].results?.locations?.map( (listing, i) => {\n                    return i < MAX_LISTINGS_TO_SHOW ? <li key={listing.id}><a href={getProfileUrl(site, listing)}>\n                      <p>{listing.name}</p>\n                      {listing.address && <address>{getAddress(listing.address)}</address>}\n                    </a></li> : null}\n                  )}\n                </ul>\n                <div className=\"actions-container\">\n                  <NavLink to={`/results?term=${key[0]}&where=${site.location}${!!new URLSearchParams(window.location.search).get('useSampleData') ? '&useSampleData=true' : ''}`}  className=\"button-trigger mini\">More...</NavLink>\n                </div>\n              </div>\n            </div>\n          })\n        }\n        </div>\n      </div>\n    </div> : <div className=\"container\">\n      <h3>Popular <span className=\"highlight\">Cities</span></h3>\n      <TopCities />\n    </div>}\n  </React.Fragment>\n}\n\nexport default TopBusinesses\n","import React from 'react'\n\nimport {\n  NavLink,\n  useHistory,\n} from 'react-router-dom'\n\nimport {\n  findIndex,\n  sortBy,\n} from 'lodash'\n\nimport { SiteContext } from 'context/site-context'\n\nimport { isWebpSupported } from 'helpers'\n\nimport cn from 'classnames'\n\nimport './index.scss'\n\nconst Cities = () => {\n  const [ site, setSite] = React.useContext(SiteContext)\n\n  const history = useHistory()\n\n  const handleCityClick = (e, location) => {\n    localStorage.setItem('geoInfo', JSON.stringify({\n      location: location,\n      city: location.split(', ')[0],\n      region_code: location.split(', ')[1],\n    }))\n\n    setSite({\n      ...site,\n      location: location,\n    })\n  }\n\n  // Need to reduce to an array of states with and array of Cities\n  const getCities = () => {\n    const cities = site.popular_cities ? sortBy(site.popular_cities, ['state']).reduce( (ordered, city) => {\n      if(findIndex(ordered, { label: city.state }) === -1){\n        ordered.push({\n          label: city.state,\n          isState: true,\n        })\n      }\n      ordered.push({\n        label: city.label.split(',')[0],\n        key: city.label,\n        state: city.state,\n      })\n      return ordered\n    }, [] ) : []\n\n    return cities\n  }\n\n  return (\n    <div className=\"cities-container\">\n      <ul>\n        {getCities().length > 0 && getCities().map( city => {\n          return <li key={city.isState ? city.label : city.key} className={cn( {state: city.isState} )}>\n            {city.isState ? city.label : <NavLink to={`/${city.key.split(', ')[1].toLowerCase()}/${city.key.split(', ')[0].toLowerCase()}${!!new URLSearchParams(window.location.search).get('useSampleData') ? '&useSampleData=true' : ''}`} onClick={ e => handleCityClick(e, city.key)}>{city.label}</NavLink>}\n          </li>}\n        )}\n      </ul>\n    </div>\n  )\n}\n\nexport default Cities\n","import React from 'react'\n\nimport { NavLink } from 'react-router-dom'\n\nimport { SiteContext } from 'context/site-context'\n\nimport Cities from 'components/atoms/Cities'\n\nimport './index.scss'\n\nconst PopularCities = () => {\n  const [ site ] = React.useContext(SiteContext)\n\n  return (\n    <div className=\"popular-cities-container\">\n      <div className=\"container\">\n        <h2>Explore more <span className=\"highlight\">cities</span></h2>\n        <div className=\"categories-wrapper\">\n          <div className=\"panel\">\n            <Cities />\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default PopularCities\n","import React from 'react'\n\nimport cn from 'classnames'\n\nimport { SiteContext } from 'context/site-context'\n\nimport Categories from 'components/sections/Categories'\nimport Footer from 'components/sections/Footer'\nimport Header from 'components/sections/Header'\nimport Hero from 'components/sections/Hero'\nimport PopularCities from 'components/sections/PopularCities'\nimport TopBusinesses from 'components/atoms/TopBusinesses'\n\nimport './index.scss'\n\nconst Landing = () => {\n  const [ site ] = React.useContext(SiteContext)\n\n  return <div className={cn('page-wrapper', {isLoadingSiteData: site.isLoadingSiteData})}>\n    <Header showHeader={true} animate={false}  />\n    <div className=\"page-container\">\n      <div className=\"main-wrapper\">\n        <Hero />\n      </div>\n      <div className=\"rail-container\">\n        <TopBusinesses />\n      </div>\n    </div>\n    <PopularCities />\n    <Categories />\n    <Footer />\n  </div>\n}\n\nexport default Landing\n"],"names":["TopCities","site","setSite","React","SiteContext","_jsx","className","children","popular_cities","filter","city","isTop","map","NavLink","to","label","split","toLowerCase","URLSearchParams","window","location","search","get","onClick","e","handleCityClick","localStorage","setItem","JSON","stringify","region_code","_ref","Object","entries","topBusinesses","length","_jsxs","key","upsellCategory","i","_key$1$results","_key$1$results$locati","style","backgroundImage","isWebpSupported","discover","imageWebP","image","backgroundPosition","backgroundRepeat","backgroundSize","results","locations","listing","href","getProfileUrl","name","address","getAddress","id","Cities","getCities","useHistory","sortBy","reduce","ordered","findIndex","state","push","isState","cn","PopularCities","Landing","isLoadingSiteData","Header","showHeader","animate","Hero","TopBusinesses","Categories","Footer"],"sourceRoot":""}