PageSourceSearch

https://digital-skipper.se/assets/qb_essentials.babel.js?v=20260819a

js digital-skipper.se collected 2026-10-08 23:16:49 UTC 13,766 bytes, 387 lines download raw bytes

1"use strict";
2
3function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4function qbDispatchEvent(eventName, data, element) {
5  if (_typeof(eventName) === "object") {
6    data = eventName;
7    eventName = data.type;
8  }
9  var event = new CustomEvent(eventName, {
10    detail: data,
11    data: data
12  });
13  if (!element) element = document;
14  element.dispatchEvent(event);
15}
16function qbGetEvent(event) {
17  var detail = event.detail || event.data;
18  if (!detail && event.originalEvent) {
19    detail = event.originalEvent.detail || event.originalEvent.data;
20  }
21  if (detail && _typeof(detail) === "object") {
22    for (var key in detail) {
23      if (key !== 'type') {
24        event[key] = detail[key];
25      }
26    }
27  } else if (detail && _typeof(detail) !== "object") {
28    event.data = detail;
29  }
30  return event;
31}
32function CHOSEN_OPTIONS(form) {
33  var option_chosen = [];
34  form.find('.qs-cart-option').each(function (k, v) {
35    if ($(this).attr('type') == 'radio') {
36      if (!$(this).prop("checked")) {
37        return true;
38      }
39      var var_name = $(this).data('name') ? $(this).data('name') : this.value;
40    } else {
41      var var_name = $(this).find(':selected').data('name') || $(this).find(':selected').data('name') == 0 ? $(this).find(':selected').data('name') : this.value;
42    }
43    var_name = String(var_name);
44    option_chosen.push(var_name);
45  });
46  return option_chosen;
47}
48function PREPARE_OPTIONS(form) {
49  var option_chosen = CHOSEN_OPTIONS(form);
50  var option_available = !1;
51  var v_option = null;
52  $.each(qs_options, function (k, v) {
53    if (JSON.stringify(option_chosen) == JSON.stringify(v.options)) {
54      if (v.available) {
55        option_available = !0;
56        v_option = v;
57        return !1;
58      }
59    }
60  });
61  if (!option_available) {
62    $.each(qs_options, function (k, v) {
63      if (v.available) {
64        option_available = !0;
65        v_option = v;
66        return !1;
67      }
68    });
69  }
70  if (option_available) {
71    if (form.find('.option-row-custom').length > 0) {
72      $.each(v_option.options, function (i, e) {
73        form.find('.option-row-custom').eq(i).find('.qs-cart-option').each(function () {
74          var curroption = $(this);
75          if ($(this).attr('type') == 'radio') {
76            if ($(this).data('name') == e) {
77              curroption.prop('checked', true);
78            }
79          } else {
80            $(this).find('option').filter(function () {
81              return $(this).text() == e;
82            }).prop("selected", !0);
83          }
84        });
85      });
86    } else {
87      $.each(v_option.options, function (i, e) {
88        $(".qs-cart-option").eq(i).find('option').filter(function () {
89          return $(this).text() == e;
90        }).prop("selected", !0).trigger('change');
91      });
92    }
93    $('.qs-product-price').html(v_option.price).show();
94    if (v_option.before_price_raw > 0) $('.qs-product-before-price').html(v_option.before_price).show();
95    if (v_option.before_price_raw <= 0) $('.qs-product-before-price').hide();
96    if (typeof QS_PRODUCT_VARIANT_CHANGED == 'function') {
97      QS_PRODUCT_VARIANT_CHANGED(v_option);
98      qbDispatchEvent({
99        type: "QB_ProductVariantChanged",
100        option: v_option,
101        time: new Date()
102      });
103    }
104    qbDispatchEvent({
105      type: "QB_PrepareOptions",
106      option: v_option,
107      time: new Date()
108    });
109  }
110}
111function QB_CART_DATA() {
112  var post_url = typeof qs_store_url === 'undefined' ? '' : qs_store_url;
113  $.get(post_url + "/cart/fetch", function (data) {
114    if (typeof QS_CART_SET == 'function') {
115      QS_CART_SET(data);
116    }
117    qbDispatchEvent({
118      type: "QB_CartSet",
119      itemData: data,
120      time: new Date()
121    });
122  }, "json");
123}
124$(document).ready(function () {
125  var buy_btn_text = null;
126  if (typeof qs_options != 'undefined' && qs_options) {
127    PREPARE_OPTIONS($(document).find('.qs-cart:first'));
128  }
129  $(document).on('click', 'a[href="/cart/index"]', function () {
130    qbDispatchEvent('go-to-checkout');
131  });
132  $(document).on('click', '.qs-cart-view', function () {
133    QB_CART_DATA();
134  });
135  if (typeof QS_CART_SET == 'function') {
136    // auto-load cart if QS_CART_SET exists
137    QB_CART_DATA();
138  }
139  $(document).on('change', '.qs-cart-option', function () {
140    var option_chosen = CHOSEN_OPTIONS($(this).closest('form'));
141    var option_available = !1;
142    var v_option = null;
143    var un_option = null;
144    $.each(qs_options, function (k, v) {
145      if (JSON.stringify(option_chosen) == JSON.stringify(v.options)) {
146        if (v.available) {
147          option_available = !0;
148          v_option = v;
149        }
150        un_option = v;
151      }
152    });
153    if (typeof QS_PRODUCT_VARIANT_BEFORE_CHANGED == 'function' && un_option != null) {
154      QS_PRODUCT_VARIANT_BEFORE_CHANGED(un_option);
155    }
156    var buybtn_selector = '.qs-cart-submit:first';
157    if ($(buybtn_selector).length == 0) {
158      if ($('.qty-cart-submit').length > 0) {
159        buybtn_selector = '.qty-cart-submit';
160      }
161    }
162    if (option_available) {
163      if (buy_btn_text && buy_btn_text.length !== 0) {
164        $(buybtn_selector).val(buy_btn_text).html(buy_btn_text);
165      }
166      $(buybtn_selector).removeAttr('disabled');
167    } else {
168      buy_btn_text = buy_btn_text == null ? $(buybtn_selector).length > 0 ? $(buybtn_selector).html().length > 0 ? $(buybtn_selector).html() : $(buybtn_selector).val() : '' : buy_btn_text;
169      var soldout_txt = $(buybtn_selector).attr('data-unavailable-txt') ? $(buybtn_selector).attr('data-unavailable-txt') : 'Not available';
170      $(buybtn_selector).val(soldout_txt).text(soldout_txt);
171      $(buybtn_selector).prop('disabled', 'disabled');
172    }
173
174    // Trigger variant changed
175    if (un_option != null) {
176      // Update display prices
177      $('.qs-product-price').html(un_option.price).show();
178      if (un_option.before_price_raw > 0) $('.qs-product-before-price').html(un_option.before_price).show();
179      if (un_option.before_price_raw <= 0) $('.qs-product-before-price').hide();
180      if (typeof QS_PRODUCT_VARIANT_CHANGED == 'function') {
181        QS_PRODUCT_VARIANT_CHANGED(un_option);
182        qbDispatchEvent({
183          type: "QB_ProductVariantChanged",
184          option: un_option,
185          time: new Date()
186        });
187      }
188    } else {
189      if (typeof QS_PRODUCT_VARIANT_NOT_CHANGED == 'function') {
190        QS_PRODUCT_VARIANT_NOT_CHANGED();
191        qbDispatchEvent({
192          type: "QB_ProductVariantNotChanged",
193          option: null,
194          time: new Date()
195        });
196      }
197    }
198  });
199  $(document).on('submit', '.qs-cart', function () {
200    var validationError = false;
201    var preventForm = $(this).attr('data-prevent') && $(this).attr('data-prevent') == '1' ? true : false;
202    if (preventForm) {
203      return false;
204    }
205    $('.container').find('.qs-cart-product-property').each(function () {
206      if ($(this).prop('required') && $(this).val().trim() === '') {
207        validationError = true;
208      }
209    });
210    if (validationError) {
211      return false;
212    }
213    if (typeof QS_CART_BEFORE_SUBMIT == 'function') {
214      if (QS_CART_BEFORE_SUBMIT($(this)) == false) {
215        return false;
216      }
217    }
218    var product_id = $(this).find('.qs-cart-pid').val();
219    var variant = 0;
220    var qty = $(this).find('.qs-cart-qty').val();
221    var properties = $('.container').find('.qs-cart-product-property').serializeArray();
222    var error = !1;
223    if (product_id > 0 && qty > 0) {
224      if (typeof qs_options != 'undefined' && qs_options != null) {
225        var option_chosen = CHOSEN_OPTIONS($(this).closest('form'));
226        $.each(qs_options, function (k, v) {
227          if (JSON.stringify(option_chosen) == JSON.stringify(v.options)) {
228            if (v.available) {
229              variant = v.id;
230            } else {
231              var soldout_txt = $('.qs-cart-submit').attr('data-unavailable-txt') ? $('.qs-cart-submit').attr('data-unavailable-txt') : 'Not available';
232              alert(soldout_txt);
233              error = !0;
234            }
235            return !1;
236          }
237        });
238      }
239      if (!error) {
240        var _document$body$datase;
241        var eventId = Math.ceil(Math.random() * 10000000);
242        var post_data = {
243          product_id: product_id,
244          qty: qty,
245          variant: variant,
246          properties: properties,
247          eventId: eventId,
248          page: (_document$body$datase = document.body.dataset) === null || _document$body$datase === void 0 ? void 0 : _document$body$datase.qbPage
249        };
250        var post_url = typeof qs_store_url === 'undefined' ? '' : qs_store_url;
251        $.post(post_url + "/cart/add", post_data, function (data) {
252          if (typeof QS_CART_PRODUCT_ADDED == 'function' && !data.error) {
253            QS_CART_PRODUCT_ADDED(data);
254            qbDispatchEvent({
255              type: "QB_CartAdded",
256              itemData: data,
257              time: new Date(),
258              eventId: eventId
259            });
260            qbDispatchEvent({
261              type: "QB_CartUpdated",
262              itemData: data,
263              time: new Date()
264            });
265          } else {
266            if (data.error) {
267              alert(data.error);
268              return !1;
269            } else {
270              location.reload();
271            }
272          }
273        }, "json");
274      }
275    } else {
276      alert('Quickbutik Form Markup Error - We are sorry, if you dont understand this.');
277    }
278    return !1;
279  });
280  $('.qs-cart-update').submit(function () {
281    var item = $(this);
282    var product_id = $(item).find('.qs-cart-pid').val();
283    var qty = $(item).find('.qs-cart-qty').val();
284    var post_url = typeof qs_store_url === 'undefined' ? '' : qs_store_url;
285    if (typeof product_id != "undefined" && qty > 0) {
286      $.post(post_url + "/cart/update", {
287        product_id: product_id,
288        qty: qty
289      }, function (data) {
290        if (typeof QS_CART_PRODUCT_UPDATED == 'function') {
291          QS_CART_PRODUCT_UPDATED(data);
292          qbDispatchEvent({
293            type: "QB_CartUpdated",
294            itemData: data,
295            time: new Date()
296          });
297        } else {
298          location.reload();
299        }
300      }, "json");
301    }
302    return !1;
303  });
304  $(document).on('change', '.qs-cart-update input', function () {
305    var item = $(this).closest('.qs-cart-item');
306    var product_id = $(item).find('.qs-cart-pid').val();
307    var qtySelector = $(this);
308    var qty = qtySelector.val();
309    var post_url = typeof qs_store_url === 'undefined' ? '' : qs_store_url;
310    if (typeof product_id != "undefined" && qty > 0) {
311      $.post(post_url + "/cart/update", {
312        product_id: product_id,
313        qty: qty
314      }, function (data) {
315        if (typeof QS_CART_PRODUCT_UPDATED == 'function') {
316          QS_CART_PRODUCT_UPDATED(data);
317          qbDispatchEvent({
318            type: "QB_CartUpdated",
319            itemData: data,
320            time: new Date()
321          });
322          if (data.item_qty) {
323            qtySelector.val(data.item_qty);
324          }
325        } else {
326          location.reload();
327        }
328      }, "json");
329    }
330    return !1;
331  });
332  $(document).on('click', '.qs-cart-delete', function (e) {
333    var product_id = $(this).attr('data-pid');
334    var selector = $(this);
335    if (typeof QS_CART_PRODUCT_BEFORE_DELETE == 'function') {
336      if (QS_CART_PRODUCT_BEFORE_DELETE(product_id) == !1) {
337        return !1;
338      }
339    }
340    if (typeof product_id != "undefined") {
341      var post_url = typeof qs_store_url === 'undefined' ? '' : qs_store_url;
342      $(".qs-cart-delete").each(function () {
343        $(this).prop("disabled", true);
344      });
345      $.post(post_url + "/cart/delete", {
346        product_id: product_id
347      }, function (data) {
348        if (typeof QS_CART_PRODUCT_DELETED == 'function') {
349          QS_CART_PRODUCT_DELETED(product_id);
350          qbDispatchEvent({
351            type: "QB_CartUpdated",
352            itemData: data,
353            time: new Date()
354          });
355          $(".qs-cart-delete").each(function () {
356            $(this).prop("disabled", false);
357          });
358        } else {
359          location.reload();
360        }
361      }, "json");
362    }
363    return !1;
364  });
365  (function (_qs_store_apps_data) {
366    // Add support for youtube videos in product images
367
368    if (((_qs_store_apps_data = qs_store_apps_data) === null || _qs_store_apps_data === void 0 || (_qs_store_apps_data = _qs_store_apps_data.product) === null || _qs_store_apps_data === void 0 ? void 0 : _qs_store_apps_data.url) != undefined) {
369      var productImages = document.querySelectorAll('#detailSlider .swiper-wrapper:first-child .swiper-slide');
370      productImages.forEach(function (image) {
371        var imageContent = image.innerHTML;
372        if (imageContent.indexOf('youtube-video-thumbnail-') >= 0) {
373          try {
374            var youtubeThumbnail = imageContent.match(/youtube-video-thumbnail-(.*?).jpg/)[1];
375            qs_store_apps_data.product.images.forEach(function (productImage) {
376              if (productImage.url.indexOf('youtube-video-thumbnail-') >= 0 && productImage.url.indexOf(youtubeThumbnail) >= 0) {
377                image.innerHTML = "<iframe style=\"aspect-ratio: 16 / 9;width: 100%;\" src=\"https://www.youtube.com/embed/" + productImage.youtube_video_id + "?rel=0\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope;\" allowfullscreen></iframe>";
378              }
379            });
380          } catch (error) {
381            // No youtube thumbnails
382          }
383        }
384      });
385    }
386  })();
387});

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.