{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/scrollAnimate.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/applepayHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeApplepay.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeCreditCard.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeGooglepay.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeLocal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeMFRA.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreePaypal.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeUtils.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeVenmo.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditcardAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditcardFields.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditcardHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditcardPayment.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/googlepayAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/googlepayHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/googlepayPayment.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/localPayment.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/minicartHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/paypalAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/paypalHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/paypalPayment.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/venmoAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/venmoHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/venmoPayment.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js"],"names":["module","exports","element","position","length","offset","top","$","animate","scrollTop","focus","braintreeUtils","require","applePay","$applePayButton","document","querySelector","$applepayButtonsWrap","$applepayDataMethod","makeApplePayButtonDisabled","classList","add","hideApplePayButton","style","display","showApplePayButton","initApplepayButton","querySelectorAll","forEach","el","$btn","JSON","parse","getAttribute","config","console","error","addEventListener","isRequiredBillingContactFields","isRequiredShippingContactFields","applePayIns","init","startPayment","updateCartApplepayAmount","loader","show","ajax","url","getOrderInfoUrl","type","dataType","success","data","hide","updateAmount","amount","window","location","reload","on","e","postData","braintreeApplePayBillingAddress","stringify","detail","billingAddress","braintreeApplePayShippingAddress","shippingAddress","braintreeApplePayNonce","nonce","customFields","braintreeApplePayCustomFields","returnUrl","setAttribute","applepayPayment","continueButton","applepayButton","authorizedApplePayPayment","value","click","appleUpdateAmountData","loaderInstance","bu","Constructor","initParams","$errorContainer","createElement","className","$loaderContainter","parentNode","insertBefore","nextSibling","params","er","createErrorInstance","prototype","createApplePay","that","braintree","client","create","authorization","clientToken","clientErr","clientInstance","applePayInstance","createApplePaySession","paymentRequest","createPaymentRequest","total","label","options","displayName","requiredBillingContactFields","requiredShippingContactFields","session","ApplePaySession","onvalidatemerchant","event","performValidation","validationURL","eventError","merchantSession","abort","completeMerchantValidation","onpaymentauthorized","tokenize","token","payment","payload","completePayment","STATUS_FAILURE","STATUS_SUCCESS","shippingContact","streetAddress","addressLines","extendedAddress","locality","region","administrativeArea","toUpperCase","postalCode","countryCodeAlpha2","countryCode","firstName","givenName","lastName","familyName","phone","phoneNumber","email","emailAddress","billingContact","dispatchEvent","CustomEvent","begin","promise","canMakePaymentsWithActiveCard","merchantIdentifier","then","ins","extend","messages","creditcardHelper","createHostedFields","isFraudToolsEnabled","dataCollector","kount","paypal","deviceData","hostedFields","styles","hostedFieldsStyles","fields","hostedFieldsConfig","hostedFieldsInstance","isFormValid","$cardOwnerEl","validation","remove","check3dSecureAndSubmit","response","startTokenizeCb","errorCode","is3dSecureEnabled","billingData","serialize","split","map","reduce","accumulator","item","elem","lastIndexOf","substring","threeDSecure","version","btError","verifyCard","bin","details","surname","address1","address2","city","stateCode","country","additionalInformation","shippingAdditionalInfo","onLookupComplete","next","err","liabilityShifted","isSkip3dSecureLiabilityResult","result","secure3DFailed","startTokenize","cb","convertCardTypeToDwFormat","cardType","lastFour","initFields","$container","creditcardErrorContainer","cardOwnerEvents","getHostedFieldsStyles","input","color","getHostedFieldsConfig","number","selector","cvv","expirationDate","hostedFieldsAdvancedOptions","getHostedFieldInstance","updateData","createGooglepay","paymentsClient","google","payments","api","PaymentsClient","environment","googlePayment","googlePayVersion","googlePaymentErr","googlePaymentInstance","allowedPaymentMethods","createPaymentDataRequest","isReadyToPay","apiVersion","apiVersionMinor","onGooglePaymentButtonClicked","paymentDataRequest","transactionInfo","currencyCode","currency","totalPriceStatus","totalPrice","String","shippingAddressRequired","isShippingAddressRequired","shippingAddressParameters","allowedCountryCodes","phoneNumberRequired","emailRequired","cardPaymentMethod","parameters","billingAddressRequired","billingAddressParameters","format","loadPaymentData","paymentData","parseResponse","onTokenizePayment","catch","log","button","createButton","onClick","appendChild","$gpButton","width","isEmailValid","scrollAnimate","errorText","createLocalPayment","localPayment","localPaymentInstance","createLocalPaymentClickListener","emailField","preventDefault","getJSON","reqData","Object","assign","createRequestData","onPaymentStart","_","start","processingMsg","finalProcessingMsg","paymentConfirmUrl","contentType","lpmName","redirectUrl","href","responseText","text","paymentMethod","dataset","localPaymentMethodName","shippingData","recipientName","paymentType","fallback","fallbackUrl","buttonText","address","updateShippingData","localIns","updateShippingAddress","helper","applepayHelper","creditcardPayment","creditCardFields","creditCardAccount","minicartHelper","paypalAccount","paypalPayment","local","orderStage","getElementById","$form","$cartPage","$continueButton","$summaryDetails","$addCreditCardForm","$addPaypalAccountForm","$paypalContent","$creditCardContent","$applepayContent","$braintreePaypalNonce","$minicartPopover","$creditCardList","venmoAccount","venmoPayment","$addVenmoAccountForm","$venmoContent","googlePayAccount","googlepayPayment","$googlepayContent","$googlepayOnCart","$addGooglePayAccountForm","NodeList","Array","bubbles","cancelable","undefined","evt","createEvent","initCustomEvent","Event","initWathcherCartUpdate","initAccountAddCreditCard","initAddPaypalAccount","initAddVenmoAccount","initAddGooglePayAccount","miniCartButton","changeUrlForMiniCartBtn","observer","observe","childList","paymentMethodChangeHandle","makePaypalPayment","initCreditCardFields","initCardListAndSaveFunctionality","doNotAllowSubmitForm","continueButtonToggle","setTimeout","hide3DSecureContainer","isTrusted","makeCreditCardPayment","makeVenmoPayment","makeGooglepayPayment","target","cardList","paypalList","changeEvent","hash","initEvent","updateCheckoutView","updatePaymentMethodTab","paypalHelper","pid","uuid","removeFromCartUrl","$price","isZeroAmount","$braintreePDPButton","$miniCartQuantity","$addToCartButton","$paypalCartButton","$paypalBillingButton","$braintreePaypalRiskDataInput","$loaderContainer","riskData","parseInt","textContent","paypalCheckout","paypalCheckoutInstance","hidePDPButton","showPDPButton","disabled","res","pdpOnlickForAsignedPaypalPayment","cart","pliUUID","actionUrls","removeProductLineItemUrl","parseFloat","totals","grandTotal","replace","Error","message","createPayment","paypalButtonConfig","locale","onApprove","intent","tokenizePayment","onCancel","a","b","urlParams","appendToUrl","spinner","stop","onError","productID","zeroAmountErrorMsg","actions","showCartErrorMsg","showCheckoutErrorMsg","reject","flow","createOrder","createBillingAgreement","paypalConfig","Buttons","render","shippingAddressOverride","isDebugMode","consoleLog","consoleError","apply","arguments","$bundleItem","getOptions","$productContainer","find","$elOption","urlValue","val","selectedValueId","optionId","toArray","closest","form","quantity","items","childProducts","method","async","responseJSON","getSelectedData","selectEl","getElementsByTagName","option","i","selected","attributes","uri","resolve","key","hasOwnProperty","call","hf","body","submit","errorInstances","containerElement","callback","push","containerEl","msg","code","innerHTML","$braintreeVenmoRiskDataInput","createVenmo","isBrowserSupported","dataCollectorErr","dataCollectorInstance","venmo","allowNewBrowserTab","ignoreHistoryChanges","venmoErr","venmoInstance","deviceNotSupportVenmo","venmoAccountPage","processResultsDelay","tokenizeErr","handleVenmoError","handleVenmoSuccess","localStorage","setItem","creditCard","submitCreditCardForm","addCreditCardForm","attr","getShippingAdditionalInfo","orderAddress","workPhoneNumber","shippingGivenName","slice","join","shippingSurname","shippingPhone","line1","line2","state","$creditCardMakeDefault","$saveCreditCard","$cardOwner","errorIns","errorData","invalidFieldKeys","braintreeType","cardOwnerUpdateClasses","cardListChange","$cardOwnerPh","$cardNumbeber","$cardNumbeberPh","$cardCvv","$cardCvvPh","$cardExpiration","$cardExpirationPh","$braintreeSaveCardContainer","$creditCardFieldsContainer","$braintree3DSecureContainer","$saveCardAndDefaultContainer","changeCardOwnerInput","checked","selectedCard","makeCardDefault","allowSubmitForm","isActiveCreditCardTab","contains","isPaypalNonceExist","hasPaypalNonce","$paypalTab","isActivePaypalTab","customerAuthenticated","braintreePaypalAccount","$braintreePaypalAccountsList","$paypalButton","$formIndent","paypalAccountList","post","id","responce","stopPropagation","googlepay","googlepayHelper","submitAddGooglePayAccountForm","$btFormErrorContainer","done","fail","$googlepayNonce","$btGooglePayLoader","$buttonSave","$braintreeGooglePayBillingAddress","googlepayIns","saving_paypal_account_error","filter","removeAttribute","createGooglepayBillingAddressData","$btGooglepayAccountsList","$googlepayButton","$braintreeGooglepayAccount","$googlepayAccount","showGooglepayAccount","hideShowButtons","paymentMethodData","info","name","createGooglepayShippingAddressData","$googlepayCardDescription","$braintreeGooglepayBillingAddressInput","$braintreeGooglepayShippingAddressInput","$braintreeGooglepayPaymentType","selectedOptions","billingAddressData","shippingAddressData","returnFromCartUrl","paymentCardDescription","saveGpAccount","googlepayUpdateAmount","$grantTotal","currentGrantTotalValue","newGrantTotalValue","updateCartTotals","flag","stage","currentTab","$tabContent","tab","getPaymentMethodToLowerCase","paymentMethodName","index","charAt","toLocaleLowerCase","$paymentSummary","htmlToAppend","order","billing","selectedPaymentInstruments","creditCardNumber","gpCardDescription","gpCardDescriptionData","priceTotal","checkValidity","braintreePaymentMethod","content","toLowerCase","children","braintreeLocal","$lpmButton","payPal","$paypalMinicartButton","billingAgreementFlow","billingAgreementFlowConfig","isShippingAddressExist","startBillingAgreementCheckoutUrl","layout","maxbuttons","fundingicons","shape","size","tagline","onInit","disable","appendShippingAddressModal","btnInstance","braintreePaypalNonce","createBillingAddressData","braintreePaypalBillingAddress","createShippingAddressData","braintreePaypalShippingAddress","braintreeSavePaypalAccount","offerCredit","braintreeIsPaypalCredit","braintreePaypalCustomFields","paypalHandle","paypalIns","updateCartPaypalAmount","$totalPrice","$hideModalBtn","$saveAddressBtn","$addressForm","hideModal","modal","showFormErrorMsg","clearFormErrors","submitAddressFrom","MutationObserver","mutations","mutation","addedNodes","$minicart","oldUrl","newUrl","submitAddPaypalAccountForm","$braintreeFormErrorContainer","hasChildNodes","$braintreePaypalEmail","$braintreePaypalBillingAddress","showAddedPayPalAccount","$savePayPalAccountBtn","setCustomValidity","validity","valid","validationMessage","stopImmediatePropagation","formValidationConrol","validateActions","enable","initAccountListAndSaveFunctionality","$accountsList","$savePaypalAccountCountainerEl","$savePaypalAccountEl","$paypalAccounMakeDefaultEl","accountsListChange","selectedAccount","inpShippingAddress","inpBillingAddress","param","indexOf","keys","encodeURIComponent","showPayPalAccount","braintreePaypalEmail","addClass","append","scrollTo","$braintreePaypalBillingAddressInput","$braintreePaypalShippingAddressInput","$braintreePaypalNonceInput","isOverrideBillingAddress","validate","isShippedAndAddressOverride","updateAmountAndShippingData","$paypalAddress","newPayPalAddress","braintreeVenmo","submitAddVenmoAccountForm","$btVenmoLoader","VENMO_BROWSER_NOT_SUPPORTED","username","$saveVenmoAccountCountainerEl","$saveVenmoAccountEl","$venmoAccounMakeDefaultEl","$venmoButton","$braintreeVenmoAccount","$venmoAccount","$braintreeVenmoUserId","showVenmoAccount","createLoaderContainter","$target","hideVenmoButton","parentElement","firstElementChild","venmoHelper","$btVermoAccountsList","$braintreeVenmoNonce","$submitShippingBtn","$contactEmail","$hideVenmoButton","$billingForm","getItem","removeItem","history","hashChange","correlationId","attributeName","checkoutStage","oldValue","attributeOldValue"],"mappings":"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","file":"int_braintree.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js\");\n","'use strict';\n\nmodule.exports = function (element) {\n var position = element && element.length ? element.offset().top : 0;\n $('html, body').animate({\n scrollTop: position\n }, 500);\n if (!element) {\n $('.logo-home').focus();\n }\n};\n","'use strict';\nvar braintreeUtils = require('../braintreeUtils');\nvar applePay = require('../braintreeApplepay');\n\nvar $applePayButton = document.querySelector('.js_braintree_applepay_button');\nvar $applepayButtonsWrap = document.querySelector('.js_braintree_applepayButtonsWrap');\nvar $applepayDataMethod = document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"ApplePay\"]');\n\nfunction makeApplePayButtonDisabled() {\n $applePayButton.classList.add('js_braintree_applepay_button_disabled');\n}\n\nfunction hideApplePayButton() {\n $applepayButtonsWrap.style.display = 'none'; // Remove the ApplePay select payment method radiobutton\n if ($applepayDataMethod) {\n $applepayDataMethod.style.display = 'none';\n }\n}\n\nfunction showApplePayButton() {\n $applepayButtonsWrap.style.display = 'block'; // Show the ApplePay select payment method radiobutton\n if ($applepayDataMethod) {\n $applepayDataMethod.style.display = 'block';\n }\n}\n\nfunction initApplepayButton() {\n document.querySelectorAll('.js_braintree_applepay_button').forEach(function (el) {\n var $btn = el;\n if (JSON.parse($btn.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error(el, 'not valid data-braintree-config');\n return;\n }\n\n $btn.addEventListener('braintree:deviceNotSupportApplePay', function () {\n hideApplePayButton();\n }, false);\n $btn.addEventListener('braintree:deviceSupportApplePay', function () {\n showApplePayButton();\n }, false);\n $btn.addEventListener('braintree:ApplePayCanNotMakePaymentWithActiveCard', function () {\n makeApplePayButtonDisabled();\n }, false);\n\n config.isRequiredBillingContactFields = true;\n config.isRequiredShippingContactFields = true;\n var applePayIns = applePay.init(config, $btn);\n\n $btn.addEventListener('click', function () {\n applePayIns.startPayment();\n });\n\n function updateCartApplepayAmount() {\n if (!applePayIns) {\n return;\n }\n applePayIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n applePayIns.loader.hide();\n applePayIns.updateAmount(data.amount);\n },\n error: function () {\n window.location.reload();\n }\n });\n return;\n }\n $('body').on('braintree:updateCartTotals', updateCartApplepayAmount);\n\n $btn.addEventListener('braintree:ApplePayPaymentAuthorized', function (e) {\n var postData = {\n braintreeApplePayBillingAddress: JSON.stringify(e.detail.data.billingAddress),\n braintreeApplePayShippingAddress: JSON.stringify(e.detail.data.shippingAddress),\n braintreeApplePayNonce: e.detail.data.nonce\n };\n if (config.customFields) {\n postData.braintreeApplePayCustomFields = JSON.stringify(config.customFields);\n }\n applePayIns.loader.show();\n braintreeUtils.postData(config.returnUrl, postData);\n }, false);\n\n $btn.setAttribute('data-is-inited', true);\n });\n}\n\nfunction applepayPayment(continueButton) {\n var config = JSON.parse($applePayButton.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error($applePayButton, 'not valid data-braintree-config');\n }\n var applepayButton = $('.js_braintree_applepay_button');\n applepayButton.on('braintree:deviceNotSupportApplePay', function () {\n hideApplePayButton();\n });\n applepayButton.on('braintree:deviceSupportApplePay', function () {\n showApplePayButton();\n });\n applepayButton.on('braintree:ApplePayCanNotMakePaymentWithActiveCard', function () {\n makeApplePayButtonDisabled();\n });\n\n var applePayIns = applePay.init(config, $applePayButton);\n\n function authorizedApplePayPayment(e, data) {\n document.querySelector(('#braintreeApplePayNonce')).value = data.nonce;\n if (config.customFields) {\n document.querySelector('#braintreeApplePayCustomFields').value = JSON.stringify(config.customFields);\n }\n continueButton.click();\n applePayIns.loader.show();\n }\n\n if (!applePayIns) return;\n $applePayButton.addEventListener('click', function () {\n applePayIns.startPayment();\n });\n\n applepayButton.on('braintree:ApplePayPaymentAuthorized', authorizedApplePayPayment);\n\n function appleUpdateAmountData() { // eslint-disable-line no-inner-declarations\n applePayIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n applePayIns.loader.hide();\n applePayIns.updateAmount(data.amount);\n },\n error: function () {\n window.location.reload();\n }\n });\n }\n $('body').on('checkout:updateCheckoutView', appleUpdateAmountData);\n appleUpdateAmountData();\n}\n\nmodule.exports = {\n initApplepayButton,\n applepayPayment\n};\n","'use strict';\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\n/* global braintreeUtils braintree $ ApplePaySession */\n\nvar bu = braintreeUtils;\nvar loader;\n\nfunction Constructor(initParams, $btn) {\n this.$btn = $btn;\n var $errorContainer = document.createElement('div');\n $errorContainer.className = 'error';\n var $loaderContainter = document.querySelector('.braintreeApplePayLoader');\n loader = loaderInstance($loaderContainter);\n this.loader = loader;\n $btn.parentNode.insertBefore($errorContainer, $btn.nextSibling);\n this.params = initParams;\n this.er = bu.createErrorInstance($errorContainer);\n}\n\nConstructor.prototype.createApplePay = function () {\n var that = this;\n var params = that.params;\n loader.show();\n\n braintree.client.create({\n authorization: bu.clientToken\n }, function (clientErr, clientInstance) {\n if (clientErr) {\n that.er.show(clientErr);\n return;\n }\n\n braintree.applePay.create({\n client: clientInstance\n }, function (error, applePayInstance) {\n loader.hide();\n if (error) {\n that.er.show(error);\n return;\n }\n that.createApplePaySession = function () {\n var paymentRequest = applePayInstance.createPaymentRequest({\n total: {\n label: params.options.displayName,\n amount: params.options.amount\n }\n });\n if (params.isRequiredBillingContactFields) {\n paymentRequest.requiredBillingContactFields = ['postalAddress', 'name'];\n }\n if (params.isRequiredShippingContactFields) {\n paymentRequest.requiredShippingContactFields = ['postalAddress', 'name', 'phone', 'email'];\n }\n\n var session = new ApplePaySession(1, paymentRequest);\n\n session.onvalidatemerchant = function (event) {\n loader.show();\n applePayInstance.performValidation({\n validationURL: event.validationURL,\n displayName: params.options.displayName\n }, function (eventError, merchantSession) {\n loader.hide();\n if (eventError) {\n that.er.show(eventError);\n session.abort();\n return;\n }\n session.completeMerchantValidation(merchantSession);\n });\n };\n session.onpaymentauthorized = function (event) {\n loader.show();\n applePayInstance.tokenize({\n token: event.payment.token\n }, function (eventError, payload) {\n loader.hide();\n if (eventError) {\n that.er.show(eventError);\n session.completePayment(ApplePaySession.STATUS_FAILURE);\n return;\n }\n\n session.completePayment(ApplePaySession.STATUS_SUCCESS);\n\n var data = {\n event: event,\n payload: payload,\n nonce: payload.nonce\n };\n var shippingContact = event.payment.shippingContact;\n if (shippingContact) {\n data.shippingAddress = {\n streetAddress: shippingContact.addressLines[0],\n extendedAddress: shippingContact.addressLines[1],\n locality: shippingContact.locality,\n region: shippingContact.administrativeArea.toUpperCase(),\n postalCode: shippingContact.postalCode,\n countryCodeAlpha2: shippingContact.countryCode.toUpperCase(),\n firstName: shippingContact.givenName,\n lastName: shippingContact.familyName,\n phone: shippingContact.phoneNumber,\n email: shippingContact.emailAddress\n };\n }\n var billingContact = event.payment.billingContact;\n if (billingContact) {\n data.billingAddress = {\n streetAddress: billingContact.addressLines[0],\n extendedAddress: billingContact.addressLines[1],\n locality: billingContact.locality,\n region: billingContact.administrativeArea.toUpperCase(),\n postalCode: billingContact.postalCode,\n countryCodeAlpha2: billingContact.countryCode.toUpperCase(),\n firstName: billingContact.givenName,\n lastName: billingContact.familyName,\n email: shippingContact.emailAddress,\n phone: shippingContact.phoneNumber\n };\n }\n\n that.$btn.dispatchEvent(new CustomEvent('braintree:ApplePayPaymentAuthorized', {\n detail: {\n data: data\n }\n }));\n });\n };\n session.begin();\n };\n var promise = ApplePaySession.canMakePaymentsWithActiveCard(applePayInstance.merchantIdentifier);\n promise.then(function (canMakePaymentsWithActiveCard) {\n if (!canMakePaymentsWithActiveCard) {\n that.$btn.dispatchEvent(new CustomEvent('braintree:ApplePayCanNotMakePaymentWithActiveCard'));\n that.createApplePaySession = null;\n return;\n }\n });\n });\n });\n};\n\nConstructor.prototype.startPayment = function () {\n this.er.hide();\n if (this.createApplePaySession) {\n this.createApplePaySession();\n }\n};\n\nConstructor.prototype.updateAmount = function (amount) {\n this.params.options.amount = amount;\n};\n\nmodule.exports = {\n init: function (params, $btn) {\n if (!window.ApplePaySession) {\n $btn.dispatchEvent(new CustomEvent('braintree:deviceNotSupportApplePay'));\n return false;\n }\n $btn.dispatchEvent(new CustomEvent('braintree:deviceSupportApplePay'));\n var ins = new Constructor(params, $btn);\n bu.clientToken = params.clientToken;\n $.extend(bu.messages, params.messages);\n ins.createApplePay();\n return ins;\n }\n};\n\n","/* eslint-disable block-scoped-var */\n'use strict';\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\nvar creditcardHelper = require('./creditcard/creditcardHelper');\n\n/* global braintreeUtils braintree $ */\n\nvar bu = braintreeUtils;\nvar er = null;\nvar loader;\nvar params;\n\nfunction createHostedFields() {\n if (params.isFraudToolsEnabled) {\n loader.show();\n braintree.dataCollector.create({\n authorization: bu.clientToken,\n kount: true,\n paypal: false\n }, function (error, data) {\n loader.hide();\n if (error) {\n return;\n }\n document.querySelector('#braintreeDeviceData').value = data.deviceData;\n });\n }\n loader.show();\n\n braintree.hostedFields.create({\n authorization: bu.clientToken,\n styles: params.hostedFieldsStyles,\n fields: params.hostedFieldsConfig\n }, function (error, hostedFieldsInstance) {\n loader.hide();\n if (error) {\n er.show(error);\n return;\n }\n params.hostedFieldsInstance = hostedFieldsInstance;\n hostedFieldsInstance.on('validityChange', function () {\n if (params.continueButton && JSON.parse(params.continueButton.getAttribute('data-is-allow-submit-form'))) {\n params.continueButton.setAttribute('data-is-allow-submit-form', false);\n }\n });\n });\n}\n\nfunction isFormValid() {\n var $cardOwnerEl = document.querySelector('#braintreeCardOwner');\n if ($cardOwnerEl.value.length === 0) {\n $cardOwnerEl.parentNode.classList.add('braintree-hosted-fields-invalid');\n er.show(params.messages.validation);\n return false;\n }\n $cardOwnerEl.parentNode.classList.remove('braintree-hosted-fields-invalid');\n er.hide();\n\n return true;\n}\n\nfunction check3dSecureAndSubmit(response, startTokenizeCb) {\n if (!response.nonce || response.nonce === 'null') {\n document.querySelector('#braintreePaymentMethodNonce').value = 'null';\n startTokenizeCb({\n error: true,\n errorCode: 'nonce_is_null'\n });\n return;\n }\n if (!params.is3dSecureEnabled) {\n document.querySelector('#braintreePaymentMethodNonce').value = response.nonce;\n startTokenizeCb({\n error: false,\n errorCode: 'ok'\n });\n return;\n }\n\n loader.show();\n\n var billingData = $('#dwfrm_billing').serialize().split('&')\n .map(function (el) {\n return el.split('=');\n })\n .reduce(function (accumulator, item) {\n var elem = item[0].lastIndexOf('_');\n if (elem < 0) {\n accumulator[item[0]] = item[1];\n } else {\n elem = item[0].substring(elem + 1);\n accumulator[elem] = item[1];\n }\n return accumulator;\n }, {});\n\n braintree.threeDSecure.create({\n authorization: bu.clientToken,\n version: 2\n }, function (error, threeDSecure) {\n loader.hide();\n if (error) {\n er.show(error);\n startTokenizeCb({\n error: true,\n errorCode: 'bt_3dsecure_create_error',\n btError: error\n });\n return;\n }\n bu.threeDSecure = threeDSecure;\n loader.show();\n threeDSecure.verifyCard({\n amount: params.data.amount,\n nonce: response.nonce,\n bin: response.details ? response.details.bin : '',\n email: document.querySelector('#email').value,\n billingAddress: {\n givenName: billingData.firstName,\n surname: billingData.lastName,\n phoneNumber: billingData.phone,\n streetAddress: billingData.address1,\n extendedAddress: billingData.address2,\n locality: billingData.city,\n region: billingData.stateCode,\n postalCode: billingData.postalCode,\n countryCodeAlpha2: billingData.country\n },\n additionalInformation: params.data.shippingAdditionalInfo,\n onLookupComplete: function (data, next) {\n next();\n }\n }, function (err, data) {\n loader.hide();\n if (err) {\n er.show(err);\n startTokenizeCb({\n error: true,\n errorCode: 'bt_3dsecure_verify_error',\n btError: err\n });\n return;\n }\n if (data.liabilityShifted || params.isSkip3dSecureLiabilityResult) {\n document.querySelector('#braintreeIs3dSecureRequired').value = 'true';\n document.querySelector('#braintreePaymentMethodNonce').value = data.nonce;\n startTokenizeCb({\n error: false,\n result: 'ok'\n });\n return;\n }\n er.show(params.messages.secure3DFailed);\n startTokenizeCb({\n error: true,\n result: 'secure3DFailed'\n });\n return;\n });\n });\n}\n\nfunction startTokenize(cb, response) {\n if (response && response.nonce) {\n check3dSecureAndSubmit(response, cb);\n return;\n }\n if (!isFormValid()) {\n cb({\n error: true,\n errorCode: 'fields_not_valid'\n });\n return;\n }\n loader.show();\n params.hostedFieldsInstance.tokenize(function (error, data) {\n loader.hide();\n if (error) {\n er.show(error);\n cb({\n error: true,\n errorCode: 'bt_tokenize_error',\n btError: error\n });\n return;\n }\n if (data.type === 'CreditCard') {\n document.querySelector('#braintreeCardType').value = creditcardHelper.convertCardTypeToDwFormat(data.details.cardType);\n document.querySelector('#braintreeCardMaskNumber').value = '************' + data.details.lastFour;\n }\n check3dSecureAndSubmit(data, cb);\n });\n}\n\nfunction init(initParams) {\n params = initParams;\n bu.clientToken = params.clientToken;\n}\n\nfunction initFields(initParams, $container) {\n params = initParams;\n params.$container = $container;\n\n er = bu.createErrorInstance(document.querySelector('#braintreeCreditCardErrorContainer'), creditcardHelper.creditcardErrorContainer);\n loader = loaderInstance(document.querySelector('#braintreeCreditCardLoader'));\n bu.clientToken = params.clientToken;\n $.extend(bu.messages, params.messages);\n\n creditcardHelper.cardOwnerEvents();\n\n function getHostedFieldsStyles() {\n return {\n input: {\n 'font-size': '12px',\n color: '#b7802a'\n },\n ':focus': {\n color: 'blue'\n },\n '.valid': {\n color: 'green'\n },\n '.invalid': {\n color: 'red'\n }\n };\n }\n\n function getHostedFieldsConfig() {\n return {\n number: {\n selector: '#braintreeCardNumber'\n },\n cvv: {\n selector: '#braintreeCvv'\n },\n expirationDate: {\n selector: '#braintreeExpirationDate'\n }\n };\n }\n\n if (!params.hostedFieldsStyles) {\n params.hostedFieldsStyles = getHostedFieldsStyles();\n }\n\n params.hostedFieldsConfig = getHostedFieldsConfig();\n\n $.extend(params.hostedFieldsConfig, params.hostedFieldsAdvancedOptions);\n\n createHostedFields();\n}\n\nmodule.exports = {\n init,\n initFields,\n startTokenize,\n isFormValid,\n getHostedFieldInstance: function () {\n return params ? params.hostedFieldsInstance : null;\n },\n updateData: function (data) {\n params.data = data;\n }\n};\n","'use strict';\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\n/* global braintreeUtils braintree $ Googlepay */\n\nvar bu = braintreeUtils;\nvar loader;\n\nfunction Constructor(initParams, $btn) {\n this.$btn = $btn;\n var $errorContainer = document.createElement('div');\n $errorContainer.className = 'error';\n var $loaderContainter = document.querySelector('.braintreeGooglepayLoader');\n loader = loaderInstance($loaderContainter);\n this.loader = loader;\n $btn.parentNode.insertBefore($errorContainer, $btn.nextSibling);\n this.params = initParams;\n this.er = bu.createErrorInstance($errorContainer);\n}\n\nConstructor.prototype.createGooglepay = function () {\n var that = this;\n var params = that.params;\n\n var paymentsClient = new google.payments.api.PaymentsClient({ // eslint-disable-line no-undef\n environment: 'TEST' // Or 'PRODUCTION'\n });\n\n braintree.client.create({\n authorization: params.clientToken\n }, function (clientErr, clientInstance) {\n if (clientErr) {\n that.er.show(clientErr);\n return;\n }\n braintree.googlePayment.create({\n client: clientInstance,\n googlePayVersion: 2\n }, function (googlePaymentErr, googlePaymentInstance) {\n if (googlePaymentErr) {\n that.er.show(googlePaymentErr);\n return;\n }\n var allowedPaymentMethods = googlePaymentInstance.createPaymentDataRequest().allowedPaymentMethods;\n paymentsClient.isReadyToPay({\n // see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: allowedPaymentMethods\n }).then(function (response) {\n if (response.result) {\n function onGooglePaymentButtonClicked() { // eslint-disable-line no-inner-declarations\n loader.show();\n var paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({\n transactionInfo: {\n currencyCode: params.options.currency,\n totalPriceStatus: 'FINAL',\n totalPrice: String(params.options.amount)\n },\n shippingAddressRequired: params.options.isShippingAddressRequired,\n shippingAddressParameters: {\n allowedCountryCodes: ['US'],\n phoneNumberRequired: true\n },\n emailRequired: true\n });\n var cardPaymentMethod = paymentDataRequest.allowedPaymentMethods[0];\n cardPaymentMethod.parameters.billingAddressRequired = true;\n cardPaymentMethod.parameters.billingAddressParameters = {\n format: 'FULL',\n phoneNumberRequired: true\n };\n paymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {\n googlePaymentInstance.parseResponse(paymentData, function (err, result) {\n if (err) {\n loader.hide();\n // Handle parsing error\n }\n params.onTokenizePayment(paymentData, result);\n });\n loader.hide();\n }).catch(function (err) {\n loader.hide();\n console.log(err);\n });\n }\n const button = paymentsClient.createButton({ onClick: onGooglePaymentButtonClicked });\n that.$btn.appendChild(button);\n // temporary style for cart button\n var $gpButton = document.querySelector('.gpay-button');\n if ($gpButton && document.querySelector('.braintree-cart-google-button')) {\n $gpButton.style.width = '100%';\n }\n loader.hide();\n }\n }).catch(function (err) {\n loader.hide();\n console.log(err);\n });\n });\n // Set up other Braintree components\n });\n};\n\nConstructor.prototype.updateAmount = function (amount) {\n this.params.options.amount = amount;\n};\n\nmodule.exports = {\n init: function (params, $btn) {\n bu.clientToken = params.clientToken;\n return new Constructor(params, $btn);\n }\n};\n","/* eslint-disable no-use-before-define */\n'use strict';\n\n/* global braintreeUtils braintree $ VenmoSession */\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\nvar { isEmailValid } = require('./helper');\nvar scrollAnimate = require('../../../../../../app_storefront_base/cartridge/client/default/js/components/scrollAnimate');\nconst errorText = 'An error occurred. Please try again later or choose different payment method.';\n\nvar bu = braintreeUtils;\nvar loader;\n\nfunction Constructor(initParams, $btn) {\n this.$btn = $btn;\n var $errorContainer = document.createElement('div');\n $errorContainer.className = 'lpm-error';\n var $loaderContainter = document.querySelector('.lpmLoader');\n loader = loaderInstance($loaderContainter);\n this.loader = loader;\n $btn.parentNode.insertBefore($errorContainer, $btn.nextSibling);\n this.params = initParams;\n this.er = bu.createErrorInstance($errorContainer);\n}\n\nConstructor.prototype.createLocalPayment = function () {\n var that = this;\n var params = that.params;\n // Create a client.\n braintree.client.create({\n authorization: params.clientToken\n }).then(function (clientInstance) {\n // Create a local payment component.\n return braintree.localPayment.create({\n client: clientInstance\n });\n }).then(function (localPaymentInstance) {\n function createLocalPaymentClickListener(type) {\n var emailField = document.querySelector('#email');\n return function (event) {\n event.preventDefault();\n if (emailField && emailField.value !== '' && !isEmailValid(emailField)) {\n that.loader.hide();\n return;\n }\n\n that.loader.show();\n document.querySelector('.processingMsg').style.display = 'block';\n $.getJSON(that.params.getOrderInfoUrl)\n .then(({ shippingAddress }) => {\n const reqData = Object.assign(createRequestData(\n shippingAddress, that.params, type),\n { onPaymentStart: (_, start) => start() });\n localPaymentInstance.startPayment(reqData).then(({ nonce, details }) => {\n var processingMsg = document.querySelector('.processingMsg');\n var finalProcessingMsg = document.querySelector('.finalProcessingMsg');\n processingMsg.style.display = 'none';\n finalProcessingMsg.style.display = 'block';\n return $.ajax({\n url: params.paymentConfirmUrl,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n nonce: nonce,\n lpmName: type,\n details: details\n })\n });\n }).then(({ redirectUrl }) => {\n that.loader.hide();\n window.location.href = redirectUrl;\n }).catch(function () {\n that.loader.hide();\n });\n })\n .catch(function (err) {\n if (err.responseText !== '') { errorText = err.responseText; }\n that.loader.hide();\n $('.error-message').show();\n $('.error-message-text').text(errorText);\n scrollAnimate($('.error-message'));\n });\n };\n }\n var paymentMethod = that.$btn.dataset.localPaymentMethodName;\n that.$btn.addEventListener('click', createLocalPaymentClickListener(paymentMethod));\n });\n};\n\nfunction createRequestData(shippingData, params, type) {\n var recipientName = shippingData.recipientName.split(' ');\n shippingData.firstName = recipientName[0];\n shippingData.lastName = recipientName[1];\n return {\n paymentType: type,\n amount: params.options.amount,\n fallback: {\n url: params.fallbackUrl + '?lpmName=' + type,\n buttonText: 'Complete Payment'\n },\n currencyCode: params.options.currency,\n shippingAddressRequired: false,\n email: document.querySelector('#email').value,\n phone: shippingData && shippingData.phone,\n givenName: shippingData && shippingData.firstName,\n surname: shippingData && shippingData.lastName,\n address: {\n countryCode: shippingData && shippingData.countryCode\n }\n };\n}\n\nConstructor.prototype.updateShippingData = function () {\n var localIns = this;\n localIns.loader.show();\n return $.getJSON(localIns.params.getOrderInfoUrl);\n};\n\n\nConstructor.prototype.updateShippingAddress = function (data) {\n if (data) {\n var recipientName = data.recipientName.split(' ');\n data.firstName = recipientName[0];\n data.lastName = recipientName[1];\n this.shippingData = data;\n }\n};\n\nmodule.exports = {\n init: function (params, $btn) {\n bu.clientToken = params.clientToken;\n return new Constructor(params, $btn);\n }\n};\n","'use strict';\n\nmodule.exports = function () {\n /* global braintreeUtils braintree $ */\n var helper = require('./helper');\n var applepayHelper = require('./applepay/applepayHelper');\n var creditcardHelper = require('./creditcard/creditcardHelper');\n var creditcardPayment = require('./creditcard/creditcardPayment');\n var creditCardFields = require('./creditcard/creditcardFields');\n var creditCardAccount = require('./creditcard/creditcardAccount');\n var minicartHelper = require('./paypal/minicartHelper');\n var paypalAccount = require('./paypal/paypalAccount');\n var paypalPayment = require('./paypal/paypalPayment');\n var local = require('./local/localPayment'); // eslint-disable-line no-unused-vars\n var orderStage = document.getElementById('checkout-main');\n\n\n var $form = document.querySelector('#dwfrm_billing'); // eslint-disable-line no-unused-vars\n var $cartPage = document.querySelectorAll('.cart-page');\n var $continueButton = document.querySelector('button.submit-payment');\n var $summaryDetails = document.querySelector('.summary-details .payment-details');\n var $addCreditCardForm = document.querySelector('.js_braintree_addCreditCardForm');\n var $addPaypalAccountForm = document.querySelector('.js_braintree_addPaypalAccountForm');\n var $paypalContent = document.querySelector('.js_braintree_paypalContent');\n var $creditCardContent = document.querySelector('.js_braintree_creditCardContent');\n var $applepayContent = document.querySelector('.js_braintree_applepayContent');\n var $braintreePaypalNonce = document.querySelector('#braintreePaypalNonce');\n var $minicartPopover = document.querySelector('.minicart .popover');\n var $creditCardList = document.querySelector('#braintreeCreditCardList');\n\n var venmoAccount = require('./venmo/venmoAccount');\n var venmoPayment = require('./venmo/venmoPayment');\n var $addVenmoAccountForm = document.querySelector('.js_braintree_addVenmoAccountForm');\n var $venmoContent = document.querySelector('.js_braintree_venmoContent');\n\n var googlePayAccount = require('./googlepay/googlepayAccount');\n var googlepayPayment = require('./googlepay/googlepayPayment');\n var $googlepayContent = document.querySelector('.js_braintree_googlepayContent');\n var $googlepayOnCart = document.querySelector('.braintree-cart-google-button');\n var $addGooglePayAccountForm = document.querySelector('.js_braintree_addGooglePayAccountForm');\n\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n\n (function () {\n if (typeof window.CustomEvent === 'function') return false; // If not IE\n\n function CustomEvent(event, params) {\n // eslint-disable-next-line no-param-reassign\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n }());\n\n if ($cartPage) {\n helper.initWathcherCartUpdate();\n }\n\n if ($addCreditCardForm) {\n creditCardAccount.initAccountAddCreditCard();\n }\n\n if ($addPaypalAccountForm) {\n paypalAccount.initAddPaypalAccount();\n }\n\n if ($addVenmoAccountForm) {\n venmoAccount.initAddVenmoAccount();\n }\n\n if ($addGooglePayAccountForm) {\n googlePayAccount.initAddGooglePayAccount();\n }\n\n document.addEventListener('DOMContentLoaded', function () {\n minicartHelper.miniCartButton();\n minicartHelper.changeUrlForMiniCartBtn();\n });\n\n if ($minicartPopover) {\n minicartHelper.observer.observe($minicartPopover, { childList: true });\n }\n\n helper.paymentMethodChangeHandle(document.querySelector('.payment-options[role=tablist] a.active[data-toggle=\"tab\"]'));\n\n applepayHelper.initApplepayButton();\n\n if ($paypalContent) {\n paypalPayment.makePaypalPayment($continueButton);\n }\n\n if ($creditCardContent) {\n creditCardFields.initCreditCardFields();\n creditcardHelper.initCardListAndSaveFunctionality();\n\n $('body').on('checkout:updateCheckoutView', creditCardFields.updateData);\n\n creditCardFields.updateData();\n\n if ($creditCardList) {\n $creditCardList.addEventListener('change', function () {\n creditcardPayment.doNotAllowSubmitForm();\n });\n }\n $('body').on('braintree:3dSecure_content_shown', function () {\n helper.continueButtonToggle(false);\n });\n\n $('body').on('braintree:3dSecure_content_removed', function () {\n setTimeout(function () {\n creditcardPayment.hide3DSecureContainer();\n }, 2000);\n });\n\n $continueButton.addEventListener('click', function (event) {\n if (!event.isTrusted) {\n return;\n }\n creditcardPayment.makeCreditCardPayment(event);\n });\n }\n\n if ($applepayContent) {\n applepayHelper.applepayPayment($continueButton);\n }\n\n if ($venmoContent) {\n venmoPayment.makeVenmoPayment($continueButton);\n }\n\n if ($googlepayContent || $googlepayOnCart) {\n googlepayPayment.makeGooglepayPayment($continueButton);\n }\n\n $('.payment-options[role=tablist] a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\n helper.paymentMethodChangeHandle(e.target);\n const cardList = document.getElementById('braintreeCreditCardList');\n const paypalList = document.getElementById('braintreePaypalAccountsList');\n var changeEvent;\n\n if (e.target.hash === '#creditcard-content' && cardList) {\n if (typeof (Event) === 'function') {\n changeEvent = new Event('changeEvent');\n cardList.addEventListener('changeEvent', function () {\n 'change';\n }, false);\n } else {\n changeEvent = document.createEvent('Event');\n changeEvent.initEvent('changeEvent', true, true);\n }\n cardList.dispatchEvent(changeEvent);\n } else if (e.target.hash === '#paypal-content' && paypalList) {\n if (typeof (Event) === 'function') {\n changeEvent = new Event('changeEvent');\n paypalList.addEventListener('changeEvent', function () {\n 'change';\n }, false);\n } else {\n changeEvent = document.createEvent('Event');\n changeEvent.initEvent('changeEvent', true, true);\n }\n paypalList.dispatchEvent(changeEvent);\n }\n });\n\n if ($summaryDetails) {\n $summaryDetails.classList.add('braintree-payment-details');\n $summaryDetails.classList.remove('payment-details');\n }\n\n $('body').on('checkout:updateCheckoutView', helper.updateCheckoutView);\n\n if (orderStage && orderStage.getAttribute('data-checkout-stage') === 'placeOrder') {\n helper.updatePaymentMethodTab();\n }\n\n if ($braintreePaypalNonce && $braintreePaypalNonce.value !== '') {\n document.querySelector('.paypal-tab').click();\n }\n};\n","/* eslint-disable no-inner-declarations */\n/* eslint-disable new-cap */\n'use strict';\n\n/* global braintreeUtils braintree paypal $ */\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\nvar paypalHelper = require('./paypal/paypalHelper');\n\nvar bu = braintreeUtils;\nvar console = bu.console;\n\nvar pid;\nvar uuid;\nvar removeFromCartUrl;\nvar loader;\nvar $price;\nvar isZeroAmount = false;\nvar $braintreePDPButton = document.querySelector('.braintree_pdp_button');\nvar $miniCartQuantity = document.querySelector('.minicart-quantity');\nvar $addToCartButton = document.querySelector('.add-to-cart') || document.querySelector('.add-to-cart-global');\nvar $paypalCartButton = document.querySelector('.js_braintree_paypal_cart_button');\nvar $paypalBillingButton = document.querySelector('.js_braintree_paypal_billing_button');\n\nfunction Constructor(initParams, $btn) {\n var params = initParams;\n this.params = initParams;\n params.options = params.options || {};\n\n this.$btn = $btn;\n var $errorContainer = document.createElement('div');\n $errorContainer.className = 'error';\n\n if (params.$errorContainer) {\n $errorContainer = params.$errorContainer;\n delete params.$errorContainer;\n }\n\n var $loaderContainter = document.querySelector('.braintreePayPalLoader');\n var $braintreePaypalRiskDataInput = document.querySelector('input[name=braintreePaypalRiskData]');\n\n if (params.$loaderContainer) {\n $loaderContainter = params.$loaderContainer;\n }\n\n $btn.parentNode.insertBefore($errorContainer, $btn.nextSibling);\n\n this.er = bu.createErrorInstance($errorContainer);\n loader = loaderInstance($loaderContainter);\n this.loader = loader;\n var that = this;\n\n if (params.isFraudToolsEnabled) {\n loader.show();\n braintree.dataCollector.create({\n authorization: bu.clientToken,\n paypal: true,\n kount: false\n }, function (error, data) {\n loader.hide();\n if (error) {\n console.log(error);\n return;\n }\n if ($braintreePaypalRiskDataInput) {\n $braintreePaypalRiskDataInput.value = data.deviceData;\n }\n params.riskData = data.deviceData;\n });\n }\n\n if ($braintreePDPButton) {\n $price = document.querySelector('.price .sales .value');\n // Check minicart quantity and hide PDPbutton if it is not empty\n if (($miniCartQuantity && parseInt($miniCartQuantity.textContent, 0) > 0)\n || ($price && $price.getAttribute('content') === '0.00')) { // Check if product price is zero\n $braintreePDPButton.style.display = 'none';\n }\n }\n\n loader.show();\n\n braintree.client.create({\n authorization: bu.clientToken\n }).then(function (clientInstance) {\n return braintree.paypalCheckout.create({\n client: clientInstance\n });\n }).then(function (paypalCheckoutInstance) {\n if ($braintreePDPButton) {\n function hidePDPButton() {\n $braintreePDPButton.style.display = 'none';\n }\n function showPDPButton() {\n $braintreePDPButton.style.display = '';\n }\n\n if ($addToCartButton.disabled) {\n hidePDPButton();\n }\n $('body').on('cart:update', function () {\n $miniCartQuantity = parseInt(document.querySelector('.minicart-quantity').textContent, 0);\n if ($addToCartButton.disabled) {\n hidePDPButton();\n }\n if ($miniCartQuantity === 0 && !$addToCartButton.disabled) {\n showPDPButton();\n }\n });\n\n $('body').on('product:afterAddToCart', function () {\n hidePDPButton();\n });\n\n // Update addToCart button status\n $('body').on('product:updateAddToCart', function () {\n $miniCartQuantity = parseInt(document.querySelector('.minicart-quantity').textContent, 0);\n $price = document.querySelector('.price .sales .value');\n isZeroAmount = false;\n if ($braintreePDPButton && $price) {\n isZeroAmount = $price.getAttribute('content') === '0.00';\n }\n\n if ($miniCartQuantity === 0) {\n if ($addToCartButton.disabled || isZeroAmount) {\n hidePDPButton();\n }\n if (!$addToCartButton.disabled && !isZeroAmount) {\n showPDPButton();\n }\n }\n });\n }\n\n var payment = function () {\n if ($braintreePDPButton && $braintreePDPButton.style.display === '') {\n that.er.hide();\n var res = braintreeUtils.pdpOnlickForAsignedPaypalPayment(paypalCheckoutInstance);\n if (res.cart) {\n uuid = res.pliUUID;\n removeFromCartUrl = res.cart.actionUrls.removeProductLineItemUrl;\n pid = res.pid;\n that.params.options.amount = parseFloat(res.cart.totals.grandTotal.replace(/\\$|,/g, ''));\n } else {\n throw new Error(res.message || 'Error occurs');\n }\n }\n return paypalCheckoutInstance.createPayment(that.params.options);\n };\n\n var paypalButtonConfig = {\n locale: params.options.locale,\n onApprove: function (data) {\n if (params.options.intent === 'order') {\n data.intent = 'order';\n }\n return paypalCheckoutInstance.tokenizePayment(data).then(function (payload) {\n params.onTokenizePayment(payload, that);\n });\n },\n onCancel: function (a, b) {\n if (typeof params.options.onCancel === 'function') {\n params.options.onCancel(a, b);\n }\n if ($braintreePDPButton && $braintreePDPButton.style.display === '') {\n var urlParams = {\n pid: pid,\n uuid: uuid\n };\n\n $.ajax({\n url: paypalHelper.appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n },\n onError: function (err) {\n that.er.show(err.message.split(/\\r?\\n/g)[0]);\n\n if ($braintreePDPButton && $braintreePDPButton.style.display === '' && pid) {\n var productID = pid;\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n $.ajax({\n url: paypalHelper.appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n }\n };\n\n isZeroAmount = that.params.options.amount === 0;\n if (isZeroAmount) {\n var zeroAmountErrorMsg = 'Order total 0 is not allowed for PayPal';\n paypalButtonConfig.onClick = function (_, actions) {\n if ($paypalCartButton) paypalHelper.showCartErrorMsg(zeroAmountErrorMsg);\n if ($paypalBillingButton) paypalHelper.showCheckoutErrorMsg(zeroAmountErrorMsg);\n return actions.reject();\n };\n }\n\n if (params.options && params.options.flow === 'checkout') {\n paypalButtonConfig.createOrder = payment;\n } else {\n paypalButtonConfig.createBillingAgreement = payment;\n }\n\n paypalButtonConfig = $.extend(false, paypalButtonConfig, that.params.paypalConfig);\n loader.hide();\n\n return paypal.Buttons(paypalButtonConfig).render(that.$btn);\n }).catch(function (err) {\n console.error('Error!', err);\n loader.hide();\n });\n}\n\nConstructor.prototype.updateAmount = function (amount) {\n this.params.options.amount = amount;\n};\n\nConstructor.prototype.updateShippingAddress = function (data) {\n this.params.options.shippingAddressOverride = data;\n};\n\nmodule.exports = {\n init: function (params, $btn) {\n bu.clientToken = params.clientToken;\n $.extend(bu.messages, params.messages);\n return new Constructor(params, $btn);\n }\n};\n","'use strict';\n\n/* global braintree $ */\n/* eslint no-console: 'off' */\n\nvar isDebugMode = true;\nif (console && isDebugMode) {\n var consoleLog = console.log;\n var consoleError = console.error;\n console.log = function () {\n consoleLog.apply(console, arguments);\n };\n console.error = function () {\n consoleError.apply(console, arguments);\n };\n} else {\n console = { // eslint-disable-line no-global-assign\n log: function () { },\n error: function () { }\n };\n}\n\nvar bu = {\n pdpOnlickForAsignedPaypalPayment: function () {\n var $bundleItem = $('.bundle-item');\n function getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n }\n\n var pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n var $btn = $('.braintree_pdp_button .js_braintree_paypal_cart_button');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n quantity: $('.quantity-select').val()\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n },\n\n getSelectedData: function (selectEl) {\n if (!selectEl) {\n return null;\n }\n var options = selectEl.getElementsByTagName('option');\n var option = null;\n for (var i = 0; i < options.length; i++) {\n option = options[i];\n if (option.selected) {\n break;\n }\n }\n return option.attributes;\n },\n\n postData: function (uri, data, resolve) {\n var form = document.createElement('form');\n form.setAttribute('method', 'post');\n form.setAttribute('action', uri);\n form.style.display = 'none';\n\n for (var key in data) { // eslint-disable-line no-restricted-syntax\n if (Object.hasOwnProperty.call(data, key)) {\n var hf = document.createElement('input');\n hf.setAttribute('type', 'hidden');\n hf.setAttribute('name', key);\n hf.setAttribute('value', data[key]);\n form.appendChild(hf);\n }\n }\n\n document.body.appendChild(form);\n if (resolve) {\n resolve();\n }\n form.submit();\n },\n\n messages: {},\n\n errorInstances: [],\n createErrorInstance: function (containerElement, callback) {\n if (!containerElement) {\n console.error('Braintree: No container for showing erros');\n }\n function Constructor(cb) {\n bu.errorInstances.push(this);\n this.containerEl = containerElement;\n this.cb = typeof cb === 'function' ? cb : function () { };\n }\n Constructor.prototype.show = function (error) {\n var text = '';\n if (typeof error === 'string') {\n text = error;\n }\n if (typeof error === 'object') {\n var msg = bu.messages[error.code];\n text = msg || error.message;\n this.cb(this, error);\n if (error.code === 'PAYPAL_POPUP_CLOSED') {\n return;\n }\n }\n this.containerEl.style.display = '';\n this.containerEl.innerHTML = text;\n };\n Constructor.prototype.hide = function () {\n this.containerEl.innerHTML = '';\n };\n return new Constructor(callback);\n },\n clientToken: null\n};\n\nbu.console = console;\n\nmodule.exports = bu;\n\n","/* eslint-disable no-use-before-define */\n'use strict';\n\n/* global braintreeUtils braintree $ VenmoSession */\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\n\nvar bu = braintreeUtils;\n\nfunction Constructor(initParams, $btn) {\n var $errorContainer = document.createElement('div');\n $errorContainer.className = 'venmo-error';\n var $loaderContainter = document.createElement('div');\n $loaderContainter.className = 'braintree-loader';\n this.$braintreeVenmoRiskDataInput = document.querySelector('input[name=braintreeVenmoRiskData]');\n\n this.$btn = $btn;\n this.params = initParams;\n\n if (initParams.$errorContainer) {\n $errorContainer = initParams.$errorContainer;\n delete initParams.$errorContainer;\n }\n\n if (initParams.$loaderContainer) {\n $loaderContainter = initParams.$loaderContainer;\n }\n\n $btn.parentNode.insertBefore($errorContainer, $btn.nextSibling);\n\n this.er = bu.createErrorInstance($errorContainer);\n this.loader = loaderInstance($loaderContainter);\n}\n\nConstructor.prototype.createVenmo = function () {\n var that = this;\n var isBrowserSupported;\n that.loader.show();\n\n braintree.client.create({\n authorization: bu.clientToken\n }, function (clientErr, clientInstance) {\n // Stop if there was a problem creating the client.\n // This could happen if there is a network error or if the authorization\n // is invalid.\n if (clientErr) {\n that.er.show(clientErr);\n return;\n }\n\n braintree.dataCollector.create({\n client: clientInstance,\n paypal: true\n }, function (dataCollectorErr, dataCollectorInstance) {\n if (dataCollectorErr) {\n that.er.show(dataCollectorErr);\n return;\n }\n\n if (that.$braintreeVenmoRiskDataInput) {\n that.$braintreeVenmoRiskDataInput.value = dataCollectorInstance.deviceData;\n }\n that.loader.hide();\n });\n\n isBrowserSupported = braintree.venmo.isBrowserSupported({ allowNewBrowserTab: false });\n // Verify browser support before proceeding.\n if (isBrowserSupported) {\n braintree.venmo.create({\n client: clientInstance,\n allowNewBrowserTab: false,\n ignoreHistoryChanges: true\n }, function (venmoErr, venmoInstance) {\n if (venmoErr) {\n that.er.show(venmoErr);\n return;\n }\n\n // Verify browser support before proceeding.\n if (!venmoInstance.isBrowserSupported()) {\n that.params.deviceNotSupportVenmo();\n that.loader.hide();\n return;\n }\n\n that.$btn.addEventListener('click', function () {\n if (!that.params.venmoAccountPage && !that.params.onClick()) {\n return;\n }\n venmoInstance.tokenize({ processResultsDelay: 10 }, function (tokenizeErr, payload) {\n that.loader.show();\n\n if (tokenizeErr) {\n handleVenmoError(tokenizeErr);\n } else {\n handleVenmoSuccess(payload);\n }\n });\n return;\n });\n });\n } else {\n that.params.deviceNotSupportVenmo();\n that.loader.hide();\n localStorage.setItem('venmoBrowserSupported', isBrowserSupported);\n return;\n }\n });\n\n function handleVenmoError(err) {\n that.er.show(err);\n that.loader.hide();\n }\n function handleVenmoSuccess(payload) {\n that.params.onTokenizePayment(payload);\n that.loader.hide();\n }\n};\n\nmodule.exports = {\n init: function (params, $btn) {\n var ins = new Constructor(params, $btn);\n bu.clientToken = params.clientToken;\n return ins.createVenmo();\n }\n};\n","'use strict';\nvar creditCard = require('../braintreeCreditCard');\nvar creditCardFields = require('./creditcardFields');\n\nfunction submitCreditCardForm() {\n $('.js_braintree_addCreditCardForm').submit(function () {\n var addCreditCardForm = $(this);\n creditCard.startTokenize(function (result) {\n if (result.error) return;\n addCreditCardForm.spinner().start();\n $.ajax({\n url: addCreditCardForm.attr('action'),\n type: 'post',\n dataType: 'json',\n data: addCreditCardForm.serialize(),\n success: function (data) {\n addCreditCardForm.spinner().stop();\n if (!data.success) {\n document.querySelector('#braintreeCreditCardErrorContainer').textContent = data.error;\n } else {\n location.href = data.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n addCreditCardForm.spinner().stop();\n }\n });\n });\n return false;\n });\n}\n\nfunction initAccountAddCreditCard() {\n creditCardFields.initCreditCardFields();\n submitCreditCardForm();\n}\n\nmodule.exports = {\n initAccountAddCreditCard\n};\n","'use strict';\nvar creditCard = require('../braintreeCreditCard');\n\nvar $continueButton = document.querySelector('button.submit-payment');\n\n/**\n * Gets required Additional shipping info for 3ds\n *\n * @param {Object} orderAddress - User's shipping address\n * @returns {Object} an object with required fields\n */\n\nfunction getShippingAdditionalInfo(orderAddress) {\n return {\n workPhoneNumber: orderAddress.phone,\n shippingGivenName: orderAddress.recipientName.split(' ').slice(0, -1).join(' '),\n shippingSurname: orderAddress.recipientName.split(' ').slice(-1).join(' '),\n shippingPhone: orderAddress.phone,\n shippingAddress: {\n streetAddress: orderAddress.line1,\n extendedAddress: orderAddress.line2,\n locality: orderAddress.city,\n region: orderAddress.state,\n postalCode: orderAddress.postalCode,\n countryCodeAlpha2: orderAddress.countryCode\n }\n };\n}\n\nfunction updateData() {\n $.ajax({\n url: document.querySelector('.js_braintree_getOrderInfoUrl').value,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n data.shippingAdditionalInfo = data.shippingAddress ? getShippingAdditionalInfo(data.shippingAddress) : null;\n creditCard.updateData(data);\n },\n error: function () {\n window.location.reload();\n }\n });\n}\n\nfunction initCreditCardFields() {\n document.querySelectorAll('.js_braintree_creditCardFields').forEach(function (el) {\n var $container = el;\n if (JSON.parse($container.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($container.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error(el, '.js_braintree_creditCardFields has not valid data-braintree-config');\n return;\n }\n config.continueButton = $continueButton;\n creditCard.initFields(config, $container);\n $container.setAttribute('data-is-inited', true);\n });\n}\n\nmodule.exports = {\n initCreditCardFields,\n getShippingAdditionalInfo,\n updateData\n};\n","'use strict';\nvar braintreeUtils = require('../braintreeUtils');\nvar bu = braintreeUtils;\n\nvar $creditCardList = document.querySelector('#braintreeCreditCardList');\nvar $creditCardMakeDefault = document.querySelector('#braintreeCreditCardMakeDefault');\nvar $saveCreditCard = document.querySelector('#braintreeSaveCreditCard');\nvar $cardOwner = document.querySelector('#braintreeCardOwner');\n\nfunction creditcardErrorContainer(errorIns, errorData) {\n var error = errorData;\n if (error.details && error.details.invalidFieldKeys) {\n for (var i = 0; i < error.details.invalidFieldKeys.length; i++) {\n var key = error.details.invalidFieldKeys[i];\n if (key === 'number') {\n document.querySelector('#braintreeCardNumber').classList.add('braintree-hosted-fields-invalid');\n }\n if (key === 'cvv') {\n document.querySelector('#braintreeCvv').classList.add('braintree-hosted-fields-invalid');\n }\n if (key === 'expirationDate') {\n document.querySelector('#braintreeExpirationDate').classList.add('braintree-hosted-fields-invalid');\n }\n }\n }\n if (error.code === 'HOSTED_FIELDS_FIELDS_EMPTY') {\n document.querySelector('#braintreeCardNumber, #braintreeCvv, #braintreeExpirationDate').classList.add('braintree-hosted-fields-invalid');\n }\n}\n\nfunction convertCardTypeToDwFormat(braintreeType) {\n switch (braintreeType) {\n case 'American Express':\n return 'Amex';\n case 'MasterCard':\n return 'Master';\n default:\n return braintreeType;\n }\n}\n\nfunction cardOwnerUpdateClasses() {\n var value = $cardOwner.value;\n if (value.length <= parseInt($cardOwner.getAttribute('maxlength'), 10) && value.length !== 0) {\n $cardOwner.parentNode.classList.add('braintree-hosted-fields-valid');\n } else {\n $cardOwner.parentNode.classList.remove('braintree-hosted-fields-valid');\n $cardOwner.parentNode.classList.remove('braintree-hosted-fields-invalid');\n }\n}\n\nfunction cardListChange() {\n var $cardOwnerPh = document.querySelector('#braintreeCardOwnerPh');\n var $cardNumbeber = document.querySelector('#braintreeCardNumber');\n var $cardNumbeberPh = document.querySelector('#braintreeCardNumberPh');\n var $cardCvv = document.querySelector('#braintreeCvv');\n var $cardCvvPh = document.querySelector('#braintreeCvvPh');\n var $cardExpiration = document.querySelector('#braintreeExpirationDate');\n var $cardExpirationPh = document.querySelector('#braintreeExpirationPh');\n var $braintreeSaveCardContainer = document.querySelector('#braintreeSaveCardContainer');\n var $creditCardFieldsContainer = document.querySelector('#braintreeCreditCardFieldsContainer');\n var $braintree3DSecureContainer = document.querySelector('#braintree3DSecureContainer');\n var $saveCardAndDefaultContainer = document.querySelector('#braintreeSaveCardAndDefaultContainer');\n var changeCardOwnerInput;\n if ($cardOwner) {\n if (typeof (Event) === 'function') {\n changeCardOwnerInput = new Event('changeCardOwnerInput');\n $cardOwner.addEventListener('changeCardOwnerInput', function () {\n 'change';\n }, false);\n } else {\n changeCardOwnerInput = document.createEvent('Event');\n changeCardOwnerInput.initEvent('changeCardOwnerInput', true, true);\n }\n }\n\n if ($creditCardFieldsContainer) {\n $creditCardFieldsContainer.style.display = '';\n }\n if ($braintree3DSecureContainer) {\n $braintree3DSecureContainer.style.display = 'none';\n }\n\n document.querySelector('#braintreeCreditCardErrorContainer').textContent = '';\n\n if (!$creditCardList || $creditCardList.value === 'newcard') {\n if ($saveCardAndDefaultContainer) {\n $saveCardAndDefaultContainer.style.display = '';\n }\n $cardNumbeberPh.style.display = 'none';\n $cardExpirationPh.style.display = 'none';\n $cardCvvPh.style.display = 'none';\n $cardOwnerPh.style.display = 'none';\n $cardOwner.value = $cardOwner.getAttribute('data-new-cart-value');\n $cardOwner.dispatchEvent(changeCardOwnerInput);\n $cardOwner.style.display = '';\n $cardOwner.parentNode.classList.remove('braintree-hosted-fields-invalid');\n $cardNumbeber.parentNode.classList.remove('braintree-hosted-fields-invalid');\n $cardCvv.parentNode.classList.remove('braintree-hosted-fields-invalid');\n $cardExpiration.parentNode.classList.remove('braintree-hosted-fields-invalid');\n $cardOwner.disabled = false;\n $cardCvv.style.display = '';\n $cardNumbeber.style.display = '';\n $cardExpiration.style.display = '';\n if ($braintreeSaveCardContainer) {\n $braintreeSaveCardContainer.style.display = '';\n $saveCreditCard.checked = true;\n $saveCreditCard.disabled = false;\n }\n if ($creditCardMakeDefault) {\n $creditCardMakeDefault.disabled = false;\n }\n cardOwnerUpdateClasses();\n } else {\n var selectedCard = bu.getSelectedData($creditCardList);\n $cardNumbeberPh.innerHTML = selectedCard['data-number'].value;\n $cardCvvPh.innerHTML = '***';\n $cardExpirationPh.innerHTML = selectedCard['data-expiration'].value;\n $cardOwnerPh.innerHTML = selectedCard['data-owner'].value;\n $cardOwner.value = selectedCard['data-owner'].value;\n $cardOwner.dispatchEvent(changeCardOwnerInput);\n document.querySelector('#braintreeCardType').value = selectedCard['data-type'].value;\n document.querySelector('#braintreeCardMaskNumber').value = selectedCard['data-number'].value;\n $cardNumbeberPh.style.display = '';\n $cardExpirationPh.style.display = '';\n $cardCvvPh.style.display = '';\n $cardOwnerPh.style.display = '';\n $cardOwner.style.display = 'none';\n if ($creditCardMakeDefault) {\n if (selectedCard['data-default'].value === 'true') {\n $creditCardMakeDefault.disabled = true;\n } else {\n $creditCardMakeDefault.disabled = false;\n }\n $creditCardMakeDefault.checked = true;\n }\n $cardOwner.disabled = true;\n $cardCvv.style.display = 'none';\n $cardNumbeber.style.display = 'none';\n $cardExpiration.style.display = 'none';\n if ($braintreeSaveCardContainer) {\n $saveCreditCard.checked = false;\n $braintreeSaveCardContainer.style.display = 'none';\n }\n }\n}\n\nfunction makeCardDefault() {\n if ($saveCreditCard.checked) {\n $creditCardMakeDefault.disabled = false;\n $creditCardMakeDefault.checked = true;\n } else {\n $creditCardMakeDefault.disabled = true;\n $creditCardMakeDefault.checked = false;\n }\n}\n\nfunction initCardListAndSaveFunctionality() {\n if ($saveCreditCard) {\n $saveCreditCard.addEventListener('change', function () {\n makeCardDefault();\n });\n }\n\n if ($creditCardList) {\n $creditCardList.addEventListener('change', function () {\n cardListChange();\n });\n }\n cardListChange();\n}\n\nfunction cardOwnerEvents() {\n $cardOwner.addEventListener('focus', function () {\n $cardOwner.parentNode.classList.add('braintree-hosted-fields-focused');\n });\n $cardOwner.addEventListener('blur', function () {\n $cardOwner.parentNode.classList.remove('braintree-hosted-fields-focused');\n });\n $cardOwner.addEventListener('keyup', function () {\n document.querySelector('#braintreeCardOwner').setAttribute('data-new-cart-value', $cardOwner.value);\n cardOwnerUpdateClasses();\n });\n $cardOwner.addEventListener('change', function () {\n cardOwnerUpdateClasses();\n });\n}\n\nmodule.exports = {\n creditcardErrorContainer,\n convertCardTypeToDwFormat,\n cardOwnerEvents,\n initCardListAndSaveFunctionality\n};\n","'use strict';\n\nvar braintreeUtils = require('../braintreeUtils');\nvar creditCard = require('../braintreeCreditCard');\nvar helper = require('../helper');\n\nvar $continueButton = document.querySelector('button.submit-payment');\nvar $creditCardList = document.querySelector('#braintreeCreditCardList');\n\nfunction doNotAllowSubmitForm() {\n helper.continueButtonToggle(false);\n $continueButton.setAttribute('data-is-allow-submit-form', false);\n}\n\nfunction hide3DSecureContainer() {\n document.querySelector('#braintreeCreditCardFieldsContainer').style.display = '';\n document.querySelector('#braintreeSaveCardAndDefaultContainer').style.display = '';\n document.querySelector('#braintree3DSecureContainer').style.display = 'none';\n doNotAllowSubmitForm();\n}\n\nfunction allowSubmitForm(event) {\n $continueButton.setAttribute('data-is-allow-submit-form', true);\n event.target.click();\n}\n\nfunction isActiveCreditCardTab() {\n return document\n .querySelector('.payment-options[role=tablist] a[data-toggle=\"tab\"][href=\"#creditcard-content\"]')\n .classList\n .contains('active');\n}\n\nfunction isPaypalNonceExist() {\n var hasPaypalNonce = document.querySelector('#braintreePaypalNonce');\n var $paypalTab = document.querySelector('.paypal-tab');\n var isActivePaypalTab;\n if ($paypalTab) {\n isActivePaypalTab = $paypalTab.classList.contains('active');\n }\n return !isActivePaypalTab && hasPaypalNonce;\n}\n\nfunction makeCreditCardPayment(event) {\n var customerAuthenticated;\n var braintreePaypalAccount = document.getElementById('braintreePaypalAccount');\n if (braintreePaypalAccount) {\n customerAuthenticated = JSON.parse(braintreePaypalAccount.dataset.customerAuthenticated);\n }\n var $braintreePaypalAccountsList = document.querySelector('#braintreePaypalAccountsList');\n\n // check if paypal method was used and change appearance of paypal tab\n if (isPaypalNonceExist()) {\n var paypalAccount = document.querySelector('.form-group.js_braintree_used_paypal_account');\n var $paypalContent = document.querySelector('.js_braintree_paypalContent');\n var $paypalButton = document.querySelector('.js_braintree_paypal_billing_button');\n var $formIndent = document.querySelector('.form-indent');\n\n paypalAccount.classList.remove('used-paypal-account');\n paypalAccount.classList.add('used-paypal-account-hide');\n $formIndent.classList.remove('used-paypal-account-hide');\n $formIndent.classList.add('used-paypal-account');\n $paypalButton.style.display = 'block';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n if (customerAuthenticated) {\n document.querySelectorAll('.js_braintree_paypalContent .custom-checkbox').forEach((el) => { el.style.display = ''; });\n if ($braintreePaypalAccountsList && $braintreePaypalAccountsList.value !== 'newaccount') {\n $paypalButton.style.display = 'none';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n document.querySelector('#braintreeSavePaypalAccountContainer').style.display = 'none';\n }\n }\n }\n if (JSON.parse($continueButton.getAttribute('data-is-allow-submit-form')) && creditCard.isFormValid()) {\n return;\n }\n if (!isActiveCreditCardTab()) {\n var paypalAccountList = document.querySelector('#braintreePaypalAccountsList');\n if (paypalAccountList && paypalAccountList.value !== 'newaccount') helper.continueButtonToggle(false);\n return;\n }\n\n if ($creditCardList) {\n var is3dSecureEnabled = JSON.parse(document.querySelector('.js_braintree_creditCardFields').getAttribute('data-braintree-config')).is3dSecureEnabled;\n if ($creditCardList && $creditCardList.value !== 'newcard') {\n if (!is3dSecureEnabled) {\n allowSubmitForm(event);\n return;\n }\n\n var selectedCard = braintreeUtils.getSelectedData($creditCardList);\n $.post($creditCardList.getAttribute('data-get-payment-nonce-url'), { id: selectedCard['data-id'].value }, function (responce) {\n creditCard.startTokenize(function (result) {\n if (!result.error) {\n allowSubmitForm(event);\n }\n }, responce);\n });\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n }\n creditCard.startTokenize(function (result) {\n if (!result.error) allowSubmitForm(event);\n });\n event.preventDefault();\n event.stopPropagation();\n}\n\nmodule.exports = {\n doNotAllowSubmitForm,\n hide3DSecureContainer,\n makeCreditCardPayment\n};\n","'use strict';\n\nvar googlepay = require('../braintreeGooglepay');\nvar googlepayHelper = require('./googlepayHelper');\nvar loaderInstance = require('../loaderHelper');\n\nfunction submitAddGooglePayAccountForm() {\n $('.js_braintree_addGooglePayAccountForm').submit(function () {\n var $form = $(this);\n var $btFormErrorContainer = document.querySelector('#braintreeFormErrorContainer');\n $form.spinner().start();\n\n $.post($form.attr('action'), $form.serialize())\n .done(function (data) {\n $form.spinner().stop();\n if (!data.success) {\n $btFormErrorContainer.textContent = data.error;\n } else {\n location.href = data.redirectUrl;\n }\n })\n .fail(function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $form.spinner().stop();\n });\n return false;\n });\n}\n\nfunction initAddGooglePayAccount() {\n var $btn = document.querySelector('.js_braintree_accountgooglepay_button');\n var $googlepayNonce = document.querySelector('#braintreeGooglePayNonce');\n var $btGooglePayLoader = document.querySelector('.braintreeGooglepayLoader');\n var $buttonSave = document.querySelector('button[name=save]');\n var $braintreeGooglePayBillingAddress = document.querySelector('#braintreeGooglePayBillingAddress');\n var googlepayIns;\n var loader = loaderInstance($btGooglePayLoader);\n\n if (JSON.parse($btn.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n\n if (typeof config !== 'object' || config === null) {\n console.error($btn, 'not valid data-braintree-config');\n return;\n }\n loader.show();\n\n config.onTokenizePayment = function (data, result) {\n var $btFormErrorContainer = document.querySelector('#braintreeFormErrorContainer');\n $btFormErrorContainer.textContent = '';\n\n if (result.type === 'PayPalAccount') {\n $btFormErrorContainer.textContent = config.messages.saving_paypal_account_error;\n\n return;\n }\n\n document.querySelector('.gpay-button').style.filter = 'grayscale(70%)';\n $buttonSave.removeAttribute('style');\n $btn.setAttribute('style', 'pointer-events:none');\n\n $googlepayNonce.value = result.nonce;\n document.querySelector('.googlePayEmail').textContent = data.email;\n $braintreeGooglePayBillingAddress.value = googlepayHelper.createGooglepayBillingAddressData(data);\n\n $buttonSave.removeAttribute('disabled');\n };\n googlepayIns = googlepay.init(config, $btn);\n googlepayIns.createGooglepay();\n $buttonSave.setAttribute('style', 'filter: grayscale(70%)');\n $btn.setAttribute('data-is-inited', true);\n submitAddGooglePayAccountForm();\n}\n\nmodule.exports = {\n initAddGooglePayAccount\n};\n/* eslint no-use-before-define: 2 */ // --> ON\n","'use strict';\nvar helper = require('../helper');\n\nvar $googlepayContent = document.querySelector('.js_braintree_googlepayContent');\nvar $btGooglepayAccountsList = document.querySelector('#braintreeGooglepayAccountsList');\nvar $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\nvar $braintreeGooglepayAccount = document.getElementById('braintreeGooglepayAccount');\nvar $googlepayAccount = document.querySelector('.js_braintree_used_googlepay_account');\n\nfunction showGooglepayAccount() {\n if (!$btGooglepayAccountsList) {\n $googlepayAccount.classList.remove('used-googlepay-account-hide');\n $braintreeGooglepayAccount.options[0].text = document.querySelector('#braintreeGooglePayCardDescription').value;\n }\n\n $googlepayButton.style.display = 'none';\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n helper.continueButtonToggle(false);\n}\n\nfunction hideShowButtons() {\n if ($btGooglepayAccountsList.value === 'newaccount') {\n $googlepayButton.style.display = 'block';\n helper.continueButtonToggle(true);\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', true);\n } else {\n $googlepayButton.style.display = 'none';\n helper.continueButtonToggle(false);\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n }\n}\n\nfunction createGooglepayBillingAddressData(data) {\n var billingData = data.paymentMethodData.info.billingAddress;\n var billingAddress = {};\n billingAddress.recipientName = billingData.name;\n billingAddress.phone = billingData.phoneNumber;\n billingAddress.countryCodeAlpha2 = billingData.countryCode;\n billingAddress.streetAddress = billingData.address1;\n billingAddress.extendedAddress = billingData.address2;\n billingAddress.locality = billingData.locality;\n billingAddress.region = billingData.administrativeArea;\n billingAddress.postalCode = billingData.postalCode;\n billingAddress.email = data.email;\n return JSON.stringify(billingAddress);\n}\n\nfunction createGooglepayShippingAddressData(shippingData) {\n var shippingAddress = {};\n shippingAddress.recipientName = shippingData.name;\n shippingAddress.phone = shippingData.phoneNumber;\n shippingAddress.countryCodeAlpha2 = shippingData.countryCode;\n shippingAddress.streetAddress = shippingData.address1;\n shippingAddress.extendedAddress = shippingData.address2;\n shippingAddress.locality = shippingData.locality;\n shippingAddress.region = shippingData.administrativeArea;\n shippingAddress.postalCode = shippingData.postalCode;\n return JSON.stringify(shippingAddress);\n}\n\nmodule.exports = {\n showGooglepayAccount,\n hideShowButtons,\n createGooglepayBillingAddressData,\n createGooglepayShippingAddressData\n};\n","'use strict';\nvar googlepay = require('../braintreeGooglepay');\nvar googlepayHelper = require('./googlepayHelper');\n\nvar $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\nvar $googlepayContent = document.querySelector('.js_braintree_googlepayContent');\nvar $btGooglepayAccountsList = document.querySelector('#braintreeGooglepayAccountsList');\nvar $googlepayOnCart = document.querySelector('.braintree-cart-google-button');\nvar $googlepayNonce = document.querySelector('#braintreeGooglePayNonce');\nvar $googlepayCardDescription = document.querySelector('#braintreeGooglePayCardDescription');\nvar $braintreeGooglepayBillingAddressInput = document.querySelector('input[name=braintreeGooglePayBillingAddress]');\nvar $braintreeGooglepayShippingAddressInput = document.querySelector('input[name=braintreeGooglePayShippingAddress]');\nvar $braintreeGooglepayPaymentType = document.querySelector('#braintreeGooglepayPaymentType');\n\nfunction makeGooglepayPayment(continueButton) {\n var googlepayIns;\n var config = JSON.parse($googlepayButton.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error($googlepayButton, 'not valid data-braintree-config');\n }\n\n if ($btGooglepayAccountsList) {\n $btGooglepayAccountsList.addEventListener('change', function () {\n googlepayHelper.hideShowButtons();\n });\n googlepayHelper.hideShowButtons();\n\n if ($googlepayCardDescription.value === 'GooglePay') {\n $googlepayCardDescription.value = $btGooglepayAccountsList.selectedOptions[0].label;\n }\n }\n\n config.onTokenizePayment = function (data, result) {\n var billingAddressData;\n var shippingAddressData;\n\n if (data) {\n billingAddressData = googlepayHelper.createGooglepayBillingAddressData(data);\n if ($braintreeGooglepayBillingAddressInput) {\n $braintreeGooglepayBillingAddressInput.value = billingAddressData;\n }\n\n if (data.shippingAddress) {\n shippingAddressData = googlepayHelper.createGooglepayShippingAddressData(data.shippingAddress);\n if ($braintreeGooglepayShippingAddressInput) {\n $braintreeGooglepayShippingAddressInput.value = shippingAddressData;\n }\n }\n\n if ($googlepayOnCart) {\n $.ajax({\n url: config.returnFromCartUrl,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n nonce: result.nonce,\n paymentCardDescription: result.details.cardType + ' ' + result.details.lastFour,\n saveGpAccount: result.type === 'AndroidPayCard',\n billingAddress: billingAddressData,\n shippingAddress: shippingAddressData || {},\n paymentType: result.type\n }),\n success: function (res) {\n googlepayIns.loader.hide();\n window.location.href = res.redirectUrl;\n },\n error: function () {\n googlepayIns.loader.hide();\n }\n });\n return;\n }\n }\n if ($googlepayNonce) {\n $googlepayNonce.value = result.nonce;\n }\n if ($googlepayCardDescription) {\n $googlepayCardDescription.value = result.details.cardType + ' ' + result.details.lastFour;\n }\n if ($braintreeGooglepayPaymentType) {\n $braintreeGooglepayPaymentType.value = result.type;\n }\n document.querySelector('#braintreeGooglepayAccount > option').text = $googlepayCardDescription.value;\n\n if ($googlepayContent.classList.contains('active')) {\n googlepayHelper.showGooglepayAccount();\n }\n continueButton.click();\n };\n\n googlepayIns = googlepay.init(config, $googlepayButton);\n googlepayIns.createGooglepay();\n\n function googlepayUpdateAmount() { // eslint-disable-line require-jsdoc\n googlepayIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n googlepayIns.loader.hide();\n googlepayIns.updateAmount(data.amount);\n },\n error: function () {\n window.location.reload();\n }\n });\n }\n\n $('body').on('checkout:updateCheckoutView', googlepayUpdateAmount);\n $('body').on('braintree:updateCartTotals', googlepayUpdateAmount);\n googlepayUpdateAmount();\n}\n\nmodule.exports = {\n makeGooglepayPayment\n};\n","'use strict';\nvar $continueButton = document.querySelector('button.submit-payment');\n\nfunction initWathcherCartUpdate() {\n var $grantTotal = document.querySelector('.grand-total');\n if ($grantTotal) {\n var currentGrantTotalValue = $grantTotal.textContent;\n $('body').on('cart:update', function () {\n var newGrantTotalValue = $grantTotal.textContent;\n if (newGrantTotalValue !== '' && newGrantTotalValue !== currentGrantTotalValue) {\n currentGrantTotalValue = newGrantTotalValue;\n var updateCartTotals = document.createEvent('Event');\n updateCartTotals.initEvent('updateCartTotals', true, true);\n document.querySelector('body').addEventListener('updateCartTotals', function () {\n 'braintree:updateCartTotals';\n }, false);\n document.querySelector('body').dispatchEvent(updateCartTotals);\n }\n });\n }\n}\n\nfunction continueButtonToggle(flag) {\n var stage = window.location.hash.substring(1);\n if (stage !== 'placeOrder' && stage !== 'shipping' && stage !== null && stage !== '') {\n if (flag) {\n $continueButton.style.display = 'none';\n } else {\n $continueButton.style.display = '';\n }\n }\n}\n\n\nfunction paymentMethodChangeHandle(currentTab) {\n document.querySelectorAll('.payment-options[role=tablist] a[data-toggle=\"tab\"]').forEach(function (el) {\n var $tabContent = document.querySelector(el.getAttribute('href'));\n\n if (el === currentTab) {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.removeAttribute('disabled', 'disabled');\n });\n $tabContent.querySelectorAll('select.no-disable').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n continueButtonToggle(JSON.parse($tabContent.getAttribute('data-paypal-is-hide-continue-button')));\n } else {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n }\n });\n}\n\nfunction getPaymentMethodToLowerCase(paymentMethodName) {\n var paymentMethod = paymentMethodName.split('_');\n if (paymentMethod.length === 1) {\n return paymentMethodName;\n }\n paymentMethod.forEach(function (element, index) {\n paymentMethod[index] = element.charAt(0) + element.slice(1).toLocaleLowerCase();\n });\n return paymentMethod[1] ?\n paymentMethod[0] + ' ' + paymentMethod[1] :\n paymentMethod[0];\n}\n\nfunction updateCheckoutView(e, data) {\n var $paymentSummary = document.querySelector('.summary-details .braintree-payment-details');\n var htmlToAppend = '';\n var order = data.order;\n\n if (order.billing.payment && order.billing.payment.selectedPaymentInstruments\n && order.billing.payment.selectedPaymentInstruments.length > 0) {\n htmlToAppend += '
' + getPaymentMethodToLowerCase(order.billing.payment.selectedPaymentInstruments[0].paymentMethod) + '
';\n if (order.billing.payment.selectedPaymentInstruments[0].creditCardNumber) {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].creditCardNumber + '
';\n }\n let gpCardDescription = document.querySelector('#braintreeGooglePayCardDescription').value;\n if (order.billing.payment.selectedPaymentInstruments[0].paymentMethod === 'GooglePay' && gpCardDescription) {\n let gpCardDescriptionData = gpCardDescription.split(' ');\n htmlToAppend += '
' + gpCardDescriptionData[0] + '....' + gpCardDescriptionData[1] + '
';\n }\n if (order.billing.payment.selectedPaymentInstruments[0].type) {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].type + '
';\n }\n htmlToAppend += '
' + order.priceTotal.charAt(0) + order.billing.payment.selectedPaymentInstruments[0].amount + '
';\n }\n\n if ($paymentSummary) {\n $paymentSummary.innerHTML = htmlToAppend;\n }\n}\n\nfunction isEmailValid(email) {\n if (!email.checkValidity()) {\n return false;\n }\n if (email.checkValidity() && email.classList.contains('is-invalid')) {\n email.classList.remove('is-invalid');\n }\n return true;\n}\n/*\n Adding *active* line to the tab-content class in a case if it isn't already active\n Use case: customer checkout from cart (page) and\n (under the place Order page) hit the 'edit' button\n**/\nfunction updatePaymentMethodTab() {\n let paymentMethodName = document.querySelectorAll('[data-braintree-payment-method]')[0].dataset.braintreePaymentMethod;\n let content = document.querySelector(`.js_braintree_${paymentMethodName.toLowerCase()}Content`).classList.contains('active');\n if (!content) {\n document.querySelectorAll(`[data-method-id=${paymentMethodName}]`)[0].children[0].click();\n }\n}\n\nmodule.exports = {\n initWathcherCartUpdate,\n paymentMethodChangeHandle,\n continueButtonToggle,\n updateCheckoutView,\n isEmailValid,\n updatePaymentMethodTab\n};\n","\nmodule.exports = function (containerElement) {\n if (!containerElement) {\n console.error('Braintree: No container for showing loaders');\n }\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n this.containerEl.style.display = 'block';\n };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\n };\n return new Constructor();\n};\n","'use strict';\nvar braintreeLocal = require('../braintreeLocal');\nvar $lpmButton = document.querySelectorAll('.lpmButton');\n\n$lpmButton.forEach(function (el) {\n var $btn = el;\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n var localIns = braintreeLocal.init(config, $btn);\n localIns.createLocalPayment();\n});\n","'use strict';\n\nvar paypalHelper = require('./paypalHelper');\nvar payPal = require('../braintreePaypal');\nvar braintreeUtils = require('../braintreeUtils');\n\nvar $paypalMinicartButton;\nvar $paypalCartButton = document.querySelector('.js_braintree_paypal_cart_button');\nvar $paypalBillingButton = document.querySelector('.js_braintree_paypal_billing_button');\n\nfunction miniCartButton() {\n document.querySelectorAll('.js_braintree_paypal_cart_button').forEach(function (el) {\n var $btn = el;\n if (JSON.parse($btn.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error(el, 'not valid data-braintree-config');\n return;\n }\n $paypalMinicartButton = document.querySelector('.paypalMinicartButton');\n if ($paypalMinicartButton && config.options.amount === 0) {\n $paypalMinicartButton.style.display = 'none';\n }\n config.paypalConfig = config.paypalConfig || {};\n\n if (config.billingAgreementFlow) {\n var billingAgreementFlowConfig = {\n isShippingAddressExist: config.billingAgreementFlow.isShippingAddressExist,\n startBillingAgreementCheckoutUrl: config.billingAgreementFlow.startBillingAgreementCheckoutUrl\n };\n if (!config.paypalConfig.style) {\n config.paypalConfig.style = {\n layout: 'horizontal',\n label: 'paypal',\n maxbuttons: 1,\n fundingicons: false,\n shape: 'rect',\n size: 'responsive',\n tagline: false\n };\n }\n config.paypalConfig.style.maxbuttons = 1;\n config.paypalConfig.createBillingAgreement = function () { };\n config.paypalConfig.onApprove = function () { };\n config.paypalConfig.onInit = function (_, actions) {\n return actions.disable();\n };\n config.paypalConfig.onClick = function () {\n if (config.options.amount === 0) {\n var zeroAmountErrorMsg = 'Order total 0 is not allowed for PayPal';\n if ($paypalCartButton) paypalHelper.showCartErrorMsg(zeroAmountErrorMsg);\n if ($paypalBillingButton) paypalHelper.showCheckoutErrorMsg(zeroAmountErrorMsg);\n return;\n }\n if (billingAgreementFlowConfig.isShippingAddressExist) {\n window.location.href = billingAgreementFlowConfig.startBillingAgreementCheckoutUrl;\n return;\n }\n if (document.querySelector('.popover.popover-bottom.show')) {\n document.querySelector('.popover.popover-bottom.show').classList.remove('show');\n }\n paypalHelper.appendShippingAddressModal();\n };\n delete config.billingAgreementFlow;\n }\n\n config.onTokenizePayment = function (payload, btnInstance) {\n var that = btnInstance;\n var params = btnInstance.params;\n var postData = {\n braintreePaypalNonce: payload.nonce\n };\n\n if (params.riskData) {\n postData.riskData = params.riskData;\n }\n\n if (payload.details) {\n var details = payload.details;\n if (!details.billingAddress) {\n that.er.show('Merchant PayPal account does not support the Billing Address retrieving. Contact PayPal for details on eligibility and enabling this feature.');\n\n return;\n }\n var billingAddressData = paypalHelper.createBillingAddressData(details.billingAddress, details);\n postData.braintreePaypalBillingAddress = billingAddressData;\n var shippingAddressData = details.shippingAddress ? paypalHelper.createShippingAddressData(details.shippingAddress, details) : '{}';\n postData.braintreePaypalShippingAddress = shippingAddressData;\n }\n\n if (params.options.flow === 'vault') {\n postData.braintreeSavePaypalAccount = 'true';\n }\n\n if (params.options.offerCredit) {\n postData.braintreeIsPaypalCredit = 'true';\n }\n\n if (params.customFields) {\n postData.braintreePaypalCustomFields = JSON.stringify(params.customFields);\n }\n\n braintreeUtils.postData(params.paypalHandle, postData);\n };\n\n var paypalIns = payPal.init(config, $btn);\n\n function updateCartPaypalAmount() { // eslint-disable-line require-jsdoc\n paypalIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n paypalIns.loader.hide();\n paypalIns.updateAmount(data.amount);\n },\n error: function () {\n window.location.reload();\n }\n });\n }\n $('body').on('cart:update', function () {\n $paypalMinicartButton = document.querySelector('.paypalMinicartButton');\n var $totalPrice = document.querySelector('.sub-total');\n if ($paypalMinicartButton && $totalPrice) {\n var isZeroAmount = $totalPrice.innerHTML.substring(1) === '0.00';\n $paypalMinicartButton.style.display = isZeroAmount ? 'none' : '';\n }\n });\n\n $('body').on('braintree:updateCartTotals', updateCartPaypalAmount);\n $btn.setAttribute('data-is-inited', true);\n });\n\n var $hideModalBtn = document.querySelector('.cancel-btn');\n var $saveAddressBtn = document.querySelector('.saveAddressBtn');\n var $addressForm = document.querySelector('form.address-form');\n function hideModal() {\n $('#paypalAddShippingAddressModal').modal('hide');\n }\n\n $('form input, form select').on('invalid', paypalHelper.showFormErrorMsg);\n\n if ($hideModalBtn) {\n $hideModalBtn.addEventListener('click', hideModal);\n }\n if ($saveAddressBtn) {\n $saveAddressBtn.addEventListener('click', paypalHelper.clearFormErrors);\n }\n if ($addressForm) {\n $('form.address-form').submit(paypalHelper.submitAddressFrom);\n }\n}\n\nvar observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.addedNodes.length < 2) {\n return;\n }\n miniCartButton();\n });\n});\n\nfunction changeUrlForMiniCartBtn() {\n if (document.querySelector('#paypalAddShippingAddressModal')) {\n var $minicart = document.querySelector('.minicart');\n var oldUrl = $minicart.getAttribute('data-action-url');\n var newUrl = '?isCartPage=true';\n $minicart.setAttribute('data-action-url', (oldUrl + newUrl));\n }\n}\n\nmodule.exports = {\n miniCartButton,\n observer,\n changeUrlForMiniCartBtn\n};\n","'use strict';\nvar paypalHelper = require('./paypalHelper');\nvar payPal = require('../braintreePaypal');\n\nvar $braintreePaypalNonce = document.querySelector('#braintreePaypalNonce');\n\nfunction submitAddPaypalAccountForm() {\n $('.js_braintree_addPaypalAccountForm').submit(function () {\n var $addPaypalAccountForm = $('.js_braintree_addPaypalAccountForm');\n var $braintreeFormErrorContainer = document.querySelector('#braintreeFormErrorContainer');\n $addPaypalAccountForm.spinner().start();\n $.ajax({\n url: $addPaypalAccountForm.attr('action'),\n type: 'post',\n dataType: 'json',\n data: $addPaypalAccountForm.serialize(),\n success: function (data) {\n $addPaypalAccountForm.spinner().stop();\n if (!data.success) {\n $braintreeFormErrorContainer.textContent = data.error;\n if (!$braintreeFormErrorContainer.hasChildNodes()) {\n $braintreeFormErrorContainer.setAttribute('style', 'margin: 10px 0');\n }\n } else {\n location.href = data.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $addPaypalAccountForm.spinner().stop();\n }\n });\n return false;\n });\n}\n\nfunction initAddPaypalAccount() {\n var $braintreePaypalEmail = document.querySelector('#braintreePaypalEmail');\n var $braintreePaypalBillingAddress = document.querySelector('#braintreePaypalBillingAddress');\n document.querySelectorAll('.js_braintree_accountPaypalButton').forEach(function (el) {\n document.querySelector('button[name=save]').setAttribute('style', 'filter: grayscale(70%)');\n var $btn = el;\n if (JSON.parse($btn.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error(el, 'not valid data-braintree-config');\n return;\n }\n\n var $errorContainer = document.querySelector('#braintreeFormErrorContainer');\n config.$loaderContainer = document.querySelector('#braintreePayPalAccLoader');\n config.$errorContainer = $errorContainer;\n config.onTokenizePayment = function (data) {\n function showAddedPayPalAccount() {\n var $savePayPalAccountBtn = document.querySelector('.savePayPalAccountBtn');\n document.querySelector('.js_braintree_accountPaypalButton').style.display = 'none';\n $errorContainer.setAttribute('style', 'margin: 0');\n document.querySelector('.paypal-account-email').textContent = data.details.email;\n $savePayPalAccountBtn.removeAttribute('disabled');\n $savePayPalAccountBtn.removeAttribute('style', 'filter: grayscale(70%)');\n }\n\n if ($braintreePaypalNonce) {\n $braintreePaypalNonce.value = data.nonce;\n }\n if (data.details) {\n var details = data.details;\n if ($braintreePaypalEmail) {\n $braintreePaypalEmail.value = data.details.email;\n }\n if (details.billingAddress) {\n var billingAddressData = paypalHelper.createBillingAddressData(details.billingAddress, details);\n $braintreePaypalBillingAddress.value = billingAddressData;\n }\n if (details.email) {\n showAddedPayPalAccount();\n }\n // 19.2.1 unnecessary code - shippingAddress is not written here\n // if (details.shippingAddress) {\n // var shippingAddressData = paypalHelper.createShippingAddressData(details.shippingAddress, details);\n // var $braintreePaypalShippingAddressInput = document.querySelector('input[name=braintreePaypalShippingAddress]');\n // if ($braintreePaypalShippingAddressInput) {\n // $braintreePaypalShippingAddressInput.value = shippingAddressData;\n // }\n // }\n }\n $errorContainer.textContent = '';\n };\n payPal.init(config, $btn);\n $btn.setAttribute('data-is-inited', true);\n submitAddPaypalAccountForm();\n });\n}\n\nmodule.exports = {\n initAddPaypalAccount\n};\n","'use strict';\nvar braintreeUtils = require('../braintreeUtils');\n\nfunction clearFormErrors() {\n document.querySelector('.address-form').querySelectorAll('.form-control.is-invalid').forEach(function (el) {\n el.classList.remove('is-invalid');\n });\n}\n\nfunction showFormErrorMsg(e) {\n if (document.querySelector('.address-form')) {\n document.querySelector('.address-form').querySelectorAll('.form-control').forEach(function (el) {\n e.preventDefault();\n el.setCustomValidity('');\n if (!el.validity.valid) {\n var validationMessage = el.validationMessage;\n el.classList.add('is-invalid');\n if (el.classList.contains('is-invalid')) {\n document.querySelectorAll('.invalid-feedback').forEach(function (input) {\n input.textContent = validationMessage;\n });\n }\n }\n });\n }\n}\n\nfunction submitAddressFrom(e) {\n var $addressForm = $('form.address-form');\n e.preventDefault();\n e.stopImmediatePropagation();\n $addressForm.spinner().start();\n var $braintreePDPButton = document.querySelector('.braintree_pdp_button');\n if ($braintreePDPButton && $braintreePDPButton.style.display === '') {\n var res = braintreeUtils.pdpOnlickForAsignedPaypalPayment();\n if (res.error) {\n braintreeUtils.createErrorInstance($addressForm.find('#braintreeFormErrorContainer')).show(res.message);\n $addressForm.spinner().stop();\n return true;\n }\n }\n // 19.2.1 unnecessary code ?\n // $('form.address-form').trigger('address:submit', e);\n $.ajax({\n url: $addressForm.attr('action'),\n type: 'post',\n dataType: 'json',\n data: $addressForm.serialize(),\n success: function (data) {\n $addressForm.spinner().stop();\n location.href = data.redirectUrl;\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $addressForm.spinner().stop();\n }\n });\n return false;\n}\n\nvar formValidationConrol = function (validateActions) {\n var isFormValid = true;\n if (isFormValid) {\n validateActions.enable();\n } else {\n validateActions.disable();\n }\n};\n\nfunction appendShippingAddressModal() {\n document.querySelector('body').appendChild(document.querySelector('#paypalAddShippingAddressModal'));\n document.querySelector('#paypalAddShippingAddressModal').querySelectorAll('#braintreeFormErrorContainer').innerHTML = null;\n $('#paypalAddShippingAddressModal').modal();\n}\n\nfunction initAccountListAndSaveFunctionality() {\n var $accountsList = document.querySelector('#braintreePaypalAccountsList');\n var $savePaypalAccountCountainerEl = document.querySelector('#braintreeSavePaypalAccountContainer');\n var $savePaypalAccountEl = document.querySelector('#braintreeSavePaypalAccount');\n var $paypalAccounMakeDefaultEl = document.querySelector('#braintreePaypalAccountMakeDefault');\n\n function accountsListChange() { // eslint-disable-line require-jsdoc\n if ($accountsList.value === 'newaccount') {\n if ($savePaypalAccountCountainerEl) {\n $savePaypalAccountCountainerEl.style.display = '';\n $savePaypalAccountEl.checked = true;\n $savePaypalAccountEl.disabled = false;\n }\n if ($paypalAccounMakeDefaultEl) {\n $paypalAccounMakeDefaultEl.disabled = false;\n }\n } else {\n var selectedAccount = braintreeUtils.getSelectedData($accountsList);\n if (selectedAccount && $paypalAccounMakeDefaultEl) {\n if (selectedAccount['data-default'].value === 'true') {\n $paypalAccounMakeDefaultEl.disabled = true;\n } else {\n $paypalAccounMakeDefaultEl.disabled = false;\n }\n $paypalAccounMakeDefaultEl.checked = true;\n }\n if ($savePaypalAccountCountainerEl) {\n $savePaypalAccountEl.checked = false;\n $savePaypalAccountCountainerEl.style.display = 'none';\n }\n }\n }\n\n if ($savePaypalAccountEl) {\n $savePaypalAccountEl.addEventListener('change', function () {\n if ($savePaypalAccountEl.checked) {\n $paypalAccounMakeDefaultEl.disabled = false;\n $paypalAccounMakeDefaultEl.checked = true;\n } else {\n $paypalAccounMakeDefaultEl.disabled = true;\n $paypalAccounMakeDefaultEl.checked = false;\n }\n });\n }\n if ($accountsList) {\n $accountsList.addEventListener('change', accountsListChange);\n accountsListChange();\n }\n}\n\nfunction createShippingAddressData(inpShippingAddress, details) {\n var shippingAddress = inpShippingAddress;\n if (!shippingAddress.recipientName) {\n shippingAddress.firstName = details.firstName;\n shippingAddress.lastName = details.lastName;\n shippingAddress.recipientName = details.firstName + ' ' + details.lastName;\n }\n shippingAddress.email = details.email;\n shippingAddress.phone = details.phone;\n shippingAddress.countryCodeAlpha2 = shippingAddress.countryCode;\n shippingAddress.streetAddress = shippingAddress.line1;\n shippingAddress.extendedAddress = shippingAddress.line2;\n shippingAddress.locality = shippingAddress.city;\n shippingAddress.region = shippingAddress.state;\n shippingAddress.postalCode = shippingAddress.postalCode;\n return JSON.stringify(shippingAddress);\n}\n\nfunction createBillingAddressData(inpBillingAddress, details) {\n var billingAddress = inpBillingAddress;\n billingAddress.firstName = details.firstName;\n billingAddress.lastName = details.lastName;\n billingAddress.email = details.email;\n billingAddress.phone = details.phone;\n billingAddress.countryCodeAlpha2 = billingAddress.countryCode;\n billingAddress.streetAddress = billingAddress.line1;\n billingAddress.extendedAddress = billingAddress.line2;\n billingAddress.locality = billingAddress.city;\n billingAddress.region = billingAddress.state;\n return JSON.stringify(billingAddress);\n}\n\nfunction appendToUrl(url, param) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(param).map(function (key) {\n return key + '=' + encodeURIComponent(param[key]);\n }).join('&');\n\n return newUrl;\n}\n\nfunction showPayPalAccount(braintreePaypalEmail, braintreePaypalNonce) {\n var braintreePaypalAccount = document.getElementById('braintreePaypalAccount');\n var paypalAccount = document.querySelector('.form-group.js_braintree_used_paypal_account');\n var $paypalContent = document.querySelector('.js_braintree_paypalContent');\n\n var customerAuthenticated = JSON.parse(braintreePaypalAccount.dataset.customerAuthenticated);\n\n if (customerAuthenticated || (braintreePaypalEmail && braintreePaypalAccount.options[0].text !== 'PayPal')) {\n if (braintreePaypalNonce && document.getElementById('braintreePaypalAccountsList')) {\n return true;\n }\n\n document.querySelectorAll('.js_braintree_paypalContent .custom-checkbox').forEach((el) => { el.style.display = 'none'; });\n }\n\n braintreePaypalAccount.options[0].text = braintreePaypalEmail;\n // eslint-disable-next-line no-unused-expressions, no-mixed-operators\n paypalAccount.classList.contains('used-paypal-account') || paypalAccount.classList.remove('used-paypal-account-hide') && paypalAccount.classList.add('used-paypal-account');\n document.querySelector('.js_braintree_paypal_billing_button').style.display = 'none';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n}\n\nfunction showCartErrorMsg(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
\n \n ${message}\n
`\n );\n window.scrollTo(0, 0);\n}\n\nfunction showCheckoutErrorMsg(message) {\n document.querySelector('.error-message-text').textContent = '';\n document.querySelector('.error-message').style.display = 'block';\n document.querySelector('.error-message-text').append(message);\n window.scrollTo(0, 0);\n}\n\nmodule.exports = {\n showFormErrorMsg,\n clearFormErrors,\n submitAddressFrom,\n formValidationConrol,\n appendShippingAddressModal,\n initAccountListAndSaveFunctionality,\n createShippingAddressData,\n createBillingAddressData,\n appendToUrl,\n showPayPalAccount,\n showCartErrorMsg,\n showCheckoutErrorMsg\n};\n","'use strict';\nvar paypalHelper = require('./paypalHelper');\nvar helper = require('../helper');\nvar payPal = require('../braintreePaypal');\n\nvar $paypalContent = document.querySelector('.js_braintree_paypalContent');\nvar $paypalButton = document.querySelector('.js_braintree_paypal_billing_button');\nvar $braintreePaypalAccountsList = document.querySelector('#braintreePaypalAccountsList');\nvar $braintreePaypalBillingAddressInput = document.querySelector('input[name=braintreePaypalBillingAddress]');\nvar $braintreePaypalShippingAddressInput = document.querySelector('input[name=braintreePaypalShippingAddress]');\nvar $braintreePaypalNonceInput = document.querySelector('input[name=braintreePaypalNonce]');\nvar $braintreePaypalEmail = document.querySelector('#braintreePaypalEmail');\nvar $braintreePaypalNonce = document.querySelector('#braintreePaypalNonce');\n\nfunction makePaypalPayment(continueButton) {\n var config = JSON.parse($paypalButton.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n console.error($paypalButton, 'not valid data-braintree-config');\n }\n\n function hideShowButtons() {\n if ($braintreePaypalAccountsList.value === 'newaccount') {\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n continueButton.style.display = 'none';\n $paypalButton.style.display = '';\n } else {\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n continueButton.style.display = '';\n $paypalButton.style.display = 'none';\n }\n }\n\n if ($braintreePaypalAccountsList) {\n $braintreePaypalAccountsList.addEventListener('change', function () {\n hideShowButtons();\n });\n }\n\n paypalHelper.initAccountListAndSaveFunctionality();\n\n config.onTokenizePayment = function (data, btnInstance) {\n var params = btnInstance.params;\n\n if ($braintreePaypalNonceInput) {\n $braintreePaypalNonceInput.value = data.nonce;\n }\n $braintreePaypalNonce.value = data.nonce;\n\n if (data.details) {\n var details = data.details;\n $braintreePaypalEmail.value = data.details.email;\n document.querySelector('#braintreePaypalAccount > option').value = data.details.email;\n helper.continueButtonToggle(false);\n\n if (details.billingAddress && params.isOverrideBillingAddress) {\n var billingAddressData = paypalHelper.createBillingAddressData(details.billingAddress, details);\n if ($braintreePaypalBillingAddressInput) {\n $braintreePaypalBillingAddressInput.value = billingAddressData;\n }\n }\n if (details.shippingAddress) {\n var shippingAddressData = paypalHelper.createShippingAddressData(details.shippingAddress, details);\n if ($braintreePaypalShippingAddressInput) {\n $braintreePaypalShippingAddressInput.value = shippingAddressData;\n }\n }\n if ($braintreePaypalAccountsList && $braintreePaypalAccountsList.value === 'newaccount') {\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n continueButton.style.display = 'none';\n }\n }\n paypalHelper.showPayPalAccount(data.details.email, data.nonce);\n continueButton.click();\n };\n\n config.paypalConfig = config.paypalConfig || {};\n config.paypalConfig.validate = function (validateActions) {\n paypalHelper.formValidationConrol(validateActions, true);\n };\n\n var paypalIns = payPal.init(config, $paypalButton);\n\n var isShippedAndAddressOverride = config.isShippedAndAddressOverride;\n if (document.querySelector('.js_braintree_used_paypal_account').classList.contains('used-paypal-account')) {\n paypalHelper.showPayPalAccount(document.querySelector('#braintreePaypalEmail').value);\n }\n function updateAmountAndShippingData() { // eslint-disable-line require-jsdoc\n paypalIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n paypalIns.loader.hide();\n paypalIns.updateAmount(data.amount);\n if (isShippedAndAddressOverride) {\n paypalIns.updateShippingAddress(data.shippingAddress);\n var $paypalAddress = document.querySelector('input[name=braintreePaypalShippingAddress]');\n if ($paypalAddress.value !== '') {\n var newPayPalAddress = $.extend({}, JSON.parse($paypalAddress.value), data.shippingAddress);\n $paypalAddress.value = JSON.stringify(newPayPalAddress);\n }\n }\n },\n error: function () {\n window.location.reload();\n }\n });\n }\n\n $('body').on('checkout:updateCheckoutView', updateAmountAndShippingData);\n updateAmountAndShippingData();\n}\n\nmodule.exports = {\n makePaypalPayment\n};\n","'use strict';\nvar braintreeVenmo = require('../braintreeVenmo');\n\nfunction submitAddVenmoAccountForm() {\n $('.js_braintree_addVenmoAccountForm').submit(function () {\n var $form = $(this);\n var $btFormErrorContainer = document.querySelector('#braintreeFormErrorContainer');\n\n $form.spinner().start();\n $.ajax({\n url: $form.attr('action'),\n type: 'post',\n dataType: 'json',\n data: $form.serialize(),\n success: function (data) {\n $form.spinner().stop();\n if (!data.success) {\n $btFormErrorContainer.textContent = data.error;\n } else {\n location.href = data.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $form.spinner().stop();\n }\n });\n return false;\n });\n}\n\nfunction initAddVenmoAccount() {\n var $btn = document.querySelector('.js_braintree_accountVenmoButton');\n var $btFormErrorContainer = document.querySelector('#braintreeFormErrorContainer');\n var $btVenmoLoader = document.querySelector('#braintreeVenmoLoader');\n var $buttonSave = document.querySelector('button[name=save]');\n\n if (JSON.parse($btn.getAttribute('data-is-inited'))) {\n return;\n }\n var config = JSON.parse($btn.getAttribute('data-braintree-config'));\n\n if (typeof config !== 'object' || config === null) {\n console.error($btn, 'not valid data-braintree-config');\n return;\n }\n\n config.$loaderContainer = $btVenmoLoader;\n config.$errorContainer = $btFormErrorContainer;\n config.deviceNotSupportVenmo = function () {\n $btFormErrorContainer.textContent = config.messages.VENMO_BROWSER_NOT_SUPPORTED;\n };\n config.onTokenizePayment = function (data) {\n document.querySelector('.braintree_accountVenmoButton').setAttribute('style', 'filter: grayscale(70%)');\n $buttonSave.removeAttribute('style');\n $btn.setAttribute('style', 'pointer-events:none');\n\n document.querySelector('#braintreeVenmoNonce').value = data.nonce;\n $btFormErrorContainer.textContent = '';\n $btFormErrorContainer.style.display = 'none';\n\n document.querySelector('.venmoUsername').textContent = data.details.username;\n\n $buttonSave.removeAttribute('disabled');\n document.querySelector('input[type=checkbox]').removeAttribute('disabled');\n $btVenmoLoader.style.display = 'none';\n };\n\n braintreeVenmo.init(config, $btn);\n $buttonSave.setAttribute('style', 'filter: grayscale(70%)');\n $btn.setAttribute('isInited', true);\n submitAddVenmoAccountForm();\n}\n\nmodule.exports = {\n initAddVenmoAccount\n};\n","'use strict';\nvar braintreeUtils = require('../braintreeUtils');\nvar helper = require('../helper');\n\nvar $accountsList = document.querySelector('#braintreeVenmoAccountsList');\nvar $saveVenmoAccountCountainerEl = document.querySelector('#braintreeSaveVenmoAccountContainer');\nvar $saveVenmoAccountEl = document.querySelector('#braintreeSaveVenmoAccount');\nvar $venmoAccounMakeDefaultEl = document.querySelector('#braintreeVenmoAccountMakeDefault');\n\nvar $venmoButton = document.querySelector('.js_braintree_venmo_button');\nvar $braintreeVenmoAccount = document.getElementById('braintreeVenmoAccount');\nvar $venmoAccount = document.querySelector('.js_braintree_used_venmo_account');\nvar $braintreeVenmoUserId = document.querySelector('#braintreeVenmoUserId');\n\nvar $venmoContent = document.querySelector('.js_braintree_venmoContent');\n\n\nfunction initAccountListAndSaveFunctionality() {\n function accountsListChange() { // eslint-disable-line require-jsdoc\n if ($accountsList.value === 'newaccount') {\n if ($saveVenmoAccountCountainerEl) {\n $saveVenmoAccountCountainerEl.style.display = '';\n $saveVenmoAccountEl.checked = true;\n $saveVenmoAccountEl.disabled = false;\n }\n if ($venmoAccounMakeDefaultEl) {\n $venmoAccounMakeDefaultEl.disabled = false;\n }\n } else {\n var selectedAccount = braintreeUtils.getSelectedData($accountsList);\n if (selectedAccount && $venmoAccounMakeDefaultEl) {\n if (selectedAccount['data-default'].value === 'true') {\n $venmoAccounMakeDefaultEl.disabled = true;\n } else {\n $venmoAccounMakeDefaultEl.disabled = false;\n }\n $venmoAccounMakeDefaultEl.checked = true;\n }\n if ($saveVenmoAccountCountainerEl) {\n $saveVenmoAccountEl.checked = false;\n $saveVenmoAccountCountainerEl.style.display = 'none';\n }\n }\n }\n\n if ($saveVenmoAccountEl) {\n $saveVenmoAccountEl.addEventListener('change', function () {\n if ($saveVenmoAccountEl.checked) {\n $venmoAccounMakeDefaultEl.disabled = false;\n $venmoAccounMakeDefaultEl.checked = true;\n } else {\n $venmoAccounMakeDefaultEl.disabled = true;\n $venmoAccounMakeDefaultEl.checked = false;\n }\n });\n }\n\n if ($accountsList) {\n $accountsList.addEventListener('change', accountsListChange);\n accountsListChange();\n }\n}\n\nfunction showVenmoAccount() {\n if (!$accountsList) {\n $venmoAccount.classList.remove('used-venmo-account-hide');\n $braintreeVenmoAccount.options[0].text = $braintreeVenmoUserId.value;\n }\n\n $venmoButton.style.display = 'none';\n helper.continueButtonToggle(false);\n}\n\nfunction hideShowButtons() {\n if ($accountsList.value === 'newaccount') {\n $venmoButton.style.display = '';\n helper.continueButtonToggle(true);\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', true);\n } else {\n $venmoButton.style.display = 'none';\n helper.continueButtonToggle(false);\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n }\n}\n\nfunction createLoaderContainter($target) {\n var $loaderContainter = document.createElement('div');\n $loaderContainter.className = 'venmo-braintree-loader';\n helper.continueButtonToggle(true);\n\n return $target.parentNode.insertBefore($loaderContainter, $target);\n}\n\nfunction hideVenmoButton() {\n $venmoButton.parentElement.firstElementChild.style.display = 'none';\n document.querySelector('.payment-options[role=tablist] .nav-item[data-method-id=\"Venmo\"]').style.display = 'none'; // Remove the venmo select payment method radiobutton\n}\n\nmodule.exports = {\n showVenmoAccount,\n initAccountListAndSaveFunctionality,\n hideShowButtons,\n createLoaderContainter,\n hideVenmoButton\n};\n","'use strict';\nvar braintreeVenmo = require('../braintreeVenmo');\nvar venmoHelper = require('./venmoHelper');\nvar loaderInstance = require('../loaderHelper');\n\nvar $venmoButton = document.querySelector('.js_braintree_venmo_button');\nvar $btVermoAccountsList = document.querySelector('#braintreeVenmoAccountsList');\nvar $braintreeVenmoNonce = document.querySelector('#braintreeVenmoNonce');\nvar $braintreeVenmoUserId = document.querySelector('#braintreeVenmoUserId');\nvar $submitShippingBtn = document.querySelector('.button, .submit-shipping');\nvar $contactEmail = document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_email]');\nvar $hideVenmoButton = document.querySelector('.braintree-venmo-pay-button');\nvar $billingForm = document.querySelector('.card-body [id=dwfrm_billing]');\nvar $venmoContent = document.querySelector('.js_braintree_venmoContent');\n\nfunction makeVenmoPayment(continueButton) {\n var config = JSON.parse($venmoButton.getAttribute('data-braintree-config'));\n var isBrowserSupported = localStorage.getItem('venmoBrowserSupported');\n\n if (typeof config !== 'object' || config === null) {\n // eslint-disable-next-line no-console\n console.error($venmoButton, 'not valid data-braintree-config');\n }\n if (isBrowserSupported !== null & isBrowserSupported === 'false') {\n venmoHelper.hideVenmoButton();\n return false;\n }\n if (JSON.parse($hideVenmoButton.getAttribute('data-is-hide-venmo-button')) && $btVermoAccountsList !== 'newaccount') {\n $venmoButton.style.display = 'none';\n }\n\n venmoHelper.initAccountListAndSaveFunctionality();\n\n if ($btVermoAccountsList) {\n $btVermoAccountsList.addEventListener('change', function () {\n venmoHelper.hideShowButtons();\n });\n venmoHelper.hideShowButtons();\n }\n\n config.onClick = function () {\n if ($billingForm.checkValidity()) {\n return true;\n }\n $contactEmail.classList.add('is-invalid');\n return false;\n };\n config.deviceNotSupportVenmo = function () {\n venmoHelper.hideVenmoButton();\n };\n config.onTokenizePayment = function (data) {\n var $loaderContainer = venmoHelper.createLoaderContainter(document.querySelector('.page'));\n loaderInstance($loaderContainer).show();\n localStorage.removeItem('venmoBrowserSupported');\n\n $braintreeVenmoNonce.value = data.nonce;\n $braintreeVenmoUserId.value = data.details.username;\n\n if (window.history.state !== 'shipping') {\n continueButton.click();\n document.querySelector('.venmo-braintree-loader').remove();\n return true;\n }\n\n // move to stage payment\n $submitShippingBtn.click();\n $venmoButton.setAttribute('data-is-valid-stage', true);\n $venmoButton.setAttribute('data-user-email', $contactEmail.value);\n document.querySelector('.venmo-braintree-loader').remove();\n };\n\n /**\n * Init Venmo app with correct URL fragment (hash) to prevent Browser from opening the URL in a new tab.\n * Braintree JS SDK is preserving the URL in its entirety and modifies the URL fragment (hash)\n * to send back the results from Venmo (e.g. nonce, error message, etc.)\n *\n */\n var hashChange = new MutationObserver(function (mutations) {\n var correlationId = document.querySelector('#braintreeVenmoDeviceData').value || null;\n var mutation = mutations.find(function (element) {\n return element.attributeName === 'data-checkout-stage' && element.target.dataset.checkoutStage === 'payment';\n });\n\n if (!mutation) {\n return false;\n }\n if (!correlationId) {\n braintreeVenmo.init(config, $venmoButton);\n return true;\n }\n\n if ($braintreeVenmoNonce.value && JSON.parse($venmoButton.getAttribute('data-is-valid-stage'))) {\n $contactEmail.value = $venmoButton.getAttribute('data-user-email') || '';\n $venmoButton.setAttribute('data-is-valid-stage', false);\n continueButton.click();\n\n return true;\n }\n if ($venmoContent.classList.contains('active') && mutation.oldValue === 'placeOrder') {\n venmoHelper.showVenmoAccount();\n $venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n $hideVenmoButton.setAttribute('data-is-hide-venmo-button', true);\n }\n });\n\n hashChange.observe(document.querySelector('#checkout-main'), { attributeOldValue: true });\n}\n\nmodule.exports = {\n makeVenmoPayment\n};\n","require('./braintree/braintreeMFRA')();\n"],"sourceRoot":""}