"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7245],{37245:function(e,t,n){n.r(t),n.d(t,{QuickBuyModalPresenter:function(){return eo}});var o=n(95235),i=n(8529),r=n(2784),a=n(53055),s=n(60418),l=n(80131),c=n(68544),u=n(77316),d=n(97209),p=n(10013),b=n(27564),k=n(43897),g=n(35016),v=n(35246),f=n(8729),y=n(92491),h=n(48840),x=n(70554),m=n(52322);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function T(e){for(var t=1;t0&&(0,m.jsx)(x.oh,{children:(0,m.jsx)(v.$,{tags:o.tags})})]}):null},options:function(e){var t,n,o,i,r=e.product,a=e.quickBuyModalTheme,s=e.inStockComponent,l=e.selectedOptions,c=e.options,u=e.i18nText,d=e.setSelectedOptionsCallback,b=e.hideAsterixOnPDP;return(0,m.jsxs)("div",{style:{gridArea:g.p.OPTIONS},children:[(null==r||null===(t=r.subscriptionData)||void 0===t?void 0:t.displaySubscription)&&(0,m.jsx)(p.Y,T(T({},r.subscriptionData.subscriptionPurchaseOptions),{},{selectedOptions:l,onOptionChange:d})),!(null!=r&&null!==(n=r.subscriptionData)&&void 0!==n&&n.displaySubscriptionChoicesOnly)&&(0,m.jsx)(f.A,{options:c,selectedOptions:l,onOptionChange:d,hideAsterixOnPDP:b,i18nText:u,order:null===(o=a.productOptions)||void 0===o?void 0:o.order,dropdownWidth:null===(i=a.productOptions)||void 0===i||null===(i=i.dropdown)||void 0===i?void 0:i.width,showOnlyTwoRows:a.swatch.showOnlyTwoRows,displayColoursAsTextOnly:a.swatch.displayColoursAsTextOnly}),u.failedToAddToBasketError&&(0,m.jsx)(x.gY,{children:(0,m.jsx)(x.Vv,{error:u.failedToAddToBasketError,id:"quick-buy-add-to-basket-error-".concat(null==r?void 0:r.sku)})}),s&&s]})},pricing:function(e,t,n){var o;return(0,m.jsx)("div",{style:{gridArea:g.p.PRICING},children:(0,m.jsxs)(x.tw,{flexDirection:e.quickBuyModalTheme.pricing.flexDirection,alignItems:e.quickBuyModalTheme.pricing.alignItems,children:[e.pricing&&(0,m.jsx)(b.t,{pricing:e.pricing,priceDirection:e.quickBuyModalTheme.priceDirection,savings:e.quickBuyModalTheme.pricing.savings,i18nText:{saveLabel:e.i18nText.saveLabel,rrpLabel:e.i18nText.rrpLabel},priceTheme:e.quickBuyModalTheme.pricing.productPrice,discountMessageProps:{text:e.i18nText.subscriptionContractDiscountMessage,textStyle:null===(o=e.quickBuyModalTheme.pricing)||void 0===o||null===(o=o.discountMessage)||void 0===o?void 0:o.textStyle}}),!e.hideQuantitySelector&&(0,m.jsxs)("div",{style:{marginBottom:"".concat((0,h.W0)(2))},children:[(0,m.jsx)(x.Ds,{children:e.quantitySelector.i18nText.quantityLabel}),(0,m.jsx)(k.c,T(T({},e.quantitySelector),{},{quantityChangedCallback:function(e){e&&n(e)},editable:!0,quantity:t}))]})]})})},addToBag:function(e,t){var n,o,i,r,a,s,l=B({selectedQuantity:t,enablePreselectedProductVariant:e.enablePreselectedProductVariant,product:e.product,options:e.options,selectedOptions:e.selectedOptions}),c=(null===(n=e.product)||void 0===n||null===(n=n.subscriptionData)||void 0===n?void 0:n.enableSubscriptionContracts)&&(null===(o=e.product.subscriptionData.subscriptionPurchaseOptions)||void 0===o?void 0:o.activeTabIndex)===1&&!!e.product.subscriptionData.subscriptionPurchaseOptions.subscriptionContracts.length,u=(null===(i=e.product)||void 0===i||null===(i=i.subscriptionData)||void 0===i?void 0:i.enableSubscriptionContracts)&&((null===(r=e.product)||void 0===r||null===(r=r.subscriptionData)||void 0===r?void 0:r.productInBasketWithSubscriptionContract)||(null===(a=e.product)||void 0===a||null===(a=a.subscriptionData)||void 0===a?void 0:a.productInBasketWithoutSubscriptionContract)&&!!(null!==(s=e.product.subscriptionData.subscriptionPurchaseOptions)&&void 0!==s&&s.subscriptionContracts.length));return(0,m.jsx)(S,T({allowAddToBasket:!!l,allowAddToBasketAsSubscription:!!c,disableAddToBasketSubscriptions:!!u,selectedQuantity:t},e))},availability:function(e){return(0,m.jsx)("div",{style:{gridArea:g.p.AVAILABILITY},children:e.i18nText.availabilityMessage&&(0,m.jsx)(x.s,{children:e.i18nText.availabilityMessage})})},viewProduct:function(e){return(0,m.jsx)("div",{style:{gridArea:g.p.VIEWPRODUCT},children:e.links&&(0,m.jsx)(x.bi,{emphasis:"medium",href:e.links.productUrl,renderedAs:"a",onClick:function(t){var n;(null===(n=e.callbacks)||void 0===n?void 0:n.viewMoreInformationClicked)&&e.callbacks.viewMoreInformationClicked(t),e.setOpen&&e.setOpen(!1)},children:e.i18nText.viewMoreInformation})})}},S=function(e){return(0,m.jsx)("div",{style:{gridArea:g.p.ADDTOBAG},children:(0,m.jsx)(x.l1,{emphasis:"high",disabled:!e.allowAddToBasket||e.quantitySelector.maxValue<1||e.disableAddToBasketSubscriptions,onClick:function(){if(e.allowAddToBasket&&e.selectedQuantity&&e.selectedOptions){if(e.allowAddToBasketAsSubscription){var t;e.callbacks.addToBasketWithContractsCallback&&e.callbacks.addToBasketWithContractsCallback(e.selectedQuantity,null===(t=e.product)||void 0===t||null===(t=t.subscriptionData)||void 0===t||null===(t=t.subscriptionPurchaseOptions)||void 0===t?void 0:t.selectedFrequencyId)}else e.callbacks.addedToBasketClicked(e.selectedOptions,e.selectedQuantity)}},children:e.i18nText.addToBasket})})},C=function(e){var t=(0,y.G)();return(0,m.jsx)(x.OO,{children:e.components[t].map(function(t){return t?P[t](e.quickBuyModalContentProps,e.selectedQuantity,e.setSelectedQuantity):null})})},w=function(e){var t,n,o,i=(null===(t=e.subscriptionData)||void 0===t?void 0:t.productInBasketWithSubscriptionContract)||(null===(n=e.subscriptionData)||void 0===n?void 0:n.productInBasketWithoutSubscriptionContract)&&!!(null!==(o=e.subscriptionData)&&void 0!==o&&null!==(o=o.subscriptionPurchaseOptions)&&void 0!==o&&o.subscriptionContracts.length);return(0,m.jsxs)(r.Fragment,{children:[i&&(0,m.jsx)(x.o7,{text:e.i18nText.subscriptionInfoMessageText,type:"info"}),!e.quantitySelectorMaxValue&&(0,m.jsx)(x.tO,{type:"info",text:e.i18nText.maxQuantityBasketItemMessageText,"data-testid":"quantity-basket-item"})]})},j=function(e){return(0,m.jsxs)(x.Tc,{ref:e.modalButtonsRef,modalContentScrollable:e.modalContentScrollable,children:[(0,m.jsx)(x.l1,{emphasis:"high",disabled:!e.allowAddToBasket,onClick:function(){e.allowAddToBasket&&e.selectedQuantity&&e.selectedOptions&&e.callbacks.addedToBasketClicked(e.selectedOptions,e.selectedQuantity)},children:e.i18nText.addToBasket}),e.links&&!e.displayViewMoreInfo&&(0,m.jsx)(x.bi,{emphasis:"medium",href:e.links.productUrl,renderedAs:"a",onClick:function(){var t;(null===(t=e.callbacks)||void 0===t?void 0:t.viewMoreInformationClicked)&&e.callbacks.viewMoreInformationClicked,e.setOpen&&e.setOpen(!1)},children:e.i18nText.viewMoreInformation})]})},M=function(e){var t,n,o=e.i18nText,a=e.product,s=e.options,l=e.pricing,c=e.links,u=e.quantitySelector,p=e.hideQuantitySelector,b=e.callbacks,k=e.quickBuyModalTheme,g=e.coreTheme,v=e.setOpen,f=e.inStockComponent,y=e.selectedOptions,h=e.setSelectedOptionsCallback,O=e.enablePreselectedProductVariant,T=e.displayViewMoreInfo,P=e.hideAsterixOnPDP,S=r.useState(1),M=(0,i.Z)(S,2),A=M[0],D=M[1],q=r.useState(!1),I=(0,i.Z)(q,2),V=I[0],Q=I[1],L=r.useRef(null),E=r.useRef(null);if(r.useEffect(function(){var e;if(null!=L&&L.current&&null!=E&&E.current)return(e=new d.Z(function(){var e,t,n=null==L||null===(e=L.current)||void 0===e?void 0:e.getBoundingClientRect(),o=null==E||null===(t=E.current)||void 0===t?void 0:t.getBoundingClientRect();n&&o&&Q(n.top+n.height>o.top)})).observe(L.current),function(){e&&e.disconnect()}},[L]),!a)return(0,m.jsx)(x.eZ,{flashMessageId:"quickBuyModalMissingProduct",message:o.missingProductMessage,type:"error"});var R=B({enablePreselectedProductVariant:O,product:a,selectedQuantity:A,options:s,selectedOptions:y});return(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(x.r6,{children:o.modalTitle}),(0,m.jsx)(w,{i18nText:{subscriptionInfoMessageText:o.subscriptionInfoMessageText,maxQuantityBasketItemMessageText:o.maxQuantityBasketItemMessageText,failedToAddToBasketError:o.failedToAddToBasketError},productSku:a.sku,subscriptionData:a.subscriptionData,quantitySelectorMaxValue:u.maxValue}),(0,m.jsxs)(x.uE,{ref:L,reducedBottomPadding:k.enableStickyFooterButtons,children:[(0,m.jsx)(x.W7,{urls:a.images[0],alt:a.title,width:(null===(t=k.product)||void 0===t||null===(t=t.image)||void 0===t?void 0:t.width)||["100%","100%",190,191],height:(null===(n=k.product)||void 0===n||null===(n=n.image)||void 0===n?void 0:n.height)||["","",190,191]}),(0,m.jsx)(C,{quickBuyModalContentProps:{i18nText:o,product:a,pricing:l,links:c,quantitySelector:u,hideQuantitySelector:p,callbacks:b,quickBuyModalTheme:k,coreTheme:g,inStockComponent:f,options:s,selectedOptions:y,setSelectedOptionsCallback:h,setOpen:v,enablePreselectedProductVariant:O,hideAsterixOnPDP:P,productSku:null==a?void 0:a.sku.toString()},components:k.enabledComponents,selectedQuantity:A,setSelectedQuantity:D})]}),k.enableStickyFooterButtons&&(0,m.jsx)(j,{i18nText:o,modalButtonsRef:E,modalContentScrollable:V,allowAddToBasket:!!R,selectedQuantity:A,selectedOptions:y,callbacks:b,links:c,displayViewMoreInfo:T})]})},A=n(61265);function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function q(e){for(var t=1;t1?eE.multipleItemsText:eE.singleItemText,[(null==el?void 0:el.maxPerOrder)||5e3,ej]),e_=r.useRef(!1),eZ=r.useRef(),eW=r.useRef(),eN=r.useRef(),eF=r.useRef();if(P.presentAuroraQuickBuyModal.current=function(e){var t,n=e.sku,o=e.quantity,i=e.fromRecommendations,r=e.onBasketChangeBeacon,a=e.trackingUrl,l=e.initialSelectedOptions,c=e.setSelectedOptionsCallback,u=e.setSelectedVariantCallback,d=e.setOptionsCallback,p=e.fullProductData,k=e.displayNotifyWhenInStock,g=e.enableMobilePDPStickyAddToBasket;if(!l){eA();return}eh.current=o,e_.current=null!=i&&i,eW.current=r,eN.current=a,eZ.current=g,ef(l),eF.current={setSelectedOptionsCallback:c,setSelectedVariantCallback:u,setOptionsCallback:d};var v=p?"/e2/operation/product/product-options/".concat(n):"/e2/operation/product-options/".concat(n,"?displayNotifyWhenInStock=").concat(k);l&&s.Z.get(v,{timeout:null!==(t=null==O?void 0:O.PRODUCT_OPTIONS_TIMEOUT)&&void 0!==t?t:5e3,headers:{"Accept-Encoding":"deflate, gzip, br",Host:b,"x-customer-location":x}}).then(function(e){return e.data}).then(function(e){var t=Object.values(l).reduce(function(e,t){return e[t]},e);if(!t){eA();return}ec(t.variant),eb(t.options),ey.current=e}).catch(function(e){console.trace("Error fetching product options: ".concat(v),e),eA()}),er(!0)},!P.presentAuroraQuickBuyModal)return e.warn("AuroraQuickBuyModalPresenter: Failed to find an initialised BasketContext. Make sure presentAuroraQuickBuyModal ref is defined and it wraps AuroraQuickBuyModalPresenter."),null;if(!ei)return null;var eU=j.patterns.quickBuyModal,eH="v1|round_quick_buy_button"===T.quick_buy_icon_button;return(0,m.jsx)(I,en({enablePreselectedProductVariant:d,loading:!ep.length,setOpen:er,hideAsterixOnPDP:u,options:ep,product:el,quickBuyModalTheme:eU,displayViewMoreInfo:!!eZ,coreTheme:M,rendering:{open:ei,onClose:function(){er(!1),X.t.modalClose((null==el?void 0:el.sku.toString())||"")}},i18nText:en(en({},eq),{},{maxQuantityBasketItemMessageText:eR,subscriptionInfoMessageText:"",subscriptionContractDiscountMessage:"",failedToAddToBasketError:eO?eV:void 0,availabilityMessage:null==el?void 0:el.availabilityMessage}),modal:{i18nText:eQ,showHeader:!0,stickyHeader:!0,headerOffset:B,gridColSpan:[12,8,8,6],"data-testid":"quick-buy-modal",animation:!!eH||j.patterns.quickBuyModal.animation},selectedOptions:ev,setSelectedOptionsCallback:function(e,t){if(!ey.current){eA();return}eT(!1);var n=(0,U.WZ)({selectedOptions:ev,selectedVariant:el,optionKey:e,value:t,productOptionsMap:ey.current,setSelectedOptionsCallback:ef,setSelectedVariantCallback:ec,setOptionsCallback:eb}),o=n.updatedSelectedOptions,i=n.updatedProductOptions;eF.current&&o&&i&&(eF.current.setSelectedOptionsCallback&&eF.current.setSelectedOptionsCallback(o),eF.current.setSelectedVariantCallback&&eF.current.setSelectedVariantCallback(i.variant),eF.current.setOptionsCallback&&eF.current.setOptionsCallback(i.options))},pricing:el?(0,H.a)(el,k,g):void 0,links:{productUrl:null==el?void 0:el.product.url},callbacks:{addedToBasketClicked:function(e,t){if(P.presentAddedToBasketModal&&el){if(!el.enableAddToBasket){eT(!0);return}var n=P.presentAddedToBasketModal.current;P.presentAddedToBasketModal.current=function(e,t){P.presentAddedToBasketModal&&(er(!1),eT(!1),n(e,t),P.presentAddedToBasketModal.current=n)},eS([{quantity:t,sku:el.sku.toString()}],{fromRecommendations:e_.current,location:J.A.PRODUCT_LIST},N.eN.HomeDelivery,void 0,eW.current,eN.current),X.t.modalAddToBasket(el.sku.toString())}},viewMoreInformationClicked:function(){el&&X.t.modalInformation(null==el?void 0:el.product.sku.toString())},addToBasketWithContractsCallback:function(e,t){eP({variables:{basketId:null==w?void 0:w.id,sku:null==el?void 0:el.sku.toString(),quantity:e,contractId:t,settings:{currency:f,shippingDestination:y.code}}}).then(function(){if(P.presentAddedToBasketModal&&el){var t=P.presentAddedToBasketModal.current;er(!1),t(null==el?void 0:el.sku.toString(),e)}})}},quantitySelector:{i18nText:eL,maxValue:ew,quantity:eh.current}},n&&o&&{inStockComponent:(0,m.jsx)(c.G,{selectedVariant:el,url:(null==el?void 0:el.product.url)||"",styleOverride:{margin:{top:0,bottom:2}}})}))}}}]); //# sourceMappingURL=7245.27a3c72929337b58.js.map