{"version":3,"file":"blocks/recipe-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-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-carousel');\n\n\n/**\n * Update markup with new data\n *\n * Example data:\n * {\n * title: 'Title Here',\n * subtitle: 'Subtitle Here',\n * items: [\n * {\n * \"id\": \"1\",\n * \"title\":\"Grilled Venison Burger with Cherry Salsa\",\n * \"url\":\"https:\\/\\/www.kingsford.com\\/recipes\\/grilled-venison-burger-with-cherry-salsa\\/\",\n * \"post_type\":\"wprm_recipe\",\n * \"image_url\":\"https:\\/\\/www.kingsford.com\\/wp-content\\/uploads\\/2018\\/10\\/180619_VenisonBurger_271_800x800-672x372.jpg\",\n * \"bvId\":\"KF_RECIPE_2826\",\n * \"rating\":null,\n * \"icon_name\":\"star\"\n * },\n * {\n * \"id\": \"2\",\n * \"title\":\"Smoky Rattlesnake Chili\",\n * \"url\":\"https:\\/\\/www.kingsford.com\\/recipes\\/smoky-rattlesnake-chili\\/\",\n * \"post_type\":\"wprm_recipe\",\n * \"image_url\":\"https:\\/\\/www.kingsford.com\\/wp-content\\/uploads\\/2019\\/05\\/rattlesnake-chili_v2-672x372.jpg\",\n * \"bvId\":\"KF_RECIPE_5803\",\n * \"rating\":null,\n * \"icon_name\":\"star\"\n * },\n * {\n * \"id\": \"3\",\n * \"title\":\"Juicy Lucy Burgers\",\n * \"url\":\"https:\\/\\/www.kingsford.com\\/recipes\\/juicy-lucy-burgers\\/\",\n * \"post_type\":\"wprm_recipe\",\n * \"image_url\":\"https:\\/\\/www.kingsford.com\\/wp-content\\/uploads\\/2021\\/03\\/RL_JuicyLucyBurgerV.1-672x372.jpg\",\n * \"bvId\":\"juicy-lucy-burgers\",\n * \"rating\":null,\n * \"icon_name\":\"steak\"\n * },\n * {\n * \"id\": \"4\",\n * \"title\":\"Huevos Rancheros\",\n * \"url\":\"https:\\/\\/www.kingsford.com\\/recipes\\/series\\/30-min-meals\\/huevos-rancheros\\/\",\n * \"post_type\":\"wprm_recipe\",\n * \"image_url\":\"https:\\/\\/www.kingsford.com\\/wp-content\\/uploads\\/2021\\/08\\/Huevos-Rancheros-500x372.jpg\",\n * \"bvId\":\"huevos-rancheros\",\n * \"rating\":null,\n * \"icon_name\":\"star\"\n * },\n * {\n * \"id\": \"5\",\n * \"title\":\"Stuffin’ Waffles\",\n * \"url\":\"https:\\/\\/www.kingsford.com\\/recipes\\/stuffin-waffles\\/\",\n * \"post_type\":\"wprm_recipe\",\n * \"image_url\":\"https:\\/\\/www.kingsford.com\\/wp-content\\/uploads\\/2020\\/10\\/StuffingWaffles-800x800-1-672x372.jpg\",\n * \"bvId\":\"KF_RECIPE_8200\",\n * \"rating\":1.5,\n * \"icon_name\":\"star\"\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 replaceRecipeCarouselData(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-carousel__recipe-card .card__inner h3').innerHTML,\n cta_text: lyticsSlider.querySelector('.b-recipe-carousel__recipe-card .card__inner a span').innerHTML,\n cta_link: lyticsSlider.querySelector('.b-recipe-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 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 recipeCarousel();\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 Recipe\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', 'lytics-disable');\n\n slide.innerHTML = `\n `;\n\n return slide;\n};\n\n/**\n * add rating element for reviewed items\n *\n * @param rating\n * @returns {string}\n */\nconst createRatingElement = (rating = 0) => {\n let html = '';\n if (rating > 0 ) {\n const selectedItem = 'fas fa-star';\n html += `${parseFloat(rating).toFixed(1)}`;\n }\n return html;\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: 4,\n spaceBetween: 12,\n },\n 1024: {\n slidesPerView: 4,\n spaceBetween: 16,\n scrollbar: {\n dragSize: 300,\n },\n },\n },\n};\n\n// create swiper & setup replacement fn\nfunction recipeCarousel() {\n const swiper = new Swiper(selector.querySelector('.swiper'), swiperOptions);\n window.replaceRecipeCarouselData = replaceRecipeCarouselData.bind({ swiper });\n}\n\nrecipeCarousel();\n\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 = 264;","__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\t264: 0,\n\t390: 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__(6060)))\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","buttonFilledSvg","buttonOutlineSvg","window","closeModal","id","MicroModal","close","bind","selector","document","querySelector","replaceRecipeCarouselData","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","recipeCarousel","e","console","warn","error","value","element","concat","slide","createElement","classList","add","url","icon_name","image_url","createRatingElement","rating","arguments","undefined","html","parseFloat","toFixed","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","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","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","__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":""}