{"version":3,"sources":["apollo/apolloClient.ts","queries/partnerConfigs/partnerConfigsTypeDefs.ts","constants/languagesMap.ts","utils/utils.ts","queries/ip/IPTypeDefs.ts","components/localization/storyblokClient.tsx","configs.ts","queries/currency/currencyTypeDefs.ts","queries/translations/translationsTypeDefs.ts","preload.ts"],"names":["httpLink","createHttpLink","uri","process","errorLink","onError","graphQLErrors","networkError","forEach","message","path","console","error","apolloClient","ApolloClient","link","ApolloLink","from","cache","InMemoryCache","defaultOptions","watchQuery","fetchPolicy","errorPolicy","query","PARTNER_CONFIGS","gql","PARTNER_WHITELABEL","languagesMap","en","de","es","fr","nl","pt","getQueryStringParams","test","slice","split","reduce","params","param","key","value","decodeURIComponent","replace","parseQuoteValue","inputStr","parsedData","JSON","parse","Array","isArray","length","quoteId","setHtmlTextDirection","lng","document","getElementsByTagName","setAttribute","body","classList","add","removeAttribute","remove","getDefaultLanguage","supportedLanguages","navigator","language","preferredLanguage","localStorage","getItem","e","some","supportedLanguage","language_iso_code","formatTimeInterval","timeInSecond","locale","hours","Math","floor","minutes","hourFormatter","Intl","NumberFormat","style","unit","unitDisplay","minuteFormatter","formattedHours","format","formattedMinutes","formatPrice","price","currency","CLIENT_IP","IP_ADDRESS_INFO","fetchStoryblokStory","async","storyPath","baseUrl","token","window","environmentConfigs","storyblok","queryParams","result","fetch","then","res","json","story","content","log","fetchLanguageOptions","memoize","bookingToolLanguageOptionsStoryPath","Options","initConfigs","response","configs","CURRENCIES","TRANSLATIONS","domain","URLSearchParams","location","search","get","REACT_APP_PARTNER_DOMAIN","hostname","data","variables","partnerId","partnerConfigs","id","options","currentLang","app"],"mappings":"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","file":"static/js/main.0b4943f5.chunk.js","sourcesContent":["import { ApolloClient, ApolloLink, createHttpLink, DefaultOptions, InMemoryCache } from '@apollo/client';\nimport { ErrorResponse, onError } from '@apollo/client/link/error';\n\nexport const httpLink = createHttpLink({ uri: process.env.REACT_APP_API_URL });\n\nconst defaultOptions: DefaultOptions = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'all',\n },\n query: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'all',\n },\n};\n\nconst errorLink = onError(({ graphQLErrors, networkError }: ErrorResponse) => {\n if (graphQLErrors) {\n graphQLErrors.forEach(({ message, path }: any) => {\n console.error(path, message);\n });\n }\n if (networkError) {\n console.error(networkError);\n }\n});\n\nexport const apolloClient = new ApolloClient({\n link: ApolloLink.from([\n errorLink,\n httpLink,\n ]),\n cache: new InMemoryCache(),\n defaultOptions,\n});\n","import { gql } from '@apollo/client';\n\nexport const PARTNER_CONFIGS = gql`\n query PartnerConfigs($domain: String) {\n partnerConfigs(domain: $domain) {\n id\n name\n partnerId\n customPrefixUrl\n applicationSettings\n styling {\n backgroundColor\n backgroundContrastColor\n primaryColor\n primaryContrastColor\n secondaryColor\n secondaryContrastColor\n tertiaryColor\n tertiaryContrastColor\n logoUrl\n heroImageUrl\n }\n settings {\n showHubFirst\n }\n stylingOverrides {\n code\n value\n }\n tagManagers\n primaryUrl\n onlineBookingToolEnabled\n environmentConfigs {\n googleMapsApiKey\n adyenClientKey\n adyenMerchant\n environment\n sentryDSN\n }\n }\n }\n`;\n\nexport const PARTNER_WHITELABEL = gql`\n query PartnerWhitelabel($id: Int) {\n partnerWhiteLabel(id: $id) {\n helpdeskUrl\n }\n }\n`;\n\nexport const APPLICATION_SETTINGS = gql`\n query ApplicationSettings($params: ApplicationSettingsRequestParams!) {\n applicationSettings(params: $params) {\n results {\n id\n partnerId\n code\n type\n value\n category\n }\n pagination {\n currentPage\n pageSize\n totalPages\n totalResults\n }\n }\n }\n`;\n","export const languagesMap: any = {\n en: 'en-US',\n 'en-AU': 'en-US',\n 'en-BZ': 'en-US',\n 'en-CA': 'en-US',\n 'en-CB': 'en-US',\n 'en-GB': 'en-US',\n 'en-IE': 'en-US',\n 'en-JM': 'en-US',\n 'en-NZ': 'en-US',\n 'en-PH': 'en-US',\n 'en-TT': 'en-US',\n 'en-US': 'en-US',\n 'en-ZA': 'en-US',\n 'en-ZW': 'en-US',\n de: 'de-DE',\n 'de-AT': 'de-DE',\n 'de-CH': 'de-DE',\n 'de-DE': 'de-DE',\n 'de-LI': 'de-DE',\n 'de-LU': 'de-DE',\n es: 'es-ES',\n 'es-AR': 'es-ES',\n 'es-BO': 'es-ES',\n 'es-CL': 'es-ES',\n 'es-CO': 'es-ES',\n 'es-CR': 'es-ES',\n 'es-DO': 'es-ES',\n 'es-EC': 'es-ES',\n 'es-ES': 'es-ES',\n 'es-GT': 'es-ES',\n 'es-HN': 'es-ES',\n 'es-MX': 'es-ES',\n 'es-NI': 'es-ES',\n 'es-PA': 'es-ES',\n 'es-PE': 'es-ES',\n 'es-PR': 'es-ES',\n 'es-PY': 'es-ES',\n 'es-SV': 'es-ES',\n 'es-UY': 'es-ES',\n 'es-VE': 'es-ES',\n fr: 'fr-FR',\n 'fr-BE': 'fr-FR',\n 'fr-CA': 'fr-FR',\n 'fr-CH': 'fr-FR',\n 'fr-FR': 'fr-FR',\n 'fr-LU': 'fr-FR',\n 'fr-MC': 'fr-FR',\n 'it-IT': 'it-IT',\n nl: 'nl-NL',\n 'nl-BE': 'nl-NL',\n 'nl-NL': 'nl-NL',\n pt: 'pt-BR',\n 'pt-BR': 'pt-BR',\n 'pt-PT': 'pt-BR',\n};\n","import { ILanguageOption } from '../components/localization/LanguageContext';\nimport { languagesMap } from '../constants/languagesMap';\n\nexport const getQueryStringParams = (query: string) => {\n return query\n ? ((/^[?#]/).test(query) ? query.slice(1) : query)\n .split('&')\n .reduce((params: any, param) => {\n let [key, value] = param.split('=');\n params[key] = value ? decodeURIComponent(value.replace(/\\+/g, ' ')) : '';\n return params;\n }, {})\n : {};\n};\n\nexport const parseQuoteValue = (inputStr: string) => {\n const parsedData = JSON.parse(inputStr);\n if (Array.isArray(parsedData) && parsedData.length && parsedData[0].quoteId) {\n return parsedData[0].quoteId;\n }\n return '';\n};\n\nexport const setHtmlTextDirection = (lng: string) => {\n if (lng === 'ar-SA') {\n document.getElementsByTagName('html')[0].setAttribute('dir', 'rtl');\n document.body.classList.add('rtl');\n } else {\n document.getElementsByTagName('html')[0].removeAttribute('dir');\n document.body.classList.remove('rtl');\n }\n};\n\nexport const getDefaultLanguage = (supportedLanguages: ILanguageOption[]): string => {\n const browserLanguage: string = languagesMap[navigator?.language];\n let lng: string = browserLanguage;\n\n try {\n const preferredLanguage = localStorage?.getItem('preferredLanguage');\n if (preferredLanguage) {\n lng = JSON.parse(preferredLanguage!);\n }\n } catch (e) {\n console.error(e);\n }\n\n const isLanguageSupported = supportedLanguages.some((supportedLanguage) => supportedLanguage.language_iso_code === lng);\n\n return isLanguageSupported ? lng : supportedLanguages[0].language_iso_code;\n};\n\nexport const formatDate = async (date: string) => {\n const { default: moment } = await import('moment');\n return moment(date).format('LLLL')\n .replace(/^(\\w)/, (match) => match.toUpperCase());\n};\n\nexport const formatTimeInterval = (timeInSecond: number, locale: any = 'en-US') => {\n const hours = Math.floor(timeInSecond / 3600);\n const minutes = Math.floor((timeInSecond % 3600) / 60);\n\n // Create a formatter for hours\n const hourFormatter = new Intl.NumberFormat(locale, {\n style: 'unit',\n unit: 'hour',\n unitDisplay: 'long',\n });\n\n // Create a formatter for minutes\n const minuteFormatter = new Intl.NumberFormat(locale, {\n style: 'unit',\n unit: 'minute',\n unitDisplay: 'long',\n });\n\n // Format the hours and minutes\n const formattedHours = hourFormatter.format(hours);\n const formattedMinutes = minuteFormatter.format(minutes);\n\n // Return the formatted time interval\n return hours ? `${formattedHours} ${formattedMinutes}` : formattedMinutes;\n};\n\nexport const formatPrice = (price: number, currency: string, locale: string) => {\n return new Intl.NumberFormat(locale, { style: 'currency', currency }).format(price);\n};\n","import { gql } from '@apollo/client';\n\nexport const CLIENT_IP = gql`\n query clientIp {\n clientIp\n }\n`;\n\nexport const IP_ADDRESS_INFO = gql`\n query IPAddressInfo {\n IPAddressInfo {\n ipAddress\n type\n continentCode\n countryCode\n regionCode\n countryPhonePrefix\n timeZone\n currencyCode\n isp\n proxy\n crawler\n tor\n }\n }\n`;\n","import memoize from 'lodash/memoize';\n\nexport const fetchStoryblokStory = async (storyPath: string, lng: string) => {\n const { baseUrl, token } = window.environmentConfigs?.storyblok ?? {};\n\n const queryParams = `language=${lng}&token=${token}&version=published`;\n let result = null;\n\n try {\n result = await fetch(`${baseUrl}${storyPath}?${queryParams}`)\n .then((res) => res.json());\n\n return result?.story?.content ?? {};\n } catch (e) {\n console.log(`Error in fetching ${storyPath} from Storyblock - `, e);\n return {};\n }\n};\n\nexport const fetchLanguageOptions = memoize(async (lng = 'en') => {\n const { bookingToolLanguageOptionsStoryPath } = window.environmentConfigs?.storyblok ?? {};\n const content = await fetchStoryblokStory(bookingToolLanguageOptionsStoryPath, lng);\n return content?.Options;\n});\n","import memoize from 'lodash/memoize';\n\nexport const initConfigs = memoize(async () => {\n const response = await fetch(`${process.env.REACT_APP_API_URL}/configs`);\n const configs: any = await response.json();\n window.environmentConfigs = configs;\n return configs;\n});\n","import { gql } from '@apollo/client';\n\nexport const CURRENCIES = gql`\n query Currencies {\n currencies\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const TRANSLATIONS = gql`\n query Translations($app: String!, $lng: String!) {\n translations(app: $app, lng: $lng) {\n content\n languageCodes\n }\n }\n`;\n","import { apolloClient } from './apollo/apolloClient';\nimport { ILanguageOption } from './components/localization/LanguageContext';\nimport { fetchLanguageOptions } from './components/localization/storyblokClient';\nimport { initConfigs } from './configs';\nimport { CURRENCIES } from './queries/currency/currencyTypeDefs';\nimport { IP_ADDRESS_INFO } from './queries/ip/IPTypeDefs';\nimport { PARTNER_CONFIGS } from './queries/partnerConfigs/partnerConfigsTypeDefs';\nimport { PARTNER_WHITELABEL } from './queries/partnerConfigs/partnerConfigsTypeDefs';\nimport { TRANSLATIONS } from './queries/translations/translationsTypeDefs';\nimport { getDefaultLanguage } from './utils/utils';\n\n(async () => {\n apolloClient.query({ query: IP_ADDRESS_INFO, fetchPolicy: 'cache-first' });\n apolloClient.query({ query: CURRENCIES, fetchPolicy: 'cache-first' });\n\n (async () => {\n const params = new URLSearchParams(window.location.search);\n const domain = params.get('partner') || process.env.REACT_APP_PARTNER_DOMAIN || window.location.hostname;\n const { data } = await apolloClient.query({ query: PARTNER_CONFIGS, fetchPolicy: 'cache-first', variables: { domain } });\n const partnerId = data?.partnerConfigs?.id;\n if (partnerId) {\n await apolloClient.query({ query: PARTNER_WHITELABEL, fetchPolicy: 'cache-first', variables: { id: partnerId } });\n }\n })();\n\n (async () => {\n await initConfigs();\n const options = await fetchLanguageOptions() as ILanguageOption[] | undefined;\n if (options) {\n const defaultLang = getDefaultLanguage(options);\n const currentLang = defaultLang.split('-')[0];\n await apolloClient.query({\n query: TRANSLATIONS,\n fetchPolicy: 'cache-first',\n variables: {\n app: 'booking-tool',\n lng: currentLang,\n },\n });\n }\n })();\n})();\n\nimport('./index');\n"],"sourceRoot":""}