{"version":3,"file":"./modules/Iframe.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/Iframe.ts"],"sourcesContent":["/// \r\n// import { isMobile } from \"../helpers/helperFunctions\";\r\nconst moduleSelector = '[data-module=\"Iframe\"]';\r\n\r\nexport default class Iframe {\r\n private cwIframe: HTMLElement;\r\n private iframe: HTMLElement;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Iframe(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element?: HTMLElement) {\r\n this.cwIframe = this.element.querySelector(\".cw-iframe-container\");\r\n this.iframe = this.element.querySelector('iframe');\r\n\r\n /* console.log(\"isConsentActive \", this.isConsentActive());*/\r\n\r\n // If Consentmanager's lazy-load system is managing this element,\r\n // let CMP handle consent and script activation entirely.\r\n // Iframe.ts should NOT register its own click handlers on the Accept button\r\n // as this prevents CMP from processing the consent grant.\r\n if (this.isManagedByConsentManager()) {\r\n console.debug(\"Iframe: Managed by Consentmanager lazy-load, deferring to CMP\");\r\n return;\r\n }\r\n\r\n // Only use manual consent handling if CMP lazy-load is NOT present\r\n if (this.isConsentActive()) {\r\n window.__cmp(\"addEventListener\", [\"consentscreen\", this.consentScreenEvent(), false], null);\r\n window.__cmp(\"addEventListener\", [\"consent\", this.onConsent(), false], null);\r\n }\r\n\r\n // this.init();\r\n };\r\n\r\n /**\r\n * Detects if Consentmanager's lazy-load system is active for this element.\r\n * When CMP adds class \"cmplazyload\" to scripts/iframes, it manages the full\r\n * consent flow: showing the preview overlay, handling Accept clicks, granting\r\n * vendor consent, changing script type from text/plain to text/javascript,\r\n * and removing the preview. Iframe.ts must NOT interfere with this flow.\r\n */\r\n private isManagedByConsentManager(): boolean {\r\n const lazyScript = this.element.querySelector('script.cmplazyload');\r\n const lazyIframe = this.element.querySelector('iframe.cmplazyload');\r\n const lazyPreview = this.element.querySelector('.cmplazypreviewiframe');\r\n return !!(lazyScript || lazyIframe || lazyPreview);\r\n }\r\n\r\n isConsentActive(): boolean {\r\n let isConsentActive = false;\r\n\r\n try {\r\n window.__cmp('consentStatus');\r\n isConsentActive = true;\r\n } catch (error) {\r\n console.debug(\"ConsentManagerApi is Not Loaded\");\r\n }\r\n\r\n return isConsentActive;\r\n }\r\n\r\n getConsentVendor(): boolean {\r\n let vendorConsents: boolean = false;\r\n try {\r\n vendorConsents = window.__cmp('getCMPData').vendorConsents.c40172;\r\n console.log(window.__cmp('getCMPData').vendorConsents);\r\n\r\n /* console.log(vendorConsents);*/\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n return vendorConsents;\r\n }\r\n\r\n onConsent() {\r\n setTimeout(() => {\r\n /* console.log(\"isVendor active\", this.getConsentVendor());*/\r\n\r\n if (this.getConsentVendor()) {\r\n this.injectEasyXDMScript();\r\n }\r\n }, 500);\r\n }\r\n\r\n consentScreenEvent() {\r\n const observer = new MutationObserver((mutations: MutationRecord[], observer: MutationObserver) => {\r\n mutations.forEach(mutation => {\r\n if (!mutation.addedNodes)\r\n return;\r\n\r\n mutation.addedNodes.forEach((node) => {\r\n if (!(node.nodeType == Node.ELEMENT_NODE))\r\n return;\r\n\r\n const htmlNode = node as HTMLElement,\r\n acceptButton = htmlNode.querySelector(\".cmpboxbtn.cmpboxbtnyes\");\r\n\r\n if (acceptButton) {\r\n this.handleAcceptVendor(acceptButton);\r\n observer.disconnect();\r\n }\r\n });\r\n });\r\n });\r\n\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: false,\r\n characterData: false\r\n });\r\n }\r\n\r\n private handleAcceptVendor(acceptButton) {\r\n acceptButton.addEventListener(\"click\", () => this.injectEasyXDMScript())\r\n }\r\n\r\n private injectEasyXDMScript() {\r\n const templateEasyXDMScript = this.element.querySelector('.cw-iframe__easyXDM');\r\n const src = templateEasyXDMScript.getAttribute(\"src\");\r\n\r\n if (this.iframe) this.iframe.remove();\r\n\r\n if (src) {\r\n const easyXDMSriptLibrary = document.createElement(\"script\"),\r\n newXDMInitScript = document.createElement(\"script\");\r\n\r\n easyXDMSriptLibrary.src = src;\r\n this.cwIframe.appendChild(easyXDMSriptLibrary);\r\n\r\n easyXDMSriptLibrary.addEventListener(\"load\", () => {\r\n newXDMInitScript.append(templateEasyXDMScript.textContent);\r\n this.cwIframe.appendChild(newXDMInitScript);\r\n });\r\n\r\n easyXDMSriptLibrary.addEventListener(\"error\", (e) => {\r\n console.log(\"error \", e);\r\n });\r\n } else {\r\n // Self-bootstrapping script (no src attribute)\r\n const execScript = document.createElement(\"script\");\r\n execScript.textContent = templateEasyXDMScript.textContent;\r\n this.cwIframe.appendChild(execScript);\r\n }\r\n }\r\n\r\n public init(): Iframe {\r\n // Here \"addEventListener\" is for standards-compliant web browsers anfrd \"attachEvent\" is for IE Browsers.\r\n var eventMethod = window.addEventListener ? \"addEventListener\" : \"attachEvent\";\r\n var eventer = window[eventMethod];\r\n\r\n var messageEvent = eventMethod == \"attachEvent\" ? \"onmessage\" : \"message\";\r\n\r\n\r\n\r\n // Listen to message from child IFrame window\r\n eventer(messageEvent, (e) => {\r\n var origin = e.origin;\r\n var value = this.getHeight(e.data);\r\n console.log(\"event message data\", e.data);\r\n\r\n if (!value)\r\n return;\r\n // Array.from(this.element.querySelectorAll('iframe')).forEach((element: HTMLElement) => {\r\n var cutIndex: any = this.iframe.getAttribute('src').indexOf('/', 10);\r\n var source: any = this.iframe.getAttribute('src').substr(0, cutIndex);\r\n if (source == origin) {\r\n //element.setAttribute('style', 'height:' + e.data + \"px\");\r\n //this.iframe.style.height = value + \"px\";\r\n // if (isMobile()) {\r\n // this.iframe.style.width = '100%';\r\n // } else {\r\n // this.iframe.style.width = this.iframe.parentElement.dataset.width;\r\n // }\r\n\r\n // this.iframe.setAttribute(\"frameborder\", \"0\");\r\n // this.iframe.classList.add(\"iframe-module-iframe\");\r\n }\r\n // });\r\n }, false);\r\n\r\n return this;\r\n }\r\n\r\n private getHeight(str: string): number | null {\r\n if (str == null || typeof (str) == \"undefined\")\r\n return null;\r\n if (str.includes(' ')) {\r\n return parseInt(str.split(' ')[1]);\r\n }\r\n return parseInt(str);\r\n }\r\n\r\n}\r\n\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n new Iframe.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new Iframe.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n new Iframe.setup(moduleSelector);\r\n}\r\nnew Iframe.setup();\r\n"],"names":["moduleSelector","Iframe","element","this","cwIframe","querySelector","iframe","isManagedByConsentManager","console","debug","isConsentActive","window","__cmp","consentScreenEvent","onConsent","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","lazyScript","lazyIframe","lazyPreview","error","getConsentVendor","vendorConsents","c40172","log","_this","setTimeout","injectEasyXDMScript","MutationObserver","mutations","observer","mutation","addedNodes","nodeType","Node","ELEMENT_NODE","acceptButton","handleAcceptVendor","disconnect","observe","body","childList","subtree","attributes","characterData","addEventListener","templateEasyXDMScript","src","getAttribute","remove","easyXDMSriptLibrary","createElement","newXDMInitScript_1","appendChild","append","textContent","e","execScript","init","eventMethod","eventer","origin","value","getHeight","data","cutIndex","indexOf","substr","str","includes","parseInt","split"],"sourceRoot":""}