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_gallery = $product.find('.c-product__slider'), 47 $product_img_wrap = $product_gallery.find('.c-product__slider-item').first(), 48 $product_img = $product_img_wrap.find('.c-product__slider-img'), 49 $product_link = $product_img_wrap.find('a').first(), 50 $product_zoom = $product_img_wrap.find('.js-product-zoom'), 51 $gallery_img = $product.find('.c-product__thumbs-img').first(); 52 53 if (ideapark_variation_default_slider === null) { 54 ideapark_variation_default_slider = $("<div />").append($product_gallery.clone()).html(); 55 } 56 57 if (variation && variation.image && variation.image.src && variation.image.src.length > 1) { 58 $product_gallery.data('featured', true); 59 60 $product_img.wc_set_variation_attr('src', variation.image.src); 61 $product_img.wc_set_variation_attr('height', variation.image.src_h); 62 $product_img.wc_set_variation_attr('width', variation.image.src_w); 63 $product_img.wc_set_variation_attr('srcset', variation.image.srcset); 64 $product_img.wc_set_variation_attr('sizes', variation.image.sizes); 65 $product_img.wc_set_variation_attr('title', variation.image.title); 66 $product_img.wc_set_variation_attr('alt', variation.image.alt); 67 $product_img.wc_set_variation_attr('data-src', variation.image.full_src); 68 $product_img.wc_set_variation_attr('data-large_image', variation.image.full_src); 69 $product_img.wc_set_variation_attr('data-large_image_width', variation.image.full_src_w); 70 $product_img.wc_set_variation_attr('data-large_image_height', variation.image.full_src_h); 71 $product_link.wc_set_variation_attr('href', variation.image.full_src); 72 $product_img_wrap.wc_set_variation_attr('data-thumb', variation.image.src); 73 if ($product_zoom.length) { 74 var old_img = $product_zoom.data('img'); 75 $product_zoom.wc_set_variation_attr('data-img', variation.image.full_src); 76 $product_zoom.data('img', $product_zoom.attr('data-img')); 77 if (old_img != $product_zoom.data('img')) { 78 $product_zoom.removeClass('init').trigger('zoom.destroy'); 79 ideapark_init_zoom(); 80 } 81 } 82 83 $gallery_img.wc_set_variation_attr('srcset', variation.image.srcset); 84 $gallery_img.wc_set_variation_attr('src', variation.image.gallery_thumbnail_src); 85 86 var $carousel = $('.js-single-product-carousel.owl-loaded'); 87 if ($carousel.length === 1) { 88 $carousel.trigger('to.owl.carousel', [0, 100]); 89 } 90 } else { 91 $product_img.wc_reset_variation_attr('src'); 92 $product_img.wc_reset_variation_attr('width'); 93 $product_img.wc_reset_variation_attr('height'); 94 $product_img.wc_reset_variation_attr('srcset'); 95 $product_img.wc_reset_variation_attr('sizes'); 96 $product_img.wc_reset_variation_attr('title'); 97 $product_img.wc_reset_variation_attr('data-caption'); 98 $product_img.wc_reset_variation_attr('alt'); 99 $product_img.wc_reset_variation_attr('data-src'); 100 $product_img.wc_reset_variation_attr('data-large_image'); 101 $product_img.wc_reset_variation_attr('data-large_image_width'); 102 $product_img.wc_reset_variation_attr('data-large_image_height'); 103 $product_img_wrap.wc_reset_variation_attr('data-thumb'); 104 if ($product_zoom.length) { 105 $product_zoom.wc_reset_variation_attr('data-img'); 106 $product_zoom.data('img', $product_zoom.attr('data-img')); 107 $product_zoom.removeClass('init').trigger('zoom.destroy'); 108 ideapark_init_zoom(); 109 } 110 $product_link.wc_reset_variation_attr('href'); 111 $gallery_img.wc_reset_variation_attr('src'); 112 $gallery_img.wc_reset_variation_attr('srcset'); 113 } 114 115 resolve(); 116 }; 117 118 if (ideapark_variation_gallery_loaded) { 119 ideapark_switch_variation_gallery('', f); 120 } else { 121 f(); 122 } 123 } 124 125 window.setTimeout(function () { 126 $(window).trigger('resize'); 127 }, 20); 128 }); 129 }; 130 131 var ideapark_switch_variation_gallery = function (html, callback) { 132 var is_switch_to_default = false;
133 134 if (html === '' && ideapark_variation_default_slider) { 135 is_switch_to_default = true; 136 html = ideapark_variation_default_slider; 137 if (ideapark_variation_default_thumbs) { 138 html += ideapark_variation_default_thumbs; 139 } 140 } 141 142 if (!html) { 143 if (typeof callback === 'function') { 144 callback(); 145 } 146 return; 147 } 148 149 var $slider = $('.c-product__slider'), $thumbs = $('.c-product__thumbs'), 150 $gallery = $('.c-product__gallery'); 151 152 var hash = $slider.data('hash'); 153 var result = html.match(/data-hash="([a-f0-9]*)"/); 154 if (hash && result !== null) { 155 var hash_new = Array.from(result)[1]; 156 157 if (hash == hash_new && !$slider.data('featured')) { 158 if (typeof callback === 'function') { 159 callback(); 160 } 161 return; 162 } 163 $slider.data('featured', false); 164 } 165 166 $slider.addClass('h-fade--out'); 167 $thumbs.addClass('h-fade--out'); 168 169 var $new = $("<div class='h-hidden' />").append(html); 170 $new.find('.c-play--disabled').removeClass('c-play--disabled'); 171 $new.find('.h-fade').addClass('h-fade--out'); 172 $new.find('.c-product__thumbs-item').first().addClass('active'); 173 174 if (ideapark_variation_gallery_timer !== null) { 175 clearTimeout(ideapark_variation_gallery_timer); 176 ideapark_variation_gallery_timer = null; 177 } 178 179 ideapark_variation_gallery_timer = setTimeout(function () { 180 if ($slider.length) { 181 if ($slider.hasClass('owl-carousel')) { 182 $slider 183 .removeClass('owl-carousel') 184 .trigger("destroy.owl.carousel"); 185 } 186 $slider 187 .find('.init,.active') 188 .removeClass('init active'); 189 190 if (ideapark_variation_default_slider === null) { 191 ideapark_variation_default_slider = $("<div />").append($slider.clone()).html(); 192 } 193 $slider.remove(); 194 } 195 196 if ($thumbs.length) { 197 if ($thumbs.hasClass('owl-carousel')) { 198 $thumbs 199 .removeClass('owl-carousel') 200 .trigger("destroy.owl.carousel"); 201 } 202 $thumbs 203 .find('.init,.active') 204 .removeClass('init active'); 205 206 if (ideapark_variation_default_thumbs === null) { 207 ideapark_variation_default_thumbs = $("<div />").append($thumbs.clone()).html(); 208 } 209 $thumbs.closest(".c-product__thumbs-outer").remove(); 210 } else { 211 ideapark_variation_default_thumbs = ''; 212 } 213 214 var $slider_new = $('.c-product__slider', $new), $thumbs_new = $('.c-product__thumbs', $new); 215 216 if ($slider_new.length) { 217 $slider_new.detach().appendTo($gallery); 218 ideapark_init_product_carousel(); 219 ideapark_init_zoom(); 220 $slider_new.removeClass('h-fade--out'); 221 } 222 223 if ($thumbs_new.length) { 224 $gallery.append('<div class="c-product__thumbs-outer"></div>'); 225 $thumbs_new.detach().appendTo($gallery.find(".c-product__thumbs-outer")); 226 ideapark_init_product_thumbs_carousel(); 227 $thumbs_new.removeClass('h-fade--out'); 228 } 229 230 $new.remove(); 231 232 ideapark_variation_gallery_loaded = !is_switch_to_default; 233 234 if (typeof callback === 'function') { 235 callback(); 236 } 237 ideapark_variation_gallery_timer = null; 238 }, 300); 239 }; 240})(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.