1(function($){ 2$(function(){ 3var user_agent=navigator.userAgent; 4var is_opera_edge; 5var browser=user_agent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))/i)||[]; 6var browser_name=''; 7var browser_class=''; 8if(/trident/i.test(browser[0])){ 9browser_name='ie'; 10}else if(browser[0]==='Chrome'){ 11is_opera_edge=user_agent.match(/\b(OPR|Edge)/); 12if(is_opera_edge!==null){ 13browser_name=is_opera_edge[0].replace('OPR', 'opera'); 14}} 15if(''===browser_name){ 16if('standalone' in window.navigator&&!window.navigator.standalone){ 17browser_name='uiwebview'; 18}else{ 19browser_name=browser[0]&&''!==browser[0] ? browser[0]:navigator.appName; 20}} 21browser_name=browser_name.toLowerCase(); 22switch(browser_name){ 23case 'msie' : 24browser_class='ie'; 25break; 26case 'firefox' : 27browser_class='gecko'; 28break; 29default : 30browser_class=browser_name; 31break; 32} 33if(user_agent.match(/iPhone/)){ 34browser_class +=' iphone'; 35} 36$('body').addClass(browser_class); 37}); 38})(jQuery); 39var ppecHandler=function(data){ 40this.data=data; 41this.actions={}; 42var parent=this; 43this.processPayment=function(payment, action){ 44jQuery.post(ppecFrontVars.ajaxUrl, { 45'action': action, 46wp_ppdg_payment: payment, 47data: parent.data, 48nonce: parent.data.nonce 49}) 50.done(function(data){ 51parent.completePayment(data); 52}); 53}; 54this.completePayment=function(data){ 55var ret=true; 56var dlgTitle=ppecFrontVars.str.paymentCompleted; 57var dlgMsg=ppecFrontVars.str.redirectMsg; 58if(data.redirect_url){ 59var redirect_url=data.redirect_url; 60}else{ 61dlgTitle=ppecFrontVars.str.errorOccurred; 62dlgMsg=data; 63ret=false; 64} 65jQuery('.wp-ppec-overlay[data-ppec-button-id="' + parent.data.id + '"]').hide(); 66var dialog=jQuery('<div id="wp-ppdg-dialog-message" title="' + dlgTitle + '"><p id="wp-ppdg-dialog-msg">' + dlgMsg + '</p></div>'); 67jQuery('#' + parent.data.id).before(dialog).fadeIn(); 68if(redirect_url){ 69location.href=redirect_url; 70} 71return ret; 72}; 73this.ValidatorTos=function(input){ 74return input.prop('checked')!==true ? ppecFrontVars.str.acceptTos:null; 75}; 76this.ValidatorBilling=function(input){ 77var val=input.attr('type')==='checkbox' ? input.prop('checked')===true:input.val(); 78return input.is(':visible')&&!val ? ppecFrontVars.str.required:null; 79}; 80this.isValidTotal=function(){ 81parent.calcTotal(); 82return !!parent.data.total; 83}; 84this.ValidatorQuantity=function(input){ 85var val_orig=input.val(); 86var val=parseInt(val_orig); 87var error=false; 88if(isNaN(val)||(val_orig % 1!==0)||val <=0){ 89error=ppecFrontVars.str.enterQuantity; 90}else if(parent.data.stock_enabled&&val > parent.data.stock_items){ 91error=ppecFrontVars.str.stockErr.replace('%d', parent.data.stock_items); 92}else{ 93parent.data.quantity=val; 94} 95return error; 96}; 97this.ValidatorAmount=function(input){ 98var val_orig=input.val(); 99var val=parseFloat(val_orig); 100var min_val=input.attr('min'); 101var error=false; 102var errMsg=ppecFrontVars.str.enterAmount; 103if(!isNaN(val)&&min_val <=val){ 104parent.data.orig_price=val; 105parent.data.price=parent.applyVariations(val); 106}else{ 107error=errMsg; 108} 109return error; 110}; 111if(this.data.btnStyle.layout==='horizontal'){ 112this.data.btnStyle.tagline=false; 113} 114this.clientVars={}; 115this.clientVars[ this.data.env ]=this.data.client_id; 116this.inputs=[]; 117this.validateInput=function(input, validator){ 118if(1 > input.length){ 119return false; 120} 121this.inputs.push([ input, validator ]); 122input.change(function(){ 123parent.displayInputError(jQuery(this), validator); 124parent.validateOrder(); 125}); 126}; 127this.validateOrder=function(){ 128var enable_actions=true; 129jQuery('#wpec_billing_' + parent.data.id + ', #place-order-' + parent.data.id).toggle(!parent.isValidTotal()); 130jQuery('#' + parent.data.id).toggle(!jQuery('#place-order-' + parent.data.id).is(':visible')); 131parent.inputs.forEach(function(inputArr){ 132var input=inputArr[ 0 ]; 133var validator=inputArr[ 1 ]; 134if(validator(input)){ 135enable_actions=false; 136}}); 137if(!parent.isValidTotal()){ 138enable_actions=false; 139} 140if(enable_actions){ 141parent.actions.enable(); 142}else{ 143parent.actions.disable(); 144} 145parent.updateAllAmounts(); 146jQuery(document).trigger('wpec_validate_order', [ parent ]); 147}; 148this.displayInputError=function(input, validator){ 149var error=validator(input); 150var errMsgCont=input.is(':checkbox')||input.attr('type')==='number' ? input.parent().siblings('.wp-ppec-form-error-msg'):input.siblings('.wp-ppec-form-error-msg'); 151input.toggleClass('hasError', !!error); 152errMsgCont.html(error); 153if(error&&errMsgCont.length){ 154errMsgCont.fadeIn('slow'); 155}else{ 156errMsgCont.fadeOut('fast'); 157}}; 158this.displayErrors=function(){
159parent.inputs.forEach(function(input){ 160parent.displayInputError(input[ 0 ], input[ 1 ]); 161}); 162}; 163this.scCont=jQuery('.wp-ppec-shortcode-container[data-ppec-button-id="' + parent.data.id + '"]'); 164this.buttonArgs={ 165env: parent.data.env, 166client: parent.clientVars, 167style: parent.data.btnStyle, 168commit: true, 169onInit: function(data, actions){ 170parent.actions=actions; 171parent.validateInput(jQuery('#wpec-tos-' + parent.data.id), parent.ValidatorTos); 172parent.validateInput(jQuery('#wp-ppec-custom-quantity[data-ppec-button-id="' + parent.data.id + '"]'), parent.ValidatorQuantity); 173parent.validateInput(jQuery('#wp-ppec-custom-amount[data-ppec-button-id="' + parent.data.id + '"]'), parent.ValidatorAmount); 174jQuery('#wpec_billing_' + parent.data.id + ' .wpec_required').each(function(){ 175parent.validateInput(jQuery(this), parent.ValidatorBilling); 176}); 177parent.data.orig_price=parseFloat(parent.data.price); 178parent.scCont.find('select.wpec-product-variations-select, input.wpec-product-variations-select-radio').change(function(){ 179var grpId=jQuery(this).data('wpec-variations-group-id'); 180var varId=jQuery(this).val(); 181if(Object.getOwnPropertyNames(parent.data.variations).length!==0){ 182if(!parent.data.variations.applied){ 183parent.data.variations.applied=[]; 184} 185parent.data.variations.applied[ grpId ]=varId; 186parent.data.price=parent.applyVariations(parent.data.orig_price); 187parent.validateOrder(); 188}}); 189parent.scCont.find('select.wpec-product-variations-select, input.wpec-product-variations-select-radio:checked').change(); 190parent.scCont.find('.wpec_product_shipping_enable').change(function(){ 191parent.scCont.find('.wpec_shipping_address_container').toggle(); 192parent.scCont.find('.wpec_address_wrap').toggleClass('shipping_enabled'); 193}); 194jQuery('#place-order-' + parent.data.id).click(function(){ 195parent.buttonArgs.onClick(); 196}); 197jQuery('#wpec-redeem-coupon-btn-' + parent.data.id).click(function(e){ 198e.preventDefault(); 199var couponCode=jQuery(this).siblings('#wpec-coupon-field-' + parent.data.id).val(); 200if(couponCode===''){ 201return false; 202} 203var wpecCouponBtn=jQuery(this); 204var wpecCouponSpinner=wpecCouponBtn.find('svg'); 205wpecCouponBtn.prop('disabled', true); 206wpecCouponSpinner.show(); 207var ajaxData={ 208'action': 'wpec_check_coupon', 209'product_id': parent.data.product_id, 210'coupon_code': couponCode, 211'curr': parent.data.currency, 212}; 213jQuery.post(ppecFrontVars.ajaxUrl, ajaxData, function(response){ 214if(response.success){ 215parent.data.discount=response.discount; 216parent.data.discountType=response.discountType; 217parent.data.couponCode=response.code; 218jQuery('#wpec-coupon-info-' + parent.data.id).html('<span class="wpec_coupon_code">' + response.discountStr + '</span> <button class="wpec_coupon_apply_btn" id="wpec-remove-coupon-' + parent.data.id + '" title="' + ppecFrontVars.str.strRemoveCoupon + '">' + ppecFrontVars.str.strRemove + '</button>'); 219jQuery('#wpec-redeem-coupon-btn-' + parent.data.id).hide(); 220jQuery('#wpec-coupon-field-' + parent.data.id).hide(); 221var totalCont=parent.getPriceContainer(); 222var totCurr; 223var totNew; 224var priceCurr; 225var priceNew; 226if(totalCont.find('.wpec_price_full_total').length!==0){ 227totCurr=totalCont.children().find('span.wpec_tot_current_price').addClass('wpec_line_through'); 228totNew=totalCont.children().find('span.wpec_tot_new_price'); 229}else{ 230totCurr=totalCont.find('span.wpec_price_amount').addClass('wpec_line_through'); 231totNew=totalCont.find('span.wpec_new_price_amount'); 232} 233priceCurr=totalCont.find('span.wpec-price-amount').addClass('wpec_line_through'); 234priceNew=totalCont.find('span.wpec-new-price-amount'); 235parent.validateOrder(); 236jQuery('#wpec-remove-coupon-' + parent.data.id).on('click', function(e){ 237e.preventDefault(); 238jQuery('#wpec-coupon-info-' + parent.data.id).html(''); 239jQuery('#wpec-coupon-field-' + parent.data.id).val(''); 240jQuery('#wpec-coupon-field-' + parent.data.id).show(); 241jQuery('#wpec-redeem-coupon-btn-' + parent.data.id).show(); 242totCurr.removeClass('wpec_line_through'); 243priceCurr.removeClass('wpec_line_through'); 244totNew.html(''); 245priceNew.html(''); 246delete parent.data.discount; 247delete parent.data.discountType; 248delete parent.data.couponCode; 249delete parent.data.discountAmount; 250delete parent.data.newPrice; 251parent.validateOrder(); 252}); 253}else{ 254jQuery('#wpec-coupon-info-' + parent.data.id).html(response.msg); 255} 256wpecCouponSpinner.hide(); 257wpecCouponBtn.prop('disabled', false); 258}); 259}); 260jQuery('#wpec-coupon-field-' + parent.data.id).keydown(function(e){ 261if(e.keyCode===13){ 262e.preventDefault(); 263jQuery('#wpec-redeem-coupon-btn-' + parent.data.id).click(); 264return false;
265}}); 266parent.validateOrder(); 267if(parent.data.errors){ 268var errorEl=jQuery('<div class="wp-ppec-form-error-msg">' + parent.data.errors + '</div>'); 269parent.scCont.append(errorEl); 270errorEl.show(); 271} 272jQuery('.wpec-button-placeholder').remove(); 273}, 274onClick: function(){ 275jQuery("#place-order-"+parent.data.id).find("button>svg").show(); 276jQuery("#place-order-"+parent.data.id).find("button").attr("disabled",true); 277parent.displayErrors(); 278var errInput=parent.scCont.find('.hasError').first(); 279if(errInput.length > 0){ 280errInput.focus(); 281errInput.trigger('change'); 282jQuery("#place-order-"+parent.data.id).find("button>svg").hide(); 283jQuery("#place-order-"+parent.data.id).find("button").attr("disabled",false); 284}else if(!parent.data.total){ 285parent.processPayment({ 286payer: { 287name: { 288given_name: jQuery('#wpec_billing_first_name-' + parent.data.id).val(), 289surname: jQuery('#wpec_billing_last_name-' + parent.data.id).val() 290}, 291email_address: jQuery('#wpec_billing_email-' + parent.data.id).val(), 292address: { 293address_line_1: jQuery('#wpec_billing_address-' + parent.data.id).val(), 294admin_area_1: jQuery('#wpec_billing_state-' + parent.data.id).val(), 295admin_area_2: jQuery('#wpec_billing_city-' + parent.data.id).val(), 296postal_code: jQuery('#wpec_billing_postal_code-' + parent.data.id).val(), 297country_code: jQuery('#wpec_billing_country-' + parent.data.id).val() 298}, 299shipping_address: { 300address_line_1: jQuery('#wpec_shipping_address-' + parent.data.id).val(), 301admin_area_1: jQuery('#wpec_shipping_state-' + parent.data.id).val(), 302admin_area_2: jQuery('#wpec_shipping_city-' + parent.data.id).val(), 303postal_code: jQuery('#wpec_shipping_postal_code-' + parent.data.id).val(), 304country_code: jQuery('#wpec_shipping_country-' + parent.data.id).val() 305}} 306}, 'wpec_process_empty_payment'); 307}}, 308createOrder: async function(data, actions){ 309parent.calcTotal(); 310let itemTotalValueRounded=(parent.data.price * parent.data.quantity).toFixed(2); 311let itemTotalValueRoundedAsNumber=parseFloat(itemTotalValueRounded); 312let shipping_pref='NO_SHIPPING'; 313if(parent.data.shipping!==""||parent.data.shipping_enable===true){ 314console.log("The physical product checkbox is enabled or there is shipping value has been configured. Setting the shipping preference to collect shipping."); 315shipping_pref='GET_FROM_FILE'; 316} 317var order_data={ 318intent: 'CAPTURE', 319payment_source: { 320paypal: { 321experience_context: { 322payment_method_preference: 'IMMEDIATE_PAYMENT_REQUIRED', 323shipping_preference: shipping_pref, 324user_action: 'PAY_NOW', 325}} 326}, 327purchase_units: [ { 328amount: { 329value: parent.data.total, 330currency_code: parent.data.currency, 331breakdown: { 332item_total: { 333currency_code: parent.data.currency, 334value: itemTotalValueRoundedAsNumber 335}} 336}, 337items: [ { 338name: parent.data.name, 339quantity: parent.data.quantity, 340unit_amount: { 341value: parent.data.price, 342currency_code: parent.data.currency 343}} ] 344} ] 345}; 346if(parent.data.tax){ 347order_data.purchase_units[ 0 ].amount.breakdown.tax_total={ 348currency_code: parent.data.currency, 349value: parent.PHP_round(parent.data.tax_amount * parent.data.quantity, parent.data.dec_num) 350}; 351order_data.purchase_units[ 0 ].items[ 0 ].tax={ 352currency_code: parent.data.currency, 353value: parent.data.tax_amount 354};} 355if(parent.data.shipping){ 356order_data.purchase_units[ 0 ].amount.breakdown.shipping={ 357currency_code: parent.data.currency, 358value: parent.getTotalShippingCost(), 359};} 360if(parent.data.discount){ 361order_data.purchase_units[ 0 ].amount.breakdown.discount={ 362currency_code: parent.data.currency, 363value: parseFloat(parent.data.discountAmount) 364};} 365console.log('Order data: ' + JSON.stringify(order_data)); 366let nonce=wpec_create_order_vars.nonce; 367let wpec_data_for_create=parent.data;//parent.data is the data object that was passed to the ppecHandler constructor. 368console.log('WPEC data for create-order: ' + JSON.stringify(wpec_data_for_create)); 369let post_data='action=wpec_pp_create_order&data=' + encodeURIComponent(JSON.stringify(order_data)) + '&wpec_data=' + encodeURIComponent(JSON.stringify(wpec_data_for_create)) + '&_wpnonce=' + nonce; 370try { 371const response=await fetch(ppecFrontVars.ajaxUrl, { 372method: "post", 373headers: { 374'Content-Type': 'application/x-www-form-urlencoded' 375}, 376body: post_data 377}); 378const response_data=await response.json(); 379if(response_data.order_id){ 380console.log('Create-order API call to PayPal completed successfully.'); 381return response_data.order_id; 382}else{ 383const error_message=response_data.err_msg 384console.error('Error occurred during create-order call to PayPal. ' + error_message); 385throw new Error(error_message); 386}} catch (error){ 387console.error(error.message); 388alert('Could not initiate PayPal Checkout...\n\n' + error.message); 389}}, 390onApprove: async function(data, actions){ 391jQuery('div.wp-ppec-overlay[data-ppec-button-id="' + parent.data.id + '"]').css('display', 'flex'); 392console.log('Setting up the AJAX request for capture-order call.'); 393let pp_bn_data={}; 394pp_bn_data.order_id=data.orderID; 395let wpec_data=parent.data;//parent.data is the data object that was passed to the ppecHandler constructor. 396let nonce=wpec_on_approve_vars.nonce; 397let post_data='action=wpec_pp_capture_order&data=' + encodeURIComponent(JSON.stringify(pp_bn_data)) + '&wpec_data=' + encodeURIComponent(JSON.stringify(wpec_data)) + '&_wpnonce=' + nonce; 398try {
399const response=await fetch(ppecFrontVars.ajaxUrl, { 400method: "post", 401headers: { 402'Content-Type': 'application/x-www-form-urlencoded' 403}, 404body: post_data 405}); 406const response_data=await response.json(); 407console.log('Capture-order API call to PayPal completed successfully.'); 408parent.completePayment(response_data); 409} catch (error){ 410console.error(error); 411alert('PayPal returned an error! Transaction could not be processed. Enable the debug logging feature to get more details...\n\n' + JSON.stringify(error)); 412}}, 413onError: function(err){ 414jQuery("#place-order-"+parent.data.id).find("button>svg").hide(); 415jQuery("#place-order-"+parent.data.id).find("button").attr("disabled",false); 416alert(err); 417}}; 418this.formatMoney=function(n){ 419var decimalPlaces=isNaN(decimalPlaces=Math.abs(parent.data.dec_num)) ? 2:parent.data.dec_num; 420var decimalSeparator=parent.data.dec_sep||"."; 421var thousandSeparator=parent.data.thousand_sep||","; 422var sign=n < 0 ? "-":""; 423var integerPart=String(parseInt(n=Math.abs(Number(n)||0).toFixed(decimalPlaces))); 424var integerPartLength=integerPart.length; 425var remainderLength=integerPartLength > 3 ? integerPartLength % 3:0; 426var formattedIntegerPart=sign + 427(remainderLength ? integerPart.substr(0, remainderLength) + thousandSeparator:"") + 428integerPart.substr(remainderLength).replace(/(\d{3})(?=\d)/g, "$1" + thousandSeparator) + 429(decimalPlaces ? decimalSeparator + Math.abs(n - integerPart).toFixed(decimalPlaces).slice(2):""); 430var formats={ 431left: '{symbol}{price}', 432left_space: '{symbol} {price}', 433right: '{price}{symbol}', 434right_space: '{price} {symbol}' 435}; 436var formattedPrice=formats[parent.data.curr_pos] 437.replace('{symbol}', parent.data.currency_symbol) 438.replace('{price}', formattedIntegerPart); 439return formattedPrice; 440}; 441this.getPriceContainer=function(){ 442return jQuery('.' + parent.scCont.data('price-class')); 443}; 444this.updateAllAmounts=function(){ 445parent.calcTotal(); 446var price_cont=parent.getPriceContainer(); 447if(price_cont.length > 0){ 448var price=price_cont.find('.wpec-price-amount'); 449if(price.length > 0){ 450price.html(parent.formatMoney(parent.data.price)); 451} 452if(parent.data.quantity > 1){ 453price_cont.find('.wpec-quantity').show(); 454price_cont.find('.wpec-quantity-val').html(parent.data.quantity); 455}else{ 456price_cont.find('.wpec-quantity').hide(); 457} 458var total=price_cont.find('.wpec_tot_current_price'); 459var tot_new=price_cont.find('.wpec_tot_new_price'); 460var price_new=price_cont.find('.wpec-new-price-amount'); 461var shipping_new=price_cont.find('.wpec_price_shipping_amount'); 462if(typeof parent.data.discountAmount!=="undefined"){ 463price_new.html(parent.formatMoney(parent.data.newPrice)); 464tot_new.html(parent.formatMoney(parent.data.total)); 465total.html(parent.formatMoney(parent.data.subtotal)); 466}else if(total.length > 0){ 467total.html(parent.formatMoney(parent.data.total)); 468} 469shipping_new.html(parent.formatMoney(parent.getTotalShippingCost())); 470var tax_val=price_cont.find('.wpec-tax-val'); 471if(tax_val.length > 0){ 472tax_val.html(parent.formatMoney(parent.data.tax_amount * parent.data.quantity)); 473}} 474jQuery(document).trigger('wpec_after_update_all_amounts', [ parent ]); 475}; 476this.calcTotal=function(){ 477var itemSubt=parseFloat(parent.data.price); 478var quantity=parseInt(parent.data.quantity); 479var tAmount=itemSubt * quantity; 480let roundedTotal=tAmount.toFixed(2); 481let roundedTotalAsNumber=parseFloat(roundedTotal); 482tAmount=roundedTotalAsNumber; 483var subtotal=tAmount; 484parent.data.newPrice=itemSubt; 485if(typeof parent.data.discount!=="undefined"){ 486var discountAmount=0; 487if(parent.data.discountType==='perc'){ 488discountAmount=parent.PHP_round(tAmount * parent.data.discount / 100, parent.data.dec_num); 489}else{ 490discountAmount=data.discount; 491} 492if(discountAmount > tAmount){ 493discountAmount=tAmount; 494} 495tAmount=tAmount - discountAmount; 496parent.data.discountAmount=parent.PHP_round(discountAmount, parent.data.dec_num); 497parent.data.newPrice=parent.PHP_round(itemSubt - discountAmount / quantity, parent.data.dec_num); 498} 499if(parent.data.tax){ 500var tax=parent.PHP_round(tAmount / quantity * parent.data.tax / 100, parent.data.dec_num); 501parent.data.tax_amount=tax; 502tAmount +=tax * parent.data.quantity;
503subtotal +=parent.PHP_round(subtotal / quantity * parent.data.tax / 100, parent.data.dec_num) * parent.data.quantity; 504} 505const totalShippingCost=parent.getTotalShippingCost(); 506if(totalShippingCost){ 507tAmount +=parseFloat(totalShippingCost); 508subtotal +=parseFloat(totalShippingCost); 509} 510parent.data.total=parent.PHP_round(tAmount, parent.data.dec_num); 511parent.data.subtotal=parent.PHP_round(subtotal, parent.data.dec_num); 512}; 513this.PHP_round=function(num, dec){ 514return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); 515}; 516this.applyVariations=function(amount){ 517var grpId; 518if(parent.data.variations.applied){ 519for(grpId=0; grpId < parent.data.variations.applied.length; ++grpId){ 520var variation=parent.data.variations[ grpId ]; 521amount=amount + parseFloat(variation.prices[ parent.data.variations.applied[ grpId ] ]); 522}} 523return parent.PHP_round(amount, parent.data.dec_num); 524}; 525this.getTotalShippingCost=function(){ 526let total=0; 527const quantity=parent.data.quantity ? parseInt(parent.data.quantity):1; 528const baseShipping=parent.data.shipping ? parseFloat(parent.data.shipping):0; 529const shippingPerQuantity=parent.data.shipping_per_quantity ? parseFloat(parent.data.shipping_per_quantity):0; 530total=baseShipping + (shippingPerQuantity * quantity); 531total=parseFloat(total.toFixed(2)) 532return total; 533} 534jQuery(document).trigger('wpec_before_render_button', [ this ]); 535paypal.Buttons(this.buttonArgs).render('#' + parent.data.id); 536}; 537var wpecModal=function($){ 538var openModalId=false; 539$('.wpec-modal-open, .wpec-modal-overlay, .wpec-modal-close').on('click', function(e){ 540e.preventDefault(); 541toggleModal($(this).data('wpec-modal')); 542}); 543document.onkeydown=function(evt){ 544evt=evt||window.event; 545var isEscape=false; 546if("key" in evt){ 547isEscape=(evt.key==="Escape"||evt.key==="Esc"); 548}else{ 549isEscape=(evt.keyCode===27); 550} 551if(isEscape&&openModalId){ 552toggleModal(); 553}}; 554function toggleModal(modalId){ 555modalId=modalId ? modalId:openModalId; 556openModalId=modalId; 557var modal=document.getElementById(modalId); 558modal.classList.toggle('wpec-opacity-0'); 559modal.classList.toggle('wpec-pointer-events-none'); 560} 561$('.wpec-custom-number-input button').on('click', function(){ 562var increment=$(this).data('action')==='increment' ? 1:-1; 563var input=$(this).parent().find('input'); 564var step=input.attr('step') ? Number(input.attr('step')):1; 565input.val(Number(input.val()) + increment * step).change(); 566}); 567$("#wpec-sort-by").change(function(){ 568$("#wpec-sort-by-form").submit(); 569}); 570}; 571jQuery(wpecModal); 572jQuery(document).on('wpec_before_render_button', function(e, handler){ 573if(! handler.data.subscription){ 574return; 575} 576if(! handler.data.subscription.plan_id){ 577jQuery.ajax({ 578async:false, 579type: "POST", 580url: ppecFrontVars.ajaxUrl, 581data: { 582action: "wpec_sub_get_plan_id", 583data: handler.data, 584nonce: WPECSub.nonce, 585}}) 586.done(function(response){ 587if(response.success){ 588handler.data.subscription.plan_id=response.data; 589return !! response.data; 590}else{ 591handler.data.errors=WPECSub.reqError + '<br />' + response.data[0].message; 592}}) 593.fail(function(){ 594handler.data.errors=WPECSub.reqError; 595}); 596} 597if(! handler.data.subscription.plan_id){ 598return; 599} 600delete handler.buttonArgs.createOrder; 601handler.data.price=handler.data.subscription.recur_price; 602handler.buttonArgs.createSubscription=function(data, actions){ 603handler.calcTotal(); 604var sub_args={ 605'plan_id': handler.data.subscription.plan_id, 606'quantity': handler.data.quantity, 607'shipping_amount': { 608'currency_code': handler.data.currency, 609'value': parseFloat(handler.data.shipping||0) 610}, 611'plan': { 612'billing_cycles': [ { 613'sequence':handler.data.subscription.trial_period > 0 ? 2:1, 614'pricing_scheme':{ 615'fixed_price':{ 616'value':handler.data.newPrice, 617'currency_code':handler.data.currency 618}} 619} ], 620'taxes': { 621'percentage': ! handler.data.tax ? 0:handler.data.tax, 622'inclusive': false 623}} 624}; 625return actions.subscription.create(sub_args); 626}; 627handler.buttonArgs.onApprove=function(data, actions){ 628jQuery('div.wp-ppec-overlay[data-ppec-button-id="' + handler.data.id + '"]').css('display', 'flex'); 629actions.subscription.get().then(function(details){ 630var payment={}; 631payment.subscription=details; 632payment.order={ 633id: data.orderID 634}; 635payment.payer=details.subscriber; 636handler.processPayment(payment, 'wpec_process_subscription'); 637}); 638};}); 639jQuery(document).on('wpec_after_update_all_amounts', function(e, handler){ 640if(! handler.data.subscription){ 641return; 642}
643var price_cont=jQuery('.wp-ppec-shortcode-container[data-ppec-button-id="' + handler.data.id + '"]').closest('.wpec-product-item, .wpec-post-item').find('.wpec-price-container'); 644if(price_cont.length > 0){ 645var tAmount=0; 646var trial=price_cont.find('.wpec-trial-price-amount'); 647if(trial.length > 0){ 648tAmount=calcAmount(handler.data.subscription.trial_price); 649if(tAmount > 0){ 650trial.html(handler.formatMoney(tAmount)); 651}} 652var price=price_cont.find('.wpec-price-amount'); 653if(price.length > 0){ 654tAmount=calcAmount(handler.data.price); 655price.html(handler.formatMoney(tAmount)); 656} 657var newPrice=price_cont.find('.wpec-new-price-amount'); 658if(newPrice.html()){ 659tAmount=calcAmount(handler.data.newPrice); 660newPrice.html(handler.formatMoney(tAmount)); 661} 662function calcAmount(price){ 663var itemSubt=parseFloat(price); 664var quantity=parseInt(handler.data.quantity); 665var tax=0; 666var shipping=0; 667if(handler.data.tax){ 668tax=itemSubt * handler.data.tax / 100; 669} 670if(handler.data.shipping){ 671shipping=parseFloat(handler.data.shipping); 672} 673itemSubt=handler.PHP_round(( itemSubt + tax) * quantity + shipping, handler.data.dec_num); 674return itemSubt; 675};}}); 676jQuery(function($){$('.et-social-icon a, .et-extra-social-icon a').attr('target','_blank');}); 677(()=>{var e={999:e=>{function t(){this.listeners={}}t.prototype.emit=function(e,t){this.listeners[e]=this.listeners[e]??[],this.listeners[e].forEach((e=>e.apply(null,t)))},t.prototype.on=function(e,t){this.listeners[e]=this.listeners[e]??[],this.listeners[e].push(t)},e.exports=t},1677:()=>{function e(e){const t=!!e.getAttribute("data-show-if"),n=t?e.getAttribute("data-show-if").split(":"):e.getAttribute("data-hide-if").split(":"),r=n[0],o=(n.length>1?n[1]:"*").split("|"),i=function(e,t){const n=[],r=e.querySelectorAll('input[name="'+t+'"],select[name="'+t+'"],textarea[name="'+t+'"]');for(let e=0;e<r.length;e++){const t=r[e];("radio"!==t.type&&"checkbox"!==t.type||t.checked)&&n.push(t.value)}return n}(function(e){let t=e;for(;t.parentElement;)if(t=t.parentElement,"FORM"===t.tagName)return t;return null}(e),r);let s=!1;for(let e=0;e<i.length;e++){const t=i[e];if(s=o.indexOf(t)>-1||o.indexOf("*")>-1&&t.length>0,s)break}e.style.display=t?s?"":"none":s?"none":"";const a=e.querySelectorAll("input,select,textarea");for(let e=0;e<a.length;e++){const n=a[e];(s||t)&&n.getAttribute("data-was-required")&&(n.required=!0,n.removeAttribute("data-was-required")),s&&t||!n.required||(n.setAttribute("data-was-required","true"),n.required=!1)}}function t(){const t=document.querySelectorAll(".mc4wp-form [data-show-if],.mc4wp-form [data-hide-if]");for(let n=0;n<t.length;n++)e(t[n])}function n(t){if(!t.target||!t.target.form||t.target.form.className.indexOf("mc4wp-form")<0)return;const n=t.target.form.querySelectorAll("[data-show-if],[data-hide-if]");for(let t=0;t<n.length;t++)e(n[t])}document.addEventListener("keyup",n,!0),document.addEventListener("change",n,!0),document.addEventListener("mc4wp-refresh",t,!0),window.addEventListener("load",t),t()},2573:(e,t,n)=>{const r=n(7422),o=n(3409),i=function(e,t){this.id=e,this.element=t||document.createElement("form"),this.name=this.element.getAttribute("data-name")||"Form #"+this.id,this.errors=[],this.started=!1};i.prototype.setData=function(e){try{o(this.element,e)}catch(e){console.error(e)}},i.prototype.getData=function(){return r(this.element,{hash:!0,empty:!0})},i.prototype.getSerializedData=function(){return r(this.element,{hash:!1,empty:!0})},i.prototype.setResponse=function(e){this.element.querySelector(".mc4wp-response").innerHTML=e},i.prototype.reset=function(){this.setResponse(""),this.element.querySelector(".mc4wp-form-fields").style.display="",this.element.reset()},e.exports=i},8592:(e,t,n)=>{const r=n(2573),o=[],i=new(n(999));function s(e,t){t=t||parseInt(e.getAttribute("data-id"))||0;const n=new r(t,e);return o.push(n),n}e.exports={get:function(e){e=parseInt(e);for(let t=0;t<o.length;t++)if(o[t].id===e)return o[t];return s(document.querySelector(".mc4wp-form-"+e),e)},getByElement:function(e){const t=e.form||e;for(let e=0;e<o.length;e++)if(o[e].element===t)return o[e];return s(t)},on:function(e,t){i.on(e,t)},trigger:function(e,t){"submit"===e||e.indexOf(".submit")>0?(i.emit(t[0].id+"."+e,t),i.emit(e,t)):window.setTimeout((function(){i.emit(t[0].id+"."+e,t),i.emit(e,t)}),10)}}},7422:e=>{var t=/^(?:submit|button|image|reset|file)$/i,n=/^(?:input|select|textarea|keygen)/i,r=/(\[[^\[\]]*\])/g;function o(e,t,n){if(0===t.length)return n;var r=t.shift(),i=r.match(/^\[(.+?)\]$/);if("[]"===r)return e=e||[],Array.isArray(e)?e.push(o(null,t,n)):(e._values=e._values||[],e._values.push(o(null,t,n))),e;if(i){var s=i[1],a=+s;isNaN(a)?(e=e||{})[s]=o(e[s],t,n):(e=e||[])[a]=o(e[a],t,n)}else e[r]=o(e[r],t,n);return e}function i(e,t,n){if(t.match(r))o(e,function(e){var t=[],n=new RegExp(r),o=/^([^\[\]]*)/.exec(e);for(o[1]&&t.push(o[1]);null!==(o=n.exec(e));)t.push(o[1]);return t}(t),n);else{var i=e[t];i?(Array.isArray(i)||(e[t]=[i]),e[t].push(n)):e[t]=n}return e}function s(e,t,n){return n=n.replace(/(\r)?\n/g,"\r\n"),n=(n=encodeURIComponent(n)).replace(/%20/g,"+"),e+(e?"&":"")+encodeURIComponent(t)+"="+n}e.exports=function(e,r){"object"!=typeof r?r={hash:!!r}:void 0===r.hash&&(r.hash=!0);for(var o=r.hash?{}:"",a=r.serializer||(r.hash?i:s),c=e&&e.elements?e.elements:[],l=Object.create(null),u=0;u<c.length;++u){var f=c[u];if((r.disabled||!f.disabled)&&f.name&&n.test(f.nodeName)&&!t.test(f.type)){var d=f.name,h=f.value;if("checkbox"!==f.type&&"radio"!==f.type||f.checked||(h=void 0),r.empty){if
677("checkbox"!==f.type||f.checked||(h=""),"radio"===f.type&&(l[f.name]||f.checked?f.checked&&(l[f.name]=!0):l[f.name]=!1),null==h&&"radio"==f.type)continue}else if(!h)continue;if("select-multiple"!==f.type)o=a(o,d,h);else{h=[];for(var p=f.options,m=!1,g=0;g<p.length;++g){var y=p[g],v=r.empty&&!y.value,b=y.value||v;y.selected&&b&&(m=!0,o=r.hash&&"[]"!==d.slice(d.length-2)?a(o,d+"[]",y.value):a(o,d,y.value))}!m&&r.empty&&(o=a(o,d,""))}}}if(r.empty)for(var d in l)l[d]||(o=a(o,d,""));return o}},3409:e=>{e.exports&&(e.exports=function e(t,n,r){for(const o in n){if(!n.hasOwnProperty(o))continue;const i=o;let s=n[o];if(void 0===s&&(s=""),null===s&&(s=""),void 0!==r&&(i=r+"["+o+"]"),s.constructor===Array)i+="[]";else if("object"==typeof s){e(t,s,i);continue}const a=t.elements.namedItem(i);if(!a)continue;const c=a.type||a[0].type;switch(c){default:a.value=s;break;case"radio":case"checkbox":{const e=s.constructor===Array?s:[s];for(let t=0;t<a.length;t++)a[t].checked=e.indexOf(a[t].value)>-1}break;case"select-multiple":{const e=s.constructor===Array?s:[s];for(let t=0;t<a.options.length;t++)a.options[t].selected=e.indexOf(a.options[t].value)>-1}break;case"select":case"select-one":a.value=s.toString()||s;break;case"date":a.value=new Date(s).toISOString().split("T")[0]}const l=new Event("change",{bubbles:!0});switch(c){default:a.dispatchEvent(l);break;case"radio":case"checkbox":for(let e=0;e<a.length;e++)a[e].checked&&a[e].dispatchEvent(l)}}})}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}(()=>{const e=window.mc4wp||{},t=n(8592);function r(e,t){document.addEventListener(e,(e=>{if(!e.target)return;const n=e.target;("string"==typeof n.className&&n.className.indexOf("mc4wp-form")>-1||"function"==typeof n.matches&&n.matches(".mc4wp-form *"))&&t.call(e,e)}),!0)}n(1677),r("submit",(function(e){if(e.defaultPrevented)return;const n=t.getByElement(e.target);t.trigger("submit",[n,e])})),r("focus",(function(e){const n=t.getByElement(e.target);n.started||(t.trigger("started",[n,e]),n.started=!0)})),r("change",(function(e){const n=t.getByElement(e.target);t.trigger("change",[n,e])})),e.listeners&&([].forEach.call(e.listeners,(function(e){t.on(e.event,e.callback)})),delete e.listeners),e.forms=t,window.mc4wp=e})()})();
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.