{"version":3,"sources":["webpack:///./cartridges/app_harmony/cartridge/client/default/js/widgets/product/HarmonyAddToCartMixin.js"],"names":["AddToCartMixin","HarmonyAddToCartMixin","prefs","autoCloseMinicart","autoCloseTimeout","showMessageOnProductAdd","classHidden","shipToRestrictedStates","isHandledRestrictedStates","isDisabled","constants","INPUT_QUANTITY_ELEMENT_ID","ALERT_SHOW","init","eventBus","on","handleStateRestrictions","buttonText","getQtyValue","getById","qtyInput","ref","val","getChildProducts","button","JSON","stringify","config","childProducts","postAddProduct","response","pid","document","getElementById","productId","getAttribute","element","error","cart","emit","cartModel","isCSCAgent","showMinicart","showMinicartOnProductAdd","setAttribute","showAlertMessage","accessibilityAlerts","addedtocart","updateAvailabilityComponent","accessibilityAlert","message","errorClass","isOutOfStock","errorData","quantity","qtyValue","addToCartBtn","setText","outOfStockLabel","disable","availability","render","outOfStockError","outofstock","isNotEnoughATS","addToCart","isBusy","addToCartBtnPrefs","readyToOrder","showCartMessage","textSelectOptions","stock","selectedQuantity","textStockLimit","startProcess","showProgressBar","promise","submitFormJson","addToCartUrl","currentProductID","then","finally","stopProcess","hideProgressBar","catch","isbundle","undefined","textNetworkError","toggleDisable","disabled","processButton","enable","renderAddToCart","product","shipToRestricted","isEmptyPrice","available","isPreorder","preorderLabel","update","triggerClick","toggleBusy","initiator","isError","stateID","forceRestriction","btn","getStateID","console","log","isRestricted","isStateRestricted","toggleClass","disabledBtn","handleRemovedProduct","HarmonyQuantityStepper","getConstructor","eachChild","child","changeValue"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA;;;;;;;;AAOe,yEAAUA,cAAV,EAA0B;AACrC;;;;;;;;;AASA,QAAMC,qBAAN,SAAoCD,cAApC,CAAmD;AAC/CE,SAAK,GAAG;AACJ,aAAO,EACH,GAAG,MAAMA,KAAN,EADA;AAEHC,yBAAiB,EAAE,KAFhB;AAGHC,wBAAgB,EAAE,IAHf;AAIHC,+BAAuB,EAAE,KAJtB;AAKHC,mBAAW,EAAE,UALV;AAMHC,8BAAsB,EAAE,EANrB;AAOHC,iCAAyB,EAAE,KAPxB;AAQHC,kBAAU,EAAE;AART,OAAP;AAUH;;AAED,QAAIC,SAAJ,GAAgB;AACZ,aAAO;AACHC,iCAAyB,EAAE,gBADxB;AAEHC,kBAAU,EAAE;AAFT,OAAP;AAIH;;AAEDC,QAAI,GAAG;AACH,YAAMA,IAAN,GADG,CAGH;;AACA,WAAKC,QAAL,GAAgBC,EAAhB,CAAmB,6BAAnB,EAAkD,yBAAlD;AACA,WAAKD,QAAL,GAAgBC,EAAhB,CAAmB,uCAAnB,EAA4D,yBAA5D;AACA,WAAKD,QAAL,GAAgBC,EAAhB,CAAmB,0BAAnB,EAA+C,sBAA/C;AACA,WAAKC,uBAAL;AAEA,WAAKC,UAAL,GAAkB,EAAlB;AACH;AAED;;;;;AAGAC,eAAW,GAAG;AACV,aAAO,KAAKC,OAAL,CAAa,KAAKT,SAAL,CAAeC,yBAA5B,EAAwDS,QAAD,IAAc;AACxE,eAAQA,QAAQ,IAAIA,QAAQ,CAACC,GAAT,CAAa,OAAb,CAAZ,IAAqCD,QAAQ,CAACC,GAAT,CAAa,OAAb,EAAsBC,GAAtB,EAA7C;AACH,OAFM,CAAP;AAGH;AAED;;;;;AAGAC,oBAAgB,GAAG;AACf,aAAO,KAAKJ,OAAL,CAAa,WAAb,EAA2BK,MAAD,IAAY;AACzC,eAAOC,IAAI,CAACC,SAAL,CAAgBF,MAAM,IAAIA,MAAM,CAACG,MAAjB,IAA2BH,MAAM,CAACG,MAAP,CAAcC,aAAzD,CAAP;AACH,OAFM,CAAP;AAGH;AAED;;;;;;AAIAC,kBAAc,CAACC,QAAD,EAAW;AACrB,UAAIC,GAAG,GAAGC,QAAQ,CAACC,cAAT,CAAwB,wBAAxB,CAAV;AACA,YAAMC,SAAS,GAAGH,GAAH,aAAGA,GAAH,uBAAGA,GAAG,CAAEI,YAAL,CAAkB,UAAlB,CAAlB;AACA,UAAIC,OAAO,GAAGJ,QAAQ,CAACC,cAAT,CAAwB,iBAAiBC,SAAzC,CAAd;;AACA,UAAI,CAACJ,QAAQ,CAACO,KAAV,IAAmBP,QAAQ,CAACQ,IAAhC,EAAsC;AAClC,aAAKC,IAAL,CAAU,cAAV;AACA,cAAMC,SAAS,GAAGV,QAAQ,CAACQ,IAA3B,CAFkC,CAGlC;;AACA,YAAIR,QAAQ,CAACW,UAAb,EAAyB;AACrBD,mBAAS,CAACE,YAAV,GAAyB,KAAzB;AACH,SAFD,MAEO;AACHF,mBAAS,CAACE,YAAV,GAAyB,KAAKxC,KAAL,GAAayC,wBAAtC;AACH;;AACDP,eAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,YAAT,CAAsB,0BAAtB,EAAkD,MAAlD;AACA,aAAK9B,QAAL,GAAgByB,IAAhB,CAAqB,uBAArB,EAA8CC,SAA9C,EAAyD,IAAzD;AACA,aAAKK,gBAAL,CAAsB,KAAK3C,KAAL,GAAa4C,mBAAb,CAAiCC,WAAvD;AACI,aAAKC,2BAAL;AACP;;AAED,YAAM;AAAE7C,yBAAF;AAAqBC;AAArB,UAA0C,KAAKF,KAAL,EAAhD;;AACA,UAAI,CAAC4B,QAAQ,CAACO,KAAV,IAAmBP,QAAQ,CAACQ,IAA5B,IAAoCnC,iBAAxC,EAA2D;AACvD,aAAKW,QAAL,GAAgByB,IAAhB,CAAqB,qBAArB,EAA4CnC,gBAA5C;AACH;;AAED,UAAI0B,QAAQ,CAACO,KAAT,IAAkB,KAAKnC,KAAL,GAAaG,uBAAnC,EAA4D;AACxD+B,eAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,YAAT,CAAsB,0BAAtB,EAAkD,OAAlD;AACA,cAAMK,kBAAkB,GAAGnB,QAAQ,CAACoB,OAApC;AAEA,aAAKpC,QAAL,GAAgByB,IAAhB,CAAqB,gCAArB,EAAuDT,QAAvD;AACA,aAAKhB,QAAL,GAAgByB,IAAhB,CAAqB,KAAK7B,SAAL,CAAeE,UAApC,EAAgD;AAC5CqC,4BAD4C;AAE5CE,oBAAU,EAAE;AAFgC,SAAhD;AAIH,OAjCoB,CAmCrB;;;AACA,UAAIrB,QAAQ,CAACsB,YAAT,IAAyBtB,QAAQ,CAACuB,SAAtC,EAAiD;AAC7C;AACA,aAAKlC,OAAL,CAAa,KAAKT,SAAL,CAAeC,yBAA5B,EAAwD2C,QAAD,IAAc;AACjEA,kBAAQ,CAACjC,GAAT,CAAa,OAAb,EAAsBC,GAAtB,CAA0BQ,QAAQ,CAACuB,SAAT,CAAmBE,QAA7C;AACH,SAFD,EAF6C,CAM7C;;AACA,aAAKpC,OAAL,CAAa,WAAb,EAA2BqC,YAAD,IAAkB;AACxCA,sBAAY,CAACC,OAAb,CAAqB,KAAKvD,KAAL,GAAawD,eAAlC;AACAF,sBAAY,CAACG,OAAb;AACA,eAAK1C,UAAL,GAAkB,KAAKf,KAAL,GAAawD,eAA/B;AACH,SAJD,EAP6C,CAa7C;;AACA,aAAK5C,QAAL,GAAgByB,IAAhB,CAAqB,0BAArB,EAAiD,IAAjD,EAd6C,CAgB7C;;AACA,aAAKpB,OAAL,CAAa,cAAb,EAA8ByC,YAAD,IAAkB;AAC3CA,sBAAY,CAACC,MAAb,CAAoB,UAApB,EAAgC/B,QAAQ,CAACuB,SAAzC,EAAoDO,YAAY,CAACvC,GAAb,CAAiB,WAAjB,CAApD;AACH,SAFD;AAGAe,eAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEQ,YAAT,CAAsB,0BAAtB,EAAkD,OAAlD;AACA,cAAMkB,eAAe,GAAG,KAAK5D,KAAL,GAAa4C,mBAAb,CAAiCiB,UAAzD;AACA,aAAKjD,QAAL,GAAgByB,IAAhB,CAAqB,KAAK7B,SAAL,CAAeE,UAApC,EAAgD;AAC5CqC,4BAAkB,EAAEa,eADwB;AAE5CX,oBAAU,EAAE;AAFgC,SAAhD;AAIH,OA9DoB,CAgErB;;;AACA,UAAIrB,QAAQ,CAACkC,cAAT,IAA2BlC,QAAQ,CAACuB,SAAxC,EAAmD;AAC/C;AACA,aAAKlC,OAAL,CAAa,KAAKT,SAAL,CAAeC,yBAA5B,EAAwD2C,QAAD,IAAc;AACjEA,kBAAQ,CAACjC,GAAT,CAAa,OAAb,EAAsBC,GAAtB,CAA0BQ,QAAQ,CAACuB,SAAT,CAAmBE,QAA7C;AACH,SAFD,EAF+C,CAM/C;;AACA,aAAKpC,OAAL,CAAa,cAAb,EAA8ByC,YAAD,IAAkB;AAC3CA,sBAAY,CAACC,MAAb,CAAoB,UAApB,EAAgC/B,QAAQ,CAACuB,SAAzC,EAAoDO,YAAY,CAACvC,GAAb,CAAiB,WAAjB,CAApD;AACH,SAFD;AAGH;AACJ;AAED;;;;;;;AAKA4C,aAAS,CAACzC,MAAD,EAAS;AACd,WAAKV,QAAL,GAAgByB,IAAhB,CAAqB,0BAArB,EAAiD,IAAjD,EADc,CAGd;;AACA,UAAIf,MAAM,CAAC0C,MAAX,EAAmB;AACf;AACH;;AAED,YAAMC,iBAAiB,GAAG3C,MAAM,CAACtB,KAAP,EAA1B;;AAEA,UAAIiE,iBAAiB,CAACC,YAAtB,EAAoC;AAChC,aAAKA,YAAL,GAAoBD,iBAAiB,CAACC,YAAtC;AACH;;AAED,UAAI,CAAC,KAAKA,YAAV,EAAwB;AACpB,aAAKC,eAAL,CAAqB,KAAKnE,KAAL,GAAaoE,iBAAlC,EAAqD,IAArD;AAEA;AACH;;AAED,UAAI,KAAKC,KAAL,IAAc,KAAKA,KAAL,GAAa,KAAKC,gBAApC,EAAsD;AAClD,aAAKH,eAAL,CAAqB,KAAKnE,KAAL,GAAauE,cAAlC,EAAkD,IAAlD;AAEA;AACH;;AAEDjD,YAAM,CAACkD,YAAP;AAEA,WAAKC,eAAL;AAEA,YAAMC,OAAO,GAAGC,2EAAc,CAACV,iBAAiB,CAACW,YAAnB,EAAiC;AAC3D/C,WAAG,EAAE,KAAKgD,gBAAL,IAAyBZ,iBAAiB,CAACpC,GADW;AAE3DuB,gBAAQ,EAAE,KAAKpC,WAAL,MAAsB,KAAKsD,gBAA3B,IAA+C,CAFE;AAG3D5C,qBAAa,EAAE,KAAKL,gBAAL,MAA2B;AAHiB,OAAjC,CAAd,CAIbyD,IAJa,CAIRlD,QAAQ,IAAI,KAAKD,cAAL,CAAoBC,QAApB,CAJJ,EAKXmD,OALW,CAKH,MAAM;AACXzD,cAAM,CAAC0D,WAAP,CAAmB,KAAKjE,UAAxB;AACA,aAAKA,UAAL,GAAkB,EAAlB;AAEA,aAAKkE,eAAL;AAEA,aAAKrE,QAAL,GAAgByB,IAAhB,CAAqB,0BAArB,EAAiD,KAAjD;AACH,OAZW,EAYT6C,KAZS,CAYH,MAAM;AACX;AACA,YAAGjB,iBAAiB,CAACkB,QAAlB,KAA+BC,SAA/B,IAA4C,CAACnB,iBAAiB,CAACkB,QAAlE,EAA2E;AACvE,eAAKhB,eAAL,CAAqB,KAAKnE,KAAL,GAAaqF,gBAAlC,EAAoD,IAApD;AACH;AACJ,OAjBW,CAAhB;AAmBA,WAAKzE,QAAL,GAAgByB,IAAhB,CAAqB,cAArB,EAAqCqC,OAArC;AACH;AAED;;;;;;AAIAY,iBAAa,CAACC,QAAD,EAAW;AACpB,WAAKtE,OAAL,CAAa,WAAb,EAA2BuE,aAAD,IAAmB;AACzC,YAAID,QAAJ,EAAc;AACVC,uBAAa,CAAC/B,OAAd;AACH,SAFD,MAEO;AACH+B,uBAAa,CAACC,MAAd;AACH;AACJ,OAND;AAOH;AAED;;;;;;AAIAC,mBAAe,CAACC,OAAD,EAAU;AACrB,WAAK1E,OAAL,CAAa,WAAb,EAA2BqC,YAAD,IAAkB;AACxC,YAAIqC,OAAO,CAACC,gBAAR,IAA4BD,OAAO,CAACE,YAAxC,EAAsD;AAClDvC,sBAAY,CAACG,OAAb;AACH,SAFD,MAEO,IAAI,CAACkC,OAAO,CAACG,SAAT,IAAsBH,OAAO,CAACjC,YAAR,CAAqBR,YAA/C,EAA6D;AAChEI,sBAAY,CAACC,OAAb,CAAqB,KAAKvD,KAAL,GAAawD,eAAlC;AACAF,sBAAY,CAACG,OAAb;AACH,SAHM,MAGA,IAAIkC,OAAO,CAACjC,YAAR,CAAqBqC,UAAzB,EAAqC;AACxCzC,sBAAY,CAACC,OAAb,CAAqB,KAAKvD,KAAL,GAAagG,aAAlC;AACA1C,sBAAY,CAACmC,MAAb;AACH,SAHM,MAGA;AACHnC,sBAAY,CAACC,OAAb,CAAqB,KAAKvD,KAAL,GAAa,KAAKA,KAAL,GAAaiG,MAAb,GAAsB,aAAtB,GAAsC,gBAAnD,CAArB;AACA3C,sBAAY,CAACmC,MAAb;AACH;AACJ,OAbD;AAcH;AAED;;;;;AAGAS,gBAAY,GAAG;AACX,WAAKjF,OAAL,CAAa,WAAb,EAA2BuE,aAAD,IAAmB;AACzC,aAAKzB,SAAL,CAAeyB,aAAf;AACH,OAFD;AAGH;AAED;;;;;;;AAKAW,cAAU,CAACC,SAAD,EAAYpC,MAAZ,EAAoB;AAC1B,WAAK/C,OAAL,CAAa,WAAb,EAA2BuE,aAAD,IAAmB;AACzC,YAAIxB,MAAJ,EAAY;AACRwB,uBAAa,CAAChB,YAAd;AACH,SAFD,MAEO;AACHgB,uBAAa,CAACR,WAAd;AACH;AACJ,OAND;AAOH;AAED;;;;;;;AAKArC,oBAAgB,CAACK,OAAD,EAAUqD,OAAO,GAAG,KAApB,EAA2B;AACvC,WAAKzF,QAAL,GAAgByB,IAAhB,CAAqB,KAAK7B,SAAL,CAAeE,UAApC,EAAgD;AAC5CqC,0BAAkB,EAAEC,OADwB;AAE5CC,kBAAU,EAAEoD;AAFgC,OAAhD;AAIH;AAED;;;;;;;AAKAvF,2BAAuB,CAACwF,OAAD,EAAUC,gBAAV,EAA4B;AAC/C,UAAIjD,YAAY,GAAG,KAAKrC,OAAL,CAAa,WAAb,EAA2BuF,GAAD,IAAS;AAClD,eAAOA,GAAP;AACH,OAFkB,CAAnB;;AAIA,UAAI,CAAClD,YAAD,IAAiB,CAACA,YAAY,CAACtD,KAAb,EAAlB,IAA0CsD,YAAY,CAACtD,KAAb,GAAqBO,UAA/D,IACO,CAAC+C,YAAY,CAACtD,KAAb,GAAqBM,yBADjC,EAC4D;AACxD;AACH;;AAEDgG,aAAO,GAAGG,8EAAU,CAACH,OAAD,CAApB;AACAI,aAAO,CAACC,GAAR,CAAY,KAAZ,EAAmBL,OAAnB;;AACA,UAAI,CAACA,OAAL,EAAc;AACV;AACH;;AAED,UAAIM,YAAY,GAAGL,gBAAgB,IAAIM,qFAAiB,CAACP,OAAD,EAAUhD,YAAY,CAACtD,KAAb,GAAqBK,sBAA/B,CAAxD;AACA,UAAID,WAAW,GAAG,KAAKJ,KAAL,GAAaI,WAA/B,CAjB+C,CAmB/C;;AACA,WAAKkF,aAAL,CAAmBsB,YAAnB;AACAtD,kBAAY,CAACnC,GAAb,CAAiB,MAAjB,EAAyB2F,WAAzB,CAAqC1G,WAArC,EAAkDwG,YAAlD,EArB+C,CAuB/C;;AACA,WAAK3F,OAAL,CAAa,qBAAb,EAAqC8F,WAAD,IAAiB;AACjDA,mBAAW,CAAC5F,GAAZ,CAAgB,MAAhB,EAAwB2F,WAAxB,CAAoC1G,WAApC,EAAiD,CAACwG,YAAlD;AACH,OAFD;AAGH;AAED;;;;;;AAIAI,wBAAoB,CAACnF,GAAD,EAAM;AACtB,UAAIA,GAAG,KAAK,KAAKA,GAAjB,EAAsB;AAClB,aAAKiB,2BAAL;AACH;AACJ;AAED;;;;;AAGAA,+BAA2B,GAAG;AACzB;AACA,YAAMmE,sBAAsB;AAAG;AAAsC,WAAKC,cAAL,CAAoB,wBAApB,CAArE;AAEA,WAAKC,SAAL,CAAeC,KAAK,IAAI;AACpB,YAAKA,KAAK,YAAYH,sBAAtB,EAA+C;AAC3CG,eAAK,CAACC,WAAN;AACH;AACJ,OAJD;AAKJ;;AA7T8C;;AAgUnD,SAAOtH,qBAAP;AACH,C","file":"1.bundle.js","sourcesContent":["import { submitFormJson } from 'widgets/toolbox/ajax';\nimport { getStateID, isStateRestricted } from 'harmony/toolbox/shipToUtils';\nimport { isMediumViewAndDown } from 'widgets/toolbox/viewtype';\n\n/**\n * @description Base HarmonyAddToCartMixin implementation\n *
This class is not intended to have a separate DOM representation.\n * @param AddToCartMixin\n * @param {ProductDetail} ProductDetail Base widget for extending\n * @returns {typeof HarmonyAddToCartMixin} Harmony Add to Cart mixin class\n */\nexport default function (AddToCartMixin) {\n /**\n * @class HarmonyAddToCartMixin\n * @augments AddToCartMixin\n * @property {string} data-text-network-error - network error text\n * @property {string} data-add-to-cart-label - add to cart label\n * @property {string} data-pid - product id\n * @property {string} data-show-minicart-on-product-add - Show minicart on product add\n * @property {string} data-show-message-on-product-add - Show message on poroduct add\n */\n class HarmonyAddToCartMixin extends AddToCartMixin {\n prefs() {\n return {\n ...super.prefs(),\n autoCloseMinicart: false,\n autoCloseTimeout: 5000,\n showMessageOnProductAdd: false,\n classHidden: 'h-hidden',\n shipToRestrictedStates: [],\n isHandledRestrictedStates: false,\n isDisabled: false\n };\n }\n\n get constants() {\n return {\n INPUT_QUANTITY_ELEMENT_ID: 'input-quantity',\n ALERT_SHOW: 'alert.show'\n };\n }\n\n init() {\n super.init();\n\n // handle shipping restrictions\n this.eventBus().on('shipto.restrictions.updated', 'handleStateRestrictions');\n this.eventBus().on('shipto.restrictions.updated.addtocart', 'handleStateRestrictions');\n this.eventBus().on('minicart.removed.product', 'handleRemovedProduct');\n this.handleStateRestrictions();\n\n this.buttonText = '';\n }\n\n /**\n * @description Get value from input quantity block\n */\n getQtyValue() {\n return this.getById(this.constants.INPUT_QUANTITY_ELEMENT_ID, (qtyInput) => {\n return (qtyInput && qtyInput.ref('field') && qtyInput.ref('field').val());\n });\n }\n\n /**\n * @description get value from button data attribute\n */\n getChildProducts() {\n return this.getById('addToCart', (button) => {\n return JSON.stringify((button && button.config && button.config.childProducts));\n });\n }\n\n /**\n * @description handle response from server after product added\n * @param {any} response Add Product response\n */\n postAddProduct(response) {\n let pid = document.getElementById('add-to-cart-product-id');\n const productId = pid?.getAttribute('data-pid');\n let element = document.getElementById('add-to-cart-' + productId);\n if (!response.error && response.cart) {\n this.emit('productadded');\n const cartModel = response.cart;\n // Hide mini cart pop up for CSC Agent\n if (response.isCSCAgent) {\n cartModel.showMinicart = false;\n } else {\n cartModel.showMinicart = this.prefs().showMinicartOnProductAdd;\n }\n element?.setAttribute('data-add-to-cart-success', 'true');\n this.eventBus().emit('product.added.to.cart', cartModel, this);\n this.showAlertMessage(this.prefs().accessibilityAlerts.addedtocart);\n this.updateAvailabilityComponent();\n }\n\n const { autoCloseMinicart, autoCloseTimeout } = this.prefs();\n if (!response.error && response.cart && autoCloseMinicart) {\n this.eventBus().emit('auto.close.minicart', autoCloseTimeout);\n }\n\n if (response.error || this.prefs().showMessageOnProductAdd) {\n element?.setAttribute('data-add-to-cart-success', 'false');\n const accessibilityAlert = response.message;\n\n this.eventBus().emit('product.addedTocart.with.error', response);\n this.eventBus().emit(this.constants.ALERT_SHOW, {\n accessibilityAlert,\n errorClass: true\n });\n }\n\n // set out of stock status\n if (response.isOutOfStock && response.errorData) {\n // set max available value\n this.getById(this.constants.INPUT_QUANTITY_ELEMENT_ID, (quantity) => {\n quantity.ref('field').val(response.errorData.qtyValue);\n });\n\n // disable `Add to cart` button\n this.getById('addToCart', (addToCartBtn) => {\n addToCartBtn.setText(this.prefs().outOfStockLabel);\n addToCartBtn.disable();\n this.buttonText = this.prefs().outOfStockLabel;\n });\n\n // disable quantity's block\n this.eventBus().emit('product.quantity.disable', true);\n\n // set availability\n this.getById('availability', (availability) => {\n availability.render('template', response.errorData, availability.ref('container'));\n });\n element?.setAttribute('data-add-to-cart-success', 'false');\n const outOfStockError = this.prefs().accessibilityAlerts.outofstock;\n this.eventBus().emit(this.constants.ALERT_SHOW, {\n accessibilityAlert: outOfStockError,\n errorClass: true\n });\n }\n\n // set low in stock status\n if (response.isNotEnoughATS && response.errorData) {\n // set max available value\n this.getById(this.constants.INPUT_QUANTITY_ELEMENT_ID, (quantity) => {\n quantity.ref('field').val(response.errorData.qtyValue);\n });\n\n // set availability\n this.getById('availability', (availability) => {\n availability.render('template', response.errorData, availability.ref('container'));\n });\n }\n }\n\n /**\n * @description widget triggered event\n * Run `addToCart` event\n * @param {object} button\n */\n addToCart(button) {\n this.eventBus().emit('addtocart.button.clicked', true);\n\n // Prevent twice clicks on a button\n if (button.isBusy) {\n return;\n }\n\n const addToCartBtnPrefs = button.prefs();\n\n if (addToCartBtnPrefs.readyToOrder) {\n this.readyToOrder = addToCartBtnPrefs.readyToOrder;\n }\n\n if (!this.readyToOrder) {\n this.showCartMessage(this.prefs().textSelectOptions, true);\n\n return;\n }\n\n if (this.stock && this.stock < this.selectedQuantity) {\n this.showCartMessage(this.prefs().textStockLimit, true);\n\n return;\n }\n\n button.startProcess();\n\n this.showProgressBar();\n\n const promise = submitFormJson(addToCartBtnPrefs.addToCartUrl, {\n pid: this.currentProductID || addToCartBtnPrefs.pid,\n quantity: this.getQtyValue() || this.selectedQuantity || 1,\n childProducts: this.getChildProducts() || []\n }).then(response => this.postAddProduct(response))\n .finally(() => {\n button.stopProcess(this.buttonText);\n this.buttonText = '';\n\n this.hideProgressBar();\n\n this.eventBus().emit('addtocart.button.clicked', false);\n }).catch(() => {\n //once bundle perfomance issue is fixed, Remove if condition.\n if(addToCartBtnPrefs.isbundle === undefined && !addToCartBtnPrefs.isbundle){\n this.showCartMessage(this.prefs().textNetworkError, true);\n }\n });\n\n this.eventBus().emit('loader.start', promise);\n }\n\n /**\n * @description Toggle disable attr of addToCartBtn\n * @param {any} disabled\n */\n toggleDisable(disabled) {\n this.getById('addToCart', (processButton) => {\n if (disabled) {\n processButton.disable();\n } else {\n processButton.enable();\n }\n });\n }\n\n /**\n * @description Render `Add To Cart` button\n * @param {object} product\n */\n renderAddToCart(product) {\n this.getById('addToCart', (addToCartBtn) => {\n if (product.shipToRestricted || product.isEmptyPrice) {\n addToCartBtn.disable();\n } else if (!product.available && product.availability.isOutOfStock) {\n addToCartBtn.setText(this.prefs().outOfStockLabel);\n addToCartBtn.disable();\n } else if (product.availability.isPreorder) {\n addToCartBtn.setText(this.prefs().preorderLabel);\n addToCartBtn.enable();\n } else {\n addToCartBtn.setText(this.prefs()[this.prefs().update ? 'updateLabel' : 'addToCartLabel']);\n addToCartBtn.enable();\n }\n });\n }\n\n /**\n * @description Add to cart trigger click handler\n */\n triggerClick() {\n this.getById('addToCart', (processButton) => {\n this.addToCart(processButton);\n });\n }\n\n /**\n * @description Toggle busy of addToCartBtn\n * @param {object} initiator - widget initiator\n * @param {boolean} isBusy - is busy processing flag\n */\n toggleBusy(initiator, isBusy) {\n this.getById('addToCart', (processButton) => {\n if (isBusy) {\n processButton.startProcess();\n } else {\n processButton.stopProcess();\n }\n });\n }\n\n /**\n * @description Emits global alert\n * @param {string} message Text for an alert\n * @param {boolean} isError is error flag\n */\n showAlertMessage(message, isError = false) {\n this.eventBus().emit(this.constants.ALERT_SHOW, {\n accessibilityAlert: message,\n errorClass: isError\n });\n }\n\n /**\n * @param {any} stateID - state id\n * @param {boolean|undefined} forceRestriction - force restriction\n * @description Handle update of shipping restrictions\n */\n handleStateRestrictions(stateID, forceRestriction) {\n var addToCartBtn = this.getById('addToCart', (btn) => {\n return btn;\n });\n\n if (!addToCartBtn || !addToCartBtn.prefs() || addToCartBtn.prefs().isDisabled\n || !addToCartBtn.prefs().isHandledRestrictedStates) {\n return;\n }\n\n stateID = getStateID(stateID);\n console.log('btn', stateID);\n if (!stateID) {\n return;\n }\n\n var isRestricted = forceRestriction || isStateRestricted(stateID, addToCartBtn.prefs().shipToRestrictedStates);\n var classHidden = this.prefs().classHidden;\n\n // handle `addToCart` button\n this.toggleDisable(isRestricted);\n addToCartBtn.ref('self').toggleClass(classHidden, isRestricted);\n\n // handle disabled button\n this.getById('product_disabledbtn', (disabledBtn) => {\n disabledBtn.ref('self').toggleClass(classHidden, !isRestricted);\n });\n }\n\n /**\n * @description handle removed product\n * @param {string} pid - product id\n */\n handleRemovedProduct(pid) {\n if (pid === this.pid) {\n this.updateAvailabilityComponent();\n }\n }\n\n /**\n * @description update availability component\n */\n updateAvailabilityComponent() {\n // eslint-disable-next-line max-len\n const HarmonyQuantityStepper = /** @type {HarmonyQuantityStepper} */(this.getConstructor('harmonyQuantityStepper'));\n\n this.eachChild(child => {\n if ((child instanceof HarmonyQuantityStepper)) {\n child.changeValue();\n }\n });\n }\n }\n\n return HarmonyAddToCartMixin;\n}\n"],"sourceRoot":""}