{"version":3,"sources":["webpack:///webpack/bootstrap","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/braintreeSrc.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/paypal/paypalSavedAccountHandler.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/srcAccount.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/srcHelper.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/braintree/src/srcPayment.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/components/scrollAnimate.js","webpack:///./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;AACb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,eAAe,mBAAO,CAAC,mHAAsB;AAC7C,KAAK,gDAAgD,GAAG,mBAAO,CAAC,+FAAa;;;AAG7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtKa;AACb,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC/LA;AACa;AACb,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C,uBAAuB,mBAAO,CAAC,sIAA+B;;AAE9D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA,sBAAsB,mBAAO,CAAC,4FAAU;;AAExC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,sBAAsB,mBAAO,CAAC,4FAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACjUa;AACb,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C,mBAAmB,mBAAO,CAAC,sHAAuB;AAClD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAiE;AACjE;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,gEAAgE,wCAAwC;AACxG;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzIA;AACa;;AAEb;AACA,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C,mBAAmB,mBAAO,CAAC,sHAAuB;AAClD,KAAK,oBAAoB,GAAG,mBAAO,CAAC,4FAAU;AAC9C,oBAAoB,mBAAO,CAAC,uHAA6B;AACzD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA,6BAA6B,wCAAwC;AACrE,kGAAkG;AAClG;AACA;;AAEA,0EAA0E,gCAAgC;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB,SAAS,cAAc;AAChD;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,sDAAsD,8BAA8B;AACpF;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnJa;;AAEb;AACA;AACA,iBAAiB,mBAAO,CAAC,4FAAU;AACnC,yBAAyB,mBAAO,CAAC,8HAA2B;AAC5D,2BAA2B,mBAAO,CAAC,sIAA+B;AAClE,4BAA4B,mBAAO,CAAC,wIAAgC;AACpE,2BAA2B,mBAAO,CAAC,sIAA+B;AAClE,4BAA4B,mBAAO,CAAC,wIAAgC;AACpE,yBAAyB,mBAAO,CAAC,0HAAyB;AAC1D,wBAAwB,mBAAO,CAAC,wHAAwB;AACxD,wBAAwB,mBAAO,CAAC,wHAAwB;AACxD,oCAAoC,mBAAO,CAAC,gJAAoC;AAChF,gBAAgB,mBAAO,CAAC,oHAAsB,EAAE;AAChD;AACA;;AAEA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAO,CAAC,oHAAsB;AACrD,uBAAuB,mBAAO,CAAC,oHAAsB;AACrD;;AAEA,2BAA2B,mBAAO,CAAC,oIAA8B;AACjE,2BAA2B,mBAAO,CAAC,oIAA8B;AACjE;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAO,CAAC,4GAAkB;AACjD,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mEAAmE;;AAEnE;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,2DAA2D,kBAAkB;AAC7E;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrOA;AACA;;AAEa;;AAEb;AACA,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C,mBAAmB,mBAAO,CAAC,sHAAuB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtQA;AACa;AACb,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChHa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,eAAe;AACf,0BAA0B,EAAE;AAC5B,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;;;;;;;;;;;;;AClJA;AACa;;AAEb;AACA,qBAAqB,mBAAO,CAAC,4GAAkB;AAC/C,qBAAqB,mBAAO,CAAC,wGAAgB;;AAE7C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE;;AAEA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjIa;;AAEb,iBAAiB,mBAAO,CAAC,uHAAwB;AACjD,uBAAuB,mBAAO,CAAC,2HAAoB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iBAAiB;AAC1D;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC9Da;AACb,iBAAiB,mBAAO,CAAC,uHAAwB;;AAEjD;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClEa;AACb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD;AACA,aAAa,mBAAO,CAAC,6FAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,2CAA2C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB,QAAQ;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/Ra;;AAEb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,iBAAiB,mBAAO,CAAC,uHAAwB;AACjD,aAAa,mBAAO,CAAC,6FAAW;AAChC,uBAAuB,mBAAO,CAAC,uIAAgC;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAY,MAAM,SAAS;AAChD;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxIa;;AAEb,gBAAgB,mBAAO,CAAC,qHAAuB;AAC/C,qBAAqB,mBAAO,CAAC,yGAAiB;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;AC5Ea;AACb,aAAa,mBAAO,CAAC,6FAAW;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtGa;AACb,gBAAgB,mBAAO,CAAC,qHAAuB;AAC/C,sBAAsB,mBAAO,CAAC,wHAAmB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAO,CAAC,6FAAW;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC/Ga;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gCAAgC;AAC1F;AACA,qDAAqD,kBAAkB;AACvE;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;;AAEA;AACA,qDAAqD,kBAAkB;AACvE;;AAEA;AACA,0CAA0C,gCAAgC;AAC1E;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,mBAAO,CAAC,wGAAgB;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,4CAA4C,aAAa;;AAEzD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB,mBAAO,CAAC,sHAAuB;AAC/C,eAAe,mBAAO,CAAC,kHAAqB;AAC5C,mBAAmB,mBAAO,CAAC,kIAA6B;AACxD,oBAAoB,mBAAO,CAAC,sIAA+B;AAC3D,aAAa,mBAAO,CAAC,0GAAiB;AACtC,kBAAkB,mBAAO,CAAC,8HAA2B;;AAErD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChBa;AACb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;ACTY;;AAEb,mBAAmB,mBAAO,CAAC,+GAAgB;AAC3C,aAAa,mBAAO,CAAC,+GAAoB;AACzC,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,gCAAgC,mBAAO,CAAC,yIAA6B;;AAErE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,kJAAkJ;AAClJ;AACA;;AAEA;AACA;;AAEA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;;;;;;;;;;;;ACvGa;AACb,aAAa,mBAAO,CAAC,+GAAoB;AACzC,mBAAmB,mBAAO,CAAC,+GAAgB;AAC3C,aAAa,mBAAO,CAAC,6FAAW;AAChC,qBAAqB,mBAAO,CAAC,yGAAiB;AAC9C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,aAAa;AACb,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5Ga;AACb,aAAa,mBAAO,CAAC,6FAAW;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mGAAmG,2BAA2B,EAAE;AAChI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5Oa;AACb,mBAAmB,mBAAO,CAAC,+GAAgB;AAC3C,aAAa,mBAAO,CAAC,6FAAW;AAChC,aAAa,mBAAO,CAAC,+GAAoB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC1Ka;;AAEb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,qBAAqB,mBAAO,CAAC,yGAAiB;AAC9C,KAAK,+BAA+B,GAAG,mBAAO,CAAC,+GAAgB;;AAE/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uEAAuE;AACvE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;AC5FA,UAAU,mBAAO,CAAC,yGAAiB;AACnC,qBAAqB,mBAAO,CAAC,yGAAiB;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,6FAAW;AAChC;;;AAGA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxGa;AACb,UAAU,mBAAO,CAAC,yGAAiB;AACnC,gBAAgB,mBAAO,CAAC,sGAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,mBAAO,CAAC,6FAAW;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AC3Ea;AACb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,kBAAkB,mBAAO,CAAC,4GAAe;AACzC,aAAa,mBAAO,CAAC,6FAAW;AAChC,qBAAqB,mBAAO,CAAC,yGAAiB;AAC9C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,aAAa;AACb,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9Ga;AACb,aAAa,mBAAO,CAAC,6FAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sHAAsH;AACtH;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,MAAM;AAChC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrHa;AACb,qBAAqB,mBAAO,CAAC,6GAAmB;AAChD,kBAAkB,mBAAO,CAAC,4GAAe;AACzC,qBAAqB,mBAAO,CAAC,yGAAiB;AAC9C,aAAa,mBAAO,CAAC,6FAAW;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,kEAAkE,0BAA0B;AAC5F;;AAEA;AACA;AACA;;;;;;;;;;;;;AClHa;;AAEb;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;;;;;;;;;;ACVA,mBAAO,CAAC,oHAA2B","file":"default/js/int_braintree.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js\");\n","'use strict';\nvar braintreeUtils = require('../braintreeUtils');\nvar applePay = require('../braintreeApplepay');\nvar { isValidInputField, removeActiveSessionPayment } = require('./../helper');\n\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\"]');\nvar $emailField = document.querySelector('[name=dwfrm_coCustomer_email]');\nvar $phoneField = document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]');\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 // eslint-disable-next-line no-console\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 braintreeApplePayDeviceDataInput: document.querySelector('input[name=braintreeApplePayDeviceDataInput]').value\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 // eslint-disable-next-line no-console\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 config.isRequiredBillingContactFields = true;\n var applePayIns = applePay.init(config, $applePayButton);\n\n function authorizedApplePayPayment(e) {\n removeActiveSessionPayment();\n applePayIns.loader.show();\n document.querySelector(('#braintreeApplePayNonce')).value = e.detail.data.nonce;\n document.querySelector(('#braintreeApplePayBillingAddress')).value = JSON.stringify(e.detail.data.billingAddress);\n continueButton.click();\n }\n\n if (!applePayIns) return;\n $applePayButton.addEventListener('click', function () {\n if (isValidInputField($emailField) && isValidInputField($phoneField)) {\n return applePayIns.startPayment();\n }\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\n/*\n Remove method was used and change appearance of applepay tab\n**/\nfunction removeSessionNonce() {\n document.querySelector('#braintreeApplePayNonce').value = '';\n document.querySelector('#braintreeApplePayBillingAddress').value = '';\n document.querySelector('#braintreeApplePayDeviceData').value = '';\n}\n\nmodule.exports = {\n initApplepayButton,\n applepayPayment,\n removeSessionNonce\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 this.$braintreeApplePayDeviceDataInput = document.querySelector('input[name=braintreeApplePayDeviceDataInput]');\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 if (params.isFraudToolsEnabled) {\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.$braintreeApplePayDeviceDataInput) {\n that.$braintreeApplePayDeviceDataInput.value = dataCollectorInstance.deviceData;\n }\n that.loader.hide();\n });\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 } else {\n shippingContact = {\n emailAddress: document.querySelector('[name=dwfrm_coCustomer_email]').value,\n phoneNumber: document.querySelector('.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]').value\n };\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 if (params.data && params.data.amount === 0) {\n er.show('Order total 0 is not allowed for Credit Card');\n return false;\n }\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 clearHostedFields() {\n params.hostedFieldsInstance.clear('number');\n params.hostedFieldsInstance.clear('cvv');\n params.hostedFieldsInstance.clear('expirationDate');\n}\n\nfunction check3dSecureAndSubmit(response, startTokenizeCb) {\n if (!response.nonce || response.nonce === 'null') {\n document.querySelector('#braintreeCreditCardNonce').value = 'null';\n startTokenizeCb({\n error: true,\n errorCode: 'nonce_is_null'\n });\n return;\n }\n if (!params.is3dSecureEnabled) {\n document.querySelector('#braintreeCreditCardNonce').value = response.nonce;\n startTokenizeCb({\n error: false,\n errorCode: 'ok'\n });\n return;\n }\n\n loader.show();\n\n var billingData = require('./helper').getBillingAddressFormValues();\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 challengeRequested: params.data.secure,\n billingAddress: {\n givenName: billingData.firstName,\n surname: billingData.lastName,\n phoneNumber: billingData.phone,\n streetAddress: billingData.address1,\n extendedAddress: billingData.address2,\n locality: billingData.city,\n region: billingData.stateCode,\n postalCode: decodeURIComponent(billingData.postalCode),\n countryCodeAlpha2: billingData.country\n },\n 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('#braintreeCreditCardNonce').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/**\n * Creates tokenization options for 'tokenize' function.\n * @returns {Object} Object with tokenization options.\n */\nfunction createTokenizationOptions() {\n var billingData = require('./helper').getBillingAddressFormValues();\n return {\n billingAddress: {\n firstName: billingData.firstName,\n lastName: billingData.lastName,\n streetAddress: billingData.address1.split('%20').join(' '),\n extendedAddress: billingData.address2 ? billingData.address2.split('%20').join(' ') : billingData.address2,\n locality: billingData.city.includes('%20') ? billingData.city.split('%20').join(' ') : billingData.city,\n region: billingData.stateCode,\n postalCode: decodeURIComponent(billingData.postalCode),\n countryCodeAlpha2: billingData.country.includes('$20') ? billingData.country.split('%20').join(' ') : billingData.country\n }\n };\n}\n\nfunction startTokenize(cb, response) {\n var tokenizationOptions;\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\n if ($('#dwfrm_billing').length > 0) {\n tokenizationOptions = createTokenizationOptions();\n } else {\n tokenizationOptions = {};\n }\n\n params.hostedFieldsInstance.tokenize(tokenizationOptions, 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 document.querySelector('#braintreeCardExpirationMonth').value = data.details.expirationMonth;\n document.querySelector('#braintreeCardExpirationYear').value = data.details.expirationYear.substr(2);\n var creditCardFieldsCardNumber = document.querySelector('input[name=dwfrm_billing_creditCardFields_cardNumber]');\n if (creditCardFieldsCardNumber) {\n creditCardFieldsCardNumber.value = '************' + data.details.lastFour;\n }\n\n if (document.querySelector('.form-group.braintree_used_creditcard_account')) {\n var $cardOwner = document.querySelector('#braintreeCardOwner').getAttribute('data-new-cart-value');\n document.querySelector('#braintreeCardOwnerPh').textContent = $cardOwner;\n document.querySelector('#braintreeCardNumberPh').textContent = '************' + data.details.lastFour;\n document.querySelector('#braintreeCvvPh').textContent = '***';\n document.querySelector('#braintreeExpirationPh').textContent = data.details.expirationMonth + '/' + data.details.expirationYear.substr(2);\n\n var selectedCard = document.querySelector('#braintreeSessionCreditAccount');\n selectedCard.classList.remove('used-creditcard-account-hide');\n selectedCard.setAttribute('data-number', '************' + data.details.lastFour);\n selectedCard.setAttribute('data-expiration', data.details.expirationMonth + '/' + data.details.expirationYear.substr(2));\n selectedCard.setAttribute('data-type', creditcardHelper.convertCardTypeToDwFormat(data.details.cardType));\n selectedCard.setAttribute('data-owner', $cardOwner);\n selectedCard.setAttribute('data-nonce', data.nonce);\n }\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 let inputs = $container.querySelectorAll('input');\n\n inputs.forEach(function(input) {\n input.addEventListener('change input', function () {\n this.parents('form-group').addClass('focused');\n });\n });\n\n function getHostedFieldsStyles() {\n return {\n input: {\n 'font-size': '16px',\n color: '#272728'\n },\n ':focus': {\n color: '#272728'\n },\n '.valid': {\n color: '#272728'\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 clearHostedFields\n};\n","'use strict';\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\nvar paypalHelper = require('./paypal/paypalHelper');\n/* global braintreeUtils braintree $ Googlepay */\n\nvar bu = braintreeUtils;\nvar loader;\n\nvar $googlepayCartButton = document.querySelector('.braintree-cart-google-button');\nvar $googlepayBillingButton = document.querySelector('.braintree-billingpage-google-button');\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 this.$braintreeGooglePayDeviceDataInput = document.querySelector('input[name=braintreeGooglePayDeviceDataInput]');\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 if (params.isFraudToolsEnabled) {\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.$braintreeGooglePayDeviceDataInput) {\n that.$braintreeGooglePayDeviceDataInput.value = dataCollectorInstance.deviceData;\n }\n that.loader.hide();\n });\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 if (params.options.amount === 0 && !params.options.isAccount) {\n var zeroAmountErrorMsg = 'Order total 0 is not allowed for GooglePay';\n if ($googlepayCartButton) paypalHelper.showCartErrorMsg(zeroAmountErrorMsg);\n if ($googlepayBillingButton) paypalHelper.showCheckoutErrorMsg(zeroAmountErrorMsg);\n return;\n }\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 // eslint-disable-next-line no-console\n console.log(err);\n });\n }\n const button = paymentsClient.createButton({ onClick: onGooglePaymentButtonClicked });\n that.$btn.appendChild(button);\n loader.hide();\n }\n }).catch(function (err) {\n loader.hide();\n // eslint-disable-next-line no-console\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 paypalHelper = require('./paypal/paypalHelper');\nvar { isValidInputField } = require('./helper');\nvar scrollAnimate = require('../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 (params.options.amount === 0) {\n paypalHelper.showCheckoutErrorMsg('Order total 0 is not allowed for ' + type);\n that.loader.hide();\n return;\n }\n\n if (emailField && emailField.value !== '' && !isValidInputField(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 // Saving shippingAddress + email in a case if startPayment will return {} details object\n that.params.shippingAddress = shippingAddress;\n that.params.shippingAddress.email = emailField.value;\n\n localPaymentInstance.startPayment(reqData).then(({ nonce, details, correlationId }) => {\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: jQuery.isEmptyObject(details) ? that.params.shippingAddress : details,\n deviceData: JSON.stringify({ correlation_id: correlationId })\n })\n });\n }).then(({ redirectUrl }) => {\n that.loader.hide();\n window.location.href = redirectUrl;\n }).catch(function (err) {\n that.loader.hide();\n $('.error-message').show();\n $('.error-message-text').text(err.message);\n scrollAnimate($('.error-message'));\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}\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 paypalSavedAccountHandler = require('./paypal/paypalSavedAccountHandler');\n var local = require('./local/localPayment'); // eslint-disable-line no-unused-vars\n var orderStage = document.getElementById('checkout-main');\n var pageState = sessionStorage.getItem('pageState');\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 $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 var $staticPaypalButton = document.querySelector('.braintree-static-paypal-button');\n\n var venmoAccount = require('./venmo/venmoAccount');\n var venmoPayment = require('./venmo/venmoPayment');\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 var $braintreeGooglePayNonce = document.querySelector('#braintreeGooglePayNonce');\n\n var braintreeSrc = require('./src/srcPayment');\n var srcAccount = require('./src/srcAccount');\n var $addSrcAccountForm = document.querySelector('.js_braintree_addSrcAccountForm');\n var $srcContent = document.querySelector('.js_braintree_srcContent');\n var $braintreeSrcNonce = document.querySelector('#braintreeSRCNonce');\n var $srcOnCart = document.querySelector('.braintree-cart-src-button');\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 ($addGooglePayAccountForm) {\n googlePayAccount.initAddGooglePayAccount();\n }\n if ($addSrcAccountForm) {\n srcAccount.initAddSrcAccount();\n }\n\n document.addEventListener('DOMContentLoaded', function () {\n minicartHelper.miniCartButton();\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 if ($cartPage.length) {\n applepayHelper.initApplepayButton();\n }\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\n helper.removeActiveSessionPayment();\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 if ($srcContent || $srcOnCart) {\n braintreeSrc.initSrcButton($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 ((pageState && pageState === 'cart') &&\n orderStage && orderStage.getAttribute('data-checkout-stage') === 'placeOrder') {\n helper.updatePaymentMethodTab();\n sessionStorage.removeItem('pageState');\n }\n\n if ($braintreePaypalNonce && $braintreePaypalNonce.value !== '') {\n document.querySelector('.paypal-tab').click();\n }\n\n if ($braintreeGooglePayNonce && $braintreeGooglePayNonce.value !== '') {\n document.querySelector('.googlepay-tab').click();\n }\n\n if ($braintreeSrcNonce && $braintreeSrcNonce.value !== '') {\n document.querySelector('.src-tab').click();\n }\n\n if ($staticPaypalButton) {\n paypalSavedAccountHandler.paypalStaticPdpButtonHandler();\n $staticPaypalButton.addEventListener('click', paypalSavedAccountHandler.staticImageHandler);\n }\n\n // My account page\n if (document.querySelector('.add-paypal-account')) {\n paypalAccount.initPayPalEvents();\n }\n if (document.querySelector('.add-venmo-account')) {\n venmoAccount.initVenmoEvents();\n }\n if (document.querySelector('.creditCard-accounts')) {\n helper.initCardEvents();\n }\n\n if (document.querySelector('.paypal-accounts')) {\n paypalAccount.initPaypalButtonsEvents();\n }\n if (document.querySelector('.venmo-accounts')) {\n venmoAccount.initVenmoButtonsEvents();\n }\n};\n","/* eslint-disable no-inner-declarations */\n/* eslint-disable new-cap */\n\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 sdkUrlConfiguration;\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 paypalHelper.hidePDPButton($braintreePDPButton);\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 if ($addToCartButton.disabled) {\n paypalHelper.hidePDPButton($braintreePDPButton);\n }\n $('body').on('cart:update', function () {\n $miniCartQuantity = parseInt(document.querySelector('.minicart-quantity').textContent, 0);\n if ($addToCartButton.disabled) {\n paypalHelper.hidePDPButton($braintreePDPButton);\n }\n if ($miniCartQuantity === 0 && !$addToCartButton.disabled) {\n paypalHelper.showPDPButton($braintreePDPButton);\n }\n });\n\n $('body').on('product:afterAddToCart', function () {\n paypalHelper.hidePDPButton($braintreePDPButton);\n });\n\n // Update addToCart button status\n $('body').on('product:statusUpdate', 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 paypalHelper.hidePDPButton($braintreePDPButton);\n }\n if (!$addToCartButton.disabled && !isZeroAmount) {\n paypalHelper.showPDPButton($braintreePDPButton);\n }\n }\n });\n }\n\n var payment = function () {\n if ($braintreePDPButton && $braintreePDPButton.style.display === '') {\n that.er.hide();\n var res = braintreeUtils.pdpOnlickForAsignedPaypalPayment();\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 sdkUrlConfiguration = {\n intent: params.options.intent,\n currency: params.options.currency,\n components: 'buttons,messages',\n commit: false,\n 'disable-funding': params.options.paypalDisableFunding\n };\n } else {\n paypalButtonConfig.createBillingAgreement = payment;\n sdkUrlConfiguration = {\n vault: true,\n components: 'buttons,messages',\n 'disable-funding': params.options.paypalDisableFunding\n };\n }\n\n paypalButtonConfig = $.extend(false, paypalButtonConfig, that.params.paypalConfig);\n loader.hide();\n\n if (!window.isPayPalSDKLoaded) {\n paypalCheckoutInstance.loadPayPalSDK(sdkUrlConfiguration).then(function () {\n window.isPayPalSDKLoaded = true;\n return paypal.Buttons(paypalButtonConfig).render(that.$btn);\n });\n } else {\n return paypal.Buttons(paypalButtonConfig).render(that.$btn);\n }\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","/* eslint-disable no-undef */\n'use strict';\nvar braintreeUtils = require('./braintreeUtils');\nvar loaderInstance = require('./loaderHelper');\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('.braintreeSrcLoader');\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.loadSrcButton = function () {\n var that = this;\n var params = that.params;\n this.$braintreeSrcDeviceDataInput = document.querySelector('input[name=braintreeSrcDeviceDataInput]');\n\n that.loader.show();\n braintree.client.create({\n authorization: params.clientToken\n }, function (clientErr, clientInstance) {\n if (clientErr) {\n that.er.show(clientErr);\n that.loader.hide();\n return;\n }\n if (params.isFraudToolsEnabled) {\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.$braintreeSrcDeviceDataInput) {\n that.$braintreeSrcDeviceDataInput.value = dataCollectorInstance.deviceData;\n }\n that.loader.hide();\n });\n }\n braintree.visaCheckout.create({\n client: clientInstance\n }, function (srcPaymentErr, visaCheckoutInstance) {\n if (srcPaymentErr) {\n that.er.show(srcPaymentErr);\n that.loader.hide();\n return;\n }\n var baseInitOptions = {\n paymentRequest: {\n currencyCode: 'USD',\n subtotal: params.options.amount\n },\n settings: {\n locale: params.settings.locale,\n payment: {\n cardBrands: params.settings.cardBrands,\n acceptCanadianVisaDebit: params.settings.acceptCanadianVisaDebit\n }\n }\n };\n\n var initOptions = visaCheckoutInstance.createInitOptions(baseInitOptions);\n initOptions.settings.shipping = {\n collectShipping: params.options.isShippingAddressRequired\n };\n V.init(initOptions);\n that.loader.hide();\n V.on('payment.success', function (payment) {\n visaCheckoutInstance.tokenize(payment, function (tokenizeErr, payload) {\n if (tokenizeErr) {\n // eslint-disable-next-line no-console\n console.error('Error during Visa Checkout tokenization', tokenizeErr);\n } else {\n var billingAddress = payload.billingAddress;\n payload.billingAddressString = JSON.stringify({\n recipientName: (billingAddress.firstName + ' ' + billingAddress.lastName),\n phone: billingAddress.phoneNumber,\n countryCodeAlpha2: billingAddress.countryCode,\n streetAddress: billingAddress.streetAddress,\n extendedAddress: billingAddress.streetAddress,\n locality: billingAddress.locality,\n region: billingAddress.region,\n postalCode: decodeURIComponent(billingAddress.postalCode),\n email: payload.userData.userEmail\n });\n params.onTokenizePayment(payload);\n }\n });\n });\n });\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","'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');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n quantity: $('.quantity-select').val()\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n },\n\n getSelectedData: function (selectEl) {\n if (!selectEl) {\n return null;\n }\n var options = selectEl.getElementsByTagName('option');\n var option = null;\n for (var i = 0; i < options.length; i++) {\n option = options[i];\n if (option.selected) {\n break;\n }\n }\n return option.attributes;\n },\n\n postData: function (url, data) {\n var formData = new FormData();\n\n for (var key in data) {\n formData.append(key, data[key]);\n }\n $.ajax({\n url: url,\n data: formData,\n processData: false,\n contentType: false,\n type: 'POST',\n success: function (res) {\n window.location.href = res.redirectUrl;\n },\n error: function () {\n location.reload();\n }\n });\n },\n\n messages: {},\n\n errorInstances: [],\n createErrorInstance: function (containerElement, callback) {\n if (!containerElement) {\n console.error('Braintree: No container for showing erros');\n }\n function Constructor(cb) {\n bu.errorInstances.push(this);\n this.containerEl = containerElement;\n this.cb = typeof cb === 'function' ? cb : function () { };\n }\n Constructor.prototype.show = function (error) {\n var text = '';\n if (typeof error === 'string') {\n text = error;\n }\n if (typeof error === 'object') {\n var msg = bu.messages[error.code];\n text = msg || error.message;\n this.cb(this, error);\n if (error.code === 'PAYPAL_POPUP_CLOSED') {\n return;\n }\n }\n this.containerEl.style.display = '';\n this.containerEl.innerHTML = text;\n };\n Constructor.prototype.hide = function () {\n this.containerEl.innerHTML = '';\n };\n return new Constructor(callback);\n },\n clientToken: null\n};\n\nbu.console = console;\n\nmodule.exports = bu;\n\n","/* 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({\n allowNewBrowserTab: false,\n allowDesktop: true\n });\n // Verify browser support before proceeding.\n if (isBrowserSupported) {\n braintree.venmo.create({\n client: clientInstance,\n allowNewBrowserTab: false,\n ignoreHistoryChanges: true,\n allowDesktop: 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 return;\n }\n });\n\n function handleVenmoError(err) {\n that.er.show(err);\n that.loader.hide();\n }\n function handleVenmoSuccess(payload) {\n that.er.hide();\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';\n\nvar creditCard = require('../braintreeCreditCard');\nvar creditCardFields = require('./creditcardFields');\n\nfunction submitCreditCardForm(addCreditCardForm) {\n // var defaultPayment = $('#makeDefaultPayment').val();\n creditCard.startTokenize(function (result) {\n if (result.error) {\n return;\n }\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}\nfunction creditCardForm() {\n $('.js_braintree_addCreditCardForm').submit(function (e) {\n e.preventDefault();\n var $form = $(this);\n $form.spinner().start();\n $('form.js_braintree_addCreditCardForm').trigger('js_braintree_addCreditCardForm:submit', e);\n var $recaptcha = $(this).find('[name=\"g-recaptcha-response\"]');\n if ($recaptcha.length && typeof grecaptcha !== 'undefined') {\n var siteKey = $recaptcha.data('sitekey');\n var action = $form.find('[name=\"g-recaptcha-action\"]').val();\n grecaptcha.execute(siteKey, { action: action }).then(function (token) {\n $recaptcha.val(token);\n submitCreditCardForm($form);\n });\n } else {\n submitCreditCardForm($form);\n }\n });\n}\n\nfunction initAccountAddCreditCard() {\n creditCardFields.initCreditCardFields();\n creditCardForm();\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: decodeURIComponent(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 // eslint-disable-next-line no-console\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;\nvar helper = require('../helper');\n\nvar $creditCardList = document.querySelector('#braintreeCreditCardList');\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 setCardFields(selectedCard, cacheCardFields) {\n cacheCardFields.cardNumbeberPh.innerHTML = selectedCard['data-number'].value;\n cacheCardFields.cardCvvPh.innerHTML = '***';\n cacheCardFields.cardExpirationPh.innerHTML = selectedCard['data-expiration'].value;\n cacheCardFields.cardOwnerPh.innerHTML = selectedCard['data-owner'].value;\n $cardOwner.value = selectedCard['data-owner'].value;\n document.querySelector('#braintreeCardType').value = selectedCard['data-type'].value;\n document.querySelector('#braintreeCardMaskNumber').value = selectedCard['data-number'].value;\n}\n\nfunction showCardElements(cardFields) {\n cardFields.forEach(function (el) {\n el.style.display = '';\n });\n}\n\nfunction hideCardElements(cardFields) {\n cardFields.forEach(function (el) {\n el.style.display = 'none';\n });\n}\n\nfunction getCardFieldsPH() {\n return [\n document.querySelector('#braintreeCardOwnerPh'),\n document.querySelector('#braintreeCardNumberPh'),\n document.querySelector('#braintreeExpirationPh'),\n document.querySelector('#braintreeCvvPh')\n ];\n}\n\nfunction getCardFields() {\n return [\n document.querySelector('#braintreeCardOwner'),\n document.querySelector('#braintreeExpirationDate'),\n document.querySelector('#braintreeCardNumber'),\n document.querySelector('#braintreeCvv')\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 changeCardOwnerInput;\n var selectedCard;\n var isSaveCard;\n var cacheCardFields = {\n cardNumbeberPh: $cardNumbeberPh,\n cardCvvPh: $cardCvvPh,\n cardExpirationPh: $cardExpirationPh,\n cardOwnerPh: $cardOwnerPh\n };\n var nonce;\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.value === 'newcard') {\n hideCardElements(getCardFieldsPH());\n $cardOwner.value = $cardOwner.getAttribute('data-new-cart-value');\n $cardOwner.dispatchEvent(changeCardOwnerInput);\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 showCardElements(getCardFields());\n cardOwnerUpdateClasses();\n if ($braintreeSaveCardContainer) {\n $braintreeSaveCardContainer.style.display = 'block';\n $saveCreditCard.checked = true;\n }\n\n document.querySelector('#braintreeCreditCardNonce').value = '';\n document.querySelector('#braintreeCardPaymentMethod').value = $creditCardList[0].getAttribute('data-payment-method');\n } else if ($creditCardList.selectedOptions[0].id === 'braintreeSessionCreditAccount') {\n selectedCard = bu.getSelectedData($creditCardList);\n nonce = selectedCard['data-nonce'].value;\n if ($braintreeSaveCardContainer) {\n $braintreeSaveCardContainer.style.display = 'block';\n isSaveCard = JSON.parse(selectedCard['data-save-card'].value);\n $braintreeSaveCardContainer.checked = isSaveCard;\n $saveCreditCard.checked = isSaveCard;\n }\n\n if (nonce) {\n document.querySelector('#braintreeCreditCardNonce').value = nonce;\n }\n\n setCardFields(selectedCard, cacheCardFields);\n $cardOwner.dispatchEvent(changeCardOwnerInput);\n $cardOwner.style.display = 'none';\n showCardElements(getCardFieldsPH());\n document.querySelector('#braintreeCardPaymentMethod').value = selectedCard['data-payment-method'].value.toUpperCase();\n } else {\n // case for saved card\n selectedCard = bu.getSelectedData($creditCardList);\n setCardFields(selectedCard, cacheCardFields);\n $cardOwner.dispatchEvent(changeCardOwnerInput);\n showCardElements(getCardFieldsPH());\n hideCardElements(getCardFields());\n $cardOwner.disabled = true;\n if ($braintreeSaveCardContainer) {\n $braintreeSaveCardContainer.style.display = 'none';\n $saveCreditCard.checked = false;\n }\n\n document.querySelector('#braintreeCreditCardNonce').value = '';\n document.querySelector('#braintreeCardPaymentMethod').value = selectedCard['data-payment-method'].value.toUpperCase();\n }\n}\n\nfunction initCardListAndSaveFunctionality() {\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\n/*\n Update Session account\n**/\nfunction updateSessionAccount() {\n var sessionOption = helper.getSessionAccountOption({\n querySelector: '#braintreeCreditCardList',\n id: 'braintreeSessionCreditAccount'\n });\n if (!sessionOption) { return; }\n\n sessionOption.selected = false;\n sessionOption.classList.add('used-creditcard-account-hide');\n sessionOption.classList.remove('used-creditcard-account');\n sessionOption.value = '';\n sessionOption.text = '';\n sessionOption.setAttribute('data-session-account', false);\n sessionOption.setAttribute('data-owner', false);\n sessionOption.setAttribute('data-expiration', false);\n sessionOption.setAttribute('data-number', false);\n sessionOption.setAttribute('data-nonce', false);\n sessionOption.setAttribute('data-type', false);\n sessionOption.setAttribute('data-save-card', false);\n}\n\n/*\n Check if creditcard method was used and change appearance of creditcard tab\n**/\nfunction removeSessionNonce() {\n updateSessionAccount();\n document.querySelector('#braintreeCreditCardNonce').value = '';\n document.querySelector('#cardNumber').value = '';\n document.querySelector('#braintreeCardMaskNumber').value = '';\n document.querySelector('#braintreeCardExpirationYear').value = '';\n document.querySelector('#braintreeCardExpirationMonth').value = '';\n\n var defaultOption = helper.getOptionByDataDefault('#braintreeCreditCardList');\n if (defaultOption) {\n defaultOption.selected = true;\n var selectedCard = bu.getSelectedData($creditCardList);\n var cardFieldsPH = {\n cardNumbeberPh: document.querySelector('#braintreeCardNumberPh'),\n cardCvvPh: document.querySelector('#braintreeCvvPh'),\n cardExpirationPh: document.querySelector('#braintreeExpirationPh'),\n cardOwnerPh: document.querySelector('#braintreeCardOwnerPh')\n };\n setCardFields(selectedCard, cardFieldsPH);\n $cardOwner.disabled = true;\n $saveCreditCard.checked = false;\n document.querySelector('#braintreeSaveCardContainer').style.display = 'none';\n } else {\n hideCardElements(getCardFieldsPH());\n showCardElements(getCardFields());\n var ccAccount = document.querySelector('.form-group.braintree_used_creditcard_account');\n ccAccount.classList.remove('used-creditcard-account');\n ccAccount.classList.add('used-creditcard-account-hide');\n }\n\n [].forEach.call(document.querySelector('#braintreeCreditCardList'), function (el) {\n if (el.style.display === 'none') el.style.display = 'block';\n });\n}\n\nmodule.exports = {\n creditcardErrorContainer,\n convertCardTypeToDwFormat,\n cardOwnerEvents,\n initCardListAndSaveFunctionality,\n removeSessionNonce,\n showCardElements,\n hideCardElements,\n setCardFields,\n getCardFieldsPH,\n getCardFields,\n updateSessionAccount\n};\n","'use strict';\n\nvar braintreeUtils = require('../braintreeUtils');\nvar creditCard = require('../braintreeCreditCard');\nvar helper = require('../helper');\nvar creditcardHelper = require('../creditcard/creditcardHelper');\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('#braintreeSaveCardContainer').style.display = '';\n document.querySelector('#braintree3DSecureContainer').style.display = 'none';\n doNotAllowSubmitForm();\n}\n\nfunction updateAccountsList() {\n var sessionAccount = document.querySelector('#braintreeSessionCreditAccount');\n var defaultOption = helper.getOptionByDataDefault('#braintreeCreditCardList');\n if ($creditCardList && $creditCardList.value !== 'newcard') {\n if (!sessionAccount.selected) {\n creditcardHelper.updateSessionAccount();\n }\n return;\n }\n\n var creditCardAccount = document.querySelector('.form-group.braintree_used_creditcard_account');\n var newCCAccount = document.getElementById('newCardAccount');\n if (!creditCardAccount.classList.contains('used-creditcard-account')) {\n creditCardAccount.classList.remove('used-creditcard-account-hide');\n creditCardAccount.classList.add('used-creditcard-account');\n sessionAccount.classList.remove('used-creditcard-account-hide');\n sessionAccount.classList.add('used-creditcard-account');\n } else {\n sessionAccount.classList.remove('used-creditcard-account-hide');\n sessionAccount.classList.add('used-creditcard-account');\n }\n\n if (newCCAccount.selected) {\n var isSavedCard = document.querySelector('#braintreeSaveCreditCard') ? document.querySelector('#braintreeSaveCreditCard').checked : false;\n sessionAccount.setAttribute('data-session-account', true);\n sessionAccount.setAttribute('data-save-card', isSavedCard);\n sessionAccount.textContent = sessionAccount.getAttribute('data-type') + ' ' +\n sessionAccount.getAttribute('data-number') + ' ' +\n sessionAccount.getAttribute('data-expiration') + ' ' +\n document.querySelector('#braintreeCardOwner').getAttribute('data-new-cart-value');\n sessionAccount.setAttribute('data-nonce', document.querySelector('#braintreeCreditCardNonce').value);\n\n newCCAccount.removeAttribute('selected');\n sessionAccount.selected = true;\n }\n\n if (!defaultOption) {\n var selectedCard = braintreeUtils.getSelectedData($creditCardList);\n var cardFieldsPH = {\n cardOwnerPh: document.querySelector('#braintreeCardOwnerPh'),\n cardNumbeberPh: document.querySelector('#braintreeCardNumberPh'),\n cardCvvPh: document.querySelector('#braintreeCvvPh'),\n cardExpirationPh: document.querySelector('#braintreeExpirationPh')\n };\n creditcardHelper.setCardFields(selectedCard, cardFieldsPH);\n }\n\n creditCard.clearHostedFields();\n creditcardHelper.showCardElements(creditcardHelper.getCardFieldsPH());\n creditcardHelper.hideCardElements(creditcardHelper.getCardFields());\n helper.continueButtonToggle(false);\n}\n\nfunction allowSubmitForm(event) {\n $continueButton.setAttribute('data-is-allow-submit-form', true);\n updateAccountsList();\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 makeCreditCardPayment(event) {\n if (!isActiveCreditCardTab()) {\n return;\n }\n\n if (JSON.parse($continueButton.getAttribute('data-is-allow-submit-form')) && creditCard.isFormValid()) {\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 if ($creditCardList.value === 'sessioncard') {\n allowSubmitForm(event);\n return;\n }\n\n var selectedCard = braintreeUtils.getSelectedData($creditCardList);\n var getNonceUrl = $creditCardList.getAttribute('data-get-payment-nonce-url');\n var cardUUID = selectedCard['data-id'].value;\n $.get(`${getNonceUrl}?id=${cardUUID}`, 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 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.style.display = 'block';\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 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 // eslint-disable-next-line no-console\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 if ($btFormErrorContainer.style.display === 'block') {\n $btFormErrorContainer.style.display = 'none';\n $btFormErrorContainer.textContent = '';\n }\n if (result.type === 'PayPalAccount') {\n $btFormErrorContainer.style.display = 'block';\n $btFormErrorContainer.textContent = config.messages.saving_paypal_account_error;\n\n return;\n }\n\n $googlepayNonce.value = result.nonce;\n\n document.querySelector('.braintreeGooglePayBtn').click();\n };\n googlepayIns = googlepay.init(config, $btn);\n googlepayIns.createGooglepay();\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 $saveGooglePayAccountCheckbox = document.querySelector('#braintreeSaveGooglepayAccount');\nvar $googlepayTab = document.querySelector('.googlepay-tab');\n\nfunction showGooglepayAccount() {\n var $sessionAccount = document.querySelector('#sessionGPAccount');\n $sessionAccount.classList.remove('used-googlepay-account-hide');\n $sessionAccount.classList.add('used-googlepay-account');\n\n var $gpAccount = document.querySelector('.form-group.braintree_used_googlepay_account');\n $gpAccount.classList.remove('used-googlepay-account-hide');\n $gpAccount.classList.add('used-googlepay-account');\n\n $googlepayButton.style.display = 'none';\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n helper.continueButtonToggle(false);\n}\n\nfunction hideShowButtons() {\n if ($btGooglepayAccountsList.value === 'newaccount') {\n $googlepayButton.style.display = 'block';\n if ($googlepayTab.classList.contains('active')) {\n helper.continueButtonToggle(true);\n }\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', true);\n if ($saveGooglePayAccountCheckbox) {\n $saveGooglePayAccountCheckbox.checked = true;\n }\n } else {\n $googlepayButton.style.display = 'none';\n helper.continueButtonToggle(false);\n $googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n if ($saveGooglePayAccountCheckbox) {\n $saveGooglePayAccountCheckbox.checked = JSON.parse(document.querySelector('#sessionGPAccount').getAttribute('data-save'));\n }\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\n/*\n Remove method was used and change appearance of googlepay tab\n**/\nfunction removeSessionNonce() {\n var $gpAccount = document.querySelector('.form-group.braintree_used_googlepay_account');\n $gpAccount.classList.remove('used-googlepay-account');\n $gpAccount.classList.add('used-googlepay-account-hide');\n\n var $sessionAccount = document.querySelector('#sessionGPAccount');\n $sessionAccount.classList.add('used-googlepay-account-hide');\n $sessionAccount.classList.remove('used-googlepay-account');\n $sessionAccount.value = '';\n $sessionAccount.text = '';\n $sessionAccount.setAttribute('data-session-account', false);\n $sessionAccount.setAttribute('data-save', false);\n\n document.querySelector('#braintreeGooglePayNonce').value = '';\n document.querySelector('#braintreeGooglePayBillingAddress').value = '';\n document.querySelector('#braintreeGooglepayPaymentType').value = '';\n document.querySelector('#braintreeGooglePayDeviceData').value = '';\n\n document.querySelector('#newGPAccount').selected = true;\n hideShowButtons();\n}\n\nmodule.exports = {\n showGooglepayAccount,\n createGooglepayBillingAddressData,\n createGooglepayShippingAddressData,\n removeSessionNonce,\n hideShowButtons\n};\n","'use strict';\nvar googlepay = require('../braintreeGooglepay');\nvar googlepayHelper = require('./googlepayHelper');\n\nvar $googlepayButton = document.querySelector('.js_braintree_googlepay_button');\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 $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 // eslint-disable-next-line no-console\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 var newPPAccount = document.getElementById('newGPAccount');\n var deviceData = document.querySelector('input[name=braintreeGooglePayDeviceDataInput]').value;\n require('../helper').removeActiveSessionPayment();\n\n if (data) {\n billingAddressData = googlepayHelper.createGooglepayBillingAddressData(data);\n\n if ($googlepayOnCart) {\n shippingAddressData = googlepayHelper.createGooglepayShippingAddressData(data.shippingAddress);\n\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 billingAddress: billingAddressData,\n shippingAddress: shippingAddressData || {},\n paymentType: result.type,\n deviceData: deviceData\n }),\n success: function (res) {\n sessionStorage.setItem('pageState', 'cart');\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 $braintreeGooglepayBillingAddressInput.value = billingAddressData;\n }\n\n $googlepayNonce.value = result.nonce;\n $googlepayCardDescription.value = result.details.cardType + ' ' + result.details.lastFour;\n $braintreeGooglepayPaymentType.value = result.type;\n\n // Selecting Google Pay Session Account\n document.querySelector('#sessionGPAccount').text = $googlepayCardDescription.value;\n newPPAccount.removeAttribute('selected');\n document.querySelector('#sessionGPAccount').selected = true;\n document.querySelector('#sessionGPAccount').setAttribute('data-session-account', 'true');\n\n googlepayHelper.showGooglepayAccount();\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';\n\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 return;\n }\n if (flag) {\n $continueButton.style.display = 'none';\n } else {\n $continueButton.style.display = '';\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 ($tabContent) {\n if (el === currentTab) {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.removeAttribute('disabled', 'disabled');\n });\n $tabContent.querySelectorAll('select.no-disable').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n continueButtonToggle(JSON.parse($tabContent.getAttribute('data-paypal-is-hide-continue-button')));\n } else {\n $tabContent.querySelectorAll('input, textarea, select').forEach(function (tab) {\n tab.setAttribute('disabled', 'disabled');\n });\n }\n }\n });\n}\n\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 // Catch code start\n if (order.billing.payment.selectedPaymentInstruments[0].paymentMethod === 'Catch') {\n htmlToAppend += '
' + order.resources.catch.paymentMethod + '
';\n } else {\n // else part of catch, we add default logic that already exist into this\n htmlToAppend += '
' + getPaymentMethodToLowerCase(order.billing.payment.selectedPaymentInstruments[0].paymentMethod) + '
';\n }\n // Catch code end\n if (order.billing.payment.selectedPaymentInstruments[0].maskedCreditCardNumber) {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].maskedCreditCardNumber + '
';\n }\n if (order.billing.payment.selectedPaymentInstruments[0].paymentMethod === 'PayPal') {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].braintreePaypalEmail + '
';\n }\n if (order.billing.payment.selectedPaymentInstruments[0].paymentMethod === 'Venmo') {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].braintreeVenmoUserId + '
';\n }\n if (order.billing.payment.selectedPaymentInstruments[0].type) {\n htmlToAppend += '
' + order.billing.payment.selectedPaymentInstruments[0].type + '
';\n }\n htmlToAppend += '
' + order.totals.grandTotal + '
';\n }\n\n if ($paymentSummary) {\n $paymentSummary.innerHTML = htmlToAppend;\n }\n}\n\nfunction isValidInputField(field) {\n if (!field.checkValidity()) {\n if (!field.classList.contains('is-invalid')) {\n field.classList.add('is-invalid');\n }\n return false;\n }\n if (field.checkValidity() && field.classList.contains('is-invalid')) {\n field.classList.remove('is-invalid');\n }\n return true;\n}\n/*\n Adding *active* line to the tab-content class in a case if it isn't already active\n Use case: customer checkout from cart (page) and\n (under the place Order page) hit the 'edit' button\n* */\nfunction updatePaymentMethodTab() {\n let paymentMethodName = document.querySelectorAll('[data-braintree-payment-method]')[0].dataset.braintreePaymentMethod;\n let content = document.querySelector(`.js_braintree_${paymentMethodName.toLowerCase()}Content`).classList.contains('active');\n if (!content) {\n document.querySelectorAll(`[data-method-id=${paymentMethodName}]`)[0].children[0].click();\n }\n}\n\n/**\n * Gets Billing Address Form Values\n *\n * @returns {Object} with Billing Address\n */\nfunction getBillingAddressFormValues() {\n return $('#dwfrm_billing').serialize().split('&')\n .map(function (el) {\n return el.split('=');\n })\n .reduce(function (accumulator, item) {\n var elem = item[0].lastIndexOf('_');\n if (elem < 0) {\n accumulator[item[0]] = item[1];\n } else {\n elem = item[0].substring(elem + 1);\n accumulator[elem] = item[1];\n }\n return accumulator;\n }, {});\n}\n\n/**\n * Gets Nonce depending on payment method name\n *\n * @param {string} paymentMethodName - payment method name\n * @returns {boolean} nonce exist\n */\n\nfunction isNonceExist(paymentMethodName) {\n var $nonce = document.querySelector(`#braintree${paymentMethodName}Nonce`);\n if (!$nonce) return false;\n\n var nonceValue = $nonce.value;\n var $tab = document.querySelector(`.${paymentMethodName.toLowerCase()}-tab`);\n var isActiveTab;\n if ($tab) {\n isActiveTab = $tab.classList.contains('active');\n }\n\n return !isActiveTab && nonceValue;\n}\n\nvar loaderInstance = require('./loaderHelper');\nvar accountsLoader;\n\nfunction removeBtPayment(e) {\n let target = e.target;\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n accountsLoader = loaderInstance($loaderContainter);\n accountsLoader.show();\n\n $.get(target.getAttribute('data-url') + '?UUID=' + target.getAttribute('data-id'))\n .then((data => {\n $('#uuid-' + data.UUID).remove();\n if (data.ogResText === 1) {\n $('.default-card-delete').css('display', 'block');\n }\n if (data.newDefaultAccount) {\n document.querySelector('#uuid-' + data.newDefaultAccount + ' span').style.fontWeight = 'bold';\n document.querySelector('#uuid-' + data.newDefaultAccount + ' button.braintree-make-default-card').style.display = 'none';\n }\n accountsLoader.hide();\n }))\n .fail(() => {\n location.reload();\n accountsLoader.hide();\n });\n}\n\n/**\n * Create formData from fields data\n *\n * @param {Object} paymentFields - fields data values\n * @param {Object} fieldsData - fields data values\n * @returns {Object} cart billing form data\n */\nfunction createPaymentFormData(paymentFields, fieldsData) {\n var paymentFieldsParsed = JSON.parse(paymentFields);\n\n return Object.entries(paymentFieldsParsed).reduce(function (formData, entry) {\n const [key, field] = entry;\n if (typeof field === 'object') {\n formData.append(field.name, fieldsData && fieldsData[key] !== null ? fieldsData[key] : field.value);\n }\n return formData;\n }, new FormData());\n}\n\nfunction setDefaultProperty(params) {\n return $.get(params.url + '?UUID=' + params.id + '&pmID=' + params.paymentMethodID)\n .then((data) => {\n params.loader.hide();\n location.reload();\n // document.querySelector('#uuid-' + data.newDefaultProperty + ' span').style.fontWeight = 'bold';\n // document.querySelector('.braintree-make-default-card.uuid-' + data.newDefaultProperty).style.display = 'none';\n // document.querySelector('#uuid-' + data.toRemoveDefaultProperty + ' span').style.fontWeight = 'normal';\n // document.querySelector('.braintree-make-default-card.uuid-' + data.toRemoveDefaultProperty).style.display = 'inline';\n })\n .fail(() => {\n params.loader.hide();\n });\n}\n\nfunction initCardEvents() {\n if (document.querySelector('.braintreeAddNewCard')) {\n document.querySelector('.braintreeAddNewCard').addEventListener('click', function () {\n document.querySelector('.braintreeAddNewCard').style.display = 'none';\n document.querySelector('.braintreeAddNewCardBlock').style.display = 'block';\n });\n }\n document.querySelector('.creditCard-accounts').onclick = function (e) {\n if (e.target.classList.contains('remove-bt-payment')) {\n removeBtPayment(e);\n } else if (e.target.classList.contains('braintree-make-default-card')) {\n var target = e.target;\n var url = target.getAttribute('data-make-default-url');\n var id = target.getAttribute('data-id');\n var paymentMethodID = 'CARD';\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n var loader = loaderInstance($loaderContainter);\n loader.show();\n setDefaultProperty({\n url: url,\n id: id,\n paymentMethodID: paymentMethodID,\n loader: loader\n });\n }\n };\n}\n\n/**\n * Checks authenticated customer, account list for default Payment Method\n *\n * @param {string} selector - querySelector\n * @returns {Object} default data attribute or null\n */\nfunction getOptionByDataDefault(selector) {\n if (!document.querySelector(selector)) { return null; }\n\n return Array.apply(null, document.querySelector(selector).options).find(function (el) {\n return el.getAttribute('data-default') ? JSON.parse(el.getAttribute('data-default')) : null;\n });\n}\n\n/**\n * Checks authenticated customer, account list for session Account\n *\n * @param {Object} params - querySelector + el.id\n * @returns {Object} session account object\n */\nfunction getSessionAccountOption(params) {\n return Array.apply(null, document.querySelector(params.querySelector).options).find(function (el) {\n return el.id === params.id && JSON.parse(el.getAttribute('data-session-account'));\n });\n}\n\n/**\n * Remove Session Active Payment Method\n ** Use helpers to add more Payment Methods\n *\n * @returns {function}function call\n */\nfunction removeActiveSessionPayment() {\n const activePaymentMethods = [];\n document.querySelectorAll('.payment-options[role=tablist] li').forEach(function (el) {\n if (el.dataset.methodId === 'CREDIT_CARD') {\n el.dataset.methodId = 'CreditCard';\n }\n activePaymentMethods.push(el.dataset.methodId);\n });\n var helpers = {\n PayPal: require('./paypal/paypalHelper'),\n Venmo: require('./venmo/venmoHelper'),\n GooglePay: require('./googlepay/googlepayHelper'),\n CreditCard: require('./creditcard/creditcardHelper'),\n SRC: require('./src/srcHelper'),\n ApplePay: require('./applepay/applepayHelper')\n\n };\n var activePM = activePaymentMethods.find(function (el) {\n return isNonceExist(el);\n });\n if (activePM) {\n return helpers[activePM].removeSessionNonce();\n }\n}\n\nmodule.exports = {\n initWathcherCartUpdate,\n paymentMethodChangeHandle,\n continueButtonToggle,\n updateCheckoutView,\n isValidInputField,\n updatePaymentMethodTab,\n getBillingAddressFormValues,\n removeBtPayment,\n createPaymentFormData,\n initCardEvents,\n isNonceExist,\n setDefaultProperty,\n getOptionByDataDefault,\n removeActiveSessionPayment,\n getSessionAccountOption\n};\n","\nmodule.exports = function (containerElement) {\n if (!containerElement) {\n // eslint-disable-next-line no-console\n console.error('Braintree: No container for showing loaders');\n }\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n this.containerEl.style.display = 'block';\n };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\n };\n return new Constructor();\n};\n","'use 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');\nvar paypalSavedAccountHandler = require('./paypalSavedAccountHandler');\n\nvar $paypalMinicartButton;\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 // eslint-disable-next-line no-console\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 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.braintreePaypalRiskData = params.riskData;\n }\n\n if (payload.details) {\n var details = payload.details;\n var billingAddressData;\n postData.braintreePaypalEmail = details.email;\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 billingAddressData = paypalHelper.createBillingAddressData(details.shippingAddress, details);\n } else {\n billingAddressData = paypalHelper.createBillingAddressData(details.billingAddress, details);\n }\n postData.braintreePaypalBillingAddress = billingAddressData;\n var shippingAddressData = details.shippingAddress ? paypalHelper.createShippingAddressData(details.shippingAddress, details) : '{}';\n postData.braintreePaypalShippingAddress = shippingAddressData;\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\nvar observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.addedNodes.length < 2) {\n return;\n }\n miniCartButton();\n var $staticPaypalButton = document.querySelector('.braintree-static-paypal-button');\n if ($staticPaypalButton) {\n $staticPaypalButton.addEventListener('click', paypalSavedAccountHandler.staticImageHandler);\n }\n });\n});\n\nmodule.exports = {\n miniCartButton,\n observer\n};\n","'use strict';\nvar payPal = require('../braintreePaypal');\nvar paypalHelper = require('./paypalHelper');\nvar helper = require('../helper');\nvar loaderInstance = require('../loaderHelper');\nvar accountsLoader;\n\nfunction initAddPaypalAccount() {\n var $btn = document.querySelector('.js_braintree_accountPaypalButton');\n var $paypalErrorContainer = document.querySelector('#paypalAccountErrorContainer');\n var $paypalLoader = document.querySelector('#braintreePayPalAccLoader');\n\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 // eslint-disable-next-line no-console\n console.error($btn, 'not valid data-braintree-config');\n return;\n }\n\n config.$loaderContainer = $paypalLoader;\n config.$errorContainer = $paypalErrorContainer;\n config.onTokenizePayment = function (data) {\n let accountPaypalButton = document.querySelector('.js_braintree_accountPaypalButton');\n let paypalAddAccountHandler = accountPaypalButton.getAttribute('data-paypal-add-account-handler');\n let paypalAccountFormFields = accountPaypalButton.getAttribute('data-paypal-account-form-fields');\n let paypalBillingAddressData = paypalHelper.createBillingAddressData(data.details.billingAddress, data.details);\n let paypalAccountFormData = helper.createPaymentFormData(paypalAccountFormFields, {\n nonce: data.nonce,\n email: data.details.email,\n addresses: paypalBillingAddressData,\n shippingAddress: JSON.stringify(data.details.shippingAddress)\n });\n let csrfToken = document.querySelector('.js_braintree_accountPaypalButton_wrapper #csrf_token');\n paypalAccountFormData.append(csrfToken.name, csrfToken.value);\n\n let $loaderContainter = document.querySelector('#paypalAccountBtLoader');\n accountsLoader = loaderInstance($loaderContainter);\n accountsLoader.show();\n return $.ajax({\n type: 'POST',\n url: paypalAddAccountHandler,\n data: paypalAccountFormData,\n contentType: false,\n processData: false\n })\n .then((paymentData) => {\n paypalHelper.hidePaypalAccountBtn();\n $paypalLoader.style.display = 'none';\n $paypalErrorContainer.textContent = '';\n $paypalErrorContainer.style.display = 'none';\n\n $.get(paymentData.renderAccountsUrl)\n .then((tplData => {\n accountsLoader.hide();\n document.querySelector('.paypal-accounts').innerHTML = tplData;\n document.querySelectorAll('.paypal-accounts .remove-bt-payment').forEach(function (el) {\n el.addEventListener('click', helper.removeBtPayment);\n });\n }));\n })\n .fail(({ responseJSON }) => {\n accountsLoader.hide();\n $paypalLoader.style.display = 'none';\n $paypalErrorContainer.style.display = 'block';\n $paypalErrorContainer.textContent = responseJSON.error;\n });\n };\n\n payPal.init(config, $btn);\n $btn.setAttribute('data-is-inited', true);\n}\n\nfunction initPayPalEvents() {\n document.querySelector('.add-paypal-account').addEventListener('click', function () {\n paypalHelper.showPaypalAccountBtn();\n initAddPaypalAccount();\n });\n}\n\nfunction initPaypalButtonsEvents() {\n document.querySelector('.paypal-accounts').onclick = function (e) {\n if (e.target.classList.contains('remove-bt-payment')) {\n helper.removeBtPayment(e);\n } else if (e.target.classList.contains('braintree-make-default-card')) {\n var target = e.target;\n var url = target.getAttribute('data-make-default-url');\n var id = target.getAttribute('data-id');\n var paymentMethodID = document.querySelector('.paypal-accounts').getAttribute('data-payment-method-id');\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n var loader = loaderInstance($loaderContainter);\n loader.show();\n helper.setDefaultProperty({\n url: url,\n id: id,\n paymentMethodID: paymentMethodID,\n loader: loader\n });\n }\n };\n}\n\nmodule.exports = {\n initPayPalEvents,\n initAddPaypalAccount,\n initPaypalButtonsEvents\n};\n","'use strict';\nvar helper = require('../helper');\n\nvar $addPaypalAccountBtn = document.querySelector('.add-paypal-account');\nvar $paypalAccountWrapper = document.querySelector('.js_braintree_accountPaypalButton_wrapper');\nvar $savePaypalAccountCountainer = document.querySelector('#braintreeSavePaypalAccountContainer');\nvar $savePaypalAccountCheckbox = document.querySelector('#braintreeSavePaypalAccount');\nvar $braintreePayPalNonce = document.querySelector('#braintreePayPalNonce');\nvar $continueButton = document.querySelector('.submit-payment');\n\nvar formValidationConrol = function (validateActions) {\n var isFormValid = true;\n if (isFormValid) {\n validateActions.enable();\n } else {\n validateActions.disable();\n }\n};\n\nfunction getOptionByEmail() {\n var sessionEmail = document.getElementById('braintreePaypalAccount').value || null;\n return Array.apply(null, document.querySelector('#braintreePaypalAccountsList').options).find(function (el) {\n return el.getAttribute('data-id') && sessionEmail && sessionEmail === el.text;\n });\n}\n\nfunction setSessionAccountOptionDefault() {\n var savedDefaultOption = helper.getOptionByDataDefault('#braintreePaypalAccountsList');\n if (!savedDefaultOption) return;\n\n savedDefaultOption.selected = '';\n helper.getSessionAccountOption({\n querySelector: '#braintreePaypalAccountsList',\n id: 'braintreePaypalAccount'\n }).selected = 'selected';\n}\n\n/*\n Check if paypal method was used and change appearance of paypal tab\n**/\nfunction removeSessionNonce() {\n var sessionOption = helper.getSessionAccountOption({\n querySelector: '#braintreePaypalAccountsList',\n id: 'braintreePaypalAccount'\n });\n if (sessionOption) {\n var $paypalContent = document.querySelector('.js_braintree_paypalContent');\n document.querySelector('#braintreePayPalNonce').value = '';\n document.querySelector('#braintreePaypalAccount').selected = false;\n sessionOption.classList.add('used-paypal-account-hide');\n sessionOption.classList.remove('used-paypal-account');\n sessionOption.value = '';\n sessionOption.text = '';\n sessionOption.setAttribute('data-session-account', false);\n sessionOption.setAttribute('data-save', false);\n\n var defaultOption = helper.getOptionByDataDefault('#braintreePaypalAccountsList');\n if (defaultOption) {\n defaultOption.selected = true;\n document.querySelector('#braintreeSavePaypalAccountContainer').style.display = 'none';\n document.querySelector('.js_braintree_paypal_billing_button').style.display = 'none';\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n } else {\n $paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n document.querySelector('.js_braintree_paypal_billing_button').style.display = 'block';\n var paypalAccount = document.querySelector('.form-group.braintree_used_paypal_account');\n paypalAccount.classList.remove('used-paypal-account');\n paypalAccount.classList.add('used-paypal-account-hide');\n }\n\n [].forEach.call(document.querySelector('#braintreePaypalAccountsList'), function (el) {\n if (el.style.display === 'none') el.style.display = 'block';\n });\n }\n}\n\nfunction initAccountListAndSaveFunctionality() {\n var $accountsList = document.querySelector('#braintreePaypalAccountsList');\n var $alertInfo = document.getElementById('paypal-content').querySelectorAll('.alert-info')[0];\n\n function accountsListChange() { // eslint-disable-line require-jsdoc\n var isSameSessionAccount = getOptionByEmail();\n $continueButton.removeEventListener('click', removeSessionNonce);\n\n if ($accountsList.value === 'newaccount') {\n $alertInfo.style.display = 'block';\n if ($savePaypalAccountCountainer) {\n $savePaypalAccountCountainer.style.display = 'block';\n $savePaypalAccountCheckbox.checked = true;\n }\n } else if ($accountsList.selectedOptions[0].id === 'braintreePaypalAccount') {\n // Case when Session Email already saved under account\n $braintreePayPalNonce.value = $accountsList.selectedOptions[0].getAttribute('data-nonce');\n if (isSameSessionAccount) {\n $savePaypalAccountCountainer.style.display = 'none';\n $savePaypalAccountCheckbox.checked = false;\n } else if ($savePaypalAccountCountainer) {\n $savePaypalAccountCountainer.style.display = 'block';\n $savePaypalAccountCheckbox.checked = JSON.parse(document.querySelector('#braintreePaypalAccount').getAttribute('data-save'));\n }\n } else {\n $continueButton.addEventListener('click', removeSessionNonce);\n $braintreePayPalNonce.value = '';\n $alertInfo.style.display = 'none';\n if ($savePaypalAccountCountainer) {\n $savePaypalAccountCheckbox.checked = false;\n $savePaypalAccountCountainer.style.display = 'none';\n }\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.braintree_used_paypal_account');\n var $paypalContent = document.querySelector('.js_braintree_paypalContent');\n var $braintreePaypalAccountsList = document.getElementById('braintreePaypalAccountsList');\n var customerAuthenticated = JSON.parse($braintreePaypalAccountsList.dataset.customerAuthenticated);\n\n if (customerAuthenticated || (braintreePaypalEmail && braintreePaypalAccount.text !== 'PayPal')) {\n if (braintreePaypalNonce && $braintreePaypalAccountsList) {\n return true;\n }\n\n document.querySelectorAll('.js_braintree_paypalContent .custom-checkbox').forEach((el) => { el.style.display = 'none'; });\n }\n\n braintreePaypalAccount.text = braintreePaypalEmail;\n if (!paypalAccount.classList.contains('used-paypal-account')) {\n paypalAccount.classList.remove('used-paypal-account-hide');\n paypalAccount.classList.add('used-paypal-account');\n }\n\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\nfunction showPDPButton($braintreePDPButton) {\n $braintreePDPButton.style.display = '';\n}\n\nfunction hidePDPButton($braintreePDPButton) {\n $braintreePDPButton.style.display = 'none';\n}\n\nfunction showPaypalAccountBtn() {\n $addPaypalAccountBtn.style.display = 'none';\n $paypalAccountWrapper.style.display = 'block';\n}\nfunction hidePaypalAccountBtn() {\n $addPaypalAccountBtn.style.display = 'block';\n $paypalAccountWrapper.style.display = 'none';\n}\n\nmodule.exports = {\n formValidationConrol,\n initAccountListAndSaveFunctionality,\n createShippingAddressData,\n createBillingAddressData,\n appendToUrl,\n showPayPalAccount,\n showCartErrorMsg,\n showCheckoutErrorMsg,\n showPDPButton,\n hidePDPButton,\n getOptionByEmail,\n removeSessionNonce,\n setSessionAccountOptionDefault,\n showPaypalAccountBtn,\n hidePaypalAccountBtn\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 var isSessionAccount = helper.getSessionAccountOption({\n querySelector: '#braintreePaypalAccountsList',\n id: 'braintreePaypalAccount'\n });\n var isSameSessionAccount = paypalHelper.getOptionByEmail();\n\n if (typeof config !== 'object' || config === null) {\n // eslint-disable-next-line no-console\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 // Getting same email option as session email, if any found\n if (JSON.parse($braintreePaypalAccountsList.dataset.customerAuthenticated) && isSessionAccount) {\n if (isSameSessionAccount) {\n isSameSessionAccount.style.display = 'none';\n if (isSessionAccount.classList.contains('used-paypal-account-hide')) {\n isSessionAccount.classList.add('used-paypal-account');\n isSessionAccount.classList.remove('used-paypal-account-hide');\n }\n }\n\n paypalHelper.setSessionAccountOptionDefault();\n }\n\n paypalHelper.initAccountListAndSaveFunctionality();\n\n config.onTokenizePayment = function (data) {\n helper.removeActiveSessionPayment();\n if ($braintreePaypalNonceInput) {\n $braintreePaypalNonceInput.value = data.nonce;\n }\n $braintreePaypalNonce.value = data.nonce;\n document.querySelector('#braintreePaypalAccount').setAttribute('data-session-account', 'true');\n document.querySelector('#braintreePaypalAccount').setAttribute('data-nonce', data.nonce);\n\n if (data.details) {\n var details = data.details;\n $braintreePaypalEmail.value = data.details.email;\n document.querySelector('#braintreePaypalAccount').value = data.details.email;\n document.querySelector('#braintreePaypalAccount').text = data.details.email;\n helper.continueButtonToggle(false);\n\n if (details.billingAddress) {\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 document.querySelector('.js_braintree_paypal_billing_button').style.display = 'none';\n var paypalAccount = document.querySelector('.form-group.braintree_used_paypal_account');\n var sessionAccount = document.querySelector('#braintreePaypalAccount');\n if (!paypalAccount.classList.contains('used-paypal-account')) {\n paypalAccount.classList.remove('used-paypal-account-hide');\n paypalAccount.classList.add('used-paypal-account');\n sessionAccount.classList.remove('used-paypal-account-hide');\n sessionAccount.classList.add('used-paypal-account');\n } else {\n sessionAccount.classList.remove('used-paypal-account-hide');\n sessionAccount.classList.add('used-paypal-account');\n }\n }\n }\n\n var newPPAccount = document.getElementById('newPPAccount');\n if (newPPAccount.selected) {\n newPPAccount.removeAttribute('selected');\n document.querySelector('#braintreePaypalAccount').selected = true;\n }\n\n // Getting same email option as session email, if any found\n if (JSON.parse($braintreePaypalAccountsList.dataset.customerAuthenticated) && helper.getSessionAccountOption({\n querySelector: '#braintreePaypalAccountsList',\n id: 'braintreePaypalAccount'\n })) {\n isSameSessionAccount = paypalHelper.getOptionByEmail();\n paypalHelper.setSessionAccountOptionDefault();\n\n if (isSameSessionAccount) {\n isSameSessionAccount.style.display = 'none';\n document.getElementById('braintreeSavePaypalAccount').value = false;\n document.querySelector('#braintreeSavePaypalAccountContainer').style.display = 'none';\n } else {\n [].forEach.call(document.querySelector('#braintreePaypalAccountsList'), function (el) {\n if (el.style.display === 'none') el.style.display = 'block';\n });\n }\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 if (document.querySelector('.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 var $paypalAddress = document.querySelector('input[name=braintreePaypalShippingAddress]') !== '';\n paypalIns.loader.hide();\n paypalIns.updateAmount(data.amount);\n paypalIns.updateShippingAddress(data.shippingAddress);\n if ($paypalAddress.value) {\n var newPayPalAddress = $.extend({}, JSON.parse($paypalAddress.value), data.shippingAddress);\n $paypalAddress.value = JSON.stringify(newPayPalAddress);\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';\n\nvar braintreeUtils = require('../braintreeUtils');\nvar loaderInstance = require('../loaderHelper');\nvar { showPDPButton, hidePDPButton } = require('./paypalHelper');\n\nvar $braintreePDPButton = document.querySelector('.braintree_pdp_button');\n\nfunction staticImageHandler() {\n var $loaderContainter = document.querySelector('.braintreePayPalLoader');\n var loader = loaderInstance($loaderContainter);\n var $staticPaypalButton = document.querySelector('.braintree-static-paypal-button');\n var checkoutFromCartUrl = $staticPaypalButton.getAttribute('data-checkout-from-cart-url');\n loader.show();\n if ($braintreePDPButton && $braintreePDPButton.style.display === '') {\n var res = braintreeUtils.pdpOnlickForAsignedPaypalPayment();\n if (res.error) {\n loader.hide();\n // eslint-disable-next-line no-unused-expressions\n window.location.reload;\n return;\n }\n }\n\n return $.ajax({\n url: checkoutFromCartUrl,\n type: 'POST',\n success: function (data) {\n loader.hide();\n sessionStorage.setItem('pageState', 'cart');\n window.location.href = data.redirectUrl;\n },\n error: function () {\n loader.hide();\n }\n });\n}\n\nfunction paypalStaticPdpButtonHandler() {\n if ($braintreePDPButton) {\n var $price = document.querySelector('.price .sales .value');\n var isZeroAmount = false;\n var $miniCartQuantity = document.querySelector('.minicart-quantity');\n var $addToCartButton = document.querySelector('.add-to-cart') || document.querySelector('.add-to-cart-global');\n\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 hidePDPButton($braintreePDPButton);\n }\n\n if ($addToCartButton.disabled) {\n hidePDPButton($braintreePDPButton);\n }\n\n $('body').on('product:afterAddToCart', function () {\n hidePDPButton($braintreePDPButton);\n });\n\n $('body').on('cart:update', function () {\n $miniCartQuantity = parseInt(document.querySelector('.minicart-quantity').textContent, 0);\n if ($addToCartButton.disabled) {\n hidePDPButton($braintreePDPButton);\n }\n if ($miniCartQuantity === 0 && !$addToCartButton.disabled) {\n showPDPButton($braintreePDPButton);\n }\n });\n\n $('body').on('product:statusUpdate', function () {\n $miniCartQuantity = parseInt(document.querySelector('.minicart-quantity').textContent, 0);\n $price = document.querySelector('.price .sales .value');\n isZeroAmount = false;\n if ($price) {\n isZeroAmount = $price.getAttribute('content') === '0.00';\n }\n\n if ($miniCartQuantity === 0) {\n if ($addToCartButton.disabled || isZeroAmount) {\n hidePDPButton($braintreePDPButton);\n }\n if (!$addToCartButton.disabled && !isZeroAmount) {\n showPDPButton($braintreePDPButton);\n }\n }\n });\n }\n}\n\nmodule.exports = {\n staticImageHandler,\n paypalStaticPdpButtonHandler\n};\n","var src = require('../braintreeSrc');\nvar loaderInstance = require('../loaderHelper');\n\nfunction submitAddSrcAccountForm() {\n $('.js_braintree_addSrcAccountForm').submit(function () {\n var $form = $(this);\n var $btSrcFormErrorContainer = document.querySelector('#braintreeSrcFormErrorContainer');\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 $btSrcFormErrorContainer.style.display = 'block';\n $btSrcFormErrorContainer.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 initAddSrcAccount() {\n var srcIns;\n var $btn = document.querySelector('.js_braintree_src_account_button');\n var $srcNonce = document.querySelector('#braintreeSrcNonce');\n var $btSrcFormErrorContainer = document.querySelector('#braintreeSrcFormErrorContainer');\n var $btSrcLoader = document.querySelector('.braintreeSrcLoader');\n var loader = loaderInstance($btSrcLoader);\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 // eslint-disable-next-line no-console\n console.error($btn, 'not valid data-braintree-config');\n return;\n }\n loader.show();\n\n config.onTokenizePayment = function (data) {\n if ($btSrcFormErrorContainer.style.display === 'block') {\n $btSrcFormErrorContainer.style.display = 'none';\n $btSrcFormErrorContainer.textContent = '';\n }\n $srcNonce.value = data.nonce;\n document.querySelector('.braintreeSrcBtn').click();\n };\n\n srcIns = src.init(config, $btn);\n srcIns.loadSrcButton();\n\n $btn.setAttribute('data-is-inited', true);\n submitAddSrcAccountForm();\n}\n\nmodule.exports = {\n initAddSrcAccount\n};\n","var $srcContent = document.querySelector('.js_braintree_srcContent');\nvar $srcSessionAccount = document.querySelector('#sessionSrcAccount');\nvar $srcAccountList = document.querySelector('#braintreeSrcAccountsList');\nvar $srcButton = document.querySelector('.js_braintree_src_button');\nvar $accoutnListBlock = document.querySelector('.braintree_used_src_account');\nvar $alertInfo = document.getElementById('src-content') && document.getElementById('src-content').querySelectorAll('.alert-info')[0];\nvar helper = require('../helper');\nvar $saveSRCAccountCheckbox = document.querySelector('#braintreeSaveSRCAccount');\n\n\nfunction srcUpdateAmount(srcIns, config) { // eslint-disable-line require-jsdoc\n srcIns.loader.show();\n $.ajax({\n url: config.getOrderInfoUrl,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n srcIns.loader.hide();\n srcIns.updateAmount(data.amount);\n },\n error: function () {\n window.location.reload();\n }\n });\n}\n\nfunction setSessionAccountData(cardDescrition) {\n $srcSessionAccount.value = cardDescrition;\n $srcSessionAccount.text = cardDescrition;\n $srcSessionAccount.selected = true;\n $accoutnListBlock.style.display = 'block';\n $srcButton.style.display = 'none';\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', false);\n helper.continueButtonToggle(false);\n}\n\nfunction updateSessionAccountDropdown() {\n if ($srcAccountList.value === 'newaccount') {\n $srcButton.style.display = 'block';\n $alertInfo.style.display = 'block';\n helper.continueButtonToggle(true);\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', true);\n if ($saveSRCAccountCheckbox) {\n $saveSRCAccountCheckbox.checked = true;\n }\n } else {\n $srcButton.style.display = 'none';\n $alertInfo.style.display = 'none';\n helper.continueButtonToggle(false);\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', false);\n $saveSRCAccountCheckbox.checked = JSON.parse($srcSessionAccount.getAttribute('data-save'));\n }\n}\n\nfunction initSessionAccountDropdownState() {\n if ($srcAccountList.value === 'newaccount') {\n $alertInfo.style.display = 'block';\n $accoutnListBlock.style.display = 'none';\n } else {\n helper.continueButtonToggle(false);\n $srcContent.setAttribute('data-paypal-is-hide-continue-button', false);\n $srcButton.style.display = 'none';\n $alertInfo.style.display = 'none';\n }\n}\n\n/*\n Remove method was used and change appearance of googlepay tab\n**/\nfunction removeSessionNonce() {\n var $sessionAccount = document.querySelector('#sessionSrcAccount');\n $sessionAccount.value = '';\n $sessionAccount.text = '';\n $sessionAccount.setAttribute('data-save', false);\n $accoutnListBlock.style.display = 'none';\n\n document.querySelector('#braintreeSRCNonce').value = '';\n document.querySelector('#braintreeSrcBillingAddress').value = '';\n document.querySelector('#braintreeSrcCardDescription').value = '';\n\n document.querySelector('#newSrcAccount').selected = true;\n updateSessionAccountDropdown();\n}\n\nfunction createSrcShippingAddressData(shippingData) {\n var shippingAddress = {};\n shippingAddress.recipientName = shippingData.firstName + ' ' + shippingData.lastName;\n shippingAddress.phone = shippingData.phoneNumber;\n shippingAddress.countryCodeAlpha2 = shippingData.countryCode;\n shippingAddress.streetAddress = shippingData.streetAddress;\n shippingAddress.extendedAddress = shippingData.extendedAddress;\n shippingAddress.locality = shippingData.locality;\n shippingAddress.region = shippingData.region;\n shippingAddress.postalCode = shippingData.postalCode;\n return JSON.stringify(shippingAddress);\n}\n\nmodule.exports = {\n srcUpdateAmount,\n setSessionAccountData,\n updateSessionAccountDropdown,\n initSessionAccountDropdownState,\n removeSessionNonce,\n createSrcShippingAddressData\n};\n","'use strict';\nvar src = require('../braintreeSrc');\nvar srcHelper = require('./srcHelper');\n\nvar $srcButton = document.querySelector('.js_braintree_src_button');\nvar $srcNonce = document.querySelector('#braintreeSRCNonce');\nvar $srcCardDescription = document.querySelector('#braintreeSrcCardDescription');\nvar $srcBillingAddress = document.querySelector('#braintreeSrcBillingAddress');\nvar $srcAccountList = document.querySelector('#braintreeSrcAccountsList');\nvar $srcOnCart = document.querySelector('.braintree-cart-src-button');\n\nfunction initSrcButton(continueButton) {\n var srcIns;\n var config = JSON.parse($srcButton.getAttribute('data-braintree-config'));\n if (typeof config !== 'object' || config === null) {\n // eslint-disable-next-line no-console\n console.error($srcButton, 'not valid data-braintree-config');\n }\n\n if ($srcAccountList) {\n srcHelper.initSessionAccountDropdownState();\n $srcAccountList.addEventListener('change', srcHelper.updateSessionAccountDropdown);\n }\n\n config.onTokenizePayment = function (data) {\n require('../helper').removeActiveSessionPayment();\n var cardDescription = data.details.cardType + ' ' + data.description;\n var deviceData = document.querySelector('input[name=braintreeSrcDeviceDataInput]').value;\n\n if ($srcOnCart) {\n var shippingAddressData = srcHelper.createSrcShippingAddressData(data.shippingAddress);\n\n $.ajax({\n url: config.returnFromCartUrl,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n nonce: data.nonce,\n paymentCardDescription: cardDescription,\n billingAddress: data.billingAddressString,\n shippingAddress: shippingAddressData || {},\n deviceData: deviceData\n }),\n success: function (res) {\n sessionStorage.setItem('pageState', 'cart');\n srcIns.loader.hide();\n window.location.href = res.redirectUrl;\n },\n error: function () {\n srcIns.loader.hide();\n }\n });\n return;\n }\n\n $srcNonce.value = data.nonce;\n $srcCardDescription.value = cardDescription;\n $srcBillingAddress.value = data.billingAddressString;\n\n srcHelper.setSessionAccountData(cardDescription);\n\n continueButton.click();\n return;\n };\n\n srcIns = src.init(config, $srcButton);\n srcIns.loadSrcButton();\n\n $('body').on('checkout:updateCheckoutView', srcHelper.srcUpdateAmount.bind(null, srcIns, config));\n $('body').on('braintree:updateCartTotals', srcHelper.srcUpdateAmount.bind(null, srcIns, config));\n srcHelper.srcUpdateAmount(srcIns, config);\n}\n\nmodule.exports = {\n initSrcButton\n};\n","'use strict';\nvar braintreeVenmo = require('../braintreeVenmo');\nvar venmoHelper = require('./venmoHelper');\nvar helper = require('../helper');\nvar loaderInstance = require('../loaderHelper');\nvar accountsLoader;\n\nfunction initAddVenmoAccount() {\n var $btn = document.querySelector('.js_braintree_accountVenmoButton');\n var $venmoErrorContainer = document.querySelector('#venmoAccountErrorContainer');\n var $venmoLoader = document.querySelector('#braintreeVenmoAccLoader');\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 // eslint-disable-next-line no-console\n console.error($btn, 'not valid data-braintree-config');\n return;\n }\n\n config.$loaderContainer = $venmoLoader;\n config.$errorContainer = $venmoErrorContainer;\n config.deviceNotSupportVenmo = function () {\n venmoHelper.showVenmoAccountError();\n $venmoErrorContainer.textContent = config.messages.VENMO_BROWSER_NOT_SUPPORTED;\n };\n config.onTokenizePayment = function (data) {\n let accountVenmoButton = document.querySelector('.js_braintree_accountVenmoButton');\n let venmoAddAccountHandler = accountVenmoButton.getAttribute('data-venmo-add-account-handler');\n let venmoAccountFormFields = accountVenmoButton.getAttribute('data-venmo-account-form-fields');\n let venmoAccountFormData = helper.createPaymentFormData(venmoAccountFormFields, {\n nonce: data.nonce\n });\n let csrfToken = document.querySelector('.js_braintree_accountVenmoButton_wrapper #csrf_token');\n venmoAccountFormData.append(csrfToken.name, csrfToken.value);\n\n let $loaderContainter = document.querySelector('#venmoAccountBtLoader');\n accountsLoader = loaderInstance($loaderContainter);\n accountsLoader.show();\n return $.ajax({\n type: 'POST',\n url: venmoAddAccountHandler,\n data: venmoAccountFormData,\n contentType: false,\n processData: false\n })\n .then((paymentData) => {\n venmoHelper.hideVenmoAccountBtn();\n $venmoLoader.style.display = 'none';\n $venmoErrorContainer.textContent = '';\n $venmoErrorContainer.style.display = 'none';\n\n $.get(paymentData.renderAccountsUrl)\n .then((tplData => {\n accountsLoader.hide();\n document.querySelector('.venmo-accounts').innerHTML = tplData;\n document.querySelectorAll('.venmo-accounts .remove-bt-payment').forEach(function (el) {\n el.addEventListener('click', helper.removeBtPayment);\n });\n }));\n })\n .fail(({ responseJSON }) => {\n accountsLoader.hide();\n $venmoLoader.style.display = 'none';\n $venmoErrorContainer.style.display = 'block';\n $venmoErrorContainer.textContent = responseJSON.error;\n });\n };\n\n braintreeVenmo.init(config, $btn);\n $btn.setAttribute('isInited', true);\n}\n\nfunction initVenmoEvents() {\n let $addVenmoAccountBtn = document.querySelector('.add-venmo-account');\n $addVenmoAccountBtn.addEventListener('click', function () {\n venmoHelper.showVenmoAccountBtn();\n initAddVenmoAccount();\n });\n}\n\nfunction initVenmoButtonsEvents() {\n document.querySelector('.venmo-accounts').onclick = function (e) {\n if (e.target.classList.contains('remove-bt-payment')) {\n helper.removeBtPayment(e);\n } else if (e.target.classList.contains('braintree-make-default-card')) {\n var target = e.target;\n var url = target.getAttribute('data-make-default-url');\n var id = target.getAttribute('data-id');\n var paymentMethodID = document.querySelector('.venmo-accounts').getAttribute('data-payment-method-id');\n var $loaderContainter = document.querySelector('#' + target.getAttribute('data-loader'));\n var loader = loaderInstance($loaderContainter);\n loader.show();\n helper.setDefaultProperty({\n url: url,\n id: id,\n paymentMethodID: paymentMethodID,\n loader: loader\n });\n }\n };\n}\n\nmodule.exports = {\n initVenmoEvents,\n initAddVenmoAccount,\n initVenmoButtonsEvents\n};\n","'use strict';\nvar helper = require('../helper');\n\nvar $accountsList = document.querySelector('#braintreeVenmoAccountsList');\nvar $saveVenmoAccountCountainerEl = document.querySelector('#braintreeSaveVenmoAccountContainer');\nvar $saveVenmoAccountEl = document.querySelector('#braintreeSaveVenmoAccount');\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\nvar $addVenmoAccountBtn = document.querySelector('.add-venmo-account');\nvar $venmoAccountWrapper = document.querySelector('.js_braintree_accountVenmoButton_wrapper');\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 = 'block';\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 if ($saveVenmoAccountCountainerEl) {\n $saveVenmoAccountEl.checked = false;\n $saveVenmoAccountCountainerEl.style.display = 'none';\n }\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\n/**\n * updates the billing address form values within saved billing\n * @param {Object} billingAddress - the billing Address\n */\nfunction updateBillingAddressFormValues(billingAddress) {\n var form = $('form[name=dwfrm_billing]');\n var inputNames = ['firstName', 'lastName', 'address1', 'address2', 'city', 'postalCode', 'country'];\n if (!form) return;\n\n $.each(inputNames, function (index, value) {\n $(`input[name$=_${value}]`, form).val(decodeURIComponent(billingAddress[value]));\n });\n $('select[name$=_stateCode],input[name$=_stateCode]', form)\n .val(billingAddress.stateCode);\n}\n\nfunction showVenmoAccountBtn() {\n $addVenmoAccountBtn.style.display = 'none';\n $venmoAccountWrapper.style.display = 'block';\n}\nfunction hideVenmoAccountBtn() {\n $addVenmoAccountBtn.style.display = 'block';\n $venmoAccountWrapper.style.display = 'none';\n}\nfunction showVenmoAccountError() {\n $addVenmoAccountBtn.style.display = 'none';\n $venmoAccountWrapper.style.display = 'block';\n [].slice.call($venmoAccountWrapper.children).forEach(function (item) {\n if (!item.classList.contains('error')) {\n item.style.display = 'none';\n }\n });\n}\n\n/*\n Remove method was used and change appearance of venmo tab\n**/\nfunction removeSessionNonce() {\n var defaultOption = helper.getOptionByDataDefault('#braintreeVenmoAccountsList');\n document.querySelector('#braintreeVenmoNonce').value = '';\n document.querySelector('#braintreeVenmoBilling').value = '';\n if (defaultOption) {\n defaultOption.selected = true;\n hideShowButtons();\n } else {\n $venmoAccount.classList.remove('used-venmo-account');\n $venmoAccount.classList.add('used-venmo-account-hide');\n $venmoButton.style.display = 'block';\n }\n}\n\nmodule.exports = {\n showVenmoAccount,\n hideShowButtons,\n createLoaderContainter,\n hideVenmoButton,\n updateBillingAddressFormValues,\n showVenmoAccountBtn,\n hideVenmoAccountBtn,\n showVenmoAccountError,\n removeSessionNonce\n};\n","'use strict';\nvar braintreeVenmo = require('../braintreeVenmo');\nvar venmoHelper = require('./venmoHelper');\nvar loaderInstance = require('../loaderHelper');\nvar helper = require('../helper');\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\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\n if (JSON.parse($hideVenmoButton.getAttribute('data-is-hide-venmo-button')) && $btVermoAccountsList !== 'newaccount') {\n $venmoButton.style.display = 'none';\n }\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 /**\n * Setting current customer Billing address to form\n * For the case when SFCC redirects customer from payment stage to shipping stage\n * after successful Venmo app response\n */\n document.querySelector('#braintreeVenmoBilling').value = JSON.stringify(helper.getBillingAddressFormValues());\n\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 helper.removeActiveSessionPayment();\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 venmoHelper.updateBillingAddressFormValues(JSON.parse(document.querySelector('#braintreeVenmoBilling').value));\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","'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","require('./braintree/braintreeMFRA')();\n"],"sourceRoot":""}