{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js","webpack:///../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack:///../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js","webpack:///../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/alertHandler.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/apma.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/alerthandler/applePayAlertHandlerModel.js","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/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/alertHandler/creditCardAlertHandlerModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/alertHandler/creditCardFormFieldsValidator.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/braintreesdk/hostedFieldsModel.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/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/helpers/braintreeCreditCardSdkHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardBillingAddressHelper.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/alerthandler/googlePayAlertHandlerModel.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/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/alerthandler/lpmAlertHandlerModel.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/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/local/lpmFallBack.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/alerthandler/paypalAlertHandlerModel.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/apmaPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/connectWithPayPal.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/payPalProductViewPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalSessionAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalStoredBillingAddress.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountPage.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalBillingFormHelperGlobal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalCheckoutModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalExpressModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalListHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalProductPageModelHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalRequestsHelperGlobal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalSessionAccountHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/apma.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalAccount.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/payPalProductModel.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalScriptLoading.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/payPal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/alerthandler/srcAlertHandlerModel.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/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/srcAccount.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/alerthandler/venmoAlertHandlerModel.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/venmoBillingAddress.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/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":["recaptchaPromise","e","args","actionName","target","id","className","replace","grecaptcha","execute","window","CachedData","sitePreferences","recaptchaSiteKey","action","then","token","recaptchaTokenInput","$","recaptchaActionInput","data","length","param","validateRecaptcha","c","error","render","errorCheck","document","readyState","addEventListener","ready","cb","push","_window$grecaptcha","sitekey","check","next","defer","Deferred","always","$xhr","ajax","notify","enableRecaptcha","_window$grecaptcha2","module","exports","state","resolve","beforeSend","reject","setTabNextFocus","focusParams","KEYCODE_TAB","isTabPressed","event","key","keyCode","firstFocusableEl","containerSelector","firstElementSelector","lastFocusableEl","lastElementSelector","is","nextToLastElementSelector","linkElements","shiftKey","focus","preventDefault","_typeof","obj","Symbol","iterator","constructor","prototype","clearFormErrors","form","find","removeClass","formElement","payload","remove","fields","Object","keys","forEach","feedbackElement","parent","children","Array","isArray","html","join","siblings","addClass","prop","parents","prepend","focusHelper","require","location","getPidValue","$el","pid","hasClass","closest","text","getQuantitySelector","quantitySelected","quantitySelectedModal","quantitySelectedPDP","val","undefined","getQuantitySelected","processSwatchValues","attr","$productContainer","msgs","values","attrValue","$attrValue","value","$swatchButton","selected","assistiveSelectedText","empty","url","removeAttr","selectable","processNonSwatchValues","$attr","$defaultOption","resetUrl","updateAttrs","attrs","attrsWithSwatches","indexOf","updateAvailability","response","availabilityValue","availabilityMessages","product","availability","messages","readyToOrder","resources","info_selectforstock","message","trigger","getAttributesHtml","attributes","attributeGroup","ID","attribute","label","updateOptions","optionsHtml","createCarousel","imgs","carousel","carouselId","append","i","alt","parseInt","index","title","appendTo","first","detach","handleVariantResponse","isChoiceOfBonusProducts","isVaraint","variationAttributes","productType","primaryImageUrls","images","large","$priceSelector","replaceWith","price","promotionsHtml","$selectButton","updateQuantities","quantities","map","quantity","attributeSelect","selectedValueUrl","container","method","success","spinner","stop","getAddToCartUrl","parseHtml","$html","parseHTML","body","footer","chooseBonusProducts","start","bonusUrl","bonusChoiceRuleBased","showProductsUrlRuleBased","showProductsUrlListBased","htmlString","maxBonusItems","uuid","pliUUID","addToCartUrl","pageSize","labels","selectprods","dataType","parsedHtml","renderedTemplate","enterDialogMessage","closeButtonText","modal","handlePostCartAdd","messageType","newBonusDiscountLineItem","setTimeout","getChildProducts","childProducts","each","JSON","stringify","getOptions","options","$elOption","urlValue","selectedValueId","optionId","toArray","miniCartReportingUrl","methods","editBonusProducts","focusChooseBonusProductModal","on","onClosingChooseBonusProductModal","trapChooseBonusProductModalFocus","colorAttribute","selectAttribute","currentTarget","addToCart","pidsObj","setPids","qty","reportingURL","selectBonusProduct","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","optionID","valueId","selectedBonusProductHtml","removeBonusProduct","$selected","count","enableBonusProductSelection","available","showMoreBonusProducts","addBonusProductsToCart","$readyToOrderBonusProducts","queryString","pidsObject","bonusProducts","qtyOption","option","productId","errorMessage","msgSuccess","reload","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_toPropertyKey","_createClass","protoProps","staticProps","arg","_toPrimitive","String","input","hint","prim","toPrimitive","res","call","Number","AlertHandlerModel","$flashMessagesContainer","querySelector","$alertTemplate","createAlertMessage","alertMessage","alertType","$alertContainer","cloneNode","classList","add","concat","showError","braintreeConstants","FLASH_MESSAGE_DANGER","showBraintreeError","errorMessages","errorCode","code","alertMessages","CLIENT_GATEWAY_NETWORK","showWarning","warningMessage","FLASH_MESSAGE_WARNING","showInfo","infoMessage","FLASH_MESSAGE_INFO","hideAlerts","$alertContainers","querySelectorAll","element","hideControllerCreatedAlerts","init","payPalBusinessLogic","paymentMethodGeneral","createGeneralClientInstancePromise","initAPMA","_inherits","subClass","superClass","create","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","getPrototypeOf","ApplePayAlertHandlerModel","_AlertHandlerModel","_super","_this","handleApplePayError","name","braintreeApplePayModelBuilder","applePayPaymentProcessing","applePayErrorMessages","braintreeApplePayModelResponse","applePayMessages","initApplePay","alertHandler","NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS","btApplePayModel","btApplePayConfigs","_regeneratorRuntime","Op","hasOwn","hasOwnProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","err","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","fn","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","return","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","iter","object","reverse","pop","skipTempReset","prev","charAt","slice","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","braintreeApplePaySDK","braintreeGeneral","helper","isFtEnabled","btClientInstancePromise","apInstance","amount","shippingOptions","fromContactSelect","fromInit","fromErrorState","braintreeClientInstancePromise","isFraudToolsEnabled","collectFraudData","customMessage","FRAUD_DATA_CELLECTION_ISNOT_ENABLED","ApplePaySession","createApplePayPayment","applePayInstance","canMakePaymentsWithActiveCard","merchantIdentifier","createPaymentDataRequest","applePayConfigs","onValidateMerchant","sessionEvent","performValidation","onPaymentAuthorized","tokenize","onShippingContactSelected","_x","_x2","_onShippingContactSelected","_callee","shippingAddress","city","stateCode","countryCode","postalCode","addressQueryString","paymentMethodId","shippingOptionsData","stateExclusion","updateData","zipAppleError","newLineData","contactAmount","_callee$","_context","shippingContact","locality","administrativeArea","PAYMENT_METHOD_ID_APPLEPAY","braintreeUrls","getApplicableShippingOptions","applicableShippingMethods","ApplePayError","newTotal","errors","newShippingMethods","updateAmountForShippingOption","identifier","status","STATUS_SUCCESS","newLineItems","onShippingMethodSelected","_x3","_x4","_onShippingMethodSelected","_callee2","newShippingMethod","shippingOptionId","shippingAmount","shippingLabel","updatedAmount","_callee2$","_context2","shippingMethod","updateApplePayAmount","getOrderInfoUrl","applePayHelper","braintreeApplePayModel","braintreeApplePayConfigs","getBraintreeApplePayConfigs","clientToken","createClientInstance","btClientInstance","braintree","applePay","client","createPaymentRequest","total","validationURL","payment","$applePayButton","paymentData","$braintreeCartButtons","applePayCheckoutFormData","expandApplePayCheckoutFormData","$csrfToken","nonce","deviceData","billingAddress","processCartFlow","billingAddressData","paymentMethodName","tryParseJSON","getAttribute","placeOrderUrl","checkoutSubmitPayment","checkoutFormFields","paymentFieldData","getPaymentFieldsData","createPaymentFormData","submitCustomerForm","email","recaptcha","updatedFormData","fieldErrors","serverErrors","cartError","href","redirectUrl","disableBraintreeReviewstep","secondData","show","scrollAnimate","redirect","continueUrl","orderID","orderToken","submit","responseJSON","_error$responseJSON","alertHandlingModel","setAttribute","processCheckoutFlow","getElementById","storeFrontBillingData","getUpdatedStoreFrontBillingData","updateBillingFormValues","loaderInstance","applePayPaymentProcessingHelper","applePayPaymentProcessingConstants","applePayCart","applePayCheckout","$braintreeApplePayLoader","$applePayButtonContainer","$continueButton","applePayEnabledOnCheckout","loader","applePayModel","applePayButtonConfig","onTokenizedPayment","applePayFlow","getApplePayFlowId","removeActiveSessionPayment","FLOW_CHECKOUT_NAME","click","FLOW_CART_NAME","createApplePaySession","_createApplePaySession","paymentDataRequest","session","isRequiredBillingContactFields","requiredBillingContactFields","isRequiredShippingContactFields","requiredShippingContactFields","dataLayer","eventLabel","eventAction","onshippingcontactselected","applePayShippingContactUpdate","completeShippingContactSelection","abort","onshippingmethodselected","applePayShippingMethodUpdate","completeShippingMethodSelection","onvalidatemerchant","merchantSession","completeMerchantValidation","onpaymentauthorized","tokenizedPayload","completePayment","TokenizedPaymentData","getTokenizedPaymentData","hide","STATUS_FAILURE","oncancel","begin","onApplePayButtonClick","isBilligFiledsValid","style","display","fraudDataPayload","setApplePayDeviceData","canMakePayments","renderApplePayButton","applePayConfig","makeApplePayButtonDisabled","$applePayBtn","hideApplePayTab","$applepayDataMethod","$phoneField","braintreeApplePayButtonConfigs","$braintreeApplePayDeviceData","buttonStyles","buttonStyle","removeSessionNonce","isValidInputField","toggleContinueButtonOnBillingPage","applePayContent","continueButtonToggle","getShippingAddress","streetAddress","addressLines","extendedAddress","region","toUpperCase","decodeURIComponent","countryCodeAlpha2","firstName","givenName","lastName","familyName","phone","phoneNumber","emailAddress","getBillingAddress","billingContact","shippingAddressData","innerHTML","cssClass","D_NONE","FONT_WEIGHT_BOLD","errorHandler","creditCardListLoader","showAddNewCardOptions","$addNewCardButton","$addNewCardBlock","initRemoveCardEvent","$removeCardBtns","el","fetch","deletePaymentUrl","json","UUID","newDefaultAccount","initMakeDefaultCardEvent","$makeDefaultCardBtns","makePaymentMethodDefaultUrl","paymentMethodID","newDefaultProperty","toRemoveDefaultProperty","initAccount","$creditCardAccountBtLoader","$addNewCard","creditCardListLoaderExists","authorization","dataCollector","kount","getBtCustomerPaymentMethods","clientInstance","vaultManager","fetchPaymentMethods","defaultFirst","initCreditCardFunctionality","creditCardOnAccountEnabled","creditCardEnabledOnCheckout","creditCardBusinessLogic","initCheckout","initPayPalFunctionality","_initPayPalFunctionality","_callee3","clientTokenPromise","payPalEnabledOnCheckout","payPalEnabledOnProduct","payPalEnabledOnPvp","payPalEnabledOnCart","payPalEnabledOnAccountPage","payPalEnabledOnLoginPage","cwppEnabledOnPage","payPalBannerOnCategory","payPalBannerOnPDP","availablePages","PayPalScriptLoading","cwpp","payPalScriptLoading","_PayPalScriptLoading","_payPalScriptLoading","_PayPalScriptLoading2","_payPalScriptLoading2","payPalButtonDisplayBehavior","_callee3$","_context3","includes","isContainerExist","loadPayPalSDK","loadConnectWithPayPal","loadPayPalCreditMessages","initProductPage","initProduct","initQuickView","initMiniCart","initCart","initGooglePayFunctionality","googlePayBusinnessLogic","googlePayEnabledOnCheckout","googlePayEnabledOnCart","initApplePayFunctionality","applePayBusinessLogic","applePayEnabledOnCart","initVenmoFunctionality","venmoBusinessLogic","isVenmoEnabledOnAccountPage","isVenmoEnabledOnBillingPage","initBillingCheckout","initSRCFunctionality","srcBusinessLogic","isSrcEnabledOnAccountPage","isSrcEnabledOnCartPage","isSrcEnabledOnBillingPage","initCartCheckout","initLPMFunctionality","lpmBusinessLogic","isLpmEnebledOnBillingPage","lpmFallback","process","initAPMAFunctionality","apmaBusinessLogic","isApmaEnebled","handlePaymentMethodErrorCheckout","jqXHR","ajaxSettings","isCheckoutPage","isAccountPage","btAccountBusinessLogic","lastAmount","fillPaymentSummaryContainer","initPaymentMethodTabClickBehavior","initChangeShippingBehavior","initBillingSelectorChangeFunctionality","initAmountObserver","parseFloat","sessionStorage","getItem","braintreePreferences","is3DSecureEnabled","is3DSecureFallback","handleActiveCCSessionPayment","getSelectedData","selectElement","getElementsByTagName","creditCardFormFieldValidation","CreditCardAlertHandlerModel","convertBtFromFieldsToDw","arrayOfBtFormFields","creditCardFieldsMap","cardholderName","number","cvv","expirationDate","fieldName","allFieldsAreEmptyErrorBehavior","makeAllFormFieldsInvalid","ccFields","someFieldsAreInvalidErrorBehavior","btInvalidHostedFields","convertedFormFields","makeFormFieldsInvalid","processBraintreeHostedFiledsErrors","errorPayload","braintreeErrorCode","ALL_HOSTED_FIELDS_FIELDS_EMPTY","HOSTED_FIELDS_FIELDS_INVALID","invalidFields","details","invalidFieldKeys","handleCreditCardError","ccFieldsInitiated","errorMsg","customError","secure3DFailed","creditCardFormFieldsHelper","BRAINTREE_ERROR_SELECTOR","BRAINTREE_VALID_SELECTOR","BRAINTREE_FOCUSED_SELECTOR","getArrayOfFieldContainers","arrayOfFormFields","arrayOfFieldContainers","fieldContainer","arrayOfInvalidFieldsFrom","arrayOfInvalidFormFields","$field","arrayOfCreditCardFieldNames","makeAllFormFieldsValid","arrayOfCreditCardFields","getCCFields","asArray","braintreeCreditCardSDK","orderData","sitePrefs","is3dSecureEnabled","is3dSecureFallback","getShippingAdditionalInfo","orderAddress","workPhoneNumber","shippingGivenName","recipientName","split","shippingSurname","shippingPhone","line1","line2","updateOrderData","ok","shippingAdditionalInfo","addAuthenticationInsight","tokenizationOptions","braintreeCreditCardConfigs","getCheckoutBraintreeCreditCardConfigs","authenticationInsight","merchantAccountId","getAuthInsightRegulationEnvironment","config","vaultCreditCardUrl","headers","apply3dSecureValidation","bin","billingData","btTokenizePayload","liabilityShifted","threeDSecureDataValidationPayload","isTrigger3DSecureFlow","is3dSecureDisabled","regulationEnvironment","processNewCard","hfInstance","orderAmount","resultTokenize","processStoredCard","paymentMethodResponse","processSessionCard","isBasketDataValid","customErrorMessage","getClientInstancePromise","braintreeCreditCardModel","creditCardHelper","btCreditCardModel","btCreditCardConfigs","createHostedFields","hostedFieldsParams","hostedFields","styles","configs","threeDSecure","version","verifyCard","surname","address1","address2","country","additionalInformation","onLookupComplete","tokenizeOption","creditCardFormFieldHelper","braintreeCreditCardSdkHelper","getHostedFieldsConfig","$braintreeCreditCardsFields","HostedFieldsModel","sdkHfInstance","fieldsOptions","hostedFieldsConfigs","verifiedCardsArray","getCcFields","reduce","accum","curr","selector","setVerifiedCardUUIDtoArray","ccUUID","isCcReVerifyRequired","isCcReVerifyEnabled","initPaymentDetailsSelectorObserver","that","observer","MutationObserver","hideCardElements","getCcCvvField","showCardElements","getCcCvvToDisplayField","observe","childList","sdkHfInstanceValidation","exist","customMessages","HOSTED_FIELDS_INSTANCE_NOT_DEFINE","setHostedFieldsOptions","initHostedFields","createTokenizationOptions","tokenizeCvv","cvvPayload","clearHostedFields","clear","teardown","getFieldsOptions","braintreeCvvElId","reverifyFlow","placeholder","REVERIFY_CC","basicFlow","getHostedFieldsStyles","reverifyFlowConfigs","basicFlowConfigs","addNewCreditCardLoader","ccMessages","hfFieldsInstance","closeAddNewCardBlock","storeNewCreditCard","creditCardAccountHelper","braintreeAccount","$customCreditCardErrorContainer","customErrorList","CLIENT_MISSING_GATEWAY_CONFIGURATION","$addCreditCardForm","clearForm","btModelPayload","formValidation","tokenizePayload","addCreditCardFormUrl","validateForm","VALIDATION_INVALID","checkForDuplicatedCC","verifyCard3dSecure","setCardHiddenFields","formData","FormData","$braintreeCreditCardNonce","renderAccountsUrl","template","templateHtml","stopPropagation","initCreditCartAccountLoaders","$braintreeCreditCardLoader","braintreeCreditCardLoaderExists","alertHandlerModel","creditCardMessages","hostedFieldsInstance","addNewCreditCardFormExists","generalHfValidation","$braintreeCreditCardFieldsContainer","braintreeCreditCardConfig","isHostedFieldsWasInited","isBraintreeCreditCardConfigValid","generalHostedFieldsValidation","$braintreeDeviceData","paymentMethodGeneralHelper","creditCardBillingAddressHelper","saveCreditCardBlockManipulation","saveCreditCard","displaySaveCreditCardBlock","$saveCreditCard","$braintreeSaveCardContainer","checked","cardListChange","btUtils","$creditCardList","getCreditCardListContainer","getCreditCardNonceFieldContainer","$braintreeCardPaymentMethod","creditCardOption","selectedOptions","creditCardOptionID","creditCardFiledsToDisplayObject","getCCFieldsToDisplay","asObject","creditCardFieldsToDisplayArray","creditCardHostedFieldsArray","selectedCreditCard","showSaveCreditCardBlock","isReVerifyFlow","isSavedCreditCard","ccCvvToDisplayField","ccCvvField","$selectedCcAccountOption","getSelectedCcAccountOption","savedBillingAddress","enableBillingAddressFunctionality","displaySelectedStoredBillingAddress","initBillingInfoAlert","_hostedFieldsInstance","cardCvvToDisplay","setCardFields","_hostedFieldsInstance2","disableBillingAddressFunctionality","creditCardListExist","creditCardPaymentProcessingHelper","creditCardPaymentProcessingConstants","checkForErrorInPayload","clientInstancePromise","savedCcBillingAddressAsString","getSavedCcBillingAddressAsString","setCreditCardBillingAddress","createCreditCardBillingAddress","$selectedCcOption","selectedCcOptionId","tokenizePaylaod","getNonceFromStoredCard","btStoredCardPayload","threeDSecureInfo","fill3DsData","processCreditCard","customErrorMessages","basketDataValidResponse","TOTAL_BASKET_AMOUNT_INVALID","creditCardFlow","getCreditCardFlowID","getBillingAddressFormValues","textContent","isCheckoutFlow","sdkHfInstanceValResult","$billingForm","FLOW_NEW_CARD_NAME","getElementsByClassName","btPayload","$saveCardCheckbox","fillCreditCardFormWithPayloadData","setSessionCreditCardDataAttributes","fillSessionCreditCardFormWithPayloadData","displayStoredCreditCardList","markAsSelectedSessionAccount","FLOW_SESSION_CARD_NAME","FLOW_STORED_CARD_NAME","WROND_CHECKOUT_FLOW","isCreditCardTabActive","isActiveCreditCardTab","isTrusted","creditCardSessionAccountHelper","clearSessionAccount","sessionOption","defaultCreditCard","getOptionByDataDefault","creditCardFieldstoDisplay","creditCardFieldsAsArray","getSessionAccountOption","sessionLastFour","sessionType","toLowerCase","showAlreadyStoredCard","clearCreditCardFields","clearCreditCardNonceField","setCreditCardFieldsToDisplay","hideSaveCreditCardBlock","ccAccount","CreditCardVaultManagerModel","personalizedClientTokenPromise","customerPaymentMethodsFromVaultPromise","getCardFromVaultMgrByData","lastFour","cardType","expiration","vaultMgrPaymentMethods","paymentMethod","isCardType","pmDetails","isExpirationMatched","expirationMonth","month","expirationYear","endsWith","year","getCardFromStorefrontByData","storefrontCardList","storedCard","toString","toLocaleLowerCase","isCreditCardExistOnStorefrontAndVault","storefrontCard","vaultMgrCardPromise","cardFromVaultMgr","getNonceByCardData","creditCardFields","btCreditCardModelResponse","creditCardAccount","_initCheckout","creditCardList","creditCardPaymentProcessing","braintreeCreditCardModelBuilder","tokenizePayloadDetails","getDataForVerifyCard","preparedData","$customerInfo","errorList","prefs","is3DSecureFlow","is3DSecureVerificationAccountPage","customerInfo","CARD_VERIFY_ERROR_MESSAGE","$selectedCreditCardPayment","selectedOptionClassList","storedCcAddressClassName","$storedCreditCardAddressOption","contains","billingAddressAsString","getBillingAddressAsString","innerText","createElement","selectedBillingAddress","parse","defaultBillingAddress","$creditCardBillingInfoAlert","ccToDisplayFieldsAsObject","cardOwnerToDisplay","cardNumberToDisplay","cardExpirationToDisplay","braintreeCvv","ccFieldsAsObject","braintreeCardOwner","braintreeExpirationDate","braintreeCardNumber","selectedCard","cacheCardFields","cartNumber","dataset","owner","cardFields","color","save","isSave","isHide","braintreeCreditCardFieldsConfigs","selectedIndex","returnValue","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","n","from","test","len","arr2","_i","_s","_e","_r","_arr","_n","_d","cardPlaceholder","btSessionCreditAccountSelectorID","ATTR_DATA_EXPIRATION","$creditCardAccount","braintreeResponse","btResponse","$creditCardFieldsCardNumber","btResponseDetails","substr","usedCreditCardAccount","$sessionCreditCard","$braintreeSaveCreditCard","isSavedCard","$newCCAccount","removeAttribute","selectedOptionValue","newCardID","sessionCardID","storedCardID","selectedOption","creditCardFlowID","getSelectedOption","CreditCardVaultManagerModelInstance","$selectedOption","_$selectedOption$getA","_$selectedOption$getA2","isExpired","$braintreeIs3dSecureRequired","getStoredCardByData","$card","storedCardType","storedCardLastFour","$storedCard","flag","creditCardFieldsArray","googlePayErrorMessages","GooglePayAlertHandlerModel","showOrderTotalError","zeroAmountErrorMsg","ORDER_TOTAL_0","handleGooglePayError","statusCode","statusMessage","GOOGLE_PAY_WINDOW_CLOSED","getPaymentDataError","intent","googlePayConstants","INTENT_SHIPPING_OPTION","reason","REASON_SHIPPING_OPTION_INVALID","SHIPPING_OPTION_INVALID","INTENT_SHIPPING_ADDRESS","REASON_SHIPPING_ADDRESS_UNSERVICEABLE","SHIPPING_ADDRESS_UNSERVICEABLE","braintreeGooglePaySDK","googlePaymentInstance","paymentsClient","currencyCode","initGooglePay","googleMerchantId","createGooglePayment","gpInstance","allowedPaymentMethods","isReadyToPay","apiVersion","apiVersionMinor","parseResponse","googlePayUpdateAmount","onPaymentDataChanged","_onPaymentDataChanged","intermediatePaymentData","paymentDataRequestUpdate","isShippingMethodApplicable","totalAmount","shippingOptionData","PAYMENT_METHOD_ID_GOOGLEPAY","callbackTrigger","INTENT_INITIALIZE","newTransactionInfo","totalPriceStatus","totalPrice","totalPriceLabel","initPaymentsClient","instanceType","flow","paymentDataCallbacks","transactionState","PAGE_FLOW_CART","google","payments","api","PaymentsClient","environment","getPaymentsClient","braintreeGooglePayModel","googlePayHelper","braintreeGooglePayConfigs","getBraintreeGooglePayConfigs","btGooglePayModel","btGooglePayConfigs","NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS","googlePaySDKHelper","googlePayOptions","createGooglePayOptions","googlePayment","requestObject","transactionInfo","currency","merchantInfo","merchantName","shippingAddressRequired","isShippingAddressRequired","shippingAddressParameters","allowedCountryCodes","countries","phoneNumberRequired","emailRequired","callbackIntents","isShippingOptionRequired","shippingOptionRequired","shippingOptionParameters","defaultSelectedOptionId","getSelectedShippingId","merchantId","$braintreeGooglePayLoader","googlePayConfigs","googlePayBillingAddressData","googlePayShippingAddressData","googlePayNonce","googlepayPaymentType","googlePayCardDescription","googlepayCheckoutFormData","expandGooglePayCheckoutFormData","paymentFieldsData","getUrlWithCsrfToken","setItem","paymentType","description","$googlepayButton","$googlepayNonce","$googlepayCardDescription","$braintreeGooglepayPaymentType","$googlePayBillingAddress","$btGooglepayAccountsList","googlePayAccountListExist","googlePayContentTabHandler","googlePayPaymentProcessingHelper","googlePayCart","googlePayCheckout","googlePaySessionAccount","googlePayPaymentProcessingConstants","googlePayModel","googlePayConfig","$googlePayButton","onTokenizePayment","googlePayPaymentType","gpCardDescription","createGooglepayBillingAddressData","googlePayFlow","getGooglePayFlowId","createGooglepayShippingAddressData","showGooglepayAccount","onGooglePaymentButtonClicked","_onGooglePaymentButtonClicked","cardPaymentMethod","parameters","billingAddressRequired","billingAddressParameters","format","loadPaymentData","t0","$googlePayButtonFillStyle","googlePayButtonStyle","buttonColor","buttonType","buttonSizeMode","googlePayButtonConfigs","setGooglePayDeviceData","onClick","button","createButton","appendChild","$googlepayContent","usedGooglePayAccountClassName","usedGooglePayAccountHideClassName","cardDescription","$newGPAccount","$gpAccount","$sessionAccount","FLOW_NEW_GP_ACCOUNT_NAME","braintreeGooglePayModelBuilder","googlePayList","googlePayPaymentProcessing","braintreeGooglePayModelResponse","googlePayMessages","triggerGooglePayTab","braintreeGooglePayButtonConfigs","$braintreeGooglePayDeviceData","isActiveGooglePayTab","sessionPaymentMethodId","$googlePayTab","googlePayFlowId","flows","checkout","cart","newGpAccount","paymentMethodData","shippingData","gpOptions","googlePayVersion","shippingMethods","selectedShippingMethod","shippingId","INVALID_CLASSNAME","stage","hash","substring","getPaymentMethodToLowerCase","getHtmlFromPaymentMethodId","selectedPaymentInstrument","htmlResult","PAYMENT_METHOD_ID_PAYPAL","braintreePaypalEmail","PAYMENT_METHOD_ID_VENMO","braintreeVenmoUserId","updateCheckoutView","$paymentSummary","order","billing","htmlToAppend","selectedPaymentInstruments","fundingSource","PP_FUNDING_SOURCE_PAYLATER","PP_PAYLATER_PAYMENT_TYPE","PP_FUNDING_SOURCE_CARD","PP_DEBIT_CREDIT_PAYMENT_TYPE","maskedCreditCardNumber","maskedGiftCertificateCode","priceTotal","field","checkValidity","billingFormData","fromEntries","entries","accumulator","_ref","_ref2","elem","lastIndexOf","isNonceExist","pmName","$nonce","nonceValue","$tab","isActiveTab","removeBtPayment","$loaderContainter","accountsLoader","paymentFields","fieldsData","paymentFieldsParsed","_entry","setDefaultProperty","params","isCurrent","helpers","PayPal","Venmo","GooglePay","CREDIT_CARD","SRC","ApplePay","activePaymentMethods","selectedPaymentMethod","methodId","activePM","$billingFormFields","$selectContainer","selectedOptionIndex","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","validity","valid","getCsrfToken","$element","urlInstance","URL","origin","searchParams","validateCreditCardUrl","_getApplicableShippingOptions","shippingOptionID","getAmountForShippingOption","containerElement","console","containerEl","lpmHelper","lpmErrorMessages","LpmAlertHandlerModel","lpmConfigs","getBraintreeLpmConfigs","handleLpmError","responseText","handleZeroAmountOnCheckoutError","braintreeLpmSDK","lpmInstance","initLpm","createLpmPayment","localPaymentInstance","createLpmClickListener","updateLpmOrderData","updatedShippingAddress","createRequestData","assign","onPaymentStart","_","continueCallback","startPayment","reqData","braintreeLpmModel","braintreeLpmConfigs","btLpmModel","NO_LPM_BRAINTREE_CONFIGURATIONS","localPayment","fallback","fallbackUrl","buttonText","address","lpmPaymentProcessingHelper","$braintreeLpmLoader","lpmModel","startLpmPayment","startPaymentPayload","LPM_PAYMENT_SUCCESS","confirmPayment","processLpmConfirmForm","onLpmButtonClick","$email","localPaymentMethodName","LPM_PAYMENT_PROCESSING","$braintreeLpmButton","getPaymentDetailsParameter","jQuery","isEmptyObject","paymentConfirmUrl","lpmName","correlation_id","correlationId","createConfirmForm","orderIdInput","orderTokenInput","splitUrl","shift","URLSearchParams","formParam","get","braintreeLpmModelBuilder","lpmPaymentProcessing","braintreeLpmModelResponse","$lpmFallback","$lpmLoader","lpmData","buyerAddressDetails","customerEmail","lpmPaymentProcessorHelper","LPM_PAYMENT_ERROR","payPalStoredBillingAddressComponent","venmoBillingAddressComponent","srcHelper","venmoHelper","payPalListHelper","CHECKOUT_PAGE","CART_MINICART_PRODUCT_PAGE","LOCAL_PAYMENT_METHODS_LIST","PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY","DATA_METHOD_ID_ATTRIBUTE","DATA_BILLING_ADDRESS_ATTRIBUTE","PAYMENT_OPTIONS_CLASS","getApplicablePageType","isCartMiniCartProductPage","currentPageType","applycablePageType","attrBtClientToken","$billingElement","$btExpressCheckoutPayPalButtonWrapper","$btAccountPayPalButtonWrapper","$btApmaPayPalButtonWrapper","$summaryDetails","createErrorContainerAfterPayPalButton","payPalButtonSelector","$errorContainer","$payPalButton","cssText","parentNode","insertBefore","nextSibling","initCreditCardBillingAddressBehavior","paymentOption","billingAddressSelector","billingAddressId","getStoredBillingAddressId","billingAddressToSelect","stroredBillingAddress","deselectAllOptions","removeAddedOption","optionToRemove","selectBillingAddress","selectedMethodID","optionClass","payPalAccountList","selectedPayPalAccountOption","googlePayBtn","createBillingAddressOption","PAYMENT_METHOD_ID_SRC","srcBtn","applePayBtn","displayShippingAddressAsSelected","handleBillingAddressFunctionality","handlePaymentMethodsFunctionality","isAccountListHidden","hideSubmitPaymentButton","isNewPayPalAccountOptionSelected","showSubmitPaymentButton","srcContentTabHandler","PAYMENT_METHOD_ID_CREDIT_CARD","isBtVenmoAccountsList","isSessionAccountExist","venmoContentTabHandler","PAYMENT_METHOD_ID_LPM","saveSelectedBillingAddressFromPreviousTab","paymentOptions","paymentOptionToSaveBillingAddress","firstElementChild","selectedBillingAddressOption","setStoredBillingAddressId","checkoutStageElement","shippingChangeEvent","Event","dispatchEvent","activePaymentOption","navLinks","navLink","clickedPaymentOption","createCustomerFormData","checkoutCustomerFormFields","customerFormData","_submitCustomerForm","buttonsWrapper","isCustomerEmailEmpty","submitCustomerUrl","creditCardSessionAccount","amountElement","hideBillingAddressManipulationButtons","showBillingAddressManipulationButtons","disableBillingAddressList","enableBillingAddressList","hideBillingAddressForm","showBillingAddressForm","hidePhoneField","showPhoneField","formatBaAsString","lastname","$selectedPayment","selectedBillingAddressStr","billingAddressRepresentationString","selectedBillingAddressObj","billingOption","selectedPaymentMethodName","PaypalAlertHandlerModel","showBillingAddressIsNotSupportedError","PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED","showZeroAmountError","CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR","showStateExclusionError","CUSTOM_TCS_STATE_EXCLUSION_ERROR","btPayPalCheckoutInstancePromise","createPayPalCheckoutInstance","payPalPaymentProcessingModal","payPalCheckoutConfigs","payPalCheckoutInstanceConfigs","paypalCheckout","createPayPalStyleConfigurations","btPayPalConfigurations","payPalButtonStyleConfigs","paypalConfig","height","shape","layout","tagline","payPalFormValidationControl","validateActions","isFormValid","enable","disable","onApprove","checkoutInstance","paymentProcessingModal","tokenizePayment","onApprovePaymentCallback","createOrder","paymentObject","onOrderCreateCallback","createPayment","getVaultModeButtonConfigurations","btPayPalCheckoutInstance","vaultModePayPalButtonConfigs","actions","onPayPalButtonClickCallback","createBillingAgreement","onCancel","onCancelPaymentCallback","onError","onErrorPaymentCallback","validate","getCheckoutModeButtonConfigurations","onShippingChange","onShippingChangeCallback","payPalButtonRendering","isVaultMode","payPalPaymentProcessingModels","ppPaymentProcessingModel","isPayPalCreditMessageLoaded","paypal","getPayPalButtonConfig","changePMButtonEnabled","vaultMode","btPayPalConfig","payPalPaymentProcessingModel","paypalButtonSdkUrlConfigs","payPalCheckoutSdkConfigs","payPalVaultSdkConfigs","isPayPalSDKLoaded","paypalButtonConfigs","Buttons","ApmaModel","PAGE_FLOW_ACCOUNT","addressObject","payPalConfigurations","addPayPalAccountUrl","PayPalAPMA","initPayment","initAddButtonEvent","showPayPalStaticImageButton","$staticImage","initConnectWithPayPal","$container","MIN_NUMBER_OF_PARAMETERS","use","login","initAddNewPayPalAccountEvent","PayPalAccount","payPalAccountPageHelper","$addNewPayPalAccountButton","showPayPalAccountBtn","accountPayPalButtonInited","PayPalAccountModel","paypalAddAccountHandlerUrl","$loaderContainer","initRemovePayPalAccountEvent","initMakeDefaultPayPalAccountEvent","$allRemovePayPalAccountButtons","btn","PRICE_SELECTOR","MINI_CART_QUANTITY_SELECTOR","PRODUCT_STATUS_UPDATE","ADD_TO_CART_BTN_SELECTOR","PAYPAL_BANNER_SELECTOR","hidePayPalButton","showPayPalButton","isZeroPdpProductPrice","$productPriceSelector","isAddToCartButtonDisabled","$addToCartButton","disabled","getMiniCartQuantity","$miniCartQuantitySelector","isBasketNotEmpty","miniCartQuantityElement","isCurrentTotalBasketPriceZero","$basketTotalAmount","basketTotalAmount","updateCreditMessageAmount","productData","$creditMessage","_productData$data","_price$max","_price$max$sales","selectedQuantity","productPrice","max","sales","newPrice","paypalMinicartButtonBehavior","paypalMinicartButton","initPaypalCreditMessagesBehaviorOnPdp","initPaypalCreditMessagesBehaviorOnPdpBundle","$price","$quantitySelector","initPaypalCreditMessagesBehaviorOnPdpSet","$productIds","$targerProduct","$setItemContainer","initPaypalButtonBehaviorOnPdp","addToCartButtonDisabled","zeroProductPrice","basketNotEmpty","addToCartButtonEnabled","hideAllPayPalButtonsOnSet","addToCartButtons","paypalButton","initPaypalButtonBehaviorOnPvp","isProductReadyToOrderElement","isProductReadyToOrder","initPaypalButtonBehaviorOnSet","ppBtnSelector","PP_BTN_CONTAINER_SELECTOR","prices","isWrongAmount","some","addToCartButton","initPaypalButtonBehaviorOnPdpSet","initProductViewPage","PP_BUTTONS_SELECTOR","isProductSet","paypalCreditBanner","isProductBundle","PayPalCartModel","PayPalExpress","generateFraudData","PayPalCheckoutModel","payPalConfigs","PayPalCheckoutPayment","$paypalTab","payPalCheckoutWasInited","payPalSessionAccountComponent","_require","isVaultModeEnabled","isOrderIntentEnabled","getAccountType","setNonceInputValue","hideSavePayPalAccountBlock","displaySavePayPalAccountBlock","displayPayPalButton","hidePayPalButon","displayContinueButton","hideContinueButon","isBuyerAuthenticated","selectPayPalCheckoutTab","setBraintreePayPalEmailInput","handleStoredAccountsShowing","billingFormHelper","$payPalAccountList","$savePaypalAccountCountainer","$braintreePayPalNonce","$paypalButton","$payPalTab","$braintreePaypalEmail","constantList","SESSION_ACCOUNT","NEW_ACCOUNT","STORED_ACCOUNT","accountsListChange","accountType","storedAccountWithSessionAccountEmail","getStoredAccountBySesionAccountEmail","buyerAuthentificated","vaultModeEnabled","orderIntentEnabled","$selectedPayPalAccountOption","removeEventListener","paypalerror","selectedOptionNonceValue","selectedAccountEmail","buyerAuthenticated","PayPalExpressModel","PAYPAL_BUTTON_SELECTOR","initPayPalOnMiniCart","$paypalMinicartButton","isPayPalButtonWasInited","$minicartPopover","mutations","mutation","addedNodes","PayPalProductPageModel","braintreePayPalSDK","pvpModels","PP_BTN_SELECTOR","paypalButtonContainers","PayPalProductPage","PayPalProductViewPageModel","PayPalProductViewPage","payPalSessionAccountHelper","$braintreePaypalAccount","handlePaypalTabBehavior","selectedPayPalPayment","storedPayPalAddressOption","parsedAddress","savePayPalAccount","paymentFormData","btoa","renderPayPalAccounts","hidePaypalAccountBtn","$addNewPaypalAccountBtn","$paypalAccountButtonWrapper","addPayPalAccountsToTheTemplate","accountListTemplate","$payPalAccountsContainer","throwCartUpdate","$addPaypalAccountBtn","$paypalAccountWrapper","btPaypalAccontSelectorID","storePaymentAsSessionPayment","sessionAccountEmail","$accountListBlock","$braintreePaypalNonceInput","$sessionPyapalAccount","setSessionAccountOptionDefault","$savedPayPalAccountList","sessionPaypalAccount","paypalAccountsList","sessionEmail","mapBraintreeWithDwBillingAddress","braintreeAddress","btDetails","$btPaymentMethodWrapper","dwBillingFormFieldNames","createBillingAddressData","payloadDetails","copyPayPalBillingAddressToDw","braintreeBillingAddress","$braintreePaypalBillingAddressInput","paypalBillingData","createBillingAddressFormData","paypalBillingFormFields","fillPayPalPaymentFields","$braintreePaypalEmailInput","$sessionPaypalAccount","btEmail","fillFraudDataInput","$braintreePaypalRiskDataInput","appendCsrfTokenToFormData","appendBraintreePaypalFundingSourceToFormData","appendEmailAsStringToFormData","appendFraudDataToFormData","billingFromData","fraudData","appendBillingAddressAsStringToFormData","appendBtPaymentFieldsToFormData","appendToUrl","newUrl","encodeURIComponent","hidePayPalButtons","payPalButtonsContainer","hideAccount","$accountOption","hideSaveNewAccountContainer","savePaypalAccountCheckbox","savePaypalAccountContainer","displayAllStoredAccounts","braintreePaypalAccountsList","addBillingAddressOnPaymentOptionLevel","btPayloadDetails","btBillingAddress","createShippingAddressData","shippingAddressPayPalData","appendShippingDataAsStringToFormData","csrfToken","paypalButtonsWrapper","getSavedPaypalAddress","buttonSelector","payPalAccountData","paypalCheckoutModelHelper","customerAuthenticated","$storedAccountOptionWithSameEmail","removeProductFromCart","removeAllProductsFromCart","base","PRODUCT_DETAIL_SELECTOR","addProductToCart","productContainer","elOption","selectedValue","bundleItems","setItems","ppBtnContainer","isGlobalButton","items","item","getBasketData","validateAddresses","$token","submitPaymentDataToServerPromise","submitPaymentUrl","updatedBillingFormData","$btSavePaypalAccountContainer","$paypalContent","$btPayPalBillingButton","hidePaypalSmartButtonFunctionality","showPaypalSmartButtonFunctionality","isSelectedPaypalAccount","isChangePmButton","$btUsedPayPalAccount","PayPalBaseModel","payPalAccountModelHelper","saveAddressDetails","apmaModelInstance","savePaypalDefaultAddress","PayPalAPMAModel","APMA_QUERY_PARAMETER_TRUE","savePaypalDefaultAddressUrl","contentType","$apmaButtonPayPal","addingStage","APMA_STAGE_ADDRESS","paypalAccountFormFields","payPalBraintreeAddressData","paypalAccountFormData","addresses","payPalButtonConfigs","orderCreateParams","enableShippingAddress","billingAgreementDescription","payPalAccountModelInstance","accountListTemplateHTML","$makeDefaultBtns","makeDefaultUrl","paymentMehtodId","paymentProcessorId","paymentMethods","BRAINTREE_PAYPAL","loaderContainer","requestsHelper","requestBillingAgreement","fraudDataPromise","fraudDataCollectionDisabled","basketDataUrl","paypalHandle","placeOrderStageUrl","validateAddressesUrl","updateShippingMethodsListUrl","basketData","isExpressCheckout","ppDetails","ppShippingAddress","replaceAll","shippingOption","chooseShippingUrl","mainPayPalConfigurations","paymentObjectData","isExpress","addressEditable","savedPaypalAddress","locale","billingAgreementDetails","shippingAddressEditable","shippingAddressOverride","fundingSourceResponse","isChangePaymentButtonActive","enableFundingList","disableFundingList","skipReviewStep","payPalSDKConfigObject","components","commit","payPalVaultSdkConfigsObject","vault","CurrentPayPalPaymenProcessorModelInstance","hasStateExclusion","hasShippingMethods","payPalCheckoutModelHelper","paypalListHelper","PayPalCheckoutPaymentModel","checkoutInstanceConfigs","autoSetDataUserIdToken","PayPalCheckoutPaymentModelInstance","isBuyerAuthenificated","payPalExpressModelHelper","requestHelper","productHelper","isUseSavedPaypalAddress","PayPalExpressInstance","$payPalButtonWrapper","$braintreePayPalFundingSource","braintreePayPalFundingSource","paypalCheckoutFormFields","BRAINTREE_BUTTON_REGEX","validationResult","shippingError","parentWrapper","parentElement","selectedShippingOption","updatedAmounts","selectedShippingPresent","j","selected_shipping_option","shipping_address","country_code","postal_code","updatePayment","currency_code","paymentId","lineItems","PayPalProductModelHelper","PayPalProductModel","regex","match","getClientToken","configurations","getConfigurations","getValueByAttributeName","attributeName","getPayPalSdkUrlCongifuration","_this$configurations","configOptions","promise","warn","payPalCheckoutInstance","onLoadCallback","script","src","onload","onerror","_this2","payPalProductPage","payPalProductViewPage","payPalMiniCartPage","payPalCartPage","payPalAccountPage","apmaPage","payPalCheckoutPage","SrcAlertHandlerModel","CUSTOM_SRC_ZERO_AMOUNT_ERROR","handleSrcError","handleCheckoutFromCartError","createVisaCheckout","visaCheckout","visaCheckoutInitialized","SrcBaseModelInstance","visaCheckoutInstancePromise","visaCheckoutInstance","srcInitOptions","createInitOptions","getInitOptionsObject","V","onTokenizeCallback","SrcAccountModel","$braintreeSrcLoader","$braintreeSrcButton","srcButtonConfigurations","getBraintreeSRCButtonConfigs","$braintreeSrcDeviceDataInput","srcLoader","SrcAccountModelInstance","initSrcButton","SrcCartModel","$braintreeCartSrcButton","$totalAmount","SrcCheckoutModelInstance","zeroAmountSrcButtonBehavior","SrcCheckoutModel","$braintreeBillingPageSrcButton","isSrcSessionAccountExist","$submitShippingBtn","srcListHelper","$srcAccountList","srcListExist","srsListStateHandler","$srcSessionAccount","$srcCardDescription","$braintreeSrcCardType","$braintreeSrcLastFourDigits","$braintreeSrcCreditCardNumber","$srcButton","showSrcSessionAccount","srcPayload","handleSaveSrcAccountCheckbox","setIsHideContinueButtonAttr","FLOW_NAME_ACCOUNT","FLOW_NAME_CART_CHECKOUT","FLOW_NAME_BILLING_CHECKOUT","DISPLAY_NONE_CLASS","showZeroAmountSrcButton","hideZeroAmountSrcButton","handleZeroAmountButtonVisibility","addZeroAmountButtonEventListener","$zeroAmountButton","initTotalAmountElementObserver","totalAmountElement","subtree","srcButtonHelper","braintreeSrcButtonConfigs","createSrcShippingAddressData","createSrcBillingAddress","userData","srcBillingAddress","userEmail","createSrcCheckoutFormData","srcCheckoutFormData","srcResponseData","pageFlow","createSrcFormData","responseData","srcData","userFirstName","userLastName","updateStorefrontBillingData","srcBillingData","storefrontBillingData","dwfrm_billing_contactInfoFields_email","isSrcTabActive","$srcZeroAmountButton","$alertInfo","srcOptionId","$braintreeZeroAmountSrcButton","$saveSRCAccountCheckbox","$saveSRCAccountCheckboxContainter","$accoutnListBlock","$srcContent","isSessionCardAlreadyStored","srcSessionAccount","isSrcSessionCardExist","isAddNewOptionSelected","sessionCardLastFour","sessionCardType","isSrcSessionCardAlreadyStored","srcConstants","getSrcFlowName","srcFlowName","checkoutFromCartCall","SrcBaseModel","$addSrcAccountForm","addSrcFormUrl","$srcNonce","encodedCCData","finally","braintreeSrcSdkButtonInit","braintreeSrcSDK","updateBasketData","paymentRequest","subtotal","settings","cardBrands","acceptCanadianVisaDebit","shipping","collectShipping","setFraudData","dataCollectorInstance","srcPaymentProcessingHelper","srcFormData","PAYMENT_METHOD_NOT_SUPPORTING_SHIPPING_OPTIONS","billingAddressString","srcSessionAccountComponent","checkForDuplicatedCCPromise","$srcBillingAddress","srcAccount","srcCardList","checkoutComponent","cartComponent","braintreeSrcConfigs","VenmoAlertHandlerModel","handleNoBrowserSupportError","braintreeVenmoConfig","$venmoAccountWrapper","VENMO_BROWSER_NOT_SUPPORTED","braintreeVenmoSDK","venmoProcessing","isBrowserSupported","initVenmo","$venmoButton","isBillingPage","createVenmo","venmoInstance","checkBillingForm","checkZeroAmount","processVenmo","braintreeVenmoModel","braintreeVenmoButtonConfigs","getBraintreeVenmoButtonConfigs","btVenmoModel","venmoClientInstance","venmo","allowNewBrowserTab","allowDesktop","ignoreHistoryChanges","processResultsDelay","venmoLoader","makeDefaultVenmo","BRAINTREE_VENMO","removeVenmoPayment","createVenmoAccountFormData","userId","venmoAccountFormFields","venmoAccountFormData","storeNewVenmoAccount","venmoAddAccountHandlerUrl","username","encodedFormData","hideVenmoAccountBtn","templateHTML","isVenmoButtonEnabledOnAccountPage","isVenmoAccountBlockExists","$braintreeVenmoLoader","$addVenmoAccountButton","venmoButton","showVenmoAccountBtn","venmoAccountButtonInited","shipmentIndex","shippingAddressToSelect","generalVenmoValidation","isBraintreeVenmoConfigValid","generalValidation","setVenmoDeviceData","venmoCheckoutButtonInited","venmoList","venmoSessionAccount","$braintreeVenmoNonce","$braintreeVenmoUserId","$sessionVenmoAccount","$newVenmoAccount","$venmoBillingInput","$venmoContent","$venmoAccountContainer","dataAttrIsValidStage","hashChange","createLoaderContainter","history","updateBillingAddressFormValues","checkoutStage","oldValue","showVenmoAccount","attributeOldValue","$btVenmoAccountsList","isHideVenmoButtonAttribute","venmoAccount","venmoCheckout","venmoConstants","venmoProcessingHelper","venmoData","venmoFlowName","getVenmoFlowName","$braintreeVenmoSessionAccount","$venmoAccountBlock","btVenmoAccountsList","defaultOption","braintreeVenmoNonce","braintreeVenmoBilling","$addVenmoAccountBtn","btVenmoButtonClassName","$target","inputNames","elemSelector","$elem","$braintreeVenmoDeviceData","VENMO_ZERO_AMOUNT_ERROR","$saveVenmoAccountCheckboxContainer","$saveVenmoAccountCheckbox","venmoOptionId","braintreeVenmoModelBuilder","btVenmoModelResponse"],"mappings":"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","file":"int_braintree.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","\r\n'use strict';\r\n\r\nfunction recaptchaPromise(e, args) {\r\n var actionName = 'submit' + (e && e.target ? (e.target.id + e.target.className).replace(/[^a-zA-Z0-9]+/g, '') : '');\r\n\r\n // return Promise\r\n return grecaptcha.execute(window.CachedData.sitePreferences.recaptchaSiteKey, {action: actionName}).then(function(token) {\r\n var recaptchaTokenInput = $(\"\");\r\n var recaptchaActionInput = $(\"\");\r\n\r\n if (typeof args.data == 'string') {\r\n args.data += args.data.length === 0 ? '' : '&';\r\n args.data += $.param(recaptchaTokenInput) + '&' + $.param(recaptchaActionInput);\r\n } else {\r\n args.data = args.data || {};\r\n args.data['dwfrm_recaptcha_recaptchaToken'] = token;\r\n args.data['dwfrm_recaptcha_recaptchaAction'] = actionName;\r\n }\r\n\r\n // Updated AJAX Arguments\r\n return args;\r\n });\r\n}\r\n\r\nfunction validateRecaptcha () {\r\n // How this code snippet works:\r\n // This logic overwrites the default behavior of `grecaptcha.ready()` to\r\n // ensure that it can be safely called at any time. When `grecaptcha.ready()`\r\n // is called before reCAPTCHA is loaded, the callback function that is passed\r\n // by `grecaptcha.ready()` is enqueued for execution after reCAPTCHA is loaded.\r\n\r\n if (typeof window.grecaptcha === 'undefined') {\r\n const c = '___grecaptcha_cfg';\r\n const error = () => { if (typeof grecaptcha.render === 'undefined') throw 'Recaptcha load failure' };\r\n const errorCheck = () => document.readyState !== 'complete' ? window.addEventListener('load', error) : error();\r\n\r\n window.grecaptcha = {};\r\n\r\n grecaptcha.ready = function(cb){\r\n if (typeof grecaptcha.render === 'undefined') {\r\n // window.__grecaptcha_cfg is a global variable that stores reCAPTCHA's\r\n // configuration. By default, any functions listed in its 'fns' property\r\n // are automatically executed when reCAPTCHA loads.\r\n window[c] = window[c] || {};\r\n (window[c]['fns'] = window[c]['fns']||[]).push(cb);\r\n\r\n errorCheck();\r\n } else {\r\n cb();\r\n }\r\n }\r\n // Required to be the first command to recaptcha in the 'fns' array\r\n grecaptcha.ready(function(){\r\n window.grecaptcha?.render(\"container\", {\r\n sitekey: window.CachedData.sitePreferences.recaptchaSiteKey\r\n });\r\n });\r\n }\r\n}\r\n\r\nfunction check(e, next) {\r\n var defer = $.Deferred();\r\n\r\n // Rejected or Resolved trigger ajax to trigger success, error, complete\r\n defer.always((args) => {\r\n var $xhr = args && $.ajax(args);\r\n\r\n defer.notify($xhr);\r\n\r\n return $xhr;\r\n });\r\n\r\n if (!!window.CachedData.sitePreferences.enableRecaptcha) {\r\n module.exports.validateRecaptcha();\r\n\r\n if (window.grecaptcha?.ready) {\r\n grecaptcha.ready(function() {\r\n module.exports.recaptchaPromise(e, next).then(function (args) {\r\n // success\r\n return defer.state() !== 'resolved' && defer.resolve(args); // with native beforeSend\r\n }, function (args) {\r\n // override beforeSend to kill the ajax send and allow error fn to trigger\r\n args.beforeSend = () => false;\r\n return defer.state() !== 'rejected' && defer.reject(args);\r\n });\r\n });\r\n } else {\r\n // Fail as Recaptcha is unavailable\r\n defer.reject(next);\r\n }\r\n } else {\r\n // Fall through to AJAX method\r\n defer.resolve(next);\r\n }\r\n\r\n return defer;\r\n}\r\n\r\nmodule.exports = {\r\n check: check,\r\n recaptchaPromise: recaptchaPromise,\r\n validateRecaptcha: validateRecaptcha\r\n}\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n setTabNextFocus: function (focusParams) {\r\n var KEYCODE_TAB = 9;\r\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\r\n\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n\r\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\r\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\r\n\r\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\r\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\r\n if ($('.product-quickview.product-set').length > 0) {\r\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\r\n lastFocusableEl = linkElements[linkElements.length - 1];\r\n }\r\n }\r\n\r\n if (focusParams.event.shiftKey) /* shift + tab */ {\r\n if ($(':focus').is(firstFocusableEl)) {\r\n lastFocusableEl.focus();\r\n focusParams.event.preventDefault();\r\n }\r\n } else /* tab */ {\r\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\r\n firstFocusableEl.focus();\r\n focusParams.event.preventDefault();\r\n }\r\n }\r\n }\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Remove all validation. Should be called every time before revalidating form\r\n * @param {element} form - Form to be cleared\r\n * @returns {void}\r\n */\r\nfunction clearFormErrors(form) {\r\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\r\n}\r\n\r\nmodule.exports = function (formElement, payload) {\r\n // clear form validation first\r\n clearFormErrors(formElement);\r\n $('.alert', formElement).remove();\r\n\r\n if (typeof payload === 'object' && payload.fields) {\r\n Object.keys(payload.fields).forEach(function (key) {\r\n if (payload.fields[key]) {\r\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\r\n .parent()\r\n .children('.invalid-feedback');\r\n\r\n if (feedbackElement.length > 0) {\r\n if (Array.isArray(payload[key])) {\r\n feedbackElement.html(payload.fields[key].join('
'));\r\n } else {\r\n feedbackElement.html(payload.fields[key]);\r\n }\r\n feedbackElement.siblings('.form-control').addClass('is-invalid');\r\n }\r\n }\r\n });\r\n }\r\n if (payload && payload.error) {\r\n var form = $(formElement).prop('tagName') === 'FORM'\r\n ? $(formElement)\r\n : $(formElement).parents('form');\r\n\r\n form.prepend('
'\r\n + payload.error.join('
') + '
');\r\n }\r\n};\r\n","'use strict';\r\n\r\nvar focusHelper = require('../components/focus');\r\n\r\nvar location = window.location;\r\n\r\n/**\r\n * Retrieves the relevant pid value\r\n * @param {jquery} $el - DOM container for a given add to cart button\r\n * @return {string} - value to be used when adding product to cart\r\n */\r\nfunction getPidValue($el) {\r\n var pid;\r\n\r\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\r\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\r\n } else if ($('.product-set-detail').length || $('.product-set').length) {\r\n pid = $($el).closest('.product-detail').find('.product-id').text();\r\n } else {\r\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\r\n }\r\n\r\n return pid;\r\n}\r\n\r\n/**\r\n * Retrieve contextual quantity selector\r\n * @param {jquery} $el - DOM container for the relevant quantity\r\n * @return {jquery} - quantity selector DOM container\r\n */\r\nfunction getQuantitySelector($el) {\r\n var quantitySelected;\r\n if ($el && $('.set-items').length) {\r\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\r\n } else if ($el && $('.product-bundle').length) {\r\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\r\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\r\n if (quantitySelectedModal.val() === undefined) {\r\n quantitySelected = quantitySelectedPDP;\r\n } else {\r\n quantitySelected = quantitySelectedModal;\r\n }\r\n } else {\r\n quantitySelected = $('.quantity-select');\r\n }\r\n return quantitySelected;\r\n}\r\n\r\n/**\r\n * Retrieves the value associated with the Quantity pull-down menu\r\n * @param {jquery} $el - DOM container for the relevant quantity\r\n * @return {string} - value found in the quantity input\r\n */\r\nfunction getQuantitySelected($el) {\r\n return getQuantitySelector($el).val();\r\n}\r\n\r\n/**\r\n * Process the attribute values for an attribute that has image swatches\r\n *\r\n * @param {Object} attr - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {Object[]} attr.values - Array of attribute value objects\r\n * @param {string} attr.values.value - Attribute coded value\r\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\r\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\r\n * selected. If there is no variant that corresponds to a specific combination of attribute\r\n * values, an attribute may be disabled in the Product Detail Page\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n * @param {Object} msgs - object containing resource messages\r\n */\r\nfunction processSwatchValues(attr, $productContainer, msgs) {\r\n attr.values.forEach(function (attrValue) {\r\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"'\r\n + attrValue.value + '\"]');\r\n var $swatchButton = $attrValue.parent();\r\n\r\n if (attrValue.selected) {\r\n $attrValue.addClass('selected');\r\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\r\n } else {\r\n $attrValue.removeClass('selected');\r\n $attrValue.siblings('.selected-assistive-text').empty();\r\n }\r\n\r\n if (attrValue.url) {\r\n $swatchButton.attr('data-url', attrValue.url);\r\n } else {\r\n $swatchButton.removeAttr('data-url');\r\n }\r\n\r\n // Disable if not selectable\r\n $attrValue.removeClass('selectable unselectable');\r\n\r\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\r\n });\r\n}\r\n\r\n/**\r\n * Process attribute values associated with an attribute that does not have image swatches\r\n *\r\n * @param {Object} attr - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {Object[]} attr.values - Array of attribute value objects\r\n * @param {string} attr.values.value - Attribute coded value\r\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\r\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\r\n * selected. If there is no variant that corresponds to a specific combination of attribute\r\n * values, an attribute may be disabled in the Product Detail Page\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n */\r\nfunction processNonSwatchValues(attr, $productContainer) {\r\n var $attr = '[data-attr=\"' + attr.id + '\"]';\r\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\r\n $defaultOption.attr('value', attr.resetUrl);\r\n\r\n attr.values.forEach(function (attrValue) {\r\n var $attrValue = $productContainer\r\n .find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\r\n $attrValue.attr('value', attrValue.url)\r\n .removeAttr('disabled');\r\n\r\n if (!attrValue.selectable) {\r\n $attrValue.attr('disabled', true);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Routes the handling of attribute processing depending on whether the attribute has image\r\n * swatches or not\r\n *\r\n * @param {Object} attrs - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n * @param {Object} msgs - object containing resource messages\r\n */\r\nfunction updateAttrs(attrs, $productContainer, msgs) {\r\n // Currently, the only attribute type that has image swatches is Color.\r\n var attrsWithSwatches = ['color'];\r\n\r\n attrs.forEach(function (attr) {\r\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\r\n processSwatchValues(attr, $productContainer, msgs);\r\n } else {\r\n processNonSwatchValues(attr, $productContainer);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the availability status in the Product Detail Page\r\n *\r\n * @param {Object} response - Ajax response object after an\r\n * attribute value has been [de]selected\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n */\r\nfunction updateAvailability(response, $productContainer) {\r\n var availabilityValue = '';\r\n var availabilityMessages = response.product.availability.messages;\r\n if (!response.product.readyToOrder) {\r\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\r\n } else {\r\n availabilityMessages.forEach(function (message) {\r\n availabilityValue += '
  • ' + message + '
  • ';\r\n });\r\n }\r\n\r\n $($productContainer).trigger('product:updateAvailability', {\r\n product: response.product,\r\n $productContainer: $productContainer,\r\n message: availabilityValue,\r\n resources: response.resources\r\n });\r\n}\r\n\r\n/**\r\n * Generates html for product attributes section\r\n *\r\n * @param {array} attributes - list of attributes\r\n * @return {string} - Compiled HTML\r\n */\r\nfunction getAttributesHtml(attributes) {\r\n if (!attributes) {\r\n return '';\r\n }\r\n\r\n var html = '';\r\n\r\n attributes.forEach(function (attributeGroup) {\r\n if (attributeGroup.ID === 'mainAttributes') {\r\n attributeGroup.attributes.forEach(function (attribute) {\r\n html += '
    ' + attribute.label + ': '\r\n + attribute.value + '
    ';\r\n });\r\n }\r\n });\r\n\r\n return html;\r\n}\r\n\r\n/**\r\n * @typedef UpdatedOptionValue\r\n * @type Object\r\n * @property {string} id - Option value ID for look up\r\n * @property {string} url - Updated option value selection URL\r\n */\r\n\r\n/**\r\n * @typedef OptionSelectionResponse\r\n * @type Object\r\n * @property {string} priceHtml - Updated price HTML code\r\n * @property {Object} options - Updated Options\r\n * @property {string} options.id - Option ID\r\n * @property {UpdatedOptionValue[]} options.values - Option values\r\n */\r\n\r\n/**\r\n * Updates DOM using post-option selection Ajax response\r\n *\r\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n */\r\nfunction updateOptions(optionsHtml, $productContainer) {\r\n // Update options\r\n $productContainer.find('.product-options').empty().html(optionsHtml);\r\n}\r\n\r\n/**\r\n * Dynamically creates Bootstrap carousel from response containing images\r\n * @param {Object[]} imgs - Array of large product images,along with related information\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n */\r\nfunction createCarousel(imgs, $productContainer) {\r\n var carousel = $productContainer.find('.carousel');\r\n $(carousel).carousel('dispose');\r\n var carouselId = $(carousel).attr('id');\r\n $(carousel).empty().append('
      ' + $(carousel).data('prev') + '' + $(carousel).data('next') + '');\r\n for (var i = 0; i < imgs.length; i++) {\r\n $('
      \"'
      ').appendTo($(carousel).find('.carousel-inner'));\r\n $('
    1. ').appendTo($(carousel).find('.carousel-indicators'));\r\n }\r\n $($(carousel).find('.carousel-item')).first().addClass('active');\r\n $($(carousel).find('.carousel-indicators > li')).first().addClass('active');\r\n if (imgs.length === 1) {\r\n $($(carousel).find('.carousel-indicators, a[class^=\"carousel-control-\"]')).detach();\r\n }\r\n $(carousel).carousel();\r\n $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true);\r\n}\r\n\r\n/**\r\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\r\n * @param {Object} response - response from Ajax call\r\n * @param {Object} response.product - Product object\r\n * @param {string} response.product.id - Product ID\r\n * @param {Object[]} response.product.variationAttributes - Product attributes\r\n * @param {Object[]} response.product.images - Product images\r\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\r\n * attributes have been selected. Used partially to\r\n * determine whether the Add to Cart button can be enabled\r\n * @param {jQuery} $productContainer - DOM element for a given product.\r\n */\r\nfunction handleVariantResponse(response, $productContainer) {\r\n var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;\r\n var isVaraint;\r\n if (response.product.variationAttributes) {\r\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\r\n isVaraint = response.product.productType === 'variant';\r\n if (isChoiceOfBonusProducts && isVaraint) {\r\n $productContainer.parent('.bonus-product-item')\r\n .data('pid', response.product.id);\r\n\r\n $productContainer.parent('.bonus-product-item')\r\n .data('ready-to-order', response.product.readyToOrder);\r\n }\r\n }\r\n\r\n // Update primary images\r\n var primaryImageUrls = response.product.images.large;\r\n createCarousel(primaryImageUrls, $productContainer);\r\n\r\n // Update pricing\r\n if (!isChoiceOfBonusProducts) {\r\n var $priceSelector = $('.prices .price', $productContainer).length\r\n ? $('.prices .price', $productContainer)\r\n : $('.prices .price');\r\n $priceSelector.replaceWith(response.product.price.html);\r\n }\r\n\r\n // Update promotions\r\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\r\n\r\n updateAvailability(response, $productContainer);\r\n\r\n if (isChoiceOfBonusProducts) {\r\n var $selectButton = $productContainer.find('.select-bonus-product');\r\n $selectButton.trigger('bonusproduct:updateSelectButton', {\r\n product: response.product, $productContainer: $productContainer\r\n });\r\n } else {\r\n // Enable \"Add to Cart\" button if all required attributes have been selected\r\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\r\n product: response.product, $productContainer: $productContainer\r\n }).trigger('product:statusUpdate', response.product);\r\n }\r\n\r\n // Update attributes\r\n $productContainer.find('.main-attributes').empty()\r\n .html(getAttributesHtml(response.product.attributes));\r\n}\r\n\r\n/**\r\n * @typespec UpdatedQuantity\r\n * @type Object\r\n * @property {boolean} selected - Whether the quantity has been selected\r\n * @property {string} value - The number of products to purchase\r\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\r\n * etc.\r\n */\r\n\r\n/**\r\n * Updates the quantity DOM elements post Ajax call\r\n * @param {UpdatedQuantity[]} quantities -\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n */\r\nfunction updateQuantities(quantities, $productContainer) {\r\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\r\n var optionsHtml = quantities.map(function (quantity) {\r\n var selected = quantity.selected ? ' selected ' : '';\r\n return '';\r\n }).join('');\r\n getQuantitySelector($productContainer).empty().html(optionsHtml);\r\n }\r\n}\r\n\r\n/**\r\n * updates the product view when a product attribute is selected or deselected or when\r\n * changing quantity\r\n * @param {string} selectedValueUrl - the Url for the selected variation value\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n */\r\nfunction attributeSelect(selectedValueUrl, $productContainer) {\r\n if (selectedValueUrl) {\r\n $('body').trigger(\r\n 'product:beforeAttributeSelect',\r\n { url: selectedValueUrl, container: $productContainer }\r\n );\r\n\r\n $.ajax({\r\n url: selectedValueUrl,\r\n method: 'GET',\r\n success: function (data) {\r\n handleVariantResponse(data, $productContainer);\r\n updateOptions(data.product.optionsHtml, $productContainer);\r\n updateQuantities(data.product.quantities, $productContainer);\r\n $('body').trigger(\r\n 'product:afterAttributeSelect',\r\n { data: data, container: $productContainer }\r\n );\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Retrieves url to use when adding a product to the cart\r\n *\r\n * @return {string} - The provided URL to use when adding a product to the cart\r\n */\r\nfunction getAddToCartUrl() {\r\n return $('.add-to-cart-url').val();\r\n}\r\n\r\n/**\r\n * Parses the html for a modal window\r\n * @param {string} html - representing the body and footer of the modal window\r\n *\r\n * @return {Object} - Object with properties body and footer.\r\n */\r\nfunction parseHtml(html) {\r\n var $html = $('
      ').append($.parseHTML(html));\r\n\r\n var body = $html.find('.choice-of-bonus-product');\r\n var footer = $html.find('.modal-footer').children();\r\n\r\n return { body: body, footer: footer };\r\n}\r\n\r\n/**\r\n * Retrieves url to use when adding a product to the cart\r\n *\r\n * @param {Object} data - data object used to fill in dynamic portions of the html\r\n */\r\nfunction chooseBonusProducts(data) {\r\n $('.modal-body').spinner().start();\r\n\r\n if ($('#chooseBonusProductModal').length !== 0) {\r\n $('#chooseBonusProductModal').remove();\r\n }\r\n var bonusUrl;\r\n if (data.bonusChoiceRuleBased) {\r\n bonusUrl = data.showProductsUrlRuleBased;\r\n } else {\r\n bonusUrl = data.showProductsUrlListBased;\r\n }\r\n\r\n var htmlString = ''\r\n + '
      '\r\n + ''\r\n + '
      '\r\n + ''\r\n + '
      '\r\n + '
      '\r\n + ' ' + data.labels.selectprods + ''\r\n + ' '\r\n + '
      '\r\n + '
      '\r\n + '
      '\r\n + '
      '\r\n + '
      '\r\n + '
      ';\r\n $('body').append(htmlString);\r\n $('.modal-body').spinner().start();\r\n\r\n $.ajax({\r\n url: bonusUrl,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function (response) {\r\n var parsedHtml = parseHtml(response.renderedTemplate);\r\n $('#chooseBonusProductModal .modal-body').empty();\r\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\r\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\r\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\r\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\r\n $('#chooseBonusProductModal').modal('show');\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\r\n * @param {string} response - ajax response from clicking the add to cart button\r\n */\r\nfunction handlePostCartAdd(response) {\r\n $('.minicart').trigger('count:update', response);\r\n var messageType = response.error ? 'alert-danger' : 'alert-success';\r\n // show add to cart toast\r\n if (response.newBonusDiscountLineItem\r\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\r\n chooseBonusProducts(response.newBonusDiscountLineItem);\r\n } else {\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append(\r\n '
      '\r\n );\r\n }\r\n\r\n $('.add-to-cart-messages').append(\r\n '
      '\r\n + response.message\r\n + '
      '\r\n );\r\n\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n }, 5000);\r\n }\r\n}\r\n\r\n/**\r\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\r\n * items with their selected variants\r\n *\r\n * @return {string[]} - List of selected bundle product item ID's\r\n */\r\nfunction getChildProducts() {\r\n var childProducts = [];\r\n $('.bundle-item').each(function () {\r\n childProducts.push({\r\n pid: $(this).find('.product-id').text(),\r\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\r\n });\r\n });\r\n\r\n return childProducts.length ? JSON.stringify(childProducts) : [];\r\n}\r\n\r\n/**\r\n * Retrieve product options\r\n *\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n * @return {string} - Product options and their selected values\r\n */\r\nfunction getOptions($productContainer) {\r\n var options = $productContainer\r\n .find('.product-option')\r\n .map(function () {\r\n var $elOption = $(this).find('.options-select');\r\n var urlValue = $elOption.val();\r\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\r\n .data('value-id');\r\n return {\r\n optionId: $(this).data('option-id'),\r\n selectedValueId: selectedValueId\r\n };\r\n }).toArray();\r\n\r\n return JSON.stringify(options);\r\n}\r\n\r\n/**\r\n * Makes a call to the server to report the event of adding an item to the cart\r\n *\r\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\r\n */\r\nfunction miniCartReportingUrl(url) {\r\n if (url) {\r\n $.ajax({\r\n url: url,\r\n method: 'GET',\r\n success: function () {\r\n // reporting urls hit on the server\r\n },\r\n error: function () {\r\n // no reporting urls hit on the server\r\n }\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n attributeSelect: attributeSelect,\r\n methods: {\r\n editBonusProducts: function (data) {\r\n chooseBonusProducts(data);\r\n }\r\n },\r\n\r\n focusChooseBonusProductModal: function () {\r\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\r\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\r\n $('#chooseBonusProductModal .close').focus();\r\n });\r\n },\r\n\r\n onClosingChooseBonusProductModal: function () {\r\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\r\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\r\n });\r\n },\r\n\r\n trapChooseBonusProductModalFocus: function () {\r\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\r\n var focusParams = {\r\n event: e,\r\n containerSelector: '#chooseBonusProductModal',\r\n firstElementSelector: '.close',\r\n lastElementSelector: '.add-bonus-products'\r\n };\r\n focusHelper.setTabNextFocus(focusParams);\r\n });\r\n },\r\n\r\n colorAttribute: function () {\r\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\r\n e.preventDefault();\r\n\r\n if ($(this).attr('disabled')) {\r\n return;\r\n }\r\n var $productContainer = $(this).closest('.set-item');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.product-detail');\r\n }\r\n\r\n attributeSelect($(this).attr('data-url'), $productContainer);\r\n });\r\n },\r\n\r\n selectAttribute: function () {\r\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\r\n e.preventDefault();\r\n\r\n var $productContainer = $(this).closest('.set-item');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.product-detail');\r\n }\r\n attributeSelect(e.currentTarget.value, $productContainer);\r\n });\r\n },\r\n\r\n availability: function () {\r\n $(document).on('change', '.quantity-select', function (e) {\r\n e.preventDefault();\r\n\r\n var $productContainer = $(this).closest('.product-detail');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\r\n }\r\n\r\n if ($('.bundle-items', $productContainer).length === 0) {\r\n attributeSelect(\r\n $(e.currentTarget).find('option:selected').data('url'),\r\n $productContainer\r\n );\r\n }\r\n });\r\n },\r\n\r\n addToCart: function () {\r\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\r\n var addToCartUrl;\r\n var pid;\r\n var pidsObj;\r\n var setPids;\r\n\r\n $('body').trigger('product:beforeAddToCart', this);\r\n\r\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\r\n setPids = [];\r\n\r\n $('.product-detail').each(function () {\r\n if (!$(this).hasClass('product-set-detail')) {\r\n setPids.push({\r\n pid: $(this).find('.product-id').text(),\r\n qty: $(this).find('.quantity-select').val(),\r\n options: getOptions($(this))\r\n });\r\n }\r\n });\r\n pidsObj = JSON.stringify(setPids);\r\n }\r\n\r\n pid = getPidValue($(this));\r\n\r\n var $productContainer = $(this).closest('.product-detail');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\r\n }\r\n\r\n addToCartUrl = getAddToCartUrl();\r\n\r\n var form = {\r\n pid: pid,\r\n pidsObj: pidsObj,\r\n childProducts: getChildProducts(),\r\n quantity: getQuantitySelected($(this))\r\n };\r\n\r\n if (!$('.bundle-item').length) {\r\n form.options = getOptions($productContainer);\r\n }\r\n\r\n $(this).trigger('updateAddToCartFormData', form);\r\n if (addToCartUrl) {\r\n $.ajax({\r\n url: addToCartUrl,\r\n method: 'POST',\r\n data: form,\r\n success: function (data) {\r\n handlePostCartAdd(data);\r\n $('body').trigger('product:afterAddToCart', data);\r\n $.spinner().stop();\r\n miniCartReportingUrl(data.reportingURL);\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n }\r\n });\r\n },\r\n selectBonusProduct: function () {\r\n $(document).on('click', '.select-bonus-product', function () {\r\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\r\n var pid = $(this).data('pid');\r\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\r\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\r\n var totalQty = 0;\r\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\r\n totalQty += $(this).data('qty');\r\n });\r\n totalQty += submittedQty;\r\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\r\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\r\n if (totalQty <= maxPids) {\r\n var selectedBonusProductHtml = ''\r\n + '
      '\r\n + '
      '\r\n + $choiceOfBonusProduct.find('.product-name').html()\r\n + '
      '\r\n + '
      '\r\n + '
      ';\r\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\r\n $('.pre-cart-products').html(totalQty);\r\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\r\n } else {\r\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\r\n }\r\n });\r\n },\r\n removeBonusProduct: function () {\r\n $(document).on('click', '.selected-pid', function () {\r\n $(this).remove();\r\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\r\n var count = 0;\r\n if ($selected.length) {\r\n $selected.each(function () {\r\n count += parseInt($(this).data('qty'), 10);\r\n });\r\n }\r\n\r\n $('.pre-cart-products').html(count);\r\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\r\n });\r\n },\r\n enableBonusProductSelection: function () {\r\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\r\n $('button.select-bonus-product', response.$productContainer).attr(\r\n 'disabled',\r\n (!response.product.readyToOrder || !response.product.available)\r\n );\r\n var pid = response.product.id;\r\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\r\n });\r\n },\r\n showMoreBonusProducts: function () {\r\n $(document).on('click', '.show-more-bonus-products', function () {\r\n var url = $(this).data('url');\r\n $('.modal-content').spinner().start();\r\n $.ajax({\r\n url: url,\r\n method: 'GET',\r\n success: function (html) {\r\n var parsedHtml = parseHtml(html);\r\n $('.modal-body').append(parsedHtml.body);\r\n $('.show-more-bonus-products:first').remove();\r\n $('.modal-content').spinner().stop();\r\n },\r\n error: function () {\r\n $('.modal-content').spinner().stop();\r\n }\r\n });\r\n });\r\n },\r\n addBonusProductsToCart: function () {\r\n $(document).on('click', '.add-bonus-products', function () {\r\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\r\n var queryString = '?pids=';\r\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\r\n var pidsObject = {\r\n bonusProducts: []\r\n };\r\n\r\n $.each($readyToOrderBonusProducts, function () {\r\n var qtyOption = parseInt($(this)\r\n .data('qty'), 10);\r\n\r\n var option = null;\r\n if (qtyOption > 0) {\r\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\r\n option = {};\r\n option.optionId = $(this).data('optionid');\r\n option.productId = $(this).data('pid');\r\n option.selectedValueId = $(this).data('option-selected-value');\r\n }\r\n pidsObject.bonusProducts.push({\r\n pid: $(this).data('pid'),\r\n qty: qtyOption,\r\n options: [option]\r\n });\r\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\r\n }\r\n });\r\n queryString += JSON.stringify(pidsObject);\r\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\r\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\r\n $.spinner().start();\r\n $.ajax({\r\n url: url + queryString,\r\n method: 'POST',\r\n success: function (data) {\r\n $.spinner().stop();\r\n if (data.error) {\r\n $('#chooseBonusProductModal').modal('hide');\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append('
      ');\r\n }\r\n $('.add-to-cart-messages').append(\r\n '
      '\r\n + data.errorMessage + '
      '\r\n );\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n }, 3000);\r\n } else {\r\n $('.configure-bonus-product-attributes').html(data);\r\n $('.bonus-products-step2').removeClass('hidden-xl-down');\r\n $('#chooseBonusProductModal').modal('hide');\r\n\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append('
      ');\r\n }\r\n $('.minicart-quantity').html(data.totalQty);\r\n $('.add-to-cart-messages').append(\r\n '
      '\r\n + data.msgSuccess + '
      '\r\n );\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n if ($('.cart-page').length) {\r\n location.reload();\r\n }\r\n }, 1500);\r\n }\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n });\r\n },\r\n\r\n getPidValue: getPidValue,\r\n getQuantitySelected: getQuantitySelected,\r\n miniCartReportingUrl: miniCartReportingUrl\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Alert handler model\r\n */\r\nclass AlertHandlerModel {\r\n constructor() {\r\n this.$flashMessagesContainer = document.querySelector('.js-flash-messages-container');\r\n this.$alertTemplate = document.querySelector('.js-alert-template');\r\n }\r\n\r\n /**\r\n * Creates an alert message\r\n * @param {string} alertMessage alert message\r\n * @param {string} alertType alert type, i.e. danger, warning, info etc\r\n */\r\n createAlertMessage(alertMessage, alertType) {\r\n const $alertContainer = this.$alertTemplate.cloneNode(true);\r\n\r\n $alertContainer.classList.add(`alert-${alertType}`, 'show');\r\n $alertContainer.classList.remove('d-none');\r\n\r\n $alertContainer.append(alertMessage);\r\n this.$flashMessagesContainer.append($alertContainer);\r\n }\r\n\r\n /**\r\n * ---- General method which should be used for cases when error came from Braintree ----\r\n * Shows an error notification by message\r\n * @param {string} errorMessage message to display inside error notification\r\n */\r\n showError(errorMessage) {\r\n this.createAlertMessage(errorMessage, window.braintreeConstants.FLASH_MESSAGE_DANGER);\r\n }\r\n\r\n /**\r\n * ---- General method which should be used for cases when error came from Braintree ----\r\n * Shows an error notification by error Object from BT\r\n * NOTE this.alertMessages come from a child class that has alertMessages as an argument\r\n * @param {Object} error error object from BT\r\n * @param {Object} errorMessages object with error messages\r\n */\r\n showBraintreeError(error, errorMessages) {\r\n const message = error.message;\r\n const errorCode = error.code;\r\n const alertMessages = errorMessages || this.alertMessages;\r\n const errorMessage = alertMessages[errorCode] || message || alertMessages.CLIENT_GATEWAY_NETWORK;\r\n\r\n this.showError(errorMessage);\r\n }\r\n\r\n /**\r\n * Shows a warning message\r\n * @param {string} warningMessage warning message\r\n */\r\n showWarning(warningMessage) {\r\n this.createAlertMessage(warningMessage, window.braintreeConstants.FLASH_MESSAGE_WARNING);\r\n }\r\n\r\n /**\r\n * Shows a warning message\r\n * @param {string} infoMessage warning message\r\n */\r\n showInfo(infoMessage) {\r\n this.createAlertMessage(infoMessage, window.braintreeConstants.FLASH_MESSAGE_INFO);\r\n }\r\n\r\n /**\r\n * Hides alert messages that are created by AlertHandler model\r\n */\r\n hideAlerts() {\r\n const $alertContainers = document.querySelectorAll('.js-alert-template');\r\n\r\n $alertContainers.forEach((element) => element.classList.add('d-none'));\r\n }\r\n\r\n /**\r\n * Hides alert messages that are created by FlashMessages controller\r\n */\r\n hideControllerCreatedAlerts() {\r\n const $alertContainers = document.querySelectorAll('.js-alert-dismissible');\r\n\r\n $alertContainers.forEach((element) => element.classList.add('d-none'));\r\n }\r\n}\r\n\r\nmodule.exports = AlertHandlerModel;\r\n","'use strict';\r\n\r\n/**\r\n * Inits APMA functionality\r\n */\r\nfunction init() {\r\n const payPalBusinessLogic = require('./paypal/payPal');\r\n const paymentMethodGeneral = require('./paymentMethodGeneral');\r\n\r\n payPalBusinessLogic.init(paymentMethodGeneral.createGeneralClientInstancePromise());\r\n payPalBusinessLogic.initAPMA(paymentMethodGeneral.createGeneralClientInstancePromise());\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\n\r\n/**\r\n * ApplePay alert handler model\r\n */\r\nclass ApplePayAlertHandlerModel extends AlertHandlerModel {\r\n constructor(alertMessages) {\r\n super();\r\n this.alertMessages = alertMessages;\r\n }\r\n\r\n /**\r\n * Handles an error by type\r\n * @param {Object} error Error object or error message\r\n */\r\n handleApplePayError(error) {\r\n if (error.name === 'BraintreeError') {\r\n this.showBraintreeError(error);\r\n } else {\r\n this.showError(error.message);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = ApplePayAlertHandlerModel;\r\n","'use strict';\r\n\r\nconst braintreeApplePayModelBuilder = require('./braintreesdk/braintreeApplePayModelBuilder');\r\nconst applePayPaymentProcessing = require('./components/applePayPaymentProcessing');\r\nconst applePayErrorMessages = require('./constants/errorMessages');\r\n\r\nconst AlertHandlerModel = require('./alerthandler/applePayAlertHandlerModel');\r\n\r\nlet braintreeApplePayModelResponse;\r\nlet applePayMessages;\r\n\r\n/**\r\n * Inits Apple Pay payment processing on Cart/Checkout Page\r\n */\r\nfunction initApplePay() {\r\n const alertHandler = new AlertHandlerModel(applePayMessages);\r\n\r\n if (!braintreeApplePayModelResponse || braintreeApplePayModelResponse.error) {\r\n const error = braintreeApplePayModelResponse.error || applePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\r\n\r\n alertHandler.handleApplePayError(error);\r\n }\r\n\r\n applePayPaymentProcessing.init(braintreeApplePayModelResponse.btApplePayModel,\r\n alertHandler);\r\n}\r\n\r\n/**\r\n * Inits Apple Pay on the Cart/Billing-Checkout Pages\r\n */\r\nfunction init() {\r\n braintreeApplePayModelResponse = braintreeApplePayModelBuilder.init();\r\n\r\n if (!braintreeApplePayModelResponse.error) {\r\n applePayMessages = braintreeApplePayModelResponse.btApplePayConfigs.messages;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n initApplePay\r\n};\r\n","'use strict';\r\n\r\n/* global Promise braintree $ */\r\n\r\nconst applePayErrorMessages = require('../constants/errorMessages');\r\n\r\nconst braintreeApplePaySDK = require('./braintreeApplePaySDK');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst helper = require('../../helper');\r\n\r\n// Global variables\r\n// Is Froud tools enabled\r\nlet isFtEnabled;\r\nlet btClientInstancePromise;\r\nlet apInstance;\r\nlet amount;\r\nlet shippingOptions;\r\nlet fromContactSelect;\r\nlet fromInit;\r\nlet fromErrorState;\r\n\r\n/**\r\n * Init braintree Apple Pay model\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\r\n */\r\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\r\n braintreeApplePaySDK.init(braintreeClientInstancePromise);\r\n\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n isFtEnabled = isFraudToolsEnabled;\r\n}\r\n\r\n/**\r\n * Returns fraud data from dataCollector payload\r\n * @returns {Object} Payload with fraud data\r\n */\r\nfunction collectFraudData() {\r\n let response;\r\n\r\n if (isFtEnabled) {\r\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\r\n } else {\r\n response = Promise.resolve({\r\n customMessage: applePayErrorMessages.FRAUD_DATA_CELLECTION_ISNOT_ENABLED\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Preparing Apple Pay payment\r\n * @param {Object} ApplePaySession Apple Pay session\r\n * @returns {Promise} Promise with 'canMakePayments' boolean value\r\n */\r\nfunction initApplePay(ApplePaySession) {\r\n return braintreeApplePaySDK.createApplePayPayment()\r\n .then(function(applePayInstance) {\r\n apInstance = applePayInstance;\r\n\r\n return ApplePaySession.canMakePaymentsWithActiveCard(applePayInstance.merchantIdentifier);\r\n });\r\n}\r\n\r\n/**\r\n * Merges a payment request with Braintree defaults to return an {external:ApplePayPaymentRequest}\r\n * @param {Object} applePayConfigs Apple Pay config object\r\n * @returns {Object} Payment request object\r\n */\r\nfunction createPaymentDataRequest(applePayConfigs) {\r\n return braintreeApplePaySDK.createPaymentDataRequest(apInstance, applePayConfigs, amount);\r\n}\r\n\r\n/**\r\n * Validates merchant website, as required by ApplePaySession before payment can be authorized\r\n * @param {Object} sessionEvent Apple Pay session event\r\n * @param {Object} applePayConfigs Apple Pay config object\r\n * @returns {Promise} Promise with merchant session\r\n */\r\nfunction onValidateMerchant(sessionEvent, applePayConfigs) {\r\n return braintreeApplePaySDK.performValidation(apInstance, sessionEvent, applePayConfigs);\r\n}\r\n\r\n/**\r\n * Tokenizes an Apple Pay payment\r\n * @param {Object} sessionEvent Apple Pay session event\r\n * @returns {Promise} Promise with tokenized payload\r\n */\r\nfunction onPaymentAuthorized(sessionEvent) {\r\n return braintreeApplePaySDK.tokenize(apInstance, sessionEvent);\r\n}\r\n\r\n/**\r\n * TCS CUSTOM: Heavily customized to work with the unique TCS shipping method\r\n * data setup and to fix issues with Braintree and Apple Pay update logic\r\n * Adds shipping methods based on the address\r\n * @param {Object} sessionEvent Apple Pay session event\r\n * @param {Object} applePayConfigs Apple Pay config object\r\n * @returns {Promise} Promise with applicable shipping options\r\n */\r\nasync function onShippingContactSelected(sessionEvent, applePayConfigs) {\r\n const shippingAddress = sessionEvent.shippingContact;\r\n const city = shippingAddress.locality;\r\n const stateCode = shippingAddress.administrativeArea;\r\n const countryCode = shippingAddress.countryCode;\r\n const postalCode = shippingAddress.postalCode;\r\n const addressQueryString = `city=${city}&stateCode=${stateCode}&countryCode=${countryCode}&postalCode=${postalCode}`;\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\r\n\r\n let shippingOptionsData = await helper.getApplicableShippingOptions(url);\r\n\r\n shippingOptions = shippingOptionsData.applicableShippingMethods;\r\n let stateExclusion = shippingOptionsData.stateExclusion;\r\n let updateData = {};\r\n\r\n if (shippingOptions.length === 0 || stateExclusion) {\r\n // TCS CUSTOM: Adds in custom ApplePayError message for when no shipping methods are returned or there are State Exclusions\r\n fromErrorState = true;\r\n // eslint-disable-next-line max-len\r\n const zipAppleError = new ApplePayError('addressUnserviceable', 'administrativeArea', 'One or more items are unable to ship to the selected state');\r\n\r\n updateData = {\r\n newTotal: {\r\n label: 'error',\r\n amount: '1',\r\n type: 'pending'\r\n },\r\n errors: [zipAppleError],\r\n newShippingMethods: []\r\n };\r\n\r\n return updateData;\r\n } else {\r\n var newLineData = [];\r\n\r\n if (shippingOptions && shippingOptions[0]) {\r\n shippingOptions[0].selected = true;\r\n newLineData = [{\r\n label: shippingOptions[0].label,\r\n amount: shippingOptions[0].amount\r\n }];\r\n }\r\n\r\n let contactAmount = amount;\r\n\r\n if (fromInit && fromErrorState && shippingOptions && shippingOptions[0]) {\r\n contactAmount = await helper.updateAmountForShippingOption(shippingOptions[0].identifier);\r\n } else if (fromInit && !fromErrorState && shippingOptions && shippingOptions[0]) {\r\n contactAmount = await helper.updateAmountForShippingOption(shippingOptions[0].identifier);\r\n } else {\r\n contactAmount = amount;\r\n }\r\n\r\n updateData = {\r\n status: ApplePaySession.STATUS_SUCCESS,\r\n newTotal: {\r\n label: applePayConfigs.options.displayName,\r\n amount: contactAmount\r\n },\r\n newLineItems: newLineData,\r\n newShippingMethods: shippingOptions\r\n };\r\n\r\n fromErrorState = false;\r\n }\r\n\r\n fromContactSelect = !fromInit;\r\n fromInit = false;\r\n\r\n return updateData;\r\n}\r\n\r\n/**\r\n * TCS CUSTOM: Customized to fix errors with Braintree and Apple Pay\r\n * shipping method selection being out of sync with the actual selection\r\n * in certain use cases like changing contacts or re-opening the modal\r\n * Updates price based on a selected shipping method\r\n * @param {Object} sessionEvent Apple Pay session event\r\n * @param {Object} applePayConfigs Apple Pay config object\r\n * @returns {Promise} Promise with new order amount\r\n */\r\nasync function onShippingMethodSelected(sessionEvent, applePayConfigs) {\r\n var newShippingMethod = sessionEvent.shippingMethod;\r\n var shippingOptionId = newShippingMethod.identifier;\r\n var shippingAmount = newShippingMethod.amount;\r\n var shippingLabel = newShippingMethod.label;\r\n\r\n if (fromContactSelect && shippingOptions) {\r\n shippingOptionId = shippingOptions[0].identifier;\r\n shippingAmount = shippingOptions[0].amount;\r\n shippingLabel = shippingOptions[0].label;\r\n }\r\n\r\n var updatedAmount = await helper.updateAmountForShippingOption(shippingOptionId);\r\n\r\n // reset it\r\n fromContactSelect = false;\r\n\r\n return {\r\n newLineItems: [{\r\n label: shippingLabel,\r\n amount: shippingAmount\r\n }],\r\n newTotal: {\r\n label: applePayConfigs.options.displayName,\r\n amount: updatedAmount\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Update order amount\r\n * @param {Object} applePayConfigs Apple Pay config object\r\n */\r\nfunction updateApplePayAmount(applePayConfigs) {\r\n // TCS CUSTOM START\r\n // Reverting the call from a fetch to ajax (v23.1.0 code) due to how\r\n // fetch returns a promise that is triggering the await function call early\r\n $.ajax({\r\n url: applePayConfigs.getOrderInfoUrl,\r\n async: false,\r\n type: 'get',\r\n dataType: 'json',\r\n success: function(data) {\r\n amount = data.amount;\r\n fromInit = true;\r\n },\r\n error: function() {\r\n window.location.reload();\r\n }\r\n });\r\n // TCS CUSTOM END\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n collectFraudData,\r\n initApplePay,\r\n createPaymentDataRequest,\r\n onValidateMerchant,\r\n onPaymentAuthorized,\r\n updateApplePayAmount,\r\n onShippingContactSelected,\r\n onShippingMethodSelected\r\n};\r\n","'use strict';\r\n\r\nconst applePayHelper = require('../helpers/applePayHelper');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst braintreeApplePayModel = require('./braintreeApplePayModel');\r\n\r\nconst applePayErrorMessages = require('../constants/errorMessages');\r\n\r\n/**\r\n * Initialize Braintree Apple Pay Model. Pattern Builder is used\r\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\r\n */\r\nfunction init() {\r\n const braintreeApplePayConfigs = applePayHelper.getBraintreeApplePayConfigs();\r\n const response = {\r\n error: false,\r\n message: '',\r\n btApplePayModel: null,\r\n btApplePayConfigs: null\r\n };\r\n\r\n let clientToken;\r\n let btClientInstancePromise;\r\n\r\n if (braintreeApplePayConfigs) {\r\n clientToken = braintreeApplePayConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n\r\n braintreeApplePayModel.init(btClientInstancePromise,\r\n braintreeApplePayConfigs.isFraudToolsEnabled);\r\n\r\n response.btApplePayModel = braintreeApplePayModel;\r\n response.btApplePayConfigs = braintreeApplePayConfigs;\r\n } else {\r\n response.error = true;\r\n response.message = applePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ */\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Creates Apple Pay payment instance\r\n * @returns {Promise} A promise resolve with the Apple Pay instance\r\n */\r\n\r\nfunction createApplePayPayment() {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.applePay.create({\r\n client: btClientInstance\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Creates a configuration object for creation an Apple Pay session\r\n * @param {applePayInstance} applePayInstance Apple Pay instance\r\n * @param {Object} applePayConfigs Apple Pay configs object\r\n * @param {number} amount Order total amount\r\n * @returns {Object} Configuration object\r\n */\r\nfunction createPaymentDataRequest(applePayInstance, applePayConfigs, amount) {\r\n return applePayInstance.createPaymentRequest({\r\n total: {\r\n label: applePayConfigs.options.displayName,\r\n amount: amount\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Validates merchant website, as required by Apple Pay Session before payment can be authorized\r\n * @param {applePayInstance} applePayInstance Apple Pay instance\r\n * @param {Object} sessionEvent Apple Pay session event\r\n * @param {Object} applePayConfigs Apple Pay configs object\r\n * @returns {Promise} Promise that resolve with 'merchantSession'\r\n */\r\nfunction performValidation(applePayInstance, sessionEvent, applePayConfigs) {\r\n return applePayInstance.performValidation({\r\n validationURL: sessionEvent.validationURL,\r\n displayName: applePayConfigs.options.displayName\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes an Apple Pay payment\r\n * @param {applePayInstance} applePayInstance Apple pay instance\r\n * @param {Object} sessionEvent Apple pay session event\r\n * @returns {Promise} Promise that resolve with 'tokenizePayload'\r\n */\r\nfunction tokenize(applePayInstance, sessionEvent) {\r\n return applePayInstance.tokenize({\r\n token: sessionEvent.payment.token\r\n });\r\n}\r\n\r\n/**\r\n * Inits braintreeApplePaySDK with client instance promise\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n */\r\n\r\nfunction init(braintreeClientInstancePromise) {\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n createApplePayPayment,\r\n createPaymentDataRequest,\r\n performValidation,\r\n tokenize,\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\r\nconst $applePayButton = document.querySelector('.js-braintree-applepay-button');\r\n\r\nlet paymentData;\r\nlet $braintreeCartButtons;\r\nlet applePayCheckoutFormData;\r\nlet alertHandler;\r\n\r\n/**\r\n * Expends Apple Pay Checkout Form with required data\r\n */\r\nfunction expandApplePayCheckoutFormData() {\r\n const $csrfToken = document.querySelector('.js-braintree-cart-buttons-wrap #csrf_token');\r\n\r\n applePayCheckoutFormData.append($csrfToken.name, $csrfToken.value);\r\n applePayCheckoutFormData.append('braintreeApplePayNonce', paymentData.nonce);\r\n applePayCheckoutFormData.append('braintreeApplePayDeviceDataInput', paymentData.deviceData);\r\n applePayCheckoutFormData.append('braintreeApplePayShippingAddress',\r\n JSON.stringify(paymentData.shippingAddress) || '{}');\r\n applePayCheckoutFormData.append('braintreeApplePayBillingAddress',\r\n JSON.stringify(paymentData.billingAddress) || '{}');\r\n}\r\n\r\n/**\r\n * Process Apple Pay on the Cart Page\r\n */\r\nfunction processCartFlow() {\r\n // TCS CUSTOM - start the spinner and disable the buttons\r\n $.spinner().start();\r\n $('.js-checkout-options').addClass('disabled');\r\n\r\n const billingAddressData = paymentData.billingAddress;\r\n const paymentMethodName = helper.tryParseJSON($applePayButton.getAttribute('data-braintree-config')).paymentMethodName;\r\n const placeOrderUrl = window.braintreeUrls.placeOrderUrl;\r\n const checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\r\n const checkoutFormFields = $braintreeCartButtons.getAttribute('data-checkout-form-fields');\r\n const paymentFieldData = helper.getPaymentFieldsData(billingAddressData, paymentMethodName);\r\n\r\n applePayCheckoutFormData = helper.createPaymentFormData(checkoutFormFields, paymentFieldData);\r\n applePayCheckoutFormData.append('pageFlowCart', true);\r\n expandApplePayCheckoutFormData();\r\n // submit customer form with email (CheckoutServices-SubmitCustomer)\r\n // as we skip step \"login via guest/registered user\" while express checkout\r\n // email is set only in case of guest checkout and if email is not already set\r\n paymentMethodGeneral.submitCustomerForm(billingAddressData.email);\r\n\r\n /**\r\n * TCS CUSTOM START\r\n * Adds in Recaptcha support for the CheckoutServices-SubmitPayment path\r\n */\r\n // eslint-disable-next-line max-len\r\n var recaptcha = require('../../../../../../../../../../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha');\r\n var object = {};\r\n\r\n applePayCheckoutFormData.forEach(function(value, key) {\r\n object[key] = value;\r\n });\r\n var updatedFormData = $.param(object);\r\n\r\n recaptcha.check(null, {\r\n url: checkoutSubmitPayment,\r\n method: 'POST',\r\n data: updatedFormData,\r\n dataType: 'json',\r\n success: function(data) {\r\n if (data.error) {\r\n let errorMessage = '';\r\n\r\n if ('fieldErrors' in data && data.fieldErrors && data.fieldErrors.length) {\r\n data.fieldErrors.forEach(function(error, index) {\r\n const keys = Object.keys(error);\r\n\r\n if (keys.length) {\r\n errorMessage += `${keys[index].replace('dwfrm_billing_', '')\r\n .replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\r\n }\r\n });\r\n alertHandler.handleApplePayError(errorMessage);\r\n }\r\n\r\n if ('serverErrors' in data && data.serverErrors && data.serverErrors.length) {\r\n data.serverErrors.forEach(function(error) {\r\n errorMessage += `${error}. `;\r\n });\r\n\r\n alertHandler.handleApplePayError({\r\n message: errorMessage\r\n });\r\n }\r\n\r\n if (data.cartError) {\r\n window.location.href = data.redirectUrl;\r\n } else {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Check if skipping the review step\r\n if (window.CachedData.disableBraintreeReviewstep) {\r\n // Send to Place Order and check the recaptcha there\r\n recaptcha.check(null, {\r\n url: placeOrderUrl,\r\n method: 'POST',\r\n success: function(secondData) {\r\n $('body').trigger('checkout:updateCheckoutViewError', secondData); // TCS CUSTOM - ADOBE ANALYTICS TRACKING\r\n $('body').trigger('checkout:afterPlaceOrder', secondData);\r\n if (secondData.error) {\r\n if (secondData.cartError) {\r\n window.location.href = secondData.redirectUrl;\r\n } else {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n if ('serverErrors' in secondData && secondData.serverErrors && secondData.serverErrors.length) {\r\n secondData.serverErrors.forEach(function(error) {\r\n $('.error-message').show();\r\n $('.error-message-text').text(error);\r\n scrollAnimate($('.error-message'));\r\n });\r\n }\r\n }\r\n } else {\r\n var redirect = $('
      ')\r\n .appendTo(document.body)\r\n .attr({\r\n method: 'POST',\r\n action: secondData.continueUrl\r\n });\r\n\r\n $('')\r\n .appendTo(redirect)\r\n .attr({\r\n name: 'orderID',\r\n value: secondData.orderID\r\n });\r\n\r\n $('')\r\n .appendTo(redirect)\r\n .attr({\r\n name: 'orderToken',\r\n value: secondData.orderToken\r\n });\r\n\r\n redirect.submit();\r\n }\r\n },\r\n error: function(err) {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n // enable the placeOrder button here\r\n $('body').trigger('checkout:enableButton', $('.next-step-button button'));\r\n if (err.responseJSON && err.responseJSON.redirectUrl) {\r\n window.location.href = err.responseJSON.redirectUrl;\r\n }\r\n }\r\n });\r\n } else {\r\n // send to the Review page\r\n window.location.href = placeOrderUrl;\r\n }\r\n },\r\n error: function(error) {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n if (error && error.redirectUrl) {\r\n window.location.href = error.redirectUrl;\r\n } else if (error?.responseJSON?.redirectUrl) {\r\n location.href = error.responseJSON.redirectUrl;\r\n }\r\n }\r\n });\r\n // TCS CUSTOM END\r\n}\r\n\r\n/**\r\n * Inits Apple Pay Cart components\r\n * @param {Object} data Apple Pay payment data\r\n * @param {Constructor} alertHandlingModel Alert handling model\r\n */\r\nfunction init(data, alertHandlingModel) {\r\n paymentData = data;\r\n $braintreeCartButtons = document.querySelector('.js-braintree-cart-buttons-wrap');\r\n $applePayButton.setAttribute('data-is-inited', true);\r\n alertHandler = alertHandlingModel;\r\n\r\n processCartFlow();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nlet paymentData;\r\n\r\n/**\r\n * Process Apple Pay on the Checkout page\r\n */\r\nfunction processCheckoutFlow() {\r\n document.getElementById(('braintreeApplePayNonce')).value = paymentData.nonce;\r\n document.getElementById(('braintreeApplePayBillingAddress')).value = JSON.stringify(paymentData.billingAddress);\r\n\r\n // Updating Storefront Billing Form data with ApplePay Billing\r\n const storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(paymentData.billingAddress);\r\n\r\n helper.updateBillingFormValues(storeFrontBillingData);\r\n}\r\n\r\n/**\r\n * Inits Apple Pay checkout components\r\n * @param {Object} data Apple Pay payment data\r\n */\r\nfunction init(data) {\r\n paymentData = data;\r\n\r\n processCheckoutFlow();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ ApplePaySession */\r\n\r\n// Helpers\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst applePayHelper = require('../helpers/applePayHelper');\r\nconst applePayPaymentProcessingHelper = require('../helpers/applePayPaymentProcessingHelper');\r\nconst helper = require('../../helper');\r\n\r\nconst applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\r\n\r\n// Components\r\nconst applePayCart = require('./applePayCart');\r\nconst applePayCheckout = require('./applePayCheckout');\r\n\r\nconst $braintreeApplePayLoader = document.querySelector('.js-braintree-applepay-loader');\r\nconst $applePayButtonContainer = document.querySelector('.js-braintree-applepay-button');\r\n\r\nconst $continueButton = document.querySelector('button.submit-payment');\r\nconst applePayEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-applepay-content'));\r\n\r\n// global variables\r\nlet loader;\r\nlet applePayModel;\r\nlet applePayButtonConfig;\r\nlet alertHandler;\r\n\r\n/**\r\n * Functionality over tokenized payment\r\n * @param {Object} paymentData Apple Pay payment data\r\n */\r\nfunction onTokenizedPayment(paymentData) {\r\n const applePayFlow = applePayPaymentProcessingHelper.getApplePayFlowId();\r\n\r\n helper.removeActiveSessionPayment();\r\n\r\n switch (applePayFlow) {\r\n case applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\r\n applePayCheckout.init(paymentData);\r\n $continueButton.click();\r\n // TCS CUSTOM - stop the spinner and enable the buttons\r\n $('.js-checkout-options').removeClass('disabled');\r\n $.spinner().stop();\r\n\r\n break;\r\n case applePayPaymentProcessingConstants.FLOW_CART_NAME:\r\n applePayCart.init(paymentData, alertHandler);\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Creates Apple Pay session. Opens and processes Apple Pay payment window.\r\n */\r\nasync function createApplePaySession() {\r\n // Updates order amount for paymentDataRequest\r\n await applePayModel.updateApplePayAmount(applePayButtonConfig);\r\n\r\n // Creates a configuration object for creating Apple pay session\r\n const paymentDataRequest = applePayModel.createPaymentDataRequest(applePayButtonConfig);\r\n\r\n if (applePayButtonConfig.isRequiredBillingContactFields) {\r\n paymentDataRequest.requiredBillingContactFields = ['postalAddress', 'name'];\r\n }\r\n\r\n if (applePayButtonConfig.isRequiredShippingContactFields) {\r\n paymentDataRequest.requiredShippingContactFields = ['postalAddress', 'name', 'phone', 'email'];\r\n }\r\n\r\n // Creates new Apple Pay session\r\n const session = new ApplePaySession(1, paymentDataRequest);\r\n const applePayFlow = applePayPaymentProcessingHelper.getApplePayFlowId();\r\n\r\n if (applePayFlow === applePayPaymentProcessingConstants.FLOW_CART_NAME) {\r\n // TCS CUSTOM START: Add gtm event\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'paymentClick',\r\n eventLabel: 'cart_page',\r\n eventAction: 'ApplePay_Click'\r\n });\r\n }\r\n // TCS CUSTOM END: Add gtm event\r\n\r\n // Adds shipping methods based on the address\r\n session.onshippingcontactselected = function(event) {\r\n applePayModel.onShippingContactSelected(event, applePayButtonConfig)\r\n .then((applePayShippingContactUpdate) => {\r\n session.completeShippingContactSelection(applePayShippingContactUpdate);\r\n })\r\n .catch((error) => {\r\n alertHandler.handleApplePayError(error);\r\n session.abort();\r\n });\r\n };\r\n\r\n // Updates price based on a selected shipping method\r\n session.onshippingmethodselected = function(event) {\r\n applePayModel.onShippingMethodSelected(event, applePayButtonConfig)\r\n .then((applePayShippingMethodUpdate) => {\r\n session.completeShippingMethodSelection(applePayShippingMethodUpdate);\r\n })\r\n .catch((error) => {\r\n alertHandler.handleApplePayError(error);\r\n session.abort();\r\n });\r\n };\r\n }\r\n\r\n // Validates merchant website\r\n session.onvalidatemerchant = function(event) {\r\n applePayModel.onValidateMerchant(event, applePayButtonConfig)\r\n .then(function(merchantSession) {\r\n session.completeMerchantValidation(merchantSession);\r\n })\r\n .catch(function(error) {\r\n alertHandler.handleApplePayError(error);\r\n session.abort();\r\n });\r\n };\r\n\r\n // Tokenizes an Apple Pay payment\r\n session.onpaymentauthorized = function(event) {\r\n loader.show();\r\n\r\n applePayModel.onPaymentAuthorized(event)\r\n .then(function(tokenizedPayload) {\r\n session.completePayment(ApplePaySession.STATUS_SUCCESS);\r\n\r\n const TokenizedPaymentData = applePayPaymentProcessingHelper.getTokenizedPaymentData(event, tokenizedPayload);\r\n\r\n onTokenizedPayment(TokenizedPaymentData);\r\n\r\n loader.hide();\r\n })\r\n .catch(function(error) {\r\n session.completePayment(ApplePaySession.STATUS_FAILURE);\r\n loader.hide();\r\n alertHandler.handleApplePayError(error);\r\n\r\n // TCS CUSTOM - stop the spinner and enable the buttons again\r\n $.spinner.stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n });\r\n };\r\n\r\n /**\r\n * Called when the payment UI is dismissed\r\n * TCS CUSTOM - Added in for stopping the spinner on user closing the Apple Pay window\r\n * and re-enabling the buttons\r\n */\r\n session.oncancel = function() {\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n };\r\n\r\n session.begin();\r\n}\r\n\r\n/**\r\n * Call back function to be resolved when Apple Pay payment button is clicked\r\n */\r\nfunction onApplePayButtonClick() {\r\n // TCS CUSTOM - Start spinner on Apple Pay payment button click, disable buttons\r\n $.spinner().start();\r\n $('.js-checkout-options').addClass('disabled');\r\n\r\n alertHandler.hideAlerts();\r\n\r\n // Billing flow\r\n if (applePayEnabledOnCheckout) {\r\n // Validates email and phone fields on the Billing page\r\n // TCS CUSTOM: This only actually validates the phone field in the function\r\n if (applePayHelper.isBilligFiledsValid()) {\r\n createApplePaySession();\r\n } else if (!(applePayHelper.isBilligFiledsValid())) {\r\n // TCS CUSTOM: Show phone number field on error (code copied from BT showPhoneField() function)\r\n document.querySelector('.dwfrm_billing_contactInfoFields_phone').style.display = '';\r\n }\r\n // Cart flow\r\n } else {\r\n createApplePaySession();\r\n }\r\n}\r\n\r\n/**\r\n * Init and add Apple Pay on the Cart or Billing page\r\n */\r\nfunction initApplePay() {\r\n loader.show();\r\n\r\n const result = applePayModel.collectFraudData()\r\n .then(function(fraudDataPayload) {\r\n applePayHelper.setApplePayDeviceData(fraudDataPayload);\r\n loader.hide();\r\n\r\n return applePayModel.initApplePay(ApplePaySession)\r\n .then(function(canMakePayments) {\r\n loader.hide();\r\n applePayHelper.renderApplePayButton(applePayButtonConfig.applePayConfig.style);\r\n\r\n if (!canMakePayments) {\r\n applePayHelper.makeApplePayButtonDisabled();\r\n } else {\r\n const $applePayBtn = document.getElementById('apple-pay-btn');\r\n\r\n $applePayBtn.addEventListener('click', onApplePayButtonClick);\r\n\r\n // TCS CUSTOM START: Add gtm event\r\n $('body').on('click', '.js-applepay-tab', function() {\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'applepayClick',\r\n eventLabel: 'checkout_funnel_traditional'\r\n });\r\n }\r\n });\r\n // TCS CUSTOM END: Add gtm event\r\n }\r\n });\r\n });\r\n\r\n result\r\n .catch(function(error) {\r\n loader.hide();\r\n // TCS CUSTOM - stop spinner on error, enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n alertHandler.handleApplePayError(error);\r\n });\r\n}\r\n\r\n/**\r\n * Inits Apple Pay payment processing components\r\n * @param {Object} braintreeApplePayModel Apple Pay model\r\n * @param {Constructor} alertHandlingModel Alert handling model\r\n */\r\nfunction init(braintreeApplePayModel, alertHandlingModel) {\r\n loader = loaderInstance($braintreeApplePayLoader);\r\n applePayModel = braintreeApplePayModel;\r\n applePayButtonConfig = helper.tryParseJSON($applePayButtonContainer.getAttribute('data-braintree-config'));\r\n alertHandler = alertHandlingModel;\r\n\r\n if (window.ApplePaySession) {\r\n initApplePay();\r\n } else {\r\n applePayHelper.hideApplePayTab();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n FLOW_CHECKOUT_NAME: 'checkout',\r\n FLOW_CART_NAME: 'cart'\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS: 'No Apple Pay Braintree Configurations',\r\n FRAUD_DATA_CELLECTION_ISNOT_ENABLED: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nconst $applePayButton = document.querySelector('.js-braintree-applepay-button');\r\nconst $applepayDataMethod = document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"ApplePay\"]');\r\nconst $phoneField = document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]');\r\n\r\n/**\r\n * Returns Braintree Apple Pay configs\r\n * @returns {Object} Braintree Apple Pay configs\r\n */\r\nfunction getBraintreeApplePayConfigs() {\r\n let braintreeApplePayButtonConfigs = null;\r\n\r\n try {\r\n braintreeApplePayButtonConfigs = helper.tryParseJSON(document.querySelector('.js-braintree-applepay-button')\r\n .getAttribute('data-braintree-config'));\r\n } catch (error) {\r\n return braintreeApplePayButtonConfigs;\r\n }\r\n\r\n return braintreeApplePayButtonConfigs;\r\n}\r\n\r\n/**\r\n * Sets device data from 'data collector' to corresponding input field\r\n * @param {Object} fraudDataPayload Froud payload data\r\n */\r\n\r\nfunction setApplePayDeviceData(fraudDataPayload) {\r\n const $braintreeApplePayDeviceData = document.getElementById('braintreeApplePayDeviceData');\r\n\r\n if (fraudDataPayload.deviceData) {\r\n $braintreeApplePayDeviceData.value = fraudDataPayload.deviceData;\r\n }\r\n}\r\n\r\n/**\r\n * Builds and shows Apple Pay button\r\n * @param {Object} buttonStyles An object with Apple pay button styles\r\n */\r\nfunction renderApplePayButton(buttonStyles) {\r\n const $applePayBtn = document.getElementById('apple-pay-btn');\r\n\r\n // Builds an Apple pay button by parameters\r\n $applePayBtn.setAttribute('type', buttonStyles.type);\r\n $applePayBtn.setAttribute('buttonstyle', buttonStyles.buttonStyle);\r\n\r\n // Shows an Apple pay container\r\n $applePayButton.classList.add('d-block');\r\n\r\n // Shows an Apple pay tab on the billing page\r\n if ($applepayDataMethod) {\r\n $applepayDataMethod.classList.add('d-block');\r\n }\r\n}\r\n\r\n/**\r\n * Hides Apple Pay tab on the Checkout/Billing page\r\n */\r\nfunction hideApplePayTab() {\r\n const $applePayButtonContainer = document.querySelector('.js-applepay-container');\r\n\r\n if ($applepayDataMethod) {\r\n $applepayDataMethod.classList.add('d-none');\r\n }\r\n\r\n if ($applePayButtonContainer) {\r\n $applePayButtonContainer.classList.add('d-none');\r\n }\r\n}\r\n\r\n/**\r\n * Marks Apple Pay button as disabled\r\n */\r\nfunction makeApplePayButtonDisabled() {\r\n $applePayButton.classList.add('js-braintree-applepay-button_disabled');\r\n}\r\n\r\n/**\r\n * Remove session Apple Pay nonce\r\n */\r\nfunction removeSessionNonce() {\r\n document.getElementById('braintreeApplePayNonce').value = '';\r\n document.getElementById('braintreeApplePayDeviceData').value = '';\r\n}\r\n\r\n/**\r\n * Validates required billing form fields\r\n * @returns {boolean} Whether billing form fields are valid\r\n */\r\nfunction isBilligFiledsValid() {\r\n return helper.isValidInputField($phoneField);\r\n}\r\n\r\n/**\r\n * Depends of the 'data-paypal-is-hide-continue-button' hides or shows continue button on the Billing Page\r\n */\r\nfunction toggleContinueButtonOnBillingPage() {\r\n const applePayContent = document.querySelector('.js-braintree-applepay-content');\r\n\r\n helper.continueButtonToggle(applePayContent.getAttribute('data-paypal-is-hide-continue-button'));\r\n}\r\n\r\nmodule.exports = {\r\n getBraintreeApplePayConfigs,\r\n setApplePayDeviceData,\r\n renderApplePayButton,\r\n makeApplePayButtonDisabled,\r\n removeSessionNonce,\r\n isBilligFiledsValid,\r\n hideApplePayTab,\r\n toggleContinueButtonOnBillingPage\r\n};\r\n","'use strict';\r\n\r\nconst applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\r\n\r\n/**\r\n * Returns current Apple Pay flow\r\n * @returns {string} Flow id checkout/cart\r\n */\r\nfunction getApplePayFlowId() {\r\n const applePayEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-applepay-content'));\r\n\r\n return applePayEnabledOnCheckout ? applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME : applePayPaymentProcessingConstants.FLOW_CART_NAME;\r\n}\r\n\r\n/**\r\n * Returns shipping address based on Apple Pay payment shipping contact\r\n * @param {Object} shippingContact Shipping address data\r\n * @returns {Object} Shipping address with required fields\r\n */\r\nfunction getShippingAddress(shippingContact) {\r\n return {\r\n streetAddress: shippingContact.addressLines[0],\r\n extendedAddress: shippingContact.addressLines[1],\r\n locality: shippingContact.locality,\r\n region: shippingContact.administrativeArea.toUpperCase(),\r\n postalCode: decodeURIComponent(shippingContact.postalCode),\r\n countryCodeAlpha2: shippingContact.countryCode.toUpperCase(),\r\n firstName: shippingContact.givenName,\r\n lastName: shippingContact.familyName,\r\n phone: shippingContact.phoneNumber,\r\n email: shippingContact.emailAddress\r\n };\r\n}\r\n\r\n/**\r\n * Returns billing address based on Apple Pay payment billing contact\r\n * @param {Object} billingContact Billing address data\r\n * @param {string} email Email\r\n * @param {string} phone Phone number\r\n * @returns {Object} Billing address with required fields\r\n */\r\nfunction getBillingAddress(billingContact, email, phone) {\r\n return {\r\n streetAddress: billingContact.addressLines[0],\r\n extendedAddress: billingContact.addressLines[1],\r\n locality: billingContact.locality,\r\n region: billingContact.administrativeArea.toUpperCase(),\r\n postalCode: decodeURIComponent(billingContact.postalCode),\r\n countryCodeAlpha2: billingContact.countryCode.toUpperCase(),\r\n firstName: billingContact.givenName,\r\n lastName: billingContact.familyName,\r\n email: email,\r\n phone: phone\r\n };\r\n}\r\n\r\n/**\r\n * Returns Apple Pay payment object with required data for backend\r\n * @param {Object} sessionEvent Apple Pay Session event\r\n * @param {Object} tokenizedPayload Apple Pay payment data\r\n * @returns {Object} Apple Pay payment object with required fileds\r\n */\r\nfunction getTokenizedPaymentData(sessionEvent, tokenizedPayload) {\r\n const data = {\r\n event: sessionEvent,\r\n payload: tokenizedPayload,\r\n nonce: tokenizedPayload.nonce,\r\n deviceData: document.getElementById('braintreeApplePayDeviceData').value\r\n };\r\n\r\n let shippingAddressData = sessionEvent.payment.shippingContact;\r\n\r\n if (shippingAddressData) {\r\n data.shippingAddress = getShippingAddress(shippingAddressData);\r\n } else {\r\n shippingAddressData = {\r\n emailAddress: document.querySelector('.customer-summary-email').innerHTML,\r\n phoneNumber: document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]').value\r\n };\r\n }\r\n\r\n const billingAddressData = sessionEvent.payment.billingContact;\r\n\r\n if (billingAddressData) {\r\n data.billingAddress = getBillingAddress(billingAddressData, shippingAddressData.emailAddress, shippingAddressData.phoneNumber);\r\n }\r\n\r\n return data;\r\n}\r\n\r\nmodule.exports = {\r\n getApplePayFlowId,\r\n getShippingAddress,\r\n getBillingAddress,\r\n getTokenizedPaymentData\r\n};\r\n","'use strict';\r\n\r\n/**\r\n* This file was created to provide functionality and business logic for Credit and SRC payment methods. Do not expand this file!\r\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.\r\n*/\r\n\r\nconst AlertHandlerModel = require('./alertHandler');\r\n\r\nconst cssClass = {\r\n D_NONE: 'd-none',\r\n FONT_WEIGHT_BOLD: 'font-weight-bold'\r\n};\r\n\r\nconst errorHandler = new AlertHandlerModel();\r\nlet creditCardListLoader;\r\n\r\n/**\r\n* Shows the new card block on the Account Page\r\n*/\r\nfunction showAddNewCardOptions() {\r\n const $addNewCardButton = document.querySelector('.js-braintree-add-new-card-btn');\r\n const $addNewCardBlock = document.querySelector('.js-braintree-add-new-card-block');\r\n\r\n // Hide \"Credit Card error message\" container\r\n errorHandler.hideAlerts();\r\n // Hide \"Add New Card\" button\r\n $addNewCardButton.classList.add(cssClass.D_NONE);\r\n // Display \"Add New Card\" form\r\n $addNewCardBlock.classList.remove(cssClass.D_NONE);\r\n}\r\n\r\n/**\r\n * Removes card from Credit/SRC Cards list\r\n * @param {Object} e Event object\r\n */\r\nfunction initRemoveCardEvent() {\r\n const $removeCardBtns = document.querySelectorAll('.js-credit-card-accounts .js-remove-bt-payment');\r\n\r\n $removeCardBtns.forEach((el) => el.addEventListener('click', function(e) {\r\n const target = e.target;\r\n\r\n creditCardListLoader.show();\r\n\r\n fetch(`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute('data-id')}`, { method: 'GET' })\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((data) => {\r\n if (data.error && data.error.message) {\r\n // Show error message in a case of current PI removal is not allowed\r\n errorHandler.showError(data.error.message);\r\n $('body').trigger('payment:remove', true); // TCS customization\r\n } else {\r\n document.getElementById(`uuid-${data.UUID}`).remove();\r\n\r\n if (data.newDefaultAccount) {\r\n // TCS customization to prevent error due to DOM element not being found\r\n $('body').trigger('payment:makedefault', [false, data.UUID, data.newDefaultAccount]);\r\n // document.getElementById(`uuid-${data.newDefaultAccount}`).classList.add(cssClass.FONT_WEIGHT_BOLD);\r\n // document.getElementsByClassName(`uuid-${data.newDefaultAccount}`).classList.add(cssClass.D_NONE);\r\n }\r\n\r\n $('body').trigger('payment:remove', false); // TCS customization\r\n }\r\n\r\n creditCardListLoader.hide();\r\n })\r\n .catch(() => {\r\n location.reload();\r\n });\r\n }));\r\n}\r\n\r\n/**\r\n * Select default card in Credit/SRC Cards list\r\n * @param {Object} e Event object\r\n */\r\nfunction initMakeDefaultCardEvent() {\r\n const $makeDefaultCardBtns = document.querySelectorAll('.js-credit-card-accounts .js-braintree-make-default-card');\r\n\r\n $makeDefaultCardBtns.forEach((el) => el.addEventListener('click', function(e) {\r\n const target = e.target;\r\n const url = window.braintreeUrls.makePaymentMethodDefaultUrl;\r\n const id = target.getAttribute('data-id');\r\n const paymentMethodID = 'CARD';\r\n\r\n // Hide \"Credit Card error message\" container\r\n errorHandler.hideAlerts();\r\n creditCardListLoader.show();\r\n\r\n fetch(`${url}?UUID=${id}&pmID=${paymentMethodID}`)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n // New default Card changes\r\n document.querySelector(`#uuid-${data.newDefaultProperty} span`).classList.add(cssClass.FONT_WEIGHT_BOLD);\r\n document.querySelector('.js-braintree-make-default-card.uuid-' + data.newDefaultProperty).classList.add(cssClass.D_NONE);\r\n\r\n // Previous default Card changes\r\n document.querySelector(`#uuid-${data.toRemoveDefaultProperty} span`).classList.remove(cssClass.FONT_WEIGHT_BOLD);\r\n document.querySelector('.js-braintree-make-default-card.uuid-' + data.toRemoveDefaultProperty).classList.remove(cssClass.D_NONE);\r\n\r\n creditCardListLoader.hide();\r\n\r\n $('body').trigger('payment:makedefault', [false, data.toRemoveDefaultProperty, data.newDefaultProperty]); // TCS customization\r\n })\r\n .catch(() => {\r\n creditCardListLoader.hide();\r\n\r\n $('body').trigger('payment:makedefault', true); // TCS customization\r\n });\r\n }));\r\n}\r\n\r\nfunction initAccount() {\r\n const loaderInstance = require('./loaderHelper');\r\n\r\n const $creditCardAccountBtLoader = document.getElementById('creditCardAccountBtLoader');\r\n const $addNewCard = document.querySelector('.js-braintree-add-new-card-btn');\r\n\r\n const creditCardListLoaderExists = Boolean($creditCardAccountBtLoader);\r\n\r\n if (creditCardListLoaderExists) {\r\n creditCardListLoader = loaderInstance($creditCardAccountBtLoader);\r\n }\r\n\r\n if ($addNewCard) {\r\n // \"Add new card\" area link functionality initiation\r\n $addNewCard.addEventListener('click', showAddNewCardOptions);\r\n }\r\n\r\n // \"Make default\" link functionality initiation\r\n initMakeDefaultCardEvent();\r\n\r\n // \"Remove Card\" link functionality initiation\r\n initRemoveCardEvent();\r\n}\r\n\r\nmodule.exports = {\r\n initAccount,\r\n initRemoveCardEvent,\r\n initMakeDefaultCardEvent\r\n};\r\n","'use strict';\r\n\r\n/* global braintree $ */\r\n\r\n/**\r\n * Create Braintree Client Instance from Client Token\r\n * @param {string} clientToken Braintree client token\r\n * @returns {Promise} returns promise with Braintree Client Instance\r\n */\r\nfunction createClientInstance(clientToken) {\r\n return braintree.client.create({\r\n authorization: clientToken\r\n });\r\n}\r\n\r\n/**\r\n * Fraud data generation\r\n * @param {Promise} btClientInstancePromise Promise with Client Instance\r\n * @returns {Promise} returns promise with fraud data\r\n */\r\nfunction collectFraudData(btClientInstancePromise) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.dataCollector.create({\r\n client: btClientInstance,\r\n kount: true\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Get array with Braintree Customer Payment Mehtods by Personalized Client Instance\r\n * @param {Promise} btClientInstancePromise Promise with Client Instance\r\n * @returns {array} array with Braintree Customer Payment Mehtod (if any) in opposite case empty array will be returned\r\n */\r\nfunction getBtCustomerPaymentMethods(btClientInstancePromise) {\r\n return btClientInstancePromise\r\n .then(function(clientInstance) {\r\n return braintree.vaultManager.create({\r\n client: clientInstance\r\n });\r\n })\r\n .then(function(vaultManager) {\r\n return vaultManager.fetchPaymentMethods({\r\n defaultFirst: true\r\n });\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n createClientInstance,\r\n collectFraudData,\r\n getBtCustomerPaymentMethods\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Inits credit card functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initCreditCardFunctionality() {\r\n const creditCardOnAccountEnabled = Boolean(document.querySelector('.js-braintree-add-credit-card-form'));\r\n const creditCardEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-credit-card-content'));\r\n\r\n let creditCardBusinessLogic;\r\n\r\n if (creditCardOnAccountEnabled || creditCardEnabledOnCheckout) {\r\n creditCardBusinessLogic = require('./creditcard/creditCard');\r\n creditCardBusinessLogic.init();\r\n }\r\n\r\n if (creditCardOnAccountEnabled) {\r\n creditCardBusinessLogic.initAccount();\r\n }\r\n\r\n if (creditCardEnabledOnCheckout) {\r\n creditCardBusinessLogic.initCheckout();\r\n }\r\n}\r\n\r\n/**\r\n * Inits PayPal functionality on Storefront\r\n * @param {Promise} clientTokenPromise promise with Braintree Client Instance\r\n * @returns {void}\r\n */\r\nasync function initPayPalFunctionality(clientTokenPromise) {\r\n const payPalBusinessLogic = require('./paypal/payPal');\r\n\r\n const payPalEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-paypal-content'));\r\n const payPalEnabledOnProduct = Boolean(document.querySelector('.prices-add-to-cart-actions .js-braintree-paypal-cart-button'));\r\n const payPalEnabledOnPvp = Boolean(document.querySelector('#quickViewModal .js-braintree-paypal-cart-button'));\r\n const payPalEnabledOnCart = Boolean(document.querySelector('.cart-page .js-braintree-paypal-cart-button'));\r\n const payPalEnabledOnAccountPage = Boolean(document.querySelector('.js-paypal-accounts'));\r\n const payPalEnabledOnLoginPage = Boolean(document.querySelector('.login-form-nav'));\r\n const cwppEnabledOnPage = Boolean(document.getElementById('js-cwpp-button'));\r\n const payPalBannerOnCategory = Boolean(document.querySelector('.js-category-banner'));\r\n const payPalBannerOnPDP = Boolean(document.querySelector('.bt-pdp-credit-message .js-pp-banner'));\r\n\r\n payPalBusinessLogic.init(clientTokenPromise);\r\n\r\n const availablePages = [\r\n payPalEnabledOnProduct, payPalEnabledOnCart,\r\n payPalEnabledOnCheckout, payPalEnabledOnLoginPage,\r\n payPalEnabledOnAccountPage, cwppEnabledOnPage,\r\n payPalEnabledOnPvp\r\n ];\r\n\r\n if (availablePages.includes(true)) {\r\n const PayPalScriptLoading = require('./paypal/models/payPalScriptLoading');\r\n const cwpp = require('./paypal/components/connectWithPayPal.js');\r\n\r\n const payPalScriptLoading = new PayPalScriptLoading();\r\n\r\n if (cwpp.isContainerExist()) {\r\n await payPalScriptLoading.loadPayPalSDK();\r\n\r\n payPalScriptLoading.loadConnectWithPayPal(cwpp.init);\r\n }\r\n }\r\n\r\n if (payPalBannerOnCategory) {\r\n const PayPalScriptLoading = require('./paypal/models/payPalScriptLoading');\r\n const payPalScriptLoading = new PayPalScriptLoading();\r\n\r\n payPalScriptLoading.loadPayPalCreditMessages();\r\n }\r\n\r\n // TCS CUSTOM START: Add in standalone PayPal Pay Later Banner functionality\r\n if (payPalBannerOnPDP && !payPalEnabledOnProduct) {\r\n const PayPalScriptLoading = require('./paypal/models/payPalScriptLoading');\r\n const payPalScriptLoading = new PayPalScriptLoading();\r\n const payPalButtonDisplayBehavior = require('./paypal/components/payPalButtonDisplayBehavior');\r\n\r\n payPalScriptLoading.loadPayPalCreditMessages();\r\n payPalButtonDisplayBehavior.initProductPage();\r\n }\r\n // TCS CUSTOM END\r\n\r\n if (payPalEnabledOnCheckout) {\r\n payPalBusinessLogic.initCheckout();\r\n }\r\n\r\n if (payPalEnabledOnProduct) {\r\n payPalBusinessLogic.initProduct();\r\n }\r\n\r\n if (payPalEnabledOnPvp) {\r\n payPalBusinessLogic.initQuickView();\r\n }\r\n\r\n // Validation on enabled/disabled PayPal button for MiniCart located isinside MiniCart component\r\n payPalBusinessLogic.initMiniCart();\r\n\r\n if (payPalEnabledOnCart) {\r\n payPalBusinessLogic.initCart();\r\n }\r\n\r\n if (payPalEnabledOnAccountPage) {\r\n payPalBusinessLogic.initAccount();\r\n }\r\n}\r\n\r\n/**\r\n * Inits GooglePay functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initGooglePayFunctionality() {\r\n const googlePayBusinnessLogic = require('./googlepay/googlePay');\r\n\r\n const googlePayEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-billing-googlepay-button'));\r\n const googlePayEnabledOnCart = Boolean(document.querySelector('.js-braintree-cart-googlepay-button'));\r\n\r\n googlePayBusinnessLogic.init();\r\n\r\n if (googlePayEnabledOnCheckout) {\r\n googlePayBusinnessLogic.initCheckout();\r\n }\r\n\r\n if (googlePayEnabledOnCart) {\r\n googlePayBusinnessLogic.initCart();\r\n }\r\n}\r\n\r\n/**\r\n * Inits ApplePay functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initApplePayFunctionality() {\r\n const applePayBusinessLogic = require('./applepay/applePay');\r\n\r\n const applePayEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-applepay-content'));\r\n const applePayEnabledOnCart = Boolean(document.querySelector('.js-braintree-applepay-button'));\r\n\r\n applePayBusinessLogic.init();\r\n\r\n if (applePayEnabledOnCart || applePayEnabledOnCheckout) {\r\n applePayBusinessLogic.initApplePay();\r\n }\r\n}\r\n\r\n/**\r\n * Inits Venmo functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initVenmoFunctionality() {\r\n const venmoBusinessLogic = require('./venmo/venmo');\r\n\r\n const isVenmoEnabledOnAccountPage = Boolean(document.querySelector('.js-venmo-accounts'));\r\n const isVenmoEnabledOnBillingPage = Boolean(document.querySelector('.js-braintree-venmo-content'));\r\n\r\n if (isVenmoEnabledOnAccountPage || isVenmoEnabledOnBillingPage) {\r\n venmoBusinessLogic.init();\r\n }\r\n\r\n if (isVenmoEnabledOnAccountPage) {\r\n venmoBusinessLogic.initAccount();\r\n }\r\n\r\n if (isVenmoEnabledOnBillingPage) {\r\n venmoBusinessLogic.initBillingCheckout();\r\n }\r\n}\r\n\r\n/**\r\n * Inits SRC functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initSRCFunctionality() {\r\n const srcBusinessLogic = require('./src/src');\r\n\r\n const isSrcEnabledOnAccountPage = Boolean(document.querySelector('.js-braintree-account-add-src'));\r\n const isSrcEnabledOnCartPage = Boolean(document.querySelector('.js-braintree-cart-src-button'));\r\n const isSrcEnabledOnBillingPage = Boolean(document.querySelector('.js-braintree-billing-src-button'));\r\n\r\n srcBusinessLogic.init();\r\n\r\n if (isSrcEnabledOnAccountPage) {\r\n srcBusinessLogic.initAccount();\r\n }\r\n\r\n if (isSrcEnabledOnCartPage) {\r\n srcBusinessLogic.initCartCheckout();\r\n }\r\n\r\n if (isSrcEnabledOnBillingPage) {\r\n srcBusinessLogic.initBillingCheckout();\r\n }\r\n}\r\n\r\n/**\r\n * Inits LPM functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initLPMFunctionality() {\r\n const lpmBusinessLogic = require('./local/lpm');\r\n const isLpmEnebledOnBillingPage = Boolean(document.querySelector('.js-braintree-lpm-content'));\r\n\r\n if (isLpmEnebledOnBillingPage) {\r\n lpmBusinessLogic.init();\r\n }\r\n\r\n // LPM fallback process\r\n if (document.querySelector('.js-lpm-fallback')) {\r\n const lpmFallback = require('./local/lpmFallBack');\r\n\r\n lpmFallback.process();\r\n }\r\n}\r\n\r\n/**\r\n * Inits APMA functionality on Storefront\r\n * @returns {void}\r\n */\r\nfunction initAPMAFunctionality() {\r\n const apmaBusinessLogic = require('./apma');\r\n const isApmaEnebled = Boolean(document.getElementById('js-apma-button-paypal'));\r\n\r\n if (isApmaEnebled) {\r\n apmaBusinessLogic.init();\r\n }\r\n}\r\n\r\n/**\r\n * Handle payment`s errors on checkout page\r\n * @returns {void}\r\n */\r\nfunction handlePaymentMethodErrorCheckout() {\r\n const helper = require('./helper');\r\n\r\n $(document).on('ajaxSuccess', function(event, jqXHR, ajaxSettings, response) {\r\n // TCS CUSTOM: adding in 'response' for null check\r\n if (response && response.error && response.action === 'CheckoutServices-PlaceOrder') {\r\n helper.removeActiveSessionPayment(true);\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = async function() {\r\n // Used only for Paypal. In future \"client token\" generation approach will be refactored\r\n const paymentMethodGeneral = require('./paymentMethodGeneral');\r\n\r\n // General global variables\r\n const isCheckoutPage = Boolean(document.getElementById('checkout-main'));\r\n const isAccountPage = Boolean(document.querySelector('.js-account-dashboard'));\r\n\r\n /* ------------------------General Account functionality------------------------ */\r\n if (isAccountPage) {\r\n const btAccountBusinessLogic = require('./braintreeAccount');\r\n // Common Credit Card and SRC Account functionality\r\n\r\n btAccountBusinessLogic.initAccount();\r\n }\r\n\r\n /* ------------------------General Checkout functionality----------------------- */\r\n if (isCheckoutPage) {\r\n paymentMethodGeneral.fillPaymentSummaryContainer();\r\n paymentMethodGeneral.initPaymentMethodTabClickBehavior();\r\n paymentMethodGeneral.initChangeShippingBehavior();\r\n paymentMethodGeneral.initBillingSelectorChangeFunctionality();\r\n paymentMethodGeneral.initAmountObserver();\r\n handlePaymentMethodErrorCheckout();\r\n\r\n const lastAmount = parseFloat(window.sessionStorage.getItem('amount-used'));\r\n\r\n if ((window.braintreePreferences.is3DSecureEnabled\r\n || window.braintreePreferences.is3DSecureFallback) && lastAmount) {\r\n paymentMethodGeneral.handleActiveCCSessionPayment(lastAmount);\r\n }\r\n }\r\n\r\n /* ------------------------Credit Card------------------------ */\r\n\r\n initCreditCardFunctionality();\r\n\r\n /* --------------------------PayPal-------------------------- */\r\n\r\n $('body').on('quickview:ready', async() => {\r\n await initPayPalFunctionality(paymentMethodGeneral.createGeneralClientInstancePromise());\r\n });\r\n\r\n await initPayPalFunctionality(paymentMethodGeneral.createGeneralClientInstancePromise());\r\n\r\n /* --------------------------GooglePay------------------------- */\r\n\r\n initGooglePayFunctionality();\r\n\r\n /* --------------------------ApplePay------------------------- */\r\n\r\n initApplePayFunctionality();\r\n\r\n /* --------------------------Venmo---------------------------- */\r\n\r\n initVenmoFunctionality();\r\n\r\n /* --------------------------SRC------------------------------ */\r\n\r\n initSRCFunctionality();\r\n\r\n /* --------------------------LPM-------------------------- */\r\n\r\n initLPMFunctionality();\r\n\r\n /* --------------------------APMA-------------------------- */\r\n\r\n initAPMAFunctionality();\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n getSelectedData: function(selectElement) {\r\n let option = null;\r\n\r\n if (!selectElement) {\r\n return option;\r\n }\r\n\r\n const options = selectElement.getElementsByTagName('option');\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n option = options[i];\r\n\r\n if (option.selected) {\r\n break;\r\n }\r\n }\r\n\r\n return option.attributes;\r\n }\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\nconst creditCardFormFieldValidation = require('./creditCardFormFieldsValidator');\r\n\r\n/**\r\n * Credit card alert handler model\r\n */\r\nclass CreditCardAlertHandlerModel extends AlertHandlerModel {\r\n constructor(alertMessages) {\r\n super();\r\n this.alertMessages = alertMessages;\r\n }\r\n\r\n /**\r\n * Converts Braintree fields\r\n * @param {Array} arrayOfBtFormFields Credit Cards hosted fileds in array\r\n * @returns {Array} Converted array\r\n */\r\n convertBtFromFieldsToDw(arrayOfBtFormFields) {\r\n const creditCardFieldsMap = {\r\n cardholderName: 'braintreeCardOwner',\r\n number: 'braintreeCardNumber',\r\n cvv: 'braintreeCvv',\r\n expirationDate: 'braintreeExpirationDate'\r\n };\r\n\r\n return arrayOfBtFormFields.map((fieldName) => creditCardFieldsMap[fieldName]);\r\n }\r\n\r\n /**\r\n * Handles all fields are empty behavior\r\n */\r\n allFieldsAreEmptyErrorBehavior() {\r\n creditCardFormFieldValidation.makeAllFormFieldsInvalid(this.ccFields);\r\n }\r\n\r\n /**\r\n * Handles some fileds are empty behavior\r\n * @param {Array} btInvalidHostedFields Invalid fileds\r\n */\r\n someFieldsAreInvalidErrorBehavior(btInvalidHostedFields) {\r\n const convertedFormFields = this.convertBtFromFieldsToDw(btInvalidHostedFields);\r\n\r\n creditCardFormFieldValidation.makeFormFieldsInvalid(convertedFormFields, this.ccFields);\r\n }\r\n\r\n /**\r\n * Process and validates case when buyer left hosted feieds empty\r\n * @param {Object} errorPayload Payload with error information\r\n * @param {string} braintreeErrorCode Error code\r\n */\r\n processBraintreeHostedFiledsErrors(errorPayload, braintreeErrorCode) {\r\n const ALL_HOSTED_FIELDS_FIELDS_EMPTY = 'HOSTED_FIELDS_FIELDS_EMPTY';\r\n const HOSTED_FIELDS_FIELDS_INVALID = 'HOSTED_FIELDS_FIELDS_INVALID';\r\n\r\n switch (braintreeErrorCode) {\r\n case ALL_HOSTED_FIELDS_FIELDS_EMPTY:\r\n this.allFieldsAreEmptyErrorBehavior();\r\n\r\n break;\r\n\r\n case HOSTED_FIELDS_FIELDS_INVALID: {\r\n const invalidFields = errorPayload.details.invalidFieldKeys;\r\n\r\n this.someFieldsAreInvalidErrorBehavior(invalidFields);\r\n\r\n break;\r\n }\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Handle \"Credit Card\" error cases.\r\n * Cases can be split on Custom (errors trigered via \"Promise.reject\" from our side)\r\n * and on Braintree (errors from Braintree Client SDK)\r\n * @param {Object} error Error payload from \".catch()\" block\r\n * @param {Object} ccFieldsInitiated An object with initiated hosted fields\r\n */\r\n handleCreditCardError(error, ccFieldsInitiated) {\r\n if (error.name === 'BraintreeError') {\r\n this.ccFields = ccFieldsInitiated;\r\n // Puts error on the top of the Credit Page\r\n this.showBraintreeError(error);\r\n this.processBraintreeHostedFiledsErrors(error, error.code);\r\n } else {\r\n let errorMsg;\r\n\r\n // Handles the cases when 3ds secure failed\r\n if (error.customError) {\r\n errorMsg = this.alertMessages.secure3DFailed;\r\n // Not braintree errors\r\n } else {\r\n errorMsg = error.message ? error.message : error;\r\n }\r\n\r\n this.showError(errorMsg);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CreditCardAlertHandlerModel;\r\n","'use strict';\r\n\r\n// File for form fields validation (applying red, green, yellow frame)\r\n// This file is used ONLY for validation of Owner field (since Owner field isn't a Hosted Field provided by Braintree client SDK)\r\n\r\nconst creditCardFormFieldsHelper = require('../helpers/creditCardFormFieldsHelper');\r\n\r\nconst BRAINTREE_ERROR_SELECTOR = 'braintree-hosted-fields-invalid';\r\nconst BRAINTREE_VALID_SELECTOR = 'braintree-hosted-fields-valid';\r\nconst BRAINTREE_FOCUSED_SELECTOR = 'braintree-hosted-fields-focused';\r\n\r\n/**\r\n * Returns array of filed containers\r\n * @param {Array} arrayOfFormFields Array of invalid fields\r\n * @param {Object} ccFields An object of DOM credit card fields\r\n * @returns {Array} Array of filed containers\r\n */\r\nfunction getArrayOfFieldContainers(arrayOfFormFields, ccFields) {\r\n const arrayOfFieldContainers = [];\r\n let fieldContainer;\r\n\r\n arrayOfFormFields.forEach(function(fieldName) {\r\n fieldContainer = ccFields[fieldName];\r\n\r\n if (fieldContainer) {\r\n arrayOfFieldContainers.push(fieldContainer);\r\n }\r\n });\r\n\r\n return arrayOfFieldContainers;\r\n}\r\n\r\n/**\r\n * Sets 'BRAINTREE_ERROR_SELECTOR' selector to the invalid form fields\r\n * @param {Array} arrayOfInvalidFieldsFrom Array of invalisd fields\r\n * @param {Object} ccFields An object of DOM credit card fields\r\n */\r\nfunction makeFormFieldsInvalid(arrayOfInvalidFieldsFrom, ccFields) {\r\n const arrayOfInvalidFormFields = getArrayOfFieldContainers(arrayOfInvalidFieldsFrom, ccFields);\r\n\r\n arrayOfInvalidFormFields.forEach(function($field) {\r\n // remove \"field valid\" class\r\n $field.classList.remove(BRAINTREE_VALID_SELECTOR);\r\n // add \"field not valid\" class\r\n $field.classList.add(BRAINTREE_ERROR_SELECTOR);\r\n });\r\n}\r\n\r\n/**\r\n * Makes all fields invalid\r\n * @param {Object} ccFields An object of DOM credit card fields\r\n */\r\nfunction makeAllFormFieldsInvalid(ccFields) {\r\n const arrayOfCreditCardFieldNames = Object.keys(ccFields);\r\n\r\n makeFormFieldsInvalid(arrayOfCreditCardFieldNames, ccFields);\r\n}\r\n\r\n/**\r\n * Makes all form fields valid\r\n */\r\nfunction makeAllFormFieldsValid() {\r\n const arrayOfCreditCardFields = creditCardFormFieldsHelper.getCCFields().asArray;\r\n\r\n arrayOfCreditCardFields.forEach(function($field) {\r\n // remove \"field in focuse\" class\r\n $field.classList.remove(BRAINTREE_FOCUSED_SELECTOR);\r\n // remove \"field not valid\" class\r\n $field.classList.remove(BRAINTREE_ERROR_SELECTOR);\r\n // add \"field valid\" class\r\n $field.classList.add(BRAINTREE_VALID_SELECTOR);\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n makeFormFieldsInvalid,\r\n makeAllFormFieldsInvalid,\r\n makeAllFormFieldsValid\r\n};\r\n","'use strict';\r\n\r\nconst braintreeCreditCardSDK = require('./braintreeCreditCardSDK');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\n\r\n/* global Promise braintree $ */\r\n\r\n// global variables\r\nlet btClientInstancePromise;\r\nlet orderData;\r\nlet sitePrefs = {};\r\n\r\n/**\r\n * Init Braintree Credit Card model\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n * @param {boolean} is3dSecureEnabled 'BRAINTREE_CREDIT_3DSecure_Enabled' site preference value\r\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\r\n * @param {boolean} is3dSecureFallback Is fraud tools enabled value\r\n */\r\nfunction init(braintreeClientInstancePromise, is3dSecureEnabled, isFraudToolsEnabled, is3dSecureFallback) {\r\n braintreeCreditCardSDK.init(braintreeClientInstancePromise);\r\n\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n sitePrefs = {\r\n is3dSecureEnabled: is3dSecureEnabled,\r\n is3dSecureFallback: is3dSecureFallback,\r\n isFraudToolsEnabled: isFraudToolsEnabled\r\n };\r\n}\r\n\r\n/**\r\n * Gets required additional shipping info for 3ds\r\n *\r\n * @param {Object} orderAddress - User's shipping address\r\n * @returns {Object} an object with required fields\r\n */\r\n\r\nfunction getShippingAdditionalInfo(orderAddress) {\r\n return {\r\n workPhoneNumber: orderAddress.phone,\r\n shippingGivenName: orderAddress.recipientName.split(' ').slice(0, -1).join(' '),\r\n shippingSurname: orderAddress.recipientName.split(' ').slice(-1).join(' '),\r\n shippingPhone: orderAddress.phone,\r\n shippingAddress: {\r\n streetAddress: orderAddress.line1,\r\n extendedAddress: orderAddress.line2,\r\n locality: orderAddress.city,\r\n region: orderAddress.state,\r\n postalCode: decodeURIComponent(orderAddress.postalCode),\r\n countryCodeAlpha2: orderAddress.countryCode\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Updates Order data on Checkout\r\n */\r\nfunction updateOrderData() {\r\n fetch(`${window.braintreeUrls.getOrderInfoUrl}?qwe=2344`)\r\n .then((response) => {\r\n if (!response.ok) {\r\n window.location.reload();\r\n }\r\n\r\n return response.json();\r\n })\r\n .then((data) => {\r\n data.shippingAdditionalInfo = data.shippingAddress ? getShippingAdditionalInfo(data.shippingAddress) : null;\r\n orderData = data;\r\n });\r\n}\r\n\r\n/**\r\n * Returns fraud data from dataCollector payload\r\n * @returns {Object} Payload with fraud data\r\n */\r\nfunction collectFraudData() {\r\n let response;\r\n\r\n if (sitePrefs && sitePrefs.isFraudToolsEnabled) {\r\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\r\n } else {\r\n response = Promise.resolve({\r\n customMessage: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * @param {Object} tokenizationOptions Tokenize options\r\n */\r\nfunction addAuthenticationInsight(tokenizationOptions) {\r\n const braintreeCreditCardConfigs = require('../helpers/creditCardHelper').getCheckoutBraintreeCreditCardConfigs();\r\n\r\n if (braintreeCreditCardConfigs) {\r\n tokenizationOptions.authenticationInsight = {\r\n merchantAccountId: braintreeCreditCardConfigs.merchantAccountId\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * @param {string} nonce payment nonce value\r\n * @returns {Object} regulation environment value of false if an error occurs\r\n */\r\nfunction getAuthInsightRegulationEnvironment(nonce) {\r\n const config = require('../helpers/creditCardHelper').getCheckoutBraintreeCreditCardConfigs();\r\n const token = document.querySelector('#dwfrm_billing [name=\"csrf_token\"]').value;\r\n\r\n return fetch(config.vaultCreditCardUrl, {\r\n method: 'POST',\r\n body: `nonce=${nonce}&csrf_token=${token}`,\r\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\r\n }).then(response => response.json());\r\n}\r\n\r\n/**\r\n * Launch the 3D Secure login flow, returning a nonce payload.\r\n * @param {string} nonce Payment method nonce\r\n * @param {string} bin Payment method bin\r\n * @param {number} amount Total amount\r\n * @param {string} email Email\r\n * @param {Object} billingData Object with Credit Card billing data\r\n * @param {Object} shippingAdditionalInfo Object with shipping info\r\n * @param {Object} btTokenizePayload Tokenize payload\r\n * @returns {Object} Object with nonce payload or custom error\r\n */\r\nfunction apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo, btTokenizePayload) {\r\n return braintreeCreditCardSDK.apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo)\r\n .then(function(payload) {\r\n if (payload.liabilityShifted) {\r\n // \"Nonce\" is changed after successful 3DS validation. We need this line to store the last \"nonce\" value\r\n if (btTokenizePayload) {\r\n // For stored card use case we don't need this param\r\n btTokenizePayload.nonce = payload.nonce;\r\n }\r\n\r\n return {\r\n threeDSecureDataValidationPayload: payload,\r\n btTokenizePayload: btTokenizePayload\r\n };\r\n }\r\n\r\n // Case when buyer \"canceled\" 3DS window\r\n return {\r\n customError: '3DS popup was canceled by buyer'\r\n };\r\n });\r\n}\r\n\r\n/**\r\n * @param {Object} payload Payload\r\n * @returns {boolean} Triggered 3DSecure Flow or not\r\n */\r\nfunction isTrigger3DSecureFlow(payload) {\r\n const is3dSecureDisabled = sitePrefs && !sitePrefs.is3dSecureEnabled;\r\n const is3dSecureFallback = sitePrefs && sitePrefs.is3dSecureFallback;\r\n const regulationEnvironment = payload.authenticationInsight ? payload.authenticationInsight.regulationEnvironment : '';\r\n\r\n return is3dSecureDisabled && is3dSecureFallback && ['unavailable', 'psd2', 'psdtwo'].includes(regulationEnvironment);\r\n}\r\n\r\n/**\r\n * Process the new Credit Card\r\n * @param {string} email Email\r\n * @param {Object} billingData Object with Credit Card billing data\r\n * @param {boolean} isCheckoutPage Is checkout flow flag\r\n * @param {HostedFields} hfInstance A hosted fields instance\r\n * @returns {Object} Object with nonce payload or custom error\r\n */\r\nfunction processNewCard(email, billingData, isCheckoutPage, hfInstance) {\r\n const is3dSecureEnabled = sitePrefs && sitePrefs.is3dSecureEnabled;\r\n const is3dSecureFallback = sitePrefs && sitePrefs.is3dSecureFallback;\r\n const orderAmount = orderData.amount;\r\n const shippingAdditionalInfo = orderData.shippingAdditionalInfo;\r\n\r\n let result = hfInstance.tokenize(isCheckoutPage);\r\n\r\n if (is3dSecureEnabled || is3dSecureFallback) {\r\n const resultTokenize = result;\r\n\r\n result = result\r\n .then(function(payload) {\r\n const nonce = payload.btTokenizePayload.nonce;\r\n const bin = payload.btTokenizePayload.details ? payload.btTokenizePayload.details.bin : '';\r\n\r\n if (is3dSecureFallback && !isTrigger3DSecureFlow(payload.btTokenizePayload)) {\r\n return resultTokenize;\r\n }\r\n\r\n return apply3dSecureValidation(nonce,\r\n bin,\r\n orderAmount,\r\n email,\r\n billingData,\r\n shippingAdditionalInfo,\r\n payload.btTokenizePayload);\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Process the stored Credit Card\r\n * @param {string} email Email\r\n * @param {Object} billingData Object with Credit Card billing data\r\n * @param {Object} paymentMethodResponse Payment method resonse\r\n * @returns {Object} Object with nonce payload or custom error\r\n */\r\nfunction processStoredCard(email, billingData, paymentMethodResponse) {\r\n const nonce = paymentMethodResponse.nonce;\r\n const bin = paymentMethodResponse.details ? paymentMethodResponse.details.bin : '';\r\n\r\n const orderAmount = orderData.amount;\r\n const shippingAdditionalInfo = orderData.shippingAdditionalInfo;\r\n const is3dSecureEnabled = sitePrefs && sitePrefs.is3dSecureEnabled;\r\n\r\n let result = Promise.resolve({\r\n nonce,\r\n email,\r\n bin\r\n });\r\n\r\n // Case when we have a nonce, it is the case when buyer use stored credit card\r\n // otherwise, it is the case when buyer use new credit card\r\n if (is3dSecureEnabled || isTrigger3DSecureFlow(paymentMethodResponse)) {\r\n result = apply3dSecureValidation(nonce,\r\n bin,\r\n orderAmount,\r\n email,\r\n billingData,\r\n shippingAdditionalInfo);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * In case of session card we can do nothing since the nonce, 3ds, hosted fields validation already was passed\r\n * @returns {Promise} return Promise with success data\r\n */\r\nfunction processSessionCard() {\r\n return Promise.resolve({});\r\n}\r\n\r\n/**\r\n * Checks whether the basket is valid\r\n * @param {string} errorMessage Error message\r\n * @returns {Object} response object\r\n */\r\nfunction isBasketDataValid(errorMessage) {\r\n const response = {\r\n error: false,\r\n customErrorMessage: ''\r\n };\r\n\r\n if (!orderData || orderData.amount === 0) {\r\n response.error = true;\r\n response.customErrorMessage = errorMessage;\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Get BT client instance which is used currently in the model\r\n * @returns {Promise} BT client instance promise\r\n */\r\nfunction getClientInstancePromise() {\r\n return btClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n // \"tokenize\" or \"processNewCard\", or \"processStoredCard\"\r\n // can be called only after excution of \"initCreditCardFields\"\r\n processNewCard,\r\n processStoredCard,\r\n processSessionCard,\r\n getClientInstancePromise,\r\n getAuthInsightRegulationEnvironment,\r\n addAuthenticationInsight,\r\n // \"isBasketDataValid\" can be called only after calling of \"updateOrderData\"\r\n isBasketDataValid,\r\n updateOrderData,\r\n collectFraudData,\r\n isTrigger3DSecureFlow\r\n};\r\n","'use strict';\r\n\r\nconst braintreeCreditCardModel = require('./braintreeCreditCardModel');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst creditCardHelper = require('../helpers/creditCardHelper');\r\n\r\n/**\r\n * Initialize Braintree Credit Card Model. Pattern Builder is used\r\n * @returns {Object} object with booleam \"error\" flag and \"message\" attribute with error message\r\n */\r\nfunction init() {\r\n const braintreeCreditCardConfigs = creditCardHelper.getCheckoutBraintreeCreditCardConfigs();\r\n const response = {\r\n error: false,\r\n message: '',\r\n btCreditCardModel: null,\r\n btCreditCardConfigs: null\r\n };\r\n\r\n let clientToken;\r\n let btClientInstancePromise;\r\n let is3dSecureEnabled;\r\n let is3dSecureFallback;\r\n let isFraudToolsEnabled;\r\n\r\n if (braintreeCreditCardConfigs) {\r\n clientToken = braintreeCreditCardConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n is3dSecureEnabled = braintreeCreditCardConfigs.is3dSecureEnabled;\r\n is3dSecureFallback = braintreeCreditCardConfigs.is3dSecureFallback;\r\n isFraudToolsEnabled = braintreeCreditCardConfigs.isFraudToolsEnabled;\r\n\r\n braintreeCreditCardModel.init(btClientInstancePromise,\r\n is3dSecureEnabled,\r\n isFraudToolsEnabled,\r\n is3dSecureFallback);\r\n\r\n response.btCreditCardModel = braintreeCreditCardModel;\r\n response.btCreditCardConfigs = braintreeCreditCardConfigs;\r\n } else {\r\n response.error = true;\r\n response.message = 'No Credit Card Braintree Configurations';\r\n }\r\n\r\n return response;\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ */\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Returns a promise that resolves with the HostedFields instance.\r\n * @param {Object} hostedFieldsParams Object of hosted fieds parameters\r\n * @returns {Object} Object with hosted field parameters\r\n */\r\nfunction createHostedFields(hostedFieldsParams) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.hostedFields.create({\r\n client: btClientInstance,\r\n styles: hostedFieldsParams.styles,\r\n fields: hostedFieldsParams.configs\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Launch the 3D Secure login flow, returning a nonce payload.\r\n * @param {string} nonce Payment method nonce\r\n * @param {string} bin Payment method bin\r\n * @param {number} amount Total amount\r\n * @param {string} email Email\r\n * @param {Object} billingData Object with Credit Card billing data\r\n * @param {Object} shippingAdditionalInfo Object with Credit Card shipping info\r\n * @returns {Object} 3DS instance\r\n */\r\nfunction apply3dSecureValidation(nonce, bin, amount, email, billingData, shippingAdditionalInfo) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.threeDSecure.create({\r\n client: btClientInstance,\r\n version: 2\r\n })\r\n .then(function(threeDSecure) {\r\n return threeDSecure.verifyCard({\r\n amount: amount,\r\n nonce: nonce,\r\n bin: bin || '',\r\n email: email,\r\n billingAddress: {\r\n givenName: billingData.firstName,\r\n surname: billingData.lastName,\r\n phoneNumber: billingData.phone,\r\n streetAddress: billingData.address1,\r\n extendedAddress: billingData.address2,\r\n locality: billingData.city,\r\n region: billingData.stateCode,\r\n postalCode: decodeURIComponent(billingData.postalCode),\r\n countryCodeAlpha2: billingData.country\r\n },\r\n additionalInformation: shippingAdditionalInfo,\r\n onLookupComplete: function(data, next) {\r\n next();\r\n }\r\n });\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes a Credit Card and returns a nonce payload.\r\n * @param {HostedFileds} hfInstance Hosted fieled instance\r\n * @param {Object} tokenizationOptions Credit Card tokenization option\r\n * @returns {Promise} A promise that resolves with a tokenizePayload.\r\n */\r\nfunction tokenize(hfInstance, tokenizationOptions) {\r\n const tokenizeOption = tokenizationOptions || {};\r\n\r\n return hfInstance.tokenize(tokenizeOption);\r\n}\r\n\r\n/**\r\n *\r\n * @param {Promise} braintreeClientInstancePromise Braintree Credit Card instance promise\r\n */\r\nfunction init(braintreeClientInstancePromise) {\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n createHostedFields,\r\n apply3dSecureValidation,\r\n tokenize\r\n};\r\n","'use strict';\r\n\r\n/* global Promise */\r\n\r\nconst braintreeCreditCardSDK = require('./braintreeCreditCardSDK');\r\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\nconst braintreeCreditCardSdkHelper = require('../helpers/braintreeCreditCardSdkHelper');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Returns a hosted fields config object\r\n * @returns {Object} A hosted fields config object\r\n */\r\nconst getHostedFieldsConfig = () => {\r\n const $braintreeCreditCardsFields = document.querySelector('.js-braintree-credit-card-fields');\r\n\r\n return helper.tryParseJSON($braintreeCreditCardsFields.getAttribute('data-braintree-config'));\r\n};\r\n\r\n/**\r\n * HostedFields constructor\r\n */\r\nfunction HostedFieldsModel() {\r\n this.sdkHfInstance = null;\r\n this.fieldsOptions = null;\r\n this.hostedFieldsConfigs = getHostedFieldsConfig();\r\n this.verifiedCardsArray = [];\r\n}\r\n\r\n/**\r\n * Returns an object of hosted fields initiated to the DOM\r\n * @returns {Object} An object of dom elements\r\n */\r\nHostedFieldsModel.prototype.getCcFields = function() {\r\n return Object.keys(this.fieldsOptions.configs).reduce((accum, curr) => {\r\n const selector = this.fieldsOptions.configs[curr].selector;\r\n\r\n accum[selector.slice(1)] = document.querySelector(selector);\r\n\r\n return accum;\r\n }, {});\r\n};\r\n\r\n/**\r\n * Sets an UUID of a Credit card if it is already verified\r\n * @param {string} ccUUID A Credit card UUID\r\n */\r\nHostedFieldsModel.prototype.setVerifiedCardUUIDtoArray = function(ccUUID) {\r\n this.verifiedCardsArray.push(ccUUID);\r\n};\r\n\r\n/**\r\n * Returns whether a given credit card need to be verify\r\n * @param {string} ccUUID A Credit card UUID\r\n * @returns {boolean} True/False\r\n */\r\nHostedFieldsModel.prototype.isCcReVerifyRequired = function(ccUUID) {\r\n return this.hostedFieldsConfigs.isCcReVerifyEnabled && !this.verifiedCardsArray.includes(ccUUID);\r\n};\r\n\r\n/**\r\n * Initiates an observer to handle a credit card re-verify, when it is sucessfully occurred\r\n * @param {string} ccUUID A credit card UUID\r\n */\r\nHostedFieldsModel.prototype.initPaymentDetailsSelectorObserver = function(ccUUID) {\r\n const that = this;\r\n\r\n const observer = new MutationObserver(function() {\r\n if (that.hostedFieldsConfigs.isCcReVerifyEnabled) {\r\n if (!that.verifiedCardsArray.includes(ccUUID)) {\r\n that.setVerifiedCardUUIDtoArray(ccUUID);\r\n }\r\n\r\n creditCardFormFieldHelper.hideCardElements(creditCardFormFieldHelper.getCcCvvField().asArray);\r\n creditCardFormFieldHelper.showCardElements(creditCardFormFieldHelper.getCcCvvToDisplayField().asArray);\r\n document.getElementById('braintreeCvvOnlyNonce').value = '';\r\n }\r\n });\r\n\r\n observer.observe(document.querySelector('.js-braintree-payment-details'), { childList: true });\r\n};\r\n\r\n/**\r\n * Validates whether the sdkHfInstance exist\r\n * @returns {Object} An object\r\n */\r\nHostedFieldsModel.prototype.sdkHfInstanceValidation = function() {\r\n if (!this.sdkHfInstance) {\r\n return {\r\n exist: false,\r\n errorMessage: this.hostedFieldsConfigs.customMessages.HOSTED_FIELDS_INSTANCE_NOT_DEFINE\r\n };\r\n }\r\n\r\n return {\r\n exist: true\r\n };\r\n};\r\n\r\n/**\r\n * Sets whether a re-verify or basic hosted fields options to the instance\r\n * @param {Object} options A hosted fields options\r\n */\r\nHostedFieldsModel.prototype.setHostedFieldsOptions = function(options) {\r\n this.fieldsOptions = options;\r\n};\r\n\r\n/**\r\n * Initiates a hosted fileds instance\r\n * @returns {HostedFields} A Hosted fields instance\r\n */\r\nHostedFieldsModel.prototype.initHostedFields = function() {\r\n const that = this;\r\n\r\n return braintreeCreditCardSDK.createHostedFields(this.fieldsOptions)\r\n .then(function(hfInstance) {\r\n // init hosted fields instance globally\r\n that.sdkHfInstance = hfInstance;\r\n\r\n return hfInstance;\r\n });\r\n};\r\n\r\n// eslint-disable-next-line valid-jsdoc\r\n/**\r\n * Tokenizes previouselly filled hosted Credit Card fields and returns a nonce payload\r\n * @returns {Promise} Promise with { error: false, result: 'ok'} inside in case of positive response and\r\n * { error: true} in case of negative (reject, case)\r\n */\r\nHostedFieldsModel.prototype.tokenize = function(isCheckoutPage) {\r\n const btCreditCardModel = require('../braintreesdk/braintreeCreditCardModel');\r\n\r\n let tokenizationOptions;\r\n\r\n if (isCheckoutPage) {\r\n // Pull billing address from Storefront. Passed data will be tokenized and sent to Braintree\r\n tokenizationOptions = braintreeCreditCardSdkHelper.createTokenizationOptions();\r\n } else {\r\n tokenizationOptions = {};\r\n }\r\n\r\n btCreditCardModel.addAuthenticationInsight(tokenizationOptions);\r\n\r\n return braintreeCreditCardSDK.tokenize(this.sdkHfInstance, tokenizationOptions)\r\n .then(function(payload) {\r\n return {\r\n btTokenizePayload: payload\r\n };\r\n });\r\n};\r\n\r\n/**\r\n * Tokenizes previouselly filled hosted Credit Card fields and returns a nonce payload\r\n * @returns {Promise} Promise with { error: false, result: 'ok'} inside in case of positive response and\r\n * { error: true} in case of negative (reject, case)\r\n */\r\nHostedFieldsModel.prototype.tokenizeCvv = function() {\r\n return braintreeCreditCardSDK.tokenize(this.sdkHfInstance)\r\n .then(function(cvvPayload) {\r\n return {\r\n btTokenizePayload: cvvPayload\r\n };\r\n });\r\n};\r\n\r\n/**\r\n * Clear Credit Card hosted fields\r\n */\r\nHostedFieldsModel.prototype.clearHostedFields = function() {\r\n const that = this;\r\n\r\n Object.keys(this.fieldsOptions.configs).forEach(option => {\r\n that.sdkHfInstance.clear(option);\r\n });\r\n};\r\n\r\n/**\r\n * Cleanly remove anything set up to the Hosted fields\r\n */\r\nHostedFieldsModel.prototype.teardown = function() {\r\n this.sdkHfInstance.teardown();\r\n};\r\n\r\n/**\r\n * Returns An object contains the hosted fileds options for basic as weel as re-verify flow\r\n * @returns {Object} The hosted fields options\r\n */\r\nHostedFieldsModel.prototype.getFieldsOptions = function() {\r\n const braintreeCvvElId = '#braintreeCvv';\r\n const reverifyFlow = {\r\n cvv: {\r\n selector: braintreeCvvElId,\r\n placeholder: this.hostedFieldsConfigs.customMessages.REVERIFY_CC\r\n }\r\n };\r\n\r\n const basicFlow = {\r\n cardholderName: {\r\n selector: '#braintreeCardOwner'\r\n },\r\n number: {\r\n selector: '#braintreeCardNumber'\r\n },\r\n cvv: {\r\n selector: braintreeCvvElId\r\n },\r\n expirationDate: {\r\n selector: '#braintreeExpirationDate'\r\n }\r\n };\r\n\r\n const styles = creditCardFormFieldHelper.getHostedFieldsStyles();\r\n\r\n return {\r\n reverifyFlowConfigs: reverifyFlow,\r\n basicFlowConfigs: basicFlow,\r\n styles: styles\r\n };\r\n};\r\n\r\nmodule.exports = HostedFieldsModel;\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nlet braintreeCreditCardModel;\r\nlet addNewCreditCardLoader;\r\nlet alertHandler;\r\nlet ccMessages;\r\n\r\nlet hfFieldsInstance;\r\n\r\n/**\r\n * Closes js-braintree-add-new-card-block & clears hosted fields input data\r\n */\r\nfunction closeAddNewCardBlock() {\r\n const $addNewCardButton = document.querySelector('.js-braintree-add-new-card-btn');\r\n const $addNewCardBlock = document.querySelector('.js-braintree-add-new-card-block');\r\n\r\n // Hide \"Add New Card\" form\r\n $addNewCardBlock.classList.add('d-none');\r\n // Show \"Add New Card\" button\r\n $addNewCardButton.classList.remove('d-none');\r\n // Clear hosted fields input data\r\n hfFieldsInstance.clearHostedFields();\r\n}\r\n\r\n/**\r\n * Stores new Credit Card on account page\r\n * @param {Object} event Event object\r\n * @returns {void}\r\n */\r\nfunction storeNewCreditCard(event) {\r\n const creditCardAccountHelper = require('../helpers/creditCardAccount');\r\n const braintreeAccount = require('../../braintreeAccount');\r\n\r\n const $customCreditCardErrorContainer = document.getElementById('customCreditCardErrorContainer');\r\n const customErrorList = helper.tryParseJSON($customCreditCardErrorContainer.getAttribute('data-errors'));\r\n\r\n const isCheckoutPage = false;\r\n\r\n // Clears error messages on the top of the Account Page\r\n alertHandler.hideAlerts();\r\n\r\n try {\r\n if (!braintreeCreditCardModel) {\r\n throw ccMessages.CLIENT_MISSING_GATEWAY_CONFIGURATION;\r\n }\r\n\r\n addNewCreditCardLoader.show();\r\n\r\n const $addCreditCardForm = document.querySelector('.js-braintree-add-credit-card-form');\r\n\r\n helper.clearForm($addCreditCardForm);\r\n\r\n hfFieldsInstance.tokenize(isCheckoutPage)\r\n .then(function(btModelPayload) {\r\n const formValidation = require('base/components/formValidation');\r\n\r\n const tokenizePayload = btModelPayload.btTokenizePayload;\r\n const addCreditCardFormUrl = $addCreditCardForm.getAttribute('action');\r\n\r\n if (!helper.validateForm($addCreditCardForm)) {\r\n addNewCreditCardLoader.hide();\r\n $('body').trigger('payment:add', true); // TCS customization\r\n\r\n return Promise.reject(customErrorList.VALIDATION_INVALID); // eslint-disable-line no-undef\r\n }\r\n\r\n return helper.checkForDuplicatedCC(tokenizePayload)\r\n .then(function(result) {\r\n if (result.error) {\r\n throw result;\r\n }\r\n })\r\n .then(function() {\r\n return creditCardAccountHelper.verifyCard3dSecure(braintreeCreditCardModel, tokenizePayload, customErrorList);\r\n })\r\n .then(function() {\r\n // Sets value of Credit Card hidden fields needed for server side\r\n creditCardAccountHelper.setCardHiddenFields(tokenizePayload);\r\n\r\n // Call to Braintree-AccountAddCreditCardHandle preparation\r\n const formData = new FormData($addCreditCardForm);\r\n const $braintreeCreditCardNonce = document.getElementById('braintreeCreditCardNonce');\r\n\r\n fetch(`${addCreditCardFormUrl}?braintreePaymentMethodNonce=${$braintreeCreditCardNonce.value}`, {\r\n method: 'POST',\r\n body: formData\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.error) {\r\n addNewCreditCardLoader.hide();\r\n alertHandler.handleCreditCardError(data.error);\r\n delete data.error;\r\n\r\n formValidation($addCreditCardForm, data);\r\n $('body').trigger('payment:add', true); // TCS customization\r\n } else {\r\n fetch(data.renderAccountsUrl)\r\n .then((template) => template.text())\r\n .then((templateHtml) => {\r\n closeAddNewCardBlock();\r\n addNewCreditCardLoader.hide();\r\n document.querySelector('.js-credit-card-accounts').innerHTML = templateHtml;\r\n // \"Make default\" link functionality reinitiation\r\n braintreeAccount.initMakeDefaultCardEvent();\r\n // \"Remove Card\" link functionality reinitiation\r\n braintreeAccount.initRemoveCardEvent();\r\n $('body').trigger('payment:add', false); // TCS customization\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .catch(function(error) {\r\n addNewCreditCardLoader.hide();\r\n alertHandler.handleCreditCardError(error, hfFieldsInstance.getCcFields());\r\n\r\n helper.validateForm($addCreditCardForm);\r\n $('body').trigger('payment:add', true); // TCS customization\r\n });\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } catch (error) {\r\n addNewCreditCardLoader.hide();\r\n alertHandler.handleCreditCardError(error);\r\n $('body').trigger('payment:add', true); // TCS customization\r\n }\r\n}\r\n\r\n/**\r\n * Inits Credit Card account loaders\r\n */\r\nfunction initCreditCartAccountLoaders() {\r\n const loaderInstance = require('../../loaderHelper');\r\n const $braintreeCreditCardLoader = document.getElementById('braintreeCreditCardLoader');\r\n const braintreeCreditCardLoaderExists = Boolean($braintreeCreditCardLoader);\r\n\r\n if (braintreeCreditCardLoaderExists) {\r\n addNewCreditCardLoader = loaderInstance($braintreeCreditCardLoader);\r\n }\r\n}\r\n\r\n/**\r\n * Init Credit Card Account functionality\r\n * @param {Object} btCreditCardModel Braintree Credit Card model\r\n * @param {Constructor} alertHandlerModel Alert handling model\r\n * @param {Object} creditCardMessages List of Credit Card error messages\r\n * @param {Object} hostedFieldsInstance A Hosted fields instance\r\n */\r\nfunction init(btCreditCardModel, alertHandlerModel, creditCardMessages, hostedFieldsInstance) {\r\n ccMessages = creditCardMessages;\r\n alertHandler = alertHandlerModel;\r\n braintreeCreditCardModel = btCreditCardModel;\r\n hfFieldsInstance = hostedFieldsInstance;\r\n\r\n const addNewCreditCardFormExists = Boolean(document.querySelector('.js-braintree-add-credit-card-form'));\r\n\r\n initCreditCartAccountLoaders();\r\n\r\n if (addNewCreditCardFormExists) {\r\n document.querySelector('.js-braintree-add-new-card-save-btn').addEventListener('click', storeNewCreditCard);\r\n document.querySelector('.js-braintree-add-new-card-cancel-btn').addEventListener('click', closeAddNewCardBlock);\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n closeAddNewCardBlock\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * General validation of params needed for initialization of hosted fields\r\n * @param {Object} $braintreeCreditCardFieldsContainer Braintree Credit Card fields container\r\n * @param {Object} braintreeCreditCardConfig Braintree Credit Card configurations (they came from server via data attr)\r\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"massages\" attr\r\n */\r\nfunction generalHfValidation($braintreeCreditCardFieldsContainer, braintreeCreditCardConfig) {\r\n const response = {\r\n error: false,\r\n messages: ''\r\n };\r\n\r\n try {\r\n const isHostedFieldsWasInited = helper.tryParseJSON($braintreeCreditCardFieldsContainer.getAttribute('data-is-inited'));\r\n const isBraintreeCreditCardConfigValid = typeof braintreeCreditCardConfig !== 'object' || braintreeCreditCardConfig !== null;\r\n\r\n if (isHostedFieldsWasInited) {\r\n // do not add error msg since this case is expected (hosted fields should be inited just once)\r\n response.error = true;\r\n }\r\n\r\n if (!isBraintreeCreditCardConfigValid) {\r\n response.error = true;\r\n response.messages = '.js-braintree-credit-card-fields has not valid data-braintree-config';\r\n }\r\n } catch (error) {\r\n response.error = true;\r\n response.messages = error;\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Init Credit Card fields functionality\r\n * @param {Object} btCreditCardModel Braintree Credit Card model\r\n * @param {Constructor} alertHandlerModel Alert handling model\r\n * @param {Object} hostedFieldsInstance A Hosted fields instance\r\n */\r\nfunction init(btCreditCardModel, alertHandlerModel, hostedFieldsInstance) {\r\n alertHandlerModel.hideAlerts();\r\n\r\n document.querySelectorAll('.js-braintree-credit-card-fields').forEach(function(el) {\r\n try {\r\n const $braintreeCreditCardFieldsContainer = el;\r\n const braintreeCreditCardConfig = helper.tryParseJSON($braintreeCreditCardFieldsContainer.getAttribute('data-braintree-config'));\r\n const generalHostedFieldsValidation = generalHfValidation($braintreeCreditCardFieldsContainer, braintreeCreditCardConfig);\r\n\r\n if (generalHostedFieldsValidation.error) {\r\n if (generalHostedFieldsValidation.messages.length) {\r\n throw generalHostedFieldsValidation.messages;\r\n }\r\n }\r\n\r\n // Fraud Data will be only collected in case if corresponding Site Preference is enabled\r\n // For more details go inside \"btCreditCardModel.collectFraudData\" function logic\r\n btCreditCardModel.collectFraudData()\r\n .then(function(fraudDataPayload) {\r\n const $braintreeDeviceData = document.getElementById('braintreeDeviceData');\r\n\r\n if (fraudDataPayload.deviceData) {\r\n $braintreeDeviceData.value = fraudDataPayload.deviceData;\r\n }\r\n\r\n // Init \"Credit Card Hosted Fields\"\r\n return hostedFieldsInstance.initHostedFields();\r\n })\r\n .catch(function(error) {\r\n alertHandlerModel.handleCreditCardError(error);\r\n });\r\n\r\n // Update order data inside BT model each time when buyer update checkout view\r\n $('body').on('checkout:updateCheckoutView', btCreditCardModel.updateOrderData);\r\n\r\n // To prevent from repeatable Credit Card hosted fields initialization\r\n $braintreeCreditCardFieldsContainer.setAttribute('data-is-inited', true);\r\n } catch (error) {\r\n alertHandlerModel.handleCreditCardError(error);\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\nconst creditCardHelper = require('../helpers/creditCardHelper');\r\nconst paymentMethodGeneralHelper = require('../../paymentMethodGeneralHelper');\r\nconst creditCardBillingAddressHelper = require('../helpers/creditCardBillingAddressHelper');\r\n\r\nlet hostedFieldsInstance;\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 const $saveCreditCard = document.getElementById('braintreeSaveCreditCard');\r\n const $braintreeSaveCardContainer = document.getElementById('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} alertHandlerModel Alert handling model\r\n */\r\nfunction cardListChange(alertHandlerModel) {\r\n const btUtils = require('../../braintreeUtils');\r\n\r\n const $creditCardList = creditCardFormFieldHelper.getCreditCardListContainer();\r\n const $braintreeCreditCardNonce = creditCardFormFieldHelper.getCreditCardNonceFieldContainer();\r\n const $braintreeCardPaymentMethod = document.getElementById('braintreeCardPaymentMethod');\r\n var creditCardOption = $creditCardList.selectedOptions[0];\r\n\r\n // TCS CUSTOM: add safety check for when there is no selected option on the dropdown\r\n if (creditCardOption === undefined || creditCardOption === 'undefined') {\r\n creditCardOption = $creditCardList[0];\r\n }\r\n\r\n const creditCardOptionID = creditCardOption.id;\r\n const creditCardFiledsToDisplayObject = creditCardFormFieldHelper.getCCFieldsToDisplay().asObject;\r\n\r\n let creditCardFieldsToDisplayArray = creditCardFormFieldHelper.getCCFieldsToDisplay().asArray;\r\n let creditCardHostedFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\r\n // Variables only for \"braintreeSessionCreditAccount\" case\r\n let selectedCreditCard;\r\n let nonce = '';\r\n let saveCreditCard = true;\r\n let showSaveCreditCardBlock = true;\r\n\r\n const isReVerifyFlow = hostedFieldsInstance.hostedFieldsConfigs.isCcReVerifyEnabled\r\n && hostedFieldsInstance.hostedFieldsConfigs.isSavedCreditCard;\r\n\r\n const ccCvvToDisplayField = creditCardFormFieldHelper.getCcCvvToDisplayField();\r\n const ccCvvField = creditCardFormFieldHelper.getCcCvvField();\r\n const $selectedCcAccountOption = creditCardHelper.getSelectedCcAccountOption();\r\n const savedBillingAddress = $selectedCcAccountOption.getAttribute('data-billing-address');\r\n const isCcReVerifyRequired = hostedFieldsInstance.isCcReVerifyRequired($selectedCcAccountOption.value);\r\n\r\n // Clear error messages on the Billing Page\r\n alertHandlerModel.hideAlerts();\r\n\r\n if (!savedBillingAddress) {\r\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\r\n }\r\n\r\n creditCardBillingAddressHelper.displaySelectedStoredBillingAddress($selectedCcAccountOption);\r\n\r\n // Shows or hides a billing info alert for Credit card payment\r\n creditCardBillingAddressHelper.initBillingInfoAlert(savedBillingAddress);\r\n\r\n switch (creditCardOptionID) {\r\n // When buyer selected \"new cc\"\r\n case 'newCardAccount':\r\n // Initiates a basic hosted fields for new card only\r\n if (hostedFieldsInstance.sdkHfInstance && isReVerifyFlow) {\r\n const { basicFlowConfigs, styles } = hostedFieldsInstance.getFieldsOptions();\r\n\r\n hostedFieldsInstance.teardown();\r\n // Sets an appropriate hosted fields options object for Checkout page\r\n hostedFieldsInstance.setHostedFieldsOptions({\r\n styles: styles,\r\n configs: basicFlowConfigs\r\n });\r\n // Initiates the appropriate hosted fileds for new Card account\r\n hostedFieldsInstance.initHostedFields();\r\n }\r\n\r\n // Hide 'toDisplay' fields\r\n creditCardFormFieldHelper.hideCardElements(creditCardFieldsToDisplayArray.concat(ccCvvToDisplayField.asArray));\r\n\r\n creditCardFormFieldHelper.showCardElements(creditCardHostedFieldsArray.concat(ccCvvField.asArray));\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\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 creditCardFiledsToDisplayObject.cardCvvToDisplay = ccCvvToDisplayField.asObject.cardCvvToDisplay;\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.concat(ccCvvField.asArray));\r\n creditCardFormFieldHelper.showCardElements(creditCardFieldsToDisplayArray.concat(ccCvvToDisplayField.asArray));\r\n\r\n $braintreeCreditCardNonce.value = nonce;\r\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\r\n\r\n break;\r\n\r\n // Case for saved credit cards\r\n default:\r\n if (hostedFieldsInstance.sdkHfInstance && isCcReVerifyRequired) {\r\n const { reverifyFlowConfigs, styles } = hostedFieldsInstance.getFieldsOptions();\r\n\r\n hostedFieldsInstance.teardown();\r\n // Sets an appropriate hosted fields options object for Checkout page\r\n hostedFieldsInstance.setHostedFieldsOptions({\r\n styles: styles,\r\n configs: reverifyFlowConfigs\r\n });\r\n // Initiates the appropriate hosted fileds for new Card account\r\n hostedFieldsInstance.initHostedFields();\r\n }\r\n\r\n saveCreditCard = false;\r\n showSaveCreditCardBlock = false;\r\n selectedCreditCard = btUtils.getSelectedData($creditCardList);\r\n\r\n if (isCcReVerifyRequired) {\r\n creditCardFieldsToDisplayArray = creditCardFieldsToDisplayArray.concat(ccCvvField.asArray);\r\n creditCardHostedFieldsArray = creditCardHostedFieldsArray.concat(ccCvvToDisplayField.asArray);\r\n } else {\r\n creditCardFieldsToDisplayArray = creditCardFieldsToDisplayArray.concat(ccCvvToDisplayField.asArray);\r\n creditCardHostedFieldsArray = creditCardHostedFieldsArray.concat(ccCvvField.asArray);\r\n }\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 if (savedBillingAddress) {\r\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\r\n }\r\n\r\n $braintreeCreditCardNonce.value = nonce;\r\n $braintreeCardPaymentMethod.value = selectedCreditCard['data-payment-method'].value.toUpperCase();\r\n\r\n break;\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} alertHandlerModel alertHandlerModel Error handling model\r\n * @param {Object} hfInstance A Hosted fields instance\r\n */\r\nfunction init(btCreditCardModel, alertHandlerModel, hfInstance) {\r\n const $creditCardList = document.getElementById('braintreeCreditCardList');\r\n const creditCardListExist = Boolean($creditCardList);\r\n\r\n hostedFieldsInstance = hfInstance;\r\n\r\n if (creditCardListExist) {\r\n $creditCardList.addEventListener('change', function() {\r\n cardListChange(alertHandlerModel);\r\n });\r\n }\r\n\r\n cardListChange(alertHandlerModel);\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n cardListChange\r\n};\r\n","/* eslint-disable no-console */\r\n\r\n'use strict';\r\n\r\n/* global Promise braintree $ */\r\n\r\nconst helper = require('../../helper');\r\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\nconst btCreditCardModel = require('../braintreesdk/braintreeCreditCardModel');\r\nconst creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst creditCardPaymentProcessingConstants = require('../constants/creditCardPaymentProcessingConstants');\r\nconst creditCardHelper = require('../helpers/creditCardHelper');\r\n\r\nconst creditCardBillingAddressHelper = require('../helpers/creditCardBillingAddressHelper');\r\n\r\nconst $continueButton = document.querySelector('button.submit-payment');\r\nconst $creditCardList = document.getElementById('braintreeCreditCardList');\r\nconst $braintreeCreditCardLoader = document.getElementById('braintreeCreditCardLoader');\r\nconst $customCreditCardErrorContainer = document.getElementById('customCreditCardErrorContainer');\r\n\r\nlet loader;\r\nlet alertHandler;\r\n\r\nlet hfInstance;\r\n\r\n/**\r\n * Checking for customError property in payload\r\n * @param {Object} payload object with btPayload\r\n * @throws {Object} when customError property exists in payload\r\n */\r\nfunction checkForErrorInPayload(payload) {\r\n if (Object.hasOwnProperty.call(payload, 'customError')) {\r\n throw payload;\r\n }\r\n}\r\n\r\n/**\r\n * Process a stored card\r\n * @param {clientInstancePromise} clientInstancePromise A ClientInstancePromise\r\n * @param {string} email An email address\r\n * @param {string} billingData A billing address data\r\n * @returns {Promise} A promise\r\n */\r\nconst processStoredCard = (clientInstancePromise, email, billingData) => {\r\n const savedCcBillingAddressAsString = creditCardHelper.getSavedCcBillingAddressAsString();\r\n\r\n // Fills a credit card billing address input with billing address data\r\n if (savedCcBillingAddressAsString) {\r\n // Case when a Credit card has a saved billing address\r\n // Using only for updating a billing address on the server side\r\n creditCardBillingAddressHelper.setCreditCardBillingAddress(helper.tryParseJSON(savedCcBillingAddressAsString));\r\n } else {\r\n // Case when a Credit Card does not have a saved billing address\r\n creditCardBillingAddressHelper.setCreditCardBillingAddress(creditCardBillingAddressHelper.createCreditCardBillingAddress());\r\n }\r\n\r\n const $selectedCcOption = creditCardHelper.getSelectedCcAccountOption();\r\n const selectedCcOptionId = $selectedCcOption.value;\r\n\r\n if (hfInstance.isCcReVerifyRequired(selectedCcOptionId)) {\r\n hfInstance\r\n .tokenizeCvv()\r\n .then(tokenizePaylaod => {\r\n hfInstance.initPaymentDetailsSelectorObserver(selectedCcOptionId);\r\n document.getElementById('braintreeCvvOnlyNonce').value = tokenizePaylaod.btTokenizePayload.nonce;\r\n });\r\n }\r\n\r\n return creditCardPaymentProcessingHelper.getNonceFromStoredCard(clientInstancePromise, $creditCardList)\r\n .then(function(response) {\r\n if (!response) {\r\n throw Error('Payment method was not found in vault manager.');\r\n }\r\n\r\n return btCreditCardModel.getAuthInsightRegulationEnvironment(response.nonce);\r\n })\r\n .then(function(response) {\r\n return creditCardPaymentProcessingHelper.getNonceFromStoredCard(clientInstancePromise, $creditCardList)\r\n .then(function(paymentMethodResponse) {\r\n paymentMethodResponse.authenticationInsight = {\r\n regulationEnvironment: response.regulationEnvironment\r\n };\r\n\r\n return btCreditCardModel.processStoredCard(email, billingData, paymentMethodResponse)\r\n .then(function(btStoredCardPayload) {\r\n checkForErrorInPayload(btStoredCardPayload);\r\n\r\n const threeDSecureDataValidationPayload = btStoredCardPayload.threeDSecureInfo;\r\n\r\n if (threeDSecureDataValidationPayload) {\r\n creditCardPaymentProcessingHelper.fill3DsData(threeDSecureDataValidationPayload);\r\n }\r\n\r\n return Promise.resolve(btStoredCardPayload);\r\n });\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * Process Credit Card on the Billing Page\r\n * @param {Object} event Event object\r\n * @returns {void}\r\n */\r\nfunction processCreditCard(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n // Removes error messages on the Billing Page\r\n alertHandler.hideAlerts();\r\n\r\n try {\r\n const customErrorMessages = helper.tryParseJSON($customCreditCardErrorContainer.getAttribute('data-errors'));\r\n const basketDataValidResponse = btCreditCardModel.isBasketDataValid(customErrorMessages.TOTAL_BASKET_AMOUNT_INVALID);\r\n const clientInstancePromise = btCreditCardModel.getClientInstancePromise();\r\n const creditCardFlow = creditCardPaymentProcessingHelper.getCreditCardFlowID($creditCardList);\r\n\r\n if (basketDataValidResponse.error) {\r\n throw basketDataValidResponse.customErrorMessage;\r\n }\r\n\r\n // Data passed inside \"braintreeCreditCardModel\"\r\n const billingData = helper.getBillingAddressFormValues();\r\n const email = document.querySelector('.customer-summary-email').textContent;\r\n const isCheckoutFlow = true;\r\n\r\n let result;\r\n\r\n // \"Hosted Field Instance\" validation\r\n const sdkHfInstanceValResult = hfInstance.sdkHfInstanceValidation();\r\n\r\n if (!sdkHfInstanceValResult.exist) {\r\n throw sdkHfInstanceValResult.errorMessage;\r\n }\r\n\r\n loader.show();\r\n\r\n const $billingForm = document.getElementById('dwfrm_billing');\r\n\r\n helper.clearForm($billingForm);\r\n\r\n switch (creditCardFlow) {\r\n // Case for new card\r\n case creditCardPaymentProcessingConstants.FLOW_NEW_CARD_NAME:\r\n if (!helper.validateForm($billingForm)) {\r\n loader.hide();\r\n\r\n // TCS CUSTOM: Expand billing address form so error displays to user\r\n // eslint-disable-next-line max-len\r\n if (document.getElementsByClassName('js-billing-show-details').length > 0 && document.getElementsByClassName('is-invalid').length > 0) {\r\n document.getElementsByClassName('js-billing-show-details')[0].click();\r\n document.getElementsByClassName('is-invalid')[0].focus();\r\n }\r\n\r\n return Promise.reject(customErrorMessages.VALIDATION_INVALID);\r\n }\r\n\r\n result = btCreditCardModel.processNewCard(email, billingData, isCheckoutFlow, hfInstance)\r\n .then(function(btPayload) {\r\n checkForErrorInPayload(btPayload);\r\n\r\n if (!helper.validateForm($billingForm)) {\r\n loader.hide();\r\n\r\n // TCS CUSTOM: Expand billing address form so error displays to user\r\n // eslint-disable-next-line max-len\r\n if (document.getElementsByClassName('js-billing-show-details').length > 0 && document.getElementsByClassName('is-invalid').length > 0) {\r\n document.getElementsByClassName('js-billing-show-details')[0].click();\r\n document.getElementsByClassName('is-invalid')[0].focus();\r\n }\r\n\r\n return Promise.reject(customErrorMessages.VALIDATION_INVALID);\r\n }\r\n\r\n const $saveCardCheckbox = document.getElementById('braintreeSaveCreditCard');\r\n\r\n if ($saveCardCheckbox && $saveCardCheckbox.checked) {\r\n // TCS CUSTOM: Customized to allow the response to be returned instead of the\r\n // fetch returning the promise causing the code to run early\r\n return helper.checkForDuplicatedCC(btPayload).then(function(response) {\r\n if (response.error) {\r\n return Promise.reject(response.message);\r\n } else {\r\n return btPayload;\r\n }\r\n });\r\n }\r\n\r\n return btPayload;\r\n })\r\n .then(function(btPayload) {\r\n // Fills a credit card billing address input with billing address data\r\n creditCardBillingAddressHelper.setCreditCardBillingAddress(creditCardBillingAddressHelper.createCreditCardBillingAddress());\r\n\r\n document.getElementById('braintreeCreditCardBin').value = btPayload.btTokenizePayload.details.bin;\r\n\r\n // Fill hidden inputs CreditCard fields and Session CreditCard div fields\r\n creditCardPaymentProcessingHelper.fillCreditCardFormWithPayloadData(btPayload);\r\n\r\n // Filling of session card attributes for using them in business logic (client/server)\r\n creditCardPaymentProcessingHelper.setSessionCreditCardDataAttributes(btPayload);\r\n\r\n // Fill 'toDisplay' fields with data to display them for buyer\r\n creditCardPaymentProcessingHelper.fillSessionCreditCardFormWithPayloadData(btPayload);\r\n\r\n // Display \"Stored Accounts\" list\r\n creditCardPaymentProcessingHelper.displayStoredCreditCardList();\r\n\r\n // Select \"Session Account Option\" in \"Account List\"\r\n creditCardPaymentProcessingHelper.markAsSelectedSessionAccount();\r\n\r\n // Clear \"Hosted Fields\" (from iframe)\r\n hfInstance.clearHostedFields();\r\n\r\n // Show \"Session Credit Card\" fields (in div blocks)\r\n creditCardFormFieldHelper.showCardElements(creditCardFormFieldHelper\r\n .getCCFieldsToDisplay().asArray.concat(creditCardFormFieldHelper.getCcCvvToDisplayField().asArray));\r\n\r\n // Hide hosted fields (iframe fields)\r\n creditCardFormFieldHelper.hideCardElements(creditCardFormFieldHelper\r\n .getCCFields().asArray.concat(creditCardFormFieldHelper.getCcCvvField().asArray));\r\n helper.continueButtonToggle(false);\r\n\r\n return Promise.resolve(btPayload);\r\n });\r\n\r\n break;\r\n\r\n // Case for session card\r\n case creditCardPaymentProcessingConstants.FLOW_SESSION_CARD_NAME:\r\n result = btCreditCardModel.processSessionCard();\r\n\r\n break;\r\n\r\n // Case for stored card\r\n case creditCardPaymentProcessingConstants.FLOW_STORED_CARD_NAME:\r\n result = processStoredCard(clientInstancePromise, email, billingData);\r\n\r\n break;\r\n default:\r\n // Handle error with wrong checkout flow\r\n result = Promise.reject(customErrorMessages.WROND_CHECKOUT_FLOW);\r\n\r\n break;\r\n }\r\n\r\n result\r\n .then(function() {\r\n loader.hide();\r\n // Trigger \"Submit Payment\" button\r\n event.target.click();\r\n })\r\n .catch(function(error) {\r\n loader.hide();\r\n\r\n // Braintree Errors\r\n alertHandler.handleCreditCardError(error, hfInstance.getCcFields());\r\n\r\n helper.validateForm($billingForm);\r\n });\r\n } catch (error) {\r\n loader.hide();\r\n alertHandler.handleCreditCardError(error);\r\n }\r\n}\r\n\r\n/**\r\n * Inits Credit Card process on the Billing Page\r\n * @param {Constructor} alertHandlerModel Alert handling constructor\r\n * @param {Object} hostedFieldsInstance A hosted fields instance\r\n */\r\nfunction init(alertHandlerModel, hostedFieldsInstance) {\r\n loader = loaderInstance($braintreeCreditCardLoader);\r\n alertHandler = alertHandlerModel;\r\n hfInstance = hostedFieldsInstance;\r\n\r\n $continueButton.addEventListener('click', function(event) {\r\n const isCreditCardTabActive = creditCardPaymentProcessingHelper.isActiveCreditCardTab();\r\n\r\n // Removes active session payment method once 'Next: Place order' button clicked\r\n helper.removeActiveSessionPayment();\r\n\r\n if (!event.isTrusted || !isCreditCardTabActive) {\r\n return;\r\n }\r\n\r\n processCreditCard(event);\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\r\nconst creditCardHelper = require('../helpers/creditCardHelper');\r\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\nconst creditCardSessionAccountHelper = require('../helpers/creditCardSessionAccountHelper');\r\n\r\n/**\r\n * Update Session account\r\n * @param {Object} sessionOption - session option\r\n */\r\nfunction clearSessionAccount(sessionOption) {\r\n sessionOption.selected = false;\r\n sessionOption.classList.add('used-creditcard-account-hide');\r\n sessionOption.classList.remove('used-creditcard-account');\r\n sessionOption.text = '';\r\n sessionOption.setAttribute('data-session-account', false);\r\n sessionOption.setAttribute('data-owner', false);\r\n sessionOption.setAttribute('data-expiration', false);\r\n sessionOption.setAttribute('data-number', false);\r\n sessionOption.setAttribute('data-nonce', false);\r\n sessionOption.setAttribute('data-type', false);\r\n sessionOption.setAttribute('data-save-card', false);\r\n}\r\n\r\n/**\r\n * Remove Credit Card session account\r\n */\r\nfunction removeSessionNonce() {\r\n const defaultCreditCard = helper.getOptionByDataDefault('#braintreeCreditCardList');\r\n const creditCardFieldstoDisplay = creditCardFormFieldHelper.getCCFieldsToDisplay();\r\n const creditCardFieldsAsArray = creditCardFormFieldHelper.getCCFields().asArray;\r\n const ccCvvToDisplayField = creditCardFormFieldHelper.getCcCvvToDisplayField().asArray;\r\n const ccCvvField = creditCardFormFieldHelper.getCcCvvField().asArray;\r\n const sessionOption = helper.getSessionAccountOption({\r\n querySelector: '#braintreeCreditCardList',\r\n id: 'braintreeSessionCreditAccount'\r\n });\r\n\r\n if (!sessionOption) {\r\n return;\r\n }\r\n\r\n const sessionLastFour = sessionOption.getAttribute('data-last-four');\r\n const sessionType = sessionOption.getAttribute('data-type').toLowerCase();\r\n\r\n clearSessionAccount(sessionOption);\r\n\r\n // Handles case when stored and session credit card have the same type and last four digest\r\n // Makes visable already stored Credit Card in Credit Card List\r\n creditCardPaymentProcessingHelper.showAlreadyStoredCard(sessionLastFour,\r\n sessionType);\r\n\r\n creditCardSessionAccountHelper.clearCreditCardFields();\r\n creditCardSessionAccountHelper.clearCreditCardNonceField();\r\n\r\n if (defaultCreditCard) {\r\n defaultCreditCard.selected = true;\r\n\r\n creditCardFormFieldHelper.setCreditCardFieldsToDisplay(defaultCreditCard, creditCardFieldstoDisplay.asObject);\r\n\r\n // Uncheck Save Credit Card checkbox\r\n creditCardHelper.saveCreditCard(false);\r\n creditCardHelper.hideSaveCreditCardBlock(true);\r\n } else {\r\n creditCardFormFieldHelper.hideCardElements(creditCardFieldstoDisplay.asArray.concat(ccCvvToDisplayField));\r\n creditCardFormFieldHelper.showCardElements(creditCardFieldsAsArray.concat(ccCvvField));\r\n\r\n // Hides 'Select a Credit Card block' on the Billing Page\r\n const ccAccount = document.querySelector('.js-braintree-used-creditcard-account');\r\n\r\n ccAccount.classList.remove('used-creditcard-account');\r\n ccAccount.classList.add('used-creditcard-account-hide');\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n removeSessionNonce\r\n};\r\n","'use strict';\r\n\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\n\r\n/**\r\n * Constructor of VaultMgr model\r\n * @param {Promise} personalizedClientTokenPromise BT clietn instance promise\r\n */\r\nfunction CreditCardVaultManagerModel(personalizedClientTokenPromise) {\r\n this.customerPaymentMethodsFromVaultPromise = braintreeGeneral.getBtCustomerPaymentMethods(personalizedClientTokenPromise);\r\n}\r\n\r\n/**\r\n * Find CC by data within VaultMgr\r\n * @param {Promise} customerPaymentMethodsFromVaultPromise Array with Payment Methods from VaultMgr\r\n * @param {string} lastFour Last four credit card digits\r\n * @param {string} cardType Credit Card type (Visa, Mastercard)\r\n * @param {Object} expiration Month and year\r\n * @returns {Promise} Promise with found Credit Card\r\n */\r\nfunction getCardFromVaultMgrByData(customerPaymentMethodsFromVaultPromise, lastFour, cardType, expiration) {\r\n return customerPaymentMethodsFromVaultPromise\r\n .then(function(vaultMgrPaymentMethods) {\r\n return vaultMgrPaymentMethods.find(function(paymentMethod) {\r\n const isCardType = paymentMethod.type === 'CreditCard' || paymentMethod.type === 'VisaCheckoutCard';\r\n const pmDetails = paymentMethod.details;\r\n const isExpirationMatched = pmDetails.expirationMonth === expiration.month && pmDetails.expirationYear.endsWith(expiration.year);\r\n\r\n // TCS CUSTOM: Removed the isExpirationMatched per BT support from this check\r\n return isCardType && pmDetails.cardType.toLowerCase() === cardType && pmDetails.lastFour === lastFour;\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Function which look for CC by passed data inside Storefront CC list\r\n * @deprecated Function used once isCreditCardExistOnStorefrontAndVault. Will be removed.\r\n * @param {Array} storefrontCardList Array with CC from Storefront\r\n * @param {string} lastFour Last four credit card digits\r\n * @param {string} cardType Credit Card type (Visa, Mastercard)\r\n * @param {Object} expiration Month and year\r\n * @returns {Promise} Promise with found credit card\r\n */\r\nfunction getCardFromStorefrontByData(storefrontCardList, lastFour, cardType, expiration) {\r\n return storefrontCardList.find(function(storedCard) {\r\n const isExpirationMatched = storedCard.expirationMonth === expiration.month && storedCard.expirationYear.endsWith(expiration.year);\r\n\r\n return isExpirationMatched && storedCard.lastFour.toString() === lastFour.toString()\r\n && storedCard.cardType.toLocaleLowerCase() === cardType.toLocaleLowerCase();\r\n });\r\n}\r\n\r\n/**\r\n * Check is CC exists on the Storefront and in the Vault\r\n * @deprecated This function is not used anywhere in code. Will be removed.\r\n * @param {Array} storefrontCardList Array with CC from Storefront\r\n * @param {string} lastFour Last four credit card digits which buyer wants to add\r\n * @param {string} cardType Credit Card type (Visa, Mastercard) which buyer wants to add\r\n * @param {Object} expiration Month and year\r\n * @returns {Promise} Promise with true/fase. True in case if CC is exists in the Vault and on the Storefront\r\n */\r\nCreditCardVaultManagerModel.prototype.isCreditCardExistOnStorefrontAndVault = function(storefrontCardList, lastFour, cardType, expiration) {\r\n const storefrontCard = getCardFromStorefrontByData(storefrontCardList, lastFour, cardType, expiration);\r\n const vaultMgrCardPromise = getCardFromVaultMgrByData(this.customerPaymentMethodsFromVaultPromise,\r\n lastFour,\r\n cardType,\r\n expiration);\r\n\r\n return vaultMgrCardPromise\r\n .then(function(cardFromVaultMgr) {\r\n return cardFromVaultMgr && storefrontCard;\r\n });\r\n};\r\n\r\n/**\r\n * Return CC from VaultManager by passed data\r\n * @param {string} lastFour Last four credit card digits\r\n * @param {string} cardType Credit Card type (Visa, Mastercard)\r\n * @param {Object} expiration Month and year\r\n * @returns {Promise} Promise with nonce or empty string\r\n */\r\nCreditCardVaultManagerModel.prototype.getNonceByCardData = function(lastFour, cardType, expiration) {\r\n return getCardFromVaultMgrByData(this.customerPaymentMethodsFromVaultPromise,\r\n lastFour,\r\n cardType,\r\n expiration);\r\n};\r\n\r\nmodule.exports = CreditCardVaultManagerModel;\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n FLOW_NEW_CARD_NAME: 'newcard',\r\n FLOW_SESSION_CARD_NAME: 'sessioncard',\r\n FLOW_STORED_CARD_NAME: 'js-stored-card'\r\n};\r\n","'use strict';\r\n\r\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()\"\r\n// and on step of \"creditCardPayment.init()\".\r\n\r\nconst creditCardFields = require('./components/creditCardFields');\r\n\r\nconst HostedFieldsModel = require('./braintreesdk/hostedFieldsModel');\r\nconst CreditCardAlertHandlerModel = require('../creditcard/alertHandler/creditCardAlertHandlerModel');\r\n\r\nconst hostedFieldsInstance = new HostedFieldsModel();\r\n\r\nlet btCreditCardModelResponse;\r\nlet creditCardMessages;\r\n\r\n/**\r\n * Inits Credit Card functionality on the Account Page\r\n * @returns {void}\r\n */\r\nfunction initAccount() {\r\n const creditCardAccount = require('./components/creditCardAccount');\r\n\r\n const alertHandler = new CreditCardAlertHandlerModel(creditCardMessages);\r\n const { basicFlowConfigs, styles } = hostedFieldsInstance.getFieldsOptions();\r\n\r\n // Sets an appropriate hosted fields options object for Account page\r\n hostedFieldsInstance.setHostedFieldsOptions({\r\n styles: styles,\r\n configs: basicFlowConfigs\r\n });\r\n\r\n if (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\r\n alertHandler.handleCreditCardError(btCreditCardModelResponse.message);\r\n }\r\n\r\n creditCardAccount.init(btCreditCardModelResponse.btCreditCardModel,\r\n alertHandler,\r\n creditCardMessages,\r\n hostedFieldsInstance);\r\n\r\n creditCardFields.init(btCreditCardModelResponse.btCreditCardModel,\r\n alertHandler,\r\n hostedFieldsInstance);\r\n}\r\n\r\n/**\r\n * Inits Credit Card functionality on the Checkout Page\r\n * @returns {void}\r\n */\r\nasync function initCheckout() {\r\n const creditCardList = require('./components/creditCardList');\r\n const creditCardPaymentProcessing = require('./components/creditCardPaymentProcessing');\r\n\r\n const alertHandler = new CreditCardAlertHandlerModel(creditCardMessages);\r\n // Hosted fields options initializations\r\n const fieldsOptions = hostedFieldsInstance.getFieldsOptions();\r\n const isReVerifyFlow = hostedFieldsInstance.hostedFieldsConfigs.isCcReVerifyEnabled && hostedFieldsInstance.hostedFieldsConfigs.isSavedCreditCard;\r\n const configs = isReVerifyFlow ? fieldsOptions.reverifyFlowConfigs : fieldsOptions.basicFlowConfigs;\r\n\r\n // Sets an appropriate hosted fields options object for Checkout page\r\n hostedFieldsInstance.setHostedFieldsOptions({\r\n styles: fieldsOptions.styles,\r\n configs\r\n });\r\n\r\n if (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\r\n alertHandler.handleCreditCardError(btCreditCardModelResponse.message);\r\n }\r\n\r\n // Call server to update data from basket\r\n await btCreditCardModelResponse.btCreditCardModel.updateOrderData();\r\n\r\n creditCardFields.init(btCreditCardModelResponse.btCreditCardModel,\r\n alertHandler,\r\n hostedFieldsInstance);\r\n\r\n creditCardList.init(btCreditCardModelResponse.btCreditCardModel,\r\n alertHandler,\r\n hostedFieldsInstance);\r\n\r\n creditCardPaymentProcessing.init(alertHandler,\r\n hostedFieldsInstance);\r\n}\r\n\r\n/**\r\n * Inits 'braintreeCreditCardModelBuilder' on creditCard level\r\n */\r\nfunction init() {\r\n const braintreeCreditCardModelBuilder = require('./braintreesdk/braintreeCreditCardModelBuilder');\r\n\r\n btCreditCardModelResponse = braintreeCreditCardModelBuilder.init();\r\n\r\n if (!btCreditCardModelResponse.error) {\r\n creditCardMessages = btCreditCardModelResponse.btCreditCardConfigs.messages;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n initAccount,\r\n initCheckout,\r\n init\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Creates tokenization options for 'tokenize' function.\r\n * @returns {Object} Object with tokenization options.\r\n */\r\nfunction createTokenizationOptions() {\r\n const creditCardBillingAddressHelper = require('./creditCardBillingAddressHelper');\r\n\r\n return {\r\n billingAddress: creditCardBillingAddressHelper.createCreditCardBillingAddress()\r\n };\r\n}\r\n\r\nmodule.exports = {\r\n createTokenizationOptions\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Sets value of credit card hidden fields needed for server side\r\n * @param {Object} tokenizePayload Tokenize payload\r\n */\r\nfunction setCardHiddenFields(tokenizePayload) {\r\n const tokenizePayloadDetails = tokenizePayload.details;\r\n\r\n document.getElementById('braintreeCreditCardNonce').value = tokenizePayload.nonce;\r\n document.getElementById('braintreeCardType').value = tokenizePayloadDetails.cardType;\r\n document.getElementById('braintreeCardMaskNumber').value = tokenizePayloadDetails.lastFour;\r\n document.getElementById('braintreeCardHolder').value = tokenizePayloadDetails.cardholderName;\r\n}\r\n\r\n/**\r\n * @param {Object} billingAddress billing address\r\n * @returns {Object} preperad data\r\n */\r\nfunction getDataForVerifyCard(billingAddress) {\r\n let preparedData = {};\r\n\r\n const $customerInfo = document.querySelector('.js-braintree-add-new-card-block');\r\n\r\n if ($customerInfo) {\r\n preparedData = helper.tryParseJSON($customerInfo.getAttribute('data-customer-info-card'));\r\n }\r\n\r\n if (Object.keys(preparedData.billingData).length === Object.keys(billingAddress).length) {\r\n preparedData.billingData = billingAddress;\r\n }\r\n\r\n return preparedData;\r\n}\r\n\r\n/**\r\n * @param {Object} braintreeCreditCardModel credit card model\r\n * @param {Object} tokenizePayload payload\r\n * @param {Object} errorList object with errors\r\n * @returns {Object} result of validation\r\n */\r\nfunction verifyCard3dSecure(braintreeCreditCardModel, tokenizePayload, errorList) {\r\n const creditCardHelper = require('../helpers/creditCardHelper');\r\n\r\n const prefs = creditCardHelper.getCheckoutBraintreeCreditCardConfigs();\r\n const is3DSecureFlow = prefs.is3dSecureEnabled || braintreeCreditCardModel.isTrigger3DSecureFlow(tokenizePayload);\r\n\r\n if (prefs.is3DSecureVerificationAccountPage && is3DSecureFlow) {\r\n // Fill in this data\r\n const billingData = {};\r\n const orderAmount = '0.00';\r\n const customerInfo = getDataForVerifyCard(billingData);\r\n\r\n const nonce = tokenizePayload.nonce;\r\n const bin = tokenizePayload.details ? tokenizePayload.details.bin : '';\r\n\r\n const braintreeCreditCardSDK = require('../braintreesdk/braintreeCreditCardSDK');\r\n\r\n return braintreeCreditCardSDK.apply3dSecureValidation(nonce,\r\n bin,\r\n orderAmount,\r\n customerInfo.email,\r\n customerInfo.billingData,\r\n customerInfo.shippingAdditionalInfo).then(function(payload) {\r\n if (payload.liabilityShifted) {\r\n // \"Nonce\" is changed after successful 3DS validation. We need this line to store the last \"nonce\" value\r\n if (tokenizePayload) {\r\n // For stored card use case we don't need this param\r\n tokenizePayload.nonce = payload.nonce;\r\n }\r\n\r\n return {\r\n threeDSecureDataValidationPayload: payload,\r\n btTokenizePayload: tokenizePayload\r\n };\r\n }\r\n\r\n // Case when buyer \"canceled\" 3DS window\r\n throw new Error(errorList.CARD_VERIFY_ERROR_MESSAGE);\r\n });\r\n }\r\n\r\n return {};\r\n}\r\n\r\nmodule.exports = {\r\n verifyCard3dSecure,\r\n setCardHiddenFields,\r\n getDataForVerifyCard\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Display billing address of passed payment option (of selected Credit Card payment option)\r\n * @param {Object} $selectedCreditCardPayment Selected Credit Card payment option\r\n */\r\nfunction displaySelectedStoredBillingAddress($selectedCreditCardPayment) {\r\n const paymentMethodGeneralHelper = require('../../paymentMethodGeneralHelper');\r\n\r\n if ($selectedCreditCardPayment) {\r\n const selectedOptionClassList = $selectedCreditCardPayment.classList;\r\n const storedCcAddressClassName = 'js-stored-credit-card-address';\r\n const $storedCreditCardAddressOption = document.querySelector(`.${storedCcAddressClassName}`);\r\n\r\n if (selectedOptionClassList.contains('js-stored-card')) {\r\n const billingAddressAsString = paymentMethodGeneralHelper.getBillingAddressAsString($selectedCreditCardPayment);\r\n\r\n if (billingAddressAsString !== '') {\r\n if ($storedCreditCardAddressOption) {\r\n $storedCreditCardAddressOption.innerText = billingAddressAsString;\r\n $storedCreditCardAddressOption.selected = true;\r\n } else {\r\n const option = document.createElement('option');\r\n\r\n option.innerHTML = billingAddressAsString;\r\n option.selected = true;\r\n option.classList.add(storedCcAddressClassName);\r\n\r\n document.getElementById('billingAddressSelector').append(option);\r\n }\r\n }\r\n\r\n // TCS CUSTOM: ensure Saved CC based billing address is updated on the billing address form\r\n try {\r\n // eslint-disable-next-line max-len\r\n var selectedBillingAddress = $selectedCreditCardPayment && $selectedCreditCardPayment.getAttribute('data-billing-address') ? JSON.parse($selectedCreditCardPayment.getAttribute('data-billing-address')) : null;\r\n\r\n if (selectedBillingAddress) {\r\n document.getElementById('billingFirstName').value = selectedBillingAddress.firstName;\r\n document.getElementById('billingLastName').value = selectedBillingAddress.lastName;\r\n document.getElementById('billingAddressOne').value = selectedBillingAddress.address1;\r\n document.getElementById('billingAddressTwo').value = selectedBillingAddress.address2;\r\n document.getElementById('billingAddressCity').value = selectedBillingAddress.city;\r\n document.getElementById('billingZipCode').value = selectedBillingAddress.postalCode;\r\n document.getElementById('billingState').value = selectedBillingAddress.stateCode;\r\n // eslint-disable-next-line max-len\r\n document.getElementById('billingCountry').value = 'countryCode' in selectedBillingAddress ? selectedBillingAddress.countryCode : selectedBillingAddress.country;\r\n document.getElementById('phoneNumber').value = selectedBillingAddress.phone;\r\n }\r\n } catch (e) {}\r\n } else if ($storedCreditCardAddressOption) {\r\n $storedCreditCardAddressOption.selected = false;\r\n } else {\r\n // TCS CUSTOM: ensure billing address is updated on the billing address form\r\n try {\r\n // eslint-disable-next-line max-len\r\n var defaultBillingAddress = $selectedCreditCardPayment && $selectedCreditCardPayment.getAttribute('data-first-name') ? $selectedCreditCardPayment : null;\r\n\r\n if (defaultBillingAddress) {\r\n document.getElementById('billingFirstName').value = defaultBillingAddress.getAttribute('data-first-name');\r\n document.getElementById('billingLastName').value = defaultBillingAddress.getAttribute('data-last-name');\r\n document.getElementById('billingAddressOne').value = defaultBillingAddress.getAttribute('data-address1');\r\n document.getElementById('billingAddressTwo').value = defaultBillingAddress.getAttribute('data-address2');\r\n document.getElementById('billingAddressCity').value = defaultBillingAddress.getAttribute('data-city');\r\n document.getElementById('billingZipCode').value = defaultBillingAddress.getAttribute('data-postal-code');\r\n document.getElementById('billingState').value = defaultBillingAddress.getAttribute('data-state-code');\r\n document.getElementById('billingCountry').value = defaultBillingAddress.getAttribute('data-country-code');\r\n document.getElementById('phoneNumber').value = defaultBillingAddress.getAttribute('data-phone');\r\n }\r\n } catch (e) {}\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Shows or hides a billing info alert for the credit cart payment method\r\n * @param {Object} savedBillingAddress A billing Address object\r\n */\r\nfunction initBillingInfoAlert(savedBillingAddress) {\r\n const $creditCardBillingInfoAlert = document.querySelector('.js-creditcard-billing-address-info-alert');\r\n // Shows or hides a billing info alert for Credit card payment\r\n\r\n if (savedBillingAddress) {\r\n $creditCardBillingInfoAlert.style.display = 'block';\r\n } else {\r\n $creditCardBillingInfoAlert.style.display = 'none';\r\n }\r\n}\r\n\r\n/**\r\n * Creates a valid billing address for Credit card payment method\r\n * @returns {Object} A billing address object\r\n */\r\nfunction createCreditCardBillingAddress() {\r\n const helper = require('../../helper');\r\n\r\n const billingData = helper.getBillingAddressFormValues();\r\n\r\n return {\r\n firstName: billingData.firstName,\r\n lastName: billingData.lastName,\r\n address1: decodeURIComponent(billingData.address1),\r\n address2: decodeURIComponent(billingData.address2),\r\n city: decodeURIComponent(billingData.city),\r\n stateCode: billingData.stateCode,\r\n postalCode: decodeURIComponent(billingData.postalCode),\r\n country: decodeURIComponent(billingData.country),\r\n phone: billingData.phone\r\n };\r\n}\r\n\r\n/**\r\n * Fills a credit card billing address input the with billing address data\r\n * @param {Object} billingAddress A billing address object\r\n */\r\nfunction setCreditCardBillingAddress(billingAddress) {\r\n document.getElementById('braintreeCardBillingAddress').value = JSON.stringify(billingAddress);\r\n}\r\n\r\nmodule.exports = {\r\n initBillingInfoAlert,\r\n createCreditCardBillingAddress,\r\n setCreditCardBillingAddress,\r\n displaySelectedStoredBillingAddress\r\n};\r\n","'use strict';\r\n\r\n// This file is about form fields manipulations.\r\n\r\n/**\r\n * Returns an object contains an object and an array of credit card fields to Display\r\n * @returns {Object} Object\r\n */\r\nfunction getCCFieldsToDisplay() {\r\n const ccToDisplayFieldsAsObject = {\r\n cardOwnerToDisplay: document.getElementById('braintreeCardOwnerToDisplay'),\r\n cardNumberToDisplay: document.getElementById('braintreeCardNumberToDisplay'),\r\n cardExpirationToDisplay: document.getElementById('braintreeExpirationToDisplay')\r\n };\r\n\r\n return {\r\n asObject: ccToDisplayFieldsAsObject,\r\n asArray: Object.values(ccToDisplayFieldsAsObject)\r\n };\r\n}\r\n\r\n/**\r\n * Returns an object contains an object and an array of credit card cvv field to Display\r\n * @returns {Object} Object\r\n */\r\nconst getCcCvvToDisplayField = () => {\r\n const asObject = {\r\n cardCvvToDisplay: document.getElementById('braintreeCvvToDisplay')\r\n };\r\n\r\n return {\r\n asObject: asObject,\r\n asArray: Object.values(asObject)\r\n };\r\n};\r\n\r\n/**\r\n * Returns an object contains an object and an array of cvv credit card field\r\n * @returns {Object} Object\r\n */\r\nconst getCcCvvField = () => {\r\n const asObject = {\r\n braintreeCvv: document.getElementById('braintreeCvv')\r\n };\r\n\r\n return {\r\n asObject: asObject,\r\n asArray: Object.values(asObject)\r\n };\r\n};\r\n\r\n/**\r\n * Returns an object contains an object and an array of credit card fields\r\n * @returns {Object} Object\r\n */\r\nfunction getCCFields() {\r\n const ccFieldsAsObject = {\r\n braintreeCardOwner: document.getElementById('braintreeCardOwner'),\r\n braintreeExpirationDate: document.getElementById('braintreeExpirationDate'),\r\n braintreeCardNumber: document.getElementById('braintreeCardNumber')\r\n };\r\n\r\n return {\r\n asObject: ccFieldsAsObject,\r\n asArray: Object.values(ccFieldsAsObject)\r\n };\r\n}\r\n\r\n/**\r\n * Returns braintreeCreditCardNonce container\r\n * @returns {Object} Input element\r\n */\r\nfunction getCreditCardNonceFieldContainer() {\r\n return document.getElementById('braintreeCreditCardNonce');\r\n}\r\n\r\n/**\r\n * Returns braintreeCreditCardList container\r\n * @returns {Object} Select element\r\n */\r\nfunction getCreditCardListContainer() {\r\n return document.getElementById('braintreeCreditCardList');\r\n}\r\n\r\n/**\r\n * Sets Credit Card field to display\r\n * @param {Object} selectedCard The values of fields to be set\r\n * @param {Object} cacheCardFields Object of elements contain credit cards fields to display\r\n */\r\nfunction setCreditCardFieldsToDisplay(selectedCard, cacheCardFields) {\r\n const cartNumber = selectedCard.dataset.number;\r\n\r\n cacheCardFields.cardNumberToDisplay.innerHTML = cartNumber;\r\n cacheCardFields.cardExpirationToDisplay.innerHTML = selectedCard.dataset.expiration;\r\n cacheCardFields.cardOwnerToDisplay.innerHTML = selectedCard.dataset.owner;\r\n\r\n if (cacheCardFields.cardCvvToDisplay) {\r\n cacheCardFields.cardCvvToDisplay.innerHTML = '***';\r\n }\r\n\r\n document.getElementById('braintreeCardType').value = selectedCard.dataset.type;\r\n document.getElementById('braintreeCardMaskNumber').value = cartNumber;\r\n}\r\n\r\n/**\r\n * Sets Credit Card fileds on the Billing Page\r\n * @param {Object} selectedCard The values of fields to be set\r\n * @param {Object} cacheCardFields Object of elements contain credit cards fields\r\n */\r\nfunction setCardFields(selectedCard, cacheCardFields) {\r\n cacheCardFields.cardNumberToDisplay.innerHTML = selectedCard['data-number'].value;\r\n cacheCardFields.cardExpirationToDisplay.innerHTML = selectedCard['data-expiration'].value;\r\n cacheCardFields.cardOwnerToDisplay.innerHTML = selectedCard['data-owner'].value;\r\n\r\n if (cacheCardFields.cardCvvToDisplay) {\r\n cacheCardFields.cardCvvToDisplay.innerHTML = '***';\r\n }\r\n\r\n document.getElementById('braintreeCardType').value = selectedCard['data-type'].value;\r\n document.getElementById('braintreeCardMaskNumber').value = selectedCard['data-number'].value;\r\n}\r\n\r\n/**\r\n * Shows Credit Card fileds on the Billing Page\r\n * @param {Array} cardFields Array of credit card fileds\r\n */\r\nfunction showCardElements(cardFields) {\r\n cardFields.forEach(function(el) {\r\n el.style.display = '';\r\n });\r\n}\r\n\r\n/**\r\n * Hides Credit Card fileds on the Billing Page\r\n * @param {Array} cardFields Array of Credit Card fileds\r\n */\r\nfunction hideCardElements(cardFields) {\r\n cardFields.forEach(function(el) {\r\n el.style.display = 'none';\r\n });\r\n}\r\n\r\n/**\r\n * Returns Credit Card hosted fileds styles\r\n * @returns {Object} Object of styles\r\n */\r\nfunction getHostedFieldsStyles() {\r\n return {\r\n input: {\r\n 'font-size': '16px',\r\n color: '#b7802a'\r\n },\r\n ':focus': {\r\n color: 'blue'\r\n },\r\n '.valid': {\r\n color: 'green'\r\n },\r\n '.invalid': {\r\n color: 'red'\r\n },\r\n '.cvv::placeholder': {\r\n color: 'red'\r\n }\r\n };\r\n}\r\n\r\nmodule.exports = {\r\n getCCFieldsToDisplay,\r\n getCCFields,\r\n getCreditCardNonceFieldContainer,\r\n getCreditCardListContainer,\r\n showCardElements,\r\n hideCardElements,\r\n setCreditCardFieldsToDisplay,\r\n setCardFields,\r\n getHostedFieldsStyles,\r\n getCcCvvToDisplayField,\r\n getCcCvvField\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Uncheck Save Credit Card checkbox\r\n * @param {boolean} save true/false\r\n */\r\nfunction saveCreditCard(save) {\r\n const isSave = save ? true : false; // eslint-disable-line\r\n\r\n document.getElementById('braintreeSaveCreditCard').checked = isSave;\r\n}\r\n\r\n/**\r\n * Hides or Display 'braintreeSaveCardContainer' container\r\n * @param {boolean} hide true/false\r\n */\r\nfunction hideSaveCreditCardBlock(hide) {\r\n const isHide = hide ? true : false; // eslint-disable-line\r\n\r\n document.getElementById('braintreeSaveCardContainer').style.display = isHide ? 'none' : 'block';\r\n}\r\n\r\n/**\r\n * Returns Braintree Credit Card configs\r\n * @returns {Object} Braintree Credit Card configs\r\n */\r\nfunction getCheckoutBraintreeCreditCardConfigs() {\r\n let braintreeCreditCardFieldsConfigs = null;\r\n\r\n try {\r\n braintreeCreditCardFieldsConfigs = helper.tryParseJSON(document.querySelector('.js-braintree-credit-card-fields')\r\n .getAttribute('data-braintree-config'));\r\n } catch (error) {\r\n return braintreeCreditCardFieldsConfigs;\r\n }\r\n\r\n return braintreeCreditCardFieldsConfigs;\r\n}\r\n\r\n/**\r\n * Returns a selected credit card option\r\n * @returns {DomElement} A selected credit card option\r\n */\r\nfunction getSelectedCcAccountOption() {\r\n const creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\n const $creditCardList = creditCardFormFieldHelper.getCreditCardListContainer();\r\n\r\n // TCS CUSTOM: Fix for when the dropdown has no selected value\r\n var selectedIndex = $creditCardList.selectedIndex >= 0 ? $creditCardList.selectedIndex : 0;\r\n var returnValue = document.getElementById('braintreeCreditCardList').options[selectedIndex];\r\n\r\n return returnValue;\r\n}\r\n\r\n/**\r\n * Returns a credit card billing address as string from data attribute\r\n * @returns {string} A credit card billing address as string\r\n */\r\nfunction getSavedCcBillingAddressAsString() {\r\n return getSelectedCcAccountOption().getAttribute('data-billing-address');\r\n}\r\n\r\nmodule.exports = {\r\n getCheckoutBraintreeCreditCardConfigs,\r\n saveCreditCard,\r\n hideSaveCreditCardBlock,\r\n getSavedCcBillingAddressAsString,\r\n getSelectedCcAccountOption\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst CreditCardVaultManagerModel = require('../components/creditCardVaultManagerModel');\r\n\r\nconst cardPlaceholder = '************';\r\nconst btSessionCreditAccountSelectorID = 'braintreeSessionCreditAccount';\r\nconst ATTR_DATA_EXPIRATION = 'data-expiration';\r\n\r\n/**\r\n * Displays stores Credit Cards list on the Billing Page\r\n */\r\nfunction displayStoredCreditCardList() {\r\n const $creditCardAccount = document.querySelector('.js-braintree-used-creditcard-account');\r\n\r\n $creditCardAccount.classList.remove('used-creditcard-account-hide');\r\n $creditCardAccount.classList.add('used-creditcard-account');\r\n}\r\n\r\n/**\r\n * Fills the Credit Card form hidden inputs with payload data\r\n * @param {Object} braintreeResponse Object contains the data of new payment method\r\n */\r\nfunction fillCreditCardFormWithPayloadData(braintreeResponse) {\r\n const btResponse = braintreeResponse.btTokenizePayload;\r\n const $creditCardFieldsCardNumber = document.querySelector('input[name=dwfrm_billing_creditCardFields_cardNumber]');\r\n\r\n if (btResponse) {\r\n const btResponseDetails = btResponse.details;\r\n\r\n document.getElementById('braintreeCardType').value = btResponseDetails.cardType;\r\n document.getElementById('braintreeCardMaskNumber').value = cardPlaceholder + btResponseDetails.lastFour;\r\n document.getElementById('braintreeCardExpirationMonth').value = btResponseDetails.expirationMonth;\r\n document.getElementById('braintreeCardExpirationYear').value = btResponseDetails.expirationYear.substr(2);\r\n document.getElementById('braintreeCardHolder').value = btResponseDetails.cardholderName;\r\n\r\n if ($creditCardFieldsCardNumber) {\r\n $creditCardFieldsCardNumber.value = cardPlaceholder + btResponseDetails.lastFour;\r\n }\r\n\r\n document.querySelector('input[name=braintreePaymentMethodNonce]').value = btResponse.nonce;\r\n }\r\n}\r\n\r\n/**\r\n * Fills the session Credit Card form inputs with payload data\r\n * @param {Object} braintreeResponse Object contains the data of new payment method\r\n */\r\nfunction fillSessionCreditCardFormWithPayloadData(braintreeResponse) {\r\n const btResponse = braintreeResponse.btTokenizePayload;\r\n const usedCreditCardAccount = Boolean(document.querySelector('.js-braintree-used-creditcard-account'));\r\n\r\n if (usedCreditCardAccount && btResponse) {\r\n const btResponseDetails = btResponse.details;\r\n const $sessionCreditCard = document.getElementById(btSessionCreditAccountSelectorID);\r\n\r\n // Fields filling for displaying session card fields to the buyer\r\n document.getElementById('braintreeCardOwnerToDisplay').textContent = btResponseDetails.cardholderName;\r\n document.getElementById('braintreeCardNumberToDisplay').textContent = cardPlaceholder + btResponseDetails.lastFour;\r\n document.getElementById('braintreeExpirationToDisplay').textContent\r\n = `${btResponseDetails.expirationMonth}/${btResponseDetails.expirationYear.substr(2)}`;\r\n\r\n // Fields filling for displaying session card option value\r\n $sessionCreditCard.textContent = `${$sessionCreditCard.getAttribute('data-type')}\r\n ${$sessionCreditCard.getAttribute('data-number')}\r\n ${$sessionCreditCard.getAttribute(ATTR_DATA_EXPIRATION)}\r\n ${$sessionCreditCard.getAttribute('data-owner')}`;\r\n }\r\n}\r\n\r\n/**\r\n * Filling of session card attributes for using them in business logic (client/server)\r\n * @param {Object} braintreeResponse Tokenize payload from braintree\r\n */\r\nfunction setSessionCreditCardDataAttributes(braintreeResponse) {\r\n const $sessionCreditCard = document.getElementById(btSessionCreditAccountSelectorID);\r\n const $braintreeSaveCreditCard = document.getElementById('braintreeSaveCreditCard');\r\n\r\n const btResponse = braintreeResponse.btTokenizePayload;\r\n const btResponseDetails = btResponse.details;\r\n const isSavedCard = $braintreeSaveCreditCard ? $braintreeSaveCreditCard.checked : false;\r\n\r\n $sessionCreditCard.classList.remove('used-creditcard-account-hide');\r\n $sessionCreditCard.setAttribute('data-number', cardPlaceholder + btResponseDetails.lastFour);\r\n $sessionCreditCard.setAttribute(ATTR_DATA_EXPIRATION, `${btResponseDetails.expirationMonth}/${btResponseDetails.expirationYear.substr(2)}`);\r\n $sessionCreditCard.setAttribute('data-type', btResponseDetails.cardType);\r\n $sessionCreditCard.setAttribute('data-last-four', btResponseDetails.lastFour);\r\n $sessionCreditCard.setAttribute('data-owner', btResponseDetails.cardholderName);\r\n $sessionCreditCard.setAttribute('data-nonce', btResponse.nonce);\r\n $sessionCreditCard.setAttribute('data-session-account', true);\r\n $sessionCreditCard.setAttribute('data-save-card', isSavedCard);\r\n}\r\n\r\n/**\r\n * Marks a session Credit Card account as selected\r\n */\r\nfunction markAsSelectedSessionAccount() {\r\n const $newCCAccount = document.getElementById('newCardAccount');\r\n const $sessionCreditCard = document.getElementById(btSessionCreditAccountSelectorID);\r\n\r\n $newCCAccount.removeAttribute('selected');\r\n $sessionCreditCard.selected = true;\r\n}\r\n\r\n/**\r\n * Returns a Credit Card flow ID from selector\r\n * @param {Object} $creditCardList Selector contained the Credit Card flow ID\r\n * @returns {string} Credit Card flow ID\r\n */\r\nfunction getCreditCardFlowID($creditCardList) {\r\n const selectedOptionValue = $creditCardList.value;\r\n const newCardID = 'newcard';\r\n const sessionCardID = 'sessioncard';\r\n const storedCardID = 'js-stored-card';\r\n\r\n let selectedOption = null;\r\n let creditCardFlowID = null;\r\n\r\n switch (selectedOptionValue) {\r\n case newCardID:\r\n creditCardFlowID = newCardID;\r\n\r\n break;\r\n\r\n case sessionCardID:\r\n creditCardFlowID = sessionCardID;\r\n\r\n break;\r\n\r\n default:\r\n // TCS CUSTOM: Add fallback in case the select is broken\r\n selectedOption = helper.getSelectedOption($creditCardList);\r\n if (selectedOption !== undefined) {\r\n if (selectedOption.classList.contains(storedCardID)) {\r\n creditCardFlowID = storedCardID;\r\n }\r\n } else if (selectedOption === undefined && selectedOptionValue === '') {\r\n // selectedOption and selectedOptionValue are undefined, fallback to new card for safety\r\n creditCardFlowID = newCardID;\r\n }\r\n\r\n break;\r\n }\r\n\r\n return creditCardFlowID;\r\n}\r\n\r\n/**\r\n * Returns object with nonce related to stored card\r\n * @param {Promise} clientInstancePromise Client instance promise\r\n * @param {Object} $creditCardList Selector with needed data\r\n * @returns {Object} Response object\r\n */\r\nfunction getNonceFromStoredCard(clientInstancePromise, $creditCardList) {\r\n const CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(clientInstancePromise);\r\n const $selectedOption = helper.getSelectedOption($creditCardList);\r\n const cardType = $selectedOption.getAttribute('data-type').toLowerCase();\r\n const lastFour = $selectedOption.getAttribute('data-last-four').toString();\r\n const [month, year] = $selectedOption.getAttribute(ATTR_DATA_EXPIRATION).split('/');\r\n const expiration = { month, year };\r\n\r\n // TCS CUSTOM: Check if the custom attribute data-is-expired is true to show\r\n const isExpired = ($selectedOption.getAttribute('data-is-expired').toLowerCase() === 'true');\r\n\r\n if (isExpired) {\r\n throw Error('Payment method is expired.');\r\n }\r\n\r\n return CreditCardVaultManagerModelInstance.getNonceByCardData(lastFour, cardType, expiration);\r\n}\r\n\r\n/**\r\n * Fills 3DS data\r\n * @param {Object} threeDSecureDataValidationPayload 3DS information about the card\r\n */\r\nfunction fill3DsData(threeDSecureDataValidationPayload) {\r\n const $braintreeIs3dSecureRequired = document.getElementById('braintreeIs3dSecureRequired');\r\n\r\n if (threeDSecureDataValidationPayload && threeDSecureDataValidationPayload.liabilityShifted) {\r\n $braintreeIs3dSecureRequired.value = 'true';\r\n }\r\n}\r\n\r\n/**\r\n * Returns whether Credit Card tab is active on the Billing Page\r\n * @returns {boolean} true/false\r\n */\r\nfunction isActiveCreditCardTab() {\r\n return document\r\n .querySelector('.payment-options[role=tablist] a[data-toggle=\"tab\"][href=\"#creditcard-content\"]')\r\n .classList\r\n .contains('active');\r\n}\r\n\r\n/**\r\n * Get stored card by last four digits and card type\r\n * @param {string} lastFour Last four card digits\r\n * @param {string} cardType Card type\r\n * @returns {Object} Jquery object of found stored card\r\n */\r\nfunction getStoredCardByData(lastFour, cardType) {\r\n return Array.from(document.querySelectorAll('.js-stored-card')).find(($card) => {\r\n const storedCardType = $card.dataset.type.toLowerCase();\r\n const storedCardLastFour = $card.dataset.lastFour.toString();\r\n\r\n return storedCardType === cardType && storedCardLastFour === lastFour;\r\n });\r\n}\r\n\r\n/**\r\n * Shows already stored card by last four digits and card type\r\n * @param {string} lastFour Last four card digits\r\n * @param {string} cardType Card type\r\n * @returns {boolean} true in case if stored card with provided params (lastFour, cardType) was found\r\n */\r\nfunction showAlreadyStoredCard(lastFour, cardType) {\r\n const $storedCard = getStoredCardByData(lastFour, cardType);\r\n let flag = false;\r\n\r\n if ($storedCard) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n}\r\n\r\nmodule.exports = {\r\n displayStoredCreditCardList,\r\n fillCreditCardFormWithPayloadData,\r\n fillSessionCreditCardFormWithPayloadData,\r\n setSessionCreditCardDataAttributes,\r\n markAsSelectedSessionAccount,\r\n getCreditCardFlowID,\r\n getNonceFromStoredCard,\r\n fill3DsData,\r\n isActiveCreditCardTab,\r\n showAlreadyStoredCard\r\n};\r\n","'use strict';\r\n\r\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\r\n\r\n/**\r\n * Clears Credit Card fields of session account\r\n */\r\nfunction clearCreditCardFields() {\r\n const creditCardFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\r\n\r\n creditCardFieldsArray.forEach(function(el) {\r\n el.value = '';\r\n });\r\n}\r\n\r\n/**\r\n * Clears Credit Card nonce of session account\r\n */\r\nfunction clearCreditCardNonceField() {\r\n document.getElementById('braintreeCreditCardNonce').value = '';\r\n}\r\n\r\nmodule.exports = {\r\n clearCreditCardFields,\r\n clearCreditCardNonceField\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\nconst googlePayErrorMessages = require('../constants/errorMessages');\r\n\r\n/**\r\n * Google Pay alert handler model\r\n */\r\nclass GooglePayAlertHandlerModel extends AlertHandlerModel {\r\n constructor(alertMessages) {\r\n super();\r\n this.alertMessages = alertMessages;\r\n }\r\n\r\n /**\r\n * Shows order total equal 0 error\r\n */\r\n showOrderTotalError() {\r\n const zeroAmountErrorMsg = googlePayErrorMessages.ORDER_TOTAL_0;\r\n\r\n this.showError(zeroAmountErrorMsg);\r\n throw zeroAmountErrorMsg;\r\n }\r\n\r\n /**\r\n * Handles Google Pay error by types\r\n * @param {Object} error Error object or error message\r\n */\r\n handleGooglePayError(error) {\r\n if (error.name === 'BraintreeError') {\r\n this.showBraintreeError(error);\r\n } else if (error.statusCode === 'DEVELOPER_ERROR') {\r\n this.showError(error.statusMessage);\r\n } else if (error.message !== googlePayErrorMessages.GOOGLE_PAY_WINDOW_CLOSED) {\r\n this.showError(error.message);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a Google Pay error object to show on Google Pay popup\r\n * @param {string} intent Intent of Google Pay error\r\n * @param {string} errorMessage Error message\r\n * @returns {Object} An error pbject\r\n */\r\n getPaymentDataError(intent, errorMessage) {\r\n const googlePayConstants = require('../constants/googlePayPaymentProcessingConstants');\r\n const errorMessages = require('../constants/errorMessages');\r\n\r\n if (intent === googlePayConstants.INTENT_SHIPPING_OPTION) {\r\n return {\r\n reason: googlePayConstants.REASON_SHIPPING_OPTION_INVALID,\r\n message: errorMessage || errorMessages.SHIPPING_OPTION_INVALID,\r\n intent: intent\r\n };\r\n }\r\n\r\n if (intent === googlePayConstants.INTENT_SHIPPING_ADDRESS) {\r\n return {\r\n reason: googlePayConstants.REASON_SHIPPING_ADDRESS_UNSERVICEABLE,\r\n message: errorMessages.SHIPPING_ADDRESS_UNSERVICEABLE,\r\n intent: intent\r\n };\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n\r\nmodule.exports = GooglePayAlertHandlerModel;\r\n","'use strict';\r\n\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst braintreeGooglePaySDK = require('../braintreesdk/braintreeGooglePaySDK');\r\nconst helper = require('../../helper');\r\n\r\n/* global Promise braintree $ */\r\n\r\n// Global variables\r\n// Is Froud tools enabled\r\nlet isFtEnabled;\r\nlet btClientInstancePromise;\r\nlet googlePaymentInstance;\r\nlet paymentsClient;\r\n\r\nlet amount;\r\nlet currencyCode;\r\n\r\nlet shippingOptionId;\r\n\r\n/**\r\n * Init Baintree Credit Card model\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\r\n */\r\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\r\n braintreeGooglePaySDK.init(braintreeClientInstancePromise);\r\n\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n isFtEnabled = isFraudToolsEnabled;\r\n}\r\n\r\n/**\r\n * Returns fraud data from dataCollector payload\r\n * @returns {Object} Payload with fraud data\r\n */\r\nfunction collectFraudData() {\r\n let response;\r\n\r\n if (isFtEnabled) {\r\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\r\n } else {\r\n response = Promise.resolve({\r\n customMessage: 'Fraud Data collection isn\\t enabled via Custom Site Preference'\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Preparing googlePay payment\r\n * @param {string} googleMerchantId Google Pay merchant identifier\r\n * @returns {Promise} Promise with resolve 'true' if ready to pay\r\n */\r\nfunction initGooglePay(googleMerchantId) {\r\n return braintreeGooglePaySDK.createGooglePayment(googleMerchantId)\r\n .then(function(gpInstance) {\r\n const allowedPaymentMethods = gpInstance.createPaymentDataRequest().allowedPaymentMethods;\r\n\r\n googlePaymentInstance = gpInstance;\r\n\r\n return paymentsClient.isReadyToPay({\r\n // see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest\r\n apiVersion: 2,\r\n apiVersionMinor: 0,\r\n allowedPaymentMethods: allowedPaymentMethods\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Creates a configuration object for use in the loadPaymentData method.\r\n * @param {Object} options Object with payment options\r\n * @returns {Object} Configuration object\r\n */\r\nfunction createPaymentDataRequest(options) {\r\n return braintreeGooglePaySDK.createPaymentDataRequest(googlePaymentInstance, options, amount);\r\n}\r\n\r\n/**\r\n * Parse the response from the tokenization.\r\n * @param {Object} paymentData The response back from the Google Pay tokenization.\r\n * @returns {Promise} Promise that resolve with a tokenizePayload\r\n */\r\nfunction parseResponse(paymentData) {\r\n return braintreeGooglePaySDK.parseResponse(paymentData, googlePaymentInstance);\r\n}\r\n\r\n/**\r\n * Update order amount\r\n * @returns {Promise} resolved promise which updates the amount\r\n */\r\nfunction googlePayUpdateAmount() {\r\n const config = helper.tryParseJSON(document.querySelector('.js-braintree-googlepay-button').getAttribute('data-braintree-config'));\r\n\r\n return fetch(config.getOrderInfoUrl)\r\n .then((response) => {\r\n if (!response.ok) {\r\n window.location.reload();\r\n }\r\n\r\n return response.json();\r\n })\r\n .then((data) => {\r\n amount = data.amount;\r\n currencyCode = data.currencyCode;\r\n });\r\n}\r\n\r\n/**\r\n * Handles dynamic buy flow shipping address and shipping options callback intents.\r\n * @param {Object} intermediatePaymentData response from Google Pay API a shipping address or shipping option is selected in the payment sheet.\r\n * @returns {Promise} Promise of PaymentDataRequestUpdate object to update the payment sheet.\r\n */\r\nasync function onPaymentDataChanged(intermediatePaymentData) {\r\n const googlePayConstants = require('../constants/googlePayPaymentProcessingConstants');\r\n const GooglePayAlertHandlerModel = require('../alerthandler/googlePayAlertHandlerModel');\r\n\r\n const alertHandler = new GooglePayAlertHandlerModel();\r\n const shippingAddress = intermediatePaymentData.shippingAddress;\r\n const paymentDataRequestUpdate = {};\r\n\r\n let isShippingMethodApplicable;\r\n\r\n shippingOptionId = intermediatePaymentData.shippingOptionData.id;\r\n\r\n if (shippingAddress) {\r\n const city = shippingAddress.locality;\r\n const stateCode = shippingAddress.administrativeArea;\r\n const countryCode = shippingAddress.countryCode;\r\n const postalCode = shippingAddress.postalCode;\r\n const addressQueryString = `city=${city}&stateCode=${stateCode}&countryCode=${countryCode}&postalCode=${postalCode}`;\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\r\n\r\n const applicableShippingMethods = await helper.getApplicableShippingOptions(url);\r\n\r\n isShippingMethodApplicable = applicableShippingMethods.find((shippingMethod) => shippingMethod.id === shippingOptionId);\r\n }\r\n\r\n if (intermediatePaymentData.callbackTrigger === googlePayConstants.INTENT_INITIALIZE\r\n || intermediatePaymentData.callbackTrigger === googlePayConstants.INTENT_SHIPPING_ADDRESS) {\r\n // Showing error if store doesn't ship to the address selected in Google Pay\r\n if (!shippingAddress) {\r\n return Promise.reject(paymentDataRequestUpdate);\r\n }\r\n\r\n if (!isShippingMethodApplicable) {\r\n paymentDataRequestUpdate.error = alertHandler.getPaymentDataError(googlePayConstants.INTENT_SHIPPING_ADDRESS);\r\n }\r\n } else if (intermediatePaymentData.callbackTrigger === googlePayConstants.INTENT_SHIPPING_OPTION) {\r\n // Showing error if store doesn't ship to the address selected in Google Pay\r\n if (!isShippingMethodApplicable) {\r\n paymentDataRequestUpdate.error = alertHandler.getPaymentDataError(googlePayConstants.INTENT_SHIPPING_OPTION);\r\n }\r\n\r\n // Recalculation amount taking into account new shipping price\r\n // Showing new amount in Google Pay\r\n const totalAmount = await helper.updateAmountForShippingOption(shippingOptionId);\r\n\r\n paymentDataRequestUpdate.newTransactionInfo = {\r\n currencyCode: currencyCode,\r\n totalPriceStatus: 'FINAL',\r\n totalPrice: totalAmount,\r\n totalPriceLabel: 'Final'\r\n };\r\n }\r\n\r\n return Promise.resolve(paymentDataRequestUpdate);\r\n}\r\n\r\n/**\r\n * Inits 'Google Pay' payment client object into braintreeGooglePayModel\r\n * @param {string} instanceType The type of the instance TEST/PRODUCTION\r\n * @param {string} flow Page flow\r\n */\r\nfunction initPaymentsClient(instanceType, flow) {\r\n const paymentDataCallbacks = {\r\n onPaymentAuthorized: () => Promise.resolve({ transactionState: 'SUCCESS' })\r\n };\r\n\r\n if (flow === window.braintreeConstants.PAGE_FLOW_CART) {\r\n paymentDataCallbacks.onPaymentDataChanged = onPaymentDataChanged;\r\n }\r\n\r\n paymentsClient = new google.payments.api.PaymentsClient({ // eslint-disable-line no-undef\r\n environment: instanceType, // TEST/PRODUCTION\r\n paymentDataCallbacks: paymentDataCallbacks\r\n });\r\n}\r\n\r\n/**\r\n * Gets 'Google Pay' payment client object\r\n * @returns {Object} 'Google Pay' payment client object\r\n */\r\nfunction getPaymentsClient() {\r\n return paymentsClient;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n collectFraudData,\r\n initGooglePay,\r\n createPaymentDataRequest,\r\n parseResponse,\r\n googlePayUpdateAmount,\r\n // initialize a Google Pay 'PaymentsClient' object\r\n initPaymentsClient,\r\n getPaymentsClient\r\n};\r\n","'use strict';\r\n\r\nconst braintreeGooglePayModel = require('./braintreeGooglePayModel');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst googlePayHelper = require('../helpers/googlePayHelper');\r\n\r\nconst googlePayErrorMessages = require('../constants/errorMessages');\r\n\r\n/**\r\n * Initialize Braintree Google Pay Model. Pattern Builder is used\r\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\r\n */\r\nfunction init() {\r\n const braintreeGooglePayConfigs = googlePayHelper.getBraintreeGooglePayConfigs();\r\n const response = {\r\n error: false,\r\n message: '',\r\n btGooglePayModel: null,\r\n btGooglePayConfigs: null\r\n };\r\n\r\n let clientToken;\r\n let btClientInstancePromise;\r\n\r\n if (braintreeGooglePayConfigs) {\r\n clientToken = braintreeGooglePayConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n\r\n braintreeGooglePayModel.init(btClientInstancePromise,\r\n braintreeGooglePayConfigs.isFraudToolsEnabled);\r\n\r\n response.btGooglePayModel = braintreeGooglePayModel;\r\n response.btGooglePayConfigs = braintreeGooglePayConfigs;\r\n } else {\r\n response.error = true;\r\n response.message = googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ */\r\n\r\nconst googlePaySDKHelper = require('../helpers/googlePaySDKHelper');\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Creates googlePayment instance\r\n * @param {string} googleMerchantId Google Pay merchant identifier\r\n * @returns {Promise} A promise resolve with with the GooglePaymnet instance\r\n */\r\nfunction createGooglePayment(googleMerchantId) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n const googlePayOptions = googlePaySDKHelper.createGooglePayOptions(btClientInstance,\r\n googleMerchantId);\r\n\r\n return braintree.googlePayment.create(googlePayOptions);\r\n });\r\n}\r\n\r\n/**\r\n * Creates a configuration object for use in the loadPaymentData method.\r\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\r\n * @param {Object} options Object with payment options\r\n * @param {number} amount Order total amount\r\n * @returns {Object} Configuration object\r\n */\r\nfunction createPaymentDataRequest(googlePaymentInstance, options, amount) {\r\n const requestObject = {\r\n transactionInfo: {\r\n currencyCode: options.currency,\r\n totalPriceStatus: 'FINAL',\r\n totalPrice: String(amount)\r\n },\r\n merchantInfo: {\r\n merchantName: options.displayName\r\n },\r\n shippingAddressRequired: options.isShippingAddressRequired,\r\n shippingAddressParameters: {\r\n allowedCountryCodes: options.countries,\r\n phoneNumberRequired: true\r\n },\r\n emailRequired: true,\r\n callbackIntents: ['PAYMENT_AUTHORIZATION']\r\n };\r\n\r\n if (options.isShippingOptionRequired) {\r\n requestObject.shippingOptionRequired = options.isShippingOptionRequired;\r\n requestObject.shippingOptionParameters = {\r\n defaultSelectedOptionId: googlePaySDKHelper.getSelectedShippingId(),\r\n shippingOptions: options.shippingOptions\r\n };\r\n requestObject.callbackIntents.push('SHIPPING_ADDRESS', 'SHIPPING_OPTION');\r\n }\r\n\r\n if (options.merchantId) {\r\n requestObject.merchantInfo.merchantId = options.merchantId;\r\n }\r\n\r\n return googlePaymentInstance.createPaymentDataRequest(requestObject);\r\n}\r\n\r\n/**\r\n * Parse the response from the tokenization.\r\n * @param {Object} paymentData The response back from the Google Pay tokenization.\r\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\r\n * @returns {Promise} Promise that resolve with a tokenizePayload\r\n */\r\nfunction parseResponse(paymentData, googlePaymentInstance) {\r\n return googlePaymentInstance.parseResponse(paymentData);\r\n}\r\n\r\n/**\r\n * Inits braintreeGooglePaySDK with client instance promise\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n */\r\nfunction init(braintreeClientInstancePromise) {\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n createGooglePayment,\r\n createPaymentDataRequest,\r\n parseResponse,\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\r\n\r\nconst $braintreeGooglePayLoader = document.querySelector('.js-braintree-googlepay-loader');\r\n\r\n// Global variables\r\nlet googlePayConfigs;\r\nlet googlePayBillingAddressData;\r\nlet googlePayShippingAddressData;\r\nlet googlePayNonce;\r\nlet googlepayPaymentType;\r\nlet googlePayCardDescription;\r\nlet googlepayCheckoutFormData;\r\nlet alertHandler;\r\nlet loader;\r\n\r\n/**\r\n * Expends Google Pay checkout form with required data\r\n */\r\nfunction expandGooglePayCheckoutFormData() {\r\n const deviceData = document.getElementById('braintreeGooglePayDeviceData').value;\r\n const $csrfToken = document.querySelector('.js-braintree-cart-buttons-wrap #csrf_token');\r\n\r\n googlepayCheckoutFormData.append($csrfToken.name, $csrfToken.value);\r\n googlepayCheckoutFormData.append('braintreeGooglePayNonce', googlePayNonce);\r\n googlepayCheckoutFormData.append('braintreeGooglePayDeviceData', deviceData);\r\n googlepayCheckoutFormData.append('braintreeGooglePayCardDescription', googlePayCardDescription);\r\n googlepayCheckoutFormData.append('braintreeGooglepayPaymentType', googlepayPaymentType);\r\n googlepayCheckoutFormData.append('braintreeGooglePayShippingAddress', JSON.stringify(googlePayShippingAddressData) || '{}');\r\n googlepayCheckoutFormData.append('braintreeGooglePayBillingAddress', JSON.stringify(googlePayBillingAddressData) || '{}');\r\n}\r\n\r\n/**\r\n * Process Google Pay on the Cart Page\r\n */\r\nfunction processCartFlow() {\r\n const $braintreeCartButtons = document.querySelector('.js-braintree-cart-buttons-wrap');\r\n const placeOrderUrl = window.braintreeUrls.placeOrderUrl;\r\n const checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\r\n const checkoutFormFields = $braintreeCartButtons.getAttribute('data-checkout-form-fields');\r\n const paymentFieldsData = helper.getPaymentFieldsData(googlePayBillingAddressData, googlePayConfigs.paymentMethodName);\r\n\r\n // Creates and updates Google Pay checkout form for service side\r\n googlepayCheckoutFormData = helper.createPaymentFormData(checkoutFormFields, paymentFieldsData);\r\n googlepayCheckoutFormData.append('pageFlowCart', true);\r\n expandGooglePayCheckoutFormData();\r\n // submit customer form with email (CheckoutServices-SubmitCustomer)\r\n // as we skip step \"login via guest/registered user\" while express checkout\r\n // email is set only in case of guest checkout and if email is not already set\r\n paymentMethodGeneral.submitCustomerForm(googlePayBillingAddressData.email);\r\n\r\n fetch(helper.getUrlWithCsrfToken(checkoutSubmitPayment), {\r\n method: 'POST',\r\n body: googlepayCheckoutFormData\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.error) {\r\n let errorMessage = '';\r\n\r\n if (data.fieldErrors.length) {\r\n data.fieldErrors.forEach(function(error, index) {\r\n const keys = Object.keys(error);\r\n\r\n if (keys.length) {\r\n errorMessage\r\n += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\r\n }\r\n });\r\n\r\n loader.hide();\r\n alertHandler.showError(errorMessage);\r\n }\r\n\r\n if (data.serverErrors.length) {\r\n data.serverErrors.forEach(function(error) {\r\n errorMessage += `${error}. `;\r\n });\r\n\r\n loader.hide();\r\n alertHandler.showError(errorMessage);\r\n }\r\n\r\n if (data.cartError) {\r\n window.location.href = data.redirectUrl;\r\n }\r\n\r\n return;\r\n }\r\n\r\n sessionStorage.setItem('pageState', 'cart');\r\n window.location.href = placeOrderUrl;\r\n })\r\n .catch((error) => {\r\n if (error && error.redirectUrl) {\r\n window.location.href = error.redirectUrl;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Inits Google Pay cart components\r\n * @param {Object} billingAddressData Billing address data object\r\n * @param {Object} shippingAddressData Shipping address data object\r\n * @param {string} nonce Payment method nonce\r\n * @param {string} paymentType Payment method type\r\n * @param {string} description Google Pay card description\r\n * @param {Constructor} alertHandlerModel Alert handler Model\r\n */\r\nfunction init(billingAddressData, shippingAddressData, nonce, paymentType, description, alertHandlerModel) {\r\n const $googlepayButton = document.querySelector('.js-braintree-googlepay-button');\r\n\r\n googlePayConfigs = helper.tryParseJSON($googlepayButton.getAttribute('data-braintree-config'));\r\n googlePayBillingAddressData = billingAddressData;\r\n googlePayShippingAddressData = shippingAddressData;\r\n googlePayNonce = nonce;\r\n googlepayPaymentType = paymentType;\r\n googlePayCardDescription = description;\r\n loader = loaderInstance($braintreeGooglePayLoader);\r\n alertHandler = alertHandlerModel;\r\n\r\n processCartFlow();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n// Global variables\r\nlet googlePayBillingAddressData;\r\nlet googlePayNonce;\r\nlet googlepayPaymentType;\r\nlet googlePayCardDescription;\r\n\r\nconst $googlepayNonce = document.getElementById('braintreeGooglePayNonce');\r\nconst $googlepayCardDescription = document.getElementById('braintreeGooglePayCardDescription');\r\nconst $braintreeGooglepayPaymentType = document.getElementById('braintreeGooglepayPaymentType');\r\nconst $googlePayBillingAddress = document.getElementById('braintreeGooglePayBillingAddress');\r\n\r\n/**\r\n * Process Google Pay on the Checkout Page\r\n */\r\nfunction processCheckoutFlow() {\r\n $googlepayNonce.value = googlePayNonce;\r\n $googlepayCardDescription.value = googlePayCardDescription;\r\n $braintreeGooglepayPaymentType.value = googlepayPaymentType;\r\n\r\n // Updating Storefront Billing Form data with GooglePay Billing\r\n const storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(googlePayBillingAddressData);\r\n\r\n $googlePayBillingAddress.value = JSON.stringify(googlePayBillingAddressData);\r\n\r\n helper.updateBillingFormValues(storeFrontBillingData);\r\n}\r\n\r\n/**\r\n * Inits Google Pay checkout components\r\n * @param {string} nonce Payment method nonce\r\n * @param {string} description Google Pay card description\r\n * @param {string} paymentType Payment method type\r\n * @param {Object} billingAddressData Billing address data object\r\n */\r\nfunction init(nonce, description, paymentType, billingAddressData) {\r\n googlePayBillingAddressData = billingAddressData;\r\n googlePayNonce = nonce;\r\n googlepayPaymentType = paymentType;\r\n googlePayCardDescription = description;\r\n\r\n processCheckoutFlow();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst googlePayHelper = require('../helpers/googlePayHelper');\r\n\r\n/**\r\n * Inits Google Pay list components\r\n */\r\nfunction init() {\r\n const $googlepayCardDescription = document.getElementById('braintreeGooglePayCardDescription');\r\n const $btGooglepayAccountsList = document.getElementById('braintreeGooglepayAccountsList');\r\n const googlePayAccountListExist = Boolean($btGooglepayAccountsList);\r\n\r\n if (googlePayAccountListExist) {\r\n $btGooglepayAccountsList.addEventListener('change', function() {\r\n googlePayHelper.googlePayContentTabHandler(true);\r\n });\r\n }\r\n\r\n if ($googlepayCardDescription.value === 'GooglePay') {\r\n $googlepayCardDescription.value = $btGooglepayAccountsList.selectedOptions[0].label;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n// Helpers\r\nconst googlePayHelper = require('../helpers/googlePayHelper');\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst googlePayPaymentProcessingHelper = require('../helpers/googlePayPaymentProcessingHelper');\r\nconst helper = require('../../helper');\r\n\r\n// Components\r\nconst googlePayCart = require('../components/googlePayCart');\r\nconst googlePayCheckout = require('../components/googlePayCheckout');\r\nconst googlePaySessionAccount = require('../components/googlePaySessionAccount');\r\nconst googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\r\n\r\n// Global varibales\r\nlet googlePayModel;\r\nlet paymentsClient;\r\nlet googlePayConfig;\r\nlet alertHandler;\r\n\r\nconst $googlePayButton = document.querySelector('.js-braintree-googlepay-button');\r\nconst $braintreeGooglePayLoader = document.querySelector('.js-braintree-googlepay-loader');\r\nconst $continueButton = document.querySelector('button.submit-payment');\r\n\r\nlet loader;\r\n\r\n/**\r\n * Functionality over tokenized payment\r\n * @param {Objet} data data object\r\n * @param {Object} result data object\r\n */\r\nfunction onTokenizePayment(data, result) {\r\n // General functionality for Cart and Billing Page\r\n const googlePayNonce = result.nonce;\r\n const googlePayPaymentType = result.type;\r\n const gpCardDescription = `${result.details.cardType} ${result.details.lastFour}`;\r\n const billingAddressData = googlePayPaymentProcessingHelper.createGooglepayBillingAddressData(data);\r\n const googlePayFlow = googlePayPaymentProcessingHelper.getGooglePayFlowId();\r\n\r\n let shippingAddressData;\r\n\r\n helper.removeActiveSessionPayment();\r\n\r\n switch (googlePayFlow) {\r\n case googlePayPaymentProcessingConstants.FLOW_CART_NAME:\r\n shippingAddressData = googlePayPaymentProcessingHelper.createGooglepayShippingAddressData(data.shippingAddress);\r\n\r\n googlePayCart.init(billingAddressData, shippingAddressData, googlePayNonce, googlePayPaymentType, gpCardDescription, alertHandler);\r\n\r\n break;\r\n case googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\r\n googlePayCheckout.init(googlePayNonce, gpCardDescription, googlePayPaymentType, billingAddressData);\r\n googlePaySessionAccount.showGooglepayAccount(gpCardDescription);\r\n $continueButton.click();\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Call back function to be resolved when on Google Pay payment button is clicked\r\n * @returns {void}\r\n */\r\nasync function onGooglePaymentButtonClicked() { // eslint-disable-line no-inner-declarations\r\n const options = googlePayConfig.options;\r\n const amount = options.amount;\r\n\r\n if (googlePayConfig.googleMerchantId) {\r\n options.merchantId = googlePayConfig.googleMerchantId;\r\n }\r\n\r\n alertHandler.hideAlerts();\r\n\r\n try {\r\n if (amount === 0) {\r\n alertHandler.showOrderTotalError();\r\n }\r\n\r\n loader.show();\r\n\r\n // Updates order amount for paymentDataRequest\r\n await googlePayModel.googlePayUpdateAmount();\r\n\r\n if (options.isShippingOptionRequired) {\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}`;\r\n const shippingOptions = await helper.getApplicableShippingOptions(url);\r\n\r\n options.shippingOptions = shippingOptions;\r\n }\r\n\r\n // Create a configuration object for use in the loadPaymentData method.\r\n const paymentDataRequest = googlePayModel.createPaymentDataRequest(options);\r\n\r\n // Update card payment methods to require billing address\r\n const cardPaymentMethod = paymentDataRequest.allowedPaymentMethods[0];\r\n\r\n cardPaymentMethod.parameters.billingAddressRequired = true;\r\n cardPaymentMethod.parameters.billingAddressParameters = {\r\n format: 'FULL',\r\n phoneNumberRequired: true\r\n };\r\n\r\n paymentsClient.loadPaymentData(paymentDataRequest)\r\n .then(function(paymentData) {\r\n googlePayModel.parseResponse(paymentData)\r\n .then(function(tokenizePayload) {\r\n onTokenizePayment(paymentData, tokenizePayload);\r\n });\r\n loader.hide();\r\n })\r\n .catch(function(error) {\r\n loader.hide();\r\n alertHandler.handleGooglePayError(error);\r\n });\r\n } catch (error) {\r\n alertHandler.handleGooglePayError(error);\r\n }\r\n}\r\n\r\n/**\r\n * Init and add Google Pay on the Cart or Billing Page\r\n */\r\nfunction initGooglePay() {\r\n // This class generated by the Google Pay API, if size mode in BM is set to fill\r\n const $googlePayButtonFillStyle = document.querySelector('.gpay-button-fill-new-style');\r\n\r\n if (!$googlePayButtonFillStyle) {\r\n $googlePayButton.classList.add('googlepay-container');\r\n }\r\n\r\n // added default Google Pay style configuration in case of an error\r\n let googlePayButtonStyle = {\r\n buttonColor: 'black',\r\n buttonType: 'buy',\r\n buttonSizeMode: 'static'\r\n };\r\n\r\n const googlePayButtonConfigs = googlePayHelper.getBraintreeGooglePayConfigs();\r\n\r\n if (googlePayButtonConfigs && googlePayButtonConfigs.style) {\r\n googlePayButtonStyle = googlePayButtonConfigs.style;\r\n }\r\n\r\n const result = googlePayModel.collectFraudData()\r\n .then(function(fraudDataPayload) {\r\n googlePayHelper.setGooglePayDeviceData(fraudDataPayload);\r\n loader.hide();\r\n\r\n return googlePayModel.initGooglePay(googlePayConfig.googleMerchantId)\r\n .then(function(response) {\r\n if (response.result) {\r\n // Creates 'Google Pay Button' and append to the DOM\r\n googlePayButtonStyle.onClick = onGooglePaymentButtonClicked;\r\n const button = paymentsClient.createButton(googlePayButtonStyle);\r\n\r\n $googlePayButton.appendChild(button);\r\n }\r\n });\r\n });\r\n\r\n result.catch(function(error) {\r\n loader.hide();\r\n alertHandler.handleGooglePayError(error);\r\n });\r\n}\r\n\r\n/**\r\n * Inits Google Pay payment processing components\r\n * @param {Object} braintreeGooglePayModel Google Pay model\r\n * @param {Constructor} alertHandlerModel Alert handler model\r\n */\r\nfunction init(braintreeGooglePayModel, alertHandlerModel) {\r\n loader = loaderInstance($braintreeGooglePayLoader);\r\n googlePayModel = braintreeGooglePayModel;\r\n paymentsClient = braintreeGooglePayModel.getPaymentsClient();\r\n googlePayConfig = helper.tryParseJSON($googlePayButton.getAttribute('data-braintree-config'));\r\n alertHandler = alertHandlerModel;\r\n\r\n initGooglePay();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst $googlepayButton = document.querySelector('.js-braintree-googlepay-button');\r\nconst $googlepayContent = document.querySelector('.js-braintree-googlepay-content');\r\n\r\n// Helpers\r\nconst helper = require('../../helper');\r\nconst googlePayHelper = require('../helpers/googlePayHelper');\r\n\r\nconst usedGooglePayAccountClassName = 'used-googlepay-account';\r\nconst usedGooglePayAccountHideClassName = 'used-googlepay-account-hide';\r\n\r\n/**\r\n * Shows session Google Pay account on the Billing Page\r\n * @param {string} cardDescription Session card description\r\n */\r\nfunction showGooglepayAccount(cardDescription) {\r\n const $newGPAccount = document.getElementById('newGPAccount');\r\n const $gpAccount = document.querySelector('.js-braintree-used-googlepay-account');\r\n const $sessionAccount = document.getElementById('sessionGPAccount');\r\n\r\n $newGPAccount.removeAttribute('selected');\r\n\r\n // Sets new session account\r\n $sessionAccount.classList.remove(usedGooglePayAccountHideClassName);\r\n $sessionAccount.classList.add(usedGooglePayAccountClassName);\r\n $sessionAccount.text = cardDescription;\r\n $sessionAccount.selected = true;\r\n $sessionAccount.setAttribute('data-session-account', 'true');\r\n\r\n $gpAccount.classList.remove(usedGooglePayAccountHideClassName);\r\n $gpAccount.classList.add(usedGooglePayAccountClassName);\r\n\r\n $googlepayButton.classList.add('d-none');\r\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\r\n helper.continueButtonToggle(false);\r\n}\r\n\r\n/*\r\n Remove method was used and change appearance of Google Pay tab\r\n* */\r\nfunction removeSessionNonce() {\r\n const $gpAccount = document.querySelector('.js-braintree-used-googlepay-account');\r\n\r\n $gpAccount.classList.remove(usedGooglePayAccountClassName);\r\n $gpAccount.classList.add(usedGooglePayAccountHideClassName);\r\n\r\n const $sessionAccount = document.getElementById('sessionGPAccount');\r\n\r\n $sessionAccount.classList.add(usedGooglePayAccountHideClassName);\r\n $sessionAccount.classList.remove(usedGooglePayAccountClassName);\r\n $sessionAccount.value = '';\r\n $sessionAccount.text = '';\r\n $sessionAccount.setAttribute('data-session-account', false);\r\n $sessionAccount.setAttribute('data-save', false);\r\n\r\n document.getElementById('braintreeGooglePayNonce').value = '';\r\n document.getElementById('braintreeGooglePayBillingAddress').value = '';\r\n document.getElementById('braintreeGooglepayPaymentType').value = '';\r\n document.getElementById('braintreeGooglePayDeviceData').value = '';\r\n\r\n document.getElementById('newGPAccount').selected = true;\r\n googlePayHelper.googlePayContentTabHandler(false);\r\n}\r\n\r\nmodule.exports = {\r\n showGooglepayAccount,\r\n removeSessionNonce\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS: 'No Google Pay Braintree Configurations',\r\n ORDER_TOTAL_0: 'Order total 0 is not allowed for GooglePay',\r\n GOOGLE_PAY_WINDOW_CLOSED: 'User closed the Payment Request UI.',\r\n SHIPPING_ADDRESS_UNSERVICEABLE: 'Cannot ship to the selected address. Please choose another shipping address or shipping method.',\r\n SHIPPING_OPTION_INVALID: 'This shipping option is invalid for the given address'\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n FLOW_CHECKOUT_NAME: 'checkout',\r\n FLOW_CART_NAME: 'cart',\r\n FLOW_NEW_GP_ACCOUNT_NAME: 'newGpAccount',\r\n INTENT_INITIALIZE: 'INITIALIZE',\r\n INTENT_SHIPPING_ADDRESS: 'SHIPPING_ADDRESS',\r\n INTENT_SHIPPING_OPTION: 'SHIPPING_OPTION',\r\n REASON_SHIPPING_ADDRESS_UNSERVICEABLE: 'SHIPPING_ADDRESS_UNSERVICEABLE',\r\n REASON_SHIPPING_OPTION_INVALID: 'SHIPPING_OPTION_INVALID'\r\n};\r\n","'use strict';\r\n\r\nconst braintreeGooglePayModelBuilder = require('./braintreesdk/braintreeGooglePayModelBuilder');\r\n\r\nconst googlePayHelper = require('./helpers/googlePayHelper');\r\n\r\n// Components\r\nconst googlePayList = require('./components/googlePayList');\r\nconst googlePayPaymentProcessing = require('./components/googlePayPaymentProcessing');\r\n\r\nconst GooglePayAlertHandlerModel = require('./alerthandler/googlePayAlertHandlerModel');\r\n\r\nconst googlePayErrorMessages = require('./constants/errorMessages');\r\n\r\nlet braintreeGooglePayModelResponse;\r\nlet googlePayMessages;\r\n\r\n/**\r\n * Inits Google Pay on the Cart Page\r\n */\r\nfunction initCart() {\r\n const alertHandler = new GooglePayAlertHandlerModel(googlePayMessages);\r\n\r\n if (!braintreeGooglePayModelResponse || braintreeGooglePayModelResponse.error) {\r\n const error = braintreeGooglePayModelResponse.error || googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\r\n\r\n alertHandler.handleGooglePayError(error);\r\n }\r\n\r\n // Initialize a Google Pay 'PaymentsClient' object\r\n braintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(braintreeGooglePayModelResponse.btGooglePayConfigs.instanceType,\r\n window.braintreeConstants.PAGE_FLOW_CART);\r\n\r\n googlePayPaymentProcessing.init(braintreeGooglePayModelResponse.btGooglePayModel,\r\n alertHandler);\r\n}\r\n\r\n/**\r\n * Inits Google Pay on the Checkout Page\r\n */\r\nfunction initCheckout() {\r\n const alertHandler = new GooglePayAlertHandlerModel(googlePayMessages);\r\n\r\n if (!braintreeGooglePayModelResponse || braintreeGooglePayModelResponse.error) {\r\n const error = braintreeGooglePayModelResponse.error || googlePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\r\n\r\n alertHandler.handleGooglePayError(error);\r\n }\r\n\r\n // Triggers the Google Pay tab if Google Pay session account uses\r\n googlePayHelper.triggerGooglePayTab(braintreeGooglePayModelResponse.btGooglePayConfigs);\r\n\r\n // Initialize a Google Pay 'PaymentsClient' object\r\n braintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(braintreeGooglePayModelResponse.btGooglePayConfigs.instanceType);\r\n\r\n googlePayPaymentProcessing.init(braintreeGooglePayModelResponse.btGooglePayModel,\r\n alertHandler);\r\n\r\n googlePayList.init();\r\n}\r\n\r\n/**\r\n * Inits Google Pay components\r\n */\r\nfunction init() {\r\n braintreeGooglePayModelResponse = braintreeGooglePayModelBuilder.init();\r\n\r\n if (!braintreeGooglePayModelResponse.error) {\r\n googlePayMessages = braintreeGooglePayModelResponse.btGooglePayConfigs.messages;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n initCart,\r\n initCheckout\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Returns Braintree Google Pay configs\r\n * @returns {Object} Braintree Google Pay configs\r\n */\r\nfunction getBraintreeGooglePayConfigs() {\r\n let braintreeGooglePayButtonConfigs = null;\r\n\r\n try {\r\n braintreeGooglePayButtonConfigs = helper.tryParseJSON(document.querySelector('.js-braintree-googlepay-button')\r\n .getAttribute('data-braintree-config'));\r\n } catch (error) {\r\n return braintreeGooglePayButtonConfigs;\r\n }\r\n\r\n return braintreeGooglePayButtonConfigs;\r\n}\r\n\r\n/**\r\n * Sets device data from 'data collector' to corresponding input field\r\n * @param {Object} fraudDataPayload Froud payload data\r\n */\r\nfunction setGooglePayDeviceData(fraudDataPayload) {\r\n const $braintreeGooglePayDeviceData = document.getElementById('braintreeGooglePayDeviceData');\r\n\r\n if (fraudDataPayload.deviceData) {\r\n $braintreeGooglePayDeviceData.value = fraudDataPayload.deviceData;\r\n }\r\n}\r\n\r\n/**\r\n * Handles all behavior related to the Google Pay content tab\r\n * @param {boolean} isActiveGooglePayTab Whether Google Pay tab is active\r\n */\r\nfunction googlePayContentTabHandler(isActiveGooglePayTab) {\r\n const $btGooglepayAccountsList = document.getElementById('braintreeGooglepayAccountsList');\r\n const $googlepayButton = document.querySelector('.js-braintree-googlepay-button');\r\n const $googlepayContent = document.querySelector('.js-braintree-googlepay-content');\r\n\r\n if ($btGooglepayAccountsList.value === 'newaccount') {\r\n $googlepayButton.classList.remove('d-none');\r\n\r\n if (isActiveGooglePayTab) {\r\n helper.continueButtonToggle(true);\r\n }\r\n\r\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', true);\r\n } else {\r\n $googlepayButton.classList.add('d-none');\r\n helper.continueButtonToggle(false);\r\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\r\n }\r\n}\r\n\r\n/**\r\n * Triggers the Google Pay tab if Google Pay session account uses\r\n * @param {Object} googlePayConfigs Google Pay config object\r\n */\r\nfunction triggerGooglePayTab(googlePayConfigs) {\r\n const sessionPaymentMethodId = googlePayConfigs.sessionPaymentMethodId;\r\n const $googlePayTab = document.querySelector('.js-googlepay-tab');\r\n\r\n if (sessionPaymentMethodId === 'GooglePay') {\r\n $googlePayTab.click();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n getBraintreeGooglePayConfigs,\r\n setGooglePayDeviceData,\r\n googlePayContentTabHandler,\r\n triggerGooglePayTab\r\n};\r\n","'use strict';\r\n\r\nconst googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\r\n\r\n/**\r\n * Returns current Google Pay flow\r\n * @returns {string} Flow id checkout/cart/newGpAccount\r\n */\r\nfunction getGooglePayFlowId() {\r\n const googlePayEnabledOnCart = Boolean(document.querySelector('.js-braintree-cart-googlepay-button'));\r\n const googlePayEnabledOnCheckout = Boolean(document.querySelector('.js-braintree-billing-googlepay-button'));\r\n let googlePayFlowId = null;\r\n\r\n const flows = {\r\n checkout: googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME,\r\n cart: googlePayPaymentProcessingConstants.FLOW_CART_NAME,\r\n newGpAccount: googlePayPaymentProcessingConstants.FLOW_NEW_GP_ACCOUNT_NAME\r\n };\r\n\r\n if (googlePayEnabledOnCart) {\r\n googlePayFlowId = flows.cart;\r\n } else if (googlePayEnabledOnCheckout) {\r\n googlePayFlowId = flows.checkout;\r\n } else {\r\n googlePayFlowId = flows.newGpAccount;\r\n }\r\n\r\n return googlePayFlowId;\r\n}\r\n\r\n/**\r\n * Creates Google Pay billing address from payload data\r\n * @param {Object} data Data object\r\n * @returns {Objcet} billing address data object\r\n */\r\nfunction createGooglepayBillingAddressData(data) {\r\n const billingData = data.paymentMethodData.info.billingAddress;\r\n const billingAddress = {};\r\n const recipientName = billingData.name.split(' ');\r\n\r\n billingAddress.firstName = recipientName[0];\r\n billingAddress.lastName = recipientName[1];\r\n billingAddress.phone = billingData.phoneNumber;\r\n billingAddress.countryCodeAlpha2 = billingData.countryCode;\r\n billingAddress.streetAddress = billingData.address1;\r\n billingAddress.extendedAddress = billingData.address2;\r\n billingAddress.locality = billingData.locality;\r\n billingAddress.stateCode = billingData.administrativeArea;\r\n billingAddress.postalCode = decodeURIComponent(billingData.postalCode);\r\n billingAddress.email = data.email;\r\n\r\n return billingAddress;\r\n}\r\n\r\n/**\r\n * Creates shipping address object\r\n * @param {Object} shippingData Shipping data object\r\n * @returns {Object} Shipping data object in required format\r\n */\r\nfunction createGooglepayShippingAddressData(shippingData) {\r\n const shippingAddress = {};\r\n const recipientName = shippingData.name.split(' ');\r\n\r\n shippingAddress.firstName = recipientName[0];\r\n shippingAddress.lastName = recipientName[1];\r\n shippingAddress.phone = shippingData.phoneNumber;\r\n shippingAddress.countryCodeAlpha2 = shippingData.countryCode;\r\n shippingAddress.streetAddress = shippingData.address1;\r\n shippingAddress.extendedAddress = shippingData.address2;\r\n shippingAddress.locality = shippingData.locality;\r\n shippingAddress.region = shippingData.administrativeArea;\r\n shippingAddress.postalCode = decodeURIComponent(shippingData.postalCode);\r\n\r\n return shippingAddress;\r\n}\r\n\r\nmodule.exports = {\r\n getGooglePayFlowId,\r\n createGooglepayBillingAddressData,\r\n createGooglepayShippingAddressData\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Creates an object of configuration for creating a Google Pay payment\r\n * @param {Client} btClientInstance A client instance\r\n * @param {string} googleMerchantId Google Pay merchant identifier\r\n * @returns {Object} Configuration object\r\n */\r\nfunction createGooglePayOptions(btClientInstance, googleMerchantId) {\r\n const gpOptions = {\r\n client: btClientInstance,\r\n googlePayVersion: 2\r\n };\r\n\r\n if (googleMerchantId !== '' && googleMerchantId !== null) {\r\n gpOptions.googleMerchantId = googleMerchantId;\r\n }\r\n\r\n return gpOptions;\r\n}\r\n\r\n/**\r\n * Gets selected shipping id\r\n * @returns {string} Selected shipping id\r\n */\r\nfunction getSelectedShippingId() {\r\n const shippingMethods = document.getElementById('shippingMethods');\r\n const selectedShippingMethod = shippingMethods.options[shippingMethods.selectedIndex];\r\n\r\n return selectedShippingMethod.dataset.shippingId;\r\n}\r\n\r\nmodule.exports = {\r\n createGooglePayOptions,\r\n getSelectedShippingId\r\n};\r\n","'use strict';\r\n\r\nconst $continueButton = document.querySelector('button.submit-payment');\r\n\r\nconst cssClass = {\r\n D_NONE: 'd-none',\r\n FONT_WEIGHT_BOLD: 'font-weight-bold'\r\n};\r\n\r\nconst INVALID_CLASSNAME = 'is-invalid';\r\n\r\n/**\r\n * function to proceed a save parsing\r\n * @param {string} element string what should be parsed\r\n * @returns {Object} result of parsing\r\n */\r\nfunction tryParseJSON(element) {\r\n const AlertHandlerModel = require('./alertHandler');\r\n const alertHandler = new AlertHandlerModel();\r\n\r\n let result = null;\r\n\r\n try {\r\n result = JSON.parse(element);\r\n } catch (error) {\r\n alertHandler.showError('External server error. Try again');\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Depends on the value flag, sets style.display to the $continueButton\r\n * @param {boolean} flag Boolean value\r\n * @returns {void}\r\n */\r\nfunction continueButtonToggle(flag) {\r\n const stage = window.location.hash.substring(1);\r\n\r\n if (stage === 'placeOrder' || stage === 'shipping' || stage === null || stage === '') {\r\n return;\r\n }\r\n\r\n $continueButton.style.display = flag ? 'none' : '';\r\n}\r\n\r\n/**\r\n * Return payment method name in lovercase\r\n * @param {string} paymentMethodName Payment method name\r\n * @returns {string} Paymnet method name\r\n */\r\nfunction getPaymentMethodToLowerCase(paymentMethodName) {\r\n let paymentMethod = paymentMethodName.split('_');\r\n\r\n if (paymentMethod.length === 1) {\r\n return paymentMethodName;\r\n }\r\n\r\n paymentMethod = paymentMethod.map(function(element) {\r\n return element.charAt(0) + element.slice(1).toLocaleLowerCase();\r\n });\r\n\r\n return `${paymentMethod[0]} ${paymentMethod[1]}`;\r\n}\r\n\r\n/**\r\n * Returns HTML for given paymentMethodId\r\n * @param {string} paymentMethodId Payment method id\r\n * @param {Object} selectedPaymentInstrument Current payment instrument\r\n * @returns {string} HTML result\r\n */\r\nfunction getHtmlFromPaymentMethodId(paymentMethodId, selectedPaymentInstrument) {\r\n let htmlResult = '';\r\n\r\n if (paymentMethodId === window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL) {\r\n htmlResult += `
      ${selectedPaymentInstrument.braintreePaypalEmail}
      `;\r\n }\r\n\r\n if (paymentMethodId === window.braintreeConstants.PAYMENT_METHOD_ID_VENMO) {\r\n htmlResult += `
      ${selectedPaymentInstrument.braintreeVenmoUserId}
      `;\r\n }\r\n\r\n return htmlResult;\r\n}\r\n\r\n/**\r\n * Updates checkout view\r\n * @param {Object} e Event object\r\n * @param {Object} data Data object\r\n */\r\nfunction updateCheckoutView(e, data) {\r\n const $paymentSummary = document.querySelector('.summary-details .js-braintree-payment-details');\r\n const order = data.order;\r\n const payment = order.billing.payment;\r\n\r\n let htmlToAppend = '';\r\n\r\n if (payment && payment.selectedPaymentInstruments\r\n && payment.selectedPaymentInstruments.length > 0) {\r\n payment.selectedPaymentInstruments.forEach(selectedPaymentInstrument => {\r\n const paymentMethodId = selectedPaymentInstrument.paymentMethod;\r\n const fundingSource = selectedPaymentInstrument.fundingSource;\r\n\r\n // TCS CUSTOM START: Updates to support multiple payment methods\r\n // on a single order and gift card information\r\n htmlToAppend += '
      ';\r\n\r\n if (fundingSource === window.braintreeConstants.PP_FUNDING_SOURCE_PAYLATER) {\r\n htmlToAppend += `
      ${window.braintreeConstants.PP_PAYLATER_PAYMENT_TYPE}
      `;\r\n } else if (fundingSource === window.braintreeConstants.PP_FUNDING_SOURCE_CARD) {\r\n htmlToAppend += `
      ${window.braintreeConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE}
      `;\r\n } else {\r\n htmlToAppend += `
      ${getPaymentMethodToLowerCase(paymentMethodId)}
      `;\r\n }\r\n\r\n if (selectedPaymentInstrument.maskedCreditCardNumber) {\r\n htmlToAppend += `
      ${selectedPaymentInstrument.maskedCreditCardNumber}
      `;\r\n }\r\n\r\n if (selectedPaymentInstrument.maskedGiftCertificateCode) {\r\n htmlToAppend += `
      ${selectedPaymentInstrument.maskedGiftCertificateCode}
      `;\r\n }\r\n\r\n htmlToAppend += getHtmlFromPaymentMethodId(paymentMethodId, selectedPaymentInstrument);\r\n\r\n if (selectedPaymentInstrument.type) {\r\n htmlToAppend += `
      ${selectedPaymentInstrument.type}
      `;\r\n }\r\n\r\n htmlToAppend += `
      ${order.priceTotal.charAt(0)}${selectedPaymentInstrument.amount}
      `;\r\n\r\n htmlToAppend += '
      ';\r\n // TCS CUSTOM END\r\n });\r\n }\r\n\r\n if ($paymentSummary) {\r\n $paymentSummary.innerHTML = htmlToAppend;\r\n }\r\n}\r\n\r\n/**\r\n * Validates whether input field is valid\r\n * @param {Object} field Input filed\r\n * @returns {boolean} true/false\r\n */\r\nfunction isValidInputField(field) {\r\n if (!field.checkValidity()) {\r\n if (!field.classList.contains(INVALID_CLASSNAME)) {\r\n field.classList.add(INVALID_CLASSNAME);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if (field.checkValidity() && field.classList.contains(INVALID_CLASSNAME)) {\r\n field.classList.remove(INVALID_CLASSNAME);\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Gets Billing Address Form Values\r\n *\r\n * @returns {Object} with Billing Address\r\n */\r\nfunction getBillingAddressFormValues() {\r\n const billingFormData = Object.fromEntries(new FormData(document.getElementById('dwfrm_billing')));\r\n\r\n return Array.from(Object.entries(billingFormData)).reduce(function(accumulator, [key, value]) {\r\n let elem = key.lastIndexOf('_');\r\n\r\n if (elem < 0) {\r\n accumulator[key] = value;\r\n } else {\r\n elem = key.substring(elem + 1);\r\n accumulator[elem] = value;\r\n }\r\n\r\n return accumulator;\r\n }, {});\r\n}\r\n\r\n/**\r\n * Gets Nonce depending on payment method name\r\n *\r\n * @param {string} paymentMethodName - payment method name\r\n * @returns {boolean} nonce exist\r\n */\r\nfunction isNonceExist(paymentMethodName) {\r\n // Payment method name\r\n let pmName = paymentMethodName;\r\n\r\n // Сhange 'CREDIT_CARD' to 'CreditCard' in order to get braintreewCreditCardNonce input\r\n if (paymentMethodName === 'CREDIT_CARD') {\r\n pmName = 'CreditCard';\r\n }\r\n\r\n const $nonce = document.querySelector(`#braintree${pmName}Nonce`);\r\n\r\n if (!$nonce) {\r\n return false;\r\n }\r\n\r\n const nonceValue = $nonce.value;\r\n const $tab = document.querySelector(`.${pmName.toLowerCase()}-tab`);\r\n let isActiveTab;\r\n\r\n if ($tab) {\r\n isActiveTab = $tab.classList.contains('active');\r\n }\r\n\r\n return !isActiveTab && nonceValue;\r\n}\r\n\r\n/**\r\n * Removing BT payment from account page\r\n * @param {Object} e Event object\r\n * @returns {void}\r\n */\r\nfunction removeBtPayment(e) {\r\n const loaderInstance = require('./loaderHelper');\r\n\r\n const target = e.target;\r\n\r\n const $loaderContainter = document.getElementById(target.getAttribute('data-loader'));\r\n const accountsLoader = loaderInstance($loaderContainter);\r\n\r\n accountsLoader.show();\r\n\r\n fetch(`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute('data-id')}`)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n document.getElementById(`uuid-${data.UUID}`).remove();\r\n\r\n if (data.newDefaultAccount) {\r\n document.querySelector(`#uuid-${data.newDefaultAccount} span`).classList.add(cssClass.FONT_WEIGHT_BOLD);\r\n document.querySelector(`#uuid-${data.newDefaultAccount} button.js-braintree-make-default-card`).classList.add(cssClass.D_NONE);\r\n }\r\n\r\n $('body').trigger('cart:update');\r\n accountsLoader.hide();\r\n })\r\n .catch(() => {\r\n location.reload();\r\n accountsLoader.hide();\r\n });\r\n}\r\n\r\n/**\r\n * Create formData from fields data\r\n *\r\n * @param {Object} paymentFields fields data values\r\n * @param {Object} fieldsData fields data values\r\n * @returns {Object} cart billing form data\r\n */\r\nfunction createPaymentFormData(paymentFields, fieldsData) {\r\n let paymentFieldsParsed;\r\n\r\n if (typeof paymentFields === 'object') {\r\n paymentFieldsParsed = paymentFields;\r\n } else {\r\n paymentFieldsParsed = tryParseJSON(paymentFields);\r\n }\r\n\r\n return Object.entries(paymentFieldsParsed).reduce(function(formData, entry) {\r\n const [key, field] = entry;\r\n\r\n if (typeof field === 'object') {\r\n formData.append(field.name, fieldsData && fieldsData[key] !== null ? fieldsData[key] : field.value);\r\n }\r\n\r\n return formData;\r\n }, new FormData());\r\n}\r\n\r\n// eslint-disable-next-line require-jsdoc\r\nfunction setDefaultProperty(params) {\r\n return fetch(`${params.url}?UUID=${params.id}&pmID=${params.paymentMethodID}`)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n document.querySelector(`#uuid-${data.newDefaultProperty} span`).classList.add(cssClass.FONT_WEIGHT_BOLD);\r\n document.querySelector(`.js-braintree-make-default-card.uuid-${data.newDefaultProperty}`).classList.add(cssClass.D_NONE);\r\n document.querySelector(`#uuid-${data.toRemoveDefaultProperty} span`).classList.remove(cssClass.FONT_WEIGHT_BOLD);\r\n document.querySelector(`.js-braintree-make-default-card.uuid-${data.toRemoveDefaultProperty}`).classList.remove(cssClass.D_NONE);\r\n params.loader.hide();\r\n })\r\n .catch(() => params.loader.hide());\r\n}\r\n\r\n/**\r\n * Checks authenticated customer, account list for default Payment Method\r\n *\r\n * @param {string} selector - querySelector\r\n * @returns {Object} default data attribute or null\r\n */\r\nfunction getOptionByDataDefault(selector) {\r\n if (!document.querySelector(selector)) {\r\n return null;\r\n }\r\n\r\n return Array.apply(null, document.querySelector(selector).options).find(function(el) {\r\n return el.getAttribute('data-default') ? tryParseJSON(el.getAttribute('data-default')) : null;\r\n });\r\n}\r\n\r\n/**\r\n * Checks authenticated customer, account list for session Account\r\n *\r\n * @param {Object} params querySelector + el.id\r\n * @returns {Object} session account object\r\n */\r\nfunction getSessionAccountOption(params) {\r\n return Array.apply(null, document.querySelector(params.querySelector).options).find(function(el) {\r\n return el.id === params.id && tryParseJSON(el.getAttribute('data-session-account'));\r\n });\r\n}\r\n\r\n/**\r\n * This method is called to remove active session account\r\n *\r\n * @param {Object} isCurrent determines if delete session account for current payment\r\n * @returns {void}\r\n */\r\nfunction removeActiveSessionPayment(isCurrent = false) {\r\n const helpers = {\r\n PayPal: require('./paypal/components/payPalSessionAccount'),\r\n Venmo: require('./venmo/components/venmoSessionAccount'),\r\n GooglePay: require('./googlepay/components/googlePaySessionAccount'),\r\n CREDIT_CARD: require('./creditcard/components/creditCardSessionAccount'),\r\n SRC: require('./src/components/srcSessionAccount'),\r\n ApplePay: require('./applepay/helpers/applePayHelper')\r\n };\r\n\r\n const activePaymentMethods = [];\r\n\r\n let selectedPaymentMethod;\r\n\r\n document.querySelectorAll('.payment-options li').forEach(function(el) {\r\n activePaymentMethods.push(el.dataset.methodId);\r\n\r\n if (el.querySelector('.active')) {\r\n selectedPaymentMethod = el.dataset.methodId;\r\n }\r\n });\r\n\r\n if (isCurrent) {\r\n helpers[selectedPaymentMethod].removeSessionNonce();\r\n } else {\r\n // removes active session account but just in case if tab of currently active\r\n // session payment isn't active (buyer submited another payment method)\r\n const activePM = activePaymentMethods.find(function(el) {\r\n return isNonceExist(el);\r\n });\r\n\r\n if (activePM) {\r\n helpers[activePM].removeSessionNonce();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Update Checkout Billing form values\r\n *\r\n * @param {Object} billingData fields data values\r\n */\r\nfunction updateBillingFormValues(billingData) {\r\n const $billingFormFields = document.querySelectorAll('.billing-address select, .billing-address input, .contact-info-block input');\r\n\r\n $billingFormFields.forEach(function(el) {\r\n // TCS CUSTOM: Fix for when an already submitted form field is empty in the new form data from Apple Pay and PayPal\r\n // skip the email field to avoid any issues with wiping that out by mistake (generally not used by Apple Pay and PayPal billing data)\r\n if (billingData[el.name] !== undefined && el.name.indexOf('email') === -1) {\r\n el.value = billingData[el.name];\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Returns selected option from select container\r\n * @param {Object} $selectContainer Select container\r\n * @returns {Object} Selected option\r\n */\r\nfunction getSelectedOption($selectContainer) {\r\n const selectedOptionIndex = $selectContainer.selectedIndex;\r\n\r\n return $selectContainer.options[selectedOptionIndex];\r\n}\r\n\r\n/**\r\n * Returns payment field data to be send on backend\r\n * @param {Object} addressData Address data to be set\r\n * @param {string} paymentMethodName Payment method name\r\n * @returns {Object} payment data\r\n */\r\nfunction getPaymentFieldsData(addressData, paymentMethodName) {\r\n return {\r\n firstName: addressData.firstName,\r\n lastName: addressData.lastName,\r\n address1: addressData.streetAddress,\r\n address2: addressData.extendedAddress || '',\r\n city: addressData.locality,\r\n postalCode: decodeURIComponent(addressData.postalCode),\r\n stateCode: addressData.stateCode || addressData.region,\r\n country: addressData.countryCodeAlpha2,\r\n phone: addressData.phone,\r\n paymentMethod: paymentMethodName\r\n };\r\n}\r\n\r\n// eslint-disable-next-line require-jsdoc\r\nfunction getUpdatedStoreFrontBillingData(billingAddress) {\r\n const storeFrontBillingData = tryParseJSON(document.querySelector('.js-braintree-billing-payment-wrap')\r\n .getAttribute('data-billing-form-fields-names'));\r\n\r\n storeFrontBillingData.dwfrm_billing_addressFields_firstName = billingAddress.firstName;\r\n storeFrontBillingData.dwfrm_billing_addressFields_lastName = billingAddress.lastName;\r\n storeFrontBillingData.dwfrm_billing_addressFields_address1 = billingAddress.streetAddress;\r\n storeFrontBillingData.dwfrm_billing_addressFields_address2 = billingAddress.extendedAddress || '';\r\n storeFrontBillingData.dwfrm_billing_addressFields_city = billingAddress.locality;\r\n storeFrontBillingData.dwfrm_billing_addressFields_postalCode = decodeURIComponent(billingAddress.postalCode);\r\n storeFrontBillingData.dwfrm_billing_addressFields_states_stateCode = billingAddress.stateCode || billingAddress.region;\r\n storeFrontBillingData.dwfrm_billing_addressFields_country = billingAddress.countryCodeAlpha2;\r\n storeFrontBillingData.dwfrm_billing_contactInfoFields_phone = billingAddress.phone;\r\n\r\n return storeFrontBillingData;\r\n}\r\n\r\n/**\r\n * Remove all validation. Should be called every time before revalidating form\r\n * @param {HTMLFormElement} form - Form to be cleared\r\n * @returns {void}\r\n */\r\nfunction clearForm(form) {\r\n Array.from(form.querySelectorAll('input, select')).forEach((element) => {\r\n if (element.classList.contains(INVALID_CLASSNAME)) {\r\n element.classList.remove(INVALID_CLASSNAME);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Validate whole form\r\n * @param {HTMLFormElement} form - Form elemenent\r\n * @returns {boolean} - true if valid otherwise false\r\n */\r\nfunction validateForm(form) {\r\n if (form.checkValidity && !form.checkValidity()) {\r\n Array.from(form.querySelectorAll('input, select')).forEach((element) => {\r\n if (!element.validity.valid) {\r\n element.classList.add(INVALID_CLASSNAME);\r\n }\r\n });\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Get CSRF Token\r\n * @returns {string} - csrf token value\r\n */\r\nfunction getCsrfToken() {\r\n let $element = document.querySelector('[name=\"csrf_token\"]');\r\n\r\n if ($element && $element.value !== '') {\r\n return $element.value;\r\n }\r\n\r\n $element = document.querySelector('[data-tokenname=\"csrf_token\"]');\r\n\r\n if ($element && $element.getAttribute('data-token') !== '') {\r\n return $element.getAttribute('data-token');\r\n }\r\n\r\n return '';\r\n}\r\n\r\n/**\r\n * Add csrf token param to url\r\n * @param {string} url - source url\r\n * @returns {string} - url with csrf_token param\r\n */\r\nfunction getUrlWithCsrfToken(url) {\r\n const urlInstance = new URL(url, location.origin);\r\n\r\n urlInstance.searchParams.append('csrf_token', getCsrfToken());\r\n\r\n return urlInstance.toString();\r\n}\r\n\r\n/**\r\n * It checks for duplicated Credit Card and returns response as JSON object.\r\n * @param {string} body - request body.\r\n * @returns {Promise} A promise that resolves to a JSON object.\r\n */\r\nfunction checkForDuplicatedCC(body) {\r\n return fetch(getUrlWithCsrfToken(window.braintreeUrls.validateCreditCardUrl), {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: { 'Content-Type': 'application/json' }\r\n }).then(response => response.json());\r\n}\r\n\r\n/**\r\n * Gets applicable shipping methods\r\n * @param {string} url Validate address url\r\n * @returns {Object} Object with applicable shipping options\r\n */\r\nasync function getApplicableShippingOptions(url) {\r\n let shippingOptions;\r\n\r\n const response = await fetch(getUrlWithCsrfToken(url));\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n\r\n // TCS CUSTOM: Updated to pass stateExclusion data as well\r\n shippingOptions = {\r\n applicableShippingMethods: data.applicableShippingMethods,\r\n stateExclusion: data.stateExclusion\r\n };\r\n }\r\n\r\n return shippingOptions;\r\n}\r\n\r\n/**\r\n * Updates order amount when a certain shipping option gets selected\r\n * @param {string} shippingOptionID the id of the user choosen shipping method from GP pop-up\r\n * @returns {Promise} resolved promise which returns the amount\r\n */\r\nfunction updateAmountForShippingOption(shippingOptionID) {\r\n return fetch(window.braintreeUrls.getAmountForShippingOption, {\r\n method: 'POST',\r\n body: shippingOptionID\r\n }).then((response) => {\r\n if (!response.ok) {\r\n window.location.reload();\r\n }\r\n\r\n return response.json();\r\n })\r\n .then((data) => {\r\n return data.amount;\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n continueButtonToggle,\r\n updateCheckoutView,\r\n isValidInputField,\r\n getBillingAddressFormValues,\r\n removeBtPayment,\r\n createPaymentFormData,\r\n isNonceExist,\r\n setDefaultProperty,\r\n getOptionByDataDefault,\r\n removeActiveSessionPayment,\r\n getSessionAccountOption,\r\n updateBillingFormValues,\r\n getSelectedOption,\r\n getPaymentFieldsData,\r\n getUpdatedStoreFrontBillingData,\r\n clearForm,\r\n validateForm,\r\n checkForDuplicatedCC,\r\n getUrlWithCsrfToken,\r\n getApplicableShippingOptions,\r\n updateAmountForShippingOption,\r\n tryParseJSON\r\n};\r\n","module.exports = function(containerElement) {\r\n if (!containerElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('Braintree: No container for showing loaders');\r\n }\r\n\r\n function Constructor() {\r\n this.containerEl = containerElement;\r\n }\r\n\r\n Constructor.prototype.show = function() {\r\n this.containerEl.style.display = 'block';\r\n };\r\n\r\n Constructor.prototype.hide = function() {\r\n this.containerEl.style.display = 'none';\r\n };\r\n\r\n return new Constructor();\r\n};\r\n","'use strict';\r\n\r\nconst lpmHelper = require('../helpers/lpmHelper');\r\nconst lpmErrorMessages = require('../constants/errorMessages');\r\nconst AlertHandlerModel = require('../../alertHandler');\r\n\r\n/**\r\n * LPM alert handler model\r\n */\r\nclass LpmAlertHandlerModel extends AlertHandlerModel {\r\n constructor() {\r\n super();\r\n const lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\r\n\r\n if (lpmConfigs) {\r\n this.alertMessages = lpmConfigs.messages;\r\n }\r\n }\r\n\r\n /**\r\n * Process error form Braintree or Braintree-PaymentConfirm endpoint\r\n * @param {Object} error Error object\r\n */\r\n handleLpmError(error) {\r\n if (error.name === 'BraintreeError') {\r\n this.showBraintreeError(error);\r\n } else {\r\n this.showError(error.responseText);\r\n }\r\n }\r\n\r\n /**\r\n * Creates and throws an error if order amount is 0\r\n * @param {string} paymentMethodName Payment method name\r\n */\r\n handleZeroAmountOnCheckoutError(paymentMethodName) {\r\n const zeroAmountErrorMsg = lpmErrorMessages.ORDER_TOTAL_0.concat('', paymentMethodName);\r\n\r\n this.showError(zeroAmountErrorMsg);\r\n throw zeroAmountErrorMsg;\r\n }\r\n}\r\n\r\nmodule.exports = LpmAlertHandlerModel;\r\n","'use strict';\r\n\r\nconst lpmHelper = require('../helpers/lpmHelper');\r\nconst braintreeLpmSDK = require('./braintreeLpmSDK');\r\n\r\nconst lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\r\n// Global variables\r\nlet lpmInstance;\r\nlet shippingAddress;\r\nlet amount;\r\n\r\n/**\r\n * Init Braintree LPM pay model\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n */\r\n\r\nfunction init(braintreeClientInstancePromise) {\r\n braintreeLpmSDK.init(braintreeClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Inits LPM instance for the next payment actions\r\n * @returns {Promise} Promise resolved with the 'createLpmClickListener' boolean value\r\n */\r\nfunction initLpm() {\r\n return braintreeLpmSDK.createLpmPayment()\r\n .then(function(localPaymentInstance) {\r\n lpmInstance = localPaymentInstance;\r\n\r\n return {\r\n createLpmClickListener: true\r\n };\r\n });\r\n}\r\n\r\n/**\r\n * Updates order data\r\n * @param {Object} updatedShippingAddress Updates order shipping address from backend\r\n * @param {number} updatedAmount Updated order amount from backend\r\n */\r\nfunction updateLpmOrderData(updatedShippingAddress, updatedAmount) {\r\n shippingAddress = updatedShippingAddress;\r\n amount = updatedAmount;\r\n}\r\n\r\n/**\r\n * Returns order shipping address\r\n * @returns {Object} Shipping address\r\n */\r\nfunction getShippingAddress() {\r\n return shippingAddress;\r\n}\r\n\r\n/**\r\n * Creates and returns object with all options for initiating the lpm payment flow\r\n * @param {string} paymentMethodName Payment method name\r\n * @param {string} email Email address\r\n * @returns {Object} {Object} Options object\r\n */\r\nfunction createRequestData(paymentMethodName, email) {\r\n return Object.assign(braintreeLpmSDK.createRequestData(shippingAddress,\r\n lpmConfigs,\r\n paymentMethodName,\r\n email,\r\n amount),\r\n {\r\n onPaymentStart: function(_, continueCallback) {\r\n continueCallback();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Launches the local payment flow and returns a nonce payload\r\n * @param {Object} reqData Options object\r\n * @returns {Promise} Promise resolved with a startPaymentPayload\r\n */\r\nfunction startPayment(reqData) {\r\n return braintreeLpmSDK.startPayment(lpmInstance, reqData);\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n initLpm,\r\n updateLpmOrderData,\r\n getShippingAddress,\r\n createRequestData,\r\n startPayment\r\n};\r\n","'use strict';\r\n\r\nconst lpmHelper = require('../helpers/lpmHelper');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst braintreeLpmModel = require('./braintreeLpmModel');\r\n\r\nconst lpmErrorMessages = require('../constants/errorMessages');\r\n\r\n/**\r\n * Initialize Braintree Lpm Model. Pattern Builder is used\r\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\r\n */\r\nfunction init() {\r\n const braintreeLpmConfigs = lpmHelper.getBraintreeLpmConfigs();\r\n const response = {\r\n error: false,\r\n message: '',\r\n btLpmModel: null\r\n };\r\n\r\n let clientToken;\r\n let btClientInstancePromise;\r\n\r\n if (braintreeLpmConfigs) {\r\n clientToken = braintreeLpmConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n\r\n braintreeLpmModel.init(btClientInstancePromise);\r\n\r\n response.btLpmModel = braintreeLpmModel;\r\n } else {\r\n response.error = true;\r\n response.message = lpmErrorMessages.NO_LPM_BRAINTREE_CONFIGURATIONS;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ */\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Creates Lpm payment instance\r\n * @returns {Promise} A promise resolved with the Lpm instance\r\n */\r\n\r\nfunction createLpmPayment() {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.localPayment.create({\r\n client: btClientInstance\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Creates and returns object with all options for initiating the LPM payment flow\r\n * @param {Object} shippingData Order Shipping address\r\n * @param {Object} lpmConfigs LPM configs object\r\n * @param {string} paymentMethodName Payment method name\r\n * @param {string} email Email address\r\n * @param {number} amount Order total amount\r\n * @returns {Object} Options object\r\n */\r\nfunction createRequestData(shippingData, lpmConfigs, paymentMethodName, email, amount) {\r\n const recipientName = shippingData.recipientName.split(' ');\r\n\r\n shippingData.firstName = recipientName[0];\r\n shippingData.lastName = recipientName[1];\r\n\r\n return {\r\n paymentType: paymentMethodName,\r\n amount: amount,\r\n fallback: {\r\n url: `${lpmConfigs.fallbackUrl}?lpmName=${paymentMethodName}&email=${email}`,\r\n buttonText: 'Complete Payment'\r\n },\r\n currencyCode: lpmConfigs.options.currency,\r\n shippingAddressRequired: false,\r\n email: email,\r\n phone: shippingData && shippingData.phone,\r\n givenName: shippingData && shippingData.firstName,\r\n surname: shippingData && shippingData.lastName,\r\n address: {\r\n countryCode: shippingData && shippingData.countryCode\r\n }\r\n };\r\n}\r\n\r\n/**\r\n *\r\n * @param {lpmInstance} localPaymentInstance LPM instance\r\n * @param {Object} reqData Options object\r\n * @returns {Promise} Promise resolved with a startPaymentPayload\r\n */\r\nfunction startPayment(localPaymentInstance, reqData) {\r\n return localPaymentInstance.startPayment(reqData);\r\n}\r\n\r\n/**\r\n * Inits braintreeLpmSDK with client instance promise\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n */\r\nfunction init(braintreeClientInstancePromise) {\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n createLpmPayment,\r\n createRequestData,\r\n startPayment\r\n};\r\n","'use strict';\r\n\r\n// Helpers\r\nconst lpmHelper = require('../helpers/lpmHelper');\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst lpmPaymentProcessingHelper = require('../helpers/lpmPaymentProcessorHelper');\r\n\r\nconst LpmAlertHandlerModel = require('../alerthandler/lpmAlertHandlerModel');\r\nconst alertHandler = new LpmAlertHandlerModel();\r\n\r\nconst $braintreeLpmLoader = document.querySelector('.js-braintree-loader-container');\r\n\r\n// Global variables\r\nlet lpmConfigs;\r\nlet loader;\r\nlet lpmModel;\r\n\r\n/**\r\n * Opens LPM page and process a payment\r\n * @param {Object} reqData Options object\r\n * @param {string} paymentMethodName Payment method name\r\n */\r\nfunction startLpmPayment(reqData, paymentMethodName) {\r\n lpmModel.startPayment(reqData)\r\n .then(function(startPaymentPayload) {\r\n // Handles LPM processing messages on the Billing-Checkout Page\r\n alertHandler.hideAlerts();\r\n alertHandler.showInfo(alertHandler.alertMessages.LPM_PAYMENT_SUCCESS);\r\n\r\n // Sends payment details to the backend\r\n return lpmPaymentProcessingHelper.confirmPayment(lpmConfigs,\r\n paymentMethodName,\r\n reqData.email,\r\n startPaymentPayload);\r\n })\r\n .then(function(response) {\r\n return response.json();\r\n })\r\n .then(function(data) {\r\n lpmPaymentProcessingHelper.processLpmConfirmForm(data.redirectUrl);\r\n loader.hide();\r\n })\r\n .catch(function(error) {\r\n loader.hide();\r\n alertHandler.handleLpmError(error);\r\n });\r\n}\r\n\r\n/**\r\n * Prepares and checks all necessary options for start LPM payment\r\n * @param {Object} event On LPM button click event\r\n */\r\nfunction onLpmButtonClick(event) {\r\n const $email = document.querySelector('.customer-summary-email');\r\n const paymentMethodName = this.dataset.localPaymentMethodName;\r\n\r\n alertHandler.hideAlerts();\r\n event.preventDefault();\r\n\r\n try {\r\n if (lpmConfigs.options.amount === 0) {\r\n loader.hide();\r\n alertHandler.handleZeroAmountOnCheckoutError(paymentMethodName);\r\n }\r\n\r\n fetch(lpmConfigs.getOrderInfoUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n loader.show();\r\n alertHandler.showInfo(alertHandler.alertMessages.LPM_PAYMENT_PROCESSING);\r\n\r\n // Updates shipping address and amount of order from server\r\n lpmModel.updateLpmOrderData(data.shippingAddress, data.amount);\r\n\r\n // Creates all options for initiating the local payment payment flow.\r\n const reqData = lpmModel.createRequestData(paymentMethodName, $email.textContent);\r\n\r\n startLpmPayment(reqData, paymentMethodName);\r\n })\r\n // Handles errors form Braintree-GetOrderInfo endpoint\r\n .catch((error) => {\r\n loader.hide();\r\n alertHandler.showError(error.responseJSON.message);\r\n });\r\n loader.hide();\r\n } catch (error) {\r\n alertHandler.showError(error);\r\n }\r\n}\r\n\r\n/**\r\n * Inits LPM functionality on the Checkout-Billing Page\r\n */\r\nfunction initLpm() {\r\n lpmModel.initLpm()\r\n .then(function(response) {\r\n if (response.createLpmClickListener) {\r\n document.querySelectorAll('.js-braintree-lpm-button').forEach((button) => {\r\n button.addEventListener('click', onLpmButtonClick);\r\n });\r\n }\r\n })\r\n .catch(function(error) {\r\n alertHandler.showError(error.message);\r\n });\r\n}\r\n\r\n/**\r\n * Inits LPM payment processing components\r\n * @param {Object} braintreeLpmModel LPM model\r\n */\r\nfunction init(braintreeLpmModel) {\r\n loader = loaderInstance($braintreeLpmLoader);\r\n lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\r\n lpmModel = braintreeLpmModel;\r\n\r\n initLpm();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n NO_LPM_BRAINTREE_CONFIGURATIONS: 'No Lpm Braintree Configurations',\r\n ORDER_TOTAL_0: 'Order total 0 is not allowed for '\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Returns Braintree LPM configs\r\n * @returns {Object} Braintree LPM configs\r\n */\r\nfunction getBraintreeLpmConfigs() {\r\n const $braintreeLpmButton = document.querySelector('.js-braintree-lpm-button');\r\n\r\n let braintreeLpmConfigs = {};\r\n\r\n try {\r\n if ($braintreeLpmButton) {\r\n braintreeLpmConfigs = helper.tryParseJSON($braintreeLpmButton.getAttribute('data-braintree-config'));\r\n }\r\n } catch (error) {\r\n return braintreeLpmConfigs;\r\n }\r\n\r\n return braintreeLpmConfigs;\r\n}\r\n\r\nmodule.exports = {\r\n getBraintreeLpmConfigs\r\n};\r\n","'use strict';\r\n\r\nconst lpmModel = require('../braintreesdk/braintreeLpmModel');\r\n\r\n/**\r\n * Whether 'details' parameter is exist returns 'details' or shipping address if not exist\r\n *\r\n * @param {Object} details Details object from StartPaymentPayload\r\n * @param {string} email Email Address\r\n * @returns {Object} Details object\r\n */\r\nfunction getPaymentDetailsParameter(details, email) {\r\n const shippingAddress = lpmModel.getShippingAddress();\r\n\r\n shippingAddress.email = email;\r\n\r\n return jQuery.isEmptyObject(details) ? shippingAddress : details;\r\n}\r\n\r\n/**\r\n *\r\n * @param {Object} lpmConfigs LPM configs object\r\n * @param {string} paymentMethodName Payment method name\r\n * @param {string} email Email address\r\n * @param {Object} startPaymentPayload StartPaymnetPayload\r\n * @returns {Promise} Promise resolved with 'redirectUrl'\r\n */\r\nfunction confirmPayment(lpmConfigs, paymentMethodName, email, startPaymentPayload) {\r\n return fetch(lpmConfigs.paymentConfirmUrl, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n nonce: startPaymentPayload.nonce,\r\n lpmName: paymentMethodName,\r\n details: getPaymentDetailsParameter(startPaymentPayload.details, email),\r\n deviceData: JSON.stringify({ correlation_id: startPaymentPayload.correlationId })\r\n })\r\n });\r\n}\r\n\r\n/**\r\n * Creates a redirecting form to Order-Confirm endpoint\r\n * @param {Object} params The helping object for creating a from\r\n * @returns {Object} form element\r\n */\r\nfunction createConfirmForm(params) {\r\n const form = document.createElement('form');\r\n const orderIdInput = document.createElement('input');\r\n const orderTokenInput = document.createElement('input');\r\n\r\n form.method = 'POST';\r\n form.action = params.url;\r\n\r\n orderIdInput.value = params.orderID;\r\n orderIdInput.name = 'orderID';\r\n form.appendChild(orderIdInput);\r\n\r\n orderTokenInput.value = params.orderToken;\r\n orderTokenInput.name = 'orderToken';\r\n form.appendChild(orderTokenInput);\r\n\r\n document.body.appendChild(form);\r\n\r\n return form;\r\n}\r\n\r\n/**\r\n * Prepare and submits form in order to confirm order with Lpm\r\n * @param {string} redirectUrl Redirect Url\r\n */\r\nfunction processLpmConfirmForm(redirectUrl) {\r\n const splitUrl = redirectUrl.split('?');\r\n const url = splitUrl.shift();\r\n const searchParams = new URLSearchParams(splitUrl.join());\r\n const formParam = {\r\n orderID: searchParams.get('orderID'),\r\n orderToken: searchParams.get('orderToken'),\r\n url: url\r\n };\r\n\r\n const form = createConfirmForm(formParam);\r\n\r\n form.submit();\r\n}\r\n\r\nmodule.exports = {\r\n getPaymentDetailsParameter,\r\n confirmPayment,\r\n processLpmConfirmForm,\r\n createConfirmForm\r\n};\r\n","'use strict';\r\n\r\nconst braintreeLpmModelBuilder = require('./braintreesdk/braintreeLpmModelBuilder');\r\nconst lpmPaymentProcessing = require('./components/lpmPaymentProcessing');\r\n\r\n/**\r\n * Inits LPM on the Billing-Checkout Page\r\n */\r\nfunction init() {\r\n const braintreeLpmModelResponse = braintreeLpmModelBuilder.init();\r\n\r\n lpmPaymentProcessing.init(braintreeLpmModelResponse.btLpmModel);\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","const LpmAlertHandlerModel = require('./alerthandler/lpmAlertHandlerModel');\r\nconst helper = require('../helper');\r\n\r\nconst $lpmFallback = document.querySelector('.js-lpm-fallback');\r\nconst $lpmLoader = document.querySelector('.js-braintree-loader-container');\r\nconst lpmData = helper.tryParseJSON($lpmFallback.getAttribute('data-braintree-lpm'));\r\nconst alertHandler = new LpmAlertHandlerModel();\r\n\r\n/**\r\n * LPM fallback process\r\n */\r\nconst process = () => {\r\n braintree.client.create({\r\n authorization: lpmData.clientToken\r\n })\r\n .then(clientInstance => {\r\n $lpmLoader.style.display = 'block';\r\n\r\n return braintree.localPayment.create({\r\n client: clientInstance\r\n });\r\n })\r\n .then(localPaymentInstance => {\r\n localPaymentInstance.tokenize()\r\n .then(function({ nonce, details }) {\r\n const buyerAddressDetails = Object.keys(details).length ? details : { email: lpmData.customerEmail };\r\n\r\n alertHandler.showInfo(alertHandler.alertMessages.LPM_PAYMENT_SUCCESS);\r\n\r\n fetch(lpmData.paymentConfirmUrl, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n nonce: nonce,\r\n lpmName: lpmData.lpmName,\r\n details: buyerAddressDetails\r\n }),\r\n headers: { 'Content-Type': 'application/json' }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n const lpmPaymentProcessorHelper = require('../local/helpers/lpmPaymentProcessorHelper');\r\n\r\n lpmPaymentProcessorHelper.processLpmConfirmForm(data.redirectUrl);\r\n });\r\n })\r\n .catch(() => {\r\n alertHandler.showError(alertHandler.alertMessages.LPM_PAYMENT_ERROR);\r\n });\r\n });\r\n};\r\n\r\nmodule.exports = {\r\n process\r\n};\r\n","'use strict';\r\n\r\nconst braintreeGeneral = require('./braintreeGeneral');\r\n\r\n// Components\r\nconst payPalStoredBillingAddressComponent = require('./paypal/components/payPalStoredBillingAddress');\r\nconst venmoBillingAddressComponent = require('./venmo/components/venmoBillingAddress');\r\n\r\n// Helpers\r\nconst paymentMethodGeneralHelper = require('./paymentMethodGeneralHelper');\r\nconst helper = require('./helper');\r\nconst googlePayHelper = require('./googlepay/helpers/googlePayHelper');\r\nconst srcHelper = require('./src/helpers/srcHelper');\r\nconst venmoHelper = require('./venmo/helpers/venmoHelper');\r\nconst applePayHelper = require('./applepay/helpers/applePayHelper');\r\nconst payPalListHelper = require('./paypal/helpers/payPalListHelper');\r\nconst creditCardPaymentProcessingHelper = require('./creditcard/helpers/creditCardPaymentProcessingHelper');\r\n\r\n// Constants used only for \"createGeneralClientInstancePromise\" function\r\nconst creditCardPaymentProcessingConstants = require('./creditcard/constants/creditCardPaymentProcessingConstants');\r\n\r\nconst CHECKOUT_PAGE = 'checkout_page';\r\nconst CART_MINICART_PRODUCT_PAGE = 'cart_minicart_product_page';\r\nconst LOCAL_PAYMENT_METHODS_LIST = ['sepa', 'bancontact', 'eps', 'giropay', 'ideal', 'mybank', 'p24', 'sofort'];\r\nconst PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY = ['PayPal', 'GooglePay', 'SRC', 'ApplePay', 'Venmo'];\r\n\r\n// Other constants\r\nconst DATA_METHOD_ID_ATTRIBUTE = 'data-method-id';\r\nconst DATA_BILLING_ADDRESS_ATTRIBUTE = 'data-billing-address';\r\nconst PAYMENT_OPTIONS_CLASS = '.payment-options';\r\n\r\nfunction getApplicablePageType() {\r\n const isCheckoutPage = Boolean(document.getElementById('checkout-main'));\r\n // It is so, since MiniCart is exists on all mentioned pages\r\n const isCartMiniCartProductPage = Boolean(document.getElementsByClassName('minicart').length);\r\n\r\n let currentPageType;\r\n\r\n if (isCheckoutPage) {\r\n currentPageType = CHECKOUT_PAGE;\r\n } else if (isCartMiniCartProductPage) {\r\n currentPageType = CART_MINICART_PRODUCT_PAGE;\r\n }\r\n\r\n return currentPageType;\r\n}\r\n\r\nfunction createGeneralClientInstancePromise() {\r\n const applycablePageType = getApplicablePageType();\r\n const attrBtClientToken = 'data-bt-client-token';\r\n\r\n let clientToken = null;\r\n let clientInstancePromise = null;\r\n let $billingElement;\r\n let $btExpressCheckoutPayPalButtonWrapper;\r\n let $btAccountPayPalButtonWrapper;\r\n let $btApmaPayPalButtonWrapper;\r\n\r\n // eslint-disable-next-line default-case\r\n switch (applycablePageType) {\r\n case CHECKOUT_PAGE:\r\n $billingElement = document.querySelector('.summary-details.billing');\r\n\r\n clientToken = $billingElement.getAttribute(attrBtClientToken);\r\n\r\n break;\r\n\r\n case CART_MINICART_PRODUCT_PAGE:\r\n $btExpressCheckoutPayPalButtonWrapper = document.querySelector('.js-braintree-cart-paypal-buttons-wrap');\r\n $btAccountPayPalButtonWrapper = document.querySelector('.js-braintree-account-paypal-button-wrapper');\r\n $btApmaPayPalButtonWrapper = document.querySelector('.js-braintree-apma-paypal-button-wrapper');\r\n\r\n if ($btExpressCheckoutPayPalButtonWrapper) {\r\n clientToken = $btExpressCheckoutPayPalButtonWrapper.getAttribute(attrBtClientToken);\r\n } else if ($btAccountPayPalButtonWrapper) {\r\n clientToken = $btAccountPayPalButtonWrapper.getAttribute(attrBtClientToken);\r\n } else if ($btApmaPayPalButtonWrapper) {\r\n clientToken = $btApmaPayPalButtonWrapper.getAttribute(attrBtClientToken);\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (clientToken) {\r\n clientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n }\r\n\r\n return clientInstancePromise;\r\n}\r\n\r\n/**\r\n * Method override default SFRA payment-details filling behavior.\r\n * Method fill payment-details block with the right payment methdo data (like name, account, etc.)\r\n */\r\nfunction fillPaymentSummaryContainer() {\r\n const $summaryDetails = document.querySelector('.summary-details .payment-details');\r\n\r\n if ($summaryDetails) {\r\n $summaryDetails.classList.add('js-braintree-payment-details');\r\n $summaryDetails.classList.remove('payment-details');\r\n\r\n $('body').on('checkout:updateCheckoutView', helper.updateCheckoutView);\r\n }\r\n}\r\n\r\n/**\r\n * May be used for all payment methods\r\n * Create error container and append it after PayPal button\r\n * @param {string} payPalButtonSelector selector of PayPal button\r\n * @returns {Object} return created error container\r\n */\r\nfunction createErrorContainerAfterPayPalButton(payPalButtonSelector) {\r\n const $errorContainer = document.createElement('div');\r\n const $payPalButton = document.querySelector(payPalButtonSelector);\r\n\r\n $errorContainer.classList.add('alert-danger');\r\n $errorContainer.style.cssText = 'text-align: center';\r\n\r\n $payPalButton.parentNode.insertBefore($errorContainer, $payPalButton.nextSibling);\r\n\r\n return $errorContainer;\r\n}\r\n\r\n/**\r\n * Initiates all necessary manipulation for credit card billing address due tab click\r\n *\r\n * @param {Element} paymentOption - payment option for which specific billing address needs to be selected\r\n */\r\nfunction initCreditCardBillingAddressBehavior(paymentOption) {\r\n const creditCardHelper = require('./creditcard/helpers/creditCardHelper');\r\n const creditCardBillingAddressHelper = require('./creditcard/helpers/creditCardBillingAddressHelper');\r\n\r\n const $creditCardList = document.getElementById('braintreeCreditCardList');\r\n const $selectedCcAccountOption = creditCardHelper.getSelectedCcAccountOption();\r\n const creditCardFlow = creditCardPaymentProcessingHelper.getCreditCardFlowID($creditCardList);\r\n const savedBillingAddress = $selectedCcAccountOption.getAttribute('data-billing-address');\r\n\r\n if ((creditCardFlow === creditCardPaymentProcessingConstants.FLOW_STORED_CARD_NAME && savedBillingAddress)) {\r\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\r\n creditCardBillingAddressHelper.displaySelectedStoredBillingAddress($selectedCcAccountOption);\r\n } else {\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n const billingAddressId = paymentMethodGeneralHelper.getStoredBillingAddressId(paymentOption);\r\n\r\n if (billingAddressId) {\r\n const billingAddressToSelect = Array.from(billingAddressSelector.children).find((option) => {\r\n const stroredBillingAddress = option.getAttribute('value');\r\n\r\n return stroredBillingAddress === billingAddressId\r\n || stroredBillingAddress === `ab_${billingAddressId}`\r\n || `ab_${stroredBillingAddress}` === billingAddressId;\r\n });\r\n\r\n if (billingAddressToSelect) {\r\n billingAddressToSelect.selected = true;\r\n // TCS CUSTOM - make sure to update the billing address\r\n creditCardBillingAddressHelper.displaySelectedStoredBillingAddress(billingAddressToSelect);\r\n }\r\n }\r\n\r\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\r\n }\r\n}\r\n\r\n/**\r\n * Deselects all selected options\r\n * @param {Element} billingAddressSelector selector of billing addresses\r\n */\r\nfunction deselectAllOptions(billingAddressSelector) {\r\n Array.from(billingAddressSelector.children).forEach((option) => {\r\n option.selected = false;\r\n option.removeAttribute('selected');\r\n });\r\n}\r\n\r\n/*\r\n * Removes option that was added by payment method\r\n */\r\nfunction removeAddedOption() {\r\n const optionToRemove = document.querySelector('.stored-billing-address');\r\n\r\n if (optionToRemove) {\r\n optionToRemove.remove();\r\n }\r\n}\r\n\r\n/**\r\n * Selects billing address\r\n *\r\n * @param {Element} paymentOption payment option for which specific billing address needs to be selected\r\n */\r\nfunction selectBillingAddress(paymentOption) {\r\n const selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\r\n const optionClass = 'stored-billing-address';\r\n\r\n switch (selectedMethodID) {\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL: {\r\n const payPalAccountList = document.getElementById('braintreePaypalAccountsList');\r\n const selectedPayPalAccountOption = payPalAccountList.options[payPalAccountList.selectedIndex];\r\n\r\n // Display billing address of selected PayPal account\r\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress(selectedPayPalAccountOption);\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY: {\r\n const googlePayBtn = document.querySelector('.js-braintree-googlepay-button');\r\n\r\n paymentMethodGeneralHelper.createBillingAddressOption(optionClass, googlePayBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE));\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_SRC: {\r\n const srcBtn = document.querySelector('.js-braintree-src-button');\r\n\r\n paymentMethodGeneralHelper.createBillingAddressOption(optionClass, srcBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE));\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY: {\r\n const applePayBtn = document.querySelector('.js-braintree-applepay-button');\r\n\r\n paymentMethodGeneralHelper.createBillingAddressOption(optionClass, applePayBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE));\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_VENMO: {\r\n // Display shipping address as selected billing address\r\n venmoBillingAddressComponent.displayShippingAddressAsSelected();\r\n\r\n break;\r\n }\r\n\r\n default:\r\n }\r\n}\r\n\r\n/**\r\n * Handles billing address functionality (disable/enable)\r\n * @param {Element} paymentOption payment option\r\n */\r\nfunction handleBillingAddressFunctionality(paymentOption) {\r\n const selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\r\n\r\n if (PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY.includes(selectedMethodID)) {\r\n paymentMethodGeneralHelper.disableBillingAddressFunctionality();\r\n } else if (selectedMethodID === 'CREDIT_CARD') {\r\n initCreditCardBillingAddressBehavior(paymentOption);\r\n } else {\r\n paymentMethodGeneralHelper.enableBillingAddressFunctionality();\r\n }\r\n}\r\n\r\n/**\r\n * Handles submit payment button for specific payment method\r\n * @param {Element} paymentOption payment option\r\n */\r\nfunction handlePaymentMethodsFunctionality(paymentOption) {\r\n let selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\r\n\r\n if (LOCAL_PAYMENT_METHODS_LIST.includes(selectedMethodID)) {\r\n selectedMethodID = 'LPM';\r\n }\r\n\r\n switch (selectedMethodID) {\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL: {\r\n // Submit Payment button behavior\r\n const isAccountListHidden = document.querySelector('.js-braintree-used-paypal-account').classList.contains('used-paypal-account-hide');\r\n\r\n if (isAccountListHidden) {\r\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\r\n } else if (!payPalListHelper.isNewPayPalAccountOptionSelected()) {\r\n paymentMethodGeneralHelper.showSubmitPaymentButton();\r\n } else {\r\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\r\n }\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY: {\r\n googlePayHelper.googlePayContentTabHandler(true);\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_SRC: {\r\n srcHelper.srcContentTabHandler(true);\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY: {\r\n applePayHelper.toggleContinueButtonOnBillingPage();\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_CREDIT_CARD: {\r\n // Submit Payment button behavior\r\n paymentMethodGeneralHelper.showSubmitPaymentButton();\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_VENMO: {\r\n const isBtVenmoAccountsList = Boolean(document.getElementById('braintreeVenmoAccountsList'));\r\n const isSessionAccountExist = Boolean(document.querySelector('.js-used-venmo-account'));\r\n // Handles continue button visibility on the Billing Page in Venmo tab\r\n // Case for the registered user with saved account\r\n\r\n if (isBtVenmoAccountsList) {\r\n venmoHelper.venmoContentTabHandler();\r\n } else if (isSessionAccountExist) {\r\n // Case when only session account exist without saved account\r\n helper.continueButtonToggle(false);\r\n } else {\r\n // Case when no session/saved account exist and Venmo button is shown\r\n helper.continueButtonToggle(true);\r\n }\r\n\r\n break;\r\n }\r\n\r\n case window.braintreeConstants.PAYMENT_METHOD_ID_LPM: {\r\n paymentMethodGeneralHelper.hideSubmitPaymentButton();\r\n\r\n break;\r\n }\r\n\r\n default:\r\n }\r\n}\r\n\r\n/**\r\n * Saves selected billing address on tab changing\r\n */\r\nfunction saveSelectedBillingAddressFromPreviousTab() {\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n const paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\r\n\r\n const paymentOptionToSaveBillingAddress = Array.from(paymentOptions.children).find((option) => {\r\n return option.firstElementChild.classList.contains('active');\r\n });\r\n\r\n const selectedMethodID = paymentOptionToSaveBillingAddress.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\r\n\r\n if (!PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY.includes(selectedMethodID)) {\r\n const selectedBillingAddressOption = billingAddressSelector.options[billingAddressSelector.selectedIndex];\r\n\r\n paymentMethodGeneralHelper.setStoredBillingAddressId(paymentOptionToSaveBillingAddress, selectedBillingAddressOption);\r\n }\r\n}\r\n\r\n/**\r\n * Inits billing address behavior on shipping change, so that:\r\n * When the checkout stage changes to payment, trigger a custom event that will select the billing\r\n * address based on the active payment option.\r\n */\r\nfunction initChangeShippingBehavior() {\r\n const checkoutStageElement = document.querySelector('.data-checkout-stage');\r\n\r\n const observer = new MutationObserver(() => {\r\n if (checkoutStageElement.getAttribute('data-checkout-stage') === 'payment') {\r\n const shippingChangeEvent = new Event('shipping:update');\r\n\r\n document.dispatchEvent(shippingChangeEvent);\r\n }\r\n });\r\n\r\n observer.observe(checkoutStageElement, { attributes: true });\r\n\r\n document.addEventListener('shipping:update', () => {\r\n const paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n\r\n if (paymentOptions && billingAddressSelector) {\r\n const activePaymentOption = Array.from(paymentOptions.children).find((option) => {\r\n return option.firstElementChild.classList.contains('active');\r\n });\r\n\r\n selectBillingAddress(activePaymentOption);\r\n handleBillingAddressFunctionality(activePaymentOption);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Inits functionality of billing selector change\r\n */\r\nfunction initBillingSelectorChangeFunctionality() {\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n const paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\r\n\r\n if (billingAddressSelector && paymentOptions) {\r\n billingAddressSelector.addEventListener('change', () => {\r\n const selectedBillingAddressOption = billingAddressSelector.options[billingAddressSelector.selectedIndex];\r\n const activePaymentOption = Array.from(paymentOptions.children).find((option) => {\r\n return option.firstElementChild.classList.contains('active');\r\n });\r\n\r\n paymentMethodGeneralHelper.setStoredBillingAddressId(activePaymentOption, selectedBillingAddressOption);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Init behavior which should be triggered when buyer clicked on Payment Method tab.\r\n * Currently we handle billing address modification enabling/disabling.\r\n * We also have init behavior of \"Submit Payment\" button\r\n */\r\nfunction initPaymentMethodTabClickBehavior() {\r\n const navLinks = document.querySelectorAll('.payment-options .nav-item .nav-link');\r\n\r\n navLinks.forEach((navLink) => {\r\n navLink.addEventListener('click', (e) => {\r\n const clickedPaymentOption = e.target.closest('.nav-item');\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n\r\n saveSelectedBillingAddressFromPreviousTab();\r\n\r\n removeAddedOption();\r\n deselectAllOptions(billingAddressSelector);\r\n\r\n handleBillingAddressFunctionality(clickedPaymentOption);\r\n handlePaymentMethodsFunctionality(clickedPaymentOption);\r\n\r\n selectBillingAddress(clickedPaymentOption);\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\r\n * @param {string} email email from payment method's response\r\n * @returns {Object} customer form data\r\n */\r\nfunction createCustomerFormData(email) {\r\n const data = {\r\n email: email\r\n };\r\n\r\n const $csrfToken = document.querySelector('.js-braintree-cart-buttons-wrap #csrf_token');\r\n const checkoutCustomerFormFields = document.querySelector('.js-braintree-cart-buttons-wrap').getAttribute('data-checkout-customer-form-fields');\r\n const customerFormData = helper.createPaymentFormData(checkoutCustomerFormFields, data);\r\n\r\n customerFormData.append($csrfToken.name, $csrfToken.value);\r\n\r\n return customerFormData;\r\n}\r\n\r\n/**\r\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\r\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\r\n * @param {string} email email from payment method's response\r\n * @returns {Promise} call to CheckoutServices-SubmitCustomer endpoint\r\n */\r\nasync function submitCustomerForm(email) {\r\n const buttonsWrapper = document.querySelector('.js-braintree-cart-buttons-wrap');\r\n const isCustomerEmailEmpty = helper.tryParseJSON(buttonsWrapper.getAttribute('data-is-customer-email-empty'));\r\n\r\n let result;\r\n // Could be \"true\" only in case if email in basket is empty (first guest checkout from cart)\r\n\r\n if (isCustomerEmailEmpty) {\r\n const submitCustomerUrl = window.braintreeUrls.submitCustomerUrl;\r\n const customerFormData = createCustomerFormData(email);\r\n\r\n result = await fetch(submitCustomerUrl, {\r\n method: 'POST',\r\n body: customerFormData\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Handles active CC session payment, removes active session payment if order amount changed\r\n * to avoid a mismatch error between nonce amount and actual amount\r\n * @param {number} lastAmount - amount of the last order\r\n */\r\nfunction handleActiveCCSessionPayment(lastAmount) {\r\n fetch(window.braintreeUrls.getOrderInfoUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.amount !== lastAmount) {\r\n const creditCardSessionAccount = require('./creditcard/components/creditCardSessionAccount');\r\n\r\n creditCardSessionAccount.removeSessionNonce();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Inits payment amount observer\r\n */\r\nfunction initAmountObserver() {\r\n const checkoutStageElement = document.querySelector('.data-checkout-stage');\r\n\r\n const observer = new MutationObserver(() => {\r\n if (checkoutStageElement.getAttribute('data-checkout-stage') === 'placeOrder') {\r\n const amountElement = document.querySelector('.grand-total-sum');\r\n const amount = parseFloat(amountElement.textContent.replace(/[^0-9.]/g, ''));\r\n\r\n window.sessionStorage.setItem('amount-used', amount);\r\n }\r\n });\r\n\r\n observer.observe(checkoutStageElement, { attributes: true });\r\n}\r\n\r\nmodule.exports = {\r\n createGeneralClientInstancePromise,\r\n fillPaymentSummaryContainer,\r\n createErrorContainerAfterPayPalButton,\r\n initPaymentMethodTabClickBehavior,\r\n initChangeShippingBehavior,\r\n initBillingSelectorChangeFunctionality,\r\n submitCustomerForm,\r\n saveSelectedBillingAddressFromPreviousTab,\r\n handleActiveCCSessionPayment,\r\n initAmountObserver\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('./helper');\r\n\r\nfunction hideBillingAddressManipulationButtons() {\r\n document.querySelector('.address-selector-block .btn-show-details').style.display = 'none';\r\n document.querySelector('.address-selector-block .btn-add-new').style.display = 'none';\r\n}\r\n\r\nfunction showBillingAddressManipulationButtons() {\r\n document.querySelector('.address-selector-block .btn-show-details').style.display = '';\r\n document.querySelector('.address-selector-block .btn-add-new').style.display = '';\r\n}\r\n\r\nfunction disableBillingAddressList() {\r\n document.getElementById('billingAddressSelector').setAttribute('disabled', 'disabled');\r\n}\r\n\r\nfunction enableBillingAddressList() {\r\n document.getElementById('billingAddressSelector').removeAttribute('disabled');\r\n}\r\n\r\nfunction hideSubmitPaymentButton() {\r\n document.querySelector('.submit-payment').style.display = 'none';\r\n}\r\n\r\nfunction showSubmitPaymentButton() {\r\n document.querySelector('.submit-payment').style.display = '';\r\n}\r\n\r\n/**\r\n * Hides biiling address form on the Billing Page for appropriate tabs.\r\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\r\n */\r\nfunction hideBillingAddressForm() {\r\n document.querySelector('.billing-address-block .billing-address').style.display = 'none';\r\n}\r\n\r\n/**\r\n * Shows biiling address form on the Billing Page for appropriate tabs.\r\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\r\n */\r\nfunction showBillingAddressForm() {\r\n document.querySelector('.billing-address-block .billing-address').style.display = '';\r\n}\r\n\r\n/**\r\n * Hides phone field on the Billing Page for appropriate tabs\r\n */\r\nfunction hidePhoneField() {\r\n document.querySelector('.dwfrm_billing_contactInfoFields_phone').style.display = 'none';\r\n}\r\n\r\n/**\r\n * Shows phone field on the Billing Page for appropriate tabs\r\n */\r\nfunction showPhoneField() {\r\n document.querySelector('.dwfrm_billing_contactInfoFields_phone').style.display = '';\r\n}\r\n\r\n/**\r\n * Disabled billing address functionality on the Billing Page\r\n */\r\nfunction disableBillingAddressFunctionality() {\r\n disableBillingAddressList();\r\n hideBillingAddressManipulationButtons();\r\n hideBillingAddressForm();\r\n hidePhoneField();\r\n}\r\n\r\n/**\r\n * Enabled billing address functionality on the Billing Page\r\n */\r\nfunction enableBillingAddressFunctionality() {\r\n showBillingAddressManipulationButtons();\r\n enableBillingAddressList();\r\n showBillingAddressForm();\r\n showPhoneField();\r\n}\r\n\r\n/**\r\n * Returns a billing address represented as a string\r\n * @param {Object} billingAddress A billing address object\r\n * @returns {string} A string represented a billing address\r\n */\r\nfunction formatBaAsString(billingAddress) {\r\n // TCS CUSTOM - Added in Address 2 support\r\n\r\n const firstName = billingAddress.firstName || '';\r\n const lastname = billingAddress.lastName || '';\r\n const address1 = billingAddress.line1 || billingAddress.address1 || billingAddress.streetAddress || '';\r\n const address2 = billingAddress.line2 || billingAddress.address2 || billingAddress.extendedAddress || '';\r\n const city = billingAddress.city || billingAddress.locality || '';\r\n const state = billingAddress.state || billingAddress.stateCode || billingAddress.region || '';\r\n const postalCode = decodeURIComponent(billingAddress.postalCode) || '';\r\n\r\n return `${firstName} ${lastname} ${address1} ${address2} ${city}, ${state} ${postalCode}`;\r\n}\r\n\r\n/**\r\n * Extract billing address of corresponding payment account from account option\r\n * @param {Object} $selectedPayment PayPal payment option\r\n * @returns {string} return string representation of extracted address\r\n */\r\nfunction getBillingAddressAsString($selectedPayment) {\r\n const selectedBillingAddressStr = $selectedPayment.getAttribute('data-billing-address');\r\n\r\n let billingAddressRepresentationString = '';\r\n\r\n if (selectedBillingAddressStr) {\r\n const selectedBillingAddressObj = helper.tryParseJSON(selectedBillingAddressStr);\r\n\r\n if (selectedBillingAddressObj && selectedBillingAddressStr !== '{}') {\r\n billingAddressRepresentationString = formatBaAsString(selectedBillingAddressObj);\r\n }\r\n }\r\n\r\n return billingAddressRepresentationString;\r\n}\r\n\r\n/**\r\n * It gets the ID of the last billing address used for the selected payment method\r\n * @param {Element} paymentOption - The payment option that was selected.\r\n * @returns {string} - The billing address ID that was stored in session storage.\r\n */\r\nfunction getStoredBillingAddressId(paymentOption) {\r\n const selectedPaymentMethod = paymentOption.getAttribute('data-method-id');\r\n\r\n return sessionStorage.getItem(`${selectedPaymentMethod}-last-billing-id`);\r\n}\r\n\r\n/**\r\n * It sets the billing address ID in session storage for the selected payment method\r\n * @param {Element} paymentOption - The payment method that was selected.\r\n * @param {Element} billingOption - The billing address option that was selected.\r\n */\r\nfunction setStoredBillingAddressId(paymentOption, billingOption) {\r\n const selectedPaymentMethodName = paymentOption.getAttribute('data-method-id');\r\n\r\n if (billingOption.getAttribute('value') !== null) {\r\n sessionStorage.setItem(`${selectedPaymentMethodName}-last-billing-id`, billingOption.getAttribute('value'));\r\n }\r\n}\r\n\r\n/**\r\n * It creates an option element, sets its text, class, and selected property, and then appends it to\r\n * the billingAddressSelector element\r\n * @param {string} className - Class name of the option element.\r\n * @param {string} innerText - Text that will be displayed in the dropdown menu.\r\n */\r\nfunction createBillingAddressOption(className, innerText) {\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n const option = document.createElement('option');\r\n\r\n option.innerText = innerText;\r\n option.className = className;\r\n option.selected = true;\r\n\r\n billingAddressSelector.append(option);\r\n}\r\n\r\nmodule.exports = {\r\n disableBillingAddressFunctionality,\r\n enableBillingAddressFunctionality,\r\n hideBillingAddressManipulationButtons,\r\n showBillingAddressManipulationButtons,\r\n disableBillingAddressList,\r\n enableBillingAddressList,\r\n hideBillingAddressForm,\r\n showBillingAddressForm,\r\n hideSubmitPaymentButton,\r\n showSubmitPaymentButton,\r\n hidePhoneField,\r\n showPhoneField,\r\n getStoredBillingAddressId,\r\n setStoredBillingAddressId,\r\n createBillingAddressOption,\r\n getBillingAddressAsString\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\n\r\n/**\r\n * Paypal alert handler model\r\n */\r\nclass PaypalAlertHandlerModel extends AlertHandlerModel {\r\n constructor(alertMessages) {\r\n super();\r\n this.alertMessages = alertMessages;\r\n }\r\n\r\n /**\r\n * Show \"Billing Address is not Supported\" error\r\n */\r\n showBillingAddressIsNotSupportedError() {\r\n this.showError(this.alertMessages.PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED);\r\n }\r\n\r\n /**\r\n * Shows \"Zero amount\" error\r\n */\r\n showZeroAmountError() {\r\n this.showError(this.alertMessages.CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR);\r\n }\r\n\r\n /**\r\n * TCS CUSTOM\r\n * Shows \"State Exclusion\" error\r\n */\r\n showStateExclusionError() {\r\n this.showError(this.alertMessages.CUSTOM_TCS_STATE_EXCLUSION_ERROR);\r\n }\r\n}\r\n\r\nmodule.exports = PaypalAlertHandlerModel;\r\n","'use strict';\r\n\r\n/* global paypal braintree $ */\r\n\r\nlet btPayPalCheckoutInstancePromise;\r\n\r\n/**\r\n * Function creates PayPal Checkout instance\r\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\r\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model. Is needed to have customize CheckoutInstance generation\r\n * depending on PayPalPaymentProcessing instance configs\r\n * @returns {Promise} Promise with PayPal Checkout Instance\r\n */\r\nfunction createPayPalCheckoutInstance(btClientInstancePromise, payPalPaymentProcessingModal) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n const payPalCheckoutConfigs = payPalPaymentProcessingModal.payPalCheckoutInstanceConfigs(btClientInstance);\r\n\r\n return braintree.paypalCheckout.create(payPalCheckoutConfigs);\r\n });\r\n}\r\n\r\n/**\r\n * Creates PayPal button style configs\r\n * @param {Object} btPayPalConfigurations Configurations of PayPal button\r\n * @returns {Object} Style configs with the right format\r\n */\r\nfunction createPayPalStyleConfigurations(btPayPalConfigurations) {\r\n const payPalButtonStyleConfigs = btPayPalConfigurations.paypalConfig.style;\r\n\r\n return {\r\n height: payPalButtonStyleConfigs.height,\r\n color: payPalButtonStyleConfigs.color,\r\n shape: payPalButtonStyleConfigs.shape,\r\n layout: payPalButtonStyleConfigs.layout,\r\n label: payPalButtonStyleConfigs.label,\r\n tagline: payPalButtonStyleConfigs.tagline\r\n };\r\n}\r\n\r\n/**\r\n * Callback which is came from PayPal configurations. Should trigger only \"enable\" action\r\n * @param {Object} validateActions Object from Braintree\r\n */\r\nconst payPalFormValidationControl = function(validateActions) {\r\n const isFormValid = true;\r\n\r\n if (isFormValid) {\r\n validateActions.enable();\r\n } else {\r\n validateActions.disable();\r\n }\r\n};\r\n\r\nconst onApprove = function(data, checkoutInstance, paymentProcessingModal) {\r\n // Some logic here before tokenization happens below\r\n return checkoutInstance.tokenizePayment(data)\r\n .then(function(payload) {\r\n paymentProcessingModal.onApprovePaymentCallback(payload);\r\n });\r\n};\r\n\r\nconst createOrder = async function(checkoutInstance, paymentProcessingModal) {\r\n // Logic which executed after buyer clicked on the button, and PayPal modal start loading\r\n // \"onOrderCreateCallback\" is used for forming of order data object\r\n const paymentObject = await paymentProcessingModal.onOrderCreateCallback();\r\n\r\n return checkoutInstance.createPayment(paymentObject);\r\n};\r\n\r\n/**\r\n * Returns PayPal button behavior configs which are used when VaultMode is enabled\r\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\r\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\r\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\r\n * @returns {Object} Object with PayPal button configs & callbacks which will handle PayPal button behavior\r\n */\r\nfunction getVaultModeButtonConfigurations(btPayPalCheckoutInstance,\r\n btPayPalConfigurations,\r\n payPalPaymentProcessingModal) {\r\n let vaultModePayPalButtonConfigs = {};\r\n const payPalButtonStyleConfigs = createPayPalStyleConfigurations(btPayPalConfigurations);\r\n\r\n vaultModePayPalButtonConfigs = {\r\n onClick: function(_, actions) {\r\n return payPalPaymentProcessingModal.onPayPalButtonClickCallback(_, actions);\r\n },\r\n createBillingAgreement: function() {\r\n return createOrder(btPayPalCheckoutInstance, payPalPaymentProcessingModal);\r\n },\r\n onApprove: function(data) {\r\n return onApprove(data, btPayPalCheckoutInstance, payPalPaymentProcessingModal);\r\n },\r\n onCancel: function() {\r\n payPalPaymentProcessingModal.onCancelPaymentCallback();\r\n },\r\n onError: function(err) {\r\n payPalPaymentProcessingModal.onErrorPaymentCallback(err);\r\n },\r\n style: payPalButtonStyleConfigs,\r\n validate: function(validateActions) {\r\n payPalFormValidationControl(validateActions);\r\n }\r\n };\r\n\r\n return vaultModePayPalButtonConfigs;\r\n}\r\n\r\n/**\r\n * Returns PayPal button behavior configs which are used when VaultMode is disabled or \"Checkout with Vault\" is enabled\r\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\r\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\r\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\r\n * @returns {Object} Object with PayPal button configs & callbacks which will handle PayPal button behavior\r\n */\r\nfunction getCheckoutModeButtonConfigurations(btPayPalCheckoutInstance,\r\n btPayPalConfigurations,\r\n payPalPaymentProcessingModal) {\r\n let vaultModePayPalButtonConfigs = {};\r\n const payPalButtonStyleConfigs = createPayPalStyleConfigurations(btPayPalConfigurations);\r\n\r\n vaultModePayPalButtonConfigs = {\r\n onClick: function(_, actions) {\r\n return payPalPaymentProcessingModal.onPayPalButtonClickCallback(_, actions);\r\n },\r\n createOrder: function() {\r\n return createOrder(btPayPalCheckoutInstance, payPalPaymentProcessingModal);\r\n },\r\n onApprove: function(data) {\r\n return onApprove(data, btPayPalCheckoutInstance, payPalPaymentProcessingModal);\r\n },\r\n onCancel: function() {\r\n payPalPaymentProcessingModal.onCancelPaymentCallback();\r\n },\r\n // TCS CUSTOM START\r\n onShippingChange: function(data, actions) {\r\n // eslint-disable-next-line max-len\r\n return payPalPaymentProcessingModal.onShippingChangeCallback(data, btPayPalCheckoutInstance, actions);\r\n },\r\n // TCS CUSTOM END\r\n\r\n onError: function(err) {\r\n payPalPaymentProcessingModal.onErrorPaymentCallback(err);\r\n },\r\n style: payPalButtonStyleConfigs,\r\n validate: function(validateActions) {\r\n payPalFormValidationControl(validateActions);\r\n }\r\n };\r\n\r\n return vaultModePayPalButtonConfigs;\r\n}\r\n\r\n/**\r\n * Function which result is rendered PayPal button\r\n * @param {Promise} btClientInstancePromise Client instance promise\r\n * @param {boolean} isVaultMode \"true\" in case if VaultMode is enabled\r\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\r\n * @param {Array} payPalPaymentProcessingModels array of instances for PayPalPaymentProcessing model\r\n * @returns {Promise} PayPal button\r\n */\r\nfunction payPalButtonRendering(btClientInstancePromise,\r\n isVaultMode,\r\n btPayPalConfigurations,\r\n payPalPaymentProcessingModels) {\r\n // Get ppModel to identify the flow and create sdk config\r\n const ppPaymentProcessingModel = payPalPaymentProcessingModels.find(Boolean);\r\n\r\n if (!btPayPalCheckoutInstancePromise) {\r\n // In case if paypal SDK is loaded only for credit messages, we need to delete it\r\n // and load again to avoid getting unhandled errors in console\r\n if (window.isPayPalCreditMessageLoaded) {\r\n delete window.paypal;\r\n }\r\n\r\n btPayPalCheckoutInstancePromise = createPayPalCheckoutInstance(btClientInstancePromise, ppPaymentProcessingModel);\r\n }\r\n\r\n function getPayPalButtonConfig(changePMButtonEnabled,\r\n vaultMode,\r\n btPayPalCheckoutInstance,\r\n btPayPalConfig,\r\n payPalPaymentProcessingModel) {\r\n if (changePMButtonEnabled) {\r\n return getCheckoutModeButtonConfigurations(btPayPalCheckoutInstance,\r\n btPayPalConfig,\r\n payPalPaymentProcessingModel);\r\n }\r\n\r\n if (vaultMode) {\r\n return getVaultModeButtonConfigurations(btPayPalCheckoutInstance,\r\n btPayPalConfig,\r\n payPalPaymentProcessingModel);\r\n }\r\n\r\n return getCheckoutModeButtonConfigurations(btPayPalCheckoutInstance,\r\n btPayPalConfig,\r\n payPalPaymentProcessingModel);\r\n }\r\n\r\n return btPayPalCheckoutInstancePromise\r\n .then(function(btPayPalCheckoutInstance) {\r\n let paypalButtonSdkUrlConfigs = null;\r\n\r\n const changePMButtonEnabled = ppPaymentProcessingModel.changePMButtonEnabled;\r\n\r\n if (changePMButtonEnabled) {\r\n paypalButtonSdkUrlConfigs = ppPaymentProcessingModel.payPalCheckoutSdkConfigs();\r\n } else if (isVaultMode) {\r\n paypalButtonSdkUrlConfigs = ppPaymentProcessingModel.payPalVaultSdkConfigs();\r\n // If checkout mode (single use token)\r\n } else {\r\n paypalButtonSdkUrlConfigs = ppPaymentProcessingModel.payPalCheckoutSdkConfigs();\r\n }\r\n\r\n // PayPal button loading\r\n if (!window.isPayPalSDKLoaded) {\r\n // We pass params to customize PayPal SDK loading.\r\n btPayPalCheckoutInstance.loadPayPalSDK(paypalButtonSdkUrlConfigs).then(function() {\r\n window.isPayPalSDKLoaded = true;\r\n\r\n // Loop through instances and render PP button\r\n payPalPaymentProcessingModels.forEach(payPalPaymentProcessingModel => {\r\n const paypalButtonConfigs = getPayPalButtonConfig(changePMButtonEnabled,\r\n isVaultMode,\r\n btPayPalCheckoutInstance,\r\n btPayPalConfigurations,\r\n payPalPaymentProcessingModel);\r\n\r\n // eslint-disable-next-line new-cap\r\n paypal.Buttons(paypalButtonConfigs).render(payPalPaymentProcessingModel.payPalButtonSelector);\r\n });\r\n });\r\n } else {\r\n // In case if PayPal SDK was already loaded (with custom parameters), we can simply load PP buttons\r\n payPalPaymentProcessingModels.forEach(payPalPaymentProcessingModel => {\r\n const paypalButtonConfigs = getPayPalButtonConfig(changePMButtonEnabled,\r\n isVaultMode,\r\n btPayPalCheckoutInstance,\r\n btPayPalConfigurations,\r\n payPalPaymentProcessingModel);\r\n\r\n // eslint-disable-next-line new-cap\r\n paypal.Buttons(paypalButtonConfigs).render(payPalPaymentProcessingModel.payPalButtonSelector);\r\n });\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n payPalButtonRendering\r\n};\r\n","'use strict';\r\n\r\nconst ApmaModel = require('../models/apma');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Function which initiate PayPal functionality on the Account Page\r\n * @param {Object} btClientInstancePromise BT Client Instance promise\r\n */\r\nfunction init(btClientInstancePromise) {\r\n const payPalButtonSelector = '#js-apma-button-paypal';\r\n const $payPalButton = document.querySelector(payPalButtonSelector);\r\n\r\n if ($payPalButton) {\r\n const redirectUrl = $payPalButton.getAttribute('data-redirect-url');\r\n const isAccountPage = redirectUrl.toLowerCase().includes(window.braintreeConstants.PAGE_FLOW_ACCOUNT);\r\n const addressObject = helper.tryParseJSON($payPalButton.getAttribute('data-address-object'));\r\n const payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n const addPayPalAccountUrl = $payPalButton.getAttribute('data-paypal-add-account-handler');\r\n\r\n const errorMessages = payPalConfigurations.messages;\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(errorMessages);\r\n const PayPalAPMA = new ApmaModel(alertHandler,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n addPayPalAccountUrl,\r\n addressObject,\r\n isAccountPage,\r\n redirectUrl);\r\n\r\n PayPalAPMA.initPayment();\r\n PayPalAPMA.initAddButtonEvent();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nfunction showPayPalStaticImageButton() {\r\n const $staticImage = document.getElementById('js-cwpp-static-image');\r\n\r\n if ($staticImage) {\r\n $staticImage.classList.remove('d-none');\r\n }\r\n}\r\n\r\nfunction isContainerExist() {\r\n if (!document.getElementById('js-cwpp-button')) {\r\n showPayPalStaticImageButton();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Connect with PayPal\r\n * @link {https://developer.paypal.com/docs/log-in-with-paypal/integrate/generate-button}\r\n */\r\nfunction initConnectWithPayPal() {\r\n const $container = document.getElementById('js-cwpp-button');\r\n\r\n if (!isContainerExist()) {\r\n return;\r\n }\r\n\r\n const MIN_NUMBER_OF_PARAMETERS = 8;\r\n const parameters = helper.tryParseJSON($container.getAttribute('data-parameters'));\r\n\r\n if (!(window.paypal && Object.keys(parameters).length > MIN_NUMBER_OF_PARAMETERS)) {\r\n showPayPalStaticImageButton();\r\n\r\n return;\r\n }\r\n\r\n window.paypal.use(['login'], function(login) {\r\n login.render(parameters);\r\n });\r\n}\r\n\r\n/**\r\n * Function which initiate PayPal functionality on the Login Page\r\n */\r\nfunction init() {\r\n initConnectWithPayPal();\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n isContainerExist\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Init add new PayPal account button\r\n * @param {Object} PayPalAccount PayPal Account model instance\r\n */\r\nfunction initAddNewPayPalAccountEvent(PayPalAccount) {\r\n const payPalAccountPageHelper = require('../helpers/payPalAccountPage');\r\n const $addNewPayPalAccountButton = document.querySelector('.js-add-paypal-account');\r\n\r\n $addNewPayPalAccountButton.addEventListener('click', function() {\r\n payPalAccountPageHelper.showPayPalAccountBtn();\r\n\r\n if (!window.accountPayPalButtonInited) {\r\n window.accountPayPalButtonInited = true;\r\n PayPalAccount.initPayment();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Function which initiate PayPal functionality on the Account Page\r\n * @param {Object} btClientInstancePromise BT Client Instance promise\r\n */\r\nfunction init(btClientInstancePromise) {\r\n const payPalButtonSelector = '.js-braintree-account-paypal-button-wrapper .js-braintree-account-paypal-button';\r\n const $payPalButton = document.querySelector(payPalButtonSelector);\r\n\r\n if ($payPalButton) {\r\n const PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\n const PayPalAccountModel = require('../models/payPalAccount');\r\n\r\n const payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n const addPayPalAccountUrl = window.braintreeUrls.paypalAddAccountHandlerUrl;\r\n\r\n const $csrfToken = document.querySelector('.js-braintree-account-paypal-button-wrapper #csrf_token');\r\n const $loaderContainer = document.getElementById('braintreePayPalAccLoader');\r\n\r\n // Init params for AccountErrorHandling model\r\n const errorMessages = payPalConfigurations.messages;\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(errorMessages);\r\n const PayPalAccount = new PayPalAccountModel(alertHandler,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n addPayPalAccountUrl,\r\n $loaderContainer);\r\n\r\n initAddNewPayPalAccountEvent(PayPalAccount);\r\n PayPalAccount.initRemovePayPalAccountEvent();\r\n PayPalAccount.initMakeDefaultPayPalAccountEvent();\r\n } else {\r\n const $allRemovePayPalAccountButtons = document.querySelectorAll('.js-paypal-accounts .js-remove-bt-payment');\r\n\r\n $allRemovePayPalAccountButtons.forEach((btn) => btn.addEventListener('click', helper.removeBtPayment));\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst PRICE_SELECTOR = '.price .sales .value';\r\nconst MINI_CART_QUANTITY_SELECTOR = '.minicart-quantity';\r\nconst PRODUCT_STATUS_UPDATE = 'product:statusUpdate';\r\nconst ADD_TO_CART_BTN_SELECTOR = '.js-add-to-cart, .js-add-to-cart-global';\r\nconst PAYPAL_BANNER_SELECTOR = '.js-pp-banner';\r\n\r\n/**\r\n * Hide PayPal button\r\n * @param {Object} $payPalButton PayPal button js container\r\n */\r\nfunction hidePayPalButton($payPalButton) {\r\n $payPalButton.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Show PayPal button\r\n * @param {Object} $payPalButton PayPal button js container\r\n */\r\nfunction showPayPalButton($payPalButton) {\r\n $payPalButton.style.display = '';\r\n}\r\n\r\n/**\r\n * Check if PDP product price is zero\r\n * @returns {boolean} \"true\" in case if PDP product price is zero\r\n */\r\nfunction isZeroPdpProductPrice() {\r\n const $productPriceSelector = document.querySelector(PRICE_SELECTOR);\r\n\r\n if ($productPriceSelector) {\r\n const price = parseInt($productPriceSelector.getAttribute('content'), 0);\r\n\r\n return price <= 0;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Is add to cart button disabled\r\n * @returns {boolean} \"true\" in case if add to cart button disabled\r\n */\r\nfunction isAddToCartButtonDisabled() {\r\n const $addToCartButton = document.querySelector('.js-add-to-cart, .js-add-to-cart-global');\r\n\r\n return $addToCartButton.disabled;\r\n}\r\n\r\n/**\r\n * Return mini cart quantity\r\n * @param {Object} $miniCartQuantitySelector Mini cart quantity selector\r\n * @returns {Int} Quantity\r\n */\r\nfunction getMiniCartQuantity($miniCartQuantitySelector) {\r\n let quantity = null;\r\n\r\n if ($miniCartQuantitySelector) {\r\n quantity = parseInt($miniCartQuantitySelector.textContent, 0);\r\n }\r\n\r\n return quantity;\r\n}\r\n\r\n/**\r\n * Check if basket is empty\r\n * @returns {boolean} \"true\" in case if basket is not empty\r\n */\r\nfunction isBasketNotEmpty() {\r\n const miniCartQuantityElement = document.querySelector(MINI_CART_QUANTITY_SELECTOR);\r\n\r\n return getMiniCartQuantity(miniCartQuantityElement) !== 0;\r\n}\r\n\r\n/**\r\n * Check if current total basket price is zero\r\n * @returns {boolean} \"true\" in case if current total basket price is zero\r\n */\r\nfunction isCurrentTotalBasketPriceZero() {\r\n const $basketTotalAmount = document.querySelector('.js-sub-total');\r\n\r\n if ($basketTotalAmount) {\r\n const basketTotalAmount = $basketTotalAmount.textContent.slice(1);\r\n\r\n return parseInt(basketTotalAmount, 10) === 0;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Updates PayPal credit message amount\r\n * @param {Object} productData - product info after update\r\n * @param {Element} $creditMessage - credit message element\r\n * @returns {void}\r\n */\r\nfunction updateCreditMessageAmount(productData, $creditMessage) {\r\n const { price, selectedQuantity } = productData.data?.product || productData;\r\n const productPrice = price.max?.sales?.value || price.sales.value;\r\n\r\n const newPrice = parseFloat(productPrice) * parseFloat(selectedQuantity);\r\n\r\n $creditMessage.setAttribute('data-pp-amount', newPrice);\r\n}\r\n\r\n/**\r\n * Show or hide PayPal button\r\n * @param {Object} paypalMinicartButton paypal button js container\r\n */\r\nfunction paypalMinicartButtonBehavior(paypalMinicartButton) {\r\n if (!isCurrentTotalBasketPriceZero()) {\r\n showPayPalButton(paypalMinicartButton);\r\n } else {\r\n hidePayPalButton(paypalMinicartButton);\r\n }\r\n}\r\n\r\n/**\r\n * Handles PP credit messages behavior on PDP\r\n * @returns {void}\r\n */\r\nfunction initPaypalCreditMessagesBehaviorOnPdp() {\r\n $('body').on('product:afterAttributeSelect', function(_, productData) {\r\n const $creditMessage = document.querySelector(PAYPAL_BANNER_SELECTOR);\r\n\r\n // If PayPal credit message is available, then update credit message amount\r\n if ($creditMessage) {\r\n updateCreditMessageAmount(productData, $creditMessage);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handles PP credit messages behavior on PDP for Product bandle\r\n * @returns {void}\r\n */\r\nfunction initPaypalCreditMessagesBehaviorOnPdpBundle() {\r\n const $price = document.querySelector(PRICE_SELECTOR);\r\n const $quantitySelector = document.querySelector('.quantity-select');\r\n const $creditMessage = document.querySelector(PAYPAL_BANNER_SELECTOR);\r\n\r\n if ($creditMessage) {\r\n $quantitySelector.addEventListener('change', (event) => {\r\n const price = parseFloat($price.getAttribute('content'));\r\n const quantity = parseFloat(event.target.value);\r\n\r\n const newPrice = price * quantity;\r\n\r\n $creditMessage.setAttribute('data-pp-amount', newPrice);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Handles PP credit messages behavior on PDP for Product set\r\n * @returns {void}\r\n */\r\nfunction initPaypalCreditMessagesBehaviorOnPdpSet() {\r\n $('body').on('product:afterAttributeSelect', function(_, productData) {\r\n const $productIds = document.querySelectorAll('.product-id');\r\n const $targerProduct = Array.from($productIds).find((el) => el.textContent === productData.data.product.id);\r\n const $setItemContainer = $targerProduct && $targerProduct.closest('.set-item');\r\n const $creditMessage = $setItemContainer && $setItemContainer.querySelector(PAYPAL_BANNER_SELECTOR);\r\n\r\n // If PayPal credit message is available, then update credit message amount\r\n if ($creditMessage) {\r\n updateCreditMessageAmount(productData, $creditMessage);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handles PP button behavior on PDP\r\n * @param {Object} $payPalButton - paypal button element\r\n * @returns {void}\r\n */\r\nfunction initPaypalButtonBehaviorOnPdp($payPalButton) {\r\n let addToCartButtonDisabled = isAddToCartButtonDisabled();\r\n let zeroProductPrice = isZeroPdpProductPrice();\r\n let basketNotEmpty = isBasketNotEmpty();\r\n\r\n if (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\r\n hidePayPalButton($payPalButton);\r\n }\r\n\r\n $('body').on('product:afterAddToCart', function() {\r\n hidePayPalButton($payPalButton);\r\n });\r\n\r\n // Case when buyer remove product from Cart\r\n $('body').on('cart:update', function() {\r\n const addToCartButtonEnabled = !isAddToCartButtonDisabled();\r\n\r\n zeroProductPrice = isZeroPdpProductPrice();\r\n basketNotEmpty = isBasketNotEmpty();\r\n\r\n if (!basketNotEmpty && addToCartButtonEnabled && !zeroProductPrice) {\r\n showPayPalButton($payPalButton);\r\n } else {\r\n hidePayPalButton($payPalButton);\r\n }\r\n });\r\n\r\n // When buyer change some attribute of the product on PDP\r\n $('body').on(PRODUCT_STATUS_UPDATE, function() {\r\n addToCartButtonDisabled = isAddToCartButtonDisabled();\r\n zeroProductPrice = isZeroPdpProductPrice();\r\n basketNotEmpty = isBasketNotEmpty();\r\n\r\n if (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\r\n hidePayPalButton($payPalButton);\r\n } else {\r\n showPayPalButton($payPalButton);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Hides all PayPal buttons on Set.\r\n * @param {string} selector - The selector for the PayPal button.\r\n * @returns {void}\r\n */\r\nfunction hideAllPayPalButtonsOnSet(selector) {\r\n const addToCartButtons = document.querySelectorAll(ADD_TO_CART_BTN_SELECTOR);\r\n\r\n addToCartButtons.forEach((btn) => {\r\n const paypalButton = btn.closest('.attributes, .prices-add-to-cart-actions').querySelector(selector);\r\n\r\n hidePayPalButton(paypalButton);\r\n });\r\n}\r\n\r\n/**\r\n * Handling PVP button behavior on Quick View\r\n * @param {Object} $payPalButton - paypal button element\r\n * @returns {void}\r\n */\r\nfunction initPaypalButtonBehaviorOnPvp($payPalButton) {\r\n const isProductReadyToOrderElement = document.querySelector('.js-is-show-pp-button');\r\n const isProductReadyToOrder = isProductReadyToOrderElement && isProductReadyToOrderElement.value === 'true';\r\n\r\n let addToCartButtonDisabled = isAddToCartButtonDisabled();\r\n let zeroProductPrice = isZeroPdpProductPrice();\r\n let basketNotEmpty = isBasketNotEmpty();\r\n\r\n if (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty || !isProductReadyToOrder) {\r\n hidePayPalButton($payPalButton);\r\n }\r\n\r\n $('body').on(PRODUCT_STATUS_UPDATE, function() {\r\n basketNotEmpty = isBasketNotEmpty();\r\n addToCartButtonDisabled = isAddToCartButtonDisabled();\r\n zeroProductPrice = isZeroPdpProductPrice();\r\n\r\n if (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\r\n hidePayPalButton($payPalButton);\r\n } else {\r\n showPayPalButton($payPalButton);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handling PP button behavior on Product Set\r\n * @param {string} ppBtnSelector - selector for PP buttons on product set\r\n * @returns {void}\r\n */\r\nfunction initPaypalButtonBehaviorOnSet(ppBtnSelector) {\r\n const PP_BTN_CONTAINER_SELECTOR = '.attributes, .prices-add-to-cart-actions, .global-availability';\r\n const addToCartButtons = document.querySelectorAll(ADD_TO_CART_BTN_SELECTOR);\r\n\r\n let basketNotEmpty = isBasketNotEmpty();\r\n\r\n addToCartButtons.forEach((btn) => {\r\n const paypalButton = btn.closest(PP_BTN_CONTAINER_SELECTOR).querySelector(ppBtnSelector);\r\n const isProductReadyToOrderElement = btn.closest(PP_BTN_CONTAINER_SELECTOR).querySelector('.js-is-show-pp-button');\r\n const isProductReadyToOrder = isProductReadyToOrderElement && isProductReadyToOrderElement.value === 'true';\r\n\r\n const prices = document.querySelectorAll(PRICE_SELECTOR);\r\n\r\n let isWrongAmount;\r\n\r\n if (prices) {\r\n isWrongAmount = Array.from(prices).some((price) => {\r\n return parseFloat(price.getAttribute('content')) <= 0;\r\n });\r\n }\r\n\r\n if (!basketNotEmpty && !isWrongAmount && isProductReadyToOrder && !btn.disabled) {\r\n showPayPalButton(paypalButton);\r\n } else {\r\n hidePayPalButton(paypalButton);\r\n }\r\n });\r\n\r\n $('body').on(PRODUCT_STATUS_UPDATE, function(event) {\r\n const addToCartButton = event.target;\r\n\r\n const prices = document.querySelectorAll(PRICE_SELECTOR);\r\n const paypalButton = addToCartButton.closest(PP_BTN_CONTAINER_SELECTOR).querySelector(ppBtnSelector);\r\n\r\n let isWrongAmount;\r\n\r\n basketNotEmpty = isBasketNotEmpty();\r\n\r\n if (prices) {\r\n isWrongAmount = Array.from(prices).some((price) => {\r\n return parseFloat(price.getAttribute('content')) <= 0;\r\n });\r\n }\r\n\r\n if (!basketNotEmpty && !isWrongAmount && !addToCartButton.disabled) {\r\n showPayPalButton(paypalButton);\r\n } else {\r\n hidePayPalButton(paypalButton);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handles PayPal button behavior on PDP for Product set.\r\n * @param {string} selector - The selector for the PayPal button.\r\n * @returns {void}\r\n */\r\nfunction initPaypalButtonBehaviorOnPdpSet(selector) {\r\n initPaypalButtonBehaviorOnSet(selector);\r\n\r\n $('body').on('product:afterAddToCart', function() {\r\n hideAllPayPalButtonsOnSet(selector);\r\n });\r\n\r\n // Case when buyer remove product from Cart\r\n $('body').on('cart:update', function() {\r\n const addToCartButtons = document.querySelectorAll(ADD_TO_CART_BTN_SELECTOR);\r\n const basketNotEmpty = isBasketNotEmpty();\r\n\r\n addToCartButtons.forEach((btn) => {\r\n const paypalButton = btn.closest('.attributes, .prices-add-to-cart-actions').querySelector(selector);\r\n\r\n const prices = document.querySelectorAll(PRICE_SELECTOR);\r\n\r\n let isWrongAmount;\r\n\r\n if (prices) {\r\n isWrongAmount = Array.from(prices).some((price) => {\r\n return parseFloat(price.getAttribute('content')) <= 0;\r\n });\r\n }\r\n\r\n if (!basketNotEmpty && !isWrongAmount && !btn.disabled) {\r\n showPayPalButton(paypalButton);\r\n } else {\r\n hidePayPalButton(paypalButton);\r\n }\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Init PayPal button display behavior. This code is handle only PayPal button on PVP page\r\n * @returns {void}\r\n */\r\nfunction initProductViewPage() {\r\n const PP_BUTTONS_SELECTOR = '.js-braintree-pvp-button, .js-braintree-pvp-button-global';\r\n\r\n const paypalButton = document.querySelector('.quick-view-dialog .js-braintree-pvp-button-global');\r\n const isProductSet = Boolean(document.querySelector('.set-items'));\r\n\r\n if (isProductSet) {\r\n initPaypalButtonBehaviorOnSet(PP_BUTTONS_SELECTOR);\r\n } else if (paypalButton) {\r\n initPaypalButtonBehaviorOnPvp(paypalButton);\r\n }\r\n}\r\n\r\n/**\r\n * Init PayPal button display behavior on PDP.\r\n */\r\nfunction initProductPage() {\r\n const PP_BUTTONS_SELECTOR = '.js-braintree-pdp-button, .js-braintree-pdp-button-global';\r\n\r\n const paypalButton = document.querySelector(PP_BUTTONS_SELECTOR);\r\n const paypalCreditBanner = document.querySelector(PAYPAL_BANNER_SELECTOR);\r\n const isProductSet = Boolean(document.querySelector('.set-items'));\r\n const isProductBundle = Boolean(document.querySelector('.product-bundle'));\r\n\r\n if (isProductSet) {\r\n initPaypalButtonBehaviorOnPdpSet(PP_BUTTONS_SELECTOR);\r\n } else if (paypalButton) {\r\n initPaypalButtonBehaviorOnPdp(paypalButton);\r\n }\r\n\r\n if (paypalCreditBanner) {\r\n if (isProductSet) {\r\n initPaypalCreditMessagesBehaviorOnPdpSet();\r\n } else if (isProductBundle) {\r\n initPaypalCreditMessagesBehaviorOnPdpBundle();\r\n } else {\r\n initPaypalCreditMessagesBehaviorOnPdp();\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n initProductPage,\r\n initProductViewPage,\r\n paypalMinicartButtonBehavior\r\n};\r\n","'use strict';\r\n\r\nconst PayPalCartModel = require('../models/payPalCartModel');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Initialize Cart page PayPal button\r\n * @param {Promise} clientInstancePromise Client instance promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n const payPalButtonSelector = '.cart-page .js-braintree-paypal-cart-button';\r\n const $payPalButton = document.querySelector(payPalButtonSelector);\r\n const payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n\r\n const $csrfToken = document.querySelector('.js-braintree-cart-paypal-buttons-wrap #csrf_token');\r\n const $loaderContainer = document.querySelector('.js-braintree-paypal-loader');\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(payPalConfigurations.messages);\r\n const PayPalExpress = new PayPalCartModel(alertHandler,\r\n clientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n // Generate Fraud Data if enabled\r\n PayPalExpress.generateFraudData();\r\n // Init PayPal button\r\n PayPalExpress.initPayment();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst PayPalCheckoutModel = require('../models/payPalCheckoutModel');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\nconst payPalAccountList = require('./payPalList');\r\nconst helper = require('../../helper');\r\n\r\nlet braintreeClientInstancePromise;\r\nlet payPalConfigs;\r\n\r\n/**\r\n * Initialize Checkout PayPal button functionality\r\n * @param {Promise} btClientInstancePromise BT Client Instance promise\r\n * @param {Object} payPalConfigurations PayPal checkout configurations object\r\n */\r\nfunction initCheckout(btClientInstancePromise, payPalConfigurations) {\r\n const payPalButtonSelector = '.js-braintree-paypal-billing-button';\r\n const $continueButton = document.querySelector('button.submit-payment');\r\n\r\n const $loaderContainer = document.querySelector('.js-braintree-paypal-loader');\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(payPalConfigurations.messages);\r\n const PayPalCheckoutPayment = new PayPalCheckoutModel(alertHandler,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $continueButton,\r\n $loaderContainer);\r\n\r\n // Init account list\r\n payPalAccountList.init();\r\n // Generate Fraud Data if enabled\r\n PayPalCheckoutPayment.generateFraudData();\r\n // Init PayPal button\r\n PayPalCheckoutPayment.initPayment();\r\n}\r\n\r\n/**\r\n * Initialize Checkout PayPal button functionality.\r\n * Additional code was added which is used for total amount extracting which is needed for \"Change Payment Method button\" feature\r\n * @param {Promise} btClientInstancePromise BT Client Instance promise\r\n */\r\nfunction init(btClientInstancePromise) {\r\n const $payPalButton = document.querySelector('.js-braintree-paypal-billing-button');\r\n const $paypalTab = document.querySelector('.payment-options .nav-item[data-method-id=\"PayPal\"]');\r\n\r\n payPalConfigs = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n braintreeClientInstancePromise = btClientInstancePromise;\r\n\r\n const sessionPaymentMethodId = payPalConfigs.sessionPaymentMethodId;\r\n\r\n // To load PayPal button only when buyer click (or from code) on PayPal Checkout tab\r\n $paypalTab.addEventListener('click', function() {\r\n const selectedMethodID = this.dataset.methodId;\r\n\r\n if (selectedMethodID === 'PayPal' && !window.payPalCheckoutWasInited) {\r\n window.payPalCheckoutWasInited = true;\r\n\r\n initCheckout(braintreeClientInstancePromise, payPalConfigs);\r\n }\r\n });\r\n\r\n // Case when buyer use 'ChangePM' button\r\n // After click we select PayPal PM and init the rest of PP logic\r\n if (sessionPaymentMethodId === 'PayPal') {\r\n $paypalTab.click();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst payPalSessionAccountComponent = require('./payPalSessionAccount');\r\nconst payPalStoredBillingAddressComponent = require('./payPalStoredBillingAddress');\r\nconst {\r\n isVaultModeEnabled,\r\n isOrderIntentEnabled,\r\n getAccountType,\r\n setNonceInputValue,\r\n hideSavePayPalAccountBlock,\r\n displaySavePayPalAccountBlock,\r\n displayPayPalButton,\r\n hidePayPalButon,\r\n displayContinueButton,\r\n hideContinueButon,\r\n isBuyerAuthenticated,\r\n selectPayPalCheckoutTab,\r\n setBraintreePayPalEmailInput,\r\n handleStoredAccountsShowing\r\n} = require('../helpers/payPalListHelper');\r\n\r\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\r\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\r\n\r\nlet $payPalAccountList;\r\nlet $continueButton;\r\nlet $savePaypalAccountCountainer;\r\nlet $braintreePayPalNonce;\r\nlet $paypalButton;\r\nlet $payPalTab;\r\nlet $braintreePaypalEmail;\r\n\r\nconst constantList = {\r\n SESSION_ACCOUNT: 'session_account',\r\n NEW_ACCOUNT: 'new_account',\r\n STORED_ACCOUNT: 'stored_account'\r\n};\r\n\r\n/**\r\n * The function which manages what should be done when session/stored/new account was selected from the account dropdown\r\n */\r\nfunction accountsListChange() { // eslint-disable-line require-jsdoc\r\n const accountType = getAccountType($payPalAccountList, constantList);\r\n const storedAccountWithSessionAccountEmail = billingFormHelper.getStoredAccountBySesionAccountEmail();\r\n const buyerAuthentificated = isBuyerAuthenticated($payPalAccountList);\r\n const vaultModeEnabled = isVaultModeEnabled($paypalButton);\r\n const orderIntentEnabled = isOrderIntentEnabled($paypalButton);\r\n const $selectedPayPalAccountOption = $payPalAccountList.options[$payPalAccountList.selectedIndex];\r\n\r\n $continueButton.removeEventListener('click', payPalSessionAccountComponent.removeSessionNonce);\r\n\r\n // eslint-disable-next-line default-case\r\n switch (accountType) {\r\n // Buyer selected new PayPal account\r\n case constantList.NEW_ACCOUNT:\r\n displayPayPalButton($paypalButton);\r\n hideContinueButon($continueButton);\r\n\r\n if (vaultModeEnabled && buyerAuthentificated && !orderIntentEnabled) {\r\n displaySavePayPalAccountBlock($savePaypalAccountCountainer);\r\n }\r\n\r\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress($selectedPayPalAccountOption);\r\n\r\n break;\r\n\r\n // Buyer selected session account\r\n case constantList.SESSION_ACCOUNT:\r\n // TCS CUSTOM - check if we added an error to the PayPal account dropdown\r\n // This is only possible on returning from PayPal\r\n if ($payPalAccountList.dataset.paypalerror === 'true') {\r\n displayPayPalButton($paypalButton);\r\n hideContinueButon($continueButton);\r\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress($payPalAccountList.options[0]);\r\n\r\n // select the New Account option\r\n $payPalAccountList.value = 'newaccount';\r\n\r\n // reset it to false so the user can repick the account from the dropdown\r\n $payPalAccountList.dataset.paypalerror = false;\r\n } else {\r\n const $selectedOption = $payPalAccountList.selectedOptions[0];\r\n const selectedOptionNonceValue = $selectedOption.getAttribute('data-nonce');\r\n\r\n setNonceInputValue($braintreePayPalNonce, selectedOptionNonceValue);\r\n displayContinueButton($continueButton);\r\n hidePayPalButon($paypalButton);\r\n\r\n // A case when a buyer re-added a PayPal account that he already had saved (session account\r\n // has the same email as stored accoutnt)\r\n if (vaultModeEnabled && buyerAuthentificated && !orderIntentEnabled) {\r\n if (storedAccountWithSessionAccountEmail) {\r\n hideSavePayPalAccountBlock($savePaypalAccountCountainer);\r\n } else {\r\n displaySavePayPalAccountBlock($savePaypalAccountCountainer);\r\n }\r\n }\r\n }\r\n\r\n selectPayPalCheckoutTab($payPalTab);\r\n\r\n break;\r\n\r\n // Buyer selected stored account\r\n case constantList.STORED_ACCOUNT:\r\n const selectedAccountEmail = $selectedPayPalAccountOption.text;\r\n\r\n if (vaultModeEnabled && !orderIntentEnabled) {\r\n hideSavePayPalAccountBlock($savePaypalAccountCountainer);\r\n }\r\n\r\n setNonceInputValue($braintreePayPalNonce, '');\r\n displayContinueButton($continueButton);\r\n hidePayPalButon($paypalButton);\r\n\r\n selectPayPalCheckoutTab($payPalTab);\r\n setBraintreePayPalEmailInput($braintreePaypalEmail, selectedAccountEmail);\r\n\r\n // Display billing address of selected PayPal account\r\n payPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress($selectedPayPalAccountOption);\r\n\r\n $continueButton.addEventListener('click', payPalSessionAccountComponent.removeSessionNonce);\r\n\r\n break;\r\n }\r\n}\r\n\r\n/**\r\n * Init PayPal Account list functionality\r\n */\r\nfunction init() {\r\n $payPalAccountList = document.getElementById('braintreePaypalAccountsList');\r\n $savePaypalAccountCountainer = document.getElementById('braintreeSavePaypalAccountContainer');\r\n $braintreePayPalNonce = document.getElementById('braintreePayPalNonce');\r\n $paypalButton = document.querySelector('.js-braintree-paypal-billing-button');\r\n $continueButton = document.querySelector('button.submit-payment');\r\n $payPalTab = document.querySelector('.js-paypal-tab');\r\n $braintreePaypalEmail = document.getElementById('braintreePaypalEmail');\r\n\r\n const buyerAuthenticated = isBuyerAuthenticated($payPalAccountList);\r\n\r\n // Add on change \"account list\" event\r\n $payPalAccountList.addEventListener('change', accountsListChange);\r\n // Saves selected billing address from CREDIT_CARD tab\r\n paymentMethodGeneral.saveSelectedBillingAddressFromPreviousTab();\r\n // Execute \"account list\" change function to setup init values\r\n accountsListChange();\r\n // Check whether buyer has proceeded with the same email which is already stored\r\n // if yes we hide stored account with the same email in dropdown\r\n // if no we show all existent PP accounts in dropdown (stored + new session account)\r\n handleStoredAccountsShowing(buyerAuthenticated);\r\n\r\n // TCS CUSTOM START: Add gtm event\r\n $('body').on('click', '.js-paypal-tab', function() {\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'paypalClick',\r\n eventLabel: 'checkout_funnel_traditional'\r\n });\r\n }\r\n });\r\n // TCS CUSTOM END: Add gtm event\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst PayPalExpressModel = require('../models/payPalExpressModel');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\r\nconst paypalMinicartButtonBehavior = require('./payPalButtonDisplayBehavior');\r\nconst helper = require('../../helper');\r\n\r\nconst PAYPAL_BUTTON_SELECTOR = '.js-paypal-minicart-button .js-braintree-paypal-cart-button';\r\n\r\nlet $payPalButton;\r\n\r\n/**\r\n * Init PayPal on the MiniCart Page\r\n * @returns {void} stop function execution in case if PayPal button wasn't rendered\r\n */\r\nfunction initPayPalOnMiniCart() {\r\n const $paypalMinicartButton = document.querySelector('.js-paypal-minicart-button');\r\n\r\n // Case when buyer remove product from the Cart\r\n $('body').on('cart:update', function() {\r\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\r\n });\r\n\r\n paypalMinicartButtonBehavior.paypalMinicartButtonBehavior($paypalMinicartButton);\r\n\r\n const payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n const isPayPalButtonWasInited = helper.tryParseJSON($payPalButton.getAttribute('data-is-inited'));\r\n\r\n // Do not init PayPal button if it was already inited or PayPal configs are empty\r\n if (isPayPalButtonWasInited || typeof payPalConfigurations !== 'object' || payPalConfigurations === null) {\r\n return;\r\n }\r\n\r\n const $csrfToken = document.querySelector('.js-braintree-cart-paypal-buttons-wrap #csrf_token');\r\n const $loaderContainer = document.querySelector('.js-braintree-paypal-loader');\r\n\r\n const clientInstancePromise = paymentMethodGeneral.createGeneralClientInstancePromise();\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(payPalConfigurations.messages);\r\n const PayPalExpress = new PayPalExpressModel(alertHandler,\r\n clientInstancePromise,\r\n PAYPAL_BUTTON_SELECTOR,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n // Generate Fraud Data if enabled\r\n PayPalExpress.generateFraudData();\r\n\r\n // Init PayPal button\r\n PayPalExpress.initPayment();\r\n\r\n // Indicate that PayPal button was already inited.\r\n $payPalButton.setAttribute('data-is-inited', true);\r\n}\r\n\r\n/**\r\n * Init PayPal button on the MiniCart Page\r\n */\r\nfunction init() {\r\n const $minicartPopover = document.querySelector('.minicart .popover');\r\n\r\n // To avoid execution of this code on checkout page\r\n if ($minicartPopover) {\r\n const observer = new MutationObserver(function(mutations) {\r\n mutations.forEach(function(mutation) {\r\n if (mutation.addedNodes.length < 2) {\r\n return;\r\n }\r\n\r\n $payPalButton = document.querySelector(PAYPAL_BUTTON_SELECTOR);\r\n\r\n if ($payPalButton) {\r\n initPayPalOnMiniCart();\r\n }\r\n });\r\n });\r\n\r\n observer.observe($minicartPopover, { childList: true });\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst PayPalProductPageModel = require('../models/payPalProductModel');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\n\r\nconst payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\r\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Init PayPal button on the Product Page\r\n * @param {Promise} clientInstancePromise Client Instance Promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n const pvpModels = [];\r\n const PP_BTN_SELECTOR = '.js-braintree-paypal-cart-button';\r\n const paypalButtonContainers = document.querySelectorAll('.js-braintree-pdp-button, .js-braintree-pdp-button-global');\r\n\r\n let isVaultMode;\r\n let payPalConfigurations;\r\n\r\n if (paypalButtonContainers) {\r\n paypalButtonContainers.forEach((container, index) => {\r\n const $payPalButton = container.querySelector(PP_BTN_SELECTOR);\r\n const $loaderContainer = container.querySelector('.js-braintree-paypal-loader');\r\n const $csrfToken = container.querySelector('.js-braintree-cart-paypal-buttons-wrap #csrf_token');\r\n\r\n if ($payPalButton) {\r\n $payPalButton.classList.add(`${PP_BTN_SELECTOR.slice(1)}-${index}-pdp`);\r\n\r\n const selector = `.${Array.from($payPalButton.classList).join('.')}`;\r\n\r\n payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n isVaultMode = payPalConfigurations.options.flow !== 'checkout';\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(payPalConfigurations.messages);\r\n\r\n const PayPalProductPage = new PayPalProductPageModel(alertHandler,\r\n clientInstancePromise,\r\n selector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n // Generate Fraud Data if enabled\r\n PayPalProductPage.generateFraudData();\r\n\r\n pvpModels.push(PayPalProductPage);\r\n }\r\n });\r\n\r\n // Init PayPal buttons\r\n braintreePayPalSDK.payPalButtonRendering(clientInstancePromise,\r\n isVaultMode,\r\n payPalConfigurations,\r\n pvpModels);\r\n\r\n // Init behavior for hide/show PayPal button\r\n payPalButtonDisplayBehavior.initProductPage();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst PayPalProductViewPageModel = require('../models/payPalProductModel');\r\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\r\n\r\nconst payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\r\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Init PayPal button on the Product View Page\r\n * @param {Promise} clientInstancePromise Client Instance Promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n const PP_BTN_SELECTOR = '.js-braintree-paypal-cart-button';\r\n\r\n const pvpModels = [];\r\n\r\n let isVaultMode;\r\n let payPalConfigurations;\r\n\r\n const paypalButtonContainers\r\n = document.querySelectorAll('.quick-view-dialog .js-braintree-pvp-button, .quick-view-dialog .js-braintree-pvp-button-global');\r\n\r\n if (paypalButtonContainers) {\r\n paypalButtonContainers.forEach((container, index) => {\r\n const $payPalButton = container.querySelector(PP_BTN_SELECTOR);\r\n const $loaderContainer = container.querySelector('.js-braintree-paypal-loader');\r\n const $csrfToken = container.querySelector('.js-braintree-cart-paypal-buttons-wrap #csrf_token');\r\n\r\n if ($payPalButton) {\r\n $payPalButton.classList.add(`${PP_BTN_SELECTOR.slice(1)}-${index}-pvp`);\r\n\r\n const selector = `.${Array.from($payPalButton.classList).join('.')}`;\r\n\r\n payPalConfigurations = helper.tryParseJSON($payPalButton.getAttribute('data-braintree-config'));\r\n isVaultMode = payPalConfigurations.options.flow !== 'checkout';\r\n\r\n const alertHandler = new PaypalAlertHandlerModel(payPalConfigurations.messages);\r\n\r\n const PayPalProductViewPage = new PayPalProductViewPageModel(alertHandler,\r\n clientInstancePromise,\r\n selector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n // Generate Fraud Data if enabled\r\n PayPalProductViewPage.generateFraudData();\r\n\r\n pvpModels.push(PayPalProductViewPage);\r\n }\r\n });\r\n\r\n // Init PayPal buttons\r\n braintreePayPalSDK.payPalButtonRendering(clientInstancePromise,\r\n isVaultMode,\r\n payPalConfigurations,\r\n pvpModels);\r\n\r\n // Init behavior for hide/show PayPal button\r\n payPalButtonDisplayBehavior.initProductViewPage();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst payPalSessionAccountHelper = require('../helpers/payPalSessionAccountHelper');\r\n\r\n/**\r\n * Function which remove session nonce and related to the session account data\r\n */\r\nfunction removeSessionNonce() {\r\n const $braintreePayPalNonce = document.getElementById('braintreePayPalNonce');\r\n const $braintreePaypalAccount = document.getElementById('braintreePaypalAccount');\r\n\r\n const sessionOption = helper.getSessionAccountOption({\r\n querySelector: '#braintreePaypalAccountsList',\r\n id: 'braintreePaypalAccount'\r\n });\r\n\r\n if (sessionOption) {\r\n $braintreePayPalNonce.value = '';\r\n $braintreePaypalAccount.selected = false;\r\n\r\n sessionOption.classList.add('used-paypal-account-hide');\r\n sessionOption.classList.remove('used-paypal-account');\r\n sessionOption.value = '';\r\n sessionOption.text = '';\r\n sessionOption.setAttribute('data-session-account', false);\r\n sessionOption.setAttribute('data-save', false);\r\n\r\n // Handles a behavior inside PayPal tab, when session PayPal account was deleted\r\n payPalSessionAccountHelper.handlePaypalTabBehavior();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n removeSessionNonce\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Display billing address of passed paypal payment option (of selected paypal payment option)\r\n * @param {Object} selectedPayPalPayment Selected PayPal payment option\r\n */\r\nfunction displaySelectedStoredBillingAddress(selectedPayPalPayment) {\r\n const paymentMethodGeneralHelper = require('../../../braintree/paymentMethodGeneralHelper');\r\n\r\n if (selectedPayPalPayment) {\r\n const selectedOptionClassList = selectedPayPalPayment.classList;\r\n const storedPayPalAddressOption = document.querySelector('.stored-billing-address');\r\n\r\n let billingAddressAsString;\r\n\r\n if (selectedOptionClassList.contains('js-new-paypal-account')) {\r\n billingAddressAsString = selectedPayPalPayment.getAttribute('data-billing-address');\r\n } else {\r\n billingAddressAsString = paymentMethodGeneralHelper.getBillingAddressAsString(selectedPayPalPayment);\r\n }\r\n\r\n if (billingAddressAsString) {\r\n if (storedPayPalAddressOption) {\r\n storedPayPalAddressOption.text = billingAddressAsString;\r\n storedPayPalAddressOption.selected = true;\r\n } else {\r\n paymentMethodGeneralHelper.createBillingAddressOption('stored-billing-address', billingAddressAsString);\r\n\r\n try {\r\n var parsedAddress = JSON.parse(selectedPayPalPayment.getAttribute('data-billing-address'));\r\n\r\n if (parsedAddress) {\r\n // TCS CUSTOM - Update the billing form with the address data\r\n document.getElementById('billingFirstName').value = parsedAddress.firstName;\r\n document.getElementById('billingLastName').value = parsedAddress.lastName;\r\n document.getElementById('billingAddressOne').value = parsedAddress.address1;\r\n document.getElementById('billingAddressTwo').value = parsedAddress.address2;\r\n document.getElementById('billingAddressCity').value = parsedAddress.city;\r\n document.getElementById('billingZipCode').value = parsedAddress.postalCode;\r\n document.getElementById('billingState').value = parsedAddress.stateCode;\r\n document.getElementById('billingCountry').value = parsedAddress.countryCode.value;\r\n document.getElementById('phoneNumber').value = parsedAddress.phone;\r\n }\r\n } catch (e) {}\r\n }\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n displaySelectedStoredBillingAddress\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Save PayPal account to DW\r\n * @param {string} addPayPalAccountUrl add PayPal account url\r\n * @param {FormData} paymentFormData payment FormData\r\n * @returns {Promise} response from server\r\n */\r\nfunction savePayPalAccount(addPayPalAccountUrl, paymentFormData) {\r\n return fetch(addPayPalAccountUrl, {\r\n method: 'POST',\r\n body: btoa(JSON.stringify(Object.fromEntries(paymentFormData))),\r\n headers: { 'Content-Type': 'application/json' }\r\n });\r\n}\r\n\r\n/**\r\n * Render PayPal account\r\n * @param {string} renderAccountsUrl render PayPal accounts URL\r\n * @returns {Promise} promise with html of PayPal account list\r\n */\r\nfunction renderPayPalAccounts(renderAccountsUrl) {\r\n return fetch(renderAccountsUrl);\r\n}\r\n\r\n/**\r\n * Hide PayPal account button\r\n */\r\nfunction hidePaypalAccountBtn() {\r\n const $addNewPaypalAccountBtn = document.querySelector('.js-add-paypal-account');\r\n const $paypalAccountButtonWrapper = document.querySelector('.js-braintree-account-paypal-button-wrapper');\r\n\r\n // Display add new paypal account button\r\n $addNewPaypalAccountBtn.classList.remove('d-none');\r\n // Hide PayPal Account button\r\n $paypalAccountButtonWrapper.classList.add('d-none');\r\n}\r\n\r\n/**\r\n * Add PayPal accounts html template to the DOM\r\n * @param {string} accountListTemplate html template with PayPal account list\r\n */\r\nfunction addPayPalAccountsToTheTemplate(accountListTemplate) {\r\n const $payPalAccountsContainer = document.querySelector('.js-paypal-accounts');\r\n\r\n $payPalAccountsContainer.innerHTML = accountListTemplate;\r\n}\r\n\r\n/**\r\n * Trigger cart:updates event\r\n */\r\nfunction throwCartUpdate() {\r\n $('body').trigger('cart:update');\r\n}\r\n\r\nmodule.exports = {\r\n savePayPalAccount,\r\n renderPayPalAccounts,\r\n hidePaypalAccountBtn,\r\n addPayPalAccountsToTheTemplate,\r\n throwCartUpdate\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Show PayPal Account button\r\n */\r\nfunction showPayPalAccountBtn() {\r\n const $addPaypalAccountBtn = document.querySelector('.js-add-paypal-account');\r\n const $paypalAccountWrapper = document.querySelector('.js-braintree-account-paypal-button-wrapper');\r\n\r\n $addPaypalAccountBtn.classList.add('d-none');\r\n $paypalAccountWrapper.classList.remove('d-none');\r\n}\r\n\r\nmodule.exports = {\r\n showPayPalAccountBtn\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nconst btPaypalAccontSelectorID = 'braintreePaypalAccount';\r\n\r\n/**\r\n * Store payment as session payment\r\n * @param {string} nonce Nonce\r\n * @param {string} sessionAccountEmail Session account email\r\n */\r\nfunction storePaymentAsSessionPayment(nonce, sessionAccountEmail) {\r\n const $accountListBlock = document.querySelector('.js-braintree-used-paypal-account');\r\n const $braintreePaypalNonceInput = document.querySelector('input[name=braintreePaypalNonce]');\r\n const $sessionPyapalAccount = document.getElementById(btPaypalAccontSelectorID);\r\n\r\n if ($braintreePaypalNonceInput) {\r\n $braintreePaypalNonceInput.value = nonce;\r\n }\r\n\r\n $sessionPyapalAccount.setAttribute('data-session-account', 'true');\r\n $sessionPyapalAccount.setAttribute('data-nonce', nonce);\r\n $sessionPyapalAccount.innerText = sessionAccountEmail;\r\n $sessionPyapalAccount.classList.remove('used-paypal-account-hide');\r\n\r\n // Show account list block\r\n $accountListBlock.classList.remove('used-paypal-account-hide');\r\n}\r\n\r\n/**\r\n * Select session paypal accounts.\r\n * Every time when buyer adds new account, the New Account option is selected (doesn't matter logged in buyer or not)\r\n */\r\nfunction setSessionAccountOptionDefault() {\r\n const $savedPayPalAccountList = document.getElementById('braintreePaypalAccountsList');\r\n const $sessionPyapalAccount = document.getElementById(btPaypalAccontSelectorID);\r\n\r\n Array.prototype.forEach.call($savedPayPalAccountList, function(element) {\r\n element.removeAttribute('selected');\r\n });\r\n\r\n $sessionPyapalAccount.selected = true;\r\n}\r\n\r\n/**\r\n * Get stored account by session account email\r\n * @returns {Object} js container with stored account\r\n */\r\nfunction getStoredAccountBySesionAccountEmail() {\r\n const sessionPaypalAccount = document.getElementById('braintreePaypalAccount');\r\n const paypalAccountsList = document.getElementById('braintreePaypalAccountsList');\r\n const sessionEmail = sessionPaypalAccount.value || null;\r\n\r\n return Array.apply(null, paypalAccountsList.options).find(function(el) {\r\n return el.getAttribute('data-id') && sessionEmail && sessionEmail === el.innerText;\r\n });\r\n}\r\n\r\n/**\r\n * Fill DW billing form with billing address from Bt\r\n * @param {Object} braintreeAddress Billing address from BT\r\n * @param {Object} btDetails Details from BT\r\n * @returns {Object} Object with billing form fields and it's values\r\n */\r\nfunction mapBraintreeWithDwBillingAddress(braintreeAddress, btDetails) {\r\n const $btPaymentMethodWrapper = document.querySelector('.js-braintree-billing-payment-wrap');\r\n const dwBillingFormFieldNames = helper.tryParseJSON($btPaymentMethodWrapper.getAttribute('data-billing-form-fields-names'));\r\n\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_firstName = btDetails.firstName;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_lastName = btDetails.lastName;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_address1 = braintreeAddress.line1;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_address2 = braintreeAddress.line2;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_city = braintreeAddress.city;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_postalCode = decodeURIComponent(braintreeAddress.postalCode);\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_states_stateCode = braintreeAddress.state;\r\n dwBillingFormFieldNames.dwfrm_billing_addressFields_country = braintreeAddress.countryCode;\r\n dwBillingFormFieldNames.dwfrm_billing_contactInfoFields_phone = btDetails.phone;\r\n\r\n return dwBillingFormFieldNames;\r\n}\r\n\r\n/**\r\n * Create billing address data\r\n * @param {Object} payloadDetails BT paymload details\r\n * @returns {Object} Mapped billing data\r\n */\r\nfunction createBillingAddressData(payloadDetails) {\r\n const billingAddress = payloadDetails.billingAddress;\r\n\r\n billingAddress.firstName = payloadDetails.firstName;\r\n billingAddress.lastName = payloadDetails.lastName;\r\n billingAddress.email = payloadDetails.email;\r\n billingAddress.phone = payloadDetails.phone;\r\n billingAddress.countryCodeAlpha2 = billingAddress.countryCode;\r\n billingAddress.streetAddress = billingAddress.line1;\r\n billingAddress.extendedAddress = billingAddress.line2;\r\n billingAddress.locality = billingAddress.city;\r\n billingAddress.region = billingAddress.state;\r\n\r\n return billingAddress;\r\n}\r\n\r\n/**\r\n * Copy PayPal billing address to DW billing form\r\n * @param {Object} braintreeBillingAddress Billing address from BT\r\n * @param {Object} btDetails Details from bt\r\n */\r\nfunction copyPayPalBillingAddressToDw(braintreeBillingAddress, btDetails) {\r\n const $braintreePaypalBillingAddressInput = document.querySelector('input[name=braintreePaypalBillingAddress]');\r\n const paypalBillingData = mapBraintreeWithDwBillingAddress(braintreeBillingAddress, btDetails);\r\n\r\n // Store billing address inside hidden input in order to send it to the server and\r\n // proccess with billing address server logic (the logic - billing address can't be overrided by\r\n // buyer. Only PayPal billing address should be used)\r\n $braintreePaypalBillingAddressInput.value = JSON.stringify(paypalBillingData);\r\n helper.updateBillingFormValues(paypalBillingData);\r\n}\r\n\r\n/**\r\n * Create billig address FormData\r\n * @param {Object} paypalBillingFormFields PayPal billing form fields\r\n * @param {Object} billingAddressData Billing address data\r\n * @returns {FormData} Billing FormData\r\n */\r\nfunction createBillingAddressFormData(paypalBillingFormFields, billingAddressData) {\r\n return helper.createPaymentFormData(paypalBillingFormFields, {\r\n firstName: billingAddressData.firstName,\r\n lastName: billingAddressData.lastName,\r\n address1: billingAddressData.streetAddress,\r\n address2: billingAddressData.extendedAddress || '',\r\n city: billingAddressData.locality,\r\n postalCode: decodeURIComponent(billingAddressData.postalCode),\r\n stateCode: billingAddressData.state,\r\n country: billingAddressData.countryCodeAlpha2,\r\n email: billingAddressData.email,\r\n phone: billingAddressData.phone,\r\n paymentMethod: 'PayPal'\r\n });\r\n}\r\n\r\n/**\r\n * Fill PayPal payment fields with payment data\r\n * @param {Object} btDetails Details from BT\r\n */\r\nfunction fillPayPalPaymentFields(btDetails) {\r\n const $braintreePaypalEmailInput = document.getElementById('braintreePaypalEmail');\r\n const $sessionPaypalAccount = document.getElementById(btPaypalAccontSelectorID);\r\n const btEmail = btDetails.email;\r\n\r\n $braintreePaypalEmailInput.value = btEmail;\r\n $sessionPaypalAccount.value = btEmail;\r\n $sessionPaypalAccount.innerText = btEmail;\r\n\r\n // Hide Continue button\r\n helper.continueButtonToggle(false);\r\n}\r\n\r\n/**\r\n * Fill fraud data input with fraud data\r\n * @param {Object} data Fraud data\r\n */\r\nfunction fillFraudDataInput(data) {\r\n const $braintreePaypalRiskDataInput = document.querySelector('input[name=braintreePaypalRiskData]');\r\n\r\n $braintreePaypalRiskDataInput.value = data.deviceData;\r\n}\r\n\r\n/**\r\n * Append CSRF token to the billing FormData\r\n * @param {FormData} formData Billing form data\r\n * @param {Object} $csrfToken CSRF token js container\r\n */\r\nfunction appendCsrfTokenToFormData(formData, $csrfToken) {\r\n formData.append($csrfToken.name, $csrfToken.value);\r\n}\r\n\r\n/**\r\n * Append funding source to the billing FormData\r\n * @param {FormData} formData Billing form data\r\n * @param {string} fundingSource funding source\r\n */\r\nfunction appendBraintreePaypalFundingSourceToFormData(formData, fundingSource) {\r\n formData.append('braintreePaypalFundingSource', fundingSource);\r\n}\r\n\r\n/**\r\n * Append email to the billing FormData\r\n * @param {FormData} formData billing form data\r\n * @param {string} email user email\r\n */\r\nfunction appendEmailAsStringToFormData(formData, email) {\r\n formData.append('braintreePaypalEmail', email);\r\n}\r\n\r\n/**\r\n * Append fraud data to the FormData\r\n * @param {FormData} billingFromData billing FormData\r\n * @param {Object} fraudData fraud data\r\n */\r\nfunction appendFraudDataToFormData(billingFromData, fraudData) {\r\n billingFromData.append('braintreePaypalRiskData', fraudData);\r\n}\r\n\r\n/**\r\n * Append billing address data as a string to the FromData\r\n * @param {FormData} billingFromData Billing FormData\r\n * @param {Object} billingData Billing data\r\n */\r\nfunction appendBillingAddressAsStringToFormData(billingFromData, billingData) {\r\n billingFromData.append('braintreePaypalBillingAddress', JSON.stringify(billingData));\r\n}\r\n\r\n/**\r\n * Append BT payment fields to the FromData\r\n * @param {FormData} billingFromData Billing FormData\r\n * @param {Object} payload payload from BT\r\n */\r\nfunction appendBtPaymentFieldsToFormData(billingFromData, payload) {\r\n billingFromData.append('braintreePaypalNonce', payload.nonce);\r\n billingFromData.append('braintreeSavePaypalAccount', false);\r\n}\r\n\r\n/**\r\n * Append params to the URL\r\n * @param {string} url To which append params\r\n * @param {Object} param Which should be appended to the URL\r\n * @returns {string} Final URL with passed params\r\n */\r\nfunction appendToUrl(url, param) {\r\n let newUrl = url;\r\n\r\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(param).map(function(key) {\r\n return `${key }=${encodeURIComponent(param[key])}`;\r\n }).join('&');\r\n\r\n return newUrl;\r\n}\r\n\r\nmodule.exports = {\r\n storePaymentAsSessionPayment,\r\n setSessionAccountOptionDefault,\r\n getStoredAccountBySesionAccountEmail,\r\n copyPayPalBillingAddressToDw,\r\n createBillingAddressFormData,\r\n createBillingAddressData,\r\n fillPayPalPaymentFields,\r\n fillFraudDataInput,\r\n appendCsrfTokenToFormData,\r\n appendFraudDataToFormData,\r\n appendBillingAddressAsStringToFormData,\r\n appendBtPaymentFieldsToFormData,\r\n appendEmailAsStringToFormData,\r\n appendBraintreePaypalFundingSourceToFormData,\r\n // Utils\r\n appendToUrl\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Hide PayPal button\r\n */\r\nfunction hidePayPalButtons() {\r\n const payPalButtonsContainer = document.querySelector('.js-braintree-paypal-billing-button');\r\n\r\n payPalButtonsContainer.classList.add('d-none');\r\n}\r\n\r\n/* -------------------------------------------- Account\\Options Manipulations -------------------------------------------- */\r\n\r\n/**\r\n * Hide account option from account dropdown\r\n * @param {Object} $accountOption vanilla js account option container\r\n */\r\nfunction hideAccount($accountOption) {\r\n $accountOption.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Hide Save New Account checkbox with corresponding block\r\n */\r\nfunction hideSaveNewAccountContainer() {\r\n const savePaypalAccountCheckbox = document.getElementById('braintreeSavePaypalAccount');\r\n const savePaypalAccountContainer = document.getElementById('braintreeSavePaypalAccountContainer');\r\n\r\n savePaypalAccountCheckbox.value = false;\r\n savePaypalAccountContainer.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Make all hidden stored paypal accounts visible for buyer\r\n */\r\nfunction displayAllStoredAccounts() {\r\n const braintreePaypalAccountsList = document.getElementById('braintreePaypalAccountsList');\r\n\r\n Array.prototype.forEach.call(braintreePaypalAccountsList, function(el) {\r\n if (el.style.display === 'none') {\r\n el.style.display = 'block';\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Hides 'Save PayPal Account' checkbox on the Billing Page\r\n */\r\nfunction hideSavePayPalAccountBlock() {\r\n const $savePaypalAccountCountainer = document.getElementById('braintreeSavePaypalAccountContainer');\r\n\r\n $savePaypalAccountCountainer.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Function which store billing data on session payment option level\r\n * @param {Object} btPayloadDetails braintree payload details\r\n */\r\nfunction addBillingAddressOnPaymentOptionLevel(btPayloadDetails) {\r\n const $sessionPyapalAccount = document.getElementById('braintreePaypalAccount');\r\n const btBillingAddress = btPayloadDetails.billingAddress;\r\n\r\n $sessionPyapalAccount.setAttribute('data-billing-address', JSON.stringify({\r\n firstName: btPayloadDetails.firstName,\r\n lastName: btPayloadDetails.lastName,\r\n line1: btBillingAddress.line1,\r\n city: btBillingAddress.city,\r\n state: btBillingAddress.state,\r\n postalCode: decodeURIComponent(btBillingAddress.postalCode)\r\n }));\r\n}\r\n\r\nmodule.exports = {\r\n hidePayPalButtons,\r\n // Account\\Options Manipulations\r\n hideAccount,\r\n hideSaveNewAccountContainer,\r\n displayAllStoredAccounts,\r\n hideSavePayPalAccountBlock,\r\n addBillingAddressOnPaymentOptionLevel\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Create shipping address data\r\n * @param {Object} payloadDetails BT payload details\r\n * @returns {Object} Shipping address\r\n */\r\nfunction createShippingAddressData(payloadDetails) {\r\n const shippingAddressPayPalData = payloadDetails.shippingAddress;\r\n // TCS CUSTOM - Adds in the extendedAddress and line2 attributes to map downstream\r\n const shippingAddressData = {\r\n line1: shippingAddressPayPalData.line1,\r\n line2: shippingAddressPayPalData.line2,\r\n streetAddress: shippingAddressPayPalData.line1,\r\n extendedAddress: shippingAddressPayPalData.line2,\r\n city: shippingAddressPayPalData.city,\r\n locality: shippingAddressPayPalData.city,\r\n state: shippingAddressPayPalData.state,\r\n region: shippingAddressPayPalData.state,\r\n countryCode: shippingAddressPayPalData.countryCode,\r\n countryCodeAlpha2: shippingAddressPayPalData.countryCode,\r\n postalCode: decodeURIComponent(shippingAddressPayPalData.postalCode),\r\n email: payloadDetails.email,\r\n phone: payloadDetails.phone\r\n };\r\n\r\n if (!shippingAddressPayPalData.recipientName) {\r\n shippingAddressData.firstName = payloadDetails.firstName;\r\n shippingAddressData.lastName = payloadDetails.lastName;\r\n shippingAddressData.recipientName = `${payloadDetails.firstName} ${payloadDetails.lastName}`;\r\n } else {\r\n shippingAddressData.recipientName = shippingAddressPayPalData.recipientName;\r\n }\r\n\r\n return shippingAddressData;\r\n}\r\n\r\n/**\r\n * Append Shipping data as a String to the FormData\r\n * @param {FormData} billingFromData Billing FormData\r\n * @param {Object} shippingData Shipping data\r\n */\r\nfunction appendShippingDataAsStringToFormData(billingFromData, shippingData) {\r\n billingFromData.append('braintreePaypalShippingAddress', JSON.stringify(shippingData));\r\n billingFromData.append('expressCheckoutFlow', true);\r\n}\r\n\r\n/**\r\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\r\n * @param {string} email Email from payment method's response\r\n * @returns {Object} Customer form data\r\n */\r\nfunction createCustomerFormData(email) {\r\n const data = {\r\n email: email\r\n };\r\n\r\n const csrfToken = document.querySelector('.js-braintree-cart-paypal-buttons-wrap #csrf_token');\r\n const checkoutCustomerFormFields = document.querySelector('.js-braintree-cart-paypal-buttons-wrap')\r\n .getAttribute('data-checkout-customer-form-fields');\r\n\r\n const customerFormData = helper.createPaymentFormData(checkoutCustomerFormFields, data);\r\n\r\n customerFormData.append(csrfToken.name, csrfToken.value);\r\n\r\n return customerFormData;\r\n}\r\n\r\n/**\r\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\r\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\r\n * @param {string} email Email from payment method's response\r\n * @returns {Ajax} Ajax call to CheckoutServices-SubmitCustomer endpoint\r\n */\r\nfunction submitCustomerForm(email) {\r\n const paypalButtonsWrapper = document.querySelector('.js-braintree-cart-paypal-buttons-wrap');\r\n const isCustomerEmailEmpty = helper.tryParseJSON(paypalButtonsWrapper.getAttribute('data-is-customer-email-empty'));\r\n // Could be true only in case if email in basket is empty (first guest checkout from cart)\r\n\r\n if (isCustomerEmailEmpty) {\r\n const submitCustomerUrl = window.braintreeUrls.submitCustomerUrl;\r\n const customerFormData = createCustomerFormData(email);\r\n\r\n return fetch(submitCustomerUrl, {\r\n method: 'POST',\r\n body: customerFormData\r\n });\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Returns customer shipping address for 'createPayment' method of brainree SDK\r\n * @param {string} buttonSelector Class name of selector\r\n * @returns {Object} Shipping address object\r\n */\r\nfunction getSavedPaypalAddress(buttonSelector) {\r\n let payPalAccountData = {};\r\n const $paypalButton = document.querySelector(buttonSelector);\r\n\r\n payPalAccountData = helper.tryParseJSON($paypalButton.getAttribute('data-dafault-paypal-address'));\r\n\r\n return payPalAccountData;\r\n}\r\n\r\nmodule.exports = {\r\n createShippingAddressData,\r\n appendShippingDataAsStringToFormData,\r\n submitCustomerForm,\r\n getSavedPaypalAddress\r\n};\r\n","'use strict';\r\n\r\nconst billingFormHelper = require('./payPalBillingFormHelperGlobal');\r\nconst paypalCheckoutModelHelper = require('./payPalCheckoutModelHelper');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Is vault mode enabled\r\n * @param {Object} $paypalButton PayPal button js container\r\n * @returns {boolean} 'true' in case if vault mode is enabled\r\n */\r\nfunction isVaultModeEnabled($paypalButton) {\r\n const payPalConfigurations = helper.tryParseJSON($paypalButton.getAttribute('data-braintree-config'));\r\n\r\n return payPalConfigurations.vaultModeEnabled;\r\n}\r\n\r\n/**\r\n * Returns whether 'order' intent type is enbaled\r\n * @param {Object} $paypalButton PayPal button js container\r\n * @returns {boolean} true/false\r\n */\r\nfunction isOrderIntentEnabled($paypalButton) {\r\n const payPalConfigurations = helper.tryParseJSON($paypalButton.getAttribute('data-braintree-config'));\r\n\r\n return payPalConfigurations.options.intent === 'order';\r\n}\r\n\r\n/**\r\n * Function which return account type.\r\n * Possible values are: new account, session account, stored account\r\n * @param {Object} $payPalAccountList PayPal account list js container\r\n * @param {Object} constantList Object with paypal account constants\r\n * @returns {string} Account type\r\n */\r\nfunction getAccountType($payPalAccountList, constantList) {\r\n let accountType;\r\n\r\n if ($payPalAccountList.value === 'newaccount') {\r\n accountType = constantList.NEW_ACCOUNT;\r\n } else if ($payPalAccountList.selectedOptions[0].id === 'braintreePaypalAccount') {\r\n accountType = constantList.SESSION_ACCOUNT;\r\n } else {\r\n accountType = constantList.STORED_ACCOUNT;\r\n }\r\n\r\n return accountType;\r\n}\r\n\r\n/**\r\n * Set nonce in to corresponding hidden input\r\n * @param {Object} $braintreePayPalNonce BT input nonce js container\r\n * @param {string} nonceValue Nonce\r\n */\r\nfunction setNonceInputValue($braintreePayPalNonce, nonceValue) {\r\n $braintreePayPalNonce.value = nonceValue;\r\n}\r\n\r\n/**\r\n * Hide save PayPal account block\r\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\r\n */\r\nfunction hideSavePayPalAccountBlock($savePaypalAccountCountainer) {\r\n $savePaypalAccountCountainer.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Display save PayPal account block\r\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\r\n */\r\nfunction displaySavePayPalAccountBlock($savePaypalAccountCountainer) {\r\n $savePaypalAccountCountainer.style.display = 'block';\r\n}\r\n\r\n/* --------------- PayPal button manipulations --------------- */\r\n/**\r\n * Show PayPal button\r\n * @param {Object} $paypalButton PayPal button js container\r\n */\r\nfunction displayPayPalButton($paypalButton) {\r\n $paypalButton.classList.remove('d-none');\r\n}\r\n\r\n/**\r\n * Hide PayPal button\r\n * @param {Object} $paypalButton PayPal button js container\r\n */\r\nfunction hidePayPalButon($paypalButton) {\r\n $paypalButton.classList.add('d-none');\r\n}\r\n\r\n/* --------------- Continue button manipulations --------------- */\r\n/**\r\n * Display Continue button\r\n * @param {Object} $continueButton Continue button js container\r\n */\r\nfunction displayContinueButton($continueButton) {\r\n $continueButton.style.display = '';\r\n}\r\n\r\n/**\r\n * Hide Continue button\r\n * @param {Object} $continueButton Continue button js container\r\n */\r\nfunction hideContinueButon($continueButton) {\r\n $continueButton.style.display = 'none';\r\n}\r\n\r\n/**\r\n * Return \"true\" if buyer is authenticated\r\n * Needed on the Checkout Page only\r\n * @param {Object} $payPalAccountList PayPal account list js container\r\n * @returns {boolean} \"true\" in case if buyer is authenticated\r\n */\r\nfunction isBuyerAuthenticated($payPalAccountList) {\r\n return helper.tryParseJSON($payPalAccountList.dataset.customerAuthenticated);\r\n}\r\n\r\n/**\r\n * Select PayPal account tab\r\n * @param {Object} $payPalTab PayPal payment tab js container\r\n */\r\nfunction selectPayPalCheckoutTab($payPalTab) {\r\n // TCS CUSTOM - Adds a timeout to allow the rest of the TCS/AB functionality to catch up\r\n // and allow the button to be clicked correctly in all scenarios\r\n setTimeout(() => {\r\n $payPalTab.click();\r\n }, 500);\r\n}\r\n\r\n/**\r\n * Set email in to corresponding input\r\n * @param {Object} $braintreePaypalEmail BT PayPal email input js container\r\n * @param {string} email Email\r\n */\r\nfunction setBraintreePayPalEmailInput($braintreePaypalEmail, email) {\r\n $braintreePaypalEmail.value = email;\r\n}\r\n\r\n/**\r\n * Returns whether the new PayPal account option is selected\r\n * @returns {boolean} Whether the new PayPal account option is selected\r\n */\r\nfunction isNewPayPalAccountOptionSelected() {\r\n const $payPalAccountList = document.getElementById('braintreePaypalAccountsList');\r\n\r\n if ($payPalAccountList) {\r\n return $payPalAccountList.value === 'newaccount';\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Handles showing stored PP account in dropdown\r\n * Checks whether buyer has proceeded with the same email which is already stored\r\n * Triggered while tokenization callback and page reload\r\n * @param {boolean} buyerAuthenticated Whether customer is authenticated\r\n */\r\nfunction handleStoredAccountsShowing(buyerAuthenticated) {\r\n if (!buyerAuthenticated) {\r\n return;\r\n }\r\n\r\n // Get stored account by session account email\r\n const $storedAccountOptionWithSameEmail = billingFormHelper.getStoredAccountBySesionAccountEmail();\r\n\r\n // The buyer added an account with the same email address already in the buyer's wallet\r\n if ($storedAccountOptionWithSameEmail) {\r\n // Hide stored account with same email\r\n paypalCheckoutModelHelper.hideAccount($storedAccountOptionWithSameEmail);\r\n } else {\r\n // We need this to undo what was done by \"if\" statement\r\n paypalCheckoutModelHelper.displayAllStoredAccounts();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n isVaultModeEnabled,\r\n getAccountType,\r\n setNonceInputValue,\r\n hideSavePayPalAccountBlock,\r\n displaySavePayPalAccountBlock,\r\n displayPayPalButton,\r\n hidePayPalButon,\r\n displayContinueButton,\r\n hideContinueButon,\r\n isBuyerAuthenticated,\r\n selectPayPalCheckoutTab,\r\n setBraintreePayPalEmailInput,\r\n isNewPayPalAccountOptionSelected,\r\n handleStoredAccountsShowing,\r\n isOrderIntentEnabled\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * Remove product from Cart\r\n */\r\nfunction removeProductFromCart() {\r\n fetch(helper.getUrlWithCsrfToken(window.braintreeUrls.removeAllProductsFromCart));\r\n}\r\n\r\nmodule.exports = {\r\n removeProductFromCart\r\n};\r\n","'use strict';\r\n\r\nconst base = require('base/product/base');\r\n\r\nconst PRODUCT_DETAIL_SELECTOR = '.product-detail';\r\n\r\n/**\r\n * Add product to the Cart on PVP\r\n * @param {string} ppBtnSelector - payPal button selector\r\n * @param {string} flow - payPal button flow (pdp/pvp)\r\n * @returns {void}\r\n */\r\nfunction addProductToCart(ppBtnSelector, flow) {\r\n /**\r\n * Gets options\r\n * @param {Object} productContainer - product container\r\n * @returns {string} options\r\n */\r\n function getOptions(productContainer) {\r\n return JSON.stringify(Array.from(productContainer.querySelectorAll('.product-option'))\r\n .map(elOption => {\r\n const selectedValue = elOption.querySelector('.options-select').value;\r\n const selectedOption = elOption.querySelector(`.options-select option[value=\"${selectedValue}\"]`);\r\n\r\n return {\r\n optionId: elOption.getAttribute('data-option-id'),\r\n selectedValueId: selectedOption.getAttribute('data-value-id')\r\n };\r\n }));\r\n }\r\n\r\n const bundleItems = document.querySelectorAll('.bundle-item');\r\n const setItems = document.querySelectorAll('.set-item');\r\n\r\n const ppBtnContainer = document.querySelector(ppBtnSelector).closest(`.js-braintree-${flow}-button, .js-braintree-${flow}-button-global`);\r\n const isGlobalButton = ppBtnContainer.classList.contains(`js-braintree-${flow}-button-global`);\r\n\r\n const pid = base.getPidValue(ppBtnContainer);\r\n const form = new FormData();\r\n\r\n let productContainer;\r\n let data = {};\r\n\r\n if (isGlobalButton || !setItems.length) {\r\n productContainer = document.querySelector(ppBtnSelector).closest(PRODUCT_DETAIL_SELECTOR) || document.querySelector(PRODUCT_DETAIL_SELECTOR);\r\n } else {\r\n productContainer = document.querySelector(ppBtnSelector).closest('.set-item');\r\n }\r\n\r\n if (bundleItems.length) {\r\n const quantity = document.querySelector('.modal-footer, .bundle-footer').querySelector('.quantity-select').value;\r\n\r\n data = {\r\n pid: pid,\r\n quantity: quantity\r\n };\r\n\r\n const items = Array.from(bundleItems).map(function(item) {\r\n return {\r\n pid: item.querySelector('.product-id').innerText,\r\n quantity: parseInt(item.querySelector('.quantity').getAttribute('data-quantity'), 10)\r\n };\r\n });\r\n\r\n data.childProducts = JSON.stringify(items);\r\n } else if (setItems.length && isGlobalButton) {\r\n const items = Array.from(setItems).map(function(item) {\r\n return {\r\n pid: base.getPidValue(item),\r\n qty: parseInt(base.getQuantitySelected(item), 10),\r\n options: getOptions(item)\r\n };\r\n });\r\n\r\n data.pidsObj = JSON.stringify(items);\r\n } else {\r\n data = {\r\n pid: pid,\r\n quantity: base.getQuantitySelected(ppBtnContainer),\r\n options: getOptions(productContainer)\r\n };\r\n }\r\n\r\n Object.keys(data).forEach((key) => {\r\n form.append(key, data[key]);\r\n });\r\n\r\n return fetch(document.querySelector('.js-add-to-cart-url').value, {\r\n method: 'POST',\r\n body: form\r\n });\r\n}\r\n\r\n/**\r\n * Get basket data\r\n * @param {string} url Braintree-GetOrderInfo URL\r\n * @returns {Object} Object with basket data from DW\r\n */\r\nfunction getBasketData(url) {\r\n return fetch(url).then((response) => response.json());\r\n}\r\n\r\n/**\r\n * @param {string} url Validate address url\r\n * @param {Object} payload Payload form data\r\n * @returns {Promise} Promise with response result\r\n */\r\nfunction validateAddresses(url, payload) {\r\n const $token = document.querySelector('[name=\"csrf_token\"]');\r\n const token = $token ? $token.value : '';\r\n\r\n return fetch(`${url}?csrf_token=${token}`, {\r\n method: 'POST',\r\n body: JSON.stringify(payload),\r\n headers: { 'Content-Type': 'application/json' }\r\n }).then((response) => response.json());\r\n}\r\n\r\n/**\r\n * TCS CUSTOM: Updated to work with the Recaptcha added in AB\r\n *\r\n * Submit payment (billing) data to the server\r\n * @param {string} submitPaymentUrl Submit payment URL\r\n * @param {FormData} billingFormData Billing Form Data\r\n * @param {string} redirectUrl Redirect URL after succesfull payment data submit\r\n * @param {Object} loader Loader\r\n * @param {Object} alertHandler Alert Handler Model instance\r\n */\r\nfunction submitPaymentDataToServerPromise(submitPaymentUrl, billingFormData, redirectUrl, loader, alertHandler) {\r\n /**\r\n * TCS CUSTOM START\r\n * Adds in Recaptcha support for the CheckoutServices-SubmitPayment path\r\n */\r\n // eslint-disable-next-line max-len\r\n var recaptcha = require('../../../../../../../../../../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha');\r\n\r\n var object = {};\r\n\r\n billingFormData.forEach(function(value, key) {\r\n object[key] = value;\r\n });\r\n\r\n var updatedBillingFormData = $.param(object);\r\n\r\n recaptcha.check(null, {\r\n url: submitPaymentUrl,\r\n method: 'POST',\r\n data: updatedBillingFormData,\r\n dataType: 'json',\r\n success: function(data) {\r\n if (data.error) {\r\n let errorMessage = '';\r\n\r\n if ('fieldErrors' in data && data.fieldErrors && data.fieldErrors.length) {\r\n data.fieldErrors.forEach(function(error, index) {\r\n const keys = Object.keys(error);\r\n\r\n if (keys.length) {\r\n errorMessage += `${keys[index].replace('dwfrm_billing_', '')\r\n .replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\r\n }\r\n });\r\n alertHandler.showError(errorMessage);\r\n }\r\n\r\n if ('serverErrors' in data && data.serverErrors && data.serverErrors.length) {\r\n data.serverErrors.forEach(function(error) {\r\n errorMessage += `${error}. `;\r\n });\r\n alertHandler.showError(errorMessage);\r\n }\r\n\r\n // Usually in case of any errors \"cartError\" will be \"true\"\r\n if (data.cartError) {\r\n window.location.href = data.redirectUrl;\r\n } else {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n }\r\n\r\n loader.hide();\r\n } else {\r\n sessionStorage.setItem('pageState', 'cart');\r\n\r\n // Check if skipping the review step\r\n if (window.CachedData.disableBraintreeReviewstep) {\r\n const placeOrderUrl = window.braintreeUrls.placeOrderUrl;\r\n\r\n // Send to Place Order and check the recaptcha there\r\n recaptcha.check(null, {\r\n url: placeOrderUrl,\r\n method: 'POST',\r\n success: function(secondData) {\r\n $('body').trigger('checkout:updateCheckoutViewError', secondData); // TCS CUSTOM - ADOBE ANALYTICS TRACKING\r\n $('body').trigger('checkout:afterPlaceOrder', secondData);\r\n if (secondData.error) {\r\n if (secondData.cartError) {\r\n // TCS CUSTOM: stop the spinner, enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n window.location.href = secondData.redirectUrl;\r\n } else {\r\n // TCS CUSTOM: stop the spinner, enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n if ('serverErrors' in secondData && secondData.serverErrors && secondData.serverErrors.length) {\r\n secondData.serverErrors.forEach(function(error) {\r\n $('.error-message').show();\r\n $('.error-message-text').text(error);\r\n scrollAnimate($('.error-message'));\r\n });\r\n }\r\n }\r\n } else {\r\n var redirect = $('')\r\n .appendTo(document.body)\r\n .attr({\r\n method: 'POST',\r\n action: secondData.continueUrl\r\n });\r\n\r\n $('')\r\n .appendTo(redirect)\r\n .attr({\r\n name: 'orderID',\r\n value: secondData.orderID\r\n });\r\n\r\n $('')\r\n .appendTo(redirect)\r\n .attr({\r\n name: 'orderToken',\r\n value: secondData.orderToken\r\n });\r\n\r\n redirect.submit();\r\n }\r\n },\r\n error: function(err) {\r\n // TCS CUSTOM: stop the spinner\r\n $.spinner().stop();\r\n // enable the placeOrder button here\r\n $('body').trigger('checkout:enableButton', $('.next-step-button button'));\r\n if (err.responseJSON && err.responseJSON.redirectUrl) {\r\n window.location.href = err.responseJSON.redirectUrl;\r\n }\r\n }\r\n });\r\n } else {\r\n window.location.href = redirectUrl;\r\n }\r\n\r\n loader.hide();\r\n }\r\n },\r\n error: function(error) {\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n loader.hide();\r\n\r\n if (error && error.redirectUrl) {\r\n window.location.href = error.redirectUrl;\r\n }\r\n else if (error?.responseJSON?.redirectUrl) {\r\n window.location.href = error.responseJSON.redirectUrl;\r\n }\r\n }\r\n });\r\n // TCS CUSTOM END\r\n}\r\n\r\nmodule.exports = {\r\n addProductToCart,\r\n getBasketData,\r\n validateAddresses,\r\n submitPaymentDataToServerPromise\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nconst $btSavePaypalAccountContainer = document.getElementById('braintreeSavePaypalAccountContainer');\r\nconst $paypalContent = document.querySelector('.js-braintree-paypal-content');\r\nconst $btPayPalBillingButton = document.querySelector('.js-braintree-paypal-billing-button');\r\n\r\n/**\r\n * Hides PayPal Smart Button functionality inside PayPal tab\r\n */\r\nfunction hidePaypalSmartButtonFunctionality() {\r\n $btSavePaypalAccountContainer.style.display = 'none';\r\n $btPayPalBillingButton.classList.add('d-none');\r\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\r\n}\r\n\r\n/**\r\n * Shows PayPal Smart Button functionality inside PayPal tab\r\n */\r\nfunction showPaypalSmartButtonFunctionality() {\r\n $btPayPalBillingButton.classList.remove('d-none');\r\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\r\n}\r\n\r\n/**\r\n * Handles a behavior inside PayPal tab, when session PayPal account was deleted\r\n */\r\nfunction handlePaypalTabBehavior() {\r\n const $payPalAccountList = document.getElementById('braintreePaypalAccountsList');\r\n const $defaultOption = helper.getOptionByDataDefault('#braintreePaypalAccountsList');\r\n const $selectedOption = helper.getSelectedOption($payPalAccountList);\r\n const isSelectedPaypalAccount = $selectedOption.value !== 'newaccount';\r\n const paypalButtonConfigs = helper.tryParseJSON($btPayPalBillingButton.getAttribute('data-braintree-config'));\r\n const isChangePmButton = paypalButtonConfigs.changePMButtonEnabled;\r\n\r\n // Case when buyer selected another PM (CC,GP..)\r\n if ($defaultOption && !isSelectedPaypalAccount) {\r\n // Shows ChangePM button if buyer has already saved PP account and ChangePM button is enabled\r\n if (isChangePmButton) {\r\n $btSavePaypalAccountContainer.style.display = 'block';\r\n\r\n showPaypalSmartButtonFunctionality();\r\n // Shows default PayPal account\r\n } else {\r\n $defaultOption.selected = true;\r\n\r\n hidePaypalSmartButtonFunctionality();\r\n }\r\n // Case when buyer selected PayPal account from paypalAccountList\r\n } else if (isSelectedPaypalAccount) {\r\n hidePaypalSmartButtonFunctionality();\r\n // Case when buyer does not have saved PayPal account\r\n } else {\r\n const $btUsedPayPalAccount = document.querySelector('.js-braintree-used-paypal-account');\r\n\r\n $btUsedPayPalAccount.classList.remove('used-paypal-account');\r\n $btUsedPayPalAccount.classList.add('used-paypal-account-hide');\r\n\r\n showPaypalSmartButtonFunctionality();\r\n }\r\n\r\n [].forEach.call($payPalAccountList, function(el) {\r\n if (el.style.display === 'none') {\r\n el.style.display = 'block';\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n handlePaypalTabBehavior,\r\n hidePaypalSmartButtonFunctionality,\r\n showPaypalSmartButtonFunctionality\r\n};\r\n","'use strict';\r\n\r\nconst PayPalBaseModel = require('./payPalBaseModel');\r\nconst helper = require('../../helper');\r\nconst payPalAccountModelHelper = require('../helpers/payPalAccountModel');\r\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\r\n\r\nconst $loaderContainer = document.querySelector('.braintree-loader-container');\r\n\r\n/**\r\n * @param {Object} apmaModelInstance apma model instance\r\n * Save address details to address book from PP side\r\n * @returns {Promise} apmaModelInstance\r\n */\r\nfunction saveAddressDetails(apmaModelInstance) {\r\n return apmaModelInstance.savePaypalDefaultAddress()\r\n .then(() => {\r\n window.location.href = apmaModelInstance.redirectUrl;\r\n });\r\n}\r\n\r\n/**\r\n * PayPal APMA model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations Configs from server (taken from data attr)\r\n * @param {string} addPayPalAccountUrl Add PayPal account URL\r\n * @param {Object} addressObject Address object we get from CWPP\r\n * @param {boolean} isAccountPage Account flow identifier\r\n * @param {string} redirectUrl Account show URL\r\n */\r\nfunction PayPalAPMAModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n addPayPalAccountUrl,\r\n addressObject,\r\n isAccountPage,\r\n redirectUrl) {\r\n PayPalBaseModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $loaderContainer);\r\n\r\n this.addPayPalAccountUrl = addPayPalAccountUrl + window.braintreeConstants.APMA_QUERY_PARAMETER_TRUE;\r\n this.addressObject = addressObject;\r\n this.isAccountPage = isAccountPage;\r\n this.redirectUrl = redirectUrl;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalAPMAModel.prototype = Object.create(PayPalBaseModel.prototype);\r\n\r\n/**\r\n * Makes call on saving a PayPal default address to the storefront customer.\r\n * @returns {Object} Whether a success or failed JSON response body.\r\n */\r\nPayPalAPMAModel.prototype.savePaypalDefaultAddress = function() {\r\n const addressObject = this.addressObject;\r\n const isAccountPage = this.isAccountPage;\r\n\r\n return fetch(window.braintreeUrls.savePaypalDefaultAddressUrl, {\r\n method: 'POST',\r\n contentType: 'application/json',\r\n body: JSON.stringify({ addressObject, isAccountPage })\r\n });\r\n};\r\n\r\nPayPalAPMAModel.prototype.initAddButtonEvent = function() {\r\n const $apmaButtonPayPal = document.querySelector(this.payPalButtonSelector);\r\n const addingStage = $apmaButtonPayPal.getAttribute('data-adding-stage');\r\n\r\n if (addingStage === window.braintreeConstants.APMA_STAGE_ADDRESS) {\r\n $apmaButtonPayPal.classList.add('hide-block');\r\n\r\n document.getElementById('js-apma-button-yes').addEventListener('click', () => {\r\n saveAddressDetails(this);\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * For whole description open \"payPalBaseModel\".\r\n * We don't generate and send fraud data from Account. That's why \"generateFraudData\" isn't used\r\n * @param {Object} payload Buyer data from PayPal (like address, nonce, etc.)\r\n */\r\nPayPalAPMAModel.prototype.onApprovePaymentCallback = function(payload) {\r\n // Calling parrent method to proceed with PayPal payload validation\r\n PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\r\n\r\n // Error will be handled on BaseModel level\r\n if (this.error) {\r\n return;\r\n }\r\n\r\n this.loader.show();\r\n\r\n const apmaModelInstance = this;\r\n const btDetails = payload.details;\r\n const nonce = payload.nonce;\r\n const email = payload.details.email;\r\n const $payPalButton = document.querySelector(this.payPalButtonSelector);\r\n const paypalAccountFormFields = $payPalButton.getAttribute('data-paypal-account-form-fields');\r\n // Append Shippig/Billing data to FormData\r\n const payPalBraintreeAddressData = billingFormHelper.createBillingAddressData(btDetails);\r\n const paypalAccountFormData = helper.createPaymentFormData(paypalAccountFormFields, {\r\n nonce: nonce,\r\n email: email,\r\n addresses: JSON.stringify(payPalBraintreeAddressData),\r\n shippingAddress: JSON.stringify(payload.details.shippingAddress)\r\n });\r\n\r\n // Apped CSRF token\r\n const $csrfToken = document.getElementById('csrf_token');\r\n\r\n billingFormHelper.appendCsrfTokenToFormData(paypalAccountFormData, $csrfToken);\r\n // Save payment instrument from PP side\r\n payPalAccountModelHelper.savePayPalAccount(this.addPayPalAccountUrl, paypalAccountFormData)\r\n .then(() => {\r\n saveAddressDetails(apmaModelInstance);\r\n })\r\n .catch(function(errorPayload) {\r\n const error = errorPayload.responseJSON.error;\r\n\r\n apmaModelInstance.alertHandlerModel.showError(error);\r\n apmaModelInstance.loader.hide();\r\n });\r\n};\r\n\r\n/**\r\n * Triggers when buyer clicked on the PayPal button and PayPal modal started loading\r\n * @returns {Object} Object which will be passed directly into Braintree PayPal SDK as an order data\r\n */\r\nPayPalAPMAModel.prototype.onOrderCreateCallback = async function() {\r\n const payPalButtonConfigs = this.payPalConfigurations;\r\n const orderCreateParams = payPalButtonConfigs.options;\r\n\r\n // Hide custom error on buyer PayPal button click.\r\n this.alertHandlerModel.hideAlerts();\r\n\r\n return {\r\n flow: orderCreateParams.flow,\r\n enableShippingAddress: orderCreateParams.enableShippingAddress,\r\n displayName: orderCreateParams.displayName,\r\n billingAgreementDescription: orderCreateParams.billingAgreementDescription\r\n };\r\n};\r\n\r\nmodule.exports = PayPalAPMAModel;\r\n","'use strict';\r\n\r\nconst PayPalBaseModel = require('./payPalBaseModel');\r\nconst helper = require('../../helper');\r\n\r\nfunction PayPalAccountModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n addPayPalAccountUrl,\r\n $loaderContainer) {\r\n PayPalBaseModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $loaderContainer);\r\n\r\n this.$csrfToken = $csrfToken;\r\n this.addPayPalAccountUrl = addPayPalAccountUrl;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalAccountModel.prototype = Object.create(PayPalBaseModel.prototype);\r\n\r\n/**\r\n * For whole description open \"payPalBaseModel\".\r\n * We don't generate and send fraud data from Account. That's why \"generateFraudData\" isn't used\r\n * @param {Object} payload Buyer data from PayPal (like address, nonce, etc.)\r\n */\r\nPayPalAccountModel.prototype.onApprovePaymentCallback = function(payload) {\r\n // Calling parrent method to proceed with PayPal payload validation\r\n PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\r\n\r\n // Error will be handled on BaseModel level\r\n if (this.error) {\r\n return;\r\n }\r\n\r\n this.loader.show();\r\n\r\n const payPalAccountModelHelper = require('../helpers/payPalAccountModel');\r\n const billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\r\n\r\n const $payPalButton = document.querySelector(this.payPalButtonSelector);\r\n const paypalAccountFormFields = $payPalButton.getAttribute('data-paypal-account-form-fields');\r\n\r\n const payPalAccountModelInstance = this;\r\n const btDetails = payload.details;\r\n const payPalBraintreeAddressData = billingFormHelper.createBillingAddressData(btDetails);\r\n const paypalAccountFormData = helper.createPaymentFormData(paypalAccountFormFields, {\r\n nonce: payload.nonce,\r\n email: payload.details.email,\r\n addresses: JSON.stringify(payPalBraintreeAddressData),\r\n shippingAddress: JSON.stringify(payload.details.shippingAddress)\r\n });\r\n // Apped CSRF token\r\n\r\n billingFormHelper.appendCsrfTokenToFormData(paypalAccountFormData, this.$csrfToken);\r\n\r\n payPalAccountModelHelper.savePayPalAccount(this.addPayPalAccountUrl, paypalAccountFormData)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.error) {\r\n const error = data.error;\r\n\r\n payPalAccountModelInstance.alertHandlerModel.showError(error);\r\n payPalAccountModelInstance.loader.hide();\r\n } else {\r\n const renderAccountsUrl = data.renderAccountsUrl;\r\n\r\n payPalAccountModelHelper.hidePaypalAccountBtn();\r\n payPalAccountModelHelper.renderPayPalAccounts(renderAccountsUrl)\r\n .then((accountListTemplate) => accountListTemplate.text())\r\n .then((accountListTemplateHTML) => {\r\n payPalAccountModelHelper.addPayPalAccountsToTheTemplate(accountListTemplateHTML);\r\n payPalAccountModelHelper.throwCartUpdate();\r\n payPalAccountModelInstance.initRemovePayPalAccountEvent();\r\n payPalAccountModelInstance.initMakeDefaultPayPalAccountEvent();\r\n\r\n payPalAccountModelInstance.loader.hide();\r\n });\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Triggers when buyer clicked on the PayPal button and PayPal modal started loading\r\n * @returns {Object} Object which will be passed directly into Braintree PayPal SDK as an order data\r\n */\r\nPayPalAccountModel.prototype.onOrderCreateCallback = async function() {\r\n const orderCreateParams = this.payPalConfigurations.options;\r\n\r\n // Hide custom error on buyer PayPal button click.\r\n this.alertHandlerModel.hideAlerts();\r\n\r\n return {\r\n flow: orderCreateParams.flow,\r\n enableShippingAddress: orderCreateParams.enableShippingAddress,\r\n displayName: orderCreateParams.displayName,\r\n billingAgreementDescription: orderCreateParams.billingAgreementDescription\r\n };\r\n};\r\n\r\n/**\r\n * Init Remove PayPal Account button listner\r\n */\r\nPayPalAccountModel.prototype.initRemovePayPalAccountEvent = function() {\r\n const $allRemovePayPalAccountButtons = document.querySelectorAll('.js-paypal-accounts .js-remove-bt-payment');\r\n\r\n $allRemovePayPalAccountButtons.forEach((btn) => btn.addEventListener('click', helper.removeBtPayment));\r\n};\r\n\r\n/**\r\n * Init Make Default PayPal account button\r\n */\r\nPayPalAccountModel.prototype.initMakeDefaultPayPalAccountEvent = function() {\r\n const loaderInstance = require('../../loaderHelper');\r\n const $makeDefaultBtns = document.querySelectorAll('.js-paypal-accounts .js-braintree-make-default-card');\r\n\r\n $makeDefaultBtns.forEach((btn) => btn.addEventListener('click', function() {\r\n const makeDefaultUrl = window.braintreeUrls.makePaymentMethodDefaultUrl;\r\n const paymentMehtodId = this.dataset.id;\r\n const paymentProcessorId = window.braintreePreferences.paymentMethods.BRAINTREE_PAYPAL.paymentMethodId;\r\n const loaderContainer = document.getElementById('paypalAccountBtLoader');\r\n const loader = loaderInstance(loaderContainer);\r\n\r\n loader.show();\r\n\r\n helper.setDefaultProperty({\r\n url: makeDefaultUrl,\r\n id: paymentMehtodId,\r\n paymentMethodID: paymentProcessorId,\r\n loader\r\n });\r\n }));\r\n};\r\n\r\nmodule.exports = PayPalAccountModel;\r\n","'use strict';\r\n\r\n/* global Promise $ */\r\n\r\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\r\n\r\nconst loaderInstance = require('../../loaderHelper');\r\n\r\n/**\r\n * PayPal base model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\r\n * @param {Object} $loaderContainer loader js container\r\n */\r\nfunction PayPalBaseModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $loaderContainer) {\r\n this.isVaultMode = payPalConfigurations.options.flow !== 'checkout';\r\n this.requestBillingAgreement = Boolean(payPalConfigurations.options.requestBillingAgreement) && this.isVaultMode;\r\n this.btClientInstancePromise = btClientInstancePromise;\r\n this.payPalButtonSelector = payPalButtonSelector;\r\n this.payPalConfigurations = payPalConfigurations;\r\n // Fraud data related\r\n this.isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\r\n // Setup init fraudData value for default case (default case: fraud data disabled)\r\n this.fraudDataPromise = Promise.resolve({ fraudDataCollectionDisabled: true });\r\n\r\n // URLs\r\n this.basketDataUrl = payPalConfigurations.getOrderInfoUrl;\r\n this.submitPaymentUrl = payPalConfigurations.paypalHandle;\r\n this.placeOrderStageUrl = payPalConfigurations.redirectUrl;\r\n this.validateAddressesUrl = payPalConfigurations.validateAddressesUrl;\r\n this.updateShippingMethodsListUrl = payPalConfigurations.updateShippingMethodsListUrl;\r\n\r\n this.braintreePayPalSDK = braintreePayPalSDK.payPalButtonRendering;\r\n\r\n this.alertHandlerModel = alertHandlerModel;\r\n this.loader = loaderInstance($loaderContainer);\r\n\r\n this.basketData = null;\r\n this.error = null;\r\n}\r\n\r\n/* -------------------- Payment Callbacks -------------------- */\r\n\r\n/**\r\n * Method triggers when buyer approved payment in PayPal modal and they passed succesfully\r\n * THIS METHOD NEEDS TO BE OVERRIDDEN in children class\r\n * @param {Object} payload buyer's data from PayPal\r\n * @param {boolean} isExpressCheckout true or false/undefined depending on whether it's EC or not\r\n * @returns {void} either updates paypalBaseModel error/placeOrderStageUrl properties or payload billing address\r\n */\r\nPayPalBaseModel.prototype.onApprovePaymentCallback = function(payload, isExpressCheckout) {\r\n // basic payload validation\r\n const ppDetails = payload.details;\r\n const ppShippingAddress = ppDetails.shippingAddress;\r\n const city = ppShippingAddress.city;\r\n const state = ppShippingAddress.state;\r\n const country = ppShippingAddress.countryCode;\r\n const postalCode = ppShippingAddress.postalCode;\r\n\r\n if (!ppDetails.billingAddress) {\r\n try {\r\n ppDetails.billingAddress = {\r\n city: city,\r\n countryCode: country,\r\n line1: ppShippingAddress.line1,\r\n line2: ppShippingAddress.line2 || '',\r\n postalCode: postalCode,\r\n state: state\r\n };\r\n } catch (error) {\r\n this.alertHandlerModel.showBillingAddressIsNotSupportedError();\r\n this.error = error;\r\n }\r\n }\r\n\r\n if (isExpressCheckout) {\r\n const helper = require('../../helper');\r\n\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL;\r\n const addressQueryString = `city=${city.replaceAll(' ', '%20')}&stateCode=${state}&countryCode=${country}&postalCode=${postalCode}`;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\r\n\r\n helper.getApplicableShippingOptions(url)\r\n .then((shippingOptions) => {\r\n if (!shippingOptions.applicableShippingMethods.some((shippingOption) => shippingOption.selected === true)) {\r\n this.placeOrderStageUrl = `${window.braintreeUrls.chooseShippingUrl}&errorId=error.shippingoption.invalid`;\r\n }\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * Method triggers when buyer canceled payment in PayPal modal\r\n * THIS METHOD CAN BE OVERRIDDEN in children class\r\n */\r\nPayPalBaseModel.prototype.onCancelPaymentCallback = function() {\r\n // TCS CUSTOM - stop the spinner, enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n};\r\n\r\n/**\r\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\r\n * THIS METHOD CAN BE OVERRIDDEN in children class\r\n * @returns {Object} Amount and Shipping address from basket\r\n */\r\nPayPalBaseModel.prototype.onOrderCreateCallback = async function() {\r\n // Hide custom error on buyer PayPal button click.\r\n this.alertHandlerModel.hideAlerts();\r\n\r\n // Get basket again in case if \"onPayPalButtonClickCallback\" wasn't triggered (Change Payment Method Button case)\r\n const basketData = this.basketData || await requestsHelper.getBasketData(this.basketDataUrl);\r\n const shippingAddress = basketData.shippingAddress || this.savedPaypalAddress;\r\n\r\n const payPalConfigurations = this.payPalConfigurations;\r\n const mainPayPalConfigurations = payPalConfigurations.options;\r\n const requestBillingAgreement = mainPayPalConfigurations.requestBillingAgreement;\r\n\r\n const paymentObjectData = {\r\n amount: basketData.amount,\r\n currency: mainPayPalConfigurations.currency,\r\n flow: mainPayPalConfigurations.flow,\r\n intent: mainPayPalConfigurations.intent,\r\n locale: mainPayPalConfigurations.locale,\r\n enableShippingAddress: mainPayPalConfigurations.enableShippingAddress,\r\n billingAgreementDescription: mainPayPalConfigurations.billingAgreementDescription,\r\n displayName: mainPayPalConfigurations.displayName\r\n };\r\n\r\n // \"requestBillingAgreement\" will be enabled or when Checkout with Vault is enabled\r\n // Vault mode should be also enabled\r\n if (requestBillingAgreement) {\r\n paymentObjectData.requestBillingAgreement = requestBillingAgreement;\r\n\r\n if (mainPayPalConfigurations.billingAgreementDetails) {\r\n paymentObjectData.billingAgreementDetails = {\r\n description: mainPayPalConfigurations.billingAgreementDetails.description\r\n };\r\n }\r\n }\r\n\r\n // Case when process from PDP & Cart & Mini Cart & Checkout and basket isn't empty or we on Account page\r\n\r\n /**\r\n * TCS CUSTOM START\r\n * Adds check for address line 1 to support UPS Estimated Delivery adding in\r\n * shipping address details to the basket based on geolocation\r\n *\r\n * Adds in check for if launched from express or not for changing the editable\r\n *\r\n * Adds in shippingOptions support for express payments, can support up to 10 options\r\n */\r\n var isExpress = this.isExpress || false;\r\n var addressEditable = false;\r\n\r\n if (isExpress) {\r\n addressEditable = true;\r\n }\r\n\r\n if (shippingAddress && shippingAddress.line1.length > 0) {\r\n // shippingAddressEditable is based on button type/button location (cart vs checkout)\r\n // FALSE for ChangePaymentMethod button\r\n // TRUE for smart PayPal button\r\n paymentObjectData.shippingAddressEditable = addressEditable;\r\n paymentObjectData.shippingAddressOverride = {\r\n line1: shippingAddress.line1,\r\n line2: shippingAddress.line2,\r\n city: shippingAddress.city,\r\n state: shippingAddress.state,\r\n postalCode: shippingAddress.postalCode,\r\n countryCode: shippingAddress.countryCode,\r\n phone: shippingAddress.phone,\r\n recipientName: shippingAddress.recipientName\r\n };\r\n }\r\n // TCS CUSTOM END\r\n\r\n return paymentObjectData;\r\n};\r\n\r\n/**\r\n * Callback triggers when buyer clicked on PayPal button\r\n * @param {Object} _ first not used param\r\n * @param {Object} actions BT actions object\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nPayPalBaseModel.prototype.onPayPalButtonClickCallback = async function(fundingSourceResponse) {\r\n // TCS CUSTOM - Start spinner on PayPal payment button click\r\n $.spinner().start();\r\n $('.js-checkout-options').addClass('disabled');\r\n\r\n // Hide custom error on buyer PayPal button click.\r\n this.alertHandlerModel.hideAlerts();\r\n this.basketData = this.basketDataUrl ? await requestsHelper.getBasketData(this.basketDataUrl) : null;\r\n\r\n if (document.getElementById('braintreePaypalFundingSource')) {\r\n document.getElementById('braintreePaypalFundingSource').value = fundingSourceResponse.fundingSource;\r\n }\r\n};\r\n\r\n/**\r\n * Method triggers when error happens during PayPal modal payment processing\r\n * THIS METHOD CAN BE OVERRIDDEN in children class\r\n * @param {Object} error error object with \"message\" and \"code\" inside\r\n */\r\nPayPalBaseModel.prototype.onErrorPaymentCallback = function(error) {\r\n // TCS CUSTOM - stop the spinner, enable buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n\r\n this.alertHandlerModel.showBraintreeError(error);\r\n};\r\n\r\nPayPalBaseModel.prototype.onShippingChangeCallback = function() {};\r\n\r\n/**\r\n * This method is executed when creating paypalCheckoutInstance. Should contain configs for \"braintree.paypalCheckout.create\" method.\r\n * Should only be used inside \"braintreePayPalSDK\" file\r\n * @param {Object} btClientInstance Braintree client instance\r\n * @returns {Object} object with additional configurations\r\n */\r\nPayPalBaseModel.prototype.payPalCheckoutInstanceConfigs = function(btClientInstance) {\r\n return {\r\n client: btClientInstance\r\n };\r\n};\r\n\r\n/**\r\n * This method is executed when loading PayPal SDK\r\n * @returns {Object} object with Checkout mode PayPal SDK configs\r\n */\r\nPayPalBaseModel.prototype.payPalCheckoutSdkConfigs = function() {\r\n const isChangePaymentButtonActive = this.payPalConfigurations.changePMButtonEnabled;\r\n const intent = this.payPalConfigurations.options.intent;\r\n const currency = this.payPalConfigurations.options.currency;\r\n const enableFundingList = this.payPalConfigurations.options.enableFundingList;\r\n let disableFundingList = this.payPalConfigurations.options.disableFundingList;\r\n // TCS CUSTOM: Update the commit setting based on custom skip review step site preference\r\n const skipReviewStep = this.payPalConfigurations.skipReviewStep;\r\n\r\n const payPalSDKConfigObject = {\r\n intent: intent,\r\n currency: currency,\r\n components: 'buttons,messages',\r\n commit: skipReviewStep\r\n };\r\n\r\n // Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\r\n if (isChangePaymentButtonActive && disableFundingList !== undefined) {\r\n disableFundingList += ',card';\r\n } else if (isChangePaymentButtonActive && disableFundingList === undefined) {\r\n disableFundingList = 'card';\r\n }\r\n\r\n if (enableFundingList !== undefined) {\r\n payPalSDKConfigObject['enable-funding'] = enableFundingList;\r\n }\r\n\r\n if (disableFundingList !== undefined) {\r\n payPalSDKConfigObject['disable-funding'] = disableFundingList;\r\n }\r\n\r\n return payPalSDKConfigObject;\r\n};\r\n\r\n/**\r\n * This method is executed when loading PayPal SDK\r\n * @returns {Object} object with Vault mode PayPal SDK configs\r\n */\r\nPayPalBaseModel.prototype.payPalVaultSdkConfigs = function() {\r\n const isChangePaymentButtonActive = this.payPalConfigurations.changePMButtonEnabled;\r\n const enableFundingList = this.payPalConfigurations.options.enableFundingList;\r\n let disableFundingList = this.payPalConfigurations.options.disableFundingList;\r\n\r\n // Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\r\n if (isChangePaymentButtonActive && disableFundingList !== undefined) {\r\n disableFundingList += ',card';\r\n } else if (isChangePaymentButtonActive && disableFundingList === undefined) {\r\n disableFundingList = 'card';\r\n }\r\n\r\n const payPalVaultSdkConfigsObject = {\r\n vault: true,\r\n components: 'buttons,messages'\r\n };\r\n\r\n if (enableFundingList !== undefined) {\r\n payPalVaultSdkConfigsObject['enable-funding'] = enableFundingList;\r\n }\r\n\r\n if (disableFundingList !== undefined) {\r\n payPalVaultSdkConfigsObject['disable-funding'] = disableFundingList;\r\n }\r\n\r\n return payPalVaultSdkConfigsObject;\r\n};\r\n\r\n/* -------------------- Payment logic -------------------- */\r\n\r\n/**\r\n * Function which should be called when we need to init PayPal payment button\r\n * @returns {Promise} PayPal button\r\n */\r\nPayPalBaseModel.prototype.initPayment = function() {\r\n const CurrentPayPalPaymenProcessorModelInstance = this;\r\n\r\n return this.braintreePayPalSDK(this.btClientInstancePromise,\r\n this.isVaultMode,\r\n this.payPalConfigurations,\r\n [CurrentPayPalPaymenProcessorModelInstance]);\r\n};\r\n\r\n/**\r\n * Generate fraud data if enabled\r\n */\r\nPayPalBaseModel.prototype.generateFraudData = function() {\r\n if (this.isFraudToolsEnabled) {\r\n this.fraudDataPromise = braintreeGeneral.collectFraudData(this.btClientInstancePromise);\r\n }\r\n // Don't need \"else\" case, since default value was inited in constructor\r\n};\r\n\r\nmodule.exports = PayPalBaseModel;\r\n","'use strict';\r\n\r\nconst PayPalExpressModel = require('./payPalExpressModel');\r\n\r\n/**\r\n * PayPal cart model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\r\n * @param {Object} $csrfToken CSRF token js container\r\n * @param {Object} $loaderContainer loader js container\r\n */\r\nfunction PayPalCartModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer) {\r\n // Init PayPalExpressModel constructor\r\n PayPalExpressModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalCartModel.prototype = Object.create(PayPalExpressModel.prototype);\r\n\r\n// Show error in case if current basket has zero total price\r\nPayPalCartModel.prototype.onPayPalButtonClickCallback = async function(_, actions) {\r\n await PayPalExpressModel.prototype.onPayPalButtonClickCallback.call(this, _, actions);\r\n let action;\r\n\r\n // TCS CUSTOM: Check for the state exclusions or when no shipping methods are available at all\r\n if (this.basketData.hasStateExclusion || !this.basketData.hasShippingMethods) {\r\n this.alertHandlerModel.showStateExclusionError();\r\n\r\n action = actions.reject();\r\n\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n } else if (this.basketData.amount === 0) {\r\n this.alertHandlerModel.showZeroAmountError();\r\n\r\n action = actions.reject();\r\n\r\n // TCS CUSTOM: stop the spinner and enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n }\r\n\r\n // TCS CUSTOM START: Add gtm event\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'paymentClick',\r\n eventLabel: 'cart_page',\r\n eventAction: 'PayPal_Click'\r\n });\r\n }\r\n // TCS CUSTOM END: Add gtm event\r\n\r\n return action;\r\n};\r\n\r\nmodule.exports = PayPalCartModel;\r\n","'use strict';\r\n\r\nconst PayPalBaseModel = require('./payPalBaseModel');\r\nconst helper = require('../../helper');\r\nconst payPalCheckoutModelHelper = require('../helpers/payPalCheckoutModelHelper');\r\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\r\nconst paypalListHelper = require('../helpers/payPalListHelper');\r\n\r\n/**\r\n * PayPal checkout model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\r\n * @param {Object} $continueButton continue button js container\r\n * @param {Object} $loaderContainer loader js container\r\n */\r\nfunction PayPalCheckoutPaymentModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $continueButton,\r\n $loaderContainer) {\r\n PayPalBaseModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $loaderContainer);\r\n\r\n this.$continueButton = $continueButton;\r\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalCheckoutPaymentModel.prototype = Object.create(PayPalBaseModel.prototype);\r\n\r\n// For more details see same method from \"PayPalBaseModel\"\r\n// Add additional configs which are needed for \"Change Payment Method Button\" feature\r\nPayPalCheckoutPaymentModel.prototype.payPalCheckoutInstanceConfigs = function(btClientInstance) {\r\n const checkoutInstanceConfigs = PayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(this, btClientInstance);\r\n\r\n if (this.changePMButtonEnabled) {\r\n checkoutInstanceConfigs.autoSetDataUserIdToken = true;\r\n }\r\n\r\n return checkoutInstanceConfigs;\r\n};\r\n\r\n// For more details see same method from \"PayPalBaseModel\"\r\n// Show error in case if current basket has zero total price\r\nPayPalCheckoutPaymentModel.prototype.onPayPalButtonClickCallback = async function(_, actions) {\r\n await PayPalBaseModel.prototype.onPayPalButtonClickCallback.call(this, _, actions);\r\n let action;\r\n\r\n if (this.basketData.amount === 0) {\r\n this.alertHandlerModel.showZeroAmountError();\r\n\r\n action = actions.reject();\r\n }\r\n\r\n // TCS CUSTOM START: Add gtm event\r\n if (window.dataLayer) {\r\n window.dataLayer.push({\r\n event: 'paymentClick',\r\n eventLabel: 'checkout_funnel_traditional'\r\n });\r\n }\r\n // TCS CUSTOM END: Add gtm event\r\n\r\n return action;\r\n};\r\n\r\n// For more details see same method from \"PayPalBaseModel\"\r\n// Mark new account as the session one, fill billing form with data from paypal\r\nPayPalCheckoutPaymentModel.prototype.onApprovePaymentCallback = function(payload) {\r\n // Calling parrent method to proceed with PayPal payload validation\r\n PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\r\n\r\n // Error will be handled on BaseModel level\r\n if (this.error) {\r\n return;\r\n }\r\n\r\n this.loader.show();\r\n\r\n const PayPalCheckoutPaymentModelInstance = this;\r\n const isBuyerAuthenificated = PayPalCheckoutPaymentModelInstance.payPalConfigurations.isBuyerAuthenticated;\r\n const btDetails = payload.details;\r\n const nonce = payload.nonce;\r\n const email = payload.details.email;\r\n const btBillingAddress = btDetails ? btDetails.billingAddress : null;\r\n\r\n // Remove all other Payments session payments\r\n helper.removeActiveSessionPayment();\r\n\r\n // Hide PayPal buttons block\r\n payPalCheckoutModelHelper.hidePayPalButtons();\r\n\r\n // Fill just PayPal related form fields\r\n billingFormHelper.fillPayPalPaymentFields(btDetails);\r\n\r\n // Copy billing address from PayPal to DW billing address form fields\r\n if (btBillingAddress && btDetails) {\r\n billingFormHelper.copyPayPalBillingAddressToDw(btBillingAddress, btDetails);\r\n }\r\n\r\n // Make current PayPal account as a session account\r\n billingFormHelper.storePaymentAsSessionPayment(nonce, email);\r\n\r\n billingFormHelper.setSessionAccountOptionDefault();\r\n\r\n // Add billing address on session payment option level\r\n payPalCheckoutModelHelper.addBillingAddressOnPaymentOptionLevel(btDetails);\r\n\r\n // Check whether buyer has proceeded with the same email which is already stored\r\n // if \"yes\" we hide stored account with the same email in dropdown\r\n // if \"no\" we show all existent PP accounts in dropdown (stored + new session account)\r\n paypalListHelper.handleStoredAccountsShowing(isBuyerAuthenificated);\r\n\r\n // Gennerate and add fraud data in to the billing form\r\n PayPalCheckoutPaymentModelInstance.fraudDataPromise\r\n .then(function(data) {\r\n // We have \"fraudDataCollectionDisabled\" flag only in case if we have fraud data collection disabled\r\n if (!data.fraudDataCollectionDisabled) {\r\n billingFormHelper.fillFraudDataInput(data);\r\n }\r\n })\r\n .then(function() {\r\n // Submit payment to server\r\n PayPalCheckoutPaymentModelInstance.$continueButton.click();\r\n\r\n PayPalCheckoutPaymentModelInstance.loader.hide();\r\n\r\n // TCS CUSTOM - stop the spinner, enable the buttons\r\n $.spinner().stop();\r\n $('.js-checkout-options').removeClass('disabled');\r\n });\r\n};\r\n\r\nmodule.exports = PayPalCheckoutPaymentModel;\r\n","'use strict';\r\n\r\nconst PayPalBaseModel = require('./payPalBaseModel');\r\nconst payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\r\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\r\nconst requestHelper = require('../helpers/payPalRequestsHelperGlobal');\r\nconst productHelper = require('../helpers/payPalProductPageModelHelper');\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * PayPal express model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\r\n * @param {Object} $csrfToken CSRF token js container\r\n * @param {Object} $loaderContainer loader js container\r\n */\r\nfunction PayPalExpressModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer) {\r\n // Init PayPalBaseModel constructor\r\n PayPalBaseModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $loaderContainer);\r\n\r\n this.$csrfToken = $csrfToken;\r\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalExpressModel.prototype = Object.create(PayPalBaseModel.prototype);\r\n\r\n// For more details see same method from \"PayPalBaseModel\"\r\n// Add additional configs which are needed for \"Change payment method button\" feature\r\nPayPalExpressModel.prototype.payPalCheckoutInstanceConfigs = function(btClientInstance) {\r\n const checkoutInstanceConfigs = PayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(this, btClientInstance);\r\n\r\n if (this.changePMButtonEnabled) {\r\n checkoutInstanceConfigs.autoSetDataUserIdToken = true;\r\n }\r\n\r\n return checkoutInstanceConfigs;\r\n};\r\n\r\n/**\r\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\r\n * @returns {Object} Amount and Shipping address from basket\r\n */\r\nPayPalExpressModel.prototype.onOrderCreateCallback = async function() {\r\n const basketDataUrl = this.basketDataUrl;\r\n\r\n this.basketData = await requestHelper.getBasketData(basketDataUrl);\r\n\r\n const isUseSavedPaypalAddress = this.changePMButtonEnabled && !this.basketData.shippingAddress;\r\n\r\n if (isUseSavedPaypalAddress) {\r\n this.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(this.payPalButtonSelector);\r\n }\r\n\r\n // TCS CUSTOM: Add in isExpress variable for logic checks later on\r\n this.isExpress = true;\r\n\r\n return PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\r\n};\r\n\r\n// For more details see same method from \"PayPalBaseModel\"\r\n// Create and submit billing data to the server. Redirect on order reivew checkout step\r\nPayPalExpressModel.prototype.onApprovePaymentCallback = function(payload) {\r\n // Calling parrent method to proceed with PayPal payload validation\r\n PayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload, true);\r\n\r\n // Error will be handled on BaseModel level\r\n if (this.error) {\r\n return;\r\n }\r\n\r\n this.loader.show();\r\n\r\n const PayPalExpressInstance = this;\r\n const payloadDetails = payload.details;\r\n const $payPalButtonWrapper = document.querySelector('.js-braintree-cart-paypal-buttons-wrap');\r\n const $braintreePayPalFundingSource = document.getElementById('braintreePaypalFundingSource');\r\n const braintreePayPalFundingSource = $braintreePayPalFundingSource.value;\r\n\r\n const paypalCheckoutFormFields = helper.tryParseJSON($payPalButtonWrapper.getAttribute('data-paypal-checkout-form-fields'));\r\n const billingAddressData = billingFormHelper.createBillingAddressData(payloadDetails);\r\n\r\n // Create form data only with billing address\r\n const billingFormData = billingFormHelper.createBillingAddressFormData(paypalCheckoutFormFields, billingAddressData);\r\n\r\n billingFormHelper.appendCsrfTokenToFormData(billingFormData, PayPalExpressInstance.$csrfToken);\r\n billingFormHelper.appendBraintreePaypalFundingSourceToFormData(billingFormData, braintreePayPalFundingSource);\r\n\r\n // REGEX for js-braintree-(pdp|pvp)-button, js-braintree-(pdp|pvp)-button-global\r\n const BRAINTREE_BUTTON_REGEX = /(^|\\s)js-braintree-p[dv]p-button(-global)?(\\s|$)/;\r\n\r\n // It will generate FFraud data only if it Fraud Data collection was enabled\r\n PayPalExpressInstance.fraudDataPromise\r\n .then(function(data) {\r\n if (!data.fraudDataCollectionDisabled) {\r\n billingFormHelper.appendFraudDataToFormData(billingFormData, data.deviceData);\r\n }\r\n })\r\n .then(function() {\r\n return requestHelper.validateAddresses(PayPalExpressInstance.validateAddressesUrl,\r\n payloadDetails);\r\n })\r\n .then(function(validationResult) {\r\n let shippingError = false;\r\n\r\n if (validationResult.error) {\r\n const parentWrapper = $payPalButtonWrapper.parentElement.parentElement;\r\n\r\n if (BRAINTREE_BUTTON_REGEX.test(parentWrapper.className)) {\r\n productHelper.removeProductFromCart();\r\n }\r\n\r\n // TCS CUSTOM: Do not throw error here if the error is due to invalid\r\n // shipping address so we can process the error on the shipping page\r\n // and not on the cart page\r\n if (validationResult.shippingError) {\r\n shippingError = validationResult.shippingError;\r\n } else {\r\n throw new Error(validationResult.message);\r\n }\r\n }\r\n\r\n let shippingAddressData;\r\n\r\n // If shipping address was presented in PayPal payload, create a shipping address object,\r\n // stringify it and store in FormData as an input\r\n if (payloadDetails.shippingAddress) {\r\n shippingAddressData = payPalExpressModelHelper.createShippingAddressData(payloadDetails);\r\n\r\n payPalExpressModelHelper.appendShippingDataAsStringToFormData(billingFormData, shippingAddressData);\r\n }\r\n\r\n // TCS CUSTOM: Append error from address validation to the data sent downstream\r\n if (shippingError) {\r\n billingFormData.append('shippingError', shippingError);\r\n }\r\n\r\n // Create a shipping address object, stringify it and store in FormData as an input\r\n billingFormHelper.appendBillingAddressAsStringToFormData(billingFormData, billingAddressData);\r\n\r\n billingFormHelper.appendEmailAsStringToFormData(billingFormData, payloadDetails.email);\r\n\r\n billingFormHelper.appendBtPaymentFieldsToFormData(billingFormData, payload);\r\n })\r\n .then(function() {\r\n // Submit customer form with email (CheckoutServices-SubmitCustomer)\r\n // as we skip step \"login via guest/registered user\" while express checkout\r\n // email is set only in case of guest checkout and if email is not already set\r\n payPalExpressModelHelper.submitCustomerForm(payloadDetails.email);\r\n })\r\n .then(function() {\r\n requestHelper.submitPaymentDataToServerPromise(PayPalExpressInstance.submitPaymentUrl,\r\n billingFormData,\r\n PayPalExpressInstance.placeOrderStageUrl,\r\n PayPalExpressInstance.loader,\r\n PayPalExpressInstance.alertHandlerModel);\r\n\r\n PayPalExpressInstance.loader.hide();\r\n })\r\n .catch(function(error) {\r\n PayPalExpressInstance.alertHandlerModel.showError(error);\r\n\r\n PayPalExpressInstance.loader.hide();\r\n });\r\n};\r\n\r\n// onShippingAddressChange\r\nPayPalExpressModel.prototype.onShippingChangeCallback = async function(data, btPayPalCheckoutInstance, actions) {\r\n // check if address or shipping option change\r\n var selectedShippingOption = data.selected_shipping_option;\r\n var shippingAddress = data.shipping_address;\r\n var city = shippingAddress.city || null;\r\n var stateCode = shippingAddress.state || null;\r\n var countryCode = shippingAddress.country_code || null;\r\n var postalCode = shippingAddress.postal_code || null;\r\n const addressQueryString = `city=${city}&stateCode=${stateCode}&countryCode=${countryCode}&postalCode=${postalCode}`;\r\n\r\n // pass payment method and address into the getApplicableShippingOptions function already built\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\r\n\r\n let shippingOptionsData = await helper.getApplicableShippingOptions(url);\r\n\r\n var shippingOptions = shippingOptionsData.applicableShippingMethods;\r\n var stateExclusion = shippingOptionsData.stateExclusion;\r\n\r\n if (shippingOptions.length === 0 || stateExclusion) {\r\n // either no shipping options or state exclusion, show generic address error in PayPal modal\r\n return actions.reject();\r\n } else {\r\n var updatedAmounts;\r\n\r\n if (selectedShippingOption && selectedShippingOption.id) {\r\n // check if the selected shipping option is in the returned shipping options\r\n var selectedShippingPresent = false;\r\n\r\n // update the shipping options selected option to match the selected shipping option from PayPal\r\n for (var i = 0; i < shippingOptions.length; i++) {\r\n if (shippingOptions[i].id === selectedShippingOption.id) {\r\n selectedShippingPresent = true;\r\n shippingOptions[i].selected = true;\r\n } else {\r\n shippingOptions[i].selected = false;\r\n }\r\n }\r\n\r\n if (selectedShippingPresent) {\r\n updatedAmounts = await helper.updateAmountForShippingOption(selectedShippingOption.id);\r\n } else {\r\n shippingOptions[0].selected = true;\r\n updatedAmounts = await helper.updateAmountForShippingOption(shippingOptions[0].id);\r\n }\r\n } else {\r\n // check for what shipping option is marked as selected\r\n var selectedOption = shippingOptions[0];\r\n\r\n for (var j = 0; j < shippingOptions.length; j++) {\r\n if (shippingOptions[j].selected === true) {\r\n selectedOption = shippingOptions[j];\r\n }\r\n }\r\n\r\n updatedAmounts = await helper.updateAmountForShippingOption(selectedOption.id);\r\n }\r\n\r\n return btPayPalCheckoutInstance.updatePayment({\r\n amount: updatedAmounts,\r\n currency: data.amount.currency_code,\r\n paymentId: data.paymentId,\r\n lineItems: [],\r\n shippingOptions: shippingOptions\r\n });\r\n }\r\n};\r\n\r\nmodule.exports = PayPalExpressModel;\r\n","'use strict';\r\n\r\nconst PayPalBaseModel = require('./payPalBaseModel');\r\nconst PayPalExpressModel = require('./payPalExpressModel');\r\nconst PayPalProductModelHelper = require('../helpers/payPalProductPageModelHelper');\r\nconst payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\r\nconst requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\r\n\r\n/**\r\n * PayPal product model constructor\r\n * @param {Object} alertHandlerModel alert handler model\r\n * @param {Promise} btClientInstancePromise BT client instance promise\r\n * @param {string} payPalButtonSelector PayPal button selector\r\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\r\n * @param {Object} $csrfToken CSRF token js container\r\n * @param {Object} $loaderContainer loader js container\r\n */\r\nfunction PayPalProductModel(alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer) {\r\n // Init PayPalExpressModel constructor\r\n PayPalExpressModel.call(this,\r\n alertHandlerModel,\r\n btClientInstancePromise,\r\n payPalButtonSelector,\r\n payPalConfigurations,\r\n $csrfToken,\r\n $loaderContainer);\r\n\r\n this.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\r\n}\r\n\r\n// ES5 inheritance\r\nPayPalProductModel.prototype = Object.create(PayPalExpressModel.prototype);\r\n\r\n// Dummy function to override default behavior and do not execute \"GetOrderInfo\" call.\r\n// Instead, we will get basket data inside \"onOrderCreateCallback\"\r\nPayPalProductModel.prototype.onPayPalButtonClickCallback = function(e) {\r\n PayPalBaseModel.prototype.onPayPalButtonClickCallback.call(this, e);\r\n};\r\n\r\n// Add product to the Cart\r\nPayPalProductModel.prototype.onOrderCreateCallback = async function() {\r\n const regex = /pdp|pvp/g;\r\n const flow = this.payPalButtonSelector.match(regex).join();\r\n\r\n await requestsHelper.addProductToCart(this.payPalButtonSelector, flow);\r\n\r\n this.basketData = await requestsHelper.getBasketData(this.basketDataUrl);\r\n\r\n const isUseSavedPaypalAddress = this.changePMButtonEnabled && !this.basketData.shippingAddress;\r\n\r\n if (isUseSavedPaypalAddress) {\r\n this.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(this.payPalButtonSelector);\r\n }\r\n\r\n return PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\r\n};\r\n\r\n// On error remove added product from Cart\r\nPayPalProductModel.prototype.onErrorPaymentCallback = function(error) {\r\n PayPalExpressModel.prototype.onErrorPaymentCallback.call(this, error);\r\n\r\n PayPalProductModelHelper.removeProductFromCart();\r\n};\r\n\r\n// On cancel remove added product from Cart\r\nPayPalProductModel.prototype.onCancelPaymentCallback = function() {\r\n PayPalProductModelHelper.removeProductFromCart();\r\n};\r\n\r\nmodule.exports = PayPalProductModel;\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst PayPalScriptLoading = class {\r\n constructor() {\r\n this.clientToken = this.getClientToken();\r\n this.configurations = this.getConfigurations();\r\n }\r\n\r\n getValueByAttributeName(attributeName) {\r\n const $element = document.querySelector(`[${attributeName}]`);\r\n\r\n return $element ? $element.getAttribute(attributeName) : null;\r\n }\r\n\r\n getClientToken() {\r\n return this.getValueByAttributeName('data-bt-client-token');\r\n }\r\n\r\n getConfigurations() {\r\n const attributeName = 'data-braintree-config';\r\n const $element = document.querySelector(`[${attributeName}*=\"paypalConfig\"]`);\r\n\r\n return $element ? helper.tryParseJSON($element.getAttribute(attributeName)) : null;\r\n }\r\n\r\n createClientInstance() {\r\n return braintree.client.create({\r\n authorization: this.clientToken\r\n });\r\n }\r\n\r\n createPayPalCheckoutInstance() {\r\n return this.createClientInstance().then((clientInstance) => {\r\n return braintree.paypalCheckout.create({\r\n client: clientInstance\r\n });\r\n });\r\n }\r\n\r\n getPayPalSdkUrlCongifuration() {\r\n const config = { components: 'buttons,messages' };\r\n\r\n const {\r\n options: configOptions,\r\n changePMButtonEnabled: isChangePaymentButtonActive\r\n } = this.configurations;\r\n\r\n const isVaultMode = configOptions.flow !== 'checkout';\r\n const enableFundingList = configOptions.enableFundingList;\r\n let disableFundingList = configOptions.disableFundingList;\r\n\r\n if (isVaultMode) {\r\n config.vault = true;\r\n } else {\r\n config.commit = false;\r\n config.intent = configOptions.intent;\r\n config.currency = configOptions.currency;\r\n }\r\n\r\n // Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\r\n if (isChangePaymentButtonActive && disableFundingList !== undefined) {\r\n disableFundingList += ',card';\r\n } else if (isChangePaymentButtonActive && disableFundingList === undefined) {\r\n disableFundingList = 'card';\r\n }\r\n\r\n if (enableFundingList !== undefined) {\r\n config['enable-funding'] = enableFundingList;\r\n }\r\n\r\n if (disableFundingList !== undefined) {\r\n config['disable-funding'] = disableFundingList;\r\n }\r\n\r\n return config;\r\n }\r\n\r\n loadPayPalSDK() {\r\n // eslint-disable-next-line no-undef\r\n const promise = new Promise(resolve => resolve(this));\r\n\r\n if (window.isPayPalSDKLoaded) {\r\n return promise;\r\n }\r\n\r\n // In case if paypal SDK is loaded only for credit messages, we need to delete it\r\n // and load again to avoid getting unhandled errors in console\r\n if (window.isPayPalCreditMessageLoaded) {\r\n delete window.paypal;\r\n }\r\n\r\n if (!this.clientToken || !this.configurations) {\r\n // eslint-disable-next-line no-console\r\n console.warn('An error has occurred. Failed to find client token or configuration.');\r\n\r\n return promise;\r\n }\r\n\r\n const options = this.getPayPalSdkUrlCongifuration();\r\n\r\n return this.createPayPalCheckoutInstance().then((payPalCheckoutInstance) => {\r\n return payPalCheckoutInstance.loadPayPalSDK(options).then(() => {\r\n window.isPayPalSDKLoaded = true;\r\n\r\n return this;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * This callback runs after the script is loaded\r\n * @callback onLoadCallback\r\n */\r\n\r\n /**\r\n * @param {onLoadCallback} [onLoadCallback] - A callback runs after the script is loaded\r\n * @returns {ScriptLoading} - A ScriptLoading object\r\n */\r\n loadConnectWithPayPal(onLoadCallback) {\r\n const value = this.getValueByAttributeName('data-cwpp-sdk');\r\n\r\n if (!value) {\r\n return this;\r\n }\r\n\r\n const script = document.createElement('script');\r\n\r\n script.src = value;\r\n script.async = true;\r\n\r\n if (onLoadCallback && typeof onLoadCallback === 'function') {\r\n script.onload = onLoadCallback;\r\n }\r\n\r\n script.onerror = () => {\r\n // eslint-disable-next-line no-console\r\n console.error(`An upload error occurred and the file ${value} could not be uploaded.`);\r\n };\r\n\r\n document.body.appendChild(script);\r\n\r\n return this;\r\n }\r\n\r\n loadPayPalCreditMessages() {\r\n const promise = new Promise(resolve => resolve(this));\r\n\r\n if (window.isPayPalCreditMessageLoaded || window.isPayPalSDKLoaded) {\r\n return promise;\r\n }\r\n\r\n if (!this.clientToken) {\r\n // eslint-disable-next-line no-console\r\n console.warn('An error has occurred. Failed to find client token.');\r\n\r\n return promise;\r\n }\r\n\r\n const options = { components: 'messages' };\r\n\r\n return this.createPayPalCheckoutInstance().then((payPalCheckoutInstance) => {\r\n return payPalCheckoutInstance.loadPayPalSDK(options).then(() => {\r\n window.isPayPalCreditMessageLoaded = true;\r\n\r\n return this;\r\n });\r\n });\r\n }\r\n};\r\n\r\nmodule.exports = PayPalScriptLoading;\r\n","'use strict';\r\n\r\nconst payPalProductPage = require('./components/payPalProductPage');\r\nconst payPalProductViewPage = require('./components/payPalProductViewPage');\r\nconst payPalMiniCartPage = require('./components/payPalMiniCartPage');\r\nconst payPalCartPage = require('./components/payPalCartPage');\r\nconst payPalAccountPage = require('./components/payPalAccountPage');\r\nconst apmaPage = require('./components/apmaPage');\r\nconst payPalCheckoutPage = require('./components/payPalCheckoutPage');\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Init PayPal functionality on PDP\r\n */\r\nfunction initProduct() {\r\n payPalProductPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on PVP\r\n */\r\nfunction initQuickView() {\r\n payPalProductViewPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on MiniCart\r\n */\r\nfunction initMiniCart() {\r\n // For MiniCart we generate client instance inside component.\r\n // This is, since general code which generate client instance executes before client token appear\r\n // This is only applicable for MiniCart\r\n payPalMiniCartPage.init();\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on Cart\r\n */\r\nfunction initCart() {\r\n payPalCartPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on Checkout\r\n */\r\nfunction initCheckout() {\r\n payPalCheckoutPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on Account\r\n */\r\nfunction initAccount() {\r\n payPalAccountPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init PayPal functionality on APMA page\r\n */\r\nfunction initAPMA() {\r\n apmaPage.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Init general variables which are used on all pages\r\n * @param {Object} clientInstancePromise client instance promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n btClientInstancePromise = clientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n initCheckout,\r\n initProduct,\r\n initQuickView,\r\n initMiniCart,\r\n initCart,\r\n initAccount,\r\n initAPMA\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\n\r\n/**\r\n * SRC error handler model\r\n */\r\nclass SrcAlertHandlerModel extends AlertHandlerModel {\r\n constructor(alertMessages) {\r\n super();\r\n this.alertMessages = alertMessages;\r\n }\r\n\r\n /**\r\n * Shows 'Zero amount' error\r\n */\r\n showZeroAmountError() {\r\n this.showError(this.alertMessages.CUSTOM_SRC_ZERO_AMOUNT_ERROR);\r\n }\r\n\r\n /**\r\n * Handles SRC error by types\r\n * @param {Object} error Error object or error message\r\n */\r\n handleSrcError(error) {\r\n if (error.name === 'BraintreeError') {\r\n this.showBraintreeError(error);\r\n } else {\r\n this.showError(error.message || error);\r\n }\r\n }\r\n\r\n /**\r\n * Handles error on checkout from cart\r\n * @param {Object} data error data\r\n */\r\n handleCheckoutFromCartError(data) {\r\n let errorMessage = '';\r\n\r\n if (data.fieldErrors.length) {\r\n data.fieldErrors.forEach((error, index) => {\r\n const keys = Object.keys(error);\r\n\r\n if (keys.length) {\r\n errorMessage += `${keys[index].replace('dwfrm_billing_', '').replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\r\n }\r\n });\r\n\r\n this.showError(errorMessage);\r\n }\r\n\r\n if (data.serverErrors.length) {\r\n data.serverErrors.forEach((error) => {\r\n errorMessage += `${error}. `;\r\n });\r\n\r\n this.showError(errorMessage);\r\n }\r\n\r\n if (data.cartError) {\r\n window.location.href = data.redirectUrl;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = SrcAlertHandlerModel;\r\n","'use strict';\r\n\r\n/* eslint-disable no-undef */\r\n/* global braintreeUtils braintree $ */\r\n\r\n/**\r\n * Creates visa checkout instance\r\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\r\n * @returns {Promise} visaCheckoutInstance SRC instance\r\n */\r\nfunction createVisaCheckout(btClientInstancePromise) {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n return braintree.visaCheckout.create({\r\n client: btClientInstance\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Initialized SRC with options and pass payload data after tokenize\r\n * @param {Object} SrcBaseModelInstance Instance of SrcBaseModel or it's child classes\r\n * @returns {Promise} SRC button\r\n */\r\nfunction visaCheckoutInitialized(SrcBaseModelInstance) {\r\n const visaCheckoutInstancePromise = createVisaCheckout(SrcBaseModelInstance.clientInstancePromise);\r\n\r\n return visaCheckoutInstancePromise\r\n .then(function(visaCheckoutInstance) {\r\n const srcInitOptions = visaCheckoutInstance.createInitOptions(SrcBaseModelInstance.getInitOptionsObject());\r\n\r\n V.init(srcInitOptions);\r\n\r\n // Event which is triggered when payment successfully completed on SRC end\r\n V.on('payment.success', function(payment) {\r\n visaCheckoutInstance.tokenize(payment).then(function(payload) {\r\n SrcBaseModelInstance.onTokenizeCallback(payload);\r\n });\r\n });\r\n V.on('payment.error', function(_, error) {\r\n SrcBaseModelInstance.alertHandler.handleSrcError(error);\r\n });\r\n V.on('payment.cancel', function(payment) {\r\n if (payment.error) {\r\n SrcBaseModelInstance.alertHandler.showError(SrcBaseModelInstance.alertHandler.alertMessages.CLIENT_GATEWAY_NETWORK);\r\n }\r\n });\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n visaCheckoutInitialized\r\n};\r\n","'use strict';\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 const loaderInstance = require('../../loaderHelper');\r\n const srcHelper = require('../helpers/srcHelper');\r\n\r\n const SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\r\n const SrcAccountModel = require('../models/srcAccount');\r\n\r\n const $braintreeSrcLoader = document.querySelector('.js-braintree-src-loader');\r\n const $braintreeSrcButton = document.querySelector('.js-braintree-src-account-button');\r\n\r\n const srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\r\n const $braintreeSrcDeviceDataInput = null;\r\n const srcLoader = loaderInstance($braintreeSrcLoader);\r\n\r\n const alertHandler = new SrcAlertHandlerModel(srcButtonConfigurations.messages);\r\n const SrcAccountModelInstance = new SrcAccountModel(clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n srcLoader,\r\n alertHandler);\r\n\r\n // Hides errors on the Account Page\r\n $braintreeSrcButton.addEventListener('click', alertHandler.hideAlerts);\r\n\r\n SrcAccountModelInstance.initSrcButton();\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst srcHelper = require('../helpers/srcHelper');\r\nconst loaderInstance = require('../../loaderHelper');\r\n\r\n// Models\r\nconst SrcCartModel = require('../models/srcCartModel');\r\nconst SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\r\n\r\nconst $braintreeCartSrcButton = document.querySelector('.js-braintree-cart-src-button');\r\n\r\n/**\r\n * Inits SRC account functionality on the Cart Page\r\n * @param {Promise} clientInstancePromise client instance promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n const $braintreeSrcLoader = document.querySelector('.js-braintree-src-loader');\r\n const $totalAmount = document.querySelector('.grand-total');\r\n const srcLoader = loaderInstance($braintreeSrcLoader);\r\n const srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\r\n const $braintreeSrcDeviceDataInput = document.querySelector('input[name=braintreeSrcDeviceDataInput]');\r\n const alertHandler = new SrcAlertHandlerModel(srcButtonConfigurations.messages);\r\n\r\n const SrcCheckoutModelInstance = new SrcCartModel(clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n srcLoader,\r\n alertHandler);\r\n\r\n // Hides errors on the Cart Page\r\n $braintreeCartSrcButton.addEventListener('click', alertHandler.hideAlerts);\r\n\r\n SrcCheckoutModelInstance.initSrcButton();\r\n\r\n // Tracks cases when total amount equal zero and throw an error\r\n srcHelper.zeroAmountSrcButtonBehavior($totalAmount, alertHandler);\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst srcHelper = require('../helpers/srcHelper');\r\nconst loaderInstance = require('../../loaderHelper');\r\n\r\n// Models\r\nconst SrcCheckoutModel = require('../models/srcCheckoutModel');\r\nconst SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\r\n\r\nconst $braintreeBillingPageSrcButton = document.querySelector('.js-braintree-billing-src-button');\r\n\r\n/**\r\n * Inits SRC account functionality on the Checkout Page\r\n * @param {Promise} clientInstancePromise client instance promise\r\n */\r\nfunction init(clientInstancePromise) {\r\n const $braintreeSrcLoader = document.querySelector('.js-braintree-src-loader');\r\n const $totalAmount = document.querySelector('.grand-total-sum');\r\n const srcLoader = loaderInstance($braintreeSrcLoader);\r\n const srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\r\n const $braintreeSrcDeviceDataInput = document.querySelector('input[name=braintreeSrcDeviceDataInput]');\r\n const alertHandler = new SrcAlertHandlerModel(srcButtonConfigurations.messages);\r\n\r\n const SrcCheckoutModelInstance = new SrcCheckoutModel(clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n srcLoader,\r\n alertHandler);\r\n\r\n // Hides errors on the Checkout/Billing Page\r\n $braintreeBillingPageSrcButton.addEventListener('click', alertHandler.hideAlerts);\r\n\r\n SrcCheckoutModelInstance.initSrcButton();\r\n\r\n // Tracks cases when total amount equal zero and throw an error\r\n srcHelper.zeroAmountSrcButtonBehavior($totalAmount, alertHandler);\r\n\r\n // Click SRC tab if session payment ID is SRC and session account value is filled\r\n // in case of checkout through saved SRC card session payment id will be SRC\r\n // but session account value will be empty\r\n const sessionPaymentMethodId = srcButtonConfigurations.sessionPaymentMethodId;\r\n const isSrcSessionAccountExist = document.getElementById('sessionSrcAccount').value !== '';\r\n\r\n if (sessionPaymentMethodId === 'SRC' && isSrcSessionAccountExist) {\r\n document.querySelector('.src-tab').click();\r\n }\r\n\r\n // Close alert saying to chose a diffrent shipping option on submit shipping button click\r\n // in case of express checkout with address to which default shipping option doesn't deliver\r\n // when a customer is redirected to checkout stage shipping\r\n const $submitShippingBtn = document.querySelector('.submit-shipping');\r\n\r\n $submitShippingBtn.addEventListener('click', alertHandler.hideControllerCreatedAlerts);\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst srcHelper = require('../helpers/srcHelper');\r\nconst srcListHelper = require('../helpers/srcListHelper');\r\n\r\n/**\r\n * Inits SRC list functionality\r\n */\r\nfunction init() {\r\n const $srcAccountList = document.getElementById('braintreeSrcAccountsList');\r\n const srcListExist = Boolean($srcAccountList);\r\n\r\n if (srcListExist) {\r\n srcListHelper.srsListStateHandler();\r\n\r\n $srcAccountList.addEventListener('change', function() {\r\n srcHelper.srcContentTabHandler(true);\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n// Helpers\r\nconst helper = require('../../helper');\r\nconst srcListHelper = require('../helpers/srcListHelper');\r\nconst srcHelper = require('../helpers/srcHelper');\r\n\r\nconst $srcSessionAccount = document.getElementById('sessionSrcAccount');\r\nconst $srcCardDescription = document.getElementById('braintreeSrcCardDescription');\r\nconst $braintreeSrcCardType = document.getElementById('braintreeSrcCardType');\r\nconst $braintreeSrcLastFourDigits = document.getElementById('braintreeSrcLastFourDigits');\r\nconst $braintreeSrcCreditCardNumber = document.getElementById('braintreeSrcCreditCardNumber');\r\nconst $srcButton = document.querySelector('.js-braintree-src-button');\r\nconst $accountListBlock = document.querySelector('.js-braintree-used-src-account');\r\n/**\r\n * Shows used session account(card) in dropdown and handles checkout view\r\n * @param {Object} srcPayload payload with card data from tokenization\r\n */\r\n\r\nfunction showSrcSessionAccount(srcPayload) {\r\n // description of used card(ex. Visa ending in 1111)\r\n const cardDescription = `${srcPayload.details.cardType} ${srcPayload.description}`;\r\n\r\n $srcSessionAccount.value = cardDescription;\r\n $srcSessionAccount.text = cardDescription;\r\n $srcCardDescription.value = cardDescription;\r\n $srcSessionAccount.selected = true;\r\n $accountListBlock.style.display = 'block';\r\n $srcButton.classList.remove('d-flex');\r\n $srcButton.classList.add('d-none');\r\n\r\n // Inputs required for identifying already saved cards\r\n $braintreeSrcCardType.value = srcPayload.details.cardType;\r\n $braintreeSrcLastFourDigits.value = srcPayload.details.lastFour;\r\n $braintreeSrcCreditCardNumber.value = '************' + srcPayload.details.lastFour;\r\n\r\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\r\n srcListHelper.setIsHideContinueButtonAttr(false);\r\n helper.continueButtonToggle(false);\r\n}\r\n\r\n/*\r\n* Removes method was used and changes appearance of SRC tab\r\n* */\r\nfunction removeSessionNonce() {\r\n $srcSessionAccount.value = '';\r\n $srcSessionAccount.text = '';\r\n $accountListBlock.style.display = 'none';\r\n $srcSessionAccount.setAttribute('data-save', false);\r\n\r\n document.getElementById('braintreeSRCNonce').value = '';\r\n document.getElementById('braintreeSrcBillingAddress').value = '';\r\n document.getElementById('braintreeSrcCardDescription').value = '';\r\n document.getElementById('newSrcAccount').selected = true;\r\n\r\n srcHelper.srcContentTabHandler(false);\r\n}\r\n\r\nmodule.exports = {\r\n showSrcSessionAccount,\r\n removeSessionNonce\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n FLOW_NAME_ACCOUNT: 'account',\r\n FLOW_NAME_CART_CHECKOUT: 'cart',\r\n FLOW_NAME_BILLING_CHECKOUT: 'billing'\r\n};\r\n","'use strict';\r\n\r\nconst DISPLAY_NONE_CLASS = 'd-none';\r\n\r\n/**\r\n * Shows a zero amount SRC button and hides a normal SRC button\r\n */\r\nfunction showZeroAmountSrcButton() {\r\n document.querySelector('.js-v-button-zero-amount').classList.remove(DISPLAY_NONE_CLASS);\r\n document.querySelector('.js-v-button').classList.add(DISPLAY_NONE_CLASS);\r\n}\r\n\r\n/**\r\n * Hides a zero amount SRC button and show a normal SRC button\r\n */\r\nfunction hideZeroAmountSrcButton() {\r\n document.querySelector('.js-v-button-zero-amount').classList.add(DISPLAY_NONE_CLASS);\r\n document.querySelector('.js-v-button').classList.remove(DISPLAY_NONE_CLASS);\r\n}\r\n\r\n/**\r\n * Handles whether show or hide zero amount SRC button\r\n * @param {number} totalAmount Total amount of order\r\n */\r\nfunction handleZeroAmountButtonVisibility(totalAmount) {\r\n if (totalAmount === 0) {\r\n showZeroAmountSrcButton();\r\n } else {\r\n hideZeroAmountSrcButton();\r\n }\r\n}\r\n\r\n/**\r\n * Adds event listener to the zero amount button on the Cart/Checkout Page\r\n * @param {DOMElement} $zeroAmountButton DOM element of zero amount SRC button\r\n * @param {Object} alertHandler Alert handling model\r\n */\r\nfunction addZeroAmountButtonEventListener($zeroAmountButton, alertHandler) {\r\n $zeroAmountButton.addEventListener('click', () => {\r\n alertHandler.hideAlerts();\r\n alertHandler.showZeroAmountError();\r\n });\r\n}\r\n\r\n/**\r\n * Creates a mutation obserber for total amount element\r\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\r\n */\r\nfunction initTotalAmountElementObserver(totalAmountElement) {\r\n const config = { attributes: true, childList: true, subtree: true };\r\n\r\n const observer = new MutationObserver((element) => {\r\n const totalAmount = Number.parseFloat(element[0].target.textContent.slice(1));\r\n\r\n // Handles whether show or hide zero amount SRC button\r\n handleZeroAmountButtonVisibility(totalAmount);\r\n });\r\n\r\n observer.observe(totalAmountElement, config);\r\n}\r\n\r\nmodule.exports = {\r\n initTotalAmountElementObserver: initTotalAmountElementObserver,\r\n addZeroAmountButtonEventListener: addZeroAmountButtonEventListener,\r\n hideZeroAmountSrcButton: hideZeroAmountSrcButton,\r\n showZeroAmountSrcButton: showZeroAmountSrcButton,\r\n handleZeroAmountButtonVisibility: handleZeroAmountButtonVisibility\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst srcListHelper = require('./srcListHelper');\r\nconst srcButtonHelper = require('./srcButtonHelper');\r\n\r\n/**\r\n * Returns Braintree SRC configs\r\n * @returns {Object} Braintree SRC configs\r\n */\r\nfunction getBraintreeSRCButtonConfigs() {\r\n const $srcButton = document.querySelector('.js-braintree-src-button, .js-braintree-src-account-button');\r\n let braintreeSrcButtonConfigs = null;\r\n\r\n try {\r\n braintreeSrcButtonConfigs = helper.tryParseJSON($srcButton.getAttribute('data-braintree-config'));\r\n } catch (error) {\r\n return braintreeSrcButtonConfigs;\r\n }\r\n\r\n return braintreeSrcButtonConfigs;\r\n}\r\n\r\n/**\r\n * Returns stringified SRC shipping address\r\n * @param {Object} shippingData SRC shipping\r\n * @returns {string} stringified shipping address\r\n */\r\nfunction createSrcShippingAddressData(shippingData) {\r\n const shippingAddress = {\r\n recipientName: `${shippingData.firstName} ${shippingData.lastName}`,\r\n phone: shippingData.phoneNumber,\r\n countryCodeAlpha2: shippingData.countryCode,\r\n streetAddress: shippingData.streetAddress,\r\n extendedAddress: shippingData.extendedAddress,\r\n locality: shippingData.locality,\r\n region: shippingData.region,\r\n postalCode: decodeURIComponent(shippingData.postalCode)\r\n };\r\n\r\n return JSON.stringify(shippingAddress);\r\n}\r\n\r\n/**\r\n * Returns stringified SRC billing address\r\n * @param {Object} billingData SRC billing\r\n * @param {Object} userData user data with email\r\n * @returns {string} stringified billing address\r\n */\r\nfunction createSrcBillingAddress(billingData, userData) {\r\n const srcBillingAddress = {\r\n recipientName: `${billingData.firstName} ${billingData.lastName}`,\r\n phone: billingData.phoneNumber,\r\n countryCodeAlpha2: billingData.countryCode,\r\n streetAddress: billingData.streetAddress,\r\n extendedAddress: billingData.streetAddress,\r\n locality: billingData.locality,\r\n region: billingData.region,\r\n postalCode: decodeURIComponent(billingData.postalCode),\r\n email: userData.userEmail\r\n };\r\n\r\n return JSON.stringify(srcBillingAddress);\r\n}\r\n\r\n/**\r\n * Creates SRC checkout form data\r\n * @param {Object} srcCheckoutFormData SRC form data\r\n * @param {Object} srcResponseData payload from SRC\r\n * @param {string} pageFlow page flow\r\n * @returns {Object} SRC Checkout Form with appended SRC data\r\n */\r\nfunction createSrcCheckoutFormData(srcCheckoutFormData, srcResponseData, pageFlow) {\r\n const $csrfToken = document.querySelector('.js-braintree-cart-buttons-wrap #csrf_token');\r\n\r\n const cardDescription = `${srcResponseData.details.cardType} ${srcResponseData.description}`;\r\n const deviceData = document.querySelector('input[name=braintreeSrcDeviceDataInput]').value;\r\n const shippingAddressData = createSrcShippingAddressData(srcResponseData.shippingAddress);\r\n\r\n srcCheckoutFormData.append($csrfToken.name, $csrfToken.value);\r\n srcCheckoutFormData.append('braintreeSrcNonce', srcResponseData.nonce);\r\n srcCheckoutFormData.append('braintreeSrcDeviceDataInput', deviceData);\r\n srcCheckoutFormData.append('braintreeSrcShippingAddress', shippingAddressData || '{}');\r\n srcCheckoutFormData.append('braintreeSrcCardDescription', cardDescription);\r\n srcCheckoutFormData.append('braintreeSrcCardType', srcResponseData.details.cardType);\r\n srcCheckoutFormData.append('braintreeSrcCreditCardNumber', '************' + srcResponseData.details.lastFour);\r\n\r\n if (pageFlow && pageFlow === window.braintreeConstants.PAGE_FLOW_CART) {\r\n srcCheckoutFormData.append('pageFlowCart', true);\r\n }\r\n\r\n return srcCheckoutFormData;\r\n}\r\n\r\n/**\r\n * Creates SRC form data\r\n * @param {Object} responseData data received after SRC tokenize\r\n * @param {string} paymentMethodName SRC payment method name\r\n * @returns {Object} SRC payment form data\r\n */\r\nfunction createSrcFormData(responseData, paymentMethodName) {\r\n const srcData = {};\r\n const checkoutFormFields = document.querySelector('.js-braintree-cart-buttons-wrap').getAttribute('data-checkout-form-fields');\r\n\r\n srcData.firstName = responseData.userData.userFirstName;\r\n srcData.lastName = responseData.userData.userLastName;\r\n srcData.address1 = responseData.billingAddress.streetAddress;\r\n srcData.address2 = responseData.billingAddress.extendedAddress || '';\r\n srcData.city = responseData.billingAddress.locality;\r\n srcData.postalCode = decodeURIComponent(responseData.billingAddress.postalCode);\r\n srcData.stateCode = responseData.billingAddress.region;\r\n srcData.country = responseData.billingAddress.countryCode;\r\n srcData.email = responseData.userData.userEmail;\r\n srcData.phone = responseData.billingAddress.phoneNumber;\r\n srcData.paymentMethod = paymentMethodName;\r\n\r\n return helper.createPaymentFormData(checkoutFormFields, srcData);\r\n}\r\n\r\n/**\r\n * Updates Storefront billing data form with SRC data\r\n * @param {Object} srcBillingData SRC billing address data/phone/email\r\n */\r\nfunction updateStorefrontBillingData(srcBillingData) {\r\n const storefrontBillingData = helper.tryParseJSON(document\r\n .querySelector('.js-braintree-billing-payment-wrap')\r\n .getAttribute('data-billing-form-fields-names'));\r\n\r\n storefrontBillingData.dwfrm_billing_addressFields_firstName = srcBillingData.firstName;\r\n storefrontBillingData.dwfrm_billing_addressFields_lastName = srcBillingData.lastName;\r\n storefrontBillingData.dwfrm_billing_addressFields_address1 = srcBillingData.streetAddress;\r\n storefrontBillingData.dwfrm_billing_addressFields_address2 = srcBillingData.extendedAddress || '';\r\n storefrontBillingData.dwfrm_billing_addressFields_city = srcBillingData.locality;\r\n storefrontBillingData.dwfrm_billing_addressFields_postalCode = decodeURIComponent(srcBillingData.postalCode);\r\n storefrontBillingData.dwfrm_billing_addressFields_states_stateCode = srcBillingData.region;\r\n storefrontBillingData.dwfrm_billing_addressFields_country = srcBillingData.countryCode;\r\n storefrontBillingData.dwfrm_billing_contactInfoFields_email = srcBillingData.email;\r\n storefrontBillingData.dwfrm_billing_contactInfoFields_phone = srcBillingData.phoneNumber;\r\n\r\n helper.updateBillingFormValues(storefrontBillingData);\r\n}\r\n\r\n/**\r\n * Handles all behavior related to the src content tab\r\n * SRC list (dropdown) change - actions for new/session account showing\r\n * @param {boolean} isSrcTabActive Whether Src tab is active\r\n */\r\nfunction srcContentTabHandler(isSrcTabActive) {\r\n const $srcAccountList = document.getElementById('braintreeSrcAccountsList');\r\n const $srcSessionAccount = document.getElementById('sessionSrcAccount');\r\n const $srcButton = document.querySelector('.js-braintree-src-button');\r\n const $srcZeroAmountButton = document.querySelector('.js-braintree-billing-src-button-zero-amount');\r\n const $alertInfo = document.querySelector('.js-billing-address-info-alert');\r\n\r\n const srcOptionId = $srcAccountList.value;\r\n\r\n if (srcOptionId === 'newaccount') {\r\n $srcButton.classList.remove('d-none');\r\n $srcButton.classList.add('d-flex');\r\n $srcZeroAmountButton.style.display = 'block';\r\n $alertInfo.style.display = 'block';\r\n\r\n if (isSrcTabActive) {\r\n helper.continueButtonToggle(true);\r\n }\r\n\r\n srcListHelper.setIsHideContinueButtonAttr(true);\r\n // Case when registered user and vaulting is enabled\r\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\r\n } else {\r\n $srcButton.classList.add('d-none');\r\n $srcButton.classList.remove('d-flex');\r\n $srcZeroAmountButton.style.display = 'none';\r\n $alertInfo.style.display = 'none';\r\n\r\n helper.continueButtonToggle(false);\r\n srcListHelper.setIsHideContinueButtonAttr(false);\r\n // Case when registered user and vaulting is enabled\r\n srcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, helper.tryParseJSON($srcSessionAccount.getAttribute('data-save')));\r\n }\r\n}\r\n\r\n/**\r\n * Treats the behavior of the SRC button in the SRC tab based on the total cost\r\n * Shows/hides the required SRC button if the total value is/isn't 0\r\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\r\n * @param {Object} alertHandler alertHandler model\r\n */\r\nfunction zeroAmountSrcButtonBehavior(totalAmountElement, alertHandler) {\r\n const $braintreeZeroAmountSrcButton = document\r\n .querySelector('.js-braintree-cart-src-button-zero-amount, .js-braintree-billing-src-button-zero-amount');\r\n\r\n const totalAmount = Number.parseFloat(totalAmountElement.textContent.slice(1));\r\n\r\n // Add event listener for cart zero amount button\r\n if ($braintreeZeroAmountSrcButton) {\r\n srcButtonHelper.addZeroAmountButtonEventListener($braintreeZeroAmountSrcButton, alertHandler);\r\n }\r\n\r\n // Handles whether show or hide zero amount button\r\n srcButtonHelper.handleZeroAmountButtonVisibility(totalAmount);\r\n\r\n // Creates a mutation obserber for total amount element\r\n srcButtonHelper.initTotalAmountElementObserver(totalAmountElement);\r\n}\r\n\r\nmodule.exports = {\r\n getBraintreeSRCButtonConfigs,\r\n createSrcShippingAddressData,\r\n createSrcBillingAddress,\r\n createSrcFormData,\r\n updateStorefrontBillingData,\r\n srcContentTabHandler,\r\n createSrcCheckoutFormData,\r\n zeroAmountSrcButtonBehavior\r\n};\r\n","const helper = require('../../helper');\r\n\r\nconst $srcAccountList = document.getElementById('braintreeSrcAccountsList');\r\nconst $saveSRCAccountCheckbox = document.getElementById('braintreeSaveSRCAccount');\r\nconst $saveSRCAccountCheckboxContainter = document.getElementById('braintreeSaveSRCContainer');\r\nconst $srcButton = document.querySelector('.js-braintree-src-button');\r\nconst $accoutnListBlock = document.querySelector('.js-braintree-used-src-account');\r\nconst $alertInfo = document.querySelector('.js-billing-address-info-alert');\r\n\r\n/**\r\n * Sets value to data-paypal-is-hide-continue-button attribute\r\n * @param {boolean} value true/false\r\n */\r\nfunction setIsHideContinueButtonAttr(value) {\r\n const $srcContent = document.querySelector('.js-braintree-src-content');\r\n\r\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', value);\r\n}\r\n\r\n/**\r\n * Handles actions based on selected value in SRC dropdown for checkout view\r\n */\r\nfunction srsListStateHandler() {\r\n const srcOptionId = $srcAccountList.value;\r\n\r\n if (srcOptionId === 'newaccount') {\r\n if ($alertInfo) {\r\n $alertInfo.style.display = 'block';\r\n }\r\n\r\n $accoutnListBlock.style.display = 'none';\r\n } else {\r\n $srcButton.style.display = 'none';\r\n\r\n if ($alertInfo) {\r\n $alertInfo.style.display = 'none';\r\n }\r\n\r\n helper.continueButtonToggle(false);\r\n setIsHideContinueButtonAttr(false);\r\n }\r\n}\r\n\r\n/**\r\n * Get stored card by card type and last four digits\r\n * @param {string} cardType card type\r\n * @param {string} lastFour last four card digits\r\n * @returns {Object} jquery object of found stored card\r\n */\r\nfunction getStoredCardByData(cardType, lastFour) {\r\n return Array.from(document.querySelectorAll('.js-stored-card')).find(function($card) {\r\n const storedCardType = $card.dataset.type.replace(/\\s/g, '').toLowerCase();\r\n const storedCardLastFour = $card.dataset.lastFour.toString();\r\n\r\n return storedCardType === cardType && storedCardLastFour === lastFour;\r\n });\r\n}\r\n\r\n/**\r\n * Checks whether SRC session card is already stored\r\n * @param {string} cardType card type\r\n * @param {string} lastFour last four card digits\r\n * @returns {boolean} \"true/false\" value whether session card is already stored\r\n */\r\nfunction isSessionCardAlreadyStored(cardType, lastFour) {\r\n const $storedCard = getStoredCardByData(cardType, lastFour);\r\n let flag = false;\r\n\r\n if ($storedCard) {\r\n flag = true;\r\n }\r\n\r\n return flag;\r\n}\r\n\r\n/**\r\n * Sets value to \"Save SRC account\" checkbox\r\n * @param {Element} srcSessionAccount element from which we recognize session account existence\r\n * @param {boolean} value true/false\r\n */\r\nfunction handleSaveSrcAccountCheckbox(srcSessionAccount, value) {\r\n const isSrcSessionCardExist = srcSessionAccount.value !== '';\r\n const isAddNewOptionSelected = $srcAccountList.value === 'newaccount';\r\n\r\n if ($saveSRCAccountCheckbox) {\r\n // In case if session account exists and is chosen in dropdown\r\n // we check whether used SRC card is already stored\r\n // if card is already stored \"save\" checkbox is hidden and unchecked\r\n if (isSrcSessionCardExist && !isAddNewOptionSelected) {\r\n const $braintreeSrcCardType = document.getElementById('braintreeSrcCardType');\r\n const $braintreeSrcLastFourDigits = document.getElementById('braintreeSrcLastFourDigits');\r\n\r\n const sessionCardLastFour = $braintreeSrcLastFourDigits.value;\r\n let sessionCardType = $braintreeSrcCardType.value;\r\n\r\n sessionCardType = sessionCardType.replace(/\\s/g, '').toLowerCase();\r\n\r\n const isSrcSessionCardAlreadyStored = isSessionCardAlreadyStored(sessionCardType, sessionCardLastFour);\r\n\r\n if (isSrcSessionCardAlreadyStored) {\r\n $saveSRCAccountCheckbox.checked = false;\r\n $saveSRCAccountCheckboxContainter.style.display = 'none';\r\n }\r\n\r\n return;\r\n }\r\n\r\n // In case if session card does not exist/user chooses option \"Add New\"\r\n // or session card is not stored yet\r\n // checkbox is checked and shown\r\n $saveSRCAccountCheckboxContainter.style.display = 'block';\r\n $saveSRCAccountCheckbox.checked = value;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n setIsHideContinueButtonAttr,\r\n srsListStateHandler,\r\n handleSaveSrcAccountCheckbox\r\n};\r\n","'use strict';\r\n\r\nconst srcConstants = require('../constants/srcConstants');\r\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\r\n\r\n/**\r\n * Gets SRC flow name(corresponding page)\r\n * @returns {string} Flow id(page) account/cart/billing\r\n */\r\nfunction getSrcFlowName() {\r\n const isSrcEnabledOnAccountPage = Boolean(document.querySelector('.js-braintree-account-add-src'));\r\n const isSrcEnabledOnCartPage = Boolean(document.querySelector('.js-braintree-cart-src-button'));\r\n const isSrcEnabledOnBillingPage = Boolean(document.querySelector('.js-braintree-src-content'));\r\n\r\n let srcFlowName;\r\n\r\n if (isSrcEnabledOnAccountPage) {\r\n srcFlowName = srcConstants.FLOW_NAME_ACCOUNT;\r\n } else if (isSrcEnabledOnCartPage) {\r\n srcFlowName = srcConstants.FLOW_NAME_CART_CHECKOUT;\r\n } else if (isSrcEnabledOnBillingPage) {\r\n srcFlowName = srcConstants.FLOW_NAME_BILLING_CHECKOUT;\r\n }\r\n\r\n return srcFlowName;\r\n}\r\n\r\n/**\r\n * Makes call to checkoutFrom Cart endpoint\r\n * @param {Object} srcCheckoutFormData SRC form data passed to server side\r\n * @param {string} email SRC email from response\r\n * @param {Object} alertHandler Alert handling model\r\n * @param {string} chooseShippingUrl Link to checkout stage shipping\r\n * @returns {Promise} call to checkoutFrom Cart endpoint\r\n */\r\nfunction checkoutFromCartCall(srcCheckoutFormData, email, alertHandler, chooseShippingUrl) {\r\n const checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\r\n const redirectUrl = chooseShippingUrl || window.braintreeUrls.placeOrderUrl;\r\n // Submit customer form with email (CheckoutServices-SubmitCustomer)\r\n // as we skip step \"login via guest/registered user\" while express checkout\r\n // email is set only in case of guest checkout and if email is not already set\r\n\r\n paymentMethodGeneral.submitCustomerForm(email);\r\n\r\n return fetch(checkoutSubmitPayment, {\r\n method: 'POST',\r\n body: srcCheckoutFormData\r\n })\r\n .then(function(data) {\r\n if (data.error) {\r\n alertHandler.handleCheckoutFromCartError(data);\r\n }\r\n\r\n sessionStorage.setItem('pageState', 'cart');\r\n window.location.href = redirectUrl;\r\n })\r\n .catch(function(error) {\r\n if (error && error.redirectUrl) {\r\n window.location.href = error.redirectUrl;\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n getSrcFlowName,\r\n checkoutFromCartCall\r\n};\r\n","'use strict';\r\n\r\nconst SrcBaseModel = require('./srcBaseModel');\r\nconst helper = require('../../helper');\r\n\r\n// See description of \"srcBaseModel\" for more info\r\nfunction SrcAccountModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, alertHandler) {\r\n SrcBaseModel.call(this,\r\n clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n loader,\r\n alertHandler);\r\n}\r\n\r\nSrcAccountModel.prototype = Object.create(SrcBaseModel.prototype);\r\n\r\n// See description of \"srcBaseModel\" for more info\r\n// Method set nonce data in to hidden input and submit the form to the server\r\nSrcAccountModel.prototype.onTokenizeCallback = function(srcPayload) {\r\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\r\n const srcLoader = this.loader;\r\n const alertHandler = this.alertHandler;\r\n const $addSrcAccountForm = document.querySelector('.js-braintree-account-add-src');\r\n const addSrcFormUrl = $addSrcAccountForm.getAttribute('action');\r\n const $srcNonce = document.getElementById('braintreeSrcNonce');\r\n\r\n srcLoader.show();\r\n\r\n $srcNonce.value = srcPayload.nonce;\r\n\r\n return helper.checkForDuplicatedCC(srcPayload)\r\n .then(function(result) {\r\n if (result.error) {\r\n throw result.message;\r\n }\r\n })\r\n .then(function() {\r\n const creditCardAccount = require('../../creditcard/components/creditCardAccount');\r\n const braintreeAccount = require('../../braintreeAccount');\r\n\r\n const formData = new FormData($addSrcAccountForm);\r\n const encodedCCData = window.btoa(JSON.stringify(Object.fromEntries(formData)));\r\n\r\n return fetch(addSrcFormUrl, {\r\n method: 'POST',\r\n body: encodedCCData,\r\n headers: { 'Content-Type': 'application/json' }\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.error) {\r\n alertHandler.showError(data.error);\r\n } else {\r\n fetch(data.renderAccountsUrl)\r\n .then((template) => template.text())\r\n .then((templateHtml) => {\r\n creditCardAccount.closeAddNewCardBlock();\r\n document.querySelector('.js-credit-card-accounts').innerHTML = templateHtml;\r\n // \"Make default\" link functionality reinitiation\r\n braintreeAccount.initMakeDefaultCardEvent();\r\n // \"Remove Card\" link functionality reinitiation\r\n braintreeAccount.initRemoveCardEvent();\r\n });\r\n }\r\n });\r\n })\r\n .catch(function(error) {\r\n srcLoader.hide();\r\n alertHandler.showError(error);\r\n })\r\n .finally(function() {\r\n srcLoader.hide();\r\n });\r\n};\r\n\r\n// See description of \"srcBaseModel\" for more info\r\nSrcAccountModel.prototype.initSrcButton = function() {\r\n const SrcAccountModelInstance = this;\r\n\r\n SrcAccountModelInstance.braintreeSrcSdkButtonInit(SrcAccountModelInstance)\r\n .catch(function(error) {\r\n SrcAccountModelInstance.alertHandler.handleSrcError(error);\r\n });\r\n};\r\n\r\nmodule.exports = SrcAccountModel;\r\n","'use strict';\r\n\r\nconst braintreeSrcSDK = require('../braintreesdk/braintreeSrcSDK');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\n\r\n/**\r\n * SRC Base Model constructor\r\n * @param {Promise} clientInstancePromise client instance promise\r\n * @param {Object} srcButtonConfigurations SRC button configs\r\n * @param {Object} $braintreeSrcDeviceDataInput BT SRC device data input\r\n * @param {Object} loader loader instance\r\n * @param {Object} alertHandler Alert handler model instance\r\n */\r\nfunction SrcBaseModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, alertHandler) {\r\n this.clientInstancePromise = clientInstancePromise;\r\n this.srcButtonConfigurations = srcButtonConfigurations;\r\n this.$braintreeSrcDeviceDataInput = $braintreeSrcDeviceDataInput;\r\n this.loader = loader;\r\n this.alertHandler = alertHandler;\r\n\r\n this.braintreeSrcSdkButtonInit = braintreeSrcSDK.visaCheckoutInitialized;\r\n\r\n // Prop which will be settled after calling of \"getBasketData\" method\r\n this.basketData = {\r\n amount: 0\r\n };\r\n}\r\n\r\n/**\r\n * Method is triggers when \"initSrcButton\" is called. Update total basket amount\r\n * @returns {Promise} Promise of get order data response\r\n */\r\nSrcBaseModel.prototype.updateBasketData = function() {\r\n const SrcBaseModelInstance = this;\r\n\r\n return fetch(this.srcButtonConfigurations.getOrderInfoUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n SrcBaseModelInstance.basketData.amount = data.amount;\r\n })\r\n .catch(() => window.location.reload());\r\n};\r\n\r\n/**\r\n * Retrun Init options which are used in SRC initialization\r\n * @returns {Object} object with Init options\r\n */\r\nSrcBaseModel.prototype.getInitOptionsObject = function() {\r\n return {\r\n paymentRequest: {\r\n currencyCode: this.srcButtonConfigurations.options.currency || 'USD',\r\n subtotal: this.basketData.amount\r\n },\r\n settings: {\r\n locale: this.srcButtonConfigurations.settings.locale,\r\n payment: {\r\n cardBrands: this.srcButtonConfigurations.settings.cardBrands,\r\n acceptCanadianVisaDebit: this.srcButtonConfigurations.settings.acceptCanadianVisaDebit\r\n },\r\n shipping: {\r\n collectShipping: this.srcButtonConfigurations.options.isShippingAddressRequired\r\n }\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Callback which is triggered when SRC approved payment on its side\r\n * This method will be overridden in scope of each child model\r\n * @param {Object} srcPayload payload from SRC\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nSrcBaseModel.prototype.onTokenizeCallback = function(srcPayload) {\r\n};\r\n\r\n/**\r\n * Method add fraud data in to hidden input (if enabled)\r\n * @returns {Promise} with the result of operation\r\n */\r\nSrcBaseModel.prototype.setFraudData = function() {\r\n // eslint-disable-next-line no-undef\r\n const SrcBaseModelInstance = this;\r\n const $braintreeSrcDeviceDataInput = SrcBaseModelInstance.$braintreeSrcDeviceDataInput;\r\n\r\n let result = Promise.resolve({});\r\n\r\n if (this.srcButtonConfigurations.isFraudToolsEnabled && $braintreeSrcDeviceDataInput) {\r\n result = braintreeGeneral.collectFraudData(this.clientInstancePromise)\r\n .then(function(dataCollectorInstance) {\r\n SrcBaseModelInstance.$braintreeSrcDeviceDataInput.value = dataCollectorInstance.deviceData;\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Method is called when we want to init SRC button\r\n * @returns {Promise} Promise with the result of the operation\r\n */\r\nSrcBaseModel.prototype.initSrcButton = function() {\r\n const SrcBaseModelInstance = this;\r\n\r\n return SrcBaseModelInstance.updateBasketData()\r\n .then(function() {\r\n return SrcBaseModelInstance.setFraudData()\r\n .then(function() {\r\n return SrcBaseModelInstance.braintreeSrcSdkButtonInit(SrcBaseModelInstance);\r\n });\r\n })\r\n .catch(function(error) {\r\n SrcBaseModelInstance.alertHandler.handleSrcError(error);\r\n });\r\n};\r\n\r\nmodule.exports = SrcBaseModel;\r\n","'use strict';\r\n\r\nconst SrcBaseModel = require('./srcBaseModel');\r\nconst srcHelper = require('../helpers/srcHelper');\r\nconst srcPaymentProcessingHelper = require('../helpers/srcPaymentProcessingHelper');\r\nconst helper = require('../../helper');\r\n\r\n// See description of \"srcBaseModel\" for more info\r\nfunction SrcCartModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, alertHandler) {\r\n SrcBaseModel.call(this,\r\n clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n loader,\r\n alertHandler);\r\n}\r\n\r\nSrcCartModel.prototype = Object.create(SrcBaseModel.prototype);\r\n\r\n// See description of \"srcBaseModel\" for more info\r\n// Add nonce and billing data to the from and submit to the \"CheckoutService-SubmitPayment\" endpoint\r\nSrcCartModel.prototype.onTokenizeCallback = async function(srcPayload) {\r\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\r\n\r\n this.loader.show();\r\n // Checking if preselected shipping option delivers to the chosen shipping address\r\n\r\n const billingAddress = srcPayload.billingAddress;\r\n const city = billingAddress.locality;\r\n const state = billingAddress.region;\r\n const country = billingAddress.countryCode;\r\n const postalCode = billingAddress.postalCode;\r\n const addressQueryString = `city=${city.replace(/\\s/g, '%20')}&stateCode=${state}&countryCode=${country}&postalCode=${postalCode}`;\r\n const paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_NOT_SUPPORTING_SHIPPING_OPTIONS;\r\n const url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\r\n\r\n const shippingOptions = await helper.getApplicableShippingOptions(url);\r\n\r\n let chooseShippingUrl;\r\n\r\n if (!shippingOptions.find((shippingOption) => shippingOption.selected === true)) {\r\n chooseShippingUrl = `${window.braintreeUrls.chooseShippingUrl}&errorId=error.shippingoption.invalid`;\r\n }\r\n\r\n // Proceeding with checkout\r\n const $srcButton = document.querySelector('.js-braintree-src-button');\r\n\r\n srcPayload.billingAddressString = srcHelper.createSrcBillingAddress(srcPayload.billingAddress, srcPayload.userData);\r\n\r\n const paymentMethodName = helper.tryParseJSON($srcButton.getAttribute('data-braintree-config')).paymentMethodName;\r\n const srcFormData = srcHelper.createSrcFormData(srcPayload, paymentMethodName);\r\n const srcCheckoutFormData = srcHelper.createSrcCheckoutFormData(srcFormData, srcPayload, window.braintreeConstants.PAGE_FLOW_CART);\r\n\r\n srcPaymentProcessingHelper.checkoutFromCartCall(srcCheckoutFormData, srcPayload.userData.userEmail, this.alertHandler, chooseShippingUrl)\r\n .always(function() {\r\n this.loader.hide();\r\n });\r\n};\r\n\r\nmodule.exports = SrcCartModel;\r\n","'use strict';\r\n\r\nconst SrcBaseModel = require('./srcBaseModel');\r\n\r\n// Helpers\r\nconst srcHelper = require('../helpers/srcHelper');\r\nconst helper = require('../../helper');\r\n\r\nconst srcSessionAccountComponent = require('../components/srcSessionAccount');\r\n\r\n// See description of \"srcBaseModel\" for more info\r\nfunction SrcCheckoutModel(clientInstancePromise, srcButtonConfigurations, $braintreeSrcDeviceDataInput, loader, alertHandler) {\r\n SrcBaseModel.call(this,\r\n clientInstancePromise,\r\n srcButtonConfigurations,\r\n $braintreeSrcDeviceDataInput,\r\n loader,\r\n alertHandler);\r\n}\r\n\r\nSrcCheckoutModel.prototype = Object.create(SrcBaseModel.prototype);\r\n\r\n// See description of \"srcBaseModel\" for more info\r\n// Add nonce and billing data to the from and trigger click on \"SubmitPayment\" button\r\nSrcCheckoutModel.prototype.onTokenizeCallback = function(srcPayload) {\r\n SrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\r\n\r\n this.loader.show();\r\n\r\n const that = this;\r\n\r\n const $saveCardCheckbox = document.getElementById('braintreeSaveSRCAccount');\r\n let checkForDuplicatedCCPromise;\r\n\r\n if ($saveCardCheckbox && $saveCardCheckbox.checked) {\r\n checkForDuplicatedCCPromise = helper.checkForDuplicatedCC(srcPayload);\r\n } else {\r\n checkForDuplicatedCCPromise = Promise.resolve(); // eslint-disable-line no-undef\r\n }\r\n\r\n checkForDuplicatedCCPromise\r\n .then((response) => {\r\n if (response && response.error) {\r\n return Promise.reject(response); // eslint-disable-line no-undef\r\n }\r\n\r\n return Promise.resolve(); // eslint-disable-line no-undef\r\n })\r\n .then(() => {\r\n helper.removeActiveSessionPayment();\r\n\r\n const $srcNonce = document.getElementById('braintreeSRCNonce');\r\n const $srcBillingAddress = document.getElementById('braintreeSrcBillingAddress');\r\n const $continueButton = document.querySelector('button.submit-payment');\r\n const srcBillingData = srcPayload.billingAddress;\r\n\r\n srcPayload.billingAddressString = srcHelper.createSrcBillingAddress(srcPayload.billingAddress, srcPayload.userData);\r\n\r\n $srcNonce.value = srcPayload.nonce;\r\n srcBillingData.email = srcPayload.userData.userEmail;\r\n $srcBillingAddress.value = JSON.stringify(srcBillingData);\r\n\r\n srcSessionAccountComponent.showSrcSessionAccount(srcPayload);\r\n srcHelper.updateStorefrontBillingData(srcBillingData);\r\n\r\n $continueButton.click();\r\n })\r\n .catch((error) => {\r\n that.alertHandler.handleSrcError(error);\r\n })\r\n .finally(() => {\r\n that.loader.hide();\r\n });\r\n};\r\n\r\nmodule.exports = SrcCheckoutModel;\r\n","'use strict';\r\n\r\nconst braintreeGeneral = require('../braintreeGeneral');\r\nconst srcHelper = require('./helpers/srcHelper');\r\n\r\n// Components\r\nconst srcAccount = require('./components/srcAccount');\r\nconst srcCardList = require('./components/srcList');\r\nconst checkoutComponent = require('./components/srcCheckout');\r\nconst cartComponent = require('./components/srcCart');\r\n\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Inits SRC functionality on the Account Page\r\n */\r\nfunction initAccount() {\r\n srcAccount.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Inits SRC functionality on the Cart Page\r\n */\r\nfunction initCartCheckout() {\r\n cartComponent.init(btClientInstancePromise);\r\n}\r\n\r\n/**\r\n * Inits SRC functionality on the Billing Page\r\n */\r\nfunction initBillingCheckout() {\r\n checkoutComponent.init(btClientInstancePromise);\r\n srcCardList.init();\r\n}\r\n\r\n/**\r\n * Inits braintreeSrcModelBuilder on SRC level\r\n */\r\nfunction init() {\r\n const braintreeSrcConfigs = srcHelper.getBraintreeSRCButtonConfigs();\r\n let clientToken;\r\n\r\n if (braintreeSrcConfigs) {\r\n clientToken = braintreeSrcConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n initAccount,\r\n initCartCheckout,\r\n initBillingCheckout,\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst AlertHandlerModel = require('../../alertHandler');\r\n\r\n/**\r\n * Venmo error handler model\r\n */\r\nclass VenmoAlertHandlerModel extends AlertHandlerModel {\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Handles error flows in case when browser is not supported for Billing/Account Pages\r\n * @param {Object} braintreeVenmoConfig Braintree Venmo config\r\n */\r\n handleNoBrowserSupportError(braintreeVenmoConfig) {\r\n const $venmoAccountWrapper = document.querySelector('.js-braintree-account-venmo-button-wrapper');\r\n\r\n if ($venmoAccountWrapper) {\r\n this.showError(braintreeVenmoConfig.messages.VENMO_BROWSER_NOT_SUPPORTED);\r\n } else {\r\n document.querySelector('.js-braintree-venmo-button').parentElement.firstElementChild.classList.add('d-none');\r\n document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"Venmo\"]').classList.add('d-none');\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = VenmoAlertHandlerModel;\r\n","'use strict';\r\n\r\nconst braintreeVenmoSDK = require('./braintreeVenmoSDK');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst venmoProcessing = require('../components/venmoProcessing');\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\n\r\n/* global Promise braintree $ */\r\n\r\n// global variables\r\nlet btClientInstancePromise;\r\n\r\n/**\r\n * Init Braintree Venmo model\r\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\r\n */\r\nfunction init(braintreeClientInstancePromise) {\r\n braintreeVenmoSDK.init(braintreeClientInstancePromise);\r\n\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\n/**\r\n * Returns fraud data from dataCollector payload\r\n * @returns {Object} Payload with fraud data\r\n */\r\nfunction collectFraudData() {\r\n let response;\r\n\r\n try {\r\n response = braintreeGeneral.collectFraudData(btClientInstancePromise);\r\n } catch (error) {\r\n response = Promise.resolve({\r\n customMessage: 'Fraud Data collection isn`t enabled via Custom Site Preference'\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Checks whether browser supports Venmo\r\n * @returns {Promise} with isBrowserSupported value\r\n */\r\nfunction isBrowserSupported() {\r\n return braintreeVenmoSDK.isBrowserSupported();\r\n}\r\n\r\n/**\r\n * Inits Venmo button\r\n * @param {Element} $venmoButton Venmo button element\r\n * @param {Booleean} isBillingPage \"true/false\" value to identify flow page\r\n * @returns {Promise} Promise resolved with a tokenized payload\r\n */\r\nfunction initVenmo($venmoButton, isBillingPage) {\r\n return braintreeVenmoSDK.createVenmo()\r\n .then(function(venmoInstance) {\r\n $venmoButton.addEventListener('click', function() {\r\n // Check billing form to close Venmo pop-up and prevent tokenize action if any error (empty email input)\r\n // Check if amount is not zero to close Venmo pop-up and show appropriate error\r\n if (isBillingPage && (!venmoHelper.checkBillingForm() || venmoHelper.checkZeroAmount())) {\r\n return undefined;\r\n }\r\n\r\n return braintreeVenmoSDK.tokenize(venmoInstance)\r\n .then(function(payload) {\r\n return venmoProcessing.processVenmo(payload);\r\n })\r\n .catch(function(error) {\r\n const VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\r\n const alertHandler = new VenmoAlertHandlerModel();\r\n\r\n alertHandler.showError(error.message);\r\n });\r\n });\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n collectFraudData,\r\n isBrowserSupported,\r\n initVenmo\r\n};\r\n","'use strict';\r\n\r\nconst braintreeVenmoModel = require('./braintreeVenmoModel');\r\nconst braintreeGeneral = require('../../braintreeGeneral');\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\n\r\n/**\r\n * Initialize Braintree Venmo Model. Pattern Builder is used\r\n * @returns {Object} object with boolean \"error\" flag and \"message\" attribute with error message\r\n */\r\nfunction init() {\r\n const braintreeVenmoButtonConfigs = venmoHelper.getBraintreeVenmoButtonConfigs();\r\n const response = {\r\n error: false,\r\n message: '',\r\n btVenmoModel: null\r\n };\r\n\r\n let clientToken;\r\n let btClientInstancePromise;\r\n\r\n if (braintreeVenmoButtonConfigs) {\r\n clientToken = braintreeVenmoButtonConfigs.clientToken;\r\n btClientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\r\n\r\n braintreeVenmoModel.init(btClientInstancePromise);\r\n\r\n response.btVenmoModel = braintreeVenmoModel;\r\n } else {\r\n response.error = true;\r\n response.message = 'No Braintree Venmo Configurations';\r\n }\r\n\r\n return response;\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\n/* global braintreeUtils braintree $ */\r\n\r\nlet btClientInstancePromise;\r\nlet venmoClientInstance;\r\n\r\n/**\r\n * Checks whether browser supports Venmo\r\n * @returns {Promise} with isBrowserSupported value\r\n */\r\nfunction isBrowserSupported() {\r\n return btClientInstancePromise\r\n .then(function(btClientInstance) {\r\n venmoClientInstance = btClientInstance;\r\n\r\n return braintree.venmo.isBrowserSupported({\r\n allowNewBrowserTab: false,\r\n allowDesktop: true\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Creates Venmo instance\r\n * @returns {Promise} Promise resolved with Venmo instance\r\n */\r\nfunction createVenmo() {\r\n return braintree.venmo.create({\r\n client: venmoClientInstance,\r\n allowNewBrowserTab: false,\r\n ignoreHistoryChanges: true,\r\n allowDesktop: true\r\n });\r\n}\r\n\r\n/**\r\n * Tokenizes Venmo payment\r\n * @param {Object} venmoInstance Venmo instance\r\n * @returns {Promise} Promise resolved with tokenized payload\r\n */\r\nfunction tokenize(venmoInstance) {\r\n return venmoInstance.tokenize({ processResultsDelay: 10 });\r\n}\r\n\r\n/**\r\n * Inits braintreeVenmoSDK with client instance promise\r\n * @param {Promise} braintreeClientInstancePromise Braintree Venmo client instance promise\r\n */\r\nfunction init(braintreeClientInstancePromise) {\r\n btClientInstancePromise = braintreeClientInstancePromise;\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n isBrowserSupported,\r\n createVenmo,\r\n tokenize\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\nconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\r\nconst alertHandler = new VenmoAlertHandlerModel();\r\n\r\nconst $venmoButton = document.querySelector('.js-braintree-account-venmo-button');\r\n\r\nlet venmoLoader;\r\n\r\n/**\r\n * Makes Venmo account as default one\r\n * @param {Event} e event to identify target element\r\n */\r\nfunction makeDefaultVenmo(e) {\r\n const target = e.target;\r\n const url = window.braintreeUrls.makePaymentMethodDefaultUrl;\r\n const id = target.getAttribute('data-id');\r\n const paymentMethodID = window.braintreePreferences.paymentMethods.BRAINTREE_VENMO.paymentMethodId;\r\n const $loaderContainter = document.querySelector(`#${target.getAttribute('data-loader')}`);\r\n const loader = loaderInstance($loaderContainter);\r\n\r\n alertHandler.hideAlerts();\r\n loader.show();\r\n\r\n helper.setDefaultProperty({\r\n url: url,\r\n id: id,\r\n paymentMethodID: paymentMethodID,\r\n loader: loader\r\n });\r\n}\r\n\r\n/**\r\n * Remove Venmo account\r\n * @param {Event} e event to identify target element\r\n */\r\nfunction removeVenmoPayment(e) {\r\n const target = e.target;\r\n const $loaderContainter = document.getElementById(target.getAttribute('data-loader'));\r\n\r\n venmoLoader = loaderInstance($loaderContainter);\r\n venmoLoader.show();\r\n\r\n fetch(`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute('data-id')}`, { method: 'GET' })\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((data => {\r\n if (data.error && data.error.message) {\r\n // Show error message in a case of current PI removal is not allowed\r\n alertHandler.showError(data.error.message);\r\n } else {\r\n document.getElementById(`uuid-${data.UUID}`).remove();\r\n\r\n if (data.newDefaultAccount) {\r\n document.getElementById(`uuid-${data.newDefaultAccount}`).classList.add('font-weight-bold');\r\n document.getElementById(`uuid-${data.newDefaultAccount}`).classList.add('d-none');\r\n }\r\n }\r\n\r\n venmoLoader.hide();\r\n }))\r\n .catch(() => {\r\n location.reload();\r\n venmoLoader.hide();\r\n });\r\n}\r\n\r\n/**\r\n * Creates Venmo form data on account page\r\n * @param {string} nonce Braintree Venmo nonce\r\n * @param {string} userId Braintree Venmo userID\r\n * @returns {Object} object with Venmo form data\r\n */\r\nfunction createVenmoAccountFormData(nonce, userId) {\r\n const venmoAccountFormFields = $venmoButton.getAttribute('data-venmo-account-form-fields');\r\n const csrfToken = document.querySelector('.js-braintree-account-venmo-button-wrapper #csrf_token');\r\n\r\n const venmoAccountFormData = helper.createPaymentFormData(venmoAccountFormFields, {\r\n nonce: nonce,\r\n userId: userId\r\n });\r\n\r\n venmoAccountFormData.append(csrfToken.name, csrfToken.value);\r\n\r\n return venmoAccountFormData;\r\n}\r\n\r\n/**\r\n * Stores new Venmo account\r\n * @param {Object} data tokenized payload data with Venmo nonce\r\n * @returns {Promise} call to Braintree-AccountAddVenmoHandle endpoint\r\n */\r\nfunction storeNewVenmoAccount(data) {\r\n const venmoAddAccountHandlerUrl = $venmoButton.getAttribute('data-venmo-add-account-handler');\r\n const venmoAccountFormData = createVenmoAccountFormData(data.nonce, data.details.username);\r\n const encodedFormData = btoa(JSON.stringify(Object.fromEntries(venmoAccountFormData)));\r\n\r\n venmoLoader.show();\r\n\r\n return fetch(venmoAddAccountHandlerUrl, {\r\n method: 'POST',\r\n body: encodedFormData,\r\n headers: { 'Content-Type': 'application/json' }\r\n })\r\n .then((response) => response.json())\r\n .then((paymentData) => {\r\n venmoLoader.hide();\r\n if (paymentData.error) {\r\n alertHandler.showError(paymentData.error);\r\n } else {\r\n venmoHelper.hideVenmoAccountBtn();\r\n fetch(paymentData.renderAccountsUrl)\r\n .then((template) => template.text())\r\n .then((templateHTML => {\r\n document.querySelector('.js-venmo-accounts').innerHTML = templateHTML;\r\n document.querySelectorAll('.js-venmo-accounts .js-remove-bt-payment').forEach((el) => {\r\n el.addEventListener('click', removeVenmoPayment);\r\n });\r\n }));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Inits Venmo functionality\r\n * @param {Object} btVenmoModel Braintree Venmo model\r\n */\r\nfunction init(btVenmoModel) {\r\n const isVenmoButtonEnabledOnAccountPage = Boolean(document.querySelector('.js-braintree-account-venmo-button'));\r\n const isVenmoAccountBlockExists = Boolean(document.querySelector('.js-venmo-accounts'));\r\n const $braintreeVenmoLoader = document.getElementById('braintreeVenmoAccLoader');\r\n\r\n venmoLoader = loaderInstance($braintreeVenmoLoader);\r\n\r\n if (isVenmoButtonEnabledOnAccountPage || isVenmoAccountBlockExists) {\r\n // \"Make default\" button functionality initiation\r\n document.querySelectorAll('.js-venmo-accounts .js-braintree-make-default-card')\r\n .forEach((el) => el.addEventListener('click', makeDefaultVenmo));\r\n // \"Remove\" button functionality initiation\r\n document.querySelectorAll('.js-venmo-accounts .js-remove-bt-payment')\r\n .forEach((el) => el.addEventListener('click', removeVenmoPayment));\r\n }\r\n\r\n if (isVenmoButtonEnabledOnAccountPage) {\r\n const $addVenmoAccountButton = document.querySelector('.js-add-venmo-account');\r\n\r\n $addVenmoAccountButton.addEventListener('click', function() {\r\n const venmoButton = require('../components/venmoButton');\r\n // Hide venmo account error container\r\n\r\n alertHandler.hideAlerts();\r\n venmoHelper.showVenmoAccountBtn();\r\n\r\n if (!window.venmoAccountButtonInited) {\r\n window.venmoAccountButtonInited = true;\r\n\r\n venmoButton.init(btVenmoModel, $venmoButton);\r\n }\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n storeNewVenmoAccount\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Display shipping address as selected billing address option\r\n */\r\nfunction displayShippingAddressAsSelected() {\r\n const billingAddressSelector = document.getElementById('billingAddressSelector');\r\n\r\n if (billingAddressSelector) {\r\n const shipmentIndex = 2;\r\n const shippingAddressToSelect = billingAddressSelector.children[shipmentIndex];\r\n\r\n if (shippingAddressToSelect) {\r\n shippingAddressToSelect.selected = true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n displayShippingAddressAsSelected\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\n/**\r\n * General validation of params needed for initialization of Venmo button\r\n * @param {Object} braintreeVenmoConfig Braintree Venmo button configurations (they came from server via data attr)\r\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"messages\" attr\r\n */\r\nfunction generalVenmoValidation(braintreeVenmoConfig) {\r\n const response = {\r\n error: false,\r\n messages: ''\r\n };\r\n\r\n try {\r\n const isBraintreeVenmoConfigValid = typeof braintreeVenmoConfig !== 'object' || braintreeVenmoConfig !== null;\r\n\r\n if (!isBraintreeVenmoConfigValid) {\r\n response.error = true;\r\n response.messages = 'Venmo button has not valid data-braintree-config';\r\n }\r\n } catch (error) {\r\n response.error = true;\r\n response.messages = error;\r\n }\r\n\r\n return response;\r\n}\r\n\r\n/**\r\n * Init Venmo button functionality\r\n * @param {Object} btVenmoModel Braintree Venmo model\r\n * @param {Object} $venmoButton Venmo button element\r\n * @param {boolean} isBillingPage value to identify flow page\r\n */\r\nfunction init(btVenmoModel, $venmoButton, isBillingPage) {\r\n const braintreeVenmoConfig = helper.tryParseJSON($venmoButton.getAttribute('data-braintree-config'));\r\n const VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\r\n const alertHandler = new VenmoAlertHandlerModel();\r\n\r\n try {\r\n const generalValidation = generalVenmoValidation(braintreeVenmoConfig);\r\n\r\n if (generalValidation.error) {\r\n if (generalValidation.messages.length) {\r\n throw generalValidation.messages;\r\n }\r\n }\r\n\r\n // Fraud Data collecting\r\n // For more details go inside \"btVenmoModel.collectFraudData\" function logic\r\n btVenmoModel.collectFraudData()\r\n .then(function(fraudDataPayload) {\r\n const venmoHelper = require('../helpers/venmoHelper');\r\n\r\n venmoHelper.setVenmoDeviceData(fraudDataPayload.deviceData);\r\n\r\n return btVenmoModel.isBrowserSupported()\r\n .then(function(isBrowserSupported) {\r\n if (!isBrowserSupported) {\r\n alertHandler.handleNoBrowserSupportError(braintreeVenmoConfig);\r\n }\r\n\r\n return btVenmoModel.initVenmo($venmoButton, isBillingPage);\r\n });\r\n });\r\n\r\n // To prevent repeatable Venmo button initialization\r\n window.venmoCheckoutButtonInited = true;\r\n } catch (error) {\r\n alertHandler.showError(error);\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst loaderInstance = require('../../loaderHelper');\r\nconst venmoButton = require('./venmoButton');\r\nconst venmoList = require('./venmoList');\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\nconst venmoSessionAccount = require('./venmoSessionAccount');\r\nconst helper = require('../../helper');\r\n\r\nconst $braintreeVenmoNonce = document.getElementById('braintreeVenmoNonce');\r\nconst $braintreeVenmoUserId = document.getElementById('braintreeVenmoUserId');\r\nconst $sessionVenmoAccount = document.getElementById('sessionVenmoAccount');\r\nconst $newVenmoAccount = document.getElementById('newVenmoAccount');\r\nconst $venmoBillingInput = document.getElementById('braintreeVenmoBilling');\r\nconst $venmoContent = document.querySelector('.js-braintree-venmo-content');\r\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\r\nconst $venmoAccountContainer = document.querySelector('.js-braintree-used-venmo-account');\r\nconst $continueButton = document.querySelector('button.submit-payment');\r\nconst $submitShippingBtn = document.querySelector('.button, .submit-shipping');\r\n\r\nconst dataAttrIsValidStage = 'data-is-valid-stage';\r\n\r\nlet hashChange;\r\n\r\n/**\r\n * Process Venmo on the Billing/Checkout Page\r\n * @param {Object} data tokenized Venmo payload data\r\n */\r\nfunction processCheckoutFlow(data) {\r\n const $loaderContainer = venmoHelper.createLoaderContainter(document.querySelector('.page'));\r\n\r\n loaderInstance($loaderContainer).show();\r\n\r\n $braintreeVenmoNonce.value = data.nonce;\r\n $braintreeVenmoUserId.value = data.details.username;\r\n // In case when stage is correct we proceed with usual flow\r\n if (window.history.state !== 'shipping') {\r\n $continueButton.click();\r\n document.querySelector('.js-braintree-venmo-loader').remove();\r\n\r\n return;\r\n }\r\n\r\n // In case when Venmo has returned from Venmo app to NOT correct stage (for example, to shipping stage)\r\n // we redirect user to correct stage and set required data\r\n venmoHelper.updateBillingAddressFormValues(helper.tryParseJSON($venmoBillingInput.value));\r\n // Move to stage payment\r\n $submitShippingBtn.click();\r\n $venmoButton.setAttribute(dataAttrIsValidStage, true);\r\n document.querySelector('.js-braintree-venmo-loader').remove();\r\n}\r\n\r\n/**\r\n * Inits Venmo checkout components\r\n * @param {Object} btVenmoModel Braintree Venmo model\r\n */\r\nfunction init(btVenmoModel) {\r\n // MutationObserver is triggered on each URL change to avoid conflict between URL passed to Venmo application\r\n // and URL with already changed stage on storefront (checkout stage)\r\n // case when user is redirected from Venmo application\r\n hashChange = new MutationObserver(function(mutations) {\r\n let result = false;\r\n\r\n const mutation = mutations.find(function(element) {\r\n return element.attributeName === 'data-checkout-stage' && element.target.dataset.checkoutStage === 'payment';\r\n });\r\n\r\n if (!mutation) {\r\n return result;\r\n }\r\n\r\n if ($braintreeVenmoNonce.value && helper.tryParseJSON($venmoButton.getAttribute(dataAttrIsValidStage))) {\r\n $venmoButton.setAttribute(dataAttrIsValidStage, false);\r\n $continueButton.click();\r\n\r\n result = true;\r\n\r\n return result;\r\n }\r\n\r\n // Case when user has proceeded with Venmo session account and clicked on \"edit\" button\r\n if ($venmoContent.classList.contains('active') && mutation.oldValue === 'placeOrder') {\r\n // Show dropdown with used Venmo session account\r\n venmoSessionAccount.showVenmoAccount();\r\n\r\n if ($braintreeVenmoUserId && $braintreeVenmoUserId.value !== 'Venmo') {\r\n $venmoAccountContainer.classList.remove('used-venmo-account-hide');\r\n $venmoAccountContainer.classList.add('js-used-venmo-account');\r\n $sessionVenmoAccount.classList.remove('used-venmo-account-hide');\r\n $sessionVenmoAccount.classList.add('js-used-venmo-account');\r\n $sessionVenmoAccount.textContent = $braintreeVenmoUserId.value;\r\n $sessionVenmoAccount.selected = true;\r\n $newVenmoAccount.selected = false;\r\n }\r\n\r\n // Set attribute to show \"place order\" button\r\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\r\n // Hide Venmo button\r\n $venmoButton.setAttribute('data-is-hide-venmo-button', true);\r\n }\r\n\r\n return result;\r\n });\r\n\r\n hashChange.observe(document.getElementById('checkout-main'), { attributeOldValue: true });\r\n\r\n // Venmo button functionality is initiated once in case if it was not inited yet\r\n // based on existence of window.venmoCheckoutButtonInited (set while Venmo button initiation)\r\n if (!window.venmoCheckoutButtonInited) {\r\n venmoButton.init(btVenmoModel, $venmoButton, true);\r\n venmoList.init();\r\n }\r\n\r\n const sessionPaymentMethodId = helper.tryParseJSON($venmoContent.getAttribute('data-braintree-config')).sessionPaymentMethodId;\r\n // if exists Venmo session account - we make Venmo tab active on page reload\r\n\r\n if (sessionPaymentMethodId === 'Venmo') {\r\n document.querySelector('.venmo-tab').click();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init,\r\n processCheckoutFlow\r\n};\r\n","'use strict';\r\n\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\nconst helper = require('../../helper');\r\n\r\nconst $btVenmoAccountsList = document.getElementById('braintreeVenmoAccountsList');\r\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\r\n\r\n/**\r\n * Inits Venmo list functionality\r\n */\r\nfunction init() {\r\n // Attribute is set as \"true\" when user has saved Venmo account in wallet\r\n // or when user has proceeded with Venmo session account\r\n const isHideVenmoButtonAttribute = helper.tryParseJSON($venmoButton.getAttribute('data-is-hide-venmo-button'));\r\n // Case when we already have session account in disabled dropdown\r\n // and user returns to the Billing Page from Cart or other page (from not billing page/stages)\r\n // only in this case we need to hide Venmo button\r\n // in other cases button and dropdown behavior is handled by venmoContentTabHandler function\r\n // because disabled dropdown with session Venmo account and with saved Venmo and \"new account\" option are separated\r\n\r\n if (isHideVenmoButtonAttribute && $btVenmoAccountsList.value !== 'newaccount') {\r\n $venmoButton.style.display = 'none';\r\n }\r\n\r\n if ($btVenmoAccountsList) {\r\n $btVenmoAccountsList.addEventListener('change', function() {\r\n venmoHelper.venmoContentTabHandler();\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n init\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst venmoAccount = require('./venmoAccount');\r\nconst venmoCheckout = require('./venmoCheckout');\r\nconst venmoConstants = require('../constants/venmoConstants');\r\nconst venmoProcessingHelper = require('../helpers/venmoProcessingHelper');\r\n\r\n/**\r\n * Process Venmo flow for Account/Billing Page flows\r\n * @param {Object} venmoData Venmo data received from tokenize\r\n */\r\nfunction processVenmo(venmoData) {\r\n const $venmoButton = document.querySelector('.js-braintree-account-venmo-button, .js-braintree-venmo-button');\r\n\r\n if ($venmoButton && helper.tryParseJSON($venmoButton.getAttribute('data-braintree-config'))) {\r\n const VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\r\n const alertHandler = new VenmoAlertHandlerModel();\r\n\r\n alertHandler.hideAlerts();\r\n }\r\n\r\n const venmoFlowName = venmoProcessingHelper.getVenmoFlowName();\r\n\r\n switch (venmoFlowName) {\r\n case venmoConstants.FLOW_NAME_ACCOUNT:\r\n\r\n venmoAccount.storeNewVenmoAccount(venmoData);\r\n\r\n break;\r\n\r\n case venmoConstants.FLOW_NAME_BILLING_CHECKOUT:\r\n helper.removeActiveSessionPayment();\r\n venmoCheckout.processCheckoutFlow(venmoData);\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n processVenmo\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\nconst venmoHelper = require('../helpers/venmoHelper');\r\n\r\nconst $braintreeVenmoSessionAccount = document.getElementById('braintreeVenmoAccount');\r\nconst $braintreeVenmoUserId = document.getElementById('braintreeVenmoUserId');\r\nconst $venmoAccountBlock = document.querySelector('.js-braintree-used-venmo-account');\r\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\r\n\r\n/**\r\n * Handles showing Venmo session account\r\n */\r\nfunction showVenmoAccount() {\r\n const btVenmoAccountsList = document.getElementById('braintreeVenmoAccountsList');\r\n\r\n if (!btVenmoAccountsList) {\r\n $venmoAccountBlock.classList.remove('used-venmo-account-hide');\r\n $braintreeVenmoSessionAccount.options[0].text = $braintreeVenmoUserId.value;\r\n }\r\n\r\n $venmoButton.style.display = 'none';\r\n\r\n helper.continueButtonToggle(false);\r\n}\r\n\r\n/**\r\n * Removes method was used and change appearance of Venmo tab\r\n */\r\nfunction removeSessionNonce() {\r\n const defaultOption = helper.getOptionByDataDefault('#braintreeVenmoAccountsList');\r\n const braintreeVenmoNonce = document.getElementById('braintreeVenmoNonce');\r\n const braintreeVenmoBilling = document.getElementById('braintreeVenmoBilling');\r\n\r\n if (defaultOption) {\r\n defaultOption.selected = true;\r\n\r\n venmoHelper.venmoContentTabHandler();\r\n } else {\r\n $venmoAccountBlock.classList.remove('js-used-venmo-account');\r\n $venmoAccountBlock.classList.add('used-venmo-account-hide');\r\n $venmoButton.style.display = 'block';\r\n }\r\n\r\n braintreeVenmoNonce.value = '';\r\n braintreeVenmoBilling.value = '';\r\n}\r\n\r\nmodule.exports = {\r\n showVenmoAccount,\r\n removeSessionNonce\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n FLOW_NAME_ACCOUNT: 'account',\r\n FLOW_NAME_BILLING_CHECKOUT: 'billing'\r\n};\r\n","'use strict';\r\n\r\nconst helper = require('../../helper');\r\n\r\nconst $addVenmoAccountBtn = document.querySelector('.js-add-venmo-account');\r\nconst $venmoAccountWrapper = document.querySelector('.js-braintree-account-venmo-button-wrapper');\r\n\r\nconst btVenmoButtonClassName = '.js-braintree-venmo-button';\r\n\r\n/**\r\n * Returns Braintree Venmo configs\r\n * @returns {Object} Braintree Venmo configs\r\n */\r\nfunction getBraintreeVenmoButtonConfigs() {\r\n const $venmoButton = document.querySelector(`${btVenmoButtonClassName}, .js-braintree-account-venmo-button`);\r\n\r\n return helper.tryParseJSON($venmoButton.getAttribute('data-braintree-config'));\r\n}\r\n\r\n/**\r\n * Creates loader container on the Billing page\r\n * @param {Element} $target Venmo button target for which loader container is created\r\n * @returns {Element} created loader container element\r\n */\r\nfunction createLoaderContainter($target) {\r\n const $loaderContainter = document.createElement('div');\r\n\r\n $loaderContainter.classList.add('braintree-venmo-loader', 'js-braintree-venmo-loader');\r\n\r\n helper.continueButtonToggle(true);\r\n\r\n return $target.parentNode.insertBefore($loaderContainter, $target);\r\n}\r\n\r\n/**\r\n * Updates the billing address form values within saved billing\r\n * @param {Object} billingAddress billing address\r\n */\r\nfunction updateBillingAddressFormValues(billingAddress) {\r\n const form = document.querySelector('form[name=dwfrm_billing]');\r\n const inputNames = ['firstName', 'lastName', 'address1', 'address2', 'city', 'postalCode'];\r\n\r\n if (!form) {\r\n return;\r\n }\r\n\r\n inputNames.forEach((value) => {\r\n form.querySelector(`input[name$=_${value}]`).value = decodeURIComponent(billingAddress[value]);\r\n });\r\n\r\n // Process the billing address select elements (Country, State)\r\n ['select[name$=_stateCode]', 'input[name$=_stateCode]', 'select[name$=_country]', 'input[name$=_country]']\r\n .forEach((elemSelector) => {\r\n const $elem = form.querySelector(elemSelector);\r\n\r\n if ($elem) {\r\n $elem.value = elemSelector.includes('stateCode') ? billingAddress.stateCode : billingAddress.country;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Shows Venmo button on the Account Page and hides \"add new\" button\r\n */\r\nfunction showVenmoAccountBtn() {\r\n $addVenmoAccountBtn.classList.add('d-none');\r\n $venmoAccountWrapper.classList.remove('d-none');\r\n}\r\n\r\n/**\r\n * Hides Venmo button on the Account Page and shows \"add new\" button\r\n */\r\nfunction hideVenmoAccountBtn() {\r\n $addVenmoAccountBtn.classList.remove('d-none');\r\n $venmoAccountWrapper.classList.add('d-none');\r\n}\r\n\r\n/**\r\n * Saves Venmo device (risk) data to hidden input\r\n * @param {string} deviceData Venmo device (risk) data\r\n */\r\nfunction setVenmoDeviceData(deviceData) {\r\n const $braintreeVenmoDeviceData = document.getElementById('braintreeVenmoDeviceData');\r\n\r\n if ($braintreeVenmoDeviceData) {\r\n $braintreeVenmoDeviceData.value = deviceData;\r\n }\r\n}\r\n\r\n/**\r\n * Checks billing form on the Billing Page\r\n * If billing form is valid, saves/updates billing address to input\r\n * If not valid (possible case: empty email) - add error class to email input\r\n * @returns {boolean} billing form check result value\r\n */\r\nfunction checkBillingForm() {\r\n const $billingForm = document.querySelector('.card-body [id=dwfrm_billing]');\r\n const $venmoBillingInput = document.getElementById('braintreeVenmoBilling');\r\n\r\n if ($billingForm.checkValidity()) {\r\n /**\r\n * Setting current customer Billing address to form\r\n * For the case when SFCC redirects customer from payment stage to shipping stage\r\n * after successful Venmo app response\r\n */\r\n $venmoBillingInput.value = JSON.stringify(helper.getBillingAddressFormValues());\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Checks zero amount on the Billing Page\r\n * If amount is zero Venmo pop-up is closed and appropriate error is shown\r\n * If amount is acceptable by Venmo user could proceed through pop-up\r\n * @returns {boolean} zero amount check result value\r\n */\r\nfunction checkZeroAmount() {\r\n const $venmoButton = document.querySelector(btVenmoButtonClassName);\r\n const braintreeVenmoConfig = helper.tryParseJSON($venmoButton.getAttribute('data-braintree-config'));\r\n const amount = braintreeVenmoConfig.options.amount;\r\n\r\n if (amount === 0) {\r\n const VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\r\n const alertHandler = new VenmoAlertHandlerModel();\r\n\r\n alertHandler.showError(braintreeVenmoConfig.messages.VENMO_ZERO_AMOUNT_ERROR);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Handles all behavior related to the Venmo content tab\r\n */\r\nfunction venmoContentTabHandler() {\r\n const $btVenmoAccountsList = document.getElementById('braintreeVenmoAccountsList');\r\n const $saveVenmoAccountCheckboxContainer = document.getElementById('braintreeSaveVenmoAccountContainer');\r\n const $saveVenmoAccountCheckbox = document.getElementById('braintreeSaveVenmoAccount');\r\n const $venmoButton = document.querySelector(btVenmoButtonClassName);\r\n const $venmoContent = document.querySelector('.js-braintree-venmo-content');\r\n\r\n const venmoOptionId = $btVenmoAccountsList.value;\r\n\r\n if (venmoOptionId === 'newaccount') {\r\n // Case when option \"new account\" is selected in dropdown\r\n $venmoButton.style.display = 'block';\r\n\r\n helper.continueButtonToggle(true);\r\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', true);\r\n // Case when registered user and vaulting is enabled\r\n if ($saveVenmoAccountCheckboxContainer) {\r\n $saveVenmoAccountCheckbox.checked = true;\r\n $saveVenmoAccountCheckboxContainer.style.display = 'block';\r\n }\r\n } else {\r\n // Case when saved account is selected in dropdown\r\n $venmoButton.style.display = 'none';\r\n\r\n helper.continueButtonToggle(false);\r\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\r\n // Case when registered user and vaulting is enabled\r\n if ($saveVenmoAccountCheckboxContainer) {\r\n $saveVenmoAccountCheckbox.checked = false;\r\n $saveVenmoAccountCheckboxContainer.style.display = 'none';\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n getBraintreeVenmoButtonConfigs,\r\n createLoaderContainter,\r\n updateBillingAddressFormValues,\r\n showVenmoAccountBtn,\r\n hideVenmoAccountBtn,\r\n setVenmoDeviceData,\r\n checkBillingForm,\r\n checkZeroAmount,\r\n venmoContentTabHandler\r\n};\r\n","'use strict';\r\n\r\nconst venmoConstants = require('../constants/venmoConstants');\r\n\r\n/**\r\n * Gets Venmo flow name (corresponding page)\r\n * @returns {string} Flow ID (page) Account/Billing\r\n */\r\nfunction getVenmoFlowName() {\r\n const isVenmoEnabledOnAccountPage = Boolean(document.querySelector('.js-braintree-account-venmo-button'));\r\n const isVenmoEnabledOnBillingPage = Boolean(document.querySelector('.js-braintree-venmo-content'));\r\n\r\n let venmoFlowName;\r\n\r\n if (isVenmoEnabledOnAccountPage) {\r\n venmoFlowName = venmoConstants.FLOW_NAME_ACCOUNT;\r\n } else if (isVenmoEnabledOnBillingPage) {\r\n venmoFlowName = venmoConstants.FLOW_NAME_BILLING_CHECKOUT;\r\n }\r\n\r\n return venmoFlowName;\r\n}\r\n\r\nmodule.exports = {\r\n getVenmoFlowName\r\n};\r\n","'use strict';\r\n\r\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()\"\r\n// and on step of \"venmoCheckout.init()\".\r\nconst braintreeVenmoModelBuilder = require('./braintreesdk/braintreeVenmoModelBuilder');\r\n\r\n// components\r\nconst venmoAccount = require('./components/venmoAccount');\r\nconst venmoCheckout = require('./components/venmoCheckout');\r\n\r\nlet btVenmoModelResponse;\r\n\r\n/**\r\n * Inits Venmo functionality on the Account Page\r\n */\r\nfunction initAccount() {\r\n venmoAccount.init(btVenmoModelResponse.btVenmoModel);\r\n}\r\n\r\n/**\r\n * Inits Venmo functionality on the Billing Page\r\n */\r\nfunction initBillingCheckout() {\r\n venmoCheckout.init(btVenmoModelResponse.btVenmoModel);\r\n}\r\n\r\n/**\r\n * Inits braintreeVenmoModelBuilder on Venmo level\r\n */\r\nfunction init() {\r\n btVenmoModelResponse = braintreeVenmoModelBuilder.init();\r\n}\r\n\r\nmodule.exports = {\r\n initAccount,\r\n initBillingCheckout,\r\n init\r\n};\r\n","require('./braintree/braintreeSFRA')();\r\n"],"sourceRoot":""}