PageSourceSearch

https://truegrace.gr/wp-content/themes/moderno/assets/js/add-to-cart-variation-fix.js?ver=1.44

js truegrace.gr collected 2026-10-07 22:24:38 UTC 8,633 bytes, 240 lines download raw bytes

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.