{"version":3,"file":"Optanon.js","names":["Optanon","a","setters","Component","default","deepMerge","cookie","ajax","on","trigger","execute","constructor","element","options","arguments","length","optanonCookieGroupsToDisableSFCCTracking","changeSessionTrackingUrl","cookies","optanon","dw","buttons","confirmMyChoices","allowAll","classes","saveContainer","buttonTheme","savePreference","hideElement","id","acceptContainer","acceptRecommended","acceptRecommendedContainer","preferenceCenter","eventName","bindEvents","window","OptanonWrapper","optanonWrapperEvent","bind","addEventListener","optanonControlPrefCenterDisplay","optanonDisplayPopup","afterLoad","customEvent","cookieOptanonConsent","getCookie","cookieOptanonConsentInfos","parseCookieOptanonConsentValue","groups","cookieOptanonConsentGroupsObject","decodeURIComponent","groupsToDisableSFCCTrackingArray","split","groupsToDisableForSession","filter","groupToDisable","shouldSessionTrackingBeAllowed","currentSessionTrackingAllowed","changeSessionTracking","sessionTrackingAllowed","url","catch","value","separator1","separator2","object","el","i","element1","element2","optanonDomainScriptID","optanonCookieToggleInfoDisplayEnable","IsAlertBoxClosed","ToggleInfoDisplay","saveButton","styles","acceptButton","document","getElementById","top","footer","getElementsByClassName","divSave","createElement","divAccept","innerHTML","appendChild","style","marginRight","prefCenter","classList","contains","add"],"sources":["components/global/Optanon.js"],"sourcesContent":["import Component from 'core/Component';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { cookie } from 'toolbox/cookie';\nimport { ajax } from 'toolbox/ajax';\nimport { on, trigger } from 'toolbox/event';\n\n/**\n * This is a description of the Optanon constructor function.\n * @class\n * @classdesc This is a description of the Optanon class. (must be edited)\n * @extends Component\n */\nexport default class Optanon extends Component {\n /**\n * Constructor of the class that mainly merge the options of the components\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n optanonCookieGroupsToDisableSFCCTracking: '2',\n changeSessionTrackingUrl: '',\n cookies: {\n optanon: 'OptanonConsent',\n dw: 'dw_dnt',\n },\n buttons: {\n confirmMyChoices: 'Confirm My Choices',\n allowAll: 'Allow All',\n },\n classes: {\n saveContainer: 'save-preference-btn-handler onetrust-close-btn-handler button-theme',\n buttonTheme: 'button-theme',\n savePreference: 'save-preference-btn-container',\n hideElement: 'ot-hide',\n },\n id: {\n saveContainer: 'Save Container',\n acceptContainer: 'Accept Container',\n acceptRecommended: 'accept-recommended-btn-handler',\n acceptRecommendedContainer: 'accept-recommended-container',\n preferenceCenter: 'onetrust-pc-sdk',\n },\n eventName: 'consentManagementComponentLoaded',\n }, options));\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n window.OptanonWrapper = this.optanonWrapperEvent.bind(this);\n window.addEventListener('load', this.optanonControlPrefCenterDisplay.bind(this), this.optanonDisplayPopup.bind(this));\n on(this.options.eventName, window, this.afterLoad, { customEvent: true });\n }\n\n /**\n * Handle action after event addition to global\n */\n afterLoad() {\n }\n\n /**\n * Optanon Wrapper window Event.\n * It will retrieve the Optanon Consent Informations and update the session tracking if needed :\n * Cookies are grouped in optanon and some of them need to disable as well the SFCC Session tracking\n * if the customer choose to disable thoses.\n */\n optanonWrapperEvent() {\n if (!this.options.optanonCookieGroupsToDisableSFCCTracking) {\n return;\n }\n\n const cookieOptanonConsent = cookie.getCookie(this.options.cookies.optanon);\n if (cookieOptanonConsent) {\n const cookieOptanonConsentInfos = this.parseCookieOptanonConsentValue(cookieOptanonConsent, '&', '=');\n if (cookieOptanonConsentInfos.groups) {\n const cookieOptanonConsentGroupsObject = this.parseCookieOptanonConsentValue(decodeURIComponent(cookieOptanonConsentInfos.groups), ',', ':');\n const groupsToDisableSFCCTrackingArray = this.options.optanonCookieGroupsToDisableSFCCTracking.split(',');\n const groupsToDisableForSession = groupsToDisableSFCCTrackingArray.filter(groupToDisable => cookieOptanonConsentGroupsObject[groupToDisable] === '0');\n const shouldSessionTrackingBeAllowed = !(groupsToDisableForSession && groupsToDisableForSession.length);\n const currentSessionTrackingAllowed = (cookie.getCookie(this.options.cookies.dw) === '0');\n if ((currentSessionTrackingAllowed !== shouldSessionTrackingBeAllowed) && this.options.changeSessionTrackingUrl) {\n this.changeSessionTracking(shouldSessionTrackingBeAllowed);\n }\n }\n }\n trigger(this.options.eventName, window);\n }\n\n /**\n * Make the call to Handle the SFCC Session tracking in function of the cookie Optanon Consent groups\n * @param {Boolean} sessionTrackingAllowed boolean value of the permission of the session tracking\n * @return {*} ajax response\n */\n changeSessionTracking(sessionTrackingAllowed) {\n const url = `${this.options.changeSessionTrackingUrl}?sessionTrackingAllowed=${sessionTrackingAllowed}`;\n return ajax(url)\n .catch(() => { });\n }\n\n /**\n * Parse the Optanon Consent cookie value\n * @param {String} value string to parse\n * @param {String} separator1 first separator\n * @param {String} separator2 second separator\n * @returns {Object} an object of the parsed Optanon Consent\n */\n parseCookieOptanonConsentValue(value, separator1, separator2) {\n const object = {};\n\n if (!value || !separator1 || !separator2) {\n return object;\n }\n\n value += '';\n const el = value.split(separator1);\n for (let i = 0; i < el.length; i++) {\n const [element1, element2] = el[i].split(separator2);\n object[element1] = element2;\n }\n\n return object;\n }\n\n /**\n * Optanon cookie policy popup - onetrust v2\n */\n optanonDisplayPopup() {\n if ((typeof window.Optanon === 'undefined') || !this.options.optanonDomainScriptID) {\n return;\n }\n\n if (this.options.optanonCookieToggleInfoDisplayEnable && ('IsAlertBoxClosed' in window.Optanon) && (window.Optanon.IsAlertBoxClosed() === false)) {\n window.Optanon.ToggleInfoDisplay();\n }\n\n const { confirmMyChoices, allowAll } = this.options.buttons;\n const saveButton = ``;\n const acceptButton = ``;\n\n if (document.getElementById(this.options.id.saveContainer) === null) {\n const top = document.getElementById(this.options.id.acceptRecommendedContainer);\n const footer = document.getElementsByClassName(this.options.classes.savePreference)[0];\n\n const divSave = document.createElement('div');\n divSave.id = this.options.id.saveContainer;\n\n const divAccept = document.createElement('div');\n divAccept.id = this.options.id.acceptContainer;\n\n divSave.innerHTML = saveButton;\n divAccept.innerHTML = acceptButton;\n\n top.appendChild(divSave);\n footer.appendChild(divAccept);\n document.getElementsByClassName(this.options.classes.buttonTheme)[2].style.marginRight = '10px';\n }\n }\n\n /**\n * Target the preference center and hide it by default.\n */\n optanonControlPrefCenterDisplay() {\n const prefCenter = document.getElementById(this.options.id.preferenceCenter);\n if (!prefCenter.classList.contains(this.options.classes.hideElement)) {\n prefCenter.classList.add(this.options.classes.hideElement);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}