{"version":3,"file":"static/chunks/5428-8cec750a0ab6ce55.js","mappings":"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","sources":["webpack://_N_E/./components/HorizontalDivider.tsx","webpack://_N_E/./hooks/useAuthData.tsx","webpack://_N_E/./hooks/useRouter.tsx","webpack://_N_E/./lib/promises.ts","webpack://_N_E/./lib/users/claims.ts","webpack://_N_E/./lib/users/users.ts","webpack://_N_E/./utils/date-utils.ts","webpack://_N_E/./utils/gtm.ts","webpack://_N_E/./utils/http-request.ts","webpack://_N_E/./utils/sentry.ts","webpack://_N_E/./public/icons/closeIcon.svg"],"sourcesContent":["import clsx from 'clsx';\n\ntype Props = {\n className?: string;\n};\n\nexport function HorizontalDivider(props: Props) {\n const { className } = props;\n return
;\n}\n","'use client';\n\n/* eslint-disable @typescript-eslint/no-empty-function */\nimport React, {\n Dispatch,\n SetStateAction,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { SignUpResponseDto } from '@/lib/authentication/dto/signup-response.dto';\nimport { Claims, Scopes } from '@/lib/users/claims';\nimport { UserDto } from '@/lib/users/dto/user.dto';\nimport { getUserById } from '@/lib/users/users';\n\nexport type LoggedUserInfo = {\n isAuthenticated?: boolean;\n token?: string;\n userId?: string;\n user?: UserDto;\n email?: string;\n checkAuth: () => Promise;\n isLoading: boolean;\n checkClaims: (scope: Scopes, claims: Claims[]) => boolean;\n};\n\nexport type AuthDataContextType = LoggedUserInfo & {\n signedUpUser?: SignUpResponseDto;\n setSignedUpUser: Dispatch>;\n};\n\nconst defaultLoggedUserInfo: LoggedUserInfo = {\n isAuthenticated: false,\n token: undefined,\n checkAuth: async () => {},\n isLoading: true,\n checkClaims: () => false,\n};\n\nconst defaultContextValue: AuthDataContextType = {\n ...defaultLoggedUserInfo,\n setSignedUpUser: () => null,\n};\n\nconst AuthDataContext =\n React.createContext(defaultContextValue);\n\nconst AuthProvider = ({\n children,\n}: {\n locale?: string;\n children: React.ReactNode;\n}) => {\n const [loggedUserInfo, setLoggedUserInfo] = useState(\n defaultLoggedUserInfo\n );\n const [signedUpUser, setSignedUpUser] = useState();\n\n const checkAuth = async () => {\n const { checkUserToken, getUserToken } = await import(\n '@/lib/authentication/helpers'\n );\n const check = await checkUserToken();\n\n if (!check.isValid) {\n setLoggedUserInfo({\n isAuthenticated: false,\n checkAuth,\n isLoading: false,\n checkClaims: () => false,\n });\n return;\n }\n\n const { token } = await getUserToken();\n const AwsAuth = (await import('aws-amplify')).Auth;\n const currentAuthenticatedUser = await AwsAuth.currentAuthenticatedUser();\n const userId = currentAuthenticatedUser.attributes['custom:user_id'];\n\n const user = await getUserById(userId);\n\n const checkClaims = (scope: Scopes, claims: Claims[]) => {\n const claimsJson = currentAuthenticatedUser.attributes[`custom:${scope}`];\n const claimsObj = claimsJson ? JSON.parse(claimsJson) : {};\n\n return claims.every((claim) => claimsObj[claim]);\n };\n\n setLoggedUserInfo({\n isAuthenticated: true,\n token,\n email: currentAuthenticatedUser.attributes.email,\n userId,\n user,\n checkAuth,\n isLoading: false,\n checkClaims,\n });\n };\n\n const value = useMemo(() => {\n return {\n ...loggedUserInfo,\n signedUpUser,\n setSignedUpUser,\n };\n }, [loggedUserInfo, signedUpUser]);\n\n useEffect(() => {\n const initAuthAsync = async () => {\n const { initAuth } = await import('@/lib/authentication/init');\n initAuth();\n await checkAuth();\n };\n initAuthAsync();\n }, []);\n\n return (\n \n {children}\n \n );\n};\n\nconst useAuthData = (): AuthDataContextType => {\n return useContext(AuthDataContext);\n};\n\nexport { useAuthData };\nexport default AuthProvider;\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 function delay(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function fetchWithMinDuration(promise: Promise, ms: number) {\n return Promise.all([promise, delay(ms)]).then(([result]) => result);\n}\n","export enum Scopes {\n ClientAccess = 'client_access',\n AccessControl = 'access_control',\n Inventory = 'inventory',\n OrderPaymentBilling = 'opb',\n}\n\nexport enum Claims {\n // Client Access\n CanAccessMemberPortal = 'can_access_member_portal',\n}\n","import { getServerConfig } from '@/utils/config';\nimport { HttpMethods, tryFetchToJson } from '@/utils/http-request';\n\nimport { UserDto } from './dto/user.dto';\n\nexport async function getUserById(id: string) {\n const url = `${getServerConfig().NEXT_PUBLIC_USER_API_URL}/users/${id}`;\n\n return tryFetchToJson({\n withAuthToken: true,\n fetchParams: {\n input: url,\n init: {\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n });\n}\n\nexport async function updateUser(params: { id: string; phone?: string }) {\n const { id, ...patch } = params;\n const url = `${getServerConfig().NEXT_PUBLIC_USER_API_URL}/users/${id}`;\n\n return tryFetchToJson({\n withAuthToken: true,\n fetchParams: {\n input: url,\n init: {\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(patch),\n method: HttpMethods.Patch,\n },\n },\n });\n}\n","import {\n Duration,\n Interval,\n add as dateFnsAdd,\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 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 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","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","import { NextRequest } from 'next/server';\n\nimport { delay } from '@/lib/promises';\n\nimport { SECOND_IN_MS } from './date-utils';\nimport { captureException, captureMessage } from './sentry';\n\nconst DEFAULT_RETRY_DELAY = 2 * SECOND_IN_MS;\nexport const DEFAULT_NB_RETRIES = 3;\n\nexport enum HttpMethods {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Patch = 'PATCH',\n Options = 'OPTIONS',\n Delete = 'DELETE',\n}\n\nexport enum HttpErrorNames {\n MethodNotAllowed = 'MethodNotAllowed',\n}\n\nexport type OnErrorResParams = {\n status: number;\n body: any;\n};\n\nexport async function tryFetchToJson(params: {\n fetchParams: { input: RequestInfo | URL; init?: RequestInit | undefined };\n onSuccess?: (response: T) => any;\n onFunctionalError?: (res?: OnErrorResParams) => any;\n onTechnicalError?: (err: any) => any;\n withoutResponse?: boolean;\n skipFetchError?: boolean;\n withAuthToken?: boolean;\n nbRetries?: number;\n retryDelay?: number;\n}): Promise {\n const {\n fetchParams,\n onSuccess,\n onFunctionalError,\n onTechnicalError,\n withoutResponse,\n skipFetchError,\n nbRetries = 0,\n retryDelay = DEFAULT_RETRY_DELAY,\n } = params;\n\n const fetchParamsInit = {\n ...fetchParams.init,\n headers: {\n ...fetchParams.init?.headers,\n ...(params.withAuthToken && {\n Authorization: `Bearer ${await getUserToken()}`,\n }),\n },\n };\n\n const retry = async () => {\n await delay(retryDelay);\n return tryFetchToJson({\n ...params,\n nbRetries: nbRetries - 1,\n });\n };\n\n try {\n const res = await fetch(fetchParams.input, fetchParamsInit);\n\n if (res.status >= 400) {\n captureMessage(\n `Failed to fetch ${fetchParams.input} with status code ${res.status}`,\n res.status < 500 ? 'warning' : 'error'\n );\n\n if (nbRetries > 0) {\n return retry();\n }\n\n try {\n const body = await res.json();\n return onFunctionalError?.({ status: res.status, body });\n } catch {\n return onFunctionalError?.({ status: res.status, body: undefined });\n }\n }\n\n const response =\n res.status === 204 || withoutResponse ? null : ((await res.json()) as T);\n\n if (onSuccess == null) {\n return response as T;\n }\n\n return onSuccess(response as T);\n } catch (err: any) {\n if (!skipFetchError) {\n captureException(\n `Failed to fetch ${fetchParams.input}: ${err?.toString()}`,\n err\n );\n }\n\n if (nbRetries > 0) {\n return retry();\n }\n\n return onTechnicalError?.(err);\n }\n}\n\nexport function getClientIp(req: NextRequest): string {\n let ip = req.headers.get('x-real-ip') as string;\n\n const forwardedFor = req.headers.get('x-forwarded-for') as string;\n if (!ip && forwardedFor) {\n ip = forwardedFor?.split(',').at(0) ?? 'Unknown';\n }\n\n return ip;\n}\n\nexport const getUserToken = async () => {\n const AuthHelpers = await import('@/lib/authentication/helpers');\n const { isValid } = await AuthHelpers.checkUserToken();\n const { token } = await AuthHelpers.getUserToken();\n\n let userToken = token;\n if (!isValid) {\n try {\n const { message } = await AuthHelpers.refreshUserToken();\n userToken = message.refreshToken.token;\n } catch (error) {\n AuthHelpers.logout(); // making sure we remove auth data from local storage\n }\n }\n\n return userToken;\n};\n","import * as Sentry from '@sentry/nextjs';\n\nexport function captureException(message: string, error?: Error) {\n Sentry.captureException(\n new Error(message, {\n cause: error,\n })\n );\n}\n\nexport function captureMessage(\n message: string,\n severity?: Sentry.SeverityLevel\n) {\n Sentry.captureMessage(message, severity ?? 'info');\n}\n","export default {\"src\":\"/_next/static/media/closeIcon.09805f7c.svg\",\"height\":18,\"width\":18,\"blurWidth\":0,\"blurHeight\":0};"],"names":["HorizontalDivider","props","className","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","hr","clsx","defaultLoggedUserInfo","isAuthenticated","token","undefined","checkAuth","isLoading","checkClaims","defaultContextValue","setSignedUpUser","AuthDataContext","React","useAuthData","useContext","__webpack_exports__","children","param","loggedUserInfo","setLoggedUserInfo","useState","signedUpUser","checkUserToken","getUserToken","Promise","all","__webpack_require__","e","then","bind","check","isValid","AwsAuth","Auth","currentAuthenticatedUser","userId","attributes","user","getUserById","email","scope","claims","claimsJson","concat","claimsObj","JSON","parse","every","claim","value","useMemo","useEffect","initAuthAsync","initAuth","Provider","useRouter","searchParams","useSearchParams","push","routerPush","replace","routerReplace","refresh","useNextRouter","allParams","getAllParamsFromSearchParams","supplier","href","options","stringifyUrl","delay","ms","setTimeout","resolve","fetchWithMinDuration","promise","result","Scopes","Claims","id","url","getServerConfig","NEXT_PUBLIC_USER_API_URL","tryFetchToJson","withAuthToken","fetchParams","input","init","headers","updateUser","params","patch","body","stringify","method","HttpMethods","Patch","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","date","dateFnsIsWithinInterval","format","dateFnsFormat","getQuarter","dateFnsGetQuarter","differenceInDays","dateLeft","dateRight","dateFnsDifferenceInDays","addDays","dateFnsAddDays","endOfMonth","dateFnsEndOfMonth","addHours","hours","dateFnsAddHours","setLocale","locale","setDefaultOptions","find","l","code","differenceInHours","dateFnsdifferenceInHours","differenceInMinutes","dateFnsDifferenceInMinutes","eachDayOfInterval","start","end","dateFnsEachDayOfInterval","addMinutes","dateFnsAddMinutes","add","duration","dateFnsAdd","time","dateFnsParse","isSameHour","dateFnsIsSameHour","isSameMonth","dateFnsIsSameMonth","isEqual","dateFnsIsEqual","isAfter","dateFnsIsAfter","isSameDay","dateFnsIsSameDay","setHours","dateFnsSetHours","setMinutes","minutes","dateFnsSetMinutes","subHours","dateFnsSubHours","getFormattedTime","today","Date","split","map","Number","getNbThirtyMinuteSlots","endDate","getThirtyMinuteSlots","Array","from","length","dateHourDifference","_","index","getFormattedDateWithTime","setSeconds","isPast","dateFnsIsPast","isFuture","dateFnsIsFuture","getDateFromTime","hour","minute","createDateFromLocalDate","localDate","getISOTime","getTimeFromLocalDate","toISOString","slice","isValidDate","toString","isPastDay","getTime","createLocalDay","local","day","generateMonthDayDates","month","margin","getNextMonth","generateDates","setMonth","getMonth","dates","getDate","getMonthDate","getFullYear","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","includes","isSameWeek","day1","day2","dateFnsIsSameISOWeek","GtmListId","GtmListName","isDataLayerLoaded","window","dataLayer","pushEvent","event","pageview","pageType","pushECommerceEvent","ecommerce","AFFILIATION","PRODUCT_CATEGORY_ON_DEMAND","MEETING_ROOM_PRODUCT","INDUSTRIOUS_BRAND_NAME","mapMeetingRoomToItemEcommerce","meetingRoom","locationId","item_name","locationName","name","item_id","slug","affiliation","item_brand","brandName","item_category","item_category2","item_category3","locationTier","item_category4","item_variant","seats","location_id","mapSimpleMeetingRoomToItemEcommerce","mapCoworkingToItemEcommerce","location","mapOfficeToItemEcommerce","officeName","officeId","quantity","DEFAULT_RETRY_DELAY","DEFAULT_NB_RETRIES","onSuccess","onFunctionalError","onTechnicalError","withoutResponse","skipFetchError","nbRetries","retryDelay","fetchParamsInit","Authorization","retry","res","fetch","status","captureMessage","json","response","err","captureException","HttpErrorNames","AuthHelpers","userToken","message","refreshUserToken","refreshToken","error","logout","Sentry","cause","severity","Z"],"sourceRoot":""}