{"version":3,"file":"components/package-options.40203d4842894d52d5f9.js","mappings":"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","sources":["webpack://stdcheck-exposed-wp-theme/./themes/stdcheck-exposed/src/js/components/package-options.js","webpack://stdcheck-exposed-wp-theme/./themes/stdcheck-exposed/src/js/services/cart.js","webpack://stdcheck-exposed-wp-theme/./themes/stdcheck-exposed/src/js/services/storage.js"],"sourcesContent":["import { CartService } from '../services/cart';\nimport { StorageService } from '../services/storage';\n\n/**\n * JS component for actions on the page for each individual Test or Panel\n */\nfunction PackageOptionsComponent() {\n  const cartService = new CartService();\n  const storageService = new StorageService();\n\n  // Get data loaded server-side\n  const testsAndPanels = window.serverData;\n\n  /**\n   * Set an error message on the UI when a request fails\n   */\n  function setErrorMessage(message, id) {\n    document.getElementById(`${id}-package-options-error`).classList.remove('is-hidden');\n    document.getElementById(`${id}-package-options-error-message`).innerText = message;\n  }\n\n  /**\n   * Clear the error message from the UI\n   */\n  function clearErrorMessage(id) {\n    document.getElementById(`${id}-package-options-error`).classList.add('is-hidden');\n  }\n\n  /**\n   * Sets a loading state in the UI when a HTTP request is being made\n   */\n  function setLoading(state, id) {\n    document.getElementById(`${id}-package-options-submit`).disabled = state;\n  }\n\n  return {\n    /**\n     * Adds the selected package to the user's cart and sends them to the Order page on success\n     *\n     * @param {object} event  The form \"submit\" event\n     * @param {string} id     A string id for the form submitted since there are multiple instances on the page\n     */\n    onPackageSelect: function (event, id) {\n      event.preventDefault();\n      const slug = event.target.test.value;\n      const selectedPackage = testsAndPanels[id][slug];\n      clearErrorMessage(id);\n      setLoading(true, id);\n      storageService.removeReorderInformation();\n      storageService.removePreviousOrderInformation();\n      storageService.tests = [selectedPackage];\n      cartService.goToOrderPage();\n      setLoading(false, id);\n    },\n  };\n}\n\nwindow.packageOptions = new PackageOptionsComponent();\n","import { StorageService } from './storage';\n\n/**\n *  Service for handling client-side logic related to the user's tests and packages shopping cart\n */\nexport function CartService() {\n  const storageService = new StorageService();\n\n  return {\n    /**\n     * Sends the user to the order page\n     */\n    goToOrderPage: function () {\n      window.location.href = storageService.token ? `/order?token=${storageService.token.token}` : '/order';\n    },\n  };\n}\n","/**\n * Service class for accessing localStorage.\n */\nexport function StorageService() {\n  /**\n   * Keys used to reference data in localStorage\n   */\n  const CJ_EVENT_KEY = 'ngStorage-cjevent';\n  const COUPON_KEY = 'ngStorage-coupon';\n  const FEE_KEY = 'ngStorage-fee';\n  const LAB_KEY = 'ngStorage-center';\n  const REORDER_KEY = 'ngStorage-reorder';\n  const TESTS_KEY = 'ngStorage-tests';\n  const TOKEN_KEY = 'ngStorage-token';\n  const ZIPCODE_KEY = 'ngStorage-zip_code';\n  const IN_HOME_KEY = 'ngStorage-in-home-booking-result';\n  const EMAIL_KEY = 'ngStorage-email';\n  const FREE_KEY = 'ngStorage-free';\n  const TRANSACTION_ID_KEY = 'transaction_id';\n  const BETTER_LAB = 'ngStorage-betterlab';\n  const IHC_PROVIDERS_KEY = 'ngStorage-ihc-providers';\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     * Removes any reorder information from local storage\n     */\n    removeReorderInformation: function () {\n      window.localStorage?.removeItem(REORDER_KEY);\n    },\n\n    /**\n     * Removes previous order information from local storage\n     */\n    removePreviousOrderInformation: function () {\n      window.localStorage?.removeItem(TRANSACTION_ID_KEY);\n      window.localStorage?.removeItem(BETTER_LAB);\n    },\n\n    /**\n     * Retrieve coupon data from local storage\n     */\n    get coupon() {\n      return this.localStorage.get(COUPON_KEY) ?? {};\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 fee data from localStorage\n     */\n    get fee() {\n      return this.localStorage.get(FEE_KEY);\n    },\n\n    /**\n     * Store fee data in localStorage\n     */\n    set fee(fee) {\n      this.localStorage.set(FEE_KEY, fee);\n    },\n\n    /**\n     * Retrieve lab data from local storage\n     */\n    get lab() {\n      return this.localStorage.get(LAB_KEY) ?? {};\n    },\n\n    /**\n     * Store lab data in local storage\n     */\n    set lab(lab) {\n      this.localStorage.set(LAB_KEY, lab);\n    },\n\n    /**\n     * Retrieve psc data from local storage\n     */\n    get psc() {\n      return this.lab;\n    },\n\n    /**\n     * Store psc data in local storage\n     */\n    set psc(psc) {\n      this.lab = psc;\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     * Retrieve token data from localStorage\n     */\n    get token() {\n      return this.localStorage.get(TOKEN_KEY);\n    },\n\n    /**\n     * Store token data in localStorage\n     */\n    set token(token) {\n      this.localStorage.set(TOKEN_KEY, token);\n    },\n\n    /**\n     * Retrieve CJ Affiliate data from localStorage\n     */\n    get cjevent() {\n      return this.localStorage.get(CJ_EVENT_KEY);\n    },\n\n    /**\n     * Store CJ Affiliate data in localStorage\n     */\n    set cjevent(cjevent) {\n      this.localStorage.set(CJ_EVENT_KEY, cjevent);\n    },\n\n    /**\n     * Retrieve zip code data from localStorage\n     */\n    get zipCode() {\n      return this.localStorage.get(ZIPCODE_KEY);\n    },\n\n    /**\n     * Store zip code data in localStorage\n     */\n    set zipCode(zipCode) {\n      this.localStorage.set(ZIPCODE_KEY, zipCode);\n    },\n\n    get inHomeResult() {\n      return this.localStorage.get(IN_HOME_KEY);\n    },\n\n    /**\n     * Retrieve email data from local storage\n     */\n    get email() {\n      return this.localStorage.get(EMAIL_KEY) ?? {};\n    },\n\n    /**\n     * Store email data in local storage\n     */\n    set email(email) {\n      this.localStorage.set(EMAIL_KEY, email);\n    },\n\n    /**\n     * Retrieve free order data from local storage\n     */\n    get free() {\n      return this.localStorage.get(FREE_KEY) ?? {};\n    },\n\n    /**\n     * Store free order data in local storage\n     */\n    set free(free) {\n      this.localStorage.set(FREE_KEY, free);\n    },\n\n    /**\n     * Retrieve In-Home Collection provider IDs from local storage\n     */\n    get ihcProviders() {\n      return this.localStorage.get(IHC_PROVIDERS_KEY);\n    },\n\n    /**\n     * Store In-Home Collection provider IDs in local storage\n     */\n    set ihcProviders(ihcProviders) {\n      this.localStorage.set(IHC_PROVIDERS_KEY, ihcProviders);\n    },\n  };\n}\n"],"names":["window","packageOptions","cartService","storageService","testsAndPanels","serverData","setLoading","state","id","document","getElementById","disabled","onPackageSelect","event","preventDefault","slug","target","test","value","selectedPackage","classList","add","clearErrorMessage","removeReorderInformation","removePreviousOrderInformation","tests","goToOrderPage","CartService","location","href","token","StorageService","CJ_EVENT_KEY","COUPON_KEY","FEE_KEY","LAB_KEY","TESTS_KEY","TOKEN_KEY","ZIPCODE_KEY","EMAIL_KEY","FREE_KEY","IHC_PROVIDERS_KEY","getLocalStorage","key","JSON","parse","localStorage","getItem","setLocalStorage","setItem","stringify","get","set","remove","removeItem","coupon","this","fee","lab","psc","cjevent","zipCode","inHomeResult","email","free","ihcProviders"],"sourceRoot":""}