{"version":3,"file":"static/chunks/1839-1f908fcf06d003ce.js","mappings":"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","sources":["webpack://_N_E/./SDKs/firebase/firebase.js","webpack://_N_E/./components/BookingStorePicker/index.tsx","webpack://_N_E/./components/ContentDrawer/index.tsx","webpack://_N_E/./components/Header/index.tsx","webpack://_N_E/./components/Layout/stickyScroll.ts","webpack://_N_E/./components/OpenGraphBoilerPlate/index.tsx","webpack://_N_E/./components/Layout/index.tsx","webpack://_N_E/./components/PhoneLink/formatPhoneNumber.ts","webpack://_N_E/./components/PhoneLink/index.tsx","webpack://_N_E/./components/ZipCodeModal/index.tsx","webpack://_N_E/./components/StorePickerCard/index.tsx","webpack://_N_E/./context/Franchisee/franchiseeSession.ts","webpack://_N_E/./context/Franchisee/franchiseeReducer.ts","webpack://_N_E/./context/Franchisee/index.tsx","webpack://_N_E/./ui/colors.ts","webpack://_N_E/./utils/stringValidation.ts"],"sourcesContent":["import firebase from 'firebase';\n\nconst firebaseConfig = {\n apiKey: process.env.apiKey,\n authDomain: process.env.authDomain,\n databaseURL: process.env.databaseURL,\n projectId: process.env.projectId,\n storageBucket: process.env.storageBucket,\n messagingSenderId: process.env.messagingSenderId,\n appId: process.env.appId,\n};\n// console.log(firebaseConfig);\nif (!firebase.apps.length) {\n firebase.initializeApp(firebaseConfig);\n}\nconst db = firebase.database();\n\nexport default db;\n","import Link from 'next/link';\nimport React, { useEffect, useRef, useState } from 'react';\n// import { useRouter } from 'next/router';\nimport {\n faChevronLeft,\n faSearch,\n faWindowClose,\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Cleave from 'cleave.js/react';\nimport { Card, InputGroup, Modal, Row } from 'react-bootstrap';\nimport MoonLoader from 'react-spinners/MoonLoader';\n// import { useRouter } from 'next/router';\nimport * as Sentry from '@sentry/node';\nimport camelcaseKeys from 'camelcase-keys';\nimport { useFranchiseeContext } from '../../context/Franchisee';\nimport { FranchiseeState } from '../../context/Franchisee/franchisee.types';\n// import { pink500 } from '../../ui/colors';\nimport { validateZipCode } from '../../utils/stringValidation';\nimport StorePickerCard from '../StorePickerCard';\n// import Gataware from '../../SDKs/Gataware';\nimport axios, { AxiosResponse } from 'axios';\nimport { useDispatch } from 'react-redux';\nimport { setFranchiseID } from '../../features/user/userSlice';\n\n// import styles from './styles'\n\ninterface BookingStorePickerTypes {\n showBookingModal?: boolean;\n bookingModalOrigin?: string;\n handleShowStorePicker?: any;\n handleBookingModalZipCode?: any;\n bookingModalZipCode?: string;\n zipInputValue?: any;\n}\n\nconst BookingStorePicker: React.FC = ({\n showBookingModal = false,\n bookingModalOrigin,\n handleShowStorePicker,\n handleBookingModalZipCode,\n bookingModalZipCode,\n zipInputValue,\n}: BookingStorePickerTypes) => {\n const { franchisee } = useFranchiseeContext();\n const [searchString, setSearchString] = useState(zipInputValue || '');\n const [loading, setLoading] = useState(false);\n const [franchiseeList, setFranchiseeList] = useState>(\n []\n );\n const [errorPage, setErrorPage] = useState(false);\n const [networkError, setNetworkError] = useState(false);\n const [disableSearch, setDisableSearch] = useState(true);\n const [showModal, setShowModal] = useState(showBookingModal);\n const [ipStoreCount, setIpStoreCount] = useState(0);\n const [userQuestion, setUserQuestion] = useState(false);\n const [hover, setHover] = useState(false);\n const dispatch = useDispatch();\n\n const firstRender = useRef(false);\n const secondRender = useRef(false);\n\n useEffect(() => {\n // setSearchString(bookingModalZipCode);\n if (zipInputValue?.length === 5) {\n storeSearch();\n }\n }, [zipInputValue]);\n\n const userRefTest = useRef(true);\n\n // const router = useRouter();\n function distance(lat1, lon1, lat2, lon2, unit) {\n if (lat1 == lat2 && lon1 == lon2) {\n return 0;\n } else {\n const radlat1 = (Math.PI * lat1) / 180;\n const radlat2 = (Math.PI * lat2) / 180;\n const theta = lon1 - lon2;\n const radtheta = (Math.PI * theta) / 180;\n let dist =\n Math.sin(radlat1) * Math.sin(radlat2) +\n Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = (dist * 180) / Math.PI;\n dist = dist * 60 * 1.1515;\n if (unit == 'K') {\n dist = dist * 1.609344;\n }\n if (unit == 'N') {\n dist = dist * 0.8684;\n }\n return dist;\n }\n }\n const checkForCookieZipCode = async () => {\n const zipCodeData = await axios.get('/api/search-zip-code/');\n console.log('franchisee id', franchisee.id);\n\n if (\n zipCodeData.data.message.includes('Error') ||\n franchisee.slug === 'home'\n )\n // setShowModal(true);\n console.log('showmodal');\n else {\n setShowModal(false);\n // checkZipCode();\n }\n };\n\n const getLocationsFromIp = async () => {\n try {\n const userLocationData = await axios.get('/api/user-location-session/');\n const zip_code = userLocationData.data?.data?.userLocation?.zipCode;\n if (!zip_code) return;\n const data = await axios.post('/api/get-locations/', {\n zipCode: zip_code,\n });\n return data.data.data;\n } catch (error) {\n console.log(error);\n Sentry.captureException(error);\n return null;\n }\n };\n\n const getLocationsFromSearch = async () => {\n try {\n const { data, status }: AxiosResponse = await axios.post(\n '/api/get-franchisee-by-zone-zip-code/',\n {\n zipCode: bookingModalZipCode ?? searchString,\n }\n );\n // axios\n // .post('/api/search-zip-code', { searchZipCode: searchString })\n // .then((result) => console.log(result.data))\n // .catch((e) => console.log(e));\n if (status === 200) {\n // console.log('data', data);\n if (data.data.length === 0) {\n const data = await axios.post('/api/get-locations/', {\n zipCode: bookingModalZipCode ?? searchString,\n });\n\n return data.data;\n } else {\n return data;\n }\n } else if (status === 502) {\n setLoading(false);\n setNetworkError(true);\n }\n } catch (e) {\n console.log(e);\n Sentry.captureException(e);\n return null;\n }\n };\n\n const storeSearch = async () => {\n let franchiseArray = [];\n try {\n setLoading(true);\n setDisableSearch(true);\n const searchResult = await getLocationsFromSearch();\n // Removed the ipResult to work on getting location by zone first.\n // const ipResult = await getLocationsFromIp();\n userRefTest.current = false;\n if (\n !searchResult.hasOwnProperty('data') ||\n searchResult.data.length < 1\n ) {\n setFranchiseeList([]);\n } else {\n const franchiseeData = searchResult.data.map((franchisee) =>\n camelcaseKeys(franchisee)\n );\n franchiseArray = franchiseeData;\n }\n // if (ipResult !== undefined && ipResult.length !== 0) {\n // const ipResultData = ipResult.map((franchisee) =>\n // camelcaseKeys(franchisee)\n // );\n // franchiseArray = [...franchiseArray, ...ipResultData];\n // setIpStoreCount(ipResultData.length);\n // // Remove duplicates\n // franchiseArray = franchiseArray.filter(\n // (v, i, a) => a.findIndex((t) => t.id === v.id) === i\n // );\n // }\n if (franchiseArray.length === 0) {\n setErrorPage(true);\n } else {\n setErrorPage(false);\n }\n setFranchiseeList(franchiseArray);\n } catch (error) {\n Sentry.captureException(error);\n } finally {\n setLoading(false);\n setDisableSearch(false);\n }\n };\n\n async function checkZipCode() {\n try {\n const userLocationChangeData = await axios.get(\n '/api/user-location-change-session/'\n );\n // console.log(userLocationChangeData.data.data);\n if (userLocationChangeData.data.data.userLocationChange) {\n return;\n }\n } catch (error) {\n // console.log(response);\n // console.log(error);\n Sentry.captureException(error);\n }\n try {\n const userLocationData = await axios.get('/api/user-location-session/');\n const zip_code = userLocationData.data?.data?.userLocation?.zipCode;\n const userLongitude =\n userLocationData.data?.data?.userLocation?.longitude;\n const userLatitude = userLocationData.data?.data?.userLocation?.latitude;\n\n // check if longitude exists\n if (userLongitude === 0) return;\n // console.log({ franchisee });\n\n const distanceBetweenUserAndStore = distance(\n userLatitude,\n userLongitude,\n franchisee.latitude,\n franchisee.longitude,\n 'M'\n );\n if (distanceBetweenUserAndStore < 100) {\n return;\n }\n const data = await axios.post('/api/get-locations/', {\n zipCode: zip_code,\n });\n const result = data.data.data;\n let cityMatched = false;\n\n for (const franchiseesFromResult of result) {\n if (franchiseesFromResult.slug === franchisee.slug) {\n cityMatched = true;\n }\n }\n if (!cityMatched) {\n const resultStores = result.map((franchisee) =>\n camelcaseKeys(franchisee)\n );\n setFranchiseeList(resultStores);\n setIpStoreCount(resultStores.length);\n setShowModal(true);\n userRefTest.current = true;\n const response: AxiosResponse = await axios.post(\n '/api/user-location-change-session/',\n {\n userLocationChange: true,\n }\n );\n }\n } catch (error) {\n console.log(error);\n Sentry.captureException(error);\n }\n }\n\n function bookingSelectFranchise() {\n const { body } = document;\n // setShowModal(false);\n handleShowStorePicker(searchString, false);\n setTimeout(() => {\n body.style.overflow = 'auto';\n body.style.padding = '0px';\n }, 500);\n }\n\n useEffect(() => {\n if (searchString.length === 5) {\n // handleBookingModalZipCode(searchString);\n }\n setDisableSearch(!validateZipCode(searchString));\n }, [searchString]);\n\n if (!showModal) return null;\n\n const sortedFranchiseeList = franchiseeList\n .slice()\n .sort((a, b) => a.name.localeCompare(b.name));\n\n return (\n <>\n {/* {!loading && ( */}\n <>\n {\n setShowModal(false);\n }}\n backdrop='static'\n aria-labelledby='contained-modal-title-vcenter'\n centered\n >\n \n \n {userRefTest.current === true\n ? 'Select a Store'\n : 'Please enter your zip code'}\n \n {/* {bookingModalOrigin === 'book' && ( */}\n
\n {\n setShowModal(false);\n handleShowStorePicker?.(searchString, false);\n }}\n className='btn btn-sm btn-primary'\n >\n Close\n \n
\n {/* )} */}\n {/* {bookingModalOrigin !== 'book' && (\n \n setShowModal(!showModal)}\n title='home'\n className='btn btn-sm btn-primary'\n >\n \n {' '}\n Back To Home\n \n \n )}{' '} */}\n
\n \n
\n

This helps us determine if you're in our service area.

\n \n {\n setSearchString(e.currentTarget.value);\n }}\n onKeyPress={(event) => {\n if (event.key === 'Enter' && searchString.length === 5) {\n storeSearch();\n userRefTest.current = false;\n }\n }}\n />\n \n setHover(false)}\n onMouseEnter={() => setHover(true)}\n onClick={storeSearch}\n >\n \n Search\n \n \n {loading ? (\n \n ) : (\n \n )}\n \n Find Your Store\n \n \n \n
\n {sortedFranchiseeList.length > 0 && (\n
\n {sortedFranchiseeList.map((fran, index) => (\n ipStoreCount ? '#e1e1e13d' : '',\n }}\n key={fran.id}\n >\n bookingSelectFranchise()}\n zipCodeInput={searchString}\n />\n
\n ))}\n {/* {franchisee.name !== 'Home' && (\n bookingSelectFranchise()}\n />\n )} */}\n \n )}\n {networkError && (\n \n \n
502 Bad Gateway
\n \n

\n There seems to be a network issue. This request cannot be\n completed at this time.\n

\n
\n \n \n Click here to go back to the home page{' '}\n \n \n
\n
\n
\n )}\n {errorPage === true && (\n \n \n
No Location Found
\n \n

\n Unfortunately, your zip code is not currently in our\n service area. We are growing and hope to service your area\n in the future, so please check back with us.\n

\n
\n \n \n Click here to go back to the home page{' '}\n \n \n
\n
\n
\n )}\n
\n \n \n {/* )} */}\n \n );\n};\n\nexport const MemoizedBookingStorePicker = React.memo(BookingStorePicker);\nexport default BookingStorePicker;\n","import React, { useState, useEffect } from 'react';\n// import styles from './styles'\n// import TwoMaidsLogo from '../TwoMaidsLogo';\n\ninterface ContentDrawerProps {\n // add ContentDrawer props here\n children: React.ReactNode;\n className?: string;\n show?: boolean;\n onClose: Function;\n}\n\nconst ContentDrawer: React.FC = ({\n className,\n children,\n show,\n onClose,\n}: ContentDrawerProps) => {\n const [visible, setVisible] = useState(null);\n\n useEffect(() => {\n setVisible(show);\n show ? document.body.style.overflowY = 'hidden' : document.body.style.overflowY = 'auto';\n // show ? document.body.style.paddingRight = '12px' : document.body.style.paddingRight = '0';\n // show ? document.getElementById('header').style.paddingRight = '12px' : document.getElementById('header').style.paddingRight = '0px'\n }, [show]);\n\n return (\n <>\n \n {children}\n \n \n );\n};\n\nContentDrawer.defaultProps = {\n // add ContentDrawer default props here\n className: null,\n show: false,\n};\n\nexport default ContentDrawer;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/**\n * Site header and navbar\n */\n\nimport { faFacebookF, faGoogle } from '@fortawesome/free-brands-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport * as Sentry from '@sentry/node';\nimport axios, { AxiosResponse } from 'axios';\nimport dynamic from 'next/dynamic';\nimport Image from 'next/image';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useIdleTimer } from 'react-idle-timer';\nimport { useSelector } from 'react-redux';\nimport db from '../../SDKs/firebase/firebase';\nimport { useFranchiseeContext } from '../../context/Franchisee';\nimport { MemoizedBookingStorePicker } from '../BookingStorePicker';\nimport ContentDrawer from '../ContentDrawer';\n// import DynamicPageDropdown from '../DynamicPageDropdown';\nimport PhoneLink from '../PhoneLink';\n\nconst Header: React.FC = () => {\n const {\n phonePrimary,\n reviewFacebookUrl,\n reviewGooglePlusUrl,\n name: franchiseeName,\n id: franchiseeId,\n slug: franchiseeSlug,\n url: franchiseeUrl,\n careerOpportunities: franchiseeCareerOpportunities,\n } = useFranchiseeContext().franchisee;\n\n const router = useRouter();\n\n const [showDrawer, setShowDrawer] = useState(false);\n const [showStorePicker, setShowStorePicker] = useState(false);\n const [phoneNumber, setPhoneNumber] = useState('');\n const [franchiseeSelection, setFranchiseeSelection] = useState('');\n const [mobileNavbarActive, setMobileNavbarActive] = useState(false);\n\n const funnelPages = ['/book', '/schedule', '/confirm'];\n\n const handleOnIdle = (event) => {\n axios\n .get('/api/lead-session/')\n .then((res) => {\n const lead = res.data.data.lead.id;\n const userStatusDatabaseRef = db.ref(`/online/${lead}`);\n userStatusDatabaseRef.remove();\n })\n .catch((err) => {\n console.log(err);\n Sentry.captureException(err);\n });\n };\n\n const { getLastActiveTime } = useIdleTimer({\n timeout: 60000,\n onIdle: handleOnIdle,\n });\n\n const firstRender = useRef(false);\n const secondRender = useRef(false);\n\n const closeDrawer = (event) => {\n if (!event.target.closest('.content-drawer')) {\n setShowDrawer(false);\n }\n };\n\n const closeStorePicker = (event) => {\n if (!event.target.closest('.modal-content')) {\n setShowStorePicker(false);\n }\n };\n const closeExpandedNav = (event) => {\n if (!event.target.closest('.header')) {\n setMobileNavbarActive(false);\n }\n };\n const DynamicStorePicker = dynamic(() => import('../StorePicker'), {\n ssr: false,\n });\n\n useEffect(() => {\n // handle closing the drawer if they click outside of it.\n document.addEventListener('click', closeDrawer);\n document.addEventListener('click', closeStorePicker);\n document.addEventListener('click', closeExpandedNav);\n\n return () => {\n // unmounts the event listener when the component is unmounted;\n document.removeEventListener('click', closeDrawer);\n document.removeEventListener('click', closeStorePicker);\n };\n }, []);\n\n // useEffect(() => {\n // if (router.query.locationChange) {\n // setShowDrawer(true);\n // router.replace(`/${franchiseeSlug}`, undefined, { shallow: true });\n // }\n // }, [router]);\n\n useEffect(() => {\n if (\n router.pathname === '/' &&\n franchiseeSlug !== 'home' &&\n franchiseeName !== 'Home'\n ) {\n router.push(`/${franchiseeSlug}`);\n } else if (\n router.pathname === '/[franchiseeSlug]' &&\n sessionStorage.getItem('selectedStore') !== franchiseeSlug &&\n sessionStorage.getItem('selectedStore') !== null\n ) {\n // router.push(`/${sessionStorage.getItem('selectedStore')}`);\n window.location.href = `/${sessionStorage.getItem('selectedStore')}`;\n }\n }, [franchiseeSlug]);\n\n useEffect(() => {\n setTimeout(() => {\n if (firstRender.current && !secondRender.current) {\n setPhoneNumber('(800) 355-3552');\n } else {\n if (phonePrimary === '8003553552') return;\n setPhoneNumber(phonePrimary);\n }\n }, 1000);\n }, [firstRender, secondRender, phonePrimary]);\n\n useEffect(() => {\n if (phonePrimary === '8003553552') {\n firstRender.current = true;\n return;\n }\n if (phonePrimary !== '8003553552') {\n secondRender.current = true;\n }\n }, [phonePrimary]);\n\n useEffect(() => {\n setTimeout(() => {\n if (firstRender.current && !secondRender.current) {\n setFranchiseeSelection('Enter Your Zip Code');\n } else {\n if (franchiseeName === 'Home') return;\n setFranchiseeSelection(franchiseeName);\n }\n }, 1000);\n }, [firstRender, secondRender, franchiseeName]);\n\n useEffect(() => {\n if (franchiseeName === 'Home') {\n firstRender.current = true;\n return;\n }\n if (franchiseeName !== 'Home') {\n secondRender.current = true;\n }\n }, [franchiseeName]);\n\n function extractFromAddress(components, type) {\n return (\n components\n .filter((component) => component.types.indexOf(type) === 0)\n .map((item) => item.long_name)\n .pop() || null\n );\n }\n const getLocationFromGoogle = async (position) => {\n const { latitude, longitude } = position.coords;\n try {\n const data: AxiosResponse = await axios(\n `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}&components=postal_code&key=${process.env.GOOGLE_GEO_API_KEY}`\n );\n const googleResults = data.data;\n let state = '';\n let city = '';\n let zipCode = '';\n if (googleResults.results[0]) {\n state = extractFromAddress(\n googleResults.results[0].address_components,\n 'administrative_area_level_1'\n );\n zipCode = extractFromAddress(\n googleResults.results[0].address_components,\n 'postal_code'\n );\n city = extractFromAddress(\n googleResults.results[0].address_components,\n 'locality'\n );\n }\n\n const response: AxiosResponse = await axios.post(\n '/api/user-location-session/',\n {\n userLocation: { state, city, zipCode, latitude, longitude },\n }\n );\n } catch (error) {\n console.log(error);\n Sentry.captureException(error);\n }\n };\n\n const getLocationFromIP = async () => {\n try {\n const result: AxiosResponse = await axios(\n `https://api.ipstack.com/check?access_key=${process.env.IPSTACK_ACCESS_KEY}`\n );\n\n const state = result.data.region_code;\n const city = result.data.city;\n const zipCode = result.data.zip;\n const ip = result.data.ip;\n let latitude = 0;\n let longitude = 0;\n if (\n result.data.hasOwnProperty('latitude') &&\n result.data.hasOwnProperty('longitude')\n ) {\n latitude = result.data.latitude;\n longitude = result.data.longitude;\n }\n const response: AxiosResponse = await axios.post(\n '/api/user-location-session/',\n {\n userLocation: { state, city, zipCode, ip, latitude, longitude },\n }\n );\n } catch (e) {\n console.log(e);\n Sentry.captureException(e);\n }\n };\n\n useEffect(() => {\n async function getZipcode() {\n try {\n const userLocationData = await axios.get('/api/user-location-session/');\n const user_location_response = userLocationData.data;\n if (user_location_response?.data?.userLocation?.zipCode?.length === 5)\n return;\n getLocationFromIP();\n // if (user_location_response.message.includes('Error')) {\n // if (navigator.geolocation) {\n // setTimeout(() => {\n // navigator.geolocation.getCurrentPosition(\n // getLocationFromGoogle,\n // getLocationFromIP\n // );\n // }, 3000);\n // }\n // }\n } catch (error) {\n console.log(error);\n Sentry.captureException(error);\n }\n }\n if (window?.location?.href.includes('gratuity')) return;\n getZipcode();\n }, []);\n\n useEffect(() => {\n async function getUTM() {\n let utmSource = '';\n let utmMedium = '';\n let utmCampaign = '';\n if (window?.location?.href.includes('utm_source')) {\n utmSource = window.location.href.split('utm_source=')[1].split('&')[0];\n utmMedium = window.location.href.split('utm_medium=')[1].split('&')[0];\n utmCampaign = window.location.href\n .split('utm_campaign=')[1]\n .split('&')[0];\n } else return;\n try {\n const response: AxiosResponse = await axios.post(\n '/api/utm-tracking-session/',\n {\n utmTracking: { utmSource, utmMedium, utmCampaign },\n }\n );\n } catch (error) {\n // console.log(error);\n Sentry.captureException(error);\n }\n }\n getUTM();\n }, []);\n\n // Used to retrieve the google tag manager src\n useEffect(() => {\n axios\n .post('/api/get-locations/')\n .then((res) => {\n const result = res.data.data.find(\n (franchise) => franchise.slug === franchiseeSlug\n );\n\n // Sets Google Tracking ID as a variable\n let franchiseTrackingId =\n result &&\n result.google_analytics_html.substring(\n result.google_analytics_html.indexOf('src=') + 49,\n result.google_analytics_html.indexOf(`\">`)\n );\n\n const scripts = document.querySelectorAll('script');\n\n let hasGtagFunc = false;\n scripts.forEach((script) => {\n if (script.innerHTML.includes('gtag')) {\n hasGtagFunc = true;\n }\n\n if (\n script.src.includes('https://www.google-analytics.com/analytics.js')\n ) {\n script.remove();\n }\n });\n\n if (\n hasGtagFunc === false &&\n process.env.TWOMAIDS_ENV === 'production'\n ) {\n if (typeof franchiseTrackingId !== 'undefined') {\n const gtagScript = document.createElement('script');\n gtagScript.innerHTML = `window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${franchiseTrackingId}', { page_path: window.location.pathname });`;\n // document.head.prepend(gtagScript);\n\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${franchiseTrackingId}`;\n // document.head.prepend(script);\n }\n }\n\n if (franchiseTrackingId) {\n axios\n .post('/api/tracking-session/', { franchiseTrackingId })\n .then((res) => {\n // console.log(res);\n });\n } else {\n franchiseTrackingId = null;\n }\n })\n .catch((err) => console.log(err));\n }, []);\n\n useEffect(() => {\n axios\n .post('/api/get-locations/')\n .then((res) => {\n const result = res.data.data.find(\n (franchise) => franchise.slug === franchiseeSlug\n );\n\n let mySubString;\n\n // Gets the full source for the first Google Script Tag\n mySubString =\n result &&\n result.google_analytics_html.substring(\n result.google_analytics_html.indexOf('src=') + 5,\n result.google_analytics_html.indexOf(`\">`)\n );\n createScript();\n\n // let mySecondSubString = result.google_analytics_html.substring(\n // result.google_analytics_html.indexOf(`Google Tag Manager`) + 32,\n // result.google_analytics_html.indexOf(`GTM`) + 14\n // );\n\n // if (mySecondSubString.includes('GTM-')) {\n // createScript(mySecondSubString);\n // }\n // console.log('mySecondSubString', mySecondSubString);\n // console.log('mySubString', mySubString);\n\n const scripts = document.querySelectorAll('script');\n let googleScriptFound = false;\n scripts.forEach((script) => {\n if (\n script.src.includes('googletag') &&\n script.src.includes('dataLayer') == false\n ) {\n googleScriptFound = true;\n script.remove();\n }\n });\n // Sets Google Tracking ID as a variable\n let franchiseTrackingId =\n result &&\n result.google_analytics_html.substring(\n result.google_analytics_html.indexOf('src=') + 49,\n result.google_analytics_html.indexOf(`\">`)\n );\n\n let hasGtagFunc = false;\n scripts.forEach((script) => {\n if (\n script.innerHTML.includes(`gtag`) ||\n script.src.includes('undefined') ||\n script.src.includes('https://www.google-analytics.com/analytics.js')\n ) {\n hasGtagFunc = true;\n // script.remove();\n }\n });\n\n if (true) {\n const analyticsScript = document.createElement('script');\n analyticsScript.src = 'https://www.google-analytics.com/analytics.js';\n document.head.prepend(analyticsScript);\n\n if (typeof franchiseTrackingId !== 'undefined') {\n const updatedTrackingFunction = document.createElement('script');\n updatedTrackingFunction.innerHTML = `window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${franchiseTrackingId}', { page_path: window.location.pathname });`;\n // document.head.prepend(updatedTrackingFunction);\n\n const updatedTrackingScript = document.createElement('script');\n updatedTrackingScript.src = mySubString;\n\n if (typeof mySubString === 'undefined') {\n return;\n }\n\n // document.head.prepend(updatedTrackingScript);\n }\n }\n\n if (franchiseTrackingId) {\n axios\n .post('/api/tracking-session/', { franchiseTrackingId })\n .then((res) => {\n // console.log(res);\n });\n } else {\n franchiseTrackingId = null;\n }\n })\n .catch((err) => console.log(err));\n }, [franchiseeSlug]);\n\n const createScript = () => {\n try {\n const id = 'gtag';\n const id2 = 'gtag2';\n const id3 = 'gtag3';\n const id4 = 'gtag4';\n const id5 = 'gtag5';\n\n if (\n // document.getElementById(id) === null &&\n document.getElementById(id2) === null &&\n // document.getElementById(id3) === null &&\n document.getElementById(id4) === null &&\n document.getElementById(id5) === null\n ) {\n // var scriptElm = document.createElement('script');\n const scriptElm2 = document.createElement('script');\n // var scriptElm3 = document.createElement('script');\n const scriptElm4 = document.createElement('script');\n const scriptElm5 = document.createElement('script');\n\n // scriptElm3.src =\n // 'https://www.googletagmanager.com/gtag/js?id=AW-10889637433';\n // scriptElm3.async = true;\n // var inlineCode =\n // document.createTextNode(`(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n // new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n // j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n // 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n // })(window,document,'script','dataLayer','GTM-MWFJ3JZ');`);\n const inlineCode2 =\n document.createTextNode(` window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());gtag('config', 'AW-10889637433');`);\n const inlineCode3 = document.createTextNode(\n `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFJ3JZ');`\n );\n // var inlineCode5 = document.createTextNode(\n // `(function(i,n,v,o,c,a) { i.InvocaTagId = o; var s = n.createElement('script'); s.type = 'text/javascript';\n // s.async = true; s.src = ('https:' === n.location.protocol ? 'https://' : 'http://' ) + v;\n // var fs = n.getElementsByTagName('script')[0]; fs.parentNode.insertBefore(s, fs);\n // })(window, document, 'solutions.invocacdn.com/js/invoca-latest.min.js', '2329/1629673968');`\n // );\n // scriptElm.appendChild(inlineCode);\n scriptElm2.appendChild(inlineCode2);\n scriptElm4.appendChild(inlineCode3);\n // scriptElm5.appendChild(inlineCode5);\n\n // scriptElm.setAttribute('id', id);\n scriptElm2.setAttribute('id', id2);\n // scriptElm3.setAttribute('id', id3);\n scriptElm4.setAttribute('id', id4);\n scriptElm5.setAttribute('id', id5);\n\n // document.head.prepend(scriptElm);\n document.head.prepend(scriptElm2);\n // document.head.prepend(scriptElm3);\n // document.head.prepend(scriptElm4);\n // document.head.prepend(scriptElm5);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n return (\n <>\n \n
\n
\n Your store{' '}\n {router.pathname.match(/book|schedule|confirm|pre-open/g) ? (\n \n {franchiseeSelection === '' ? (\n \n \n \n ) : (\n {franchiseeSelection.toUpperCase()}\n )}\n \n ) : (\n {\n e.preventDefault();\n navigator.geolocation.getCurrentPosition(\n getLocationFromGoogle,\n getLocationFromIP\n );\n e.stopPropagation();\n setShowDrawer(!showDrawer);\n }}\n >\n {franchiseeSelection === '' ? (\n \n \n \n ) : (\n {franchiseeSelection.toUpperCase()}\n )}\n \n )}\n
\n
\n
\n {/*
  • */}\n \n \n BOOK YOUR CLEANING\n \n \n {/*
  • */}\n
    \n
    \n Call for a Free Estimate!{' '}\n \n {phoneNumber === '' ? (\n \n \n  \n \n \n ) : (\n \n )}\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n
    \n \n \n setMobileNavbarActive(!mobileNavbarActive)}\n className={`${mobileNavbarActive ? 'active' : ''}`}\n aria-label='Navigation Toggle'\n >\n \n \n
    \n {funnelPages.includes(router.pathname) ? (\n
    \n Call for a Free Estimate!{' '}\n
    \n {phoneNumber === '' ? (\n \n  \n \n ) : (\n \n )}\n
    \n
    \n ) : (\n <>\n )}\n \n {!mobileNavbarActive ?\n
  • \n \n \n Services \n \n \n \n
  • \n :\n <>\n
  • \n \n \n Services\n \n \n
  • \n
  • \n \n Recurring Cleaning\n \n
  • \n
  • \n \n One-Time Cleaning\n \n
  • \n
  • \n \n Move-in/Move-out\n \n
  • \n
  • \n \n Deep Cleaning\n \n
  • \n
  • \n \n Apartment Cleaning\n \n
  • \n \n }\n\n
  • \n \n \n Locations\n \n \n
  • \n
  • \n {' '}\n \n \n Why Hire Us\n \n \n
  • \n\n
  • \n {' '}\n \n \n Franchise Opportunities\n \n \n
  • \n
  • \n -1\n ? `/${franchiseeSlug}/careers/`\n : '/careers/'\n }\n passHref\n prefetch={false}\n >\n We're Hiring \n \n
  • \n {/* These are the dropdown links ------------------------------- */}\n {!mobileNavbarActive && (\n
  • \n \n More \n \n
      \n {/* Put your dropdown links here */}\n
    • \n -1\n ? `/${franchiseeSlug}/about/`\n : '/about/'\n }\n passHref\n prefetch={false}\n >\n About \n \n
    • \n
    • \n
    • \n -1 ? '/' + franchiseeSlug : ''\n }/blog/page/1`}\n prefetch={false}\n >\n Blog \n \n
    • \n
    • \n -1\n ? `/${franchiseeSlug}/reviews/`\n : '/reviews/'\n }\n passHref\n prefetch={false}\n >\n Reviews \n \n
    • \n
    • \n -1\n ? `/${franchiseeSlug}/contact/`\n : '/'\n }\n >\n {\n if (franchiseeId === -1) {\n e.preventDefault();\n e.stopPropagation();\n setShowStorePicker(!showStorePicker);\n }\n }}\n className='header-link-reskin'\n aria-label={`Contact Us`}\n style={{\n color: router.pathname.match('/contact')\n ? '#000'\n : '',\n display: funnelPages.includes(router.pathname)\n ? 'none'\n : 'block',\n }}\n >\n Contact Us\n \n \n
    • \n
    \n
  • \n )}\n {mobileNavbarActive && (\n <>\n
  • \n -1\n ? `/${franchiseeSlug}/about/`\n : '/about/'\n }\n passHref\n prefetch={false}\n >\n \n About\n \n \n
  • \n
  • \n -1\n ? `/${franchiseeSlug}/careers/`\n : '/careers/'\n }\n passHref\n prefetch={false}\n >\n \n We're Hiring\n \n \n
  • \n
  • \n {' '}\n -1 ? '/' + franchiseeSlug : ''\n }/blog/page/1`}\n prefetch={false}\n >\n \n Blog\n \n \n
  • \n
  • \n -1\n ? `/${franchiseeSlug}/reviews/`\n : '/reviews/'\n }\n passHref\n prefetch={false}\n >\n \n Reviews\n \n \n
  • \n
  • \n -1 ? `/${franchiseeSlug}/contact/` : '/'\n }\n >\n {\n if (franchiseeId === -1) {\n e.preventDefault();\n e.stopPropagation();\n setShowStorePicker(!showStorePicker);\n }\n }}\n className='header-link-reskin'\n aria-label={`Contact Us`}\n style={{\n color: router.pathname.match('/contact')\n ? '#000'\n : '',\n display: funnelPages.includes(router.pathname)\n ? 'none'\n : 'block',\n }}\n >\n Contact Us\n \n \n
  • \n \n )}\n \n \n \n
    \n Your Store\n {router.pathname.match(/book|schedule|confirm|pre-open/g) ? (\n \n {franchiseeSelection === '' ? (\n \n \n \n ) : (\n {franchiseeSelection.toUpperCase()}\n )}\n \n ) : (\n {\n e.preventDefault();\n navigator.geolocation.getCurrentPosition(\n getLocationFromGoogle,\n getLocationFromIP\n );\n e.stopPropagation();\n setShowDrawer(!showDrawer);\n }}\n >\n {franchiseeSelection === '' ? (\n \n \n \n ) : (\n \n {franchiseeSelection.toUpperCase()}\n \n )}\n \n )}\n
    \n \n {showStorePicker && (\n setShowStorePicker(status)}\n />\n )}\n\n setShowDrawer(false)}>\n setShowDrawer(false)}\n />\n \n \n );\n};\n\nexport default Header;","/**\n * Sticky CTA until it hits the footer\n */\n\nconst ScrollOut = require('scroll-out');\n\nconst stickyScroll = () => {\n /*\n Types must be set to HTMLElement.\n Element does not allow for the use of dataset or style, and fails both linting and jest\n */\n const stickyCta: HTMLElement = document.querySelector('.sticky-cta');\n const footer: HTMLElement = document.querySelector('.footer');\n const header: HTMLElement = document.querySelector('.header');\n\n // content drawer and store-picker;\n const contentDrawer: HTMLElement = document.querySelector('.content-drawer');\n const drawerScrollWrapper: HTMLElement =\n contentDrawer.querySelector('.scroll-wrapper');\n\n if (!stickyCta || !footer) {\n return;\n }\n\n // When it becomes \"sticky\"\n const stick = () => {\n // Stick, but only if the footer isn't \"in\"\n if (footer.dataset.scroll === 'in') {\n return;\n }\n\n stickyCta.classList.add('sticky-cta--stuck');\n footer.style.marginTop = `${stickyCta.clientHeight}px`;\n\n if (contentDrawer && drawerScrollWrapper) {\n drawerScrollWrapper.style.height = `calc(100vh - (var(--header-height) * 2) - ${footer.style.marginTop})`;\n }\n\n const toastWrapper: NodeList = document.querySelectorAll('.toast-wrapper');\n\n // console.log(toastWrapper);\n\n if (toastWrapper.length) {\n toastWrapper.forEach((wrapper: HTMLElement) => {\n // eslint-disable-next-line no-param-reassign\n wrapper.style.top = 'calc(var(--header-height) + 15px)';\n });\n }\n };\n\n // When it becomes \"unsticky\"\n const unstick = () => {\n stickyCta.classList.remove('sticky-cta--stuck');\n footer.style.marginTop = '0';\n\n if (contentDrawer && drawerScrollWrapper) {\n // console.log('Current wrapper height', drawerScrollWrapper.style.height);\n drawerScrollWrapper.style.height =\n 'calc(100vh - (var(--header-height) * 2))';\n // console.log('New wrapper height', drawerScrollWrapper.style.height);\n }\n\n const toastWrapper: NodeList = document.querySelectorAll('.toast-wrapper');\n\n if (toastWrapper.length) {\n toastWrapper.forEach((wrapper: HTMLElement) => {\n // eslint-disable-next-line no-param-reassign\n wrapper.style.top = '15px';\n });\n }\n };\n\n // Sticks until it hits the footer\n ScrollOut({\n targets: '.footer',\n onShown: () => unstick(),\n onHidden: () => stick(),\n });\n\n ScrollOut({\n targets: header,\n offset: 1,\n onShown: () => stick(),\n onHidden: () => unstick(),\n onChange: () =>\n document.body.style.setProperty(\n '--header-height',\n `${header.clientHeight + 16}px`\n ),\n });\n\n // Hide when virtual keyboard is visible\n window.addEventListener('keyboardFocus', () => {\n unstick();\n });\n\n // Show when virtual keyboard blurs\n window.addEventListener('keyboardBlur', () => {\n stick();\n });\n};\n\nexport default stickyScroll;\n","import React from 'react';\nimport Head from 'next/head';\nimport { config, dom } from '@fortawesome/fontawesome-svg-core';\n\nimport { useRouter } from 'next/router';\nimport { pink500 } from '../../ui/colors';\nimport openGraph from '../../data/openGraph.json';\n\ninterface OpenGraphBoilerPlateProps {\n // add open graph boiler plate props here\n}\n\nconfig.autoAddCss = false;\n\nconst OpenGraphBoilerPlate: React.FC = () => {\n const router = useRouter();\n // if router is unavailable, default to the base url\n const canonicalURL = `https://twomaidscleaning.com${\n router?.asPath && router.asPath\n }`;\n return (\n \n \n {/* \n */}\n\n \n \n\n \n