1(function ($, root, undefined) { 2 "use strict"; 3 /** 4 * Sets product images for the chosen variation 5 */ 6 var 7 ideapark_variation_gallery_cache = {}, 8 ideapark_variation_default_slider = null, 9 ideapark_variation_default_thumbs = null, 10 ideapark_variation_gallery_loaded = false, 11 ideapark_variation_gallery_timer = null; 12 13 $.fn.wc_variations_image_update = function (variation) { 14 var $form = this; 15 IdeaparkQueue.enqueue(() => ideapark_variations_image_update($form, variation)); 16 }; 17 18 $(document.body).trigger('ideapark-variations-init'); 19 20 var ideapark_variations_image_update = function ($form, variation) { 21 return new Promise((resolve, reject) => { 22 23 if (variation && variation.has_variation_gallery_images) { 24 if (typeof ideapark_variation_gallery_cache[variation.variation_id] !== 'undefined') { 25 ideapark_switch_variation_gallery(ideapark_variation_gallery_cache[variation.variation_id]); 26 resolve(); 27 } else { 28 $.ajax({ 29 url : ideapark_wp_vars.ajaxUrl, 30 type : 'POST', 31 data : { 32 action : 'ideapark_variation_images', 33 variation_id: variation.variation_id, 34 is_quickview: $form.closest('.product').hasClass('c-product--quick-view') ? 1 : 0, 35 }, 36 success: function (html) { 37 ideapark_variation_gallery_cache[variation.variation_id] = html; 38 ideapark_switch_variation_gallery(html); 39 resolve(); 40 } 41 }); 42 } 43 } else { 44 var f = function () { 45 var $product = $form.closest('.product'); 46 $product.find('.c-product__slider').each(function(){ 47 var $product_gallery = $(this), 48 $product_img_wrap = $product_gallery.find('.c-product__slider-item').first(), 49 $product_img = $product_img_wrap.find('.c-product__slider-img'), 50 $product_link = $product_img_wrap.find('a').first(), 51 $product_zoom = $product_img_wrap.find('.js-product-zoom'), 52 $gallery_img = $product.find('.c-product__thumbs-img').first(); 53 54 if (ideapark_variation_default_slider === null) { 55 ideapark_variation_default_slider = $("<div />").append($product_gallery.clone()).html(); 56 } 57 58 if (variation && variation.image && variation.image.src && variation.image.src.length > 1) { 59 $product_gallery.data('featured', true); 60 61 $product_img.wc_set_variation_attr('src', variation.image.src); 62 $product_img.wc_set_variation_attr('height', variation.image.src_h); 63 $product_img.wc_set_variation_attr('width', variation.image.src_w); 64 $product_img.wc_set_variation_attr('srcset', variation.image.srcset); 65 $product_img.wc_set_variation_attr('sizes', variation.image.sizes); 66 $product_img.wc_set_variation_attr('title', variation.image.title); 67 $product_img.wc_set_variation_attr('alt', variation.image.alt); 68 $product_img.wc_set_variation_attr('data-src', variation.image.full_src); 69 $product_img.wc_set_variation_attr('data-large_image', variation.image.full_src); 70 $product_img.wc_set_variation_attr('data-large_image_width', variation.image.full_src_w); 71 $product_img.wc_set_variation_attr('data-large_image_height', variation.image.full_src_h); 72 $product_link.wc_set_variation_attr('href', variation.image.full_src); 73 $product_img_wrap.wc_set_variation_attr('data-thumb', variation.image.src); 74 if ($product_zoom.length) { 75 var old_img = $product_zoom.data('img'); 76 $product_zoom.wc_set_variation_attr('data-img', variation.image.full_src); 77 $product_zoom.data('img', $product_zoom.attr('data-img')); 78 if (old_img != $product_zoom.data('img')) { 79 $product_zoom.removeClass('init').trigger('zoom.destroy'); 80 ideapark_init_zoom(); 81 } 82 } 83 84 $gallery_img.wc_set_variation_attr('srcset', variation.image.srcset); 85 $gallery_img.wc_set_variation_attr('src', variation.image.gallery_thumbnail_src); 86 87 var $carousel = $('.js-single-product-carousel.owl-loaded'); 88 if ($carousel.length === 1) { 89 $carousel.trigger('to.owl.carousel', [0, 100]); 90 } 91 } else { 92 $product_img.wc_reset_variation_attr('src'); 93 $product_img.wc_reset_variation_attr('width'); 94 $product_img.wc_reset_variation_attr('height'); 95 $product_img.wc_reset_variation_attr('srcset'); 96 $product_img.wc_reset_variation_attr('sizes'); 97 $product_img.wc_reset_variation_attr('title'); 98 $product_img.wc_reset_variation_attr('data-caption'); 99 $product_img.wc_reset_variation_attr('alt'); 100 $product_img.wc_reset_variation_attr('data-src'); 101 $product_img.wc_reset_variation_attr('data-large_image'); 102 $product_img.wc_reset_variation_attr('data-large_image_width'); 103 $product_img.wc_reset_variation_attr('data-large_image_height'); 104 $product_img_wrap.wc_reset_variation_attr('data-thumb'); 105 if ($product_zoom.length) { 106 $product_zoom.wc_reset_variation_attr('data-img'); 107 $product_zoom.data('img', $product_zoom.attr('data-img')); 108 $product_zoom.removeClass('init').trigger('zoom.destroy'); 109 ideapark_init_zoom(); 110 } 111 $product_link.wc_reset_variation_attr('href'); 112 $gallery_img.wc_reset_variation_attr('src'); 113 $gallery_img.wc_reset_variation_attr('srcset'); 114 } 115 }); 116 117 118 resolve(); 119 }; 120 121 if (ideapark_variation_gallery_loaded) { 122 ideapark_switch_variation_gallery('', f); 123 } else { 124 f(); 125 } 126 } 127 128 window.setTimeout(function () { 129 $(window).trigger('resize'); 130 }, 20); 131 }); 132 }; 133 134 var ideapark_switch_variation_gallery = function (html, callback) { 135 var is_switch_to_default = false;
136 137 if (html === '' && ideapark_variation_default_slider) { 138 is_switch_to_default = true; 139 html = ideapark_variation_default_slider; 140 if (ideapark_variation_default_thumbs) { 141 html += ideapark_variation_default_thumbs; 142 } 143 } 144 145 if (!html) { 146 if (typeof callback === 'function') { 147 callback(); 148 } 149 return; 150 } 151 152 var $slider = $('.c-product__slider'), $thumbs = $('.c-product__thumbs'), 153 $gallery = $('.c-product__gallery'); 154 155 var hash = $slider.data('hash'); 156 var result = html.match(/data-hash="([a-f0-9]*)"/); 157 if (hash && result !== null) { 158 var hash_new = Array.from(result)[1]; 159 160 if (hash == hash_new && !$slider.data('featured')) { 161 if (typeof callback === 'function') { 162 callback(); 163 } 164 return; 165 } 166 $slider.data('featured', false); 167 } 168 169 $slider.addClass('h-fade--out'); 170 $thumbs.addClass('h-fade--out'); 171 172 var $new = $("<div class='h-hidden' />").append(html); 173 $new.find('.c-play--disabled').removeClass('c-play--disabled'); 174 $new.find('.h-fade').addClass('h-fade--out'); 175 $new.find('.c-product__thumbs-item').first().addClass('active'); 176 177 if (ideapark_variation_gallery_timer !== null) { 178 clearTimeout(ideapark_variation_gallery_timer); 179 ideapark_variation_gallery_timer = null; 180 } 181 182 ideapark_variation_gallery_timer = setTimeout(function () { 183 if ($slider.length) { 184 if ($slider.hasClass('owl-carousel')) { 185 $slider 186 .removeClass('owl-carousel') 187 .trigger("destroy.owl.carousel"); 188 } 189 $slider 190 .find('.init,.active') 191 .removeClass('init active'); 192 193 if (ideapark_variation_default_slider === null) { 194 ideapark_variation_default_slider = $("<div />").append($slider.clone()).html(); 195 } 196 $slider.remove(); 197 } 198 199 if ($thumbs.length) { 200 if ($thumbs.hasClass('owl-carousel')) { 201 $thumbs 202 .removeClass('owl-carousel') 203 .trigger("destroy.owl.carousel"); 204 } 205 $thumbs 206 .find('.init,.active') 207 .removeClass('init active'); 208 209 if (ideapark_variation_default_thumbs === null) { 210 ideapark_variation_default_thumbs = $("<div />").append($thumbs.clone()).html(); 211 } 212 $thumbs.remove(); 213 } else { 214 ideapark_variation_default_thumbs = ''; 215 } 216 217 var $slider_new = $('.c-product__slider', $new), $thumbs_new = $('.c-product__thumbs', $new); 218 219 if ($slider_new.length) { 220 $slider_new.detach().appendTo($gallery); 221 ideapark_init_product_carousel(); 222 ideapark_init_zoom(); 223 $slider_new.removeClass('h-fade--out'); 224 } 225 226 if ($thumbs_new.length) { 227 $thumbs_new.detach().appendTo($gallery); 228 ideapark_init_product_thumbs_carousel(); 229 $thumbs_new.removeClass('h-fade--out'); 230 } 231 232 $new.remove(); 233 234 ideapark_variation_gallery_loaded = ! is_switch_to_default; 235 236 if (typeof callback === 'function') { 237 callback(); 238 } 239 ideapark_variation_gallery_timer = null; 240 }, 300); 241 }; 242})(jQuery, this);
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.