{"version":3,"file":"../../js/llms-stripe.min.js","sources":["llms-stripe.js"],"sourcesContent":["/**\n * LifterLMS Stripe JS payment gateway\n *\n * @package LifterLMS_Stripe/Scripts\n *\n * @since 4.0.0\n */\n\n/**\n * Stripe Payment gateway JS\n *\n * @since 4.0.0\n * @since 4.3.2 Unknown.\n * @since 5.0.0 Handle 3DS/SCA authorizations.\n */\n( function( $ ) {\n\n\tvar llms_stripe = window.llms_stripe || {},\n\t\tcustomer = llms_stripe.customer || {},\n\t\tstripe = llms_stripe.account_id ?\n\t\t\tStripe( llms_stripe.publishable_key, { stripeAccount: llms_stripe.account_id } ) :\n\t\t\tStripe( llms_stripe.publishable_key ),\n\t\telements = stripe.elements( llms_stripe.settings.elements ),\n\t\tcard = elements.create( 'card', llms_stripe.settings.card );\n\n\tllms_stripe.customer = {};\n\n\t/**\n\t * Bind DOM events\n\t *\n\t * @since 4.0.0\n\t * @since 4.3.2 Unknown.\n\t * @since 5.0.0 Handle 3DS/SCA authorizations.\n\t */\n\tllms_stripe.bind = function() {\n\n\t\tvar self = this;\n\n\t\t// add token creation & cc validation to core before submit validations.\n\t\twindow.llms.checkout.add_before_submit_event( {\n\t\t\tdata: self,\n\t\t\thandler: self.submit,\n\t\t} );\n\n\t\tif ( $( '#llms-stripe-card-element' ).length ) {\n\n\t\t\tself.mount_card();\n\n\t\t}\n\n\t\t// saved card dropdown interactions.\n\t\t$( '#llms_stripe_saved_card_id' ).on( 'change', function() {\n\n\t\t\tvar card_id = $( this ).val(),\n\t\t\t\t$card_id = $( '#llms_stripe_card_id' );\n\n\t\t\t// remove the existing card ID (if there is one) & mount the Stripe Element.\n\t\t\tif ( 'create-new' === card_id ) {\n\n\t\t\t\t$card_id.val( '' );\n\t\t\t\tcard.mount( '#llms-stripe-card-element' );\n\t\t\t\tself.toggle_submit( false );\n\n\t\t\t\t// unmount the element and set the card ID to be the selected card ID.\n\t\t\t} else {\n\n\t\t\t\t$card_id.val( card_id );\n\t\t\t\tcard.unmount();\n\t\t\t\tself.toggle_submit( true );\n\n\t\t\t}\n\n\t\t} );\n\n\t\t$( '#llms_billing_zip' ).on( 'blur', function() {\n\n\t\t\tcard.update( {\n\t\t\t\tvalue: {\n\t\t\t\t\tpostalCode: $( '#llms_billing_zip' ).val(),\n\t\t\t\t},\n\t\t\t} );\n\n\t\t} ).trigger( 'blur' );\n\n\t\t// trigger saved card field change on pageload.\n\t\t$( '#llms_stripe_saved_card_id' ).trigger( 'change' );\n\n\t\t// when stripe is selected we should trigger a saved card change.\n\t\t$( '.llms-payment-gateways' ).on( 'llms-gateway-selected', function( e, data ) {\n\t\t\tif ( 'stripe' === data.id ) {\n\n\t\t\t\tif ( card._complete ) {\n\t\t\t\t\tself.toggle_submit( true );\n\t\t\t\t} else {\n\t\t\t\t\tself.toggle_submit( false );\n\t\t\t\t}\n\n\t\t\t\t$( '#llms_stripe_saved_card_id' ).trigger( 'change' );\n\n\t\t\t\tif ( 'create-new' !== $( '#llms_stripe_saved_card_id' ).val() ) {\n\t\t\t\t\tcard.focus();\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\n\t\tif ( llms.checkout.$confirm_form.length && 'stripe' === $( '#llms-payment-gateway' ).val() ) {\n\n\t\t\tllms.checkout.processing( 'start' );\n\n\t\t\t// On the order confirmation screen this hidden field will be a redirect URL.\n\t\t\tvar $intent_cs = $( '#llms-stripe-intent-cs' );\n\t\t\tif ( $intent_cs.length ) {\n\t\t\t\tself.bind_confirmation( $intent_cs.val() );\n\t\t\t} else {\n\t\t\t\tllms.checkout.$confirm_form.submit();\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t/**\n\t * Handle SCA/3DS authorization.\n\t *\n\t * @since 5.0.0\n\t *\n\t * @param {string} intent_cs Payment Intent client secret key.\n\t */\n\tllms_stripe.bind_confirmation = function( intent_cs ) {\n\n\t\tvar func;\n\t\tif ( 0 === intent_cs.indexOf( 'pi_' ) ) {\n\t\t\tfunc = 'handleCardPayment';\n\t\t} else if ( 0 === intent_cs.indexOf( 'seti_' ) ) {\n\t\t\tfunc = 'handleCardSetup';\n\t\t}\n\n\t\tstripe[ func ]( intent_cs ).then( function() {\n\n\t\t\tllms.checkout.$confirm_form.submit();\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Mount the card\n\t *\n\t * @since 4.3.2\n\t */\n\tllms_stripe.mount_card = function() {\n\n\t\t// Add an instance of the card UI component into the `card-element`