{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/applePay.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePayModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePayModelBuilder.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePaySDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayCart.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayCheckout.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayPaymentProcessing.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/constants/applePayPaymentProcessingConstants.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/constants/errorMessages.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/errorhandler/errorHandlingCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/helpers/applePayHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/helpers/applePayPaymentProcessingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeGeneral.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeSFRA.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeUtils.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardModelBuilder.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardSDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardFields.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardList.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardPaymentProcessing.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardSessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardVaultManager.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardVaultManagerModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/constants/creditCardPaymentProcessingConstants.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditCard.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/errorhandler/creditCardFormFieldsValidator.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/errorhandler/errorHandlingCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/billingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/braintreeCreditCardSdkHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardAccountHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardFormFieldsHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardPaymentProcessingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardSessionAccountHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePayModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePayModelBuilder.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePaySDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayCart.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayCheckout.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayList.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayPaymentProcessing.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePaySessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/constants/errorMessages.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/constants/googlePayPaymentProcessingConstants.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/errorhandler/errorHandlingCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/googlePay.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePayHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePayPaymentProcessingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePaySDKHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/helper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/loaderHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmModelBuilder.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmSDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/components/lpmPaymentProcessing.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/constants/errorMessages.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/errorhandler/lpmErrorHandler.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/helpers/lpmHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/helpers/lpmPaymentProcessorHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/local/lpm.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paymentMethodGeneral.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paymentMethodGeneralHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/braintreesdk/braintreePayPalSDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalAccountPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalButtonDisplayBehavior.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalCartPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalCheckoutPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalList.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalMiniCartPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalProductPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalSessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalStoredBillingAddress.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/errorhandler/errorHandlingCartModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/errorhandler/errorHandlingCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/errorhandler/errorHandlingMiniCartModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountPageHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalBillingFormHelperGlobal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalCheckoutModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalExpressModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalListHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalProductPageModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalRequestsHelperGlobal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalSessionAccountHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalAccountModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalCartModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalExpressModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalProductPageModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/payPal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/braintreesdk/braintreeSrcSDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcCart.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcCheckout.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcList.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcSessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/constants/srcConstants.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/errorhandler/errorHandlingCartModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/errorhandler/errorHandlingCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcButtonHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcListHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcPaymentProcessingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcAccountModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcCartModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcCheckoutModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/src.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoModelBuilder.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoSDK.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoButton.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoCheckout.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoList.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoProcessing.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoSessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/constants/venmoConstants.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/errorhandler/errorHandlingBaseModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/helpers/venmoHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/helpers/venmoProcessingHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/venmo.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js"],"names":["braintreeApplePayModelBuilder","require","applePayPaymentProcessing","ErrorHandlingBaseModel","ErrorHandlingCheckoutModel","applePayErrorMessages","braintreeApplePayModelResponse","applePayMessages","initCheckout","errorHandlingCheckoutModel","error","NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS","applePayErrorHandler","init","btApplePayModel","initCart","errorHandlingBaseModel","btApplePayConfigs","messages","module","exports","braintreeApplePaySDK","braintreeGeneral","isFtEnabled","btClientInstancePromise","apInstance","amount","braintreeClientInstancePromise","isFraudToolsEnabled","collectFraudData","response","Promise","resolve","customMessage","FRAUD_DATA_CELLECTION_ISNOT_ENABLED","initApplePay","ApplePaySession","createApplePayPayment","then","applePayInstance","canMakePaymentsWithActiveCard","merchantIdentifier","createPaymentDataRequest","applePayConfigs","onValidateMerchant","sessionEvent","performValidation","onPaymentAuthorized","tokenize","updateApplePayAmount","$","ajax","url","getOrderInfoUrl","async","type","dataType","success","data","window","location","reload","applePayHelper","braintreeApplePayModel","braintreeApplePayConfigs","getBraintreeApplePayConfigs","clientToken","message","createClientInstance","btClientInstance","braintree","applePay","create","client","createPaymentRequest","total","label","options","displayName","validationURL","token","payment","helper","paymentMethodGeneral","$applePayButton","document","querySelector","paymentData","$braintreeCartButtons","applePayCheckoutFormData","errHandlingModel","expandApplePayCheckoutFormData","csrfToken","append","name","value","nonce","deviceData","JSON","stringify","shippingAddress","processCartFlow","billingAddressData","billingAddress","paymentMethodName","parse","getAttribute","placeOrderUrl","checkoutFromCartUrl","checkoutFormFields","paymentFieldData","getPaymentFieldsData","createPaymentFormData","submitCustomerForm","email","contentType","processData","errorMessage","fieldErrors","length","forEach","index","keys","Object","concat","replace","serverErrors","cartError","href","redirectUrl","err","errorHandlingModel","setAttribute","processCheckoutFlow","storeFrontBillingData","getUpdatedStoreFrontBillingData","updateBillingFormValues","loaderInstance","applePayPaymentProcessingHelper","applePayPaymentProcessingConstants","applePayCart","applePayCheckout","$braintreeApplePayLoader","$continueButton","applePayEnabledOnCheckout","Boolean","loader","applePayModel","onTokenizedPayment","applePayFlow","getApplePayFlowId","removeActiveSessionPayment","FLOW_CHECKOUT_NAME","click","FLOW__CART_NAME","createApplePaySession","paymentDataRequest","isRequiredBillingContactFields","requiredBillingContactFields","isRequiredShippingContactFields","requiredShippingContactFields","session","onvalidatemerchant","event","merchantSession","completeMerchantValidation","catch","abort","onpaymentauthorized","show","tokenizedPayload","completePayment","STATUS_SUCCESS","TokenizedPaymentData","getTokenizedPaymentData","hide","STATUS_FAILURE","begin","onApplePayButtonClick","hideError","isBilligFiledsValid","result","fraudDataPayload","setApplePayDeviceData","canMakePayments","showApplePayButton","makeApplePayButtonDisabled","addEventListener","hideApplePayTab","errorMessages","$errorContainer","prototype","showErrorByObject","msg","code","CLIENT_GATEWAY_NETWORK","createErrorNotification","showErrorByMessage","addClass","scrollTo","empty","call","$topErrorMessageText","$topErrorMessageWrapper","textContent","style","display","innerHTML","$applepayDataMethod","$phoneField","braintreeApplePayButtonConfigs","$braintreeApplePayDeviceData","classList","add","removeSessionNonce","isValidInputField","toggleContinueButtonOnBillingPage","applePayContent","continueButtonToggle","getShippingAddress","shippingContact","streetAddress","addressLines","extendedAddress","locality","region","administrativeArea","toUpperCase","postalCode","decodeURIComponent","countryCodeAlpha2","countryCode","firstName","givenName","lastName","familyName","phone","phoneNumber","emailAddress","getBillingAddress","billingContact","payload","shippingAddressData","creditCardListLoader","showAddNewCardOptions","$addNewCardButton","$addNewCardBlock","removeCard","e","target","get","UUID","remove","newDefaultAccount","fontWeight","children","removeClass","trigger","fail","removeErrorMessage","deletePayment","stopPropagation","dataset","paymentInfo","find","html","removeAttr","attr","hasClass","modal","makeDefaultCard","id","paymentMethodID","newDefaultProperty","toRemoveDefaultProperty","initAccount","$creditCardAccountBtLoader","creditCardListLoaderExists","on","authorization","dataCollector","kount","getBtCustomerPaymentMethods","clientInstance","vaultManager","fetchPaymentMethods","defaultFirst","clientTokenPromise","createGeneralClientInstancePromise","isCheckoutPage","btAccountBusinessLogic","fillPaymentSammaryContainer","initPaymentMethodTabClickBehavior","creditCardBusinessLogic","creditCardOnAccountEnabled","creditCardEnabledOnCheckout","payPalBusinessLogic","payPalEnabledOnCheckout","payPalEnabledOnProduct","payPalEnabledOnCart","payPalEnabledOnAccountPage","initProduct","initMiniCart","googlePayBusinnessLogic","googlePayEnabledOnCheckout","googlePayEnabledOnCart","applePayBusinessLogic","applePayEnabledOnCart","venmoBusinessLogic","isVenmoEnabledOnAccountPage","isVenmoEnabledOnBillingPage","initBillingCheckout","srcBusinessLogic","isSrcEnabledOnAccountPage","isSrcEnabledOnCartPage","isSrcEnabledOnBillingPage","initCartCheckout","lpmBusinessLogic","isLpmEnebledOnBillingPage","_typeof","obj","Symbol","iterator","constructor","isDebugMode","console","consoleLog","log","consoleError","apply","arguments","bu","pdpOnlickForAsignedPaypalPayment","$bundleItem","getOptions","$productContainer","map","$elOption","urlValue","val","selectedValueId","optionId","toArray","pid","$btn","closest","form","quantity","items","text","parseInt","childProducts","method","responseJSON","getSelectedData","selectEl","getElementsByTagName","option","i","selected","attributes","postData","formData","FormData","key","res","errorInstances","createErrorInstance","containerElement","callback","Constructor","cb","push","containerEl","braintreeCreditCardSDK","creditCardFormFieldHelper","braintreeCreditCardSdkHelper","billingHelper","hostedFieldsInstance","orderData","sitePrefs","isSkip3dSecureLiabilityResult","is3dSecureEnabled","getShippingAdditionalInfo","orderAddress","workPhoneNumber","shippingGivenName","recipientName","split","slice","join","shippingSurname","shippingPhone","line1","line2","city","state","updateOrderData","shippingAdditionalInfo","initCreditCardFields","hostedFieldsParams","styles","getHostedFieldsStyles","configs","getHostedFieldsConfig","createHostedFields","hfInstance","clearHostedFields","tokenizationOptions","reject","customError","createTokenizationOptions","billingAddressValidation","billingValidationError","btTokenizePayload","apply3dSecureValidation","bin","billingData","liabilityShifted","threeDSecureDataValidationPayload","processNewCard","is3dSecureDisabled","orderAmount","details","processStoredCard","processSessionCard","isBasketDataValid","customErrorMessage","getClientInstancePromise","braintreeCreditCardModel","creditCardHelper","braintreeCreditCardConfigs","getCheckoutBraintreeCreditCardConfigs","btCreditCardModel","btCreditCardConfigs","hostedFields","fields","threeDSecure","version","threeDSecurePayload","surname","address1","address2","stateCode","country","challengeRequested","additionalInformation","onLookupComplete","next","storeCleannedResponse","storeCleannedRequest","verifyCard","logURL","fetch","headers","body","paymentMethod","tokenizeOption","clear","creditCardVaultManager","addNewCreditCardLoader","creditCardAccountHelper","$braintreeCreditCardLoader","$customCreditCardErrorContainer","ccMessages","rejectIfCardExistsInVault","clientInstancePromise","btPayload","errorList","payloadDetails","lastFour","toString","cardType","toLowerCase","isNewCardCanBeStored","newCardCanBeStored","CARD_ALREADY_EXIST_ERROR_MESSAGE","storeNewCreditCard","customErrorList","CLIENT_MISSING_GATEWAY_CONFIGURATION","btModelPayload","tokenizePayload","$addCreditCardForm","addCreditCardFormUrl","setCardHiddenFields","serialize","creditCardErrorHandler","finally","preventDefault","storeNewCreditCardCustom","isSubscriptionPage","spinner","start","initCreditCartAccountLoaders","braintreeCreditCardLoaderExists","creditCardMessages","addNewCreditCardFormExists","removeFromDomCardsWhichAreNotInVaultMgr","generalHfValidation","$braintreeCreditCardFieldsContainer","braintreeCreditCardConfig","isHostedFieldsWasInited","isBraintreeCreditCardConfigValid","querySelectorAll","el","generalHostedFieldsValidation","$braintreeDeviceData","creditCardVaultManagerComponent","creditCardPaymentProcessingHelper","saveCreditCardBlockManipulation","saveCreditCard","displaySaveCreditCardBlock","$saveCreditCard","$braintreeSaveCardContainer","checked","cardListChange","btUtils","$creditCardList","getCreditCardListContainer","$braintreeCreditCardNonce","getCreditCardNonceFieldContainer","$braintreeCardPaymentMethod","creditCardOption","selectedOptions","creditCardOptionID","creditCardFieldsToDisplayArray","getCCFieldsToDisplay","asArray","creditCardHostedFieldsArray","getCCFields","creditCardFiledsToDisplayObject","asObject","selectedCreditCard","showSaveCreditCardBlock","hideCardElements","showCardElements","setCardFields","hideStoredCardAsSessionCard","$sessionCreditCard","isSessionCardVisible","css","sessionCardType","sessionCardLastFour","storedAsSessionCardExists","hideAlreadyStoredCard","hideSaveCreditCardBlock","creditCardListExist","creditCardPaymentProcessingConstants","processCreditCard","customErrorMessages","basketDataValidResponse","TOTAL_BASKET_AMOUNT_INVALID","allowZeroAmountOrders","getBillingAddressFormValues","isCheckoutFlow","creditCardFlow","getCreditCardFlowID","FLOW_NEW_CARD_NAME","btPayloadDetails","newCardType","newCardLastFour","fillCreditCardFormWithPayloadData","setSessionCreditCardDataAttributes","fillSessionCreditCardFormWithPayloadData","displayStoredCreditCardList","markAsSelectedSessionAccount","FLOW__SESSION_CARD_NAME","FLOW_JS_STORED_CARD_NAME","getNonceFromStoredCard","btStoredCardPayload","threeDSecureInfo","fill3DsData","WROND_CHECKOUT_FLOW","isCreditCardTabActive","isActiveCreditCardTab","isTrusted","creditCardSessionAccountHelper","clearSessionAccount","sessionOption","defaultCreditCard","getOptionByDataDefault","creditCardFieldstoDisplay","creditCardFieldsAsArray","getSessionAccountOption","sessionLastFour","sessionType","showAlreadyStoredCard","clearCreditCardFields","clearCreditCardNonceField","setCreditCardFieldsToDisplay","ccAccount","CreditCardVaultManagerModel","CreditCardVaultManagerModelInstance","storefrontCardArray","each","$card","getCardsWhichAreNotInVault","cardsWhichAreNotInVault","card","isCreditCardExistOnStorefrontAndVault","isCardExists","personalizedClientTokenPromise","customerPaymentMethodsFromVaultPromise","getCardsFromVaultMgrPromise","vaultMgrPaymentMethods","cardPmArray","isCardType","getCardFromVaultMgrByData","pmDetails","getCardFromStorefrontByData","storefrontCardList","storedStorefrontCard","toLocaleLowerCase","cardPaymentMethods","arrayOfNotInVaultCards","storefrontCard","sfCardType","sfLastFour","foundCard","vaultMgrCard","includes","vaultMgrCardPromise","cardFromVaultMgr","getNonceByCardData","braintreeCreditCardModelBuilder","creditCardList","creditCardFields","creditCardPaymentProcessing","creditCardAccount","btCreditCardModelResponse","creditCardFormFieldsHelper","BRAINTREE_ERROR_SELECTOR","BRAINTREE_VALID_SELECTOR","BRAINTREE_FOCUSED_SELECTOR","getArrayOfFieldContainers","arrayOfFormFields","collectionOfCreditCardFields","arrayOfFieldContainers","fieldContainer","fieldName","makeFormFieldsInvalid","arrayOfInvalidFieldsFrom","arrayOfInvalidFormFields","$field","makeAllFormFieldsInvalid","arrayOfCreditCardFieldNames","makeAllFormFieldsValid","arrayOfCreditCardFields","creditCardFormFieldValidation","ALL_HOSTED_FIELDS_FIELDS_EMPTY","HOSTED_FIELDS_FIELDS_INVALID","errorHtml","convertBtFromFieldsToDw","arrayOfBtFormFields","creditCardFieldsMap","cardholderName","number","cvv","expirationDate","braintreeFieldName","convertedFeeldArray","allFieldsAreEmptyErrorBehavior","someFieldsAreInvalidErrorBehavior","btInvalidHostedFields","convertedFormFields","processBraintreeHostedFiledsErrors","errorPayload","braintreeErrorCode","invalidFields","invalidFieldKeys","errorMsg","secure3DFailed","$sbtBtn","$billingForm","checkValidity","reportValidity","scrollIntoView","behavior","block","tokenizePayloadDetails","$cardOwnerToDisplay","$cardNumberToDisplay","$cardCvvToDisplay","$cardExpirationToDisplay","ccToDisplayFieldsAsObject","cardOwnerToDisplay","cardNumberToDisplay","cardCvvToDisplay","cardExpirationToDisplay","ccToDisplayFieldsAsArray","values","$braintreeCardOwner","$braintreeExpirationDate","$braintreeCardNumber","$braintreeCvv","ccFieldsAsObject","braintreeCardOwner","braintreeExpirationDate","braintreeCardNumber","braintreeCvv","ccFieldsAsArray","selectedCard","cacheCardFields","cartNumber","expiration","owner","cardFields","input","color","selector","placeholder","save","isSave","isHide","braintreeCreditCardFieldsConfigs","convertCreditCardType","charAt","$creditCardAccount","braintreeResponse","btResponse","$creditCardFieldsCardNumber","btResponseDetails","expirationMonth","expirationYear","substr","usedCreditCardAccount","isSavedCard","$newCCAccount","getElementById","removeAttribute","selectedOptionValue","selectedOption","creditCardFlowID","newCardID","sessionCardID","storedCardID","getSelectedOption","contains","$selectedOption","$braintreeIs3dSecureRequired","getStoredCardByData","$foundCard","_","$el","storedCardType","storedCardLastFour","$storedCard","flag","creditCardFieldsArray","braintreeGooglePaySDK","googlePaymentInstance","paymentsClient","initGooglePay","googleMerchantId","createGooglePayment","gpInstance","allowedPaymentMethods","isReadyToPay","apiVersion","apiVersionMinor","parseResponse","googlePayUpdateAmount","config","initPaymentsClient","instanceType","google","payments","api","PaymentsClient","environment","getPaymentsClient","braintreeGooglePayModel","googlePayHelper","googlePayErrorMessages","braintreeGooglePayConfigs","getBraintreeGooglePayConfigs","btGooglePayModel","btGooglePayConfigs","NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS","googlePaySDKHelper","googlePayOptions","createGooglePayOptions","googlePayment","requestObject","transactionInfo","currencyCode","currency","totalPriceStatus","totalPrice","String","merchantInfo","merchantName","shippingAddressRequired","isShippingAddressRequired","shippingAddressParameters","allowedCountryCodes","phoneNumberRequired","emailRequired","merchantId","googlePayConfigs","googlePayBillingAddressData","googlePayShippingAddressData","googlePayNonce","googlepayPaymentType","googlePayCardDescription","googlepayCheckoutFormData","errHandlerModel","$braintreeGooglePayLoader","expandGooglePayCheckoutFormData","paymentFieldsData","sessionStorage","setItem","paymentType","description","errorHandlerModel","$googlepayButton","$googlepayNonce","$googlepayCardDescription","$braintreeGooglepayPaymentType","$googlePayBillingAddress","$btGooglepayAccountsList","googlePayAccountListExist","googlePayContentTabHandler","googlePayPaymentProcessingHelper","googlePayCart","googlePayCheckout","googlePaySessionAccount","googlePayPaymentProcessingConstants","googlePayModel","googlePayConfig","onTokenizePayment","googlepayNonce","gpCardDescription","createGooglepayBillingAddressData","googlePayFlow","getGooglePayFlowId","createGooglepayShippingAddressData","showGooglepayAccount","onGooglePaymentButtonClicked","showOrderTotalError","cardPaymentMethod","parameters","billingAddressRequired","billingAddressParameters","format","loadPaymentData","googlePayErrorHandler","setGooglePayDeviceData","button","createButton","onClick","appendChild","$googlepayContent","cardDescription","$newGPAccount","$gpAccount","$sessionAccount","ORDER_TOTAL_0","GOOGLE_PAY_WINDOW_CLOSED","FLOW_NEW_GP_ACCOUNT_NAME","zeroAmountErrorMsg","statusCode","statusMessage","braintreeGooglePayModelBuilder","googlePayList","googlePayPaymentProcessing","braintreeGooglePayModelResponse","googlePayMessages","errorHandlerBaseModel","errorHandlerCheckoutModel","triggerGooglePayTab","braintreeGooglePayButtonConfigs","$braintreeGooglePayDeviceData","isActiveGooglePayTab","sessionPaymentMethodId","$googlePayTab","googlePayFlowId","flows","checkout","cart","newGpAccount","paymentMethodData","info","shippingData","gpOptions","googlePayVersion","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Array","from","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","done","return","isArray","braintreeConstants","PAYMENT_METHOD_ID_PAYPAL","PAYMENT_METHOD_ID_VENMO","PP_FUNDING_SOURCE_CARD","PP_FUNDING_SOURCE_PAYLATER","PP_DEBIT_CREDIT_PAYMENT_TYPE","PP_PAYLATER_PAYMENT_TYPE","initCartUpdateEvent","$grantTotal","currentGrantTotalValue","newGrantTotalValue","updateCartTotals","createEvent","initEvent","dispatchEvent","stage","hash","substring","paymentMethodChangeHandle","currentTab","$tabContent","tab","getPaymentMethodToLowerCase","element","updateCheckoutView","$paymentSummary","htmlToAppend","order","billing","selectedPaymentInstruments","selectedPaymentInstrument","paymnetMethodId","fundingSource","maskedCreditCardNumber","braintreePaypalEmail","braintreeVenmoUserId","priceTotal","field","updatePaymentMethodTab","braintreePaymentMethod","content","reduce","accumulator","item","elem","lastIndexOf","allAddress","isNonceExist","pmName","$nonce","nonceValue","$tab","isActiveTab","accountsLoader","removeBtPayment","$loaderContainter","paymentFields","fieldsData","paymentFieldsParsed","entries","entry","_entry","setDefaultProperty","params","activePaymentMethods","methodId","helpers","PayPal","Venmo","GooglePay","CREDIT_CARD","SRC","ApplePay","activePM","showCartErrorMsg","$billingFormFields","$selectContainer","selectedOptionIndex","selectedIndex","addressData","dwfrm_billing_addressFields_firstName","dwfrm_billing_addressFields_lastName","dwfrm_billing_addressFields_address1","dwfrm_billing_addressFields_address2","dwfrm_billing_addressFields_city","dwfrm_billing_addressFields_postalCode","dwfrm_billing_addressFields_states_stateCode","dwfrm_billing_addressFields_country","dwfrm_billing_contactInfoFields_phone","stop","lpmHelper","braintreeLpmSDK","lpmConfigs","getBraintreeLpmConfigs","lpmInstance","initLpm","createLpmPayment","localPaymentInstance","createLpmClickListener","updateLpmOrderData","updatedShippingAddress","updatedAmount","createRequestData","assign","onPaymentStart","continueCallback","startPayment","reqData","braintreeLpmModel","lpmErrorMessages","braintreeLpmConfigs","btLpmModel","NO_LPM_BRAINTREE_CONFIGURATIONS","localPayment","fallback","fallbackUrl","buttonText","address","lpmPaymentProcessingHelper","lpmErrorHandler","$braintreeLpmLoader","lpmModel","startLpmPayment","startPaymentPayload","hideProcessingMsg","showFinalProcessingMsg","confirmPayment","processLpmConfirmForm","processStartLpmPaymentError","onLpmButtonClick","$email","localPaymentMethodName","handleZeroAmountOnCheckout","getJSON","showProcessingMsg","braintreeErrorMessages","responseText","processingMsg","finalProcessingMsg","getPaymentDetailsParameter","jQuery","isEmptyObject","paymentConfirmUrl","lpmName","correlation_id","correlationId","createConfirmForm","param","appendTo","action","orderID","orderToken","splitUrl","paramsString","searchParams","URLSearchParams","formParam","submit","braintreeLpmModelBuilder","lpmPaymentProcessing","braintreeLpmModelResponse","payPalStoredBillingAddressComponent","paymentMethodGeneralHelper","srcHelper","venmoHelper","payPalListHelper","CHECKOUT_PAGE","CART_MINICART_PRODUCT_PAGE","getApplicablePageType","isCartMiniCartProductPage","getElementsByClassName","currentPageType","applycablePageType","$billingElement","$btExpressCheckoutPayPalButtonWrapper","$btAccountPayPalButtonWrapper","$summaryDetails","createErrorContainerAfterPayPalButton","payPalButtonSelector","createElement","$payPalButton","cssText","parentNode","insertBefore","nextSibling","selectedMethodID","$payPalAccountList","localPaymentMethodsList","selectDefaultBillingAddressOption","$selectedPayPalAccountOption","disableBillingAddressFunctionality","isAccountListHidden","hideSubmitPaymentButton","isNewPayPalAccountOptionSelected","showSubmitPaymentButton","displaySelectedStoredBillingAddress","srcContentTabHandler","enableBillingAddressFunctionality","isBtVenmoAccountsList","isSessionAccountExist","venmoContentTabHandler","createCustomerFormData","checkoutCustomerFormFields","customerFormData","buttonsWrapper","isCustomerEmailEmpty","submitCustomerUrl","hideBillingAddressManipulationButtons","showBillingAddressManipulationButtons","disableBillingAddressList","enableBillingAddressList","hideBillingAddressForm","showBillingAddressForm","hidePhoneField","showPhoneField","createPayPalCheckoutInstance","payPalPaymentProcessingModal","payPalCheckoutConfigs","payPalCheckoutInstanceConfigs","paypalCheckout","createPayPalStyleConfigurations","btPayPalConfigurations","payPalButtonStyleConfigs","paypalConfig","height","shape","layout","tagline","payPalFormValidationConrol","validateActions","isFormValid","enable","disable","getVaultModeButtonConfigurations","btPayPalCheckoutInstance","vaultModePayPalButtonConfigs","actions","onPayPalButtonClickCallback","createBillingAgreement","paymentObject","onOrderCreateCallback","createPayment","onApprove","tokenizePayment","onApprovePaymentCallback","onCancel","onCancelPaymentCallback","onError","onErrorPaymentCallback","validate","getCheckoutModeButtonConfigurations","createOrder","payPalButtonRendering","isVaultMode","btPayPalCheckoutInstancePromise","paypalButtonConfigs","paypalButtonSdkUrlConfigs","changePMButtonEnabled","payPalCheckoutSdkConfigs","payPalVaultSdkConfigs","isPayPalSDKLoaded","loadPayPalSDK","paypal","Buttons","render","PayPalAccountModel","payPalAccountPageHelper","initAddNewPayPalAccountEvent","PayPalAccount","$addNewPayPalAccountButton","showPayPalAccountBtn","accountPayPalButtonInited","initPayment","initRemovePayPalAccountEvent","initMakeDefaultPayPalAccountEvent","$this","makeDefaultUrl","paymentMehtodId","paymentProcessorId","loaderContainer","payPalConfigurations","addPayPalAccountUrl","flow","requestBillingAgreement","$csrfToken","$loaderContainer","ErrorHandling","isVenmoAccountBlockExists","dynamicBasketProductQuantity","hidePayPalButton","showPayPalButton","isZeroPdpProductPrice","$productPriceSelector","price","isBasketNotEmpty","isAddToCartButtonDisabled","$addToCartButton","disabled","getMiniCartQuantity","$miniCartQuantitySelector","isCurrentTotalBasketPriceZero","$basketTotalAmount","basketTotalAmount","paypalMinicartButtonBehavior","paypalMinicartButton","initProductPage","addToCartButtonDisabled","zeroProductPrice","basketNotEmpty","$miniCartQuantityContainer","miniCartQuantity","addToCartButtonEnabled","basket","numItems","PayPalCartModel","ErrorHandlingCartModel","PayPalExpress","generateFraudData","PayPalCheckoutModel","payPalAccountList","payPalConfigs","PayPalCheckoutPayment","$paypalTab","payPalCheckoutWasInited","payPalSessionAccountComponent","_require","isVaultModeEnabled","isOrderIntentEnabled","getAccountType","setNonceInputValue","hideSavePayPalAccountBlock","displaySavePayPalAccountBlock","displayPayPalButton","hidePayPalButon","displayContinueButton","hideContinueButon","isBuyerAuthenticated","selectPayPalCheckoutTab","setBraintreePayPalEmailInput","handleStoredAccountsShowing","billingFormHelper","$savePaypalAccountCountainer","$braintreePayPalNonce","$paypalButton","$payPalTab","$braintreePaypalEmail","constantList","SESSION_ACCOUNT","NEW_ACCOUNT","STORED_ACCOUNT","accountsListChange","accountType","storedAccountWithSessionAccountEmail","getStoredAccountBySesionAccountEmail","buyerAuthentificated","vaultModeEnabled","orderIntentEnabled","removeEventListener","selectedOptionNonceValue","selectedAccountEmail","buyerAuthenticated","PayPalExpressModel","ErrorHandlingMiniCartModel","initPayPalOnMiniCart","$paypalMinicartButton","isPayPalButtonWasInited","$minicartPopover","observer","MutationObserver","mutations","mutation","addedNodes","observe","childList","PayPalProductPageModel","payPalButtonDisplayBehavior","PayPalProductPage","payPalSessionAccountHelper","$braintreePaypalAccount","handlePaypalTabBehavior","getBillingAddressAsString","$selectedPayPalPayment","selectedBillingAddressStr","selectedBillingAddressObj","billingAddressRepresentationString","selectedOptionClassList","billingAddressAsString","$storedPayPalAddressOption","storedPayPalAddressOptionExists","addressObj","prop","getMatchingBillingAddressId","matchingBillingAddressId","billingAccountsSelector","$braintreePaypalAccountList","showBillingAddressIsNotSupported","PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED","showZeroAmountOnCart","CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR","showZeroAmountOnCheckout","savePayPalAccount","paymentFormData","renderPayPalAccounts","renderAccountsUrl","hidePaypalAccountBtn","$addNewPaypalAccountBtn","$paypalAccountButtonWrapper","addPayPalAccountsToTheTemplate","accountListTemplate","$payPalAccountsContainer","throwCartUpade","initRemovePayPalAccountButtonsListners","$allRemovePayPalAccountButtons","removePayPalAccountButton","$addPaypalAccountBtn","$paypalAccountWrapper","storePaymentAsSessionPayment","sessionAccountEmail","$accountListBlock","$braintreePaypalNonceInput","$sessionPyapalAccount","setSessionAccountOptionDefault","$savedPayPalAccountList","sessionPaypalAccount","paypalAccountsList","sessionEmail","mapBraintreeWithDwBillingAddress","braintreeAddress","btDetails","$btPaymentMethodWrapper","dwBillingFormFieldNames","createBillingAddressData","copyPayPalBillingAddressToDw","braintreeBillingAddress","$braintreePaypalBillingAddressInput","paypalBillingData","createBillingAddressFormData","paypalBillingFormFields","billingAddressFormData","fillPayPalPaymentFields","$braintreePaypalEmailInput","$sessionPaypalAccount","btEmail","fillFraudDataInput","$braintreePaypalRiskDataInput","appendCsrfTokenToFormData","appendBraintreePaypalFundingSourceToFormData","appendEmailAsStringToFormData","appendFraudDataToFormData","billingFromData","fraudData","appendBillingAddressAsStringToFormData","appendBtPaymentFieldsToFormData","appendToUrl","newUrl","indexOf","encodeURIComponent","hidePayPalButtons","payPalButtonsContainer","hideAccount","$accountOption","hideSaveNewAccountContainer","savePaypalAccountCheckbox","savePaypalAccountContainer","displayAllStoredAccounts","braintreePaypalAccountsList","addBillingAddressOnPaymentOptionLevel","btBillingAddress","createShippingAddressData","shippingAddressPayPalData","appendShippingDataAsStringToFormData","paypalButtonsWrapper","getSavedPaypalAddress","buttonSelector","payPalAccountData","paypalCheckoutModelHelper","intent","customerAuthenticated","$storedAccountOptionWithSameEmail","removeProductFromCart","removeFromCartUrl","productRepresentationObj","addProductToCart","getBasketDataPromise","getBasketData","submitPaymentDataToServerPromise","submitPaymentUrl","billingFormData","ErrorModelInstance","$btSavePaypalAccountContainer","$paypalContent","$btPayPalBillingButton","hidePaypalSmartButtonFunctionality","showPaypalSmartButtonFunctionality","$defaultOption","isSelectedPaypalAccount","isChangePmButton","$btUsedPayPalAccount","PayPalBaseModel","payPalAccountModelHelper","baseResponse","payPalAccountModelInstance","paypalAccountFormFields","payPalBraintreeAddressData","paypalAccountFormData","addresses","payPalButtonConfigs","orderCreateParams","enableShippingAddress","billingAgreementDescription","braintreePayPalSDK","requestsHelper","fraudDataPromise","fraudDataCollectionDisabled","basketDataUrl","paypalHandle","placeOrderStageUrl","basketData","ppDetails","ppShippingAddress","savedPaypalAddress","mainPayPalConfigurations","paymentObjectData","locale","billingAgreementDetails","shippingAddressEditable","shippingAddressOverride","fundingSourceResponse","isChangePaymentButtonActive","enableFundingList","disableFundingList","payPalSDKConfigObject","components","commit","undefined","payPalVaultSdkConfigsObject","vault","CurrentPayPalPaymenProcessorModelInstance","payPalCheckoutModelHelper","paypalListHelper","PayPalCheckoutPaymentModel","checkoutInstanceConfigs","autoSetDataUserIdToken","PayPalCheckoutPaymentModelInstance","isBuyerAuthenificated","payPalExpressModelHelper","requestHelper","isUseSavedPaypalAddress","PayPalExpressInstance","$payPalButtonWrapper","$braintreePayPalFundingSource","braintreePayPalFundingSource","paypalCheckoutFormFields","payPalProductPageModelHelper","addProductToCartResponse","addedProductFromPdp","uuid","pliUUID","actionUrls","removeProductLineItemUrl","payPalProductPage","payPalMiniCartPage","payPalCartPage","payPalAccountPage","payPalCheckoutPage","createVisaCheckout","visaCheckout","visaCheckoutInitialized","SrcBaseModelInstance","visaCheckoutInstancePromise","visaCheckoutInstance","srcInitOptions","createInitOptions","getInitOptionsObject","V","onTokenizeCallback","srcErrorHandler","SrcAccountModel","$braintreeSrcLoader","$braintreeSrcButton","srcButtonConfigurations","getBraintreeSRCButtonConfigs","$braintreeSrcDeviceDataInput","srcLoader","SrcAccountModelInstance","initSrcButton","SrcCartModel","$braintreeCartSrcButton","$totalAmount","errorHandlingCartModel","SrcCheckoutModelInstance","zeroAmountSrcButtonBehavior","SrcCheckoutModel","$braintreeBillingPageSrcButton","isSrcSessionAccountExist","srcListHelper","$srcAccountList","srcListExist","srsListStateHandler","$srcSessionAccount","$srcButton","$srcCardDescription","$braintreeSrcCardType","$braintreeSrcLastFourDigits","$braintreeSrcCreditCardNumber","showSrcSessionAccount","srcPayload","handleSaveSrcAccountCheckbox","setIsHideContinueButtonAttr","FLOW_NAME_ACCOUNT","FLOW_NAME_CART_CHECKOUT","FLOW_NAME_BILLING_CHECKOUT","CUSTOM_SRC_ZERO_AMOUNT_ERROR","handleCheckoutFromCartError","showZeroAmountSrcButton","hideZeroAmountSrcButton","handleZeroAmountButtonVisibility","totalAmount","addZeroAmountButtonEventListenerOnCart","$zeroAmountButton","addZeroAmountButtonEventListenerOnCheckout","initTotalAmountElementObserver","totalAmountElement","subtree","Number","parseFloat","srcButtonHelper","braintreeSrcButtonConfigs","createSrcShippingAddressData","createSrcBillingAddress","userData","srcBillingAddress","userEmail","createSrcCheckoutFormData","srcCheckoutFormData","srcResponseData","createSrcFormData","responseData","srcData","userFirstName","userLastName","updateStorefrontBillingData","srcBillingData","storefrontBillingData","dwfrm_billing_contactInfoFields_email","isSrcTabActive","srcOptionId","$srcZeroAmountButton","$alertInfo","$braintreeCartZeroAmountSrcButton","$braintreeBillingPageZeroAmountSrcButton","$accoutnListBlock","$saveSRCAccountCheckbox","$saveSRCAccountCheckboxContainter","$srcContent","isSessionCardAlreadyStored","srcSessionAccount","isSrcSessionCardExist","isAddNewOptionSelected","isSrcSessionCardAlreadyStored","srcConstants","getSrcFlowName","srcFlowName","checkoutFromCartCall","SrcBaseModel","srcMessages","$addSrcAccountForm","addSrcFormUrl","$srcNonce","braintreeSrcSdkButtonInit","braintreeSrcSDK","updateBasketData","paymentRequest","subtotal","settings","cardBrands","acceptCanadianVisaDebit","shipping","collectShipping","setFraudData","dataCollectorInstance","srcPaymentProcessingHelper","billingAddressString","srcFormData","always","srcSessionAccountComponent","$srcBillingAddress","srcAccount","srcCardList","checkoutComponent","cartComponent","braintreeSrcConfigs","braintreeVenmoSDK","venmoProcessing","isBrowserSupported","initVenmo","$venmoButton","isBillingPage","createVenmo","venmoInstance","checkBillingForm","checkZeroAmount","processVenmo","braintreeVenmoConfig","braintreeVenmoModel","braintreeVenmoButtonConfigs","getBraintreeVenmoButtonConfigs","btVenmoModel","venmoClientInstance","venmo","allowNewBrowserTab","allowDesktop","ignoreHistoryChanges","processResultsDelay","venmoButton","venmoLoader","makeDefaultVenmo","removeVenmoPayment","removeIsNotAllowedMsg","createVenmoAccountFormData","userId","venmoAccountFormFields","venmoAccountFormData","storeNewVenmoAccount","venmoAddAccountHandlerUrl","username","hideVenmoAccountBtn","tplData","_ref","isVenmoButtonEnabledOnAccountPage","$braintreeVenmoLoader","showVenmoAccountBtn","venmoAccountButtonInited","generalVenmoValidation","isBraintreeVenmoConfigValid","generalValidation","setVenmoDeviceData","handleNoBrowserSupport","venmoCheckoutButtonInited","venmoList","venmoSessionAccount","$braintreeVenmoNonce","$braintreeVenmoUserId","$submitShippingBtn","$venmoContent","$venmoBillingInput","$venmoAccountContainer","$sessionVenmoAccount","$newVenmoAccount","hashChange","createLoaderContainter","history","updateBillingAddressFormValues","attributeName","checkoutStage","oldValue","showVenmoAccount","attributeOldValue","$btVenmoAccountsList","isHideVenmoButtonAttribute","venmoAccount","venmoCheckout","venmoConstants","venmoProcessingHelper","venmoData","venmoFlowName","getVenmoFlowName","$braintreeVenmoSessionAccount","$venmoAccountBlock","btVenmoAccountsList","defaultOption","braintreeVenmoNonce","braintreeVenmoBilling","$venmoErrorContainer","handleNoBrowserSupportErrorOnAccount","VENMO_BROWSER_NOT_SUPPORTED","hideVenmoTab","parentElement","firstElementChild","$venmoAccountWrapper","showCheckoutErrorMessage","$addVenmoAccountBtn","$target","className","inputNames","$braintreeVenmoDeviceData","VENMO_ZERO_AMOUNT_ERROR","$saveVenmoAccountCheckboxContainer","$saveVenmoAccountCheckbox","venmoOptionId","braintreeVenmoModelBuilder","btVenmoModelResponse"],"mappings":"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","file":"int_braintree.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js\");\n","'use strict';\n\nvar braintreeApplePayModelBuilder = require('./braintreesdk/braintreeApplePayModelBuilder');\n\nvar applePayPaymentProcessing = require('./components/applePayPaymentProcessing');\n\n// Models\nvar ErrorHandlingBaseModel = require('./errorhandler/errorHandlingBaseModel');\nvar ErrorHandlingCheckoutModel = require('./errorhandler/errorHandlingCheckoutModel');\n\nvar applePayErrorMessages = require('./constants/errorMessages');\n\nvar braintreeApplePayModelResponse;\nvar applePayMessages;\n\n/**\n * Inits Apple Pay on the Checkout Page\n */\nfunction initCheckout() {\n var errorHandlingCheckoutModel = new ErrorHandlingCheckoutModel(applePayMessages);\n\n if (!braintreeApplePayModelResponse || braintreeApplePayModelResponse.error) {\n var error = braintreeApplePayModelResponse.error || applePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\n errorHandlingCheckoutModel.applePayErrorHandler(error);\n }\n\n applePayPaymentProcessing.init(\n braintreeApplePayModelResponse.btApplePayModel,\n errorHandlingCheckoutModel\n );\n}\n\n/**\n * Inits Apple Pay on the Cart Page\n */\nfunction initCart() {\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(applePayMessages);\n\n if (!braintreeApplePayModelResponse || braintreeApplePayModelResponse.error) {\n var error = braintreeApplePayModelResponse.error || applePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\n errorHandlingBaseModel.applePayErrorHandler(error);\n }\n\n applePayPaymentProcessing.init(\n braintreeApplePayModelResponse.btApplePayModel,\n errorHandlingBaseModel\n );\n}\n\n/**\n * Inits Apple Pay on the Cart/Billing-Checkout Pages\n */\nfunction init() {\n braintreeApplePayModelResponse = braintreeApplePayModelBuilder.init();\n\n if (!braintreeApplePayModelResponse.error) {\n applePayMessages = braintreeApplePayModelResponse.btApplePayConfigs.messages;\n }\n}\n\nmodule.exports = {\n init,\n initCart,\n initCheckout\n};\n","'use strict';\n\n/* global Promise braintree $ */\n\nvar applePayErrorMessages = require('../constants/errorMessages');\n\nvar braintreeApplePaySDK = require('./braintreeApplePaySDK');\nvar braintreeGeneral = require('../../braintreeGeneral');\n\n// Global variables\n// Is Froud tools enabled\nvar isFtEnabled;\nvar btClientInstancePromise;\nvar apInstance;\nvar amount;\n\n/**\n * Init braintree Apple Pay model\n * @param {Promise} braintreeClientInstancePromise Braintreee client instance promise\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\n */\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\n braintreeApplePaySDK.init(braintreeClientInstancePromise);\n\n btClientInstancePromise = braintreeClientInstancePromise;\n isFtEnabled = isFraudToolsEnabled;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n var response;\n\n if (isFtEnabled) {\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\n } else {\n response = Promise.resolve({\n customMessage: applePayErrorMessages.FRAUD_DATA_CELLECTION_ISNOT_ENABLED\n });\n }\n\n return response;\n}\n\n/**\n * Preparing Apple Pay payment\n * @param {Object} ApplePaySession Apple Pay session\n * @returns {Promise} Promise with 'canMakePayments' boolean value\n */\nfunction initApplePay(ApplePaySession) {\n return braintreeApplePaySDK.createApplePayPayment()\n .then(function (applePayInstance) {\n apInstance = applePayInstance;\n\n return ApplePaySession.canMakePaymentsWithActiveCard(applePayInstance.merchantIdentifier);\n });\n}\n\n/**\n * Merges a payment request with Braintree defaults to return an {external:ApplePayPaymentRequest}\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Object} Payment request object\n */\nfunction createPaymentDataRequest(applePayConfigs) {\n return braintreeApplePaySDK.createPaymentDataRequest(apInstance, applePayConfigs, amount);\n}\n\n/**\n * Validates merchant website, as required by ApplePaySession before payment can be authorized\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Promise} Promise with merchant session\n */\nfunction onValidateMerchant(sessionEvent, applePayConfigs) {\n return braintreeApplePaySDK.performValidation(apInstance, sessionEvent, applePayConfigs);\n}\n\n/**\n * Tokenizes an Apple Pay payment\n * @param {Object} sessionEvent Apple Pay session event\n * @returns {Promise} Promise with tokenized payload\n */\nfunction onPaymentAuthorized(sessionEvent) {\n return braintreeApplePaySDK.tokenize(apInstance, sessionEvent);\n}\n\n/**\n * Update order amount\n * @param {Object} applePayConfigs Apple Pay config object\n */\nfunction updateApplePayAmount(applePayConfigs) {\n $.ajax({\n url: applePayConfigs.getOrderInfoUrl,\n async: false,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n amount = data.amount;\n },\n error: function () {\n window.location.reload();\n }\n });\n}\n\n\nmodule.exports = {\n init,\n collectFraudData,\n initApplePay,\n createPaymentDataRequest,\n onValidateMerchant,\n onPaymentAuthorized,\n updateApplePayAmount\n};\n","'use strict';\n\nvar applePayHelper = require('../helpers/applePayHelper');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar braintreeApplePayModel = require('./braintreeApplePayModel');\n\nvar applePayErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Apple Pay Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n var braintreeApplePayConfigs = applePayHelper.getBraintreeApplePayConfigs();\n var clientToken;\n var btClientInstancePromise;\n var response = {\n error: false,\n message: '',\n btApplePayModel: null,\n btApplePayConfigs: null\n };\n\n if (braintreeApplePayConfigs) {\n clientToken = braintreeApplePayConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n\n braintreeApplePayModel.init(\n btClientInstancePromise,\n braintreeApplePayConfigs.isFraudToolsEnabled\n );\n\n response.btApplePayModel = braintreeApplePayModel;\n response.btApplePayConfigs = braintreeApplePayConfigs;\n } else {\n response.error = true;\n response.message = applePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\n }\n\n return response;\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nvar btClientInstancePromise;\n\n/**\n * Creates Apple Pay payment instance\n * @returns {Promise} A promise resolve with the Apple Pay instance\n */\n\nfunction createApplePayPayment() {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.applePay.create({\n client: btClientInstance\n });\n });\n}\n\n/**\n * Creates a configuration object for creation an Apple Pay session\n * @param {applePayInstance} applePayInstance Apple Pay instance\n * @param {Object} applePayConfigs Apple Pay configs object\n * @param {number} amount Order total amount\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(applePayInstance, applePayConfigs, amount) {\n return applePayInstance.createPaymentRequest({\n total: {\n label: applePayConfigs.options.displayName,\n amount: amount\n }\n });\n}\n\n/**\n * Validates merchant website, as required by Apple Pay Session before payment can be authorized\n * @param {applePayInstance} applePayInstance Apple Pay instance\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay configs object\n * @returns {Promise} Promise that resolve with 'merchantSession'\n */\nfunction performValidation(applePayInstance, sessionEvent, applePayConfigs) {\n return applePayInstance.performValidation({\n validationURL: sessionEvent.validationURL,\n displayName: applePayConfigs.options.displayName\n });\n}\n\n/**\n * Tokenizes an Apple Pay payment\n * @param {applePayInstance} applePayInstance Apple pay instance\n * @param {Object} sessionEvent Apple pay session event\n * @returns {Promise} Promise that resolve with 'tokenizePayload'\n */\nfunction tokenize(applePayInstance, sessionEvent) {\n return applePayInstance.tokenize({\n token: sessionEvent.payment.token\n });\n}\n\n/**\n * Inits braintreeApplePaySDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\n\nfunction init(braintreeClientInstancePromise) {\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n createApplePayPayment,\n createPaymentDataRequest,\n performValidation,\n tokenize,\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar paymentMethodGeneral = require('../../paymentMethodGeneral');\n\nvar $applePayButton = document.querySelector('.js_braintree_applepay_button');\n\nvar paymentData;\nvar $braintreeCartButtons;\nvar applePayCheckoutFormData;\nvar errHandlingModel;\n\n/**\n * Expends Apple Pay Checkout Form with required data\n */\nfunction expandApplePayCheckoutFormData() {\n var csrfToken = document.querySelector('.braintree-cart-buttons-wrap #csrf_token');\n\n applePayCheckoutFormData.append(csrfToken.name, csrfToken.value);\n applePayCheckoutFormData.append('braintreeApplePayNonce', paymentData.nonce);\n applePayCheckoutFormData.append('braintreeApplePayDeviceDataInput', paymentData.deviceData);\n applePayCheckoutFormData.append('braintreeApplePayShippingAddress',\n JSON.stringify(paymentData.shippingAddress) || '{}'\n );\n}\n\n/**\n * Process Apple Pay on the Cart Page\n */\nfunction processCartFlow() {\n var billingAddressData = paymentData.billingAddress;\n var paymentMethodName = JSON.parse($applePayButton.getAttribute('data-braintree-config')).paymentMethodName;\n var placeOrderUrl = $braintreeCartButtons.getAttribute('data-checkout-placeorder-url');\n var checkoutFromCartUrl = $braintreeCartButtons.getAttribute('data-checkout-from-cart-url');\n var checkoutFormFields = $braintreeCartButtons.getAttribute('data-checkout-form-fields');\n var paymentFieldData = helper.getPaymentFieldsData(billingAddressData, paymentMethodName);\n\n applePayCheckoutFormData = helper.createPaymentFormData(checkoutFormFields, paymentFieldData);\n expandApplePayCheckoutFormData();\n // submit customer form with email (CheckoutServices-SubmitCustomer)\n // as we skip step \"login via guest/registered user\" while express checkout\n // email is set only in case of guest checkout and if email is not already set\n paymentMethodGeneral.submitCustomerForm(billingAddressData.email);\n\n $.ajax({\n type: 'POST',\n url: checkoutFromCartUrl,\n data: applePayCheckoutFormData,\n contentType: false,\n processData: false,\n success: function (data) {\n if (data.error) {\n var errorMessage = '';\n\n if (data.fieldErrors.length) {\n data.fieldErrors.forEach(function (error, index) {\n var keys = Object.keys(error);\n\n if (keys.length) {\n errorMessage += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\n }\n });\n errHandlingModel.applePayErrorHandler(errorMessage);\n }\n\n if (data.serverErrors.length) {\n data.serverErrors.forEach(function (error) {\n errorMessage += `${error}. `;\n });\n errHandlingModel.applePayErrorHandler(errorMessage);\n }\n\n if (data.cartError) {\n window.location.href = data.redirectUrl;\n }\n\n return;\n }\n\n window.location.href = placeOrderUrl;\n },\n error: function (err) {\n if (err && err.redirectUrl) {\n window.location.href = err.redirectUrl;\n }\n }\n });\n}\n\n/**\n * Inits Apple Pay Cart components\n * @param {Object} data Apple Pay payment data\n * @param {Constructor} errorHandlingModel Error handling model\n */\nfunction init(data, errorHandlingModel) {\n paymentData = data;\n $braintreeCartButtons = document.querySelector('.braintree-cart-buttons-wrap');\n $applePayButton.setAttribute('data-is-inited', true);\n errHandlingModel = errorHandlingModel;\n\n processCartFlow();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\n\nvar paymentData;\n\n/**\n * Process Apple Pay on the Checkout page\n */\nfunction processCheckoutFlow() {\n document.querySelector(('#braintreeApplePayNonce')).value = paymentData.nonce;\n\n // Updating Storefront Billing Form data with ApplePay Billing\n var storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(paymentData.billingAddress);\n\n helper.updateBillingFormValues(storeFrontBillingData);\n}\n\n/**\n * Inits Apple Pay checkout components\n * @param {Object} data Apple Pay payment data\n */\nfunction init(data) {\n paymentData = data;\n\n processCheckoutFlow();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ ApplePaySession */\n\n// Helpers\nvar loaderInstance = require('../../loaderHelper');\nvar applePayHelper = require('../helpers/applePayHelper');\nvar applePayPaymentProcessingHelper = require('../helpers/applePayPaymentProcessingHelper');\nvar helper = require('../../helper');\n\nvar applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\n\n// Components\nvar applePayCart = require('./applePayCart');\nvar applePayCheckout = require('./applePayCheckout');\n\nvar $braintreeApplePayLoader = document.querySelector('.braintreeApplePayLoader');\nvar $applePayButton = document.querySelector('.js_braintree_applepay_button');\nvar $continueButton = document.querySelector('button.submit-payment');\nvar applePayEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_applepayContent'));\n\n// global variables\nvar loader;\nvar applePayModel;\nvar applePayConfigs;\nvar errHandlingModel;\n\n/**\n * Functionality over tokenized payment\n * @param {Object} paymentData Apple Pay payment data\n */\nfunction onTokenizedPayment(paymentData) {\n var applePayFlow = applePayPaymentProcessingHelper.getApplePayFlowId();\n\n helper.removeActiveSessionPayment();\n\n switch (applePayFlow) {\n case applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\n applePayCheckout.init(paymentData);\n $continueButton.click();\n break;\n case applePayPaymentProcessingConstants.FLOW__CART_NAME:\n applePayCart.init(paymentData, errHandlingModel);\n break;\n default:\n break;\n }\n}\n/**\n * Creates Apple Pay session. Opens and processes Apple Pay payment window.\n */\nfunction createApplePaySession() {\n // Updates order amount for paymentDataRequest\n applePayModel.updateApplePayAmount(applePayConfigs);\n\n // Creates a configuration object for creating Apple pay session\n var paymentDataRequest = applePayModel.createPaymentDataRequest(applePayConfigs);\n\n if (applePayConfigs.isRequiredBillingContactFields) {\n paymentDataRequest.requiredBillingContactFields = ['postalAddress', 'name'];\n }\n\n if (applePayConfigs.isRequiredShippingContactFields) {\n paymentDataRequest.requiredShippingContactFields = ['postalAddress', 'name', 'phone', 'email'];\n }\n\n // Creates new Apple Pay session\n var session = new ApplePaySession(1, paymentDataRequest);\n\n // Validates merchant website\n session.onvalidatemerchant = function (event) {\n applePayModel.onValidateMerchant(event, applePayConfigs)\n .then(function (merchantSession) {\n session.completeMerchantValidation(merchantSession);\n })\n .catch(function (error) {\n errHandlingModel.applePayErrorHandler(error);\n session.abort();\n });\n };\n\n // Tokenizes an Apple Pay payment\n session.onpaymentauthorized = function (event) {\n loader.show();\n\n applePayModel.onPaymentAuthorized(event)\n .then(function (tokenizedPayload) {\n session.completePayment(ApplePaySession.STATUS_SUCCESS);\n\n var TokenizedPaymentData = applePayPaymentProcessingHelper.getTokenizedPaymentData(event, tokenizedPayload);\n\n onTokenizedPayment(TokenizedPaymentData);\n\n loader.hide();\n })\n .catch(function (error) {\n session.completePayment(ApplePaySession.STATUS_FAILURE);\n loader.hide();\n errHandlingModel.applePayErrorHandler(error);\n });\n };\n\n session.begin();\n}\n\n/**\n * Call back function to be resolved when Apple Pay payment button is clicked\n */\nfunction onApplePayButtonClick() {\n errHandlingModel.hideError();\n\n // Billing flow\n if (applePayEnabledOnCheckout) {\n // Validates email and phone fields on the Billing page\n if (applePayHelper.isBilligFiledsValid()) {\n createApplePaySession();\n }\n // Cart flow\n } else {\n createApplePaySession();\n }\n}\n\n/**\n * Init and add Apple Pay on the Cart or Billing page\n */\nfunction initApplePay() {\n loader.show();\n\n var result = applePayModel.collectFraudData()\n .then(function (fraudDataPayload) {\n applePayHelper.setApplePayDeviceData(fraudDataPayload);\n loader.hide();\n\n return applePayModel.initApplePay(ApplePaySession)\n .then(function (canMakePayments) {\n loader.hide();\n applePayHelper.showApplePayButton();\n\n if (!canMakePayments) {\n applePayHelper.makeApplePayButtonDisabled();\n } else {\n $applePayButton.addEventListener('click', onApplePayButtonClick);\n }\n });\n });\n result\n .catch(function (error) {\n loader.hide();\n errHandlingModel.applePayErrorHandler(error);\n });\n}\n\n/**\n * Inits Apple Pay payment processing components\n * @param {Object} braintreeApplePayModel Apple Pay model\n * @param {Constructor} errorHandlingModel Error handling model\n */\nfunction init(braintreeApplePayModel, errorHandlingModel) {\n loader = loaderInstance($braintreeApplePayLoader);\n applePayModel = braintreeApplePayModel;\n applePayConfigs = JSON.parse($applePayButton.getAttribute('data-braintree-config'));\n errHandlingModel = errorHandlingModel;\n\n if (window.ApplePaySession) {\n initApplePay();\n } else {\n applePayHelper.hideApplePayTab();\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nmodule.exports = {\n FLOW_CHECKOUT_NAME: 'checkout',\n FLOW__CART_NAME: 'cart'\n};\n","'use strict';\n\nmodule.exports = {\n NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS: 'No Apple Pay Braintree Configurations',\n FRAUD_DATA_CELLECTION_ISNOT_ENABLED: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\n};\n","'use strict';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree credit card error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.$errorContainer = $('.cart-error-messaging');\n this.errorMessages = errorMessages;\n}\n\n// General method which should be used for cases when error came from Braintree\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\n/**\n * Shows error by message\n * @param {string} message Error message\n */\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Error container which will be used on Cart page ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n $('.checkout-btn').addClass('disabled');\n this.$errorContainer.append(\n `
\n \n ${message}\n
`\n );\n\n this.$errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Cart we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n this.$errorContainer.hide();\n this.$errorContainer.empty();\n};\n\n/**\n * Handles Apple Pay error by types\n * @param {Object} error Error object or error message\n */\nErrorHandlingBaseModel.prototype.applePayErrorHandler = function (error) {\n if (error.name === 'BraintreeError') {\n this.showErrorByObject(error);\n } else {\n this.showErrorByMessage(error.message);\n }\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree credit card error messages\n */\nfunction ErrorHandlingCheckoutModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$topErrorMessageText = document.querySelector('.error-message-text');\n this.$topErrorMessageWrapper = document.querySelector('.error-message');\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCheckoutModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.createErrorNotification = function (message) {\n this.$topErrorMessageText.textContent = '';\n this.$topErrorMessageText.append(message);\n this.$topErrorMessageWrapper.style.display = 'block';\n\n window.scrollTo(0, 0);\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.hideError = function () {\n this.$topErrorMessageWrapper.style.display = 'none';\n this.$topErrorMessageText.innerHTML = '';\n};\n\nmodule.exports = ErrorHandlingCheckoutModel;\n","'use strict';\n\nvar helper = require('../../helper');\n\nvar $applePayButton = document.querySelector('.js_braintree_applepay_button');\nvar $applepayDataMethod = document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"ApplePay\"]');\nvar $phoneField = document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]');\n\n/**\n * Returns Braintree Apple Pay configs\n * @returns {Object} Braintree Apple Pay configs\n */\nfunction getBraintreeApplePayConfigs() {\n var braintreeApplePayButtonConfigs = null;\n\n try {\n braintreeApplePayButtonConfigs = JSON.parse(document.querySelector('.js_braintree_applepay_button').getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeApplePayButtonConfigs;\n }\n\n return braintreeApplePayButtonConfigs;\n}\n\n/**\n * Sets device data from 'data collector' to corresponding input field\n * @param {Object} fraudDataPayload Froud payload data\n */\n\nfunction setApplePayDeviceData(fraudDataPayload) {\n var $braintreeApplePayDeviceData = document.querySelector('input[name=braintreeApplePayDeviceDataInput]');\n\n if (fraudDataPayload.deviceData) {\n $braintreeApplePayDeviceData.value = fraudDataPayload.deviceData;\n }\n}\n\n/**\n * Shows Apple Pay button\n */\nfunction showApplePayButton() {\n $applePayButton.style.display = 'block';\n\n if ($applepayDataMethod) {\n $applepayDataMethod.style.display = 'block';\n }\n}\n\n/**\n * Hides Apple Pay tab on the Checkout/Billing page\n */\nfunction hideApplePayTab() {\n if ($applepayDataMethod) {\n $applepayDataMethod.style.display = 'none';\n }\n}\n\n/**\n * Marks Apple Pay button as disabled\n */\nfunction makeApplePayButtonDisabled() {\n $applePayButton.classList.add('js_braintree_applepay_button_disabled');\n}\n\n/**\n * Remove session Apple Pay nonce\n */\nfunction removeSessionNonce() {\n document.querySelector('#braintreeApplePayNonce').value = '';\n document.querySelector('#braintreeApplePayDeviceData').value = '';\n}\n\n/**\n * Validates required billing form fields\n * @returns {boolean} Whether billing form fields are valid\n */\nfunction isBilligFiledsValid() {\n return helper.isValidInputField($phoneField);\n}\n\n/**\n * Depends of the 'data-paypal-is-hide-continue-button' hides or shows continue button on the Billing Page\n */\nfunction toggleContinueButtonOnBillingPage() {\n var applePayContent = document.querySelector('.js_braintree_applepayContent');\n\n helper.continueButtonToggle(applePayContent.getAttribute('data-paypal-is-hide-continue-button'));\n}\n\nmodule.exports = {\n getBraintreeApplePayConfigs,\n setApplePayDeviceData,\n showApplePayButton,\n makeApplePayButtonDisabled,\n removeSessionNonce,\n isBilligFiledsValid,\n hideApplePayTab,\n toggleContinueButtonOnBillingPage\n};\n","'use strict';\n\nvar applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\n\n/**\n * Returns current Apple Pay flow\n * @returns {string} Flow id checkout/cart\n */\nfunction getApplePayFlowId() {\n var applePayEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_applepayContent'));\n\n return applePayEnabledOnCheckout ? applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME : applePayPaymentProcessingConstants.FLOW__CART_NAME;\n}\n\n/**\n * Returns shipping address based on Apple Pay payment shipping contact\n * @param {Object} shippingContact Shipping address data\n * @returns {Object} Shipping address with required fields\n */\nfunction getShippingAddress(shippingContact) {\n return {\n streetAddress: shippingContact.addressLines[0],\n extendedAddress: shippingContact.addressLines[1],\n locality: shippingContact.locality,\n region: shippingContact.administrativeArea.toUpperCase(),\n postalCode: decodeURIComponent(shippingContact.postalCode),\n countryCodeAlpha2: shippingContact.countryCode.toUpperCase(),\n firstName: shippingContact.givenName,\n lastName: shippingContact.familyName,\n phone: shippingContact.phoneNumber,\n email: shippingContact.emailAddress\n };\n}\n\n/**\n * Returns billing address based on Apple Pay payment billing contact\n * @param {Object} billingContact Billing address data\n * @param {string} email Email\n * @param {string} phone Phone number\n * @returns {Object} Billing address with required fields\n */\nfunction getBillingAddress(billingContact, email, phone) {\n return {\n streetAddress: billingContact.addressLines[0],\n extendedAddress: billingContact.addressLines[1],\n locality: billingContact.locality,\n region: billingContact.administrativeArea.toUpperCase(),\n postalCode: decodeURIComponent(billingContact.postalCode),\n countryCodeAlpha2: billingContact.countryCode.toUpperCase(),\n firstName: billingContact.givenName,\n lastName: billingContact.familyName,\n email: email,\n phone: phone\n };\n}\n\n/**\n * Returns Apple Pay payment object with required data for backend\n * @param {Object} sessionEvent Apple Pay Session event\n * @param {Object} tokenizedPayload Apple Pay payment data\n * @returns {Object} Apple Pay payment object with required fileds\n */\nfunction getTokenizedPaymentData(sessionEvent, tokenizedPayload) {\n var data = {\n event: sessionEvent,\n payload: tokenizedPayload,\n nonce: tokenizedPayload.nonce,\n deviceData: document.querySelector('input[name=braintreeApplePayDeviceDataInput]').value\n };\n var shippingAddressData = sessionEvent.payment.shippingContact;\n\n if (shippingAddressData) {\n data.shippingAddress = getShippingAddress(shippingAddressData);\n } else {\n shippingAddressData = {\n emailAddress: document.querySelector('.customer-summary-email').innerHTML,\n phoneNumber: document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]').value\n };\n }\n\n var billingAddressData = sessionEvent.payment.billingContact;\n\n if (billingAddressData) {\n data.billingAddress = getBillingAddress(billingAddressData, shippingAddressData.emailAddress, shippingAddressData.phoneNumber);\n }\n\n return data;\n}\n\n\nmodule.exports = {\n getApplePayFlowId,\n getShippingAddress,\n getBillingAddress,\n getTokenizedPaymentData\n};\n","'use strict';\n\n/**\n* This file was created to provide functionality and business logic for Credit and SRC payment methods. Do not expand this file!\n* Changes and additions to the code should be made to the appropriate files in the folders, depending on the payment method required, to maintain a clear code architecture.\n*/\n\nvar loaderInstance = require('./loaderHelper');\nvar ErrorHandlingBaseModel = require('./creditcard/errorhandler/errorHandlingBaseModel');\n\nvar errorHandlingBaseModel = new ErrorHandlingBaseModel();\nvar creditCardListLoader;\n\n/**\n* Shows the new card block on the Account Page\n*/\nfunction showAddNewCardOptions() {\n var $addNewCardButton = document.querySelector('.braintreeAddNewCard');\n var $addNewCardBlock = document.querySelector('.braintreeAddNewCardBlock');\n\n // Hide \"Credit Card error message\" container\n errorHandlingBaseModel.hideError();\n // Hide \"Add New Card\" button\n $addNewCardButton.style.display = 'none';\n // Display \"Add New Card\" form\n $addNewCardBlock.style.display = 'block';\n}\n\n/**\n * Removes card from Credit/SRC Cards list\n * @param {Object} e Event object\n */\nfunction removeCard(e) {\n var target = e.target;\n\n if (target && JSON.parse(target.getAttribute('data-is-remove-allowed'))) {\n creditCardListLoader.show();\n\n $.get(target.getAttribute('data-url') + '?UUID=' + target.getAttribute('data-id'))\n .then((data => {\n $('#uuid-' + data.UUID).remove();\n\n if (data.newDefaultAccount) {\n document.querySelector('#uuid-' + data.newDefaultAccount + ' span').style.fontWeight = 'bold';\n document.querySelector('#uuid-' + data.newDefaultAccount + ' button.braintree-make-default-card').style.display = 'none';\n }\n\n if (($('.creditCard-accounts').length == 0 || $('.creditCard-accounts').children().length == 0) \n &&\n ($('.paypal-accounts').length == 0 || $('.paypal-accounts').children().length == 0)) {\n $('.payment-methods-list').addClass('d-none');\n $('.payment-methods-empty').removeClass('d-none');\n }\n\n creditCardListLoader.hide();\n $('body').trigger('payment:removed');\n }))\n .fail(() => {\n location.reload();\n });\n } else {\n var removeErrorMessage = target.getAttribute('data-message-remove-is-not-allowed');\n errorHandlingBaseModel.showErrorByMessage(removeErrorMessage);\n }\n}\n\n\n/**\n * Sets data and content for Modal\n * @param {Object} e Event object\n */\nfunction deletePayment(e) {\n e.stopPropagation();\n var target = e.target;\n var dataset = target.dataset;\n var paymentInfo = $('.payment-method#uuid-' + dataset['id']).find('.card-info-group').html();\n\n $('.product-to-remove').empty().append(paymentInfo);\n $('.remove-bt-payment')\n .removeAttr('data-*')\n .attr('data-dismiss', 'modal')\n .attr('data-loader', dataset['loader'])\n .attr('data-url', dataset['url'])\n .attr('data-is-remove-allowed', dataset['isRemoveAllowed'])\n .attr('data-message-remove-is-not-allowed', dataset['messageRemoveIsNotAllowed'])\n .attr('data-id', dataset['id'])\n .attr('data-card', dataset['card'])\n .removeClass('paypal')\n .addClass('creditcard');\n\n if (!$('#deletePaymentModal').hasClass('show')) {\n $('#deletePaymentModal').modal('show');\n }\n}\n\n/**\n * Select default card in Credit/SRC Cards list\n * @param {Object} e Event object\n */\nfunction makeDefaultCard(e) {\n var target = e.target;\n var url = target.getAttribute('data-make-default-url');\n var id = target.getAttribute('data-id');\n var paymentMethodID = 'CARD';\n\n // Hide \"Credit Card error message\" container\n errorHandlingBaseModel.hideError();\n creditCardListLoader.show();\n\n $.get(url + '?UUID=' + id + '&pmID=' + paymentMethodID)\n .then((data) => {\n // New default Card changes\n document.querySelector('#uuid-' + data.newDefaultProperty + ' span').style.fontWeight = 'bold';\n document.querySelector('.braintree-make-default-card.uuid-' + data.newDefaultProperty).style.display = 'none';\n\n // Previous default Card changes\n document.querySelector('#uuid-' + data.toRemoveDefaultProperty + ' span').style.fontWeight = 'normal';\n document.querySelector('.braintree-make-default-card.uuid-' + data.toRemoveDefaultProperty).style.display = 'inline';\n\n creditCardListLoader.hide();\n })\n .catch(function () {\n creditCardListLoader.hide();\n });\n}\n\nfunction initAccount() {\n var $creditCardAccountBtLoader = document.querySelector('#creditCardAccountBtLoader');\n var creditCardListLoaderExists = Boolean($creditCardAccountBtLoader);\n\n if (creditCardListLoaderExists) {\n creditCardListLoader = loaderInstance($creditCardAccountBtLoader);\n }\n // \"Add new card\" area link functionality initiation\n $('.braintreeAddNewCard').click(showAddNewCardOptions);\n\n // \"Make default\" link functionality initiation\n $('.creditCard-accounts').on('click', '.braintree-make-default-card', makeDefaultCard);\n\n // \"Remove Card\" link functionality initiation\n $('body').on('click', '.remove-bt-payment.creditcard', removeCard);\n\n // \"Delete payment button modal opening\"\n $('.creditCard-accounts').on('click', '.delete-payment-btn', deletePayment);\n}\n\nmodule.exports = {\n initAccount\n};\n","'use strict';\n\n/* global braintree $ */\n\n/**\n * Create Braintree Client Instance from Client Token\n * @param {string} clientToken Braintree client token\n * @returns {Promise} returns promise with Braintree Client Instance\n */\nfunction createClientInstance(clientToken) {\n return braintree.client.create({\n authorization: clientToken\n });\n}\n\n/**\n * Fraud data generation\n * @param {Promise} btClientInstancePromise Promise with Client Instance\n * @returns {Promise} returns promise with fraud data\n */\nfunction collectFraudData(btClientInstancePromise) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.dataCollector.create({\n client: btClientInstance,\n kount: true\n });\n });\n}\n\n/**\n * Get array with Braintree Customer Payment Mehtods by Personalized Client Instance\n * @param {Promise} btClientInstancePromise Promise with Client Instance\n * @returns {array} array with Braintree Customer Payment Mehtod (if any) in opposite case empty array will be returned\n */\nfunction getBtCustomerPaymentMethods(btClientInstancePromise) {\n return btClientInstancePromise\n .then(function (clientInstance) {\n return braintree.vaultManager.create({\n client: clientInstance\n });\n })\n .then(function (vaultManager) {\n return vaultManager.fetchPaymentMethods({\n defaultFirst: true\n });\n });\n}\n\nmodule.exports = {\n createClientInstance,\n collectFraudData,\n getBtCustomerPaymentMethods\n};\n","'use strict';\n\nmodule.exports = function () {\n // Used only for Paypal. In future \"client token\" generation approach will be refactored\n var paymentMethodGeneral = require('./paymentMethodGeneral');\n\n // General global variables\n var clientTokenPromise = paymentMethodGeneral.createGeneralClientInstancePromise();\n var isCheckoutPage = Boolean(document.querySelector('#checkout-main'));\n\n if (isCheckoutPage && $('#checkout-main').attr('data-zero-order') == 'true' && $('#checkout-main').attr('data-allow-zero-order') != 'true') {\n return;\n }\n\n /* ------------------------General Account functionality------------------------ */\n var btAccountBusinessLogic = require('./braintreeAccount');\n // Common Credit Card and SRC Account functionality\n btAccountBusinessLogic.initAccount();\n\n /* ------------------------General Checkout functionality----------------------- */\n if (isCheckoutPage) {\n paymentMethodGeneral.fillPaymentSammaryContainer();\n paymentMethodGeneral.initPaymentMethodTabClickBehavior();\n }\n\n /* ------------------------Credit Card------------------------ */\n var creditCardBusinessLogic = require('./creditcard/creditCard');\n\n var creditCardOnAccountEnabled = Boolean(document.querySelector('.js_braintree_addCreditCardForm'));\n var creditCardEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_creditCardContent'));\n\n creditCardBusinessLogic.init();\n\n if (creditCardOnAccountEnabled) {\n creditCardBusinessLogic.initAccount();\n }\n\n if (creditCardEnabledOnCheckout) {\n creditCardBusinessLogic.initCheckout();\n }\n\n /* --------------------------PayPal-------------------------- */\n var payPalBusinessLogic = require('./paypal/payPal');\n\n var payPalEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_paypalContent'));\n var payPalEnabledOnProduct = Boolean(document.querySelector('.prices-add-to-cart-actions .js_braintree_paypal_cart_button'));\n var payPalEnabledOnCart = Boolean(document.querySelector('.cart-page .js_braintree_paypal_cart_button'));\n var payPalEnabledOnAccountPage = Boolean(document.querySelector('.paypal-accounts'));\n\n payPalBusinessLogic.init(clientTokenPromise);\n\n\n if (payPalEnabledOnCheckout) {\n payPalBusinessLogic.initCheckout();\n }\n\n if (payPalEnabledOnProduct) {\n payPalBusinessLogic.initProduct();\n }\n\n // Validation on enabled/disabled PayPal button for MiniCart located isinside MiniCart component\n payPalBusinessLogic.initMiniCart();\n\n if (payPalEnabledOnCart) {\n payPalBusinessLogic.initCart();\n }\n\n if (payPalEnabledOnAccountPage) {\n payPalBusinessLogic.initAccount();\n }\n\n /* --------------------------GooglePay------------------------- */\n var googlePayBusinnessLogic = require('./googlepay/googlePay');\n\n var googlePayEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_googlepayContent'));\n var googlePayEnabledOnCart = Boolean(document.querySelector('.braintree-cart-google-button'));\n\n googlePayBusinnessLogic.init();\n\n if (googlePayEnabledOnCheckout) {\n googlePayBusinnessLogic.initCheckout();\n }\n\n if (googlePayEnabledOnCart) {\n googlePayBusinnessLogic.initCart();\n }\n\n /* --------------------------ApplePay------------------------- */\n var applePayBusinessLogic = require('./applepay/applePay');\n\n var applePayEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_applepayContent'));\n var applePayEnabledOnCart = Boolean(document.querySelector('.braintree-cart-apple-button'));\n\n applePayBusinessLogic.init();\n\n if (applePayEnabledOnCart) {\n applePayBusinessLogic.initCart();\n }\n\n if (applePayEnabledOnCheckout) {\n applePayBusinessLogic.initCheckout();\n }\n\n /* --------------------------Venmo---------------------------- */\n var venmoBusinessLogic = require('./venmo/venmo');\n\n var isVenmoEnabledOnAccountPage = Boolean(document.querySelector('.venmo-accounts'));\n var isVenmoEnabledOnBillingPage = Boolean(document.querySelector('.js_braintree_venmoContent'));\n\n venmoBusinessLogic.init();\n\n if (isVenmoEnabledOnAccountPage) {\n venmoBusinessLogic.initAccount();\n }\n\n if (isVenmoEnabledOnBillingPage) {\n venmoBusinessLogic.initBillingCheckout();\n }\n\n /* --------------------------SRC------------------------------ */\n var srcBusinessLogic = require('./src/src');\n\n var isSrcEnabledOnAccountPage = Boolean(document.querySelector('.js_braintree_addSrcAccountForm'));\n var isSrcEnabledOnCartPage = Boolean(document.querySelector('.braintree-cart-src-button'));\n var isSrcEnabledOnBillingPage = Boolean(document.querySelector('.js_braintree_srcContent'));\n\n srcBusinessLogic.init();\n\n if (isSrcEnabledOnAccountPage) {\n srcBusinessLogic.initAccount();\n }\n\n if (isSrcEnabledOnCartPage) {\n srcBusinessLogic.initCartCheckout();\n }\n\n if (isSrcEnabledOnBillingPage) {\n srcBusinessLogic.initBillingCheckout();\n }\n\n /* --------------------------LPM-------------------------- */\n var lpmBusinessLogic = require('./local/lpm');\n var isLpmEnebledOnBillingPage = Boolean(document.querySelector('.js_braintree-lpmContent'));\n\n if (isLpmEnebledOnBillingPage) {\n lpmBusinessLogic.init();\n }\n};\n","'use strict';\n\n/* global braintree $ */\n/* eslint no-console: 'off' */\n\nvar isDebugMode = true;\n\nif (console && isDebugMode) {\n var consoleLog = console.log;\n var consoleError = console.error;\n console.log = function () {\n consoleLog.apply(console, arguments);\n };\n console.error = function () {\n consoleError.apply(console, arguments);\n };\n} else {\n console = { // eslint-disable-line no-global-assign\n log: function () { },\n error: function () { }\n };\n}\n\nvar bu = {\n pdpOnlickForAsignedPaypalPayment: function () {\n var $bundleItem = $('.bundle-item');\n function getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n }\n\n var pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n var $btn = $('.braintree_pdp_button');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n quantity: $('.quantity-select').val()\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n },\n\n getSelectedData: function (selectEl) {\n if (!selectEl) {\n return null;\n }\n var options = selectEl.getElementsByTagName('option');\n var option = null;\n for (var i = 0; i < options.length; i++) {\n option = options[i];\n if (option.selected) {\n break;\n }\n }\n return option.attributes;\n },\n\n postData: function (url, data) {\n var formData = new FormData();\n\n for (var key in data) {\n formData.append(key, data[key]);\n }\n $.ajax({\n url: url,\n data: formData,\n processData: false,\n contentType: false,\n type: 'POST',\n success: function (res) {\n window.location.href = res.redirectUrl;\n },\n error: function () {\n location.reload();\n }\n });\n },\n\n messages: {},\n\n errorInstances: [],\n createErrorInstance: function (containerElement, callback) {\n if (!containerElement) {\n console.error('Braintree: No container for showing erros');\n }\n function Constructor(cb) {\n bu.errorInstances.push(this);\n this.containerEl = containerElement;\n this.cb = typeof cb === 'function' ? cb : function () { };\n }\n Constructor.prototype.show = function (error) {\n var text = '';\n if (typeof error === 'string') {\n text = error;\n }\n if (typeof error === 'object') {\n var msg = bu.messages[error.code];\n text = msg || error.message;\n this.cb(this, error);\n if (error.code === 'PAYPAL_POPUP_CLOSED') {\n return;\n }\n }\n this.containerEl.style.display = '';\n this.containerEl.innerHTML = text;\n };\n Constructor.prototype.hide = function () {\n this.containerEl.innerHTML = '';\n };\n return new Constructor(callback);\n },\n clientToken: null\n};\n\nbu.console = console;\n\nmodule.exports = bu;\n\n","'use strict';\n\nvar braintreeCreditCardSDK = require('./braintreeCreditCardSDK');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\n\nvar braintreeCreditCardSdkHelper = require('../helpers/braintreeCreditCardSdkHelper');\nvar billingHelper = require('../helpers/billingHelper');\n\n\n/* global Promise braintree $ */\n\n// global variables\nvar hostedFieldsInstance;\nvar btClientInstancePromise;\nvar orderData;\nvar sitePrefs = {};\n\n/**\n * Init Braintree Credit Card model\n * @param {Promise} braintreeClientInstancePromise Braintreee client instance promise\n * @param {boolean} isSkip3dSecureLiabilityResult 'BRAINTREE_3DSecure_Skip_Client_Validation_Result' site preference value\n * @param {boolean} is3dSecureEnabled 'BRAINTREE_3DSecure_Enabled' site preference value\n * @param {bollean} isFraudToolsEnabled Is fraud tools enabled value\n */\nfunction init(braintreeClientInstancePromise, isSkip3dSecureLiabilityResult, is3dSecureEnabled, isFraudToolsEnabled) {\n braintreeCreditCardSDK.init(braintreeClientInstancePromise);\n\n btClientInstancePromise = braintreeClientInstancePromise;\n sitePrefs = {\n isSkip3dSecureLiabilityResult: isSkip3dSecureLiabilityResult,\n is3dSecureEnabled: is3dSecureEnabled,\n isFraudToolsEnabled: isFraudToolsEnabled\n };\n}\n\n\n/**\n * Gets required additional shipping info for 3ds\n *\n * @param {Object} orderAddress - User's shipping address\n * @returns {Object} an object with required fields\n */\n\nfunction getShippingAdditionalInfo(orderAddress) {\n return {\n workPhoneNumber: orderAddress.phone,\n shippingGivenName: orderAddress.recipientName.split(' ').slice(0, -1).join(' '),\n shippingSurname: orderAddress.recipientName.split(' ').slice(-1).join(' '),\n shippingPhone: orderAddress.phone,\n shippingAddress: {\n streetAddress: orderAddress.line1,\n extendedAddress: orderAddress.line2,\n locality: orderAddress.city,\n region: orderAddress.state,\n postalCode: decodeURIComponent(orderAddress.postalCode),\n countryCodeAlpha2: orderAddress.countryCode\n }\n };\n}\n\n/**\n * Updates Order data on Checkout\n */\nfunction updateOrderData() {\n $.ajax({\n url: document.querySelector('.js_braintree_getOrderInfoUrl').value + '?qwe=2344',\n type: 'get',\n dataType: 'json',\n success: function (data) {\n data.shippingAdditionalInfo = data.shippingAddress ? getShippingAdditionalInfo(data.shippingAddress) : null;\n orderData = data;\n },\n error: function () {\n window.location.reload();\n }\n });\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n var response;\n\n if (sitePrefs && sitePrefs.isFraudToolsEnabled) {\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\n } else {\n response = Promise.resolve({\n customMessage: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\n });\n }\n\n return response;\n}\n\n/**\n * Inits Credit Card hosted fields\n * @returns {Object} Hosted Fields instance\n */\nfunction initCreditCardFields() {\n var hostedFieldsParams = null;\n var styles = creditCardFormFieldHelper.getHostedFieldsStyles();\n var configs = creditCardFormFieldHelper.getHostedFieldsConfig();\n\n hostedFieldsParams = {\n styles,\n configs\n };\n\n return braintreeCreditCardSDK.createHostedFields(hostedFieldsParams)\n .then(function (hfInstance) {\n // init hosted fields instance globaly\n hostedFieldsInstance = hfInstance;\n\n return hfInstance;\n });\n}\n\n/**\n * Creates Credit Card hosted fields\n */\nfunction clearHostedFields() {\n braintreeCreditCardSDK.clearHostedFields(hostedFieldsInstance);\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Tokenizes previouselly filled hosted Credit Card fields and returns a nonce payload\n * @returns {Promise} Promise with { error: false, result: 'ok'} inside in case of positive response and\n * { error: true} in case of negative (reject, case)\n */\nfunction tokenize(isCheckoutPage) {\n var tokenizationOptions;\n\n // \"Hosted Field Instance\" validation\n if (!hostedFieldsInstance) {\n return Promise.reject({\n customError: '\"hostedFieldsInstance\" is not define. Tokenization can\\'t be done'\n });\n }\n\n if (isCheckoutPage) {\n // Pull billing address from Storefront. Passed data will be tokenized and sent to Braintree\n tokenizationOptions = braintreeCreditCardSdkHelper.createTokenizationOptions();\n } else {\n tokenizationOptions = {};\n }\n\n if(isCheckoutPage && !billingHelper.billingAddressValidation()) {\n return Promise.reject({billingValidationError: true});\n }\n \n return braintreeCreditCardSDK.tokenize(hostedFieldsInstance, tokenizationOptions)\n .then(function (payload) {\n return {\n btTokenizePayload: payload\n };\n });\n}\n\n/**\n * Launch the 3D Secure login flow, returning a nonce payload.\n * @param {string} nonce Payment method nonce\n * @param {string} bin Payment method bin\n * @param {number} amount Total amount\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {Object} shippingAdditionalInfo Object with shipping info\n * @param {Object} btTokenizePayload Tokenize payload\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo, btTokenizePayload) {\n return braintreeCreditCardSDK.apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo)\n .then(function (payload) {\n if (payload.liabilityShifted || sitePrefs.isSkip3dSecureLiabilityResult) {\n // \"Nonce\" is changed after successful 3DS validation. We need this line to store the last \"nonce\" value\n if (btTokenizePayload) {\n // For stored card use case we don't need this param\n btTokenizePayload.nonce = payload.nonce;\n }\n\n return {\n threeDSecureDataValidationPayload: payload,\n btTokenizePayload: btTokenizePayload\n };\n }\n\n // Case when buyer \"canceled\" 3DS window\n return Promise.reject({\n customError: '3DS popup was canceled by buyer'\n });\n });\n}\n\n/**\n * Process the new Credit Card\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {boolean} isCheckoutPage Is checkout flow flag\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction processNewCard(email, billingData, isCheckoutPage) {\n var is3dSecureDisabled = sitePrefs && !sitePrefs.is3dSecureEnabled;\n var orderAmount = orderData.amount;\n var shippingAdditionalInfo = orderData.shippingAdditionalInfo;\n var nonce = null;\n var bin = null;\n var result = null;\n\n result = tokenize(isCheckoutPage);\n\n if (!is3dSecureDisabled) {\n result = result\n .then(function (payload) {\n nonce = payload.btTokenizePayload.nonce;\n bin = payload.btTokenizePayload.details ? payload.btTokenizePayload.details.bin : '';\n\n return apply3dSecureValidation(\n nonce,\n bin,\n orderAmount,\n email,\n billingData,\n shippingAdditionalInfo,\n payload.btTokenizePayload\n );\n });\n }\n\n return result;\n}\n\n/**\n * Process the stored Credit Card\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {string} nonce Payment method nonce\n * @param {string} bin Payment method bin\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction processStoredCard(email, billingData, nonce, bin) {\n var orderAmount = orderData.amount;\n var shippingAdditionalInfo = orderData.shippingAdditionalInfo;\n var is3dSecureDisabled = sitePrefs && !sitePrefs.is3dSecureEnabled;\n var result = null;\n\n if (!billingHelper.billingAddressValidation()) {\n result = Promise.reject({billingValidationError: true});\n } else {\n // Case when we have a nonce, it is the case when buyer use stored credit card\n // otherwise, it is the case when buyer use new credit card\n if (is3dSecureDisabled) {\n result = Promise.resolve({\n nonce,\n email,\n bin\n });\n } else {\n result = apply3dSecureValidation(\n nonce,\n bin,\n orderAmount,\n email,\n billingData,\n shippingAdditionalInfo\n );\n }\n }\n\n return result;\n}\n\n/**\n * In case of session card we can do nothing since the nonce, 3ds, hosted fields validation already was passed\n * @returns {Promise} return Promise with success data\n */\nfunction processSessionCard() {\n return Promise.resolve({});\n}\n\n/**\n * Checks whether the basket is valid\n * @param {string} errorMessage Error message\n * @returns {Object} response object\n */\nfunction isBasketDataValid(errorMessage) {\n var response = {\n error: false,\n customErrorMessage: ''\n };\n\n if (!orderData || orderData.amount === 0) {\n response.error = true;\n response.customErrorMessage = errorMessage;\n }\n\n return response;\n}\n\n/**\n * Get BT client instance which is used currently in the model\n * @returns {Promise} BT client instance promise\n */\nfunction getClientInstancePromise() {\n return btClientInstancePromise;\n}\n\nmodule.exports = {\n init,\n // \"tokenize\" or \"processNewCard\", or \"processStoredCard\", or \"clearHostedFields\"\n // can be called only after excution of \"initCreditCardFields\"\n tokenize,\n initCreditCardFields,\n processNewCard,\n processStoredCard,\n processSessionCard,\n clearHostedFields,\n getClientInstancePromise,\n\n // \"isBasketDataValid\" can be called only after calling of \"updateOrderData\"\n isBasketDataValid,\n updateOrderData,\n\n collectFraudData\n};\n","'use strict';\nvar braintreeCreditCardModel = require('./braintreeCreditCardModel');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar creditCardHelper = require('../helpers/creditCardHelper');\n\n/**\n * Initialize Braintree Credit Card Model. Pattern Builder is used\n * @returns {Object} object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n var braintreeCreditCardConfigs = creditCardHelper.getCheckoutBraintreeCreditCardConfigs();\n var clientToken;\n var btClientInstancePromise;\n var isSkip3dSecureLiabilityResult;\n var is3dSecureEnabled;\n var isFraudToolsEnabled;\n var response = {\n error: false,\n message: '',\n btCreditCardModel: null,\n btCreditCardConfigs: null\n };\n\n if (braintreeCreditCardConfigs) {\n clientToken = braintreeCreditCardConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n isSkip3dSecureLiabilityResult = braintreeCreditCardConfigs.isSkip3dSecureLiabilityResult;\n is3dSecureEnabled = braintreeCreditCardConfigs.is3dSecureEnabled;\n isFraudToolsEnabled = braintreeCreditCardConfigs.isFraudToolsEnabled;\n\n braintreeCreditCardModel.init(\n btClientInstancePromise,\n isSkip3dSecureLiabilityResult,\n is3dSecureEnabled,\n isFraudToolsEnabled\n );\n\n response.btCreditCardModel = braintreeCreditCardModel;\n response.btCreditCardConfigs = braintreeCreditCardConfigs;\n } else {\n response.error = true;\n response.message = 'No Credit Card Braintree Configurations';\n }\n\n return response;\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nvar btClientInstancePromise;\n\n/**\n * Returns a promise that resolves with the HostedFields instance.\n * @param {Object} hostedFieldsParams Object of hosted fieds parameters\n * @returns {Object} Object with hosted field parameters\n */\nfunction createHostedFields(hostedFieldsParams) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.hostedFields.create({\n client: btClientInstance,\n styles: hostedFieldsParams.styles,\n fields: hostedFieldsParams.configs\n });\n });\n}\n\n/**\n * Launch the 3D Secure login flow, returning a nonce payload.\n * @param {string} nonce Payment method nonce\n * @param {string} bin Payment method bin\n * @param {number} amount Total amount\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {Object} shippingAdditionalInfo Object with Credit Card shipping info\n * @returns {Object} 3DS instance\n */\nfunction apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.threeDSecure.create({\n client: btClientInstance,\n version: 2\n }).then(function (threeDSecure) {\n var threeDSecurePayload = {\n amount: ($('#checkout-main').attr('data-zero-order') == 'true') ? '0' : amount,\n nonce: nonce,\n bin: bin || '',\n email: email,\n billingAddress: {\n givenName: billingData.firstName,\n surname: billingData.lastName,\n phoneNumber: billingData.phone,\n streetAddress: billingData.address1,\n extendedAddress: billingData.address2,\n locality: billingData.city,\n region: billingData.stateCode,\n postalCode: decodeURIComponent(billingData.postalCode),\n countryCodeAlpha2: billingData.country\n },\n challengeRequested: true,\n additionalInformation: shippingAdditionalInfo,\n onLookupComplete: function (data, next) {\n storeCleannedResponse(email, data);\n next();\n }\n };\n \n storeCleannedRequest(threeDSecurePayload);\n return threeDSecure.verifyCard(threeDSecurePayload);\n });\n });\n}\n/**\n * Stores the request log in the custom object for debugging purposes\n */\nfunction storeCleannedRequest(data) {\n data['_type'] = 'REQUEST';\n\n // Get URL from DOM\n var logURL = $('#paymentLogURL');\n if (logURL.length) logURL = logURL.data('logurl');\n else return;\n\n fetch(logURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n body: JSON.stringify(data)\n });\n}\n\n\n/**\n * Stores the response log in the custom object for debugging purposes\n */\nfunction storeCleannedResponse(email, data) {\n data['_type'] = 'RESPONSE';\n\n // Remove sensitive data that we do not want to store in CommerceCloud\n delete data.paymentMethod.details;\n data.email = email;\n\n // Get URL from DOM\n var logURL = $('#paymentLogURL');\n if (logURL.length) logURL = logURL.data('logurl');\n else return;\n\n fetch(logURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n body: JSON.stringify(data)\n });\n}\n\n/**\n * Tokenizes a Credit Card and returns a nonce payload.\n * @param {HostedFileds} hfInstance Hosted fieled instance\n * @param {Object} tokenizationOptions Credit Card tokenization option\n * @returns {Promise} A promise that resolves with a tokenizePayload.\n */\nfunction tokenize(hfInstance, tokenizationOptions) {\n var tokenizeOption = tokenizationOptions || {};\n\n return hfInstance.tokenize(tokenizeOption);\n}\n\n/**\n * Clear the value of the field\n * @param {HostedFileds} hfInstance Hosted fieled instance\n */\nfunction clearHostedFields(hfInstance) {\n hfInstance.clear('cardholderName');\n hfInstance.clear('number');\n hfInstance.clear('cvv');\n hfInstance.clear('expirationDate');\n}\n\n/**\n *\n * @param {Promise} braintreeClientInstancePromise Braintree Credit Card instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n init,\n createHostedFields,\n apply3dSecureValidation,\n tokenize,\n clearHostedFields\n};\n","'use strict';\n\nvar loaderInstance = require('../../loaderHelper');\nvar creditCardVaultManager = require('./creditCardVaultManager');\n\nvar braintreeCreditCardModel;\nvar addNewCreditCardLoader;\n\n// Helpers\nvar creditCardAccountHelper = require('../helpers/creditCardAccountHelper');\n\n// Loader selectors\nvar $braintreeCreditCardLoader = document.querySelector('#braintreeCreditCardLoader');\nvar $customCreditCardErrorContainer = document.querySelector('#customCreditCardErrorContainer');\n\nvar errHandlingModel;\nvar ccMessages;\n\n/**\n * Check whenever is new card is presented on Storefront and in VaultMgr. If yes - render error message.\n * @param {Promise} clientInstancePromise client instance promise\n * @param {Object} btPayload payload from Braintree\n * @param {Object} errorList object with errors\n * @returns {Promise} promise with reject status in case if new card already exists in VaultMgr and on Storefront (buyer's wallet)\n */\nfunction rejectIfCardExistsInVault(clientInstancePromise, btPayload, errorList) {\n var payloadDetails = btPayload.details;\n var lastFour = payloadDetails.lastFour.toString();\n var type = payloadDetails.cardType.toLowerCase();\n\n return creditCardVaultManager.isNewCardCanBeStored(clientInstancePromise, lastFour, type)\n .then(function (newCardCanBeStored) {\n if (!newCardCanBeStored) {\n // eslint-disable-next-line no-undef\n return Promise.reject(errorList.CARD_ALREADY_EXIST_ERROR_MESSAGE);\n }\n });\n}\n\n/**\n * Stores new Credit Card on account page\n * @param {Object} event Event object\n * @returns {void}\n */\nfunction storeNewCreditCard(event) {\n var isCheckoutPage = false;\n var customErrorList = JSON.parse($customCreditCardErrorContainer.getAttribute('data-errors'));\n\n // Clears error messages on the top of the Account Page\n errHandlingModel.hideError();\n\n try {\n if (!braintreeCreditCardModel) {\n throw ccMessages.CLIENT_MISSING_GATEWAY_CONFIGURATION;\n }\n\n addNewCreditCardLoader.show();\n\n var clientInstancePromise = braintreeCreditCardModel.getClientInstancePromise();\n\n braintreeCreditCardModel.tokenize(isCheckoutPage)\n .then(function (btModelPayload) {\n var tokenizePayload = btModelPayload.btTokenizePayload;\n var $addCreditCardForm = $('.js_braintree_addCreditCardForm');\n var addCreditCardFormUrl = $addCreditCardForm.attr('action');\n var formData;\n\n return rejectIfCardExistsInVault(clientInstancePromise, tokenizePayload, customErrorList)\n .then(function () {\n // Sets value of Credit Card hidden fields needed for server side\n creditCardAccountHelper.setCardHiddenFields(tokenizePayload);\n\n // Call to Braintree-AccountAddCreditCardHandle preparetion\n formData = $addCreditCardForm.serialize();\n\n return $.ajax({\n url: addCreditCardFormUrl,\n type: 'post',\n dataType: 'json',\n data: formData\n })\n .then(function (response) {\n if (!response.success) {\n errHandlingModel.creditCardErrorHandler(response.error);\n } else {\n location.href = response.redirectUrl;\n }\n });\n });\n })\n .catch(function (error) {\n errHandlingModel.creditCardErrorHandler(error);\n })\n .finally(function () {\n addNewCreditCardLoader.hide();\n });\n\n event.preventDefault();\n event.stopPropagation();\n } catch (err) {\n errHandlingModel.creditCardErrorHandler(err);\n }\n}\n\n/**\n * CUSTOM FUNC - Stores new Credit Card on account page\n * @param {Object} event Event object\n * @returns {void}\n */\nfunction storeNewCreditCardCustom(event) {\n var isCheckoutPage = false;\n var braintreeCreditCardSDK = require('../braintreesdk/braintreeCreditCardSDK');\n var customErrorList = JSON.parse($customCreditCardErrorContainer.getAttribute('data-errors'));\n\n // Clears error messages on the top of the Account Page\n errHandlingModel.hideError();\n\n try {\n if (!braintreeCreditCardModel) {\n throw ccMessages.CLIENT_MISSING_GATEWAY_CONFIGURATION;\n }\n\n addNewCreditCardLoader.show();\n\n var clientInstancePromise = braintreeCreditCardModel.getClientInstancePromise();\n\n braintreeCreditCardModel.tokenize(isCheckoutPage)\n .then(function (btModelPayload) {\n var tokenizePayload = btModelPayload.btTokenizePayload;\n var $addCreditCardForm = $('.js_braintree_addCreditCardForm');\n var addCreditCardFormUrl = $addCreditCardForm.attr('action');\n var formData;\n\n return rejectIfCardExistsInVault(clientInstancePromise, tokenizePayload, customErrorList)\n .then(function () {\n var nonce = tokenizePayload.nonce;\n var email = $('.js-payment-block').attr('data-email');\n var bin = tokenizePayload.details ? tokenizePayload.details.bin : '';\n var isSubscriptionPage = $('.subcription-detail').length > 0;\n var amount = \"0\";\n if (isSubscriptionPage) {\n amount = $('.total .js-grand-total').attr('data-grand-total-value');\n }\n\n return braintreeCreditCardSDK.apply3dSecureValidation(nonce, bin, amount, email, {}, null)\n .then(function (payload) {\n // Sets value of Credit Card hidden fields needed for server side\n creditCardAccountHelper.setCardHiddenFields(payload);\n\n if (isSubscriptionPage) {\n $.spinner().start();\n $('.save-subscription-changes').trigger('click');\n $('.braintreeCreditCardBtn').hide();\n return;\n } else {\n // Call to Braintree-AccountAddCreditCardHandle preparetion\n formData = $addCreditCardForm.serialize();\n\n return $.ajax({\n url: addCreditCardFormUrl,\n type: 'post',\n dataType: 'json',\n data: formData\n })\n .then(function (response) {\n if (!response.success) {\n errHandlingModel.creditCardErrorHandler(response.error);\n } else {\n // needed for gtm:addShippingInfo event\n $('body').trigger('gtm:addPaymentInfo', formData);\n location.href = response.redirectUrl;\n }\n });\n }\n });\n });\n })\n .catch(function (error) {\n errHandlingModel.creditCardErrorHandler(error);\n })\n .finally(function () {\n addNewCreditCardLoader.hide();\n });\n\n event.preventDefault();\n event.stopPropagation();\n } catch (err) {\n errHandlingModel.creditCardErrorHandler(err);\n }\n}\n\n/**\n * Inits Credit Card account loaders\n */\nfunction initCreditCartAccountLoaders() {\n var braintreeCreditCardLoaderExists = Boolean($braintreeCreditCardLoader);\n\n if (braintreeCreditCardLoaderExists) {\n addNewCreditCardLoader = loaderInstance($braintreeCreditCardLoader);\n }\n}\n\n/**\n * Init Credit Card Account functionality\n * @param {Object} btCreditCardModel Braintree Credit Card model\n * @param {Constructor} errorHandlingModel Error handling model\n * @param {Object} creditCardMessages List of Credit Card error messages\n */\nfunction init(btCreditCardModel, errorHandlingModel, creditCardMessages) {\n var addNewCreditCardFormExists = Boolean(document.querySelector('.js_braintree_addCreditCardForm'));\n errHandlingModel = errorHandlingModel;\n ccMessages = creditCardMessages;\n\n var clientInstancePromise = btCreditCardModel.getClientInstancePromise();\n\n initCreditCartAccountLoaders();\n creditCardVaultManager.removeFromDomCardsWhichAreNotInVaultMgr(clientInstancePromise);\n\n braintreeCreditCardModel = btCreditCardModel;\n\n // \"Store new Card\" button functionality initiation (works only when 3DS is disabled)\n if (addNewCreditCardFormExists) {\n $('.braintreeAddNewCardBlock').on('click', '.braintreeCreditCardBtn', storeNewCreditCardCustom);\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/**\n * General validation of params needed for initialization of hosted fields\n * @param {Object} $braintreeCreditCardFieldsContainer Braintree Credit Card fields container\n * @param {Object} braintreeCreditCardConfig Braintree Credit Card configurations (they came from server via data attr)\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"massages\" attr\n */\nfunction generalHfValidation($braintreeCreditCardFieldsContainer, braintreeCreditCardConfig) {\n var response = {\n error: false,\n messages: ''\n };\n\n try {\n var isHostedFieldsWasInited = JSON.parse($braintreeCreditCardFieldsContainer.getAttribute('data-is-inited'));\n var isBraintreeCreditCardConfigValid = typeof braintreeCreditCardConfig !== 'object' || braintreeCreditCardConfig !== null;\n\n if (isHostedFieldsWasInited) {\n // do not add error msg since this case is expected (hosted fields should be inited just once)\n response.error = true;\n }\n if (!isBraintreeCreditCardConfigValid) {\n response.error = true;\n response.messages = '.js_braintree_creditCardFields has not valid data-braintree-config';\n }\n } catch (error) {\n response.error = true;\n response.messages = error;\n }\n\n return response;\n}\n\n/**\n * Init Credit Card fields functionality\n * @param {Object} btCreditCardModel Braintree Credit Card model\n * @param {Object} $continueButton Continue button\n * @param {Constructor} errorHandlingModel Error handling model\n */\nfunction init(btCreditCardModel, $continueButton, errorHandlingModel) {\n errorHandlingModel.hideError();\n\n document.querySelectorAll('.js_braintree_creditCardFields').forEach(function (el) {\n try {\n var $braintreeCreditCardFieldsContainer = el;\n var braintreeCreditCardConfig = JSON.parse($braintreeCreditCardFieldsContainer.getAttribute('data-braintree-config'));\n var generalHostedFieldsValidation = generalHfValidation($braintreeCreditCardFieldsContainer, braintreeCreditCardConfig);\n\n if (generalHostedFieldsValidation.error) {\n if (generalHostedFieldsValidation.messages.length) {\n throw generalHostedFieldsValidation.messages;\n }\n }\n\n // Fraud Data will be only collected in case if corresponding Site Preference is enabled\n // For more details go inside \"btCreditCardModel.collectFraudData\" function logic\n btCreditCardModel.collectFraudData()\n .then(function (fraudDataPayload) {\n var $braintreeDeviceData = document.querySelector('#braintreeDeviceData');\n\n if (fraudDataPayload.deviceData) {\n $braintreeDeviceData.value = fraudDataPayload.deviceData;\n }\n\n // Init \"Credit Card Hosted Fields\"\n return btCreditCardModel.initCreditCardFields($continueButton);\n })\n .catch(function (err) {\n errorHandlingModel.creditCardErrorHandler(err);\n });\n\n // Update order data inside BT model each time when buyer update checkout view\n $('body').on('checkout:updateCheckoutView', btCreditCardModel.updateOrderData);\n\n // To prevent from repeatable Credit Card hosted fields initialization\n $braintreeCreditCardFieldsContainer.setAttribute('data-is-inited', true);\n \n if ($('.braintreeAddNewCard').length != 0) {\n $('.braintreeAddNewCard').trigger('click');\n $('.js-payment-block').removeClass('d-none');\n }\n } catch (err) {\n errorHandlingModel.creditCardErrorHandler(err);\n }\n });\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nvar creditCardVaultManagerComponent = require('./creditCardVaultManager');\nvar creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\nvar creditCardHelper = require('../helpers/creditCardHelper');\n\n/**\n * Makes the necessary setting for 'Save Credit Card block' on the Billing Page\n * @param {boolean} saveCreditCard true/false\n * @param {boolean} displaySaveCreditCardBlock true/false\n */\nfunction saveCreditCardBlockManipulation(saveCreditCard, displaySaveCreditCardBlock) {\n var $saveCreditCard = document.querySelector('#braintreeSaveCreditCard');\n var $braintreeSaveCardContainer = document.querySelector('#braintreeSaveCardContainer');\n\n if ($braintreeSaveCardContainer) {\n $braintreeSaveCardContainer.style.display = displaySaveCreditCardBlock ? 'block' : 'none';\n $saveCreditCard.checked = saveCreditCard;\n }\n}\n\n/**\n * Handles changing of Credit Card list on the Billing Page\n * @param {Constructor} errorHandlingModel Error handling model\n */\nfunction cardListChange(errorHandlingModel) {\n var btUtils = require('../../braintreeUtils');\n\n var $creditCardList = creditCardFormFieldHelper.getCreditCardListContainer();\n var $braintreeCreditCardNonce = creditCardFormFieldHelper.getCreditCardNonceFieldContainer();\n var $braintreeCardPaymentMethod = document.querySelector('#braintreeCardPaymentMethod');\n\n var creditCardOption = $creditCardList.selectedOptions[0];\n var creditCardOptionID = creditCardOption.id;\n var creditCardFieldsToDisplayArray = creditCardFormFieldHelper.getCCFieldsToDisplay().asArray;\n var creditCardHostedFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\n var creditCardFiledsToDisplayObject = creditCardFormFieldHelper.getCCFieldsToDisplay().asObject;\n\n // Variables only for \"braintreeSessionCreditAccount\" case\n var selectedCreditCard;\n var nonce = '';\n var saveCreditCard = true;\n var showSaveCreditCardBlock = true;\n\n // Clear error messages on the Billing Page\n errorHandlingModel.hideError();\n\n switch (creditCardOptionID) {\n // When buyer selected \"new cc\"\n case 'newCardAccount':\n // Hide 'toDisplay' fields\n creditCardFormFieldHelper.hideCardElements(creditCardFieldsToDisplayArray);\n\n creditCardFormFieldHelper.showCardElements(creditCardHostedFieldsArray);\n\n // Display \"Save Credit Card\" block, and mark it as checked\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n $braintreeCreditCardNonce.value = '';\n $braintreeCardPaymentMethod.value = 'CREDIT';\n break;\n\n case 'braintreeSessionCreditAccount':\n selectedCreditCard = btUtils.getSelectedData($creditCardList);\n nonce = selectedCreditCard['data-nonce'].value;\n saveCreditCard = selectedCreditCard['data-save-card'].value;\n\n // Display \"Save Credit Card\" block, and mark it as checked\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n // Add values to the \"toDisplay\" and hidden input fields.\n creditCardFormFieldHelper.setCardFields(selectedCreditCard, creditCardFiledsToDisplayObject);\n\n creditCardFormFieldHelper.hideCardElements(creditCardHostedFieldsArray);\n creditCardFormFieldHelper.showCardElements(creditCardFieldsToDisplayArray);\n\n $braintreeCreditCardNonce.value = nonce;\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\n break;\n\n // Case for saved credit cards\n default:\n saveCreditCard = false;\n showSaveCreditCardBlock = false;\n selectedCreditCard = btUtils.getSelectedData($creditCardList);\n\n // Add values to the 'toDisplay' and hidden input fields\n creditCardFormFieldHelper.setCardFields(selectedCreditCard, creditCardFiledsToDisplayObject);\n\n // Show these fields to the buyer\n creditCardFormFieldHelper.showCardElements(creditCardFieldsToDisplayArray);\n\n // Hide hosted fields (since we don't need them)\n creditCardFormFieldHelper.hideCardElements(creditCardHostedFieldsArray);\n\n // Display \"Save Credit Card\" block, and uncheck it\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n $braintreeCreditCardNonce.value = nonce;\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\n break;\n }\n}\n\n/**\n * Hide stored card if the new card is the same as already stored\n */\nfunction hideStoredCardAsSessionCard() {\n var $sessionCreditCard = $('#braintreeSessionCreditAccount');\n var isSessionCardVisible = $sessionCreditCard.css('display') !== 'none';\n\n if (isSessionCardVisible) {\n var sessionCardType = $sessionCreditCard.data('type') ? $sessionCreditCard.data('type').toLowerCase() : '';\n var sessionCardLastFour = $sessionCreditCard.data('last-four') ? $sessionCreditCard.data('last-four').toString() : '';\n var storedAsSessionCardExists;\n\n storedAsSessionCardExists = creditCardPaymentProcessingHelper.hideAlreadyStoredCard(sessionCardLastFour, sessionCardType);\n\n if (storedAsSessionCardExists) {\n // Hide CC save block and unclick \"save\" checkbox\n creditCardHelper.hideSaveCreditCardBlock(true);\n creditCardHelper.saveCreditCard(false);\n }\n }\n}\n\n/**\n * Inits Credit Card list functionality\n * @param {Object} btCreditCardModel BT Credit Card model\n * @param {Constructor} errorHandlingModel errorHandlingModel Error handling model\n */\nfunction init(btCreditCardModel, errorHandlingModel) {\n var $creditCardList = document.querySelector('#braintreeCreditCardList');\n var creditCardListExist = Boolean($creditCardList);\n var clientInstancePromise = btCreditCardModel.getClientInstancePromise();\n\n if (creditCardListExist) {\n $creditCardList.addEventListener('change', function () {\n cardListChange(errorHandlingModel);\n });\n }\n\n cardListChange(errorHandlingModel);\n // Only for logged in buyer with stored cards in wallet\n creditCardVaultManagerComponent.removeFromDomCardsWhichAreNotInVaultMgr(clientInstancePromise);\n hideStoredCardAsSessionCard();\n}\n\n\nmodule.exports = {\n init,\n cardListChange\n};\n","/* eslint-disable no-console */\n'use strict';\n\n/* global Promise braintree $ */\n\nvar helper = require('../../helper');\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nvar btCreditCardModel = require('../braintreesdk/braintreeCreditCardModel');\nvar creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\nvar loaderInstance = require('../../loaderHelper');\nvar creditCardPaymentProcessingConstants = require('../constants/creditCardPaymentProcessingConstants');\nvar creditCardVaultManager = require('./creditCardVaultManager');\nvar creditCardHelper = require('../helpers/creditCardHelper');\n\nvar $continueButton = document.querySelector('button.submit-payment');\nvar $creditCardList = document.querySelector('#braintreeCreditCardList');\nvar $braintreeCreditCardLoader = document.querySelector('#braintreeCreditCardLoader');\nvar $customCreditCardErrorContainer = document.querySelector('#customCreditCardErrorContainer');\n\nvar loader;\nvar errHandlingModel;\n\n/**\n * Process Credit Card on the Billing Page\n * @param {Object} event Event object\n * @returns {void}\n */\nfunction processCreditCard(event) {\n event.preventDefault();\n event.stopPropagation();\n\n // Removes error messages on the Billing Page\n errHandlingModel.hideError();\n\n try {\n var customErrorMessages = JSON.parse($customCreditCardErrorContainer.getAttribute('data-errors'));\n var basketDataValidResponse = btCreditCardModel.isBasketDataValid(customErrorMessages.TOTAL_BASKET_AMOUNT_INVALID);\n var clientInstancePromise = btCreditCardModel.getClientInstancePromise();\n var allowZeroAmountOrders = $('#checkout-main').attr('data-allow-zero-order') == 'true';\n\n if (basketDataValidResponse.error && !allowZeroAmountOrders) {\n throw basketDataValidResponse.customErrorMessage;\n }\n\n // Data passed inside \"braintreeCreditCardModel\"\n var billingData = helper.getBillingAddressFormValues();\n var email = document.querySelector('.customer-summary-email').textContent;\n var isCheckoutFlow = true;\n\n var creditCardFlow = creditCardPaymentProcessingHelper.getCreditCardFlowID($creditCardList);\n var result;\n\n loader.show();\n\n switch (creditCardFlow) {\n // Case for new card\n case creditCardPaymentProcessingConstants.FLOW_NEW_CARD_NAME:\n result = btCreditCardModel.processNewCard(email, billingData, isCheckoutFlow)\n .then(function (btPayload) {\n var btPayloadDetails = btPayload.btTokenizePayload.details;\n var newCardType = btPayloadDetails.cardType.toLowerCase();\n var newCardLastFour = btPayloadDetails.lastFour.toString();\n\n // Hide already stored card in case if new card is the same\n creditCardVaultManager.isNewCardCanBeStored(\n clientInstancePromise,\n newCardLastFour,\n newCardType\n )\n .then(function (newCardCanBeStored) {\n if (!newCardCanBeStored) {\n creditCardPaymentProcessingHelper.hideAlreadyStoredCard(newCardLastFour, newCardType);\n // Hide CC save block and unclick \"save\" checkbox\n creditCardHelper.hideSaveCreditCardBlock(true);\n creditCardHelper.saveCreditCard(false);\n }\n });\n\n // Fill hidden inputs CreditCard fields and Session CreditCard div fields\n creditCardPaymentProcessingHelper.fillCreditCardFormWithPayloadData(btPayload);\n\n // Filling of session card attributes for using them in business logic (client/server)\n creditCardPaymentProcessingHelper.setSessionCreditCardDataAttributes(btPayload);\n\n // Fill 'toDisplay' fields with data to display them for buyer\n creditCardPaymentProcessingHelper.fillSessionCreditCardFormWithPayloadData(btPayload);\n\n // Display \"Stored Accounts\" list\n creditCardPaymentProcessingHelper.displayStoredCreditCardList();\n\n // Select \"Session Account Option\" in \"Account List\"\n creditCardPaymentProcessingHelper.markAsSelectedSessionAccount();\n\n // Clear \"Hosted Fields\" (from iframe)\n btCreditCardModel.clearHostedFields();\n\n // Show \"Session Credit Card\" fields (in div blocks)\n creditCardFormFieldHelper.showCardElements(creditCardFormFieldHelper.getCCFieldsToDisplay().asArray);\n\n // Hide hosted fields (iframe fields)\n creditCardFormFieldHelper.hideCardElements(creditCardFormFieldHelper.getCCFields().asArray);\n helper.continueButtonToggle(false);\n });\n break;\n\n // Case for session card\n case creditCardPaymentProcessingConstants.FLOW__SESSION_CARD_NAME:\n result = btCreditCardModel.processSessionCard();\n break;\n\n // Case for stored card\n case creditCardPaymentProcessingConstants.FLOW_JS_STORED_CARD_NAME:\n result = creditCardPaymentProcessingHelper.getNonceFromStoredCard(clientInstancePromise, $creditCardList)\n .then(function (response) {\n var nonce = response.nonce;\n var bin = response.details ? response.details.bin : '';\n\n return btCreditCardModel.processStoredCard(email, billingData, nonce, bin)\n .then(function (btStoredCardPayload) {\n var threeDSecureDataValidationPayload = btStoredCardPayload.threeDSecureInfo;\n\n if (threeDSecureDataValidationPayload) {\n creditCardPaymentProcessingHelper.fill3DsData(threeDSecureDataValidationPayload);\n }\n \n if (btStoredCardPayload.threeDSecureDataValidationPayload) {\n document.querySelector('input[name=braintreePaymentMethodNonce]').value = btStoredCardPayload.threeDSecureDataValidationPayload.nonce;\n }\n });\n });\n break;\n\n default:\n // Handle error with wrong checkout flow\n result = Promise.reject(customErrorMessages.WROND_CHECKOUT_FLOW);\n break;\n }\n\n result\n .then(function () {\n loader.hide();\n // Trigger \"Submit Payment\" button\n $(event.target).trigger('click');\n })\n .catch(function (error) {\n loader.hide();\n\n if(!error?.billingValidationError) {\n // Braintree Errors\n errHandlingModel.creditCardErrorHandler(error);\n }\n });\n } catch (error) {\n loader.hide();\n errHandlingModel.creditCardErrorHandler(error);\n }\n}\n\n/**\n * Inits Credit Card process on the Billing Page\n * @param {Constructor} errorHandlingModel Error handling constructor\n */\nfunction init(errorHandlingModel) {\n loader = loaderInstance($braintreeCreditCardLoader);\n errHandlingModel = errorHandlingModel;\n\n $continueButton.addEventListener('click', function (event) {\n var isCreditCardTabActive = creditCardPaymentProcessingHelper.isActiveCreditCardTab();\n\n // Removes active session payment method once 'Next: Place order' button clicked\n helper.removeActiveSessionPayment();\n\n if (!event.isTrusted || !isCreditCardTabActive) {\n return;\n }\n\n processCreditCard(event);\n });\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\nvar creditCardHelper = require('../helpers/creditCardHelper');\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nvar creditCardSessionAccountHelper = require('../helpers/creditCardSessionAccountHelper');\n\n/*\n Update Session account\n**/\nfunction clearSessionAccount(sessionOption) {\n sessionOption.selected = false;\n sessionOption.classList.add('used-creditcard-account-hide');\n sessionOption.classList.remove('used-creditcard-account');\n sessionOption.text = '';\n sessionOption.setAttribute('data-session-account', false);\n sessionOption.setAttribute('data-owner', false);\n sessionOption.setAttribute('data-expiration', false);\n sessionOption.setAttribute('data-number', false);\n sessionOption.setAttribute('data-nonce', false);\n sessionOption.setAttribute('data-type', false);\n sessionOption.setAttribute('data-save-card', false);\n}\n\n/**\n * Remove Credit Card session account\n */\nfunction removeSessionNonce() {\n var defaultCreditCard = helper.getOptionByDataDefault('#braintreeCreditCardList');\n var creditCardFieldstoDisplay = creditCardFormFieldHelper.getCCFieldsToDisplay();\n var creditCardFieldsAsArray = creditCardFormFieldHelper.getCCFields().asArray;\n var sessionOption = helper.getSessionAccountOption({\n querySelector: '#braintreeCreditCardList',\n id: 'braintreeSessionCreditAccount'\n });\n\n if (!sessionOption) {\n return;\n }\n\n var sessionLastFour = sessionOption.getAttribute('data-last-four');\n var sessionType = sessionOption.getAttribute('data-type').toLowerCase();\n\n clearSessionAccount(sessionOption);\n\n // Handles case when stored and session credit card have the same type and last four digest\n // Makes visable already stored Credit Card in Credit Card List\n creditCardPaymentProcessingHelper.showAlreadyStoredCard(\n sessionLastFour,\n sessionType\n );\n\n creditCardSessionAccountHelper.clearCreditCardFields();\n creditCardSessionAccountHelper.clearCreditCardNonceField();\n\n if (defaultCreditCard) {\n defaultCreditCard.selected = true;\n\n creditCardFormFieldHelper.setCreditCardFieldsToDisplay(defaultCreditCard, creditCardFieldstoDisplay.asObject);\n\n // Uncheck Save Credit Card checkbox\n creditCardHelper.saveCreditCard(false);\n creditCardHelper.hideSaveCreditCardBlock(true);\n } else {\n creditCardFormFieldHelper.hideCardElements(creditCardFieldstoDisplay.asArray);\n creditCardFormFieldHelper.showCardElements(creditCardFieldsAsArray);\n\n // Hides 'Select a Credit Card block' on the Billing Page\n var ccAccount = document.querySelector('.form-group.braintree_used_creditcard_account');\n ccAccount.classList.remove('used-creditcard-account');\n ccAccount.classList.add('used-creditcard-account-hide');\n }\n}\n\nmodule.exports = {\n removeSessionNonce\n};\n","'use strict';\n\nvar CreditCardVaultManagerModel = require('./creditCardVaultManagerModel');\n\n/**\n * Function which hide all stored CC which are not presented in VaultMgr\n * @param {Promise} clientInstancePromise BT client instance promise\n */\nfunction removeFromDomCardsWhichAreNotInVaultMgr(clientInstancePromise) {\n var CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(clientInstancePromise);\n var storefrontCardArray = [];\n\n $('.js_stored_card').each(function (i, el) {\n var $card = $(el);\n\n storefrontCardArray.push({\n cardType: $card.data('type'),\n lastFour: $card.data('last-four'),\n $card: $card\n });\n });\n\n if (storefrontCardArray.length) {\n CreditCardVaultManagerModelInstance.getCardsWhichAreNotInVault(storefrontCardArray)\n .then(function (cardsWhichAreNotInVault) {\n cardsWhichAreNotInVault.forEach(function (card) {\n card.$card.remove();\n });\n });\n }\n}\n\n/**\n * Return true in case if passed card can be stored on the Storefront and in the Vault\n * @param {Promise} clientInstancePromise BT client instance promise\n * @param {string} lastFour last four digits of the new card\n * @param {string} cardType type of new card\n * @returns {Promise} Promise with true or false\n */\nfunction isNewCardCanBeStored(clientInstancePromise, lastFour, cardType) {\n var CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(clientInstancePromise);\n var storefrontCardArray = [];\n\n $('.js_stored_card').each(function (i, el) {\n var $card = $(el);\n\n storefrontCardArray.push({\n cardType: $card.data('type').toLowerCase(),\n lastFour: $card.data('last-four'),\n $card: $card\n });\n });\n\n // Return \"false\" in case if new card exists on the Storefront and in the VaultMgr\n return CreditCardVaultManagerModelInstance.isCreditCardExistOnStorefrontAndVault(storefrontCardArray, lastFour, cardType)\n .then(function (isCardExists) {\n return !isCardExists;\n });\n}\n\nmodule.exports = {\n removeFromDomCardsWhichAreNotInVaultMgr,\n isNewCardCanBeStored\n};\n","'use strict';\n\nvar braintreeGeneral = require('../../braintreeGeneral');\n\n/**\n * Constructor of VaultMgr model\n * @param {Promise} personalizedClientTokenPromise BT clietn instance promise\n */\nfunction CreditCardVaultManagerModel(personalizedClientTokenPromise) {\n this.customerPaymentMethodsFromVaultPromise = braintreeGeneral.getBtCustomerPaymentMethods(personalizedClientTokenPromise);\n}\n\n/**\n * Ger specific payment methods from VaultMgr (both CC and VisaCheckout cards)\n * @param {Promise} customerPaymentMethodsFromVaultPromise Promise with payment methods of buyer taken from VaultMgr\n * @returns {Promise} Promise with array of Cards\n */\nfunction getCardsFromVaultMgrPromise(customerPaymentMethodsFromVaultPromise) {\n return customerPaymentMethodsFromVaultPromise\n .then(function (vaultMgrPaymentMethods) {\n var cardPmArray = [];\n\n vaultMgrPaymentMethods.forEach(function (paymentMethod) {\n var isCardType = paymentMethod.type === 'CreditCard' || paymentMethod.type === 'VisaCheckoutCard';\n\n if (isCardType) {\n cardPmArray.push(paymentMethod);\n }\n });\n\n return cardPmArray;\n });\n}\n\n/**\n * Find CC by data within VaultMgr\n * @param {Promise} customerPaymentMethodsFromVaultPromise Array with Payment Methods from VaultMgr\n * @param {string} lastFour Last four credit card digits\n * @param {string} cardType Credit Card type (Visa, Mastercard)\n * @returns {Promise} Promise with found Credit Card\n */\nfunction getCardFromVaultMgrByData(customerPaymentMethodsFromVaultPromise, lastFour, cardType) {\n if (cardType === 'international maestro') {\n cardType = 'maestro';\n }\n\n return customerPaymentMethodsFromVaultPromise\n .then(function (vaultMgrPaymentMethods) {\n return vaultMgrPaymentMethods.find(function (paymentMethod) {\n var isCardType = paymentMethod.type === 'CreditCard' || paymentMethod.type === 'VisaCheckoutCard';\n var pmDetails = paymentMethod.details;\n\n return isCardType && pmDetails.cardType.toLowerCase() === cardType && pmDetails.lastFour === lastFour;\n });\n });\n}\n\n/**\n * Function which look for CC by passed data inside Storefront CC list\n * @param {Array} storefrontCardList Array with CC from Storefront\n * @param {string} lastFour Last four credit card digits\n * @param {string} cardType Credit Card type (Visa, Mastercard)\n * @returns {Promise} Promise with found credit card\n */\nfunction getCardFromStorefrontByData(storefrontCardList, lastFour, cardType) {\n return storefrontCardList.find(function (storedStorefrontCard) {\n return storedStorefrontCard.lastFour.toString() === lastFour.toString() &&\n storedStorefrontCard.cardType.toLocaleLowerCase() === cardType.toLocaleLowerCase();\n });\n}\n\n/**\n * Check is CC exists on the Storefront but not in the Vault\n * @param {Array} storefrontCardList Array with CC from storefront\n * @returns {Promise} Promise with true/false. True in case if CC exists on the Storefront but not in the Vault\n */\nCreditCardVaultManagerModel.prototype.getCardsWhichAreNotInVault = function (storefrontCardList) {\n return getCardsFromVaultMgrPromise(this.customerPaymentMethodsFromVaultPromise)\n .then(function (cardPaymentMethods) {\n var arrayOfNotInVaultCards = [];\n\n storefrontCardList.forEach(function (storefrontCard) {\n var sfCardType = storefrontCard.cardType.toLocaleLowerCase();\n if (sfCardType === 'international maestro') {\n sfCardType = 'maestro';\n }\n\n var sfLastFour = storefrontCard.lastFour.toString();\n var foundCard = cardPaymentMethods.find(function (vaultMgrCard) {\n var pmDetails = vaultMgrCard.details;\n\n return (pmDetails.cardType.toLocaleLowerCase() === sfCardType\n || sfCardType.includes(pmDetails.cardType.toLocaleLowerCase()))\n && pmDetails.lastFour === sfLastFour;\n });\n\n if (!foundCard) {\n arrayOfNotInVaultCards.push(storefrontCard);\n }\n });\n\n return arrayOfNotInVaultCards;\n });\n};\n\n/**\n * Check is CC exists on the Storefront and in the Vault\n * @param {Array} storefrontCardList Array with CC from Storefront\n * @param {string} lastFour Last four credit card digits which buyer wants to add\n * @param {string} cardType Credit Card type (Visa, Mastercard) which buyer wants to add\n * @returns {Promise} Promise with true/fase. True in case if CC is exists in the Vault and on the Storefront\n */\nCreditCardVaultManagerModel.prototype.isCreditCardExistOnStorefrontAndVault = function (storefrontCardList, lastFour, cardType) {\n var storefrontCard = getCardFromStorefrontByData(storefrontCardList, lastFour, cardType);\n var vaultMgrCardPromise = getCardFromVaultMgrByData(\n this.customerPaymentMethodsFromVaultPromise,\n lastFour,\n cardType\n );\n\n return vaultMgrCardPromise\n .then(function (cardFromVaultMgr) {\n return cardFromVaultMgr && storefrontCard;\n });\n};\n\n/**\n * Return CC from VaultManager by passed data\n * @param {string} lastFour Last four credit card digits\n * @param {string} cardType Credit Card type (Visa, Mastercard)\n * @returns {Promise} Promise with nonce or empty string\n */\nCreditCardVaultManagerModel.prototype.getNonceByCardData = function (lastFour, cardType) {\n return getCardFromVaultMgrByData(\n this.customerPaymentMethodsFromVaultPromise,\n lastFour,\n cardType\n );\n};\n\nmodule.exports = CreditCardVaultManagerModel;\n","'use strict';\n\nmodule.exports = {\n FLOW_NEW_CARD_NAME: 'newcard',\n FLOW__SESSION_CARD_NAME: 'sessioncard',\n FLOW_JS_STORED_CARD_NAME: 'js_stored_card'\n};\n","/* eslint-disable no-console */\n/* eslint-disable block-scoped-var */\n'use strict';\n\n// Braintree SDK model builder, we need to init Braintree Credit Card model on this level, since we are using it on step of \"creditCardFields.init()\"\n// and on step of \"creditCardPayment.init()\".\nvar braintreeCreditCardModelBuilder = require('./braintreesdk/braintreeCreditCardModelBuilder');\n\n// Components\nvar creditCardList = require('./components/creditCardList');\nvar creditCardFields = require('./components/creditCardFields');\nvar creditCardPaymentProcessing = require('./components/creditCardPaymentProcessing');\nvar creditCardAccount = require('./components/creditCardAccount');\n\n// Modelds\nvar ErrorHandlingBaseModel = require('../creditcard/errorhandler/errorHandlingBaseModel');\nvar ErrorHandlingCheckoutModel = require('../creditcard/errorhandler/errorHandlingCheckoutModel');\n\nvar $continueButton = document.querySelector('button.submit-payment');\n\nvar btCreditCardModelResponse;\nvar creditCardMessages;\n\n/**\n * Inits Credit Card functionality on the Account Page\n * @returns {void}\n */\nfunction initAccount() {\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(creditCardMessages);\n var isSubscriptionPage = $('.subcription-detail').length > 0;\n if (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\n errorHandlingBaseModel.creditCardErrorHandler(btCreditCardModelResponse.message);\n }\n\n creditCardAccount.init(\n btCreditCardModelResponse.btCreditCardModel,\n errorHandlingBaseModel,\n creditCardMessages\n );\n\n creditCardFields.init(\n btCreditCardModelResponse.btCreditCardModel,\n $continueButton,\n errorHandlingBaseModel\n );\n\n if (isSubscriptionPage) {\n creditCardList.init(\n btCreditCardModelResponse.btCreditCardModel,\n errorHandlingBaseModel\n );\n }\n}\n\n/**\n * Inits Credit Card functionality on the Checkout Page\n * @returns {void}\n */\nfunction initCheckout() {\n var errorHandlingCheckoutModel = new ErrorHandlingCheckoutModel(creditCardMessages);\n\n if (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\n errorHandlingCheckoutModel.creditCardErrorHandler(btCreditCardModelResponse.message);\n }\n\n // Call server to update data from basket\n btCreditCardModelResponse.btCreditCardModel.updateOrderData();\n\n creditCardFields.init(\n btCreditCardModelResponse.btCreditCardModel,\n $continueButton,\n errorHandlingCheckoutModel\n );\n\n creditCardList.init(\n btCreditCardModelResponse.btCreditCardModel,\n errorHandlingCheckoutModel\n );\n\n creditCardPaymentProcessing.init(errorHandlingCheckoutModel);\n}\n\n/**\n * Inits 'braintreeCreditCardModelBuilder' on creditCard level\n */\nfunction init() {\n btCreditCardModelResponse = braintreeCreditCardModelBuilder.init();\n\n if (!btCreditCardModelResponse.error) {\n creditCardMessages = btCreditCardModelResponse.btCreditCardConfigs.messages;\n }\n}\n\nmodule.exports = {\n initAccount,\n initCheckout,\n init\n};\n","'use strict';\n// File for form fields validation (applying red, green, yellow frame)\n// This file is used ONLY for validation of Owner field (since Owner field isn't a Hosted Field provided by Braintree client SDK)\n\nvar creditCardFormFieldsHelper = require('../helpers/creditCardFormFieldsHelper');\n\nvar BRAINTREE_ERROR_SELECTOR = 'braintree-hosted-fields-invalid';\nvar BRAINTREE_VALID_SELECTOR = 'braintree-hosted-fields-valid';\nvar BRAINTREE_FOCUSED_SELECTOR = 'braintree-hosted-fields-focused';\n\n/**\n * Returns array of filed containers\n * @param {Array} arrayOfFormFields Array of invalid fields\n * @returns {Array} Array of filed containers\n */\nfunction getArrayOfFieldContainers(arrayOfFormFields) {\n var collectionOfCreditCardFields = creditCardFormFieldsHelper.getCCFields().asObject;\n var arrayOfFieldContainers = [];\n var fieldContainer;\n\n arrayOfFormFields.forEach(function (fieldName) {\n fieldContainer = collectionOfCreditCardFields[fieldName];\n\n if (fieldContainer) {\n arrayOfFieldContainers.push(fieldContainer);\n }\n });\n\n return arrayOfFieldContainers;\n}\n\n/**\n * Sets 'BRAINTREE_ERROR_SELECTOR' selector to the invalid form fields\n * @param {Array} arrayOfInvalidFieldsFrom Array of invalisd fields\n */\nfunction makeFormFieldsInvalid(arrayOfInvalidFieldsFrom) {\n var arrayOfInvalidFormFields = getArrayOfFieldContainers(arrayOfInvalidFieldsFrom);\n\n arrayOfInvalidFormFields.forEach(function ($field) {\n // remove \"field valid\" class\n $field.classList.remove(BRAINTREE_VALID_SELECTOR);\n // add \"field not valid\" class\n $field.classList.add(BRAINTREE_ERROR_SELECTOR);\n });\n}\n\n/**\n * Makes all fields invalid\n */\nfunction makeAllFormFieldsInvalid() {\n var collectionOfCreditCardFields = creditCardFormFieldsHelper.getCCFields().asObject;\n var arrayOfCreditCardFieldNames = Object.keys(collectionOfCreditCardFields);\n\n makeFormFieldsInvalid(arrayOfCreditCardFieldNames);\n}\n\n/**\n * Makes all form fields valid\n */\nfunction makeAllFormFieldsValid() {\n var arrayOfCreditCardFields = creditCardFormFieldsHelper.getCCFields().asArray;\n\n arrayOfCreditCardFields.forEach(function ($field) {\n // remove \"field in focuse\" class\n $field.classList.remove(BRAINTREE_FOCUSED_SELECTOR);\n // remove \"field not valid\" class\n $field.classList.remove(BRAINTREE_ERROR_SELECTOR);\n // add \"field valid\" class\n $field.classList.add(BRAINTREE_VALID_SELECTOR);\n });\n}\n\nmodule.exports = {\n makeFormFieldsInvalid,\n makeAllFormFieldsInvalid,\n makeAllFormFieldsValid\n};\n","'use strict';\n\nvar creditCardFormFieldValidation = require('./creditCardFormFieldsValidator');\n\nvar ALL_HOSTED_FIELDS_FIELDS_EMPTY = 'HOSTED_FIELDS_FIELDS_EMPTY';\nvar HOSTED_FIELDS_FIELDS_INVALID = 'HOSTED_FIELDS_FIELDS_INVALID';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree Credit Card error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.errorMessages = errorMessages;\n}\n\n// General method which should be used for cases when error came from Braintree\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Account we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n var $errorContainer = $('.error-messaging');\n\n $errorContainer.hide();\n $errorContainer.empty();\n};\n\n/**\n * ---- Error container which will be used on Account ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message Message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n var $errorContainer = $('.error-messaging');\n\n var errorHtml = '
' +\n '' + message + '
';\n\n $errorContainer.append(errorHtml);\n $errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * Converts Braintree fields\n * @param {Array} arrayOfBtFormFields Credit Cards hosted fileds in array\n * @returns {Array} Converted array\n */\nErrorHandlingBaseModel.prototype.convertBtFromFieldsToDw = function (arrayOfBtFormFields) {\n var creditCardFieldsMap = {\n cardholderName: 'braintreeCardOwner',\n number: 'braintreeCardNumber',\n cvv: 'braintreeCvv',\n expirationDate: 'braintreeExpirationDate'\n };\n var braintreeFieldName;\n var convertedFeeldArray = [];\n\n arrayOfBtFormFields.forEach(function (fieldName) {\n braintreeFieldName = creditCardFieldsMap[fieldName];\n convertedFeeldArray.push(braintreeFieldName);\n });\n\n return convertedFeeldArray;\n};\n\n/**\n * Handles all fields are empty behavior\n */\nErrorHandlingBaseModel.prototype.allFieldsAreEmptyErrorBehavior = function () {\n creditCardFormFieldValidation.makeAllFormFieldsInvalid();\n};\n\n/**\n * Handles some fileds are empty behavior\n * @param {Array} btInvalidHostedFields Invalid fileds\n */\nErrorHandlingBaseModel.prototype.someFieldsAreInvalidErrorBehavior = function (btInvalidHostedFields) {\n var convertedFormFields = this.convertBtFromFieldsToDw(btInvalidHostedFields);\n\n creditCardFormFieldValidation.makeFormFieldsInvalid(convertedFormFields);\n};\n\n/**\n * Process and validates case when buyer left hosted feieds empty\n * @param {Object} errorPayload Payload with error information\n * @param {string} braintreeErrorCode Error code\n */\nErrorHandlingBaseModel.prototype.processBraintreeHostedFiledsErrors = function (errorPayload, braintreeErrorCode) {\n switch (braintreeErrorCode) {\n case ALL_HOSTED_FIELDS_FIELDS_EMPTY:\n this.allFieldsAreEmptyErrorBehavior();\n break;\n\n case HOSTED_FIELDS_FIELDS_INVALID:\n var invalidFields = errorPayload.details.invalidFieldKeys;\n\n this.someFieldsAreInvalidErrorBehavior(invalidFields);\n break;\n default:\n break;\n }\n};\n\n/**\n * Handle \"Credit Card\" error cases.\n * Cases can be slpited on Custom (errors trigered via \"Promise.reject\" from our side)\n * and on Braintree (errors from Braintree Client SDK)\n * @param {Object} error Error payload from \".catch()\" block\n */\nErrorHandlingBaseModel.prototype.creditCardErrorHandler = function (error) {\n console.error(error);\n\n switch (error.name) {\n case 'BraintreeError':\n // Puts error on the top of the Credit Page\n this.showErrorByObject(error);\n this.processBraintreeHostedFiledsErrors(error, error.code);\n break;\n default:\n var errorMsg;\n\n // Handles the cases when 3ds secure failed\n if (error.customError) {\n errorMsg = this.errorMessages.secure3DFailed;\n // Not braintree errors\n } else {\n console.error(error);\n\n const $sbtBtn = $('.save-card-method');\n errorMsg = $sbtBtn.data('error');\n }\n\n this.showErrorByMessage(errorMsg);\n break;\n }\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n\n","\n'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree Credit Card error messages\n */\nfunction ErrorHandlingCheckoutModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$topErrorMessageText = document.querySelector('.error-message-text');\n this.$topErrorMessageWrapper = document.querySelector('.error-message');\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCheckoutModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.createErrorNotification = function (message) {\n this.$topErrorMessageText.textContent = '';\n this.$topErrorMessageText.append(message);\n this.$topErrorMessageWrapper.style.display = 'flex';\n\n window.scrollTo(0, 0);\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.hideError = function () {\n this.$topErrorMessageWrapper.style.display = 'none';\n this.$topErrorMessageText.innerHTML = '';\n};\n\nmodule.exports = ErrorHandlingCheckoutModel;\n","'use strict';\n\n/**\n * Validates the billing address form and updates the checkout view\n */\nfunction billingAddressValidation() {\n var $billingForm = document.querySelector('.card-body [id=dwfrm_billing]');\n\n if (!$billingForm.checkValidity()) {\n $billingForm.reportValidity();\n\n //Scroll to empty form for billing for customer to fill in\n document.querySelector('.btn-add-new').click();\n document.querySelector('.payment-manual-address').click();\n document.querySelector('.payment-form').scrollIntoView({ behavior: 'smooth', block: 'start' });\n\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n billingAddressValidation\n};\n","'use strict';\n\nvar helper = require('../../helper');\n\n/**\n * Creates tokenization options for 'tokenize' function.\n * @returns {Object} Object with tokenization options.\n */\nfunction createTokenizationOptions() {\n var billingData = helper.getBillingAddressFormValues();\n\n return {\n billingAddress: {\n firstName: billingData.firstName,\n lastName: billingData.lastName,\n streetAddress: billingData.address1.split('%20').join(' '),\n extendedAddress: billingData.address2 ? billingData.address2.split('%20').join(' ') : billingData.address2,\n locality: billingData.city.includes('%20') ? billingData.city.split('%20').join(' ') : billingData.city,\n region: billingData.stateCode,\n postalCode: decodeURIComponent(billingData.postalCode),\n countryCodeAlpha2: billingData.country.includes('$20') ? billingData.country.split('%20').join(' ') : billingData.country\n }\n };\n}\n\n\nmodule.exports = {\n createTokenizationOptions\n};\n","'use strict';\n\n/**\n * Sets value of credit card hidden fields needed for server side\n * @param {Object} tokenizePayload Tokenize payload\n */\nfunction setCardHiddenFields(tokenizePayload) {\n var tokenizePayloadDetails = tokenizePayload.details;\n\n document.querySelector('#braintreeCreditCardNonce').value = tokenizePayload.nonce;\n document.querySelector('#braintreeCardType').value = tokenizePayloadDetails.cardType;\n document.querySelector('#braintreeCardMaskNumber').value = tokenizePayloadDetails.lastFour;\n document.querySelector('#braintreeCardHolder').value = tokenizePayloadDetails.cardholderName;\n}\n\nmodule.exports = {\n setCardHiddenFields\n};\n","'use strict';\n// This file is about form fields manipulations.\n\n/**\n * Returns an object contains an object and an array of credit card fields to Display\n * @returns {Object} Object\n */\nfunction getCCFieldsToDisplay() {\n var $cardOwnerToDisplay = document.querySelector('#braintreeCardOwnerToDisplay');\n var $cardNumberToDisplay = document.querySelector('#braintreeCardNumberToDisplay');\n var $cardCvvToDisplay = document.querySelector('#braintreeCvvToDisplay');\n var $cardExpirationToDisplay = document.querySelector('#braintreeExpirationToDisplay');\n\n var ccToDisplayFieldsAsObject = {\n cardOwnerToDisplay: $cardOwnerToDisplay,\n cardNumberToDisplay: $cardNumberToDisplay,\n cardCvvToDisplay: $cardCvvToDisplay,\n cardExpirationToDisplay: $cardExpirationToDisplay\n };\n var ccToDisplayFieldsAsArray = Object.values(ccToDisplayFieldsAsObject);\n\n return {\n asObject: ccToDisplayFieldsAsObject,\n asArray: ccToDisplayFieldsAsArray\n };\n}\n\n/**\n * Returns an object contains an object and an array of credit card fields\n * @returns {Object} Object\n */\nfunction getCCFields() {\n var $braintreeCardOwner = document.querySelector('#braintreeCardOwner');\n var $braintreeExpirationDate = document.querySelector('#braintreeExpirationDate');\n var $braintreeCardNumber = document.querySelector('#braintreeCardNumber');\n var $braintreeCvv = document.querySelector('#braintreeCvv');\n\n var ccFieldsAsObject = {\n braintreeCardOwner: $braintreeCardOwner,\n braintreeExpirationDate: $braintreeExpirationDate,\n braintreeCardNumber: $braintreeCardNumber,\n braintreeCvv: $braintreeCvv\n };\n var ccFieldsAsArray = Object.values(ccFieldsAsObject);\n\n return {\n asObject: ccFieldsAsObject,\n asArray: ccFieldsAsArray\n };\n}\n\n/**\n * Returns braintreeCreditCardNonce container\n * @returns {Object} Input element\n */\nfunction getCreditCardNonceFieldContainer() {\n return document.querySelector('#braintreeCreditCardNonce');\n}\n\n/**\n * Returns braintreeCreditCardList container\n * @returns {Object} Select element\n */\nfunction getCreditCardListContainer() {\n return document.querySelector('#braintreeCreditCardList');\n}\n\n/**\n * Sets Credit Card field to display\n * @param {Object} selectedCard The values of fields to be set\n * @param {Object} cacheCardFields Object of elements contain credit cards fields to display\n */\nfunction setCreditCardFieldsToDisplay(selectedCard, cacheCardFields) {\n var cartNumber = selectedCard.dataset.number;\n\n cacheCardFields.cardNumberToDisplay.innerHTML = cartNumber;\n cacheCardFields.cardCvvToDisplay.innerHTML = '***';\n cacheCardFields.cardExpirationToDisplay.innerHTML = selectedCard.dataset.expiration;\n cacheCardFields.cardOwnerToDisplay.innerHTML = selectedCard.dataset.owner;\n\n document.querySelector('#braintreeCardType').value = selectedCard.dataset.type;\n document.querySelector('#braintreeCardMaskNumber').value = cartNumber;\n}\n\n/**\n * Sets Credit Card fileds on the Billing Page\n * @param {Object} selectedCard The values of fields to be set\n * @param {Object} cacheCardFields Object of elements contain credit cards fields\n */\nfunction setCardFields(selectedCard, cacheCardFields) {\n cacheCardFields.cardNumberToDisplay.innerHTML = selectedCard['data-number'].value;\n cacheCardFields.cardCvvToDisplay.innerHTML = '***';\n cacheCardFields.cardExpirationToDisplay.innerHTML = selectedCard['data-expiration'].value;\n cacheCardFields.cardOwnerToDisplay.innerHTML = selectedCard['data-owner'].value;\n\n document.querySelector('#braintreeCardType').value = selectedCard['data-type'].value;\n document.querySelector('#braintreeCardMaskNumber').value = selectedCard['data-number'].value;\n}\n\n/**\n * Shows Credit Card fileds on the Billing Page\n * @param {Array} cardFields Array of credit card fileds\n */\nfunction showCardElements(cardFields) {\n cardFields.forEach(function (el) {\n el.style.display = '';\n });\n}\n\n/**\n * Hides Credit Card fileds on the Billing Page\n * @param {Array} cardFields Array of Credit Card fileds\n */\nfunction hideCardElements(cardFields) {\n cardFields.forEach(function (el) {\n el.style.display = 'none';\n });\n}\n\n/**\n * Returns Credit Card hosted fileds styles\n * @returns {Object} Object of styles\n */\nfunction getHostedFieldsStyles() {\n return {\n input: {\n 'font-weight': '400',\n 'font-size': '14px',\n 'line-height': '20px',\n color: '#BAB9B4'\n },\n ':focus': {\n color: 'blue'\n },\n '.valid': {\n color: 'green'\n },\n '.invalid': {\n color: 'red'\n }\n };\n}\n\n/**\n * Returns Credit Card hosted fields configs\n * @returns {Object} Object of configs\n */\nfunction getHostedFieldsConfig() {\n return {\n cardholderName: {\n selector: '#braintreeCardOwner',\n placeholder: 'Name'\n },\n number: {\n selector: '#braintreeCardNumber',\n placeholder: 'Card number'\n },\n cvv: {\n selector: '#braintreeCvv',\n placeholder: 'CVV'\n },\n expirationDate: {\n selector: '#braintreeExpirationDate',\n placeholder: 'MM/YY'\n }\n };\n}\n\nmodule.exports = {\n getCCFieldsToDisplay,\n getCCFields,\n getCreditCardNonceFieldContainer,\n getCreditCardListContainer,\n showCardElements,\n hideCardElements,\n setCreditCardFieldsToDisplay,\n setCardFields,\n getHostedFieldsStyles,\n getHostedFieldsConfig\n};\n","'use strict';\n\n/**\n * Uncheck Save Credit Card checkbox\n * @param {boolean} save true/false\n */\nfunction saveCreditCard(save) {\n var isSave = save ? true : false; // eslint-disable-line\n\n document.querySelector('#braintreeSaveCreditCard').checked = isSave;\n}\n\n/**\n * Hides or Display 'braintreeSaveCardContainer' container\n * @param {boolean} hide true/false\n */\nfunction hideSaveCreditCardBlock(hide) {\n var isHide = hide ? true : false; // eslint-disable-line\n\n document.querySelector('#braintreeSaveCardContainer').style.display = isHide ? 'none' : 'block';\n}\n\n/**\n * Returns Braintree Credit Card configs\n * @returns {Object} Braintree Credit Card configs\n */\nfunction getCheckoutBraintreeCreditCardConfigs() {\n var braintreeCreditCardFieldsConfigs = null;\n\n try {\n braintreeCreditCardFieldsConfigs = JSON.parse(document.querySelector('.js_braintree_creditCardFields').getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeCreditCardFieldsConfigs;\n }\n\n return braintreeCreditCardFieldsConfigs;\n}\n\n/**\n * Converts Credit Card type to one style: first letter in upper case\n * to make session card type look like saved CC type\n * ex: MasterCard -> Mastercard\n * @param {string} type Card type\n * @returns {string} Converted card type\n */\nfunction convertCreditCardType(type) {\n var cardType = type.toLowerCase();\n\n return cardType.replace(/_/g, ' ').replace(cardType.charAt(0), (cardType.charAt(0)).toUpperCase());\n}\n\nmodule.exports = {\n getCheckoutBraintreeCreditCardConfigs,\n saveCreditCard,\n hideSaveCreditCardBlock,\n convertCreditCardType\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar creditCardHelper = require('./creditCardHelper');\nvar CreditCardVaultManagerModel = require('../components/creditCardVaultManagerModel');\n\n/**\n * Displays stores Credit Cards list on the Billing Page\n */\nfunction displayStoredCreditCardList() {\n var $creditCardAccount = document.querySelector('.form-group.braintree_used_creditcard_account');\n\n $creditCardAccount.classList.remove('used-creditcard-account-hide');\n $creditCardAccount.classList.add('used-creditcard-account');\n}\n\n/**\n * Fills the Credit Card form hidden inputs with payload data\n * @param {Object} braintreeResponse Object contains the data of new payment method\n */\nfunction fillCreditCardFormWithPayloadData(braintreeResponse) {\n var btResponse = braintreeResponse.btTokenizePayload;\n var $creditCardFieldsCardNumber = document.querySelector('input[name=dwfrm_billing_creditCardFields_cardNumber]');\n\n if (btResponse) {\n var btResponseDetails = btResponse.details;\n\n document.querySelector('#braintreeCardType').value = creditCardHelper.convertCreditCardType(btResponseDetails.cardType);\n document.querySelector('#braintreeCardMaskNumber').value = '************' + btResponseDetails.lastFour;\n document.querySelector('#braintreeCardExpirationMonth').value = btResponseDetails.expirationMonth;\n document.querySelector('#braintreeCardExpirationYear').value = btResponseDetails.expirationYear.substr(2);\n document.querySelector('#braintreeCardHolder').value = btResponseDetails.cardholderName;\n\n if ($creditCardFieldsCardNumber) {\n $creditCardFieldsCardNumber.value = '************' + btResponseDetails.lastFour;\n }\n\n document.querySelector('input[name=braintreePaymentMethodNonce]').value = btResponse.nonce;\n }\n}\n\n/**\n * Fills the session Credit Card form inputs with payload data\n * @param {Object} braintreeResponse Object contains the data of new payment method\n */\nfunction fillSessionCreditCardFormWithPayloadData(braintreeResponse) {\n var btResponse = braintreeResponse.btTokenizePayload;\n var usedCreditCardAccount = Boolean(document.querySelector('.form-group.braintree_used_creditcard_account'));\n\n if (usedCreditCardAccount && btResponse) {\n var btResponseDetails = btResponse.details;\n var $sessionCreditCard = document.querySelector('#braintreeSessionCreditAccount');\n\n // Fields filling for displaying session card fields to the buyer\n document.querySelector('#braintreeCardOwnerToDisplay').textContent = btResponseDetails.cardholderName;\n document.querySelector('#braintreeCardNumberToDisplay').textContent = '************' + btResponseDetails.lastFour;\n document.querySelector('#braintreeCvvToDisplay').textContent = '***';\n document.querySelector('#braintreeExpirationToDisplay').textContent = btResponseDetails.expirationMonth + '/' + btResponseDetails.expirationYear.substr(2);\n\n // Fields filling for displaying session card option value\n $sessionCreditCard.textContent = $sessionCreditCard.getAttribute('data-type') + ' ' +\n $sessionCreditCard.getAttribute('data-number') + ' ' +\n $sessionCreditCard.getAttribute('data-expiration') + ' ' +\n $sessionCreditCard.getAttribute('data-owner');\n }\n}\n\n/**\n * Filling of session card attributes for using them in business logic (client/server)\n * @param {Object} braintreeResponse Tokenize payload from braintree\n */\nfunction setSessionCreditCardDataAttributes(braintreeResponse) {\n var btResponse = braintreeResponse.btTokenizePayload;\n var btResponseDetails = btResponse.details;\n var $sessionCreditCard = document.querySelector('#braintreeSessionCreditAccount');\n var isSavedCard = document.querySelector('#braintreeSaveCreditCard') ? document.querySelector('#braintreeSaveCreditCard').checked : false;\n\n $sessionCreditCard.classList.remove('used-creditcard-account-hide');\n $sessionCreditCard.setAttribute('data-number', '************' + btResponseDetails.lastFour);\n $sessionCreditCard.setAttribute('data-expiration', btResponseDetails.expirationMonth + '/' + btResponseDetails.expirationYear.substr(2));\n $sessionCreditCard.setAttribute('data-type', creditCardHelper.convertCreditCardType(btResponseDetails.cardType));\n $sessionCreditCard.setAttribute('data-last-four', btResponseDetails.lastFour);\n $sessionCreditCard.setAttribute('data-owner', btResponseDetails.cardholderName);\n $sessionCreditCard.setAttribute('data-nonce', btResponse.nonce);\n $sessionCreditCard.setAttribute('data-session-account', true);\n $sessionCreditCard.setAttribute('data-save-card', isSavedCard);\n}\n\n/**\n * Marks a session Credit Card account as selected\n */\nfunction markAsSelectedSessionAccount() {\n var $newCCAccount = document.getElementById('newCardAccount');\n var $sessionCreditCard = document.querySelector('#braintreeSessionCreditAccount');\n\n $newCCAccount.removeAttribute('selected');\n $sessionCreditCard.selected = true;\n}\n\n/**\n * Returns a Credit Card flow ID from selector\n * @param {Object} $creditCardList Selector contained the Credit Card flow ID\n * @returns {string} Credit Card flow ID\n */\nfunction getCreditCardFlowID($creditCardList) {\n var selectedOptionValue = $creditCardList.value;\n var selectedOption = null;\n var creditCardFlowID = null;\n\n var newCardID = 'newcard';\n var sessionCardID = 'sessioncard';\n var storedCardID = 'js_stored_card';\n\n switch (selectedOptionValue) {\n case newCardID:\n creditCardFlowID = newCardID;\n break;\n\n case sessionCardID:\n creditCardFlowID = sessionCardID;\n break;\n\n default:\n selectedOption = helper.getSelectedOption($creditCardList);\n\n if (selectedOption.classList.contains(storedCardID)) {\n creditCardFlowID = storedCardID;\n }\n break;\n }\n\n return creditCardFlowID;\n}\n\n/**\n * Returns object with nonce related to stored card\n * @param {Promise} clientInstancePromise Client instance promise\n * @param {Object} $creditCardList Selector with needed data\n * @returns {Object} Response object\n */\nfunction getNonceFromStoredCard(clientInstancePromise, $creditCardList) {\n var CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(clientInstancePromise);\n var $selectedOption = helper.getSelectedOption($creditCardList);\n var cardType = $selectedOption.getAttribute('data-type').toLowerCase();\n var lastFour = $selectedOption.getAttribute('data-last-four').toString();\n\n return CreditCardVaultManagerModelInstance.getNonceByCardData(lastFour, cardType);\n}\n\n/**\n * Fills 3DS data\n * @param {Object} threeDSecureDataValidationPayload 3DS information about the card\n */\nfunction fill3DsData(threeDSecureDataValidationPayload) {\n var $braintreeIs3dSecureRequired = document.querySelector('#braintreeIs3dSecureRequired');\n\n if (threeDSecureDataValidationPayload && threeDSecureDataValidationPayload.liabilityShifted) {\n $braintreeIs3dSecureRequired.value = 'true';\n }\n}\n\n/**\n * Returns whether Credit Card tab is active on the Billing Page\n * @returns {boolean} true/false\n */\nfunction isActiveCreditCardTab() {\n return document\n .querySelector('.payment-options[role=tablist] a[data-toggle=\"tab\"][href=\"#creditcard-content\"]')\n .classList\n .contains('active');\n}\n\n/**\n * Get stored card by last four digits and card type\n * @param {string} lastFour Last four card digits\n * @param {string} cardType Card type\n * @returns {Object} Jquery object of found stored card\n */\nfunction getStoredCardByData(lastFour, cardType) {\n var $foundCard;\n\n $('.js_stored_card').each(function (_, $el) {\n var $card = $($el);\n var storedCardType = $card.data('type').toLowerCase();\n var storedCardLastFour = $card.data('last-four').toString();\n\n if (storedCardType === cardType && storedCardLastFour === lastFour) {\n $foundCard = $card;\n }\n });\n\n return $foundCard;\n}\n\n/**\n * Hide already stored card by last four digits and card type\n * @param {string} lastFour Last four card digits\n * @param {string} cardType Card type\n * @returns {boolean} true in case if stored card with provided params (lastFour, cardType) was found\n */\nfunction hideAlreadyStoredCard(lastFour, cardType) {\n var $storedCard = getStoredCardByData(lastFour, cardType);\n var flag = false;\n\n if ($storedCard) {\n $storedCard.hide();\n flag = true;\n }\n\n return flag;\n}\n\n/**\n * Shows already stored card by last four digits and card type\n * @param {string} lastFour Last four card digits\n * @param {string} cardType Card type\n * @returns {boolean} true in case if stored card with provided params (lastFour, cardType) was found\n */\nfunction showAlreadyStoredCard(lastFour, cardType) {\n var $storedCard = getStoredCardByData(lastFour, cardType);\n var flag = false;\n\n if ($storedCard) {\n $storedCard.show();\n flag = true;\n }\n\n return flag;\n}\n\nmodule.exports = {\n displayStoredCreditCardList,\n fillCreditCardFormWithPayloadData,\n fillSessionCreditCardFormWithPayloadData,\n setSessionCreditCardDataAttributes,\n markAsSelectedSessionAccount,\n getCreditCardFlowID,\n getNonceFromStoredCard,\n fill3DsData,\n isActiveCreditCardTab,\n hideAlreadyStoredCard,\n showAlreadyStoredCard\n};\n","'use strict';\n\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\n\n/**\n * Clears Credit Card fields of session account\n */\nfunction clearCreditCardFields() {\n var creditCardFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\n\n creditCardFieldsArray.forEach(function (el) {\n el.value = '';\n });\n}\n\n/**\n * Clears Credit Card nonce of session account\n */\nfunction clearCreditCardNonceField() {\n document.querySelector('#braintreeCreditCardNonce').value = '';\n}\n\nmodule.exports = {\n clearCreditCardFields,\n clearCreditCardNonceField\n};\n","'use strict';\n\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar braintreeGooglePaySDK = require('../braintreesdk/braintreeGooglePaySDK');\n\n/* global Promise braintree $ */\n\n// Global variables\n// Is Froud tools enabled\nvar isFtEnabled;\nvar btClientInstancePromise;\nvar googlePaymentInstance;\nvar paymentsClient;\n\nvar amount;\n\n/**\n * Init Baintree Credit Card model\n * @param {Promise} braintreeClientInstancePromise Braintreee client instance promise\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\n */\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\n braintreeGooglePaySDK.init(braintreeClientInstancePromise);\n\n btClientInstancePromise = braintreeClientInstancePromise;\n isFtEnabled = isFraudToolsEnabled;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n var response;\n\n if (isFtEnabled) {\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\n } else {\n response = Promise.resolve({\n customMessage: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\n });\n }\n\n return response;\n}\n\n/**\n * Preparing googlePay payment\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Promise} Promise with resolve 'true' if ready to pay\n */\nfunction initGooglePay(googleMerchantId) {\n return braintreeGooglePaySDK.createGooglePayment(googleMerchantId)\n .then(function (gpInstance) {\n var allowedPaymentMethods = gpInstance.createPaymentDataRequest().allowedPaymentMethods;\n googlePaymentInstance = gpInstance;\n\n return paymentsClient.isReadyToPay({\n // see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: allowedPaymentMethods\n });\n });\n}\n\n/**\n * Creates a configuration object for use in the loadPaymentData method.\n * @param {Object} options Object with payment options\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(options) {\n return braintreeGooglePaySDK.createPaymentDataRequest(googlePaymentInstance, options, amount);\n}\n\n/**\n * Parse the response from the tokenization.\n * @param {Object} paymentData The response back from the Google Pay tokenization.\n * @returns {Promise} Promise that resolve with a tokenizePayload\n */\nfunction parseResponse(paymentData) {\n return braintreeGooglePaySDK.parseResponse(paymentData, googlePaymentInstance);\n}\n\n/**\n * Update order amount\n */\nfunction googlePayUpdateAmount() {\n var config = JSON.parse(document.querySelector('.js_braintree_googlepay_button').getAttribute('data-braintree-config'));\n\n $.ajax({\n url: config.getOrderInfoUrl,\n async: false,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n amount = data.amount;\n },\n error: function () {\n window.location.reload();\n }\n });\n}\n\n/**\n * Inits 'Google Pay' payment client object into braintreeGooglePayModel\n * @param {string} instanceType The type of the instance TEST/PRODUCTION\n */\nfunction initPaymentsClient(instanceType) {\n paymentsClient = new google.payments.api.PaymentsClient({ // eslint-disable-line no-undef\n environment: instanceType // TEST/PRODUCTION\n });\n}\n\n/**\n * Gets 'Google Pay' payment client object\n * @returns {Object}'Google Pay' payment client object\n */\nfunction getPaymentsClient() {\n return paymentsClient;\n}\n\nmodule.exports = {\n init,\n collectFraudData,\n initGooglePay,\n createPaymentDataRequest,\n parseResponse,\n googlePayUpdateAmount,\n // initialize a Google Pay 'PaymentsClient' object\n initPaymentsClient,\n getPaymentsClient\n};\n","'use strict';\n\nvar braintreeGooglePayModel = require('./braintreeGooglePayModel');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar googlePayHelper = require('../helpers/googlePayHelper');\n\nvar googlePayErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Google Pay Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n var braintreeGooglePayConfigs = googlePayHelper.getBraintreeGooglePayConfigs();\n var clientToken;\n var btClientInstancePromise;\n var response = {\n error: false,\n message: '',\n btGooglePayModel: null,\n btGooglePayConfigs: null\n };\n\n if (braintreeGooglePayConfigs) {\n clientToken = braintreeGooglePayConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n\n braintreeGooglePayModel.init(\n btClientInstancePromise,\n braintreeGooglePayConfigs.isFraudToolsEnabled\n );\n\n response.btGooglePayModel = braintreeGooglePayModel;\n response.btGooglePayConfigs = braintreeGooglePayConfigs;\n } else {\n response.error = true;\n response.message = googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n }\n\n return response;\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nvar googlePaySDKHelper = require('../helpers/googlePaySDKHelper');\n\nvar btClientInstancePromise;\n\n/**\n * Creates googlePayment instance\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Promise} A promise resolve with with the GooglePaymnet instance\n */\nfunction createGooglePayment(googleMerchantId) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n var googlePayOptions = googlePaySDKHelper.createGooglePayOptions(\n btClientInstance,\n googleMerchantId\n );\n\n return braintree.googlePayment.create(googlePayOptions);\n });\n}\n\n/**\n * Creates a configuration object for use in the loadPaymentData method.\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\n * @param {Object} options Object with payment options\n * @param {number} amount Order total amount\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(googlePaymentInstance, options, amount) {\n var requestObject = {\n transactionInfo: {\n currencyCode: options.currency,\n totalPriceStatus: 'FINAL',\n totalPrice: String(amount)\n },\n merchantInfo: {\n merchantName: options.displayName\n },\n shippingAddressRequired: options.isShippingAddressRequired,\n shippingAddressParameters: {\n allowedCountryCodes: ['US'],\n phoneNumberRequired: true\n },\n emailRequired: true\n };\n\n if (options.merchantId) {\n requestObject.merchantInfo.merchantId = options.merchantId;\n }\n\n return googlePaymentInstance.createPaymentDataRequest(requestObject);\n}\n\n/**\n * Parse the response from the tokenization.\n * @param {Object} paymentData The response back from the Google Pay tokenization.\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\n * @returns {Promise} Promise that resolve with a tokenizePayload\n */\nfunction parseResponse(paymentData, googlePaymentInstance) {\n return googlePaymentInstance.parseResponse(paymentData);\n}\n\n/**\n * Inits braintreeGooglePaySDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n createGooglePayment,\n createPaymentDataRequest,\n parseResponse,\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar loaderInstance = require('../../loaderHelper');\nvar paymentMethodGeneral = require('../../paymentMethodGeneral');\n\n// Global variables\nvar googlePayConfigs;\nvar googlePayBillingAddressData;\nvar googlePayShippingAddressData;\nvar googlePayNonce;\nvar googlepayPaymentType;\nvar googlePayCardDescription;\nvar googlepayCheckoutFormData;\nvar errHandlerModel;\n\nvar $braintreeGooglePayLoader = document.querySelector('.braintreeGooglepayLoader');\n\nvar loader;\n\n/**\n * Expends Google Pay checkout form with required data\n */\nfunction expandGooglePayCheckoutFormData() {\n var deviceData = document.querySelector('input[name=braintreeGooglePayDeviceDataInput]').value;\n var csrfToken = document.querySelector('.braintree-cart-buttons-wrap #csrf_token');\n\n googlepayCheckoutFormData.append(csrfToken.name, csrfToken.value);\n googlepayCheckoutFormData.append('braintreeGooglePayNonce', googlePayNonce);\n googlepayCheckoutFormData.append('braintreeGooglePayDeviceData', deviceData);\n googlepayCheckoutFormData.append('braintreeGooglePayCardDescription', googlePayCardDescription);\n googlepayCheckoutFormData.append('braintreeGooglepayPaymentType', googlepayPaymentType);\n googlepayCheckoutFormData.append('braintreeGooglePayShippingAddress', JSON.stringify(googlePayShippingAddressData) || '{}');\n}\n\n/**\n * Process Google Pay on the Cart Page\n */\nfunction processCartFlow() {\n var $braintreeCartButtons = document.querySelector('.braintree-cart-buttons-wrap');\n var placeOrderUrl = $braintreeCartButtons.getAttribute('data-checkout-placeorder-url');\n var checkoutFromCartUrl = $braintreeCartButtons.getAttribute('data-checkout-from-cart-url');\n var checkoutFormFields = $braintreeCartButtons.getAttribute('data-checkout-form-fields');\n var paymentFieldsData = helper.getPaymentFieldsData(googlePayBillingAddressData, googlePayConfigs.paymentMethodName);\n\n // Creates and updates Google Pay checkout form for service side\n googlepayCheckoutFormData = helper.createPaymentFormData(checkoutFormFields, paymentFieldsData);\n expandGooglePayCheckoutFormData();\n // submit customer form with email (CheckoutServices-SubmitCustomer)\n // as we skip step \"login via guest/registered user\" while express checkout\n // email is set only in case of guest checkout and if email is not already set\n paymentMethodGeneral.submitCustomerForm(googlePayBillingAddressData.email);\n\n $.ajax({\n type: 'POST',\n url: checkoutFromCartUrl,\n data: googlepayCheckoutFormData,\n contentType: false,\n processData: false,\n success: function (res) {\n if (res.error) {\n var errorMessage = '';\n\n if (res.fieldErrors.length) {\n res.fieldErrors.forEach(function (error, index) {\n var keys = Object.keys(error);\n\n if (keys.length) {\n errorMessage += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${res.fieldErrors[index][keys[index]]}. `;\n }\n });\n\n errHandlerModel.showErrorByMessage(errorMessage);\n }\n\n if (res.serverErrors.length) {\n res.serverErrors.forEach(function (error) {\n errorMessage += `${error}. `;\n });\n errHandlerModel.showErrorByMessage(errorMessage);\n }\n\n if (res.cartError) {\n window.location.href = res.redirectUrl;\n }\n\n return;\n }\n\n sessionStorage.setItem('pageState', 'cart');\n loader.hide();\n window.location.href = placeOrderUrl;\n },\n error: function (err) {\n if (err && err.redirectUrl) {\n window.location.href = err.redirectUrl;\n }\n }\n });\n}\n\n/**\n * Inits Google Pay cart components\n * @param {Object} billingAddressData Billing address data object\n * @param {Object} shippingAddressData Shipping address data object\n * @param {string} nonce Payment method nonce\n * @param {string} paymentType Payment method type\n * @param {string} description Google Pay card description\n * @param {Constructor} errorHandlerModel Error handler Model\n */\nfunction init(billingAddressData, shippingAddressData, nonce, paymentType, description, errorHandlerModel) {\n var $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\n\n googlePayConfigs = JSON.parse($googlepayButton.getAttribute('data-braintree-config'));\n googlePayBillingAddressData = billingAddressData;\n googlePayShippingAddressData = shippingAddressData;\n googlePayNonce = nonce;\n googlepayPaymentType = paymentType;\n googlePayCardDescription = description;\n loader = loaderInstance($braintreeGooglePayLoader);\n errHandlerModel = errorHandlerModel;\n\n processCartFlow();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\n\n// Global variables\nvar googlePayBillingAddressData;\nvar googlePayNonce;\nvar googlepayPaymentType;\nvar googlePayCardDescription;\n\nvar $googlepayNonce = document.querySelector('#braintreeGooglePayNonce');\nvar $googlepayCardDescription = document.querySelector('#braintreeGooglePayCardDescription');\nvar $braintreeGooglepayPaymentType = document.querySelector('#braintreeGooglepayPaymentType');\nvar $googlePayBillingAddress = document.querySelector('#braintreeGooglePayBillingAddress');\n\n/**\n * Process Google Pay on the Checkout Page\n */\nfunction processCheckoutFlow() {\n $googlepayNonce.value = googlePayNonce;\n $googlepayCardDescription.value = googlePayCardDescription;\n $braintreeGooglepayPaymentType.value = googlepayPaymentType;\n\n // Updating Storefront Billing Form data with GooglePay Billing\n var storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(googlePayBillingAddressData);\n\n $googlePayBillingAddress.value = JSON.stringify(googlePayBillingAddressData);\n\n helper.updateBillingFormValues(storeFrontBillingData);\n}\n\n/**\n * Inits Google Pay checkout components\n * @param {string} nonce Payment method nonce\n * @param {string} description Google Pay card description\n * @param {string} paymentType Payment method type\n * @param {Object} billingAddressData Billing address data object\n */\nfunction init(nonce, description, paymentType, billingAddressData) {\n googlePayBillingAddressData = billingAddressData;\n googlePayNonce = nonce;\n googlepayPaymentType = paymentType;\n googlePayCardDescription = description;\n\n processCheckoutFlow();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar googlePayHelper = require('../helpers/googlePayHelper');\n\n/**\n * Inits Google Pay list components\n */\nfunction init() {\n var $googlepayCardDescription = document.querySelector('#braintreeGooglePayCardDescription');\n var $btGooglepayAccountsList = document.querySelector('#braintreeGooglepayAccountsList');\n var googlePayAccountListExist = Boolean($btGooglepayAccountsList);\n\n if (googlePayAccountListExist) {\n $btGooglepayAccountsList.addEventListener('change', function () {\n googlePayHelper.googlePayContentTabHandler(true);\n });\n }\n\n if ($googlepayCardDescription.value === 'GooglePay') {\n $googlepayCardDescription.value = $btGooglepayAccountsList.selectedOptions[0].label;\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n// Helpers\nvar googlePayHelper = require('../helpers/googlePayHelper');\nvar loaderInstance = require('../../loaderHelper');\nvar googlePayPaymentProcessingHelper = require('../helpers/googlePayPaymentProcessingHelper');\nvar helper = require('../../helper');\n\n// Components\nvar googlePayCart = require('../components/googlePayCart');\nvar googlePayCheckout = require('../components/googlePayCheckout');\nvar googlePaySessionAccount = require('../components/googlePaySessionAccount');\n\nvar googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\n\n// Global varibales\nvar googlePayModel;\nvar paymentsClient;\nvar googlePayConfig;\nvar errHandlerModel;\n\nvar $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\nvar $braintreeGooglePayLoader = document.querySelector('.braintreeGooglepayLoader');\nvar $continueButton = document.querySelector('button.submit-payment');\n\nvar loader;\n\n/**\n * Functionality over tokenized payment\n * @param {Objet} data data object\n * @param {Object} result data object\n */\nfunction onTokenizePayment(data, result) {\n // General functionality for Cart and Billing Page\n var googlepayNonce = result.nonce;\n var googlepayPaymentType = result.type;\n var gpCardDescription = result.details.cardType + ' ' + result.details.lastFour;\n var billingAddressData = googlePayPaymentProcessingHelper.createGooglepayBillingAddressData(data);\n var googlePayFlow = googlePayPaymentProcessingHelper.getGooglePayFlowId();\n\n helper.removeActiveSessionPayment();\n\n switch (googlePayFlow) {\n case googlePayPaymentProcessingConstants.FLOW__CART_NAME:\n var shippingAddressData = googlePayPaymentProcessingHelper.createGooglepayShippingAddressData(data.shippingAddress);\n\n googlePayCart.init(billingAddressData, shippingAddressData, googlepayNonce, googlepayPaymentType, gpCardDescription, errHandlerModel);\n break;\n case googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\n googlePayCheckout.init(googlepayNonce, gpCardDescription, googlepayPaymentType, billingAddressData);\n googlePaySessionAccount.showGooglepayAccount(gpCardDescription);\n $continueButton.click();\n break;\n default:\n break;\n }\n}\n\n/**\n * Call back function to be resolved when on Google Pay payment button is clicked\n * @returns {void}\n */\nfunction onGooglePaymentButtonClicked() { // eslint-disable-line no-inner-declarations\n var options = googlePayConfig.options;\n var amount = options.amount;\n\n if (googlePayConfig.googleMerchantId) {\n options.merchantId = googlePayConfig.googleMerchantId;\n }\n\n errHandlerModel.hideError();\n\n try {\n if (amount === 0) {\n errHandlerModel.showOrderTotalError();\n }\n\n loader.show();\n\n // Updates order amount for paymentDataRequest\n googlePayModel.googlePayUpdateAmount();\n\n // Create a configuration object for use in the loadPaymentData method.\n var paymentDataRequest = googlePayModel.createPaymentDataRequest(options);\n\n // Update card payment methods to require billing address\n var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods[0];\n cardPaymentMethod.parameters.billingAddressRequired = true;\n cardPaymentMethod.parameters.billingAddressParameters = {\n format: 'FULL',\n phoneNumberRequired: true\n };\n\n return paymentsClient.loadPaymentData(paymentDataRequest)\n .then(function (paymentData) {\n googlePayModel.parseResponse(paymentData)\n .then(function (tokenizePayload) {\n onTokenizePayment(paymentData, tokenizePayload);\n });\n loader.hide();\n })\n .catch(function (error) {\n loader.hide();\n errHandlerModel.googlePayErrorHandler(error);\n });\n } catch (error) {\n errHandlerModel.googlePayErrorHandler(error);\n }\n}\n\n/**\n * Init and add Google Pay on the Cart or Billing Page\n */\nfunction initGooglePay() {\n var result = googlePayModel.collectFraudData()\n .then(function (fraudDataPayload) {\n googlePayHelper.setGooglePayDeviceData(fraudDataPayload);\n loader.hide();\n\n return googlePayModel.initGooglePay(googlePayConfig.googleMerchantId)\n .then(function (response) {\n if (response.result) {\n // Creates 'Google Pay Button' and append to the DOM\n const button = paymentsClient.createButton({ onClick: onGooglePaymentButtonClicked });\n $googlepayButton.appendChild(button);\n }\n });\n });\n\n result\n .catch(function (error) {\n loader.hide();\n errHandlerModel.googlePayErrorHandler(error);\n });\n}\n\n/**\n * Inits Google Pay payment processing components\n * @param {Obbject} braintreeGooglePayModel Google Pay model\n * @param {Constructor} errorHandlerModel Error handler model\n */\nfunction init(braintreeGooglePayModel, errorHandlerModel) {\n loader = loaderInstance($braintreeGooglePayLoader);\n googlePayModel = braintreeGooglePayModel;\n paymentsClient = braintreeGooglePayModel.getPaymentsClient();\n googlePayConfig = JSON.parse($googlepayButton.getAttribute('data-braintree-config'));\n errHandlerModel = errorHandlerModel;\n\n initGooglePay();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\nvar $googlepayContent = document.querySelector('.js_braintree_googlepayContent');\n\n// Helpers\nvar helper = require('../../helper');\nvar googlePayHelper = require('../helpers/googlePayHelper');\n\n/**\n * Shows session Google Pay account on the Billing Page\n * @param {string} cardDescription Session card description\n */\nfunction showGooglepayAccount(cardDescription) {\n var $newGPAccount = document.getElementById('newGPAccount');\n var $gpAccount = document.querySelector('.form-group.braintree_used_googlepay_account');\n var $sessionAccount = document.querySelector('#sessionGPAccount');\n\n $newGPAccount.removeAttribute('selected');\n\n // Sets new session account\n $sessionAccount.classList.remove('used-googlepay-account-hide');\n $sessionAccount.classList.add('used-googlepay-account');\n $sessionAccount.text = cardDescription;\n $sessionAccount.selected = true;\n $sessionAccount.setAttribute('data-session-account', 'true');\n\n $gpAccount.classList.remove('used-googlepay-account-hide');\n $gpAccount.classList.add('used-googlepay-account');\n\n $googlepayButton.style.display = 'none';\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n helper.continueButtonToggle(false);\n}\n\n/*\n Remove method was used and change appearance of Google Pay tab\n**/\nfunction removeSessionNonce() {\n var $gpAccount = document.querySelector('.form-group.braintree_used_googlepay_account');\n $gpAccount.classList.remove('used-googlepay-account');\n $gpAccount.classList.add('used-googlepay-account-hide');\n\n var $sessionAccount = document.querySelector('#sessionGPAccount');\n $sessionAccount.classList.add('used-googlepay-account-hide');\n $sessionAccount.classList.remove('used-googlepay-account');\n $sessionAccount.value = '';\n $sessionAccount.text = '';\n $sessionAccount.setAttribute('data-session-account', false);\n $sessionAccount.setAttribute('data-save', false);\n\n document.querySelector('#braintreeGooglePayNonce').value = '';\n document.querySelector('#braintreeGooglePayBillingAddress').value = '';\n document.querySelector('#braintreeGooglepayPaymentType').value = '';\n document.querySelector('#braintreeGooglePayDeviceData').value = '';\n\n document.querySelector('#newGPAccount').selected = true;\n googlePayHelper.googlePayContentTabHandler(false);\n}\n\nmodule.exports = {\n showGooglepayAccount,\n removeSessionNonce\n};\n","'use strict';\n\nmodule.exports = {\n NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS: 'No Google Pay Braintree Configurations',\n ORDER_TOTAL_0: 'Order total 0 is not allowed for GooglePay',\n GOOGLE_PAY_WINDOW_CLOSED: 'User closed the Payment Request UI.'\n};\n","'use strict';\n\nmodule.exports = {\n FLOW_CHECKOUT_NAME: 'checkout',\n FLOW__CART_NAME: 'cart',\n FLOW_NEW_GP_ACCOUNT_NAME: 'newGpAccount'\n};\n","'use strict';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree credit card error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.$errorContainer = $('.cart-error-messaging');\n this.errorMessages = errorMessages;\n}\n\n// General method which should be used for cases when error came from Braintree\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\n/**\n * Shows error by message\n * @param {string} message Error message\n */\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Error container which will be used on Cart page ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message Message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n $('.checkout-btn').addClass('disabled');\n this.$errorContainer.append(\n `
\n \n ${message}\n
`\n );\n\n this.$errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Cart we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n this.$errorContainer.hide();\n this.$errorContainer.empty();\n};\n\n/**\n * Shows order total equal 0 error\n */\nErrorHandlingBaseModel.prototype.showOrderTotalError = function () {\n var googlePayErrorMessages = require('../constants/errorMessages');\n var zeroAmountErrorMsg = googlePayErrorMessages.ORDER_TOTAL_0;\n\n this.showErrorByMessage(zeroAmountErrorMsg);\n\n throw zeroAmountErrorMsg;\n};\n\n/**\n * Handles Google Pay error by types\n * @param {Object} error Error object or error message\n */\nErrorHandlingBaseModel.prototype.googlePayErrorHandler = function (error) {\n var googlePayErrorMessages = require('../constants/errorMessages');\n\n if (error.name === 'BraintreeError') {\n this.showErrorByObject(error);\n } else if (error.statusCode === 'DEVELOPER_ERROR') {\n this.showErrorByMessage(error.statusMessage);\n } else if (error.message !== googlePayErrorMessages.GOOGLE_PAY_WINDOW_CLOSED) {\n this.showErrorByMessage(error.message);\n }\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages Braintree credit card error messages\n */\nfunction ErrorHandlingCheckoutModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$topErrorMessageText = document.querySelector('.error-message-text');\n this.$topErrorMessageWrapper = document.querySelector('.error-message');\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCheckoutModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.createErrorNotification = function (message) {\n this.$topErrorMessageText.textContent = '';\n this.$topErrorMessageText.append(message);\n this.$topErrorMessageWrapper.style.display = 'block';\n\n window.scrollTo(0, 0);\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.hideError = function () {\n this.$topErrorMessageWrapper.style.display = 'none';\n this.$topErrorMessageText.innerHTML = '';\n};\n\nmodule.exports = ErrorHandlingCheckoutModel;\n","'use strict';\n\nvar braintreeGooglePayModelBuilder = require('./braintreesdk/braintreeGooglePayModelBuilder');\n\nvar googlePayHelper = require('./helpers/googlePayHelper');\n\n// Components\nvar googlePayList = require('./components/googlePayList');\nvar googlePayPaymentProcessing = require('./components/googlePayPaymentProcessing');\n\n// Models\nvar ErrorHandlingBaseModel = require('./errorhandler/errorHandlingBaseModel');\nvar ErrorHandlingCheckoutModel = require('./errorhandler/errorHandlingCheckoutModel');\n\nvar googlePayErrorMessages = require('./constants/errorMessages');\n\nvar braintreeGooglePayModelResponse;\nvar googlePayMessages;\n\n/**\n * Inits Google Pay on the Cart Page\n */\nfunction initCart() {\n var errorHandlerBaseModel = new ErrorHandlingBaseModel(googlePayMessages);\n\n if (!braintreeGooglePayModelResponse || braintreeGooglePayModelResponse.error) {\n var error = braintreeGooglePayModelResponse.error || googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n errorHandlerBaseModel.googlePayErrorHandler(error);\n }\n\n // Initialize a Google Pay 'PaymentsClient' object\n braintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(\n braintreeGooglePayModelResponse.btGooglePayConfigs.instanceType\n );\n\n googlePayPaymentProcessing.init(\n braintreeGooglePayModelResponse.btGooglePayModel,\n errorHandlerBaseModel\n );\n}\n\n/**\n * Inits Google Pay on the Checkout Page\n */\nfunction initCheckout() {\n var errorHandlerCheckoutModel = new ErrorHandlingCheckoutModel(googlePayMessages);\n\n if (!braintreeGooglePayModelResponse || braintreeGooglePayModelResponse.error) {\n var error = braintreeGooglePayModelResponse.error || googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n errorHandlerCheckoutModel.googlePayErrorHandler(error);\n }\n\n // Triggers the Google Pay tab if Google Pay session account uses\n googlePayHelper.triggerGooglePayTab(braintreeGooglePayModelResponse.btGooglePayConfigs);\n\n // Initialize a Google Pay 'PaymentsClient' object\n braintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(\n braintreeGooglePayModelResponse.btGooglePayConfigs.instanceType\n );\n\n googlePayPaymentProcessing.init(\n braintreeGooglePayModelResponse.btGooglePayModel,\n errorHandlerCheckoutModel\n );\n\n googlePayList.init();\n}\n\n/**\n * Inits Google Pay components\n */\nfunction init() {\n braintreeGooglePayModelResponse = braintreeGooglePayModelBuilder.init();\n\n if (!braintreeGooglePayModelResponse.error) {\n googlePayMessages = braintreeGooglePayModelResponse.btGooglePayConfigs.messages;\n }\n}\n\nmodule.exports = {\n init,\n initCart,\n initCheckout\n};\n","'use strict';\n\n/**\n * Returns Braintree Google Pay configs\n * @returns {Object} Braintree Google Pay configs\n */\nfunction getBraintreeGooglePayConfigs() {\n var braintreeGooglePayButtonConfigs = null;\n\n try {\n braintreeGooglePayButtonConfigs = JSON.parse(document.querySelector('.js_braintree_googlepay_button').getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeGooglePayButtonConfigs;\n }\n\n return braintreeGooglePayButtonConfigs;\n}\n\n/**\n * Sets device data from 'data collector' to corresponding input field\n * @param {Object} fraudDataPayload Froud payload data\n */\nfunction setGooglePayDeviceData(fraudDataPayload) {\n var $braintreeGooglePayDeviceData = document.querySelector('#braintreeGooglePayDeviceData');\n\n if (fraudDataPayload.deviceData) {\n $braintreeGooglePayDeviceData.value = fraudDataPayload.deviceData;\n }\n}\n\n/**\n * Handles all behavior related to the Google Pay content tab\n * @param {boolean} isActiveGooglePayTab Whether Google Pay tab is active\n */\nfunction googlePayContentTabHandler(isActiveGooglePayTab) {\n var helper = require('../../helper');\n var $btGooglepayAccountsList = document.querySelector('#braintreeGooglepayAccountsList');\n var $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\n var $googlepayContent = document.querySelector('.js_braintree_googlepayContent');\n\n if ($btGooglepayAccountsList.value === 'newaccount') {\n $googlepayButton.style.display = 'block';\n\n if (isActiveGooglePayTab) {\n helper.continueButtonToggle(true);\n }\n\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', true);\n } else {\n $googlepayButton.style.display = 'none';\n helper.continueButtonToggle(false);\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n }\n}\n\n/**\n * Triggers the Google Pay tab if Google Pay session account uses\n * @param {Object} googlePayConfigs Google Pay config object\n */\nfunction triggerGooglePayTab(googlePayConfigs) {\n var sessionPaymentMethodId = googlePayConfigs.sessionPaymentMethodId;\n var $googlePayTab = $('.googlepay-tab');\n\n if (sessionPaymentMethodId === 'GooglePay') {\n $googlePayTab.click();\n }\n}\n\nmodule.exports = {\n getBraintreeGooglePayConfigs,\n setGooglePayDeviceData,\n googlePayContentTabHandler,\n triggerGooglePayTab\n};\n","'use strict';\n\nvar googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\n\n/**\n * Returns current Google Pay flow\n * @returns {string} Flow id checkout/cart/newGpAccount\n */\nfunction getGooglePayFlowId() {\n var googlePayEnabledOnCart = Boolean(document.querySelector('.braintree-cart-google-button'));\n var googlePayEnabledOnCheckout = Boolean(document.querySelector('.js_braintree_googlepayContent'));\n var googlePayFlowId = null;\n\n var flows = {\n checkout: googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME,\n cart: googlePayPaymentProcessingConstants.FLOW__CART_NAME,\n newGpAccount: googlePayPaymentProcessingConstants.FLOW_NEW_GP_ACCOUNT_NAME\n };\n\n if (googlePayEnabledOnCart) {\n googlePayFlowId = flows.cart;\n } else if (googlePayEnabledOnCheckout) {\n googlePayFlowId = flows.checkout;\n } else {\n googlePayFlowId = flows.newGpAccount;\n }\n\n return googlePayFlowId;\n}\n\n/**\n * Creates Google Pay billing address from payload data\n * @param {Object} data Data object\n * @returns {Objcet} billing address data object\n */\nfunction createGooglepayBillingAddressData(data) {\n var billingData = data.paymentMethodData.info.billingAddress;\n var billingAddress = {};\n var recipientName = billingData.name.split(' ');\n\n billingAddress.firstName = recipientName[0];\n billingAddress.lastName = recipientName[1];\n billingAddress.phone = billingData.phoneNumber;\n billingAddress.countryCodeAlpha2 = billingData.countryCode;\n billingAddress.streetAddress = billingData.address1;\n billingAddress.extendedAddress = billingData.address2;\n billingAddress.locality = billingData.locality;\n billingAddress.stateCode = billingData.administrativeArea;\n billingAddress.postalCode = decodeURIComponent(billingData.postalCode);\n billingAddress.email = data.email;\n\n return billingAddress;\n}\n\n/**\n * Creates shipping address object\n * @param {Object} shippingData Shipping data object\n * @returns {Object} Shipping data object in required format\n */\nfunction createGooglepayShippingAddressData(shippingData) {\n var shippingAddress = {};\n var recipientName = shippingData.name.split(' ');\n\n shippingAddress.firstName = recipientName[0];\n shippingAddress.lastName = recipientName[1];\n shippingAddress.phone = shippingData.phoneNumber;\n shippingAddress.countryCodeAlpha2 = shippingData.countryCode;\n shippingAddress.streetAddress = shippingData.address1;\n shippingAddress.extendedAddress = shippingData.address2;\n shippingAddress.locality = shippingData.locality;\n shippingAddress.region = shippingData.administrativeArea;\n shippingAddress.postalCode = decodeURIComponent(shippingData.postalCode);\n\n return shippingAddress;\n}\n\nmodule.exports = {\n getGooglePayFlowId,\n createGooglepayBillingAddressData,\n createGooglepayShippingAddressData\n};\n","'use strict';\n\n/**\n * Creates an object of configuration for creating a Google Pay payment\n * @param {Client} btClientInstance A client instance\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Object} Configuration object\n */\nfunction createGooglePayOptions(btClientInstance, googleMerchantId) {\n var gpOptions = {\n client: btClientInstance,\n googlePayVersion: 2\n };\n\n if (googleMerchantId !== '' && googleMerchantId !== null) {\n gpOptions.googleMerchantId = googleMerchantId;\n }\n\n return gpOptions;\n}\n\nmodule.exports = {\n createGooglePayOptions\n};\n","'use strict';\n\nvar braintreeConstants = {\n // payment method id\n PAYMENT_METHOD_ID_PAYPAL: 'PayPal',\n PAYMENT_METHOD_ID_VENMO: 'Venmo',\n // BT PayPal Smart Buttons funding sources types\n PP_FUNDING_SOURCE_CARD: 'card',\n PP_FUNDING_SOURCE_PAYLATER: 'paylater',\n // BT PayPal Smart Buttons payments types\n PP_DEBIT_CREDIT_PAYMENT_TYPE: 'PayPal Debit/Credit Card',\n PP_PAYLATER_PAYMENT_TYPE: 'PayPal Paylater'\n};\n\nvar $continueButton = document.querySelector('button.submit-payment');\n\n/**\n * Init the event in order to update the cart grant total price\n */\nfunction initCartUpdateEvent() {\n var $grantTotal = document.querySelector('.grand-total');\n\n if ($grantTotal) {\n var currentGrantTotalValue = $grantTotal.textContent;\n\n $('body').on('cart:update', function () {\n var newGrantTotalValue = $grantTotal.textContent;\n\n if (newGrantTotalValue !== '' && newGrantTotalValue !== currentGrantTotalValue) {\n currentGrantTotalValue = newGrantTotalValue;\n var updateCartTotals = document.createEvent('Event');\n updateCartTotals.initEvent('updateCartTotals', true, true);\n\n document.querySelector('body').addEventListener('updateCartTotals', function () {\n 'braintree:updateCartTotals';\n }, false);\n document.querySelector('body').dispatchEvent(updateCartTotals);\n }\n });\n }\n}\n\n/**\n * Depends on the value flag, sets style.display to the $continueButton\n * @param {boolean} flag Boolean value\n * @returns {void}\n */\nfunction continueButtonToggle(flag) {\n var stage = window.location.hash.substring(1);\n\n if (stage === 'placeOrder' || stage === 'shipping' || stage === null || stage === '') {\n return;\n }\n\n $continueButton.style.display = flag ? 'none' : '';\n}\n\n/**\n * Handles payment method tab changing\n * @param {Object} currentTab Choosen payment method tab\n */\nfunction paymentMethodChangeHandle(currentTab) {\n document.querySelectorAll('.payment-options[role=tablist] a[data-toggle=\"tab\"]').forEach(function (el) {\n var $tabContent = document.querySelector(el.getAttribute('href'));\n\n if (el === currentTab) {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.removeAttribute('disabled', 'disabled');\n });\n $tabContent.querySelectorAll('select.no-disable').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n continueButtonToggle(JSON.parse($tabContent.getAttribute('data-paypal-is-hide-continue-button')));\n } else {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n }\n });\n}\n\n/**\n * Return payment method name in lovercase\n * @param {string} paymentMethodName Payment method name\n * @returns {string} Paymnet method name\n */\nfunction getPaymentMethodToLowerCase(paymentMethodName) {\n var paymentMethod = paymentMethodName.split('_');\n if (paymentMethod.length === 1) {\n return paymentMethodName;\n }\n paymentMethod.forEach(function (element, index) {\n paymentMethod[index] = element.charAt(0) + element.slice(1).toLocaleLowerCase();\n });\n return paymentMethod[1] ?\n paymentMethod[0] + ' ' + paymentMethod[1] :\n paymentMethod[0];\n}\n\n/**\n * Updates checkout view\n * @param {Object} e Event object\n * @param {Object} data Data object\n */\nfunction updateCheckoutView(e, data) {\n var $paymentSummary = document.querySelector('.summary-details .braintree-payment-details');\n var htmlToAppend = '';\n var order = data.order;\n var payment = order.billing.payment;\n\n if (payment && payment.selectedPaymentInstruments\n && payment.selectedPaymentInstruments.length > 0) {\n var selectedPaymentInstrument = payment.selectedPaymentInstruments[0];\n var paymnetMethodId = selectedPaymentInstrument.paymentMethod;\n var fundingSource = selectedPaymentInstrument.fundingSource;\n\n if (fundingSource === braintreeConstants.PP_FUNDING_SOURCE_PAYLATER) {\n htmlToAppend += '
' + braintreeConstants.PP_PAYLATER_PAYMENT_TYPE + '
';\n } else if (fundingSource === braintreeConstants.PP_FUNDING_SOURCE_CARD) {\n htmlToAppend += '
' + braintreeConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE + '
';\n } else {\n htmlToAppend += '
' + getPaymentMethodToLowerCase(paymnetMethodId) + '
';\n }\n\n if (selectedPaymentInstrument.maskedCreditCardNumber) {\n htmlToAppend += '
' + selectedPaymentInstrument.maskedCreditCardNumber + '
';\n }\n\n if (paymnetMethodId === braintreeConstants.PAYMENT_METHOD_ID_PAYPAL) {\n htmlToAppend += '
' + selectedPaymentInstrument.braintreePaypalEmail + '
';\n }\n\n if (paymnetMethodId === braintreeConstants.PAYMENT_METHOD_ID_VENMO) {\n htmlToAppend += '
' + selectedPaymentInstrument.braintreeVenmoUserId + '
';\n }\n\n if (selectedPaymentInstrument.type) {\n htmlToAppend += '
' + selectedPaymentInstrument.type + '
';\n }\n htmlToAppend += '
' + order.priceTotal.charAt(0) + selectedPaymentInstrument.amount + '
';\n }\n\n if ($paymentSummary) {\n $paymentSummary.innerHTML = htmlToAppend;\n }\n}\n\n/**\n * Validates whether input field is valid\n * @param {Object} field Input filed\n * @returns {boolean} true/false\n */\nfunction isValidInputField(field) {\n if (!field.checkValidity()) {\n if (!field.classList.contains('is-invalid')) {\n field.classList.add('is-invalid');\n }\n return false;\n }\n if (field.checkValidity() && field.classList.contains('is-invalid')) {\n field.classList.remove('is-invalid');\n }\n return true;\n}\n/*\n Adding *active* line to the tab-content class in a case if it isn't already active\n Use case: customer checkout from Cart (page) and\n (under the place Order page) hit the 'edit' button\n**/\nfunction updatePaymentMethodTab() {\n let paymentMethodName = document.querySelectorAll('[data-braintree-payment-method]')[0].dataset.braintreePaymentMethod;\n let content = document.querySelector(`.js_braintree_${paymentMethodName.toLowerCase()}Content`).classList.contains('active');\n if (!content) {\n document.querySelectorAll(`[data-method-id=${paymentMethodName}]`)[0].children[0].click();\n }\n}\n\n/**\n * Gets Billing Address Form Values\n *\n * @returns {Object} with Billing Address\n */\nfunction getBillingAddressFormValues() {\n var billingData = $('#dwfrm_billing').serialize().split('&')\n .map(function (el) {\n return el.split('=');\n })\n .reduce(function (accumulator, item) {\n var elem = item[0].lastIndexOf('_');\n if (elem < 0) {\n accumulator[item[0]] = item[1];\n } else {\n elem = item[0].substring(elem + 1);\n accumulator[elem] = item[1];\n }\n return accumulator;\n }, {});\n\n // If address1 is longer than 50 characters, split it into two and put the second part into address2\n // This is a limitation of the Braintree API\n var address1 = billingData.address1;\n if (address1.length > 50) {\n if (!billingData.address2) {\n billingData.address1 = address1.substr(0, 50);\n billingData.address2 = address1.substr(50, 50);\n } else {\n var allAddress = billingData.address1 + billingData.address2;\n billingData.address1 = allAddress.substr(0, 50);\n billingData.address2 = allAddress.substr(50, 50);\n }\n }\n\n return billingData;\n}\n\n/**\n * Gets Nonce depending on payment method name\n *\n * @param {string} paymentMethodName - payment method name\n * @returns {boolean} nonce exist\n */\n\nfunction isNonceExist(paymentMethodName) {\n // Payment method name\n var pmName = paymentMethodName;\n\n // Сhange 'CREDIT_CARD' to 'CreditCard' in order to get braintreewCreditCardNonce input\n if (paymentMethodName === 'CREDIT_CARD') {\n pmName = 'CreditCard';\n }\n\n var $nonce = document.querySelector(`#braintree${pmName}Nonce`);\n\n if (!$nonce) return false;\n\n var nonceValue = $nonce.value;\n var $tab = document.querySelector(`.${pmName.toLowerCase()}-tab`);\n var isActiveTab;\n if ($tab) {\n isActiveTab = $tab.classList.contains('active');\n }\n\n return !isActiveTab && nonceValue;\n}\n\nvar loaderInstance = require('./loaderHelper');\nvar accountsLoader;\n\nfunction removeBtPayment(e) {\n var target = e.target;\n\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n accountsLoader = loaderInstance($loaderContainter);\n accountsLoader.show();\n\n $.get(target.getAttribute('data-url') + '?UUID=' + target.getAttribute('data-id'))\n .then((data => {\n $('#uuid-' + data.UUID).remove();\n if (data.newDefaultAccount) {\n document.querySelector('#uuid-' + data.newDefaultAccount + ' span').style.fontWeight = 'bold';\n document.querySelector('#uuid-' + data.newDefaultAccount + ' button.braintree-make-default-card').style.display = 'none';\n }\n $('body').trigger('cart:update');\n\n if (($('.creditCard-accounts').length == 0 || $('.creditCard-accounts').children().length == 0) \n &&\n ($('.paypal-accounts').length == 0 || $('.paypal-accounts').children().length == 0)) {\n $('.payment-methods-list').addClass('d-none');\n $('.payment-methods-empty').removeClass('d-none');\n }\n\n accountsLoader.hide();\n $('body').trigger('payment:removed');\n }))\n .fail(() => {\n location.reload();\n accountsLoader.hide();\n });\n}\n\n\n/**\n * Sets data and content for Modal\n * @param {Object} e Event object\n */\nfunction deletePayment(e) {\n e.stopPropagation();\n var target = e.target;\n var dataset = target.dataset;\n var paymentInfo = $('.payment-method#uuid-' + dataset['id']).find('.card-info-group').html();\n\n $('.product-to-remove').empty().append(paymentInfo);\n $('.remove-bt-payment')\n .removeAttr('data-*')\n .attr('data-dismiss', 'modal')\n .attr('data-loader', dataset['loader'])\n .attr('data-url', dataset['url'])\n .attr('data-id', dataset['id'])\n .attr('data-card', dataset['card'])\n .removeClass('creditcard')\n .addClass('paypal');\n}\n\n/**\n * Create formData from fields data\n *\n * @param {Object} paymentFields fields data values\n * @param {Object} fieldsData fields data values\n * @returns {Object} cart billing form data\n */\nfunction createPaymentFormData(paymentFields, fieldsData) {\n var paymentFieldsParsed;\n\n if (typeof paymentFields === 'object') {\n paymentFieldsParsed = paymentFields;\n } else {\n paymentFieldsParsed = JSON.parse(paymentFields);\n }\n\n return Object.entries(paymentFieldsParsed).reduce(function (formData, entry) {\n const [key, field] = entry;\n if (typeof field === 'object') {\n formData.append(field.name, fieldsData && fieldsData[key] !== null ? fieldsData[key] : field.value);\n }\n return formData;\n }, new FormData());\n}\n\nfunction setDefaultProperty(params) {\n return $.get(params.url + '?UUID=' + params.id + '&pmID=' + params.paymentMethodID)\n .then((data) => {\n document.querySelector('#uuid-' + data.newDefaultProperty + ' span').style.fontWeight = 'bold';\n document.querySelector('.braintree-make-default-card.uuid-' + data.newDefaultProperty).style.display = 'none';\n document.querySelector('#uuid-' + data.toRemoveDefaultProperty + ' span').style.fontWeight = 'normal';\n document.querySelector('.braintree-make-default-card.uuid-' + data.toRemoveDefaultProperty).style.display = 'inline';\n params.loader.hide();\n })\n .fail(() => {\n params.loader.hide();\n });\n}\n\n/**\n * Checks authenticated customer, account list for default Payment Method\n *\n * @param {string} selector - querySelector\n * @returns {Object} default data attribute or null\n */\nfunction getOptionByDataDefault(selector) {\n if (!document.querySelector(selector)) { return null; }\n\n return Array.apply(null, document.querySelector(selector).options).find(function (el) {\n return el.getAttribute('data-default') ? JSON.parse(el.getAttribute('data-default')) : null;\n });\n}\n\n/**\n * Checks authenticated customer, account list for session Account\n *\n * @param {Object} params querySelector + el.id\n * @returns {Object} session account object\n */\nfunction getSessionAccountOption(params) {\n return Array.apply(null, document.querySelector(params.querySelector).options).find(function (el) {\n return el.id === params.id && JSON.parse(el.getAttribute('data-session-account'));\n });\n}\n\n/**\n * This method is called to remove active session account but just in case\n * if tab of currently active session payment isn't active (buyer submited another payment method)\n * @returns {function}function call\n */\nfunction removeActiveSessionPayment() {\n const activePaymentMethods = [];\n document.querySelectorAll('.payment-options[role=tablist] li').forEach(function (el) {\n activePaymentMethods.push(el.dataset.methodId);\n });\n var helpers = {\n PayPal: require('./paypal/components/payPalSessionAccount'),\n Venmo: require('./venmo/components/venmoSessionAccount'),\n GooglePay: require('./googlepay/components/googlePaySessionAccount'),\n CREDIT_CARD: require('./creditcard/components/creditCardSessionAccount'),\n SRC: require('./src/components/srcSessionAccount'),\n ApplePay: require('./applepay/helpers/applePayHelper')\n };\n var activePM = activePaymentMethods.find(function (el) {\n return isNonceExist(el);\n });\n if (activePM) {\n return helpers[activePM].removeSessionNonce();\n }\n}\n\nfunction showCartErrorMsg(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
\n \n ${message}\n
`\n );\n window.scrollTo(0, 0);\n}\n\n/**\n * Update Checkout Billing form values\n *\n * @param {Object} billingData fields data values\n */\nfunction updateBillingFormValues(billingData) {\n var $billingFormFields = document.querySelectorAll('.billing-address select, .billing-address input, .contact-info-block input');\n\n $billingFormFields.forEach(function (el) {\n if (billingData[el.name]) {\n el.value = billingData[el.name];\n }\n });\n}\n\n/**\n * Returns selected option from select container\n * @param {Object} $selectContainer Select container\n * @returns {Object} Selected option\n */\nfunction getSelectedOption($selectContainer) {\n var selectedOptionIndex = $selectContainer.selectedIndex;\n var selectedOption = $selectContainer.options[selectedOptionIndex];\n\n return selectedOption;\n}\n\n/**\n * Returns payment field data to be send on backend\n * @param {Object} addressData Address data to be set\n * @param {string} paymentMethodName Payment method name\n * @returns {Object} payment data\n */\nfunction getPaymentFieldsData(addressData, paymentMethodName) {\n return {\n firstName: addressData.firstName,\n lastName: addressData.lastName,\n address1: addressData.streetAddress,\n address2: addressData.extendedAddress || '',\n city: addressData.locality,\n postalCode: decodeURIComponent(addressData.postalCode),\n stateCode: addressData.stateCode || addressData.region,\n country: addressData.countryCodeAlpha2,\n phone: addressData.phone,\n paymentMethod: paymentMethodName\n };\n}\n\nfunction getUpdatedStoreFrontBillingData(billingAddress) {\n var storeFrontBillingData = JSON.parse(document.querySelector('.braintree-billing-payment-wrap').getAttribute('data-billing-form-fields-names'));\n\n storeFrontBillingData.dwfrm_billing_addressFields_firstName = billingAddress.firstName;\n storeFrontBillingData.dwfrm_billing_addressFields_lastName = billingAddress.lastName;\n storeFrontBillingData.dwfrm_billing_addressFields_address1 = billingAddress.streetAddress;\n storeFrontBillingData.dwfrm_billing_addressFields_address2 = billingAddress.extendedAddress || '';\n storeFrontBillingData.dwfrm_billing_addressFields_city = billingAddress.locality;\n storeFrontBillingData.dwfrm_billing_addressFields_postalCode = decodeURIComponent(billingAddress.postalCode);\n storeFrontBillingData.dwfrm_billing_addressFields_states_stateCode = billingAddress.stateCode || billingAddress.region;\n storeFrontBillingData.dwfrm_billing_addressFields_country = billingAddress.countryCodeAlpha2;\n storeFrontBillingData.dwfrm_billing_contactInfoFields_phone = billingAddress.phone;\n\n return storeFrontBillingData;\n}\n\nmodule.exports = {\n initCartUpdateEvent,\n paymentMethodChangeHandle,\n continueButtonToggle,\n updateCheckoutView,\n isValidInputField,\n updatePaymentMethodTab,\n getBillingAddressFormValues,\n removeBtPayment,\n deletePayment,\n createPaymentFormData,\n isNonceExist,\n setDefaultProperty,\n getOptionByDataDefault,\n removeActiveSessionPayment,\n getSessionAccountOption,\n showCartErrorMsg,\n updateBillingFormValues,\n getSelectedOption,\n getPaymentFieldsData,\n getUpdatedStoreFrontBillingData\n};\n","\nmodule.exports = function (containerElement) {\n if (!containerElement) {\n // eslint-disable-next-line no-console\n console.error('Braintree: No container for showing loaders');\n }\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n //this.containerEl.style.display = 'block';\n $.spinner().start()\n };\n Constructor.prototype.hide = function () {\n //this.containerEl.style.display = 'none';\n $.spinner().stop()\n };\n return new Constructor();\n};\n","'use string';\n\nvar lpmHelper = require('../helpers/lpmHelper');\n\nvar braintreeLpmSDK = require('./braintreeLpmSDK');\n\n// Global variables\nvar lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\nvar lpmInstance;\nvar shippingAddress;\nvar amount;\n\n/**\n * Init Braintree LPM pay model\n * @param {Promise} braintreeClientInstancePromise Braintreee client instance promise\n */\n\nfunction init(braintreeClientInstancePromise) {\n braintreeLpmSDK.init(braintreeClientInstancePromise);\n}\n\n/**\n * Inits LPM instance for the next payment actions\n * @returns {Promise} Promise resolved with the 'createLpmClickListener' boolean value\n */\nfunction initLpm() {\n return braintreeLpmSDK.createLpmPayment()\n .then(function (localPaymentInstance) {\n lpmInstance = localPaymentInstance;\n\n return {\n createLpmClickListener: true\n };\n });\n}\n\n/**\n * Updates order data\n * @param {Object} updatedShippingAddress Updates order shipping address from backend\n * @param {number} updatedAmount Updated order amount from backend\n */\nfunction updateLpmOrderData(updatedShippingAddress, updatedAmount) {\n shippingAddress = updatedShippingAddress;\n amount = updatedAmount;\n}\n\n/**\n * Returns order shipping address\n * @returns {Object} Shipping address\n */\nfunction getShippingAddress() {\n return shippingAddress;\n}\n\n/**\n * Creates and returns object with all options for initiating the lpm payment flow\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @returns {Object} {Object} Options object\n */\nfunction createRequestData(paymentMethodName, email) {\n return Object.assign(braintreeLpmSDK.createRequestData(\n shippingAddress,\n lpmConfigs,\n paymentMethodName,\n email,\n amount\n ),\n {\n onPaymentStart: function (_, continueCallback) {\n continueCallback();\n }\n });\n}\n\n/**\n * Launches the local payment flow and returns a nonce payload\n * @param {Object} reqData Options object\n * @returns {Promise} Promise resolved with a startPaymentPayload\n */\nfunction startPayment(reqData) {\n return braintreeLpmSDK.startPayment(lpmInstance, reqData);\n}\n\nmodule.exports = {\n init,\n initLpm,\n updateLpmOrderData,\n getShippingAddress,\n createRequestData,\n startPayment\n};\n","'use strict';\n\nvar lpmHelper = require('../helpers/lpmHelper');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar braintreeLpmModel = require('./braintreeLpmModel');\n\nvar lpmErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Lpm Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n var braintreeLpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n var clientToken;\n var btClientInstancePromise;\n var response = {\n error: false,\n message: '',\n btLpmModel: null\n };\n\n if (braintreeLpmConfigs) {\n clientToken = braintreeLpmConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n\n braintreeLpmModel.init(\n btClientInstancePromise\n );\n\n response.btLpmModel = braintreeLpmModel;\n } else {\n response.error = true;\n response.message = lpmErrorMessages.NO_LPM_BRAINTREE_CONFIGURATIONS;\n }\n\n return response;\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nvar btClientInstancePromise;\n\n/**\n * Creates Lpm payment instance\n * @returns {Promise} A promise resolved with the Lpm instance\n */\n\nfunction createLpmPayment() {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.localPayment.create({\n client: btClientInstance\n });\n });\n}\n\n/**\n * Creates and returns object with all options for initiating the LPM payment flow\n * @param {Object} shippingData Order Shipping address\n * @param {Object} lpmConfigs LPM configs object\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @param {number} amount Order total amount\n * @returns {Object} Options object\n */\nfunction createRequestData(shippingData, lpmConfigs, paymentMethodName, email, amount) {\n var recipientName = shippingData.recipientName.split(' ');\n shippingData.firstName = recipientName[0];\n shippingData.lastName = recipientName[1];\n\n return {\n paymentType: paymentMethodName,\n amount: amount,\n fallback: {\n url: lpmConfigs.fallbackUrl + '?lpmName=' + paymentMethodName + '&email=' + email,\n buttonText: 'Complete Payment'\n },\n currencyCode: lpmConfigs.options.currency,\n shippingAddressRequired: false,\n email: email,\n phone: shippingData && shippingData.phone,\n givenName: shippingData && shippingData.firstName,\n surname: shippingData && shippingData.lastName,\n address: {\n countryCode: shippingData && shippingData.countryCode\n }\n };\n}\n\n/**\n *\n * @param {lpmInstance} localPaymentInstance LPM instance\n * @param {Object} reqData Options object\n * @returns {Promise} Promise resolved with a startPaymentPayload\n */\nfunction startPayment(localPaymentInstance, reqData) {\n return localPaymentInstance.startPayment(reqData);\n}\n\n/**\n * Inits braintreeLpmSDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n init,\n createLpmPayment,\n createRequestData,\n startPayment\n};\n","'use string';\n\n// Helpers\nvar lpmHelper = require('../helpers/lpmHelper');\nvar loaderInstance = require('../../loaderHelper');\nvar lpmPaymentProcessingHelper = require('../helpers/lpmPaymentProcessorHelper');\n\nvar lpmErrorHandler = require('../errorhandler/lpmErrorHandler');\n\nvar $braintreeLpmLoader = document.querySelector('.lpmLoader');\n\n// Global variables\nvar lpmConfigs;\nvar loader;\nvar lpmModel;\n\n/**\n * Opens LPM page and process a payment\n * @param {Object} reqData Options object\n * @param {string} paymentMethodName Payment method name\n */\nfunction startLpmPayment(reqData, paymentMethodName) {\n lpmModel.startPayment(reqData)\n .then(function (startPaymentPayload) {\n // Handles LPM processing messages on the Billing-Checkout Page\n lpmPaymentProcessingHelper.hideProcessingMsg();\n lpmPaymentProcessingHelper.showFinalProcessingMsg();\n\n // Sends payment details to the backend\n return lpmPaymentProcessingHelper.confirmPayment(\n lpmConfigs,\n paymentMethodName,\n reqData.email,\n startPaymentPayload\n );\n })\n .then(function (response) {\n loader.hide();\n lpmPaymentProcessingHelper.processLpmConfirmForm(response.redirectUrl);\n })\n .catch(function (err) {\n loader.hide();\n lpmErrorHandler.processStartLpmPaymentError(err);\n });\n}\n\n/**\n * Prepares and checks all necessary options for start LPM payment\n * @param {Object} event On LPM button click event\n */\nfunction onLpmButtonClick(event) {\n var $email = document.querySelector('.customer-summary-email');\n var paymentMethodName = this.dataset.localPaymentMethodName;\n var reqData;\n\n lpmErrorHandler.hideError();\n\n event.preventDefault();\n\n try {\n if (lpmConfigs.options.amount === 0) {\n loader.hide();\n lpmErrorHandler.handleZeroAmountOnCheckout(paymentMethodName);\n }\n\n $.getJSON(lpmConfigs.getOrderInfoUrl)\n .then(function (data) {\n loader.show();\n lpmPaymentProcessingHelper.showProcessingMsg();\n\n // Updates shipping address and amount of order from server\n lpmModel.updateLpmOrderData(data.shippingAddress, data.amount);\n\n // Creates all options for initiating the local payment payment flow.\n reqData = lpmModel.createRequestData(paymentMethodName, $email.textContent);\n\n startLpmPayment(reqData, paymentMethodName);\n })\n // Handles errors form Braintree-GetOrderInfo endpoint\n .catch(function (err) {\n loader.hide();\n lpmErrorHandler.showErrorByMessage(err.responseJSON.message);\n });\n loader.hide();\n } catch (err) {\n lpmErrorHandler.showErrorByMessage(err);\n }\n}\n\n/**\n * Inits LPM functionality on the Checkout-Billing Page\n */\nfunction initLpm() {\n lpmModel.initLpm()\n .then(function (response) {\n if (response.createLpmClickListener) {\n $('.tab-content').on('click', '.js_braintree_lpm_button', onLpmButtonClick);\n }\n })\n .catch(function (err) {\n lpmErrorHandler.showErrorByMessage(err.message);\n });\n}\n\n/**\n * Inits LPM payment processing components\n * @param {Object} braintreeLpmModel LPM model\n */\nfunction init(braintreeLpmModel) {\n loader = loaderInstance($braintreeLpmLoader);\n lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n lpmModel = braintreeLpmModel;\n\n initLpm();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nmodule.exports = {\n NO_LPM_BRAINTREE_CONFIGURATIONS: 'No Lpm Braintree Configurations',\n ORDER_TOTAL_0: 'Order total 0 is not allowed for '\n};\n","'use strict';\n\nvar lpmErrorMessages = require('../constants/errorMessages');\nvar lpmHelper = require('../helpers/lpmHelper');\n\nvar $topErrorMessageText;\nvar $topErrorMessageWrapper;\nvar braintreeErrorMessages;\n\n/**\n * Shows error message on the top of the Checkout Page\n * @param {string} message Error message\n */\nfunction createErrorNotification(message) {\n $topErrorMessageText.textContent = '';\n $topErrorMessageWrapper.style.display = 'block';\n $topErrorMessageText.append(message);\n window.scrollTo(0, 0);\n}\n\n// General method which should be used for cases when error came from Braintree\nfunction showErrorByObject(error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = braintreeErrorMessages[code] || msg || braintreeErrorMessages.CLIENT_GATEWAY_NETWORK;\n\n createErrorNotification(errorMessage);\n}\n\n/**\n * Shows error by message\n * @param {string} message Error Message\n */\nfunction showErrorByMessage(message) {\n createErrorNotification(message);\n}\n\n/**\n * Process error form Braintree or Braintree-PaymentConfirm endpoint\n * @param {Object} error Error object\n */\nfunction processStartLpmPaymentError(error) {\n if (error.name === 'BraintreeError') {\n showErrorByObject(error);\n } else {\n showErrorByMessage(error.responseText);\n }\n}\n\n/**\n * Hides error message form the top of the Checkout Page\n */\nfunction hideError() {\n $topErrorMessageWrapper.style.display = 'none';\n $topErrorMessageText.innerHTML = '';\n}\n\n/**\n * Creates and throws an error if order amount is 0\n * @param {string} paymentMethodName Payment method name\n */\nfunction handleZeroAmountOnCheckout(paymentMethodName) {\n var zeroAmountErrorMsg = lpmErrorMessages.ORDER_TOTAL_0 + paymentMethodName;\n\n throw zeroAmountErrorMsg;\n}\n\n/**\n * Inits LPM error handler components\n */\nfunction init() {\n $topErrorMessageText = document.querySelector('.error-message-text');\n $topErrorMessageWrapper = document.querySelector('.error-message');\n braintreeErrorMessages = lpmHelper.getBraintreeLpmConfigs().messages;\n}\n\nmodule.exports = {\n processStartLpmPaymentError,\n showErrorByObject,\n showErrorByMessage,\n createErrorNotification,\n handleZeroAmountOnCheckout,\n hideError,\n init\n};\n","'use strict';\n\n/**\n * Returns Braintree LPM configs\n * @returns {Object} Braintree LPM configs\n */\nfunction getBraintreeLpmConfigs() {\n var braintreeLpmConfigs = null;\n\n try {\n braintreeLpmConfigs = JSON.parse(document.querySelector('.js_braintree_lpm_button').getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeLpmConfigs;\n }\n\n return braintreeLpmConfigs;\n}\n\nmodule.exports = {\n getBraintreeLpmConfigs\n};\n","'use strict';\n\nvar lpmModel = require('../braintreesdk/braintreeLpmModel');\n\nvar processingMsg = document.querySelector('.processingMsg');\nvar finalProcessingMsg = document.querySelector('.finalProcessingMsg');\n\n/**\n * Whether 'details' parameter is exist returns 'details' or shipping address if not exist\n *\n * @param {Object} details Details object from StartPaymentPayload\n * @param {string} email Email Address\n * @returns {Object} Details object\n */\nfunction getPaymentDetailsParameter(details, email) {\n var shippingAddress = lpmModel.getShippingAddress();\n shippingAddress.email = email;\n\n return jQuery.isEmptyObject(details) ? shippingAddress : details;\n}\n\n/**\n * Shows processing message on the Billing Page\n */\nfunction showProcessingMsg() {\n processingMsg.style.display = 'block';\n}\n\n/**\n * Hides processing message on the Billing Page\n */\nfunction hideProcessingMsg() {\n processingMsg.style.display = 'none';\n}\n\n/**\n * Show final processing message on the Billing Page\n */\nfunction showFinalProcessingMsg() {\n finalProcessingMsg.style.display = 'block';\n}\n\n/**\n *\n * @param {Object} lpmConfigs LPM configs object\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @param {Object} startPaymentPayload StartPaymnetPayload\n * @returns {Promise} Promise resolved with 'redirectUrl'\n */\nfunction confirmPayment(lpmConfigs, paymentMethodName, email, startPaymentPayload) {\n return $.ajax({\n url: lpmConfigs.paymentConfirmUrl,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n nonce: startPaymentPayload.nonce,\n lpmName: paymentMethodName,\n details: getPaymentDetailsParameter(startPaymentPayload.details, email),\n deviceData: JSON.stringify({ correlation_id: startPaymentPayload.correlationId })\n })\n });\n}\n\n/**\n * Creates a redirecting form to Order-Confirm endpoint\n * @param {Object} param The helping object for creating a from\n * @returns {Object} form element\n */\nfunction createConfirmForm(param) {\n var form = $('
')\n .appendTo(document.body)\n .attr({\n method: 'POST',\n action: param.url\n });\n\n $('')\n .appendTo(form)\n .attr({\n name: 'orderID',\n value: param.orderID\n });\n\n $('')\n .appendTo(form)\n .attr({\n name: 'orderToken',\n value: param.orderToken\n });\n\n return form;\n}\n\n/**\n * Prepare and submits form in order to confirm order with Lpm\n * @param {string} redirectUrl Redirect Url\n */\nfunction processLpmConfirmForm(redirectUrl) {\n var splitUrl = redirectUrl.split('?');\n var url = splitUrl[0];\n var paramsString = splitUrl[1];\n var searchParams = new URLSearchParams(paramsString);\n var formParam = {\n orderID: searchParams.get('orderID'),\n orderToken: searchParams.get('orderToken'),\n url: url\n };\n var form = createConfirmForm(formParam);\n\n form.submit();\n}\n\nmodule.exports = {\n getPaymentDetailsParameter,\n showProcessingMsg,\n hideProcessingMsg,\n showFinalProcessingMsg,\n confirmPayment,\n processLpmConfirmForm\n};\n","'use strict';\n\nvar braintreeLpmModelBuilder = require('./braintreesdk/braintreeLpmModelBuilder');\n\nvar lpmErrorHandler = require('./errorhandler/lpmErrorHandler');\nvar lpmPaymentProcessing = require('./components/lpmPaymentProcessing');\n\n/**\n * Inits LPM on the Billing-Checkout Page\n */\nfunction init() {\n var braintreeLpmModelResponse = braintreeLpmModelBuilder.init();\n\n lpmErrorHandler.init();\n\n lpmPaymentProcessing.init(braintreeLpmModelResponse.btLpmModel);\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar braintreeGeneral = require('./braintreeGeneral');\n\n// Components\nvar payPalStoredBillingAddressComponent = require('./paypal/components/payPalStoredBillingAddress');\n\n// Helpers\nvar paymentMethodGeneralHelper = require('./paymentMethodGeneralHelper');\nvar helper = require('./helper');\nvar googlePayHelper = require('./googlepay/helpers/googlePayHelper');\nvar srcHelper = require('./src/helpers/srcHelper');\nvar venmoHelper = require('./venmo/helpers/venmoHelper');\nvar applePayHelper = require('./applepay/helpers/applePayHelper');\nvar payPalListHelper = require('./paypal/helpers/payPalListHelper');\n\n// Constancts used only for \"createGeneralClientInstancePromise\" function\nconst CHECKOUT_PAGE = 'checkout_page';\nconst CART_MINICART_PRODUCT_PAGE = 'cart_minicart_product_page';\n\nfunction getApplicablePageType() {\n var isCheckoutPage = Boolean(document.getElementById('checkout-main'));\n // It is so, since MiniCart is exists on all mentioned pages\n var isCartMiniCartProductPage = Boolean(document.getElementsByClassName('minicart').length);\n var currentPageType;\n\n if (isCheckoutPage) {\n currentPageType = CHECKOUT_PAGE;\n } else if (isCartMiniCartProductPage) {\n currentPageType = CART_MINICART_PRODUCT_PAGE;\n }\n\n return currentPageType;\n}\n\nfunction createGeneralClientInstancePromise() {\n var applycablePageType = getApplicablePageType();\n var clientToken = null;\n var clientInstancePromise = null;\n\n // eslint-disable-next-line default-case\n switch (applycablePageType) {\n case CHECKOUT_PAGE:\n var $billingElement = document.querySelector('.summary-details.billing');\n\n clientToken = $billingElement.getAttribute('data-bt-client-token');\n break;\n\n case CART_MINICART_PRODUCT_PAGE:\n var $btExpressCheckoutPayPalButtonWrapper = document.querySelector('.braintree-cart-paypal-buttons-wrap');\n var $btAccountPayPalButtonWrapper = document.querySelector('.js_braintree_accountPaypalButton_wrapper');\n\n if ($btExpressCheckoutPayPalButtonWrapper) {\n clientToken = $btExpressCheckoutPayPalButtonWrapper.getAttribute('data-bt-client-token');\n } else if ($btAccountPayPalButtonWrapper) {\n clientToken = $btAccountPayPalButtonWrapper.getAttribute('data-bt-client-token');\n }\n break;\n }\n\n if (clientToken) {\n clientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n }\n\n return clientInstancePromise;\n}\n\n/**\n * Method override default SFRA payment-details filling behavior.\n * Method fill payment-details block with the right payment methdo data (like name, account, etc.)\n */\nfunction fillPaymentSammaryContainer() {\n var $summaryDetails = document.querySelector('.summary-details .payment-details');\n\n if ($summaryDetails) {\n $summaryDetails.classList.add('braintree-payment-details');\n $summaryDetails.classList.remove('payment-details');\n\n $('body').on('checkout:updateCheckoutView', helper.updateCheckoutView);\n }\n}\n\n/**\n * May be used for all payment methods\n * Create error container and append it after PayPal button\n * @param {string} payPalButtonSelector selector of PayPal button\n * @returns {Object} return created error container\n */\nfunction createErrorContainerAfterPayPalButton(payPalButtonSelector) {\n var $errorContainer = document.createElement('div');\n var $payPalButton = document.querySelector(payPalButtonSelector);\n\n $errorContainer.classList.add('alert-danger');\n $errorContainer.style.cssText = 'text-align: center';\n\n $payPalButton.parentNode.insertBefore($errorContainer, $payPalButton.nextSibling);\n\n return $errorContainer;\n}\n\n/**\n * Init behavior which should be triggered when buyer clicked on Payment Method tab.\n * Currently we handle billing address modification enabling/disabling.\n * We also have init behavior of \"Submit Payment\" button\n */\nfunction initPaymentMethodTabClickBehavior() {\n $('.payment-options .nav-item').click(function () {\n var selectedMethodID = $(this).data('method-id');\n var $payPalAccountList = document.querySelector('#braintreePaypalAccountsList');\n var localPaymentMethodsList = [\n 'sepa',\n 'bancontact',\n 'eps',\n 'giropay',\n 'ideal',\n 'mybank',\n 'p24',\n 'sofort'\n ];\n\n if (selectedMethodID !== 'PayPal') {\n // Undo address selection which was done via \"displaySelectedStoredBillingAddress\" for PayPal PM\n payPalStoredBillingAddressComponent.selectDefaultBillingAddressOption();\n }\n\n if (localPaymentMethodsList.includes(selectedMethodID)) {\n selectedMethodID = 'LPM';\n }\n\n switch (selectedMethodID) {\n case 'PayPal':\n var $selectedPayPalAccountOption = $payPalAccountList.options[$payPalAccountList.selectedIndex];\n // Disabled billing address functionality on billing page\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\n\n // Submit Payment button behavior\n var isAccountListHidden = document.querySelector('.braintree_used_paypal_account').classList.contains('used-paypal-account-hide');\n\n if (isAccountListHidden) {\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\n } else if (!payPalListHelper.isNewPayPalAccountOptionSelected()) {\n paymentMethodGeneralHelper.showSubmitPaymentButton();\n } else {\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\n }\n\n // Display billing address of selected PayPal account ONLY for STORED PP accounts use-case\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress($selectedPayPalAccountOption);\n break;\n\n case 'GooglePay':\n googlePayHelper.googlePayContentTabHandler(true);\n // Disabled billing address functionality on the Billing Page\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\n break;\n\n case 'SRC':\n srcHelper.srcContentTabHandler(true);\n // Disabled billing address functionality on Billing Page\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\n break;\n\n case 'ApplePay':\n applePayHelper.toggleContinueButtonOnBillingPage();\n // Disabled billing address functionality on the Billing Page\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\n break;\n\n case 'CREDIT_CARD':\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\n\n // Submit Payment button behavior\n paymentMethodGeneralHelper.showSubmitPaymentButton();\n break;\n case 'Venmo':\n var isBtVenmoAccountsList = Boolean(document.querySelector('#braintreeVenmoAccountsList'));\n var isSessionAccountExist = Boolean(document.querySelector('.used-venmo-account'));\n // Handles continue button visibility on the Billing Page in Venmo tab\n // Case for the registered user with saved account\n if (isBtVenmoAccountsList) {\n venmoHelper.venmoContentTabHandler();\n } else if (isSessionAccountExist) {\n // Case when only session account exist without saved account\n helper.continueButtonToggle(false);\n } else {\n // Case when no session/saved account exist and Venmo button is shown\n helper.continueButtonToggle(true);\n }\n\n // Enabled billing address functionality on the Billing Page\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\n break;\n case 'LPM':\n // Enabled billing address functionality on the Billing Page\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\n break;\n default:\n // Enabled billing address functionality on the Billing Page\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\n }\n });\n}\n\n/**\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\n * @param {string} email email from payment method's response\n * @returns {Object} customer form data\n */\nfunction createCustomerFormData(email) {\n var data = {\n email: email\n };\n\n var csrfToken = document.querySelector('.braintree-cart-buttons-wrap #csrf_token');\n var checkoutCustomerFormFields = document.querySelector('.braintree-cart-buttons-wrap').getAttribute('data-checkout-customer-form-fields');\n var customerFormData = helper.createPaymentFormData(checkoutCustomerFormFields, data);\n\n customerFormData.append(csrfToken.name, csrfToken.value);\n\n return customerFormData;\n}\n\n/**\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\n * @param {string} email email from payment method's response\n * @returns {Ajax} ajax call to CheckoutServices-SubmitCustomer endpoint\n */\nfunction submitCustomerForm(email) {\n var buttonsWrapper = document.querySelector('.braintree-cart-buttons-wrap');\n var isCustomerEmailEmpty = JSON.parse(buttonsWrapper.getAttribute('data-is-customer-email-empty'));\n // Could be \"true\" only in case if email in basket is empty (first guest checkout from cart)\n if (isCustomerEmailEmpty) {\n var submitCustomerUrl = buttonsWrapper.getAttribute('data-checkout-submit-customer-url');\n var customerFormData = createCustomerFormData(email);\n\n return $.ajax({\n type: 'POST',\n url: submitCustomerUrl,\n data: customerFormData,\n contentType: false,\n processData: false\n });\n }\n}\n\nmodule.exports = {\n createGeneralClientInstancePromise,\n fillPaymentSammaryContainer,\n createErrorContainerAfterPayPalButton,\n initPaymentMethodTabClickBehavior,\n submitCustomerForm\n};\n","'use strict';\n\nfunction hideBillingAddressManipulationButtons() {\n document.querySelector('.address-selector-block .btn-show-details').style.display = 'none';\n document.querySelector('.address-selector-block .btn-add-new').style.display = 'none';\n}\n\nfunction showBillingAddressManipulationButtons() {\n document.querySelector('.address-selector-block .btn-show-details').style.display = '';\n document.querySelector('.address-selector-block .btn-add-new').style.display = '';\n}\n\nfunction disableBillingAddressList() {\n document.getElementById('billingAddressSelector').setAttribute('disabled', 'disabled');\n}\n\nfunction enableBillingAddressList() {\n document.getElementById('billingAddressSelector').removeAttribute('disabled');\n}\n\nfunction hideSubmitPaymentButton() {\n document.querySelector('.submit-payment').style.display = 'none';\n}\n\nfunction showSubmitPaymentButton() {\n document.querySelector('.submit-payment').style.display = '';\n}\n\n/**\n * Hides biiling address form on the Billing Page for appropriate tabs.\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\n */\nfunction hideBillingAddressForm() {\n document.querySelector('.billing-address-block .billing-address').style.display = 'none';\n}\n\n/**\n * Shows biiling address form on the Billing Page for appropriate tabs.\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\n */\nfunction showBillingAddressForm() {\n document.querySelector('.billing-address-block .billing-address').style.display = '';\n}\n\n/**\n * Hides phone field on the Billing Page for appropriate tabs\n */\nfunction hidePhoneField() {\n document.querySelector('.dwfrm_billing_contactInfoFields_phone').style.display = 'none';\n}\n\n/**\n * Shows phone field on the Billing Page for appropriate tabs\n */\nfunction showPhoneField() {\n document.querySelector('.dwfrm_billing_contactInfoFields_phone').style.display = '';\n}\n\n/**\n * Disabled billing address functionality on the Billing Page\n */\nfunction disableBillingAddressFunctionality() {\n //disableBillingAddressList();\n //hideBillingAddressManipulationButtons();\n //hideBillingAddressForm();\n //hidePhoneField();\n}\n\n/**\n * Enabled billing address functionality on the Billing Page\n */\nfunction enableBillingAddressFunctionality() {\n showBillingAddressManipulationButtons();\n enableBillingAddressList();\n showBillingAddressForm();\n showPhoneField();\n}\n\nmodule.exports = {\n disableBillingAddressFunctionality,\n enableBillingAddressFunctionality,\n hideBillingAddressManipulationButtons,\n showBillingAddressManipulationButtons,\n disableBillingAddressList,\n enableBillingAddressList,\n hideBillingAddressForm,\n showBillingAddressForm,\n hideSubmitPaymentButton,\n showSubmitPaymentButton,\n hidePhoneField,\n showPhoneField\n};\n","'use strict';\n\n/* global paypal braintree $ */\n\n/**\n * Function creates PayPal Checkout instance\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model. Is needed to have customize CheckoutInstance generation\n * depending on PayPalPaymentProcessing instance congfigs\n * @returns {Promise} Promise with PayPal Checkout Instance\n */\nfunction createPayPalCheckoutInstance(btClientInstancePromise, payPalPaymentProcessingModal) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n var payPalCheckoutConfigs = payPalPaymentProcessingModal.payPalCheckoutInstanceConfigs(btClientInstance);\n\n return braintree.paypalCheckout.create(payPalCheckoutConfigs);\n });\n}\n\n/**\n * Creates PayPal button style configs\n * @param {Object} btPayPalConfigurations Configurations of PayPal button\n * @returns {Object} Style configs with the right format\n */\nfunction createPayPalStyleConfigurations(btPayPalConfigurations) {\n var payPalButtonStyleConfigs = btPayPalConfigurations.paypalConfig.style;\n\n return {\n height: payPalButtonStyleConfigs.height,\n color: payPalButtonStyleConfigs.color,\n shape: payPalButtonStyleConfigs.shape,\n layout: payPalButtonStyleConfigs.layout,\n label: payPalButtonStyleConfigs.label,\n tagline: payPalButtonStyleConfigs.tagline\n };\n}\n\n/**\n * Callback which is came from PayPal configuratinos. Should trigger only \"enable\" action\n * @param {Object} validateActions Object from Braintree\n */\nvar payPalFormValidationConrol = function (validateActions) {\n var isFormValid = true;\n\n if (isFormValid) {\n validateActions.enable();\n } else {\n validateActions.disable();\n }\n};\n\n/**\n * Returns PayPal button behavior configs which are used when VaultMode is enabled\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\n * @returns {Object} Object with PayPal button configs & callbacks wich will handle PayPal button behavior\n */\nfunction getVaultModeButtonConfigurations(\n btPayPalCheckoutInstance,\n btPayPalConfigurations,\n payPalPaymentProcessingModal\n) {\n var payPalButtonStyleConfigs = createPayPalStyleConfigurations(btPayPalConfigurations);\n var vaultModePayPalButtonConfigs = {\n onClick: function (_, actions) {\n return payPalPaymentProcessingModal.onPayPalButtonClickCallback(_, actions);\n },\n createBillingAgreement: function () {\n // Logic which executed after buyer clicked on the button, and PayPal modal start loading\n // \"onOrderCreateCallback\" is used for forming of order data object\n var paymentObject = payPalPaymentProcessingModal.onOrderCreateCallback();\n\n return btPayPalCheckoutInstance.createPayment(paymentObject);\n },\n onApprove: function (data) {\n // Some logic here before tokenization happens below\n return btPayPalCheckoutInstance.tokenizePayment(data)\n .then(function (payload) {\n payPalPaymentProcessingModal.onApprovePaymentCallback(payload);\n });\n },\n onCancel: function () {\n payPalPaymentProcessingModal.onCancelPaymentCallback();\n },\n\n onError: function (err) {\n payPalPaymentProcessingModal.onErrorPaymentCallback(err);\n },\n style: payPalButtonStyleConfigs,\n validate: function (validateActions) {\n payPalFormValidationConrol(validateActions);\n }\n };\n\n return vaultModePayPalButtonConfigs;\n}\n\n/**\n * Returns PayPal button behavior configs which are used when VaultMode is disabled or \"Checkout with Vault\" is enabled\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\n * @returns {Object} Object with PayPal button configs & callbacks wich will handle PayPal button behavior\n */\nfunction getCheckoutModeButtonConfigurations(\n btPayPalCheckoutInstance,\n btPayPalConfigurations,\n payPalPaymentProcessingModal\n) {\n var payPalButtonStyleConfigs = createPayPalStyleConfigurations(btPayPalConfigurations);\n var vaultModePayPalButtonConfigs = {\n onClick: function (_, actions) {\n return payPalPaymentProcessingModal.onPayPalButtonClickCallback(_, actions);\n },\n createOrder: function () {\n // Logic which executed after buyer clicked on the button, and PayPal modal start loading\n // \"onOrderCreateCallback\" is used for forming of order data object\n var paymentObject = payPalPaymentProcessingModal.onOrderCreateCallback();\n\n return btPayPalCheckoutInstance.createPayment(paymentObject);\n },\n onApprove: function (data) {\n // Some logic here before tokenization happens below\n return btPayPalCheckoutInstance.tokenizePayment(data)\n .then(function (payload) {\n payPalPaymentProcessingModal.onApprovePaymentCallback(payload);\n });\n },\n onCancel: function () {\n payPalPaymentProcessingModal.onCancelPaymentCallback();\n },\n\n onError: function (err) {\n payPalPaymentProcessingModal.onErrorPaymentCallback(err);\n },\n style: payPalButtonStyleConfigs,\n validate: function (validateActions) {\n payPalFormValidationConrol(validateActions);\n }\n };\n\n return vaultModePayPalButtonConfigs;\n}\n\n/**\n * Function which result is rendered PayPal button\n * @param {Promise} btClientInstancePromise Client instance promise\n * @param {boolean} isVaultMode \"true\" in case if VaultMode is enabled\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {string} payPalButtonSelector PayPal button selector (container inside of which PayPal button will be rendered)\n * @param {Object} payPalPaymentProcessingModal instance of PayPalPaymentProcessing model\n * @returns {Promise} PayPal button\n */\nfunction payPalButtonRendering(\n btClientInstancePromise,\n isVaultMode,\n btPayPalConfigurations,\n payPalButtonSelector,\n payPalPaymentProcessingModal\n) {\n var btPayPalCheckoutInstancePromise = createPayPalCheckoutInstance(btClientInstancePromise, payPalPaymentProcessingModal);\n\n var paypalButtonConfigs = null;\n var paypalButtonSdkUrlConfigs = null;\n\n var changePMButtonEnabled = payPalPaymentProcessingModal.changePMButtonEnabled;\n\n return btPayPalCheckoutInstancePromise\n .then(function (btPayPalCheckoutInstance) {\n // Change Paymnet Method button flow (checkout with vault flow)\n if (changePMButtonEnabled) {\n paypalButtonConfigs = getCheckoutModeButtonConfigurations(\n btPayPalCheckoutInstance,\n btPayPalConfigurations,\n payPalPaymentProcessingModal\n );\n paypalButtonSdkUrlConfigs = payPalPaymentProcessingModal.payPalCheckoutSdkConfigs();\n // If vault mode\n } else if (isVaultMode) {\n paypalButtonConfigs = getVaultModeButtonConfigurations(\n btPayPalCheckoutInstance,\n btPayPalConfigurations,\n payPalPaymentProcessingModal\n );\n paypalButtonSdkUrlConfigs = payPalPaymentProcessingModal.payPalVaultSdkConfigs();\n // If checkout mode\n } else {\n paypalButtonConfigs = getCheckoutModeButtonConfigurations(\n btPayPalCheckoutInstance,\n btPayPalConfigurations,\n payPalPaymentProcessingModal\n );\n paypalButtonSdkUrlConfigs = payPalPaymentProcessingModal.payPalCheckoutSdkConfigs();\n }\n\n // PayPal button loading\n if (!window.isPayPalSDKLoaded) {\n // We pass params to customize PayPal SDK loading.\n btPayPalCheckoutInstance.loadPayPalSDK(paypalButtonSdkUrlConfigs).then(function () {\n window.isPayPalSDKLoaded = true;\n // eslint-disable-next-line new-cap\n return paypal.Buttons(paypalButtonConfigs).render(payPalButtonSelector);\n });\n } else {\n // In case if PayPal SDK was already loaded (with custom parameters), we can simple load PP button\n // eslint-disable-next-line new-cap\n return paypal.Buttons(paypalButtonConfigs).render(payPalButtonSelector);\n }\n });\n}\n\nmodule.exports = {\n payPalButtonRendering\n};\n","'use strict';\n\nvar PayPalAccountModel = require('../models/payPalAccountModel');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\nvar payPalAccountPageHelper = require('../helpers/payPalAccountPageHelper');\nvar helper = require('../../helper');\nvar loaderInstance = require('../../loaderHelper');\n\n/**\n * Init add new PayPal account button\n * @param {Object} PayPalAccount PayPal Account model instance\n */\nfunction initAddNewPayPalAccountEvent(PayPalAccount) {\n var $addNewPayPalAccountButton = document.querySelector('.add-paypal-account');\n\n $addNewPayPalAccountButton.addEventListener('click', function () {\n payPalAccountPageHelper.showPayPalAccountBtn();\n\n if (!window.accountPayPalButtonInited) {\n window.accountPayPalButtonInited = true;\n PayPalAccount.initPayment();\n }\n });\n}\n\n/**\n * Init remove PayPal account button\n */\nfunction initRemovePayPalAccountEvent() {\n $(document).on('click', '.remove-bt-payment.paypal', function (e) {\n helper.removeBtPayment(e);\n });\n\n $(document).on('click', '.paypal-accounts .delete-payment-btn', function (e) {\n helper.deletePayment(e);\n });\n}\n\n/**\n * Init Make Default PayPal account button\n */\nfunction initMakeDefaultPayPalAccountEvent() {\n $(document).on('click', '.paypal-accounts .braintree-make-default-card', function () {\n var $this = $(this);\n var makeDefaultUrl = $this.data('make-default-url');\n var paymentMehtodId = $this.data('id');\n var paymentProcessorId = $('.paypal-accounts').data('payment-method-id');\n var loaderContainer = document.querySelector('#paypalAccountBtLoader');\n var loader = loaderInstance(loaderContainer);\n\n loader.show();\n\n helper.setDefaultProperty({\n url: makeDefaultUrl,\n id: paymentMehtodId,\n paymentMethodID: paymentProcessorId,\n loader\n });\n });\n}\n\n/**\n * Function which initiate PayPal functionality on the Account Page\n * @param {Object} btClientInstancePromise BT Client Instance promise\n */\nfunction init(btClientInstancePromise) {\n var payPalButtonSelector = '.js_braintree_accountPaypalButton_wrapper .js_braintree_accountPaypalButton';\n var $payPalButton = document.querySelector(payPalButtonSelector);\n\n if ($payPalButton) {\n var payPalConfigurations = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n var addPayPalAccountUrl = $payPalButton.getAttribute('data-paypal-add-account-handler');\n\n var isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n var requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement);\n var isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n let $csrfToken = document.querySelector('.js_braintree_accountPaypalButton_wrapper #csrf_token');\n var $loaderContainer = document.querySelector('#braintreePayPalAccLoader');\n\n // Init params for AccountErrorHandling model\n var errorMessages = payPalConfigurations.messages;\n\n var ErrorHandling = new ErrorHandlingBaseModel(errorMessages);\n var PayPalAccount = new PayPalAccountModel(\n ErrorHandling,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n addPayPalAccountUrl,\n $loaderContainer\n );\n\n initAddNewPayPalAccountEvent(PayPalAccount);\n initRemovePayPalAccountEvent();\n initMakeDefaultPayPalAccountEvent();\n\n if ($('.add-paypal-account').length != 0) {\n if ($('.creditcard-tab').length == 0) {\n $('.paypal-tab').trigger('click');\n }\n\n $('.add-paypal-account').trigger('click');\n $('.js-payment-block').removeClass('d-none');\n }\n\n return;\n }\n\n var isVenmoAccountBlockExists = Boolean(document.querySelector('.paypal-accounts'));\n\n if (isVenmoAccountBlockExists) {\n initRemovePayPalAccountEvent();\n initMakeDefaultPayPalAccountEvent();\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n// For cases when basket amount changing without page reload\nvar dynamicBasketProductQuantity = -1;\n\n/**\n * Hide PayPal button\n * @param {Object} $payPalButton PayPal button js container\n */\nfunction hidePayPalButton($payPalButton) {\n $payPalButton.style.display = 'none';\n}\n\n/**\n * Show PayPal button\n * @param {Object} $payPalButton PayPal button js container\n */\nfunction showPayPalButton($payPalButton) {\n $payPalButton.style.display = '';\n}\n\n/**\n * Check if PDP product price is zero\n * @returns {boolean} \"true\" in case if PDP product price is zero\n */\nfunction isZeroPdpProductPrice() {\n var $productPriceSelector = document.querySelector('.price .sales .value');\n\n if ($productPriceSelector) {\n var price = parseInt($productPriceSelector.getAttribute('content'), 0);\n return !(price > 0);\n }\n\n return true;\n}\n\n/**\n * Check if basket is empty based on attr which comes from server and \"dynamicBasketProductQuantity\" which updates on \"cart:update\" event\n * @param {Object} $payPalButton PayPal button js container\n * @returns {boolean} \"true\" in case if basket is not empty\n */\nfunction isBasketNotEmpty($payPalButton) {\n return !JSON.parse($payPalButton.getAttribute('data-is-basket-empty')) || (dynamicBasketProductQuantity > 0 && dynamicBasketProductQuantity !== -1);\n}\n\n/**\n * Is add to cart button disabled\n * @returns {boolean} \"true\" in case if add to cart button disabled\n */\nfunction isAddToCartButtonDisabled() {\n var $addToCartButton = document.querySelector('.add-to-cart') || document.querySelector('.add-to-cart-global');\n\n return $addToCartButton.disabled;\n}\n\n/**\n * Return mini cart quantity\n * @param {Object} $miniCartQuantitySelector Mini cart quantity selector\n * @returns {Int} Quantity\n */\nfunction getMiniCartQuantity($miniCartQuantitySelector) {\n var quantity = null;\n\n if ($miniCartQuantitySelector) {\n quantity = parseInt($miniCartQuantitySelector.textContent, 0);\n }\n\n return quantity;\n}\n\n/**\n * Check if current total basket price is zero\n * @returns {boolean} \"true\" in case if current total basket price is zero\n */\nfunction isCurrentTotalBasketPriceZero() {\n var $basketTotalAmount = document.querySelector('.sub-total');\n\n if ($basketTotalAmount) {\n var basketTotalAmount = $basketTotalAmount.textContent.slice(1);\n\n return parseInt(basketTotalAmount, 10) === 0;\n }\n}\n\n/**\n * Show or hide PayPal button\n * @param {Object} paypalMinicartButton paypal button js container\n */\nfunction paypalMinicartButtonBehavior(paypalMinicartButton) {\n if (!isCurrentTotalBasketPriceZero()) {\n showPayPalButton(paypalMinicartButton);\n } else {\n hidePayPalButton(paypalMinicartButton);\n }\n}\n\n/**\n * Init PayPal button display behavior. This code is handle both PayPal button on PDP and MiniCart pages\n * @param {Object} $payPalButton PayPal button js container\n */\nfunction initProductPage($payPalButton) {\n var addToCartButtonDisabled = isAddToCartButtonDisabled();\n var zeroProductPrice = isZeroPdpProductPrice();\n var basketNotEmpty = isBasketNotEmpty($payPalButton);\n\n if (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\n hidePayPalButton($payPalButton);\n }\n\n $('body').on('product:afterAddToCart', function () {\n hidePayPalButton($payPalButton);\n });\n\n // Case when buyer remove product from Cart\n $('body').on('cart:update', function (_, data) {\n var $miniCartQuantityContainer = document.querySelector('.minicart-quantity');\n var miniCartQuantity = getMiniCartQuantity($miniCartQuantityContainer);\n var addToCartButtonEnabled = !isAddToCartButtonDisabled();\n zeroProductPrice = isZeroPdpProductPrice();\n\n if (data.basket) {\n dynamicBasketProductQuantity = data.basket.numItems;\n }\n\n if (miniCartQuantity === 0 && addToCartButtonEnabled && !zeroProductPrice) {\n showPayPalButton($payPalButton);\n } else {\n hidePayPalButton($payPalButton);\n }\n });\n\n // When buyer change collor/size of the product on PDP\n $('body').on('product:statusUpdate', function () {\n addToCartButtonDisabled = isAddToCartButtonDisabled();\n zeroProductPrice = isZeroPdpProductPrice();\n\n if (addToCartButtonDisabled || zeroProductPrice) {\n hidePayPalButton($payPalButton);\n } else {\n showPayPalButton($payPalButton);\n }\n });\n}\n\nmodule.exports = {\n initProductPage,\n paypalMinicartButtonBehavior\n};\n","'use strict';\n\nvar PayPalCartModel = require('../models/payPalCartModel');\nvar ErrorHandlingCartModel = require('../errorhandler/errorHandlingCartModel');\n\n/**\n * Initialize Cart page PayPal button\n * @param {Promise} clientInstancePromise Client instance promise\n */\nfunction init(clientInstancePromise) {\n var payPalButtonSelector = '.cart-page .js_braintree_paypal_cart_button';\n var $payPalButton = document.querySelector(payPalButtonSelector);\n var payPalConfigurations = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n\n var isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n var requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement);\n var isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n var $csrfToken = document.querySelector('.braintree-cart-paypal-buttons-wrap #csrf_token');\n var $loaderContainer = document.querySelector('.braintreePayPalLoader');\n\n var ErrorHandling = new ErrorHandlingCartModel(payPalConfigurations.messages);\n var PayPalExpress = new PayPalCartModel(\n ErrorHandling,\n clientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n );\n\n // Generate Fraud Data if enabled\n PayPalExpress.generateFraudData();\n // Init PayPal button\n PayPalExpress.initPayment();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar PayPalCheckoutModel = require('../models/payPalCheckoutModel');\nvar ErrorHandlingCheckoutModel = require('../errorhandler/errorHandlingCheckoutModel');\nvar payPalAccountList = require('./payPalList');\n\nvar braintreeClientInstancePromise;\nvar payPalConfigs;\n\n/**\n * Initialize Checkout PayPal button functionality\n * @param {Promise} btClientInstancePromise BT Client Instance promise\n * @param {Object} payPalConfigurations PayPal checkout configurations object\n */\nfunction initCheckout(btClientInstancePromise, payPalConfigurations) {\n var payPalButtonSelector = '.js_braintree_paypal_billing_button';\n var $continueButton = document.querySelector('button.submit-payment');\n\n var isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n var requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement);\n var isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n var $loaderContainer = document.querySelector('.braintreePayPalLoader');\n\n var ErrorHandling = new ErrorHandlingCheckoutModel(payPalConfigurations.messages);\n var PayPalCheckoutPayment = new PayPalCheckoutModel(\n ErrorHandling,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $continueButton,\n $loaderContainer\n );\n\n // Init account list\n payPalAccountList.init();\n // Generate Fraud Data if enabled\n PayPalCheckoutPayment.generateFraudData();\n // Init PayPal button\n PayPalCheckoutPayment.initPayment();\n}\n\n/**\n * Initialize Checkout PayPal button functionality.\n * Additional code was added which is used for total amount extracting which is needed for \"Change Payment Method button\" feature\n * @param {Promise} btClientInstancePromise BT Client Instance promise\n */\nfunction init(btClientInstancePromise) {\n var $payPalButton = document.querySelector('.js_braintree_paypal_billing_button');\n var $paypalTab = $('.payment-options .nav-item[data-method-id=\"PayPal\"]');\n var sessionPaymentMethodId;\n\n payPalConfigs = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n braintreeClientInstancePromise = btClientInstancePromise;\n sessionPaymentMethodId = payPalConfigs.sessionPaymentMethodId;\n\n // To load PayPal button only when buyer click (or from code) on PayPal Checkout tab\n $paypalTab.click(function () {\n var selectedMethodID = $(this).data('method-id');\n\n if (selectedMethodID === 'PayPal' && !window.payPalCheckoutWasInited) {\n window.payPalCheckoutWasInited = true;\n\n initCheckout(braintreeClientInstancePromise, payPalConfigs);\n }\n });\n\n // Case when buyer use 'ChangePM' button\n // After click we select PayPal PM and init the rest of PP logic\n if (sessionPaymentMethodId === 'PayPal') {\n $paypalTab.trigger('click');\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar payPalSessionAccountComponent = require('./payPalSessionAccount');\nvar payPalStoredBillingAddressComponent = require('./payPalStoredBillingAddress');\nvar {\n isVaultModeEnabled,\n isOrderIntentEnabled,\n getAccountType,\n setNonceInputValue,\n hideSavePayPalAccountBlock,\n displaySavePayPalAccountBlock,\n displayPayPalButton,\n hidePayPalButon,\n displayContinueButton,\n hideContinueButon,\n isBuyerAuthenticated,\n selectPayPalCheckoutTab,\n setBraintreePayPalEmailInput,\n handleStoredAccountsShowing\n} = require('../helpers/payPalListHelper');\nvar billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\n\nvar $payPalAccountList;\nvar $continueButton;\nvar $savePaypalAccountCountainer;\nvar $braintreePayPalNonce;\nvar $paypalButton;\nvar $payPalTab;\nvar $braintreePaypalEmail;\n\nvar constantList = {\n SESSION_ACCOUNT: 'session_account',\n NEW_ACCOUNT: 'new_account',\n STORED_ACCOUNT: 'stored_account'\n};\n\n/**\n * The function which manages what should be done when session/stored/new account was selected from the account dropdown\n */\nfunction accountsListChange() { // eslint-disable-line require-jsdoc\n var accountType = getAccountType($payPalAccountList, constantList);\n var storedAccountWithSessionAccountEmail = billingFormHelper.getStoredAccountBySesionAccountEmail();\n var buyerAuthentificated = isBuyerAuthenticated($payPalAccountList);\n var vaultModeEnabled = isVaultModeEnabled($paypalButton);\n var orderIntentEnabled = isOrderIntentEnabled($paypalButton);\n var $selectedPayPalAccountOption = $payPalAccountList.options[$payPalAccountList.selectedIndex];\n\n $continueButton.removeEventListener('click', payPalSessionAccountComponent.removeSessionNonce);\n\n // eslint-disable-next-line default-case\n switch (accountType) {\n // Buyer selected new PayPal account\n case constantList.NEW_ACCOUNT:\n displayPayPalButton($paypalButton);\n hideContinueButon($continueButton);\n\n if (vaultModeEnabled && buyerAuthentificated && !orderIntentEnabled) {\n displaySavePayPalAccountBlock($savePaypalAccountCountainer);\n }\n break;\n\n // Buyer selected session account\n case constantList.SESSION_ACCOUNT:\n var $selectedOption = $payPalAccountList.selectedOptions[0];\n var selectedOptionNonceValue = $selectedOption.getAttribute('data-nonce');\n\n setNonceInputValue($braintreePayPalNonce, selectedOptionNonceValue);\n displayContinueButton($continueButton);\n hidePayPalButon($paypalButton);\n\n // A case when a buyer re-added a PayPal account that he already had saved (session account\n // has the same email as stored accoutnt)\n if (vaultModeEnabled && buyerAuthentificated && !orderIntentEnabled) {\n if (storedAccountWithSessionAccountEmail) {\n hideSavePayPalAccountBlock($savePaypalAccountCountainer);\n } else {\n displaySavePayPalAccountBlock($savePaypalAccountCountainer);\n }\n }\n\n selectPayPalCheckoutTab($payPalTab);\n break;\n\n // Buyer selected stored account\n case constantList.STORED_ACCOUNT:\n var selectedAccountEmail = $selectedPayPalAccountOption.text;\n\n if (vaultModeEnabled && !orderIntentEnabled) {\n hideSavePayPalAccountBlock($savePaypalAccountCountainer);\n }\n\n setNonceInputValue($braintreePayPalNonce, '');\n displayContinueButton($continueButton);\n hidePayPalButon($paypalButton);\n\n selectPayPalCheckoutTab($payPalTab);\n setBraintreePayPalEmailInput($braintreePaypalEmail, selectedAccountEmail);\n\n // Display billing address of selected PayPal account\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress($selectedPayPalAccountOption);\n\n $continueButton.addEventListener('click', payPalSessionAccountComponent.removeSessionNonce);\n break;\n }\n}\n\n/**\n * Init PayPal Account list functionality\n */\nfunction init() {\n $payPalAccountList = document.querySelector('#braintreePaypalAccountsList');\n $savePaypalAccountCountainer = document.querySelector('#braintreeSavePaypalAccountContainer');\n $braintreePayPalNonce = document.querySelector('#braintreePayPalNonce');\n $paypalButton = document.querySelector('.js_braintree_paypal_billing_button');\n $continueButton = document.querySelector('button.submit-payment');\n $payPalTab = document.querySelector('.paypal-tab');\n $braintreePaypalEmail = document.querySelector('#braintreePaypalEmail');\n var buyerAuthenticated = isBuyerAuthenticated($payPalAccountList);\n\n // Add on change \"account list\" event\n $payPalAccountList.addEventListener('change', accountsListChange);\n // Execute \"account list\" change function to setup init values\n accountsListChange();\n // Check whether buyer has proceeded with the same email which is already stored\n // if yes we hide stored account with the same email in dropdown\n // if no we show all existent PP accounts in dropdown (stored + new session account)\n handleStoredAccountsShowing(buyerAuthenticated);\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar PayPalExpressModel = require('../models/payPalExpressModel');\nvar ErrorHandlingMiniCartModel = require('../errorhandler/errorHandlingMiniCartModel');\nvar paymentMethodGeneral = require('../../paymentMethodGeneral');\nvar paypalMinicartButtonBehavior = require('./payPalButtonDisplayBehavior');\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Init PayPal on the MiniCart Page\n * @returns stop function execution in case if PayPal button wasn't rendered\n */\nfunction initPayPalOnMiniCart() {\n var $paypalMinicartButton = document.querySelector('.paypalMinicartButton');\n var payPalButtonSelector = '.paypalMinicartButton .js_braintree_paypal_cart_button';\n var $payPalButton = document.querySelector(payPalButtonSelector);\n\n if (!$payPalButton) {\n return;\n }\n\n // Case when buyer remove product from the Cart\n $('body').on('cart:update', function () {\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\n });\n\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\n\n var payPalConfigurations = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n var isPayPalButtonWasInited = JSON.parse($payPalButton.getAttribute('data-is-inited'));\n\n // Do not init PayPal button if it was already inited or PayPal configs are empty\n if (isPayPalButtonWasInited || typeof payPalConfigurations !== 'object' || payPalConfigurations === null) {\n return;\n }\n\n var isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n var requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement);\n var isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n var $csrfToken = document.querySelector('.braintree-cart-paypal-buttons-wrap #csrf_token');\n var $loaderContainer = document.querySelector('.braintreePayPalLoader');\n\n var clientInstancePromise = paymentMethodGeneral.createGeneralClientInstancePromise();\n\n var ErrorHandling = new ErrorHandlingMiniCartModel(payPalConfigurations.messages);\n var PayPalExpress = new PayPalExpressModel(\n ErrorHandling,\n clientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n );\n\n // Generate Fraud Data if enabled\n PayPalExpress.generateFraudData();\n\n // Init PayPal button\n PayPalExpress.initPayment();\n\n // Indicate that PayPal button was already inited.\n $payPalButton.setAttribute('data-is-inited', true);\n}\n\n/**\n * Init PayPal button on the MiniCart Page\n */\nfunction init() {\n var $minicartPopover = document.querySelector('.minicart .popover');\n var observer;\n\n // To avoid executino of this code on checkout page\n if ($minicartPopover) {\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.addedNodes.length < 2) {\n return;\n }\n\n initPayPalOnMiniCart();\n });\n });\n\n observer.observe($minicartPopover, { childList: true });\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar PayPalProductPageModel = require('../models/payPalProductPageModel');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\nvar payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\n\n/**\n * Init PayPal button on the Product Page\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction init(clientInstancePromise) {\n var payPalButtonSelector = '.prices-add-to-cart-actions .js_braintree_paypal_cart_button';\n var $payPalButton = document.querySelector(payPalButtonSelector);\n var payPalConfigurations = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n\n var isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n var requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement);\n var isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n var $csrfToken = document.querySelector('.braintree-cart-paypal-buttons-wrap #csrf_token');\n var $loaderContainer = document.querySelector('.braintreePayPalLoader');\n\n var ErrorHandling = new ErrorHandlingBaseModel(payPalConfigurations.messages);\n var PayPalProductPage = new PayPalProductPageModel(\n ErrorHandling,\n clientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n );\n\n // Init behavior for hide/show PayPal button\n payPalButtonDisplayBehavior.initProductPage($payPalButton);\n // Generate Fraud Data if enabled\n PayPalProductPage.generateFraudData();\n // Init PayPal button\n PayPalProductPage.initPayment();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar payPalSessionAccountHelper = require('../helpers/payPalSessionAccountHelper');\n\n/**\n * Function which remove session nonce and related to the session account data\n */\nfunction removeSessionNonce() {\n var $braintreePayPalNonce = document.querySelector('#braintreePayPalNonce');\n var $braintreePaypalAccount = document.querySelector('#braintreePaypalAccount');\n\n var sessionOption = helper.getSessionAccountOption({\n querySelector: '#braintreePaypalAccountsList',\n id: 'braintreePaypalAccount'\n });\n\n if (sessionOption) {\n $braintreePayPalNonce.value = '';\n $braintreePaypalAccount.selected = false;\n\n sessionOption.classList.add('used-paypal-account-hide');\n sessionOption.classList.remove('used-paypal-account');\n sessionOption.value = '';\n sessionOption.text = '';\n sessionOption.setAttribute('data-session-account', false);\n sessionOption.setAttribute('data-save', false);\n\n // Handles a behavior inside PayPal tab, when session PayPal account was deleted\n payPalSessionAccountHelper.handlePaypalTabBehavior();\n }\n}\n\nmodule.exports = {\n removeSessionNonce\n};\n","'use strict';\n\n/**\n * Extract billing address of corresponding PayPal payment account from paypal account option\n * @param {Object} $selectedPayPalPayment PayPal payment option\n * @returns {string} return string representation of extracted address\n */\nfunction getBillingAddressAsString($selectedPayPalPayment) {\n var selectedBillingAddressStr = $selectedPayPalPayment.getAttribute('data-billing-address');\n var selectedBillingAddressObj;\n var billingAddressRepresentationString = '';\n\n if (selectedBillingAddressStr && selectedBillingAddressStr !== '') {\n selectedBillingAddressObj = JSON.parse(selectedBillingAddressStr);\n\n if (selectedBillingAddressObj && selectedBillingAddressStr !== '{}') {\n var address1 = selectedBillingAddressObj.line1 || selectedBillingAddressObj.address1 || '';\n var address2 = selectedBillingAddressObj.line2 || selectedBillingAddressObj.address2 || '';\n // Storefront customisation\n /*var firstName = selectedBillingAddressObj.firstName || '';\n var lastname = selectedBillingAddressObj.lastName || '';\n var city = selectedBillingAddressObj.city || '';\n var state = selectedBillingAddressObj.state || selectedBillingAddressObj.stateCode || '';\n var postalCode = decodeURIComponent(selectedBillingAddressObj.postalCode) || '';\n\n billingAddressRepresentationString = firstName + ' ' +\n lastname + ' ' +\n address1 + ' ' +\n city + ', ' +\n state + ' ' +\n postalCode;*/\n\n if (address1 || address2) {\n billingAddressRepresentationString = address1 + ' ' + address2;\n }\n }\n }\n\n return billingAddressRepresentationString;\n}\n\n/**\n * Display billing address of passed paypal payment option (of selected paypal payment option)\n * @param {Object} $selectedPayPalPayment Selected PayPal payment option\n */\nfunction displaySelectedStoredBillingAddress($selectedPayPalPayment) {\n if ($selectedPayPalPayment) {\n var selectedOptionClassList = $selectedPayPalPayment.classList;\n\n if (selectedOptionClassList.contains('js-stored-paypal-account') || selectedOptionClassList.contains('js-session-paypal-account')) {\n var billingAddressAsString = getBillingAddressAsString($selectedPayPalPayment);\n var $storedPayPalAddressOption = $('#billingAddressSelector option[class=\"stored-paypal-address\"]');\n var storedPayPalAddressOptionExists = $storedPayPalAddressOption.length;\n\n if (billingAddressAsString !== '') {\n if (storedPayPalAddressOptionExists) {\n var address = $selectedPayPalPayment.getAttribute('data-billing-address');\n if (address && address !== '') {\n var addressObj = JSON.parse(address);\n \n if (addressObj && addressObj !== '{}') {\n $storedPayPalAddressOption.text(billingAddressAsString);\n $storedPayPalAddressOption.attr('data-first-name', addressObj.firstName || '')\n $storedPayPalAddressOption.attr('data-last-name', addressObj.lastName || '')\n $storedPayPalAddressOption.attr('data-address1', addressObj.line1 || addressObj.address1 || '')\n $storedPayPalAddressOption.attr('data-address2', addressObj.line2 || addressObj.address2 || '')\n $storedPayPalAddressOption.attr('data-city', addressObj.city || '')\n $storedPayPalAddressOption.attr('data-state-code', addressObj.state || addressObj.stateCode || '')\n $storedPayPalAddressOption.attr('data-postal-code', decodeURIComponent(addressObj.postalCode) || '')\n $storedPayPalAddressOption.attr('data-country-code', 'GB')\n $storedPayPalAddressOption.attr('data-phone', )\n $storedPayPalAddressOption.prop('selected', true);\n $('.payment-form .addressSelector').trigger('change');\n }\n }\n } else {\n $('#billingAddressSelector').append('');\n }\n }\n }\n }\n}\n\n/**\n * Returns the matching address ID or UUID for a billing address\n * @returns {string} Matching address ID\n */\nfunction getMatchingBillingAddressId() {\n var matchingBillingAddressId;\n\n $.ajax({\n url: document.querySelector('.js_braintree_getOrderInfoUrl').value + '?qwe=2344',\n type: 'get',\n async: false,\n dataType: 'json',\n success: function (data) {\n if (data.matchingBillingAddressId) {\n matchingBillingAddressId = data.matchingBillingAddressId;\n } else {\n matchingBillingAddressId = false;\n }\n },\n error: function () {\n window.location.reload();\n }\n });\n\n return matchingBillingAddressId;\n}\n\n/**\n * Set default billing address as selected\n */\nfunction selectDefaultBillingAddressOption() {\n var billingAccountsSelector = '#billingAddressSelector';\n var $braintreePaypalAccountList = document.querySelector('#braintreePaypalAccountsList');\n var matchingBillingAddressId;\n\n if ($braintreePaypalAccountList) {\n matchingBillingAddressId = getMatchingBillingAddressId();\n\n if (matchingBillingAddressId && matchingBillingAddressId !== '') {\n $(`${billingAccountsSelector} option[value=\"${matchingBillingAddressId}\"]`).prop('selected', true);\n } else {\n // Shows billing address of session account\n $(`${billingAccountsSelector} option[value=\"${'manual-entry'}\"]`).prop('selected', true);\n }\n\n $(`${billingAccountsSelector} option[class=\"stored-paypal-address\"]`).remove();\n }\n}\n\nmodule.exports = {\n displaySelectedStoredBillingAddress,\n selectDefaultBillingAddressOption\n};\n","'use strict';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.errorMessages = errorMessages;\n}\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by error Object from BT\n * @param {Object} error error object from Bt\n */\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by message\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Error container which will be used on Account and PDP ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n var $errorContainer = $('.error-messaging');\n\n var errorHtml = '
' +\n '' + message + '
';\n\n $errorContainer.append(errorHtml);\n $errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Account and PDP we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n var $errorContainer = $('.error-messaging');\n\n $errorContainer.hide();\n $errorContainer.empty();\n};\n\n/**\n * Show \"Billing Address is not Supported\" error notification\n */\nErrorHandlingBaseModel.prototype.showBillingAddressIsNotSupported = function () {\n this.showErrorByMessage(this.errorMessages.PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED);\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling Cart model constructor\n * @param {Object} errorMessages Object with error messages\n */\nfunction ErrorHandlingCartModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$errorContainer = $('.cart-error-messaging');\n this.errorMessages = errorMessages;\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCartModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCartModel.prototype.createErrorNotification = function (message) {\n $('.checkout-btn').addClass('disabled');\n this.$errorContainer.append(\n `
\n \n ${message}\n
`\n );\n\n this.$errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCartModel.prototype.hideError = function () {\n this.$errorContainer.hide();\n this.$errorContainer.empty();\n};\n\n/**\n * Show \"Zero Amount\" error on Cart page\n */\nErrorHandlingCartModel.prototype.showZeroAmountOnCart = function () {\n this.showErrorByMessage(this.errorMessages.CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR);\n};\n\n\nmodule.exports = ErrorHandlingCartModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling Checkout model constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingCheckoutModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$topErrorMessageText = document.querySelector('.error-message-text');\n this.$topErrorMessageWrapper = document.querySelector('.error-message');\n\n this.errorMessages = errorMessages;\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCheckoutModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.hideError = function () {\n this.$topErrorMessageWrapper.style.display = 'none';\n this.$topErrorMessageText.innerHTML = '';\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.createErrorNotification = function (message) {\n this.$topErrorMessageText.textContent = '';\n this.$topErrorMessageText.append(message);\n\n this.$topErrorMessageWrapper.style.display = 'block';\n window.scrollTo(0, 0);\n $.spinner().stop();\n};\n\n/**\n * Show \"Billing Address is not Supported\" error\n */\nErrorHandlingCheckoutModel.prototype.showBillingAddressIsNotSupported = function () {\n this.showErrorByMessage(this.errorMessages.PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED);\n $.spinner().stop();\n};\n\n/**\n * Show \"Zero Amount\" on the Checkout Page error\n */\nErrorHandlingCheckoutModel.prototype.showZeroAmountOnCheckout = function () {\n this.showErrorByMessage(this.errorMessages.CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR);\n $.spinner().stop();\n};\n\n\nmodule.exports = ErrorHandlingCheckoutModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling MiniCart model constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingMiniCartModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.$errorContainer = $('.minicart-error');\n this.errorMessages = errorMessages;\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingMiniCartModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingMiniCartModel.prototype.createErrorNotification = function (message) {\n $('.checkout-btn').addClass('disabled');\n this.$errorContainer.append(\n `
\n \n ${message}\n
`\n );\n\n this.$errorContainer.show();\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingMiniCartModel.prototype.hideError = function () {\n this.$errorContainer.hide();\n this.$errorContainer.empty();\n};\n\nmodule.exports = ErrorHandlingMiniCartModel;\n","'use strict';\n\nvar helper = require('../../helper');\n\n/**\n * Save PayPal account to DW\n * @param {string} addPayPalAccountUrl add PayPal account url\n * @param {FormData} paymentFormData payment FormData\n * @returns {Promise} response from server\n */\nfunction savePayPalAccount(addPayPalAccountUrl, paymentFormData) {\n return $.ajax({\n type: 'POST',\n url: addPayPalAccountUrl,\n data: paymentFormData,\n contentType: false,\n processData: false\n }).then(function (response) {\n // custom\n if (response.success && response.redirectUrl) {\n location.href = response.redirectUrl;\n }\n });\n}\n\n/**\n * Render PayPal account\n * @param {string} renderAccountsUrl render PayPal accounts URL\n * @returns {Promise} promise with html of PayPal account list\n */\nfunction renderPayPalAccounts(renderAccountsUrl) {\n return $.get(renderAccountsUrl);\n}\n\n/**\n * Hide PayPal account button\n */\nfunction hidePaypalAccountBtn() {\n var $addNewPaypalAccountBtn = document.querySelector('.add-paypal-account');\n var $paypalAccountButtonWrapper = document.querySelector('.js_braintree_accountPaypalButton_wrapper');\n\n // Display add new paypal account button\n $addNewPaypalAccountBtn.style.display = 'block';\n // Hide PayPal Account button\n $paypalAccountButtonWrapper.style.display = 'none';\n}\n\n/**\n * Add PayPal accounts html template to the DOM\n * @param {string} accountListTemplate html template with PayPal account list\n */\nfunction addPayPalAccountsToTheTemplate(accountListTemplate) {\n var $payPalAccountsContainer = document.querySelector('.paypal-accounts');\n\n $payPalAccountsContainer.innerHTML = accountListTemplate;\n}\n\n/**\n * Trigger cart:updates event\n */\nfunction throwCartUpade() {\n $('body').trigger('cart:update');\n}\n\n/**\n * Init Remove PayPal Account button listner\n */\nfunction initRemovePayPalAccountButtonsListners() {\n var $allRemovePayPalAccountButtons = document.querySelectorAll('.paypal-accounts .remove-bt-payment');\n\n $allRemovePayPalAccountButtons.forEach(function (removePayPalAccountButton) {\n removePayPalAccountButton.addEventListener('click', helper.removeBtPayment);\n });\n}\n\nmodule.exports = {\n savePayPalAccount,\n renderPayPalAccounts,\n hidePaypalAccountBtn,\n addPayPalAccountsToTheTemplate,\n throwCartUpade,\n initRemovePayPalAccountButtonsListners\n};\n","'use strict';\n\n/**\n * Show PayPal Account button\n */\nfunction showPayPalAccountBtn() {\n var $addPaypalAccountBtn = document.querySelector('.add-paypal-account');\n var $paypalAccountWrapper = document.querySelector('.js_braintree_accountPaypalButton_wrapper');\n\n $addPaypalAccountBtn.style.display = 'none';\n $paypalAccountWrapper.style.display = 'block';\n}\n\nmodule.exports = {\n showPayPalAccountBtn\n};\n","\n'use strict';\n\nvar helper = require('../../helper');\n\n/**\n * Store payment as session payment\n * @param {string} nonce Nonce\n * @param {string} sessionAccountEmail Session account email\n */\nfunction storePaymentAsSessionPayment(nonce, sessionAccountEmail) {\n var $accountListBlock = document.querySelector('.form-group.braintree_used_paypal_account');\n var $braintreePaypalNonceInput = document.querySelector('input[name=braintreePaypalNonce]');\n var $sessionPyapalAccount = document.querySelector('#braintreePaypalAccount');\n\n if ($braintreePaypalNonceInput) {\n $braintreePaypalNonceInput.value = nonce;\n }\n\n $sessionPyapalAccount.setAttribute('data-session-account', 'true');\n $sessionPyapalAccount.setAttribute('data-nonce', nonce);\n $sessionPyapalAccount.text = sessionAccountEmail;\n $sessionPyapalAccount.classList.remove('used-paypal-account-hide');\n\n // Show account list block\n $accountListBlock.classList.remove('used-paypal-account-hide');\n}\n\n/**\n * Select session paypal accounts.\n * Every time when buyer adds new account, the New Account option is selected (doesn't matter logged in buyer or not)\n */\nfunction setSessionAccountOptionDefault() {\n var $savedPayPalAccountList = document.querySelector('#braintreePaypalAccountsList');\n var $sessionPyapalAccount = document.querySelector('#braintreePaypalAccount');\n\n Array.prototype.forEach.call($savedPayPalAccountList, function (element) {\n element.removeAttribute('selected');\n });\n\n $sessionPyapalAccount.selected = true;\n}\n\n/**\n * Get stored account by session account email\n * @returns {Object} js container with stored account\n */\nfunction getStoredAccountBySesionAccountEmail() {\n var sessionPaypalAccount = document.getElementById('braintreePaypalAccount');\n var paypalAccountsList = document.querySelector('#braintreePaypalAccountsList');\n var sessionEmail = sessionPaypalAccount.value || null;\n\n return Array.apply(null, paypalAccountsList.options).find(function (el) {\n return el.getAttribute('data-id') && sessionEmail && sessionEmail === el.text;\n });\n}\n\n/**\n * Fill DW billing form with billing address from Bt\n * @param {Object} braintreeAddress Billing address from BT\n * @param {Object} btDetails Details from BT\n * @returns {Object} Object with billing form fields and it's values\n */\nfunction mapBraintreeWithDwBillingAddress(braintreeAddress, btDetails) {\n var $btPaymentMethodWrapper = document.querySelector('.braintree-billing-payment-wrap');\n var dwBillingFormFieldNames = JSON.parse($btPaymentMethodWrapper.getAttribute('data-billing-form-fields-names'));\n\n dwBillingFormFieldNames.dwfrm_billing_addressFields_firstName = btDetails.firstName;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_lastName = btDetails.lastName;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_address1 = braintreeAddress.line1;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_address2 = braintreeAddress.line2;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_city = braintreeAddress.city;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_postalCode = decodeURIComponent(braintreeAddress.postalCode);\n dwBillingFormFieldNames.dwfrm_billing_addressFields_states_stateCode = braintreeAddress.state;\n dwBillingFormFieldNames.dwfrm_billing_addressFields_country = braintreeAddress.countryCode;\n dwBillingFormFieldNames.dwfrm_billing_contactInfoFields_phone = btDetails.phone;\n\n return dwBillingFormFieldNames;\n}\n\n/**\n * Create billing address data\n * @param {Object} payloadDetails BT paymload details\n * @returns {Object} Mapped billing data\n */\nfunction createBillingAddressData(payloadDetails) {\n var billingAddress = payloadDetails.billingAddress;\n\n billingAddress.firstName = payloadDetails.firstName;\n billingAddress.lastName = payloadDetails.lastName;\n billingAddress.email = payloadDetails.email;\n billingAddress.phone = payloadDetails.phone;\n billingAddress.countryCodeAlpha2 = billingAddress.countryCode;\n billingAddress.streetAddress = billingAddress.line1;\n billingAddress.extendedAddress = billingAddress.line2;\n billingAddress.locality = billingAddress.city;\n billingAddress.region = billingAddress.state;\n\n return billingAddress;\n}\n\n/**\n * Copy PayPal billing address to DW billing form\n * @param {Object} braintreeBillingAddress Billing address from BT\n * @param {Object} btDetails Details from bt\n */\nfunction copyPayPalBillingAddressToDw(braintreeBillingAddress, btDetails) {\n var $braintreePaypalBillingAddressInput = document.querySelector('input[name=braintreePaypalBillingAddress]');\n var paypalBillingData = mapBraintreeWithDwBillingAddress(braintreeBillingAddress, btDetails);\n\n // Store billing address inside hidden input in order to send it to the server and\n // proccess with billing address server logic (the logic - billing address can't be overrided by\n // buyer. Only PayPal billing address should be used)\n $braintreePaypalBillingAddressInput.value = JSON.stringify(paypalBillingData);\n helper.updateBillingFormValues(paypalBillingData);\n}\n\n/**\n * Create billig address FormData\n * @param {Object} paypalBillingFormFields PayPal billing form fields\n * @param {Object} billingAddressData Billing address data\n * @returns {FormData} Billing FormData\n */\nfunction createBillingAddressFormData(paypalBillingFormFields, billingAddressData) {\n var billingAddressFormData;\n\n billingAddressFormData = helper.createPaymentFormData(paypalBillingFormFields, {\n firstName: billingAddressData.firstName,\n lastName: billingAddressData.lastName,\n address1: billingAddressData.streetAddress,\n address2: billingAddressData.extendedAddress || '',\n city: billingAddressData.locality,\n postalCode: decodeURIComponent(billingAddressData.postalCode),\n stateCode: billingAddressData.state,\n country: billingAddressData.countryCodeAlpha2,\n email: billingAddressData.email,\n phone: billingAddressData.phone,\n paymentMethod: 'PayPal'\n });\n\n return billingAddressFormData;\n}\n\n/**\n * Fill PayPal payment fields with payment data\n * @param {Object} btDetails Details from BT\n */\nfunction fillPayPalPaymentFields(btDetails) {\n var $braintreePaypalEmailInput = document.querySelector('#braintreePaypalEmail');\n var $sessionPaypalAccount = document.querySelector('#braintreePaypalAccount');\n var btEmail = btDetails.email;\n\n $braintreePaypalEmailInput.value = btEmail;\n $sessionPaypalAccount.value = btEmail;\n $sessionPaypalAccount.text = btEmail;\n\n // Hide Continue button\n helper.continueButtonToggle(false);\n}\n\n/**\n * Fill fraud data input with fraud data\n * @param {Object} data Fraud data\n */\nfunction fillFraudDataInput(data) {\n var $braintreePaypalRiskDataInput = document.querySelector('input[name=braintreePaypalRiskData]');\n\n $braintreePaypalRiskDataInput.value = data.deviceData;\n}\n\n\n/**\n * Append CSRF token to the billing FormData\n * @param {FormData} formData Billing form data\n * @param {Object} $csrfToken CSRF token js container\n */\nfunction appendCsrfTokenToFormData(formData, $csrfToken) {\n formData.append($csrfToken.name, $csrfToken.value);\n}\n\n/**\n * Append funding source to the billing FormData\n * @param {FormData} formData Billing form data\n * @param {string} fundingSource funding source\n */\nfunction appendBraintreePaypalFundingSourceToFormData(formData, fundingSource) {\n formData.append('braintreePaypalFundingSource', fundingSource);\n}\n\n/**\n * Append email to the billing FormData\n * @param {FormData} formData billing form data\n * @param {string} email user email\n */\nfunction appendEmailAsStringToFormData(formData, email) {\n formData.append('braintreePaypalEmail', email);\n}\n\n/**\n * Append fraud data to the FormData\n * @param {FormData} billingFromData billing FormData\n * @param {Object} fraudData fraud data\n */\nfunction appendFraudDataToFormData(billingFromData, fraudData) {\n billingFromData.append('braintreePaypalRiskData', fraudData);\n}\n\n/**\n * Append billing address data as a string to the FromData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} billingData Billing data\n */\nfunction appendBillingAddressAsStringToFormData(billingFromData, billingData) {\n billingFromData.append('braintreePaypalBillingAddress', JSON.stringify(billingData));\n}\n\n/**\n * Append BT payment fields to the FromData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} payload payload from BT\n */\nfunction appendBtPaymentFieldsToFormData(billingFromData, payload) {\n billingFromData.append('braintreePaypalNonce', payload.nonce);\n billingFromData.append('braintreeSavePaypalAccount', true);\n}\n\n/**\n * Append params to the URL\n * @param {string} url To which append params\n * @param {Object} param Which should be appended to the URL\n * @returns {string} Final URL with passed params\n */\nfunction appendToUrl(url, param) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(param).map(function (key) {\n return key + '=' + encodeURIComponent(param[key]);\n }).join('&');\n\n return newUrl;\n}\n\nmodule.exports = {\n storePaymentAsSessionPayment,\n setSessionAccountOptionDefault,\n getStoredAccountBySesionAccountEmail,\n copyPayPalBillingAddressToDw,\n createBillingAddressFormData,\n createBillingAddressData,\n fillPayPalPaymentFields,\n fillFraudDataInput,\n\n appendCsrfTokenToFormData,\n appendFraudDataToFormData,\n appendBillingAddressAsStringToFormData,\n appendBtPaymentFieldsToFormData,\n appendEmailAsStringToFormData,\n appendBraintreePaypalFundingSourceToFormData,\n\n // Utils\n appendToUrl\n};\n","'use strict';\n\n/**\n * Hide PayPal button\n */\nfunction hidePayPalButtons() {\n var payPalButtonsContainer = document.querySelector('.js_braintree_paypal_billing_button');\n\n payPalButtonsContainer.style.display = 'none';\n}\n\n/* -------------------------------------------- Account\\Options Manipulations -------------------------------------------- */\n\n/**\n * Hide account option from account dropdown\n * @param {Object} $accountOption vanilla js account option container\n */\nfunction hideAccount($accountOption) {\n $accountOption.style.display = 'none';\n}\n\n/**\n * Hide Save New Account checkbox with corresponding block\n */\nfunction hideSaveNewAccountContainer() {\n var savePaypalAccountCheckbox = document.getElementById('braintreeSavePaypalAccount');\n var savePaypalAccountContainer = document.querySelector('#braintreeSavePaypalAccountContainer');\n\n savePaypalAccountCheckbox.value = false;\n savePaypalAccountContainer.style.display = 'none';\n}\n\n/**\n * Make all hidden stored paypal accounts visible for buyer\n */\nfunction displayAllStoredAccounts() {\n var braintreePaypalAccountsList = document.querySelector('#braintreePaypalAccountsList');\n\n Array.prototype.forEach.call(braintreePaypalAccountsList, function (el) {\n if (el.style.display === 'none') {\n el.style.display = 'block';\n }\n });\n}\n\n/**\n * Hides 'Save PayPal Account' checkbox on the Billing Page\n */\nfunction hideSavePayPalAccountBlock() {\n var $savePaypalAccountCountainer = document.querySelector('#braintreeSavePaypalAccountContainer');\n\n $savePaypalAccountCountainer.style.display = 'none';\n}\n\n/**\n * Function which store billing data on session payment option level\n * @param {Object} btPayloadDetails braintree payload details\n */\nfunction addBillingAddressOnPaymentOptionLevel(btPayloadDetails) {\n var $sessionPyapalAccount = document.querySelector('#braintreePaypalAccount');\n var btBillingAddress = btPayloadDetails.billingAddress;\n\n $sessionPyapalAccount.setAttribute('data-billing-address', JSON.stringify({\n firstName: btPayloadDetails.firstName,\n lastName: btPayloadDetails.lastName,\n line1: btBillingAddress.line1,\n city: btBillingAddress.city,\n state: btBillingAddress.state,\n postalCode: decodeURIComponent(btBillingAddress.postalCode)\n }));\n}\n\nmodule.exports = {\n hidePayPalButtons,\n // Account\\Options Manipulations\n hideAccount,\n hideSaveNewAccountContainer,\n displayAllStoredAccounts,\n hideSavePayPalAccountBlock,\n addBillingAddressOnPaymentOptionLevel\n};\n","'use strict';\n\nvar helper = require('../../helper');\n\n/**\n * Create shipping address data\n * @param {Object} payloadDetails BT payload details\n * @returns {Object} Shipping address\n */\nfunction createShippingAddressData(payloadDetails) {\n var shippingAddressPayPalData = payloadDetails.shippingAddress;\n var shippingAddressData = {\n line1: shippingAddressPayPalData.line1,\n streetAddress: shippingAddressPayPalData.line1,\n city: shippingAddressPayPalData.city,\n locality: shippingAddressPayPalData.city,\n state: shippingAddressPayPalData.state,\n region: shippingAddressPayPalData.state,\n countryCode: shippingAddressPayPalData.countryCode,\n countryCodeAlpha2: shippingAddressPayPalData.countryCode,\n postalCode: decodeURIComponent(shippingAddressPayPalData.postalCode),\n email: payloadDetails.email,\n phone: payloadDetails.phone\n };\n\n if (!shippingAddressPayPalData.recipientName) {\n shippingAddressData.firstName = payloadDetails.firstName;\n shippingAddressData.lastName = payloadDetails.lastName;\n shippingAddressData.recipientName = payloadDetails.firstName + ' ' + payloadDetails.lastName;\n } else {\n shippingAddressData.recipientName = shippingAddressPayPalData.recipientName;\n }\n\n return shippingAddressData;\n}\n\n/**\n * Append Shipping data as a String to the FormData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} shippingData Shipping data\n */\nfunction appendShippingDataAsStringToFormData(billingFromData, shippingData) {\n billingFromData.append('braintreePaypalShippingAddress', JSON.stringify(shippingData));\n}\n\n/**\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\n * @param {string} email Email from payment method's response\n * @returns {Object} Customer form data\n */\nfunction createCustomerFormData(email) {\n var data = {\n email: email\n };\n\n var csrfToken = document.querySelector('.braintree-cart-paypal-buttons-wrap #csrf_token');\n var checkoutCustomerFormFields = document.querySelector('.braintree-cart-paypal-buttons-wrap').getAttribute('data-checkout-customer-form-fields');\n var customerFormData = helper.createPaymentFormData(checkoutCustomerFormFields, data);\n\n customerFormData.append(csrfToken.name, csrfToken.value);\n\n return customerFormData;\n}\n\n/**\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\n * @param {string} email Email from payment method's response\n * @returns {Ajax} Ajax call to CheckoutServices-SubmitCustomer endpoint\n */\nfunction submitCustomerForm(email) {\n var paypalButtonsWrapper = document.querySelector('.braintree-cart-paypal-buttons-wrap');\n var isCustomerEmailEmpty = JSON.parse(paypalButtonsWrapper.getAttribute('data-is-customer-email-empty'));\n // Could be true only in case if email in basket is empty (first guest checkout from cart)\n if (isCustomerEmailEmpty) {\n var submitCustomerUrl = paypalButtonsWrapper.getAttribute('data-submit-customer-url');\n var customerFormData = createCustomerFormData(email);\n\n return $.ajax({\n type: 'POST',\n url: submitCustomerUrl,\n data: customerFormData,\n contentType: false,\n processData: false\n });\n }\n}\n\n/**\n * Returns customer shipping address for 'createPayment' method of brainree SDK\n * @param {string} buttonSelector Class name of selector\n * @returns {Object} Shipping address object\n */\nfunction getSavedPaypalAddress(buttonSelector) {\n var $paypalButton = document.querySelector(buttonSelector);\n var payPalAccountData = JSON.parse($paypalButton.getAttribute('data-dafault-paypal-address'));\n\n return payPalAccountData;\n}\n\nmodule.exports = {\n createShippingAddressData,\n appendShippingDataAsStringToFormData,\n submitCustomerForm,\n getSavedPaypalAddress\n};\n","'use strict';\n\nvar billingFormHelper = require('./payPalBillingFormHelperGlobal');\nvar paypalCheckoutModelHelper = require('./payPalCheckoutModelHelper');\n\n/**\n * Is vault mode enabled\n * @param {Object} $paypalButton PayPal button js container\n * @returns {boolean} 'true' in case if vault mode is enabled\n */\nfunction isVaultModeEnabled($paypalButton) {\n var payPalConfigurations = JSON.parse($paypalButton.getAttribute('data-braintree-config'));\n var isVaultMode = payPalConfigurations.vaultModeEnabled;\n\n return isVaultMode;\n}\n\n/**\n * Returns whether 'order' intent type is enbaled\n * @param {Object} $paypalButton PayPal button js container\n * @returns {boolean} true/false\n */\nfunction isOrderIntentEnabled($paypalButton) {\n var payPalConfigurations = JSON.parse($paypalButton.getAttribute('data-braintree-config'));\n\n return payPalConfigurations.options.intent === 'order';\n}\n\n/**\n * Function which return account type.\n * Possible values are: new account, session account, stored account\n * @param {Object} $payPalAccountList PayPal account list js container\n * @param {Object} constantList Object with paypal account constants\n * @returns {string} Account type\n */\nfunction getAccountType($payPalAccountList, constantList) {\n var accountType;\n\n if ($payPalAccountList.value === 'newaccount') {\n accountType = constantList.NEW_ACCOUNT;\n } else if ($payPalAccountList.selectedOptions[0].id === 'braintreePaypalAccount') {\n accountType = constantList.SESSION_ACCOUNT;\n } else {\n accountType = constantList.STORED_ACCOUNT;\n }\n\n return accountType;\n}\n\n/**\n * Set nonce in to corresponding hidden input\n * @param {Object} $braintreePayPalNonce BT input nonce js container\n * @param {string} nonceValue Nonce\n */\nfunction setNonceInputValue($braintreePayPalNonce, nonceValue) {\n $braintreePayPalNonce.value = nonceValue;\n}\n\n/**\n * Hide save PayPal account block\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\n */\nfunction hideSavePayPalAccountBlock($savePaypalAccountCountainer) {\n $savePaypalAccountCountainer.style.display = 'none';\n}\n\n/**\n * Display save PayPal account block\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\n */\nfunction displaySavePayPalAccountBlock($savePaypalAccountCountainer) {\n $savePaypalAccountCountainer.style.display = 'block';\n}\n\n/* --------------- PayPal button manipulations --------------- */\n/**\n * Show PayPal button\n * @param {Object} $paypalButton PayPal button js container\n */\nfunction displayPayPalButton($paypalButton) {\n $paypalButton.style.display = '';\n}\n\n/**\n * Hide PayPal button\n * @param {Object} $paypalButton PayPal button js container\n */\nfunction hidePayPalButon($paypalButton) {\n $paypalButton.style.display = 'none';\n}\n\n/* --------------- Continue button manipulations --------------- */\n/**\n * Display Continue button\n * @param {Object} $continueButton Continue button js container\n */\nfunction displayContinueButton($continueButton) {\n $continueButton.style.display = '';\n}\n\n/**\n * Hide Continue button\n * @param {Object} $continueButton Continue button js container\n */\nfunction hideContinueButon($continueButton) {\n $continueButton.style.display = 'none';\n}\n\n/**\n * Return \"true\" if buyer is authenticated\n * Needed on the Checkout Page only\n * @param {Object} $payPalAccountList PayPal account list js container\n * @returns {boolean} \"true\" in case if buyer is authenticated\n */\nfunction isBuyerAuthenticated($payPalAccountList) {\n return JSON.parse($payPalAccountList.dataset.customerAuthenticated);\n}\n\n/**\n * Select PayPal account tab\n * @param {Object} $payPalTab PayPal payment tab js container\n */\nfunction selectPayPalCheckoutTab($payPalTab) {\n $payPalTab.click();\n}\n\n/**\n * Set email in to corresponding input\n * @param {Object} $braintreePaypalEmail BT PayPal email input js container\n * @param {string} email Email\n */\nfunction setBraintreePayPalEmailInput($braintreePaypalEmail, email) {\n $braintreePaypalEmail.value = email;\n}\n\n/**\n * Returns whether the new PayPal account option is selected\n * @returns {boolean} Whether the new PayPal account option is selected\n */\nfunction isNewPayPalAccountOptionSelected() {\n var $payPalAccountList = document.querySelector('#braintreePaypalAccountsList');\n\n if ($payPalAccountList) {\n return $payPalAccountList.value === 'newaccount';\n }\n\n return false;\n}\n\n/**\n * Handles showing stored PP account in dropdown\n * Checks whether buyer has proceeded with the same email which is already stored\n * Triggered while tokenization callback and page reload\n * @param {boolean} buyerAuthenticated Whether customer is authenticated\n */\nfunction handleStoredAccountsShowing(buyerAuthenticated) {\n if (!buyerAuthenticated) {\n return;\n }\n\n // Get stored account by session account email\n var $storedAccountOptionWithSameEmail = billingFormHelper.getStoredAccountBySesionAccountEmail();\n\n // The buyer added an account with the same email address already in the buyer's wallet\n if ($storedAccountOptionWithSameEmail) {\n // Hide stored account with same email\n paypalCheckoutModelHelper.hideAccount($storedAccountOptionWithSameEmail);\n } else {\n // We need this to undo what was done by \"if\" statement\n paypalCheckoutModelHelper.displayAllStoredAccounts();\n }\n}\n\nmodule.exports = {\n isVaultModeEnabled,\n getAccountType,\n setNonceInputValue,\n hideSavePayPalAccountBlock,\n displaySavePayPalAccountBlock,\n displayPayPalButton,\n hidePayPalButon,\n displayContinueButton,\n hideContinueButon,\n isBuyerAuthenticated,\n selectPayPalCheckoutTab,\n setBraintreePayPalEmailInput,\n isNewPayPalAccountOptionSelected,\n handleStoredAccountsShowing,\n isOrderIntentEnabled\n};\n","'use strict';\n\nvar billingFormHelper = require('./payPalBillingFormHelperGlobal');\n\n/**\n * Remove product from Cart\n * @param {string} removeFromCartUrl Remove from Cart URL\n * @param {Object} productRepresentationObj Object with represent the product to remove from Cart\n */\nfunction removeProductFromCart(removeFromCartUrl, productRepresentationObj) {\n $.ajax({\n url: billingFormHelper.appendToUrl(removeFromCartUrl, productRepresentationObj),\n type: 'get',\n dataType: 'json'\n });\n}\n\nmodule.exports = {\n removeProductFromCart\n};\n","\n'use strict';\n\n/**\n * Add product to the Cart\n * @returns {Object} Response data from DW\n */\nfunction addProductToCart() {\n var $bundleItem = $('.bundle-item');\n\n function getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n }\n\n var pid = $('.product-detail:not(.bundle-item)').data('pid');\n var $btn = $('.braintree_pdp_button');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n quantity: $('.quantity-select').val()\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n}\n\n/**\n * Get basket data\n * @param {string} url Braintree-GetOrderInfo URL\n * @returns {Promise} Promise with response from DW\n */\nfunction getBasketDataPromise(url) {\n return $.ajax({\n url: url,\n method: 'GET'\n });\n}\n\n/**\n * Get basket data\n * @param {string} url Braintree-GetOrderInfo URL\n * @returns {Object} Object with basket data from DW\n */\nfunction getBasketData(url) {\n return $.ajax({\n url: url,\n method: 'GET',\n async: false\n }).responseJSON;\n}\n\n/**\n * Submit payment (billing) data to the server\n * @param {string} submitPaymentUrl Submit payment URL\n * @param {FromData} billingFormData Billing Form Data\n * @param {string} redirectUrl Redirect URL after succesfull payment data submit\n * @param {Object} loader Loader\n * @param {Object} ErrorModelInstance Error Model instance\n * @returns {Promise} Promise with response result\n */\nfunction submitPaymentDataToServerPromise(submitPaymentUrl, billingFormData, redirectUrl, loader, ErrorModelInstance) {\n return $.ajax({\n type: 'POST',\n url: submitPaymentUrl,\n data: billingFormData,\n contentType: false,\n processData: false\n })\n .done(function (data) {\n if (data.error) {\n var errorMessage = '';\n\n if (data.fieldErrors.length) {\n data.fieldErrors.forEach(function (error, index) {\n var keys = Object.keys(error);\n if (keys.length) {\n errorMessage += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\n }\n });\n ErrorModelInstance.showErrorByMessage(errorMessage);\n }\n\n if (data.serverErrors.length) {\n data.serverErrors.forEach(function (error) {\n errorMessage += `${error}. `;\n });\n ErrorModelInstance.showErrorByMessage(errorMessage);\n }\n\n // Usually in case of any errors \"cartError\" will be \"true\"\n if (data.cartError) {\n window.location.href = data.redirectUrl;\n }\n loader.hide();\n } else {\n sessionStorage.setItem('pageState', 'cart');\n window.location.href = redirectUrl;\n loader.hide();\n }\n })\n .fail(function (err) {\n loader.hide();\n if (err && err.redirectUrl) {\n window.location.href = err.redirectUrl;\n }\n });\n}\n\nmodule.exports = {\n addProductToCart,\n getBasketDataPromise,\n getBasketData,\n submitPaymentDataToServerPromise\n};\n","'use strict';\n\nvar helper = require('../../helper');\n\nvar $btSavePaypalAccountContainer = document.querySelector('#braintreeSavePaypalAccountContainer');\nvar $paypalContent = document.querySelector('.js_braintree_paypalContent');\nvar $btPayPalBillingButton = document.querySelector('.js_braintree_paypal_billing_button');\n\n/**\n * Hides PayPal Smart Button functionality inside PayPal tab\n */\nfunction hidePaypalSmartButtonFunctionality() {\n $btSavePaypalAccountContainer.style.display = 'none';\n $btPayPalBillingButton.style.display = 'none';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n}\n\n/**\n * Shows PayPal Smart Button functionality inside PayPal tab\n */\nfunction showPaypalSmartButtonFunctionality() {\n $btPayPalBillingButton.style.display = 'block';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n}\n\n/**\n * Handles a behavior inside PayPal tab, when session PayPal account was deleted\n */\nfunction handlePaypalTabBehavior() {\n var $payPalAccountList = document.querySelector('#braintreePaypalAccountsList');\n var $defaultOption = helper.getOptionByDataDefault('#braintreePaypalAccountsList');\n var $selectedOption = helper.getSelectedOption($payPalAccountList);\n var isSelectedPaypalAccount = $selectedOption.value !== 'newaccount';\n var paypalButtonConfigs = JSON.parse($btPayPalBillingButton.getAttribute('data-braintree-config'));\n var isChangePmButton = paypalButtonConfigs.changePMButtonEnabled;\n\n // Case when buyer selected another PM (CC,GP..)\n if ($defaultOption && !isSelectedPaypalAccount) {\n // Shows ChangePM button if buyer has already saved PP account and ChangePM button is enabled\n if (isChangePmButton) {\n $btSavePaypalAccountContainer.style.display = 'block';\n\n showPaypalSmartButtonFunctionality();\n // Shows default PayPal account\n } else {\n $defaultOption.selected = true;\n\n hidePaypalSmartButtonFunctionality();\n }\n // Case when buyer selected PayPal account from paypalAccountList\n } else if (isSelectedPaypalAccount) {\n hidePaypalSmartButtonFunctionality();\n // Case when buyer does not have saved PayPal account\n } else {\n var $btUsedPayPalAccount = document.querySelector('.form-group.braintree_used_paypal_account');\n\n $btUsedPayPalAccount.classList.remove('used-paypal-account');\n $btUsedPayPalAccount.classList.add('used-paypal-account-hide');\n\n showPaypalSmartButtonFunctionality();\n }\n\n [].forEach.call($payPalAccountList, function (el) {\n if (el.style.display === 'none') el.style.display = 'block';\n });\n}\n\nmodule.exports = {\n handlePaypalTabBehavior,\n hidePaypalSmartButtonFunctionality,\n showPaypalSmartButtonFunctionality\n};\n","'use strict';\n\nvar PayPalBaseModel = require('./payPalBaseModel');\nvar helper = require('../../helper');\nvar payPalAccountModelHelper = require('../helpers/payPalAccountModelHelper');\nvar billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\n\nfunction PayPalAccountModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n addPayPalAccountUrl,\n $loaderContainer\n) {\n PayPalBaseModel.call(\n this,\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $loaderContainer\n );\n\n this.$csrfToken = $csrfToken;\n this.addPayPalAccountUrl = addPayPalAccountUrl;\n}\n\n// ES5 inheritance\nPayPalAccountModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n/**\n * For whole description open \"payPalBaseModel\".\n * We don't generate and send fraud data from Account. That's why \"generateFraudData\" isn't used\n * @param {Object} payload Buyer data from PayPal (like address, nonce, etc.)\n */\nPayPalAccountModel.prototype.onApprovePaymentCallback = function (payload) {\n // Calling parrent method to proceed with PayPal payload validation\n var baseResponse = PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n // Error will be handled on BaseModel level\n if (baseResponse && baseResponse.error) {\n return;\n }\n\n this.loader.show();\n\n var payPalAccountModelInstance = this;\n var btDetails = payload.details;\n var nonce = payload.nonce;\n var email = payload.details.email;\n var $payPalButton = document.querySelector(this.payPalButtonSelector);\n var paypalAccountFormFields = $payPalButton.getAttribute('data-paypal-account-form-fields');\n var payPalBraintreeAddressData;\n var paypalAccountFormData;\n\n // Append Shippig/Billing data to FormData\n payPalBraintreeAddressData = billingFormHelper.createBillingAddressData(btDetails);\n paypalAccountFormData = helper.createPaymentFormData(paypalAccountFormFields, {\n nonce: nonce,\n email: email,\n addresses: JSON.stringify(payPalBraintreeAddressData),\n shippingAddress: JSON.stringify(payload.details.shippingAddress)\n });\n // Apped CSRF token\n billingFormHelper.appendCsrfTokenToFormData(paypalAccountFormData, this.$csrfToken);\n\n if ($('.subcription-detail').length > 0) {\n $.spinner().start();\n $('.save-subscription-changes').trigger('click', [paypalAccountFormData]);\n $('.js_braintree_accountPaypalButton_wrapper').addClass('d-none');\n } else {\n payPalAccountModelHelper.savePayPalAccount(this.addPayPalAccountUrl, paypalAccountFormData)\n .done(function (paymentData) {\n var renderAccountsUrl = paymentData.renderAccountsUrl;\n \n payPalAccountModelHelper.hidePaypalAccountBtn();\n \n payPalAccountModelHelper.renderPayPalAccounts(renderAccountsUrl)\n .done(function (accountListTemplate) {\n payPalAccountModelHelper.addPayPalAccountsToTheTemplate(accountListTemplate);\n payPalAccountModelHelper.initRemovePayPalAccountButtonsListners();\n payPalAccountModelHelper.throwCartUpade();\n \n payPalAccountModelInstance.loader.hide();\n });\n })\n .fail(function (errorPayload) {\n var error = errorPayload.responseJSON.error;\n \n payPalAccountModelInstance.errorHandlingModel.showErrorByMessage(error);\n payPalAccountModelInstance.loader.hide();\n });\n }\n};\n\n/**\n * Triggers when buyer clicked on the PayPal button and PayPal modal started loading\n * @returns {Object} Object which will be passed directly into Braintree PayPal SDK as an order data\n */\nPayPalAccountModel.prototype.onOrderCreateCallback = function () {\n var payPalButtonConfigs = this.payPalConfigurations;\n var orderCreateParams = payPalButtonConfigs.options;\n\n // Hide custom error on buyer PayPal button click.\n this.errorHandlingModel.hideError();\n\n return {\n flow: orderCreateParams.flow,\n enableShippingAddress: orderCreateParams.enableShippingAddress,\n displayName: orderCreateParams.displayName,\n billingAgreementDescription: orderCreateParams.billingAgreementDescription\n };\n};\n\nmodule.exports = PayPalAccountModel;\n","'use strict';\n\n/* global Promise $ */\n\nvar braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\n\nvar loaderInstance = require('../../loaderHelper');\n\n/**\n * PayPal base model constructor\n * @param {Object} errorHandlingModel error handling model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {boolean} isVaultMode \"true\" in case if vault mode is enabled\n * @param {boolean} requestBillingAgreement \"true\" in case if billing agreement should be requested\n * @param {boolean} isFraudToolsEnabled \"true\" in case if fraud tools is enabled\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalBaseModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $loaderContainer\n) {\n this.isVaultMode = isVaultMode;\n this.requestBillingAgreement = requestBillingAgreement && isVaultMode;\n this.btClientInstancePromise = btClientInstancePromise;\n this.payPalButtonSelector = payPalButtonSelector;\n this.payPalConfigurations = payPalConfigurations;\n // Fraud data related\n this.isFraudToolsEnabled = isFraudToolsEnabled;\n // Setup init fraudData value for default case (default case: fraud data disabled)\n this.fraudDataPromise = Promise.resolve({ fraudDataCollectionDisabled: true });\n\n // URLs\n this.basketDataUrl = payPalConfigurations.getOrderInfoUrl;\n this.submitPaymentUrl = payPalConfigurations.paypalHandle;\n this.placeOrderStageUrl = payPalConfigurations.redirectUrl;\n\n this.braintreePayPalSDK = braintreePayPalSDK.payPalButtonRendering;\n\n this.errorHandlingModel = errorHandlingModel;\n this.basketData = null;\n this.loader = loaderInstance($loaderContainer);\n}\n\n/* -------------------- Payment Callbacks -------------------- */\n\n/**\n * Method triggers when buyer approved payment in PayPal modal and they passed succesfully\n * THIS METHOD NEEDS TO BE OVERRIDDEN in children class\n * @param {Object} payload buyer's data from PayPal\n * @returns {*} finish function execution\n */\nPayPalBaseModel.prototype.onApprovePaymentCallback = function (payload) {\n // basic payload validation\n var ppDetails = payload.details;\n\n if (!ppDetails.billingAddress) {\n var ppShippingAddress = ppDetails.shippingAddress;\n try {\n var form = $('form[name=dwfrm_billing]');\n ppDetails.billingAddress = {\n city: $('input[name$=_city]', form).val() || '',\n countryCode: $('select[name$=_country]', form).val() || ppShippingAddress.countryCode,\n line1: $('input[name$=_address1]', form).val() || '',\n line2: $('input[name$=_address2]', form).val() || '',\n postalCode: $('input[name$=_postalCode]', form).val() || '',\n state: $('select[name$=_stateCode],input[name$=_stateCode]', form).val() || ''\n };\n\n return {\n error: false\n };\n } catch (err) {\n if (err) {\n this.errorHandlingModel.showBillingAddressIsNotSupported();\n\n return {\n error: true\n };\n }\n }\n }\n};\n\n/**\n * Method triggers when buyer canceled payment in PayPal modal\n * THIS METHOD CAN BE OVERRIDDEN in children class\n */\nPayPalBaseModel.prototype.onCancelPaymentCallback = function () {\n this.loader.hide();\n};\n\n/**\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\n * THIS METHOD CAN BE OVERRIDDEN in children class\n * @returns {Object} Amount and Shipping address from basket\n */\nPayPalBaseModel.prototype.onOrderCreateCallback = function () {\n // Hide custom error on buyer PayPal button click.\n this.errorHandlingModel.hideError();\n\n // Get basket again in case if \"onPayPalButtonClickCallback\" wasn't triggered (Change Payment Method Button case)\n var basketData = this.basketData || requestsHelper.getBasketData(this.basketDataUrl);\n var shippingAddress = basketData.shippingAddress || this.savedPaypalAddress;\n\n var payPalConfigurations = this.payPalConfigurations;\n var mainPayPalConfigurations = payPalConfigurations.options;\n var requestBillingAgreement = mainPayPalConfigurations.requestBillingAgreement;\n\n var paymentObjectData = {\n amount: basketData.amount,\n currency: mainPayPalConfigurations.currency,\n flow: mainPayPalConfigurations.flow,\n intent: mainPayPalConfigurations.intent,\n locale: mainPayPalConfigurations.locale,\n enableShippingAddress: mainPayPalConfigurations.enableShippingAddress,\n billingAgreementDescription: mainPayPalConfigurations.billingAgreementDescription,\n displayName: mainPayPalConfigurations.displayName\n };\n\n // \"requestBillingAgreement\" we be true when \"paupal_pay_later\" functionality will be enabled or when Checkout with Vault is enabled\n // Vault mode should be also enabled\n if (requestBillingAgreement) {\n paymentObjectData.requestBillingAgreement = requestBillingAgreement;\n\n if (mainPayPalConfigurations.billingAgreementDetails) {\n paymentObjectData.billingAgreementDetails = {\n description: mainPayPalConfigurations.billingAgreementDetails.description\n };\n }\n }\n\n // Case when process from PDP & Cart & Mini Cart & Checkout and basket isn't empty or we on Account page\n if (shippingAddress) {\n paymentObjectData.shippingAddressEditable = false;\n paymentObjectData.shippingAddressOverride = {\n line1: shippingAddress.line1,\n line2: shippingAddress.line2,\n city: shippingAddress.city,\n state: shippingAddress.state,\n postalCode: shippingAddress.postalCode,\n countryCode: shippingAddress.countryCode,\n phone: shippingAddress.phone,\n recipientName: shippingAddress.recipientName\n };\n }\n\n return paymentObjectData;\n};\n\n/**\n * Callback triggers when buyer clicked on PayPal button\n * @param {Object} _ first not used param\n * @param {Object} actions BT actions object\n */\n// eslint-disable-next-line no-unused-vars\nPayPalBaseModel.prototype.onPayPalButtonClickCallback = function (fundingSourceResponse) {\n // Hide custom error on buyer PayPal button click.\n this.errorHandlingModel.hideError();\n this.basketData = this.basketDataUrl ? requestsHelper.getBasketData(this.basketDataUrl) : null;\n this.loader.show();\n if (document.querySelector('#braintreePaypalFundingSource')) {\n document.querySelector('#braintreePaypalFundingSource').value = fundingSourceResponse.fundingSource;\n }\n};\n\n/**\n * Method triggers when error happens during PayPal modal payment processing\n * THIS METHOD CAN BE OVERRIDDEN in children class\n * @param {Object} error error object with \"message\" and \"code\" inside\n */\nPayPalBaseModel.prototype.onErrorPaymentCallback = function (error) {\n this.errorHandlingModel.showErrorByObject(error);\n};\n\n/**\n * This method is executed when creating paypalCheckoutInstance. Should contain configs for \"braintree.paypalCheckout.create\" method.\n * Should only be used inside \"braintreePayPalSDK\" file\n * @param {Object} btClientInstance Braintree client instance\n * @returns {Object} object with additional configurations\n */\nPayPalBaseModel.prototype.payPalCheckoutInstanceConfigs = function (btClientInstance) {\n return {\n client: btClientInstance\n };\n};\n\n/**\n * This method is executed when loading PayPal SDK\n * @returns {Object} object with Checkout mode PayPal SDK configs\n */\nPayPalBaseModel.prototype.payPalCheckoutSdkConfigs = function () {\n var isChangePaymentButtonActive = this.payPalConfigurations.changePMButtonEnabled;\n var intent = this.payPalConfigurations.options.intent;\n var currency = this.payPalConfigurations.options.currency;\n var enableFundingList = this.payPalConfigurations.options.enableFundingList;\n var disableFundingList = this.payPalConfigurations.options.disableFundingList;\n var payPalSDKConfigObject = {\n intent: intent,\n currency: currency,\n components: 'buttons,messages',\n commit: false\n };\n // Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\n if (isChangePaymentButtonActive && disableFundingList !== undefined) {\n disableFundingList += ',card';\n } else if (isChangePaymentButtonActive && disableFundingList === undefined) {\n disableFundingList = 'card';\n }\n\n if (enableFundingList !== undefined) {\n payPalSDKConfigObject['enable-funding'] = enableFundingList;\n }\n\n if (disableFundingList !== undefined) {\n payPalSDKConfigObject['disable-funding'] = disableFundingList;\n }\n\n return payPalSDKConfigObject;\n};\n\n/**\n * This method is executed when loading PayPal SDK\n * @returns {Object} object with Vault mode PayPal SDK configs\n */\nPayPalBaseModel.prototype.payPalVaultSdkConfigs = function () {\n var isChangePaymentButtonActive = this.payPalConfigurations.changePMButtonEnabled;\n var enableFundingList = this.payPalConfigurations.options.enableFundingList;\n var disableFundingList = this.payPalConfigurations.options.disableFundingList;\n // Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\n if (isChangePaymentButtonActive && disableFundingList !== undefined) {\n disableFundingList += ',card';\n } else if (isChangePaymentButtonActive && disableFundingList === undefined) {\n disableFundingList = 'card';\n }\n\n var payPalVaultSdkConfigsObject = {\n vault: true,\n components: 'buttons,messages'\n };\n\n if (enableFundingList !== undefined) {\n payPalVaultSdkConfigsObject['enable-funding'] = enableFundingList;\n }\n\n if (disableFundingList !== undefined) {\n payPalVaultSdkConfigsObject['disable-funding'] = disableFundingList;\n }\n\n return payPalVaultSdkConfigsObject;\n};\n\n/* -------------------- Payment logic -------------------- */\n\n/**\n * Function which should be called when we need to init PayPal payment button\n * @returns {Promise} PayPal button\n */\nPayPalBaseModel.prototype.initPayment = function () {\n var CurrentPayPalPaymenProcessorModelInstance = this;\n var result;\n\n result = this.braintreePayPalSDK(\n this.btClientInstancePromise,\n this.isVaultMode,\n this.payPalConfigurations,\n this.payPalButtonSelector,\n CurrentPayPalPaymenProcessorModelInstance\n );\n\n return result;\n};\n\n/**\n * Generate fraud data if enabled\n */\nPayPalBaseModel.prototype.generateFraudData = function () {\n if (this.isFraudToolsEnabled) {\n this.fraudDataPromise = braintreeGeneral.collectFraudData(this.btClientInstancePromise);\n }\n // Don't need \"else\" case, since default value was inited in constructor\n};\n\nmodule.exports = PayPalBaseModel;\n","'use strict';\n\nvar PayPalExpressModel = require('./payPalExpressModel');\n\n/**\n * PayPal cart model constructor\n * @param {Object} errorHandlingModel error handling model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {boolean} isVaultMode \"true\" in case if vault mode is enabled\n * @param {boolean} requestBillingAgreement \"true\" in case if billing agreement should be requested\n * @param {boolean} isFraudToolsEnabled \"true\" in case if fraud tools is enabled\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalCartModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n) {\n // Init PayPalExpressModel constructor\n PayPalExpressModel.call(\n this,\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n );\n\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalCartModel.prototype = Object.create(PayPalExpressModel.prototype);\n\n// Show error in case if current basket has zero total price\nPayPalCartModel.prototype.onPayPalButtonClickCallback = function (_, actions) {\n PayPalExpressModel.prototype.onPayPalButtonClickCallback.call(this, _, actions);\n\n if (this.basketData.amount === 0) {\n this.errorHandlingModel.showZeroAmountOnCart();\n\n return actions.reject();\n }\n};\n\nmodule.exports = PayPalCartModel;\n","'use strict';\n\nvar PayPalBaseModel = require('./payPalBaseModel');\nvar helper = require('../../helper');\nvar payPalCheckoutModelHelper = require('../helpers/payPalCheckoutModelHelper');\nvar billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\nvar paypalListHelper = require('../helpers/payPalListHelper');\n\n/**\n * PayPal checkout model constructor\n * @param {Object} errorHandlingModel error handling model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {boolean} isVaultMode \"true\" in case if vault mode is enabled\n * @param {boolean} requestBillingAgreement \"true\" in case if billing agreement should be requested\n * @param {boolean} isFraudToolsEnabled \"true\" in case if fraud tools is enabled\n * @param {Object} $continueButton continue button js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalCheckoutPaymentModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $continueButton,\n $loaderContainer\n) {\n PayPalBaseModel.call(\n this,\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $loaderContainer\n );\n\n this.$continueButton = $continueButton;\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalCheckoutPaymentModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n// For more details see same method from \"PayPalBaseModel\"\n// Add additional configs which are needed for \"Change Payment Method Button\" feature\nPayPalCheckoutPaymentModel.prototype.payPalCheckoutInstanceConfigs = function (btClientInstance) {\n var checkoutInstanceConfigs = PayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(this, btClientInstance);\n\n if (this.changePMButtonEnabled) {\n checkoutInstanceConfigs.autoSetDataUserIdToken = true;\n }\n\n return checkoutInstanceConfigs;\n};\n\n// For more details see same method from \"PayPalBaseModel\"\n// Show error in case if current basket has zero total price\nPayPalCheckoutPaymentModel.prototype.onPayPalButtonClickCallback = function (_, actions) {\n PayPalBaseModel.prototype.onPayPalButtonClickCallback.call(this, _, actions);\n\n var allowZeroAmountOrders = $('#checkout-main').attr('data-allow-zero-order') == 'true';\n\n if (this.basketData.amount === 0 && !allowZeroAmountOrders) {\n this.errorHandlingModel.showZeroAmountOnCheckout();\n return actions.reject();\n }\n};\n\n// For more details see same method from \"PayPalBaseModel\"\n// Mark new account as the session one, fill billing form with data from paypal\nPayPalCheckoutPaymentModel.prototype.onApprovePaymentCallback = function (payload) {\n // Calling parrent method to proceed with PayPal payload validation\n var baseResponse = PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n // Error will be handled on BaseModel level\n if (baseResponse && baseResponse.error) {\n return;\n }\n\n this.loader.show();\n\n var PayPalCheckoutPaymentModelInstance = this;\n var isBuyerAuthenificated = PayPalCheckoutPaymentModelInstance.payPalConfigurations.isBuyerAuthenticated;\n var btDetails = payload.details;\n var nonce = payload.nonce;\n var email = payload.details.email;\n var btBillingAddress = btDetails ? btDetails.billingAddress : null;\n\n // Remove all other Payments session payments\n helper.removeActiveSessionPayment();\n\n // Hide PayPal buttons block\n payPalCheckoutModelHelper.hidePayPalButtons();\n\n // Fill just PayPal related form fields\n billingFormHelper.fillPayPalPaymentFields(btDetails);\n\n // Copy billing address from PayPal to DW billing address form fields\n if (btBillingAddress && btDetails) {\n billingFormHelper.copyPayPalBillingAddressToDw(btBillingAddress, btDetails);\n }\n\n // Make current PayPal account as a session account\n billingFormHelper.storePaymentAsSessionPayment(nonce, email);\n\n billingFormHelper.setSessionAccountOptionDefault();\n\n // Add billing address on session payment option level\n payPalCheckoutModelHelper.addBillingAddressOnPaymentOptionLevel(btDetails);\n\n // Check whether buyer has proceeded with the same email which is already stored\n // if \"yes\" we hide stored account with the same email in dropdown\n // if \"no\" we show all existent PP accounts in dropdown (stored + new session account)\n paypalListHelper.handleStoredAccountsShowing(isBuyerAuthenificated);\n\n\n // Gennerate and add fraud data in to the billing form\n PayPalCheckoutPaymentModelInstance.fraudDataPromise\n .then(function (data) {\n // We have \"fraudDataCollectionDisabled\" flag only in case if we have fraud data collection disabled\n if (!data.fraudDataCollectionDisabled) {\n billingFormHelper.fillFraudDataInput(data);\n }\n })\n .then(function () {\n // Submit payment to server\n PayPalCheckoutPaymentModelInstance.$continueButton.click();\n\n PayPalCheckoutPaymentModelInstance.loader.hide();\n });\n};\n\nmodule.exports = PayPalCheckoutPaymentModel;\n","'use strict';\n\nvar PayPalBaseModel = require('./payPalBaseModel');\nvar payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\nvar billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\nvar requestHelper = require('../helpers/payPalRequestsHelperGlobal');\n\n/**\n * PayPal express model constructor\n * @param {Object} errorHandlingModel error handling model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {boolean} isVaultMode \"true\" in case if vault mode is enabled\n * @param {boolean} requestBillingAgreement \"true\" in case if billing agreement should be requested\n * @param {boolean} isFraudToolsEnabled \"true\" in case if fraud tools is enabled\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalExpressModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n) {\n // Init PayPalBaseModel constructor\n PayPalBaseModel.call(\n this,\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $loaderContainer\n );\n\n this.$csrfToken = $csrfToken;\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalExpressModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n// For more details see same method from \"PayPalBaseModel\"\n// Add additional configs which are needed for \"Change payment method button\" feature\nPayPalExpressModel.prototype.payPalCheckoutInstanceConfigs = function (btClientInstance) {\n var checkoutInstanceConfigs = PayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(this, btClientInstance);\n\n if (this.changePMButtonEnabled) {\n checkoutInstanceConfigs.autoSetDataUserIdToken = true;\n }\n\n return checkoutInstanceConfigs;\n};\n\n/**\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\n * @returns {Object} Amount and Shipping address from basket\n */\nPayPalExpressModel.prototype.onOrderCreateCallback = function () {\n var orderData;\n var basketDataUrl = this.basketDataUrl;\n var isUseSavedPaypalAddress;\n\n this.basketData = requestHelper.getBasketData(basketDataUrl);\n\n isUseSavedPaypalAddress = this.changePMButtonEnabled && !this.basketData.shippingAddress;\n\n if (isUseSavedPaypalAddress) {\n this.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(this.payPalButtonSelector);\n }\n\n orderData = PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\n\n return orderData;\n};\n\n\n// For more details see same method from \"PayPalBaseModel\"\n// Create and submit billing data to the server. Redirect on order reivew checkout step\nPayPalExpressModel.prototype.onApprovePaymentCallback = function (payload) {\n // Calling parrent method to proceed with PayPal payload validation\n var baseResponse = PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n // Error will be handled on BaseModel level\n if (baseResponse && baseResponse.error) {\n return;\n }\n\n this.loader.show();\n\n var PayPalExpressInstance = this;\n var payloadDetails = payload.details;\n var $payPalButtonWrapper = document.querySelector('.braintree-cart-paypal-buttons-wrap');\n var $braintreePayPalFundingSource = document.querySelector('#braintreePaypalFundingSource');\n var braintreePayPalFundingSource = $braintreePayPalFundingSource.value;\n\n var paypalCheckoutFormFields = JSON.parse($payPalButtonWrapper.getAttribute('data-paypal-checkout-form-fields'));\n var billingAddressData = billingFormHelper.createBillingAddressData(payloadDetails);\n var billingFormData;\n\n // Create form data only with billing address\n billingFormData = billingFormHelper.createBillingAddressFormData(paypalCheckoutFormFields, billingAddressData);\n\n billingFormHelper.appendCsrfTokenToFormData(billingFormData, PayPalExpressInstance.$csrfToken);\n billingFormHelper.appendBraintreePaypalFundingSourceToFormData(billingFormData, braintreePayPalFundingSource);\n\n // It will generate FFraud data only if it Fraud Data collection was enabled\n PayPalExpressInstance.fraudDataPromise\n .then(function (data) {\n if (!data.fraudDataCollectionDisabled) {\n billingFormHelper.appendFraudDataToFormData(billingFormData, data.deviceData);\n }\n })\n .then(function () {\n var shippingAddressData;\n\n // If shipping address was presented in PayPal payload, create a shipping address object,\n // stringify it and store in FormData as an input\n if (payloadDetails.shippingAddress) {\n shippingAddressData = payPalExpressModelHelper.createShippingAddressData(payloadDetails);\n\n payPalExpressModelHelper.appendShippingDataAsStringToFormData(billingFormData, shippingAddressData);\n }\n\n // Create a shipping address object, stringify it and store in FormData as an input\n billingFormHelper.appendBillingAddressAsStringToFormData(billingFormData, billingAddressData);\n\n billingFormHelper.appendEmailAsStringToFormData(billingFormData, payloadDetails.email);\n\n billingFormHelper.appendBtPaymentFieldsToFormData(billingFormData, payload);\n })\n .then(function () {\n // Submit customer form with email (CheckoutServices-SubmitCustomer)\n // as we skip step \"login via guest/registered user\" while express checkout\n // email is set only in case of guest checkout and if email is not already set\n payPalExpressModelHelper.submitCustomerForm(payloadDetails.email);\n })\n .then(function () {\n requestHelper.submitPaymentDataToServerPromise(\n PayPalExpressInstance.submitPaymentUrl,\n billingFormData,\n PayPalExpressInstance.placeOrderStageUrl,\n PayPalExpressInstance.loader,\n PayPalExpressInstance.errorHandlingModel\n );\n\n PayPalExpressInstance.loader.hide();\n });\n};\n\nmodule.exports = PayPalExpressModel;\n","'use strict';\n\nvar PayPalBaseModel = require('./payPalBaseModel');\nvar PayPalExpressModel = require('./payPalExpressModel');\nvar payPalProductPageModelHelper = require('../helpers/payPalProductPageModelHelper');\nvar payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\nvar requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\n\n/**\n * PayPal product model constructor\n * @param {Object} errorHandlingModel error handling model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {boolean} isVaultMode \"true\" in case if vault mode is enabled\n * @param {boolean} requestBillingAgreement \"true\" in case if billing agreement should be requested\n * @param {boolean} isFraudToolsEnabled \"true\" in case if fraud tools is enabled\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalProductPageModel(\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n) {\n // Init PayPalExpressModel constructor\n PayPalExpressModel.call(\n this,\n errorHandlingModel,\n btClientInstancePromise,\n payPalButtonSelector,\n payPalConfigurations,\n isVaultMode,\n requestBillingAgreement,\n isFraudToolsEnabled,\n $csrfToken,\n $loaderContainer\n );\n\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalProductPageModel.prototype = Object.create(PayPalExpressModel.prototype);\n\n// Dummy function to override default behavior and do not execute \"GetOrderInfo\" call.\n// Instead, we will get basket data inside \"onOrderCreateCallback\"\nPayPalProductPageModel.prototype.onPayPalButtonClickCallback = function (e) {\n PayPalBaseModel.prototype.onPayPalButtonClickCallback.call(this, e);\n};\n\n// Add product to the Cart\nPayPalProductPageModel.prototype.onOrderCreateCallback = function () {\n var orderData;\n var addProductToCartResponse = requestsHelper.addProductToCart();\n var basketDataUrl = this.basketDataUrl;\n var isUseSavedPaypalAddress;\n\n this.basketData = requestsHelper.getBasketData(basketDataUrl);\n this.addedProductFromPdp = {\n uuid: addProductToCartResponse.pliUUID,\n pid: addProductToCartResponse.pid\n };\n this.removeFromCartUrl = addProductToCartResponse.cart.actionUrls.removeProductLineItemUrl;\n\n isUseSavedPaypalAddress = this.changePMButtonEnabled && !this.basketData.shippingAddress;\n\n if (isUseSavedPaypalAddress) {\n this.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(this.payPalButtonSelector);\n }\n\n orderData = PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\n\n return orderData;\n};\n\n// On error remove added product from Cart\nPayPalProductPageModel.prototype.onErrorPaymentCallback = function (error) {\n PayPalExpressModel.prototype.onErrorPaymentCallback.call(this, error);\n\n payPalProductPageModelHelper.removeProductFromCart(this.removeFromCartUrl, this.addedProductFromPdp);\n};\n\n// On cancel remove added product from Cart\nPayPalProductPageModel.prototype.onCancelPaymentCallback = function () {\n payPalProductPageModelHelper.removeProductFromCart(this.removeFromCartUrl, this.addedProductFromPdp);\n};\n\nmodule.exports = PayPalProductPageModel;\n","'use strict';\n\nvar payPalProductPage = require('./components/payPalProductPage');\nvar payPalMiniCartPage = require('./components/payPalMiniCartPage');\nvar payPalCartPage = require('./components/payPalCartPage');\nvar payPalAccountPage = require('./components/payPalAccountPage');\nvar payPalCheckoutPage = require('./components/payPalCheckoutPage');\n\nvar btClientInstancePromise;\n\n/**\n * Init PayPal functionality on PDP\n */\nfunction initProduct() {\n payPalProductPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on MiniCart\n */\nfunction initMiniCart() {\n // For MiniCart we generate client instance inside component.\n // This is, since general code which generate client instance executes before client token appear\n // This is only applicable for MiniCart\n payPalMiniCartPage.init();\n}\n\n/**\n * Init PayPal functionality on Cart\n */\nfunction initCart() {\n payPalCartPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on Checkout\n */\nfunction initCheckout() {\n payPalCheckoutPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on Account\n */\nfunction initAccount() {\n payPalAccountPage.init(btClientInstancePromise);\n}\n\n/**\n * Init general variables which are used on all pages\n * @param {Object} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n btClientInstancePromise = clientInstancePromise;\n}\n\nmodule.exports = {\n init,\n initCheckout,\n initProduct,\n initMiniCart,\n initCart,\n initAccount\n};\n","'use strict';\n/* eslint-disable no-undef */\n/* global braintreeUtils braintree $ */\n\n/**\n * Creates visa checkout instance\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\n * @returns {Promise} visaCheckoutInstance SRC instance\n */\nfunction createVisaCheckout(btClientInstancePromise) {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n return braintree.visaCheckout.create({\n client: btClientInstance\n });\n });\n}\n\n/**\n * Initialized SRC with options and pass payload data after tokenize\n * @param {Object} SrcBaseModelInstance Instance of SrcBaseModel or it's child classes\n * @returns {Promise} SRC button\n */\nfunction visaCheckoutInitialized(SrcBaseModelInstance) {\n var visaCheckoutInstancePromise = createVisaCheckout(SrcBaseModelInstance.clientInstancePromise);\n\n return visaCheckoutInstancePromise\n .then(function (visaCheckoutInstance) {\n var srcInitOptions = visaCheckoutInstance.createInitOptions(SrcBaseModelInstance.getInitOptionsObject());\n\n V.init(srcInitOptions);\n\n // Event which is triggered when payment successfully completed on SRC end\n V.on('payment.success', function (payment) {\n visaCheckoutInstance.tokenize(payment).then(function (payload) {\n SrcBaseModelInstance.onTokenizeCallback(payload);\n });\n });\n V.on('payment.error', function (_, error) {\n SrcBaseModelInstance.errorHandlingModel.srcErrorHandler(error);\n });\n V.on('payment.cancel', function (payment) {\n if (payment.error) {\n SrcBaseModelInstance.errorHandlingModel.srcErrorHandler(\n SrcBaseModelInstance.errorHandlingModel.errorMessages.CLIENT_GATEWAY_NETWORK\n );\n }\n });\n });\n}\n\nmodule.exports = {\n visaCheckoutInitialized\n};\n","'use strict';\n\nvar loaderInstance = require('../../loaderHelper');\nvar srcHelper = require('../helpers/srcHelper');\nvar creditCardVaultManager = require('../../creditcard/components/creditCardVaultManager');\n\n// Models\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\nvar SrcAccountModel = require('../models/srcAccountModel');\n\nvar $braintreeSrcLoader = document.querySelector('.braintreeSrcLoader');\nvar $braintreeSrcButton = document.querySelector('.js_braintree_src_account_button');\n\n/**\n * Inits SRC account functionality on the Account Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n var srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n var $braintreeSrcDeviceDataInput = null;\n var srcLoader = loaderInstance($braintreeSrcLoader);\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(srcButtonConfigurations.messages);\n\n var SrcAccountModelInstance = new SrcAccountModel(\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n srcLoader,\n errorHandlingBaseModel\n );\n\n // Hides errors on the Account Page\n $braintreeSrcButton.addEventListener('click', errorHandlingBaseModel.hideError);\n\n creditCardVaultManager.removeFromDomCardsWhichAreNotInVaultMgr(clientInstancePromise);\n SrcAccountModelInstance.initSrcButton();\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar srcHelper = require('../helpers/srcHelper');\nvar loaderInstance = require('../../loaderHelper');\n\n// Models\nvar SrcCartModel = require('../models/srcCartModel');\nvar ErrorHandlingCartModel = require('../errorhandler/errorHandlingCartModel');\n\nvar $braintreeCartSrcButton = document.querySelector('.braintree-cart-src-button');\n\n/**\n * Inits SRC account functionality on the Cart Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n var $braintreeSrcLoader = document.querySelector('.braintreeSrcLoader');\n var $totalAmount = document.querySelector('.grand-total');\n var srcLoader = loaderInstance($braintreeSrcLoader);\n var srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n var $braintreeSrcDeviceDataInput = document.querySelector('input[name=braintreeSrcDeviceDataInput]');\n var errorHandlingCartModel = new ErrorHandlingCartModel(srcButtonConfigurations.messages);\n\n var SrcCheckoutModelInstance = new SrcCartModel(\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n srcLoader,\n errorHandlingCartModel\n );\n\n // Hides errors on the Cart Page\n $braintreeCartSrcButton.addEventListener('click', errorHandlingCartModel.hideError);\n\n SrcCheckoutModelInstance.initSrcButton();\n\n // Tracks cases when total amount equal zero and throw an error\n srcHelper.zeroAmountSrcButtonBehavior($totalAmount, errorHandlingCartModel);\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar srcHelper = require('../helpers/srcHelper');\nvar loaderInstance = require('../../loaderHelper');\n\n// Models\nvar SrcCheckoutModel = require('../models/srcCheckoutModel');\nvar ErrorHandlingCheckoutModel = require('../errorhandler/errorHandlingCheckoutModel');\n\nvar $braintreeBillingPageSrcButton = document.querySelector('.braintree-billingpage-src-button');\n\n/**\n * Inits SRC account functionality on the Checkout Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n var $braintreeSrcLoader = document.querySelector('.braintreeSrcLoader');\n var $totalAmount = document.querySelector('.grand-total-sum');\n var srcLoader = loaderInstance($braintreeSrcLoader);\n var srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n var $braintreeSrcDeviceDataInput = document.querySelector('input[name=braintreeSrcDeviceDataInput]');\n var errorHandlingCheckoutModel = new ErrorHandlingCheckoutModel(srcButtonConfigurations.messages);\n\n\n var SrcCheckoutModelInstance = new SrcCheckoutModel(\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n srcLoader,\n errorHandlingCheckoutModel\n );\n\n // Hides errors on the Checkout/Billing Page\n $braintreeBillingPageSrcButton.addEventListener('click', errorHandlingCheckoutModel.hideError);\n\n SrcCheckoutModelInstance.initSrcButton();\n\n // Tracks cases when total amount equal zero and throw an error\n srcHelper.zeroAmountSrcButtonBehavior($totalAmount, errorHandlingCheckoutModel);\n\n // Click SRC tab if session payment ID is SRC and session account value is filled\n // in case of checkout through saved SRC card session payment id will be SRC\n // but session account value will be empty\n var sessionPaymentMethodId = srcButtonConfigurations.sessionPaymentMethodId;\n var isSrcSessionAccountExist = document.querySelector('#sessionSrcAccount').value !== '';\n\n if (sessionPaymentMethodId === 'SRC' && isSrcSessionAccountExist) {\n document.querySelector('.src-tab').click();\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar srcHelper = require('../helpers/srcHelper');\nvar srcListHelper = require('../helpers/srcListHelper');\n\n/**\n * Inits SRC list functionality\n */\nfunction init() {\n var $srcAccountList = document.querySelector('#braintreeSrcAccountsList');\n var srcListExist = Boolean($srcAccountList);\n\n if (srcListExist) {\n srcListHelper.srsListStateHandler();\n\n $srcAccountList.addEventListener('change', function () {\n srcHelper.srcContentTabHandler(true);\n });\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n// Helpers\nvar helper = require('../../helper');\nvar srcListHelper = require('../helpers/srcListHelper');\nvar srcHelper = require('../helpers/srcHelper');\n\nvar $srcSessionAccount = document.querySelector('#sessionSrcAccount');\nvar $srcButton = document.querySelector('.js_braintree_src_button');\nvar $accountListBlock = document.querySelector('.braintree_used_src_account');\nvar $srcCardDescription = document.querySelector('#braintreeSrcCardDescription');\nvar $braintreeSrcCardType = document.querySelector('#braintreeSrcCardType');\nvar $braintreeSrcLastFourDigits = document.querySelector('#braintreeSrcLastFourDigits');\nvar $braintreeSrcCreditCardNumber = document.querySelector('#braintreeSrcCreditCardNumber');\n/**\n * Shows used session account(card) in dropdown and handles checkout view\n * @param {Object} srcPayload payload with card data from tokenization\n */\nfunction showSrcSessionAccount(srcPayload) {\n // description of used card(ex. Visa ending in 1111)\n var cardDescription = srcPayload.details.cardType + ' ' + srcPayload.description;\n\n $srcSessionAccount.value = cardDescription;\n $srcSessionAccount.text = cardDescription;\n $srcCardDescription.value = cardDescription;\n $srcSessionAccount.selected = true;\n $accountListBlock.style.display = 'block';\n $srcButton.style.display = 'none';\n\n // Inputs required for identifying already saved cards\n $braintreeSrcCardType.value = srcPayload.details.cardType;\n $braintreeSrcLastFourDigits.value = srcPayload.details.lastFour;\n $braintreeSrcCreditCardNumber.value = '************' + srcPayload.details.lastFour;\n\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\n srcListHelper.setIsHideContinueButtonAttr(false);\n helper.continueButtonToggle(false);\n}\n\n/*\n* Removes method was used and changes appearance of SRC tab\n**/\nfunction removeSessionNonce() {\n $srcSessionAccount.value = '';\n $srcSessionAccount.text = '';\n $accountListBlock.style.display = 'none';\n $srcSessionAccount.setAttribute('data-save', false);\n\n document.querySelector('#braintreeSRCNonce').value = '';\n document.querySelector('#braintreeSrcBillingAddress').value = '';\n document.querySelector('#braintreeSrcCardDescription').value = '';\n document.querySelector('#newSrcAccount').selected = true;\n\n srcHelper.srcContentTabHandler(false);\n}\n\nmodule.exports = {\n showSrcSessionAccount,\n removeSessionNonce\n};\n","'use strict';\n\nmodule.exports = {\n FLOW_NAME_ACCOUNT: 'account',\n FLOW_NAME_CART_CHECKOUT: 'cart',\n FLOW_NAME_BILLING_CHECKOUT: 'billing'\n};\n","'use strict';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.errorMessages = errorMessages;\n}\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by error Object from BT\n * @param {Object} error error object from Bt\n */\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by message\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Error container which will be used on Account ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n var $errorContainer = $('.error-messaging');\n\n var errorHtml = '
' +\n '' + message + '
';\n\n $errorContainer.append(errorHtml);\n $errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Account we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n var $errorContainer = $('.error-messaging');\n\n $errorContainer.hide();\n $errorContainer.empty();\n};\n\n/**\n * Handles SRC error by types\n * @param {Object} error Error object or error message\n */\nErrorHandlingBaseModel.prototype.srcErrorHandler = function (error) {\n console.error(error);\n\n if (error.name === 'BraintreeError') {\n this.showErrorByObject(error);\n } else {\n this.showErrorByMessage(error.message || error);\n }\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling Cart model constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingCartModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.errorMessages = errorMessages;\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCartModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCartModel.prototype.createErrorNotification = function (message) {\n var $errorContainer = $('.cart-error-messaging');\n\n $('.checkout-btn').addClass('disabled');\n $errorContainer.append(\n `
\n \n ${message}\n
`\n );\n\n $errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n// Shows an error when the value of the total amount on the Card is 0\nErrorHandlingCartModel.prototype.showZeroAmountOnCart = function () {\n ErrorHandlingCartModel.prototype.createErrorNotification(this.errorMessages.CUSTOM_SRC_ZERO_AMOUNT_ERROR);\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCartModel.prototype.hideError = function () {\n var $errorContainer = $('.cart-error-messaging');\n\n $errorContainer.hide();\n $errorContainer.empty();\n};\n\n/**\n * Shows cart error in core error container\n * @param {Object} data error data\n */\nErrorHandlingCartModel.prototype.handleCheckoutFromCartError = function (data) {\n var errorMessage = '';\n\n if (data.fieldErrors.length) {\n data.fieldErrors.forEach(function (error, index) {\n var keys = Object.keys(error);\n\n if (keys.length) {\n errorMessage += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\n }\n });\n\n this.showErrorByMessage(errorMessage);\n }\n\n if (data.serverErrors.length) {\n data.serverErrors.forEach(function (error) {\n errorMessage += `${error}. `;\n });\n\n this.showErrorByMessage(errorMessage);\n }\n\n if (data.cartError) {\n window.location.href = data.redirectUrl;\n }\n};\n\nmodule.exports = ErrorHandlingCartModel;\n","'use strict';\n\nvar ErrorHandlingBaseModel = require('./errorHandlingBaseModel');\n\n/**\n * Error Handling Checkout model constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingCheckoutModel(errorMessages) {\n ErrorHandlingBaseModel.call(this, errorMessages);\n\n this.errorMessages = errorMessages;\n}\n\n/**\n * ES5 inheritance\n */\nErrorHandlingCheckoutModel.prototype = Object.create(ErrorHandlingBaseModel.prototype);\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.hideError = function () {\n var $topErrorMessageText = document.querySelector('.error-message-text');\n var $topErrorMessageWrapper = document.querySelector('.error-message');\n\n $topErrorMessageWrapper.style.display = 'none';\n $topErrorMessageText.innerHTML = '';\n};\n\n// See corresponding method inside \"ErrorHandlingBaseModel\" model\nErrorHandlingCheckoutModel.prototype.createErrorNotification = function (message) {\n var $topErrorMessageText = document.querySelector('.error-message-text');\n var $topErrorMessageWrapper = document.querySelector('.error-message');\n\n $topErrorMessageText.textContent = '';\n $topErrorMessageText.append(message);\n\n $topErrorMessageWrapper.style.display = 'block';\n window.scrollTo(0, 0);\n};\n\n// Shows an error when the value of the total amount on the Checkout is 0\nErrorHandlingCheckoutModel.prototype.showZeroAmountOnCheckout = function () {\n ErrorHandlingCheckoutModel.prototype.createErrorNotification(this.errorMessages.CUSTOM_SRC_ZERO_AMOUNT_ERROR);\n};\n\nmodule.exports = ErrorHandlingCheckoutModel;\n","'use strict';\n\n/**\n * Shows a zero amount SRC button and hides a normal SRC button\n */\nfunction showZeroAmountSrcButton() {\n $('.v-button-zero-amount').show();\n $('.v-button').hide();\n}\n\n/**\n * Hides a zero amount SRC button and show a normal SRC button\n */\nfunction hideZeroAmountSrcButton() {\n $('.v-button-zero-amount').hide();\n $('.v-button').show();\n}\n\n/**\n * Handles whether show or hide zero amount SRC button\n * @param {number} totalAmount Total amount of order\n */\nfunction handleZeroAmountButtonVisibility(totalAmount) {\n if (totalAmount === 0) {\n showZeroAmountSrcButton();\n } else {\n hideZeroAmountSrcButton();\n }\n}\n\n/**\n * Adds event listener to the zero amount button on the Cart Page\n * @param {DOMElement} $zeroAmountButton DOM element of zero amount SRC button\n * @param {Object} errorHandlingModel Checkout error handling model\n */\nfunction addZeroAmountButtonEventListenerOnCart($zeroAmountButton, errorHandlingModel) {\n $zeroAmountButton.addEventListener('click', () => {\n errorHandlingModel.hideError();\n errorHandlingModel.showZeroAmountOnCart();\n });\n}\n\n/**\n * Adds event listener to the zero amount SRC button on the Checkout Page\n * @param {DOMElement} $zeroAmountButton DOM element of zero amount SRC button\n * @param {Object} errorHandlingModel Checkout error handling model\n */\nfunction addZeroAmountButtonEventListenerOnCheckout($zeroAmountButton, errorHandlingModel) {\n $zeroAmountButton.addEventListener('click', () => {\n errorHandlingModel.hideError();\n errorHandlingModel.showZeroAmountOnCheckout();\n });\n}\n\n/**\n * Creates a mutation obserber for total amount element\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\n */\nfunction initTotalAmountElementObserver(totalAmountElement) {\n var config = { attributes: true, childList: true, subtree: true };\n\n var observer = new MutationObserver((element) => {\n var totalAmount = Number.parseFloat(element[0].target.textContent.slice(1));\n\n // Handles whether show or hide zero amount SRC button\n handleZeroAmountButtonVisibility(totalAmount);\n });\n\n observer.observe(totalAmountElement, config);\n}\n\nmodule.exports = {\n initTotalAmountElementObserver: initTotalAmountElementObserver,\n addZeroAmountButtonEventListenerOnCheckout: addZeroAmountButtonEventListenerOnCheckout,\n addZeroAmountButtonEventListenerOnCart: addZeroAmountButtonEventListenerOnCart,\n hideZeroAmountSrcButton: hideZeroAmountSrcButton,\n showZeroAmountSrcButton: showZeroAmountSrcButton,\n handleZeroAmountButtonVisibility: handleZeroAmountButtonVisibility\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar srcListHelper = require('./srcListHelper');\nvar srcButtonHelper = require('./srcButtonHelper');\n\n/**\n * Returns Braintree SRC configs\n * @returns {Object} Braintree SRC configs\n */\nfunction getBraintreeSRCButtonConfigs() {\n var braintreeSrcButtonConfigs = null;\n var $srcButton = document.querySelector('.js_braintree_src_button') || document.querySelector('.js_braintree_src_account_button');\n\n try {\n braintreeSrcButtonConfigs = JSON.parse($srcButton.getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeSrcButtonConfigs;\n }\n\n return braintreeSrcButtonConfigs;\n}\n\n/**\n * Returns stringified SRC shipping address\n * @param {Object} shippingData SRC shipping\n * @returns {string} stringified shipping address\n */\nfunction createSrcShippingAddressData(shippingData) {\n var shippingAddress = {};\n shippingAddress.recipientName = shippingData.firstName + ' ' + shippingData.lastName;\n shippingAddress.phone = shippingData.phoneNumber;\n shippingAddress.countryCodeAlpha2 = shippingData.countryCode;\n shippingAddress.streetAddress = shippingData.streetAddress;\n shippingAddress.extendedAddress = shippingData.extendedAddress;\n shippingAddress.locality = shippingData.locality;\n shippingAddress.region = shippingData.region;\n shippingAddress.postalCode = decodeURIComponent(shippingData.postalCode);\n\n return JSON.stringify(shippingAddress);\n}\n\n/**\n * Returns stringified SRC billing address\n * @param {Object} billingData SRC billing\n * @param {Object} userData user data with email\n * @returns {string} stringified billing address\n */\nfunction createSrcBillingAddress(billingData, userData) {\n var srcBillingAddress = {};\n srcBillingAddress.recipientName = billingData.firstName + ' ' + billingData.lastName;\n srcBillingAddress.phone = billingData.phoneNumber;\n srcBillingAddress.countryCodeAlpha2 = billingData.countryCode;\n srcBillingAddress.streetAddress = billingData.streetAddress;\n srcBillingAddress.extendedAddress = billingData.streetAddress;\n srcBillingAddress.locality = billingData.locality;\n srcBillingAddress.region = billingData.region;\n srcBillingAddress.postalCode = decodeURIComponent(billingData.postalCode);\n srcBillingAddress.email = userData.userEmail;\n\n return JSON.stringify(srcBillingAddress);\n}\n\n/**\n * Creates SRC checkout form data\n * @param {Object} srcCheckoutFormData SRC form data\n * @param {Object} srcResponseData payload from SRC\n * @returns {Object} SRC Checkout Form with appended SRC data\n */\nfunction createSrcCheckoutFormData(srcCheckoutFormData, srcResponseData) {\n var csrfToken = document.querySelector('.braintree-cart-buttons-wrap #csrf_token');\n\n var cardDescription = srcResponseData.details.cardType + ' ' + srcResponseData.description;\n var deviceData = document.querySelector('input[name=braintreeSrcDeviceDataInput]').value;\n var shippingAddressData = createSrcShippingAddressData(srcResponseData.shippingAddress);\n\n srcCheckoutFormData.append(csrfToken.name, csrfToken.value);\n srcCheckoutFormData.append('braintreeSrcNonce', srcResponseData.nonce);\n srcCheckoutFormData.append('braintreeSrcDeviceDataInput', deviceData);\n srcCheckoutFormData.append('braintreeSrcShippingAddress', shippingAddressData || '{}');\n srcCheckoutFormData.append('braintreeSrcCardDescription', cardDescription);\n srcCheckoutFormData.append('braintreeSrcCardType', srcResponseData.details.cardType);\n srcCheckoutFormData.append('braintreeSrcCreditCardNumber', '************' + srcResponseData.details.lastFour);\n\n return srcCheckoutFormData;\n}\n\n/**\n * Creates SRC form data\n * @param {Object} responseData data received after SRC tokenize\n * @param {string} paymentMethodName SRC payment method name\n * @returns {Object} SRC payment form data\n */\nfunction createSrcFormData(responseData, paymentMethodName) {\n var srcData = {};\n var checkoutFormFields = document.querySelector('.braintree-cart-buttons-wrap').getAttribute('data-checkout-form-fields');\n\n srcData.firstName = responseData.userData.userFirstName;\n srcData.lastName = responseData.userData.userLastName;\n srcData.address1 = responseData.billingAddress.streetAddress;\n srcData.address2 = responseData.billingAddress.extendedAddress || '';\n srcData.city = responseData.billingAddress.locality;\n srcData.postalCode = decodeURIComponent(responseData.billingAddress.postalCode);\n srcData.stateCode = responseData.billingAddress.region;\n srcData.country = responseData.billingAddress.countryCode;\n srcData.email = responseData.userData.userEmail;\n srcData.phone = responseData.billingAddress.phoneNumber;\n srcData.paymentMethod = paymentMethodName;\n\n return helper.createPaymentFormData(checkoutFormFields, srcData);\n}\n\n/**\n * Updates Storefront billing data form with SRC data\n * @param {Object} srcBillingData SRC billing address data/phone/email\n */\nfunction updateStorefrontBillingData(srcBillingData) {\n var storefrontBillingData = JSON.parse(document.querySelector('.braintree-billing-payment-wrap').getAttribute('data-billing-form-fields-names'));\n storefrontBillingData.dwfrm_billing_addressFields_firstName = srcBillingData.firstName;\n storefrontBillingData.dwfrm_billing_addressFields_lastName = srcBillingData.lastName;\n storefrontBillingData.dwfrm_billing_addressFields_address1 = srcBillingData.streetAddress;\n storefrontBillingData.dwfrm_billing_addressFields_address2 = srcBillingData.extendedAddress || '';\n storefrontBillingData.dwfrm_billing_addressFields_city = srcBillingData.locality;\n storefrontBillingData.dwfrm_billing_addressFields_postalCode = decodeURIComponent(srcBillingData.postalCode);\n storefrontBillingData.dwfrm_billing_addressFields_states_stateCode = srcBillingData.region;\n storefrontBillingData.dwfrm_billing_addressFields_country = srcBillingData.countryCode;\n storefrontBillingData.dwfrm_billing_contactInfoFields_email = srcBillingData.email;\n storefrontBillingData.dwfrm_billing_contactInfoFields_phone = srcBillingData.phoneNumber;\n\n helper.updateBillingFormValues(storefrontBillingData);\n}\n\n/**\n * Handles all behavior related to the src content tab\n * SRC list (dropdown) change - actions for new/session account showing\n * @param {bollean} isSrcTabActive Whether Src tab is active\n */\nfunction srcContentTabHandler(isSrcTabActive) {\n var $srcAccountList = document.querySelector('#braintreeSrcAccountsList');\n var srcOptionId = $srcAccountList.value;\n var $srcButton = document.querySelector('.js_braintree_src_button');\n var $srcZeroAmountButton = document.querySelector('.braintree-billingpage-src-button-zero-amount');\n var $alertInfo = document.querySelector('.billingAddressInfoAlert');\n var $srcSessionAccount = document.querySelector('#sessionSrcAccount');\n\n switch (srcOptionId) {\n case 'newaccount':\n $srcButton.style.display = 'block';\n $srcZeroAmountButton.style.display = 'block';\n $alertInfo.style.display = 'block';\n\n if (isSrcTabActive) {\n helper.continueButtonToggle(true);\n }\n\n srcListHelper.setIsHideContinueButtonAttr(true);\n // Case when registered user and vaulting is enabled\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\n break;\n default:\n $srcButton.style.display = 'none';\n $srcZeroAmountButton.style.display = 'none';\n $alertInfo.style.display = 'none';\n\n helper.continueButtonToggle(false);\n srcListHelper.setIsHideContinueButtonAttr(false);\n // Case when registered user and vaulting is enabled\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, JSON.parse($srcSessionAccount.getAttribute('data-save')));\n }\n}\n\n/**\n * Treats the behavior of the SRC button in the SRC tab based on the total cost\n * Shows/hides the required SRC button if the total value is/isn't 0\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\n * @param {Object} errorHandlingModel ErrorHandling cart or checkout model\n */\nfunction zeroAmountSrcButtonBehavior(totalAmountElement, errorHandlingModel) {\n var $braintreeCartZeroAmountSrcButton = document.querySelector('.braintree-cart-src-button-zero-amount');\n var $braintreeBillingPageZeroAmountSrcButton = document.querySelector('.braintree-billingpage-src-button-zero-amount');\n var totalAmount = Number.parseFloat(totalAmountElement.textContent.slice(1));\n\n // Add event listener for cart zero amount button\n if ($braintreeCartZeroAmountSrcButton) {\n srcButtonHelper.addZeroAmountButtonEventListenerOnCart($braintreeCartZeroAmountSrcButton, errorHandlingModel);\n }\n\n // Add event listener for checkout zero amount button\n if ($braintreeBillingPageZeroAmountSrcButton) {\n srcButtonHelper.addZeroAmountButtonEventListenerOnCheckout($braintreeBillingPageZeroAmountSrcButton, errorHandlingModel);\n }\n\n // Handles whether show or hide zero amount button\n srcButtonHelper.handleZeroAmountButtonVisibility(totalAmount);\n\n // Creates a mutation obserber for total amount element\n srcButtonHelper.initTotalAmountElementObserver(totalAmountElement);\n}\n\nmodule.exports = {\n getBraintreeSRCButtonConfigs,\n createSrcShippingAddressData,\n createSrcBillingAddress,\n createSrcFormData,\n updateStorefrontBillingData,\n srcContentTabHandler,\n createSrcCheckoutFormData,\n zeroAmountSrcButtonBehavior\n};\n","var helper = require('../../helper');\n\nvar $srcAccountList = document.querySelector('#braintreeSrcAccountsList');\nvar $srcButton = document.querySelector('.js_braintree_src_button');\nvar $accoutnListBlock = document.querySelector('.braintree_used_src_account');\nvar $alertInfo = document.querySelector('.billingAddressInfoAlert');\nvar $saveSRCAccountCheckbox = document.querySelector('#braintreeSaveSRCAccount');\nvar $saveSRCAccountCheckboxContainter = document.querySelector('#braintreeSaveSRCContainer');\n\n/**\n * Sets value to data-paypal-is-hide-continue-button attribute\n * @param {boolean} value true/false\n */\nfunction setIsHideContinueButtonAttr(value) {\n var $srcContent = document.querySelector('.js_braintree_srcContent');\n\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', value);\n}\n\n/**\n * Handles actions based on selected value in SRC dropdown for checkout view\n */\nfunction srsListStateHandler() {\n var srcOptionId = $srcAccountList.value;\n switch (srcOptionId) {\n case 'newaccount':\n\n if ($alertInfo) {\n $alertInfo.style.display = 'block';\n }\n\n $accoutnListBlock.style.display = 'none';\n break;\n default:\n $srcButton.style.display = 'none';\n\n if ($alertInfo) {\n $alertInfo.style.display = 'none';\n }\n\n helper.continueButtonToggle(false);\n setIsHideContinueButtonAttr(false);\n }\n}\n\n/**\n * Get stored card by card type and last four digits\n * @param {string} cardType card type\n * @param {string} lastFour last four card digits\n * @returns {Object} jquery object of found stored card\n */\nfunction getStoredCardByData(cardType, lastFour) {\n var $foundCard;\n\n $('.js_stored_card').each(function (_, $el) {\n var $card = $($el);\n var storedCardType = $card.data('type').replace(/\\s/g, '').toLowerCase();\n var storedCardLastFour = $card.data('last-four').toString();\n\n if (storedCardType === cardType && storedCardLastFour === lastFour) {\n $foundCard = $card;\n }\n });\n\n return $foundCard;\n}\n\n/**\n * Checks whether SRC session card is already stored\n * @param {string} cardType card type\n * @param {string} lastFour last four card digits\n * @returns {boolean} \"true/false\" value whether session card is already stored\n */\nfunction isSessionCardAlreadyStored(cardType, lastFour) {\n var $storedCard = getStoredCardByData(cardType, lastFour);\n var flag = false;\n\n if ($storedCard) {\n flag = true;\n }\n\n return flag;\n}\n\n/**\n * Sets value to \"Save SRC account\" checkbox\n * @param {Element} srcSessionAccount element from which we recognize session account existence\n * @param {boolean} value true/false\n */\nfunction handleSaveSrcAccountCheckbox(srcSessionAccount, value) {\n var isSrcSessionCardExist = srcSessionAccount.value !== '';\n var isAddNewOptionSelected = $srcAccountList.value === 'newaccount';\n\n if ($saveSRCAccountCheckbox) {\n // In case if session account exists and is chosen in dropdown\n // we check whether used SRC card is already stored\n // if card is already stored \"save\" checkbox is hidden and unchecked\n if (isSrcSessionCardExist && !isAddNewOptionSelected) {\n var $braintreeSrcCardType = document.querySelector('#braintreeSrcCardType');\n var $braintreeSrcLastFourDigits = document.querySelector('#braintreeSrcLastFourDigits');\n var sessionCardType = $braintreeSrcCardType.value;\n var sessionCardLastFour = $braintreeSrcLastFourDigits.value;\n sessionCardType = sessionCardType.replace(/\\s/g, '').toLowerCase();\n\n var isSrcSessionCardAlreadyStored = isSessionCardAlreadyStored(sessionCardType, sessionCardLastFour);\n\n if (isSrcSessionCardAlreadyStored) {\n $saveSRCAccountCheckbox.checked = false;\n $saveSRCAccountCheckboxContainter.style.display = 'none';\n }\n\n return;\n }\n // In case if session card does not exist/user chooses option \"Add New\"\n // or session card is not stored yet\n // checkbox is checked and shown\n $saveSRCAccountCheckboxContainter.style.display = 'block';\n $saveSRCAccountCheckbox.checked = value;\n }\n}\n\nmodule.exports = {\n setIsHideContinueButtonAttr,\n srsListStateHandler,\n handleSaveSrcAccountCheckbox\n};\n","'use strict';\n\nvar srcConstants = require('../constants/srcConstants');\nvar paymentMethodGeneral = require('../../paymentMethodGeneral');\n\n/**\n * Gets SRC flow name(corresponding page)\n * @returns {string} Flow id(page) account/cart/billing\n */\nfunction getSrcFlowName() {\n var srcFlowName;\n var isSrcEnabledOnAccountPage = Boolean(document.querySelector('.js_braintree_addSrcAccountForm'));\n var isSrcEnabledOnCartPage = Boolean(document.querySelector('.braintree-cart-src-button'));\n var isSrcEnabledOnBillingPage = Boolean(document.querySelector('.js_braintree_srcContent'));\n\n if (isSrcEnabledOnAccountPage) {\n srcFlowName = srcConstants.FLOW_NAME_ACCOUNT;\n } else if (isSrcEnabledOnCartPage) {\n srcFlowName = srcConstants.FLOW_NAME_CART_CHECKOUT;\n } else if (isSrcEnabledOnBillingPage) {\n srcFlowName = srcConstants.FLOW_NAME_BILLING_CHECKOUT;\n }\n\n return srcFlowName;\n}\n\n/**\n * Makes call to checkoutFrom Cart endpoint\n * @param {Object} srcCheckoutFormData SRC form data passed to server side\n * @param {string} email SRC email from response\n * @param {Object} errorHandlingCartModel Error handling cart model\n * @returns {ajax} call to checkoutFrom Cart endpoint\n */\nfunction checkoutFromCartCall(srcCheckoutFormData, email, errorHandlingCartModel) {\n var $braintreeCartButtons = document.querySelector('.braintree-cart-buttons-wrap');\n var checkoutFromCartUrl = $braintreeCartButtons.getAttribute('data-checkout-from-cart-url');\n var placeOrderUrl = $braintreeCartButtons.getAttribute('data-checkout-placeorder-url');\n // Submit customer form with email (CheckoutServices-SubmitCustomer)\n // as we skip step \"login via guest/registered user\" while express checkout\n // email is set only in case of guest checkout and if email is not already set\n paymentMethodGeneral.submitCustomerForm(email);\n\n return $.ajax({\n type: 'POST',\n url: checkoutFromCartUrl,\n data: srcCheckoutFormData,\n contentType: false,\n processData: false\n })\n .done(function (data) {\n if (data.error) {\n errorHandlingCartModel.handleCheckoutFromCartError(data);\n }\n\n sessionStorage.setItem('pageState', 'cart');\n window.location.href = placeOrderUrl;\n })\n .fail(function (err) {\n if (err && err.redirectUrl) {\n window.location.href = err.redirectUrl;\n }\n });\n}\n\nmodule.exports = {\n getSrcFlowName,\n checkoutFromCartCall\n};\n","'use strict';\n\nvar SrcBaseModel = require('./srcBaseModel');\nvar creditCardVaultManager = require('../../creditcard/components/creditCardVaultManager');\n\n/**\n * Check whether new card is presented on storefront and in VaultMgr. If yes - render error message.\n * @param {Promise} clientInstancePromise client instance promise\n * @param {Object} btPayload payload from Braintree\n * @param {Object} srcMessages object with errors\n * @returns {Promise} promise with reject status in case if new card already exists in VaultMgr and on Storefront (buyer's wallet)\n */\nfunction rejectIfCardExistsInVault(clientInstancePromise, btPayload, srcMessages) {\n var payloadDetails = btPayload.details;\n var lastFour = payloadDetails.lastFour.toString();\n var type = payloadDetails.cardType.toLowerCase();\n\n return creditCardVaultManager.isNewCardCanBeStored(clientInstancePromise, lastFour, type)\n .then(function (newCardCanBeStored) {\n if (!newCardCanBeStored) {\n // eslint-disable-next-line no-undef\n return Promise.reject(srcMessages.CARD_ALREADY_EXIST_ERROR_MESSAGE);\n }\n });\n}\n\n// See description of \"srcBaseModel\" for more info\nfunction SrcAccountModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, errorHandlingBaseModel) {\n SrcBaseModel.call(\n this,\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n loader,\n errorHandlingBaseModel\n );\n}\n\nSrcAccountModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Method set nonce data in to hidden input and submit the form to the server\nSrcAccountModel.prototype.onTokenizeCallback = function (srcPayload) {\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n var srcLoader = this.loader;\n var errorHandlingBaseModel = this.errorHandlingModel;\n var $addSrcAccountForm = $('.js_braintree_addSrcAccountForm');\n var addSrcFormUrl = $addSrcAccountForm.attr('action');\n var $srcNonce = document.querySelector('#braintreeSrcNonce');\n\n srcLoader.show();\n\n $srcNonce.value = srcPayload.nonce;\n\n return rejectIfCardExistsInVault(this.clientInstancePromise, srcPayload, this.srcButtonConfigurations.messages)\n .then(function () {\n var formData = $addSrcAccountForm.serialize();\n\n return $.ajax({\n url: addSrcFormUrl,\n type: 'post',\n dataType: 'json',\n data: formData\n })\n .then(function (response) {\n if (!response.success) {\n errorHandlingBaseModel.showErrorByMessage(response.error);\n } else {\n location.href = response.redirectUrl;\n }\n });\n })\n .catch(function (error) {\n srcLoader.hide();\n errorHandlingBaseModel.showErrorByMessage(error);\n })\n .finally(function () {\n srcLoader.hide();\n });\n};\n\n// See description of \"srcBaseModel\" for more info\nSrcAccountModel.prototype.initSrcButton = function () {\n var SrcAccountModelInstance = this;\n\n SrcAccountModelInstance.braintreeSrcSdkButtonInit(SrcAccountModelInstance)\n .catch(function (error) {\n SrcAccountModelInstance.errorHandlingModel.srcErrorHandler(error);\n });\n};\n\nmodule.exports = SrcAccountModel;\n","'use strict';\n\nvar braintreeSrcSDK = require('../braintreesdk/braintreeSrcSDK');\nvar braintreeGeneral = require('../../braintreeGeneral');\n\n/**\n * SRC Base Model constructor\n * @param {Promise} clientInstancePromise client instance promise\n * @param {Object} srcButtonConfigurations SRC button configs\n * @param {Object} $braintreeSrcDeviceDataInput BT SRC device data input\n * @param {Object} loader loader instance\n * @param {Object} errorHandlingModel Error handling instance\n */\nfunction SrcBaseModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, errorHandlingModel) {\n this.clientInstancePromise = clientInstancePromise;\n this.srcButtonConfigurations = srcButtonConfigurations;\n this.$braintreeSrcDeviceDataInput = $braintreeSrcDeviceDataInput;\n this.loader = loader;\n this.errorHandlingModel = errorHandlingModel;\n\n this.braintreeSrcSdkButtonInit = braintreeSrcSDK.visaCheckoutInitialized;\n\n // Prop which will be settled after calling of \"getBasketData\" method\n this.basketData = {\n amount: 0\n };\n}\n\n/**\n * Method is triggers when \"initSrcButton\" is called. Update total basket amount\n * @returns {Promise} Promise of get order data response\n */\nSrcBaseModel.prototype.updateBasketData = function () {\n var SrcBaseModelInstance = this;\n\n return $.ajax({\n url: this.srcButtonConfigurations.getOrderInfoUrl,\n type: 'get',\n dataType: 'json'\n })\n .done(function (data) {\n SrcBaseModelInstance.basketData.amount = data.amount;\n })\n .fail(function () {\n window.location.reload();\n });\n};\n\n/**\n * Retrun Init options which are used in SRC initialization\n * @returns {Object} object with Init options\n */\nSrcBaseModel.prototype.getInitOptionsObject = function () {\n return {\n paymentRequest: {\n currencyCode: this.srcButtonConfigurations.options.currency || 'USD',\n subtotal: this.basketData.amount\n },\n settings: {\n locale: this.srcButtonConfigurations.settings.locale,\n payment: {\n cardBrands: this.srcButtonConfigurations.settings.cardBrands,\n acceptCanadianVisaDebit: this.srcButtonConfigurations.settings.acceptCanadianVisaDebit\n },\n shipping: {\n collectShipping: this.srcButtonConfigurations.options.isShippingAddressRequired\n }\n }\n };\n};\n\n/**\n * Callback which is triggered when SRC approved payment on its side\n * This method will be overridden in scope of each child model\n * @param {Object} srcPayload payload from SRC\n */\n// eslint-disable-next-line no-unused-vars\nSrcBaseModel.prototype.onTokenizeCallback = function (srcPayload) {\n};\n\n/**\n * Method add fraud data in to hidden input (if enabled)\n * @returns {Promise} with the result of operation\n */\nSrcBaseModel.prototype.setFraudData = function () {\n // eslint-disable-next-line no-undef\n var result = Promise.resolve({});\n var SrcBaseModelInstance = this;\n var $braintreeSrcDeviceDataInput = SrcBaseModelInstance.$braintreeSrcDeviceDataInput;\n\n if (this.srcButtonConfigurations.isFraudToolsEnabled && $braintreeSrcDeviceDataInput) {\n result = braintreeGeneral.collectFraudData(this.clientInstancePromise)\n .then(function (dataCollectorInstance) {\n SrcBaseModelInstance.$braintreeSrcDeviceDataInput.value = dataCollectorInstance.deviceData;\n });\n }\n\n return result;\n};\n\n/**\n * Method is called when we want to init SRC button\n * @returns {Promise} Promise with the result of the operation\n */\nSrcBaseModel.prototype.initSrcButton = function () {\n var SrcBaseModelInstance = this;\n\n return SrcBaseModelInstance.updateBasketData()\n .then(function () {\n return SrcBaseModelInstance.setFraudData()\n .then(function () {\n return SrcBaseModelInstance.braintreeSrcSdkButtonInit(SrcBaseModelInstance);\n });\n })\n .catch(function (error) {\n SrcBaseModelInstance.errorHandlingModel.srcErrorHandler(error);\n });\n};\n\nmodule.exports = SrcBaseModel;\n","'use strict';\n\nvar SrcBaseModel = require('./srcBaseModel');\nvar srcHelper = require('../helpers/srcHelper');\nvar srcPaymentProcessingHelper = require('../helpers/srcPaymentProcessingHelper');\n\n// See description of \"srcBaseModel\" for more info\nfunction SrcCartModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, errorHandlingCartModel) {\n SrcBaseModel.call(\n this,\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n loader,\n errorHandlingCartModel\n );\n}\n\nSrcCartModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Add nonce and billing data to the from and submit to the \"CheckoutService-SubmitPayment\" endpoint\nSrcCartModel.prototype.onTokenizeCallback = function (srcPayload) {\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n\n this.loader.show();\n\n var $srcButton = document.querySelector('.js_braintree_src_button');\n\n srcPayload.billingAddressString = srcHelper.createSrcBillingAddress(srcPayload.billingAddress, srcPayload.userData);\n\n var paymentMethodName = JSON.parse($srcButton.getAttribute('data-braintree-config')).paymentMethodName;\n var srcFormData = srcHelper.createSrcFormData(srcPayload, paymentMethodName);\n var srcCheckoutFormData = srcHelper.createSrcCheckoutFormData(srcFormData, srcPayload);\n\n srcPaymentProcessingHelper.checkoutFromCartCall(srcCheckoutFormData, srcPayload.userData.userEmail, this.errorHandlingModel)\n .always(function () {\n this.loader.hide();\n });\n};\n\nmodule.exports = SrcCartModel;\n","'use strict';\n\nvar SrcBaseModel = require('./srcBaseModel');\n\n// Helpers\nvar srcHelper = require('../helpers/srcHelper');\nvar helper = require('../../helper');\n\nvar srcSessionAccountComponent = require('../components/srcSessionAccount');\n\n// See description of \"srcBaseModel\" for more info\nfunction SrcCheckoutModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, errorHandlingCheckoutModel) {\n SrcBaseModel.call(\n this,\n clientInstancePromise,\n srcButtonConfigurations,\n $braintreeSrcDeviceDataInput,\n loader,\n errorHandlingCheckoutModel\n );\n}\n\nSrcCheckoutModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Add nonce and billing data to the from and trigger click on \"SubmitPayment\" button\nSrcCheckoutModel.prototype.onTokenizeCallback = function (srcPayload) {\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n\n this.loader.show();\n\n // Remove all other Payments session payments\n helper.removeActiveSessionPayment();\n\n var $srcNonce = document.querySelector('#braintreeSRCNonce');\n var $srcBillingAddress = document.querySelector('#braintreeSrcBillingAddress');\n var $continueButton = document.querySelector('button.submit-payment');\n\n var srcBillingData = srcPayload.billingAddress;\n\n srcPayload.billingAddressString = srcHelper.createSrcBillingAddress(srcPayload.billingAddress, srcPayload.userData);\n\n $srcNonce.value = srcPayload.nonce;\n srcBillingData.email = srcPayload.userData.userEmail;\n $srcBillingAddress.value = JSON.stringify(srcBillingData);\n\n srcSessionAccountComponent.showSrcSessionAccount(srcPayload);\n\n // Updating Storefront Billing Form data with SRC Billing\n srcHelper.updateStorefrontBillingData(srcBillingData);\n\n $continueButton.click();\n\n this.loader.hide();\n};\n\nmodule.exports = SrcCheckoutModel;\n","'use strict';\n\nvar braintreeGeneral = require('../braintreeGeneral');\nvar srcHelper = require('./helpers/srcHelper');\n\n// Components\nvar srcAccount = require('./components/srcAccount');\nvar srcCardList = require('./components/srcList');\nvar checkoutComponent = require('./components/srcCheckout');\nvar cartComponent = require('./components/srcCart');\n\n\nvar btClientInstancePromise;\n\n/**\n * Inits SRC functionality on the Account Page\n */\nfunction initAccount() {\n srcAccount.init(btClientInstancePromise);\n}\n\n/**\n * Inits SRC functionality on the Cart Page\n */\nfunction initCartCheckout() {\n cartComponent.init(btClientInstancePromise);\n}\n\n/**\n * Inits SRC functionality on the Billing Page\n */\nfunction initBillingCheckout() {\n checkoutComponent.init(btClientInstancePromise);\n srcCardList.init();\n}\n\n/**\n * Inits braintreeSrcModelBuilder on SRC level\n */\nfunction init() {\n var braintreeSrcConfigs = srcHelper.getBraintreeSRCButtonConfigs();\n var clientToken;\n\n if (braintreeSrcConfigs) {\n clientToken = braintreeSrcConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n }\n}\n\nmodule.exports = {\n initAccount,\n initCartCheckout,\n initBillingCheckout,\n init\n};\n","'use strict';\n\nvar braintreeVenmoSDK = require('./braintreeVenmoSDK');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar venmoProcessing = require('../components/venmoProcessing');\nvar venmoHelper = require('../helpers/venmoHelper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\n/* global Promise braintree $ */\n\n// global variables\nvar btClientInstancePromise;\n\n/**\n * Init Braintree Venmo model\n * @param {Promise} braintreeClientInstancePromise Braintreee client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n braintreeVenmoSDK.init(braintreeClientInstancePromise);\n\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n var response;\n\n try {\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\n } catch (error) {\n response = Promise.resolve({\n customMessage: 'Fraud Data collection isn`t enabled via Custom Site Preference'\n });\n }\n\n return response;\n}\n\n/**\n * Checks whether browser supports Venmo\n * @returns {Promise} with isBrowserSupported value\n */\nfunction isBrowserSupported() {\n return braintreeVenmoSDK.isBrowserSupported();\n}\n\n/**\n * Inits Venmo button\n * @param {Element} $venmoButton Venmo button element\n * @param {Booleean} isBillingPage \"true/false\" value to identify flow page\n * @returns {Promise} Promise resolved with a tokenized payload\n *\n */\nfunction initVenmo($venmoButton, isBillingPage) {\n return braintreeVenmoSDK.createVenmo()\n .then(function (venmoInstance) {\n $venmoButton.addEventListener('click', function () {\n // Check billing form to close Venmo pop-up and prevent tokenize action if any error (empty email input)\n // Check if amount is not zero to close Venmo pop-up and show appropriate error\n if (isBillingPage && (!venmoHelper.checkBillingForm() || venmoHelper.checkZeroAmount())) {\n return;\n }\n\n return braintreeVenmoSDK.tokenize(venmoInstance)\n .then(function (payload) {\n return venmoProcessing.processVenmo(payload);\n })\n .catch(function (error) {\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.showErrorByMessage(error.message);\n });\n });\n });\n}\n\nmodule.exports = {\n init,\n collectFraudData,\n isBrowserSupported,\n initVenmo\n};\n","'use strict';\n\nvar braintreeVenmoModel = require('./braintreeVenmoModel');\nvar braintreeGeneral = require('../../braintreeGeneral');\nvar venmoHelper = require('../helpers/venmoHelper');\n\n/**\n * Initialize Braintree Venmo Model. Pattern Builder is used\n * @returns {Object} object with boolean \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n var braintreeVenmoButtonConfigs = venmoHelper.getBraintreeVenmoButtonConfigs();\n var clientToken;\n var btClientInstancePromise;\n var response = {\n error: false,\n message: '',\n btVenmoModel: null\n };\n\n if (braintreeVenmoButtonConfigs) {\n clientToken = braintreeVenmoButtonConfigs.clientToken;\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n\n braintreeVenmoModel.init(\n btClientInstancePromise\n );\n\n response.btVenmoModel = braintreeVenmoModel;\n } else {\n response.error = true;\n response.message = 'No Braintree Venmo Configurations';\n }\n\n return response;\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nvar btClientInstancePromise;\nvar venmoClientInstance;\n\n/**\n * Checks whether browser supports Venmo\n * @returns {Promise} with isBrowserSupported value\n */\nfunction isBrowserSupported() {\n return btClientInstancePromise\n .then(function (btClientInstance) {\n venmoClientInstance = btClientInstance;\n\n return braintree.venmo.isBrowserSupported({\n allowNewBrowserTab: false,\n allowDesktop: true\n });\n });\n}\n\n/**\n * Creates Venmo instance\n * @returns {Promise} Promise resolved with Venmo instance\n */\nfunction createVenmo() {\n return braintree.venmo.create({\n client: venmoClientInstance,\n allowNewBrowserTab: false,\n ignoreHistoryChanges: true,\n allowDesktop: true\n });\n}\n/**\n * Tokenizes Venmo payment\n * @param {Object} venmoInstance Venmo instance\n * @returns {Promise} Promise resolved with tokenized payload\n */\nfunction tokenize(venmoInstance) {\n return venmoInstance.tokenize({ processResultsDelay: 10 });\n}\n\n/**\n * Inits braintreeVenmoSDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree Venmo client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n btClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n init,\n isBrowserSupported,\n createVenmo,\n tokenize\n\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar loaderInstance = require('../../loaderHelper');\nvar venmoButton = require('../components/venmoButton');\nvar venmoHelper = require('../helpers/venmoHelper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\nvar $venmoButton = document.querySelector('.js_braintree_accountVenmoButton');\nvar venmoLoader;\n\n/**\n * Makes Venmo account as default one\n * @param {Event} e event to identify target element\n */\nfunction makeDefaultVenmo(e) {\n var target = e.target;\n var url = target.getAttribute('data-make-default-url');\n var id = target.getAttribute('data-id');\n var paymentMethodID = document.querySelector('.venmo-accounts').getAttribute('data-payment-method-id');\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n var loader = loaderInstance($loaderContainter);\n // Hide venmo account error container\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.hideError();\n\n loader.show();\n\n helper.setDefaultProperty({\n url: url,\n id: id,\n paymentMethodID: paymentMethodID,\n loader: loader\n });\n}\n\n/**\n * Remove Venmo account\n * @param {Event} e event to identify target element\n */\nfunction removeVenmoPayment(e) {\n var target = e.target;\n\n if (target && JSON.parse(target.getAttribute('data-is-remove-allowed'))) {\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n venmoLoader = loaderInstance($loaderContainter);\n venmoLoader.show();\n\n $.get(target.getAttribute('data-url') + '?UUID=' + target.getAttribute('data-id'))\n .then((data => {\n $('#uuid-' + data.UUID).remove();\n if (data.newDefaultAccount) {\n document.querySelector('#uuid-' + data.newDefaultAccount + ' span').style.fontWeight = 'bold';\n document.querySelector('#uuid-' + data.newDefaultAccount + ' button.braintree-make-default-card').style.display = 'none';\n }\n venmoLoader.hide();\n }))\n .fail(() => {\n location.reload();\n venmoLoader.hide();\n });\n } else {\n var removeIsNotAllowedMsg = target.getAttribute('data-message-remove-is-not-allowed');\n var braintreeVenmoConfig = $venmoButton ? JSON.parse($venmoButton.getAttribute('data-braintree-config')) : removeIsNotAllowedMsg;\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.showErrorByMessage(removeIsNotAllowedMsg);\n }\n}\n\n/**\n * Creates Venmo form data on account page\n * @param {string} nonce Braintree Venmo nonce\n * @param {string} userId Braintree Venmo userID\n * @returns {Object} object with Venmo form data\n */\nfunction createVenmoAccountFormData(nonce, userId) {\n var venmoAccountFormFields = $venmoButton.getAttribute('data-venmo-account-form-fields');\n var csrfToken = document.querySelector('.js_braintree_accountVenmoButton_wrapper #csrf_token');\n\n var venmoAccountFormData = helper.createPaymentFormData(venmoAccountFormFields, {\n nonce: nonce,\n userId: userId\n });\n\n venmoAccountFormData.append(csrfToken.name, csrfToken.value);\n\n return venmoAccountFormData;\n}\n\n/**\n * Stores new Venmo account\n * @param {Object} data tokenized payload data with Venmo nonce\n * @returns {ajax} call to Braintree-AccountAddVenmoHandle endpoint\n */\nfunction storeNewVenmoAccount(data) {\n var venmoAddAccountHandlerUrl = $venmoButton.getAttribute('data-venmo-add-account-handler');\n var venmoAccountFormData = createVenmoAccountFormData(data.nonce, data.details.username);\n\n venmoLoader.show();\n\n return $.ajax({\n type: 'POST',\n url: venmoAddAccountHandlerUrl,\n data: venmoAccountFormData,\n contentType: false,\n processData: false\n })\n .then((paymentData) => {\n venmoHelper.hideVenmoAccountBtn();\n venmoLoader.hide();\n\n $.get(paymentData.renderAccountsUrl)\n .then((tplData => {\n document.querySelector('.venmo-accounts').innerHTML = tplData;\n document.querySelectorAll('.venmo-accounts .remove-bt-payment').forEach(function (el) {\n el.addEventListener('click', removeVenmoPayment);\n });\n }));\n })\n .fail(({ responseJSON }) => {\n venmoLoader.hide();\n\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.showErrorByMessage(responseJSON.error);\n });\n}\n\n/**\n * Inits Venmo functionality\n * @param {Object} btVenmoModel Braintree Venmo model\n */\nfunction init(btVenmoModel) {\n var isVenmoButtonEnabledOnAccountPage = Boolean(document.querySelector('.js_braintree_accountVenmoButton'));\n var isVenmoAccountBlockExists = Boolean(document.querySelector('.venmo-accounts'));\n var $braintreeVenmoLoader = document.querySelector('#braintreeVenmoAccLoader');\n\n venmoLoader = loaderInstance($braintreeVenmoLoader);\n\n if (isVenmoButtonEnabledOnAccountPage || isVenmoAccountBlockExists) {\n // \"Make default\" button functionality initiation\n $('.venmo-accounts').on('click', '.braintree-make-default-card', makeDefaultVenmo);\n // \"Remove\" button functionality initiation\n $('.venmo-accounts').on('click', '.remove-bt-payment', removeVenmoPayment);\n }\n\n if (isVenmoButtonEnabledOnAccountPage) {\n $('.add-venmo-account').click(function () {\n // Hide venmo account error container\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.hideError();\n\n venmoHelper.showVenmoAccountBtn();\n\n if (!window.venmoAccountButtonInited) {\n window.venmoAccountButtonInited = true;\n\n venmoButton.init(btVenmoModel, $venmoButton);\n }\n });\n }\n}\n\nmodule.exports = {\n init,\n storeNewVenmoAccount\n};\n","'use strict';\n\nvar venmoHelper = require('../helpers/venmoHelper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\n/**\n * General validation of params needed for initialization of Venmo button\n * @param {Object} braintreeVenmoConfig Braintree Venmo button configurations (they came from server via data attr)\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"messages\" attr\n */\nfunction generalVenmoValidation(braintreeVenmoConfig) {\n var response = {\n error: false,\n messages: ''\n };\n\n try {\n var isBraintreeVenmoConfigValid = typeof braintreeVenmoConfig !== 'object' || braintreeVenmoConfig !== null;\n\n if (!isBraintreeVenmoConfigValid) {\n response.error = true;\n response.messages = 'Venmo button has not valid data-braintree-config';\n }\n } catch (error) {\n response.error = true;\n response.messages = error;\n }\n\n return response;\n}\n\n/**\n * Init Venmo button functionality\n * @param {Object} btVenmoModel Braintree Venmo model\n * @param {Object} $venmoButton Venmo button element\n * @param {boolean} isBillingPage value to identify flow page\n */\nfunction init(btVenmoModel, $venmoButton, isBillingPage) {\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n\n try {\n var generalValidation = generalVenmoValidation(braintreeVenmoConfig);\n\n if (generalValidation.error) {\n if (generalValidation.messages.length) {\n throw generalValidation.messages;\n }\n }\n\n // Fraud Data collecting\n // For more details go inside \"btVenmoModel.collectFraudData\" function logic\n btVenmoModel.collectFraudData()\n .then(function (fraudDataPayload) {\n venmoHelper.setVenmoDeviceData(fraudDataPayload.deviceData);\n\n return btVenmoModel.isBrowserSupported()\n .then(function (isBrowserSupported) {\n if (isBrowserSupported) {\n return btVenmoModel.initVenmo($venmoButton, isBillingPage);\n }\n errorHandlingBaseModel.handleNoBrowserSupport(braintreeVenmoConfig);\n });\n });\n\n // To prevent repeatable Venmo button initialization\n window.venmoCheckoutButtonInited = true;\n } catch (error) {\n errorHandlingBaseModel.showErrorByMessage(error);\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar loaderInstance = require('../../loaderHelper');\nvar venmoButton = require('./venmoButton');\nvar venmoList = require('./venmoList');\nvar venmoHelper = require('../helpers/venmoHelper');\nvar venmoSessionAccount = require('./venmoSessionAccount');\n\nvar $braintreeVenmoNonce = document.querySelector('#braintreeVenmoNonce');\nvar $braintreeVenmoUserId = document.querySelector('#braintreeVenmoUserId');\nvar $submitShippingBtn = document.querySelector('.button, .submit-shipping');\nvar $venmoContent = document.querySelector('.js_braintree_venmoContent');\nvar $venmoBillingInput = document.querySelector('#braintreeVenmoBilling');\nvar $continueButton = document.querySelector('button.submit-payment');\nvar $venmoButton = document.querySelector('.js_braintree_venmo_button');\nvar $venmoAccountContainer = document.querySelector('.js_braintree_used_venmo_account');\nvar $sessionVenmoAccount = document.querySelector('#sessionVenmoAccount');\nvar $newVenmoAccount = document.querySelector('#newVenmoAccount');\nvar hashChange;\n\n/**\n * Process Venmo on the Billing/Checkout Page\n * @param {Object} data tokenized Venmo payload data\n */\nfunction processCheckoutFlow(data) {\n var $loaderContainer = venmoHelper.createLoaderContainter(document.querySelector('.page'));\n loaderInstance($loaderContainer).show();\n\n $braintreeVenmoNonce.value = data.nonce;\n $braintreeVenmoUserId.value = data.details.username;\n // In case when stage is correct we proceed with usual flow\n if (window.history.state !== 'shipping') {\n $continueButton.click();\n document.querySelector('.venmo-braintree-loader').remove();\n\n return;\n }\n // In case when Venmo has returned from Venmo app to NOT correct stage (for example, to shipping stage)\n // we redirect user to correct stage and set required data\n venmoHelper.updateBillingAddressFormValues(JSON.parse($venmoBillingInput.value));\n // Move to stage payment\n $submitShippingBtn.click();\n $venmoButton.setAttribute('data-is-valid-stage', true);\n document.querySelector('.venmo-braintree-loader').remove();\n}\n\n/**\n * Inits Venmo checkout components\n * @param {Object} btVenmoModel Braintree Venmo model\n */\nfunction init(btVenmoModel) {\n // MutationObserver is triggered on each URL change to avoid conflict between URL passed to Venmo application\n // and URL with already changed stage on storefront (checkout stage)\n // case when user is redirected from Venmo application\n hashChange = new MutationObserver(function (mutations) {\n var mutation = mutations.find(function (element) {\n return element.attributeName === 'data-checkout-stage' && element.target.dataset.checkoutStage === 'payment';\n });\n\n if (!mutation) {\n return false;\n }\n\n if ($braintreeVenmoNonce.value && JSON.parse($venmoButton.getAttribute('data-is-valid-stage'))) {\n $venmoButton.setAttribute('data-is-valid-stage', false);\n $continueButton.click();\n\n return true;\n }\n // Case when user has proceeded with Venmo session account and clicked on \"edit\" button\n if ($venmoContent.classList.contains('active') && mutation.oldValue === 'placeOrder') {\n // Show dropdown with used Venmo session account\n venmoSessionAccount.showVenmoAccount();\n\n if ($braintreeVenmoUserId && $braintreeVenmoUserId.value !== 'Venmo') {\n $venmoAccountContainer.classList.remove('used-venmo-account-hide');\n $venmoAccountContainer.classList.add('used-venmo-account');\n $sessionVenmoAccount.classList.remove('used-venmo-account-hide');\n $sessionVenmoAccount.classList.add('used-venmo-account');\n $sessionVenmoAccount.textContent = $braintreeVenmoUserId.value;\n $sessionVenmoAccount.selected = true;\n $newVenmoAccount.selected = false;\n }\n\n // Set attribute to show \"place order\" button\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n // Hide Venmo button\n $venmoButton.setAttribute('data-is-hide-venmo-button', true);\n }\n });\n\n hashChange.observe(document.querySelector('#checkout-main'), { attributeOldValue: true });\n\n // Venmo button functionality is initiated once in case if it was not inited yet\n // based on existence of window.venmoCheckoutButtonInited (set while Venmo button initiation)\n if (!window.venmoCheckoutButtonInited) {\n venmoButton.init(btVenmoModel, $venmoButton, true);\n venmoList.init();\n }\n\n var sessionPaymentMethodId = JSON.parse($venmoContent.getAttribute('data-braintree-config')).sessionPaymentMethodId;\n // if exists Venmo session account - we make Venmo tab active on page reload\n if (sessionPaymentMethodId === 'Venmo') {\n document.querySelector('.venmo-tab').click();\n }\n}\n\nmodule.exports = {\n init,\n processCheckoutFlow\n};\n","'use strict';\n\nvar venmoHelper = require('../helpers/venmoHelper');\n\nvar $btVenmoAccountsList = document.querySelector('#braintreeVenmoAccountsList');\nvar $venmoButton = document.querySelector('.js_braintree_venmo_button');\n\n/**\n * Inits Venmo list functionality\n */\nfunction init() {\n // Attribute is set as \"true\" when user has saved Venmo account in wallet\n // or when user has proceeded with Venmo session account\n var isHideVenmoButtonAttribute = JSON.parse($venmoButton.getAttribute('data-is-hide-venmo-button'));\n // Case when we already have session account in disabled dropdown\n // and user returns to the Billing Page from Cart or other page (from not billing page/stages)\n // only in this case we need to hide Venmo button\n // in other cases button and dropdown behavior is handled by venmoContentTabHandler function\n // because disabled dropdown with session Venmo account and with saved Venmo and \"new account\" option are separated\n if (isHideVenmoButtonAttribute && !$btVenmoAccountsList !== 'newaccount') {\n $venmoButton.style.display = 'none';\n }\n\n if ($btVenmoAccountsList) {\n $btVenmoAccountsList.addEventListener('change', function () {\n venmoHelper.venmoContentTabHandler();\n });\n }\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar venmoAccount = require('./venmoAccount');\nvar venmoCheckout = require('./venmoCheckout');\nvar venmoConstants = require('../constants/venmoConstants');\nvar venmoProcessingHelper = require('../helpers/venmoProcessingHelper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\n/**\n * Process Venmo flow for Account/Billing Page flows\n * @param {Object} venmoData Venmo data received from tokenize\n */\nfunction processVenmo(venmoData) {\n var $venmoButton = document.querySelector('.js_braintree_accountVenmoButton') || document.querySelector('.js_braintree_venmo_button');\n\n if ($venmoButton && JSON.parse($venmoButton.getAttribute('data-braintree-config'))) {\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n errorHandlingBaseModel.hideError();\n }\n\n var venmoFlowName = venmoProcessingHelper.getVenmoFlowName();\n\n switch (venmoFlowName) {\n case venmoConstants.FLOW_NAME_ACCOUNT:\n\n venmoAccount.storeNewVenmoAccount(venmoData);\n break;\n\n case venmoConstants.FLOW_NAME_BILLING_CHECKOUT:\n helper.removeActiveSessionPayment();\n venmoCheckout.processCheckoutFlow(venmoData);\n break;\n\n default:\n break;\n }\n}\n\nmodule.exports = {\n processVenmo\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar venmoHelper = require('../helpers/venmoHelper');\n\nvar $venmoButton = document.querySelector('.js_braintree_venmo_button');\nvar $braintreeVenmoSessionAccount = document.getElementById('braintreeVenmoAccount');\nvar $venmoAccountBlock = document.querySelector('.js_braintree_used_venmo_account');\nvar $braintreeVenmoUserId = document.querySelector('#braintreeVenmoUserId');\n\n/**\n * Handles showing Venmo session account\n */\nfunction showVenmoAccount() {\n var btVenmoAccountsList = document.querySelector('#braintreeVenmoAccountsList');\n\n if (!btVenmoAccountsList) {\n $venmoAccountBlock.classList.remove('used-venmo-account-hide');\n $braintreeVenmoSessionAccount.options[0].text = $braintreeVenmoUserId.value;\n }\n\n $venmoButton.style.display = 'none';\n\n helper.continueButtonToggle(false);\n}\n\n/**\n * Removes method was used and change appearance of Venmo tab\n */\nfunction removeSessionNonce() {\n var defaultOption = helper.getOptionByDataDefault('#braintreeVenmoAccountsList');\n var braintreeVenmoNonce = document.querySelector('#braintreeVenmoNonce');\n var braintreeVenmoBilling = document.querySelector('#braintreeVenmoBilling');\n\n if (defaultOption) {\n defaultOption.selected = true;\n\n venmoHelper.venmoContentTabHandler();\n } else {\n $venmoAccountBlock.classList.remove('used-venmo-account');\n $venmoAccountBlock.classList.add('used-venmo-account-hide');\n $venmoButton.style.display = 'block';\n }\n\n braintreeVenmoNonce.value = '';\n braintreeVenmoBilling.value = '';\n}\n\nmodule.exports = {\n showVenmoAccount,\n removeSessionNonce\n};\n","'use strict';\n\nmodule.exports = {\n FLOW_NAME_ACCOUNT: 'account',\n FLOW_NAME_BILLING_CHECKOUT: 'billing'\n};\n","'use strict';\n\n/**\n * Error Handling constructor\n * @param {Object} errorMessages object with error messages\n */\nfunction ErrorHandlingBaseModel(errorMessages) {\n this.errorMessages = errorMessages;\n}\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by error Object from BT\n * @param {Object} error error object from Bt\n */\nErrorHandlingBaseModel.prototype.showErrorByObject = function (error) {\n var msg = error.message;\n var code = error.code;\n var errorMessage = this.errorMessages[code] || msg || this.errorMessages.CLIENT_GATEWAY_NETWORK;\n\n this.createErrorNotification(errorMessage);\n};\n\n/**\n * ---- General method which should be used for cases when error came from Braintree ----\n * Show error notification by message\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.showErrorByMessage = function (message) {\n this.hideError();\n this.createErrorNotification(message);\n};\n\n/**\n * ---- Error container which will be used on Account and PDP ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Method responsible for Error Notification generation\n * @param {string} message message to display inside error notification\n */\nErrorHandlingBaseModel.prototype.createErrorNotification = function (message) {\n var $errorContainer = $('.error-messaging');\n\n var errorHtml = '
' +\n '' + message + '
';\n\n $errorContainer.append(errorHtml);\n $errorContainer.show();\n window.scrollTo(0, 0);\n};\n\n/**\n * ---- Method which should hide error container and make it empty. On Account and PDP we use this one ----\n * ---- For all other cases this method will be overwritten by corresponding one ----\n *\n * Hide error notification\n */\nErrorHandlingBaseModel.prototype.hideError = function () {\n var $errorContainer = $('.error-messaging');\n var $venmoErrorContainer = $('#venmoAccountErrorContainer');\n\n if ($venmoErrorContainer) {\n $venmoErrorContainer.hide();\n $venmoErrorContainer.empty();\n }\n\n $errorContainer.hide();\n $errorContainer.empty();\n};\n\n/**\n * Method which should shows error on the Account Page and hides Venmo block in case when browser is not supported\n * @param {Object} braintreeVenmoConfig Braintree Venmo config\n */\nErrorHandlingBaseModel.prototype.handleNoBrowserSupportErrorOnAccount = function (braintreeVenmoConfig) {\n this.showErrorByMessage(braintreeVenmoConfig.messages.VENMO_BROWSER_NOT_SUPPORTED);\n};\n\n/**\n * Method which should hide Venmo tab on the Billing Page - in case when browser is not supported\n */\nErrorHandlingBaseModel.prototype.hideVenmoTab = function () {\n document.querySelector('.js_braintree_venmo_button').parentElement.firstElementChild.style.display = 'none';\n document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"Venmo\"]').style.display = 'none'; // Remove the venmo select payment method radiobutton\n};\n\n/**\n * Method which handle error flows in case when browser is not supported for Billing/Account Pages\n * @param {Object} braintreeVenmoConfig Braintree Venmo config\n */\nErrorHandlingBaseModel.prototype.handleNoBrowserSupport = function (braintreeVenmoConfig) {\n var $venmoAccountWrapper = document.querySelector('.js_braintree_accountVenmoButton_wrapper');\n\n if ($venmoAccountWrapper) {\n this.handleNoBrowserSupportErrorOnAccount(braintreeVenmoConfig);\n } else {\n this.hideVenmoTab();\n }\n};\n\n/**\n * Method which show checkout error message on top of the page\n * @param {string} message Error message\n */\nErrorHandlingBaseModel.prototype.showCheckoutErrorMessage = function (message) {\n document.querySelector('.error-message-text').textContent = '';\n document.querySelector('.error-message').style.display = 'block';\n document.querySelector('.error-message-text').append(message);\n\n window.scrollTo(0, 0);\n};\n\nmodule.exports = ErrorHandlingBaseModel;\n","'use strict';\n\nvar helper = require('../../helper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\n\nvar $addVenmoAccountBtn = document.querySelector('.add-venmo-account');\nvar $venmoAccountWrapper = document.querySelector('.js_braintree_accountVenmoButton_wrapper');\n\n/**\n * Returns Braintree Venmo configs\n * @returns {Object} Braintree Venmo configs\n */\nfunction getBraintreeVenmoButtonConfigs() {\n var braintreeVenmoButtonConfigs = null;\n var $venmoButton = document.querySelector('.js_braintree_venmo_button') || document.querySelector('.js_braintree_accountVenmoButton');\n\n try {\n braintreeVenmoButtonConfigs = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n } catch (error) {\n return braintreeVenmoButtonConfigs;\n }\n\n return braintreeVenmoButtonConfigs;\n}\n\n/**\n * Creates loader container on the Billing page\n * @param {Element} $target Venmo button target for which loader container is created\n * @returns {Element} created loader container element\n */\nfunction createLoaderContainter($target) {\n var $loaderContainter = document.createElement('div');\n\n $loaderContainter.className = 'venmo-braintree-loader';\n\n helper.continueButtonToggle(true);\n\n return $target.parentNode.insertBefore($loaderContainter, $target);\n}\n\n\n/**\n * Updates the billing address form values within saved billing\n * @param {Object} billingAddress billing address\n */\nfunction updateBillingAddressFormValues(billingAddress) {\n var form = $('form[name=dwfrm_billing]');\n var inputNames = ['firstName', 'lastName', 'address1', 'address2', 'city', 'postalCode', 'country'];\n\n if (!form) {\n return;\n }\n\n $.each(inputNames, function (index, value) {\n $(`input[name$=_${value}]`, form).val(decodeURIComponent(billingAddress[value]));\n });\n\n $('select[name$=_stateCode],input[name$=_stateCode]', form)\n .val(billingAddress.stateCode);\n}\n\n/**\n * Shows Venmo button on the Account Page and hides \"add new\" button\n */\nfunction showVenmoAccountBtn() {\n $addVenmoAccountBtn.style.display = 'none';\n $venmoAccountWrapper.style.display = 'block';\n}\n\n/**\n * Hides Venmo button on the Account Page and shows \"add new\" button\n */\nfunction hideVenmoAccountBtn() {\n $addVenmoAccountBtn.style.display = 'block';\n $venmoAccountWrapper.style.display = 'none';\n}\n\n/**\n * Saves Venmo device (risk) data to hidden input\n * @param {string} deviceData Venmo device (risk) data\n */\nfunction setVenmoDeviceData(deviceData) {\n var $braintreeVenmoDeviceData = document.querySelector('#braintreeVenmoDeviceData');\n\n if ($braintreeVenmoDeviceData) {\n $braintreeVenmoDeviceData.value = deviceData;\n }\n}\n\n/**\n * Checks billing form on the Billing Page\n * If billing form is valid, saves/updates billing address to input\n * If not valid (possible case: empty email) - add error class to email input\n * @returns {boolean} billing form check result value\n */\nfunction checkBillingForm() {\n var $billingForm = document.querySelector('.card-body [id=dwfrm_billing]');\n var $venmoBillingInput = document.querySelector('#braintreeVenmoBilling');\n\n if ($billingForm.checkValidity()) {\n /**\n * Setting current customer Billing address to form\n * For the case when SFCC redirects customer from payment stage to shipping stage\n * after successful Venmo app response\n */\n $venmoBillingInput.value = JSON.stringify(helper.getBillingAddressFormValues());\n\n return true;\n }\n\n return false;\n}\n\n/**\n * Checks zero amount on the Billing Page\n * If amount is zero Venmo pop-up is closed and appropriate error is shown\n * If amount is acceptable by Venmo user could proceed through pop-up\n * @returns {boolean} zero amount check result value\n */\nfunction checkZeroAmount() {\n var $venmoButton = document.querySelector('.js_braintree_venmo_button');\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(braintreeVenmoConfig.messages);\n var amount = braintreeVenmoConfig.options.amount;\n\n if (amount === 0) {\n var errorMessage = braintreeVenmoConfig.messages.VENMO_ZERO_AMOUNT_ERROR;\n\n errorHandlingBaseModel.showCheckoutErrorMessage(errorMessage);\n\n return true;\n }\n\n return false;\n}\n\n/**\n * Handles all behavior related to the Venmo content tab\n */\nfunction venmoContentTabHandler() {\n var $btVenmoAccountsList = document.querySelector('#braintreeVenmoAccountsList');\n var $saveVenmoAccountCheckboxContainer = document.querySelector('#braintreeSaveVenmoAccountContainer');\n var $saveVenmoAccountCheckbox = document.querySelector('#braintreeSaveVenmoAccount');\n var $venmoButton = document.querySelector('.js_braintree_venmo_button');\n var $venmoContent = document.querySelector('.js_braintree_venmoContent');\n var venmoOptionId = $btVenmoAccountsList.value;\n\n switch (venmoOptionId) {\n // Case when option \"new account\" is selected in dropdown\n case 'newaccount':\n $venmoButton.style.display = 'block';\n\n helper.continueButtonToggle(true);\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', true);\n // Case when registered user and vaulting is enabled\n if ($saveVenmoAccountCheckboxContainer) {\n $saveVenmoAccountCheckbox.checked = true;\n $saveVenmoAccountCheckboxContainer.style.display = 'block';\n }\n\n break;\n // Case when saved account is selected in dropdown\n default:\n $venmoButton.style.display = 'none';\n\n helper.continueButtonToggle(false);\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n // Case when registered user and vaulting is enabled\n if ($saveVenmoAccountCheckboxContainer) {\n $saveVenmoAccountCheckbox.checked = false;\n $saveVenmoAccountCheckboxContainer.style.display = 'none';\n }\n }\n}\n\n\nmodule.exports = {\n getBraintreeVenmoButtonConfigs,\n createLoaderContainter,\n updateBillingAddressFormValues,\n showVenmoAccountBtn,\n hideVenmoAccountBtn,\n setVenmoDeviceData,\n checkBillingForm,\n checkZeroAmount,\n venmoContentTabHandler\n};\n","'use strict';\n\nvar venmoConstants = require('../constants/venmoConstants');\n\n/**\n * Gets Venmo flow name (corresponding page)\n * @returns {string} Flow ID (page) Account/Billing\n */\nfunction getVenmoFlowName() {\n var venmoFlowName;\n var isVenmoEnabledOnAccountPage = Boolean(document.querySelector('.js_braintree_accountVenmoButton'));\n var isVenmoEnabledOnBillingPage = Boolean(document.querySelector('.js_braintree_venmoContent'));\n\n if (isVenmoEnabledOnAccountPage) {\n venmoFlowName = venmoConstants.FLOW_NAME_ACCOUNT;\n } else if (isVenmoEnabledOnBillingPage) {\n venmoFlowName = venmoConstants.FLOW_NAME_BILLING_CHECKOUT;\n }\n\n return venmoFlowName;\n}\n\nmodule.exports = {\n getVenmoFlowName\n};\n","'use strict';\n\n// Braintree SDK model builder, we need to init Braintree Venmo model on this level, since we are using it on step of \"venmoAccount.init()\"\n// and on step of \"venmoCheckout.init()\".\nvar braintreeVenmoModelBuilder = require('./braintreesdk/braintreeVenmoModelBuilder');\n\n// components\nvar venmoAccount = require('./components/venmoAccount');\nvar venmoCheckout = require('./components/venmoCheckout');\n\nvar btVenmoModelResponse;\n\n/**\n * Inits Venmo functionality on the Account Page\n */\nfunction initAccount() {\n venmoAccount.init(btVenmoModelResponse.btVenmoModel);\n}\n\n/**\n * Inits Venmo functionality on the Billing Page\n */\nfunction initBillingCheckout() {\n venmoCheckout.init(btVenmoModelResponse.btVenmoModel);\n}\n\n/**\n * Inits braintreeVenmoModelBuilder on Venmo level\n */\nfunction init() {\n btVenmoModelResponse = braintreeVenmoModelBuilder.init();\n}\n\nmodule.exports = {\n initAccount,\n initBillingCheckout,\n init\n};\n","require('./braintree/braintreeSFRA')();\n"],"sourceRoot":""}