{
  "version": 3,
  "sources": ["/cdn/shop/t/998/assets/custom.js?nocache=1792527174313"],
  "sourcesContent": ["/**\n * DEVELOPER DOCUMENTATION\n *\n * Include your custom JavaScript here.\n *\n * The theme Focal has been developed to be easily extensible through the usage of a lot of different JavaScript\n * events, as well as the usage of custom elements (https://developers.google.com/web/fundamentals/web-components/customelements)\n * to easily extend the theme and re-use the theme infrastructure for your own code.\n *\n * The technical documentation is summarized here.\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN A VARIANT HAS CHANGED\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever a the user has changed the variant in a selector. The target get you the form\n * that triggered this event.\n *\n * Example:\n *\n * document.addEventListener('variant:changed', function(event) {\n *   let variant = event.detail.variant; // Gives you access to the whole variant details\n *   let form = event.target;\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * MANUALLY CHANGE A VARIANT\n * ------------------------------------------------------------------------------------------------------------\n *\n * You may want to manually change the variant, and let the theme automatically adjust all the selectors. To do\n * that, you can get the DOM element of type \"<product-variants>\", and call the selectVariant method on it with\n * the variant ID.\n *\n * Example:\n *\n * const productVariantElement = document.querySelector('product-variants');\n * productVariantElement.selectVariant(12345);\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN A NEW VARIANT IS ADDED TO THE CART\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever a variant is added to the cart through a form selector (product page, quick\n * view...). This event DOES NOT include any change done through the cart on an existing variant. For that,\n * please refer to the \"cart:updated\" event.\n *\n * Example:\n *\n * document.addEventListener('variant:added', function(event) {\n *   var variant = event.detail.variant; // Get the variant that was added\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * BEING NOTIFIED WHEN THE CART CONTENT HAS CHANGED\n * ------------------------------------------------------------------------------------------------------------\n *\n * This event is fired whenever the cart content has changed (if the quantity of a variant has changed, if a variant\n * has been removed, if the note has changed...). This event will also be emitted when a new variant has been\n * added (so you will receive both \"variant:added\" and \"cart:updated\"). Contrary to the variant:added event,\n * this event will give you the complete details of the cart.\n *\n * Example:\n *\n * document.addEventListener('cart:updated', function(event) {\n *   var cart = event.detail.cart; // Get the updated content of the cart\n * });\n *\n * ------------------------------------------------------------------------------------------------------------\n * REFRESH THE CART/MINI-CART\n * ------------------------------------------------------------------------------------------------------------\n *\n * If you are adding variants to the cart and would like to instruct the theme to re-render the cart, you cart\n * send the cart:refresh event, as shown below:\n *\n * document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', {\n *   bubbles: true\n * }));\n *\n * ------------------------------------------------------------------------------------------------------------\n * USAGE OF CUSTOM ELEMENTS\n * ------------------------------------------------------------------------------------------------------------\n *\n * Our theme makes extensive use of HTML custom elements. Custom elements are an awesome way to extend HTML\n * by creating new elements that carry their own JavaScript for adding new behavior. The theme uses a large\n * number of custom elements, but the two most useful are drawer and popover. Each of those components add\n * a \"open\" attribute that you can toggle on and off. For instance, let's say you would like to open the cart\n * drawer, whose id is \"mini-cart\", you simply need to retrieve it and set its \"open\" attribute to true (or\n * false to close it):\n *\n * document.getElementById('mini-cart').open = true;\n *\n * Thanks to the power of custom elements, the theme will take care automagically of trapping focus, maintaining\n * proper accessibility attributes...\n *\n * If you would like to create your own drawer, you can re-use the <drawer-content> content. Here is a simple\n * example:\n *\n * // Make sure you add \"aria-controls\", \"aria-expanded\" and \"is\" HTML attributes to your button:\n * <button type=\"button\" is=\"toggle-button\" aria-controls=\"id-of-drawer\" aria-expanded=\"false\">Open drawer</button>\n *\n * <drawer-content id=\"id-of-drawer\">\n *   Your content\n * </drawer-content>\n *\n * The nice thing with custom elements is that you do not actually need to instantiate JavaScript yourself: this\n * is done automatically as soon as the element is inserted to the DOM.\n *\n * ------------------------------------------------------------------------------------------------------------\n * THEME DEPENDENCIES\n * ------------------------------------------------------------------------------------------------------------\n *\n * While the theme tries to keep outside dependencies as small as possible, the theme still uses third-party code\n * to power some of its features. Here is the list of all dependencies:\n *\n * \"vendor.js\":\n *\n * The vendor.js contains required dependencies. This file is loaded in parallel of the theme file.\n *\n * - custom-elements polyfill (used for built-in elements on Safari - v1.0.0): https://github.com/ungap/custom-elements\n * - web-animations-polyfill (used for polyfilling WebAnimations on Safari 12, this polyfill will be removed in 1 year - v2.3.2): https://github.com/web-animations/web-animations-js\n * - instant-page (v5.1.0): https://github.com/instantpage/instant.page\n * - tocca (v2.0.9); https://github.com/GianlucaGuarini/Tocca.js/\n * - seamless-scroll-polyfill (v2.0.0): https://github.com/magic-akari/seamless-scroll-polyfill\n *\n * \"flickity.js\": v2.2.0 (with the \"fade\" package). Flickity is only loaded on demand if there is a product image\n * carousel on the page. Otherwise it is not loaded.\n *\n * \"photoswipe\": v4.1.3. PhotoSwipe is only loaded on demand to power the zoom feature on product page. If the zoom\n * feature is disabled, then this script is never loaded.\n */\n \n// You're ${window.themeVariables.settings.freeGiftRemaining} away from a free gift.\n\n// {% assign free_gift_threshold = settings.cart_free_gift_threshold | times: 100 %}\n// {% assign remaining_amount = cart.total_price | minus: free_gift_threshold | abs | money_without_trailing_zeros %}\n//       freeGiftRemaining: {{ remaining_amount | json }},\n\n\n\n/*\n * ------------------------------------------------------------------------------------------------------------\n * CUSTOMIZATIONS\n * ------------------------------------------------------------------------------------------------------------\n*/\n\n// GLOBAL WINDOW VARIABLES\nconst pageType = window.themeVariables.settings.pageType;\nvar globalCartValue = (window.themeVariables.settings.cartValue/100).toFixed(2);\n// console.log('globalcartvalue='+ globalCartValue);\n\n// VARIABLES FOR FREE GIFTS DECLARED IN THEME SETTINGS\n\n// free gift - GIFT 1 - adds per cart value defined in theme settings\nconst giftThreshold = window.themeVariables.settings.freeGiftThreshold;\nconst freeGiftProductId = window.themeVariables.settings.freeGiftProductId;\nconst freeGiftAvailability = window.themeVariables.settings.freeGiftAvailability;\n// console.log(giftThreshold);\n\n// free gift - GIFT 2 - adds per qualifying products defined in theme settings\nconst giftQualifier = window.themeVariables.settings.freeGiftQualifier;\nconst freeGiftProductIdTwo = window.themeVariables.settings.freeGiftProductIdTwo;\nconst freeGiftAvailabilityTwo = window.themeVariables.settings.freeGiftAvailabilityTwo;\n// console.log(giftQualifier);\n\n// free gift chooser module (high value)\nconst freeGiftChooserThreshold = window.themeVariables.settings.freeGiftChooserThreshold;\n\n\n// check to see if free gift should be added - on cart page\nif (pageType==\"cart\"){\n    // runs on initial cart page load. changes to cart trigger a page refresh, not the cart updated event\n    checkForFreeGift(window.themeVariables.settings.cartValue, window.themeVariables.settings.cartItems, window.themeVariables.settings.cartCount );\n    console.log(\"cart page!\");\n}\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// CART UPDATED EVENT LISTENER\n// ------------------------------------------------------------------------------------------------------------------\n\ndocument.addEventListener('cart:updated', function(event) {\n    console.log('cart updated');\n    checkForFreeGift(event.detail.cart.total_price, event.detail.cart.items, event.detail.cart.item_count);\n    globalCartValue = (event.detail.cart.total_price/100).toFixed(2);\n});\n\nfunction checkForFreeGift(cartTotalPrice, cartItems, cartCount){\n    // console.log(cart);\n    // console.log(\"check for free gift\");\n\n    // cart variables\n    // let cartTotalPrice = cart.total_price;\n    // let cartCount = cart.item_count;\n    // let cartItems = cart.items;\n\n    let cartValue = (cartTotalPrice/100);\n    let remainingAmount  = giftThreshold - cartValue;\n\n    let freeGiftChooserExists = document.querySelector('.mini-cart__free-gift-chooser');\n\n    // if something is removed and it's a gwp, don't add it again\n    let gwpRemoved = sessionStorage.getItem(\"gwpRemoved\");\n\n   \n    // check if free gift is already in cart\n    var freeGiftinCart = freeGiftInCart(freeGiftProductId, cartItems);\n    var freeGiftinCartTwo = freeGiftInCart(freeGiftProductIdTwo, cartItems);\n\n    // change free gift messaging\n    changeFreeGiftMessage(cartValue, giftThreshold, remainingAmount);\n\n    // TODO: if running these two functions simultaneously sometimes the cart refresh on successful ajax add to cart prevents one from being auto-loaded\n\n    // check to see if they qualify for free product 1 - based on cart value\n    if (hasQualifyingCart(cartValue, giftThreshold)){\n        if (freeGiftinCart == false && freeGiftAvailability == true && gwpRemoved != \"true\"){\n            // console.log('adding the free gift - cart qualifies');\n            addItemToCart(freeGiftProductId);\n        }\n        else{\n            // console.log('not adding the free gift based on cart value');\n        }\n    }\n\n    // check to see if they qualify for free product 2 - based on qualifying product\n    if (hasQualifyingProduct()){\n        console.log(freeGiftinCartTwo);\n        if (freeGiftinCartTwo == false && freeGiftAvailabilityTwo == true && gwpRemoved != \"true\"){\n            // console.log('adding the free gift - product qualifies');\n            addItemToCart(freeGiftProductIdTwo);\n        }\n        else{\n            // console.log('not adding the free gift based on qualifying product');\n        }\n    }\n\n    // show the free gift chooser module if it's set to display in cart drawer and if reached qualifying theshold\n    if (cartValue >= freeGiftChooserThreshold){\n        if (freeGiftChooserExists){\n            document.querySelector('.mini-cart__free-gift-chooser').style.display = \"block\";\n        }\n    }\n\n    // refresh cart count in case there is a donation product in cart\n    refreshCartCount(cartCount, cartItems);\n}\n\n\n// REFRESH THE NUMBER OF ITEMS IN THE CART TO EXCLUDE ANY DONATION PRODUCTS\nfunction refreshCartCount(itemCount, cartItems){\n    let newCartCount = itemCount;\n    for (let i = 0; i < cartItems.length; i++) {\n      if (cartItems[i].product_type == \"Donation\"){\n        newCartCount -= cartItems[i].quantity;\n        document.querySelector('cart-count').innerText = newCartCount;\n      }\n    }\n}\n\n// CHECK TO SEE IF FREE GIFT IS ALREADY IN CART\nfunction freeGiftInCart(productId, cartItems) {\n    let freeGiftStatus = false;\n    cartItems.forEach(function(item){\n        if (item.variant_id == productId) {\n            // console.log('free gift found in cart');\n            freeGiftStatus = true;\n        }\n    });        \n    return freeGiftStatus;\n};\n\n// CHECK TO SEE IF CART VALUE HAS REACHED FREE GIFT THRESHOLD\nfunction hasQualifyingCart(cartValue, giftThreshold){\n    let cartQualifies;\n    if (cartValue < giftThreshold){\n        cartQualifies = false;\n    }\n    else if (cartValue >= giftThreshold){\n        cartQualifies = true;    \n    }\n    return cartQualifies;\n}\n\n// CHECK TO SEE IF QUALIFYING PRODUCT IS IN CART - by - can't get tag in line_item though\nfunction hasQualifyingProduct(){\n    let cartQualifies;\n    if (pageType ==\"cart\"){\n        if (document.querySelector('.cart__content').hasAttribute(\"data-qualifying-product\")) {\n            cartQualifies = true;\n        }\n        else{\n            cartQualifies = false;\n        }   \n    }\n    else{\n        if (document.querySelector('#mini-cart-drawer__header').hasAttribute(\"data-qualifying-product\")) {\n            cartQualifies = true;\n        }\n        else{\n            cartQualifies = false;\n        }   \n    }\n    return cartQualifies;\n}\n\n// CHANGE FREE GIFT MESSAGE IN CART NOTIFICATION BARS\nfunction changeFreeGiftMessage(cartValue, giftThreshold, remainingAmount){\n    // WHEN PRODUCT IS ADDED TO CART FROM QUICK ADD TO CART (MINI CART NOTIFICATION IS IN MINI-CART.LIQUID)\n    let notificationBarExists = document.getElementById(\"cart-notification__free-gift\");\n    if (cartValue < giftThreshold){\n        if (notificationBarExists){\n            document.getElementById('cart-notification__free-gift').innerHTML += \"You're $\" + remainingAmount.toFixed(2) + \" away from a free gift.\"; \n        }\n    }\n    else if (cartValue >= giftThreshold){\n        if (notificationBarExists){\n            // document.getElementById('cart-notification__free-gift').style.display = 'none';\n            document.getElementById('cart-notification__free-gift').innerHTML += \"You've got a free gift!&nbsp; <i class='fas fa-gift'></i>\";\n        }        \n    }\n}\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// AJAX ADD TO CART\n// ------------------------------------------------------------------------------------------------------------------\n\n\nfunction addItemToCart(item){\n    console.log(\"***** adding to cart ***** \" + item);\n    // this takes variant.id - quantity is the amount of the variant that you want to add and id is the variant ID of that variant\n    // if you ever get a 422 error here it's likely because the product is out of stock\n    fetch(\"/cart/add.js\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify({ items: [ { quantity: 1, id: item } ] })\n    }).then(function(response){\n        if (!response.ok) { throw new Error(\"HTTP \" + response.status); }\n        // if on cart page, refresh page\n        if (pageType == \"cart\"){\n            location.reload();\n            return;\n        }\n        // if not on cart page, cart refresh event\n        document.getElementById('mini-cart').open = true;\n        document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true }));\n        console.log('success!!!');\n    }).catch(function(error){\n        // console.log(\"add to cart error\");\n    });\n    // ================================================\n}\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// VARIANT CHANGED EVENT LISTENER\n// ------------------------------------------------------------------------------------------------------------------\n\n\n// LOYALTY POINTS NOTIFICATION ON PDP + INSTALLMENTS CALCULATION ON PDP\ndocument.addEventListener('variant:changed', function(event) {\n    let variant = event.detail.variant;\n\n    if (pageType == \"product\"){\n        var installmentsContainer = document.querySelector('.js-installments-price');\n        var variantPrice = (variant.price / 100 );\n        var installment = (variantPrice / 4 ).toFixed(2);\n        console.log(installment);\n        installmentsContainer.innerHTML = \"$\" + installment;\n        // refresh loyalty lion elements\n        refreshLoyaltyPoints(variantPrice);\n    }\n});\n\nfunction refreshLoyaltyPoints(variantPrice){\n    // console.log(variantPrice);\n    let newPrice = variantPrice * 100;\n    document.getElementById('LLPointsForPurchase-PDP').setAttribute('data-lion-points-for', newPrice);\n    // now that we've updated the element, we tell the sdk to refresh\n    window.loyaltylion && window.loyaltylion.ui.refresh()\n}\n\n// https://developers.loyaltylion.com/sdk/live-updating/\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// MISCELLANEOUS EVENT LISTENERS\n// ------------------------------------------------------------------------------------------------------------------\n\n// OBS Popup\ndocument.body.addEventListener('click', function(e) {\n    if (e.target.closest('.obs-symbol')) {\n        var euPopup = document.getElementById('eu-popup');\n        if (euPopup) { euPopup.open = true; }\n    }\n});\n\n// when gwp item is removed from cart\ndocument.body.addEventListener('click', function(e) {\n    var removeButton = e.target.closest('.line-item__remove-button');\n    // if it's a gwp product that was removed\n    if (removeButton && removeButton.hasAttribute(\"data-is-gwp\")) {\n        // console.log('removed a gwp item');\n        sessionStorage.setItem(\"gwpRemoved\", \"true\");\n    }\n});\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// VARIANT ADDED EVENT LISTENER\n// ------------------------------------------------------------------------------------------------------------------\n\n// document.addEventListener('variant:added', function(event) {\n//     // console.log('variant added to cart');\n// });\n\n\n// Attentive SMS removed 2026 \u2014 access lost since spring 2025, no longer in use\n\n\n\n// ------------------------------------------------------------------------------------------------------------------\n// DONATION MODULE IN MINI CART\n// ------------------------------------------------------------------------------------------------------------------\n\n// var donationId = $(\"#ProductSelect-donation\").children(\"option:selected\").val();\n\nvar donationId;\n\ndocument.body.addEventListener('click', function(e) {\n    if (!e.target.closest('#donateButton')) { return; }\n    e.preventDefault();\n    var donationSelect = document.getElementById('ProductSelect-donationID');\n    if (!donationSelect) { return; }\n    addDonationToCart(donationSelect.value, donationSelect.getAttribute(\"data-round-up\"));\n});\n\ndocument.addEventListener('change', function(e) {\n    var donationOption = e.target.closest('#ProductSelect-donation');\n    if (donationOption) {\n        donationId = donationOption.value;\n    }\n});\n    \n\n\nfunction addDonationToCart(item, qty){\n    fetch(\"/cart/add.js\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify({ items: [ { quantity: qty, id: item } ] })\n    }).then(function(response){\n        if (!response.ok) { throw new Error(\"HTTP \" + response.status); }\n        document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', { bubbles: true }));\n        // hide donate module after\n        var donationModule = document.getElementById(\"donation_module\");\n        if (donationModule) { donationModule.style.display = \"none\"; }\n    }).catch(function(error){\n        console.log(\"add to cart error\");\n    });\n}\n\n\n\n\n// PACIF004AV-439: keep keyboard focus on the Ordergroove control after the mini cart re-renders.\n// Toggling \"Subscribe and Save\" (or changing frequency) refreshes the cart, which replaces the\n// drawer content and drops focus to the page body. Return focus to the same line's OG control.\n(function () {\n  var pending = null;\n  function ogControl(offer) {\n    return offer && (offer.querySelector('.og-button-toggle') || offer.querySelector('og-select-frequency select, select'));\n  }\n  function remember(e) {\n    var drawer = document.getElementById('mini-cart');\n    var offer = e.target && e.target.closest ? e.target.closest('og-offer') : null;\n    if (!drawer || !offer || !drawer.contains(offer)) return;\n    var offers = Array.prototype.slice.call(drawer.querySelectorAll('og-offer'));\n    pending = { index: offers.indexOf(offer), until: Date.now() + 5000, tries: 0 };\n    if (!window.__ogFocusTimer) window.__ogFocusTimer = setInterval(restore, 200);\n  }\n  function restore() {\n    var drawer = document.getElementById('mini-cart');\n    if (!pending || !drawer || Date.now() > pending.until) {\n      clearInterval(window.__ogFocusTimer); window.__ogFocusTimer = null; pending = null; return;\n    }\n    var active = document.activeElement;\n    if (active && active !== document.body) return; // focus is somewhere real; keep watching for a re-render\n    if (!drawer.hasAttribute('open')) { pending.until = 0; return; }\n    var target = ogControl(drawer.querySelectorAll('og-offer')[pending.index]);\n    if (target) { target.focus({ preventScroll: true }); pending.until = 0; }\n  }\n  document.addEventListener('click', remember, true);\n  document.addEventListener('change', remember, true);\n})();\n\n// ORDERGROOVE CART REFRESH\n// Hooks OG cart updated to cart refresh\ndocument.addEventListener('og-cart-updated', ev => {      \n    // console.log(\"update cart OG!\");        \n    document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', {\n        bubbles: true\n    }));\n    // ev.preventDefault();\n});\n\n\n\n// GA4 - using Shopify integration so can eventually delete \n\n// GA4 begin checkout\n// function trackGA4IC(){\n//     // console.log(\"running begin_checkout GA4 code from custom JS \" + globalCartValue);\n//     dataLayer.push({ 'ecommerce': null });\n//     dataLayer.push({\n//         event: 'begin_checkout',\n//         ecommerce: {\n//             'currency': 'USD',\n//             'value': globalCartValue  \n//         }\n//     });\n// }   \n\n// GA4 add to cart\n// function trackGQ4ATC(event){\n//     // console.log(\"running add_to_cart GA4 code\");\n//     // console.log(event);\n//     var variantID = event.detail.variant.id;\n//     var variantTitle = event.detail.variant.title;\n//     var variantBrand = event.detail.variant.vendor;\n//     var variantType = event.detail.variant.product_type;\n//     var variantSKU = event.detail.variant.sku;\n//     var variantPrice = (event.detail.variant.price/100).toFixed(2);\n//     dataLayer.push({ 'ecommerce': null });\n//     dataLayer.push({\n//         event: 'add_to_cart',\n//         ecommerce: {\n//             'items': [{\n//                 'item_id': variantID,\n//                 'item_name': variantTitle,\n//                 'item_brand': variantBrand,\n//                 'item_category': variantType,\n//                 'item_variant': variantSKU,\n//                 'currency': 'USD',\n//                 'price': variantPrice\n//             }]\n//         }\n//     });          \n// }\n\n\n\n"],
  "mappings": "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",
  "names": ["giftThreshold"]
}
