{"version":3,"file":"treatMyUti.ec6f5a72c9624825efc2.js","mappings":"2HAAe,SAASA,EAAeC,EAAIC,GACzC,IAAIC,EAAOC,SAASC,cAAcJ,GAElC,GAAIG,SAASE,KAAKC,SAASJ,GACzB,IACED,GACF,CAAE,MAAOM,GACPC,QAAQC,IAAIF,EACd,CAEJ,C,uECPe,SAASG,IACtB,MAAMC,EAAmBR,SAASC,cAAc,uBAK9CO,EAAiBC,iBAAiB,SAAUC,KAC1C,EAAAC,EAAA,KAAiBC,MAAQ,CACvB,CACEC,KAAML,EAAiBM,QAAQD,KAC/BE,MAAwC,IAAjCP,EAAiBM,QAAQC,MAChCC,KAAMR,EAAiBM,QAAQE,QAGnC,EAAAL,EAAA,KAAiBM,uBACjB,EAAAC,EAAA,KAAgBC,qBAChBC,OAAOC,SAASC,KAAO,eAAe,GAG5C,CClBAF,OAAOX,iBAAiB,oBAAoB,MAC1C,EAAAb,EAAA,GAAe,mBAAoB2B,EAAA,IACnC,EAAA3B,EAAA,GAAe,sBAAuBW,EAAuB,G,uDCHhD,SAASgB,IACtB,MAAMC,EAAsBxB,SAASC,cAAc,oBAC7CwB,EAAiBD,EAAoBvB,cAAc,cACnDyB,EAAkBD,EAAeE,iBAAiB,8BAClDC,EAAuBJ,EAAoBvB,cAAc,oBAGzD4B,EAAe,yBACrB,IAAIC,EAyBJ,SAASC,EAAiBrB,GACxBoB,EAA+BpB,EAC/BA,EAAKsB,UAAUC,IAAIJ,EACrB,CA3BAJ,EAAehB,iBAAiB,SA2ChC,SAAmCyB,GACjC,MACMC,EADSD,EAAME,OACGC,QAhDP,mBAkDZF,IAdLT,EAAgBY,SAAS5B,IACvBA,EAAKsB,UAAUO,OAAOV,EAAa,IAgBrCE,EAAiBI,GACjBP,EAAqBI,UAAUO,OAvDN,oBAwD3B,IAnDAX,EAAqBnB,iBAAiB,SA0DtC,SAAsCyB,GACpCA,EAAMM,kBACN,SAAiB5B,MAAQ,CACvB,CACEC,KAAMiB,EAA6BhB,QAAQD,KAC3CE,MAAoD,IAA7Ce,EAA6BhB,QAAQC,MAC5CC,KAAMc,EAA6BhB,QAAQE,QAG/C,SAAiBC,uBACjB,SAAgBE,qBAChBC,OAAOC,SAASC,KAAO,eACzB,IAvDES,GADuB,SAAiBnB,MAAM6B,OAgEvCC,MAAMC,KAAKjB,GAAiBkB,MAAMlC,GAASA,EAAKI,QAAQD,QAAS,SAAiBD,MAAM,GAAGC,OAhERa,EAAgB,GAkE9G,C,gBC1Fe,SAASmB,IAItB,MAAMC,EAAY,kBAWlB,SAASC,EAAgBC,GACvB,OAAOC,KAAKC,MAAM9B,OAAO+B,cAAcC,QAAQJ,IAAQ,KACzD,CAUA,SAASK,EAAgBL,EAAKM,GAC5BlC,OAAO+B,cAAcI,QAAQP,EAAKC,KAAKO,UAAUF,GAAS,MAC5D,CAkBA,OAJKP,EAAgBD,IACnBO,EAAgBP,EAAW,IAGtB,CAILK,aAAc,CACZM,IAAKV,EACLW,IAAKL,EACLd,OAhBJ,SAA4BS,GAC1B5B,OAAO+B,cAAcQ,WAAWX,EAClC,GAoBE,SAAIpC,GACF,OAAOgD,KAAKT,aAAaM,IAAIX,IAAc,EAC7C,EAKA,SAAIlC,CAAMA,GACRgD,KAAKT,aAAaO,IAAIZ,EAAWlC,EACnC,EAKA,iBAAIiD,CAAcA,GAChBD,KAAKT,aAAaO,IArEC,0BAqEmBG,EACxC,EAKA,UAAI3C,CAAOA,GACT0C,KAAKT,aAAaO,IA7EH,mBA6EmBxC,EACpC,EAKA,mBAAAD,GACE2C,KAAKC,cAAgB,KACvB,EAEJ,C,8DC1Fe,SAASC,IAatB,MAAO,CACL3C,mBAVF,YACE,SAAiBD,OAAS,CACxB6C,YAAa,gBACbC,gBAAiB,GACjBnD,KAAM,UACNoD,KAAM,UAEV,EAKF,C","sources":["webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/helpers/isElementExist.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/singleMedicationChoice.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/treatMyUti.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/modules/medicationChoice.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/storage.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/coupon.js"],"sourcesContent":["export default function isElementExist(el, cb) {\n var elem = document.querySelector(el);\n\n if (document.body.contains(elem)) {\n try {\n cb();\n } catch (e) {\n console.log(e);\n }\n }\n}\n","import storageService from '../services/storage.js';\nimport couponService from '../services/coupon.js';\n\nexport default function singleMedicationChoice() {\n const singleProductBtn = document.querySelector('#landing-productbtn');\n\n listenForSingleProductBtn();\n\n function listenForSingleProductBtn() {\n singleProductBtn.addEventListener('click', (item) => {\n storageService().tests = [\n {\n name: singleProductBtn.dataset.name,\n price: singleProductBtn.dataset.price * 100,\n slug: singleProductBtn.dataset.slug,\n },\n ];\n storageService().setUtiTreatmentType();\n couponService().applyDefaultCoupon();\n window.location.href = '/uti-pharmacy';\n });\n }\n}\n","import isElementExist from './helpers/isElementExist.js';\nimport medicationChoice from './modules/medicationChoice';\nimport singleMedicationChoice from './modules/singleMedicationChoice';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n isElementExist('.medications-box', medicationChoice);\n isElementExist('#landing-productbtn', singleMedicationChoice);\n});\n","import storageService from '../services/storage.js';\nimport couponService from '../services/coupon.js';\n\nexport default function medicationChoice() {\n const medicationContainer = document.querySelector('.medications-box');\n const medicationList = medicationContainer.querySelector('.list-main');\n const medicationItems = medicationList.querySelectorAll('.list-main .list-main_item');\n const confirmMedicationBtn = medicationContainer.querySelector('.js-details-link');\n const BTN_DISABLED_CLASS = 'button--disabled';\n const ITEM_CLASS = '.list-main_item';\n const ACTIVE_CLASS = 'list-main_item--active';\n let preselectedMedicationElement;\n medicationList.addEventListener('click', handleMedicationListClick);\n confirmMedicationBtn.addEventListener('click', handleConfirmMedicationClick);\n onInit();\n\n /**\n * Initializes component\n */\n function onInit() {\n loadMedicationItem();\n }\n\n /**\n * Loads selected medication list item\n */\n function loadMedicationItem() {\n const medicationItem = storageService().tests.length ? findSelectedMedicationListItem() : medicationItems[0];\n selectMedication(medicationItem);\n }\n\n /**\n * Adds selection to list item\n *\n * @param item {Element} List item\n */\n function selectMedication(item) {\n preselectedMedicationElement = item;\n item.classList.add(ACTIVE_CLASS);\n }\n\n /**\n * Removes selection from all list items\n */\n function removeSelection() {\n medicationItems.forEach((item) => {\n item.classList.remove(ACTIVE_CLASS);\n });\n }\n\n /**\n * Handles click on li item\n *\n * @param event {Event} Click event\n */\n function handleMedicationListClick(event) {\n const target = event.target;\n const listItem = target.closest(ITEM_CLASS);\n\n if (!listItem) return;\n\n removeSelection();\n selectMedication(listItem);\n confirmMedicationBtn.classList.remove(BTN_DISABLED_CLASS);\n }\n\n /**\n * Handles click on 'Next' btn item\n *\n * @param event {Event} Click event\n */\n function handleConfirmMedicationClick(event) {\n event.preventDefault();\n storageService().tests = [\n {\n name: preselectedMedicationElement.dataset.name,\n price: preselectedMedicationElement.dataset.price * 100,\n slug: preselectedMedicationElement.dataset.slug,\n },\n ];\n storageService().setUtiTreatmentType();\n couponService().applyDefaultCoupon();\n window.location.href = '/uti-pharmacy';\n }\n\n /**\n * Finds selected medication list item\n *\n * @returns {Element} Selected medication list item\n */\n function findSelectedMedicationListItem() {\n return Array.from(medicationItems).find((item) => item.dataset.name === storageService().tests[0].name);\n }\n}\n","/**\n * Service class for accessing localStorage.\n */\nexport default function storageService() {\n /**\n * Keys used to reference data in localStorage\n */\n const TESTS_KEY = 'ngStorage-tests';\n const COUPON_KEY = 'ngStorage-coupon';\n const TREATMENT_TYPE = 'ngStorage-treatmentType';\n\n /**\n * Retrieves a value stored as JSON in localStorage\n *\n * @param {string} key the key to retrieve from storage\n *\n * @return {any} The value stored in localStorage\n */\n function getLocalStorage(key) {\n return JSON.parse(window.localStorage?.getItem(key) || null);\n }\n\n /**\n * Saves a value in localStorage as a JSON string\n *\n * @param {string} key The key to store the value in\n * @param {any} value The value to be stored\n *\n * @return {void}\n */\n function setLocalStorage(key, value) {\n window.localStorage?.setItem(key, JSON.stringify(value || null));\n }\n\n /**\n * Deletes a value from the storage.\n *\n * @param key {string} The value's key.\n *\n * @return void\n */\n function removeLocalStorage(key) {\n window.localStorage?.removeItem(key);\n }\n\n // Initialize tests in localStorage\n if (!getLocalStorage(TESTS_KEY)) {\n setLocalStorage(TESTS_KEY, []);\n }\n\n return {\n /**\n * Local Storage get, set and remove\n */\n localStorage: {\n get: getLocalStorage,\n set: setLocalStorage,\n remove: removeLocalStorage,\n },\n\n /**\n * Retrieve selected tests data from local storage\n */\n get tests() {\n return this.localStorage.get(TESTS_KEY) ?? [];\n },\n\n /**\n * Store selected tests data in local storage\n */\n set tests(tests) {\n this.localStorage.set(TESTS_KEY, tests);\n },\n\n /**\n * Store the treatment type in local storage\n */\n set treatmentType(treatmentType) {\n this.localStorage.set(TREATMENT_TYPE, treatmentType);\n },\n\n /**\n * Store coupon data in local storage\n */\n set coupon(coupon) {\n this.localStorage.set(COUPON_KEY, coupon);\n },\n\n /**\n * Set the treatment type to UTI\n */\n setUtiTreatmentType() {\n this.treatmentType = 'uti';\n },\n };\n}\n","import storageService from './storage.js';\n\n/**\n * Service class to manage couponse.\n */\nexport default function couponService() {\n /**\n * Apply the default coupon to the storage service.\n */\n function applyDefaultCoupon() {\n storageService().coupon = {\n coupon_code: '30OffUtiOrder',\n discount_amount: 30,\n name: '30% Off',\n type: 'Percent',\n };\n }\n\n return {\n applyDefaultCoupon,\n };\n}\n"],"names":["isElementExist","el","cb","elem","document","querySelector","body","contains","e","console","log","singleMedicationChoice","singleProductBtn","addEventListener","item","storage","tests","name","dataset","price","slug","setUtiTreatmentType","coupon","applyDefaultCoupon","window","location","href","medicationChoice","medicationContainer","medicationList","medicationItems","querySelectorAll","confirmMedicationBtn","ACTIVE_CLASS","preselectedMedicationElement","selectMedication","classList","add","event","listItem","target","closest","forEach","remove","preventDefault","length","Array","from","find","storageService","TESTS_KEY","getLocalStorage","key","JSON","parse","localStorage","getItem","setLocalStorage","value","setItem","stringify","get","set","removeItem","this","treatmentType","couponService","coupon_code","discount_amount","type"],"sourceRoot":""}