{"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/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/payPalStaticImage.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/helpers/payPalStaticImageHelper.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/venmoErrorHandler.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","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","countryCodeAlpha2","countryCode","firstName","givenName","lastName","familyName","phone","phoneNumber","emailAddress","getBillingAddress","billingContact","payload","shippingAddressData","creditCardListLoader","showAddNewCardOptions","e","preventDefault","$addNewCardButton","$addNewCardBlock","removeCard","target","get","UUID","remove","newDefaultAccount","fontWeight","fail","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","payPalStaticButtonComponent","payPalEnabledOnCheckout","payPalEnabledOnProduct","payPalEnabledOnCart","payPalEnabledOnAccountPage","payPalStaticButtonEnabledOnProduct","payPalStaticButtonEnabledOnCart","initOnPdp","initOnCart","initProduct","initMiniCart","googlePayBusinnessLogic","googlePayEnabledOnCheckout","googlePayEnabledOnCart","applePayBusinessLogic","applePayEnabledOnCart","venmoBusinessLogic","isVenmoEnabledOnAccountPage","isVenmoEnabledOnBillingPage","initBillingCheckout","srcBusinessLogic","isSrcEnabledOnAccountPage","isSrcEnabledOnCartPage","isSrcEnabledOnBillingPage","initCartCheckout","lpmBusinessLogic","isLpmEnebledOnBillingPage","isDebugMode","console","consoleLog","log","consoleError","apply","arguments","bu","pdpOnlickForAsignedPaypalPayment","$bundleItem","getOptions","$productContainer","find","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","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","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","verifyCard","surname","address1","address2","stateCode","country","additionalInformation","onLookupComplete","next","tokenizeOption","clear","creditCardVaultManager","addNewCreditCardLoader","creditCardAccountHelper","$braintreeCreditCardLoader","$customCreditCardErrorContainer","ccMessages","invalidErrorCodes","retryErrorCodes","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","attr","setCardHiddenFields","serialize","indexOf","finally","stopPropagation","creditCardErrorHandler","initCreditCartAccountLoaders","braintreeCreditCardLoaderExists","creditCardMessages","addNewCreditCardFormExists","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","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","removeFromDomCardsWhichAreNotInVaultMgr","CreditCardVaultManagerModelInstance","storefrontCardArray","each","$card","getCardsWhichAreNotInVault","cardsWhichAreNotInVault","card","isCreditCardExistOnStorefrontAndVault","isCardExists","personalizedClientTokenPromise","customerPaymentMethodsFromVaultPromise","getCardsFromVaultMgrPromise","vaultMgrPaymentMethods","cardPmArray","paymentMethod","isCardType","getCardFromVaultMgrByData","pmDetails","getCardFromStorefrontByData","storefrontCardList","storedStorefrontCard","toLocaleLowerCase","cardPaymentMethods","arrayOfNotInVaultCards","storefrontCard","sfCardType","sfLastFour","foundCard","vaultMgrCard","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","includes","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","dataset","expiration","owner","cardFields","input","color","selector","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","isCardExpired","parts","month","year","today","Date","currentMonth","getMonth","currentYear","getFullYear","trim","$selectedOption","top","behavior","Error","$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","transactionInfo","currencyCode","currency","totalPriceStatus","totalPrice","String","shippingAddressRequired","isShippingAddressRequired","shippingAddressParameters","allowedCountryCodes","phoneNumberRequired","emailRequired","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","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","maskedCreditCardNumber","braintreePaypalEmail","braintreeVenmoUserId","priceTotal","field","checkValidity","updatePaymentMethodTab","braintreePaymentMethod","content","children","reduce","accumulator","item","elem","lastIndexOf","isNonceExist","pmName","$nonce","nonceValue","$tab","isActiveTab","accountsLoader","removeBtPayment","$loaderContainter","trigger","paymentFields","fieldsData","paymentFieldsParsed","entries","entry","setDefaultProperty","params","Array","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","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","body","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","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","requestsHelper","payPalConfigs","PayPalCheckoutPayment","$paypalTab","payPalCheckoutWasInited","basketDataPromise","getBasketDataPromise","payPalSessionAccountComponent","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","$payPalStaticButton","initOnMiniCart","isPayPalButtonWasInited","$minicartPopover","observer","MutationObserver","mutations","mutation","addedNodes","observe","childList","PayPalProductPageModel","payPalButtonDisplayBehavior","PayPalProductPage","payPalSessionAccountHelper","$braintreePaypalAccount","handlePaypalTabBehavior","payPalStaticImageHelper","payPalExpressModelHelper","$btPoductPagePayPalButton","onStaticImageClickHandlerBase","ErrorHandlingInstance","payPalAccountData","$payPalButtonWrapper","payPalCheckoutFormFieldNames","billingFromData","createBillingAddressFormData","appendCsrfTokenToFormData","appendSavePayPalAccount","appendPaymentDataToFormData","submitPaymentDataToServerPromise","onStaticImageClickHandlerPdp","isBtPoductPagePayPalButtonVisible","addProductToCartOnClick","ErrorHandlingProductModelInstance","that","addProductToCart","onStaticImageClickHandlerCart","ErrorHandlingCartModelInstance","onStaticImageClickHandlerMiniCart","ErrorHandlingMiniCartModelInstance","$pdpStaticPaypalButton","$miniCartStaticPaypalButton","$cartStaticPaypalButton","getBillingAddressAsString","$selectedPayPalPayment","selectedBillingAddressStr","selectedBillingAddressObj","billingAddressRepresentationString","lastname","decodeURIComponent","selectedOptionClassList","billingAddressAsString","$storedPayPalAddressOption","storedPayPalAddressOptionExists","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","paypalBillingFormFields","billingAddressFormData","fillPayPalPaymentFields","$braintreePaypalEmailInput","$sessionPaypalAccount","btEmail","fillFraudDataInput","$braintreePaypalRiskDataInput","appendEmailAsStringToFormData","appendFraudDataToFormData","fraudData","appendBillingAddressAsStringToFormData","appendBtPaymentFieldsToFormData","appendToUrl","newUrl","encodeURIComponent","hidePayPalButtons","payPalButtonsContainer","hideAccount","$accountOption","hideSaveNewAccountContainer","savePaypalAccountCheckbox","savePaypalAccountContainer","displayAllStoredAccounts","braintreePaypalAccountsList","addBillingAddressOnPaymentOptionLevel","btBillingAddress","createShippingAddressData","shippingAddressPayPalData","appendShippingDataAsStringToFormData","paypalButtonsWrapper","paypalCheckoutModelHelper","intent","customerAuthenticated","$storedAccountOptionWithSameEmail","removeProductFromCart","removeFromCartUrl","productRepresentationObj","getBasketData","submitPaymentUrl","billingFormData","ErrorModelInstance","done","$btSavePaypalAccountContainer","$paypalContent","$btPayPalBillingButton","hidePaypalSmartButtonFunctionality","showPaypalSmartButtonFunctionality","$defaultOption","isSelectedPaypalAccount","isChangePmButton","$btUsedPayPalAccount","uuid","PayPalBaseModel","payPalAccountModelHelper","baseResponse","payPalAccountModelInstance","paypalAccountFormFields","payPalBraintreeAddressData","paypalAccountFormData","addresses","payPalButtonConfigs","orderCreateParams","enableShippingAddress","billingAgreementDescription","braintreePayPalSDK","fraudDataPromise","fraudDataCollectionDisabled","basketDataUrl","paypalHandle","placeOrderStageUrl","basketData","ppDetails","ppBillingAddress","basketShiippingAddress","mainPayPalConfigurations","paymentObjectData","locale","billingAgreementDetails","shippingAddressEditable","shippingAddressOverride","enableFundingList","disableFundingList","payPalSDKConfigObject","components","commit","undefined","payPalVaultSdkConfigsObject","vault","CurrentPayPalPaymenProcessorModelInstance","payPalCheckoutModelHelper","paypalListHelper","PayPalCheckoutPaymentModel","totalAmount","checkoutInstanceConfigs","autoSetDataUserIdToken","dataAttributes","PayPalCheckoutPaymentModelInstance","isBuyerAuthenificated","requestHelper","PayPalExpressInstance","paypalCheckoutFormFields","payPalProductPageModelHelper","addProductToCartResponse","addedProductFromPdp","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","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","venmoErrorHandler","isBrowserSupported","initVenmo","$venmoButton","isBillingPage","createVenmo","venmoInstance","checkBillingForm","checkZeroAmount","processVenmo","showVenmoError","braintreeVenmoModel","braintreeVenmoButtonConfigs","getBraintreeVenmoButtonConfigs","btVenmoModel","venmoClientInstance","venmo","allowNewBrowserTab","allowDesktop","ignoreHistoryChanges","processResultsDelay","venmoButton","venmoLoader","makeDefaultVenmo","createVenmoAccountFormData","venmoAccountFormFields","venmoAccountFormData","storeNewVenmoAccount","venmoAddAccountHandlerUrl","hideVenmoAccountBtn","tplData","isVenmoButtonEnabledOnAccountPage","$braintreeVenmoLoader","showVenmoAccountBtn","venmoAccountButtonInited","generalVenmoValidation","braintreeVenmoConfig","isBraintreeVenmoConfigValid","generalValidation","setVenmoDeviceData","handleNoBrowserSupport","venmoCheckoutButtonInited","venmoList","venmoSessionAccount","$braintreeVenmoNonce","$braintreeVenmoUserId","$submitShippingBtn","$venmoContent","$venmoBillingInput","hashChange","createLoaderContainter","username","history","updateBillingAddressFormValues","attributeName","checkoutStage","oldValue","showVenmoAccount","attributeOldValue","$btVenmoAccountsList","isHideVenmoButtonAttribute","venmoAccount","venmoCheckout","venmoConstants","venmoProcessingHelper","venmoData","clearVenmoError","venmoFlowName","getVenmoFlowName","$braintreeVenmoSessionAccount","$venmoAccountBlock","btVenmoAccountsList","defaultOption","braintreeVenmoNonce","braintreeVenmoBilling","$addVenmoAccountBtn","$venmoAccountWrapper","$venmoErrorContainer","handleNoBrowserSupportErrorOnAccount","VENMO_BROWSER_NOT_SUPPORTED","hideVenmoTab","parentElement","firstElementChild","showCheckoutErrorMsg","isVenmoErrorContainerExists","className","$target","inputNames","$braintreeVenmoDeviceData","$billingForm","venmoButtonConfig","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: 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: 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');\n\nvar creditCardListLoader;\n\n/**\n* Shows the new card block on the Account Page\n* @param {Object} e Event object\n*/\nfunction showAddNewCardOptions(e) {\n e.preventDefault();\n var $addNewCardButton = document.querySelector('.braintreeAddNewCard');\n var $addNewCardBlock = document.querySelector('.braintreeAddNewCardBlock');\n\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 e.preventDefault();\n var target = e.target;\n\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 creditCardListLoader.hide();\n }))\n .fail(() => {\n location.reload();\n });\n}\n\n/**\n * Select default card in Credit/SRC Cards list\n * @param {Object} e Event object\n */\nfunction makeDefaultCard(e) {\n e.preventDefault();\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 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 $('.creditCard-accounts').on('click', '.remove-bt-payment', removeCard);\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 /* ------------------------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 var payPalStaticButtonComponent = require('./paypal/components/payPalStaticImage');\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 // PayPal Static Button. Static button on MiniCart will be inited inside MiniCart component\n var payPalStaticButtonEnabledOnProduct = Boolean(document.querySelector('.braintree_pdp_button .braintree-static-paypal-button'));\n var payPalStaticButtonEnabledOnCart = Boolean(document.querySelector('.cart-page .braintree-static-paypal-button'));\n\n payPalBusinessLogic.init(clientTokenPromise);\n\n if (payPalStaticButtonEnabledOnProduct) {\n payPalStaticButtonComponent.initOnPdp();\n }\n\n if (payPalStaticButtonEnabledOnCart) {\n payPalStaticButtonComponent.initOnCart();\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');\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: 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 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 // 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 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 })\n .then(function (threeDSecure) {\n return threeDSecure.verifyCard({\n amount: 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: billingData.postalCode,\n countryCodeAlpha2: billingData.country\n },\n additionalInformation: shippingAdditionalInfo,\n onLookupComplete: function (data, next) {\n next();\n }\n });\n });\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;\nvar invalidErrorCodes = ['HOSTED_FIELDS_TOKENIZATION_CVV_VERIFICATION_FAILED',\n 'HOSTED_FIELDS_FAILED_TOKENIZATION',\n 'HOSTED_FIELDS_FIELDS_EMPTY',\n 'HOSTED_FIELDS_FIELDS_INVALID',\n 'HOSTED_FIELDS_ATTRIBUTE_NOT_SUPPORTED',\n 'HOSTED_FIELDS_ATTRIBUTE_VALUE_NOT_ALLOWED',\n 'HOSTED_FIELDS_FIELD_PROPERTY_INVALID'];\nvar retryErrorCodes = ['HOSTED_FIELDS_TIMEOUT',\n 'HOSTED_FIELDS_INVALID_FIELD_KEY',\n 'HOSTED_FIELDS_INVALID_FIELD_SELECTOR',\n 'HOSTED_FIELDS_FIELD_DUPLICATE_IFRAME',\n 'HOSTED_FIELDS_FIELD_INVALID',\n 'HOSTED_FIELDS_FIELD_NOT_PRESENT',\n 'HOSTED_FIELDS_TOKENIZATION_NETWORK_ERROR'];\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 $($customCreditCardErrorContainer).empty();\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 $customCreditCardErrorContainer.append(response.error);\n } else {\n location.href = response.redirectUrl;\n }\n });\n });\n })\n .catch(function (error) {\n // errHandlingModel.creditCardErrorHandler(error);\n if (typeof error === 'object' && 'code' in error) {\n if (invalidErrorCodes.indexOf(error.code) !== -1) {\n $customCreditCardErrorContainer.append('Credit Card is invalid. Please check your information and try again.');\n } else if (retryErrorCodes.indexOf(error.code) !== -1) {\n $customCreditCardErrorContainer.append('An error occurred. Please refresh the page and try again.');\n }\n } else if (error === 'Entered card is already added to the payments list.') {\n $customCreditCardErrorContainer.append('Credit Card is already saved to your account.');\n } else {\n $customCreditCardErrorContainer.append(error);\n }\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', storeNewCreditCard);\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 } catch (err) {\n errorHandlingModel.creditCardErrorHandler(err);\n }\n });\n}\n\nmodule.exports = {\n init\n};\n","'use strict';\r\n\r\nvar creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\nvar creditCardVaultManagerComponent = require('./creditCardVaultManager');\r\nvar creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\r\nvar creditCardHelper = require('../helpers/creditCardHelper');\r\n\r\n/**\r\n * Makes the necessary setting for 'Save Credit Card block' on the Billing Page\r\n * @param {boolean} saveCreditCard true/false\r\n * @param {boolean} displaySaveCreditCardBlock true/false\r\n */\r\nfunction saveCreditCardBlockManipulation(saveCreditCard, displaySaveCreditCardBlock) {\r\n var $saveCreditCard = document.querySelector('#braintreeSaveCreditCard');\r\n var $braintreeSaveCardContainer = document.querySelector('#braintreeSaveCardContainer');\r\n\r\n if ($braintreeSaveCardContainer) {\r\n $braintreeSaveCardContainer.style.display = displaySaveCreditCardBlock ? 'block' : 'none';\r\n $saveCreditCard.checked = saveCreditCard;\r\n }\r\n}\r\n\r\n/**\r\n * Handles changing of Credit Card list on the Billing Page\r\n * @param {Constructor} errorHandlingModel Error handling model\r\n */\r\nfunction cardListChange(errorHandlingModel) {\r\n var btUtils = require('../../braintreeUtils');\r\n\r\n var $creditCardList = creditCardFormFieldHelper.getCreditCardListContainer();\r\n var $braintreeCreditCardNonce = creditCardFormFieldHelper.getCreditCardNonceFieldContainer();\r\n var $braintreeCardPaymentMethod = document.querySelector('#braintreeCardPaymentMethod');\r\n\r\n var creditCardOption = $creditCardList.selectedOptions[0];\r\n var creditCardOptionID = creditCardOption.id;\r\n var creditCardFieldsToDisplayArray = creditCardFormFieldHelper.getCCFieldsToDisplay().asArray;\r\n var creditCardHostedFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\r\n var creditCardFiledsToDisplayObject = creditCardFormFieldHelper.getCCFieldsToDisplay().asObject;\r\n\r\n // Variables only for \"braintreeSessionCreditAccount\" case\r\n var selectedCreditCard;\r\n var nonce = '';\r\n var saveCreditCard = true;\r\n var showSaveCreditCardBlock = true;\r\n\r\n // Clear error messages on the Billing Page\r\n errorHandlingModel.hideError();\r\n\r\n switch (creditCardOptionID) {\r\n // When buyer selected \"new cc\"\r\n case 'newCardAccount':\r\n // Hide 'toDisplay' fields\r\n creditCardFormFieldHelper.hideCardElements(creditCardFieldsToDisplayArray);\r\n\r\n creditCardFormFieldHelper.showCardElements(creditCardHostedFieldsArray);\r\n\r\n // Display \"Save Credit Card\" block, and mark it as checked\r\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\r\n\r\n $braintreeCreditCardNonce.value = '';\r\n $braintreeCardPaymentMethod.value = 'CREDIT';\r\n break;\r\n\r\n case 'braintreeSessionCreditAccount':\r\n selectedCreditCard = btUtils.getSelectedData($creditCardList);\r\n nonce = selectedCreditCard['data-nonce'].value;\r\n saveCreditCard = selectedCreditCard['data-save-card'].value;\r\n\r\n // Display \"Save Credit Card\" block, and mark it as checked\r\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\r\n\r\n // Add values to the \"toDisplay\" and hidden input fields.\r\n creditCardFormFieldHelper.setCardFields(selectedCreditCard, creditCardFiledsToDisplayObject);\r\n\r\n creditCardFormFieldHelper.hideCardElements(creditCardHostedFieldsArray);\r\n creditCardFormFieldHelper.showCardElements(creditCardFieldsToDisplayArray);\r\n\r\n $braintreeCreditCardNonce.value = nonce;\r\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\r\n break;\r\n\r\n // Case for saved credit cards\r\n default:\r\n saveCreditCard = false;\r\n showSaveCreditCardBlock = false;\r\n selectedCreditCard = btUtils.getSelectedData($creditCardList);\r\n\r\n // Add values to the 'toDisplay' and hidden input fields\r\n creditCardFormFieldHelper.setCardFields(selectedCreditCard, creditCardFiledsToDisplayObject);\r\n\r\n // Show these fields to the buyer\r\n creditCardFormFieldHelper.showCardElements(creditCardFieldsToDisplayArray);\r\n\r\n // Hide hosted fields (since we don't need them)\r\n creditCardFormFieldHelper.hideCardElements(creditCardHostedFieldsArray);\r\n\r\n // Display \"Save Credit Card\" block, and uncheck it\r\n saveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\r\n\r\n $braintreeCreditCardNonce.value = nonce;\r\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Hide stored card if the new card is the same as already stored\r\n */\r\nfunction hideStoredCardAsSessionCard() {\r\n var $sessionCreditCard = $('#braintreeSessionCreditAccount');\r\n var isSessionCardVisible = $sessionCreditCard.css('display') !== 'none';\r\n\r\n if (isSessionCardVisible) {\r\n var sessionCardType = $sessionCreditCard.data('type').toLowerCase();\r\n var sessionCardLastFour = $sessionCreditCard.data('last-four').toString();\r\n var storedAsSessionCardExists;\r\n\r\n storedAsSessionCardExists = creditCardPaymentProcessingHelper.hideAlreadyStoredCard(sessionCardLastFour, sessionCardType);\r\n\r\n if (storedAsSessionCardExists) {\r\n // Hide CC save block and unclick \"save\" checkbox\r\n creditCardHelper.hideSaveCreditCardBlock(true);\r\n creditCardHelper.saveCreditCard(false);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Inits Credit Card list functionality\r\n * @param {Object} btCreditCardModel BT Credit Card model\r\n * @param {Constructor} errorHandlingModel errorHandlingModel Error handling model\r\n */\r\nfunction init(btCreditCardModel, errorHandlingModel) {\r\n var $creditCardList = document.querySelector('#braintreeCreditCardList');\r\n var creditCardListExist = Boolean($creditCardList);\r\n var clientInstancePromise = btCreditCardModel.getClientInstancePromise();\r\n\r\n if (creditCardListExist) {\r\n $creditCardList.addEventListener('change', function () {\r\n cardListChange(errorHandlingModel);\r\n });\r\n }\r\n\r\n cardListChange(errorHandlingModel);\r\n // Only for logged in buyer with stored cards in wallet\r\n hideStoredCardAsSessionCard();\r\n}\r\n\r\n\r\nmodule.exports = {\r\n init,\r\n cardListChange\r\n};\r\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\n if (basketDataValidResponse.error) {\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 });\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.click();\n })\n .catch(function (error) {\n loader.hide();\n\n // Braintree Errors\n errHandlingModel.creditCardErrorHandler(error);\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 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 var sfLastFour = storefrontCard.lastFour.toString();\n var foundCard = cardPaymentMethods.find(function (vaultMgrCard) {\n var pmDetails = vaultMgrCard.details;\n\n return pmDetails.cardType.toLocaleLowerCase() === sfCardType && 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\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\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 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 errorMsg = error.message ? error.message : 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 = '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\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: billingData.postalCode,\n // eslint-disable-next-line no-nested-ternary\n countryCodeAlpha2: billingData.country ? 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-size': '12px',\n color: '#b7802a'\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 },\n number: {\n selector: '#braintreeCardNumber'\n },\n cvv: {\n selector: '#braintreeCvv'\n },\n expirationDate: {\n selector: '#braintreeExpirationDate'\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 * Check Validity of Card Expiry Date\n * @param {string} expirationDate Expiry Date of Card\n * @returns {boolean} true in case if stored card has valid expiry date\n */\nfunction isCardExpired(expirationDate) {\n var parts = expirationDate.split('/');\n var month = parseInt(parts[0], 10);\n var year = parseInt(parts[1], 10);\n\n var today = new Date();\n var currentMonth = today.getMonth() + 1; // JavaScript months are 0-based\n var currentYear = today.getFullYear().toString();\n if (year && $.trim(year).length === 2) {\n currentYear = currentYear.slice(-2);\n }\n currentYear = parseInt(currentYear, 10);\n currentMonth = parseInt(currentMonth, 10);\n // Check if the card is expired\n return (year < currentYear) || (year === currentYear && month < currentMonth);\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 $selectedOption = helper.getSelectedOption($creditCardList);\n var expirationDate = $selectedOption.getAttribute('data-expiration').toString();\n if (isCardExpired(expirationDate)) {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n return Promise.reject(new Error('Your saved payment method was invalid. Please try a new payment method or call for assistance at 866-344-3875.'));\n }\n var CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(clientInstancePromise);\n var cardType = $selectedOption.getAttribute('data-type').toLowerCase();\n var lastFour = $selectedOption.getAttribute('data-last-four').toString();\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 return googlePaymentInstance.createPaymentDataRequest({\n transactionInfo: {\n currencyCode: options.currency,\n totalPriceStatus: 'FINAL',\n totalPrice: String(amount)\n },\n shippingAddressRequired: options.isShippingAddressRequired,\n shippingAddressParameters: {\n allowedCountryCodes: ['US'],\n phoneNumberRequired: true\n },\n emailRequired: true\n });\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 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 = 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 = 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';\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\n htmlToAppend += '
' + getPaymentMethodToLowerCase(paymnetMethodId) + '
';\n if (selectedPaymentInstrument.maskedCreditCardNumber) {\n htmlToAppend += '
' + selectedPaymentInstrument.maskedCreditCardNumber + '
';\n }\n if (paymnetMethodId === 'PayPal') {\n htmlToAppend += '
' + selectedPaymentInstrument.braintreePaypalEmail + '
';\n }\n if (paymnetMethodId === 'Venmo') {\n htmlToAppend += '
' + selectedPaymentInstrument.braintreeVenmoUserId + '
';\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 return $('#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\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 let target = e.target;\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 accountsLoader.hide();\n }))\n .fail(() => {\n location.reload();\n accountsLoader.hide();\n });\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: 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 = 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 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 };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\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 cliked '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 cliked '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 * Disabled billing address functionality on the Billing Page\n */\nfunction disableBillingAddressFunctionality() {\n disableBillingAddressList();\n hideBillingAddressManipulationButtons();\n hideBillingAddressForm();\n}\n\n/**\n * Enabled billing address functionality on the Billing Page\n */\nfunction enableBillingAddressFunctionality() {\n showBillingAddressManipulationButtons();\n enableBillingAddressList();\n showBillingAddressForm();\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};\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 || changePMButtonEnabled) {\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', '.paypal-accounts .remove-bt-payment', function (e) {\n helper.removeBtPayment(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 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');\nvar requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\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 * @param {Int} basketTotalAmount Basket total amount\n */\nfunction initCheckout(btClientInstancePromise, payPalConfigurations, basketTotalAmount) {\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 basketTotalAmount,\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 var changePMButtonEnabled;\n\n payPalConfigs = JSON.parse($payPalButton.getAttribute('data-braintree-config'));\n braintreeClientInstancePromise = btClientInstancePromise;\n sessionPaymentMethodId = payPalConfigs.sessionPaymentMethodId;\n changePMButtonEnabled = payPalConfigs.changePMButtonEnabled;\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 if (changePMButtonEnabled) {\n var basketDataPromise = requestsHelper.getBasketDataPromise(payPalConfigs.getOrderInfoUrl);\n\n basketDataPromise\n .then(function (data) {\n initCheckout(braintreeClientInstancePromise, payPalConfigs, data.amount);\n });\n } else {\n initCheckout(braintreeClientInstancePromise, payPalConfigs, null);\n }\n }\n });\n\n // Use case when PayPal button was inited and shipment price was updated\n // We need this only for Change Payment Method button feature\n if (changePMButtonEnabled) {\n $('body').on('checkout:shippingMethodSelected', function () {\n if (window.payPalCheckoutWasInited) {\n var basketDataPromise = requestsHelper.getBasketDataPromise(payPalConfigs.getOrderInfoUrl);\n\n basketDataPromise\n .then(function (data) {\n initCheckout(braintreeClientInstancePromise, payPalConfigs, data.amount);\n });\n }\n });\n }\n\n // Case when buyer use PayPal Static Image 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 payPalStaticButtonComponent = require('./payPalStaticImage');\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 $payPalStaticButton = document.querySelector('.paypalMinicartButton .braintree-static-paypal-button');\n var payPalButtonSelector = '.paypalMinicartButton .js_braintree_paypal_cart_button';\n var $payPalButton = document.querySelector(payPalButtonSelector);\n\n // Case when buyer remove product from the Cart\n $('body').on('cart:update', function () {\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\n });\n\n // PayPal Statick button rendering\n if (!$payPalButton && $payPalStaticButton) {\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\n // Init PayPal Static Button component\n payPalStaticButtonComponent.initOnMiniCart();\n\n return;\n // Do not init PayPal button in case if it was disabled via Site Pref config\n } else if (!$payPalButton) {\n return;\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\nvar payPalStaticImageHelper = require('../helpers/payPalStaticImageHelper');\nvar payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\nvar loaderInstance = require('../../loaderHelper');\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\nvar ErrorHandlingCartModel = require('../errorhandler/errorHandlingCartModel');\nvar ErrorHandlingMiniCartModel = require('../errorhandler/errorHandlingMiniCartModel');\nvar billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\nvar requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\nvar payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\n\nvar $btPoductPagePayPalButton = document.querySelector('.braintree_pdp_button');\n\n/**\n * On PayPal Static button click handler. Implement the logic which should happen when buyer clicked on this button\n * @param {Object} loader Loader\n * @param {Object} ErrorHandlingInstance Error handling instance\n */\nfunction onStaticImageClickHandlerBase(loader, ErrorHandlingInstance) {\n loader.show();\n\n // URLs\n var checkoutFromCartUrl = this.getAttribute('data-checkout-from-cart-url');\n var placeOrderUrl = this.getAttribute('data-paypal-placeorder-url');\n\n // PayPal Account data\n var payPalAccountData = JSON.parse(this.getAttribute('data-paypal-account-data'));\n var billingAddressData = Object.assign(payPalAccountData, JSON.parse(payPalAccountData.address));\n\n // Process of payment FromData creation/filling\n var $payPalButtonWrapper = document.querySelector('.braintree-cart-paypal-buttons-wrap');\n var payPalCheckoutFormFieldNames = $payPalButtonWrapper.getAttribute('data-paypal-checkout-form-fields');\n var $csrfToken = document.querySelector('.braintree-cart-paypal-buttons-wrap #csrf_token');\n var billingFromData;\n\n billingFromData = billingFormHelper.createBillingAddressFormData(payPalCheckoutFormFieldNames, billingAddressData);\n\n billingFormHelper.appendCsrfTokenToFormData(billingFromData, $csrfToken);\n payPalStaticImageHelper.appendSavePayPalAccount(billingFromData);\n payPalStaticImageHelper.appendPaymentDataToFormData(billingFromData, payPalAccountData);\n\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(payPalAccountData.email);\n\n // Submit billing data to server (CheckoutSrvice-SubmitPayment)\n // In case of succesfull call, redirect buyer to Order Review Page\n requestsHelper.submitPaymentDataToServerPromise(checkoutFromCartUrl, billingFromData, placeOrderUrl, loader, ErrorHandlingInstance);\n}\n\n/**\n * Code which is configure and manage Static PayPal button on PDP\n */\nfunction onStaticImageClickHandlerPdp() {\n var isBtPoductPagePayPalButtonVisible = $btPoductPagePayPalButton.style.display === '';\n var addProductToCartOnClick = Boolean($btPoductPagePayPalButton) && isBtPoductPagePayPalButtonVisible;\n var ErrorHandlingProductModelInstance = new ErrorHandlingBaseModel({});\n var that = this;\n\n var $loaderContainter = document.querySelector('.product-detail .braintreePayPalLoader');\n var loader = loaderInstance($loaderContainter);\n\n loader.show();\n // On click on PayPal Static image add product to the Cart (only on PDP)\n if (addProductToCartOnClick) {\n var res = requestsHelper.addProductToCart();\n\n if (res.error) {\n // eslint-disable-next-line no-unused-expressions\n window.location.reload;\n loader.hide();\n } else {\n onStaticImageClickHandlerBase.call(that, loader, ErrorHandlingProductModelInstance);\n }\n }\n}\n\n/**\n * Code which is configure and manage Static PayPal button on the Cart Page\n */\nfunction onStaticImageClickHandlerCart() {\n var ErrorHandlingCartModelInstance = new ErrorHandlingCartModel({});\n var $loaderContainter = document.querySelector('.braintree-cart-buttons-wrap .braintreePayPalLoader');\n var loader = loaderInstance($loaderContainter);\n\n onStaticImageClickHandlerBase.call(this, loader, ErrorHandlingCartModelInstance);\n}\n\n/**\n * Code which is configure and manage Static PayPal button on the MiniCart Page\n\n */\nfunction onStaticImageClickHandlerMiniCart() {\n var ErrorHandlingMiniCartModelInstance = new ErrorHandlingMiniCartModel({});\n var $loaderContainter = document.querySelector('.paypalMinicartButton .braintreePayPalLoader');\n var loader = loaderInstance($loaderContainter);\n\n onStaticImageClickHandlerBase.call(this, loader, ErrorHandlingMiniCartModelInstance);\n}\n\n/**\n * Init on click listner on Static PayPal button on PDP\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction initOnPdp() {\n var $pdpStaticPaypalButton = document.querySelector('.braintree_pdp_button .braintree-static-paypal-button');\n\n // Init behavior for hide/show PayPal Static button\n payPalButtonDisplayBehavior.initProductPage($pdpStaticPaypalButton);\n\n if ($pdpStaticPaypalButton) {\n $pdpStaticPaypalButton.addEventListener('click', onStaticImageClickHandlerPdp);\n }\n}\n\n/**\n * Init on click listner on Static PayPal button on the MiniCart Page\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction initOnMiniCart() {\n var $miniCartStaticPaypalButton = document.querySelector('.paypalMinicartButton .braintree-static-paypal-button');\n\n if ($miniCartStaticPaypalButton) {\n $miniCartStaticPaypalButton.addEventListener('click', onStaticImageClickHandlerMiniCart);\n }\n}\n\n/**\n * Init on click listner on Static PayPal button on the Cart Page\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction initOnCart() {\n var $cartStaticPaypalButton = document.querySelector('.cart-page .braintree-static-paypal-button');\n\n if ($cartStaticPaypalButton) {\n $cartStaticPaypalButton.addEventListener('click', onStaticImageClickHandlerCart);\n }\n}\n\nmodule.exports = {\n initOnMiniCart,\n initOnPdp,\n initOnCart\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 firstName = selectedBillingAddressObj.firstName || '';\n var lastname = selectedBillingAddressObj.lastName || '';\n var address1 = selectedBillingAddressObj.line1 || selectedBillingAddressObj.address1 || '';\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 }\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 $storedPayPalAddressOption.text(billingAddressAsString);\n $storedPayPalAddressOption.prop('selected', true);\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};\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};\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};\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 });\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 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\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\nmodule.exports = {\n createShippingAddressData,\n appendShippingDataAsStringToFormData,\n submitCustomerForm\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\n/**\n * Append save PayPal account prop\n * @param {FormData} billingFormData billing FormData\n */\nfunction appendSavePayPalAccount(billingFormData) {\n billingFormData.append('braintreeSavePaypalAccount', true);\n}\n\n/**\n * Append payment data to the FromData\n * @param {FormData} formData billing FormData\n * @param {Object} payPalAccountData data from Bt\n */\nfunction appendPaymentDataToFormData(formData, payPalAccountData) {\n formData.append('paymentMethodUUID', payPalAccountData.uuid);\n}\n\nmodule.exports = {\n appendSavePayPalAccount,\n appendPaymentDataToFormData\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 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 * 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 var ppBillingAddress = ppDetails.billingAddress;\n\n if (!ppBillingAddress) {\n this.errorHandlingModel.showBillingAddressIsNotSupported();\n\n return {\n error: true\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\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 basketShiippingAddress = basketData.shippingAddress;\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 are on the Account Page\n if (basketShiippingAddress) {\n paymentObjectData.shippingAddressEditable = false;\n paymentObjectData.shippingAddressOverride = {\n line1: basketShiippingAddress.line1,\n line2: basketShiippingAddress.line2,\n city: basketShiippingAddress.city,\n state: basketShiippingAddress.state,\n postalCode: basketShiippingAddress.postalCode,\n countryCode: basketShiippingAddress.countryCode,\n phone: basketShiippingAddress.phone,\n recipientName: basketShiippingAddress.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 (_, actions) {\n // Hide custom error on buyer PayPal button click.\n this.errorHandlingModel.hideError();\n this.basketData = requestsHelper.getBasketData(this.basketDataUrl);\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 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\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 enableFundingList = this.payPalConfigurations.options.enableFundingList;\n var disableFundingList = this.payPalConfigurations.options.disableFundingList;\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\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 {number} totalAmount total basket amount\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 totalAmount,\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.totalAmount = totalAmount;\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// Add additional configs which are needed for \"Change Payment Method Button\" feature\nPayPalCheckoutPaymentModel.prototype.payPalCheckoutSdkConfigs = function () {\n var payPalCheckoutSdkConfigs = PayPalBaseModel.prototype.payPalCheckoutSdkConfigs.call(this);\n\n if (this.changePMButtonEnabled) {\n payPalCheckoutSdkConfigs.dataAttributes = {\n amount: this.totalAmount\n };\n }\n\n return payPalCheckoutSdkConfigs;\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 if (this.basketData.amount === 0) {\n this.errorHandlingModel.showZeroAmountOnCheckout();\n\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}\n\n// ES5 inheritance\nPayPalExpressModel.prototype = Object.create(PayPalBaseModel.prototype);\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 paypalCheckoutFormFields = JSON.parse($payPalButtonWrapper.getAttribute('data-paypal-checkout-form-fields'));\n var billingAddressData = billingFormHelper.createBillingAddressData(payloadDetails);\n var billingFromData;\n\n // Create form data only with billing address\n billingFromData = billingFormHelper.createBillingAddressFormData(paypalCheckoutFormFields, billingAddressData);\n\n billingFormHelper.appendCsrfTokenToFormData(billingFromData, PayPalExpressInstance.$csrfToken);\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(billingFromData, 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(billingFromData, shippingAddressData);\n }\n\n // Create a shipping address object, stringify it and store in FormData as an input\n billingFormHelper.appendBillingAddressAsStringToFormData(billingFromData, billingAddressData);\n\n billingFormHelper.appendEmailAsStringToFormData(billingFromData, payloadDetails.email);\n\n billingFormHelper.appendBtPaymentFieldsToFormData(billingFromData, 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 billingFromData,\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 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\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 () {};\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\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 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';\r\n\r\nvar loaderInstance = require('../../loaderHelper');\r\nvar srcHelper = require('../helpers/srcHelper');\r\nvar creditCardVaultManager = require('../../creditcard/components/creditCardVaultManager');\r\n\r\n// Models\r\nvar ErrorHandlingBaseModel = require('../errorhandler/errorHandlingBaseModel');\r\nvar SrcAccountModel = require('../models/srcAccountModel');\r\n\r\nvar $braintreeSrcLoader = document.querySelector('.braintreeSrcLoader');\r\nvar $braintreeSrcButton = document.querySelector('.js_braintree_src_account_button');\r\n\r\n/**\r\n * Inits SRC account functionality on the Account Page\r\n * @param {Promise} clientInstancePromise client instance promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n var srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\r\n var $braintreeSrcDeviceDataInput = null;\r\n var srcLoader = loaderInstance($braintreeSrcLoader);\r\n var errorHandlingBaseModel = new ErrorHandlingBaseModel(srcButtonConfigurations.messages);\r\n\r\n var SrcAccountModelInstance = new SrcAccountModel(\r\n clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n srcLoader,\r\n errorHandlingBaseModel\r\n );\r\n\r\n // Hides errors on the Account Page\r\n $braintreeSrcButton.addEventListener('click', errorHandlingBaseModel.hideError);\r\n\r\n //creditCardVaultManager.removeFromDomCardsWhichAreNotInVaultMgr(clientInstancePromise);\r\n SrcAccountModelInstance.initSrcButton();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\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 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 venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\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 venmoErrorHandler.showVenmoError(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 venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\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\n loader.show();\n\n helper.setDefaultProperty({\n url: url,\n id: id,\n paymentMethodID: paymentMethodID,\n loader: loader\n });\n}\n\n/**\n * Creates Venmo form data on account page\n * @param {string} nonce Braintree Venmo nonce\n * @returns {Object} object with Venmo form data\n */\nfunction createVenmoAccountFormData(nonce) {\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 });\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);\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', helper.removeBtPayment);\n });\n }));\n })\n .fail(({ responseJSON }) => {\n venmoLoader.hide();\n\n venmoErrorHandler.showVenmoError(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 $braintreeVenmoLoader = document.querySelector('#braintreeVenmoAccLoader');\n\n venmoLoader = loaderInstance($braintreeVenmoLoader);\n\n if (isVenmoButtonEnabledOnAccountPage) {\n // \"Make default\" button functionality initiation\n $('.venmo-accounts').on('click', '.braintree-make-default-card', makeDefaultVenmo);\n\n // \"Remove\" button functionality initiation\n $('.venmo-accounts').on('click', '.remove-bt-payment', helper.removeBtPayment);\n\n // \"Add New\" Venmo button functionality initiation\n $('.add-venmo-account').click(function () {\n venmoHelper.showVenmoAccountBtn();\n\n if (!window.venmoAccountButtonInited) {\n window.venmoAccountButtonInited = true;\n\n venmoButton.init(btVenmoModel, $venmoButton);\n }\n });\n\n return;\n }\n\n var isVenmoAccountBlockExists = Boolean(document.querySelector('.venmo-accounts'));\n\n if (isVenmoAccountBlockExists) {\n // \"Make default\" button functionality initiation\n $('.venmo-accounts').on('click', '.braintree-make-default-card', makeDefaultVenmo);\n\n // \"Remove\" button functionality initiation\n $('.venmo-accounts').on('click', '.remove-bt-payment', helper.removeBtPayment);\n }\n}\n\nmodule.exports = {\n init,\n storeNewVenmoAccount\n};\n","'use strict';\n\nvar venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\nvar venmoHelper = require('../helpers/venmoHelper');\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 try {\n var braintreeVenmoConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\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 venmoErrorHandler.handleNoBrowserSupport(braintreeVenmoConfig);\n });\n });\n\n // To prevent repeatable Venmo button initialization\n window.venmoCheckoutButtonInited = true;\n } catch (error) {\n venmoErrorHandler.showVenmoError(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');\nvar venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\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 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 disabled dropdown with used Venmo session account\n venmoSessionAccount.showVenmoAccount();\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 venmoErrorHandler.init($venmoButton);\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 venmoHelper.venmoContentTabHandler();\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 venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\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 venmoErrorHandler.clearVenmoError();\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\nvar $addVenmoAccountBtn = document.querySelector('.add-venmo-account');\nvar $venmoAccountWrapper = document.querySelector('.js_braintree_accountVenmoButton_wrapper');\nvar $venmoErrorContainer = document.querySelector('#venmoAccountErrorContainer');\n\n/**\n * 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 */\nfunction handleNoBrowserSupportErrorOnAccount(braintreeVenmoConfig) {\n $addVenmoAccountBtn.style.display = 'none';\n $venmoAccountWrapper.style.display = 'block';\n document.querySelector('#venmoAccountErrorContainer').textContent = braintreeVenmoConfig.messages.VENMO_BROWSER_NOT_SUPPORTED;\n\n [].slice.call($venmoAccountWrapper.children).forEach(function (item) {\n if (!item.classList.contains('error')) {\n item.style.display = 'none';\n }\n });\n}\n\n/**\n * Hides Venmo tab on the Billing Page - in case when browser is not supported\n */\nfunction hideVenmoTab() {\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 * Handles error flows in case when browser is not supported for Billing/Account Pages\n * @param {Object} braintreeVenmoConfig Braintree Venmo config\n */\nfunction handleNoBrowserSupport(braintreeVenmoConfig) {\n if ($venmoAccountWrapper) {\n handleNoBrowserSupportErrorOnAccount(braintreeVenmoConfig);\n } else {\n hideVenmoTab();\n }\n}\n\n/**\n * Shows error container and passed error message\n * @param {string} error error text\n */\nfunction showVenmoError(error) {\n $venmoErrorContainer.style.display = 'block';\n $venmoErrorContainer.textContent = error;\n}\n\n/**\n * Hides error container and clear existing error\n */\nfunction clearVenmoError() {\n $venmoErrorContainer.textContent = '';\n $venmoErrorContainer.style.display = 'none';\n}\n\n/**\n * Show checkout error message on top of the page\n * @param {string} message Error message\n */\nfunction showCheckoutErrorMsg(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\n/**\n * Inits Venmo error handler components\n * @param {Element} $venmoButton Venmo button element\n */\nfunction init($venmoButton) {\n // For account page flow error container already exist\n var isVenmoErrorContainerExists = Boolean($venmoErrorContainer);\n\n // For the Billing Page we create error containter\n if (!isVenmoErrorContainerExists) {\n $venmoErrorContainer = document.createElement('div');\n $venmoErrorContainer.className = 'venmo-error';\n $venmoButton.parentNode.insertBefore($venmoErrorContainer, $venmoButton.nextSibling);\n }\n}\n\nmodule.exports = {\n init,\n handleNoBrowserSupport,\n showVenmoError,\n clearVenmoError,\n showCheckoutErrorMsg\n};\n","'use strict';\n\nvar helper = require('../../helper');\nvar venmoErrorHandler = require('../errorhandler/venmoErrorHandler');\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 venmoButtonConfig = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var amount = venmoButtonConfig.options.amount;\n\n if (amount === 0) {\n var errorMessage = venmoButtonConfig.messages.VENMO_ZERO_AMOUNT_ERROR;\n\n venmoErrorHandler.showCheckoutErrorMsg(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\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":""}