1/* JavaScript */ 2var ckas_jq = null; 3if( jQuery && typeof jQuery.fn.wc_variation_form == 'function' ){ 4 ckas_jq = jQuery; 5} else if( $ && typeof $.fn.wc_variation_form == 'function' ){ 6 ckas_jq = $; 7} 8document.addEventListener('click', function(e){ 9 var input = e.target; 10 var inputp = input.closest('.cgkit-swatch'); 11 if( input.classList.contains('cgkit-swatch') || inputp ) { 12 if( inputp ){ 13 input = inputp; 14 } 15 e.preventDefault(); 16 e.stopPropagation(); 17 if( input.classList.contains('cgkit-disabled') ) { 18 var form = input.closest('form'); 19 cgkitResetAttributeSwatches(form); 20 input.classList.remove('cgkit-disabled'); 21 var $oos_txt = ''; 22 if( input.classList.contains('cgkit-as-outofstock') ) { 23 $oos_txt = ' - ' + input.getAttribute('data-oos-text'); 24 } 25 input.setAttribute('title', input.getAttribute('data-attribute-text') + $oos_txt); 26 } 27 cgkitUpdateAttributeSwatch(input); 28 setTimeout(function(){cgkitUpdateAttributeSwatchImage(input);}, 200); 29 } 30 if( input.classList.contains('reset_variations') ) { 31 e.preventDefault(); 32 e.stopPropagation(); 33 var form = input.closest('form'); 34 cgkitClearAttributeSwatches(form, true); 35 } 36 if( input.classList.contains('cgkit-as-single-atc') ) { 37 var form_parent = input.closest('.product'); 38 if( form_parent ){ 39 if( input.classList.contains('disabled') ){ 40 e.preventDefault(); 41 e.stopPropagation(); 42 } else { 43 var form = form_parent.querySelector('form.cgkit-swatch-form'); 44 if( form ){ 45 var single_atc_clk = form_parent.querySelector('.cgkit-as-single-atc-clk'); 46 var input_var = form.querySelector('input.variation_id'); 47 var variation_id = input_var.value; 48 var out_of_stock = form.querySelector('.stock.out-of-stock'); 49 if( variation_id != '' && !out_of_stock && single_atc_clk ){ 50 e.preventDefault(); 51 e.stopPropagation(); 52 single_atc_clk.value = 1; 53 cgkitAutoAddToCartVariation(form); 54 } 55 } 56 } 57 } 58 } 59}); 60var cgkit_sel_swatches = document.querySelectorAll('.cgkit-swatch.cgkit-swatch-selected'); 61cgkit_sel_swatches.forEach(function(input){ 62 cgkitUpdateAttributeSwatch2(input); 63}); 64var cgkit_update_called = false; 65if( ckas_jq ){ 66 ckas_jq('form.variations_form:not(.cgkit-swatch-form)').on('woocommerce_update_variation_values', function(){ 67 if( !cgkit_update_called ){ 68 setTimeout(cgkitUpdateAvailableAttributes(this), 200); 69 } 70 cgkit_update_called = true; 71 }); 72 ckas_jq('body').on('wc_variation_form', 'form.variations_form.cgkit-swatch-form', function(){ 73 this.classList.remove('cgkit-processing'); 74 this.classList.add('cgkit-processed'); 75 }); 76} 77var single_forms = document.querySelectorAll('form.variations_form:not(.cgkit-swatch-form)'); 78single_forms.forEach(function(single_form){ 79 setTimeout(cgkitUpdateAvailableAttributes(single_form), 200); 80}); 81function cgkitUpdateAttributeSwatch(input){ 82 var form = input.closest('form'); 83 var parent = input.closest('.cgkit-attribute-swatches'); 84 var attr_name = parent.getAttribute('data-attribute'); 85 var no_selection = parent.getAttribute('data-no-selection'); 86 var attr_value = input.getAttribute('data-attribute-value'); 87 var attr_text = input.getAttribute('data-attribute-text'); 88 var swatch_type = input.getAttribute('data-type'); 89 var attr_obj = form.querySelector('[name="'+attr_name+'"]'); 90 var clear_all = form.querySelector('.reset_variations'); 91 if( attr_obj ){ 92 if( swatch_type == 'button' ){ 93 attr_text = input.innerHTML; 94 } 95 var clone_input = null; 96 var clone_parent = input.closest('tr.cgkit-as-swatches-original'); 97 if( !clone_parent ){ 98 clone_parent = form.querySelector('tr.cgkit-as-swatches-original'); 99 } else { 100 clone_parent = form.querySelector('div.cgkit-as-swatches-clone'); 101 } 102 if( clone_parent ){ 103 var attr_value2 = attr_value.replace(/"/g, '\\"'); 104 attr_value2 = attr_value2.replace(/'/g, "\\'"); 105 clone_input = clone_parent.querySelector('[data-attribute-value="'+attr_value2+'"]'); 106 } 107 if( input.classList.contains('cgkit-swatch-selected') ) { 108 attr_value = ''; 109 input.classList.remove('cgkit-swatch-selected'); 110 if( clone_input ){ 111 clone_input.classList.remove('cgkit-swatch-selected'); 112 } 113 } else { 114 var inputs = parent.querySelectorAll('.cgkit-swatch');
115 inputs.forEach(function(oinput){ 116 oinput.classList.remove('cgkit-swatch-selected'); 117 }); 118 input.classList.add('cgkit-swatch-selected'); 119 120 if( clone_parent && clone_input ){ 121 var clone_inputs = clone_parent.querySelectorAll('.cgkit-swatch'); 122 clone_inputs.forEach(function(clone_oinput){ 123 clone_oinput.classList.remove('cgkit-swatch-selected'); 124 }); 125 clone_input.classList.add('cgkit-swatch-selected'); 126 } 127 } 128 var text_tr = input.closest('tr'); 129 var text_obj = text_tr ? text_tr.querySelector('.cgkit-chosen-attribute') : null; 130 if( text_obj ){ 131 if( attr_value == '' ){ 132 text_obj.innerHTML = no_selection; 133 text_obj.classList.add('no-selection'); 134 } else { 135 text_obj.innerHTML = attr_text; 136 text_obj.classList.remove('no-selection'); 137 } 138 } 139 attr_obj.value = attr_value; 140 if( ckas_jq ){ 141 ckas_jq(attr_obj).change(); 142 } else { 143 attr_obj.dispatchEvent(new Event('change')); 144 } 145 if( clear_all ) { 146 var select_objs = form.querySelectorAll('.cgkit-swatch.cgkit-swatch-selected'); 147 if( select_objs.length > 0 ){ 148 clear_all.style.visibility = 'visible'; 149 } else { 150 clear_all.style.visibility = 'hidden'; 151 } 152 } 153 setTimeout(cgkitUpdateAvailableAttributes(form), 100); 154 if( form.classList.contains('cgkit-swatch-form') ) { 155 setTimeout(cgkitAutoAddToCartVariation(form), 150); 156 } 157 } 158} 159function cgkitUpdateAttributeSwatch2(input){ 160 var form = input.closest('form'); 161 var parent = input.closest('.cgkit-attribute-swatches'); 162 var attr_name = parent.getAttribute('data-attribute'); 163 var no_selection = parent.getAttribute('data-no-selection'); 164 var attr_value = input.getAttribute('data-attribute-value'); 165 var attr_text = input.getAttribute('data-attribute-text'); 166 var swatch_type = input.getAttribute('data-type'); 167 var attr_obj = form.querySelector('[name="'+attr_name+'"]'); 168 if( attr_obj ){ 169 if( swatch_type == 'button' ){ 170 attr_text = input.innerHTML; 171 } 172 var text_tr = input.closest('tr'); 173 var text_obj = text_tr ? text_tr.querySelector('.cgkit-chosen-attribute') : null; 174 if( text_obj ){ 175 if( attr_value == '' ){ 176 text_obj.innerHTML = no_selection; 177 text_obj.classList.add('no-selection'); 178 } else { 179 text_obj.innerHTML = attr_text; 180 text_obj.classList.remove('no-selection'); 181 } 182 } 183 } 184 var form_parent = input.closest('.product'); 185 if( form_parent ){ 186 var single_atc = form_parent.querySelector('.cgkit-as-single-atc'); 187 var single_atc_clk = form_parent.querySelector('.cgkit-as-single-atc-clk'); 188 if( single_atc && single_atc_clk ) { 189 var input_var = form.querySelector('input.variation_id'); 190 var variation_id = input_var.value; 191 var out_of_stock = form.querySelector('.stock.out-of-stock'); 192 if( variation_id != '' && !out_of_stock ){ 193 single_atc_clk.value = 1; 194 } else if( variation_id != '' && out_of_stock ){ 195 single_atc.classList.add('disabled'); 196 } 197 } 198 } 199} 200function cgkitClearAttributeSwatches(form, update){ 201 var cgkit_swatches = form.querySelectorAll('.cgkit-attribute-swatches'); 202 cgkit_swatches.forEach(function(cgkit_swatch){ 203 var attr_name = cgkit_swatch.getAttribute('data-attribute'); 204 var no_selection = cgkit_swatch.getAttribute('data-no-selection'); 205 var inputs = cgkit_swatch.querySelectorAll('.cgkit-swatch'); 206 inputs.forEach(function(input){ 207 input.classList.remove('cgkit-swatch-selected'); 208 input.classList.remove('cgkit-disabled'); 209 var $oos_txt = ''; 210 if( input.classList.contains('cgkit-as-outofstock') ) { 211 $oos_txt = ' - ' + input.getAttribute('data-oos-text'); 212 } 213 input.setAttribute('title', input.getAttribute('data-attribute-text') + $oos_txt); 214 }); 215 var text_tr = cgkit_swatch.closest('tr'); 216 var text_obj = text_tr ? text_tr.querySelector('.cgkit-chosen-attribute') : null; 217 if( text_obj ){ 218 text_obj.innerHTML = no_selection; 219 text_obj.classList.add('no-selection'); 220 } 221 if( !update ){ 222 var attr_obj = form.querySelector('[name="'+attr_name+'"]'); 223 if( attr_obj ) { 224 attr_obj.value = ''; 225 if( ckas_jq ){ 226 ckas_jq(attr_obj).change(); 227 } else { 228 attr_obj.dispatchEvent(new Event('change')); 229 } 230 } 231 } 232 }); 233 if( update ){ 234 setTimeout(cgkitUpdateAvailableAttributes(form), 200); 235 } 236 var notice = document.querySelector('#cgkit-as-notice-wrap'); 237 if( notice ){ 238 notice.style.display = 'none'; 239 } 240} 241function cgkitResetAttributeSwatches(form){ 242 var clear_all = form.querySelector('.reset_variations'); 243 var cgkit_swatches = form.querySelectorAll('.cgkit-attribute-swatches');
244 cgkit_swatches.forEach(function(cgkit_swatch){ 245 var attr_name = cgkit_swatch.getAttribute('data-attribute'); 246 var no_selection = cgkit_swatch.getAttribute('data-no-selection'); 247 var inputs = cgkit_swatch.querySelectorAll('.cgkit-swatch-selected'); 248 inputs.forEach(function(input){ 249 input.classList.remove('cgkit-swatch-selected'); 250 input.classList.remove('cgkit-disabled'); 251 var $oos_txt = ''; 252 if( input.classList.contains('cgkit-as-outofstock') ) { 253 $oos_txt = ' - ' + input.getAttribute('data-oos-text'); 254 } 255 input.setAttribute('title', input.getAttribute('data-attribute-text') + $oos_txt); 256 }); 257 var attr_obj = form.querySelector('[name="'+attr_name+'"]'); 258 if( attr_obj ){ 259 attr_obj.value = ''; 260 if( ckas_jq ){ 261 ckas_jq(attr_obj).change(); 262 } else { 263 attr_obj.dispatchEvent(new Event('change')); 264 } 265 } 266 var text_tr = cgkit_swatch.closest('tr'); 267 var text_obj = text_tr ? text_tr.querySelector('.cgkit-chosen-attribute') : null; 268 if( text_obj ){ 269 text_obj.innerHTML = no_selection; 270 text_obj.classList.add('no-selection'); 271 } 272 }); 273 if( clear_all ) { 274 clear_all.style.visibility = 'hidden'; 275 } 276} 277function cgkitUpdateAvailableAttributes(form){ 278 var cgkit_swatches = form.querySelectorAll('.cgkit-attribute-swatches'); 279 cgkit_swatches.forEach(function(cgkit_swatch){ 280 var attr_name = cgkit_swatch.getAttribute('data-attribute'); 281 var attr_obj = form.querySelector('[name="'+attr_name+'"]'); 282 var attr_obj_val = attr_obj.value; 283 var inputs = cgkit_swatch.querySelectorAll('.cgkit-swatch'); 284 inputs.forEach(function(input){ 285 var attr_value = input.getAttribute('data-attribute-value'); 286 var attr_value2 = attr_value.replace(/"/g, '\\"'); 287 attr_value2 = attr_value2.replace(/'/g, "\\'"); 288 var find_opt = attr_obj.querySelector('option[value="'+attr_value2+'"]'); 289 if( !find_opt ){ 290 input.classList.remove('cgkit-swatch-selected'); 291 input.classList.add('cgkit-disabled'); 292 var $oos_txt = input.getAttribute('data-oos-text'); 293 if( $oos_txt ) { 294 $oos_txt = ' - ' + $oos_txt; 295 } 296 input.setAttribute('title', input.getAttribute('data-attribute-text') + $oos_txt); 297 var inputli = input.closest('li.cgkit-attribute-swatch'); 298 if( inputli && ( inputli.classList.contains('cgkit-image') || inputli.classList.contains('cgkit-color') ) ) { 299 inputli.setAttribute('cgkit-tooltip', input.getAttribute('data-attribute-text') + $oos_txt); 300 } 301 } else { 302 input.classList.remove('cgkit-disabled'); 303 var $oos_txt = ''; 304 if( input.classList.contains('cgkit-as-outofstock') ) { 305 $oos_txt = ' - ' + input.getAttribute('data-oos-text'); 306 } 307 input.setAttribute('title', input.getAttribute('data-attribute-text') + $oos_txt); 308 var inputli = input.closest('li.cgkit-attribute-swatch'); 309 if( inputli && ( inputli.classList.contains('cgkit-image') || inputli.classList.contains('cgkit-color') ) ) { 310 inputli.setAttribute('cgkit-tooltip', input.getAttribute('data-attribute-text') + $oos_txt); 311 } 312 if( attr_value == attr_obj_val ){ 313 input.classList.add('cgkit-swatch-selected'); 314 } else { 315 input.classList.remove('cgkit-swatch-selected'); 316 } 317 } 318 }); 319 }); 320} 321function cgkitAutoAddToCartVariation(form){ 322 var input_var = form.querySelector('input.variation_id'); 323 if( input_var ){ 324 var variation_id = input_var.value; 325 var product_id = form.getAttribute('data-product_id'); 326 var out_of_stock = form.querySelector('.stock.out-of-stock'); 327 328 var single_atc = null; 329 var single_atc_clk = null; 330 var single_atc_wrp = null; 331 var single_atc_link = null; 332 var form_parent = form.closest('.product'); 333 if( form_parent ){ 334 single_atc = form_parent.querySelector('.cgkit-as-single-atc'); 335 single_atc_clk = form_parent.querySelector('.cgkit-as-single-atc-clk'); 336 single_atc_wrp = form_parent.querySelector('.cgkit-as-single-atc-wrap'); 337 if( single_atc ){ 338 if( out_of_stock && variation_id != '' ){ 339 single_atc.classList.add('disabled'); 340 } else { 341 single_atc.classList.remove('disabled'); 342 } 343 } else if( single_atc_wrp ){ 344 single_atc_link = single_atc_wrp.querySelector('a'); 345 if( single_atc_link ){ 346 var old_link = single_atc_link.getAttribute('cgkit-atc-href'); 347 if( ! old_link ){ 348 single_atc_link.setAttribute('cgkit-atc-href', single_atc_link.getAttribute('href')); 349 } else { 350 single_atc_link.setAttribute('href', old_link); 351 } 352 } 353 } 354 if( single_atc && single_atc_clk && single_atc_clk.value != 1 ){ 355 return true; 356 } 357 if( single_atc && single_atc_clk && single_atc_clk.value == 1 ){ 358 single_atc_clk.value = 0; 359 } 360 } 361 362 var dis_atc = form.closest('.product.cgkit-disable-atc'); 363 if( ! single_atc && ( dis_atc || form.classList.contains('cgkit-disable-atc-form') ) ){ 364 var wraps = form.querySelectorAll('table.variations .cgkit-attribute-swatches'); 365 var hide_rows = form.querySelectorAll('table.variations tr.cgkit-hide-loop'); 366 var vis_row_count = wraps.length - hide_rows.length; 367 var product_url = form.getAttribute('action'); 368 var url = product_url.indexOf('?') == -1 ? product_url + '?' : product_url + '&'; 369 var params = []; 370 wraps.forEach(function(wrap){ 371 var attr_name = wrap.getAttribute('data-attribute'); 372 var attr_val = ''; 373 var attr_obj = wrap.querySelector('.cgkit-swatch-selected'); 374 if( attr_obj ){ 375 attr_val = attr_obj.getAttribute('data-attribute-value'); 376 if( attr_name && attr_val ){ 377 params.push( attr_name + '=' + attr_val ); 378 } 379 } 380 }); 381 if( ( vis_row_count == 1 || vis_row_count == 2 ) && vis_row_count == params.length ){ 382 url = url + params.join('&'); 383 if( single_atc_link ){ 384 single_atc_link.setAttribute('href', url); 385 } else { 386 if( commercekit_as.as_swatch_link == 1 ){ 387 window.location.href = url; 388 } else { 389 window.location.href = product_url; 390 } 391 } 392 return; 393 } 394 } 395 396 if( ! single_atc && form.classList.contains('cgkit-disable-atc-form') ){ 397 return true; 398 } 399 400 if( variation_id != '' && !out_of_stock ){ 401 if( single_atc ){ 402 single_atc.classList.add('disabled'); 403 } 404 form.classList.add('loading'); 405 form.classList.add('cgkit-loading'); 406 cgkitHideOtherFormNotices(form); 407 var formData = new FormData(); 408 formData.append('product_id', product_id); 409 formData.append('variation_id', variation_id); 410 var wraps = form.querySelectorAll('table.variations .cgkit-attribute-swatches'); 411 wraps.forEach(function(wrap){ 412 var attr_name = wrap.getAttribute('data-attribute'); 413 var attr_val = ''; 414 var attr_obj = wrap.querySelector('.cgkit-swatch-selected'); 415 if( attr_obj ){ 416 attr_val = attr_obj.getAttribute('data-attribute-value'); 417 if( attr_name && attr_val ){ 418 formData.append('variations['+attr_name+']', attr_val); 419 } 420 } 421 }); 422 var data = {}; 423 data['quantity'] = 1; 424 data['product_id'] = variation_id; 425 data['product_sku'] = ''; 426 var $thisbutton = null; 427 if( ckas_jq ){ 428 $thisbutton = ckas_jq(form).find('.single_add_to_cart_button'); 429 ckas_jq(document.body).trigger('adding_to_cart', [$thisbutton, data]); 430 } 431 fetch( commercekit_ajs.ajax_url + '=commercekit_ajax_as_add_to_cart', { 432 method: 'POST', 433 body: formData, 434 }).then(response => response.json()).then( json => { 435 if( json.status == 1 ){ 436 if( ckas_jq ){ 437 ckas_jq(document.body).trigger('added_to_cart', [json.fragments, json.cart_hash, $thisbutton]); 438 } 439 cgkitClearAttributeSwatches(form, false); 440 cgkitClearAttributeSwatchImage(form); 441 } else { 442 if( json.notices != '' ){ 443 cgkitAttributeSwatchesNotice(json.notices); 444 } 445 } 446 if( single_atc ){ 447 single_atc.classList.remove('disabled'); 448 } 449 form.classList.remove('loading'); 450 form.classList.remove('cgkit-loading'); 451 }); 452 } else { 453 setTimeout(function(){ 454 var wrap = form.querySelector('.cgkit-swatch-quickwrap'); 455 if( wrap ){ 456 wrap.style.height = "auto"; 457 var height = wrap.clientHeight + "px"; 458 wrap.style.height = height; 459 } 460 }, 200); 461 } 462 } 463} 464function cgkitUpdateSwatchesDetails(){ 465 if( window.innerWidth > 992 ){ 466 var details = document.querySelectorAll('form.cgkit-swatch-form details');
467 details.forEach(function(detail){ 468 detail.setAttribute('open', true); 469 }); 470 } else { 471 var details = document.querySelectorAll('form.cgkit-swatch-form details'); 472 details.forEach(function(detail){ 473 if( detail.hasAttribute('open') ){ 474 detail.removeAttribute('open'); 475 } 476 }); 477 } 478} 479function cgkitUpdateAttributeSwatchImage(input){ 480 var form = input.closest('form'); 481 var form_parent = form.closest('.product'); 482 var img_img = form_parent.querySelector('img.wp-post-image-cgas'); 483 if( !img_img ){ 484 return; 485 } 486 var images = JSON.parse(form.getAttribute('data-images')); 487 if( !images || Object.keys(images).length == 0 ){ 488 return; 489 } 490 491 var default_img = false; 492 if( !input.classList.contains('cgkit-swatch-selected') ){ 493 var tinput = null; 494 var ninputs = form.querySelectorAll('.cgkit-swatch-selected'); 495 ninputs.forEach(function(ninput){ 496 var gimg_id1 = ninput.getAttribute('data-gimg_id'); 497 var image_id1 = ''; 498 if( commercekit_as.cgkit_attr_gal == 1 && gimg_id1 != '' ){ 499 image_id1 = gimg_id1; 500 } 501 if( image_id1 != '' ){ 502 tinput = ninput; 503 return; 504 } 505 }); 506 if( tinput ){ 507 input = tinput; 508 } else { 509 default_img = true; 510 } 511 } 512 var gimg_id = input.getAttribute('data-gimg_id'); 513 var image_id = ''; 514 if( commercekit_as.cgkit_attr_gal == 1 && gimg_id != '' ){ 515 image_id = gimg_id; 516 } 517 if( image_id == '' ){ 518 var ninputs2 = form.querySelectorAll('.cgkit-swatch-selected'); 519 ninputs2.forEach(function(ninput2){ 520 var gimg_id2 = ninput2.getAttribute('data-gimg_id'); 521 var image_id2 = ''; 522 if( commercekit_as.cgkit_attr_gal == 1 && gimg_id2 != '' ){ 523 image_id2 = gimg_id2; 524 } 525 if( image_id2 != '' ){ 526 image_id = image_id2; 527 return; 528 } 529 }); 530 if( image_id == '' ){ 531 default_img = true; 532 } 533 } 534 var vimg_id = form.getAttribute('current-image'); 535 if( image_id == '' && vimg_id != '' ){ 536 image_id = vimg_id; 537 default_img = false; 538 } 539 if( !default_img && image_id != '' && images.hasOwnProperty('img_'+image_id) && commercekit_as.cgkit_attr_gal == 1 ){ 540 var img_key = 'img_'+image_id; 541 var img_src = img_img.getAttribute('data-cgas-src'); 542 var img_srcset = img_img.getAttribute('data-cgas-srcset'); 543 var img_sizes = img_img.getAttribute('data-cgas-sizes'); 544 if( !img_src ){ 545 img_img.setAttribute('data-cgas-src', img_img.getAttribute('src')); 546 img_img.setAttribute('data-cgas-srcset', ''); 547 img_img.setAttribute('data-cgas-sizes', ''); 548 if( img_srcset ){ 549 img_img.setAttribute('data-cgas-srcset', img_srcset); 550 } 551 if( img_sizes ){ 552 img_img.setAttribute('data-cgas-sizes', img_sizes); 553 } 554 } 555 if( images[img_key].srcset ){ 556 img_img.setAttribute('srcset', images[img_key].srcset); 557 } else { 558 img_img.setAttribute('srcset', ''); 559 } 560 if( images[img_key].sizes ){ 561 img_img.setAttribute('sizes', images[img_key].sizes); 562 } else { 563 img_img.setAttribute('sizes', ''); 564 } 565 img_img.setAttribute('src', images[img_key].src); 566 } else { 567 cgkitClearAttributeSwatchImage(form); 568 } 569} 570function cgkitClearAttributeSwatchImage(form){ 571 var form_parent = form.closest('.product'); 572 var img_img = form_parent.querySelector('img.wp-post-image-cgas'); 573 if( !img_img ){ 574 return; 575 } 576 var img_src = img_img.getAttribute('data-cgas-src'); 577 var img_srcset = img_img.getAttribute('data-cgas-srcset'); 578 var img_sizes = img_img.getAttribute('data-cgas-sizes'); 579 if( img_src ){ 580 if( img_srcset ){ 581 img_img.setAttribute('srcset', img_srcset); 582 } else { 583 img_img.setAttribute('srcset', ''); 584 } 585 if( img_sizes ){ 586 img_img.setAttribute('sizes', img_sizes); 587 } else { 588 img_img.setAttribute('sizes', ''); 589 } 590 img_img.setAttribute('src', img_src); 591 } 592} 593function cgkitAttributeSwatchesNotice(notice){ 594 var cgkit_notice_wrap = document.querySelector('#cgkit-as-notice-wrap'); 595 if( cgkit_notice_wrap ){ 596 cgkit_notice = cgkit_notice_wrap.querySelector('#cgkit-as-notice'); 597 cgkit_notice.innerHTML = notice; 598 cgkit_notice_wrap.style.display = 'block'; 599 } else { 600 document.body.insertAdjacentHTML( 'beforeend', '<div id="cgkit-as-notice-wrap"><a href="javascript:;" class="cgkit-as-notice-close">X</a><div id="cgkit-as-notice">'+notice+'</div></div>' ); 601 } 602} 603var cgkit_as_product_ids = []; 604var cgkit_swatch_forms = document.querySelectorAll('form.cgkit-swatch-form'); 605if( cgkit_swatch_forms.length > 0 ){ 606 cgkitProcessAttributeSwatchesForms(cgkit_swatch_forms, 0); 607} 608document.addEventListener('click', function(e){ 609 var input = e.target; 610 var inputp = input.closest('.cgkit-as-notice-close'); 611 if( input.classList.contains('cgkit-as-notice-close') || inputp ) { 612 if( inputp ){ 613 input = inputp; 614 } 615 e.preventDefault(); 616 e.stopPropagation(); 617 var parent = input.closest('#cgkit-as-notice-wrap'); 618 if( parent ){ 619 parent.style.display = 'none'; 620 } 621 } 622}); 623window.addEventListener('resize', function(e){ 624 cgkitUpdateSwatchesDetails(); 625}); 626cgkitUpdateSwatchesDetails(); 627function cgkitProcessAttributeSwatchesForms(cgkit_forms, process_all){ 628 var product_ids = [];
629 cgkit_forms.forEach(function(as_form){ 630 as_form.classList.add('cgkit-processing'); 631 as_form.classList.add('variations_form'); 632 as_form.classList.add('cart'); 633 var hide_attrs = as_form.querySelectorAll('table.variations tr.cgkit-hide-loop'); 634 if( hide_attrs.length > 0 && commercekit_as.as_activate_atc == 0 ){ 635 as_form.classList.add('cgkit-disable-atc-form'); 636 } 637 product_ids.push(as_form.getAttribute('data-product_id')); 638 var frm_parent = as_form.closest('.product'); 639 if( frm_parent ) { 640 var img_wrap = frm_parent.querySelector('.woocommerce-image__wrapper'); 641 if( img_wrap ){ 642 img_wrap.classList.add('images'); 643 var img_link = img_wrap.querySelector('a'); 644 if( img_link ){ 645 img_link.classList.add('woocommerce-product-gallery__image'); 646 } 647 var img_img = img_wrap.querySelector('img'); 648 if( img_img ){ 649 img_img.classList.add('wp-post-image-cgas'); 650 } 651 } else { 652 var img_img = frm_parent.querySelector('img.attachment-woocommerce_thumbnail'); 653 if( img_img ){ 654 img_img.classList.add('wp-post-image-cgas'); 655 var img_wrap = document.createElement('span'); 656 img_wrap.classList.add('images'); 657 var img_link = document.createElement('span'); 658 img_link.classList.add('woocommerce-product-gallery__image'); 659 img_wrap.appendChild(img_link); 660 img_img.parentNode.insertBefore(img_wrap, img_img); 661 img_link.appendChild(img_img); 662 } 663 } 664 var pic_src = frm_parent.querySelector('picture source'); 665 if( pic_src ){ 666 pic_src.remove(); 667 } 668 } 669 670 vform_observer = new MutationObserver((changes) => {
671 changes.forEach(change => { 672 var blocks = as_form.querySelector('.blockUI.blockOverlay'); 673 if( blocks ){ 674 var dis_atc = as_form.closest('.product.cgkit-disable-atc'); 675 if( dis_atc || as_form.classList.contains('cgkit-disable-atc-form') ){ 676 return; 677 } else { 678 as_form.classList.add('loading'); 679 cgkitHideOtherFormNotices(as_form); 680 } 681 } else { 682 if( !as_form.classList.contains('cgkit-loading') ){ 683 as_form.classList.remove('loading'); 684 } 685 } 686 }); 687 }); 688 vform_observer.observe(as_form, {childList:true, subtree:true}); 689 690 var vinput = as_form.querySelector('input.variation_id'); 691 if( vinput ){ 692 vinput_observer = new MutationObserver((changes) => { 693 changes.forEach(change => { 694 if(change.attributeName.includes('value')){ 695 setTimeout(function(){ 696 if( vinput.value != '' && vinput.value != '0' && as_form.getAttribute('data-product_variations') == 'false' ){ 697 cgkitAutoAddToCartVariation(as_form); 698 } 699 }, 150); 700 } 701 }); 702 }); 703 vinput_observer.observe(vinput, {attributes : true}); 704 } 705 if( commercekit_as.swatches_ajax != 1 ){ 706 setTimeout( function() { 707 as_form.classList.remove('cgkit-no-actions'); 708 var var_form = ckas_jq(as_form); 709 var_form.wc_variation_form(); 710 cgkitUpdateSwatchesDetails(); 711 cgkitPrepareDynamicStyles(as_form); 712 }, 100 ); 713 } 714 }); 715 var uproduct_ids = product_ids.filter(function(product_id, index){ 716 return product_ids.indexOf(product_id) === index; 717 }); 718 719 if( process_all == 1 ){ 720 var fproduct_ids = uproduct_ids; 721 } else { 722 var fproduct_ids = uproduct_ids.slice(0, 6); 723 cgkit_as_product_ids = uproduct_ids.slice(6); 724 } 725 726 if( commercekit_as.swatches_ajax == 1 ){ 727 cgkitGetAjaxAttributeSwatchesVariations(fproduct_ids, 1); 728 } 729} 730var cgkit_body = document.querySelector('main#main'); 731var cgkit_body_observer = new MutationObserver((changes) => {
732 changes.forEach(change => { 733 cgkitDetectAttributeSwatchesForms(); 734 }); 735}); 736cgkit_body_observer.observe(cgkit_body, {childList:true, subtree:true}); 737function cgkitDetectAttributeSwatchesForms(){ 738 var cgkit_forms = document.querySelectorAll('form.cgkit-swatch-form:not(.cgkit-processed):not(.cgkit-processing)'); 739 if( cgkit_forms.length > 0 ){ 740 cgkitProcessAttributeSwatchesForms(cgkit_forms, 1); 741 } 742} 743function cgkitGetAjaxAttributeSwatchesVariations(product_ids, page){ 744 var formData = new FormData(); 745 formData.append('product_ids', product_ids); 746 fetch( commercekit_ajs.ajax_url + '=commercekit_get_ajax_as_variations', { 747 method: 'POST', 748 body: formData, 749 }).then(response => response.json()).then( json => { 750 if( json.status == 1 && Object.keys(json.variations).length > 0 ){ 751 for( var product_id in json.variations ){ 752 var forms = document.querySelectorAll('form[data-product_id="'+product_id+'"]'); 753 forms.forEach(function(form){ 754 if( ckas_jq ) { 755 form.classList.remove('cgkit-no-actions'); 756 form.setAttribute('data-product_variations', json.variations[product_id]); 757 form.setAttribute('data-images', json.images[product_id]); 758 var var_form = ckas_jq(form); 759 var_form.removeData('product_variations'); 760 var_form.removeData('images'); 761 var_form.wc_variation_form(); 762 cgkitUpdateSwatchesDetails(); 763 cgkitPrepareDynamicStyles(form); 764 } 765 }); 766 } 767 768 } 769 if( page == 2 ){ 770 cgkit_as_product_ids = []; 771 } 772 }); 773} 774function cgkitHideOtherFormNotices(as_form){ 775 var no_matches = document.querySelectorAll('.wc-no-matching-variations'); 776 no_matches.forEach(function(no_matche){ 777 var tas_form = no_matche.closest('form'); 778 if( tas_form ){ 779 if( tas_form !== as_form ){ 780 no_matche.style.display = 'none'; 781 } 782 } 783 }); 784 var notices = document.querySelector('#cgkit-as-notice-wrap'); 785 if( notices ){ 786 notices.style.display = 'none'; 787 } 788} 789function cgkitPrepareDynamicStyles(as_form){ 790 if( as_form.classList.contains('cgkit-dynamic-style') ){ 791 return; 792 } 793 var product_id = as_form.getAttribute('data-product_id'); 794 var rows = as_form.querySelectorAll('table.variations tr'); 795 var clone = as_form.querySelector('.cgkit-as-swatches-clone'); 796 var row_count = 0; 797 var product_height = 0; 798 var margin_top = 0; 799 rows.forEach(function(row){ 800 if( !row.classList.contains('cgkit-hide-loop') ){ 801 if( row_count != 0 ){ 802 row.style.marginTop = margin_top+'px'; 803 row.style.display = 'table-row'; 804 product_height += row.clientHeight; 805 margin_top = row.clientHeight; 806 row.style.display = ''; 807 } else { 808 var original = row.querySelector('.cgkit-as-wrap-plp'); 809 if( clone && original ){ 810 clone.innerHTML = original.innerHTML; 811 row.classList.add('cgkit-as-swatches-original'); 812 } 813 } 814 row_count++; 815 } 816 }); 817 if( row_count == 1 ){ 818 as_form.classList.add('cgkit-single-attribute'); 819 } 820 var dynamic_css = 'ul.products li.post-'+product_id+'.product:not(.product-category):before { padding-bottom: '+product_height+'px; }'; 821 var as_css = document.createElement('style'); 822 as_css.type = 'text/css'; 823 as_css.innerHTML = dynamic_css; 824 as_form.appendChild(as_css); 825 as_form.querySelectorAll('details').forEach((el) => { 826 new CgkitAccordion(el); 827 }); 828 as_form.classList.add('cgkit-dynamic-style'); 829} 830function loadAS(){ 831 var as_forms = document.querySelectorAll('form.cgkit-swatch-form'); 832 if( as_forms.length > 0 ){ 833 as_forms.forEach(function(as_form){ 834 cgkitPrepareDynamicStyles(as_form); 835 }); 836 } 837} 838const asUserInteractionEvents = ["mouseover", "keydown", "touchstart", "touchmove", "wheel"]; 839asUserInteractionEvents.forEach(function(event) { 840 window.addEventListener(event, triggerASScriptLoader, { 841 passive: !0 842 }) 843}); 844function triggerASScriptLoader() { 845 loadASScripts(); 846 asUserInteractionEvents.forEach(function(event) { 847 window.removeEventListener(event, triggerASScriptLoader, { 848 passive: !0 849 }) 850 }) 851} 852function loadASScripts() { 853 loadAS(); 854 if( commercekit_as.swatches_ajax == 1 ){ 855 if( cgkit_as_product_ids.length > 0 ){ 856 cgkitGetAjaxAttributeSwatchesVariations(cgkit_as_product_ids, 2); 857 } 858 } 859} 860class CgkitAccordion { 861 constructor(el) { 862 this.el = el; 863 this.summary = el.querySelector('summary'); 864 this.content = el.querySelector('.ckit-attributes-wrap'); 865 this.animation = null; 866 this.isClosing = false;
867 this.isExpanding = false; 868 this.summary.addEventListener('click', (e) => this.onClick(e)); 869 } 870 871 onClick(e) { 872 e.preventDefault(); 873 if( this.isClosing || !this.el.open ){ 874 this.open(); 875 } else if( this.isExpanding || this.el.open ){ 876 this.shrink(); 877 } 878 } 879 880 shrink() { 881 this.isClosing = true; 882 const startHeight = `${this.el.offsetHeight}px`; 883 const endHeight = `${this.summary.offsetHeight}px`; 884 if (this.animation) { 885 this.animation.cancel(); 886 } 887 888 this.animation = this.el.animate({ 889 height: [startHeight, endHeight] 890 }, { 891 duration: 400, 892 easing: 'ease-out' 893 }); 894 this.animation.onfinish = () => this.onAnimationFinish(false); 895 this.animation.oncancel = () => this.isClosing = false; 896 } 897 898 open() { 899 this.el.style.height = `${this.el.offsetHeight}px`; 900 this.el.open = true; 901 window.requestAnimationFrame(() => this.expand()); 902 } 903 904 expand() { 905 this.isExpanding = true; 906 const startHeight = `${this.el.offsetHeight}px`; 907 const endHeight = `${this.summary.offsetHeight + this.content.offsetHeight}px`; 908 909 if( this.animation ){ 910 this.animation.cancel(); 911 } 912 this.animation = this.el.animate({ 913 height: [startHeight, endHeight] 914 }, { 915 duration: 400, 916 easing: 'ease-out' 917 }); 918 this.animation.onfinish = () => this.onAnimationFinish(true); 919 this.animation.oncancel = () => this.isExpanding = false; 920 } 921 922 onAnimationFinish(open) { 923 this.el.open = open; 924 this.animation = null; 925 this.isClosing = false; 926 this.isExpanding = false; 927 this.el.style.height = ''; 928 } 929}
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.