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