{"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":""}