{"version":3,"file":"js/6986.c908244e0b05dc28.js","mappings":"6JAIAA,eAAeC,UACLC,IAENC,EAAAA,EAASC,GAAGC,EAAAA,EAAaC,iBAAiBN,gBAChCE,GAAoB,GAElC,CAEAF,eAAeE,IACX,MAAMK,EAAmBC,SAASC,iBAAiB,uBAE9CF,GAELA,EAAiBG,SAAQV,UACrB,MAAMW,EAAUC,EACVC,EAAW,oCAAoCF,EAAQG,QAAQC,YAE/DC,QAAqBC,EAAAA,EAAAA,GAAqBN,EAASE,GAEpDG,GACDL,EAAQO,mBAAmB,aAAc,gBAAgBL,+BAC7D,GAER,EAEAM,EAAAA,EAAAA,IAAc,KACVlB,GAAoB,G,kBCxBlB,SAAUkB,EAAcC,GAC1B,GAA4B,YAAxBZ,SAASa,WACT,OAAOD,IAEPZ,SAASc,iBAAiB,mBAAoBF,EAEtD,C,8GCLA,MAAMG,EAAe,eACfC,EAAc,uBACdC,EAAsB,oCAEtBC,EAA0B,GAAGC,YAAY,qCAAqCC,EAAAA,EAAgBC,qCAAqCD,EAAAA,EAAgBE,0CAElJ9B,eAAeiB,EAClBc,EACAC,EACAC,EACAC,EAAmB,KAAG,IAAAC,EAEtB,MAAMxB,EACFoB,aAA6BK,YACvBL,EACCvB,SAAS6B,cAAcN,GAElC,IAAKpB,EAAS,OAAO,EAGpBA,EAAwB2B,MAAMC,UAAY,KACF,QAAzCJ,EAAAxB,EAAQ0B,cAAc,IAAMd,UAAa,IAAAY,GAAzCA,EAA2CK,SAE3C,MAAM,oBAAEC,IAAwBC,EAAAA,EAAAA,KAE1BC,QAA2BF,IAEjC,GAAIE,EAAoB,OAAO,EAE/B,MAAM,eAAEC,IAAmBC,EAAAA,EAAAA,MAqB3B,OApBAD,IAGCjC,EAAwB2B,MAAMC,UAAY,GAAGL,MAC9CvB,EAAQO,mBAAmB,YAAa4B,EAAed,EAAkBC,KACzEc,EAAAA,EAAAA,GAAuBpC,EAAQ0B,cAAc,IAAMd,IAEnDf,SAASC,iBAAiB,IAAIe,KAAed,SAASE,IAClDA,EAAGoC,oBAAoB,QAASC,GAChCrC,EAAGU,iBAAiB,QAAS2B,EAAmB,IAGpDzC,SAASC,iBAAiB,IAAIgB,KAAuBf,SAASE,IACtDA,aAAcsC,oBACdtC,EAAGuC,KAAOzB,GAEdd,EAAGoC,oBAAoB,QAASI,GAChCxC,EAAGU,iBAAiB,QAAS8B,EAA2B,KAGrD,CACX,CAEApD,eAAeiD,IACXzC,SAASC,iBAAiB,IAAMc,GAAcb,SAASE,IACnDA,EAAG4B,QAAQ,IAGf,MAAM,oBAAEa,IAAwBX,EAAAA,EAAAA,WAC1BW,IAENlD,EAAAA,EAASmD,KAAKjD,EAAAA,EAAaC,gBAC/B,CAEA,SAAS8C,EAA2BG,GAAK,IAAAC,EACrC,MAAMC,EAA8C,QAAnCD,EAAAD,EAAMG,qBAA6B,IAAAF,GAAW,QAAXA,EAAnCA,EAAqCG,iBAAS,IAAAH,GAA9CA,EAAgDI,SAAS,sBAAwB,SAAW,QAEvG,sCAAEC,IAA0ChB,EAAAA,EAAAA,MAClDgB,EAAsCJ,EAC1C,CAEA,SAASX,EAAed,EAA2BC,GAC/C,IAAI6B,EAASC,YAAYC,YAAYF,OACjCG,EAAUF,YAAYC,YAAYC,QAClCC,EAASH,YAAYC,YAAYE,OACjCC,EAAOJ,YAAYC,YAAYG,KAC/BC,EAAUL,YAAYC,YAAYI,QAClCC,EAAKN,YAAYC,YAAYK,GAEjC,GAAc,QAAVpC,EAAiB,CACjB,MAAMqC,EAAiBC,OAAeC,WACtCV,EAASQ,EAAcR,OACvBG,EAAUK,EAAcL,QACxBC,EAASI,EAAcJ,OACvBC,EAAOG,EAAcH,KACrBC,EAAUE,EAAcF,QACxBC,EAAKC,EAAcD,EACvB,CAEA,MAAO,yBACW9C,gBAA2B8C,qIAGMP,0FAE7BG,8BAEEjC,EACM,0EAA0EA,yEAC1E,iKAKiBR,+BAAyC0C,4CAC7DE,GAAoB1C,+CAC3C0C,EAAU,GAAK,IAAM3C,MACpB0C,yEAKT,C,kBCrHA,SAASM,IACL,MAAM7D,EAAKJ,SAASkE,gBAEpB,OAAI9D,EAAG+C,UACI/C,EAAG+C,UAAUC,SAAS,QAG1BhD,EAAG+D,UAAUC,SAAS,OACjC,CAOM,SAAUC,IACZ,MAAMC,EAAWtE,SAASuE,uBAAuB,kBACjD,IAAKD,EAASE,OAAQ,OAEtB,MAAMC,EAAkBR,IAExB,IAAK,IAAIS,EAAI,EAAGA,EAAIJ,EAASE,OAAQE,IAAK,CACtC,MAAMvE,EAAUmE,EAASI,GACzBnC,EAAuBpC,EAASsE,EACpC,CACJ,CASM,SAAUlC,EAAuBpC,EAAsBsE,EAAkBR,KAC3E,MAAMU,EAAMxE,EAAQyE,WAAW,YAAYC,MAC3C,GAAIF,EAAK,CACL,MAAMG,EAAUH,EAAII,QAAQ,oBAAqB,SAC3CC,EAAWP,EAAkBK,EAAUH,EACvCM,EAAM,IAAIC,MAChBD,EAAIE,OAAS,KACThF,EAAQ2B,MAAMsD,gBAAkB,QAAQJ,KAAY,EAExDC,EAAII,QAAU,KACVlF,EAAQ2B,MAAMsD,gBAAkB,QAAQT,KAAO,EAEnDM,EAAIK,IAAMN,CACd,CACJ,C","sources":["webpack://@sazka/web/./js/app/shared/design-system/rich-text-widgets/_rich-text-video-gdpr-overlay.ts","webpack://@sazka/web/../../libs/utils/document-ready.ts","webpack://@sazka/web/../../libs/utils/gdpr/consent-overlay.ts","webpack://@sazka/web/../../libs/utils/webp-background-images.ts"],"sourcesContent":["import { handleConsentOverlay } from \"@sazka/utils/gdpr/consent-overlay\";\r\nimport { eventBus, GlobalEvents } from \"@sazka/utils/global-events\";\r\nimport { documentReady } from \"@sazka/utils/document-ready\";\r\n\r\nasync function initConsentOverlay() {\r\n await showConsentOverlay();\r\n\r\n eventBus.on(GlobalEvents.ConsentsChanged, async () => {\r\n await showConsentOverlay();\r\n });\r\n}\r\n\r\nasync function showConsentOverlay() {\r\n const richTextElements = document.querySelectorAll(\".ds-rich-text-video\");\r\n\r\n if (!richTextElements) return;\r\n\r\n richTextElements.forEach(async (el) => {\r\n const element = el as HTMLElement;\r\n const embedUrl = `//www.youtube-nocookie.com/embed/${element.dataset.videoCode}`;\r\n\r\n const overlayAdded = await handleConsentOverlay(element, embedUrl);\r\n\r\n if (!overlayAdded) {\r\n element.insertAdjacentHTML(\"afterbegin\", `<iframe src=\"${embedUrl}\" allowfullscreen></iframe>`);\r\n }\r\n });\r\n}\r\n\r\ndocumentReady(() => {\r\n initConsentOverlay();\r\n});\r\n","/**\r\n * Vanila JS variant to jQuery $(() => {}).\r\n * @param {callback} callback\r\n * @example - documentReady(() => {}).\r\n * This function is binding to document.ready\r\n * */\r\nexport function documentReady(callback: () => void) {\r\n if (document.readyState !== \"loading\") {\r\n return callback();\r\n } else {\r\n document.addEventListener(\"DOMContentLoaded\", callback);\r\n }\r\n}\r\n","import { eventBus, GlobalEvents } from \"../global-events\";\r\nimport { useWebpBackgroundImage } from \"../webp-background-images\";\r\nimport { useWecomaDatalayer } from \"./use-wecoma-datalayer\";\r\nimport { useWecomaIntegration } from \"./use-wecoma-integration\";\r\nimport { WecomaConstants } from \"./wecoma-constants\";\r\n\r\ntype Themes = \"map\";\r\nconst overlayClass = \"gdpr-overlay\";\r\nconst buttonClass = \"gdpr-overlay__button\";\r\nconst prefCenterLinkClass = \"consent-overlay-preference-center\";\r\n\r\nconst preferenceCenterLinkUrl = `${appSettings[\"Integrations:Wecoma:Domain\"]}?key=${WecomaConstants.WECOMA_CODE}&locale=cs-CZ&authKeys=${WecomaConstants.WECOMA_AUTHKEY}&source=thirdpartycontent`;\r\n\r\nexport async function handleConsentOverlay(\r\n elementOrSelector: string | HTMLElement,\r\n externalVideoUrl?: string,\r\n theme?: Themes,\r\n overlayMinHeight = 280\r\n): Promise<boolean> {\r\n const element =\r\n elementOrSelector instanceof HTMLElement\r\n ? elementOrSelector\r\n : (document.querySelector(elementOrSelector) as HTMLElement);\r\n\r\n if (!element) return false;\r\n\r\n // remove previously added overlay\r\n (element as HTMLElement).style.minHeight = null;\r\n element.querySelector(\".\" + overlayClass)?.remove();\r\n\r\n const { thirdPartyConsented } = useWecomaIntegration();\r\n\r\n const hasRequiredConsent = await thirdPartyConsented();\r\n\r\n if (hasRequiredConsent) return false;\r\n\r\n const { pushThirdParty } = useWecomaDatalayer();\r\n pushThirdParty();\r\n\r\n // add new overlay\r\n (element as HTMLElement).style.minHeight = `${overlayMinHeight}px`;\r\n element.insertAdjacentHTML(\"beforeend\", getOverlayHtml(externalVideoUrl, theme));\r\n useWebpBackgroundImage(element.querySelector(\".\" + overlayClass));\r\n\r\n document.querySelectorAll(`.${buttonClass}`).forEach((el) => {\r\n el.removeEventListener(\"click\", buttonClickHandler);\r\n el.addEventListener(\"click\", buttonClickHandler);\r\n });\r\n\r\n document.querySelectorAll(`.${prefCenterLinkClass}`).forEach((el) => {\r\n if (el instanceof HTMLAnchorElement) {\r\n el.href = preferenceCenterLinkUrl;\r\n }\r\n el.removeEventListener(\"click\", prefCenterLinkClickHandler);\r\n el.addEventListener(\"click\", prefCenterLinkClickHandler);\r\n });\r\n\r\n return true;\r\n}\r\n\r\nasync function buttonClickHandler() {\r\n document.querySelectorAll(\".\" + overlayClass).forEach((el) => {\r\n el.remove();\r\n });\r\n\r\n const { consentToThirdParty } = useWecomaIntegration();\r\n await consentToThirdParty();\r\n\r\n eventBus.emit(GlobalEvents.ConsentsChanged);\r\n}\r\n\r\nfunction prefCenterLinkClickHandler(event) {\r\n const variant = (event.currentTarget as HTMLElement)?.classList?.contains(\"gdpr-overlay__link\") ? \"button\" : \"text\";\r\n\r\n const { pushOverlayRedirectToPreferenceCenter } = useWecomaDatalayer();\r\n pushOverlayRedirectToPreferenceCenter(variant);\r\n}\r\n\r\nfunction getOverlayHtml(externalVideoUrl?: string, theme?: Themes) {\r\n let header = environment.gdprOverlay.header;\r\n let message = environment.gdprOverlay.message;\r\n let button = environment.gdprOverlay.button;\r\n let link = environment.gdprOverlay.link;\r\n let linkUrl = environment.gdprOverlay.linkUrl;\r\n let bg = environment.gdprOverlay.bg;\r\n\r\n if (theme === \"map\") {\r\n const overlayConfig = (window as any).mapOverlay;\r\n header = overlayConfig.header;\r\n message = overlayConfig.message;\r\n button = overlayConfig.button;\r\n link = overlayConfig.link;\r\n linkUrl = overlayConfig.linkUrl;\r\n bg = overlayConfig.bg;\r\n }\r\n\r\n return `\r\n <div class=\"${overlayClass}\" data-src=\"${bg}\">\r\n <div class=\"gdpr-overlay__content\">\r\n <div>\r\n <div class=\"gdpr-overlay__title\">${header}</div>\r\n <div class=\"gdpr-overlay__text\">\r\n ${message}\r\n ${\r\n externalVideoUrl\r\n ? ` Video mĹŻĹľete zhlĂ©dnout pĹ™Ămo na webovĂ© stránce poskytovatele <a href=\"${externalVideoUrl}\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>zde</strong></a>.`\r\n : \"\"\r\n }\r\n </div>\r\n </div>\r\n <div class=\"gdpr-overlay__actions\">\r\n <button type=\"button\" class=\"${buttonClass} btn btn-secondary btn-sm\">${button}</button>\r\n <a href=\"${linkUrl ? linkUrl : preferenceCenterLinkUrl}\" target=\"_blank\" class=\"gdpr-overlay__link${\r\n linkUrl ? \"\" : \" \" + prefCenterLinkClass\r\n }\">${link}</a>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n}\r\n","// detection relies on file webp-detection.js\r\n\r\nfunction webpSupport() {\r\n const el = document.documentElement;\r\n\r\n if (el.classList) {\r\n return el.classList.contains(\"webp\");\r\n }\r\n\r\n return el.className.includes(\"webp\");\r\n}\r\n\r\n/**\r\n * Retrieves elements with the class \"webp-inline-bg\" and applies webp background images if supported.\r\n *\r\n * @return {void}\r\n */\r\nexport function useWebpBackgroundImages() {\r\n const elements = document.getElementsByClassName(\"webp-inline-bg\");\r\n if (!elements.length) return;\r\n\r\n const isWebpSupported = webpSupport();\r\n\r\n for (let i = 0; i < elements.length; i++) {\r\n const element = elements[i] as HTMLElement;\r\n useWebpBackgroundImage(element, isWebpSupported);\r\n }\r\n}\r\n\r\n/**\r\n * Applies a webp background image to the specified HTML element if the URL is available.\r\n *\r\n * @param {HTMLElement} element - The HTML element to apply the background image to.\r\n * @param {boolean} isWebpSupported - Indicates whether webp format is supported.\r\n * @return {void}\r\n */\r\nexport function useWebpBackgroundImage(element: HTMLElement, isWebpSupported = webpSupport()) {\r\n const url = element.attributes[\"data-src\"].value;\r\n if (url) {\r\n const webpUrl = url.replace(/\\.(png|jpg|jpeg)/g, \".webp\");\r\n const imageUrl = isWebpSupported ? webpUrl : url;\r\n const img = new Image();\r\n img.onload = () => {\r\n element.style.backgroundImage = `url(\"${imageUrl}\")`;\r\n };\r\n img.onerror = () => {\r\n element.style.backgroundImage = `url(\"${url}\")`;\r\n };\r\n img.src = imageUrl;\r\n }\r\n}\r\n"],"names":["async","initConsentOverlay","showConsentOverlay","eventBus","on","GlobalEvents","ConsentsChanged","richTextElements","document","querySelectorAll","forEach","element","el","embedUrl","dataset","videoCode","overlayAdded","handleConsentOverlay","insertAdjacentHTML","documentReady","callback","readyState","addEventListener","overlayClass","buttonClass","prefCenterLinkClass","preferenceCenterLinkUrl","appSettings","WecomaConstants","WECOMA_CODE","WECOMA_AUTHKEY","elementOrSelector","externalVideoUrl","theme","overlayMinHeight","_element$querySelecto","HTMLElement","querySelector","style","minHeight","remove","thirdPartyConsented","useWecomaIntegration","hasRequiredConsent","pushThirdParty","useWecomaDatalayer","getOverlayHtml","useWebpBackgroundImage","removeEventListener","buttonClickHandler","HTMLAnchorElement","href","prefCenterLinkClickHandler","consentToThirdParty","emit","event","_event$currentTarget","variant","currentTarget","classList","contains","pushOverlayRedirectToPreferenceCenter","header","environment","gdprOverlay","message","button","link","linkUrl","bg","overlayConfig","window","mapOverlay","webpSupport","documentElement","className","includes","useWebpBackgroundImages","elements","getElementsByClassName","length","isWebpSupported","i","url","attributes","value","webpUrl","replace","imageUrl","img","Image","onload","backgroundImage","onerror","src"],"sourceRoot":""}