{"version":3,"sources":["webpack:///./pericles/widgets/kevel-ad-placeholder/js/kevel-ad-placeholder.js"],"names":["AdPlaceholder","_createClass","_classCallCheck","selectors","kevel","kevelBannerTop","pbContext","osanoLink","elements","variables","data","this","setElements","addEventListeners","renderKevel","key","value","UX","utils","convertToArray","document","querySelectorAll","querySelector","getElementsByName","_this","window","addEventListener","hideKevelPlaceholder","_this2","length","setKevelData","forEach","item","getAttribute","getKevelPlaceholder","_this$elements$osanoL","_this$elements$pbCont","href","encodeURIComponent","content","innerWidth","kevelPlaceholder","_this3","fetch","concat","method","headers","body","JSON","stringify","then","response","json","result","ad","iframe","createElement","width","parseInt","height","html","isOsanoIncluded","includes","srcdoc","getOsanoScripts","append","onload","contentDocument","documentElement","style","overflow","removeAttribute","console","log","error","isSmallScreen","grid","screenSm","hidden"],"mappings":"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","file":"js/keveladplaceholder-e83c74458753d4db2e92.js","sourcesContent":["export default class AdPlaceholder {\n selectors = {\n kevel: '.kevel-ad-placeholder',\n kevelBannerTop: '.kevel-banner-top',\n pbContext: 'pbContext',\n osanoLink: 'head link[href*=\"osano.js\"]',\n };\n\n elements = {\n kevel: null,\n kevelBannerTop: null,\n pbContext: null,\n osanoLink: null,\n };\n\n variables = {\n data: {},\n pbContext: '',\n osanoLink: '',\n };\n\n constructor() {\n this.setElements();\n this.addEventListeners();\n this.renderKevel();\n }\n\n setElements() {\n this.elements.kevel = UX.utils.convertToArray(document.querySelectorAll(this.selectors.kevel));\n this.elements.kevelBannerTop = document.querySelector(this.selectors.kevelBannerTop);\n this.elements.pbContext = document.getElementsByName(this.selectors.pbContext)[0];\n this.elements.osanoLink = document.querySelector(this.selectors.osanoLink);\n }\n\n addEventListeners() {\n window.addEventListener('resize', () => {\n this.hideKevelPlaceholder();\n });\n }\n\n renderKevel() {\n if (this.elements.kevel.length) {\n this.setKevelData();\n this.elements.kevel.forEach(item => {\n this.variables.data['kevel-widget-ids'] = [item.getAttribute('data-placeholder-widget-id')];\n this.getKevelPlaceholder(item);\n });\n }\n }\n\n setKevelData() {\n this.variables.osanoLink = this.elements.osanoLink?.href;\n this.variables.pbContext = encodeURIComponent(this.elements.pbContext?.content);\n this.variables.data = {\n 'viewport-width': window.innerWidth,\n 'kevel-widget-ids': [],\n };\n }\n\n getKevelPlaceholder(kevelPlaceholder) {\n fetch(`/pb/widgets/kevel-ad-placeholder/get-kevel-ads-content?pbContext=${this.variables.pbContext}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(this.variables.data),\n })\n .then(response => response.json())\n .then(result => {\n if (result['kevel-widgets-data'].length) {\n // Handle the API response here\n const ad = result['kevel-widgets-data'][0];\n const iframe = document.createElement('iframe');\n // 20 and 16 are the margin total for the body tag within the iframe\n iframe.width = parseInt(ad.width) + 16;\n iframe.height = parseInt(ad.height) + 20;\n\n if (ad.html) {\n const isOsanoIncluded = ad.html.includes('osano.js');\n iframe.srcdoc = isOsanoIncluded ? ad.html : this.getOsanoScripts() + ad.html;\n }\n\n kevelPlaceholder.append(iframe);\n iframe.onload = function () {\n if (iframe.contentDocument && iframe.contentDocument.documentElement) {\n iframe.contentDocument.documentElement.style.overflow = 'hidden';\n }\n kevelPlaceholder.removeAttribute('hidden');\n };\n } else {\n // Handle the empty response\n console.log('INFO: No Kevel ads suitable to this page'); // eslint-disable-line no-console\n }\n })\n .catch(error => {\n // Handle any errors that occurred during the request\n console.error('Error in loading Kevel ads, for the following reason:', error); // eslint-disable-line no-console\n });\n }\n\n hideKevelPlaceholder() {\n const isSmallScreen = window.innerWidth < UX.grid.screenSm;\n if (this.elements.kevelBannerTop) {\n this.elements.kevelBannerTop.hidden = isSmallScreen;\n }\n }\n\n getOsanoScripts() {\n return `\n \n \n \n \n \n `;\n }\n}\n"],"sourceRoot":""}