{"version":3,"file":"4a242df952bc81a432060285504da3cdd4a8e31b-72c1cfb193ba1cd9b8a7.js","mappings":"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","sources":["webpack://commercial-ultramar/./src/components/locationFinder/LocationBar.jsx","webpack://commercial-ultramar/./src/components/locationFinder/LocationCard.js","webpack://commercial-ultramar/./src/components/locationFinder/LocationFilters.jsx","webpack://commercial-ultramar/./src/components/locationFinder/LocationList.jsx","webpack://commercial-ultramar/./src/components/locationFinder/LocationTypeFilter.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationDetails/LocationAmenityList.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationDetails/LocationDetails.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationDetails/LocationHeader.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationDetails/LocationHours.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationDetails/LocationProductList.jsx","webpack://commercial-ultramar/./src/utils/distance.js","webpack://commercial-ultramar/./src/hooks/useLocations.js","webpack://commercial-ultramar/./src/components/locationFinder/locationFinder.jsx","webpack://commercial-ultramar/./src/components/locationFinder/locationFinderStyle.js","webpack://commercial-ultramar/./src/components/locationFinder/map/map.jsx","webpack://commercial-ultramar/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://commercial-ultramar/./node_modules/date-fns/esm/toDate/index.js","webpack://commercial-ultramar/./src/utils/map.js","webpack://commercial-ultramar/./node_modules/date-fns/esm/getDay/index.js"],"sourcesContent":["import React, { useContext } from 'react';\nimport usePlacesAutocomplete, {\n getGeocode,\n getLatLng,\n} from 'use-places-autocomplete';\nimport classNames from 'classnames';\nimport { Combobox, Popover } from '@headlessui/react';\nimport { UserContext } from './locationFinder';\nimport LocationFilters from './LocationFilters';\n\nfunction Places() {\n const {\n value,\n setValue,\n suggestions: { status, data },\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: {\n country: ['ca'],\n },\n },\n });\n\n const { handleUpdateUserPosition } = useContext(UserContext);\n\n const handleSelect = async (val) => {\n setValue(val, false);\n clearSuggestions();\n const results = await getGeocode({ address: val });\n const newPosition = await getLatLng(results[0]);\n handleUpdateUserPosition(newPosition);\n };\n\n return (\n \n \n Assigned to\n \n
\n
\n \n \n \n
\n setValue(event.target.value)}\n />\n\n {status === 'OK' && (\n \n {data.map(({ place_id, description }) => (\n \n classNames(\n 'tw-relative tw-cursor-default tw-select-none tw-py-2 tw-pl-3 tw-pr-9 tw-list-none',\n active ? 'tw-bg-blue tw-text-white' : 'tw-text-gray-900'\n )\n }>\n {({ active, selected }) => (\n <>\n \n {description}\n \n\n {selected && (\n \n )}\n \n )}\n \n ))}\n \n )}\n
\n \n );\n}\n\nconst LocationBar = () => {\n return (\n
\n
\n
\n \n
\n {/* \n \n \n \n \n \n \n \n \n */}\n
\n
\n );\n};\n\nexport default LocationBar;\n","import React, { useContext } from 'react';\nimport { formatTodaysHours, getParsedHours } from '../../utils/map';\nimport { LocationContext } from './locationFinder';\nimport { useTranslation } from 'react-i18next';\n\nexport default function LocationCard({ location, dayOfWeek }) {\n const { t, i18n } = useTranslation();\n const { handleSetActiveLocation } = useContext(LocationContext);\n\n return (\n
\n
\n
\n
\n {location.brand &&
}\n
\n

\n {location.Site_Description}\n

\n

\n {location.Address_1} \n \n {location.City}, {location.Province}, {location.Postal_Code}\n \n

\n
\n
\n {!!location.distanceFromInKms && (\n
\n
\n \n \n \n
\n \n {location.distanceFromInKms} KM\n \n
\n )}\n
\n
\n
\n
\n {location.Hours_of_Operation &&\n getParsedHours(location.Hours_of_Operation)}\n
\n {/*
No of Amenities :{location.filters.length}
*/}\n
\n
\n handleSetActiveLocation(location)}>\n {t('VIEW DETAILS')}\n \n
\n
\n
\n
\n );\n}\n","import React, { useContext } from 'react';\nimport {\n locationAmenities,\n locationProducts,\n cardLockFilters,\n retailFilters,\n} from '../../utils/map';\nimport { useTranslation } from 'react-i18next';\nimport { FilterContext } from './locationFinder';\n\nexport default function LocationFilters() {\n const { t } = useTranslation();\n\n const {\n activeFilterIds,\n handleFilterChange,\n activeTypeId,\n activeFilterProductIds,\n handleProductFilterChange,\n } = useContext(FilterContext);\n\n return (\n
\n \n {t('FILTER BY AMENITIES')}\n \n
\n {locationAmenities\n .filter((filter) => {\n if (activeTypeId === 'cardLock') {\n return cardLockFilters.find((f) => f === filter.value);\n }\n if (activeTypeId === 'retail') {\n return retailFilters.find((f) => f === filter.value);\n }\n if (activeTypeId === 'all-locations') {\n return true;\n }\n return false;\n })\n .map((filter) => (\n \n {\n handleFilterChange(filter.id);\n }}\n className=\"tw-w-4 tw-h-4 tw-border-gray-300 tw-rounded focus:tw-ring-yellow tw-text-yellow tw-accent-blue\"\n />\n
\n \n {t(filter.value)}\n \n
\n
\n ))}\n {locationProducts.map((filter) => (\n \n {\n handleProductFilterChange(filter.ref);\n }}\n className=\"tw-w-4 tw-h-4 tw-border-gray-300 tw-rounded tw-accent-blue\"\n />\n
\n \n {t(filter.enValue)}\n \n
\n \n ))}\n \n
\n );\n}\n","import React from 'react';\n\nimport { getDayOfWeek } from '../../utils/map';\nimport LocationCard from './LocationCard';\n\nexport default function LocationList({ locations, className }) {\n const dayOfWeek = getDayOfWeek();\n\n return (\n
\n {!locations &&
No Locations
}\n {locations &&\n locations.map((location) => (\n \n ))}\n
\n );\n}\n","import React, { useContext } from 'react';\nimport { RadioGroup } from '@headlessui/react';\nimport classNames from 'classnames';\nimport { locationTypes } from '../../utils/map';\nimport { FilterContext } from './locationFinder';\nimport { useTranslation } from 'react-i18next';\n\nexport default function LocationTypeFilter() {\n const { activeTypeId, setActiveTypeId } = useContext(FilterContext);\n const { t } = useTranslation();\n return (\n
\n \n \n Location Type\n \n\n
\n {locationTypes.map((type) => (\n \n {({ checked }) => (\n \n {t(type.value.toUpperCase())}\n \n )}\n \n ))}\n
\n
\n
\n );\n}\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst Amenity = ({ id, value }) => {\n return (\n
\n \n \n {value}\n \n
\n );\n};\n\nconst LocationAmenityList = ({ location }) => {\n const { t } = useTranslation();\n return (\n
\n {!!location?.amenities?.length && (\n
\n

\n {t('Amenities')}\n

\n
\n {location.amenities.map((amenity) => (\n \n ))}\n
\n
\n )}\n
\n );\n};\n\nexport default LocationAmenityList;\n","import React, { useContext } from 'react';\nimport { LocationContext } from '../locationFinder';\nimport LocationHours from './LocationHours';\nimport LocationHeader from './LocationHeader';\nimport LocationAmenityList from './LocationAmenityList';\nimport LocationProductList from './LocationProductList';\nimport { useTranslation } from 'react-i18next';\n\nconst LocationDetails = () => {\n const { activeLocation, handleSetActiveLocation } =\n useContext(LocationContext);\n const { t } = useTranslation();\n return (\n
\n
\n handleSetActiveLocation(null)}\n className=\"tw-py-2 tw-grid tw-rounded-sm tw-bg-blue-light tw-border-none tw-text-white tw-px-4 tw-place-content-center\">\n {'<'} {t('BACK')}\n \n
\n
\n \n \n \n \n
\n \n {t('GET DIRECTIONS')}\n \n
\n
\n
\n );\n};\n\nexport default LocationDetails;\n","import React from 'react';\n\nconst LocationHeader = ({ location }) => {\n return (\n
\n

\n {location.Site_Description}\n

\n

\n {location.Address_1} \n \n {location.City}, {location.Province}, {location.Postal_Code}\n \n

\n\n {location.distanceFromInKms && (\n

\n {location.distanceFromInKms} kms away\n

\n )}\n

\n {location.Phone}\n

\n
\n );\n};\n\nexport default LocationHeader;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { getParsedHours } from '../../../utils/map';\n\nconst LocationHours = ({ location }) => {\n const { t } = useTranslation();\n const hours = getParsedHours(location.Hours_of_Operation);\n return (\n
\n

\n {t('HOURS OF OPERATION')}\n

\n \n
\n );\n};\n\nexport default LocationHours;\n","import React from 'react';\nimport { getLocationProducts } from '../../../utils/map';\nimport { useTranslation } from 'react-i18next';\n\nconst LocationProduct = ({ id, value }) => {\n return (\n
\n \n \n {value}\n \n
\n );\n};\nconst LocationProductList = ({ location }) => {\n const { t, i18n } = useTranslation();\n const products = getLocationProducts(location);\n return (\n
\n {!!products.length && (\n
\n

\n {t('Products')}\n

\n
\n {products.map((product) => (\n \n ))}\n
\n
\n )}\n
\n );\n};\n\nexport default LocationProductList;\n","// Converts numeric degrees to radians\nfunction toRad(Value) {\n return (Value * Math.PI) / 180;\n}\n\nfunction calcCrow(lat1, lon1, lat2, lon2) {\n const R = 6371; // km\n const dLat = toRad(lat2 - lat1);\n const dLon = toRad(lon2 - lon1);\n const lat1Rad = toRad(lat1);\n const lat2Rad = toRad(lat2);\n\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2) *\n Math.cos(lat1Rad) *\n Math.cos(lat2Rad);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n const d = R * c;\n return Math.round(d);\n}\n\nexport const getDistanceFromPosition = (item, position) => {\n return calcCrow(\n item.position.lat,\n item.position.lng,\n position.lat,\n position.lng\n );\n};\n\n// export const sortDistanceFromPosition = (a, b, position, order = 'ASC') => {\n// switch (order) {\n// case 'ASC':\n// return (\n// getDistanceFromPosition(a, position) -\n// getDistanceFromPosition(b, position)\n// );\n// case 'DES':\n// default:\n// return (\n// getDistanceFromPosition(b, position) -\n// getDistanceFromPosition(a, position)\n// );\n// }\n// };\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport stations from '../data/stations.json';\nimport {\n DEFAULT_MAP_POSITION,\n filterLocation,\n getMarkerIcon,\n} from '../utils/map';\nimport { getDistanceFromPosition } from '../utils/distance';\n\nconst useLocations = ({\n mapRef,\n activeTypeId,\n activeFilterIds,\n activeFilterProductIds,\n}) => {\n const [userPosition, setUserPosition] = useState();\n\n const locationInitialization = useMemo(() => {\n return stations.map((station) => {\n return {\n distanceFromInKms: null,\n ...station,\n };\n });\n }, [stations]);\n\n const locations = useMemo(() => {\n let updatedStations = locationInitialization\n .filter((location) =>\n filterLocation(\n location,\n activeTypeId,\n activeFilterIds,\n activeFilterProductIds\n )\n )\n .map((station) => {\n const distanceFromInKms = null;\n\n if (userPosition) {\n station.distanceFromInKms = getDistanceFromPosition(\n station,\n userPosition\n );\n }\n return {\n distanceFromInKms,\n ...station,\n };\n });\n\n if (userPosition) {\n updatedStations = updatedStations.sort(\n (a, b) => a.distanceFromInKms - b.distanceFromInKms\n );\n }\n\n return updatedStations;\n }, [\n locationInitialization,\n userPosition,\n activeFilterProductIds,\n activeFilterIds,\n activeTypeId,\n ]);\n\n const handleUpdateUserPosition = useCallback(\n (position) => {\n console.log('updating user position');\n setUserPosition(position);\n\n if (mapRef) {\n mapRef.current?.panTo(position);\n mapRef.current?.setZoom(10);\n }\n },\n [mapRef, locations]\n );\n\n useEffect(() => {\n const getUserCoords = async () => {\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const userCoords = {\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n };\n handleUpdateUserPosition(userCoords);\n },\n (err) => console.log(err)\n );\n }\n };\n getUserCoords();\n }, [setUserPosition]);\n\n return { locations, userPosition, handleUpdateUserPosition };\n};\n\nexport default useLocations;\n","import React, {\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport Map from './map/map';\nimport * as Styled from './locationFinderStyle';\nimport { useLoadScript } from '@react-google-maps/api';\nimport useLocations from '../../hooks/useLocations';\nimport { locationTypes } from '../../utils/map';\nimport LocationList from './LocationList';\nimport LocationDetails from './locationDetails/LocationDetails';\nimport LocationBar from './LocationBar';\nimport LocationTypeFilter from './LocationTypeFilter';\nimport { useTranslation } from 'react-i18next';\n\nexport const LocationContext = createContext();\nexport const FilterContext = createContext();\nexport const UserContext = createContext();\nconst libraries = ['places'];\nexport default function LocationFinder({ heightOffsetRef }) {\n const { i18n } = useTranslation();\n\n const mapRef = useRef(null);\n const filterRef = useRef(null);\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n if (\n !heightOffsetRef?.current?.clientHeight &&\n !filterRef?.current?.clientHeight\n ) {\n return 0;\n }\n if (window.innerWidth < 768) {\n return 0;\n }\n\n setHeight(\n heightOffsetRef?.current?.clientHeight + filterRef?.current?.clientHeight\n );\n }, [\n heightOffsetRef?.current?.clientHeight,\n filterRef?.current?.clientHeight,\n ]);\n\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey: process.env.GATSBY_GOOGLE_MAP_APIKEY2,\n libraries,\n language: i18n.resolvedLanguage === 'en' ? 'en' : 'fr-CA',\n });\n\n const [activeLocation, setActiveLocation] = useState();\n const [activeFilterIds, setActiveFilterIds] = useState([]);\n const [activeFilterProductIds, setActiveFilterProductIds] = useState([]);\n\n const [activeTypeId, setActiveTypeId] = useState(locationTypes[0].id);\n const useLocationValues = useMemo(() => {\n return {\n mapRef,\n activeTypeId,\n activeFilterIds,\n activeFilterProductIds,\n };\n }, [mapRef, activeTypeId, activeFilterIds, activeFilterProductIds]);\n\n const { locations, userPosition, handleUpdateUserPosition } =\n useLocations(useLocationValues);\n const updateMap = () => {\n mapRef.current?.setZoom(mapRef.current.getZoom());\n };\n\n const handleFilterChange = (id) => {\n // check if has filter if so remove otherwise add filter\n setActiveFilterIds((prev) =>\n prev.includes(id) ? prev.filter((prevId) => prevId !== id) : [...prev, id]\n );\n updateMap();\n };\n const handleProductFilterChange = (id) => {\n // check if has filter if so remove otherwise add filter\n setActiveFilterProductIds((prev) =>\n prev.includes(id) ? prev.filter((prevId) => prevId !== id) : [...prev, id]\n );\n updateMap();\n };\n\n const handleSetActiveLocation = (location) => {\n setActiveLocation(location);\n if (!location) {\n return;\n }\n mapRef.current?.panTo(location?.position);\n const currentZoomLevel = mapRef.current?.getZoom();\n if (currentZoomLevel < 10) {\n mapRef.current?.setZoom(14);\n }\n };\n\n const handleSetTypeFilterId = (typeId) => {\n setActiveTypeId(typeId);\n setActiveFilterIds([]);\n setActiveLocation(null);\n updateMap();\n };\n\n if (!isLoaded) {\n return
Loading
;\n }\n\n return (\n \n \n \n
\n {loadError && (\n
Sorry, There was an error when trying to load the map
\n )}\n
\n {activeLocation && }\n
\n \n \n
\n \n \n
\n \n
\n {!!isLoaded && (\n \n )}\n
\n
\n \n
\n \n );\n}\n","import styled from 'styled-components';\n\nexport const LocationsTop = styled.div`\n position: relative;\n margin-top: 220px;\n font-family: 'HelveticaNeue-Light', arial, sans-serif;\n font-size: 20px;\n line-height: 32px;\n color: rgba(0, 0, 0, 0.6);\n @media (max-width: 1399px) {\n margin-top: 210px;\n font-size: 20px;\n line-height: 32px;\n }\n @media (max-width: 1199px) {\n margin-top: 310px;\n }\n @media (max-width: 991px) {\n margin-top: 0;\n }\n`;\n\nexport const LocationTopClearFix = styled(LocationsTop)`\n :after {\n visibility: hidden;\n display: block;\n font-size: 0;\n content: ' ';\n clear: both;\n height: 0;\n }\n`;\n","import React, { useCallback, useContext, useMemo } from 'react';\n\nimport { GoogleMap, MarkerClusterer, MarkerF } from '@react-google-maps/api';\nimport { LocationContext } from '../locationFinder';\nimport { DEFAULT_MAP_POSITION } from '../../../utils/map';\n\nconst containerStyle = {\n width: '100%',\n height: '100%',\n};\n\nconst Map = ({ mapRef, style }) => {\n const { locations, handleSetActiveLocation } = useContext(LocationContext);\n\n const handleLoad = useCallback(\n (map) => {\n mapRef.current = map;\n // eslint-disable-next-line no-undef\n const bounds = new google.maps.LatLngBounds();\n\n if (locations) {\n locations.forEach((location) => {\n bounds.extend(location.position);\n });\n }\n mapRef.current.fitBounds(bounds);\n },\n [mapRef, locations]\n );\n\n const [retail, cardlock] = useMemo(() => {\n const retail = locations.filter((location) => !location.hasNfn);\n const cardlock = locations.filter((location) => location.hasNfn);\n return [retail, cardlock];\n }, [locations]);\n\n return (\n \n {retail && (\n \n {(clusterer) =>\n retail.map((location) => (\n {\n handleSetActiveLocation(location);\n }}\n />\n ))\n }\n \n )}\n {cardlock && (\n \n {(clusterer) =>\n cardlock.map((location) => (\n {\n handleSetActiveLocation(location);\n }}\n />\n ))\n }\n \n )}\n \n );\n};\n\nexport default Map;\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import { LocationTypes } from '../constants';\n\nimport IconIconMapPinBranch from '../images/icon-map-pin-branch.png';\nimport IconMapPinCardlockPC from '../images/icon-map-pin-cardlock-pc.png';\nimport IconMapPinCardlockUm from '../images/icon-map-pin-cardlock-um.png';\nimport iconPinBoth from '../images/icon-map-pin-branch-cardlock.png';\n\nexport const DEFAULT_MAP_POSITION = {\n lat: 58,\n lng: -100,\n};\n\nconst formatFrenchHours = (time, isEvening = false) => {\n const hours = time.split(':')[0];\n const minutes = time.split(':')[1];\n const hoursFormatted = isEvening ? +hours + 12 : hours;\n const minutesFormatted = minutes > 0 ? `${minutes}` : '';\n const timeFormatted = `${hoursFormatted}h${minutesFormatted}`;\n return timeFormatted;\n};\n\nconst formatEnglishHours = (time, isEvening) => {\n const hours = time.split(':')[0];\n const minutes = time.split(':')[1];\n const timeFormatted = `${hours}:${minutes} ${isEvening ? 'PM' : 'AM'}`;\n return timeFormatted;\n};\n\nexport const formatTodaysHours = (hours, locale) => {\n if (!hours) {\n return 'error formatting hours';\n }\n const closingHoursArray = hours.closing.split(':');\n closingHoursArray.pop();\n if (closingHoursArray.length === 0) {\n return locale.includes('en')\n ? 'Hours unavailable'\n : 'Heures non disponibles';\n }\n\n const openingHours = locale.includes('en')\n ? formatEnglishHours(hours.opening, false)\n : formatFrenchHours(hours.opening, false);\n let closingHours = locale.includes('en')\n ? formatEnglishHours(hours.closing, true)\n : formatFrenchHours(hours.closing, true);\n\n const closingHoursCheck = closingHoursArray.join(':');\n if (closingHoursCheck === '11:59') {\n closingHours = locale.includes('en') ? 'Midnight' : 'minuit';\n }\n\n return `${openingHours} - ${closingHours}`;\n};\n\nexport const getMarkerIcon = (type) => {\n switch (type) {\n case LocationTypes.Branch:\n return IconIconMapPinBranch;\n case LocationTypes.UltramarCardlock:\n return IconMapPinCardlockUm;\n case LocationTypes.PipelineCardlock:\n return IconMapPinCardlockPC;\n default:\n return iconPinBoth;\n }\n};\n\nimport { getDay } from 'date-fns';\n\nexport function getDayOfWeek() {\n const date = new Date();\n const day = getDay(date);\n const days = [\n 'sunday',\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n ];\n return days[day];\n}\n\nexport function matchBrand(fuelBrand, brand) {\n let brandTitle;\n // matching to Contentful's brand title\n //TODO: get short text field made in contentful for MDM fuel brand\n switch (fuelBrand) {\n case 'FGO-Fas Gas':\n case 'FGP-Fas Gas Plus':\n brandTitle = 'Fas Gas Plus';\n break;\n case 'IOL-Esso':\n case 'Esso':\n brandTitle = 'Esso';\n break;\n case 'CHV-Chevron':\n case 'Chevron':\n brandTitle = 'Chevron';\n break;\n case 'ULT-Ultramar':\n case 'Ultramar':\n brandTitle = 'Ultramar';\n break;\n case 'SRG-SERGAZ':\n brandTitle = 'SERGAZ';\n break;\n case 'PNR-Pioneer':\n brandTitle = 'Pioneer';\n break;\n case 'CTND-Couche-Tard NON-DEALER':\n brandTitle = 'Couche Tard';\n break;\n case 'RTF-Race Trac':\n brandTitle = 'Race Trac';\n break;\n case 'SHE-Shell':\n brandTitle = 'Shell';\n break;\n case 'Pipeline':\n case 'PIP-Pipeline':\n brandTitle = 'Pipeline Commercial';\n break;\n case 'Columbia Fuels':\n case 'CF-Columbia Fuels':\n brandTitle = 'Columbia';\n break;\n case 'Bluewave':\n case 'BLU-Bluewave':\n brandTitle = 'Bluewave';\n break;\n case 'PCA-Petro Canada':\n brandTitle = 'Petro Canada';\n break;\n default:\n brandTitle = null;\n }\n\n if (brandTitle === brand.fields.brand) {\n return true;\n }\n return false;\n}\n\n// TODO: add to dictionary\nexport const locationProducts = [\n {\n enId: 'diesel',\n ref: 'HasDiesel_5',\n enValue: 'Diesel',\n },\n {\n enId: 'marked-diesel',\n ref: 'MarkedDiesel',\n enValue: 'Marked Diesel',\n },\n {\n enId: 'DEF',\n ref: 'Def',\n enValue: 'Diesel Exhaust Fluid',\n },\n {\n enId: 'gas',\n ref: 'Hasmarkedgas',\n enValue: 'Gas',\n },\n];\n\nexport const getLocationProducts = (location) => {\n return locationProducts.filter((product) => {\n const ref = location[product.ref];\n return ref !== 'No Data';\n });\n};\n\nexport const locationAmenities = [\n // {\n // id: 'air',\n // value: 'Air',\n // valueFr: 'Air',\n // ref: 'hasAir',\n // },\n // {\n // id: 'atm',\n // value: 'ATM',\n // valueFr: 'Guichet automatique bancaire',\n // ref: 'hasAtm',\n // },\n // {\n // id: 'car-wash',\n // value: 'Car Wash',\n // valueFr: 'Lave-auto',\n // ref: 'hasCarWash',\n // },\n {\n id: 'convenience-store',\n value: 'Convenience Store',\n valueFr: 'Dépanneurs',\n ref: 'HasCstore_5',\n },\n {\n id: 'lounge',\n value: 'Lounge',\n ref: 'Driverslounge',\n },\n {\n id: 'parking',\n value: 'Parking',\n valueFr: 'Stationnement',\n ref: 'Parking',\n },\n {\n id: 'restrooms',\n value: 'Restrooms',\n valueFr: 'Toilettes',\n ref: 'Restrooms',\n },\n {\n id: 'restaurant',\n value: 'Restaurant',\n valueFr: 'Restaurant',\n ref: 'Restaurant',\n },\n {\n id: 'shower',\n value: 'Shower',\n valueFr: 'Douche',\n ref: 'HasShower',\n },\n // {\n // id: 'vacuum',\n // value: 'Vacuum',\n // valueFr: 'Vacuum',\n // ref: 'hasVacuum',\n // },\n {\n id: 'wifi',\n value: 'Wifi',\n valueFr: 'Wifi',\n ref: 'WI_FI',\n },\n];\n\nexport const locationTypes = [\n {\n id: 'all-locations',\n value: 'All Locations',\n valueFr: 'Toutes les stations',\n },\n {\n id: 'cardlock',\n value: 'Cardlock',\n valueFr: 'Cardlock',\n },\n {\n id: 'retail',\n value: 'Retail',\n valueFr: 'Vente au détail',\n },\n];\n\nexport const retailFilters = [\n 'Convenience Store',\n 'Car Wash',\n 'Restaurant',\n 'Restroom',\n 'Air',\n 'Vacuum',\n 'ATM',\n 'Parking',\n '24 hour station',\n];\n\nexport const cardLockFilters = [\n 'Shower',\n 'Restrooms',\n 'Restaurant',\n 'Parking',\n 'Lounge',\n 'Convenience Store',\n 'Wifi',\n];\n\nexport const checkLocationType = (typeId, location) => {\n if (typeId === 'all-locations') {\n return true;\n }\n if (typeId === 'cardlock') {\n return location.hasNfn;\n }\n if (typeId === 'retail') {\n return !location.hasNfn;\n }\n};\n\nexport const filterLocation = (\n location,\n activeTypeId,\n activeFilterIds,\n activeProductFilters\n) => {\n const isCorrectType = checkLocationType(activeTypeId, location);\n if (!isCorrectType) {\n return false;\n }\n let hasActiveAmenityFilters = true;\n const hasActiveProductFilters = true;\n if (activeFilterIds.length !== 0) {\n hasActiveAmenityFilters = activeFilterIds.every((filterId) =>\n location.filters.find((filter) => filter.id === filterId)\n );\n }\n if (activeProductFilters.length !== 0) {\n hasActiveAmenityFilters = activeProductFilters.every((filterId) => {\n return location[filterId] === 'YES';\n });\n }\n return hasActiveProductFilters && hasActiveAmenityFilters;\n};\n\nexport const filterAmenityFilters = (filter, typeId) => {\n if (typeId === 'all-locations') {\n return true;\n }\n if (typeId === 'cardlock') {\n return cardLockFilters.find((f) => {\n const hasFilter = f === filter.value;\n return hasFilter;\n });\n }\n if (typeId === 'retail') {\n return retailFilters.find((f) => {\n const hasFilter = f === filter.value;\n return hasFilter;\n });\n }\n};\n\nexport const getParsedHours = (hours) => {\n if (hours === '24 Hrs') {\n return hours;\n }\n const regex = /\\((.*?)\\)/;\n const match = hours.match(regex);\n if (match) {\n const parsedHours = match[1];\n return parsedHours;\n }\n return '';\n};\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}"],"names":["Places","usePlacesAutocomplete","requestOptions","componentRestrictions","country","value","setValue","suggestions","status","data","clearSuggestions","handleUpdateUserPosition","useContext","UserContext","handleSelect","val","getGeocode","address","results","getLatLng","newPosition","as","onChange","className","xmlns","fill","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","event","target","map","place_id","description","key","active","classNames","selected","LocationCard","location","dayOfWeek","useTranslation","t","handleSetActiveLocation","i18n","LocationContext","brand","Site_Description","Address_1","City","Province","Postal_Code","distanceFromInKms","fillRule","clipRule","Hours_of_Operation","getParsedHours","onClick","LocationFilters","FilterContext","activeFilterIds","handleFilterChange","activeTypeId","activeFilterProductIds","handleProductFilterChange","locationAmenities","filter","cardLockFilters","f","retailFilters","id","name","type","checked","includes","htmlFor","locationProducts","ref","enValue","LocationList","locations","getDayOfWeek","Site_ID","LocationTypeFilter","setActiveTypeId","locationTypes","toUpperCase","Amenity","src","alt","amenities","length","amenity","activeLocation","href","rel","Phone","hours","LocationProduct","products","getLocationProducts","product","enId","resolvedLanguage","frId","toRad","Value","Math","PI","getDistanceFromPosition","item","position","lat1","lat","lon1","lng","lat2","lon2","dLat","dLon","lat1Rad","lat2Rad","a","sin","cos","atan2","sqrt","round","mapRef","useState","userPosition","setUserPosition","locationInitialization","useMemo","stations","station","updatedStations","filterLocation","sort","b","useCallback","console","log","current","panTo","setZoom","useEffect","getUserCoords","navigator","geolocation","getCurrentPosition","userCoords","coords","latitude","longitude","err","createContext","libraries","LocationFinder","heightOffsetRef","useRef","filterRef","height","setHeight","clientHeight","window","innerWidth","useLoadScript","googleMapsApiKey","process","language","isLoaded","loadError","setActiveLocation","setActiveFilterIds","setActiveFilterProductIds","useLocationValues","useLocations","updateMap","getZoom","prev","prevId","handleSetTypeFilterId","typeId","Provider","LocationDetails","LocationBar","style","LocationsTop","styled","LocationTopClearFix","containerStyle","width","handleLoad","bounds","google","maps","LatLngBounds","forEach","extend","fitBounds","hasNfn","retail","cardlock","mapContainerStyle","mapContainerClassName","center","DEFAULT_MAP_POSITION","zoom","options","fullscreenControl","mapTypeControl","streetViewControl","onLoad","averageCenter","gridSize","ignoreHidden","styles","textColor","url","anchorText","clusterer","icon","requiredArgs","required","args","TypeError","toDate","argument","arguments","argStr","Object","prototype","toString","call","Date","getTime","warn","Error","stack","NaN","day","dirtyDate","getDay","valueFr","activeProductFilters","isCorrectType","checkLocationType","hasActiveAmenityFilters","every","filterId","filters","find","match"],"sourceRoot":""}