{"version":3,"sources":["webpack:///./pericles/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./pericles/widgets/adobe-digitalData/js/adobe-digitalData.js"],"names":["toPropertyKey","module","exports","_defineProperty","e","r","t","Object","defineProperty","value","enumerable","configurable","writable","__esModule","AdobeDigitalData","_createClass","_this","_classCallCheck","selectors","acdlLinks","elements","pageObj","updatedACDL","variables","isFieldsValid","eTOCEvents","successCTA","pushToACDL","event","eTOC","name","submitForm","requestVerificationShown","requestVerification","contactSupport","registrationEvents","error","message","registration","step","submitted","completed","loginEvents","login","success","eCommerce","AddressVerification","PaymentErrors","AddToCart","product","ecommerce","handleElementClicked","isAjax","target","getAttribute","preventDefault","currentTarget","nodeName","hrefValue","isRedirected","getAttributes","window","location","href","type","formElement","closest","fieldsRequired","querySelectorAll","reportValidity","handleFieldsValidation","submit","forEach","field","tagName","toLowerCase","selectedIndex","checked","trim","attributes","dataACDLAttributes","Array","from","filter","attr","startsWith","attrName","split","objectName","length","keys","slice","nestedKey","pop","reduce","obj","key","adobeDataLayer","this","getOsanoConsent","setElements","eventListeners","document","_this$elements$acdlLi","_this2","link","addEventListener","ajaxPageLoad","data","_this$elements$update","getUpdatedACDL","push","search","_objectSpread","changeTabsLoad","getState","page","htmlText","DOMParser","parseFromString","getElementById","innerHTML","match","JSON","parse","console","concat","isOsanoRendered","osanoConsent","adobeDataLayerObj","intervalID","setInterval","_osanoConsent","_osanoConsent2","_osanoConsent3","_osanoConsent4","Osano","consent","clearInterval","user","ANALYTICS","MARKETING","PERSONALIZATION","ESSENTIAL"],"mappings":"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","file":"js/adobeDigitalData-20800f0de1c7cd836b30.js","sourcesContent":["var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default class AdobeDigitalData {\n    selectors = {\n        acdlLinks: 'a[data-acdl-event], button[data-acdl-event], input[data-acdl-event]',\n    };\n\n    elements = {\n        pageObj: null,\n        updatedACDL: null,\n        acdlLinks: null,\n    };\n\n    variables = {\n        isFieldsValid: true,\n    };\n\n    eTOCEvents = {\n        successCTA: () => {\n            this.pushToACDL({\n                event: 'alert-signup-success',\n                eTOC: {name: 'journal alert cta'},\n            });\n        },\n\n        submitForm: () => {\n            this.pushToACDL({\n                event: 'alert-signup-submit',\n                eTOC: {name: 'alert simple sign-up form'},\n            });\n        },\n\n        requestVerificationShown: () => {\n            this.pushToACDL({\n                event: 'request-verification-shown',\n                eTOC: {name: 'alert simple sign-up form'},\n            });\n        },\n\n        requestVerification: () => {\n            this.pushToACDL({\n                event: 'request-verification',\n                eTOC: {name: 'alert simple sign-up form'},\n            });\n        },\n\n        contactSupport: () => {\n            this.pushToACDL({\n                event: 'contact-customer-service',\n                eTOC: {name: 'alert simple sign-up form'},\n            });\n        },\n    };\n\n    registrationEvents = {\n        error: message => {\n            this.pushToACDL({\n                event: 'registration-form-error',\n                registration: {\n                    step: 'registration form error',\n                    'error-message': message,\n                },\n            });\n        },\n\n        submitted: () => {\n            this.pushToACDL({\n                event: 'registration-form-submitted',\n                registration: {step: 'registration form submitted'},\n            });\n        },\n\n        completed: () => {\n            this.pushToACDL({\n                event: 'registration',\n                registration: {step: 'registration completed'},\n            });\n        },\n    };\n\n    loginEvents = {\n        error: message => {\n            this.pushToACDL({\n                event: 'login-error',\n                login: {\n                    step: 'login error',\n                    'error-message': message,\n                },\n            });\n        },\n\n        success: () => {\n            this.pushToACDL({\n                event: 'login-success',\n                login: {step: 'login success'},\n            });\n        },\n    };\n\n    eCommerce = {\n        AddressVerification: () => {\n            this.pushToACDL({\n                event: 'cart-address-verify',\n            });\n        },\n        PaymentErrors: message => {\n            this.pushToACDL({\n                event: 'cart-payment-error',\n                error: {\n                    message: message,\n                },\n            });\n        },\n\n        AddToCart: product => {\n            this.pushToACDL({\n                event: 'add-to-cart',\n                ecommerce: {product: product},\n            });\n        },\n    };\n\n    constructor() {\n        if (window.adobeDataLayer) {\n            this.getOsanoConsent();\n            this.setElements();\n            this.eventListeners();\n        }\n    }\n\n    setElements() {\n        this.elements.acdlLinks = document.querySelectorAll(this.selectors.acdlLinks);\n    }\n\n    eventListeners() {\n        this.elements.acdlLinks?.forEach(link => {\n            link.addEventListener('click', this.handleElementClicked);\n        });\n    }\n\n    handleElementClicked = e => {\n        const isAjax = e.target.getAttribute('data-ajax');\n        !isAjax && e.preventDefault();\n\n        if (e.currentTarget.nodeName === 'A') {\n            const hrefValue = e.currentTarget.getAttribute('href');\n            const isRedirected = e.currentTarget.getAttribute('acdl-redirect'); //add (acdl-redirect=\"true\") attr to the element if you want to enable its href value\n\n            this.getAttributes(e);\n            isRedirected === 'true' && (window.location.href = hrefValue);\n        } else if (\n            (e.currentTarget.nodeName === 'BUTTON' || e.currentTarget.nodeName === 'INPUT') &&\n            e.currentTarget.type === 'submit'\n        ) {\n            const formElement = e.currentTarget.closest('form');\n            const fieldsRequired = formElement?.querySelectorAll(\n                'input[required], input[type=\"checkbox\"][required], select[required]'\n            );\n\n            formElement?.reportValidity();\n            fieldsRequired && this.handleFieldsValidation(fieldsRequired);\n            if (!this.variables.isFieldsValid) {\n                return;\n            }\n\n            this.getAttributes(e);\n            !isAjax && formElement?.submit();\n        }\n    };\n\n    handleFieldsValidation = fieldsRequired => {\n        fieldsRequired.forEach(field => {\n            this.variables.isFieldsValid = !(\n                (field.tagName.toLowerCase() === 'select' && field.selectedIndex === 0) ||\n                (field.tagName.toLowerCase() === 'input' &&\n                    field.type.toLowerCase() === 'checkbox' &&\n                    !field.checked) ||\n                (field.tagName.toLowerCase() === 'input' && field.value.trim() === '')\n            );\n        });\n    };\n\n    getAttributes = e => {\n        const attributes = e.currentTarget.attributes;\n        const dataACDLAttributes = {};\n\n        Array.from(attributes)\n            .filter(attr => attr.name.startsWith('data-acdl-'))\n            .forEach(attr => {\n                const attrName = attr.name.split('--');\n\n                if (attrName[0] === 'data-acdl-event') {\n                    dataACDLAttributes.event = attr.value;\n                } else {\n                    let objectName = attrName[0].split('-')[2];\n                    // html attributes always converted to lowercase - this is a workaround to meet the requirements\n                    if (objectName === 'etoc') {\n                        objectName = 'eTOC';\n                    }\n                    if (!dataACDLAttributes[objectName]) {\n                        dataACDLAttributes[objectName] = {};\n                    }\n                    if (attrName.length > 2) {\n                        const keys = attrName.slice(1);\n                        const nestedKey = keys.pop();\n                        const nestedObj = keys.reduce((obj, key) => {\n                            if (!obj[key]) {\n                                obj[key] = {};\n                            }\n                            return obj[key];\n                        }, dataACDLAttributes[objectName]);\n                        nestedObj[nestedKey] = attr.value;\n                    } else {\n                        const key = attrName[1];\n                        dataACDLAttributes[objectName][key] = attr.value;\n                    }\n                }\n            });\n\n        this.pushToACDL(dataACDLAttributes);\n    };\n\n    ajaxPageLoad(data) {\n        this.elements.updatedACDL = this.getUpdatedACDL(data); // return the new ACDL object coming from the search result ajax response\n        window.adobeDataLayer.push({event: 'page-load', search: {...this.elements.updatedACDL?.search}});\n    }\n\n    // for advanced & citation search\n    changeTabsLoad(target) {\n        this.elements.pageObj = window.adobeDataLayer.getState().page;\n        target.closest('.citation-search__tab') && (this.elements.pageObj['secondary-section'] = 'citation search');\n        target.closest('.adv-search__tab') && (this.elements.pageObj['secondary-section'] = 'advanced');\n        window.adobeDataLayer.push({event: 'page-load', page: {...this.elements.pageObj}});\n    }\n    getUpdatedACDL(htmlText) {\n        try {\n            // Extract the script tag from the response\n            const parser = new DOMParser();\n            const doc = parser.parseFromString(htmlText, 'text/html');\n            const scriptTag = doc.getElementById('adobeDigitalData');\n\n            // Extract the JavaScript code from the script tag\n            const jsCode = scriptTag.innerHTML;\n\n            // Use a regular expression to match the adobeDataLayer object\n            const obj = jsCode.match(/window\\.adobeDataLayer\\.push\\((\\{.*\\})\\);/s)[1];\n\n            // Extract the adobeDataLayer object and parse it as JSON\n            const adobeDataLayer = JSON.parse(obj);\n\n            return adobeDataLayer;\n        } catch (error) {\n            console.error(`Error occurred while parsing adobeDigitalData: ${error}`);\n            return null;\n        }\n    }\n\n    getOsanoConsent() {\n        let isOsanoRendered = false,\n            osanoConsent = null,\n            adobeDataLayerObj = {};\n\n        adobeDataLayerObj.event = 'page-load';\n        adobeDataLayerObj.user = {};\n\n        const intervalID = setInterval(() => {\n            window.Osano &&\n                window.Osano('onInitialized', consent => {\n                    isOsanoRendered = true;\n                    osanoConsent = consent;\n                });\n\n            if (isOsanoRendered) {\n                clearInterval(intervalID);\n                adobeDataLayerObj.user[\n                    'consent-osano'\n                ] = `analytics: ${osanoConsent?.ANALYTICS} | marketing: ${osanoConsent?.MARKETING} | personalization: ${osanoConsent?.PERSONALIZATION} | essential: ${osanoConsent?.ESSENTIAL}`;\n                window.adobeDataLayer.push(adobeDataLayerObj);\n            }\n        }, 50);\n    }\n\n    pushToACDL(obj) {\n        window.adobeDataLayer.push(obj);\n    }\n}\n"],"sourceRoot":""}