{"version":3,"file":"dist/308.js","mappings":"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","sources":["webpack://vaneckweb/../Static/au/js/insights/src/override/sticky-gated-content/utils.js","webpack://vaneckweb/../Static/au/js/insights/src/override/sticky-gated-content/toggle-modal.js","webpack://vaneckweb/../Static/au/js/insights/src/override/sticky-gated-content/sticky-premium-form.js","webpack://vaneckweb/../Static/au/js/insights/src/override/sticky-gated-content/gated-content-block.js","webpack://vaneckweb/../Static/au/js/insights/src/override/sticky-gated-content/simple-sticky-premium-content.js"],"sourcesContent":["export const defaultExpireDays = 365;\r\n\r\nexport function getLocalStorageOrCookie(name) {\r\n return localStorage.getItem(name) ?? getCookie(name);\r\n}\r\n\r\nexport function setLocalStorageAndCookie(name, value, cookieExpiresIn){\r\n if(!cookieExpiresIn) {\r\n cookieExpiresIn = defaultExpireDays;\r\n }\r\n\r\n localStorage.setItem(name, value);\r\n setCookie(name, value, cookieExpiresIn)\r\n}\r\n\r\nexport function removeLocalStorageAndCookie(name) {\r\n localStorage.removeItem(name);\r\n removeCookie(name);\r\n}\r\n\r\nfunction getCookie(name) {\r\n var value = \"; \" + decodeURIComponent(document.cookie);\r\n var parts = value.split(\"; \" + name + \"=\");\r\n if (parts.length === 2) return parts.pop().split(\";\").shift();\r\n}\r\n\r\nfunction setCookie(name, value, expiresIn) {\r\n var currentDate = new Date();\r\n currentDate.setTime(currentDate.getTime() + (expiresIn * 24 * 60 * 60 * 1000));\r\n var expiresIn = \"expires=\" + currentDate.toUTCString();\r\n document.cookie = name + \"=\" + value + \";\" + expiresIn + \";path=/\";\r\n}\r\n\r\nfunction removeCookie(name) {\r\n document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\r\n}","import { getLocalStorageOrCookie, removeLocalStorageAndCookie, setLocalStorageAndCookie } from \"./utils\";\r\n\r\nlet openModals = [];\r\nlet queuedModals = [];\r\n\r\nexport function checkIfGatedContentPage() {\r\n return document.body.classList.contains('gated-content-page');\r\n}\r\n\r\nexport function initialiseModal(modal) {\r\n const isGatedContentPage = checkIfGatedContentPage();\r\n isGatedContentPage ? bindCloseButton(modal, true) : bindCloseButton(modal);\r\n moveDisclaimer(modal);\r\n //get timeout\r\n let timeoutSeconds = 8;\r\n const timeout = modal.getAttribute('data-timeout');\r\n if (timeout && !isNaN(parseInt(timeout))) {\r\n timeoutSeconds = parseInt(timeout);\r\n }\r\n window.setTimeout(() => toggleModal(modal), 1000 * timeoutSeconds);\r\n}\r\n\r\nfunction checkAndHandleMonthChange(modalId) {\r\n const currentDate = new Date();\r\n const currentMonth = `${currentDate.getFullYear()}-${currentDate.getMonth() + 1}`;\r\n \r\n const closureData = JSON.parse(getLocalStorageOrCookie(`${modalId}_closures`) || '{ \"default\": true }');\r\n const modalState = getLocalStorageOrCookie(modalId);\r\n\r\n // show if we entered new month\r\n if (closureData.month && closureData.month !== currentMonth && modalState === 'hidden') {\r\n removeLocalStorageAndCookie(modalId);\r\n removeLocalStorageAndCookie(`${modalId}_closures`);\r\n return true;\r\n }\r\n\r\n // show if week has past in current month\r\n let lastShownDate = new Date(closureData.lastShownDate);\r\n if (!closureData.default && isNaN(lastShownDate)) {\r\n if(closureData.lastShownDate && closureData.lastShownDate.indexOf(\"-\") !== -1) {\r\n let dateParts = closureData.lastShownDate.split(\"-\");\r\n // invalid settings stored\r\n if(dateParts.length != 3){\r\n removeLocalStorageAndCookie(modalId);\r\n removeLocalStorageAndCookie(`${modalId}_closures`);\r\n console.warn(\"Invalid closure date format, clearing modal closures\")\r\n }\r\n\r\n let year = dateParts[0];\r\n let month = dateParts[1].length == 1 ? `0${dateParts[1]}` : dateParts[1];\r\n let day = dateParts[2].length == 1 ? `0${dateParts[2]}` : dateParts[2];\r\n lastShownDate = new Date(`${year}-${month}-${day}`);\r\n if(isNaN(lastShownDate)){\r\n removeLocalStorageAndCookie(modalId);\r\n removeLocalStorageAndCookie(`${modalId}_closures`);\r\n console.warn(\"Last shown date is not processable, clearing modal closures\")\r\n }\r\n } else {\r\n removeLocalStorageAndCookie(modalId);\r\n removeLocalStorageAndCookie(`${modalId}_closures`);\r\n console.warn(\"Invalid closure date format, clearing modal closures\")\r\n }\r\n }\r\n const nextShowDate = lastShownDate.setDate(lastShownDate.getDate() + 7);\r\n if (nextShowDate < currentDate && modalState === 'hidden' && closureData.count < 3) {\r\n removeLocalStorageAndCookie(modalId);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function toggleModal(modal, hide = false, neverShowAgain = false, setRegisteredStatus = false) {\r\n const modalId = getModalId(modal);;\r\n\r\n // Check for month change before doing anything else\r\n const stateReset = checkAndHandleMonthChange(modalId);\r\n\r\n if (hide) {\r\n modal.classList.remove('show');\r\n toggleBackDrop(false, modal);\r\n openModals = openModals.filter(x => x !== modal);\r\n if (queuedModals.length > 0) {\r\n toggleModal(queuedModals.shift(), false, false);\r\n }\r\n\r\n //save in session storage, that the modal was closed.\r\n if (neverShowAgain) {\r\n //check if they have already registered first\r\n const isRegistered = getLocalStorageOrCookie(modalId) === \"registered\";\r\n if (isRegistered) return;\r\n setLocalStorageAndCookie(modalId, setRegisteredStatus ? 'registered' : 'hidden');\r\n }\r\n return;\r\n }\r\n\r\n // If state was reset due to month change, we should show the modal\r\n // also ensure we have only one modal open\r\n if (stateReset && !openModals.length) {\r\n modal.classList.add('show');\r\n toggleBackDrop(true, modal);\r\n openModals.push(modal);\r\n return;\r\n }\r\n\r\n //see if a modal is already open\r\n if (openModals.length > 0) {\r\n queuedModals.push(modal);\r\n return;\r\n }\r\n\r\n //check if the modal was closed before\r\n const modalState = getLocalStorageOrCookie(modalId);\r\n if (modalState == 'hidden') {\r\n //if it was hidden, see if there is a gated content block, if so it should be force shown.\r\n const isGatedContent = checkIfGatedContentPage();\r\n if (isGatedContent) {\r\n toggleBackDrop(true, modal);\r\n modal.classList.add(\"show\");\r\n openModals.push(modal);\r\n return;\r\n }\r\n }\r\n\r\n //if no gated content blocks, simply see if it was hidden or registed before.\r\n if (['hidden', 'registered'].includes(modalState ?? '')) return;\r\n\r\n modal.classList.add('show');\r\n toggleBackDrop(true, modal);\r\n openModals.push(modal);\r\n}\r\n\r\nfunction getModalId(modal) {\r\n return modal.getAttribute('id') ?? new Date().getTime().toString();\r\n}\r\n\r\nfunction handleModalClosure(modalId) {\r\n const currentDate = new Date();\r\n const currentMonth = `${currentDate.getFullYear()}-${currentDate.getMonth() + 1}`;\r\n const lastShownDate = currentDate.toLocaleDateString(\"en-US\");\r\n \r\n let closureData = JSON.parse(getLocalStorageOrCookie(`${modalId}_closures`) || '{}');\r\n if (closureData.month !== currentMonth) {\r\n closureData = { month: currentMonth, count: 0 };\r\n }\r\n\r\n closureData.lastShownDate = lastShownDate;\r\n \r\n closureData.count++;\r\n \r\n setLocalStorageAndCookie(`${modalId}_closures`, JSON.stringify(closureData));\r\n \r\n return true;\r\n}\r\n\r\nfunction bindCloseButton(modal, removeCloseButton = false) {\r\n const closeButton = modal.querySelector('button.close-icon');\r\n\r\n if (!closeButton) return;\r\n if (removeCloseButton) {\r\n closeButton.remove();\r\n return;\r\n }\r\n\r\n closeButton.addEventListener('click', () => {\r\n \r\n const closeForever = handleModalClosure(getModalId(modal));\r\n \r\n toggleModal(modal, true, closeForever);\r\n });\r\n}\r\n\r\nfunction toggleBackDrop(open, modal) {\r\n const siteHeader = document.querySelector('header.site-header');\r\n const isGatedContentPage = checkIfGatedContentPage();\r\n if (modal.classList.contains('no-backdrop')) return;\r\n if (open) {\r\n const backdrop = document.createElement('div');\r\n backdrop.classList.add('modal-backdrop','sticky-premium-form-backdrop');\r\n document.body.appendChild(backdrop);\r\n\r\n backdrop.style.zIndex = '1080';\r\n\r\n if (isGatedContentPage) {\r\n return;\r\n }\r\n\r\n backdrop.addEventListener('click', () => {\r\n const closeForever = handleModalClosure(getModalId(modal));\r\n\r\n toggleModal(modal, true, closeForever);\r\n\r\n backdrop.remove();\r\n });\r\n\r\n // bind to the site header to close the modal\r\n if (siteHeader) siteHeader.addEventListener(\"click\", e => toggleModal(modal, true, false));\r\n return;\r\n }\r\n\r\n if (siteHeader) siteHeader.removeEventListener(\"click\", e => toggleModal(modal, true, false));\r\n const backdrop = document.querySelector('.modal-backdrop.sticky-premium-form-backdrop');\r\n if (backdrop) backdrop.remove();\r\n}\r\n\r\nfunction moveDisclaimer(modal) {\r\n //copy the disclaimer to under the last text box if it is a large-modal.\r\n const disclaimer = modal.querySelector('.subscribe-block__disclaimer');\r\n if (modal.classList.contains('large-modal') && disclaimer) {\r\n disclaimer.remove();\r\n const emailTextBox = modal.querySelector('.FormTextbox .Email');\r\n emailTextBox?.insertAdjacentElement('afterend', disclaimer);\r\n }\r\n}\r\n","import { getAssociatedGatedContentBlocks } from \"./gated-content-block\";\r\nimport { initialiseSimpleStickyPremiumContent, handleEpiFormSteps } from \"./simple-sticky-premium-content\";\r\nimport { checkIfGatedContentPage, initialiseModal, toggleModal } from \"./toggle-modal\";\r\nimport { getLocalStorageOrCookie, setLocalStorageAndCookie, defaultExpireDays } from \"./utils\";\r\n\r\nfunction checkInvestorType() {\r\n const investorTypeInput = document.getElementById('hdnSelectedAudience');\r\n if (!investorTypeInput) return;\r\n\r\n return investorTypeInput.value;\r\n}\r\n\r\nfunction stickyPremiumForm() {\r\n //return function if .sticky-premium-content-form doesn't exist\r\n if (!$('.sticky-premium-content-form').length) {\r\n return;\r\n }\r\n const ifInvestorTypeIsChosen = checkInvestorType() !== '';\r\n $(\".sticky-premium-content-form #veSpinnerContainer\").hide()\r\n $('.sticky-premium-content-form:not(.premium-content-modal)').each(function () {\r\n initialiseSimpleStickyPremiumContent(this);\r\n });\r\n //handle premium content modals\r\n $('.sticky-premium-content-form.premium-content-modal').each(function () {\r\n $(this).find('button.close-icon').click(function () {\r\n $(this).parents(\".premium-content-modal\").hide();\r\n });\r\n });\r\n const stickyPremiumContentFormModals = document.querySelectorAll('.sticky-premium-content-form.premium-content-modal');\r\n window.flagUserAsRegistered = flagUserAsRegistered;\r\n \r\n if (!ifInvestorTypeIsChosen) return;\r\n stickyPremiumContentFormModals.forEach((modal) => {\r\n const sessionPageCount = sessionStorage.getItem(\"ve-PageVisitCount-au\");\r\n const isLandingPage = sessionPageCount ? parseInt(sessionPageCount) < 2 : true;\r\n const isSurveyModal = modal.classList.contains('survey-modal');\r\n if (isSurveyModal && !isLandingPage) return;\r\n\r\n const visits = getVisitsCount();\r\n const isFirstVisit = visits ? parseInt(visits) < 2 : true;\r\n const isUpcomingWebinarPopup = modal.classList.contains('webinar_registration_popup');\r\n if (isUpcomingWebinarPopup && isFirstVisit) return;\r\n\r\n initialiseModal(modal);\r\n handleFormSubmit(modal)\r\n const formStep = modal.querySelector('.FormStep');\r\n if (!formStep) return;\r\n handleEpiFormSteps(modal);\r\n });\r\n}\r\n\r\nfunction handleFormSubmit(modal) {\r\n\r\n const form = modal.querySelector('form');\r\n if (!form) return;\r\n\r\n const submitBtn = form.querySelector('.FormSubmitButton');\r\n if (!submitBtn) return;\r\n\r\n submitBtn.addEventListener('click', function(e) {\r\n e.preventDefault();\r\n \r\n setTimeout(() => {\r\n if (form.classList.contains('ValidationSuccess')) {\r\n checkSuccessAndToggleModal();\r\n }\r\n }, 100);\r\n });\r\n\r\n function checkSuccessAndToggleModal() {\r\n setTimeout(() => {\r\n toggleModal(modal, true, true, true);\r\n }, 3400);\r\n }\r\n}\r\n\r\nstickyPremiumForm();\r\n\r\nfunction flagUserAsRegistered(modalId) {\r\n //unhide any associated gated content\r\n const associatedBlocks = getAssociatedGatedContentBlocks(modalId);\r\n if (associatedBlocks) {\r\n associatedBlocks.forEach(x => x.classList.add(\"unlocked\"));\r\n }\r\n //if it is a gated content block, remove the _blank from the link\r\n //check if it a gated content page\r\n const isGatedContent = checkIfGatedContentPage();\r\n const modal = document.getElementById(modalId);\r\n if (modal && isGatedContent) {\r\n const links = modal.querySelectorAll(\"a\");\r\n links.forEach(link => {\r\n link.removeAttribute(\"target\");\r\n });\r\n }\r\n setLocalStorageAndCookie(modalId, 'registered', defaultExpireDays);\r\n}\r\n\r\nfunction getVisitsCount() {\r\n const key = getLocalStorageKeyByMicrosite();\r\n const visits = getLocalStorageOrCookie(key);\r\n return visits;\r\n}\r\n\r\nfunction getLocalStorageKeyByMicrosite() {\r\n let microsite = (document.querySelector(\"#hdnCurrentMicrositeId\"))?.value;\r\n // AU workaround\r\n if (!microsite) {\r\n microsite = (document.querySelector(\"#hdnSelectedCountry\"))?.value.toLowerCase();\r\n }\r\n let key = \"\";\r\n switch (microsite) {\r\n case \"global\":\r\n key = \"ve-PageVisitCount-corp\";\r\n break;\r\n case \"ucits\":\r\n key = \"ve-PageVisitCount-eu\";\r\n break;\r\n case \"au\":\r\n key = \"ve-PageVisitCount-au\";\r\n break;\r\n default:\r\n key = \"ve-PageVisitCount\";\r\n break;\r\n }\r\n\r\n return key;\r\n}","import { toggleModal } from \"./toggle-modal\";\r\nimport { getLocalStorageOrCookie, setLocalStorageAndCookie, defaultExpireDays } from \"./utils\";\r\n\r\nexport function getAssociatedGatedContentBlocks(modalID) {\r\n const gatedContentBlocks = document.querySelectorAll(\".gated-content-block\");\r\n const associatedBlock = [...gatedContentBlocks].filter(block => {\r\n const associatedIds = block.getAttribute(\"data-associatedblock\")?.split(\",\");\r\n if (associatedIds) {\r\n const matches = associatedIds.filter(x => x === modalID);\r\n if (matches.length > 0) return true;\r\n }\r\n return false;\r\n });\r\n if (associatedBlock.length > 0) return associatedBlock;\r\n return false;\r\n}\r\n\r\nfunction initialiseGatedContentBlocks() {\r\n const gatedContentBlocks = document.querySelectorAll(\".gated-content-block\");\r\n gatedContentBlocks.forEach(contentBlock => {\r\n const associatedBlockId = contentBlock.getAttribute(\"data-associatedblock\");\r\n if (!associatedBlockId) return;\r\n const associatedBlockIds = associatedBlockId.split(\",\");\r\n associatedBlockIds.forEach(blockId => {\r\n const associatedBlockIdFlag = getLocalStorageOrCookie(blockId);\r\n if (!associatedBlockId || associatedBlockIdFlag !== \"registered\") return;\r\n contentBlock.classList.add(\"unlocked\");\r\n markAllAssociatedModelsAsRegistered(associatedBlockIds);\r\n })\r\n })\r\n}\r\n\r\nfunction markAllAssociatedModelsAsRegistered(associatedBlockIds) {\r\n associatedBlockIds.forEach(blockId => {\r\n const isRegistered = getLocalStorageOrCookie(blockId) === \"registered\";\r\n if (isRegistered) return;\r\n setLocalStorageAndCookie(blockId, \"registered\", defaultExpireDays);\r\n const modalElement = document.getElementById(blockId);\r\n if (modalElement) {\r\n toggleModal(modalElement, true, true);\r\n }\r\n })\r\n}\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", initialiseGatedContentBlocks);","import { toggleModal } from \"./toggle-modal\";\r\n\r\nexport function initialiseSimpleStickyPremiumContent(component) {\r\n bindCloseButton(component);\r\n toggleModal(component);\r\n}\r\n\r\nfunction handleSelection(event, nextButton) {\r\n const radioInput = event.target.closest('.FormChoice').querySelector('input[type=\"radio\"]');\r\n if (!radioInput) return;\r\n\r\n radioInput.checked = true;\r\n \r\n if (nextButton) {\r\n const container = $(event.target).closest('.survey-modal');\r\n container.addClass('initial-step-submitted');\r\n container.find('.js-survey-container').removeClass('mb-3').removeClass('pt-3')\r\n nextButton.click();\r\n }\r\n}\r\n\r\nexport function handleEpiFormSteps(modal) {\r\n const ratingInputs = modal.querySelectorAll('.FormChoice__Input--Radio');\r\n \r\n const ratingLabels = modal.querySelectorAll('.FormChoice__Label');\r\n const nextButton = modal.querySelector('button[data-f-navigation-next]');\r\n if (!nextButton) return;\r\n\r\n ratingInputs.forEach(input => {\r\n if (input.getAttribute('checked') !== null && !input.checked) {\r\n input.checked = true;\r\n }\r\n \r\n input.checked = false;\r\n });\r\n \r\n ratingLabels.forEach(rating => {\r\n rating.addEventListener('click', (e) => {\r\n handleSelection(e, nextButton);\r\n const isSuccess = modal.querySelector('.success-message');\r\n if (!isSuccess) return;\r\n\r\n setTimeout(() => {\r\n const isVisible = isSuccess.checkVisibility \r\n ? isSuccess.checkVisibility()\r\n : $(isSuccess).is(\":visible\");\r\n if (isVisible) {\r\n toggleModal(modal, true, true, true)\r\n }\r\n }, 3500);\r\n });\r\n });\r\n}\r\n\r\nfunction bindCloseButton(modal) {\r\n const closeButton = modal.querySelector('button.close-icon');\r\n if (!closeButton) return;\r\n\r\n closeButton.addEventListener('click', () => {\r\n toggleModal(modal, true, true);\r\n });\r\n}\r\n\r\nwindow.markSimpleStickyPremiumContentAsClosed = function (modalId) {\r\n const modal = document.getElementById(modalId);\r\n if (modal) toggleModal(modal, true, true);\r\n}"],"names":["getLocalStorageOrCookie","name","localStorage","getItem","parts","decodeURIComponent","document","cookie","split","length","pop","shift","getCookie","setLocalStorageAndCookie","value","cookieExpiresIn","setItem","expiresIn","currentDate","Date","setTime","getTime","toUTCString","setCookie","removeLocalStorageAndCookie","removeItem","removeCookie","openModals","queuedModals","checkIfGatedContentPage","body","classList","contains","toggleModal","modal","hide","arguments","undefined","neverShowAgain","setRegisteredStatus","modalId","getModalId","stateReset","currentMonth","getFullYear","getMonth","closureData","JSON","parse","modalState","month","lastShownDate","default","isNaN","indexOf","dateParts","console","warn","year","day","setDate","getDate","count","checkAndHandleMonthChange","remove","toggleBackDrop","filter","x","add","push","includes","getAttribute","toString","handleModalClosure","toLocaleDateString","stringify","bindCloseButton","removeCloseButton","closeButton","querySelector","addEventListener","closeForever","open","siteHeader","isGatedContentPage","backdrop","createElement","appendChild","style","zIndex","e","removeEventListener","flagUserAsRegistered","associatedBlocks","modalID","associatedBlock","querySelectorAll","block","associatedIds","getAssociatedGatedContentBlocks","forEach","isGatedContent","getElementById","link","removeAttribute","contentBlock","associatedBlockId","associatedBlockIds","blockId","associatedBlockIdFlag","modalElement","markAllAssociatedModelsAsRegistered","window","markSimpleStickyPremiumContentAsClosed","$","ifInvestorTypeIsChosen","investorTypeInput","checkInvestorType","each","component","this","find","click","parents","stickyPremiumContentFormModals","sessionPageCount","sessionStorage","isLandingPage","parseInt","visits","microsite","toLowerCase","key","getLocalStorageKeyByMicrosite","isFirstVisit","disclaimer","emailTextBox","insertAdjacentElement","moveDisclaimer","timeoutSeconds","timeout","setTimeout","initialiseModal","form","submitBtn","preventDefault","handleFormSubmit","ratingInputs","ratingLabels","nextButton","input","checked","rating","event","radioInput","target","closest","container","addClass","removeClass","handleSelection","isSuccess","checkVisibility","is","handleEpiFormSteps","stickyPremiumForm"],"sourceRoot":""}