"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],I=r.useState(!1),q=(0,i.Z)(I,2),V=q[0],Q=q[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 I(e){for(var t=1;t1?eL.multipleItemsText:eL.singleItemText,[(null==es?void 0:es.maxPerOrder)||5e3,ew]),eR=r.useRef(!1),eZ=r.useRef(),eW=r.useRef(),e_=r.useRef(),eN=r.useRef();if(B.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){eM();return}ey.current=o,eR.current=null!=i&&i,eW.current=r,e_.current=a,eZ.current=g,ev(l),eN.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){eM();return}el(t.variant),ep(t.options),ef.current=e}).catch(function(e){console.trace("Error fetching product options: ".concat(v),e),eM()}),ei(!0)},!B.presentAuroraQuickBuyModal)return e.warn("AuroraQuickBuyModalPresenter: Failed to find an initialised BasketContext. Make sure presentAuroraQuickBuyModal ref is defined and it wraps AuroraQuickBuyModalPresenter."),null;if(!eo)return null;var eF=w.patterns.quickBuyModal;return(0,m.jsx)(q,en({enablePreselectedProductVariant:d,loading:!ed.length,setOpen:ei,hideAsterixOnPDP:u,options:ed,product:es,quickBuyModalTheme:eF,displayViewMoreInfo:!!eZ,coreTheme:j,rendering:{open:eo,onClose:function(){ei(!1),X.t.modalClose((null==es?void 0:es.sku.toString())||"")}},i18nText:en(en({},eD),{},{maxQuantityBasketItemMessageText:eE,subscriptionInfoMessageText:"",subscriptionContractDiscountMessage:"",failedToAddToBasketError:em?eq:void 0,availabilityMessage:null==es?void 0:es.availabilityMessage}),modal:{i18nText:eV,showHeader:!0,stickyHeader:!0,headerOffset:T,gridColSpan:[12,8,8,6],"data-testid":"quick-buy-modal",animation:w.patterns.quickBuyModal.animation},selectedOptions:eg,setSelectedOptionsCallback:function(e,t){if(!ef.current){eM();return}eO(!1);var n=(0,U.WZ)({selectedOptions:eg,selectedVariant:es,optionKey:e,value:t,productOptionsMap:ef.current,setSelectedOptionsCallback:ev,setSelectedVariantCallback:el,setOptionsCallback:ep}),o=n.updatedSelectedOptions,i=n.updatedProductOptions;eN.current&&o&&i&&(eN.current.setSelectedOptionsCallback&&eN.current.setSelectedOptionsCallback(o),eN.current.setSelectedVariantCallback&&eN.current.setSelectedVariantCallback(i.variant),eN.current.setOptionsCallback&&eN.current.setOptionsCallback(i.options))},pricing:es?(0,H.a)(es,k,g):void 0,links:{productUrl:null==es?void 0:es.product.url},callbacks:{addedToBasketClicked:function(e,t){if(B.presentAddedToBasketModal&&es){if(!es.enableAddToBasket){eO(!0);return}var n=B.presentAddedToBasketModal.current;B.presentAddedToBasketModal.current=function(e,t){B.presentAddedToBasketModal&&(ei(!1),eO(!1),n(e,t),B.presentAddedToBasketModal.current=n)},eP([{quantity:t,sku:es.sku.toString()}],{fromRecommendations:eR.current,location:J.A.PRODUCT_LIST},N.eN.HomeDelivery,void 0,eW.current,e_.current),X.t.modalAddToBasket(es.sku.toString())}},viewMoreInformationClicked:function(){es&&X.t.modalInformation(null==es?void 0:es.product.sku.toString())},addToBasketWithContractsCallback:function(e,t){eB({variables:{basketId:null==C?void 0:C.id,sku:null==es?void 0:es.sku.toString(),quantity:e,contractId:t,settings:{currency:f,shippingDestination:y.code}}}).then(function(){if(B.presentAddedToBasketModal&&es){var t=B.presentAddedToBasketModal.current;ei(!1),t(null==es?void 0:es.sku.toString(),e)}})}},quantitySelector:{i18nText:eQ,maxValue:eC,quantity:ey.current}},n&&o&&{inStockComponent:(0,m.jsx)(c.G,{selectedVariant:es,url:(null==es?void 0:es.product.url)||"",styleOverride:{margin:{top:0,bottom:2}}})}))}}}]); //# sourceMappingURL=7245.126e8340d23e1a00.js.map