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.