PageSourceSearch

https://www.heavins.ie/cdn/shop/t/203/assets/index.js?v=145716557323775798901789639759

js heavins.ie collected 2026-10-04 12:32:51 UTC 9,056 bytes, 155 lines download raw bytes

1(()=>{"use strict";var __webpack_modules__={
1"./src/js/features/sf9__free-shipping-motivator.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval(`__webpack_require__.r(__webpack_exports__);
2/* harmony export */ __webpack_require__.d(__webpack_exports__, {
3/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
4/* harmony export */ });
5const freeShippingMotivator = function () {
6  function createCountdown() {
7    let countdownBlocks = document.querySelectorAll('.delivery-countdown-block');
8    let themeAjaxCart = document.querySelector('.cart-drawer');
9    if (countdownBlocks.length > 0 || themeAjaxCart.length > 0) {
10      if (typeof window.deliveryCountdownTargetAmount === 'undefined') {
11        window.deliveryCountdownTargetAmount = 0;
12      }
13      countdownBlocks = document.querySelectorAll('.delivery-countdown-block'); // redeclare to fix minicart rerender
14
15      if (countdownBlocks.length > 0) {
16        countdownBlocks.forEach(countdown => {
17          // free shipping motivator section vars
18          let deliveryCountdownMessage = countdown.querySelector('.delivery-countdown-message');
19          let deliveryCountdownSuccess = countdown.querySelector('.delivery-countdown-success');
20          let deliveryCountdownCounter = countdown.querySelector('.delivery-countdown-counter');
21          let deliveryCountdownAmount = countdown.querySelector('.delivery-countdown-amount');
22          let cartAmount = 0;
23          let cartItems = 0;
24          let cartAmountExcludingSpecialProducts = 0;
25          let bulkyItemInCart = false;
26          if (deliveryCountdownMessage && deliveryCountdownSuccess && deliveryCountdownCounter && deliveryCountdownAmount) {
27            let cartContents = fetch('/cart.js').then(response => response.json()).then(data => {
28              if (data.item_count > 0) {
29                const fetchPromises = [];
30                data.items.forEach(item => {
31                  cartItems += 1;
32                  let item_title = item.title.toLowerCase();
33                  // check if gift_card, ok to continue if false
34                  if (item.gift_card == false && item_title.indexOf('gift card') === -1) {
35                    fetchPromises.push(
36                    // fetch product tags, check for collection only or bulky item
37                    fetch('/products/' + item.handle + '?view=tag.json').then(productTagResponse => {
38                      if (!productTagResponse.ok) {
39                        throw new Error('Network response was not ok.');
40                      }
41                      return productTagResponse.json();
42                    }).then(productTagResponse => {
43                      const tags = productTagResponse.tags.map(tag => tag.toLowerCase());
44                      const collectionOnlyTag = 'collection_only'.toLowerCase();
45                      const bulkyItemTag = 'bulky_item'.toLowerCase();
46                      const warrantyTag = 'e:code:ME26'.toLowerCase();
47                      if (tags.includes(bulkyItemTag)) {
48                        bulkyItemInCart = true;
49                      } else if (!tags.includes(collectionOnlyTag) && !tags.includes(warrantyTag)) {
50                        cartAmountExcludingSpecialProducts += item.final_line_price;
51                      }
52                    }).catch(err => {
53                      throw new Error("Error: ".concat(err.message));
54                    }));
55                  }
56                });
57
58                // Calculate cartAmount after all fetch requests have completed
59                return Promise.all(fetchPromises).then(() => {
60                  cartAmount = cartAmountExcludingSpecialProducts / 100;
61                  if (bulkyItemInCart || cartAmount == 0) {
62                    deliveryCountdownCounter.classList.add('hidden');
63                    deliveryCountdownSuccess.classList.add('hidden');
64                    deliveryCountdownMessage.classList.remove('hidden');
65                    return;
66                  } else {
67                    if (cartAmount >= window.deliveryCountdownTargetAmount) {
68                      deliveryCountdownCounter.classList.add('hidden');
69                      deliveryCountdownMessage.classList.add('hidden');
70                      deliveryCountdownSuccess.classList.remove('hidden');
71                    } else {
72                      const remainder = window.deliveryCountdownTargetAmount - cartAmount;
73                      deliveryCountdownAmount.innerHTML = deliveryCountdownCurrency + remainder.toFixed(2);
74                      deliveryCountdownMessage.classList.add('hidden');
75                      deliveryCountdownSuccess.classList.add('hidden');
76                      deliveryCountdownCounter.classList.remove('hidden');
77                    }
78                    return data;
79                  }
80                });
81              } else {
82                deliveryCountdownCounter.classList.add('hidden');
83                deliveryCountdownSuccess.classList.add('hidden');
84                deliveryCountdownMessage.classList.remove('hidden');
85              }
86            });
87          }
88        });
89      }
90    }
91  }
92  return {
93    countdownInit: createCountdown
94  };
95}();
96/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (freeShippingMotivator);
97
98//# sourceURL=webpack://project_workflow/./src/js/features/sf9__free-shipping-motivator.js?`)},
98"./src/js/features/sf9__shopify-chat-styles.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval(`__webpack_require__.r(__webpack_exports__);
99/* harmony export */ __webpack_require__.d(__webpack_exports__, {
100/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
101/* harmony export */ });
102const shopifyChatStyles = function () {
103  function updateStyles() {
104    const observer = new MutationObserver((mutations, observer) => {
105      const shadowHost = document.querySelector('#ShopifyChat');
106      if (shadowHost && shadowHost.shadowRoot) {
107        const style = document.createElement('style');
108        style.textContent = "\\n\\t\\t\\t\\t  .interstitial-view.is-mobile .interstitial-view__instant-answers-list { display: none; }\\n\\t\\t\\t\\t  .interstitial-view.is-mobile { height: auto !important;}\\n\\t\\t\\t\\t";
109        shadowHost.shadowRoot.appendChild(style);
110        observer.disconnect();
111      }
112    });
113    observer.observe(document.documentElement, {
114      childList: true,
115      subtree: true
116    });
117  }
118  return {
119    stylesInit: updateStyles
120  };
121}();
122/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (shopifyChatStyles);
123
124//# sourceURL=webpack://project_workflow/./src/js/features/sf9__shopify-chat-styles.js?`)},
124"./src/js/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval(`__webpack_require__.r(__webpack_exports__);
125/* harmony import */ var _features_sf9_free_shipping_motivator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./features/sf9__free-shipping-motivator */ "./src/js/features/sf9__free-shipping-motivator.js");
126/* harmony import */ var _features_sf9_shopify_chat_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./features/sf9__shopify-chat-styles */ "./src/js/features/sf9__shopify-chat-styles.js");
127// Please use the Revealing Module Pattern for your javascript components
128// https://www.oreilly.com/library/view/learning-javascript-design/9781449334840/ch09s03.html
129//
130// Add Jest tests if possible.
131
132// import exampleComponent from './example-component';
133
134// exampleComponent.run();
135
136
137
138
139(function () {
140  window.addEventListener('load', event => {
141    _features_sf9_free_shipping_motivator__WEBPACK_IMPORTED_MODULE_0__["default"].countdownInit();
142    if (document.querySelector('#shopify-chat')) {
143      _features_sf9_shopify_chat_styles__WEBPACK_IMPORTED_MODULE_1__["default"].stylesInit();
144    }
145  });
146  window.addEventListener('on:cart-drawer:after-open', event => {
147    _features_sf9_free_shipping_motivator__WEBPACK_IMPORTED_MODULE_0__["default"].countdownInit();
148  });
149  window.addEventListener('on:line-item:updated', event => {
150    _features_sf9_free_shipping_motivator__WEBPACK_IMPORTED_MODULE_0__["default"].countdownInit();
151  });
152})();
153
154//# sourceURL=webpack://project_workflow/./src/js/index.js?`)}
154},__webpack_module_cache__={};function __webpack_require__(e){var n=__webpack_module_cache__[e];if(n!==void 0)return n.exports;var t=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.exports}__webpack_require__.d=(e,n)=>{for(var t in n)__webpack_require__.o(n,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},__webpack_require__.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),__webpack_require__.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__("./src/js/index.js")})();
155//# sourceMappingURL=/cdn/shop/t/203/assets/index.js.map?v=145716557323775798901789639759

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.