{"version":3,"file":"global-CU9rtD2F.js","sources":["../../../scripts/global.ts"],"sourcesContent":["/* eslint-disable-next-line sort-imports/sort-imports */\r\nimport \"styles/site.scss\";\r\n\r\nimport { SailingOverview } from \"interfaces/cruise\";\r\nimport { ProductType, UserTypes } from \"interfaces/enums\";\r\nimport { attachHeaderClickTracking, GA4EventName, trackEvent, trackPageRedirect } from \"services/analytics\";\r\nimport { getUserInfo, virtuosoUser } from \"services/auth/user-info\";\r\nimport { enableMegaMenu } from \"services/layout/mega-menu\";\r\nimport { setCanonicalUrl } from \"services/layout/metadata\";\r\nimport { enableDestinationNavSearch, enableHotelsNavSearch, loadPopularDestinations, setBodyClasses } from \"services/layout/navigation\";\r\nimport { buildCobrandLogos, cobrandLinks, HeaderHtmlType, HeaderSearchType, initProfile, initSharedHeader, ProfileAccountType, trackGA4Event, type GA4TrackingEvent, type GA4TrackingItem } from \"virtuoso-shared-web-ui\";\r\nimport { getDashboardUrl } from \"services/layout/environment\";\r\nimport { getFeatureFlag, initializeFeatureFlags } from \"services/feature-flags\";\r\n\r\n\r\n// These globals are defined in cshtml files\r\ndeclare global {\r\n    interface Window {\r\n        VIRTUOSO: { // Namespace for \"globals\". Nested objects defined in Razor pages will be referenced, not copied, but this shouldn't be an issue\r\n            apimURI?: string;\r\n            articleKey?: string; // Articles/Index.cshtml\r\n            cmsBaseUrl?: string; // _Layout.cshtml, pulled from appsettings\r\n            consumerMSALAuthority?: string;\r\n            consumerMSALClientId?: string;\r\n            consumerMSALKnownAuthority?: string;\r\n            consumerMSALRedirectURI?: string;\r\n            consumerMSALScope?: string;\r\n            destinationKey?: string; // Destinations/Index.cshtml and Inspiration.cshtml\r\n            dynamicPageKey?: string; // campaign/Index.cshtml\r\n            enterpriseServicesUrl?: string; // _Layout.cshtml, pulled from appsettings\r\n            ga4ItemId?: string; // An Id set during the initial 'item_view' event and is intended to be used to link multiple event types to an item\r\n            ga4PageCategory?: string; // All/most cshtml pages to set consistent category names for page groups used in GA4\r\n            hideHeader?: boolean; // Prevents shared header stuff from running\r\n            hotelBrandName?: string; // Hilton specific hotel brand name\r\n            isEmbeddedMode?: boolean; // _Layout.cshtml, if true, url query requested with Embedded=1\r\n            jobNumberKey?: string; // tte/Index.cshtml\r\n            languageId?: number; // Localized Landing Page, others in the future?\r\n            ldClientId?: string; // _Layout.cshtml, LaunchDarkly client ID\r\n            dashboardUrl?: string; // _Layout.cshtml, NDE MyDashboard Url\r\n            partnerNameKey?: string; // tte/Index.cshtml\r\n            productId?: number; // Search catalogs & detail pages\r\n            productType?: ProductType; // luxury-*/Index.cshtml -- also search catalogs & detail pages\r\n            sailingOverviewData?: SailingOverview; // luxury-cruises/Sailings.cshtml\r\n            serverUTCMS?: number; // _Layout.cshtml, for reliable JS date calculations\r\n            shipId?: number; // luxury-cruises/Ships.cshtml\r\n            signOutUrl?: string; // _Layout.cshtml, pulled from appsettings\r\n            suppressHearts?: boolean; // _Layout.cshtml, if true, wanderlist.ts > enableHearts won't run\r\n            supplierId?: number; // Brand pages (cruise and tour)\r\n            topicKey?: string; // Inspiration.cshtml\r\n            trackEvent: (eventName: GA4EventName, eventData: GA4TrackingItem | GA4TrackingItem[]) => void;\r\n            trackGA4Event: (ga4Event: GA4TrackingEvent) => void;\r\n            user?: string; // _Layout.cshtml, pulled from server side\r\n            userEmail?: string;\r\n            weglotApiKey?: string; // _Layout.cshtml weglot initialize api\r\n            wlLandingPage?: string; // wanderlist/index.cshtml -- which dotCMS page to grab\r\n        };\r\n    }\r\n}\r\n\r\n// WARNING: Be cautious wrapping this in feature flags or promises of any kind. Downstream code depends on things\r\n// initialized inside here. Ye be warned.\r\ngetUserInfo(); // Parse user info\r\n\r\n// Handle if object already has properties added from Razor pages\r\nwindow.VIRTUOSO = {\r\n    ...window.VIRTUOSO,\r\n    trackGA4Event: trackGA4Event,\r\n    trackEvent: trackEvent\r\n};\r\n\r\ninitializeFeatureFlags().then(() => {\r\n    const shouldUseCustomLanguageSwitcher = getFeatureFlag(\"consumer-2025-03-custom-language-switcher-temp\") as boolean;\r\n\r\n\r\n    if (!window.VIRTUOSO.hideHeader) {\r\n        initSharedHeader({\r\n            enableLanguageTranslation: shouldUseCustomLanguageSwitcher ?? false,\r\n            headerHtmlType: HeaderHtmlType.StaticCobranded,\r\n            headerSearchType: HeaderSearchType.HasInput,\r\n            languageTranslationApiKey: window.VIRTUOSO.weglotApiKey,\r\n            useKendoAutoComplete: false,\r\n            useLocationFromIp: true,\r\n            userType: (virtuosoUser.userAccountType || \"\").toLowerCase() as ProfileAccountType\r\n        });\r\n        attachHeaderClickTracking();\r\n        enableDestinationNavSearch();\r\n        enableHotelsNavSearch();\r\n        loadPopularDestinations();\r\n\r\n        buildCobrandLogos(virtuosoUser.cobrandModel);\r\n        initProfile({\r\n            accountType: virtuosoUser.userAccountType || \"Anonymous\",\r\n            changePasswordUrl: `${window.VIRTUOSO.enterpriseServicesUrl}/LogIn/ResetPassword?ReturnUrl=${encodeURIComponent(window.location.href)}`,\r\n            companyMeid: virtuosoUser.companyMasterEntityId,\r\n            dashboardUrl: getDashboardUrl(),\r\n            firstName: virtuosoUser.userFirstName,\r\n            isLoggedIn: (virtuosoUser.isLoggedIn) ? true : false,\r\n            isNewAccount: (virtuosoUser.isNewLogin) ? true : false,\r\n            lastLoggedInAs: virtuosoUser.lastLoggedInAs,\r\n            lastName: virtuosoUser.userLastName,\r\n            meId: virtuosoUser.userMasterEntityId || virtuosoUser.federatedUserId, // Consumers use federatedUserId and have a null userMasterEntityId\r\n            regionId: virtuosoUser.userRegionId,\r\n            signInUrl: `${window.VIRTUOSO.enterpriseServicesUrl}/LogIn/SignIn.aspx?ReturnUrl=${encodeURIComponent(window.location.href)}`,\r\n            signOutUrl: `${window.VIRTUOSO.signOutUrl}&returnPageUrl=${encodeURIComponent(window.location.href)}`,\r\n            sourceSystem: \"Consumer Site\",\r\n            userType: (virtuosoUser.userAccountType || UserTypes.NotSet).toLowerCase() as ProfileAccountType\r\n        });\r\n    }\r\n\r\n    setCanonicalUrl();\r\n    setBodyClasses();\r\n    cobrandLinks(document.body); // Deal with the initially drawn links (header & footer)\r\n    enableMegaMenu();\r\n\r\n    trackPageRedirect();\r\n});\r\n"],"names":["getUserInfo","trackGA4Event","trackEvent","initializeFeatureFlags","shouldUseCustomLanguageSwitcher","getFeatureFlag","initSharedHeader","HeaderHtmlType","HeaderSearchType","virtuosoUser","attachHeaderClickTracking","enableDestinationNavSearch","enableHotelsNavSearch","loadPopularDestinations","buildCobrandLogos","initProfile","getDashboardUrl","UserTypes","setCanonicalUrl","setBodyClasses","cobrandLinks","enableMegaMenu","trackPageRedirect"],"mappings":"mXA6DAA,IAGA,OAAO,SAAW,CACd,GAAG,OAAO,SAAA,cACVC,EACA,WAAAC,CACJ,EAEAC,EAAuB,EAAE,KAAK,IAAM,CAC1B,MAAAC,EAAkCC,EAAe,gDAAgD,EAGlG,OAAO,SAAS,aACAC,EAAA,CACb,0BAA2BF,GAAmC,GAC9D,eAAgBG,EAAe,gBAC/B,iBAAkBC,EAAiB,SACnC,0BAA2B,OAAO,SAAS,aAC3C,qBAAsB,GACtB,kBAAmB,GACnB,UAAWC,EAAa,iBAAmB,IAAI,YAAY,CAAA,CAC9D,EACyBC,IACCC,IACLC,IACEC,IAExBC,EAAkBL,EAAa,YAAY,EAC/BM,EAAA,CACR,YAAaN,EAAa,iBAAmB,YAC7C,kBAAmB,GAAG,OAAO,SAAS,qBAAqB,kCAAkC,mBAAmB,OAAO,SAAS,IAAI,CAAC,GACrI,YAAaA,EAAa,sBAC1B,aAAcO,EAAgB,EAC9B,UAAWP,EAAa,cACxB,WAAa,EAAAA,EAAa,WAC1B,aAAe,EAAAA,EAAa,WAC5B,eAAgBA,EAAa,eAC7B,SAAUA,EAAa,aACvB,KAAMA,EAAa,oBAAsBA,EAAa,gBACtD,SAAUA,EAAa,aACvB,UAAW,GAAG,OAAO,SAAS,qBAAqB,gCAAgC,mBAAmB,OAAO,SAAS,IAAI,CAAC,GAC3H,WAAY,GAAG,OAAO,SAAS,UAAU,kBAAkB,mBAAmB,OAAO,SAAS,IAAI,CAAC,GACnG,aAAc,gBACd,UAAWA,EAAa,iBAAmBQ,EAAU,QAAQ,YAAY,CAAA,CAC5E,GAGWC,IACDC,IACfC,EAAa,SAAS,IAAI,EACXC,IAEGC,GACtB,CAAC"}