{"version":3,"sources":["node_modules/browser-pack/_prelude.js","frontend/Common/js/common/ThreadValidator.js","frontend/Common/js/components/Icon/Icon.jsx","frontend/Common/js/components/Modal/Modal.jsx","frontend/Common/js/components/SCTracking/sc-tracking.js","frontend/Common/js/modules/EmailSignup/EmailSignupModalApp.jsx","frontend/Common/js/modules/EmailSignup/entry/email-signup.js","frontend/Common/js/modules/EmailSignup/initEmailSignup.js","frontend/Common/js/modules/EmailSignup/initEmailSticky.js","frontend/Common/js/modules/EmailSignup/renderEmailSignupModal.jsx"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","setRecaptchaToken","inputEl","window","grecaptcha","ready","execute","action","then","token","setAttribute","initRecaptcha","elForm","recaptchaInput","querySelector","setInterval","recaptchaEl","document","onload","resetRecaptcha","strip","html","DOMParser","parseFromString","body","textContent","checkIfDirty","field","dataset","isDirty","value","originalValue","parentElement","classList","remove","add","validateField","let","valid","re","type","match","test","passwordFields","querySelectorAll","passwordFieldVals","map","isBlank","reduce","b","notEq","unescape","getAttribute","checked","trim","name","handleSubmit","handleSuccess","handleError","noJs","url","method","toLowerCase","addEventListener","preventDefault","forEach","el","validFields","HTMLFormElement","prototype","submit","postFormData","removeAttribute","focus","matchfields","items","item","field2Match","recaptchaLabel","getResponse","params","FormData","fetch","credentials","mode","formmode","response","contentType","headers","get","indexOf","json","ok","data","Success","RedirectUrl","location","Message","catch","err","setDefaults","setTimeout","resetDefaults","reset","validationListeners","_react","_interopRequireDefault","_propTypes","_classnames","__esModule","default","_extends","Object","assign","bind","arguments","hasOwnProperty","apply","propTypes","iconName","string","className","title","Icon","props","otherProps","createElement","focusable","aria-label","aria-hidden","role","xlinkHref","assetsFolder","_getRequireWildcardCache","has","__proto__","defineProperty","getOwnPropertyDescriptor","set","_interopRequireWildcard","_reactDom","_reactFocusLock","_Icon","WeakMap","node","isOpen","bool","isRequired","noPadding","onClose","func","lang","children","oneOfType","showPrintButton","Modal","rest","overflowRef","useRef","childrenCache","modalContainer","setModalContainer","useState","useEffect","container","appendChild","content","current","keydownHandler","key","scrollTo","removeEventListener","toggle","classes","is-open","modal--no-padding","modalNode","ref","onClick","disabled","returnFocus","aria-modal","print","createPortal","event","email","goal","error","console","_Modal","instanceOf","HTMLCollection","scrollDepth","number","dir","EmailSignupModalApp","modalOpen","setModalOpen","modalListening","setModalListening","contentRef","innerHTML","append","handleScroll","scrollTriggerPoint","clientHeight","innerHeight","scrollY","passive","sessionStorage","setItem","_initEmailSignup","_initEmailSticky","_renderEmailSignupModal","_scTracking","elm","target","closest","_ThreadValidator","fieldItem","input","link","message","subject","href","click","buttonEl","expanded","toggleEmailSticky","docEl","documentElement","docBod","st","sh","scrollHandler","mount","getItem","parseInt","render","_EmailSignupModalApp"],"mappings":"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","file":"email-signup-generated.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\r\n if (window.grecaptcha) {\r\n window.grecaptcha.ready(function () {\r\n window.grecaptcha\r\n .execute(\"6LeUriooAAAAABgBI359S_WLqi83taQGDDNVoaCM\", {\r\n action: \"submit\",\r\n })\r\n .then(function (token) {\r\n inputEl.setAttribute(\"value\", token);\r\n });\r\n });\r\n }\r\n};\r\n\r\n// V3 recaptcha setup.\r\nexport const initRecaptcha = (elForm) => {\r\n const recaptchaInput = elForm.querySelector(\".js-recaptcha-input\");\r\n\r\n if (!recaptchaInput) {\r\n return false;\r\n }\r\n\r\n if (typeof window.grecaptcha !== \"undefined\") {\r\n setRecaptchaToken(recaptchaInput);\r\n\r\n // fix timeout issue\r\n setInterval(function () {\r\n setRecaptchaToken(recaptchaInput);\r\n }, 110000);\r\n } else {\r\n const recaptchaEl = document.querySelector(\".js-recaptcha\");\r\n if (recaptchaEl) {\r\n recaptchaEl.onload = () => setRecaptchaToken(recaptchaInput);\r\n\r\n // fix timeout issue\r\n setInterval(function () {\r\n setRecaptchaToken(recaptchaInput);\r\n }, 110000);\r\n }\r\n }\r\n};\r\n\r\nexport const resetRecaptcha = (elForm) => {\r\n const recaptchaInput = elForm.querySelector(\".js-recaptcha-input\");\r\n\r\n if (recaptchaInput) {\r\n setRecaptchaToken(recaptchaInput);\r\n }\r\n};\r\n\r\nexport const strip = (html) => {\r\n var doc = new DOMParser().parseFromString(html, \"text/html\");\r\n return doc.body.textContent || \"\";\r\n};\r\n\r\nexport const checkIfDirty = (field) => {\r\n if (field.dataset.isDirty === \"true\") {\r\n if (field.value === field.dataset.originalValue) {\r\n field.parentElement.classList.remove(\"is-dirty\");\r\n field.dataset.isDirty = \"false\";\r\n }\r\n } else {\r\n if (field.value !== field.dataset.originalValue) {\r\n field.parentElement.classList.add(\"is-dirty\");\r\n field.dataset.isDirty = \"true\";\r\n }\r\n }\r\n\r\n // this flag can be used to position a label over the input\r\n if (field.value === \"\") {\r\n field.parentElement.classList.remove(\"has-value\");\r\n } else {\r\n field.parentElement.classList.add(\"has-value\");\r\n }\r\n return field.dataset.isDirty;\r\n};\r\n\r\n// takes in a field items\r\n// returns true or false\r\n// adds error class to invalid fields\r\nexport const validateField = (field, elForm) => {\r\n let valid = true;\r\n const re =\r\n /^.*(?=.{8,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W])(?!.*[\\s]).*$/;\r\n\r\n switch (field.dataset.type) {\r\n case \"email\":\r\n valid = !!field.value.match(\r\n /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,\r\n );\r\n break;\r\n case \"password\":\r\n // more than eight characters\r\n // contains digits\r\n // contains lower case alpha\r\n // contains upper case alpha\r\n // contains special characters\r\n // does not contain white space\r\n\r\n valid = re.test(field.value);\r\n\r\n break;\r\n case \"new-password\":\r\n //valid password that doesnt match other password\r\n const passwordFields = [...elForm.querySelectorAll(\".js-new-password\")];\r\n\r\n //only return true when there are 2 new password fields\r\n if (passwordFields.length > 1 && passwordFields.length < 3) {\r\n const passwordFieldVals = passwordFields.map((field) => field.value);\r\n\r\n /*\r\n //if password fields are blank or\r\n //bothfields pass regex and are not\r\n //equal the new passwords are valid\r\n */\r\n\r\n const isBlank = passwordFieldVals.reduce((a, b) => a + b) === \"\";\r\n\r\n const notEq =\r\n passwordFieldVals[0] !== passwordFieldVals[1] &&\r\n re.test(passwordFieldVals[0]) &&\r\n re.test(passwordFieldVals[1]);\r\n\r\n valid = isBlank ? isBlank : notEq;\r\n } else {\r\n valid = false;\r\n }\r\n break;\r\n case \"tel\":\r\n valid = !!field.value.match(/^[0-9]*^[()-]*$/) || field.value === \"\";\r\n break;\r\n\r\n case \"extension\":\r\n valid = !!field.value.match(/^\\d{1,4}$/) || field.value === \"\";\r\n break;\r\n\r\n case \"zip\":\r\n valid = !!field.value.match(\r\n /^[0-9]{5}$|^[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]$/,\r\n );\r\n break;\r\n\r\n case \"website\":\r\n valid =\r\n !!field.value.match(\r\n /^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})$/,\r\n ) || field.value === \"\";\r\n break;\r\n\r\n case \"text-length\":\r\n valid =\r\n strip(unescape(field.value)).length <\r\n field.getAttribute(\"data-max-length\") || field.value === \"\";\r\n break;\r\n\r\n case \"checkbox\":\r\n valid = field.checked === true;\r\n break;\r\n\r\n case \"select\":\r\n case \"text\":\r\n default:\r\n if (field.value.trim().length === 0) {\r\n valid = false;\r\n }\r\n if (field.name == \"investmentId\") {\r\n valid = !!field.value.match(\r\n /[iI]{1}[nN]{1}[vV]{1}[\\-]{1}[0-9]+$|[oO]{1}[pP]{2}[0-9]+$/,\r\n );\r\n }\r\n }\r\n\r\n return valid;\r\n};\r\n\r\nexport const handleSubmit = (\r\n elForm,\r\n handleSuccess,\r\n handleError,\r\n noJs = false,\r\n) => {\r\n const url = elForm.getAttribute(\"data-post-url\");\r\n const method = elForm.getAttribute(\"method\").toLowerCase();\r\n\r\n elForm.addEventListener(\"submit\", (e) => {\r\n if (!noJs && method !== \"get\" && !!url) {\r\n e.preventDefault();\r\n }\r\n\r\n [...elForm.querySelectorAll(\".has-error\")].forEach((el) =>\r\n el.classList.remove(\"has-error\"),\r\n );\r\n\r\n if (\r\n validFields([...elForm.querySelectorAll(\".js-form-required\")], elForm)\r\n ) {\r\n //submit with js only if method != Get, noJS is false, and there is a url.\r\n if (!noJs && method !== \"get\" && !!url) {\r\n e.preventDefault();\r\n [\r\n ...elForm.querySelectorAll(\"button[type=submit], input[type=submit]\"),\r\n ].forEach((el) => {\r\n el.setAttribute(\"disabled\", true);\r\n el.classList.add(\"is-loading\");\r\n });\r\n\r\n if (elForm.getAttribute(\"data-bypass-fetch\")) {\r\n // If a form field name is \"submit\", form.submit() breaks\r\n // Calling the prototype method to be sure it'll work\r\n HTMLFormElement.prototype.submit.call(elForm);\r\n } else {\r\n postFormData(elForm, url, handleSuccess, handleError);\r\n }\r\n }\r\n } else {\r\n e.preventDefault();\r\n [...elForm.querySelectorAll(\"button[type=submit]\")].forEach((el) => {\r\n el.removeAttribute(\"disabled\");\r\n el.classList.remove(\"is-loading\");\r\n });\r\n elForm.querySelectorAll(\".has-error\")[0].focus();\r\n }\r\n });\r\n};\r\n\r\nexport const matchfields = (elForm, items) => {\r\n let valid = true;\r\n\r\n items.forEach((item) => {\r\n const field = item.querySelector(\"[aria-required]\");\r\n const field2Match = elForm.querySelector(`[name=${field.dataset.match}]`);\r\n\r\n if (field === null) {\r\n return;\r\n }\r\n\r\n if (field2Match && field2Match.value !== field.value) {\r\n item.classList.add(\"has-error\");\r\n valid = false;\r\n } else {\r\n item.classList.remove(\"has-error\");\r\n }\r\n });\r\n\r\n return valid;\r\n};\r\n\r\n// takes in a node array of field items\r\n// returns true or false\r\nexport const validFields = (items, elForm) => {\r\n let valid = true;\r\n\r\n items.forEach((item) => {\r\n const field = item.querySelector(\"[aria-required]\");\r\n\r\n if (field === null) {\r\n return;\r\n }\r\n\r\n if (validateField(field, elForm)) {\r\n item.classList.remove(\"has-error\");\r\n } else {\r\n item.classList.add(\"has-error\");\r\n valid = false;\r\n }\r\n });\r\n\r\n // Recaptcha V2 test.\r\n const recaptchaLabel = document.querySelector(\".g-recaptcha-error-label\");\r\n const recaptchaInput = document.querySelector(\".g-recaptcha\");\r\n if (window.grecaptcha && window.grecaptcha.getResponse() === \"\") {\r\n if (recaptchaInput) {\r\n recaptchaInput.classList.add(\"has-error\");\r\n }\r\n if (recaptchaLabel) {\r\n recaptchaLabel.classList.add(\"has-error\");\r\n }\r\n valid = false;\r\n } else {\r\n if (recaptchaInput) {\r\n recaptchaInput.classList.remove(\"has-error\");\r\n }\r\n if (recaptchaLabel) {\r\n recaptchaLabel.classList.remove(\"has-error\");\r\n }\r\n }\r\n\r\n return valid;\r\n};\r\n\r\n//stripped down submit handler taken from thread/forms/forms.js\r\n//takes form el, action url, and success and error handler fns\r\nconst postFormData = (elForm, url, handleSuccess, handleError) => {\r\n const params = new FormData(elForm);\r\n\r\n fetch(url, {\r\n body: params,\r\n credentials: \"same-origin\",\r\n mode: elForm.dataset.formmode ? elForm.dataset.formmode : \"cors\",\r\n method: \"post\",\r\n })\r\n .then((response) => {\r\n const contentType = response.headers.get(\"content-type\");\r\n resetRecaptcha(elForm);\r\n\r\n if (contentType && contentType.indexOf(\"application/json\") !== -1) {\r\n return response.json();\r\n } else {\r\n return response.ok;\r\n }\r\n })\r\n .then((data) => {\r\n if (data.Success) {\r\n if (data.RedirectUrl) {\r\n window.location = data.RedirectUrl;\r\n } else {\r\n handleSuccess();\r\n }\r\n } else {\r\n handleError(data.Message);\r\n }\r\n })\r\n .catch((err) => {\r\n handleError();\r\n resetRecaptcha(elForm);\r\n });\r\n};\r\n\r\nexport const setDefaults = (elForm) => {\r\n // handling the back button with setTimeout\r\n setTimeout(() => {\r\n elForm\r\n .querySelectorAll(\"input:not([type=submit]), textarea, select\")\r\n //create dataset for form fields\r\n .forEach((field) => {\r\n if (field.type === \"checkbox\" || field.type === \"radio\") {\r\n field.dataset.checked = field.checked;\r\n } else {\r\n field.dataset.originalValue = field.value;\r\n }\r\n checkIfDirty(field);\r\n });\r\n }, 100);\r\n};\r\n\r\nexport const resetDefaults = (elForm) => {\r\n elForm.reset();\r\n\r\n elForm\r\n .querySelectorAll(\"input:not([type=submit]), textarea, select\")\r\n .forEach((field) => {\r\n if (field.type === \"checkbox\" || field.type === \"radio\") {\r\n if (field.dataset.checked === \"true\") {\r\n field.checked = true;\r\n } else {\r\n field.checked = false;\r\n }\r\n } else {\r\n field.value = field.dataset.originalValue;\r\n }\r\n checkIfDirty(field);\r\n });\r\n\r\n resetRecaptcha(elForm);\r\n};\r\n\r\nexport const validationListeners = (item, elForm) => {\r\n const field = item.querySelector(\"[aria-required]\");\r\n\r\n if (field === null) {\r\n return;\r\n }\r\n\r\n if (field.dataset.type !== \"select\") {\r\n field.addEventListener(\"blur\", (e) => {\r\n if (field.getAttribute(\"data-type\") !== \"new-password\") {\r\n // ignore blank fields\r\n if (field.value.trim().length === 0 || validateField(field, elForm)) {\r\n item.classList.remove(\"has-error\");\r\n } else {\r\n item.classList.add(\"has-error\");\r\n }\r\n }\r\n checkIfDirty(field);\r\n });\r\n\r\n field.addEventListener(\"focus\", (e) => {\r\n field.parentElement.classList.add(\"has-value\");\r\n });\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { string } from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\nconst propTypes = {\r\n iconName: string,\r\n className: string,\r\n title: string,\r\n};\r\n\r\nconst Icon = (props) => {\r\n const { iconName, className, title, ...otherProps } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nIcon.propTypes = propTypes;\r\nexport default Icon;\r\n","import React, { useEffect, useState, useRef } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { bool, func, oneOfType, string, node } from \"prop-types\";\r\nimport cx from \"classnames\";\r\n\r\n// https://hackernoon.com/its-a-focus-trap-699a04d66fb5\r\nimport FocusLock from \"react-focus-lock\";\r\n\r\nimport Icon from \"../Icon/Icon.jsx\";\r\n\r\nconst propTypes = {\r\n title: node,\r\n isOpen: bool.isRequired,\r\n noPadding: bool,\r\n onClose: func.isRequired,\r\n className: string,\r\n lang: string,\r\n children: oneOfType([node, func]),\r\n showPrintButton: bool,\r\n};\r\n\r\nconst Modal = (props) => {\r\n const {\r\n isOpen,\r\n lang,\r\n onClose,\r\n title,\r\n children,\r\n className,\r\n noPadding,\r\n showPrintButton = false,\r\n ...rest\r\n } = props;\r\n\r\n const overflowRef = useRef();\r\n\r\n // keep around the children so when we close, we can fade out with the content\r\n const childrenCache = useRef();\r\n\r\n const [modalContainer, setModalContainer] = useState();\r\n useEffect(() => {\r\n const container = document.createElement(\"div\");\r\n container.setAttribute(\"class\", \"modal-container\");\r\n document.querySelector(\"body\").appendChild(container);\r\n\r\n setModalContainer(container);\r\n return () => {\r\n container.remove();\r\n };\r\n }, []);\r\n\r\n // if children is a funciton, render it with some state\r\n const content =\r\n typeof children === \"function\" ? children({ isOpen, title }) : children;\r\n\r\n if (content) {\r\n childrenCache.current = content;\r\n }\r\n\r\n // listen for esc if the modal is open\r\n useEffect(() => {\r\n const keydownHandler = (e) => {\r\n if (e.key === \"Escape\") {\r\n onClose();\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n // always open with the modal scrolled to the top\r\n if (overflowRef.current) {\r\n overflowRef.current.scrollTo(0, 0);\r\n }\r\n\r\n window.addEventListener(\"keydown\", keydownHandler);\r\n return () => window.removeEventListener(\"keydown\", keydownHandler);\r\n } else {\r\n window.removeEventListener(\"keydown\", keydownHandler);\r\n }\r\n }, [isOpen, onClose]);\r\n\r\n useEffect(() => {\r\n document.querySelector(\"body\").classList.toggle(\"modal-open\", isOpen);\r\n if (document.querySelector(\".js-page-content-wrapper\")) {\r\n document\r\n .querySelector(\".js-page-content-wrapper\")\r\n .setAttribute(\"aria-hidden\", isOpen);\r\n }\r\n }, [isOpen]);\r\n\r\n const classes = cx(\"modal\", className, {\r\n \"is-open\": isOpen,\r\n \"modal--no-padding\": noPadding,\r\n });\r\n\r\n const modalNode = (\r\n
\r\n
\r\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */}\r\n
\r\n \r\n
\r\n {title}\r\n \r\n \r\n \r\n
\r\n
{childrenCache.current}
\r\n {showPrintButton && (\r\n
\r\n window.print()}\r\n >\r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n
\r\n );\r\n\r\n return modalContainer\r\n ? ReactDOM.createPortal(modalNode, modalContainer)\r\n : null;\r\n};\r\n\r\nModal.propTypes = propTypes;\r\nexport default Modal;\r\n","export default function scTracking(event, params) {\r\n if (!event) return false;\r\n\r\n var url = \"\";\r\n\r\n switch (event) {\r\n case \"share\":\r\n url = \"/api/tracking/share\";\r\n break;\r\n case \"socialfollow\":\r\n url = \"/api/tracking/socialfollow\";\r\n break;\r\n case \"download\":\r\n url = \"/api/tracking/download\";\r\n break;\r\n case \"videoplay\":\r\n url = \"/api/tracking/videoplay\";\r\n break;\r\n case \"interstitialtriggered\":\r\n url = \"/api/tracking/interstitialtriggered\";\r\n break;\r\n case \"email1\":\r\n url = `/api/tracking/email?email=${params.email}&goalId=${params.goal}`;\r\n break;\r\n case \"email2\":\r\n url = \"/api/tracking/email?goalId=\" + params.goal;\r\n break;\r\n default:\r\n return false;\r\n }\r\n\r\n fetch(url, {\r\n method: \"GET\",\r\n credentials: \"same-origin\",\r\n })\r\n .then((response) => {\r\n return;\r\n })\r\n .catch((error) => {\r\n console.error(\"SC Tracking Error: \", error);\r\n });\r\n}\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { instanceOf, number, string } from \"prop-types\";\r\n\r\nimport Modal from \"../../components/Modal/Modal.jsx\";\r\n\r\nconst propTypes = {\r\n content: instanceOf(HTMLCollection).isRequired, // HTML collection of Elements https://developer.mozilla.org/en-US/docs/Web/API/Element\r\n scrollDepth: number,\r\n lang: string,\r\n dir: string,\r\n};\r\n\r\nconst EmailSignupModalApp = (props) => {\r\n const { content, scrollDepth, lang, dir } = props;\r\n\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [modalListening, setModalListening] = useState(true);\r\n\r\n const contentRef = useRef();\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n contentRef.current.innerHTML = \"\";\r\n [...content].forEach((c) => {\r\n contentRef.current.append(c);\r\n });\r\n }, 0);\r\n }, [content]);\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n const scrollTriggerPoint =\r\n scrollDepth > 0\r\n ? (document.body.clientHeight - window.innerHeight / 2) *\r\n (scrollDepth / 100)\r\n : document.body.clientHeight - window.innerHeight / 2;\r\n\r\n if (window.scrollY > scrollTriggerPoint) {\r\n setModalOpen(true);\r\n }\r\n };\r\n\r\n if (modalListening) {\r\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\r\n }\r\n\r\n return () => window.removeEventListener(\"scroll\", handleScroll);\r\n }, [modalListening, scrollDepth]);\r\n\r\n const handleClose = (e) => {\r\n e.preventDefault();\r\n setModalOpen(false);\r\n setModalListening(false);\r\n window.sessionStorage.setItem(\"hideInterstitial\", true);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nEmailSignupModalApp.propTypes = propTypes;\r\nexport default EmailSignupModalApp;\r\n","import initEmailSignup from \"../initEmailSignup.js\";\r\nimport initEmailSticky from \"../initEmailSticky.js\";\r\nimport renderEmailSignupModal from \"../renderEmailSignupModal.jsx\";\r\nimport scTracking from \"../../../components/SCTracking/sc-tracking.js\";\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n initEmailSignup();\r\n initEmailSticky();\r\n renderEmailSignupModal();\r\n\r\n // SC tracking for email signup, Stage 1\r\n document.querySelectorAll(\".js-sc-email-signup1\").forEach((elm) => {\r\n elm.addEventListener(\"submit\", (e) => {\r\n scTracking(\"email1\", {\r\n email: e.target.querySelector(\".js-email-signup-input\").value,\r\n goal: e.target.getAttribute(\"data-goal\"),\r\n });\r\n });\r\n });\r\n\r\n // SC tracking for email signup, Stage 2\r\n document.querySelectorAll(\".js-sc-email-signup2\").forEach((elm) => {\r\n elm.addEventListener(\"click\", (e) => {\r\n scTracking(\"email2\", {\r\n goal: e.target\r\n .closest(\".email-signup__button-row\")\r\n .getAttribute(\"data-goal\"),\r\n });\r\n });\r\n });\r\n});\r\n","import {\r\n setDefaults,\r\n matchfields,\r\n validationListeners,\r\n handleSubmit,\r\n validFields,\r\n} from \"../../common/ThreadValidator.js\";\r\n\r\nexport default () => {\r\n document.querySelectorAll(\".js-email-signup__form\").forEach((el) => {\r\n const fieldItem = el.querySelector(\".js-form-required\");\r\n const input = el.querySelector(\"input\");\r\n const link = el.querySelector(\".js-email-signup-link\");\r\n const message = el.dataset.message || \"\";\r\n const subject = el.dataset.subject || \"\";\r\n\r\n validationListeners(fieldItem, el);\r\n\r\n input.addEventListener(\"keyup\", (e) => {\r\n link.href = `mailto:${input.value}?subject=${subject}&body=${message}`;\r\n\r\n if (e.key === \"Enter\") {\r\n link.click();\r\n }\r\n });\r\n\r\n link.addEventListener(\"click\", (e) => {\r\n if (!validFields([fieldItem])) {\r\n e.preventDefault();\r\n input.focus();\r\n }\r\n });\r\n });\r\n};\r\n","export default () => {\r\n document.querySelectorAll(\".js-email-sticky\").forEach((el) => {\r\n const buttonEl = el.querySelector(\".js-email-sticky-toggle\");\r\n let expanded = false;\r\n buttonEl.setAttribute(\"aria-expanded\", expanded);\r\n\r\n const toggleEmailSticky = (el) => {\r\n expanded = !expanded;\r\n // once the component is interacted with, it should stay visible\r\n el.classList.add(\"is-visible\");\r\n el.classList.toggle(\"is-open\");\r\n buttonEl.setAttribute(\"aria-expanded\", expanded);\r\n };\r\n\r\n buttonEl.addEventListener(\"click\", () => toggleEmailSticky(el));\r\n\r\n // https://stackoverflow.com/questions/2387136/cross-browser-method-to-determine-vertical-scroll-percentage-in-javascript\r\n const docEl = document.documentElement;\r\n const docBod = document.body;\r\n const st = \"scrollTop\";\r\n const sh = \"scrollHeight\";\r\n\r\n const scrollHandler = () => {\r\n let scrollPercent =\r\n ((docEl[st] || docBod[st]) /\r\n ((docEl[sh] || docBod[sh]) - docEl.clientHeight)) *\r\n 100;\r\n if (scrollPercent >= (el.dataset.scrollDepth ?? 50)) {\r\n el.classList.add(\"is-visible\");\r\n document.removeEventListener(\"scroll\", scrollHandler);\r\n }\r\n };\r\n\r\n document.addEventListener(\"scroll\", scrollHandler);\r\n });\r\n};\r\n","import React from \"react\";\r\nimport ReactDom from \"react-dom\";\r\n\r\nimport EmailSignupModalApp from \"./EmailSignupModalApp.jsx\";\r\n\r\nexport default function renderEmailSignupModal() {\r\n document.querySelectorAll(\".js-email-signup-modal\").forEach((el) => {\r\n if (window.sessionStorage.getItem(\"hideInterstitial\")) {\r\n return;\r\n }\r\n\r\n const content = el.children || [];\r\n const lang = el.getAttribute(\"lang\") || \"\";\r\n const dir = el.getAttribute(\"dir\");\r\n const scrollDepth = parseInt(el.dataset.scrollDepth, 10) || 50;\r\n\r\n const mount = document.createElement(\"div\");\r\n document.querySelector(\"body\").append(mount);\r\n\r\n ReactDom.render(\r\n ,\r\n mount,\r\n );\r\n });\r\n}\r\n"]}