{"version":3,"file":"slider.8cfa8758fac2cea9348e.js","mappings":"4IAMA,MAUMA,EAAkB,CAACC,EAAKC,KAC5B,MAAMC,GAAU,SAAiBF,GACjCE,EAAQC,KAAKF,IACb,SAAiBD,GAAOE,CAAO,EA4D3BE,EAAoBC,GACjBC,OAAOC,QAAO,SAAiBC,eAAeC,QAAQC,GAAWA,EAAOL,OAASA,IAM1FM,SAASC,iBAAiB,yBAAyB,KACjD,MAAMC,EA9BC,CACLC,MAFkBC,EA+BYX,EAAiB,SA7BjCY,KAAKN,GAAWA,EAAOI,OAAMG,KAAK,OAChDC,KAAMH,EAAQC,KAAKN,GAAWA,EAAOQ,OAAMD,KAAK,KAChDE,MAAOJ,EAAQK,QAAO,CAACC,EAAKX,IAAWW,EAAMC,SAASZ,EAAOS,QAAQ,GACrEI,YAAaR,EAAQK,QAAO,CAACC,EAAKX,IAAWW,EAAMC,SAASZ,EAAOa,cAAc,IALhE,IAACR,EAcLL,GAmBf,SAAiBc,qBAlFjB,SAAiBC,cAAgBd,SAASe,cAAc,mBAAmBzB,MAgE3EF,EAAgB,QAAS,CAAEe,MADZJ,EAqBPG,GApBgCC,KAAMI,KAAMR,EAAOQ,KAAMC,MAAOT,EAAOS,QA5B1D,CAACT,IAClBY,SAASZ,EAAOa,cAAgB,GAIpCxB,EAAgB,eAAgB,CAAEe,KAAMJ,EAAOI,KAAMa,OAAQL,SAASZ,EAAOa,aAAclB,KAAM,gBAAiB,EA4ClHuB,CAAef,GACJT,EAAiB,UAAUK,QAAQoB,GAAWP,SAASO,EAAOV,OAAS,IAjE1EW,SAASD,GACf9B,EAAgB,eAAgB,CAC9BgC,GAAIT,SAASO,EAAOE,IACpBjB,KAAMe,EAAOf,KACbI,KAAMW,EAAOX,KACbC,MAAOG,SAASO,EAAOV,OACvBa,aAAcV,SAASO,EAAOI,kBA4DlC,EAAAC,EAAA,KAAgBC,sBAChB,SAAiB3B,cAAgB,CAAC,EAElC4B,OAAOC,SAASC,KAAO,kBAAkB,ICuC3CF,OAAOG,YAlIP,MAME,WAAAC,CAAYC,GACVC,KAAKC,cAAgB,GAAGF,YACxBC,KAAK3B,QAAU,CAAC,EAChB2B,KAAKE,aAAe,EACpBF,KAAKG,OAASlC,SAASe,cAAc,IAAIe,8BACzCC,KAAKI,OAASJ,KAAKG,OAAOE,iBAAiB,UAC3CL,KAAKM,SAAWN,KAAKG,OAAOE,iBAAiB,YAC7CL,KAAKO,SAAWP,KAAKG,OAAOE,iBAAiB,YAC7CL,KAAKQ,QAAUR,KAAKG,OAAOE,iBAAiB,qBAC5CL,KAAKS,YAAcT,KAAKI,OAAOM,OAE/BV,KAAKW,MACP,CAKA,IAAAA,GACEX,KAAKY,qBACLZ,KAAKa,0BACLb,KAAKc,yBACP,CAKA,uBAAAA,GACEd,KAAKQ,QAAQpB,SAAS2B,IACpBA,EAAO7C,iBAAiB,SAAS,KAC/B8B,KAAKG,OAAOa,UAAUC,OAAO,YAAY,GACzC,GAEN,CAKA,uBAAAJ,GACEb,KAAKM,SAASlB,SAAS8B,IACrBA,EAAQhD,iBAAiB,SAAUiD,IACjCA,EAAEC,iBACFpB,KAAKqB,eAAe,GACpB,IAGJrB,KAAKO,SAASnB,SAASkC,IACrBA,EAAQpD,iBAAiB,SAAUiD,IACjCA,EAAEC,iBACFpB,KAAKuB,eAAe,GACpB,GAEN,CAKA,aAAAF,GACErB,KAAKE,eACLF,KAAKG,OAAOa,UAAUC,OAAO,aAC7BjB,KAAKwB,sBACP,CAKA,aAAAD,GACE,MAAME,EAAkB,IAAIzB,KAAKE,aAAe,IAC1CwB,EAAiBzD,SAASe,cAAc,eAAeyC,eAExDC,GAML1B,KAAK2B,mBAAmBF,EAAiBC,GAErC1B,KAAK4B,cACP3D,SAAS4D,cAAc,IAAIC,YAAY9B,KAAKC,iBAK9CD,KAAKE,eACLF,KAAKwB,yBAdHxB,KAAKG,OAAOa,UAAUe,IAAI,YAe9B,CAKA,kBAAAnB,IACE,SAAiB9C,cAAgB,CAAC,CACpC,CAOA,WAAA8D,GACE,OAAO5B,KAAKE,eAAiBF,KAAKS,YAAc,CAClD,CAQA,kBAAAkB,CAAmBF,EAAiBC,GAClC1B,KAAK3B,QAAQoD,GAAmBO,KAAKC,MAAMP,EAAenE,QAC1D,SAAiBO,cAAgBkC,KAAK3B,OACxC,CAKA,oBAAAmD,GACE,MAAMU,EAAgC,KAApBlC,KAAKE,aAEvBF,KAAKG,OAAOgC,MAAMC,UAAY,cAAcF,KAC9C,GAIFjE,SAAS4D,cAAc,IAAIC,YAAY,oB,4DCpIxB,SAASO,IACtB,MAAMC,EAAgBrE,SAASe,cAAc,mBAyB7C,MAAO,CACLS,mBArBF,WACO6C,KAIL,SAAiB9C,OAOV,CACL+C,YAAaD,GAAeE,QAAQC,YAAc,KAClDC,cAAeC,OAAOL,GAAeE,QAAQI,eAAiB,KAC9DC,YAAaP,GAAeE,QAAQM,YAAc,KAClDC,YAAaT,GAAeE,QAAQQ,YAAc,MAVtD,EAiBF,C,iBC/Be,SAASC,IAItB,MAAMC,EAAiB,gBACjBC,EAAY,kBACZC,EAAoB,yBACpBC,EAAa,mBACbC,EAAqB,0BACrBC,EAAgB,yBAChBC,EAAa,mBACbC,EAAc,UASpB,SAASC,EAAgBpG,GACvB,IACE,OAAO0E,KAAKC,MAAMvC,OAAOiE,cAAcC,QAAQtG,IAAQ,KACzD,CAAE,MAAOuG,GAGP,OAFAC,QAAQD,MAAM,yCAA0CA,GAEjD,IACT,CACF,CAUA,SAASE,EAAgBzG,EAAKC,GAC5B,IACEmC,OAAOiE,cAAcK,QAAQ1G,EAAK0E,KAAKiC,UAAU1G,GAAS,MAC5D,CAAE,MAAOsG,GACPC,QAAQD,MAAM,uCAAwCA,EACxD,CACF,CASA,SAASK,EAAmB5G,GAC1BoC,OAAOiE,cAAcQ,WAAW7G,EAClC,CAOA,OAJKoG,EAAgBP,IACnBY,EAAgBZ,EAAW,IAGtB,CAILQ,aAAc,CACZS,IAAKV,EACLW,IAAKN,EACL9C,OAAQiD,GAMV,SAAII,GACF,OAAOtE,KAAK2D,aAAaS,IAAIjB,IAAc,EAC7C,EAOA,SAAImB,CAAMA,GACRtE,KAAK2D,aAAaU,IAAIlB,EAAWmB,EACnC,EAKA,iBAAIxG,GACF,OAAOkC,KAAK2D,aAAaS,IAAIlB,IAAmB,CAAC,CACnD,EAOA,iBAAIpF,CAAcwG,GAChBtE,KAAK2D,aAAaU,IAAInB,EAAgBoB,EACxC,EAKA,gBAAIC,GACF,OAAOvE,KAAK2D,aAAaS,IAAIhB,IAAsB,EACrD,EAOA,gBAAImB,CAAaA,GACfvE,KAAK2D,aAAaU,IAAIjB,EAAmBmB,EAC3C,EAOA,UAAI/E,CAAOA,GACTQ,KAAK2D,aAAaU,IAAIhB,EAAY7D,EACpC,EAOA,iBAAIT,CAAcA,GAChBiB,KAAK2D,aAAaU,IAAIf,EAAoBvE,EAC5C,EAKA,iBAAIA,GACF,OAAOiB,KAAK2D,aAAaS,IAAId,EAC/B,EAKA,gBAAIkB,GACF,OAAOxE,KAAK2D,aAAaS,IAAIb,IAAkB,EACjD,EAOA,gBAAIiB,CAAaA,GACfxE,KAAK2D,aAAaU,IAAId,EAAeiB,EACvC,EAKA,UAAIC,GACF,OAAOzE,KAAK2D,aAAaS,IAAIZ,IAAe,CAAC,CAC/C,EAOA,UAAIiB,CAAOA,GACTzE,KAAK2D,aAAaU,IAAIb,EAAYiB,EACpC,EAKA,UAAIC,GACF,OAAOhB,EAAgBD,EACzB,EAKA,UAAIiB,CAAOA,GACa,iBAAXA,GAAuB,WAAWC,KAAKD,EAAOE,QACvDb,EAAgBN,EAAad,OAAO+B,IACT,iBAAXA,GAAuB/B,OAAOkC,UAAUH,GACxDX,EAAgBN,EAAaiB,GACT,OAAXA,EACTR,EAAmBT,GAEnBK,QAAQD,MAAM,sDAAsDa,mBAAwBA,KAEhG,EAKA,iBAAA5F,GACEkB,KAAK2D,aAAa1C,OAAOqC,GACzBtD,KAAK2D,aAAa1C,OAAOkC,GACzBnD,KAAK2D,aAAa1C,OAAOsC,GACzBvD,KAAK2D,aAAa1C,OAAOmC,GACzBpD,KAAK2D,aAAa1C,OAAOoC,EAC3B,EAEJ,C","sources":["webpack://starfish-wp-theme/./themes/starfish/src/js/components/sliderEvents/multipleMedication.js","webpack://starfish-wp-theme/./themes/starfish/src/js/components/slider.js","webpack://starfish-wp-theme/./themes/starfish/src/js/services/coupon.js","webpack://starfish-wp-theme/./themes/starfish/src/js/services/storage.js"],"sourcesContent":["import storageService from '../../services/storage';\nimport couponService from '../../services/coupon';\n\n/**\n * Sets the treatment type in the local storage based on the hidden input when having multiple medications slider\n */\nconst setTreatmentType = () => {\n storageService().treatmentType = document.querySelector('#treatment_type').value;\n};\n\n/**\n * Helper function to add a value to the local storage\n *\n * @param {string} key the key to store the value\n * @param {value} value the value to store\n */\nconst addStorageValue = (key, value) => {\n const storage = storageService()[key];\n storage.push(value);\n storageService()[key] = storage;\n};\n\n/**\n * Adds multiple upsells to the local storage\n *\n * @param {object[]} upsells array of upsells to add to the local storage\n */\nconst addUpsells = (upsells) =>\n upsells.forEach((upsell) =>\n addStorageValue('orderUpsells', {\n id: parseInt(upsell.id),\n name: upsell.name,\n slug: upsell.slug,\n price: parseInt(upsell.price),\n upsell_price: parseInt(upsell.upsellPrice),\n })\n );\n\n/**\n * Adds the extra charge to the local storage if the price is greater than 0 or the flag is set to true\n *\n * @param {object} answer the extra charge option to add to the local storage\n */\nconst addExtraCharge = (answer) => {\n if (parseInt(answer.extraCharge) <= 0) {\n return;\n }\n\n addStorageValue('extraCharges', { name: answer.name, amount: parseInt(answer.extraCharge), type: 'Extra Charge' });\n};\n\n/**\n * Merges multiple answers combining their names, slugs and summing their prices and extra charges.\n *\n * @param {object[]} answers array of answer objects\n */\nconst mergeAnswers = (answers) => {\n return {\n name: answers.map((answer) => answer.name).join(' - '),\n slug: answers.map((answer) => answer.slug).join('-'),\n price: answers.reduce((sum, answer) => sum + parseInt(answer.price), 0),\n extraCharge: answers.reduce((sum, answer) => sum + parseInt(answer.extraCharge), 0),\n };\n};\n\n/**\n * Adds the test to the local storage and adds the extra charge when applicable\n *\n * @param {object} answer the test option to add to the local storage\n */\nconst addTest = (answer) => {\n addStorageValue('tests', { name: answer.name, slug: answer.slug, price: answer.price });\n};\n\n/**\n * Gets slider answers of a specific type from storage.\n *\n * @param {'Test'|'Upsell'} type the type of answers to filter for\n */\nconst getAnswersByType = (type) => {\n return Object.values(storageService().sliderAnswers).filter((answer) => answer.type === type);\n};\n\n/**\n * Event listener for the multiple medications slider callback event\n */\ndocument.addEventListener('MultipleTestsCallback', () => {\n const testAnswer = mergeAnswers(getAnswersByType('Test'));\n\n storageService().clearCheckoutData();\n setTreatmentType();\n addTest(testAnswer);\n addExtraCharge(testAnswer);\n addUpsells(getAnswersByType('Upsell').filter((upsell) => parseInt(upsell.price) > 0));\n couponService().applyDefaultCoupon();\n storageService().sliderAnswers = {};\n\n window.location.href = '/select-pharmacy';\n});\n","import './sliderEvents/multipleMedication';\nimport storageService from '../services/storage';\n\n/**\n * Class to handle the slider component\n */\nclass RadioSlider {\n /**\n * Constructor for the RadioSlider class\n *\n * @param {string} sliderKey The slider key to initialize the slider component\n */\n constructor(sliderKey) {\n this.callbackEvent = `${sliderKey}Callback`;\n this.answers = {};\n this.currentSlide = 0;\n this.slider = document.querySelector(`#${sliderKey}.slider-container .slider`);\n this.slides = this.slider.querySelectorAll('.slide');\n this.prevBtns = this.slider.querySelectorAll('.prevBtn');\n this.nextBtns = this.slider.querySelectorAll('.nextBtn');\n this.options = this.slider.querySelectorAll('.option-container');\n this.totalSlides = this.slides.length;\n\n this.init();\n }\n\n /**\n * Initialize the slider component\n */\n init() {\n this.resetSliderAnswers();\n this.addButtonEventListeners();\n this.addOptionEventListeners();\n }\n\n /**\n * Add event listeners to the slider options\n */\n addOptionEventListeners() {\n this.options.forEach((option) => {\n option.addEventListener('click', () => {\n this.slider.classList.remove('has-error');\n });\n });\n }\n\n /**\n * Add event listeners to the slider buttons\n */\n addButtonEventListeners() {\n this.prevBtns.forEach((prevBtn) => {\n prevBtn.addEventListener('click', (e) => {\n e.preventDefault();\n this.movePrevSlide();\n });\n });\n\n this.nextBtns.forEach((nextBtn) => {\n nextBtn.addEventListener('click', (e) => {\n e.preventDefault();\n this.moveNextSlide();\n });\n });\n }\n\n /**\n * Move the slider to the previous slide\n */\n movePrevSlide() {\n this.currentSlide--;\n this.slider.classList.remove('has-error');\n this.updateSliderPosition();\n }\n\n /**\n * Move the slider to the next slide\n */\n moveNextSlide() {\n const currentQuestion = `q${this.currentSlide + 1}`;\n const selectedOption = document.querySelector(`input[name=\"${currentQuestion}\"]:checked`);\n\n if (!selectedOption) {\n this.slider.classList.add('has-error');\n\n return;\n }\n\n this.saveSelectedOption(currentQuestion, selectedOption);\n\n if (this.isLastSlide()) {\n document.dispatchEvent(new CustomEvent(this.callbackEvent));\n\n return;\n }\n\n this.currentSlide++;\n this.updateSliderPosition();\n }\n\n /**\n * Reset the slider answers in the local storage\n */\n resetSliderAnswers() {\n storageService().sliderAnswers = {};\n }\n\n /**\n * Check if the current slide is the last slide\n *\n * @returns {boolean} true if the current slide is the last slide, false otherwise\n */\n isLastSlide() {\n return this.currentSlide === this.totalSlides - 1;\n }\n\n /**\n * Save the selected option in the local storage\n *\n * @param {string} currentQuestion the current question key\n * @param {RadioNodeList} selectedOption the selected option element\n */\n saveSelectedOption(currentQuestion, selectedOption) {\n this.answers[currentQuestion] = JSON.parse(selectedOption.value);\n storageService().sliderAnswers = this.answers;\n }\n\n /**\n * Update the slider position to the current slide\n */\n updateSliderPosition() {\n const position = -this.currentSlide * 100;\n\n this.slider.style.transform = `translateX(${position}%)`;\n }\n}\n\nwindow.RadioSlider = RadioSlider;\ndocument.dispatchEvent(new CustomEvent('RadioSliderReady'));\n","import storageService from './storage.js';\n\n/**\n * Service class for managing coupons.\n */\nexport default function couponService() {\n const couponElement = document.querySelector('#product_coupon');\n\n /**\n * Stores the default coupon in localStorage.\n */\n function applyDefaultCoupon() {\n if (!couponElement) {\n return;\n }\n\n storageService().coupon = getCouponData();\n }\n\n /**\n * Retrieves coupon data from the coupon element.\n */\n function getCouponData() {\n return {\n coupon_code: couponElement?.dataset.couponCode || null,\n coupon_amount: Number(couponElement?.dataset.couponAmount) || null,\n coupon_name: couponElement?.dataset.couponName || null,\n coupon_type: couponElement?.dataset.couponType || null,\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 SLIDER_ANSWERS = 'sliderAnswers';\n const TESTS_KEY = 'ngStorage-tests';\n const EXTRA_CHARGES_KEY = 'ngStorage-extraCharges';\n const COUPON_KEY = 'ngStorage-coupon';\n const TREATMENT_TYPE_KEY = 'ngStorage-treatmentType';\n const ORDER_UPSELLS = 'ngStorage-orderUpsells';\n const CENTER_KEY = 'ngStorage-center';\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 * @param {object[]} tests the tests data to store\n */\n set tests(tests) {\n this.localStorage.set(TESTS_KEY, tests);\n },\n\n /**\n * Retrieve slider answers from local storage\n */\n get sliderAnswers() {\n return this.localStorage.get(SLIDER_ANSWERS) ?? {};\n },\n\n /**\n * Store slider answers in local storage\n *\n * @param {object} tests the slider answers to store\n */\n set sliderAnswers(tests) {\n this.localStorage.set(SLIDER_ANSWERS, tests);\n },\n\n /**\n * Retrieve extra charges from local storage\n */\n get extraCharges() {\n return this.localStorage.get(EXTRA_CHARGES_KEY) ?? [];\n },\n\n /**\n * Store selected tests data in local storage\n *\n * @param {object[]} extraCharges the tests data to store\n */\n set extraCharges(extraCharges) {\n this.localStorage.set(EXTRA_CHARGES_KEY, extraCharges);\n },\n\n /**\n * Store coupon data in local storage\n *\n * @param {object} coupon the coupon data to store\n */\n set coupon(coupon) {\n this.localStorage.set(COUPON_KEY, coupon);\n },\n\n /**\n * Store treatment type in local storage\n *\n * @param {string} treatmentType the treatment type to store\n */\n set treatmentType(treatmentType) {\n this.localStorage.set(TREATMENT_TYPE_KEY, treatmentType);\n },\n\n /**\n * Store treatment type in local storage\n */\n get treatmentType() {\n return this.localStorage.get(TREATMENT_TYPE_KEY);\n },\n\n /**\n * Retrieve the order upsells from local storage\n */\n get orderUpsells() {\n return this.localStorage.get(ORDER_UPSELLS) ?? [];\n },\n\n /**\n * Store order upsells in local storage\n *\n * @param {object[]} orderUpsells the order upsells to store\n */\n set orderUpsells(orderUpsells) {\n this.localStorage.set(ORDER_UPSELLS, orderUpsells);\n },\n\n /**\n * Retrieve center from local storage\n */\n get center() {\n return this.localStorage.get(CENTER_KEY) ?? {};\n },\n\n /**\n * Store selected center data in local storage\n *\n * @param {object[]} center the center data to store\n */\n set center(center) {\n this.localStorage.set(CENTER_KEY, center);\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 * Clears all checkout data from local storage\n */\n clearCheckoutData() {\n this.localStorage.remove(TREATMENT_TYPE_KEY);\n this.localStorage.remove(TESTS_KEY);\n this.localStorage.remove(ORDER_UPSELLS);\n this.localStorage.remove(EXTRA_CHARGES_KEY);\n this.localStorage.remove(COUPON_KEY);\n },\n };\n}\n"],"names":["addStorageValue","key","value","storage","push","getAnswersByType","type","Object","values","sliderAnswers","filter","answer","document","addEventListener","testAnswer","name","answers","map","join","slug","price","reduce","sum","parseInt","extraCharge","clearCheckoutData","treatmentType","querySelector","amount","addExtraCharge","upsell","forEach","id","upsell_price","upsellPrice","coupon","applyDefaultCoupon","window","location","href","RadioSlider","constructor","sliderKey","this","callbackEvent","currentSlide","slider","slides","querySelectorAll","prevBtns","nextBtns","options","totalSlides","length","init","resetSliderAnswers","addButtonEventListeners","addOptionEventListeners","option","classList","remove","prevBtn","e","preventDefault","movePrevSlide","nextBtn","moveNextSlide","updateSliderPosition","currentQuestion","selectedOption","saveSelectedOption","isLastSlide","dispatchEvent","CustomEvent","add","JSON","parse","position","style","transform","couponService","couponElement","coupon_code","dataset","couponCode","coupon_amount","Number","couponAmount","coupon_name","couponName","coupon_type","couponType","storageService","SLIDER_ANSWERS","TESTS_KEY","EXTRA_CHARGES_KEY","COUPON_KEY","TREATMENT_TYPE_KEY","ORDER_UPSELLS","CENTER_KEY","USER_ID_KEY","getLocalStorage","localStorage","getItem","error","console","setLocalStorage","setItem","stringify","removeLocalStorage","removeItem","get","set","tests","extraCharges","orderUpsells","center","userId","test","trim","isInteger"],"sourceRoot":""}