{"version":3,"sources":["frontend/sv-wc-payment-gateway-payment-form.coffee"],"names":[],"mappings":"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","file":"sv-wc-payment-gateway-payment-form.js","sourceRoot":"../js","sourcesContent":["###\n WooCommerce SkyVerge Payment Gateway Framework Payment Form CoffeeScript\n Version 4.3.0-beta\n\n Copyright (c) 2014-2023, SkyVerge, Inc.\n Licensed under the GNU General Public License v3.0\n http://www.gnu.org/licenses/gpl-3.0.html\n###\njQuery ( $ ) ->\n\t\"use strict\"\n\n\n\tclass window.SV_WC_Payment_Form_Handler_v5_12_0\n\n\n\t\t# Public: Instantiate Payment Form Handler\n\t\t#\n\t\t# args - object with properties:\n\t\t# id - gateway ID\n\t\t# id_dasherized - gateway ID dasherized\n\t\t# plugin_id - plugin ID\n\t\t# type - gateway type, either `credit-card` or `echeck`\n\t\t# csc_required - true if the gateway requires the CSC field to be displayed\n\t\t#\n\t\t# Returns SV_WC_Payment_Form_Handler_v5_12_0 instance\n\t\tconstructor: (args) ->\n\n\t\t\t@id = args.id\n\t\t\t@id_dasherized = args.id_dasherized\n\t\t\t@plugin_id = args.plugin_id\n\t\t\t@type = args.type\n\t\t\t@csc_required = args.csc_required\n\t\t\t@csc_required_for_tokens = args.csc_required_for_tokens\n\t\t\t@enabled_card_types = args.enabled_card_types\n\n\t\t\t# which payment form?\n\t\t\tif $( 'form.checkout' ).length\n\t\t\t\t@form = $( 'form.checkout' )\n\t\t\t\tthis.handle_checkout_page()\n\n\t\t\telse if $( 'form#order_review' ).length\n\t\t\t\t@form = $( 'form#order_review' )\n\t\t\t\tthis.handle_pay_page()\n\n\t\t\telse if $( 'form#add_payment_method' ).length\n\t\t\t\t@form = $( 'form#add_payment_method' )\n\t\t\t\tthis.handle_add_payment_method_page()\n\n\t\t\telse\n\t\t\t\tconsole.log( 'No payment form found!' )\n\t\t\t\treturn\n\n\t\t\t# localized error messages\n\t\t\t@params = window[ \"sv_wc_payment_gateway_payment_form_params\" ]\n\n\t\t\t# handle sample check image hint\n\t\t\t@form.on( 'click', '.js-sv-wc-payment-gateway-echeck-form-check-hint, .js-sv-wc-payment-gateway-echeck-form-sample-check', => this.handle_sample_check_hint() ) if @type is 'echeck'\n\n\t\t\t$( document ).trigger( 'sv_wc_payment_form_handler_init', { id: @id, instance: @ } )\n\n\n\t\t# Public: Handle required actions on the checkout page\n\t\t#\n\t\t# Returns nothing.\n\t\thandle_checkout_page: ->\n\n\t\t\t# format/validate credit card inputs using jQuery.payment\n\t\t\t$( document.body ).on( 'updated_checkout', => this.format_credit_card_inputs() ) if @type is 'credit-card'\n\n\t\t\t# updated payment fields jQuery object on each checkout update (prevents stale data)\n\t\t\t$( document.body ).on( 'updated_checkout', => this.set_payment_fields() )\n\n\t\t\t# handle saved payment methods\n\t\t\t# note on the checkout page, this is bound to `updated_checkout` so it\n\t\t\t# fires even when other parts of the checkout are changed\n\t\t\t$( document.body ).on( 'updated_checkout', => this.handle_saved_payment_methods() )\n\n\t\t\t# validate payment data before order is submitted\n\t\t\t@form.on( \"checkout_place_order_#{ @id }\", => this.validate_payment_data() )\n\n\n\t\t# Public: Handle required actions on the Order > Pay page\n\t\t#\n\t\t# Returns nothing.\n\t\thandle_pay_page: ->\n\n\t\t\tthis.set_payment_fields()\n\n\t\t\t# format/validate credit card inputs using jQuery.payment\n\t\t\tif @type is 'credit-card'\n\t\t\t\tthis.format_credit_card_inputs()\n\n\t\t\t# handle saved payment methods\n\t\t\tthis.handle_saved_payment_methods()\n\n\t\t\t# validate payment data before order is submitted\n\t\t\t@form.submit =>\n\n\t\t\t\t# but only when one of our payment gateways is selected\n\t\t\t\treturn this.validate_payment_data() if $( '#order_review input[name=payment_method]:checked' ).val() is @id\n\n\n\t\t# Public: Handle required actions on the Add Payment Method page\n\t\t#\n\t\t# Returns nothing.\n\t\thandle_add_payment_method_page: ->\n\n\t\t\tthis.set_payment_fields()\n\n\t\t\t# format/validate credit card inputs using jQuery.payment\n\t\t\tif @type is 'credit-card'\n\t\t\t\tthis.format_credit_card_inputs()\n\n\t\t\t# validate payment data before order is submitted\n\t\t\t@form.submit =>\n\n\t\t\t\t# but only when one of our payment gateways is selected\n\t\t\t\treturn this.validate_payment_data() if $( '#add_payment_method input[name=payment_method]:checked' ).val() is @id\n\n\n\t\t# Public: Set payment fields class variable, this is done\n\t\t# during the updated_checkout event as otherwise the reference to\n\t\t# the checkout fields becomes stale (somehow ¯\\_(ツ)_/¯)\n\t\t#\n\t\t# This ensures payment fields are not marked as \"invalid\" before the customer has interacted with them.\n\t\t#\n\t\t# Returns nothing.\n\t\tset_payment_fields: ->\n\n\t\t\t@payment_fields = $( \".payment_method_#{ @id }\" )\n\n\t\t\t$required_fields = @payment_fields.find( '.validate-required .input-text' )\n\n\t\t\t$required_fields.each( ( i, input ) =>\n\n\t\t\t\t# if any of the required fields have a value, bail this loop and proceed with WooCommerce validation\n\t\t\t\tif $( input ).val()\n\t\t\t\t\treturn false\n\n\t\t\t\t# otherwise remove all validation result classes from the inputs, since the form is freshly loaded\n\t\t\t\t$( input ).trigger( 'input' )\n\t\t\t)\n\n\n\t\t# Public: Validate Payment data when order is placed\n\t\t#\n\t\t# Returns boolean, true if payment data is valid, false otherwise\n\t\tvalidate_payment_data: ->\n\n\t\t\t# bail when already processing\n\t\t\treturn false if @form.is( '.processing' )\n\n\t\t\t@saved_payment_method_selected = @payment_fields.find( '.js-sv-wc-payment-gateway-payment-token:checked' ).val()\n\n\t\t\t# perform internal validations (all fields present & valid, etc)\n\t\t\tvalid = if @type is 'credit-card' then this.validate_card_data() else this.validate_account_data()\n\n\t\t\t# let gateways perform their own validation prior to form submission\n\t\t\thandler = $( document.body ).triggerHandler( 'sv_wc_payment_form_valid_payment_data', { payment_form: this, passed_validation: valid } ) isnt false\n\n\t\t\treturn valid && handler\n\n\n\t\t# Public: format card data using jQuery.Payment\n\t\t#\n\t\t# Returns nothing.\n\t\tformat_credit_card_inputs: ->\n\t\t\t$card_number = $('.js-sv-wc-payment-gateway-credit-card-form-account-number').payment('formatCardNumber');\n\t\t\t$expiry = $('.js-sv-wc-payment-gateway-credit-card-form-expiry').payment('formatCardExpiry');\n\t\t\t$csc = $('.js-sv-wc-payment-gateway-credit-card-form-csc').payment('formatCardCVC');\n\n\t\t\t# trigger a 'change' event for non empty fields only\n\t\t\t$card_number.trigger( 'change') if $card_number.val() && $card_number.val().length > 0\n\t\t\t$expiry.trigger( 'change') if $expiry.val() && $expiry.val().length > 0\n\t\t\t$csc.trigger( 'change') if $csc.val() && $csc.val().length > 0\n\n\t\t\t# perform inline validation on credit card inputs\n\t\t\t$( '.js-sv-wc-payment-gateway-credit-card-form-input' ).on( 'change paste keyup', => this.do_inline_credit_card_validation() )\n\n\n\t\t# Public: perform inline validation on credit card fields\n\t\t#\n\t\t# Returns nothing.\n\t\tdo_inline_credit_card_validation: ->\n\n\t\t\t$card_number = $( '.js-sv-wc-payment-gateway-credit-card-form-account-number' )\n\t\t\t$expiry = $( '.js-sv-wc-payment-gateway-credit-card-form-expiry' )\n\t\t\t$csc = $( '.js-sv-wc-payment-gateway-credit-card-form-csc' )\n\n\t\t\t$card_type = $.payment.cardType( $card_number.val() )\n\n\t\t\tif $card_type not in @enabled_card_types\n\t\t\t\t$card_number.addClass( 'invalid-card-type' )\n\t\t\telse\n\t\t\t\t$card_number.removeClass( 'invalid-card-type' )\n\n\t\t\tif $.payment.validateCardExpiry( $expiry.payment( 'cardExpiryVal' ) )\n\t\t\t\t$expiry.addClass( 'identified' )\n\t\t\telse\n\t\t\t\t$expiry.removeClass( 'identified' )\n\n\t\t\tif $.payment.validateCardCVC( $csc.val() )\n\t\t\t\t$csc.addClass( 'identified' )\n\t\t\telse\n\t\t\t\t$csc.removeClass( 'identified' )\n\n\n\t\t# Public: Perform validation on the credit card info entered\n\t\t#\n\t\t# Return boolean, true if credit card info is valid, false otherwise\n\t\tvalidate_card_data: ->\n\n\t\t\terrors = []\n\n\t\t\tcsc = @payment_fields.find( '.js-sv-wc-payment-gateway-credit-card-form-csc' ).val()\n\n\t\t\t# always validate the CSC if present\n\t\t\tif csc?\n\n\t\t\t\tif csc\n\t\t\t\t\terrors.push( @params.cvv_digits_invalid ) if /\\D/.test( csc )\n\t\t\t\t\terrors.push( @params.cvv_length_invalid ) if csc.length < 3 || csc.length > 4\n\t\t\t\telse if @csc_required\n\t\t\t\t\tif not @saved_payment_method_selected or @csc_required_for_tokens\n\t\t\t\t\t\terrors.push( @params.cvv_missing )\n\n\t\t\t# Only validate the other CC fields if necessary\n\t\t\tif not @saved_payment_method_selected\n\n\t\t\t\taccount_number = @payment_fields.find( '.js-sv-wc-payment-gateway-credit-card-form-account-number' ).val()\n\t\t\t\texpiry = $.payment.cardExpiryVal( @payment_fields.find( '.js-sv-wc-payment-gateway-credit-card-form-expiry' ).val() )\n\n\t\t\t\t# replace any dashes or spaces in the card number\n\t\t\t\taccount_number = account_number.replace( /-|\\s/g, '' )\n\n\t\t\t\t# validate card number\n\t\t\t\tif not account_number\n\t\t\t\t\terrors.push( @params.card_number_missing )\n\t\t\t\telse\n\t\t\t\t\terrors.push( @params.card_number_length_invalid ) if account_number.length < 12 || account_number.length > 19\n\t\t\t\t\terrors.push( @params.card_number_digits_invalid ) if /\\D/.test( account_number )\n\t\t\t\t\terrors.push( @params.card_number_invalid ) unless $.payment.validateCardNumber( account_number ) # performs luhn check\n\n\t\t\t\t# validate expiration date\n\t\t\t\terrors.push( @params.card_exp_date_invalid ) unless $.payment.validateCardExpiry( expiry ) # validates future date\n\n\t\t\tif errors.length > 0\n\t\t\t\tthis.render_errors( errors )\n\t\t\t\treturn false\n\t\t\telse\n\t\t\t\t# get rid of any space/dash characters\n\t\t\t\t@payment_fields.find( '.js-sv-wc-payment-gateway-credit-card-form-account-number' ).val( account_number )\n\t\t\t\treturn true\n\n\n\t\t# Public: Perform validation on the eCheck info entered\n\t\t#\n\t\t# Return boolean, true if eCheck info is valid, false otherwise\n\t\tvalidate_account_data: ->\n\n\t\t\treturn true if @saved_payment_method_selected\n\n\t\t\terrors = []\n\n\t\t\trouting_number = @payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-routing-number').val()\n\t\t\taccount_number = @payment_fields.find('.js-sv-wc-payment-gateway-echeck-form-account-number').val()\n\n\t\t\t# validate routing number\n\t\t\tif not routing_number\n\t\t\t\terrors.push( @params.routing_number_missing )\n\t\t\telse\n\t\t\t\terrors.push( @params.routing_number_length_invalid ) if 9 != routing_number.length\n\t\t\t\terrors.push( @params.routing_number_digits_invalid ) if /\\D/.test( routing_number )\n\n\t\t\t# validate account number\n\t\t\tif not account_number\n\t\t\t\terrors.push( @params.account_number_missing )\n\t\t\telse\n\t\t\t\terrors.push( @params.account_number_length_invalid ) if account_number.length < 3 || account_number.length > 17\n\t\t\t\terrors.push( @params.account_number_invalid ) if /\\D/.test( account_number )\n\n\t\t\tif errors.length > 0\n\t\t\t\tthis.render_errors( errors )\n\t\t\t\treturn false\n\t\t\telse\n\t\t\t\t# get rid of any space/dash characters\n\t\t\t\t@payment_fields.find( '.js-sv-wc-payment-gateway-echeck-form-account-number' ).val( account_number )\n\t\t\t\treturn true\n\n\n\t\t# Public: Render any new errors and bring them into the viewport\n\t\t#\n\t\t# Returns nothing.\n\t\trender_errors: (errors) ->\n\n\t\t\t# hide and remove any previous errors\n\t\t\t$( '.woocommerce-error, .woocommerce-message' ).remove()\n\n\t\t\t# add errors\n\t\t\t@form.prepend ''\n\n\t\t\t# unblock UI\n\t\t\t@form.removeClass( 'processing' ).unblock()\n\t\t\t@form.find( '.input-text, select' ).blur()\n\n\t\t\t# scroll to top\n\t\t\t$( 'html, body' ).animate( { scrollTop: @form.offset().top - 100 }, 1000 )\n\n\n\t\t# Public: Handle associated actions for saved payment methods\n\t\t#\n\t\t# Returns nothing.\n\t\thandle_saved_payment_methods: ->\n\n\t\t\t# make available inside change events\n\t\t\tid_dasherized = @id_dasherized\n\n\t\t\tcsc_required = @csc_required\n\t\t\tcsc_required_for_tokens = @csc_required_for_tokens\n\n\t\t\t$new_payment_method_selection = $( \"div.js-wc-#{ id_dasherized }-new-payment-method-form\" )\n\t\t\t$csc_field = $new_payment_method_selection.find( '.js-sv-wc-payment-gateway-credit-card-form-csc' ).closest( '.form-row' )\n\n\t\t\t# show/hide the saved payment methods when a saved payment method is de-selected/selected\n\t\t\t$( \"input.js-wc-#{ @id_dasherized }-payment-token\" ).on 'change', ->\n\n\t\t\t\ttokenized_payment_method_selected = $( \"input.js-wc-#{ id_dasherized }-payment-token:checked\" ).val()\n\n\t\t\t\tif tokenized_payment_method_selected\n\n\t\t\t\t\t# using an existing tokenized payment method, hide the 'new method' fields\n\t\t\t\t\t$new_payment_method_selection.slideUp( 200 )\n\n\t\t\t\t\t# move the CSC field out of the 'new method' fields so it can be used with the tokenized transaction\n\t\t\t\t\tif csc_required_for_tokens\n\t\t\t\t\t\t$csc_field.removeClass( 'form-row-last' ).addClass( 'form-row-first' )\n\t\t\t\t\t\t$new_payment_method_selection.after( $csc_field )\n\n\t\t\t\telse\n\t\t\t\t\t# use new payment method, display the 'new method' fields\n\t\t\t\t\t$new_payment_method_selection.slideDown( 200 )\n\n\t\t\t\t\t# move the CSC field back into its regular spot\n\t\t\t\t\tif csc_required_for_tokens\n\t\t\t\t\t\t$csc_field.removeClass( 'form-row-first' ).addClass( 'form-row-last' )\n\t\t\t\t\t\t$new_payment_method_selection.find( '.js-sv-wc-payment-gateway-credit-card-form-expiry' ).closest( '.form-row' ).after( $csc_field )\n\t\t\t.change()\n\n\t\t\t# display the 'save payment method' option for guest checkouts if the 'create account' option is checked\n\t\t\t# but only hide the input if there is a 'create account' checkbox (some themes just display the password)\n\t\t\t$( 'input#createaccount' ).on 'change', ->\n\t\t\t\t$parent_row = $( \"input.js-wc-#{ id_dasherized }-tokenize-payment-method\" ).closest( 'p.form-row' )\n\n\t\t\t\tif $( this ).is( ':checked' )\n\t\t\t\t\t$parent_row.slideDown()\n\t\t\t\t\t$parent_row.next().show()\n\t\t\t\telse\n\t\t\t\t\t$parent_row.hide()\n\t\t\t\t\t$parent_row.next().hide()\n\n\t\t\t$( 'input#createaccount' ).change() unless $( 'input#createaccount' ).is( ':checked' )\n\n\n\t\t# Public: Handle showing/hiding the sample check image\n\t\t#\n\t\t# Returns nothing.\n\t\thandle_sample_check_hint: ->\n\n\t\t\t$sample_check = @payment_fields.find( '.js-sv-wc-payment-gateway-echeck-form-sample-check' )\n\n\t\t\tif $sample_check.is( \":visible\" ) then $sample_check.slideUp() else $sample_check.slideDown()\n\n\n\n\t\t# Blocks the payment form UI\n\t\t#\n\t\t# @since 3.0.0\n\t\tblock_ui: -> @form.block( message: null, overlayCSS: background: '#fff',opacity: 0.6 )\n\n\n\t\t# Unblocks the payment form UI\n\t\t#\n\t\t# @since 3.0.0\n\t\tunblock_ui: -> @form.unblock()\n\n\n\t# dispatch loaded event\n\t$( document.body ).trigger( \"sv_wc_payment_form_handler_v5_12_0_loaded\" )\n"]}