1import{b as addItemByForm,a as contexts}from"./cart-cce84c00.js";import{E as EVENTS}from"./events-58bc9098.js";import{s as srraf}from"./srraf.es-487187f3.js";class ProductBlockBuyButtons extends HTMLElement{constructor(){super(),this.selectors={productContainer:"main-product-default, [js-quick-view-content]",detailsContainer:".product__details",storeAvailabilityDrawerTrigger:"[js-store-availability-drawer-trigger]",variantSelectorContent:"product-block-variant-selector",footer:"footer",buyButtons:"[js-buy-buttons]",stickyATC:"[js-sticky-atc]",stickyATCAddToCartButton:"[js-sticky-atc-add-to-cart-button-wrapper]",stickyATCDialog:"[data-fluco-dialog='sticky-add-to-cart-modal']",stickyATCModalHandlebar:"[js-sticky-atc-modal-handlebar]",stickyATCModalTrigger:"[js-sticky-atc-modal-trigger]",stickyATCModalClose:"[js-sticky-atc-modal-close]",stickyATCContent:"[js-sticky-atc-content]",stickyATCVariantContainer:"[js-sticky-atc-variant-container]",stickyATCVariantInput:"[js-variant-input]",stickyATCVariantButton:"[js-variant-button]",addToCartButton:"[js-add-to-cart-button-wrapper]",addToCartError:"[js-add-to-cart-error]",giftCardRecipientForm:".gift-card-recipient__fields",giftCardRecipientInput:".gift-card-recipient__input",productForm:"[data-product-form]",showGiftCardRecipientCheckbox:"#gift-card-show-form"},this.classes={hasError:"has-error",active:"active",changePending:"change-pending",heightCheckPending:"height-check-pending",delayRevealAnimation:"delay-reveal-animation"},this.strings=window.theme.strings}connectedCallback(){this.controller=new AbortController;const eventOptions={signal:this.controller.signal};
1this.productContainer=this.closest(this.selectors.productContainer),this.detailsContainer=this.productContainer.querySelector(this.selectors.detailsContainer),this.productContainer.addEventListener(EVENTS.QUANTITY_INPUT_CHANGE,()=>{this.classList.remove(this.classes.hasError)},eventOptions),this.addEventListener(EVENTS.PRODUCT_VARIANT_CHANGED,this.handleRepaint.bind(this),eventOptions),this.initContentListeners(),this.stickyATC=this.querySelector(this.selectors.stickyATC),this.stickyATC&&(this.stickyATCContent=this.querySelector(this.selectors.stickyATCContent),this.stickyATCHasModalContent=this.stickyATC.getAttribute("data-has-modal-content")==="true",this.stickyATCAddToCartButtons=this.querySelectorAll(this.selectors.stickyATCAddToCartButton),this.stickyATCDialog=this.querySelector(this.selectors.stickyATCDialog),this.initStickyATC())}initContentListeners(){this.contentListenersController=new AbortController;const eventOptions={signal:this.contentListenersController.signal};this.addToCartButton=this.querySelector(this.selectors.addToCartButton),this.enableGiftCardRecipientForm=this.getAttribute("data-enable-gift-card-recipient-form")==="true",this.showGiftCardRecipientCheckbox=this.querySelector(this.selectors.showGiftCardRecipientCheckbox),this.enableGiftCardRecipientForm&&this.showGiftCardRecipientCheckbox&&this.setupGiftCardRecipientForm(),this.storeAvailabilityDrawerTrigger=this.querySelector(this.selectors.storeAvailabilityDrawerTrigger),this.storeAvailabilityDrawerTrigger&&(this.drawerId=this.storeAvailabilityDrawerTrigger.getAttribute("data-drawer-id"),this.storeAvailabilityDrawerTrigger.addEventListener("click",event=>{event.preventDefault(),window.dispatchEvent(new CustomEvent(EVENTS.MODAL_POPUP_OPEN(this.drawerId)))},eventOptions)),this.productForm=this.querySelector(this.selectors.productForm),this.productForm?.addEventListener("submit",event=>{this.handleFormSubmission(event)},eventOptions),this.addToCartError=this.querySelector(this.selectors.addToCartError),this.addEventListener(EVENTS.PRODUCT_ADD_ERROR,this.handleAddToCartError.bind(this),eventOptions),this.addEventListener(EVENTS.PRODUCT_ADD_SUCCESS,()=>{this.classList.remove(this.classes.hasError),this.resetGiftCardRecipientForm(),this.handleAddToCartSuccess()},eventOptions)}setupGiftCardRecipientForm(){this.giftCardRecipientForm=this.querySelector(this.selectors.giftCardRecipientForm),this.giftCardRecipientInputs=this.querySelectorAll(this.selectors.giftCardRecipientInput),this.showGiftCardRecipientCheckbox.checked=!1,this.giftCardRecipientForm.style.display="none",this.showGiftCardRecipientCheckbox.addEventListener("change",()=>{this.showGiftCardRecipientCheckbox.checked?this.giftCardRecipientForm.style.display="block":this.resetGiftCardRecipientForm()},{signal:this.controller.signal})}resetGiftCardRecipientForm(){this.giftCardRecipientInputs&&(this.giftCardRecipientInputs.forEach(input=>{input.value="",input.classList.remove("has-error")}),this.showGiftCardRecipientCheckbox.checked=!1,this.giftCardRecipientForm.style.display="none")}initStickyATC(options={}){this.stickyATCHasModalContent?this.initStickyATCModalContent():this.stickyATC.classList.remove(this.classes.delayRevealAnimation),options.onVariantChange?setTimeout(()=>{this.initStickyATCListeners(this.stickyATCHasModalContent)},0):this.initStickyATCListeners(this.stickyATCHasModalContent)}initStickyATCListeners(hasModalContent){this.stickyATCListenersController=new AbortController;const eventOptions={signal:this.stickyATCListenersController.signal},observerOptions={rootMargin:"0px",threshold:0},observerCallback=entries=>{let showStickyATC=null;for(const entry of entries)if(showStickyATC=!0,this.buyButtonsOrFooterIntersecting=entry.isIntersecting,this.buyButtonsOrFooterIntersecting&&(hasModalContent&&!this.stickyATCDialog.open||!hasModalContent)){showStickyATC=!1;break}this.updateStickyATCVisibility({showStickyATC})};this.observer=new IntersectionObserver(observerCallback,observerOptions),this.buyButtonBlock=this.querySelector(this.selectors.buyButtons),this.observer.observe(this.buyButtonBlock),this.footer=document.querySelector(this.selectors.footer),this.footer&&this.observer.observe(this.footer),hasModalContent&&(this.stickyATCModalTrigger=this.stickyATCContent.querySelector(this.selectors.stickyATCModalTrigger),this.stickyATCModalTrigger.addEventListener("click",this.openStickyATCModal,eventOptions),this.peekingStickyATCHandlebar=this.stickyATCContent.querySelector(this.selectors.stickyATCModalHandlebar),this.activeStickyATCHandlebar=this.stickyATCDialog.querySelector(this.selectors.stickyATCModalHandlebar),this.peekingStickyATCHandlebar.addEventListener("pointerdown",event=>{this.touchSlideStickyATCModal(event,"open")},eventOptions),this.activeStickyATCHandlebar.addEventListener("pointerdown",event=>{this.touchSlideStickyATCModal(event,"close")},eventOptions),this.widthWatcher=srraf(({vw,pvw})=>{vw!==pvw&&(this.stickyATCDialog.classList.add(this.classes.heightCheckPending),this.setStickyATCAnimationHeight())}
1),window.addEventListener(EVENTS.MODAL_POPUP_CLOSED("sticky-add-to-cart-modal"),()=>{this.buyButtonsOrFooterIntersecting&&this.updateStickyATCVisibility({showStickyATC:!1}),this.stickyATCDialog.classList.add("modal--will-open")},eventOptions),this.stickyATCModalCloseLink=this.stickyATCDialog.querySelector(this.selectors.stickyATCModalClose),this.stickyATCModalCloseLink.addEventListener("click",event=>{event.preventDefault(),this.closeStickyATCModal()},eventOptions),window.addEventListener(EVENTS.CART_DRAWER_OPENING,()=>{this.stickyATCDialog.open&&this.closeStickyATCModal()},eventOptions),this.stickyATCVariantInputs=this.querySelectorAll(this.selectors.stickyATCVariantInput),this.stickyATCVariantInputs.forEach(input=>{input.addEventListener("change",this.onStickyATCVariantChange,eventOptions)}),this.stickyATCVariantButtons=this.querySelectorAll(this.selectors.stickyATCVariantButton),this.stickyATCVariantButtons.forEach(button=>{button.addEventListener("keydown",event=>{if(event.key==="Enter"||event.key===" "){event.preventDefault();const swatchButton=button.getAttribute("js-swatch"),chipButton=button.getAttribute("js-chip");if(swatchButton!==null){const inputHtml=event.target.parentElement.previousElementSibling;this.onStickyATCVariantChangeA11y(inputHtml)}else chipButton!==null&&this.onStickyATCVariantChangeA11y(event.target.previousElementSibling)}},eventOptions)}))}touchSlideStickyATCModal(event,state){this.setPointerCapture(event.pointerId),this.onpointerup=()=>{state==="open"?this.openStickyATCModal(event):state==="close"&&this.closeStickyATCModal(event)}}openStickyATCModal(event){event.preventDefault(),window.dispatchEvent(new CustomEvent(EVENTS.MODAL_POPUP_OPEN("sticky-add-to-cart-modal")))}closeStickyATCModal(){window.dispatchEvent(new CustomEvent(EVENTS.MODAL_POPUP_CLOSE("sticky-add-to-cart-modal")))}updateStickyATCVisibility(options={}){options.showStickyATC?(this.stickyATC.classList.add(this.classes.active),this.visibleStickyATC=!0):(this.stickyATC.classList.remove(this.classes.active),this.visibleStickyATC=!1)}initStickyATCModalContent(){this.variantSelectorContent=document.querySelector(this.selectors.variantSelectorContent),this.stickyATCVariantContainer=this.stickyATCDialog.querySelector(this.selectors.stickyATCVariantContainer),this.stickyATCVariantContainer.innerHTML=this.variantSelectorContent.innerHTML,this.setStickyATCAnimationHeight()}setStickyATCAnimationHeight(){this.stickyATCContent=this.querySelector(this.selectors.stickyATCContent),this.peekingHeight=this.stickyATCContent.getBoundingClientRect().height;const availableHeight=window.innerHeight*.9,dialogHeight=this.stickyATCDialog.getBoundingClientRect().height,modalRevealHeight=(Math.min(availableHeight,dialogHeight)-this.peekingHeight).toFixed(2);this.stickyATCDialog.style.setProperty("--modal-reveal-height",`${modalRevealHeight}px`),this.stickyATCDialog.classList.remove(this.classes.heightCheckPending),this.stickyATC.classList.remove(this.classes.delayRevealAnimation)}onStickyATCVariantChange(event){this.variantLayout=this.getAttribute("data-variant-layout");let optionValueElement;this.variantLayout==="swatches"||this.variantLayout==="chips"?optionValueElement=event.target:this.variantLayout==="dropdown"&&(optionValueElement=event.target.selectedOptions[0]);const variantChangingEvent=new CustomEvent(EVENTS.PRODUCT_VARIANT_CHANGING,{bubbles:!0,detail:{newOptionInput:optionValueElement,withinStickyModal:!0}});this.dispatchEvent(variantChangingEvent)}onStickyATCVariantChangeA11y(inputHtml){const variantChangingEvent=new CustomEvent(EVENTS.PRODUCT_VARIANT_CHANGING,{bubbles:!0,detail:{newOptionInput:inputHtml,withinStickyModal:!0}});this.dispatchEvent(variantChangingEvent)}handleRepaint(){this.contentListenersController.abort(),this.initContentListeners(),this.stickyATC&&(this.stickyATCAddToCartButtons=this.querySelectorAll(this.selectors.stickyATCAddToCartButton),this.stickyATCDialog=this.querySelector(this.selectors.stickyATCDialog),this.stickyATCListenersController.abort(),this.initStickyATC({onVariantChange:!0}))}handleFormSubmission(event){event.preventDefault(),this.detailsContainer.classList.add(this.classes.changePending),this.addToCartButton.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_STARTED)),this.stickyATCAddToCartButtons&&this.visibleStickyATC&&this.stickyATCAddToCartButtons.forEach(button=>{button.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_STARTED))}),addItemByForm(this.productForm,contexts.productPage,this)}handleAddToCartSuccess(){this.detailsContainer.classList.remove(this.classes.changePending),this.addToCartButton.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_COMPLETED)),this.productC
1ontainer.dispatchEvent(new CustomEvent(EVENTS.PRODUCT_ADD_SUCCESS)),this.stickyATCAddToCartButtons&&this.stickyATCAddToCartButtons.forEach(button=>{button.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_COMPLETED))})}handleAddToCartError(event){this.detailsContainer.classList.remove(this.classes.changePending),this.addToCartButton.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_INCOMPLETED)),this.stickyATCAddToCartButtons&&(this.stickyATCAddToCartButtons.forEach(button=>{button.dispatchEvent(new CustomEvent(EVENTS.BUTTON_STATE_INCOMPLETED))}),this.stickyATCHasVariants&&this.stickyATCDialog.open&&this.closeStickyATCModal());const formErrors=event.detail.errorMessage.errors;if(this.classList.add(this.classes.hasError),formErrors){const sectionId=this.querySelector(this.selectors.giftCardRecipientForm).getAttribute("data-section-id");this.addToCartError.innerText="",Object.entries(formErrors).forEach(([key])=>{const errorMessageID=`gift-card-recipient-${key}-error--${sectionId}`,errorInput=this.querySelector(`#gift-card-recipient-${key}--${sectionId}`);errorInput.classList.add(this.classes.hasError),errorInput.setAttribute("aria-invalid",!0),errorInput.setAttribute("aria-describedby",errorMessageID),this.addToCartError.innerText+=`${this.strings.products.giftCardRecipientErrors[key]} 2`})}else this.addToCartError.innerText=event.detail.errorMessage.description;this.addToCartError.scrollIntoView({block:"center"})}disconnectedCallback(){this.controller.abort()}}customElements.get("product-blocks-buy-buttons")||customElements.define("product-block-buy-buttons",ProductBlockBuyButtons); 3//# sourceMappingURL=/cdn/shop/t/490/assets/product-block-buy-buttons.js.map?v=63774353159913265761789724911
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.