{"version":3,"file":"static/chunks/app/[locale]/m/[slug]/page-8523ee2a9e470346.js","mappings":"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","sources":["webpack://_N_E/?6613","webpack://_N_E/./app/[locale]/(search)/locations/_components/utils.ts","webpack://_N_E/./components/head/BreadcrumbListSchema.tsx","webpack://_N_E/./lib/breadcrumb-schemas/list-items/home-list-item.ts","webpack://_N_E/./lib/breadcrumb-schemas/list-items/metro-list-item.ts","webpack://_N_E/./lib/breadcrumb-schemas/metro-breadcrumb-schema.ts","webpack://_N_E/./app/[locale]/m/[slug]/_components/MarketDescriptionText.tsx","webpack://_N_E/./app/[locale]/m/[slug]/_components/MarketDescriptionTitle.tsx","webpack://_N_E/./app/[locale]/m/[slug]/_components/MarketDescription.tsx","webpack://_N_E/./components/search/SearchTitle.tsx","webpack://_N_E/./app/[locale]/m/[slug]/_components/MarketDiscovery.tsx","webpack://_N_E/./app/[locale]/m/[slug]/_components/MarketPage.tsx","webpack://_N_E/./components/Carousel/constants.ts","webpack://_N_E/./components/Carousel/useScrollHandlers.tsx","webpack://_N_E/./components/CircleLoader.tsx","webpack://_N_E/./components/FormattedPriceText.tsx","webpack://_N_E/./utils/image-loaders.ts","webpack://_N_E/./utils/image-placeholder.ts","webpack://_N_E/./components/ImageWithPlaceholder.tsx","webpack://_N_E/./components/LocationOpeningLabel.tsx","webpack://_N_E/./components/buttons/ButtonAsLink.tsx","webpack://_N_E/./components/buttons/PrimaryButton.tsx","webpack://_N_E/./components/buttons/SecondaryButton.tsx","webpack://_N_E/./components/buttons/ArrowButton.tsx","webpack://_N_E/./components/buttons/TertiaryButton.tsx","webpack://_N_E/./components/buttons/index.ts","webpack://_N_E/./components/map/LocationMap.tsx","webpack://_N_E/./components/map/TilesCarousel.tsx","webpack://_N_E/./components/search/CardListWrapper.tsx","webpack://_N_E/./app/[locale]/(search)/coworking/_components/DayPassCtaPrice.tsx","webpack://_N_E/./components/CaptionImage.tsx","webpack://_N_E/./components/cards/LocationCardImage.tsx","webpack://_N_E/./components/cards/LocationCardSearch.tsx","webpack://_N_E/./components/search/LocationSearchList.tsx","webpack://_N_E/./components/search/SearchCard.tsx","webpack://_N_E/./components/search/SearchNoResults.tsx","webpack://_N_E/./public/icons/listIcon.svg","webpack://_N_E/./public/icons/mapIcon.svg","webpack://_N_E/./components/search/SwitchViewButton.tsx","webpack://_N_E/./components/search/search-type.enum.ts","webpack://_N_E/./components/search/types.tsx","webpack://_N_E/./components/search/utils.ts","webpack://_N_E/./components/typography/PrimaryHeading.tsx","webpack://_N_E/./components/typography/SecondaryHeading.tsx","webpack://_N_E/./components/typography/TertiaryHeading.tsx","webpack://_N_E/./components/typography/BodyBoldUppercase.tsx","webpack://_N_E/./components/typography/index.ts","webpack://_N_E/./hooks/useAppearOnScroll.tsx","webpack://_N_E/./hooks/useDebounce.tsx","webpack://_N_E/./hooks/useLocationImagePlaceholder.tsx","webpack://_N_E/./hooks/useRouter.tsx","webpack://_N_E/./lib/countries.ts","webpack://_N_E/./lib/locations/dto/location.dto.ts","webpack://_N_E/./lib/locations/dto/location-price.dto.ts","webpack://_N_E/./lib/locations/dto/sort-filter.enum.ts","webpack://_N_E/./lib/locations/dto/index.ts","webpack://_N_E/./lib/locations/dto/location-phases.enum.ts","webpack://_N_E/./lib/locations/dto/manager-roles.enum.ts","webpack://_N_E/./models/Countries.enum.ts","webpack://_N_E/./models/Frequency.enum.ts","webpack://_N_E/./models/location-utils.ts","webpack://_N_E/./utils/date-utils.ts","webpack://_N_E/./utils/gtm.ts","webpack://_N_E/./models/BrandNames.enum.ts","webpack://_N_E/./utils/validators/string-day-validator.ts","webpack://_N_E/./utils/locations.ts","webpack://_N_E/./utils/select-option-utils.ts"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"MarketsPage\"] */ \"/codebuild/output/src3395698585/src/website/app/[locale]/m/[slug]/_components/MarketPage.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/codebuild/output/src3395698585/src/website/node_modules/next-intl/dist/esm/navigation/shared/BaseLink.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/codebuild/output/src3395698585/src/website/node_modules/next-intl/dist/esm/navigation/shared/LegacyBaseLink.js\");\n","import { SimpleLocationSearchDto } from '@/lib/locations/dto';\n\nexport function isSsosAvailable(location: SimpleLocationSearchDto) {\n return 'ssosAvailable' in location && location.ssosAvailable === true;\n}\n","import { BreadcrumbList, WithContext } from 'schema-dts';\n\ntype BreadcrumbListSchemaProps = {\n schema: WithContext;\n};\n\nexport function BreadcrumbListSchema(props: BreadcrumbListSchemaProps) {\n const { schema } = props;\n\n return (\n \n );\n}\n","import { ListItem } from 'schema-dts';\n\nexport function getHomeListItemSchema(): ListItem {\n return {\n '@type': 'ListItem',\n position: 1,\n name: 'Home',\n item: 'https://www.industriousoffice.com/',\n };\n}\n","import { ListItem } from 'schema-dts';\n\nexport function getMetroListItem(props: {\n name: string;\n slug: string;\n host: string;\n}): ListItem {\n const { name, slug, host } = props;\n return {\n '@type': 'ListItem',\n position: 2,\n name,\n item: `${host}/m/${slug}`,\n };\n}\n","import { getHomeListItemSchema } from './list-items/home-list-item';\nimport { getMetroListItem } from './list-items/metro-list-item';\n\nimport { BreadcrumbList, WithContext } from 'schema-dts';\n\nexport function getMetroBreadcrumbList(props: {\n name: string;\n slug: string;\n host: string;\n}): WithContext {\n return {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: [getHomeListItemSchema(), getMetroListItem(props)],\n };\n}\n","type MarketDescriptionTextProps = {\n text: string;\n};\n\nexport default function MarketDescriptionText({\n text,\n}: MarketDescriptionTextProps) {\n return

{text}

;\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\ntype MarketDescriptionTitleProps = {\n text: string;\n};\n\nexport default function MarketDescriptionTitle({\n text,\n}: MarketDescriptionTitleProps) {\n return (\n \n {text}\n \n );\n}\n","import { useTranslations } from 'next-intl';\n\nimport { SecondaryLinkButton } from '@/components/buttons/SecondaryLinkButton';\n\nimport MarketDescriptionText from './MarketDescriptionText';\nimport MarketDescriptionTitle from './MarketDescriptionTitle';\n\ntype MarketDescriptionProps = {\n marketName: string;\n marketDescription: string | undefined;\n locationsCount: number;\n};\n\nexport default function MarketDescription({\n marketName,\n marketDescription,\n locationsCount,\n}: MarketDescriptionProps) {\n const t = useTranslations('markets.description');\n\n return (\n
\n {marketDescription && (\n <>\n \n \n \n )}\n\n \n \n
\n

\n {t('final-text', {\n count: locationsCount,\n marketName,\n })}\n

\n \n {t('see-all-locations')}\n \n
\n
\n );\n}\n","import { PrimaryHeading } from '../typography';\n\nimport clsx from 'clsx';\n\ntype SearchTitleProps = {\n text: string;\n className?: string;\n};\n\nexport default function SearchTitle({ text, className }: SearchTitleProps) {\n return (\n \n {text}\n \n );\n}\n","import { useTranslations } from 'next-intl';\nimport { useRef } from 'react';\n\nimport LocationMap from '@/components/map/LocationMap';\nimport SearchStaticMap from '@/components/map/SearchStaticMap';\nimport CardListWrapper from '@/components/search/CardListWrapper';\nimport LocationSearchList from '@/components/search/LocationSearchList';\nimport SearchMapWrapper from '@/components/search/SearchMapWrapper';\nimport SearchNoResults from '@/components/search/SearchNoResults';\nimport SearchTitle from '@/components/search/SearchTitle';\nimport useHighlightedSlug from '@/components/search/useHighlightedSlug';\nimport { useWebGL } from '@/hooks/useWebGL';\nimport { MarketWithLocationsDto } from '@/lib/markets/dto/market.dto';\nimport { DEFAULT_MAP_SEARCH_ZOOM } from '@/utils/constants';\nimport {\n getCenterFromFeatures,\n getMapboxFeaturesLocations,\n} from '@/utils/mapbox';\n\nimport clsx from 'clsx';\n\ntype MarketDiscoveryProps = {\n market: MarketWithLocationsDto;\n mapboxAccessToken: string;\n isFullScreenMap?: boolean;\n};\n\nexport default function MarketDiscovery({\n market,\n mapboxAccessToken,\n isFullScreenMap,\n}: MarketDiscoveryProps) {\n const t = useTranslations('markets');\n const { isWebGLSupported } = useWebGL();\n const staticMapRef = useRef(null);\n\n const { highlightedSlug, onMouseEnter, onMouseLeave } = useHighlightedSlug();\n\n const { name: marketName, locations } = market;\n\n const featuresLocations = getMapboxFeaturesLocations(locations);\n const initialCameraOptions = {\n center: getCenterFromFeatures(featuresLocations),\n zoom: DEFAULT_MAP_SEARCH_ZOOM,\n };\n\n return (\n \n
\n
\n \n \n\n {locations.length > 0 && (\n \n )}\n\n {locations.length === 0 && }\n \n\n \n {isWebGLSupported !== true && (\n \n )}\n\n {isWebGLSupported === true && (\n \n )}\n \n
\n
\n \n );\n}\n","'use client';\n\nimport { useState } from 'react';\n\nimport { BreadcrumbListSchema } from '@/components/head/BreadcrumbListSchema';\nimport SwitchViewButton from '@/components/search/SwitchViewButton';\nimport { SearchViewMode } from '@/components/search/types';\nimport useSearchPageParams from '@/components/search/useSearchPageParams';\nimport { getMetroBreadcrumbList } from '@/lib/breadcrumb-schemas/metro-breadcrumb-schema';\nimport { MarketWithLocationsDto } from '@/lib/markets/dto/market.dto';\nimport { getServerConfig } from '@/utils/config';\n\nimport MarketDescription from './MarketDescription';\nimport MarketDiscovery from './MarketDiscovery';\n\nexport type MarketsPageProps = {\n market: MarketWithLocationsDto;\n mapboxAccessToken: string;\n};\n\nexport function MarketsPage({ market, mapboxAccessToken }: MarketsPageProps) {\n const { HOST } = getServerConfig();\n\n const { queryParams, updateQuery } = useSearchPageParams();\n\n const [viewMode, setViewMode] = useState(\n queryParams.view ?? SearchViewMode.List\n );\n\n return (\n <>\n \n
\n \n \n {\n window.scroll(0, 0);\n const nextViewMode =\n viewMode === SearchViewMode.List\n ? SearchViewMode.Map\n : SearchViewMode.List;\n setViewMode(nextViewMode);\n updateQuery({\n view: nextViewMode,\n });\n }}\n viewMode={viewMode}\n />\n
\n \n );\n}\n","export const MIN_TOUCH_SCROLL_SIZE = 5;\nexport const DEBOUNCE_TIME = 200;\n","import { useState } from 'react';\n\nimport { MIN_TOUCH_SCROLL_SIZE } from './constants';\n\ntype useScrollHandlersProps = {\n canGoNext: boolean;\n canGoPrev: boolean;\n goNext: () => void;\n goPrev: () => void;\n};\n\nexport function useScrollHandlers(props: useScrollHandlersProps) {\n const { canGoNext, canGoPrev, goNext, goPrev } = props;\n const [touchPosition, setTouchPosition] = useState(null);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n const touchDown = e.touches[0].clientX;\n setTouchPosition(touchDown);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n const touchDown = touchPosition;\n\n if (touchDown === null) {\n return;\n }\n\n const currentTouch = e.touches[0].clientX;\n const diff = touchDown - currentTouch;\n\n if (diff > MIN_TOUCH_SCROLL_SIZE && canGoNext) {\n goNext();\n }\n\n if (diff < -MIN_TOUCH_SCROLL_SIZE && canGoPrev) {\n goPrev();\n }\n\n setTouchPosition(null);\n };\n\n return { handleTouchStart, handleTouchMove };\n}\n","import clsx from 'clsx';\n\ntype CircleLoaderProps = {\n className?: string;\n};\n\nexport function CircleLoader({ className }: CircleLoaderProps) {\n return (\n \n \n \n );\n}\n","'use client';\n\nimport { useLocale, useTranslations } from 'next-intl';\n\nimport { Frequency } from '@/models/Frequency.enum';\n\ntype FormattedPriceTextProps = {\n price: number;\n currencyIsoCode: string;\n frequency?: Frequency;\n maximumFractionDigits?: number;\n} & React.ComponentPropsWithoutRef<'div'>;\n\nexport function FormattedPriceText({\n currencyIsoCode,\n price,\n frequency,\n maximumFractionDigits,\n ...divProps\n}: FormattedPriceTextProps) {\n const locale = useLocale();\n const t = useTranslations('general');\n\n const formattedPrice = Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyIsoCode,\n maximumFractionDigits,\n }).format(price);\n\n if (frequency == null) {\n return
{formattedPrice}
;\n }\n\n const formattedPriceElement = t.rich(getFrequencyTranslationKey(frequency), {\n price: formattedPrice,\n frequency: (chunks) => {chunks},\n });\n\n return
{formattedPriceElement}
;\n}\n\nfunction getFrequencyTranslationKey(frequency: Frequency) {\n switch (frequency) {\n case Frequency.Daily:\n return 'daily-price';\n case Frequency.Hourly:\n return 'hourly-price';\n case Frequency.Monthly:\n return 'monthly-price';\n }\n}\n","import { ImageLoaderProps, ImageProps } from 'next/image';\n\nexport const getImageLoader = (src: ImageProps['src']) => {\n if (src == null || typeof src !== 'string') {\n return undefined;\n }\n\n if (src.includes('inventory-service-assets')) {\n return inventoryAssetsImageLoader;\n }\n\n if (src.startsWith('/public-s3')) {\n return publicAssetsImageLoader;\n }\n\n return undefined;\n};\n\nconst inventoryAssetsImageLoader = ({\n src,\n width,\n quality,\n}: ImageLoaderProps) => {\n return `${src}?width=${width}&quality=${quality || 100}&format=webp`;\n};\n\nconst publicAssetsImageLoader = ({ src, width, quality }: ImageLoaderProps) => {\n return `${src.replace(\n '/public-s3',\n `https://${process.env.NEXT_PUBLIC_ASSETS_DOMAIN!}`\n )}?width=${width}&quality=${quality || 100}&format=webp`;\n};\n","export const IMAGE_PLACEHOLDER =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mN89x8AAuEB74Y0o2cAAAAASUVORK5CYII=';\n","'use client';\n\nimport Image, { ImageProps } from 'next/image';\nimport { useEffect, useState } from 'react';\n\nimport { getImageLoader } from '@/utils/image-loaders';\nimport { IMAGE_PLACEHOLDER } from '@/utils/image-placeholder';\n\nexport function ImageWithPlaceholder({\n alt,\n src,\n placeholder,\n blurDataURL,\n sizes,\n ...otherProps\n}: ImageProps) {\n const [imgSrc, setImgSrc] = useState(src);\n\n useEffect(() => {\n setImgSrc(src);\n }, [src]);\n\n return (\n {\n if ((e.target as HTMLImageElement).naturalWidth === 0) {\n setImgSrc(IMAGE_PLACEHOLDER);\n }\n }}\n onError={() => setImgSrc(IMAGE_PLACEHOLDER)}\n sizes={sizes || '100vw'}\n {...otherProps}\n />\n );\n}\n","import { useTranslations } from 'next-intl';\n\nimport { LatLng } from '@/models';\nimport {\n getOpeningDate,\n getOpeningLabelTranslationKey,\n} from '@/utils/locations';\n\nimport clsx from 'clsx';\n\ntype LocationOpeningLabelProps = {\n openingDateISO: string | null;\n locationGeolocalization: LatLng;\n className?: string;\n};\n\nexport default function LocationOpeningLabel(props: LocationOpeningLabelProps) {\n const { openingDateISO, locationGeolocalization, className } = props;\n const t = useTranslations('location');\n\n if (!openingDateISO) return null;\n const date = getOpeningDate(openingDateISO);\n\n const translationKey = getOpeningLabelTranslationKey({\n openingDate: date,\n latitude: locationGeolocalization.lat,\n });\n\n return (\n
\n {t(`opening-${translationKey}`, { date, year: date.getFullYear() })}\n
\n );\n}\n","import clsx from 'clsx';\n\nexport function ButtonAsLink(props: React.ComponentPropsWithoutRef<'button'>) {\n const { className, children, type = 'button', ...others } = props;\n\n return (\n \n {children}\n \n );\n}\n","import { CircleLoader } from '../CircleLoader';\n\nimport clsx from 'clsx';\n\ntype PrimaryButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n sm?: boolean;\n isLoading?: boolean;\n};\n\nexport function PrimaryButton(props: PrimaryButtonProps) {\n const { className, sm, isLoading, children, ...otherProps } = props;\n\n return (\n \n
\n {isLoading && }\n {children}\n
\n \n );\n}\n","import { CircleLoader } from '../CircleLoader';\n\nimport clsx from 'clsx';\n\ntype SecondaryButtonProps = {\n sm?: boolean;\n isLoading?: boolean;\n} & React.ComponentPropsWithoutRef<'button'>;\n\nexport function SecondaryButton(props: SecondaryButtonProps) {\n const { sm, className, isLoading, children, ...otherProps } = props;\n\n return (\n \n
\n {isLoading && (\n \n )}\n {children}\n
\n \n );\n}\n","import ChevronIcon from '../icons/ChevronIcon';\n\nimport clsx from 'clsx';\n\ntype ArrowButtonProps = {\n isDisabled?: boolean;\n direction: 'left' | 'right';\n className?: string;\n onClick: (direction: 'left' | 'right') => void;\n} & React.ComponentPropsWithoutRef<'button'>;\n\nexport function ArrowButton({\n isDisabled,\n direction,\n className,\n onClick,\n ...props\n}: ArrowButtonProps) {\n return (\n onClick(direction)}\n {...props}\n >\n \n \n );\n}\n","import clsx from 'clsx';\n\ntype TertiaryButtonProps = {\n sm?: boolean;\n} & React.ComponentPropsWithoutRef<'button'>;\n\nexport function TertiaryButton(props: TertiaryButtonProps) {\n const { sm, className, ...otherProps } = props;\n\n return (\n \n );\n}\n","export * from './SecondaryLinkButton';\nexport * from './PrimaryButton';\nexport * from './SecondaryButton';\nexport * from './LinkButtonThemes';\nexport * from './ArrowButton';\nexport * from './TertiaryButton';\nexport * from './ButtonAsLink';\n","import { Feature, Geometry } from 'geojson';\nimport mapboxgl from 'mapbox-gl';\nimport dynamic from 'next/dynamic';\nimport { MutableRefObject, useEffect, useRef, useState } from 'react';\n\nimport { OnMoveEndProps, OnZoomChangeProps } from '@/hooks/useMap';\nimport { ScreenSize, useScreenSize } from '@/hooks/useScreenSize';\nimport * as gtm from '@/utils/gtm';\nimport { LocationMapFeatureProps } from '@/utils/mapbox';\n\nimport { SearchType } from '../search/search-type.enum';\nimport useSearchPageParams from '../search/useSearchPageParams';\nimport Map from './Map';\nimport { TilesCarousel, TilesCarouselItem } from './TilesCarousel';\nimport { Bounds, CameraMapOptions, MapItem } from './types';\n\nconst LocationMapPopup = dynamic(() => import('./LocationMapPopup'));\nconst LocationTileItem = dynamic(() => import('./LocationTileItem'));\n\ntype MapProps = {\n initialCameraOptions: CameraMapOptions;\n cameraOptions?: CameraMapOptions;\n features: Feature[];\n mapboxAccessToken: string;\n highlightedSlug?: string | undefined;\n isFullScreenMap?: boolean;\n staticMapRef: MutableRefObject;\n minZoom?: number;\n maxZoom?: number;\n onZoomChange?: (props: OnZoomChangeProps) => void;\n onMoveEnd?: (props: OnMoveEndProps) => void;\n onIdle?: (bounds: Bounds) => void;\n};\n\nexport default function LocationMap({\n features,\n ...mapProps\n}: MapProps) {\n const [locationSelected, setLocationSelected] = useState<\n LocationMapFeatureProps | undefined\n >();\n const mapRef = useRef(null);\n const widthWindow = useScreenSize();\n const isDataLayerLoaded = gtm.isDataLayerLoaded();\n const { searchType } = useSearchPageParams();\n\n const handleMapRefChange = (ref: MutableRefObject) => {\n if (!mapRef.current) {\n mapRef.current = ref.current;\n }\n };\n\n useEffect(() => {\n if (\n !isDataLayerLoaded ||\n !locationSelected ||\n searchType !== SearchType.Coworking\n )\n return;\n\n gtm.pushECommerceEvent('view_item_list', {\n item_list_id: 'search_page',\n item_list_name: 'Search page',\n items: [gtm.mapCoworkingToItemEcommerce(locationSelected)],\n });\n }, [isDataLayerLoaded, locationSelected, searchType]);\n\n return (\n <>\n \n setLocationSelected(x as LocationMapFeatureProps | undefined)\n }\n />\n {mapRef && locationSelected && widthWindow > ScreenSize.LG && (\n
\n \n
\n )}\n {locationSelected && widthWindow <= ScreenSize.LG && (\n \n \n \n \n \n )}\n \n );\n}\n","import { ReactNode, useEffect, useState } from 'react';\n\nimport { useScrollHandlers } from '../Carousel/useScrollHandlers';\n\nexport function TilesCarousel({\n children,\n}: {\n children: ReactNode | ReactNode[];\n}) {\n const [activeIndex, setActiveIndex] = useState(0);\n const [widthTile, setWidthTile] = useState(0);\n const canGoNext = Array.isArray(children)\n ? activeIndex < children.length - 1\n : false;\n const canGoPrev = activeIndex > 0;\n\n const handlePrevButtonClicked = () => {\n setActiveIndex((prevState) => prevState - 1);\n };\n\n const handleNextButtonClicked = () => {\n setActiveIndex((prevState) => prevState + 1);\n };\n\n useEffect(() => {\n if (window?.innerWidth) {\n setWidthTile(window.innerWidth - 40);\n }\n }, [window.innerWidth]);\n\n useEffect(() => {\n setActiveIndex(0);\n }, [children]);\n\n const { handleTouchMove, handleTouchStart } = useScrollHandlers({\n canGoNext,\n canGoPrev,\n goNext: handleNextButtonClicked,\n goPrev: handlePrevButtonClicked,\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function TilesCarouselItem({ children }: { children: ReactNode }) {\n return (\n
\n {children}\n
\n );\n}\n","import { forwardRef } from 'react';\n\nimport clsx from 'clsx';\n\ntype CardListWrapperProps = {\n withMap: boolean;\n} & React.ComponentPropsWithoutRef<'div'>;\n\nconst CardListWrapper = forwardRef(\n ({ children, withMap, className, ...divProps }, ref) => {\n return (\n \n {children}\n \n );\n }\n);\n\nCardListWrapper.displayName = 'CardListWrapper';\n\nexport default CardListWrapper;\n","import { HTMLAttributeAnchorTarget } from 'react';\n\nimport { FormattedPriceText } from '@/components/FormattedPriceText';\nimport { Link } from '@/components/Link';\nimport ChevronIcon from '@/components/icons/ChevronIcon';\nimport { Frequency } from '@/models/Frequency.enum';\n\ntype DayPassCtaPriceProps = {\n href: string;\n price: number;\n label: string;\n currencyIsoCode: string;\n frequency: Frequency;\n dataTestId: string;\n target?: HTMLAttributeAnchorTarget;\n};\n\nexport function DayPassCtaPrice({\n href,\n price,\n label,\n currencyIsoCode,\n frequency,\n dataTestId,\n target,\n}: DayPassCtaPriceProps) {\n return (\n \n {label}\n \n \n \n \n \n );\n}\n","type CaptionImageProps = {\n children: React.ReactNode;\n};\n\nexport default function CaptionImage({ children }: CaptionImageProps) {\n return (\n \n {children}\n \n );\n}\n","import { memo } from 'react';\n\nimport { ImageWithPlaceholder } from '@/components/ImageWithPlaceholder';\nimport { useLocationImageOrPlaceholder } from '@/hooks/useLocationImagePlaceholder';\nimport { SimpleLocationSearchDto } from '@/lib/locations/dto';\n\nimport CaptionImage from '../CaptionImage';\n\ntype LocationCardImageProps = {\n priority: boolean;\n location: SimpleLocationSearchDto;\n height?: number;\n caption?: string;\n};\n\nfunction LocationCardImage({\n priority,\n location,\n height = 220,\n caption,\n}: LocationCardImageProps) {\n const { src, alt } = useLocationImageOrPlaceholder(location.image);\n\n return (\n \n \n {caption && {caption}}\n \n );\n}\n\nexport default memo(LocationCardImage);\n","import { useTranslations } from 'next-intl';\nimport { memo, useRef } from 'react';\n\nimport { DayPassCtaPrice } from '@/app/[locale]/(search)/coworking/_components/DayPassCtaPrice';\nimport { isSsosAvailable } from '@/app/[locale]/(search)/locations/_components/utils';\nimport { Link } from '@/components/Link';\nimport useAppearOnScroll from '@/hooks/useAppearOnScroll';\nimport { ScreenSize, useScreenSize } from '@/hooks/useScreenSize';\nimport { CoworkingDayPassPriceDto } from '@/lib/coworking-day-pass/dto/coworking-day-pass-price.dto';\nimport { SimpleLocationSearchDto } from '@/lib/locations/dto';\nimport { DateRange } from '@/models/DateRange';\nimport { Frequency } from '@/models/Frequency.enum';\nimport { getFormattedAddressByCountry } from '@/models/location-utils';\nimport {\n createLocationDayPassUrl,\n createLocationUrl,\n getBrandLogo,\n isExternalLocation,\n isIndustriousLocation,\n shouldShowLogo,\n shouldShowOpeningLabel,\n} from '@/utils/locations';\n\nimport { Amenity, AmenityCode } from '../Amenity';\nimport { ImageWithPlaceholder } from '../ImageWithPlaceholder';\nimport LocationOpeningLabel from '../LocationOpeningLabel';\nimport SearchCard from '../search/SearchCard';\nimport LocationCardImage from './LocationCardImage';\n\ntype LocationCardProps = {\n priority: boolean;\n location: SimpleLocationSearchDto;\n prices?: CoworkingDayPassPriceDto;\n dateRange?: DateRange;\n cardHeight?: number;\n showSsosImageCaption?: boolean;\n onMouseEnter: (slug: string) => void;\n onMouseLeave: () => void;\n};\n\nconst MAX_AMENITIES_DISPLAY = 4;\nconst MOBILE_MAX_AMENITIES_DISPLAY = 2;\n\nfunction LocationCard({\n priority,\n location,\n prices,\n dateRange,\n cardHeight,\n showSsosImageCaption,\n onMouseEnter,\n onMouseLeave,\n}: LocationCardProps) {\n const ref = useRef(null);\n useAppearOnScroll(ref);\n const screenSize = useScreenSize();\n\n const t = useTranslations('search');\n const formattedAddress = getFormattedAddressByCountry({\n address: location.address,\n address2: null,\n city: location.city,\n country: location.country,\n state: isIndustriousLocation(location) ? location.state : '',\n zipCode: location.zipCode,\n });\n\n const showMembershipCta =\n isIndustriousLocation(location) &&\n location.accessMembershipAvailable &&\n prices?.membershipPrice;\n const showDayPassCta =\n isIndustriousLocation(location) &&\n location.coworkingDayPassAvailable &&\n prices?.dayPass;\n const imageCaption =\n showSsosImageCaption && isSsosAvailable(location)\n ? t('reserve-online')\n : undefined;\n\n const amenities = location.amenities?.unique;\n\n const isMobile = screenSize < ScreenSize.SM;\n\n const maxAmenitiesDisplay = isMobile\n ? MOBILE_MAX_AMENITIES_DISPLAY\n : MAX_AMENITIES_DISPLAY;\n\n return (\n onMouseEnter(location.slug)}\n onMouseLeave={onMouseLeave}\n ref={ref}\n data-slug={location.slug}\n >\n \n \n\n
\n
\n {shouldShowOpeningLabel(location) && (\n \n )}\n\n
\n \n {location.name}\n \n
\n {t('view-location')}\n
\n
\n\n
\n

\n {formattedAddress.addressLine1} {formattedAddress.addressLine2}\n

\n {location.phone && (\n <>\n |\n

{location.phone}

\n \n )}\n
\n {amenities && amenities.length > 0 && (\n
\n {amenities.slice(0, maxAmenitiesDisplay).map((amenity, i) => (\n \n {i === maxAmenitiesDisplay - 1 &&\n amenities.length > maxAmenitiesDisplay && (\n \n {t('and-more-amenities', {\n count: amenities.length - maxAmenitiesDisplay,\n })}\n \n )}\n \n ))}\n
\n )}\n {(isExternalLocation(location) ||\n shouldShowLogo(location.brandName)) && (\n \n )}\n
\n\n
\n {showDayPassCta && (\n \n )}\n {showMembershipCta && (\n \n )}\n
\n
\n
\n \n );\n}\n\nexport default memo(LocationCard);\n","import LocationCard from '@/components/cards/LocationCardSearch';\nimport { CoworkingDayPassPricesDto } from '@/lib/coworking-day-pass/dto/coworking-day-pass-price.dto';\nimport { SimpleLocationSearchDto } from '@/lib/locations/dto/simple-location-search.dto';\nimport { DateRange } from '@/models/DateRange';\n\ntype LocationSearchListProps = {\n locations: SimpleLocationSearchDto[];\n prices?: CoworkingDayPassPricesDto;\n dateRange?: DateRange;\n cardHeight?: number;\n showSsosImageCaption?: boolean;\n onMouseEnter: (slug: string) => void;\n onMouseLeave: () => void;\n};\n\nexport default function LocationSearchList({\n locations,\n prices,\n dateRange,\n cardHeight,\n showSsosImageCaption,\n onMouseEnter,\n onMouseLeave,\n}: LocationSearchListProps) {\n return (\n
    \n {locations.map((loc, index) => (\n
  • \n \n
  • \n ))}\n
\n );\n}\n","import clsx from 'clsx';\n\nexport default function SearchCard({\n className,\n ...otherProps\n}: React.ComponentPropsWithoutRef<'div'>) {\n return (\n \n );\n}\n","import { useTranslations } from 'next-intl';\n\nimport { SecondaryLinkButton } from '@/components/buttons/SecondaryLinkButton';\n\ntype SearchNoResults = {\n hasFilters?: boolean;\n noResultsWithFiltersMessage?: string;\n};\n\nexport default function SearchNoResults({\n hasFilters,\n noResultsWithFiltersMessage,\n}: SearchNoResults) {\n const t = useTranslations('search');\n\n return (\n
\n

\n {noResultsWithFiltersMessage !== null && hasFilters\n ? noResultsWithFiltersMessage\n : t(hasFilters ? 'no-results-with-filters' : 'no-results')}\n

\n
\n

{t('learn-more-network')}

\n \n {t('contact-us')}\n \n
\n
\n );\n}\n","export default {\"src\":\"/_next/static/media/listIcon.0f049265.svg\",\"height\":24,\"width\":24,\"blurWidth\":0,\"blurHeight\":0};","export default {\"src\":\"/_next/static/media/mapIcon.143473f0.svg\",\"height\":24,\"width\":24,\"blurWidth\":0,\"blurHeight\":0};","import { useTranslations } from 'next-intl';\nimport Image from 'next/image';\n\nimport listIcon from '@/public/icons/listIcon.svg';\nimport mapIcon from '@/public/icons/mapIcon.svg';\n\nimport { PrimaryButton } from '../buttons';\nimport { SearchViewMode } from './types';\n\ntype SwitchViewButtonProps = {\n onClick: () => void;\n viewMode: SearchViewMode;\n};\n\nexport default function SwitchViewButton({\n onClick,\n viewMode,\n}: SwitchViewButtonProps) {\n const t = useTranslations('search');\n\n return (\n \n {viewMode === SearchViewMode.List ? (\n <>\n \"map\n {t('map')}\n \n ) : (\n <>\n \"list\n {t('list')}\n \n )}\n \n );\n}\n","// Warning: Enum values used as translation keys\nexport enum SearchType {\n Location = 'location',\n MeetingRoom = 'meeting-room',\n Coworking = 'coworking',\n}\n","export enum SearchViewMode {\n List = 'list',\n Map = 'map',\n}\n","import { WithinFilterDto } from '@/lib/shared/dto/within-filter.dto';\nimport { LatLng } from '@/models/LatLng';\nimport { SEARCH_ROUTES } from '@/utils/constants';\nimport { decodeQueryParamAsString } from '@/utils/stringify-url';\n\nimport { Bounds, CameraMapOptions } from '../map/types';\nimport { SearchType } from './search-type.enum';\nimport { SearchQueryParams } from './useSearchPageParams';\n\nexport const CURRENT_LOCATION_VALUE = 'CurrentLocation';\n\nexport function getSearchValueFromQuery(query?: string | null) {\n if (query) {\n if (!query || query === CURRENT_LOCATION_VALUE) return undefined;\n return decodeURIComponent(query);\n }\n return undefined;\n}\n\nexport function getLatLngFromQuery(\n queryParams: SearchQueryParams\n): LatLng | undefined {\n const centerParam = queryParams.center;\n if (!centerParam) return undefined;\n\n const [longitude, latitude] = decodeQueryParamAsString(centerParam)\n .split(',')\n .map((coord) => +coord);\n\n if (isNaN(longitude) || isNaN(latitude)) return undefined;\n\n return {\n lat: latitude,\n lng: longitude,\n };\n}\n\nexport function getRoute(searchType: SearchType) {\n if (searchType === SearchType.MeetingRoom) {\n return SEARCH_ROUTES.MEETING_ROOMS;\n }\n if (searchType === SearchType.Coworking) {\n return SEARCH_ROUTES.COWORKING;\n }\n return SEARCH_ROUTES.LOCATIONS;\n}\n\nexport function createLocalizationQueryParams(\n coords?: CameraMapOptions,\n query?: string\n) {\n if (!coords) return { query };\n\n const coordsBounds = coords.bounds as [number, number, number, number];\n const coordsCenter = coords.center as [number, number];\n\n return {\n query,\n bounds: coordsBounds ? coordsBounds.join(',') : undefined,\n center: coordsCenter.join(','),\n zoom: coords.zoom.toString(),\n };\n}\n\nexport function mapBounds(bounds: Bounds): WithinFilterDto {\n return {\n northEastPoint: {\n longitude: bounds.ne.lng,\n latitude: bounds.ne.lat,\n },\n southWestPoint: {\n longitude: bounds.sw.lng,\n latitude: bounds.sw.lat,\n },\n };\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\nexport default function PrimaryHeading({\n children,\n className,\n ...divProps\n}: React.ComponentPropsWithoutRef<'h1'>) {\n return (\n \n {children}\n \n );\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\ntype SecondaryHeadingProps = React.ComponentPropsWithoutRef<'h2'> & {\n fontFamilyClassName?: string;\n isBigger?: boolean;\n};\n\nexport default function SecondaryHeading({\n fontFamilyClassName,\n children,\n className,\n isBigger = false,\n ...divProps\n}: SecondaryHeadingProps) {\n return (\n \n {children}\n \n );\n}\n","import { tiemposFont } from '@/theme/tiemposFont';\n\nimport clsx from 'clsx';\n\nexport default function TertiaryHeading({\n children,\n className,\n ...divProps\n}: React.ComponentPropsWithoutRef<'h3'>) {\n return (\n \n {children}\n \n );\n}\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n PropsWithChildren,\n} from 'react';\n\nimport clsx from 'clsx';\n\ntype AsProp = {\n as?: E;\n};\n\ntype ComponentProps = PropsWithChildren<\n ComponentPropsWithoutRef & AsProp\n>;\n\nconst defaultElement = 'p';\n\nexport default function BodyBoldUppercase<\n E extends ElementType = typeof defaultElement\n>({ as, children, className, ...divProps }: ComponentProps) {\n const Component = as ?? defaultElement;\n\n return (\n \n {children}\n \n );\n}\n","export { default as PrimaryHeading } from './PrimaryHeading';\nexport { default as SecondaryHeading } from './SecondaryHeading';\nexport { default as TertiaryHeading } from './TertiaryHeading';\nexport { default as BodyBoldUppercase } from './BodyBoldUppercase';\n","import { RefObject, useEffect } from 'react';\n\nexport const APPEAR_ON_SCROLL_CLASS = 'appear-on-scroll';\n\nfunction useAppearOnScroll(\n observableRef: RefObject\n) {\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(APPEAR_ON_SCROLL_CLASS);\n } else {\n entry.target.classList.remove(APPEAR_ON_SCROLL_CLASS);\n }\n });\n },\n {\n threshold: 0.5,\n }\n );\n\n if (observableRef.current) {\n observer.observe(observableRef.current);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [observableRef]);\n}\n\nexport default useAppearOnScroll;\n","import debounce from 'lodash.debounce';\nimport { useCallback } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useDebounce any>(\n func: T,\n ms: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dependencies?: any[]\n) {\n return useCallback(debounce(func, ms), dependencies || []);\n}\n","import { useTranslations } from 'next-intl';\n\nimport { ImageProps } from '@/components/modules/types';\nimport { SimpleLocationDto } from '@/lib/locations/dto';\n\nexport function useLocationImageOrPlaceholder<\n T extends SimpleLocationDto['image']\n>(image?: T): ImageProps {\n const t = useTranslations('general');\n\n if (image == null) {\n return {\n src: `/public-s3/images/location-placeholders/placeholder_1.webp`,\n alt: t('image-placeholders.1.alt'),\n };\n }\n\n return {\n src: image.url,\n alt: image.altText ?? t('alt-default-image'),\n caption: image.caption ?? undefined,\n };\n}\n","import { useSearchParams } from 'next/navigation';\n\n// eslint-disable-next-line no-restricted-imports\nimport { useRouter as useNextRouter } from '@/i18n/navigation';\nimport {\n getAllParamsFromSearchParams,\n stringifyUrl,\n} from '@/utils/stringify-url';\n\nexport function useRouter() {\n const searchParams = useSearchParams();\n const { push: routerPush, replace: routerReplace, refresh } = useNextRouter();\n const allParams = getAllParamsFromSearchParams(searchParams);\n\n const supplier = allParams.supplier ? allParams.supplier : null;\n\n const push: typeof routerPush = (href, options) => {\n return routerPush(\n stringifyUrl(href as string, {\n ...(supplier && {\n supplier,\n }),\n }),\n options\n );\n };\n\n const replace: typeof routerReplace = (href, options) => {\n return routerReplace(\n stringifyUrl(href as string, {\n ...(supplier && {\n supplier,\n }),\n }),\n options\n );\n };\n\n return {\n push,\n replace,\n refresh,\n };\n}\n","export const EU_COUNTRIES = [\n 'AT', // Austria\n 'BE', // Belgium\n 'BG', // Bulgaria\n 'HR', // Croatia\n 'CY', // Cyprus\n 'CZ', // Czechia\n 'DK', // Denmark\n 'EE', // Estonia\n 'FI', // Finland\n 'FR', // France\n 'DE', // Germany\n 'GR', // Greece\n 'HU', // Hungary\n 'IE', // Ireland\n 'IT', // Italy\n 'LV', // Latvia\n 'LT', // Lithuania\n 'LU', // Luxembourg\n 'MT', // Malta\n 'NL', // Netherlands\n 'PL', // Poland\n 'PT', // Portugal\n 'RO', // Romania\n 'SK', // Slovakia\n 'SI', // Slovenia\n 'ES', // Spain\n 'SE', // Sweden\n];\n\nexport const UK = 'GB';\nexport const US = 'US';\nexport const CA = 'CA';\n","import { ImageDto } from '@/lib/image.dto';\nimport { BlackoutDateDto } from '@/lib/shared/dto/blackout-date.dto';\nimport { Countries } from '@/models/Countries.enum';\n\nimport { GeolocalizationDto } from './geolocalization.dto';\nimport { LocationAmenityDto } from './location-amenity.dto';\nimport { LocationCalendlyLinksDto } from './location-calendly-links.dto';\nimport { LocationManagerDto } from './location-manager.dto';\nimport { LocationMeetingSpacesDto } from './location-meeting-spaces.dto';\nimport { LocationOpeningHoursDto } from './location-opening-hours.dto';\nimport { LocationPhases } from './location-phases.enum';\nimport { LocationProductsDto } from './location-products.dto';\n\nexport type LocationDto = {\n id: string;\n sfId: string;\n slug: string;\n name: string;\n address: string;\n address2: string;\n zipCode: string;\n city: string;\n state: string;\n country: Countries;\n geolocalization: GeolocalizationDto;\n phase: LocationPhases;\n calendlyLinks: LocationCalendlyLinksDto;\n currencyIsoCode: string | null;\n brochureLink: string;\n locationManagers: LocationManagerDto[];\n images: ImageDto[];\n matterportImageLink: string | null;\n summary: string | null;\n products: LocationProductsDto;\n parkingInfos: string | null;\n parkingAlt: string | null;\n parkingGuest: string | null;\n bikeRacks: string | null;\n buildingCheckInInstructions: string | null;\n transitInfos: TransitInfo[];\n lodgingAndDining: string[];\n attractions: string[];\n embedSocialId: string | null;\n meetingSpaces: LocationMeetingSpacesDto;\n salesHighlightBanner: string | null;\n firstDayOfBusinessISO: string | null;\n email: string;\n phone: string | null;\n timezone: string;\n brandName: string | null;\n amenities: {\n standard: LocationAmenityDto[];\n unique: LocationAmenityDto[];\n };\n metroSfId: string;\n metroName: string;\n metaDescription?: string;\n isEarlyInPersonTourEnabled: boolean;\n hideOpeningDate: boolean;\n salesOfficeAddress: string | null;\n isWaitlisting: boolean;\n openingHours: LocationOpeningHoursDto;\n blackoutDates: BlackoutDateDto[];\n contractType: string | undefined;\n landlord: string | undefined;\n licensor: string | undefined | null;\n isCrawlable: boolean;\n};\n\nexport enum TransitCategoryType {\n Airport = 'Airport',\n Bike = 'Bike',\n Bus = 'Bus',\n Driving = 'Driving',\n Parking = 'Parking',\n Subway = 'Subway',\n Train = 'Train',\n TransitHub = 'TransitHub',\n Other = 'Other',\n}\n\nexport type TransitInfo = {\n description: string;\n category: TransitCategoryType;\n};\n","export enum LocationPriceFormat {\n CheapestPerSeat = 'Cheapest Per Seat',\n CheapestOffice = 'Cheapest Office',\n}\n\nexport type LocationPricesDto = {\n currencyIsoCode: string;\n priceFormat: LocationPriceFormat;\n lowestPrices: {\n dedicatedOffice: LocationPriceItemDto | undefined | null;\n suites: LocationPriceItemDto | undefined | null;\n access: LocationPriceItemDto | undefined | null;\n virtual: LocationPriceItemDto | undefined | null;\n meetingRoom: LocationMeetingRoomPriceItemDto;\n coworkingDayPass: LocationCoworkingDayPassPriceItemDto | undefined | null;\n coworking: LocationCoworkingPriceItemDto;\n office: LocationOfficePriceItemDto;\n };\n};\n\nexport type LocationMeetingRoomPriceItemDto = {\n price: number;\n perHour?: number;\n perDay?: number;\n};\n\nexport type LocationCoworkingDayPassPriceItemDto = {\n price: number;\n};\n\nexport type LocationOfficePriceItemDto = {\n perMonth?: number;\n};\n\nexport type LocationCoworkingPriceItemDto = {\n perDay?: number;\n perMonth?: number;\n};\n\nexport type LocationPriceItemDto = {\n family: string;\n price: number;\n productSquareFootage: number | null | undefined;\n seatCount: number | null | undefined;\n};\n","export enum SortFilter {\n PHASE = 'phase',\n}\n","export * from './geolocalization.dto';\nexport * from './location-manager.dto';\nexport * from './location.dto';\nexport * from './location-price.dto';\nexport * from './location-products.dto';\nexport * from './location-meeting-spaces.dto';\nexport * from './micro-location.dto';\nexport * from './simple-location.dto';\nexport * from './simple-location-search.dto';\nexport * from './location-and-near-locations.dto';\nexport * from './location-phases.enum';\nexport * from './manager-roles.enum';\nexport * from './metro.dto';\nexport * from './sort-filter.enum';\n","export enum LocationPhases {\n Signed = 'Signed',\n Launch = 'Launch',\n Open = 'Open',\n Closed = 'Closed',\n Draft = 'Draft',\n Greenlight = 'Greenlight',\n HardCommit = 'Hard Commit',\n}\n","export enum ManagerRoles {\n ConferenceServicesManager = 'Conference Services Manager',\n TechnicalAudioVisualManager = 'Technical Audio Visual Manager',\n // New roles - Revisit above roles during LCR refactor\n MemberExperienceAssociate = 'Member Experience Associate',\n MemberExperienceManager = 'Member Experience Manager',\n AssistantGeneralManager = 'Assistant General Manager',\n GeneralManager = 'General Manager',\n RegionalDirector = 'Regional Director',\n AreaSalesLead = 'Area Sales Lead',\n EnterpriseSales = 'Enterprise Sales',\n AccountManager = 'Account Manager',\n FacilitiesManager = 'Facilities Manager',\n FacilitiesAssociate = 'Facilities Associate',\n}\n","export enum Countries {\n Belgium = 'Belgium',\n Canada = 'Canada',\n France = 'France',\n UnitedStates = 'United States',\n UnitedKingdom = 'United Kingdom',\n}\n","export enum Frequency {\n Hourly,\n Daily,\n Monthly,\n}\n","import { UK } from '@/lib/countries';\nimport {\n LocationDto,\n LocationManagerDto,\n LocationPhases,\n LocationPriceFormat,\n LocationPricesDto,\n LocationProductName,\n ManagerRoles,\n} from '@/lib/locations/dto';\nimport { LocationCalendlyLinksDto } from '@/lib/locations/dto/location-calendly-links.dto';\nimport {\n DEFAULT_CURRENCY_ISO_CODE,\n FR_GENERIC_NUMBER,\n UK_GENERIC_APPLICATION_NUMBER,\n US_GENERIC_APPLICATION_NUMBER,\n US_GENERIC_NUMBER,\n} from '@/utils/constants';\n\nimport { Countries } from './Countries.enum';\nimport { Products } from './Products.enum';\n\nconst PRODUCT_SUITES_IMG = '/public-s3/images/product_suites_new.webp';\nconst PRODUCT_VIRTUAL_IMG = '/public-s3/images/product_virtual_new.webp';\nexport const OFFICE_WINDOW_IMG = '/public-s3/images/window-office.webp';\nexport const OFFICE_INTERIOR_IMG = '/public-s3/images/interior-office.webp';\n\nexport const GOOGLE_SEARCH_API = 'https://www.google.com/maps/search/?api=1';\n\nexport enum LocationPrimaryCtaTypes {\n GetNotified = 'get-notified',\n ScheduleCall = 'schedule-call',\n GetStarted = 'get-started',\n BookTour = 'book-tour',\n}\n\ntype getLocationPrimaryCtaTypeProps = {\n phase: LocationPhases;\n isEarlyInPersonTourEnabled: boolean;\n calendlyLinks: LocationCalendlyLinksDto;\n};\n\nexport function getLocationPrimaryCtaType({\n phase,\n isEarlyInPersonTourEnabled,\n calendlyLinks,\n}: getLocationPrimaryCtaTypeProps): LocationPrimaryCtaTypes {\n const isLaunchLocationWithoutEarlyInPersonTourAvailable =\n phase === LocationPhases.Launch &&\n (!isEarlyInPersonTourEnabled || !calendlyLinks.inPersonTour);\n\n if (phase === LocationPhases.Signed) {\n return LocationPrimaryCtaTypes.GetNotified;\n }\n if (isLaunchLocationWithoutEarlyInPersonTourAvailable) {\n return LocationPrimaryCtaTypes.ScheduleCall;\n }\n\n return LocationPrimaryCtaTypes.BookTour;\n}\n\nexport function getGoogleMapsDirectionUrlFromString(query: string) {\n return `${GOOGLE_SEARCH_API}&query=${encodeURI(query)}`;\n}\n\nexport function getGoogleMapsDirectionUrl(props: {\n city: string;\n address: string;\n brandName: string | null;\n name: string;\n state: string;\n zipCode: string;\n}) {\n const { brandName, name, address, city, state, zipCode } = props;\n\n return `${GOOGLE_SEARCH_API}&query=${encodeURI(\n `${brandName || name} ${address} ${city} ${state} ${zipCode}`\n )}`;\n}\n\nexport function sortMemberExperienceTeam(\n a: LocationManagerDto,\n b: LocationManagerDto\n): number {\n if (a.role === b.role) {\n return a.name.localeCompare(b.name);\n }\n if (a.role !== ManagerRoles.MemberExperienceManager) {\n return 1;\n }\n return -1;\n}\n\nexport function getFormattedAddressByCountry({\n country,\n address,\n address2,\n city,\n state,\n zipCode,\n}: {\n country: Countries;\n address: string;\n address2: string | null;\n city: string;\n state: string;\n zipCode?: string;\n}) {\n const firstPart = `${address}${address2 ? ` ${address2}` : ''}`;\n\n switch (country) {\n case Countries.Belgium:\n case Countries.France:\n return {\n addressLine1: firstPart,\n addressLine2: `${zipCode} ${city}, ${country}`,\n };\n case Countries.Canada:\n return {\n addressLine1: firstPart,\n addressLine2: `${city}, ${state} ${zipCode}, ${country}`,\n };\n case Countries.UnitedKingdom:\n return {\n addressLine1: firstPart,\n addressLine2: `${city} ${zipCode}, ${country}`,\n };\n default:\n return {\n addressLine1: firstPart,\n addressLine2: `${city}, ${state} ${zipCode}`,\n };\n }\n}\n\nexport function getGenericPhoneNumberByCountry(country: string) {\n switch (country) {\n case Countries.France:\n return FR_GENERIC_NUMBER;\n case Countries.UnitedKingdom:\n return UK_GENERIC_APPLICATION_NUMBER;\n default:\n return US_GENERIC_NUMBER;\n }\n}\n\nexport function getPhoneApplicationForm({\n location,\n country,\n}: {\n location:\n | {\n phone: string | null;\n phase: LocationPhases;\n country: string;\n }\n | undefined;\n country: string;\n}) {\n if (!location) {\n return country === UK\n ? UK_GENERIC_APPLICATION_NUMBER\n : US_GENERIC_APPLICATION_NUMBER;\n }\n\n if ([LocationPhases.Signed, LocationPhases.Launch].includes(location.phase)) {\n return getGenericPhoneNumberByCountry(location.country);\n }\n\n if (location.phone) {\n return location.phone;\n }\n\n return US_GENERIC_NUMBER;\n}\n\nexport function getLocationAreaSalesLeadPhone({\n locationManagers,\n country,\n}: {\n locationManagers: LocationManagerDto[];\n country: Countries;\n}): string {\n const areaSalesLead = locationManagers.find(\n (manager) => manager.role === ManagerRoles.AreaSalesLead\n );\n\n if (areaSalesLead && areaSalesLead.phone) {\n return areaSalesLead.phone;\n }\n\n if (country === Countries.UnitedKingdom) {\n return UK_GENERIC_APPLICATION_NUMBER;\n }\n\n return US_GENERIC_APPLICATION_NUMBER;\n}\n\nexport function createEmptyLocationPrices(): LocationPricesDto {\n return {\n currencyIsoCode: DEFAULT_CURRENCY_ISO_CODE,\n priceFormat: LocationPriceFormat.CheapestOffice,\n lowestPrices: {\n dedicatedOffice: null,\n suites: null,\n access: null,\n virtual: null,\n meetingRoom: {\n price: 0,\n },\n coworkingDayPass: null,\n coworking: {},\n office: {},\n },\n };\n}\n\nexport function getLocationFullName(props: {\n name: string;\n brandName: string | null;\n}) {\n const { name, brandName } = props;\n\n if (brandName && !name.includes(brandName)) {\n return `${brandName} ${name}`;\n }\n\n return name;\n}\n\nconst displayRoles = [\n ManagerRoles.MemberExperienceAssociate,\n ManagerRoles.MemberExperienceManager,\n];\n\nexport type VisibleLocationManager = LocationManagerDto & {\n avatarUrl: string;\n role:\n | ManagerRoles.MemberExperienceManager\n | ManagerRoles.MemberExperienceAssociate\n | ManagerRoles.TechnicalAudioVisualManager\n | ManagerRoles.ConferenceServicesManager;\n};\n\nexport function getVisibleManagers(\n managers: LocationManagerDto[]\n): VisibleLocationManager[] {\n return managers\n .filter((manager) => !!manager.avatarUrl)\n .filter((manager): manager is VisibleLocationManager =>\n displayRoles.includes(manager.role)\n );\n}\n\nexport function getProductPageLink(productName: LocationProductName) {\n switch (productName) {\n case 'dedicatedOffice':\n return '/solutions/offices';\n case 'meetingRoom':\n return '/solutions/conference-and-meeting-rooms';\n case 'access':\n return '/solutions/coworking-membership';\n case 'coworkingDayPass':\n return '/solutions/coworking-day-pass';\n default:\n return `/solutions/${productName}`;\n }\n}\n\nexport function getProductImage(product: Products.Suite | Products.Virtual) {\n switch (product) {\n case 'virtual':\n return PRODUCT_VIRTUAL_IMG;\n default:\n return PRODUCT_SUITES_IMG;\n }\n}\n\nexport function getSearchNearByLocationsUrl(location: LocationDto) {\n const {\n city,\n geolocalization: { lat, lng },\n } = location;\n return `/locations?center=${lng},${lat}&query=${encodeURI(city)}&zoom=10`;\n}\n","import {\n Duration,\n Interval,\n add as dateFnsAdd,\n addBusinessDays as dateFnsAddBusinessDays,\n addDays as dateFnsAddDays,\n addHours as dateFnsAddHours,\n addMinutes as dateFnsAddMinutes,\n addMonths as dateFnsAddMonths,\n differenceInDays as dateFnsDifferenceInDays,\n differenceInMinutes as dateFnsDifferenceInMinutes,\n eachDayOfInterval as dateFnsEachDayOfInterval,\n endOfMonth as dateFnsEndOfMonth,\n format as dateFnsFormat,\n getQuarter as dateFnsGetQuarter,\n isAfter as dateFnsIsAfter,\n isEqual as dateFnsIsEqual,\n isFuture as dateFnsIsFuture,\n isPast as dateFnsIsPast,\n isSameDay as dateFnsIsSameDay,\n isSameHour as dateFnsIsSameHour,\n isSameISOWeek as dateFnsIsSameISOWeek,\n isSameMonth as dateFnsIsSameMonth,\n isWithinInterval as dateFnsIsWithinInterval,\n parse as dateFnsParse,\n setHours as dateFnsSetHours,\n setMinutes as dateFnsSetMinutes,\n startOfMonth as dateFnsStartOfMonth,\n subHours as dateFnsSubHours,\n differenceInHours as dateFnsdifferenceInHours,\n setDefaultOptions,\n} from 'date-fns';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport { enUS as en, fr, nl } from 'date-fns/locale';\n\nimport { DateRange, PartialDateRange } from '@/models/DateRange';\n\nconst LOCALES = [en, fr, nl];\nexport const DATE_LOCALE_EN = en;\nexport const SECOND_IN_MS = 1000;\nexport const MINUTE_IN_SECONDES = 60;\nexport const HOUR_IN_MINUTES = 60;\nexport const HOUR_IN_MS = HOUR_IN_MINUTES * MINUTE_IN_SECONDES * SECOND_IN_MS;\nexport const DAY_IN_MS = 24 * HOUR_IN_MS;\n\nexport function getFirstDayOfNextMonth(startDate: Date): Date {\n const nextMonth = addMonths(startDate, 1);\n nextMonth.setDate(1);\n\n return nextMonth;\n}\n\nexport function addMonths(startDate: Date, amount: number): Date {\n return dateFnsAddMonths(startDate, amount);\n}\n\nexport function isWithinInterval(date: Date, amount: Interval): boolean {\n return dateFnsIsWithinInterval(date, amount);\n}\n\nexport function format(\n date: Date,\n format: string,\n options?: {\n locale?: Locale;\n }\n): string {\n return dateFnsFormat(date, format, options);\n}\n\nexport function getQuarter(date: Date) {\n return dateFnsGetQuarter(date);\n}\n\nexport function differenceInDays(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInDays(dateLeft, dateRight);\n}\n\nexport function addDays(date: Date, amount: number) {\n return dateFnsAddDays(date, amount);\n}\n\nexport function endOfMonth(date: Date) {\n return dateFnsEndOfMonth(date);\n}\n\nexport function addHours(date: Date, hours: number) {\n return dateFnsAddHours(date, hours);\n}\n\nexport function setLocale(locale: string) {\n setDefaultOptions({ locale: LOCALES.find((l) => l.code === locale) });\n}\n\nexport function differenceInHours(dateLeft: Date, dateRight: Date) {\n return dateFnsdifferenceInHours(dateLeft, dateRight);\n}\n\nexport function differenceInMinutes(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInMinutes(dateLeft, dateRight);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date) {\n return dateFnsEachDayOfInterval({ start, end });\n}\n\nexport function addMinutes(date: Date, amount: number) {\n return dateFnsAddMinutes(date, amount);\n}\n\nexport function add(date: Date, duration: Duration) {\n return dateFnsAdd(date, duration);\n}\n\nexport function addBusinessDays(date: Date, amount: number) {\n return dateFnsAddBusinessDays(date, amount);\n}\n\nexport function parse(time: string, format: string, date: Date) {\n return dateFnsParse(time, format, date);\n}\n\nexport function isSameHour(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameHour(dateLeft, dateRight);\n}\n\nexport function isSameMonth(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameMonth(dateLeft, dateRight);\n}\n\nexport function isEqual(dateLeft: Date, dateRight: Date) {\n return dateFnsIsEqual(dateLeft, dateRight);\n}\nexport function isAfter(dateLeft: Date, dateRight: Date) {\n return dateFnsIsAfter(dateLeft, dateRight);\n}\n\nexport function isSameDay(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameDay(dateLeft, dateRight);\n}\n\nexport function setHours(date: Date, hours: number) {\n return dateFnsSetHours(date, hours);\n}\n\nexport function setMinutes(date: Date, minutes: number) {\n return dateFnsSetMinutes(date, minutes);\n}\n\nexport function subHours(date: Date, amount: number) {\n return dateFnsSubHours(date, amount);\n}\n\nexport function getFormattedTime(time: string): string {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n return format(today, 'p');\n}\n\nexport function getNbThirtyMinuteSlots(startDate: Date, endDate: Date): number {\n return differenceInHours(endDate, startDate) * 2;\n}\n\nexport function getThirtyMinuteSlots(startDate: Date, endDate: Date): Date[] {\n const dateHourDifference = getNbThirtyMinuteSlots(startDate, endDate);\n return Array.from({ length: dateHourDifference + 1 }, (_, index) => {\n return addMinutes(startDate, index * 30);\n });\n}\n\nexport function getFormattedDateWithTime(date: Date, time: string) {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n today.setSeconds(0);\n return format(date, 'yyyy-MM-dd') + 'T' + format(today, 'HH:mm:ss');\n}\n\nexport function isPast(date: Date): boolean {\n return dateFnsIsPast(date);\n}\n\nexport function isFuture(date: Date): boolean {\n return dateFnsIsFuture(date);\n}\n\n// Used only for the time\nexport function getDateFromTime(hour: number, minute: number) {\n return new Date(2000, 1, 1, hour, minute, 0);\n}\n\nexport function createDateFromLocalDate(localDate: string) {\n return new Date(`${localDate}Z`);\n}\n\nexport function getISOTime(date: Date) {\n return getTimeFromLocalDate(date.toISOString());\n}\n\nexport function getTimeFromLocalDate(localDate: string) {\n return localDate.split('T')[1].slice(0, 5);\n}\n\nexport function isValidDate(date: string) {\n return new Date(date).toString() !== 'Invalid Date';\n}\n\nexport function isPastDay(date: Date) {\n const today = new Date(new Date().toISOString().split('T')[0]);\n\n return date.getTime() < today.getTime();\n}\n\nexport function createLocalDay(local: string) {\n const day = local.split('T')[0];\n return new Date(day.replace(/-/g, '/'));\n}\n\nexport function generateMonthDayDates(month: Date, margin = 0) {\n const nextMonth = getNextMonth(month);\n\n const start = addDays(month, -margin);\n const end = addDays(nextMonth, margin);\n\n return generateDates(start, end);\n}\n\nexport function getNextMonth(month: Date) {\n const nextMonth = new Date(month);\n\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n\n return nextMonth;\n}\n\nexport function generateDates(start: Date, end: Date) {\n const dates: Date[] = [];\n\n const date = new Date(start);\n while (date < end) {\n dates.push(new Date(date));\n date.setDate(date.getDate() + 1);\n }\n\n return dates;\n}\n\nexport function getMonthDate(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function getDateFromLocal(localDate: string | Date, timeZone: string) {\n return zonedTimeToUtc(localDate, timeZone);\n}\n\nexport function getDateFormatInTimeZone(\n date: Date,\n timeZone: string,\n format: string\n) {\n return formatInTimeZone(date, timeZone, format);\n}\n\nexport function getTimeInTimeZone(date: Date, timeZone: string) {\n return getDateFormatInTimeZone(date, timeZone, 'HH:mm');\n}\n\nexport function getNbHours(start: Date, end: Date): number {\n return (end.getTime() - start.getTime()) / HOUR_IN_MS;\n}\n\nexport function formatTime(time: string) {\n return format(new Date(`2000-01-01T${time}:00`), 'h:mm a');\n}\n\nexport function formatTimeLowercase(time: string) {\n return formatTime(time).toLowerCase();\n}\n\nexport function getTomorrowDay() {\n return getNextDay(formatToDay(new Date()));\n}\n\nexport function formatToISODay(date: Date | string) {\n const dateStr = typeof date === 'string' ? date : date.toISOString();\n return dateStr.split('T')[0];\n}\n\nexport function getLocalDay(date: Date) {\n const isoDay = formatToISODay(date);\n return isoDay.replaceAll(/-/g, '/');\n}\n\nexport function getLocalDateFromDay(day: string) {\n return new Date(day.replaceAll(/-/g, '/'));\n}\n\nexport function formatToDay(date: Date) {\n return format(date, 'yyyy-MM-dd');\n}\n\nexport function getNbDays({ from, to }: DateRange): number {\n const timeGap = to.getTime() - from.getTime() + 1;\n return Math.ceil(timeGap / DAY_IN_MS);\n}\n\nexport function isDateRange(\n date: PartialDateRange | undefined\n): date is DateRange {\n return date?.from instanceof Date && date?.to instanceof Date;\n}\n\nexport function getNextDay(day: string) {\n const date = new Date(day);\n\n return formatToISODay(addDays(date, 1));\n}\n\nexport function getAbbreviatedDayName(day: string) {\n const date = parse(day, 'yyyy-MM-dd', new Date());\n return format(date, 'EEE', { locale: DATE_LOCALE_EN }).toLowerCase();\n}\n\nexport function eachDayOfDateRange({ from, to }: DateRange) {\n return dateFnsEachDayOfInterval({ start: from, end: to });\n}\n\nexport function isWeekEnd(day: string) {\n const dayName = getAbbreviatedDayName(day);\n\n return ['sat', 'sun'].includes(dayName);\n}\n\nexport function isSameWeek(day1: string, day2: string) {\n return dateFnsIsSameISOWeek(new Date(day1), new Date(day2));\n}\n\nexport function startOfMonth(date: Date) {\n return dateFnsStartOfMonth(date);\n}\n","import { MeetingRoomDto } from '@/lib/meeting-rooms/dto/meeting-room.dto';\nimport { SimpleMeetingRoomDto } from '@/lib/meeting-rooms/dto/simple-meeting-room.dto';\nimport { StringBool } from '@/models/StringBool.enum';\n\nimport { MeetingRoomMapFeatureProps } from './mapbox';\n\nexport enum GtmListId {\n SearchPage = 'search_page',\n LocationPdp = 'location_pdp',\n}\n\nexport enum GtmListName {\n SearchPage = 'Search Page',\n LocationPdp = 'Location PDP',\n}\n\ntype GtmOptionsPageView = {\n pageType?: string;\n};\n\ntype GtmOptionsLocation = {\n location_name?: string;\n location_city?: string;\n location_metro?: string;\n location_country?: string;\n location_id?: string;\n};\n\ntype GtmOptionsCheckoutCustomize = {\n country?: string;\n metro?: string;\n location?: string;\n global_access?: StringBool;\n location_id?: string;\n promo_code?: string;\n};\n\ntype GtmOptionsMeetingRoom = {\n location_name?: string;\n meeting_room_name?: string;\n};\n\nexport type GtmOptions = GtmOptionsPageView &\n GtmOptionsLocation &\n GtmOptionsMeetingRoom &\n GtmOptionsCheckoutCustomize;\n\nexport const isDataLayerLoaded = () => {\n return typeof window !== 'undefined' && !!window.dataLayer;\n};\n\nexport const pushEvent = (event: string, options = {}) => {\n if (!window.dataLayer) return;\n window.dataLayer.push({ event, ...options });\n};\n\nexport const pageview = ({\n url,\n pageType,\n options = {},\n}: {\n url: string;\n pageType: string;\n options: GtmOptions;\n}) => {\n pushEvent('pageview', { url, pageType, ...options });\n};\n\nexport const pushECommerceEvent = (\n event: string,\n options: Record\n) => {\n if (!window.dataLayer) return;\n window.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n pushEvent(event, { ecommerce: options });\n};\n\nconst AFFILIATION = 'Online purchase';\nconst PRODUCT_CATEGORY_ON_DEMAND = 'On demand';\nconst PRODUCT_CATEGORY_SUBSCRIPTION = 'subscription';\n\nconst MEETING_ROOM_PRODUCT = 'Meeting room';\nconst COWORKING_ITEM_NAME = 'Coworking day pass';\nconst DAY_PASS_PRODUCT = 'Day pass';\nconst INDUSTRIOUS_BRAND_NAME = 'Industrious';\nconst OFFICE_PRODUCT = 'Private office';\n\nexport const mapMeetingRoomToItemEcommerce = (\n meetingRoom: MeetingRoomDto | SimpleMeetingRoomDto,\n locationId: string\n) => {\n return {\n item_name: `${meetingRoom.locationName} - ${meetingRoom.name}`,\n item_id: meetingRoom.slug,\n affiliation: AFFILIATION,\n item_brand:\n (meetingRoom as MeetingRoomDto)?.brandName || INDUSTRIOUS_BRAND_NAME,\n item_category: meetingRoom.locationName,\n item_category2: PRODUCT_CATEGORY_ON_DEMAND,\n item_category3: MEETING_ROOM_PRODUCT,\n ...(meetingRoom.locationTier != null && {\n item_category4: `Tier ${meetingRoom.locationTier}`,\n }),\n item_variant: meetingRoom.seats,\n location_id: locationId,\n };\n};\n\nexport const mapSimpleMeetingRoomToItemEcommerce = (\n meetingRoom: SimpleMeetingRoomDto | MeetingRoomMapFeatureProps\n) => {\n return {\n item_name: `${meetingRoom.locationName} - ${meetingRoom.name}`,\n item_id: meetingRoom.slug,\n affiliation: AFFILIATION,\n item_category: meetingRoom.locationName,\n item_category2: PRODUCT_CATEGORY_ON_DEMAND,\n item_category3: MEETING_ROOM_PRODUCT,\n ...(meetingRoom.locationTier != null && {\n item_category4: `Tier ${meetingRoom.locationTier}`,\n }),\n item_variant: meetingRoom.seats,\n };\n};\n\nexport const mapCoworkingToItemEcommerce = (location: {\n name: string;\n id: string;\n}) => {\n return {\n item_name: COWORKING_ITEM_NAME,\n affiliation: AFFILIATION,\n item_brand: INDUSTRIOUS_BRAND_NAME,\n item_category: location.name,\n item_category2: PRODUCT_CATEGORY_ON_DEMAND,\n item_category3: DAY_PASS_PRODUCT,\n location_id: location.id,\n };\n};\n\nexport const mapOfficeToItemEcommerce = (params: {\n officeName: string;\n officeId: string;\n locationName: string;\n seats?: number;\n locationId: string;\n}) => {\n const { officeName, officeId, locationName, seats, locationId } = params;\n return {\n item_id: officeId,\n item_name: officeName,\n affiliation: AFFILIATION,\n item_brand: INDUSTRIOUS_BRAND_NAME,\n item_category: locationName,\n item_category2: PRODUCT_CATEGORY_SUBSCRIPTION,\n item_category3: OFFICE_PRODUCT,\n item_variant: seats,\n location_id: locationId,\n quantity: 1,\n };\n};\n","export enum BrandNames {\n Industrious = 'Industrious',\n WelkinMeraki = 'Welkin & Meraki',\n TheGreatRoom = 'The Great Room',\n}\n","import { string } from 'yup';\n\nimport { isValidDate } from '../date-utils';\n\nexport const stringDay = () =>\n string().test((x) => {\n if (x == null) {\n return true;\n }\n return isValidDate(x) && /^\\d{4}-\\d{2}-\\d{2}$/.test(x);\n });\n","import { useTranslations } from 'next-intl';\n\nimport { SelectOption } from '@/components/form/Select/types';\nimport {\n LocationDto,\n SimpleIndustriousLocationSearchDto,\n SimpleLocationSearchDto,\n WorlwideExternalLocationDto,\n} from '@/lib/locations/dto';\nimport { LocationPhases, ManagerRoles } from '@/lib/locations/dto';\nimport {\n LocationOpeningHoursDto,\n LocationValueOpeningHour,\n} from '@/lib/locations/dto/location-opening-hours.dto';\nimport { BlackoutDateDto } from '@/lib/shared/dto/blackout-date.dto';\nimport { BrandNames } from '@/models/BrandNames.enum';\nimport { DateRange } from '@/models/DateRange';\nimport tgrLogo from '@/public/images/brands/TGR.svg';\nimport wmLogo from '@/public/images/brands/welkin-and-meraki.svg';\n\nimport {\n DAY_PASS_CUTOFF_HOUR,\n DISPLAY_SEASON_AFTER_NB_DAYS,\n MAX_BOOKING_MONTHS,\n NORTH_SEASONS_BY_QUARTER,\n SOUTH_SEASONS_BY_QUARTER,\n} from './constants';\nimport {\n addMonths,\n createLocalDay,\n differenceInDays,\n formatToDay,\n getAbbreviatedDayName,\n getNextDay,\n getQuarter,\n getTomorrowDay,\n isAfter,\n isSameDay,\n setHours,\n setMinutes,\n} from './date-utils';\nimport { sortByLabel } from './select-option-utils';\nimport { stringifyUrl } from './stringify-url';\nimport { stringDay } from './validators/string-day-validator';\n\nexport function createLocationUrl(location: {\n isExternal?: boolean;\n externalLink?: string;\n slug: string;\n}) {\n return location.isExternal\n ? location.externalLink!\n : `/locations/${location.slug}`;\n}\n\nexport function createLocationDayPassUrl(params: {\n slug: string;\n dateRange?: DateRange;\n}) {\n const { slug, dateRange } = params;\n\n const url = `/locations/${slug}/coworking-day-pass`;\n\n if (!dateRange) return url;\n\n return stringifyUrl(url, {\n startDay: formatToDay(dateRange.from),\n endDay: formatToDay(dateRange.to),\n });\n}\n\nexport function isIndustriousLocation(\n location: SimpleLocationSearchDto\n): location is SimpleIndustriousLocationSearchDto {\n return !location.isExternal;\n}\n\nexport function isExternalLocation(\n location: SimpleLocationSearchDto\n): location is WorlwideExternalLocationDto {\n return location.isExternal;\n}\n\nexport function getBrandLogo(brandName: string | null) {\n switch (brandName) {\n case BrandNames.WelkinMeraki:\n return wmLogo;\n case BrandNames.TheGreatRoom:\n return tgrLogo;\n default:\n return undefined;\n }\n}\n\ntype LocationForOption = Pick & {\n metroName?: string;\n};\n\nexport const mapLocationsToOptions = (\n locations: Array\n): SelectOption[] => locations.map(mapLocationToOption).sort(sortByLabel);\n\nexport const mapLocationToOption = (\n location: LocationForOption\n): SelectOption => ({\n label: getLocationOptionLabel(location),\n value: location.sfId,\n});\n\nconst getLocationOptionLabel = (location: LocationForOption) => {\n return `${location.city} - ${location.name}`;\n};\n\n// This function extract the date disregarding time and timezone as we currently don't care in SF.\n// if we don't do this, it brings an issue\nexport function getOpeningDate(dateISO: string) {\n const year = +dateISO.substring(0, 4);\n const month = +dateISO.substring(5, 7) - 1;\n const day = +dateISO.substring(8, 10);\n\n return new Date(year, month, day);\n}\n\nexport function getOpeningLabelTranslationKey(params: {\n openingDate: Date;\n latitude: number;\n}) {\n const { openingDate, latitude } = params;\n\n const is60daysAway =\n differenceInDays(openingDate, new Date()) > DISPLAY_SEASON_AFTER_NB_DAYS;\n\n if (!is60daysAway) {\n return 'date';\n }\n\n const quarter = getQuarter(openingDate);\n\n return latitude > 0\n ? NORTH_SEASONS_BY_QUARTER[quarter]\n : SOUTH_SEASONS_BY_QUARTER[quarter];\n}\n\nexport function managerRoleToTranslationKey(role: string) {\n switch (role) {\n case ManagerRoles.MemberExperienceAssociate:\n return 'member-experience-associate';\n case ManagerRoles.ConferenceServicesManager:\n return 'conference-services-manager';\n case ManagerRoles.TechnicalAudioVisualManager:\n return 'technical-audio-visual-manager';\n default:\n return 'member-experience-manager';\n }\n}\n\nexport function shouldShowLogo(brandName: string | null) {\n return brandName === BrandNames.WelkinMeraki;\n}\n\nexport function getLocationHighlightName(params: {\n name: string;\n brandName: LocationDto['brandName'];\n t: ReturnType>;\n}) {\n const { name, brandName, t } = params;\n\n if (\n brandName == null ||\n brandName === BrandNames.WelkinMeraki ||\n name.includes(brandName)\n ) {\n return name;\n }\n\n return t('highlight-name', { brandName, locationName: name });\n}\n\nexport function shouldShowOpeningLabel(location: {\n isExternal?: boolean;\n firstDayOfBusinessISO: string | null;\n phase?: LocationPhases;\n hideOpeningDate?: boolean;\n isWaitlisting?: boolean;\n}) {\n return (\n !location.isExternal &&\n location.firstDayOfBusinessISO != null &&\n !location.hideOpeningDate &&\n location.phase != null &&\n !location.isWaitlisting &&\n [LocationPhases.Signed, LocationPhases.Launch].includes(location.phase)\n );\n}\n\nexport const getDayOpeningHours = (\n openingHours: LocationOpeningHoursDto,\n day: string\n): LocationValueOpeningHour | null => {\n const currentDayOfWeek = getAbbreviatedDayName(\n day\n ) as keyof LocationOpeningHoursDto;\n\n return openingHours[currentDayOfWeek] ?? null;\n};\n\nexport function getNextAvailableDay(props: {\n day: string;\n blackoutDates: BlackoutDateDto[];\n openingHours: LocationOpeningHoursDto;\n unavailableDays: string[];\n}) {\n const { day, blackoutDates, openingHours, unavailableDays } = props;\n let isAvailableDay = false;\n let currentDay = day;\n\n while (!isAvailableDay) {\n const dayOpeningHours = getDayOpeningHours(openingHours, currentDay);\n if (\n dayOpeningHours === null ||\n blackoutDates.some((blackoutDate) =>\n isBlackoutDay(currentDay, blackoutDate)\n ) ||\n unavailableDays.includes(currentDay)\n ) {\n currentDay = getNextDay(currentDay);\n continue;\n }\n isAvailableDay = true;\n }\n\n return currentDay;\n}\n\nexport function getValidEndDays(props: {\n startDay: string;\n blackoutDates: BlackoutDateDto[];\n openingHours: LocationOpeningHoursDto;\n unavailableDays: string[];\n}) {\n const { startDay, blackoutDates, openingHours, unavailableDays } = props;\n let currentDay = startDay;\n const possibleEndDays: string[] = [startDay];\n\n while (true) {\n const nextDay = getNextDay(currentDay);\n const nextAvailableDay = getNextAvailableDay({\n day: nextDay,\n blackoutDates,\n openingHours,\n unavailableDays,\n });\n if (nextAvailableDay !== nextDay) {\n break;\n }\n possibleEndDays.push(nextDay);\n currentDay = nextDay;\n }\n\n return possibleEndDays;\n}\n\nexport function getMaxValidEndDay(\n props: Parameters[0]\n) {\n const validEndDays = getValidEndDays(props);\n return validEndDays[validEndDays.length - 1];\n}\n\nfunction isBlackoutDay(day: string, blackoutDate: BlackoutDateDto) {\n const blackoutDay = blackoutDate.date.split('T')[0];\n return day === blackoutDay;\n}\n\nexport async function getNextAvailableDateRange(props: {\n location: LocationDto;\n preferredStartDay?: string;\n preferredEndDay?: string;\n unavailableDays: string[];\n}): Promise<{ startDay: string; endDay: string }> {\n const { location, preferredEndDay, preferredStartDay, unavailableDays } =\n props;\n\n const startDay = getNextAvailableDay({\n day: await getValidDay(preferredStartDay),\n openingHours: location.openingHours,\n blackoutDates: location.blackoutDates,\n unavailableDays,\n });\n\n if (\n startDay !== preferredStartDay ||\n !preferredEndDay ||\n preferredEndDay < preferredStartDay\n ) {\n return getDefaultDateRange(startDay);\n }\n\n const endDay = getNextAvailableDay({\n day: await getValidDay(preferredEndDay),\n openingHours: location.openingHours,\n blackoutDates: location.blackoutDates,\n unavailableDays,\n });\n\n if (endDay !== preferredEndDay) {\n return getDefaultDateRange(startDay);\n }\n\n const validEndDates = await getValidEndDays({\n startDay,\n blackoutDates: location.blackoutDates,\n openingHours: location.openingHours,\n unavailableDays,\n });\n\n if (validEndDates.some((x) => x === endDay)) {\n return { startDay, endDay };\n }\n\n return getDefaultDateRange(startDay);\n}\n\nasync function getValidDay(day: string | undefined): Promise {\n const tomorrowDay = getTomorrowDay();\n const today = new Date();\n const todayAtCutoff = setHours(setMinutes(today, 0), DAY_PASS_CUTOFF_HOUR);\n\n const maxBookingDate = addMonths(today, MAX_BOOKING_MONTHS);\n\n if (day && new Date(day) > maxBookingDate) {\n return tomorrowDay;\n }\n\n if (day == null) {\n return tomorrowDay;\n }\n\n if (isSameDay(createLocalDay(day), today) && !isAfter(today, todayAtCutoff)) {\n return day;\n }\n\n const isValid = await stringDay().isValid(day);\n\n if (!isValid || day < tomorrowDay) {\n return tomorrowDay;\n }\n return day;\n}\n\nexport function getValidDaySync(day: string | undefined): string {\n const tomorrowDay = getTomorrowDay();\n const today = new Date();\n const todayAtCutoff = setHours(setMinutes(today, 0), DAY_PASS_CUTOFF_HOUR);\n\n const maxBookingDate = addMonths(today, MAX_BOOKING_MONTHS);\n\n if (day && new Date(day) > maxBookingDate) {\n return tomorrowDay;\n }\n\n if (day == null) {\n return tomorrowDay;\n }\n\n if (isSameDay(createLocalDay(day), today) && !isAfter(today, todayAtCutoff)) {\n return day;\n }\n\n const isValid = stringDay().isValidSync(day);\n\n if (!isValid || day < tomorrowDay) {\n return tomorrowDay;\n }\n return day;\n}\n\nfunction getDefaultDateRange(startDay: string) {\n return { startDay, endDay: startDay };\n}\n\nexport function isCoworkingDayPassEnabled(location: LocationDto) {\n const {\n canBuyOnline,\n availableAtLocation,\n dailyOnDemandCapacity,\n currentlySellable,\n } = location.products.coworkingDayPass;\n\n return Boolean(\n canBuyOnline &&\n currentlySellable &&\n availableAtLocation &&\n dailyOnDemandCapacity != null &&\n dailyOnDemandCapacity > 0\n );\n}\n\nexport function isSsosEnabled(location: LocationDto) {\n const { canBuyOnline, availableAtLocation, currentlySellable } =\n location.products.dedicatedOffice;\n\n return (\n canBuyOnline === true &&\n currentlySellable === true &&\n availableAtLocation === true\n );\n}\n","import { SelectOption } from '@/components/form/Select/types';\n\nexport function sortByLabel(a: SelectOption, b: SelectOption) {\n return a.label.localeCompare(b.label);\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","isSsosAvailable","location","ssosAvailable","BreadcrumbListSchema","props","schema","jsx_runtime","jsx","script","type","dangerouslySetInnerHTML","__html","JSON","stringify","MarketDescriptionText","param","text","p","className","MarketDescriptionTitle","h2","clsx","tiemposFont","MarketDescription","marketName","marketDescription","locationsCount","t","useTranslations","jsxs","div","Fragment","count","SecondaryLinkButton","href","SearchTitle","PrimaryHeading","MarketDiscovery","market","mapboxAccessToken","isFullScreenMap","isWebGLSupported","useWebGL","staticMapRef","useRef","highlightedSlug","onMouseEnter","onMouseLeave","useHighlightedSlug","name","locations","featuresLocations","getMapboxFeaturesLocations","initialCameraOptions","center","getCenterFromFeatures","zoom","DEFAULT_MAP_SEARCH_ZOOM","CardListWrapper","withMap","length","LocationSearchList","SearchNoResults","SearchMapWrapper","SearchStaticMap","ref","coords","LocationMap","features","MarketsPage","queryParams","HOST","getServerConfig","updateQuery","useSearchPageParams","viewMode","setViewMode","useState","view","SearchViewMode","List","itemListElement","position","item","getMetroListItem","slug","host","concat","main","Map","description","SwitchViewButton","onClick","window","scroll","nextViewMode","MIN_TOUCH_SCROLL_SIZE","DEBOUNCE_TIME","useScrollHandlers","canGoNext","canGoPrev","goNext","goPrev","touchPosition","setTouchPosition","handleTouchStart","e","touches","clientX","handleTouchMove","touchDown","diff","CircleLoader","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","svg","xmlns","width","height","fill","path","fillRule","stroke","d","clipRule","FormattedPriceText","currencyIsoCode","price","frequency","maximumFractionDigits","divProps","locale","useLocale","formattedPrice","Intl","NumberFormat","style","currency","format","formattedPriceElement","rich","getFrequencyTranslationKey","Frequency","Daily","Hourly","Monthly","span","chunks","getImageLoader","src","includes","inventoryAssetsImageLoader","startsWith","publicAssetsImageLoader","quality","replace","process","IMAGE_PLACEHOLDER","ImageWithPlaceholder","alt","placeholder","blurDataURL","sizes","otherProps","imgSrc","setImgSrc","useEffect","Image","loader","onLoad","target","naturalWidth","onError","LocationOpeningLabel","openingDateISO","locationGeolocalization","date","getOpeningDate","translationKey","getOpeningLabelTranslationKey","openingDate","latitude","lat","year","getFullYear","ButtonAsLink","children","others","button","PrimaryButton","sm","isLoading","SecondaryButton","ArrowButton","isDisabled","direction","disabled","ChevronIcon","TertiaryButton","LocationMapPopup","dynamic","LocationTileItem","mapProps","locationSelected","setLocationSelected","mapRef","widthWindow","useScreenSize","isDataLayerLoaded","gtm","searchType","SearchType","Coworking","item_list_id","item_list_name","items","onMapRefChange","current","onMarkerClicked","x","ScreenSize","LG","map","TilesCarousel","TilesCarouselItem","activeIndex","setActiveIndex","widthTile","setWidthTile","Array","isArray","innerWidth","prevState","transform","onTouchStart","onTouchMove","forwardRef","data-testid","displayName","__webpack_exports__","Z","DayPassCtaPrice","label","dataTestId","Link","strong","CaptionImage","cards_LocationCardImage","memo","priority","caption","useLocationImageOrPlaceholder","image","maxHeight","LocationCardSearch","prices","dateRange","cardHeight","showSsosImageCaption","useAppearOnScroll","screenSize","formattedAddress","getFormattedAddressByCountry","address","address2","city","country","state","isIndustriousLocation","zipCode","showMembershipCta","accessMembershipAvailable","membershipPrice","showDayPassCta","coworkingDayPassAvailable","dayPass","imageCaption","undefined","amenities","unique","maxAmenitiesDisplay","isMobile","SM","createLocationUrl","data-slug","SearchCard","LocationCardImage","shouldShowOpeningLabel","firstDayOfBusinessISO","geolocalization","h4","addressLine1","addressLine2","phone","slice","amenity","i","Amenity","code","labelClassName","iconClassName","isExternalLocation","shouldShowLogo","brandName","getBrandLogo","aria-hidden","createLocationDayPassUrl","ul","loc","index","li","LocationCard","id","hasFilters","noResultsWithFiltersMessage","listIcon","mapIcon","CURRENT_LOCATION_VALUE","getSearchValueFromQuery","query","decodeURIComponent","getLatLngFromQuery","centerParam","longitude","decodeQueryParamAsString","split","coord","isNaN","lng","getRoute","MeetingRoom","SEARCH_ROUTES","MEETING_ROOMS","COWORKING","LOCATIONS","createLocalizationQueryParams","coordsBounds","bounds","coordsCenter","join","toString","mapBounds","northEastPoint","ne","southWestPoint","sw","h1","SecondaryHeading","fontFamilyClassName","isBigger","TertiaryHeading","h3","BodyBoldUppercase","as","Component","APPEAR_ON_SCROLL_CLASS","observableRef","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","classList","add","remove","threshold","observe","disconnect","useDebounce","func","ms","dependencies","useCallback","debounce","url","altText","useRouter","searchParams","useSearchParams","push","routerPush","routerReplace","refresh","useNextRouter","allParams","getAllParamsFromSearchParams","supplier","options","stringifyUrl","EU_COUNTRIES","UK","US","CA","TransitCategoryType","LocationPriceFormat","SortFilter","LocationPhases","ManagerRoles","Countries","LocationPrimaryCtaTypes","OFFICE_WINDOW_IMG","OFFICE_INTERIOR_IMG","GOOGLE_SEARCH_API","getLocationPrimaryCtaType","phase","isEarlyInPersonTourEnabled","calendlyLinks","isLaunchLocationWithoutEarlyInPersonTourAvailable","Launch","inPersonTour","Signed","getGoogleMapsDirectionUrlFromString","encodeURI","getGoogleMapsDirectionUrl","sortMemberExperienceTeam","a","b","role","localeCompare","MemberExperienceManager","firstPart","Belgium","France","Canada","UnitedKingdom","getPhoneApplicationForm","getGenericPhoneNumberByCountry","FR_GENERIC_NUMBER","UK_GENERIC_APPLICATION_NUMBER","US_GENERIC_NUMBER","US_GENERIC_APPLICATION_NUMBER","getLocationAreaSalesLeadPhone","locationManagers","areaSalesLead","find","manager","AreaSalesLead","getProductPageLink","productName","MemberExperienceAssociate","LOCALES","en","fr","nl","DATE_LOCALE_EN","SECOND_IN_MS","MINUTE_IN_SECONDES","HOUR_IN_MINUTES","HOUR_IN_MS","DAY_IN_MS","getFirstDayOfNextMonth","startDate","nextMonth","addMonths","setDate","amount","dateFnsAddMonths","isWithinInterval","dateFnsIsWithinInterval","dateFnsFormat","getQuarter","dateFnsGetQuarter","differenceInDays","dateLeft","dateRight","dateFnsDifferenceInDays","addDays","dateFnsAddDays","endOfMonth","dateFnsEndOfMonth","addHours","hours","dateFnsAddHours","setLocale","setDefaultOptions","l","differenceInHours","dateFnsdifferenceInHours","differenceInMinutes","dateFnsDifferenceInMinutes","eachDayOfInterval","start","end","dateFnsEachDayOfInterval","addMinutes","dateFnsAddMinutes","duration","dateFnsAdd","addBusinessDays","dateFnsAddBusinessDays","parse","time","dateFnsParse","isSameHour","dateFnsIsSameHour","isSameMonth","dateFnsIsSameMonth","isEqual","dateFnsIsEqual","isAfter","dateFnsIsAfter","isSameDay","dateFnsIsSameDay","setHours","dateFnsSetHours","setMinutes","minutes","dateFnsSetMinutes","subHours","dateFnsSubHours","getFormattedTime","today","Date","Number","getNbThirtyMinuteSlots","endDate","getThirtyMinuteSlots","from","dateHourDifference","_","getFormattedDateWithTime","setSeconds","isPast","dateFnsIsPast","isFuture","dateFnsIsFuture","getDateFromTime","hour","minute","createDateFromLocalDate","localDate","getISOTime","getTimeFromLocalDate","toISOString","isValidDate","isPastDay","getTime","createLocalDay","local","day","generateMonthDayDates","month","margin","getNextMonth","generateDates","setMonth","getMonth","dates","getDate","getMonthDate","getDateFromLocal","timeZone","zonedTimeToUtc","getDateFormatInTimeZone","formatInTimeZone","getTimeInTimeZone","getNbHours","formatTime","formatTimeLowercase","toLowerCase","getTomorrowDay","getNextDay","formatToDay","formatToISODay","dateStr","getLocalDay","isoDay","replaceAll","getLocalDateFromDay","getNbDays","to","Math","ceil","timeGap","isDateRange","getAbbreviatedDayName","eachDayOfDateRange","isWeekEnd","isSameWeek","day1","day2","dateFnsIsSameISOWeek","startOfMonth","dateFnsStartOfMonth","GtmListId","GtmListName","dataLayer","pushEvent","event","pageview","pageType","pushECommerceEvent","ecommerce","AFFILIATION","PRODUCT_CATEGORY_ON_DEMAND","MEETING_ROOM_PRODUCT","INDUSTRIOUS_BRAND_NAME","mapMeetingRoomToItemEcommerce","meetingRoom","locationId","item_name","locationName","item_id","affiliation","item_brand","item_category","item_category2","item_category3","locationTier","item_category4","item_variant","seats","location_id","mapSimpleMeetingRoomToItemEcommerce","mapCoworkingToItemEcommerce","mapOfficeToItemEcommerce","officeName","officeId","params","quantity","BrandNames","stringDay","string","test","isExternal","externalLink","startDay","endDay","WelkinMeraki","wmLogo","TheGreatRoom","tgrLogo","mapLocationsToOptions","mapLocationToOption","sort","sortByLabel","getLocationOptionLabel","value","sfId","dateISO","substring","DISPLAY_SEASON_AFTER_NB_DAYS","quarter","NORTH_SEASONS_BY_QUARTER","SOUTH_SEASONS_BY_QUARTER","managerRoleToTranslationKey","ConferenceServicesManager","TechnicalAudioVisualManager","getLocationHighlightName","hideOpeningDate","isWaitlisting","getDayOpeningHours","openingHours","getNextAvailableDay","blackoutDates","unavailableDays","isAvailableDay","currentDay","dayOpeningHours","some","blackoutDate","getMaxValidEndDay","validEndDays","getValidEndDays","possibleEndDays","nextDay","nextAvailableDay","getValidDaySync","tomorrowDay","todayAtCutoff","DAY_PASS_CUTOFF_HOUR","maxBookingDate","MAX_BOOKING_MONTHS","isValidSync"],"sourceRoot":""}