{"version":3,"file":"treatMyUti.7f0256fa87102d0a8379.js","mappings":"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","sources":["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/helpers/isElementExist.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/coupon.js","webpack://utitreatment-wp-theme/./themes/treat-my-uti/src/js/services/storage.js"],"sourcesContent":["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 couponService from '../services/coupon.js';\nimport storageService from '../services/storage.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 = 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 medication list item matching the stored selection\n * Returns null if no tests are stored or no matching item is found\n *\n * @returns {Element|null} Selected medication list item or null\n */\n function findSelectedMedicationListItem() {\n if (!storageService().tests || !storageService().tests.length) {\n return null;\n }\n\n return Array.from(medicationItems).find((item) => item.dataset.name === storageService().tests[0].name) || null;\n }\n}\n","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 './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","/**\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 const USER_ID_KEY = 'user_id';\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, or null if localstorage is not available\n */\n function getLocalStorage(key) {\n try {\n return JSON.parse(window.localStorage?.getItem(key) || null);\n } catch (error) {\n console.error('Error getting value from local storage', error);\n\n return null;\n }\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 try {\n window.localStorage?.setItem(key, JSON.stringify(value || null));\n } catch (error) {\n console.error('Error setting value in local storage', error);\n }\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 * Retrieve the Manage user ID placing an order from local storage\n */\n get userId() {\n return getLocalStorage(USER_ID_KEY);\n },\n\n /**\n * Store the Manage user ID placing an order in local storage\n */\n set userId(userId) {\n if (typeof userId === 'string' && /^[0-9]+$/.test(userId.trim())) {\n setLocalStorage(USER_ID_KEY, Number(userId));\n } else if (typeof userId === 'number' && Number.isInteger(userId)) {\n setLocalStorage(USER_ID_KEY, userId);\n } else if (userId === null) {\n removeLocalStorage(USER_ID_KEY);\n } else {\n console.error(`Attempt to store invalid user_id in local storage: ${userId} (type: ${typeof userId})`);\n }\n },\n\n /**\n * Set the treatment type to UTI\n */\n setUtiTreatmentType() {\n this.treatmentType = 'uti';\n },\n };\n}\n"],"names":["singleMedicationChoice","singleProductBtn","document","querySelector","addEventListener","item","storage","tests","name","dataset","price","slug","setUtiTreatmentType","coupon","applyDefaultCoupon","window","location","href","isElementExist","medicationChoice","medicationContainer","medicationList","medicationItems","querySelectorAll","confirmMedicationBtn","ACTIVE_CLASS","preselectedMedicationElement","selectMedication","classList","add","event","listItem","target","closest","forEach","remove","preventDefault","length","Array","from","find","el","cb","elem","body","contains","e","console","log","couponService","coupon_code","discount_amount","type","storageService","TESTS_KEY","USER_ID_KEY","getLocalStorage","key","JSON","parse","localStorage","getItem","error","setLocalStorage","value","setItem","stringify","removeLocalStorage","removeItem","get","set","this","treatmentType","userId","test","trim","Number","isInteger"],"sourceRoot":""}