{"version":3,"file":"js/5545-a7ddb4690d44f793df1e.js","mappings":"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","sources":["webpack://sniffspot/./frontend/src/assets/svg/SvgCalendarClock.svg?75ca","webpack://sniffspot/./frontend/src/assets/svg/SvgHostSafety.svg?869d","webpack://sniffspot/./frontend/src/assets/svg/SvgPaw.svg?0a27","webpack://sniffspot/./frontend/src/assets/svg/amenities/flower-garden.svg","webpack://sniffspot/./frontend/src/assets/svg/amenities/snow.svg","webpack://sniffspot/./frontend/src/components/carousel/carousel-ssr.jsx","webpack://sniffspot/./frontend/src/components/mobile-app-download/index.jsx","webpack://sniffspot/./frontend/src/components/render-app-download/index.jsx","webpack://sniffspot/./frontend/src/components/shared/head.jsx","webpack://sniffspot/./frontend/src/components/sniif-as-seen/index.jsx","webpack://sniffspot/./frontend/src/consts/listings.consts.js","webpack://sniffspot/./frontend/src/consts/states.js","webpack://sniffspot/./frontend/src/consts/city-test.js","webpack://sniffspot/./frontend/src/components/sniff-toggle/index.jsx","webpack://sniffspot/./frontend/src/pages/seo/city-content.jsx","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-fortune.png","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-gma.png","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-insider.png","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-money.png","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-nytimes.png","webpack://sniffspot/./frontend/src/assets/img/as-seen/p-today.png","webpack://sniffspot/./frontend/src/assets/img/sniffspot-app-desktop-ss.png","webpack://sniffspot/./frontend/src/assets/img/sniffspot-qr-code.png","webpack://sniffspot/./frontend/src/assets/img/weather/200.png","webpack://sniffspot/./frontend/src/assets/img/weather/300.png","webpack://sniffspot/./frontend/src/assets/img/weather/500.png","webpack://sniffspot/./frontend/src/assets/img/weather/600.png","webpack://sniffspot/./frontend/src/assets/img/weather/700.png","webpack://sniffspot/./frontend/src/assets/img/weather/800.png","webpack://sniffspot/./frontend/src/assets/img/weather/802.png"],"sourcesContent":["var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSvgCalendarClock = function SvgSvgCalendarClock(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M2.25 18A2.252 2.252 0 0 1 0 15.75v-12A2.252 2.252 0 0 1 2.25 1.5H4.5V.75a.75.75 0 0 1 1.5 0v.75h6V.75a.75.75 0 0 1 1.5 0v.75h2.25A2.252 2.252 0 0 1 18 3.75v4.5a.75.75 0 0 1-1.5 0V7.5h-15v8.25c0 .414.336.75.75.75h6a.75.75 0 0 1 0 1.5h-6ZM16.5 6V3.75a.75.75 0 0 0-.75-.75H13.5v.75a.75.75 0 0 1-1.5 0V3H6v.75a.75.75 0 0 1-1.5 0V3H2.25a.75.75 0 0 0-.75.75V6h15Z\",\n    fill: \"currentColor\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M17.25 24a6.758 6.758 0 0 1-6.75-6.75 6.758 6.758 0 0 1 6.75-6.75A6.758 6.758 0 0 1 24 17.25 6.758 6.758 0 0 1 17.25 24Zm0-12A5.256 5.256 0 0 0 12 17.25a5.256 5.256 0 0 0 5.25 5.25 5.256 5.256 0 0 0 5.25-5.25A5.256 5.256 0 0 0 17.25 12Z\",\n    fill: \"currentColor\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M17.25 18a.75.75 0 0 1-.75-.75v-2.651a.75.75 0 0 1 1.5 0V16.5h1.902a.75.75 0 0 1 0 1.5H17.25Z\",\n    fill: \"currentColor\"\n  })));\n};\nexport default SvgSvgCalendarClock;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSvgHostSafety = function SvgSvgHostSafety(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10.075 15.749a1.807 1.807 0 0 1-1.498-.797l-2.441-3.467a.748.748 0 0 1 .612-1.182c.244 0 .474.119.614.318l2.45 3.481a.314.314 0 0 0 .261.146.293.293 0 0 0 .235-.117l7.852-9.938a.745.745 0 0 1 1.053-.123.748.748 0 0 1 .124 1.053l-7.843 9.927a1.784 1.784 0 0 1-1.419.699ZM12 23.998c-.433 0-.854-.125-1.217-.361C9.757 22.973.75 16.979.75 11.249v-9A2.252 2.252 0 0 1 3-.001h18a2.252 2.252 0 0 1 2.25 2.25v9c0 5.731-9.009 11.725-10.036 12.39-.36.235-.78.359-1.214.359ZM3 1.499a.75.75 0 0 0-.75.75v9c0 1.728 1.152 3.862 3.332 6.171 1.617 1.713 3.866 3.567 6.018 4.959a.724.724 0 0 0 .797.002c2.153-1.393 4.403-3.247 6.02-4.96 2.18-2.31 3.333-4.444 3.333-6.172v-9a.75.75 0 0 0-.75-.75H3Z\",\n    fill: \"currentColor\"\n  })));\n};\nexport default SvgSvgHostSafety;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSvgPaw = function SvgSvgPaw(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M15.251 21.75a5.006 5.006 0 0 1-2.238-.589 3.277 3.277 0 0 0-3.018.005 4.948 4.948 0 0 1-2.219.584A3.76 3.76 0 0 1 4.009 18a3.741 3.741 0 0 1 3.052-3.685c.335-2.162 2.233-3.815 4.449-3.815 2.216 0 4.114 1.653 4.448 3.815A3.741 3.741 0 0 1 19.01 18a3.754 3.754 0 0 1-3.75 3.75h-.009Zm-3.74-2.454c.765 0 1.527.186 2.204.538.483.26 1.022.403 1.562.416A2.246 2.246 0 0 0 17.509 18a2.252 2.252 0 0 0-2.25-2.25.75.75 0 0 1-.75-.75c0-1.654-1.346-3-3-3s-3 1.346-3 3a.75.75 0 0 1-.75.75A2.252 2.252 0 0 0 5.509 18a2.252 2.252 0 0 0 2.25 2.25 3.434 3.434 0 0 0 1.535-.41 4.811 4.811 0 0 1 2.217-.544ZM3.26 14.25c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3Zm0-4.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5ZM7.76 8.25c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3Zm0-4.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5ZM15.26 8.25c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3Zm0-4.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5ZM20.51 14.25c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3Zm0-4.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5Z\",\n    fill: \"currentColor\"\n  })));\n};\nexport default SvgSvgPaw;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgFlowerGarden = function SvgFlowerGarden(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M14.184 24.097c-.682 0-1.262-.104-1.729-.308a.745.745 0 0 1-.774-.003c-.41.179-.907.281-1.481.301a6.036 6.036 0 0 1-.235.004c-1.068 0-2.338-.26-3.575-.732-1.336-.51-2.518-1.218-3.326-1.995-.969-.93-1.329-1.898-1.013-2.725.315-.827 1.228-1.309 2.571-1.357.078-.003.158-.004.238-.004 1.066 0 2.335.26 3.572.732 1.112.424 2.116.986 2.888 1.61v-2.955a3.74 3.74 0 0 1-1.945.54c-.703 0-1.392-.2-1.992-.578a3.726 3.726 0 0 1-1.659-2.343 3.73 3.73 0 0 1 .052-1.872 3.733 3.733 0 0 1-2.712-3.605c0-1.677 1.146-3.157 2.73-3.608A3.754 3.754 0 0 1 7.597.932a3.751 3.751 0 0 1 1.81-.468c1 0 1.969.408 2.667 1.107A3.776 3.776 0 0 1 14.699.507c.652 0 1.299.174 1.869.503a3.728 3.728 0 0 1 1.749 2.277c.17.633.173 1.285.012 1.907a3.783 3.783 0 0 1 2.742 3.612 3.728 3.728 0 0 1-1.103 2.656 3.717 3.717 0 0 1-1.616.951 3.765 3.765 0 0 1-1.919 4.38 3.708 3.708 0 0 1-1.683.402 3.769 3.769 0 0 1-1.928-.532v2.955c.772-.625 1.777-1.187 2.89-1.611 1.264-.482 2.497-.737 3.565-.737 1.479 0 2.479.485 2.815 1.367.591 1.55-1.234 3.535-4.339 4.72-1.268.485-2.501.74-3.569.74Zm-1.319-1.79c.187.154.628.288 1.303.288.886 0 1.968-.226 3.046-.637 2.456-.937 3.644-2.335 3.473-2.784-.062-.161-.484-.402-1.394-.402-.888 0-1.972.227-3.051.638-1.153.44-2.155 1.035-2.822 1.676-.26.25-.458.504-.568.727.028.166.032.331.013.494Zm-8.008-3.528a5.6 5.6 0 0 0-.184.003c-.798.029-1.169.251-1.223.394-.054.142.074.554.651 1.108.667.641 1.669 1.236 2.822 1.676 1.07.408 2.151.633 3.044.633.06 0 .119-.001.177-.003.574-.021.956-.147 1.127-.285a1.79 1.79 0 0 1 .013-.49c-.109-.223-.307-.477-.568-.727-.667-.641-1.669-1.235-2.822-1.675-1.069-.41-2.148-.634-3.037-.634Zm2.613-6.513a2.235 2.235 0 0 0-.284 1.687c.133.586.487 1.085.995 1.405a2.242 2.242 0 0 0 1.697.29 2.24 2.24 0 0 0 1.515-1.189.675.675 0 0 1 .051-.08.715.715 0 0 1 .404-.303.758.758 0 0 1 .22-.035c.303 0 .577.186.692.465a2.257 2.257 0 0 0 1.985 1.191 2.253 2.253 0 0 0 1.915-3.429.75.75 0 0 1-.068-.828.77.77 0 0 1 .756-.382 2.239 2.239 0 0 0 1.559-.656c.426-.424.661-.989.662-1.59v-.004c0-1.225-.99-2.229-2.211-2.25a.927.927 0 0 1-.071.006l-.038.001a.738.738 0 0 1-.643-.374.746.746 0 0 1 .015-.777l.038-.055a2.25 2.25 0 0 0-.841-3.049 2.248 2.248 0 0 0-3.06.796.742.742 0 0 1-.692.463.757.757 0 0 1-.7-.472 2.268 2.268 0 0 0-1.961-1.134 2.246 2.246 0 0 0-2.156 1.63 2.238 2.238 0 0 0 .223 1.763.75.75 0 0 1 .065.821.765.765 0 0 1-.763.383 2.257 2.257 0 0 0-2.211 2.25c0 1.23.992 2.233 2.218 2.25a.75.75 0 0 1 .689 1.206Z\",\n    fill: \"currentColor\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12.068 11.806c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3Zm0-4.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5Z\",\n    fill: \"currentColor\"\n  })));\n};\nexport default SvgFlowerGarden;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSnow = function SvgSnow(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 24a.75.75 0 0 1-.75-.75v-2.939l-2.531 2.025a.75.75 0 1 1-.938-1.171l3.469-2.775v-2.207l-2.498-1.442-1.911 1.103-.669 4.392a.745.745 0 0 1-.855.628.745.745 0 0 1-.491-.297.743.743 0 0 1-.137-.557l.488-3.206-2.546 1.47A.748.748 0 0 1 1.606 18a.745.745 0 0 1 .274-1.024l2.546-1.47-3.02-1.18a.747.747 0 0 1-.425-.972.746.746 0 0 1 .97-.426l4.139 1.617 1.911-1.103v-2.884l-1.91-1.103-4.137 1.617a.748.748 0 0 1-.961-.999.745.745 0 0 1 .414-.398l3.02-1.18-2.546-1.47A.746.746 0 0 1 1.607 6a.754.754 0 0 1 1.025-.274l2.546 1.47-.489-3.206a.748.748 0 0 1 .742-.863c.367 0 .686.274.741.637l.669 4.392 1.911 1.103 2.498-1.442V5.61L7.781 2.836a.747.747 0 0 1-.117-1.054.747.747 0 0 1 1.054-.118l2.531 2.025V.75a.75.75 0 0 1 1.501 0v2.939l2.531-2.025a.753.753 0 0 1 1.054.117.75.75 0 0 1-.117 1.054L12.75 5.61v2.206l2.498 1.442 1.911-1.103.669-4.392a.754.754 0 0 1 .855-.628c.197.03.372.135.491.297a.743.743 0 0 1 .137.557l-.488 3.205 2.546-1.47a.748.748 0 0 1 1.099.843.749.749 0 0 1-.349.456l-2.546 1.47 3.02 1.18a.75.75 0 0 1-.273 1.448.728.728 0 0 1-.273-.052L17.91 9.452l-1.911 1.103v2.884l1.911 1.103 4.137-1.617a.746.746 0 0 1 .972.426.75.75 0 0 1-.426.971l-3.02 1.18 2.546 1.47a.75.75 0 0 1-.751 1.298l-2.545-1.47.488 3.206a.746.746 0 0 1-.741.863.755.755 0 0 1-.741-.637l-.669-4.391-1.911-1.103-2.498 1.442v2.207l3.469 2.775a.75.75 0 0 1-.937 1.171l-2.531-2.025v2.939A.755.755 0 0 1 12 24Zm0-9.116 2.498-1.442v-2.884L12 9.116l-2.498 1.442v2.884L12 14.884Z\",\n    fill: \"currentColor\"\n  })));\n};\nexport default SvgSnow;","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport moment from 'moment-timezone';\nimport { IMG_RESIZES } from '../../consts/resizer.consts';\nimport { ImageHelper } from '../../classes/image-helper.class';\nimport { Splide, SplideSlide } from '@splidejs/react-splide';\nimport { SPOT_MIN_REQ_PHOTOS } from '../../consts/spot.consts';\nimport RequestMorePhotos from '../request-more-photos';\nimport PictureSet from '../picture-set';\nimport SvgChevronRight from 'src/assets/svg/SvgChevronRight.svg';\nimport SvgCross2 from 'src/assets/svg/SvgCross2.svg';\nimport '@splidejs/splide/dist/css/splide.min.css';\nimport './carousel-ssr.scss';\n\nconst ArrowBtn = ({ activeIndex, length, showArrow, next, prev }) => {\n    if (!showArrow || length == 1) {\n        return '';\n    }\n\n    return (\n        <div className=\"mysplide__arrows\">\n            <button className=\"mysplide__arrow mysplide__arrow--prev\" style={{ visibility: activeIndex == 0 ? 'hidden' : 'visible' }} onClick={prev}>\n                <SvgChevronRight />\n            </button>\n            <button\n                className=\"mysplide__arrow mysplide__arrow--next\"\n                style={{ visibility: activeIndex == length - 1 ? 'hidden' : 'visible' }}\n                onClick={next}\n            >\n                <SvgChevronRight />\n            </button>\n        </div>\n    );\n};\n\nconst ReqPhotos = ({ id }) => (\n    <SplideSlide>\n        <div className=\"car-ssr-req-container\">\n            <RequestMorePhotos id={id} />\n        </div>\n    </SplideSlide>\n);\n\nconst Slides = ({ item, images, useState, lazy, onClick, rawImg, removePhoto, isShowReq, imageAlt }) => {\n    const altImg = item.title ? `${item.title} - ${item.city}, ${item.state}` : imageAlt || 'Spot thumbnail';\n\n    const photoSlides = images.map((img, index) => {\n        const methodDef = index == 0 ? lazy : 'lazy';\n        const priorityDef = index == 0 ? 'high' : 'auto';\n        const imgUrl = rawImg ? URL.createObjectURL(img.images) : ImageHelper.getUrlFromOptions(img, `full-fit-in/${IMG_RESIZES.x768}`);\n\n        return (\n            <SplideSlide key={img.id || index}>\n                <PictureSet\n                    imgs={imgUrl}\n                    data-splide-lazy={imgUrl}\n                    className=\"img carousel-spot-inner\"\n                    alt={altImg}\n                    method={methodDef}\n                    fetchpriority={priorityDef}\n                    onClick={onClick}\n                    useState={useState}\n                    width={468.76}\n                    height={300}\n                    SSR\n                />\n                {rawImg && (\n                    <div className=\"raw-img-delete-photo\" onClick={() => removePhoto(index)}>\n                        <SvgCross2 />\n                    </div>\n                )}\n            </SplideSlide>\n        );\n    });\n\n    return isShowReq ? [...photoSlides, <ReqPhotos key=\"req\" id={item.id} />] : photoSlides;\n};\n\nconst CarouselSSR = ({\n    item,\n    myPhotos,\n    lazy,\n    onClick = () => {},\n    showArrow = true,\n    server,\n    rawImg,\n    removePhoto,\n    spotGallery,\n    hostId,\n    singleViewPhoto,\n    disableSwipe,\n    imageAlt,\n    publicPark,\n}) => {\n    const [loaded, setLoaded] = useState(false);\n    const [activeIndex, setActiveIndex] = useState(0);\n    const [splideRefNode, setSplideRefNode] = useState(null);\n    const images = item.allPhotos || item.spotPhotos || item.photos || [item.thumbPhoto] || myPhotos;\n    const [maxLimit, setMaxLimit] = useState(singleViewPhoto ? singleViewPhoto : images.length > 1 ? 5 : images.length);\n    const length = spotGallery && images.length < SPOT_MIN_REQ_PHOTOS ? images.length + 1 : images.length;\n    const isShowReq = !publicPark && spotGallery && images.length < SPOT_MIN_REQ_PHOTOS;\n    const myImages = useMemo(() => images.slice(0, maxLimit), [maxLimit]);\n    const creatorName = `${item?.host?.nameAndInitial} | Sniffspot` || undefined;\n\n    const splideRef = spotGallery\n        ? useRef(null)\n        : useCallback((node) => {\n              if (singleViewPhoto >= 0) {\n                  node?.splide.go(singleViewPhoto);\n              }\n              setSplideRefNode(node);\n          }, []);\n\n    const next = (e) => {\n        e.preventDefault();\n        if (splideRef.current) {\n            splideRef.current.splide.go('+1');\n        } else {\n            splideRefNode.splide.go('+1');\n        }\n    };\n\n    const prev = (e) => {\n        e.preventDefault();\n        if (splideRef.current) {\n            splideRef.current.splide.go('-1');\n        } else {\n            splideRefNode.splide.go('-1');\n        }\n    };\n\n    let submittedBy = '';\n    const photo = images[activeIndex];\n\n    if (hostId && photo.providedById !== null && photo.providedBy && hostId !== photo.providedBy?.id) {\n        const monthYear = moment(photo.createdAt).format('MMM YYYY');\n        submittedBy = `Submitted by: ${photo.providedBy.firstname} ${photo.providedBy.lastInitial}. - ${monthYear}`;\n    }\n\n    useEffect(() => {\n        if (activeIndex > maxLimit - 4 && maxLimit < length) {\n            setMaxLimit((limit) => (limit + 5 > length ? length : limit + 5));\n        }\n    }, [activeIndex]);\n\n    useEffect(() => {\n        setLoaded(true);\n    }, []);\n\n    if (!loaded) {\n        return (\n            <div className=\"carousel__photo-container p-lcp\">\n                <div className=\"splide splide--slide splide--ltr splide--draggable is-active is-overflow is-initialized\" style={{ height: '100%' }}>\n                    <div\n                        className=\"splide__track splide__track--slide splide__track--ltr splide__track--draggable\"\n                        style={{ height: '100%', paddingLeft: '0px', paddingRight: '0px' }}\n                    >\n                        <ul className=\"splide__list\">\n                            <li className=\"splide__slide is-active is-visible w-100\">\n                                <PictureSet\n                                    imgs={\n                                        rawImg\n                                            ? URL.createObjectURL(images[0].images)\n                                            : ImageHelper.getUrlFromOptions(images[0], `full-fit-in/${IMG_RESIZES.x768}`)\n                                    }\n                                    className=\"img carousel-spot-inner\"\n                                    alt={item.title ? `${item.title} - ${item.city}, ${item.state}` : imageAlt || 'Spot thumbnail'}\n                                    method={server ? 'eager' : 'lazy'}\n                                    fetchpriority={server ? 'high' : 'auto'}\n                                    creatorName={creatorName}\n                                />\n                            </li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n\n    return (\n        <>\n            <Splide\n                ref={splideRef}\n                options={{\n                    focus: 'center',\n                    rewind: true,\n                    pagination: false,\n                    arrows: false,\n                    lazyLoad: 'nearby',\n                    flickMaxPages: 1,\n                    drag: !disableSwipe,\n                }}\n                onMove={(_, idx) => setActiveIndex(idx)}\n            >\n                <Slides {...{ item, images: myImages, useState, lazy, onClick, rawImg, removePhoto, isShowReq, imageAlt }} />\n            </Splide>\n            <ArrowBtn {...{ activeIndex, length, showArrow, next, prev }} />\n            {myImages.length >= 1 && (\n                <div className=\"spot-detail-photos-counter\">\n                    <div className=\"photos-text\">\n                        {activeIndex + 1} of {length}\n                    </div>\n                </div>\n            )}\n            {hostId && submittedBy && (\n                <div className=\"photos-submitted-box\">\n                    <p className=\"photos-submitted\">{submittedBy}</p>\n                </div>\n            )}\n        </>\n    );\n};\n\nexport default CarouselSSR;\n","import React from 'react';\nimport gPlayImg from '../../assets/img/google-play.png';\nimport { appleStoreLink, googlePlayLinkUrl } from '../../consts/link.consts';\nimport PictureSet from '../picture-set';\nimport SvgAppleStore from 'src/assets/svg/SvgAppleStore.svg';\n\nconst MobileAppDownload = () => {\n    return (\n        <>\n            <a href={appleStoreLink} target=\"_blank\" rel=\"noopener noreferrer\">\n                <SvgAppleStore width={196} height={58} />\n            </a>\n            <a href={googlePlayLinkUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n                <PictureSet imgs={gPlayImg} width={196} height={58} alt=\"Google Play Link\" />\n            </a>\n        </>\n    );\n};\n\nexport default MobileAppDownload;\n","import bemCn from 'bem-cn';\nimport React from 'react';\nimport qrCodeImg from '../../assets/img/sniffspot-qr-code.png';\nimport sniffAppDesktopImg from '../../assets/img/sniffspot-app-desktop-ss.png';\nimport MobileAppDownload from '../mobile-app-download';\nimport PictureSet from '../picture-set';\nimport './style.scss';\n\nconst b = bemCn('render-app-download');\n\nconst RenderAppDownload = () => (\n    <div className={b()}>\n        <div>\n            <h3 className={b('title').mix('d-md-none')}>Download Sniffspot iOS and Android Apps</h3>\n            <h3 className={b('title').mix('d-none d-md-block')}>Download the Sniffspot app</h3>\n            <div className={b('logos-container')}>\n                <PictureSet imgs={qrCodeImg} width={156} height={156} alt=\"Sniffspot app qrcode\" />\n                <div className={b('logos')}>\n                    <MobileAppDownload />\n                </div>\n            </div>\n        </div>\n        <div className=\"d-none d-md-block\">\n            <PictureSet imgs={sniffAppDesktopImg} width={491} height={432} alt=\"Sniffspot app screenshot\" />\n        </div>\n    </div>\n);\n\nexport default RenderAppDownload;\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { apiDomain } from '../../consts/env.consts';\n\nexport function Head({ image, title, ogTitle, ogUrl, description, children }) {\n    const og_url = ogUrl ? ogUrl : `${apiDomain}`;\n    const og_title = ogTitle ? ogTitle : title;\n    const og_image = image ? image : `${apiDomain}/build/sniffspot-logo.png`;\n\n    return (\n        <Helmet>\n            <title>{og_title}</title>\n            <meta name=\"google-play-app\" content=\"app-id=com.sniffspot\" />\n            <meta property=\"fb:app_id\" content=\"106186300306441\" />\n            <meta property=\"al:ios:app_name\" content=\"Sniffspot\" />\n            <meta property=\"al:ios:app_store_id\" content=\"1437699295\" />\n            <meta property=\"al:android:package\" content=\"com.sniffspot\" />\n            <meta property=\"al:android:app_name\" content=\"Sniffspot\" />\n            <meta property=\"al:web:should_fallback\" content=\"false\" />\n            <meta name=\"twitter:card\" content=\"summary\" />\n            <meta name=\"twitter:site\" content=\"@sniffspot\" />\n            {image && <meta name=\"twitter:image\" content={og_image} />}\n            <meta name=\"twitter:title\" content={og_title} />\n            <meta property=\"og:site_name\" content=\"SNIFFSPOT\" />\n            <meta property=\"og:title\" content={og_title} />\n            {image && <meta property=\"og:image\" content={og_image} />}\n            <meta property=\"og:description\" content={description} />\n            <meta property=\"og:url\" content={og_url} />\n            <meta property=\"og:type\" content=\"website\" />\n            <meta name=\"description\" content={description} />\n            {children}\n        </Helmet>\n    );\n}\n","import React, { useEffect, useState } from 'react';\nimport bemCn from 'bem-cn';\nimport { Splide, SplideSlide } from '@splidejs/react-splide';\nimport useMobileScreen from '../../services/hooks/useMobileScreen';\nimport PictureSet from '../picture-set';\nimport Img1 from '../../assets/img/as-seen/p-fortune.png';\nimport Img2 from '../../assets/img/as-seen/p-gma.png?sizes[]=300';\nimport Img3 from '../../assets/img/as-seen/p-insider.png';\nimport Img4 from '../../assets/img/as-seen/p-money.png';\nimport Img5 from '../../assets/img/as-seen/p-nytimes.png';\nimport Img6 from '../../assets/img/as-seen/p-today.png';\nimport '@splidejs/splide/dist/css/splide.min.css';\nimport './style.scss';\n\nconst b = bemCn('sniff-as-seen');\n\nconst imgs = [\n    { img: Img1, alt: 'Fortune' },\n    { img: Img2, alt: 'Good Morning America' },\n    { img: Img3, alt: 'Business Insider' },\n    { img: Img4, alt: 'Money' },\n    { img: Img5, alt: 'NYTimes' },\n    { img: Img6, alt: 'Today Show' },\n];\n\nconst Slides = () => {\n    const isMobile = useMobileScreen();\n\n    if (isMobile) {\n        return imgs.map((item, index) => {\n            return (\n                <SplideSlide key={index}>\n                    <div className={b('m-slider')}>\n                        <PictureSet imgs={item.img} className={b('img')} alt={item.alt} width=\"auto\" height={44} />\n                    </div>\n                </SplideSlide>\n            );\n        });\n    }\n\n    return [...Array(2)].map((_, index) => {\n        return (\n            <SplideSlide key={index}>\n                <div className={b('slider')}>\n                    {imgs.slice(index * 2 + index, index * 3 + index + 3).map((v, i) => (\n                        <div key={i} className={b('slider-container')}>\n                            <PictureSet imgs={v.img} className={b('img')} alt={v.alt} width=\"100%\" height=\"auto\" />\n                        </div>\n                    ))}\n                </div>\n            </SplideSlide>\n        );\n    });\n};\n\nconst RenderServerComp = () => (\n    <div className={b('seen-ssr')}>\n        {imgs.map((img, idx) => (\n            <div key={idx}>\n                <PictureSet imgs={img.img} className={b('img')} alt={img.alt} width=\"auto\" height={44} />\n            </div>\n        ))}\n    </div>\n);\n\nconst RenderClientComp = () => (\n    <Splide options={{ focus: 'center', pagination: true, arrows: false }}>\n        <Slides />\n    </Splide>\n);\n\nconst SniffAsSeen = ({ margin = 6 }) => {\n    const [Component, setComponent] = useState(<RenderServerComp />);\n    const marginPx = `${margin * 8}px`;\n\n    useEffect(() => {\n        setComponent(<RenderClientComp />);\n    }, []);\n\n    return (\n        <div className={b()} style={{ marginTop: marginPx, marginBottom: marginPx }}>\n            <p className=\"snif-p text-italic text-center\">As seen on</p>\n            {Component}\n        </div>\n    );\n};\n\nexport default SniffAsSeen;\n","import React from 'react';\nimport SvgCalendarClock from 'src/assets/svg/SvgCalendarClock.svg';\nimport SvgDog from 'src/assets/svg/SvgDog.svg';\nimport SvgHostSafety from 'src/assets/svg/SvgHostSafety.svg';\nimport SvgPaw from 'src/assets/svg/SvgPaw.svg';\nimport SvgSubscription from 'src/assets/svg/SvgSubscription.svg';\nimport { RouteFormatter } from '../routes';\nimport { SPOT_SRC_MEMBERSHIP } from './spot.consts';\n\nexport const LISTING_WORK_CONTENT = [\n    {\n        Icon: SvgCalendarClock,\n        title: 'Private rentals by the hour',\n        desc: () => <>Our hosts are locals that are renting their yards and private land to dog owners</>,\n    },\n    {\n        Icon: SvgDog,\n        title: 'Designed for private play',\n        desc: () => <>Only the people and dogs in your booking are allowed in the spot during your visit</>,\n    },\n    {\n        Icon: SvgHostSafety,\n        title: 'Trust and safety first',\n        desc: () => <>Spots are designed for safety and both hosts and guests are reviewed after each visit</>,\n    },\n    {\n        Icon: SvgPaw,\n        title: 'Reactive dogs welcome',\n        desc: () => <>Many of the spots we list are designed with sensitive dogs in mind</>,\n    },\n    {\n        Icon: SvgSubscription,\n        title: 'Become a Sniffpass holder!',\n        desc: () => (\n            <>\n                Get discounts on all bookings at all spots by buying monthly credits!\n                <br />\n                <a\n                    href={RouteFormatter.subscriptionsNew(null, { query: { src: SPOT_SRC_MEMBERSHIP.WEB_HOMELP } })}\n                    className=\"snif-semibold text-primary text-underline\"\n                >\n                    Learn more!\n                </a>\n            </>\n        ),\n    },\n];\n\nexport const LISTING_WORK_CONTENT_MBL = [\n    LISTING_WORK_CONTENT[0],\n    LISTING_WORK_CONTENT[2],\n    LISTING_WORK_CONTENT[1],\n    LISTING_WORK_CONTENT[3],\n    LISTING_WORK_CONTENT[4],\n];\n","export const states = [\n    'Alabama',\n    'Alaska',\n    'Arizona',\n    'Arkansas',\n    'California',\n    'Colorado',\n    'Connecticut',\n    'Delaware',\n    'Florida',\n    'Georgia',\n    'Hawaii',\n    'Idaho',\n    'Illinois',\n    'Indiana',\n    'Iowa',\n    'Kansas',\n    'Kentucky',\n    'Louisiana',\n    'Maine',\n    'Maryland',\n    'Massachusetts',\n    'Michigan',\n    'Minnesota',\n    'Mississippi',\n    'Missouri',\n    'Montana',\n    'Nebraska',\n    'Nevada',\n    'New Hampshire',\n    'New Jersey',\n    'New Mexico',\n    'New York',\n    'North Carolina',\n    'North Dakota',\n    'Ohio',\n    'Oklahoma',\n    'Oregon',\n    'Pennsylvania',\n    'Rhode Island',\n    'South Carolina',\n    'South Dakota',\n    'Tennessee',\n    'Texas',\n    'Utah',\n    'Vermont',\n    'Virginia',\n    'Washington',\n    'West Virginia',\n    'Wisconsin',\n    'Wyoming',\n];\n\nexport const statesWithCanada = states.concat([\n    'Alberta',\n    'British Columbia',\n    'Manitoba',\n    'New Brunswick',\n    'Newfoundland and Labrador',\n    'Northwest Territories',\n    'Nova Scotia',\n    'Nunavut',\n    'Ontario',\n    'Prince Edward Island',\n    'Quebec',\n    'Saskatchewan',\n    'Yukon',\n]);\n\nexport const NEARBY_STATES = {\n    alabama: ['Florida', 'Georgia', 'Mississippi', 'Tennessee'],\n    arizona: ['California', 'Colorado', 'Nevada', 'New Mexico', 'Utah'],\n    arkansas: ['Louisiana', 'Mississippi', 'Missouri', 'Oklahoma', 'Tennessee', 'Texas'],\n    california: ['Arizona', 'Nevada', 'Oregon'],\n    colorado: ['Arizona', 'Kansas', 'Nebraska', 'New Mexico', 'Oklahoma', 'Utah', 'Wyoming'],\n    connecticut: ['Massachusetts', 'New York', 'Rhode Island'],\n    delaware: ['Maryland', 'New Jersey', 'Pennsylvania'],\n    florida: ['Alabama', 'Georgia'],\n    georgia: ['Alabama', 'Florida', 'North Carolina', 'South Carolina', 'Tennessee'],\n    idaho: ['Montana', 'Nevada', 'Oregon', 'Utah', 'Washington', 'Wyoming'],\n    illinois: ['Indiana', 'Iowa', 'Michigan', 'Kentucky', 'Missouri', 'Wisconsin'],\n    indiana: ['Illinois', 'Kentucky', 'Michigan', 'Ohio'],\n    iowa: ['Illinois', 'Minnesota', 'Missouri', 'Nebraska', 'South Dakota', 'Wisconsin'],\n    kansas: ['Colorado', 'Missouri', 'Nebraska', 'Oklahoma'],\n    kentucky: ['Illinois', 'Indiana', 'Missouri', 'Ohio', 'Tennessee', 'Virginia', 'West Virginia'],\n    louisiana: ['Arkansas', 'Mississippi', 'Texas'],\n    maine: ['New Hampshire'],\n    maryland: ['Delaware', 'Pennsylvania', 'Virginia', 'West Virginia'],\n    massachusetts: ['Connecticut', 'New Hampshire', 'New York', 'Rhode Island', 'Vermont'],\n    michigan: ['Illinois', 'Indiana', 'Minnesota', 'Ohio', 'Wisconsin'],\n    minnesota: ['Iowa', 'Michigan', 'North Dakota', 'South Dakota', 'Wisconsin'],\n    mississippi: ['Alabama', 'Arkansas', 'Louisiana', 'Tennessee'],\n    missouri: ['Arkansas', 'Illinois', 'Iowa', 'Kansas', 'Kentucky', 'Nebraska', 'Oklahoma', 'Tennessee'],\n    montana: ['Idaho', 'North Dakota', 'South Dakota', 'Wyoming'],\n    nebraska: ['Colorado', 'Iowa', 'Kansas', 'Missouri', 'South Dakota', 'Wyoming'],\n    nevada: ['Arizona', 'California', 'Idaho', 'Oregon', 'Utah'],\n    'new-hampshire': ['Maine', 'Massachusetts', 'Vermont'],\n    'new-jersey': ['Delaware', 'New York', 'Pennsylvania'],\n    'new-mexico': ['Arizona', 'Colorado', 'Oklahoma', 'Texas', 'Utah'],\n    'new-york': ['Connecticut', 'Massachusetts', 'New Jersey', 'Pennsylvania', 'Rhode Island', 'Vermont'],\n    'north-carolina': ['Georgia', 'South Carolina', 'Tennessee', 'Virginia'],\n    'north-dakota': ['Minnesota', 'Montana', 'South Dakota'],\n    ohio: ['Indiana', 'Kentucky', 'Michigan', 'Pennsylvania', 'West Virginia'],\n    oklahoma: ['Arkansas', 'Colorado', 'Kansas', 'Missouri', 'New Mexico', 'Texas'],\n    oregon: ['California', 'Idaho', 'Nevada', 'Washington'],\n    pennsylvania: ['Delaware', 'Maryland', 'New Jersey', 'New York', 'Ohio', 'West Virginia'],\n    'rhode-island': ['Connecticut', 'Massachusetts', 'New York'],\n    'south-carolina': ['Georgia', 'North Carolina'],\n    'south-dakota': ['Iowa', 'Minnesota', 'Montana', 'Nebraska', 'North Dakota', 'Wyoming'],\n    tennessee: ['Alabama', 'Arkansas', 'Georgia', 'Kentucky', 'Mississippi', 'Missouri', 'North Carolina', 'Virginia'],\n    texas: ['Arkansas', 'Louisiana', 'New Mexico', 'Oklahoma'],\n    utah: ['Arizona', 'Colorado', 'Idaho', 'Nevada', 'New Mexico', 'Wyoming'],\n    vermont: ['Massachusetts', 'New Hampshire', 'New York'],\n    virginia: ['Kentucky', 'Maryland', 'North Carolina', 'Tennessee', 'West Virginia'],\n    washington: ['Idaho', 'Oregon'],\n    'west-virginia': ['Kentucky', 'Maryland', 'Ohio', 'Pennsylvania', 'Virginia'],\n    wisconsin: ['Illinois', 'Iowa', 'Michigan', 'Minnesota'],\n    wyoming: ['Colorado', 'Idaho', 'Montana', 'Nebraska', 'South Dakota', 'Utah'],\n};\n","import WeaTStorm from '../assets/img/weather/200.png';\nimport WeaDrizzle from '../assets/img/weather/300.png';\nimport WeaRain from '../assets/img/weather/500.png';\nimport WeaSnow from '../assets/img/weather/600.png';\nimport WeaFog from '../assets/img/weather/700.png';\nimport WeaClear from '../assets/img/weather/800.png';\nimport WeaCloudy from '../assets/img/weather/802.png';\n\n// - A: this is the control group\n// - B: this group will have updated content modules\n// - C: this group will have updated spot previews\n// - D: this group will have updated content modules AND spot previews\n\nexport const cityTestGroup = {\n    'los-angeles-ca': 'SEO_CONTENT_A',\n    'new-york-ny': 'SEO_CONTENT_A',\n    'phoenix-az': 'SEO_CONTENT_A',\n    'dallas-tx': 'SEO_CONTENT_A',\n    'atlanta-ga': 'SEO_CONTENT_A',\n    'minneapolis-mn': 'SEO_CONTENT_A',\n    'philadelphia-pa': 'SEO_CONTENT_A',\n    'london-on': 'SEO_CONTENT_A',\n    'hamilton-on': 'SEO_CONTENT_A',\n    'bellingham-wa': 'SEO_CONTENT_A',\n    'cleveland-oh': 'SEO_CONTENT_A',\n    'san-jose-ca': 'SEO_CONTENT_A',\n    'colorado-springs-co': 'SEO_CONTENT_A',\n    'tacoma-wa': 'SEO_CONTENT_A',\n    'tucson-az': 'SEO_CONTENT_A',\n    'madison-wi': 'SEO_CONTENT_A',\n    'vancouver-bc': 'SEO_CONTENT_A',\n    'miami-fl': 'SEO_CONTENT_A',\n    'st-louis-mo': 'SEO_CONTENT_A',\n    'winnipeg-mb': 'SEO_CONTENT_A',\n    'boise-id': 'SEO_CONTENT_A',\n    'new-orleans-la': 'SEO_CONTENT_A',\n    'greensboro-nc': 'SEO_CONTENT_A',\n    'buffalo-ny': 'SEO_CONTENT_A',\n    'lancaster-pa': 'SEO_CONTENT_A',\n    'oakland-ca': 'SEO_CONTENT_A',\n    'valparaiso-in': 'SEO_CONTENT_A',\n    'des-moines-ia': 'SEO_CONTENT_A',\n    'el-paso-tx': 'SEO_CONTENT_A',\n    'queens-ny': 'SEO_CONTENT_A',\n    'overland-park-ks': 'SEO_CONTENT_A',\n    'oregon-city-or': 'SEO_CONTENT_A',\n    'gig-harbor-wa': 'SEO_CONTENT_A',\n    'sherwood-park-ab': 'SEO_CONTENT_A',\n    'albany-ny': 'SEO_CONTENT_A',\n    'vero-beach-fl': 'SEO_CONTENT_A',\n    'fort-wayne-in': 'SEO_CONTENT_A',\n    'york-pa': 'SEO_CONTENT_A',\n    'guelph-on': 'SEO_CONTENT_A',\n    'morristown-nj': 'SEO_CONTENT_A',\n    'townsend-ma': 'SEO_CONTENT_A',\n    'kirkland-wa': 'SEO_CONTENT_A',\n    'denton-tx': 'SEO_CONTENT_A',\n    'baton-rouge-la': 'SEO_CONTENT_A',\n    'kennewick-wa': 'SEO_CONTENT_A',\n    'allentown-pa': 'SEO_CONTENT_A',\n    'roanoke-va': 'SEO_CONTENT_A',\n    'huntsville-al': 'SEO_CONTENT_A',\n    'memphis-tn': 'SEO_CONTENT_A',\n    'fallbrook-ca': 'SEO_CONTENT_A',\n    'ventura-ca': 'SEO_CONTENT_A',\n    'monroe-wa': 'SEO_CONTENT_A',\n    'kalamazoo-mi': 'SEO_CONTENT_A',\n    'columbia-mo': 'SEO_CONTENT_A',\n    'tallahassee-fl': 'SEO_CONTENT_A',\n    'morgantown-wv': 'SEO_CONTENT_A',\n    'little-rock-ar': 'SEO_CONTENT_A',\n    'venice-fl': 'SEO_CONTENT_A',\n    'mckinney-tx': 'SEO_CONTENT_A',\n    'staten-island-ny': 'SEO_CONTENT_A',\n    'eureka-ca': 'SEO_CONTENT_A',\n    'winchester-va': 'SEO_CONTENT_A',\n    'anchorage-ak': 'SEO_CONTENT_A',\n    'new-braunfels-tx': 'SEO_CONTENT_A',\n    'flagstaff-az': 'SEO_CONTENT_A',\n    'sunnyvale-ca': 'SEO_CONTENT_A',\n    'spring-hill-fl': 'SEO_CONTENT_A',\n    'portland-or': 'SEO_CONTENT_B',\n    'houston-tx': 'SEO_CONTENT_B',\n    'ottawa-on': 'SEO_CONTENT_B',\n    'calgary-ab': 'SEO_CONTENT_B',\n    'austin-tx': 'SEO_CONTENT_B',\n    'spokane-wa': 'SEO_CONTENT_B',\n    'eugene-or': 'SEO_CONTENT_B',\n    'baltimore-md': 'SEO_CONTENT_B',\n    'washington-dc': 'SEO_CONTENT_B',\n    'old-toronto-on': 'SEO_CONTENT_B',\n    'brooklyn-ny': 'SEO_CONTENT_B',\n    'rochester-ny': 'SEO_CONTENT_B',\n    'knoxville-tn': 'SEO_CONTENT_B',\n    'greenville-sc': 'SEO_CONTENT_B',\n    'mississauga-on': 'SEO_CONTENT_B',\n    'lexington-ky': 'SEO_CONTENT_B',\n    'grand-rapids-mi': 'SEO_CONTENT_B',\n    'frederick-md': 'SEO_CONTENT_B',\n    'petaluma-ca': 'SEO_CONTENT_B',\n    'saint-paul-mn': 'SEO_CONTENT_B',\n    'charlottesville-va': 'SEO_CONTENT_B',\n    'bend-or': 'SEO_CONTENT_B',\n    'snohomish-wa': 'SEO_CONTENT_B',\n    'columbia-sc': 'SEO_CONTENT_B',\n    'aurora-co': 'SEO_CONTENT_B',\n    'west-chester-pa': 'SEO_CONTENT_B',\n    'halifax-ns': 'SEO_CONTENT_B',\n    'everett-wa': 'SEO_CONTENT_B',\n    'beaverton-or': 'SEO_CONTENT_B',\n    'hendersonville-nc': 'SEO_CONTENT_B',\n    'lincoln-ne': 'SEO_CONTENT_B',\n    'wilmington-de': 'SEO_CONTENT_B',\n    'wichita-ks': 'SEO_CONTENT_B',\n    'bellevue-wa': 'SEO_CONTENT_B',\n    'thousand-oaks-ca': 'SEO_CONTENT_B',\n    'college-station-tx': 'SEO_CONTENT_B',\n    'portland-me': 'SEO_CONTENT_B',\n    'pasadena-ca': 'SEO_CONTENT_B',\n    'lafayette-in': 'SEO_CONTENT_B',\n    'longmont-co': 'SEO_CONTENT_B',\n    'spartanburg-sc': 'SEO_CONTENT_B',\n    'bothell-wa': 'SEO_CONTENT_B',\n    'ithaca-ny': 'SEO_CONTENT_B',\n    'carlsbad-ca': 'SEO_CONTENT_B',\n    'oceanside-ca': 'SEO_CONTENT_B',\n    'peoria-az': 'SEO_CONTENT_B',\n    'poughkeepsie-ny': 'SEO_CONTENT_B',\n    'royal-oak-mi': 'SEO_CONTENT_B',\n    'lynnwood-wa': 'SEO_CONTENT_B',\n    'olathe-ks': 'SEO_CONTENT_B',\n    'cape-coral-fl': 'SEO_CONTENT_B',\n    'pembroke-pines-fl': 'SEO_CONTENT_B',\n    'kent-wa': 'SEO_CONTENT_B',\n    'santa-ana-ca': 'SEO_CONTENT_B',\n    'escondido-ca': 'SEO_CONTENT_B',\n    'ankeny-ia': 'SEO_CONTENT_B',\n    'fayetteville-nc': 'SEO_CONTENT_B',\n    'vallejo-ca': 'SEO_CONTENT_B',\n    'greeley-co': 'SEO_CONTENT_B',\n    'redding-ca': 'SEO_CONTENT_B',\n    'williamsburg-va': 'SEO_CONTENT_B',\n    'stockton-ca': 'SEO_CONTENT_B',\n    'issaquah-wa': 'SEO_CONTENT_B',\n    'port-st-lucie-fl': 'SEO_CONTENT_B',\n    'port-orchard-wa': 'SEO_CONTENT_B',\n    'spring-tx': 'SEO_CONTENT_B',\n    'kenosha-wi': 'SEO_CONTENT_B',\n    'seattle-wa': 'SEO_CONTENT_C',\n    'las-vegas-nv': 'SEO_CONTENT_C',\n    'toronto-on': 'SEO_CONTENT_C',\n    'vancouver-wa': 'SEO_CONTENT_C',\n    'san-francisco-ca': 'SEO_CONTENT_C',\n    'tampa-fl': 'SEO_CONTENT_C',\n    'milwaukee-wi': 'SEO_CONTENT_C',\n    'richmond-va': 'SEO_CONTENT_C',\n    'fort-worth-tx': 'SEO_CONTENT_C',\n    'santa-rosa-ca': 'SEO_CONTENT_C',\n    'oklahoma-city-ok': 'SEO_CONTENT_C',\n    'mesa-az': 'SEO_CONTENT_C',\n    'charleston-sc': 'SEO_CONTENT_C',\n    'scottsdale-az': 'SEO_CONTENT_C',\n    'fresno-ca': 'SEO_CONTENT_C',\n    'victoria-bc': 'SEO_CONTENT_C',\n    'syracuse-ny': 'SEO_CONTENT_C',\n    'long-beach-ca': 'SEO_CONTENT_C',\n    'cary-nc': 'SEO_CONTENT_C',\n    'red-deer-ab': 'SEO_CONTENT_C',\n    'hillsboro-or': 'SEO_CONTENT_C',\n    'irvine-ca': 'SEO_CONTENT_C',\n    'chandler-az': 'SEO_CONTENT_C',\n    'lansing-mi': 'SEO_CONTENT_C',\n    'jacksonville-nc': 'SEO_CONTENT_C',\n    'manchester-nh': 'SEO_CONTENT_C',\n    'meridian-id': 'SEO_CONTENT_C',\n    'albany-or': 'SEO_CONTENT_C',\n    'chula-vista-ca': 'SEO_CONTENT_C',\n    'bradenton-fl': 'SEO_CONTENT_C',\n    'west-palm-beach-fl': 'SEO_CONTENT_C',\n    'loveland-co': 'SEO_CONTENT_C',\n    'worcester-ma': 'SEO_CONTENT_C',\n    'bremerton-wa': 'SEO_CONTENT_C',\n    'lakewood-co': 'SEO_CONTENT_C',\n    'santa-cruz-ca': 'SEO_CONTENT_C',\n    'surprise-az': 'SEO_CONTENT_C',\n    'pensacola-fl': 'SEO_CONTENT_C',\n    'spokane-valley-wa': 'SEO_CONTENT_C',\n    'jersey-city-nj': 'SEO_CONTENT_C',\n    'mission-viejo-ca': 'SEO_CONTENT_C',\n    'fremont-ca': 'SEO_CONTENT_C',\n    'bozeman-mt': 'SEO_CONTENT_C',\n    'thornton-co': 'SEO_CONTENT_C',\n    'san-marcos-ca': 'SEO_CONTENT_C',\n    'duluth-mn': 'SEO_CONTENT_C',\n    'san-rafael-ca': 'SEO_CONTENT_C',\n    'athens-ga': 'SEO_CONTENT_C',\n    'largo-fl': 'SEO_CONTENT_C',\n    'huntington-beach-ca': 'SEO_CONTENT_C',\n    'kamloops-bc': 'SEO_CONTENT_C',\n    'santa-clarita-ca': 'SEO_CONTENT_C',\n    'eagan-mn': 'SEO_CONTENT_C',\n    'redmond-wa': 'SEO_CONTENT_C',\n    'bel-air-md': 'SEO_CONTENT_C',\n    'kennesaw-ga': 'SEO_CONTENT_C',\n    'summerville-sc': 'SEO_CONTENT_C',\n    'glendale-az': 'SEO_CONTENT_C',\n    'northampton-ma': 'SEO_CONTENT_C',\n    'carmel-in': 'SEO_CONTENT_C',\n    'gainesville-ga': 'SEO_CONTENT_C',\n    'yuma-az': 'SEO_CONTENT_C',\n    'camas-wa': 'SEO_CONTENT_C',\n    'citrus-heights-ca': 'SEO_CONTENT_C',\n    'boca-raton-fl': 'SEO_CONTENT_C',\n    'salinas-ca': 'SEO_CONTENT_C',\n    'new-port-richey-fl': 'SEO_CONTENT_C',\n    'edmonton-ab': 'SEO_CONTENT_D',\n    'columbus-oh': 'SEO_CONTENT_D',\n    'sacramento-ca': 'SEO_CONTENT_D',\n    'charlotte-nc': 'SEO_CONTENT_D',\n    'san-antonio-tx': 'SEO_CONTENT_D',\n    'asheville-nc': 'SEO_CONTENT_D',\n    'jacksonville-fl': 'SEO_CONTENT_D',\n    'indianapolis-in': 'SEO_CONTENT_D',\n    'albuquerque-nm': 'SEO_CONTENT_D',\n    'raleigh-nc': 'SEO_CONTENT_D',\n    'boston-ma': 'SEO_CONTENT_D',\n    'kitchener-on': 'SEO_CONTENT_D',\n    'fort-collins-co': 'SEO_CONTENT_D',\n    'durham-nc': 'SEO_CONTENT_D',\n    'dayton-oh': 'SEO_CONTENT_D',\n    'st-petersburg-fl': 'SEO_CONTENT_D',\n    'orange-ca': 'SEO_CONTENT_D',\n    'ann-arbor-mi': 'SEO_CONTENT_D',\n    'langley-bc': 'SEO_CONTENT_D',\n    'virginia-beach-va': 'SEO_CONTENT_D',\n    'puyallup-wa': 'SEO_CONTENT_D',\n    'sarasota-fl': 'SEO_CONTENT_D',\n    'alexandria-va': 'SEO_CONTENT_D',\n    'gilbert-az': 'SEO_CONTENT_D',\n    'murfreesboro-tn': 'SEO_CONTENT_D',\n    'myrtle-beach-sc': 'SEO_CONTENT_D',\n    'arlington-wa': 'SEO_CONTENT_D',\n    'fort-lauderdale-fl': 'SEO_CONTENT_D',\n    'oshawa-on': 'SEO_CONTENT_D',\n    'annapolis-md': 'SEO_CONTENT_D',\n    'springfield-mo': 'SEO_CONTENT_D',\n    'kansas-city-ks': 'SEO_CONTENT_D',\n    'canton-oh': 'SEO_CONTENT_D',\n    'savannah-ga': 'SEO_CONTENT_D',\n    'tulsa-ok': 'SEO_CONTENT_D',\n    'maple-ridge-bc': 'SEO_CONTENT_D',\n    'tempe-az': 'SEO_CONTENT_D',\n    'toledo-oh': 'SEO_CONTENT_D',\n    'naperville-il': 'SEO_CONTENT_D',\n    'lubbock-tx': 'SEO_CONTENT_D',\n    'akron-oh': 'SEO_CONTENT_D',\n    'littleton-co': 'SEO_CONTENT_D',\n    'champaign-il': 'SEO_CONTENT_D',\n    'kingston-on': 'SEO_CONTENT_D',\n    'naples-fl': 'SEO_CONTENT_D',\n    'norfolk-va': 'SEO_CONTENT_D',\n    'burlington-vt': 'SEO_CONTENT_D',\n    'torrance-ca': 'SEO_CONTENT_D',\n    'bakersfield-ca': 'SEO_CONTENT_D',\n    'clarksville-tn': 'SEO_CONTENT_D',\n    'temecula-ca': 'SEO_CONTENT_D',\n    'rochester-mn': 'SEO_CONTENT_D',\n    'lakeland-fl': 'SEO_CONTENT_D',\n    'rockville-md': 'SEO_CONTENT_D',\n    'cambridge-on': 'SEO_CONTENT_D',\n    'bethesda-md': 'SEO_CONTENT_D',\n    'sioux-falls-sd': 'SEO_CONTENT_D',\n    'johnson-city-tn': 'SEO_CONTENT_D',\n    'newport-news-va': 'SEO_CONTENT_D',\n    'brampton-on': 'SEO_CONTENT_D',\n    'chico-ca': 'SEO_CONTENT_D',\n    'renton-wa': 'SEO_CONTENT_D',\n    'blaine-wa': 'SEO_CONTENT_D',\n    'clayton-nc': 'SEO_CONTENT_D',\n    'castle-rock-co': 'SEO_CONTENT_D',\n    'vista-ca': 'SEO_CONTENT_D',\n    'fredericksburg-va': 'SEO_CONTENT_D',\n};\n\nconst weatherID = {\n    200: WeaTStorm,\n    300: WeaDrizzle,\n    500: WeaRain,\n    600: WeaSnow,\n    700: WeaFog,\n    800: WeaClear,\n    802: WeaCloudy,\n};\n\nconst weatherDesc = {\n    200: 'Thunderstorm',\n    300: 'Drizzle',\n    500: 'Rain',\n    600: 'Snow',\n    701: 'Mist',\n    711: 'Smoke',\n    721: 'Haze',\n    731: 'Dust',\n    741: 'Fog',\n    751: 'Sand',\n    761: 'Dust',\n    762: 'Ash',\n    771: 'Squall',\n    781: 'Tornado',\n    800: 'Clear',\n    801: 'Clouds',\n};\n\nexport const genWeatherImg = (id = 0) => {\n    let img = weatherID[200];\n\n    if (id >= 802) {\n        img = weatherID[802];\n    } else if (id >= 800) {\n        img = weatherID[800];\n    } else if (id >= 800) {\n        img = weatherID[800];\n    } else if (id >= 700) {\n        img = weatherID[700];\n    } else if (id >= 600) {\n        img = weatherID[600];\n    } else if (id >= 500) {\n        img = weatherID[500];\n    } else if (id >= 300) {\n        img = weatherID[300];\n    }\n\n    return img;\n};\n\nexport const genWeatherText = (id = 0) => {\n    let text = weatherDesc[id];\n\n    if (text) {\n        return text;\n    }\n\n    if (id >= 801) {\n        text = weatherDesc[801];\n    } else if (id == 800) {\n        text = weatherDesc[800];\n    } else if (id >= 600) {\n        text = weatherDesc[600];\n    } else if (id >= 500) {\n        text = weatherDesc[500];\n    } else if (id >= 300) {\n        text = weatherDesc[300];\n    } else if (id >= 200) {\n        text = weatherDesc[200];\n    }\n\n    return text;\n};\n","import React from 'react';\nimport bemCn from 'bem-cn';\nimport './style.scss';\n\nconst b = bemCn('sniff-toggle');\n\nconst SniffToggle = ({ value = 0, onToggle = () => {}, texts = ['°F', '°C'] }) => {\n    return (\n        <div className={b()} onClick={onToggle}>\n            <div className={b('dot').mix(value == 0 ? 'right' : '')} />\n            <p className={b('text').mix(value == 1 ? 'right' : '')}>{texts[value]}</p>\n        </div>\n    );\n};\n\nexport default SniffToggle;\n","import React, { useEffect, useRef, useState } from 'react';\nimport moment from 'moment';\nimport { Bar } from 'react-chartjs-2';\nimport { states } from '../../consts/states';\nimport { sniffDesc } from '../../consts/seo.consts';\nimport { TOP_CITIES } from '../../consts/top-cities';\nimport { toFahrenheit } from '../../helpers/weather';\nimport { escapeString } from '../../helpers/escape-string';\nimport { RouteFormatter } from '../../routes';\nimport { Splide, SplideSlide } from '@splidejs/react-splide';\nimport { scrollIntoViewHorizontally } from '../../helpers/scroll';\nimport { genWeatherImg, genWeatherText } from '../../consts/city-test';\nimport { cityLink, stateLink, toColumns } from '../../helpers/column-view';\nimport { LISTING_WORK_CONTENT, LISTING_WORK_CONTENT_MBL } from '../../consts/listings.consts';\nimport { BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, Title, Tooltip } from 'chart.js';\nimport SpotAmenitiesIcon from '../../components/spot-amenities-icon';\nimport RenderAppDownload from '../../components/render-app-download';\nimport MobileSubPage from '../../components/mobile-sub-page';\nimport SniffButton from '../../components/sniff-button';\nimport SniffToggle from '../../components/sniff-toggle';\nimport CarouselSSR from '../../components/carousel/carousel-ssr';\nimport PictureSet from '../../components/picture-set';\nimport SvgSeasonSpring from 'src/assets/svg/amenities/flower-garden.svg';\nimport SvgSeasonAutumn from 'src/assets/svg/SvgSeasonAutumn.svg';\nimport SvgSeasonSummer from 'src/assets/svg/SvgSeasonSummer.svg';\nimport SvgSeasonWinter from 'src/assets/svg/amenities/snow.svg';\nimport SvgCircleCheck from 'src/assets/svg/SvgCircleCheck.svg';\nimport SvgStarSolid from 'src/assets/svg/SvgStarSolid.svg';\nimport SvgRaindrop from 'src/assets/svg/SvgRaindrop.svg';\nimport SvgMorning from 'src/assets/svg/SvgMorning.svg';\nimport SvgSunset from 'src/assets/svg/SvgSunset.svg';\nimport SvgCheck from 'src/assets/svg/SvgCheck.svg';\nimport SvgCross from 'src/assets/svg/SvgCross.svg';\nimport SvgWind from 'src/assets/svg/SvgWind.svg';\nimport { IMG_RESIZES } from '../../consts/resizer.consts';\nimport { ImageHelper } from '../../classes/image-helper.class';\n\nChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend);\n\nconst MIN_SPOTS_APPEREANCES = 2;\nconst MIN_STATS_SHOWN = 3;\nconst MAX_STATS_SHOWN = 6;\n\nconst months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\n\nexport const RenderHowWorks = ({ isMobile, name, subType, action, addedClass = '' }) => {\n    const [sniffWorks, setSniffWorks] = useState(LISTING_WORK_CONTENT_MBL);\n    const parkType = subType ? subType.title.toLowerCase() : 'dog parks';\n\n    useEffect(() => {\n        !isMobile && setSniffWorks(LISTING_WORK_CONTENT);\n    }, [isMobile]);\n\n    return (\n        <div className={`sniff-work ${addedClass}`}>\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold mb-2\">\n                    How do {name}'s private {parkType} work?\n                </h2>\n                <div className=\"snif-work-list\">\n                    {sniffWorks.map((L, i) => (\n                        <div key={i} className=\"work-list-item\">\n                            <L.Icon />\n                            <div>\n                                <h2 className=\"snif-p snif-semibold mb-1\">{L.title}</h2>\n                                <div className=\"snif-p\">\n                                    <L.desc />\n                                </div>\n                            </div>\n                        </div>\n                    ))}\n                </div>\n                {action && (\n                    <p className=\"text-center mt-5 pt-1\">\n                        <a href={RouteFormatter.listings({})}>\n                            <SniffButton size=\"lg\" block=\"mobile\">\n                                Explore spots near me\n                            </SniffButton>\n                        </a>\n                    </p>\n                )}\n            </div>\n        </div>\n    );\n};\n\nexport const RenderWhyRent = ({ data, isState }) => {\n    const cityQ = encodeURI(`${data.name}, ${isState ? data.country : data.state}`);\n    const whyRent = `Why rent a private dog park in ${data.name}${!isState ? `, ${data.state}` : ''}?`;\n    const subWaterPage = data.subpages?.find((s) => s.pageType === 'DOG_WATER_PARKS');\n    const subFencedPage = data.subpages?.find((s) => s.pageType === 'FULLY_FENCED_DOG_PARKS');\n    const subHikingPage = data.subpages?.find((s) => s.pageType === 'DOG_HIKING_TRAILS');\n    const subAgilityPage = data.subpages?.find((s) => s.pageType === 'DOG_AGILITY_PARKS');\n    const subFieldPage = data.subpages?.find((s) => s.pageType === 'DOG_FIELDS');\n    const subSmallPage = data.subpages?.find((s) => s.pageType === 'SMALL_DOG_PARKS');\n    const subBeachPage = data.subpages?.find((s) => s.pageType === 'DOG_BEACHES');\n    const subIndoorPage = data.subpages?.find((s) => s.pageType === 'INDOOR_DOG_PARKS');\n\n    const stats = [\n        {\n            title: 'total dog parks',\n            count: data?.totalSpots || 0,\n            isSubPage: false,\n            link: encodeURI(\n                RouteFormatter.listings(\n                    {},\n                    {\n                        query: {\n                            loc: cityQ,\n                            lat: data.latitude || undefined,\n                            lng: data.longitude || undefined,\n                        },\n                    }\n                )\n            ),\n        },\n        {\n            title: 'dog water parks',\n            count: data?.swimmingSpotsCount || 0,\n            isSubPage: subWaterPage,\n            link: subWaterPage\n                ? RouteFormatter.listings({ first: subWaterPage.url })\n                : encodeURI(\n                      RouteFormatter.waterListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'fully fenced dog parks',\n            count: data?.fullyFencedCount || 0,\n            isSubPage: subFencedPage,\n            link: subFencedPage\n                ? RouteFormatter.listings({ first: subFencedPage.url })\n                : encodeURI(\n                      RouteFormatter.fencedListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'dog hiking trails',\n            count: data?.trailSpotsCount || 0,\n            isSubPage: subHikingPage,\n            link: subHikingPage\n                ? RouteFormatter.listings({ first: subHikingPage.url })\n                : encodeURI(\n                      RouteFormatter.hikingListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'dog fields',\n            count: data?.fieldSpotsCount || 0,\n            isSubPage: subFieldPage,\n            link: subFieldPage\n                ? RouteFormatter.listings({ first: subFieldPage.url })\n                : encodeURI(\n                      RouteFormatter.fieldsListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'dog agility parks',\n            count: data?.agilitySpotsCount || 0,\n            isSubPage: subAgilityPage,\n            link: subAgilityPage\n                ? RouteFormatter.listings({ first: subAgilityPage.url })\n                : encodeURI(\n                      RouteFormatter.agilityListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'small dog parks',\n            count: data?.smallDogSpotsCount || 0,\n            isSubPage: subSmallPage,\n            link: subSmallPage\n                ? RouteFormatter.listings({ first: subSmallPage.url })\n                : encodeURI(\n                      RouteFormatter.smallDogListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'dog beaches',\n            count: data?.beachSpotsCount || 0,\n            isSubPage: subBeachPage,\n            link: subBeachPage\n                ? RouteFormatter.listings({ first: subBeachPage.url })\n                : encodeURI(\n                      RouteFormatter.beachListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n        {\n            title: 'dog indoor spaces',\n            count: data?.indoorSpotsCount || 0,\n            isSubPage: subIndoorPage,\n            link: subIndoorPage\n                ? RouteFormatter.listings({ first: subIndoorPage.url })\n                : encodeURI(\n                      RouteFormatter.indoorListings(null, {\n                          query: {\n                              loc: cityQ,\n                              lat: data.latitude || undefined,\n                              lng: data.longitude || undefined,\n                          },\n                      })\n                  ),\n        },\n    ];\n    const filteredStats = stats.filter((s) => s.count >= MIN_SPOTS_APPEREANCES);\n\n    return (\n        <div className=\"sniff-rent-private\">\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold mb-3\">{whyRent}</h2>\n                {filteredStats.length >= MIN_STATS_SHOWN && (\n                    <div className=\"sniff-stats\">\n                        {filteredStats.slice(0, MAX_STATS_SHOWN).map((s, i) => (\n                            <a key={i} href={s.link} target=\"_blank\" rel={s.isSubPage ? 'noreferrer' : 'noreferrer nofollow'}>\n                                <div className=\"snif-l2 snif-xl-pc snif-bold text-primary mb-05\">{s.count}</div>\n                                <div className=\"snif-s2 snif-s1-pc snif-medium\">{s.title}</div>\n                            </a>\n                        ))}\n                    </div>\n                )}\n                <div className=\"rent-private-tbl\">\n                    <table>\n                        <thead>\n                            <tr>\n                                <th>Features</th>\n                                <th>Sniffspot</th>\n                                <th>Public park</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            <tr>\n                                <td className=\"tbl-tl\">Designed for private play</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger tbl-tr\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Rentable by the hour</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Off leash options</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td className=\"tbl-bl\">Very large and/or fully fenced options</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger tbl-br\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Pricing</td>\n                                <td className=\"text-center\">$5 - $15 per dog per hour</td>\n                                <td className=\"text-center\">Free</td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport const RenderWhyRentSubCity = ({ data, subType }) => {\n    const whyRent = `Why rent private ${subType.title.toLowerCase()} in ${data.name}, ${data.state}?`;\n\n    return (\n        <div className=\"sniff-rent-private\">\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold mb-3\">{whyRent}</h2>\n                <div className=\"rent-private-tbl\">\n                    <table>\n                        <thead>\n                            <tr>\n                                <th>Features</th>\n                                <th>Sniffspot</th>\n                                <th>Public park</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            <tr>\n                                <td className=\"tbl-tl\">Designed for private play</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger tbl-tr\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Rentable by the hour</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Off leash options</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td className=\"tbl-bl\">Very large and/or fully fenced options</td>\n                                <td className=\"text-center text-primary\">\n                                    <SvgCheck />\n                                </td>\n                                <td className=\"text-center text-danger tbl-br\">\n                                    <SvgCross />\n                                </td>\n                            </tr>\n                            <tr>\n                                <td>Pricing</td>\n                                <td className=\"text-center\">$5 - $15 per dog per hour</td>\n                                <td className=\"text-center\">Free</td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport const RenderAbout = () => (\n    <div className=\"sniff-top-listings\">\n        <div className=\"l-container\">\n            <h3 className=\"snif-m2 snif-l1-pc snif-semibold mb-2\">About Sniffspot</h3>\n            <p className=\"snif-s2 snif-p-pc mb-0\">{sniffDesc}</p>\n        </div>\n    </div>\n);\n\nexport const RenderTopCities = ({ isMobile, SSR }) => {\n    const [myCols, setMyCols] = useState(toColumns(TOP_CITIES, 2));\n\n    useEffect(() => {\n        !isMobile && setMyCols(toColumns(TOP_CITIES, 5));\n    }, [isMobile]);\n\n    return (\n        <div className=\"sniff-top-listings\">\n            <div className=\"l-container b-bottom\">\n                <h3 className=\"snif-m2 snif-medium mb-2\">Browse by top cities</h3>\n                <div className=\"top-list-box\">\n                    {myCols.map((col, i) => (\n                        <div key={i} className=\"snif-p text-dark\">\n                            {col.map((c, j) => cityLink(c.city || c.name, c.url, j, SSR))}\n                        </div>\n                    ))}\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport const RenderTopState = ({ isMobile, SSR }) => {\n    const [myCols, setMyCols] = useState(toColumns(states, 2));\n\n    useEffect(() => {\n        !isMobile && setMyCols(toColumns(states, 5));\n    }, [isMobile]);\n\n    return (\n        <div className=\"sniff-top-listings\">\n            <div className=\"l-container b-bottom\">\n                <h3 className=\"snif-m2 snif-medium mb-2\">Browse by state</h3>\n                <div className=\"top-list-box\">\n                    {myCols.map((col, i) => (\n                        <div key={i} className=\"snif-p text-dark\">\n                            {col.map((c, j) => stateLink(c, escapeString(c), j, SSR))}\n                        </div>\n                    ))}\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport const RenderAppDownloadCity = () => (\n    <div className=\"sniff-city-app-download\">\n        <div className=\"l-container\">\n            <RenderAppDownload />\n        </div>\n    </div>\n);\n\nexport const RenderCityBlurb = ({ summaryForDogOwners = [], name, state }) => {\n    const title = summaryForDogOwners.length > 0 ? summaryForDogOwners[0] : `${name} Paws: Unleash the Adventure in ${state}!`;\n    const para1 =\n        summaryForDogOwners.length > 1\n            ? summaryForDogOwners[1]\n            : `Explore ${name} with your furry friend by your side, where every street is a new adventure and every park a paradise for pups. From iconic hikes to trendy dog-friendly cafes, join our vibrant community of dog lovers and unlock endless tail-wagging fun in ${name}, ${state}!`;\n    const para2 =\n        summaryForDogOwners.length > 2 ? summaryForDogOwners[2] : `Discover the perfect private dog park in ${name} for you and your furry friend.`;\n\n    return (\n        <div className=\"l-container pt-md-5\">\n            <h2 className=\"snif-m1 snif-l1-pc snif-semibold mb-2\">{title}</h2>\n            <p className=\"snif-p mb-1\">{para1}</p>\n            <p className=\"snif-p mb-0\">{para2}</p>\n        </div>\n    );\n};\n\nconst Slides = ({ imageAlt, recentReviewPhotos }) => {\n    return recentReviewPhotos.map((photo, index) => {\n        return (\n            <SplideSlide key={index}>\n                <div className=\"sniff-city-expanded-review_slide\">\n                    <PictureSet\n                        imgs={ImageHelper.getUrlFromOptions(photo.imageAws, `fit-in/${IMG_RESIZES.x675}`)}\n                        alt={imageAlt}\n                        width=\"100%\"\n                        height=\"auto\"\n                    />\n                </div>\n            </SplideSlide>\n        );\n    });\n};\n\nconst RenderServerPhotos = ({ imageAlt, recentReviewPhotos }) => (\n    <div className=\"sniff-city-expanded-review_photos\">\n        {recentReviewPhotos.slice(0, 5).map((p, i) => (\n            <PictureSet\n                key={i}\n                imgs={ImageHelper.getUrlFromOptions(p.imageAws, `fit-in/${IMG_RESIZES.x512}`)}\n                alt={imageAlt}\n                width={559}\n                height={400}\n            />\n        ))}\n    </div>\n);\n\nconst RenderClientPhotos = ({ imageAlt, recentReviewPhotos }) => (\n    <div className=\"d-none d-md-block mt-4\">\n        <Splide\n            options={{\n                type: 'loop',\n                focus: 'center',\n                perPage: 5,\n                perMove: 5,\n                gap: 16,\n                pagination: false,\n                arrows: true,\n                autoplay: true,\n            }}\n        >\n            <Slides {...{ imageAlt, recentReviewPhotos }} />\n        </Splide>\n    </div>\n);\n\nconst CTAButton = ({ name, stateShort, className = 'mt-4', exploreLink }) => (\n    <a href={exploreLink} rel=\"nofollow\">\n        <SniffButton size=\"lg\" block=\"mobile\" className={className}>\n            Explore spots in {name}, {stateShort.toUpperCase()}\n        </SniffButton>\n    </a>\n);\n\nexport const RenderCityReviews = ({\n    exploreLink,\n    featuredReviews,\n    name,\n    recentReviewPhotos,\n    reviewCount,\n    reviewRatingAvg,\n    state,\n    stateShort,\n    summarisedReviews,\n}) => {\n    const [DesktopPhotos, setDesktopPhotos] = useState(() => RenderServerPhotos);\n    const [modalOpen, setModalOpen] = useState(false);\n    const fixedRating = Math.ceil(reviewRatingAvg);\n    const modalTitle = `${name} Private Dog Park Photos`;\n    const imageAlt = `Sniffspot Review Photos in ${name}, ${state}`;\n\n    const DestopPhotosClient = <DesktopPhotos {...{ imageAlt, recentReviewPhotos }} />;\n\n    const toggleModalOpen = () => setModalOpen((o) => !o);\n\n    useEffect(() => {\n        setDesktopPhotos(() => RenderClientPhotos);\n    }, []);\n\n    return (\n        <div className=\"sniff-city-expanded-review\">\n            <div className=\"l-container\">\n                <p className=\"d-flex align-items-center snif-p mb-1\">\n                    <SvgStarSolid width={20} height={20} />\n                    <span className=\"snif-medium ms-1\">{fixedRating}</span>\n                    <span className=\"text-medium ms-05\">({reviewCount})</span>\n                </p>\n                <p className=\"snif-p\">{summarisedReviews}</p>\n                {featuredReviews?.length > 0 && (\n                    <>\n                        <div className=\"sniff-city-expanded-review_tags\">\n                            {featuredReviews.map((f, i) => (\n                                <p key={i}>\n                                    <SvgCircleCheck />\n                                    {f.word}\n                                </p>\n                            ))}\n                        </div>\n                        <ul className=\"sniff-city-expanded-review_list\">\n                            {featuredReviews.map((f, i) => {\n                                const splitTexts = f.text?.split(f.word);\n                                return (\n                                    <li key={i}>\n                                        “\n                                        {splitTexts.map((t, i) => (\n                                            <React.Fragment key={i}>\n                                                {i > 0 && <b>{f.word}</b>}\n                                                {t}\n                                            </React.Fragment>\n                                        ))}\n                                        ”\n                                    </li>\n                                );\n                            })}\n                        </ul>\n                    </>\n                )}\n                {recentReviewPhotos?.length > 0 && (\n                    <>\n                        {DestopPhotosClient}\n                        <div className=\"carousel\" onClick={toggleModalOpen}>\n                            <div className=\"carousel__spot-photo-container\">\n                                <CarouselSSR\n                                    {...{\n                                        item: {\n                                            spotPhotos: recentReviewPhotos.map((p) => p.imageAws),\n                                        },\n                                        type: 'listing-preview',\n                                        showArrow: false,\n                                        useState,\n                                        useEffect,\n                                        imageAlt,\n                                    }}\n                                />\n                            </div>\n                        </div>\n                        <MobileSubPage title={modalTitle} show={modalOpen} onBack={toggleModalOpen} className=\"sniff-city-expanded-review_modal\">\n                            <>\n                                {recentReviewPhotos.map((p, i) => (\n                                    <PictureSet\n                                        key={i}\n                                        imgs={ImageHelper.getUrlFromOptions(p.imageAws, `fit-in/${IMG_RESIZES.x512}`)}\n                                        alt={imageAlt}\n                                        width={559}\n                                        height={400}\n                                    />\n                                ))}\n                            </>\n                        </MobileSubPage>\n                    </>\n                )}\n                <div className=\"text-center mt-3 mt-md-4\">\n                    <CTAButton {...{ exploreLink, name, stateShort }} className=\"mt-1\" />\n                </div>\n            </div>\n        </div>\n    );\n};\n\nconst RenderCityWeaDay = ({ w, unit }) => {\n    const {\n        date,\n        precipitationProbability,\n        sunriseAt,\n        sunsetAt,\n        temperature,\n        temperatureApparent,\n        temperatureMax,\n        temperatureMin,\n        weatherCondition,\n        windSpeed,\n    } = w;\n    const dateM = moment(date);\n    const dateText = dateM.format('ddd, D MMM');\n    const sunriseText = moment.parseZone(sunriseAt).format('h:mm A');\n    const sunsetText = moment.parseZone(sunsetAt).format('h:mm A');\n    const isC = unit == 1;\n    const temp = isC ? Math.round(temperature) : toFahrenheit(temperature);\n    const tempApparent = isC ? Math.round(temperatureApparent) : toFahrenheit(temperatureApparent);\n    const tempMax = isC ? Math.round(temperatureMax) : toFahrenheit(temperatureMax);\n    const tempMin = isC ? Math.round(temperatureMin) : toFahrenheit(temperatureMin);\n    const preciText = `${precipitationProbability * 100}%`;\n    const weatherImg = genWeatherImg(weatherCondition);\n    const weatherDesc = genWeatherText(weatherCondition);\n    const windText = `${Math.round(windSpeed * 2.23694)} mph`;\n\n    return (\n        <div className=\"sniff-city-weather_forecast_day\">\n            <div className=\"sniff-city-weather_forecast_day_date\">{dateText}</div>\n            <div className=\"sniff-city-weather_forecast_day_temp\">\n                <PictureSet imgs={weatherImg} width={72} height={72} />\n                <div className=\"sniff-city-weather_forecast_day_temp_details\">\n                    <div>\n                        <span>{temp}</span>\n                        <span>°{isC ? 'C' : 'F'}</span>\n                    </div>\n                    <div className=\"snif-s2 snif-medium text-medium\">\n                        H:{tempMax}° L:{tempMin}°\n                    </div>\n                </div>\n            </div>\n            <div className=\"snif-s2 snif-medium text-deep\">{weatherDesc}</div>\n            <div className=\"snif-s2 text-medium mb-1\">Feels like {tempApparent}°</div>\n            <div className=\"sniff-city-weather_forecast_day_subs\">\n                <SvgMorning />\n                <span>{sunriseText}</span>\n            </div>\n            <div className=\"sniff-city-weather_forecast_day_subs\">\n                <SvgSunset />\n                <span>{sunsetText}</span>\n            </div>\n            <div className=\"sniff-city-weather_forecast_day_subs\">\n                <SvgRaindrop />\n                <span>{preciText}</span>\n            </div>\n            <div className=\"sniff-city-weather_forecast_day_subs\">\n                <SvgWind />\n                <span>{windText}</span>\n            </div>\n        </div>\n    );\n};\n\nconst RenderSeasonIcon = ({ month = 0 }) => {\n    if (month == 11 || month <= 1) {\n        return <SvgSeasonWinter />;\n    } else if (month >= 2 && month <= 4) {\n        return <SvgSeasonSpring />;\n    } else if (month >= 5 && month <= 7) {\n        return <SvgSeasonSummer />;\n    } else {\n        return <SvgSeasonAutumn />;\n    }\n};\n\nexport const RenderCityWeather = ({ monthlyTemperatures, name, state, summaryWeather, weatherForcasts }) => {\n    const thisMonth = moment().month();\n    const boxRef = useRef(null);\n    const monthRef = useRef(null);\n    const [unit, setUnit] = useState(0);\n    const [activeMo, setActiveMo] = useState(thisMonth);\n\n    const details = monthlyTemperatures[activeMo];\n    const { rainyDays, sunnyHours, temperatureMin, temperatureMax } = details || {};\n    const thisMonthText = `${moment().set('month', activeMo).format('MMMM')}:`;\n    const thisMonthDesc = ` The temperature ranges between ${toFahrenheit(temperatureMin)}°F and ${toFahrenheit(\n        temperatureMax\n    )}°F, with an average of ${rainyDays} rainy day${rainyDays > 1 ? 's' : ''} and ${sunnyHours} hours of sunshine per day.`;\n\n    const onToggle = () => setUnit((u) => (u == 0 ? 1 : 0));\n\n    useEffect(() => {\n        if (monthRef?.current) {\n            scrollIntoViewHorizontally(boxRef?.current, monthRef.current);\n        }\n    }, [monthRef]);\n\n    if (!temperatureMin) {\n        return '';\n    }\n\n    return (\n        <div className=\"sniff-city-weather\">\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold mb-2\">\n                    The Weather in {name}, {state}\n                </h2>\n                <p className=\"snif-p mb-4\">{summaryWeather}</p>\n                <div ref={boxRef} className=\"sniff-city-weather_box\">\n                    {months.map((m, i) => {\n                        const actMo = i == activeMo;\n                        return (\n                            <div key={i} ref={actMo ? monthRef : undefined} className={actMo ? 'active' : ''} onClick={() => setActiveMo(i)}>\n                                <RenderSeasonIcon month={i} />\n                                <div className=\"snif-s1 snif-semibold mt-1\">{m}</div>\n                            </div>\n                        );\n                    })}\n                </div>\n                <p className=\"sniff-city-weather_desc\">\n                    <span>{thisMonthText}</span>\n                    {thisMonthDesc}\n                </p>\n                {weatherForcasts?.length > 0 && (\n                    <div className=\"sniff-city-weather_forecast\">\n                        <div className=\"sniff-city-weather_forecast_header\">\n                            <h2 className=\"snif-m1 snif-l1-pc snif-semibold\">7-Day Weather Forecast in {name}</h2>\n                            <SniffToggle value={unit} onToggle={onToggle} />\n                        </div>\n                        <div className=\"sniff-city-weather_forecast_days\">\n                            {weatherForcasts.slice(0, 7).map((w) => (\n                                <RenderCityWeaDay key={w.date} {...{ w, unit }} />\n                            ))}\n                        </div>\n                    </div>\n                )}\n            </div>\n        </div>\n    );\n};\n\nexport const RenderCityAmenities = ({ allAmenities, name, summaryAmenities }) => {\n    if (allAmenities?.length == 0) {\n        return '';\n    }\n\n    return (\n        <div className=\"sniff-city-amenities\">\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold\">Popular Dog-friendly Amenities in {name}</h2>\n                <div className=\"sniff-city-amenities_tags\">\n                    {allAmenities.map((a, i) => (\n                        <div key={i}>\n                            <SpotAmenitiesIcon key={a.component} amenities={a} onlyIcon />\n                            <span>\n                                {a.amenity} ({a.count})\n                            </span>\n                        </div>\n                    ))}\n                </div>\n                <p className=\"snif-p\">{summaryAmenities}</p>\n            </div>\n        </div>\n    );\n};\n\nconst fenceLabel = {\n    ft_null: 'Others',\n    ft_less_3: '< than 3ft',\n    ft_3: '3ft',\n    ft_4: '4ft',\n    ft_5: '5ft',\n    ft_6_plus: '> than 6ft',\n};\n\nconst chartOptions = {\n    responsive: true,\n    scales: {\n        y: {\n            ticks: {\n                precision: 0,\n            },\n        },\n    },\n    plugins: { legend: { display: false } },\n};\n\nconst genChartData = (data, label, type) => {\n    const chartData = {\n        labels: data.map((d, i) => {\n            if (type == 'SIZE' || type == 'PRICE') {\n                let xLabel = typeof d.x == 'number' ? d.x.toString() : d.x;\n                xLabel = xLabel?.replace('.0', '');\n\n                if (type == 'SIZE' && d.x == '0.25') {\n                    xLabel = '<= 0.25';\n                } else if (i == data.length - 1) {\n                    xLabel = `${xLabel}+`;\n                }\n                return xLabel;\n            } else if (type == 'FENCE') {\n                return fenceLabel[d.x] || d.x;\n            }\n        }),\n        datasets: [\n            {\n                label,\n                data: data.map((d) => d.y),\n                backgroundColor: '#3aa648',\n            },\n        ],\n    };\n\n    return chartData;\n};\n\nexport const RenderCityStats = ({ sizeChart = [], fenceHeightChart = [], priceChart = [], name }) => {\n    const szTitle = `Distribution of ${name} private dog park sizes`;\n    const fnTitle = `Distribution of ${name} private dog park fence height`;\n    const prTitle = `Distribution of ${name} private dog park prices`;\n    const sizeChartData = genChartData(sizeChart, 'Spots count', 'SIZE');\n    const fenceChartData = genChartData(fenceHeightChart, 'Spots count', 'FENCE');\n    const priceChartData = genChartData(priceChart, 'Spots count', 'PRICE');\n\n    return (\n        <div className=\"sniff-city-stats\">\n            <div className=\"l-container\">\n                <h2 className=\"snif-m1 snif-l1-pc snif-semibold\">Featured Dog Parks Stats in {name}</h2>\n                <div className=\"sniff-city-stats_box\">\n                    <h3>{szTitle}</h3>\n                    <Bar data={sizeChartData} options={chartOptions} role=\"img\" aria-label={szTitle} alt={szTitle} />\n                    <p className=\"snif-s2 snif-medium text-medium text-center mt-05\">ACRES</p>\n                </div>\n                <div className=\"sniff-city-stats_box\">\n                    <h3>{fnTitle}</h3>\n                    <Bar data={fenceChartData} options={chartOptions} role=\"img\" aria-label={fnTitle} alt={fnTitle} />\n                    <p className=\"snif-s2 snif-medium text-medium text-center mt-05\">FEET</p>\n                </div>\n                <div className=\"sniff-city-stats_box\">\n                    <h3>{prTitle}</h3>\n                    <Bar data={priceChartData} options={chartOptions} role=\"img\" aria-label={prTitle} alt={prTitle} />\n                    <p className=\"snif-s2 snif-medium text-medium text-center mt-05\">DOLLAR (USD)</p>\n                </div>\n            </div>\n        </div>\n    );\n};\n","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-fortune-720.af58578de373b1fa.png\"+\" 720w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-fortune-720.af58578de373b1fa.png\",width: 720,height: 167}],\n        src: \"https://static.sniffspot.com/packs/img/p-fortune-720.af58578de373b1fa.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-fortune-720.af58578de373b1fa.png\"},\n        \n        width: 720,\n        height: 167\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-gma-300.c99c2fa357b4335b.png\"+\" 300w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-gma-300.c99c2fa357b4335b.png\",width: 300,height: 141}],\n        src: \"https://static.sniffspot.com/packs/img/p-gma-300.c99c2fa357b4335b.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-gma-300.c99c2fa357b4335b.png\"},\n        \n        width: 300,\n        height: 141\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-insider-1280.e42b351bde35a215.png\"+\" 1280w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-insider-1280.e42b351bde35a215.png\",width: 1280,height: 199}],\n        src: \"https://static.sniffspot.com/packs/img/p-insider-1280.e42b351bde35a215.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-insider-1280.e42b351bde35a215.png\"},\n        \n        width: 1280,\n        height: 199\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-money-399.74c14f370fa73e34.png\"+\" 399w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-money-399.74c14f370fa73e34.png\",width: 399,height: 138}],\n        src: \"https://static.sniffspot.com/packs/img/p-money-399.74c14f370fa73e34.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-money-399.74c14f370fa73e34.png\"},\n        \n        width: 399,\n        height: 138\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-nytimes-2560.03675f30b18a9eba.png\"+\" 2560w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-nytimes-2560.03675f30b18a9eba.png\",width: 2560,height: 432}],\n        src: \"https://static.sniffspot.com/packs/img/p-nytimes-2560.03675f30b18a9eba.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-nytimes-2560.03675f30b18a9eba.png\"},\n        \n        width: 2560,\n        height: 432\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/p-today-720.2e413a08c3768d00.png\"+\" 720w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/p-today-720.2e413a08c3768d00.png\",width: 720,height: 111}],\n        src: \"https://static.sniffspot.com/packs/img/p-today-720.2e413a08c3768d00.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/p-today-720.2e413a08c3768d00.png\"},\n        \n        width: 720,\n        height: 111\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/sniffspot-app-desktop-ss-555.2249d87adba43bda.png\"+\" 555w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/sniffspot-app-desktop-ss-555.2249d87adba43bda.png\",width: 555,height: 488}],\n        src: \"https://static.sniffspot.com/packs/img/sniffspot-app-desktop-ss-555.2249d87adba43bda.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/sniffspot-app-desktop-ss-555.2249d87adba43bda.png\"},\n        \n        width: 555,\n        height: 488\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/sniffspot-qr-code-1155.3b7197ce80bb4aa8.png\"+\" 1155w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/sniffspot-qr-code-1155.3b7197ce80bb4aa8.png\",width: 1155,height: 1155}],\n        src: \"https://static.sniffspot.com/packs/img/sniffspot-qr-code-1155.3b7197ce80bb4aa8.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/sniffspot-qr-code-1155.3b7197ce80bb4aa8.png\"},\n        \n        width: 1155,\n        height: 1155\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/200-72.e1c4a2081bca99ea.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/200-72.e1c4a2081bca99ea.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/200-72.e1c4a2081bca99ea.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/200-72.e1c4a2081bca99ea.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/300-72.7cccdeb9077cedbf.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/300-72.7cccdeb9077cedbf.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/300-72.7cccdeb9077cedbf.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/300-72.7cccdeb9077cedbf.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/500-72.6949558c0a8227b8.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/500-72.6949558c0a8227b8.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/500-72.6949558c0a8227b8.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/500-72.6949558c0a8227b8.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/600-72.ac708ce1d1809cd5.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/600-72.ac708ce1d1809cd5.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/600-72.ac708ce1d1809cd5.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/600-72.ac708ce1d1809cd5.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/700-72.75ca9d06a1cf7ca4.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/700-72.75ca9d06a1cf7ca4.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/700-72.75ca9d06a1cf7ca4.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/700-72.75ca9d06a1cf7ca4.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/800-72.b479ddf670ff1b49.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/800-72.b479ddf670ff1b49.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/800-72.b479ddf670ff1b49.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/800-72.b479ddf670ff1b49.png\"},\n        \n        width: 72,\n        height: 72\n      }","module.exports = {\n        srcSet: \"https://static.sniffspot.com/packs/img/802-72.edc8e2ff80c1be37.png\"+\" 72w\",\n        images: [{path: \"https://static.sniffspot.com/packs/img/802-72.edc8e2ff80c1be37.png\",width: 72,height: 72}],\n        src: \"https://static.sniffspot.com/packs/img/802-72.edc8e2ff80c1be37.png\",\n        toString: function(){return \"https://static.sniffspot.com/packs/img/802-72.edc8e2ff80c1be37.png\"},\n        \n        width: 72,\n        height: 72\n      }"],"names":["_path","_path2","_path3","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","xmlns","width","height","viewBox","fill","d","ArrowBtn","_ref","activeIndex","showArrow","next","prev","React","className","style","visibility","onClick","SvgChevronRight","ReqPhotos","_ref2","id","SplideSlide","RequestMorePhotos","Slides","_ref3","item","images","useState","lazy","rawImg","removePhoto","isShowReq","imageAlt","altImg","title","concat","city","state","photoSlides","map","img","index","methodDef","priorityDef","imgUrl","URL","createObjectURL","ImageHelper","getUrlFromOptions","IMG_RESIZES","x768","key","PictureSet","imgs","alt","method","fetchpriority","SSR","SvgCross2","_toConsumableArray","_ref4","_item$host","_photo$providedBy","myPhotos","_ref4$onClick","_ref4$showArrow","server","spotGallery","hostId","singleViewPhoto","disableSwipe","publicPark","_useState2","_slicedToArray","loaded","setLoaded","_useState4","setActiveIndex","_useState6","splideRefNode","setSplideRefNode","allPhotos","spotPhotos","photos","thumbPhoto","_useState8","maxLimit","setMaxLimit","SPOT_MIN_REQ_PHOTOS","myImages","useMemo","slice","creatorName","host","nameAndInitial","undefined","splideRef","useRef","useCallback","node","splide","go","submittedBy","photo","providedById","providedBy","monthYear","moment","createdAt","format","firstname","lastInitial","useEffect","limit","Splide","ref","options","focus","rewind","pagination","arrows","lazyLoad","flickMaxPages","drag","onMove","_","idx","preventDefault","current","paddingLeft","paddingRight","href","appleStoreLink","target","rel","SvgAppleStore","googlePlayLinkUrl","gPlayImg","b","bemCn","mix","qrCodeImg","MobileAppDownload","sniffAppDesktopImg","Head","image","ogTitle","ogUrl","description","children","og_url","apiDomain","og_title","og_image","Helmet","name","content","property","Img1","Img2","Img3","Img4","Img5","Img6","useMobileScreen","Array","v","i","RenderServerComp","RenderClientComp","_ref$margin","margin","Component","setComponent","marginPx","marginTop","marginBottom","LISTING_WORK_CONTENT","Icon","SvgCalendarClock","desc","SvgDog","SvgHostSafety","SvgPaw","SvgSubscription","RouteFormatter","subscriptionsNew","query","src","SPOT_SRC_MEMBERSHIP","WEB_HOMELP","LISTING_WORK_CONTENT_MBL","states","NEARBY_STATES","alabama","arizona","arkansas","california","colorado","connecticut","delaware","florida","georgia","idaho","illinois","indiana","iowa","kansas","kentucky","louisiana","maine","maryland","massachusetts","michigan","minnesota","mississippi","missouri","montana","nebraska","nevada","ohio","oklahoma","oregon","pennsylvania","tennessee","texas","utah","vermont","virginia","washington","wisconsin","wyoming","WeaTStorm","WeaDrizzle","WeaRain","WeaSnow","WeaFog","WeaClear","WeaCloudy","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","RenderHowWorks","isMobile","subType","action","_ref$addedClass","addedClass","sniffWorks","setSniffWorks","parkType","toLowerCase","L","listings","SniffButton","size","block","RenderWhyRent","_data$subpages","_data$subpages2","_data$subpages3","_data$subpages4","_data$subpages5","_data$subpages6","_data$subpages7","_data$subpages8","data","isState","cityQ","encodeURI","country","whyRent","subWaterPage","subpages","find","s","pageType","subFencedPage","subHikingPage","subAgilityPage","subFieldPage","subSmallPage","subBeachPage","subIndoorPage","filteredStats","count","totalSpots","isSubPage","link","loc","lat","latitude","lng","longitude","swimmingSpotsCount","first","url","waterListings","fullyFencedCount","fencedListings","trailSpotsCount","hikingListings","fieldSpotsCount","fieldsListings","agilitySpotsCount","agilityListings","smallDogSpotsCount","smallDogListings","beachSpotsCount","beachListings","indoorSpotsCount","indoorListings","filter","SvgCheck","SvgCross","RenderWhyRentSubCity","RenderAbout","sniffDesc","RenderTopCities","toColumns","TOP_CITIES","myCols","setMyCols","col","c","j","cityLink","RenderTopState","_ref5","stateLink","escapeString","RenderAppDownloadCity","RenderAppDownload","module","exports","srcSet","path","toString"],"sourceRoot":""}