;(function ($){
'use strict';
$.fn.tawcvs_variation_swatches_form=function (){
return this.each(function (){
var $form=$(this);
if(typeof $form.find(".tawcvs-available-product-variation").data("product_variations")!=="undefined"){
$form.data("product_variations", $form.find(".tawcvs-available-product-variation").data("product_variations"))
.trigger('reload_product_variations')
.trigger('update_variation_values');
}
$form
.addClass('swatches-support')
.on("found_variation", function (event, variation){
$form.change_variation_image_on_shop_page(variation);
})
.on("reset_image", function (event){
$form.change_variation_image_on_shop_page(false);
})
.on('click', '.swatch', function (e){
e.preventDefault();
e.stopImmediatePropagation();
var $el=$(this);
let $select=false, value=false;
if($el.data('clicking')) return;
$el.data('clicking', true);
setTimeout(()=> $el.removeData('clicking'), 50);
if(!$("body").hasClass("single-product") &&
$("body").find(".wc-product-table-wrapper").length){
let attribute_name=$el.closest('.tawcvs-swatches').data("attribute_name");
$select=$el.closest('.variations').find('select[data-attribute_name="' + attribute_name + '"]');
value=$el.attr('data-value');
}else{
$select=$el.closest('.value').find('select');
value=$el.attr('data-value');
}
if($el.hasClass('disabled')){
return;
}
if(!$select.length){
if($form.closest(".woosb-product").length){
$select=$el.closest('.select').find('select');
}}
$el.parents('.tawcvs-swatches').find(".swatch.selected").each(function (){
$(this).not($el).removeClass("selected");
$select.val('');
})
$select.trigger('focusin');
if(!$select.find('option[value="' + value + '"]').length){
$el.siblings('.swatch').removeClass('selected');
$select.val('').change();
$form.trigger('tawcvs_no_matching_variations', [$el]);
return;
}
if($el.hasClass('selected')){
$select.val('');
$el.removeClass('selected');
if($el.attr('type')=='radio'){
setTimeout(function(){
$el.prop('checked', false);
}, 100);
}}else{
$el.addClass('selected').siblings('.selected').removeClass('selected');
$select.val(value);
if($el.attr('type')=='radio'){
setTimeout(function(){
$el.prop('checked', true);
}, 100);
}}
$select.change();
})
.on('click', '.reset_variations', function (){
$form.find('.swatch.selected').removeClass('selected');
if(!$form.find('.swatch.disabled').hasClass('blur-cross')){
$form.find('.swatch.disabled').removeClass('disabled');
}
if($form.find('input[type="radio"]').length > 1){
$form.find('input[type="radio"]').prop('checked', false);
}})
.on('woocommerce_update_variation_values', function (){
setTimeout(function (){
$form.find('.variation-selector').each(function (){
var $variationSelector=$(this),
$options=$variationSelector.find('select').find('option'),
$selected=$options.filter(':selected'),
values=[];
$options.each(function (index, option){
if(option.value!==''){
values.push(option.value);
}});
$variationSelector.closest('.value').find('.swatch').each(function (){
var $swatch=$(this),
value=$swatch.attr('data-value');
$swatch.closest('.swatch-item-wrapper').show();
if(values.indexOf(value) > -1){
if(!$swatch.hasClass('blur-cross')){
$swatch.removeClass('disabled');
}}else{
$swatch.addClass('disabled');
if($swatch.closest('.tawcvs-swatches').hasClass('oss-hide')){
$swatch.closest('.swatch-item-wrapper').hide();
}
if($selected.length&&value===$selected.val()){
$swatch.removeClass('selected');
}}
});
});
}, 50);
})
.on('tawcvs_no_matching_variations', function (){
window.alert(wc_add_to_cart_variation_params.i18n_no_matching_variations_text);
});
});
};
$.fn.change_variation_image_on_shop_page=function (variation){
var $product=$(this).closest('.product'),
$product_img=$product.find('.woocommerce-LoopProduct-link img');
if($product_img.length!==1){
return false;
}
if(variation&&variation.image&&variation.image.src&&variation.image.src.length > 1){
$product_img.wc_set_variation_attr('src', variation.image.src);
$product_img.wc_set_variation_attr('height', variation.image.src_h);
$product_img.wc_set_variation_attr('width', variation.image.src_w);
$product_img.wc_set_variation_attr('srcset', variation.image.srcset);
$product_img.wc_set_variation_attr('sizes', variation.image.sizes);
$product_img.wc_set_variation_attr('title', variation.image.title);
$product_img.wc_set_variation_attr('data-caption', variation.image.caption);
$product_img.wc_set_variation_attr('alt', variation.image.alt);
$product_img.wc_set_variation_attr('data-src', variation.image.full_src);
$product_img.wc_set_variation_attr('data-large_image', variation.image.full_src);
$product_img.wc_set_variation_attr('data-large_image_width', variation.image.full_src_w);
$product_img.wc_set_variation_attr('data-large_image_height', variation.image.full_src_h);
}else{
$product_img.wc_reset_variation_attr('src');
$product_img.wc_reset_variation_attr('width');
$product_img.wc_reset_variation_attr('height');
$product_img.wc_reset_variation_attr('srcset');
$product_img.wc_reset_variation_attr('sizes');
$product_img.wc_reset_variation_attr('title');
$product_img.wc_reset_variation_attr('data-caption');
$product_img.wc_reset_variation_attr('alt');
$product_img.wc_reset_variation_attr('data-src');
$product_img.wc_reset_variation_attr('data-large_image');
$product_img.wc_reset_variation_attr('data-large_image_width');
$product_img.wc_reset_variation_attr('data-large_image_height');
}}
function toggle_hidden_variation_btn(){
const resetVariationNodes=document.getElementsByClassName('reset_variations');
if(resetVariationNodes.length){
Array.prototype.forEach.call(resetVariationNodes, function (resetVariationEle){
let observer=new MutationObserver(function (){
if(resetVariationEle.style.visibility!=='hidden'){
resetVariationEle.style.display='block';
}else{
resetVariationEle.style.display='none';
}});
observer.observe(resetVariationEle, {attributes: true, childList: true});
})
}}
function logPerformanceInfo(){
if(typeof tawcvs_config!=='undefined'&&console&&console.log){
const $forms=$('.variations_form');
const $largeProductForms=$forms.filter(function(){
const variationData=$(this).find('.tawcvs-available-product-variation').data('product_variations');
return variationData&&variationData.length > tawcvs_config.large_product_threshold;
});
if($largeProductForms.length > 0){
console.log('TAWCVS: PHP-optimized handling for', $largeProductForms.length, 'large product(s)');
$largeProductForms.each(function(){
const variationData=$(this).find('.tawcvs-available-product-variation').data('product_variations');
if(variationData){
console.log('TAWCVS: Loaded', variationData.length, 'variations instantly for product');
}});
}}
}
function initializeSwatches(){
$('.variations_form').tawcvs_variation_swatches_form().trigger('woocommerce_update_variation_values');
$(document.body).trigger('tawcvs_initialized');
toggle_hidden_variation_btn();
logPerformanceInfo();
}
let reinitTimeout;
function throttledReinit(){
clearTimeout(reinitTimeout);
reinitTimeout=setTimeout(()=> {
var $variations_form=$('.variations_form:not(.swatches-support)');
if($variations_form.length > 0){
$variations_form.each(function (){
$(this).wc_variation_form();
});
$variations_form.tawcvs_variation_swatches_form();
}}, 50);
}
$(function (){
initializeSwatches();
});
$(document).ajaxComplete(function (){
throttledReinit();
});
$(document).on('updated_wc_div wc_fragments_refreshed', function(){
throttledReinit();
});
})(jQuery);
(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const t="email",n="phone",r="name",l={[t]:["email","e-mail","mail","email address"],[n]:["phone","tel","mobile","cell","telephone","phone number"],[r]:["name","full-name","full name","full_name","fullname","first-name","first name","first_name","firstname","last-name","last name","last_name","lastname","given-name","given name","given_name","givenname","family-name","family name","family_name","familyname","fname","lname","first","last","your-name","your name"]};function a(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function i(e){const t=a(e),n=t.lastIndexOf("@");if(-1===n)return t;const r=t.slice(n+1);return["gmail.com","googlemail.com"].includes(r)?`${t.slice(0,n).replace(/\./g,"")}@${r}`:t}function u(e){const t=a(e),n=t.replace(/\D/g,"");return t.startsWith("+")?`+${n}`:n}function s(e){const t=e.filter(e=>{let{type:t}=e;return t===r}).map(e=>{let{value:t}=e;return a(t)}).filter(Boolean);if(!t.length)return;const[n,...l]=1===t.length?t[0].split(" "):t;return{first_name:n,...l?.length>0?{last_name:l.join(" ")}:{}}}function o(e){return e.find(e=>{let{type:n}=e;return n===t})?.value}function c(e){return e.find(e=>{let{type:t}=e;return t===n})?.value}e.g.document.addEventListener("wpcf7mailsent",m=>{const f=e.g._googlesitekit?.gtagUserData,g=f?function(e){if(!(e&&e instanceof HTMLFormElement))return;const m=new FormData(e);return function(e){const t=[["address",s(e)],["email",o(e)],["phone_number",c(e)]].filter(e=>{let[,t]=e;return t});if(0!==t.length)return Object.fromEntries(t)}(Array.from(m.entries()).map(s=>{let[o,c]=s;const m=e.querySelector(`[name='${o}']`),f=m?.type;return"hidden"===f||"submit"===f?null:function(e){let{type:s,name:o,value:c,label:m}=e||{};switch(s=a(s),o=a(o),c=a(c),m=function(e){return e&&"string"==typeof e?e.trim().toLowerCase().replace(/\s*\*+\s*$/,"").replace(/\s*\(required\)\s*$/i,"").replace(/\s*:\s*$/,"").trim():""}(m),s){case"email":return{type:t,value:i(c)};case"tel":return{type:n,value:u(c)}}return function(e){if(!e)return!1;const t=i(e);return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}(c)||l[t].includes(o)||l[t].includes(m)?{type:t,value:i(c)}:l[n].includes(o)||l[n].includes(m)?{type:n,value:u(c)}:l[r].includes(o)||l[r].includes(m)?{type:r,value:a(c)}:function(e){if(!e)return!1;if(!function(e){const t=e.replace(/\D/g,"");return!(t.length<7||t.length<e.length/2)&&/^[\s\-()+.\d]*$/.test(e)}(e))return!1;const t=u(e);if(!/^\+?\d{7,}$/.test(t))return!1;const n=/[\s\-()+.]/.test(e),r=e.trim().startsWith("+");return!(!n&&!r)}(c)?{type:n,value:u(c)}:null}({type:f,label:m?.id?e.querySelector(`label[for='${m?.id}']`)?.textContent:void 0,name:o,value:c})}).filter(Boolean))}(m.target):null;e.g._googlesitekit?.gtagEvent?.("contact",{event_category:m.detail.contactFormId,event_label:m.detail.unitTag,...g?{user_data:g}:{}})})})();