{"version":3,"file":"base.0xb8RwaQE1.js","sources":["../../../../src/web-components/globalCpm/helpers.ts","../../../../src/_api/_base.ts"],"sourcesContent":["import { generateExternalResourceUrl, getBaseStyleResourceUrl, injectScripts, injectStyles, renderFonts, renderSvgSprite } from '../helpers';\nimport { crossPortalMenuCssFileName, crossPortalMenuJsFileName, favoriteTooltipJsFileName } from '@organisms/eshop/EShopCrossPortalMenu';\nimport { localeSelectorCssFileName, localeSelectorJsFileName } from '@organisms/menu/LocaleSelector';\nimport { CrossPortalMenuModel, LocaleSelectorModel } from '@_types/organisms';\nimport { globalCpmFixedData, globalCpmToken } from './_data';\nimport { IconModel, LinkModelStyleModifiers } from '@_types/atoms';\nimport { getApiCrossportalmanagerAllLanguageSelector, getApiCrossportalmanagerInit } from '@_api/_services/arjoAPI';\nimport { GlobalCpmWebComponentModel } from './types';\nimport { CrossPortalManager, LocaleSelectorData } from '@_api/_schema';\n\nimport { lackingPrivacyConsentBannerJsFileName } from '@molecules/lacking-privacy-consent-banner/LackingPrivacyConsentBanner';\nimport { tooltipCssFileName } from '@organisms/tooltip/RegionChangeTooltip';\nimport { baseDialogJsFileName } from '@molecules/base-dialog/BaseDialog';\nimport { consentFormCssFileName, consentFormJsFileName } from '@organisms/consent-form/ConsentForm';\n\nconst getGlobalCpmToken = () => {\n if (typeof window === 'undefined') return '';\n\n return localStorage.getItem(globalCpmToken);\n};\n\nconst getGlobalCpmData = async (language?: string) => {\n const token = getGlobalCpmToken();\n\n if (!token) return;\n\n const response = await getApiCrossportalmanagerInit({ language });\n\n if (!response) return;\n\n return response.data;\n};\n\nconst getPublicLocaleSelectorData = async (language?: string) => {\n const token = getGlobalCpmToken();\n\n if (token) return;\n\n const response = await getApiCrossportalmanagerAllLanguageSelector({ language });\n\n if (!response) return;\n\n return response.data;\n};\n\nconst getGlobalCpmResourceUrls = (resourceBaseUrl: string) => ({\n crossPortalMenu: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: crossPortalMenuJsFileName }),\n style: generateExternalResourceUrl({ resourceBaseUrl, type: 'css', fileName: crossPortalMenuCssFileName }),\n },\n localeSelector: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: localeSelectorJsFileName }),\n style: generateExternalResourceUrl({ resourceBaseUrl, type: 'css', fileName: localeSelectorCssFileName }),\n },\n lackingPrivacyConsentBanner: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: lackingPrivacyConsentBannerJsFileName }),\n },\n favoriteTooltip: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: favoriteTooltipJsFileName }),\n style: generateExternalResourceUrl({ resourceBaseUrl, type: 'css', fileName: tooltipCssFileName }),\n },\n baseDialog: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: baseDialogJsFileName }),\n },\n consentForm: {\n script: generateExternalResourceUrl({ resourceBaseUrl, type: 'js', fileName: consentFormJsFileName }),\n style: generateExternalResourceUrl({ resourceBaseUrl, type: 'css', fileName: consentFormCssFileName }),\n },\n});\n\nconst transformGlobalCpmWebComponentData = ({\n data,\n cpmData,\n localeSelectorData,\n}: {\n data?: GlobalCpmWebComponentModel;\n cpmData?: CrossPortalManager;\n localeSelectorData?: LocaleSelectorData;\n}): CrossPortalMenuModel | null => {\n if (!data) return null;\n\n const language = data?.currentLanguage?.code || 'en';\n\n const localeSelector = data.localeSelector || cpmData?.localeSelectorData || localeSelectorData;\n\n const addToFavorite = cpmData?.favoriteData?.addToFavorite || '';\n const removeFromFavorite = cpmData?.favoriteData?.removeFromFavorite || '';\n\n return {\n ...(cpmData?.portalLinks && {\n links: {\n links: cpmData?.portalLinks.map((link) => ({\n url: link.url || '',\n text: link.text || '',\n styleModifier: [\n ...(link.isActive ? (['current'] as LinkModelStyleModifiers) : []),\n ...(link.styleModifier ? [...(link.styleModifier as LinkModelStyleModifiers)] : []),\n ],\n })),\n },\n }),\n ...(language\n ? {\n languageIcon: {\n ...globalCpmFixedData.languageIcon,\n text: data?.currentLanguage?.name || 'English',\n },\n }\n : {}),\n favoriteIcon: {\n ...globalCpmFixedData.favoriteIcon,\n text: addToFavorite,\n },\n favoriteData: {\n addToFavorite,\n removeFromFavorite,\n markedAsFavorite: false,\n },\n avatarIcon: {\n ...globalCpmFixedData.avatarIcon,\n text: data.fullName || '',\n },\n acountLinks: {\n links: [\n ...(cpmData?.accountLinks\n ? cpmData?.accountLinks?.map((link) => ({\n text: link.text || '',\n eventData: link.eventData || '',\n url: link.url || '',\n target: '_blank',\n }))\n : []),\n ...(data.accountLinks ? data.accountLinks : []),\n ],\n },\n logoutIcon: {\n ...globalCpmFixedData.logoutIcon,\n url: '',\n text: cpmData?.logoutIcon?.text || '',\n eventData: cpmData?.logoutIcon?.eventData || '',\n },\n arrowDownIconPath: globalCpmFixedData.arrowDownIconPath,\n tickIconPath: globalCpmFixedData.tickIconPath,\n externalResourceStylePath: 'true',\n externalResourceScriptPath: 'true',\n ...(localeSelector\n ? {\n localeSelectorData: {\n ...(localeSelector as LocaleSelectorModel),\n closeButton: globalCpmFixedData.localeSelectorData.closeButton as IconModel,\n globeIcon: globalCpmFixedData.localeSelectorData.globeIcon as IconModel,\n externalResourceScriptPath: 'true',\n externalResourceStylePath: 'true',\n },\n }\n : {}),\n hideFavoriteButton: !data.username,\n isWebComponent: true,\n lackingPrivacyConsent: {\n ...cpmData?.privacy,\n userName: data.username,\n externalResourceScriptPath: 'true',\n closeIcon: globalCpmFixedData.localeSelectorData.closeButton as IconModel,\n consentDialog: {\n externalResourceScriptPath: 'true',\n closeIcon: globalCpmFixedData.localeSelectorData.closeButton as IconModel,\n },\n consentForm: {\n heading: cpmData?.privacy?.translatedText?.heading || '',\n emailLabel: cpmData?.privacy?.translatedText?.emailLabel || '',\n emailContent: cpmData?.privacy?.translatedText?.emailContent || '',\n emailInvalidMessage: cpmData?.privacy?.translatedText?.emailInvalidMessage || '',\n privacyLabel: cpmData?.privacy?.translatedText?.privacyLabel || '',\n privacyContent: cpmData?.privacy?.translatedText?.privacyContent || '',\n requiredMessage: cpmData?.privacy?.translatedText?.requiredMessage || '',\n communicationLabel: cpmData?.privacy?.translatedText?.communicationLabel || '',\n communicationContent: cpmData?.privacy?.translatedText?.communicationContent || '',\n submitText: cpmData?.privacy?.translatedText?.submitText || '',\n url: cpmData?.privacy?.translatedText?.url || '',\n externalResourceScriptPath: 'true',\n externalResourceStylePath: 'true',\n },\n },\n ...(cpmData?.favoriteToolTip && {\n favoriteTooltip: {\n ...globalCpmFixedData.favoriteTooltip,\n createFavorite: cpmData?.favoriteToolTip?.createText || '',\n removeFavorite: cpmData?.favoriteToolTip?.removeText || '',\n okButton: {\n ...globalCpmFixedData.favoriteTooltip?.okButton,\n text: cpmData?.favoriteToolTip?.okButton || '',\n },\n },\n }),\n };\n};\n\nconst injectGlobalCpmScripts = async (globalCpmRoot: ShadowRoot | null, resourceBaseUrl?: string) => {\n if (globalCpmRoot && resourceBaseUrl) {\n const { localeSelector, crossPortalMenu, favoriteTooltip } = getGlobalCpmResourceUrls(resourceBaseUrl);\n const scripts = [localeSelector.script, crossPortalMenu.script, favoriteTooltip.script];\n\n await injectScripts(scripts);\n }\n};\n\nconst injectGlobalCpmStyles = async (globalCpmRoot: ShadowRoot | null, resourceBaseUrl?: string) => {\n if (globalCpmRoot && resourceBaseUrl) {\n const { localeSelector, crossPortalMenu, favoriteTooltip } = getGlobalCpmResourceUrls(resourceBaseUrl);\n\n const styles = [localeSelector.style, crossPortalMenu.style, favoriteTooltip.style, getBaseStyleResourceUrl(resourceBaseUrl)];\n\n renderFonts(resourceBaseUrl);\n await injectStyles(styles, globalCpmRoot);\n }\n};\n\nconst handleRenderSvg = async (globalCpmRoot: ShadowRoot | null, resourceBaseUrl?: string) => {\n if (globalCpmRoot && resourceBaseUrl) {\n await Promise.allSettled([\n renderSvgSprite(`/assets/images/icons.svg`, globalCpmRoot, resourceBaseUrl),\n renderSvgSprite(`/assets/images/eshop.svg`, globalCpmRoot, resourceBaseUrl),\n ]);\n }\n};\n\nexport {\n getGlobalCpmResourceUrls,\n transformGlobalCpmWebComponentData,\n injectGlobalCpmStyles,\n getGlobalCpmData,\n getGlobalCpmToken,\n getPublicLocaleSelectorData,\n handleRenderSvg,\n injectGlobalCpmScripts,\n};\n","import { getGlobalCpmToken } from '../web-components/globalCpm/helpers';\n\ninterface RequestParams {\n [name: string]: string | boolean | undefined;\n}\n\nexport const getApiUrl = (remain: string, params?: RequestParams) => {\n const baseApiUrl = import.meta.env.VITE_APP_API_URL ?? window.webComponentExternalBaseApiUrl ?? window.location.origin;\n const url = new URL(remain, baseApiUrl);\n\n if (params) {\n Object.keys(params).forEach((key) => {\n if (params[key] !== undefined) {\n url.searchParams.append(key, typeof params[key] === 'boolean' ? (params[key] as boolean).toString() : (params[key] as string));\n }\n });\n }\n\n return url.toString();\n};\n\nexport interface RequestResponse extends Response {\n data: T;\n success: boolean;\n}\n\nconst sendAsync = async ({ url, method, params, data, headers, skipResponseBody }: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n params?: any;\n data?: unknown;\n responseType?: string;\n headers?: {[key: string]: string};\n skipResponseBody?: boolean;\n}): Promise | void> => {\n const apiUrl = getApiUrl(url, params);\n\n const requestInit: RequestInit = {\n method: method,\n };\n\n\n if (data) {\n requestInit.body = JSON.stringify(data);\n requestInit.headers = {\n 'Content-Type': 'application/json',\n };\n }\n\n const token = getGlobalCpmToken();\n\n if (token) {\n requestInit.headers = {\n ...requestInit.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n if (skipResponseBody) return fetch(apiUrl, requestInit).then(res => res.json() as Promise>);\n\n return fetch(apiUrl, requestInit)\n .then((res) => res.json() as Promise>)\n .then((data) => {\n const { errorMessage } = data;\n\n if (errorMessage) {\n window.dispatchEvent(\n new CustomEvent('showPopup', {\n detail: {\n ...data,\n id: 'failed-api-popup',\n },\n })\n );\n }\n\n return data;\n })\n .catch((err) => {\n window.dispatchEvent(\n new CustomEvent('showPopup', {\n detail: {\n errorMessage: err,\n id: 'failed-api-popup',\n },\n })\n );\n\n throw new Error(err);\n\n });\n};\n\nexport { sendAsync }\nexport default sendAsync;\n\n"],"names":["getGlobalCpmToken","globalCpmToken","define_import_meta_env_default"],"mappings":"6EAeA,MAAMA,EAAoB,IACpB,OAAO,OAAW,IAAoB,GAEnC,aAAa,QAAQC,CAAc,EClB5C,IAAAC,EAAA,CAAA,cAAkC,IAAA,UAAA,QAAA,oBAAA,GAAA,kBAAA,UAAA,oBAAA,4BAAA,sBAAA,kBAAA,wBAAA,cAAA,0BAAA,qBAAA,8BAAA,iBAAA,+BAAA,mBAAA,iCAAA,gCAAA,+BAAA,0CAAA,+BAAA,uBAAA,+BAAA,6BAAA,yBAAA,iBAAA,4BAAA,yCAAA,SAAA,IAAA,KAAA,aAAA,IAAA,GAAA,KAAA,GAAA,IAAA"}