{"version":3,"file":"blocks/recipe-collection-carousel.js","mappings":"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","sources":["webpack://electro/webpack/runtime/chunk loaded","webpack://electro/./js/src/controllers/optimize.js","webpack://electro/./js/src/app.js","webpack://electro/./js/src/blocks/recipe-collection-carousel.js","webpack://electro/./js/src/controllers/SMS.js","webpack://electro/./js/src/pages/page-home.js","webpack://electro/external var \"jQuery\"","webpack://electro/webpack/bootstrap","webpack://electro/webpack/runtime/compat get default export","webpack://electro/webpack/runtime/define property getters","webpack://electro/webpack/runtime/global","webpack://electro/webpack/runtime/hasOwnProperty shorthand","webpack://electro/webpack/runtime/make namespace object","webpack://electro/webpack/runtime/runtimeId","webpack://electro/webpack/runtime/publicPath","webpack://electro/webpack/runtime/jsonp chunk loading","webpack://electro/webpack/runtime/nonce","webpack://electro/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { parametersWatcher } from './parametersWatcher';\nimport GatedContent from \"./gatedContent\";\nimport {SMS} from \"./SMS\";\n\n// Example data:\n// {\n// image: '/wp-content/themes/electro/img/weather-bug/weather-sun.svg',\n// text: 'Today’s weather report: BBQ ahead! Try our recipe for',\n// cta: {\n// text: 'ribs',\n// link: '/ribs/',\n// },\n// disclaimer: {\n// text1: \"*weather forecast provided by\",\n// text2: \"Openweathermap.org\",\n// url: \"https://openweathermap.org/\"\n// }\n// }\n\n/**\n * ALl Google Optimize A/B Testing related functions.\n *\n * These functions are supposed to provide control over altering content on the website.\n * They are called by the Google Optimize A/B Testing platform.\n *\n */\nexport default class Optimize {\n constructor() {\n window.showHeaderBanner = this.showHeaderBanner;\n window.hideHeaderBanner = this.hideHeaderBanner;\n window.showRecipesClassicsCard = this.showRecipesClassicsCard;\n window.hideRecipesClassicsCard = this.hideRecipesClassicsCard;\n window.showRecommendationSliderCard = this.showRecommendationSliderCard;\n window.hideRecommendationSliderCard = this.hideRecommendationSliderCard;\n window.showProductsSliderCard = this.showProductsSliderCard;\n window.hideProductsSliderCard = this.hideProductsSliderCard;\n window.showRecipesSliderCard = this.showRecipesSliderCard;\n window.hideRecipesSliderCard = this.hideRecipesSliderCard;\n window.showCollectionsSliderCard = this.showCollectionsSliderCard;\n window.hideCollectionsSliderCard = this.hideCollectionsSliderCard;\n window.renderSignUpModalA = this.renderSignUpModalA;\n window.renderSignUpModalB = this.renderSignUpModalB;\n window.updateHomePageHeroCopy = this.updateHomePageHeroCopy;\n window.updateGatedContentStatus = this.updateGatedContentStatus;\n window.showWeatherNotification = this.showWeatherNotification;\n window.hideWeatherNotification = this.hideWeatherNotification;\n window.showSMSModalHomePage = this.showSMSModalHomePage;\n window.showSMSModalRDP = this.showSMSModalRDP;\n\n // Run the parameters watcher, for testing through URL parameters.\n parametersWatcher();\n }\n\n /**\n * Show the pencil banner, with a copy change.\n */\n showHeaderBanner(copy = null) {\n const pencilBanner = document.querySelector('.header-banner--signup');\n if (!pencilBanner) {\n return;\n }\n pencilBanner.style.display = 'block';\n if (copy) {\n const copyElement = pencilBanner.querySelector('.header-banner__content .banner__inner p');\n if (!copyElement) {\n return;\n }\n copyElement.innerHTML = copy;\n }\n }\n\n /**\n * Hides the pencil banner when called.\n */\n hideHeaderBanner() {\n const pencilBanner = document.querySelector('.header-banner--signup');\n if (!pencilBanner) {\n return;\n }\n pencilBanner.style.display = 'none';\n }\n\n /**\n * Show the recipes' classics card.\n */\n showRecipesClassicsCard() {\n // Hide the first recipe with class : kingsford-classics-list__recipe-card\n const firstRecipe = document.querySelector('.kingsford-classics-list__recipe-card.non-lytics');\n if (!firstRecipe) {\n return;\n }\n firstRecipe.style.display = 'none';\n\n // Show the Lytics card\n const signupCta = document.querySelector('.recipe-card--signup-cta');\n if (!signupCta) {\n return;\n }\n signupCta.style.display = 'flex';\n }\n\n /**\n * Hides the recipes' classics card.\n */\n hideRecipesClassicsCard() {\n // Show the all recipe cards.\n const allRecipesCards = document.querySelectorAll('.kingsford-classics-list__recipe-card.non-lytics');\n if (!allRecipesCards) {\n return;\n }\n allRecipesCards.forEach((recipe) => {\n recipe.style.display = 'flex';\n });\n\n // Hide the Lytics card.\n const signupCta = document.querySelector('.recipe-card--signup-cta');\n if (!signupCta) {\n return;\n }\n signupCta.style.display = 'none';\n }\n\n /**\n * Show the recommendation's slider's lytics card.\n */\n showRecommendationSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let recommendationSliders = document.querySelectorAll('[id^=\"recommendation-slider--\"]');\n if (!recommendationSliders) {\n return false;\n }\n recommendationSliders = Array.from(recommendationSliders);\n if (recommendationSliders.length < 1) {\n return false;\n }\n\n // Show all the slides(including the duplicate ones).\n recommendationSliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.remove('lytics-disable');\n });\n });\n }\n\n /**\n * Hides the recommendation's slider's lytics card.\n */\n hideRecommendationSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let recommendationSliders = document.querySelectorAll('[id^=\"recommendation-slider--\"]');\n if (!recommendationSliders) {\n return false;\n }\n recommendationSliders = Array.from(recommendationSliders);\n if (recommendationSliders.length < 1) {\n return false;\n }\n\n // Hide all the slides(including the duplicate ones).\n recommendationSliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.add('lytics-disable');\n });\n });\n }\n\n /**\n * Show the Products slider's lytics card.\n */\n showProductsSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"product-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Show all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.remove('lytics-disable');\n });\n });\n }\n\n /**\n * Hides the Products slider's lytics card.\n */\n hideProductsSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"product-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Hide all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.add('lytics-disable');\n });\n });\n }\n\n /**\n * Show the Recipes slider's lytics card.\n */\n showRecipesSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"recipe-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Show all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.remove('lytics-disable');\n });\n });\n }\n\n /**\n * Hides the Recipes slider's lytics card.\n */\n hideRecipesSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"recipe-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Hide all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.add('lytics-disable');\n });\n });\n }\n\n /**\n * Show the Collections slider's lytics card.\n */\n showCollectionsSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"recipe-collection-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Show all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.remove('lytics-disable');\n });\n });\n }\n\n /**\n * Hides the Collections slider's lytics card.\n */\n hideCollectionsSliderCard() {\n // get all sections with id prefix \"recommendation-slider--\"\n let sliders = document.querySelectorAll('[id^=\"recipe-collection-carousel--\"]');\n if (!sliders) {\n return false;\n }\n sliders = Array.from(sliders);\n if (sliders.length < 1) {\n return false;\n }\n\n // Hide all the slides(including the duplicate ones).\n sliders.forEach((slider) => {\n Array.from(slider.querySelectorAll('.slide--lytics-card')).forEach((slide) => {\n slide.classList.add('lytics-disable');\n });\n });\n }\n\n renderSignUpModalA() {\n if (document.querySelectorAll('form.register').length > 1 && document.querySelector('.signup-form-variant-b')) {\n document.querySelector('.signup-form-variant-b').remove();\n }\n }\n\n renderSignUpModalB() {\n if (document.querySelectorAll('form.register').length > 1 && document.querySelector('.signup-form-variant-a')) {\n document.querySelector('.signup-form-variant-a').remove();\n }\n }\n\n updateHomePageHeroCopy(lyticsSegment) {\n const segmentationMap = JSON.parse(document.querySelector('input.lytics-segmentation-hero').value);\n if (lyticsSegment && segmentationMap) {\n const segment = segmentationMap.find((o) => o.lytics_segment === lyticsSegment);\n const hero = document.querySelector('.b-split-hero');\n hero.querySelector('.b-split-hero__title').innerText = segment.values.title;\n hero.querySelector('.b-split-hero__subtitle').innerText = segment.values.subtitle;\n if (hero.querySelectorAll('.b-split-hero__cta-wrapper__cta').length > 1) {\n $('.b-split-hero__cta-wrapper__cta').each((i, e) => {\n if (i > 0) {\n e.remove();\n }\n });\n }\n hero.querySelector('.b-split-hero__cta-wrapper__cta .e-button__copy').innerText = segment.values.cta_text;\n hero.querySelector('.b-split-hero__cta-wrapper__cta .e-button__copy').classList.remove('js-user-account');\n hero.querySelector('.b-split-hero__cta-wrapper__cta').href =\n `/?registerModal=1&lytics_campaign=${ segment.lytics_crm}`;\n }\n }\n\n updateGatedContentStatus() {\n new GatedContent().show();\n }\n\n /**\n * Shows the weather notification, only if html is passed to it.\n *\n * Example: `Grill-friendly weather alert! It’s the perfect week to make brisket`\n * @param html\n * @returns {boolean}\n */\n showWeatherNotification(html = null) {\n if (Electro.DEBUG) {\n console.info('WeatherNotification.showHeaderBanner()');\n }\n\n const weatherBanner = document.querySelector('.js-weather-banner');\n if (\n weatherBanner &&\n html.image &&\n html.text &&\n html.cta.link &&\n html.cta.text &&\n html.disclaimer.text1 &&\n html.disclaimer.text2 &&\n html.disclaimer.url\n ) {\n console.info('true');\n // Update the html\n const htmlBody = weatherBanner.querySelector('.b-weather-notification__content');\n\n const notification = `\n \n
\n ${html.text} ${html.cta.text}\n ${html.disclaimer.text1} ${html.disclaimer.text2}\n
\n \n `;\n htmlBody.innerHTML = notification;\n\n weatherBanner.classList.add('is-active');\n weatherBanner.classList.remove('is-inactive');\n\n const closeBtn = weatherBanner.querySelector('.js-close-weather-banner');\n closeBtn.addEventListener('click', () => {\n weatherBanner.classList.remove('is-active');\n weatherBanner.classList.add('is-inactive');\n });\n }\n\n return true;\n }\n\n hideWeatherNotification() {\n if (Electro.DEBUG) {\n console.info('WeatherNotification.hideWeatherNotification()');\n }\n\n const weatherBanner = document.querySelector('.js-weather-banner');\n if (weatherBanner) {\n weatherBanner.classList.remove('is-active');\n weatherBanner.classList.add('is-inactive');\n }\n }\n\n /**\n * Show the SMS popup on homepage.\n */\n showSMSModalHomePage() {\n console.log('showSMSModalHomePage');\n SMS.triggerModal();\n }\n\n /**\n * Show the SMS popup on recipe page.\n */\n showSMSModalRDP() {\n SMS.triggerModal();\n }\n}\n","import 'parsleyjs';\nimport MicroModal from 'micromodal';\nimport 'electro-privacy';\nimport LazyLoad from 'vanilla-lazyload';\nimport pym from 'pym.js';\n\n// global js components\nimport KingsfordHeader from './components/kingsford-header';\nimport KingsfordFooter from './components/kingsford-footer';\nimport RegisterLogin from './components/register-login';\nimport Social from './components/social-widget';\nimport FAQPanel from './components/faq-panel';\nimport Scroll from './controllers/scroll';\nimport HeaderMenuItems from './controllers/headerMenuItems';\nimport ImageOverVideo from './components/image-over-video';\n\n// pages\nimport HomePage from './pages/page-home';\n\n// \"Google Optimize\" Content Controllers.\nimport Optimize from './controllers/optimize';\nimport { passSource } from './controllers/parametersWatcher';\n\nimport GatedContent from './controllers/gatedContent';\n\n// Sentry\nimport * as Sentry from \"@sentry/browser\";\n\n\nSentry.init({\n dsn: Electro.Sentry.dsn,\n integrations: [\n Sentry.browserTracingIntegration(),\n Sentry.replayIntegration(),\n ],\n environment: Electro.Sentry.environment,\n release: Electro.themeVersion,\n sampleRate: Electro.Sentry.sampleRate,\n maxBreadcrumbs: Electro.Sentry.maxBreadcrumbs,\n attachStacktrace: Electro.Sentry.attachStacktrace,\n tracesSampleRate: Electro.Sentry.tracesSampleRate,\n tracePropagationTargets: [WEBROOT],\n replaysSessionSampleRate: Electro.Sentry.replaysSessionSampleRate,\n replaysOnErrorSampleRate: Electro.Sentry.replaysOnErrorSampleRate,\n});\n\n\n// Constants\nexport const buttonFilledSvg = `\n\n \n \n \n \n`;\nexport const buttonOutlineSvg = `\n\n \n \n \n`;\nclass App {\n constructor() {\n // Load redirects before anything else.\n this.redirects();\n\n window.addEventListener('DOMContentLoaded', () => {\n this.init();\n });\n }\n\n /**\n * Add redirects here that can not be handled by PHP\n */\n redirects() {\n if (window.location.search === '?utm_source=package&utm_medium=qrcode&utm_campaign=high-heat-briquets' && window.location.pathname === '/') {\n window.location.href = '/recipes/grilled-skirt-steak/?utm_source=package&utm_medium=qrcode&utm_campaign=high-heat-briquets';\n }\n if (window.location.search === '?utm_source=package&utm_medium=qrcode&utm_campaign=low-slow-briquets' && window.location.pathname === '/') {\n window.location.href = '/recipes/smoked-pork-butt/?utm_source=package&utm_medium=qrcode&utm_campaign=low-slow-briquets';\n }\n }\n\n loadModal() {\n /**\n * on load setup micromodal login/register popup\n * show based on url params\n */\n if (!CLWP_PC_GLOBAL.isLoggedIn) {\n try {\n MicroModal.init({\n awaitCloseAnimation: true,\n closeTrigger: 'data-custom-close',\n onShow: (modal) => {\n const callbackHandler = modal.getAttribute('data-open-callback');\n if (!callbackHandler) return;\n\n const callbackHandlerArr = callbackHandler.split('.');\n let callback = null;\n\n if (callbackHandlerArr.length > 1) {\n // Handle class.function format (e.g., \"MyClass.myMethod\")\n const classHandler = callbackHandlerArr[0];\n const methodName = callbackHandlerArr[1];\n callback = window.Electro[classHandler]?.[methodName];\n } else {\n // Handle direct function format (e.g., \"myFunction\")\n callback = window.Electro[callbackHandler];\n }\n\n if (callback && typeof callback === 'function') {\n callback(modal);\n }\n },\n onClose: (modal) => {\n if (`#${modal.id} iframe`) {\n const video = $(`#${modal.id} iframe`).attr('src');\n $(`#${modal.id} iframe`).attr('src', '');\n $(`#${modal.id} iframe`).attr('src', video);\n }\n },\n });\n\n const params = new URLSearchParams(window.location.search);\n // check if lytics_campaign is present, to pass the source.\n if (params.has('lytics_campaign')) {\n passSource(params.get('lytics_campaign'), document.querySelectorAll('.pc-consumer-source input'));\n }\n\n if (params.has('loginModal')) {\n MicroModal.show('modal-login', {\n closeTrigger: 'data-custom-close',\n });\n } else if (params.has('registerModal')) {\n MicroModal.show('modal-signup', {\n closeTrigger: 'data-custom-close',\n });\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('micromodal error:', e);\n }\n\n $('#signup-form.multi-page').on('click', '.js-register-form-continue', (e) => {\n e.preventDefault();\n $('.modal-signup-page.page-1').hide();\n $('.modal-signup-page.page-2').fadeIn(200);\n $('.modal__back').fadeIn(200);\n });\n $('#modal-signup').on('click', '.modal__back', (e) => {\n e.preventDefault();\n $('.modal__back').hide();\n $('.modal-signup-page.page-2').hide();\n $('.modal-signup-page.page-1').fadeIn(200);\n });\n $('#signup-form.multi-page .page-1 input').on('change, keyup', (e) => {\n if ($('#signup-form').parsley().isValid({group: 'page-1'})) {\n $('.js-register-form-continue').removeClass('e-button--disabled');\n } else {\n $('.js-register-form-continue').add('e-button--disabled');\n }\n });\n\n // handle login/register when account page or cart\n let loginRedirect = null;\n $(document).on('click', '.js-user-account', (e) => {\n e.preventDefault();\n\n window.loginRedirect = e.currentTarget.getAttribute('href');\n if (\n window.location.pathname !== '/my-account/login' &&\n window.location.pathname !== '/my-account/register'\n ) {\n if (Electro.DEBUG) {\n console.info('Open Modal');\n }\n\n // allow user to login/register\n MicroModal.show('modal-login', {\n closeTrigger: 'data-custom-close',\n });\n } else {\n const activeForm = document.querySelector('.tab-form.active');\n if (activeForm) {\n activeForm.querySelector('input:first-of-type').focus();\n }\n if (document.querySelector('.js-header-drawer').classList.contains('is-active')) {\n document.querySelector('.js-header-drawer').classList.remove('is-active');\n document.querySelector('.js-header-overlay').classList.remove('is-active');\n }\n }\n\n return false;\n });\n\n $(document).on('click', '#BVRRContainer .bv-submission-button', (e) => {\n e.preventDefault();\n e.stopPropagation();\n loginRedirect = `${window.location.origin + window.location.pathname}?reviewModal=1`;\n window.location = `/my-account/login?redirect_to=${loginRedirect}`;\n });\n } else if (window.KFD_Params.has('reviewModal')) {\n // show review modal if logged in and reviewModal query var present\n let refreshIntervalId = null;\n refreshIntervalId = setInterval(() => {\n if (typeof $BV !== 'undefined') {\n clearInterval(refreshIntervalId);\n setTimeout(() => {\n $('#BVRRContainer .bv-submission-button').trigger('click');\n }, 500);\n }\n }, 500);\n }\n }\n\n loginRedirect() {\n /**\n * Redirect users after successful login, to the redirect_to destination, or the current page\n */\n $(document).on('cloroxPreferenceCenterLogin cloroxPreferenceCenterRegister', (e) => {\n const loginRedirect = window.KFD_Params.has('redirect_to') ? window.KFD_Params.get('redirect_to') : null;\n const bveventId = window.KFD_Params.has('bveventid') ? window.KFD_Params.get('bveventid') : null;\n if (loginRedirect) {\n document.location = loginRedirect;\n } else if (window.loginRedirect) {\n document.location = window.loginRedirect;\n } else if (bveventId && document.referrer) {\n // Redirect to the referrer page if the user is coming from a review modal\n document.location = `${document.referrer}?bveventid=${bveventId}`;\n } else {\n document.location.reload();\n }\n });\n\n }\n\n gatedRecipes() {\n const {pathname} = window.location;\n const pathContains = (p) => window.location.pathname.indexOf(p) === 0;\n\n if (pathContains('/recipes/') && pathname !== '/recipes/') {\n const gatedContent = new GatedContent();\n gatedContent.init();\n }\n }\n\n setupShowPasswords() {\n const showPasswords = document.body.querySelectorAll('.show-password');\n\n if (showPasswords.length) {\n showPasswords.forEach((showPassword) => {\n showPassword.addEventListener('click', (e) => {\n e.preventDefault();\n\n const pwField = e.currentTarget.parentNode.querySelector('input');\n e.currentTarget.classList.toggle('is-active');\n\n if (pwField.type === 'password') {\n pwField.type = 'text';\n } else {\n pwField.type = 'password';\n }\n });\n });\n }\n }\n\n responsiveIframes() {\n const {pathname} = window.location;\n const pathContains = (p) => window.location.pathname.indexOf(p) === 0;\n\n if (pathContains('/fireitup/')) {\n const url = document.getElementById('hw-iframe').getAttribute('data-url');\n const pymParent = new pym.Parent('hw-iframe', url, {});\n }\n }\n\n init() {\n window.KingsfordHeader = new KingsfordHeader();\n window.KingsfordFooter = new KingsfordFooter();\n window.KFD_Social = new Social();\n window.KFD_Params = new URLSearchParams(window.location.search);\n window.KFD_Scroll = new Scroll();\n new Optimize();\n this.loadModal();\n this.loginRedirect();\n this.responsiveIframes();\n new HeaderMenuItems();\n new LazyLoad();\n new HomePage();\n\n if ($('.module-video').length) {\n new ImageOverVideo();\n }\n\n if (document.querySelector('.b-faqs')) {\n const faqPanel = new FAQPanel();\n faqPanel.init();\n }\n\n const pathContains = (p) => window.location.pathname.indexOf(p) === 0;\n if (pathContains('/my-account/')) {\n window.RegisterLogin = new RegisterLogin();\n }\n this.gatedRecipes();\n\n document.querySelectorAll('.read-more-container').forEach((el) => {\n const content = el.querySelector('.read-more-content');\n const toggle = el.querySelector('.read-more-toggle');\n\n if (el.offsetHeight > 150) {\n content.classList.add('mobile-collapsed');\n } else {\n toggle.remove();\n return;\n }\n\n toggle.addEventListener('click', (event) => {\n event.preventDefault();\n if (!toggle.classList.contains('open')) {\n content.classList.remove('mobile-collapsed');\n toggle.classList.add('open');\n } else {\n content.classList.add('mobile-collapsed');\n toggle.classList.remove('open');\n }\n });\n });\n\n this.setupShowPasswords();\n\n document.getElementById('do-not-share').addEventListener('click', (e) => {\n if(typeof OneTrust !== 'undefined') {\n OneTrust.ToggleInfoDisplay();\n }\n });\n\n // Share functions\n document.querySelectorAll('.facebook-share').forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n window.KFD_Social.newWindow('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(document.URL) + '"e=' + encodeURIComponent(document.URL));\n return false;\n });\n });\n document.querySelectorAll('.twitter-share').forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n window.KFD_Social.newWindow('https://twitter.com/intent/tweet?text=' + encodeURIComponent(document.title) + ':%20' + encodeURIComponent(document.URL));\n return false;\n });\n });\n document.querySelectorAll('.pinterest-share').forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n const thumbnail = el.getAttribute('data-thumbnail');\n window.KFD_Social.newWindow('http://pinterest.com/pin/create/button/?url=' + encodeURIComponent(document.URL) + '&media=' + thumbnail + '&description=' + encodeURIComponent(document.title) );\n return false;\n });\n });\n\n // registration form submit handler to google recaptcha v3 suport\n // recaptcha adds g-recaptcha-response to form data, but we must submit form on callback\n window.onPCRegisterSubmit = (token) => {\n $('form.register.ajax-form').submit();\n }\n }\n}\n\nfunction closeModal(id) {\n MicroModal.close(id);\n}\n\nwindow.closeModal = closeModal.bind();\n\nexport default App;\n","import Swiper from 'swiper/bundle';\nimport {buttonFilledSvg, buttonOutlineSvg} from \"../app\";\n\nconst selector = document.querySelector('.b-recipe-collection-carousel');\n\n\n/**\n * Update markup with new data\n *\n * Example data:\n * {\n * title: 'New Title',\n * subtitle: 'New Subtitle',\n * eyebrow: 'new EyeBrow',\n * items: [\n * {\n * \"id\": 2617,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/30-min-meals/\",\n * \"name\": \"30 Min Meals\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/master-your-flavor-tile.jpg\"\n * },\n * {\n * \"id\": 2621,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/big-game-eats/\",\n * \"name\": \"Big Game Eats\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/big-game-eats-recipe-series.jpg\"\n * },\n * {\n * \"id\": 3329,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/tailgating/\",\n * \"name\": \"Easy Tailgate. Easy Win.\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/08/Char-Dogs_01b-2.jpg\"\n * },\n * {\n * \"id\": 2622,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/field-to-flame/\",\n * \"name\": \"Field to Flame\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/field-to-flames-recipe-series.jpg\"\n * },\n * {\n * \"id\": 2619,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/global-grill/\",\n * \"name\": \"Global Grill\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/global-grill-recipe-series.jpg\"\n * },\n * {\n * \"id\": 3081,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/grilling-with-ranch/\",\n * \"name\": \"Grilling with Ranch\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/07/Title_RanchRecipes2.jpg\"\n * },\n * {\n * \"id\": 3082,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/signature-flavors-series/\",\n * \"name\": \"Signature Flavors Series\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/06/Title_SigFlavorsRecipes0.jpg\"\n * },\n * {\n * \"id\": 2620,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/smoke-sessions/\",\n * \"name\": \"Smoke Sessions\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/Smoke-sessions-video-cover.jpg\"\n * },\n * {\n * \"id\": 2623,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/perfect-beef/\",\n * \"name\": \"The Perfect Beef Collection\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/perfect-steak-hero.png\"\n * },\n * {\n * \"id\": 2625,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/pork/\",\n * \"name\": \"The Perfect Grilled Pork Collection\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/perfect-pork-hero.jpg\"\n * },\n * {\n * \"id\": 2624,\n * \"link\": \"https://recipes2.kingsford.com/recipes/collections/perfect-poultry/\",\n * \"name\": \"The Perfect Grilled Poultry Collection\",\n * \"image\": \"https://recipes2.kingsford.com/wp-content/uploads/2022/01/perfect-Chicken-hero.jpeg\"\n * }\n * ],\n * cta_text: 'CTA Text Here',\n * cta_link: 'https://google.com/',\n * }\n *\n * @param id element to update\n * @param data replacement data\n */\nfunction replaceRecipeCollectionCarouselData(id, data) {\n if(!id){\n console.error('No ID provided');\n return;\n }\n try {\n const { swiper } = this;\n const section = document.getElementById(id);\n\n /*\n * Map lytics slider data into swiper ready data, before removing all slides.\n */\n const lyticsSlider = section.querySelector('.slide--lytics-card');\n let lyticsData = null;\n if(lyticsSlider){\n lyticsData = {\n id: lyticsSlider.dataset.id,\n post_type: 'lytics',\n title: lyticsSlider.querySelector('.b-recipe-collection-carousel__recipe-card .card__inner h3').innerHTML,\n cta_text: lyticsSlider.querySelector('.b-recipe-collection-carousel__recipe-card .card__inner a span').innerHTML,\n cta_link: lyticsSlider.querySelector('.b-recipe-collection-carousel__recipe-card .card__inner a').href,\n };\n }\n\n /*\n * Update the main slider's section.\n */\n if(data.title && data.title !== '') {\n setTitle(section, data.title);\n }\n if (data.subtitle && data.subtitle !== '') {\n setSubtitle(section, data.subtitle);\n }\n if(data.eyebrow && data.eyebrow !== '') {\n setEyeBrow(section, data.eyebrow);\n }\n if(data.cta_link && data.cta_link !== '' && data.cta_text && data.cta_text !== '') {\n setCallToAction(section, { href: data.cta_link, label: data.cta_text });\n }\n\n /*\n * Add lyticsData to be the first slide.\n */\n if(lyticsData){\n data.items.unshift(lyticsData);\n }\n\n /*\n * Destroy the slider!\n */\n if(data.items && data.items.length > 0){\n swiper.removeAllSlides();\n data.items.forEach(item => {\n const slideTypes = {\n lytics: createLyticsSlideItem,\n };\n const slideItem = slideTypes[item.post_type] ? slideTypes[item.post_type](item) : createSlideItem(item);\n if(slideItem){\n swiper.appendSlide(slideItem);\n }\n });\n swiper.destroy();\n recipeCollectionCarousel();\n }\n } catch (e) {\n console.warn(e);\n }\n}\n\n// helper fns\nconst setTitle = (section, value) => {\n const element = section.querySelector('.text-group .text-group__headline .headline__text');\n if (element) {\n element.innerHTML = value;\n }\n};\nconst setSubtitle = (section, value) => {\n const element = section.querySelector(`.text-group .text-group__paragraph .paragraph__text`);\n if (element) {\n element.innerHTML = value;\n };\n};\nconst setEyeBrow = (section, value) => {\n const element = section.querySelector(`.text-group .text-group__eyebrow .eyebrow__text`);\n if (element) {\n element.innerHTML = value;\n }\n}\nconst setCallToAction = (section, value) => {\n const element = section.querySelector(`.e-button`);\n if (element) {\n element.href = value.href;\n element.innerHTML = `${buttonOutlineSvg}`;\n element.innerHTML += `${buttonFilledSvg}`;\n element.innerHTML += `${value.label}`;\n }\n};\n\n\n/**\n * create a single slide item for Collection\n *\n * @param item data for slide\n * @returns {*} markup for slide\n */\nconst createSlideItem = (item) => {\n const slide = document.createElement('div');\n slide.classList.add('swiper-slide');\n slide.innerHTML = `\n `;\n\n return slide;\n};\n\n/**\n * Creates a single lytics slide.\n *\n * @param item\n */\nconst createLyticsSlideItem = (item) => {\n const slide = document.createElement('div');\n slide.classList.add('swiper-slide', 'slide--lytics-card');\n\n slide.innerHTML = `\n `;\n\n return slide;\n};\n\n\nconst swiperOptions = {\n loop: false,\n slidesPerView: 1.1,\n spaceBetween: 16,\n scrollbar: {\n el: selector.querySelector('.swiper-scrollbar'),\n horizontalClass: '.swiper-kfd-scrollbar',\n draggable: true,\n dragSize: 100,\n },\n navigation: {\n nextEl: selector.querySelector('.js-carousel-next'),\n prevEl: selector.querySelector('.js-carousel-prev'),\n },\n breakpoints: {\n 620: {\n slidesPerView: 3,\n },\n 768: {\n slidesPerView: 3,\n spaceBetween: 12,\n },\n 1024: {\n slidesPerView: 3,\n spaceBetween: 16,\n scrollbar: {\n dragSize: 300,\n },\n },\n },\n};\n\n// create swiper & setup replacement fn\nfunction recipeCollectionCarousel() {\n const swiper = new Swiper(selector.querySelector('.swiper'), swiperOptions);\n window.replaceRecipeCollectionCarouselData = replaceRecipeCollectionCarouselData.bind({ swiper });\n}\n\nrecipeCollectionCarousel();\n","import MicroModal from 'micromodal';\n\nexport class SMS {\n static isUserLoggedIn() {\n return CLWP_PC_GLOBAL.isLoggedIn;\n }\n\n static isUserOptedIn() {\n return Electro.SMSOptedIn;\n }\n\n static userHasPhoneMobile() {\n return Electro.HasPhoneMobile;\n }\n\n /**\n * This triggers a modal on any page.\n *\n * This can be used on the homepage popups, and on the recipe detail page.\n *\n * This does not run conditionals on should or should not trigger the modal. The conditionals should be run before calling this method.\n */\n static triggerModal() {\n sessionStorage.setItem('seenAttentiveForm', '1');\n\n let type = 'new_user_sms_opt_in';\n if ( document.getElementById('single-recipe') ) {\n type = 'recipe_sms_opt_in';\n } else if ( SMS.isUserLoggedIn() ) {\n type = 'existing_user_sms_opt_in';\n }\n\n // Show the modal\n MicroModal.show(`modal-${type}`, {\n closeTrigger: 'data-custom-close',\n });\n }\n\n static setSMSModalTimer() {\n setTimeout(() => {\n SMS.triggerModal();\n }, 10000);\n }\n}\n","import {SMS} from \"../controllers/SMS\";\n\nexport default class HomePage {\n static instance = null;\n\n static getInstance() {\n if (HomePage.instance === null) {\n HomePage.instance = new HomePage();\n }\n return HomePage.instance;\n }\n\n init() {\n if(Electro.DEBUG) {\n console.log('HomePage.init');\n }\n if (!sessionStorage.seenAttentiveForm && !SMS.isUserOptedIn()) {\n SMS.setSMSModalTimer();\n } else {\n if(Electro.DEBUG) {\n console.log('User has already seen the form');\n }\n }\n\n // Submit new user form\n const newUserForm = document.querySelector('.new-user-form');\n if (newUserForm) {\n $(newUserForm).parsley();\n newUserForm.addEventListener('submit', async (e) => {\n e.preventDefault();\n // Disable the submit button\n newUserForm.querySelector('button[type=\"submit\"]').disabled = true;\n await this.submitNewUserForm(e);\n\n // Enable back the submit button\n newUserForm.querySelector('button[type=\"submit\"]').disabled = false;\n });\n }\n\n document.querySelectorAll('.sms-opt-in-form').forEach(form => {\n $(form).parsley();\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n this.submitOptInForm(e);\n });\n });\n }\n\n async submitNewUserForm(e) {\n const form = e.target;\n\n if (!$(form).parsley().isValid) {\n console.log('Form is not valid.');\n return;\n }\n\n const formData = new FormData(e.target);\n const formValues = {};\n\n // Iterate through the FormData entries\n for (const [name, value] of formData.entries()) {\n formValues[name] = value;\n }\n\n fetch('/wp-json/clorox-preference-center/v1/newsletter/', {\n method: 'POST',\n headers: {\n credentials: 'same-origin',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(formValues),\n })\n .then((result) => result.json())\n .then((json) => {\n if (Electro.DEBUG) {\n console.info(json);\n }\n if (json.status === 0) {\n // Success\n this.displayConfirmation(form);\n } else {\n if (Electro.DEBUG) {\n console.error('Error:', json);\n }\n form.querySelector('.error-message').textContent = json.message;\n form.querySelector('.error-message').classList.remove('hidden');\n }\n });\n\n }\n\n async submitOptInForm(e) {\n const form = e.target;\n\n if (!$(form).parsley().isValid) {\n console.log('Form is not valid.');\n return;\n }\n\n // Check the user data, to update the globals first.\n await this.checkUserData();\n\n // Send a fetch request\n const formData = new FormData(e.target);\n const formValues = {};\n\n // Iterate through the FormData entries\n for (const [name, value] of formData.entries()) {\n formValues[name] = value;\n }\n\n // Is this a recipe form?\n if (form.querySelector('input[name=\"recipe_id\"]')) {\n formValues.recipe = form.querySelector('input[name=\"recipe_id\"]').value;\n }\n\n fetch('/wp-json/electro/v1/sms/optInUser/', {\n method: 'POST',\n headers: {\n credentials: 'same-origin',\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(formValues),\n })\n .then(response => response.json())\n .then(data => {\n if (data.status === 0) {\n if (Electro.DEBUG) {\n console.log('Success:', data);\n }\n this.displayConfirmation(form);\n } else {\n if (Electro.DEBUG) {\n console.error('Error:', data);\n }\n form.querySelector('.error-message').textContent = data.message;\n form.querySelector('.error-message').classList.remove('hidden');\n }\n });\n }\n\n\n /**\n * This checks the user's SMS opt-in status, against the SMS API.\n *\n * This only runs if the optin status is false.\n */\n checkUserData() {\n // Run conditionals\n if (!SMS.isUserOptedIn()) {\n // Wait for the response, then update the globals for the user\n return new Promise((resolve, reject) => {\n const request = fetch('/wp-json/electro/v1/sms/getUserData/', {\n method: 'GET',\n headers: {\n credentials: 'same-origin',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-WP-Nonce': Electro.wp_rest_nonce,\n },\n });\n request.then(response => response.json())\n .then(data => {\n if (data.status !== 0) {\n reject(data.message);\n }\n if (Electro.DEBUG) {\n console.log('Success:', data);\n }\n // Update the globals\n Electro.SMSOptedIn = data.optedIn === 1;\n Electro.HasPhoneMobile = data.phoneMobile !== '';\n resolve(data);\n }).catch(error => {\n if (Electro.DEBUG) {\n console.error('Error:', error);\n }\n reject(error);\n });\n\n });\n }\n\n // Resolve with no data\n return Promise.resolve();\n }\n\n displayConfirmation(form) {\n if (Electro.DEBUG) {\n console.info('SmsOptIn.displayConfirmation');\n }\n const container = form.closest('.content-container');\n container.querySelector('.form-container').classList.add('hidden');\n container.querySelector('.form-container').remove();\n container.querySelector('.confirmation').classList.remove('hidden');\n }\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n // If not home page, return\n const isHomePage = document.querySelector('body').classList.contains('home');\n if(!isHomePage) return;\n\n // If the instance already exists, then return\n if(window.Electro.homePage) return;\n\n // Create the instance and initialize\n window.Electro.homePage = HomePage.getInstance();\n window.Electro.homePage.init();\n});\n\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 482;","__webpack_require__.p = \"/wp-content/themes/electro/js/build/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t390: 0,\n\t482: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkelectro\"] = self[\"webpackChunkelectro\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(2578)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Sentry","dsn","Electro","integrations","environment","release","themeVersion","sampleRate","maxBreadcrumbs","attachStacktrace","tracesSampleRate","tracePropagationTargets","WEBROOT","replaysSessionSampleRate","replaysOnErrorSampleRate","window","closeModal","id","MicroModal","close","bind","selector","document","querySelector","replaceRecipeCollectionCarouselData","data","swiper","this","section","getElementById","lyticsSlider","lyticsData","dataset","post_type","title","innerHTML","cta_text","cta_link","href","setTitle","subtitle","setSubtitle","eyebrow","setEyeBrow","setCallToAction","label","items","unshift","length","removeAllSlides","forEach","item","slideTypes","lytics","createLyticsSlideItem","slideItem","createSlideItem","appendSlide","destroy","recipeCollectionCarousel","e","console","warn","error","value","element","concat","slide","createElement","classList","add","link","image","name","swiperOptions","loop","slidesPerView","spaceBetween","scrollbar","el","horizontalClass","draggable","dragSize","navigation","nextEl","prevEl","breakpoints","Swiper","SMS","_classCallCheck","key","CLWP_PC_GLOBAL","isLoggedIn","SMSOptedIn","HasPhoneMobile","sessionStorage","setItem","type","isUserLoggedIn","show","closeTrigger","setTimeout","triggerModal","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","toPrimitive","String","_toPrimitive","HomePage","_this","DEBUG","log","seenAttentiveForm","isUserOptedIn","setSMSModalTimer","newUserForm","$","parsley","addEventListener","_ref","_callee","_context","preventDefault","disabled","submitNewUserForm","_x","querySelectorAll","form","submitOptInForm","_submitNewUserForm","_callee2","formData","formValues","_iterator","_step","_step$value","_this2","_context2","target","isValid","FormData","_createForOfIteratorHelper","entries","_slicedToArray","err","fetch","headers","credentials","Accept","body","JSON","stringify","result","json","info","status","displayConfirmation","textContent","message","remove","_x2","_submitOptInForm","_callee3","_iterator2","_step2","_step2$value","_this3","_context3","checkUserData","recipe","response","_x3","reject","wp_rest_nonce","optedIn","phoneMobile","container","closest","instance","contains","homePage","getInstance","init","module","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","definition","get","globalThis","Function","obj","prop","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}