PageSourceSearch

https://offtheleashdogcartoons.com/cdn/shop/t/12/assets/theme.js?v=145770457292470148891774454413

js offtheleashdogcartoons.com collected 2026-09-26 18:15:26 UTC 79,592 bytes, 2 lines download raw bytes

1function getFocusableElements(container){return Array.from(container.querySelectorAll("summary, a[href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe"))}document.querySelectorAll('[id^="Details-"] summary').forEach(summary=>{summary.setAttribute("role","button"),summary.setAttribute("aria-expanded",summary.parentNode.hasAttribute("open")),summary.nextElementSibling.getAttribute("id")&&summary.setAttribute("aria-controls",summary.nextElementSibling.id),summary.addEventListener("click",event=>{event.currentTarget.setAttribute("aria-expanded",!event.currentTarget.closest("details").hasAttribute("open"))}),!summary.closest("header-drawer, menu-drawer")&&summary.parentElement.addEventListener("keyup",onKeyUpEscape)});const trapFocusHandlers={};function trapFocus(container,elementToFocus=container){var elements=getFocusableElements(container),first=elements[0],last=elements[elements.length-1];removeTrapFocus(),trapFocusHandlers.focusin=event=>{event.target!==container&&event.target!==last&&event.target!==first||document.addEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.focusout=function(){document.removeEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.keydown=function(event){event.code.toUpperCase()==="TAB"&&(event.target===last&&!event.shiftKey&&(event.preventDefault(),first.focus()),(event.target===container||event.target===first)&&event.shiftKey&&(event.preventDefault(),last.focus()))},document.addEventListener("focusout",trapFocusHandlers.focusout),document.addEventListener("focusin",trapFocusHandlers.focusin),elementToFocus&&elementToFocus.focus(),elementToFocus.tagName==="INPUT"&&["search","text","email","url"].includes(elementToFocus.type)&&elementToFocus.value&&elementToFocus.setSelectionRange(0,elementToFocus.value.length)}try{document.querySelector(":focus-visible")}catch{focusVisiblePolyfill()}function focusVisiblePolyfill(){const navKeys=["ARROWUP","ARROWDOWN","ARROWLEFT","ARROWRIGHT","TAB","ENTER","SPACE","ESCAPE","HOME","END","PAGEUP","PAGEDOWN"];let currentFocusedElement=null,mouseClick=null;window.addEventListener("keydown",event=>{navKeys.includes(event.code.toUpperCase())&&(mouseClick=!1)}),window.addEventListener("mousedown",event=>{mouseClick=!0}),window.addEventListener("focus",()=>{currentFocusedElement&&currentFocusedElement.classList.remove("focused"),!mouseClick&&(currentFocusedElement=document.activeElement,currentFocusedElement.classList.add("focused"))},!0)}function pauseAllMedia(){document.querySelectorAll(".js-youtube:not([data-ignore-pause])").forEach(video=>{video.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}),document.querySelectorAll(".js-vimeo:not([data-ignore-pause])").forEach(video=>{video.contentWindow.postMessage('{"method":"pause"}',"*")}),document.querySelectorAll("video:not([data-ignore-pause])").forEach(video=>{video.pause()}),document.querySelectorAll("product-model").forEach(model=>{model.modelViewerUI&&model.modelViewerUI.pause()})}function removeTrapFocus(elementToFocus=null){document.removeEventListener("focusin",trapFocusHandlers.focusin),document.removeEventListener("focusout",trapFocusHandlers.focusout),document.removeEventListener("keydown",trapFocusHandlers.keydown),elementToFocus&&elementToFocus.focus()}function onKeyUpEscape(event){if(event.code.toUpperCase()!=="ESCAPE")return;const openDetailsElement=event.target.closest("details[open]");if(!openDetailsElement)return;const summaryElement=openDetailsElement.querySelector("summary");openDetailsElement.removeAttribute("open"),summaryElement.setAttribute("aria-expanded",!1),summaryElement.focus()}class QuantityInput extends HTMLElement{constructor(){super(),this.input=this.querySelector("input"),this.changeEvent=ne
1w Event("change",{bubbles:!0}),this.input.addEventListener("change",this.onInputChange.bind(this)),this.querySelectorAll("button").forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this)))}quantityUpdateUnsubscriber=void 0;connectedCallback(){this.validateQtyRules(),this.quantityUpdateUnsubscriber=subscribe(PUB_SUB_EVENTS.quantityUpdate,this.validateQtyRules.bind(this))}disconnectedCallback(){this.quantityUpdateUnsubscriber&&this.quantityUpdateUnsubscriber()}onInputChange(event){this.validateQtyRules()}onButtonClick(event){event.preventDefault();const previousValue=this.input.value;event.target.name==="plus"?parseInt(this.input.dataset.min)>parseInt(this.input.step)&&this.input.value==0?this.input.value=this.input.dataset.min:this.input.stepUp():this.input.stepDown(),previousValue!==this.input.value&&this.input.dispatchEvent(this.changeEvent),this.input.dataset.min===previousValue&&event.target.name==="minus"&&(this.input.value=parseInt(this.input.min))}validateQtyRules(){const value=parseInt(this.input.value);if(this.input.min&&this.querySelector(".quantity__button[name='minus']").classList.toggle("disabled",parseInt(value)<=parseInt(this.input.min)),this.input.max){const max=parseInt(this.input.max);this.querySelector(".quantity__button[name='plus']").classList.toggle("disabled",value>=max)}}}customElements.define("quantity-input",QuantityInput);function throttle(fn,delay){let lastCall=0;return function(...args){const now=new Date().getTime();if(!(now-lastCall<delay))return lastCall=now,fn(...args)}}function fetchConfig(type="json"){return{method:"POST",headers:{"Content-Type":"application/json",Accept:`application/${type}`}}}typeof window.Shopify>"u"&&(window.Shopify={}),Shopify.bind=function(fn,scope){return function(){return fn.apply(scope,arguments)}},Shopify.setSelectorByValue=function(selector,value){for(var i=0,count=selector.options.length;i<count;i++){var option=selector.options[i];if(value==option.value||value==option.innerHTML)return selector.selectedIndex=i,i}},Shopify.addListener=function(target,eventName,callback){target.addEventListener?target.addEventListener(eventName,callback,!1):target.attachEvent("on"+eventName,callback)},Shopify.postLink=function(path,options){options=options||{};var method=options.method||"post",params=options.parameters||{},form=document.createElement("form");form.setAttribute("method",method),form.setAttribute("action",path);for(var key in params){var hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden"),hiddenField.setAttribute("name",key),hiddenField.setAttribute("value",params[key]),form.appendChild(hiddenField)}document.body.appendChild(form),form.submit(),document.body.removeChild(form)},Shopify.CountryProvinceSelector=function(country_domid,province_domid,options){this.countryEl=document.getElementById(country_domid),this.provinceEl=document.getElementById(province_domid),this.provinceContainer=document.getElementById(options.hideElement||province_domid),Shopify.addListener(this.countryEl,"change",Shopify.bind(this.countryHandler,this)),this.initCountry(),this.initProvince()},Shopify.CountryProvinceSelector.prototype={initCountry:function(){var value=this.countryEl.getAttribute("data-default");Shopify.setSelectorByValue(this.countryEl,value),this.countryHandler()},initProvince:function(){var value=this.provinceEl.getAttribute("data-default");value&&this.provinceEl.options.length>0&&Shopify.setSelectorByValue(this.provinceEl,value)},countryHandler:function(e){var opt=this.countryEl.options[this.countryEl.selectedIndex],raw=opt.getAttribute("data-provinces"),provinces=JSON.parse(raw);if(this.clearOptions(this.provinceEl),provinces&&provinces.length==0)this.provinceContainer.style.display="none";else{for(var i=0;i<provinces.length;i++){var opt=document.createElement("option");opt.value=provinces[i][0],opt.innerHTML=provinces[i][1],this.provinceEl.appendChild(opt)}this.provinceContainer.style.display=""}},clearOptions:function(selector){for(;selector.firstChild;)selector.removeChild(selector.firstChild)},setOptions:function(selector,values){for(var i=0,count=values.length;i<values.length;i++){var opt=document.createElement("option");opt.value=values[i],opt.innerHTML=values[i],selector.appendChild(opt)}}};class MenuDrawer extends HTMLElement{constructor(){super(),this.mainDetailsToggle=this.querySelector("details"),this.addEventListener("keyup",this.onKeyUp.bind(this)),this.addEventListener("focusout",this.onFocusOut.bind(this)),this.bindEvents()}bindEvents(){this.querySelectorAll("summary").forEach(summary=>summary.addEventListener("click",this.onSummaryClick.bind(this))),this.querySelectorAll("button:not(.localization-selector):not(.country-selector__close-button):not(.country-filter__reset-button)").forEach(button=>button.addEventListener("click",this.onCloseButtonClick.bind(this)))}onKeyUp(event){if(event.code.toUpperCase()!=="ESCAPE")return;const openDetailsElement=event.target.closest("details[open]");openDetailsElement&&(openDetailsElement===this.mainDetailsToggle?this.closeMenuDrawer(event,this.mainDetailsToggle.querySelector("summary")):this.closeSubmenu(openDetailsElement))}onSummaryClick(event){const summaryElement=event.currentTarget,detailsElement=summaryElement.parentNode,parentMenuElement=detailsElement.closest(".has-submenu"),isOpen=detailsElement.hasAttribute("open"),reducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)");function addTrapFocus(){trapFocus(summaryElement.nextElementSibling,detailsElement.querySelector("button")),summaryElement.nextElementSibling.removeEventListener("transitionend",addTrapFocus)}detailsElement===this.mainDetailsToggle?(isOpen&&event.preventDefault(),isOpen?this.closeMenuDrawer(event,summaryElement):this.openMenuDrawer(summaryElement),window.matchMedia("(max-width: 990px)")&&document.documentElement.style.setProperty("--viewport-height",`${window.innerHeight}px`)):setTimeout(()=>{detailsElement.classList.add("menu-opening"),summaryElement.setAttribute("aria-expanded",!0),parentMenuElement&&parentMenuElement.classList.add("submenu-open"),!reducedMotion||reducedMotion.matches?addTrapFocus():summaryElement.nextElementSibling.addEventListener("transitionend",addTrapFocus)},150)}openMenuDrawer(summaryElement){setTimeout(()=>{this.mainDetailsToggle.classList.add("menu-opening")}),summaryElement.setAttribute("aria-expanded",!0),trapFocus(this.mainDetailsToggle,summaryElement),document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`)}closeMenuDrawer(event,elementToFocus=!1){event!==void 0&&(this.mainDetailsToggle.classList.remove("menu-opening"),this.mainDetailsToggle.querySelectorAll("details").forEach(detail
1s=>{details.removeAttribute("open"),details.classList.remove("menu-opening")}),this.mainDetailsToggle.querySelectorAll(".submenu-open").forEach(submenu=>{submenu.classList.remove("submenu-open")}),document.body.classList.remove(`overflow-hidden-${this.dataset.breakpoint}`),removeTrapFocus(elementToFocus),this.closeAnimation(this.mainDetailsToggle),event instanceof KeyboardEvent&&elementToFocus?.setAttribute("aria-expanded",!1))}onFocusOut(){setTimeout(()=>{this.mainDetailsToggle.hasAttribute("open")&&!this.mainDetailsToggle.contains(document.activeElement)&&this.closeMenuDrawer()})}onCloseButtonClick(event){const detailsElement=event.currentTarget.closest("details");this.closeSubmenu(detailsElement)}closeSubmenu(detailsElement){const parentMenuElement=detailsElement.closest(".submenu-open");parentMenuElement&&parentMenuElement.classList.remove("submenu-open"),detailsElement.classList.remove("menu-opening"),detailsElement.querySelector("summary").setAttribute("aria-expanded",!1),removeTrapFocus(detailsElement.querySelector("summary")),this.closeAnimation(detailsElement)}closeAnimation(detailsElement){detailsElement.classList.add("is-closing");let animationStart;const handleAnimation=time=>{animationStart===void 0&&(animationStart=time),time-animationStart<400?window.requestAnimationFrame(handleAnimation):(detailsElement.removeAttribute("open"),detailsElement.classList.remove("is-closing"),detailsElement.closest("details[open]")&&trapFocus(detail
1sElement.closest("details[open]"),detailsElement.querySelector("summary")))};window.requestAnimationFrame(handleAnimation)}}customElements.define("menu-drawer",MenuDrawer);class HeaderDrawer extends MenuDrawer{constructor(){super()}openMenuDrawer(summaryElement){this.header=this.header||document.querySelector(".section-header"),this.borderOffset=this.borderOffset||this.closest(".header-wrapper").classList.contains("header-wrapper--border-bottom")?1:0,document.documentElement.style.setProperty("--header-bottom-position",`${parseInt(this.header.getBoundingClientRect().bottom-this.borderOffset)}px`),this.header.classList.add("menu-open"),this.mainDetailsToggle.classList.add("is-opening"),requestAnimationFrame(()=>{this.mainDetailsToggle.setAttribute("open",""),this.mainDetailsToggle.classList.add("menu-opening"),setTimeout(()=>{this.mainDetailsToggle.classList.remove("is-opening")},300)}),summaryElement.setAttribute("aria-expanded",!0),window.addEventListener("resize",this.onResize),trapFocus(this.mainDetailsToggle,summaryElement),document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`)}closeMenuDrawer(event,elementToFocus){elementToFocus&&(super.closeMenuDrawer(event,elementToFocus),this.header.classList.remove("menu-open"),window.removeEventListener("resize",this.onResize))}onResize=()=>{this.header&&document.documentElement.style.setProperty("--header-bottom-position",`${parseInt(this.header.getBoundingClientRect().bottom-this.borderOffset)}px`),document.documentElement.style.setProperty("--viewport-height",`${window.innerHeight}px`)}}customElements.define("header-drawer",HeaderDrawer);class ModalDialog extends HTMLElement{constructor(){super(),this.querySelector('[id^="ModalClose-"]').addEventListener("click",this.hide.bind(this,!1)),this.handleKeyDown=this.handleKeyDown.bind(this),this.classList.contains("media-modal")?this.addEventListener("pointerup",event=>{event.pointerType==="mouse"&&!event.target.closest("deferred-media, product-model")&&this.hide()}):this.addEventListener("click",event=>{event.target===this&&this.hide()})}connectedCallback(){this.moved||(this.moved=!0,document.addEventListener("keydown",this.handleKeyDown))}disconnectedCallback(){document.removeEventListener("keydown",this.handleKeyDown)}handleKeyDown(event){event.key==="Escape"&&this.hasAttribute("open")&&this.hide()}show(opener){this.openedBy=opener;const popup=this.querySelector(".template-popup");document.body.classList.add("overflow-hidden"),this.setAttribute("open",""),popup&&popup.loadContent(),setTimeout(()=>{const firstFocusableElement=this.querySelector('a, input, button, [tabindex]:not([tabindex="-1"])');trapFocus(this,firstFocusableElement)},300)}hide(){this.setAttribute("closing","true"),setTimeout(()=>{document.body.classList.remove("overflow-hidden"),document.body.dispatchEvent(new CustomEvent("modalClosed")),this.removeAttribute("open"),this.removeAttribute("closing"),removeTrapFocus(this.openedBy)},300)}}customElements.define("modal-dialog",ModalDialog);class ModalOpener extends HTMLElement{constructor(){super();const button=this.querySelector("button");button&&button.addEventListener("click",()=>{const modal=document.querySelector(this.getAttribute("data-modal"));modal&&modal.show(button)})}}customElements.define("modal-opener",ModalOpener);class DeferredMedia extends HTMLElement{constructor(){super();const poster=this.querySelector('[id^="Deferred-Poster-"]');poster&&poster.addEventListener("click",this.loadContent.bind(this))}loadContent(focus=!0){if(window.pauseAllMedia(),!this.getAttribute("loaded")){const content=document.createElement("div");content.appendChild(this.querySelector("template").content.firstElementChild.cloneNode(!0)),this.setAttribute("loaded",!0);const deferredElement=this.appendChild(content.querySelector("video, model-viewer, iframe"));focus&&deferredElement.focus(),deferredElement.nodeName=="VIDEO"&&deferredElement.getAttribute("autoplay")&&deferredElement.play()}}}customElements.define("deferred-media",DeferredMedia);class VariantSelects extends HTMLElement{constructor(){super(),this.addEventListener("change",this.onVariantChange)}connectedCallback(){this.getVariantData()}onVariantChange(event){this.updateOptions(),this.updateMasterId(),this.updateSelectedSwatchValue(event),this.toggleAddButton(!0,"",!1),this.toggleStickyAddButton(!0,"",!1),this.updatePickupAvailability(),this.removeErrorMessage(),this.updateV
1ariantStatuses(),this.updateVariantText(),this.updateSoldOutState(),this.currentVariant?(this.updateURL(),this.updateVariantInput(),this.renderProductInfo(),this.updateShareUrl(),this.updateCarousel()):(this.toggleAddButton(!0,"",!0),this.toggleStickyAddButton(!0,"",!0),this.setUnavailable())}updateCarousel(){const updateCarouselForElement=element=>{element&&this.currentVariant.featured_media&&element.updateCarouselImages(this.currentVariant.featured_media.id)},galleryCarousel=document.getElementById(`Gallery-carousel-${this.dataset.section}`);updateCarouselForElement(galleryCarousel);const quickViewContainer=document.querySelector(".product-modal-content");if(quickViewContainer){const galleryCarouselQuickView=quickViewContainer.querySelector(`#Gallery-carousel-${this.dataset.section}`);updateCarouselForElement(galleryCarouselQuickView)}}updateOptions(){this.options=Array.from(this.querySelectorAll("select, fieldset"),element=>{if(element.tagName==="SELECT")return element.value;if(element.tagName==="FIELDSET")return Array.from(element.querySelectorAll("input")).find(radio=>radio.checked)?.value})}updateVariantText(){this.querySelectorAll(".product-form__input").forEach((item,i)=>item.querySelector(".form__label-value").innerHTML=this.options[i])}updateMasterId(){this.currentVariant=this.getVariantData().find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateSelectedSwatchValue({target}){const{name,value,tagName}=target;if(tagName==="SELECT"&&target.selectedOptions.length){const swatchValue=target.selectedOptions[0].dataset.optionSwatchValue,selectedDropdownSwatchValue=this.querySelector(`[data-selected-dropdown-swatch="${name}"] > .swatch`);if(!selectedDropdownSwatchValue)return;swatchValue?(selectedDropdownSwatchValue.style.setProperty("--swatch--background",swatchValue),selectedDropdownSwatchValue.classList.remove("swatch--unavailable")):(selectedDropdownSwatchValue.style.setProperty("--swatch--background","unset"),selectedDropdownSwatchValue.classList.add("swatch--unavailable")),selectedDropdownSwatchValue.style.setProperty("--swatch-focal-point",target.selectedOptions[0].dataset.optionSwatchFocalPoint||"unset")}else if(tagName==="INPUT"&&target.type==="radio"){const selectedSwatchValue=this.querySelector(`[data-selected-swatch-value="${name}"]`);selectedSwatchValue&&(selectedSwatchValue.innerHTML=value)}}updateURL(){!this.currentVariant||this.dataset.updateUrl==="false"||window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updateShareUrl(){const shareButton=document.getElementById(`Share-${this.dataset.section}`);shareButton&&shareButton.setAttribute("data-url",`${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updateVariantStatuses(){const selectedOptionOneVariants=this.variantData.filter(variant=>this.querySelector(":checked").value===variant.option1),inputWrappers=[...this.querySelectorAll(".product-form__input")];inputWrappers.forEach((option,index)=>{if(index===0)return;const optionInputs=[...option.querySelectorAll('input[type="radio"], option')],previousOptionSelected=inputWrappers[index-1].querySelector(":checked").value,availableOptionInputsValue=selectedOptionOneVariants.filter(variant=>variant.available&&variant[`option${index}`]===previousOptionSelected).map(variantOption=>variantOption[`option${index+1}`]);this.setInputAvailability(optionInputs,availableOptionInputsValue)})}setInputAvailability(elementList,availableValuesList){elementList.forEach(element=>{const value=element.getAttribute("value"),availableElement=availableValuesList.includes(value);element.tagName==="INPUT"?element.classList.toggle("disabled",!availableElement):element.tagName==="OPTION"&&(element.innerText=availableElement?value:window.variantStrings.unavailable_with_option.replace("[value]",value))})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(this.currentVariant&&this.currentVariant.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}updateSoldOutState(){const soldOutMessageElement=document.getElementById(`sold-out-message-${this.dataset.section}`),soldOutVariantNameElement=document.querySelector(`#sold-out-variant-name-${this.dataset.section}`),soldOutSelectElement=document.getElementById(`ContactFormSoldout-select-${this.dataset.section}`);if(this.currentVariant&&!this.currentVariant.available){if(soldOutMessageElement&&soldOutMessageElement.classList.remove("hidden"),soldOutVariantNameElement&&(soldOutVariantNameElement.textContent=this.currentVariant.title),soldOutSelectElement){const selectedVariantId=this.currentVariant.id;soldOutSelectElement.querySelectorAll("option").forEach(option=>{option.getAttribute("option-id")==selectedVariantId&&(option.selected=!0)})}}else soldOutMessageElement&&soldOutMessageElement.classList.add("hidden"),soldOutVariantNameElement&&(soldOutVariantNameElement.textContent="")}removeErrorMessage(){const section=this.closest("section");if(!section)return;const productForm=section.querySelector("product-form");productForm&&productForm.handleErrorMessage()}renderProductInfo(){const requestedVariantId=this.currentVariant.id,sectionId=this.dataset.originalSection?this.dataset.originalSection:this.dataset.section;fetch(`${this.dataset.url}?variant=${requestedVariantId}&section_id=${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`).then(response=>response.text()).then(responseText=>{if(!this.currentVariant||this.currentVariant.id!==requestedVariantId)return;const html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(`price-${this.dataset.section}`),source=html.getElementById(`price-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),skuSource=html.getElementById(`Sku-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),skuDestination=document.getElementById(`Sku-${this.dataset.section}`),inventorySource=html.getElementById(`Inventory-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),inventoryDestination=document.getElementById(`Inventory-${this.dataset.section}`),volumePricingSource=html.getElementById(`Volume-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`);this.updateStickyImage(sectionId,html),this.updateStickyPrice(sectionId,html);const pricePerItemDestination=document.getElementById(`Price-Per-Item-${this.dataset.section}`),pricePerItemSource=html.getElementById(`Price-Per-Item-${this.dataset.originalSection?this.dataset.originalSection:this.dataset.section}`),volumePricingDestination=document.getElementById(`Volume-${this.dataset.section}`),qtyRules=document.getElementById(`Quantity-Rules-${this.dataset.section}`),volumeNote=document.getElementById(`Volume-Note-${this.dataset.section}`);volumeNote&&volumeNote.classList.remove("hidden"),volumePricingDestination&&volumePricingDestination.classList.remove("hidden"),qtyRules&&qtyRules.classList.remove("hidden"),source&&destination&&(destination.innerHTML=source.innerHTML),inventorySource&&inventoryDestination&&(inventoryDestination.innerHTML=inventorySource.innerHTML),skuSource&&skuDestination&&(skuDestination.innerHTML=skuSource.innerHTML,skuDestination.classList.toggle("hidden",skuSource.classList.contains("hidden"))),volumePricingSource&&volumePricingDestination&&(volumePricingDestination.innerHTML=volumePricingSource.innerHTML),pricePerItemSource&&pricePerItemDestination&&(pricePerItemDestination.innerHTML=pricePerItemSource.innerHTML,pricePerItemDestination.classList.toggle("hidden",pricePerItemSource.classList.contains("hidden")));const price=document.getElementById(`price-${this.dataset.section}`);price&&price.classList.remove("hidden"),inventoryDestination&&inventoryDestination.classList.toggle("hidden",inventorySource.innerText==="");const addButtonUpdated=html.getElementById(`ProductSubmitButton-${sectionId}`);this.toggleAddButton(addButtonUpdated?addButtonUpdated.hasAttribute("disabled"):!0,window.variantStrings.soldOut);const stickyAddButtonUpdated=html.getElementById(`StickyProductSubmitButton-${sectionId}`);this.toggleStickyAddButton(stickyAddButtonUpdated?stickyAddButtonUpdated.hasAttribute("disabled"):!0,window.variantStrings.soldOut),publish(PUB_SUB_EVENTS.variantChange,{data:{sectionId,html,variant:this.currentVariant}})})}toggleAddButton(disable=!0,text,modifyClass=!0){const productForm=d
1ocument.getElementById(`product-form-${this.dataset.section}`);if(!productForm)return;const addButton=productForm.querySelector('[name="add"]'),addButtonText=productForm.querySelector('[name="add"] > span');addButton&&(disable?(addButton.setAttribute("disabled","disabled"),text&&(addButtonText.textContent=text)):(addButton.removeAttribute("disabled"),addButtonText.textContent=addButton.hasAttribute("data-preorder")?window.variantStrings.preOrder:window.variantStrings.addToCart))}toggleStickyAddButton(disable=!0,text,modifyClass=!0){const stickyProductForm=document.getElementById(`sticky-atc-${this.dataset.section}`);if(!stickyProductForm)return;const stickyAddButton=stickyProductForm.querySelector('[name="add"]'),stickyAddButtonText=stickyAddButton.querySelector('[name="add"] > span');stickyAddButton&&(disable?(stickyAddButton.setAttribute("disabled","disabled"),text&&(stickyAddButtonText.textContent=text)):(stickyAddButton.removeAttribute("disabled"),stickyAddButtonText.textContent=stickyAddButton.hasAttribute("data-preorder")?window.variantStrings.preOrder:window.variantStrings.addToCart))}updateStickyPrice(sectionId,html){const stickyPriceSourceId=`price-${sectionId}-sticky`,stickyPriceDestinationId=`price-${sectionId}-sticky`,source=html.getElementById(stickyPriceSourceId),destination=document.getElementById(stickyPriceDestinationId);source&&destination&&(destination.innerHTML=source.innerHTML,destination.classList.toggle("hidden",source.classList.contains("hidden")));const price=document.getElementById(`price-${sectionId}-sticky`);price&&price.classList.remove("hidden")}updateStickyImage(sectionId,html){const sourceImage=html.getElementById(`image-${sectionId}-sticky`),destinationImage=document.getElementById(`image-${sectionId}-sticky`);sourceImage&&destinationImage&&(destinationImage.src=sourceImage.src,destinationImage.srcset=sourceImage.srcset,destinationImage.sizes=sourceImage.sizes)}setUnavailable(){const button=document.getElementById(`product-form-${this.dataset.section}`),addButton=button.querySelector('[name="add"]'),addButtonText=button.querySelector('[name="add"] > span'),buttonSticky=document.getElementById(`sticky-atc-${this.dataset.section}`),addButtonSticky=buttonSticky?.querySelector('[name="add"]'),addButtonTextSticky=buttonSticky?.querySelector('[name="add"] > span'),price=document.getElementById(`price-${this.dataset.section}`),priceSticky=document.getElementById(`price-${this.dataset.section}-sticky`),inventory=document.getElementById(`Inventory-${this.dataset.section}`),sku=document.getElementById(`Sku-${this.dataset.section}`),pricePerItem=document.getElementById(`Price-Per-Item-${this.dataset.section}`),volumeNote=document.getElementById(`Volume-Note-${this.dataset.section}`),volumeTable=document.getElementById(`Volume-${this.dataset.section}`),qtyRules=document.getElementById(`Quantity-Rules-${this.dataset.section}`);addButton&&addButtonText&&(addButtonText.textContent=window.variantStrings.unavailable),addButtonSticky&&addButtonTextSticky&&(addButtonTextSticky.textContent=window.variantStrings.unavailable),price&&price.classList.add("hidden"),priceSticky&&priceSticky.classList.add("hidden"),inventory&&inventory.classList.add("hidden"),sku&&sku.classList.add("hidden"),pricePerItem&&pricePerItem.classList.add("hidden"),volumeNote&&volumeNote.classList.add("hidden"),volumeTable&&volumeTable.classList.add("hidden"),qtyRules&&qtyRules.classList.add("hidden")}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}}customElements.define("variant-selects",VariantSelects);class AccountIcon extends HTMLElement{constructor(){super(),this.icon=this.querySelector(".icon")}connectedCallback(){document.addEventListener("storefront:signincompleted",this.handleStorefrontSignInCompleted.bind(this))}handleStorefrontSignInCompleted(event){event?.detail?.avatar&&this.icon?.replaceWith(event.detail.avatar.cloneNode())}}customElements.define("account-icon",AccountIcon);var dispatchCustomEvent=function(eventName){var data=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}
1,detail={detail:data},event=new CustomEvent(eventName,data?detail:null);document.dispatchEvent(event)};const setScrollbarWidth=()=>{const scrollbarWidth=window.innerWidth-document.body.clientWidth;scrollbarWidth>0&&document.documentElement.style.setProperty("--scrollbar-width",`${scrollbarWidth}px`)};setScrollbarWidth(),window.addEventListener("resize",throttle(setScrollbarWidth));class ResponsiveImage extends HTMLElement{constructor(){super(),this.handleIntersection=this.handleIntersection.bind(this),this.onImageLoad=this.onImageLoad.bind(this),this.onResize=this.onResize.bind(this),this.intersectionObserver=new IntersectionObserver(this.handleIntersection,{rootMargin:"10px",threshold:0}),this.resizeObserver=new ResizeObserver(this.onResize)}connectedCallback(){this.img=this.querySelector("img"),this.img&&(this.img.addEventListener("load",this.onImageLoad),this.img.classList.add("img-loading"),this.img.hasAttribute("srcset")&&(this.originalSrcset=this.img.getAttribute("srcset"),this.img.removeAttribute("srcset"),this.intersectionObserver.observe(this.img)))}disconnectedCallback(){this.img&&(this.img.removeEventListener("load",this.onImageLoad),this.intersectionObserver.unobserve(this.img),this.resizeObserver.unobserve(this.img),this.intersectionObserver.disconnect(),this.resizeObserver.disconnect())}onImageLoad(){this.img.classList.remove("img-loading"),this.img.classList.add("img-loaded")}handleIntersection(entries){entries.forEach(entry=>{if(entry.isIntersecting){const img=entry.target;this.hasAttribute("data-sizes")&&this.getAttribute("data-sizes")==="true"&&(this.updateSizes(img),this.resizeObserver.observe(img)),img.setAttribute("srcset",this.originalSrcset),this.intersectionObserver.unobserve(img)}})}onResize(entries){entries.forEach(entry=>{this.hasAttribute("data-sizes")&&this.getAttribute("data-sizes")==="true"&&this.updateSizes(entry.target)})}updateSizes(img){const width=Math.floor(img.getBoundingClientRect().width);img.setAttribute("sizes",`${width}px`)}}if(customElements.define("responsive-image",ResponsiveImage),!customElements.get("viewport-media")){class ViewportMedia extends HTMLElement{constructor(){super(),this.initObserver()}initObserver(){"IntersectionObserver"in window?(this.observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting&&(this.loadContent(),this.observer.unobserve(entry.target),this.observer.disconnect())})},{rootMargin:"200px 0px 200px 0px"}),this.observer.observe(this)):this.loadContent()}loadContent(){if(!this.getAttribute("loaded")){const template=this.querySelector("template");if(template&&template.content&&template.content.firstElementChild){const content=document.createElement("div");content.appendChild(template.content.firstElementChild.cloneNode(!0)),this.setAttribute("loaded",!0);const deferredElement=this.appendChild(content.querySelector("video, iframe"));if(deferredElement.nodeName==="IFRAME"){const src=deferredElement.getAttribute("data-src");src&&deferredElement.setAttribute("src",src),deferredElement.onload=()=>this.removePlaceholder()}if(deferredElement.nodeName==="VIDEO"){const isAutoplay=deferredElement.getAttribute("autoplay"),poster=deferredElement.getAttribute("poster");!isAutoplay&&poster&&deferredElement.setAttribute("poster",poster),deferredElement.onloadeddata=()=>{this.removePlaceholder(),isAutoplay&&(deferredElement.muted=!0,deferredElement.play().catch(error=>{console.warn("Autoplay failed:",error)})),this.initVideoControls(deferredElement)},deferredElement.load()}}}}initVideoControls(video){const playPauseButton=this.querySelector(".video-play-pause"),muteToggleButton=this.querySelector(".video-mute-toggle"),progressFilled=this.querySelector(".video-progress-filled");let updateProgress;if(playPauseButton&&(playPauseButton.addEventListener("click",()=>{video.paused?(video.play(),playPauseButton.classList.remove("is-play"),playPauseButton.classList.add("is-pause"),updateProgress=requestAnimationFrame(updateProgressBar)):(video.pause(),playPauseButton.classList.remove("is-pause"),playPauseButton.classList.add("is-play"),cancelAnimationFrame(updateProgress))}),video.addEventListener("ended",()=>{playPauseButton&&(playPauseButton.classList.remove("is-pause"),playPauseButton.classList.add("is-play"))})),muteToggleButton&&muteToggleButton.addEventListener("click",()=>{video.muted=!video.muted,video.muted?(muteToggleButton.classList.add("is-muted"),muteToggleButton.classList.remove("is-unmuted")):(muteToggleButton.classList.remove("is-muted"),muteToggleButton.classList.add("is-unmuted"))}),progressFilled){const updateProgressBar2=()=>{const percentage=video.currentTime/video.duration*100||0;progressFilled.style.width=`${percentage}%`,updateProgress=requestAnimationFrame(updateProgressBar2)};video.addEventListener("timeupdate",updateProgressBar2),video.addEventListener("ended",()=>{cancelAnimationFrame(updateProgress),progressFilled&&(progressFilled.style.width="0%")}),video.addEventListener("canplay",()=>{progressFilled&&(progressFilled.style.width="0%"),video.paused||(updateProgress=requestAnimationFrame(updateProgressBar2))})}}removePlaceholder(){const placeholder=this.querySelector(".video-placeholder");placeholder&&(placeholder.style.display="none")}}customElements.define("viewport-media",ViewportMedia)}class BaseCarousel extends HTMLElement{constructor(){super(),this.slideInstance=null,this.isUserInteracting=!1,this.progressRafId=null,this.eventBindings=[],this.rafId=null,this.arrowClickHandler=null,this.arrowPointerHandler=null,this.handleBlockSelect=this.handleBlockSelect.bind(this),this.handleBlockDeselect=this.handleBlockDeselect.bind(this)}connectedCallback(){this.slideInstance||this.initCarousel()}disconnectedCallback(){this.cleanup()}addShopifyEventListeners(){Shopify?.designMode&&(document.addEventListener("shopify:block:select",this.handleBlockSelect,{passive:!0}),document.addEventListener("shopify:block:deselect",this.handleBlockDeselect,{passive:!0}))}removeShopifyEventListeners(){document.removeEventListener("shopify:block:select",this.handleBlockSelect),document.removeEventListener("shopify:block:deselect",this.handleBlockDeselect)}handleBlockSelect(event){const blockElement=event.target;if(blockElement.closest(this.tagName.toLowerCase())===this&&this.slideInstance){const index=
1parseInt(blockElement.getAttribute("data-splide-index"),10);isNaN(index)||(this.slideInstance.go(index),this.isUserInteracting=!0,this.pauseAutoplay())}}handleBlockDeselect(event){event.target.closest(this.tagName.toLowerCase())===this&&(this.isUserInteracting=!1,this.playAutoplay())}pauseAutoplay(){const autoplay=this.slideInstance?.Components?.Autoplay;autoplay?.pause&&autoplay.pause()}playAutoplay(){const autoplay=this.slideInstance?.Components?.Autoplay;autoplay?.play&&autoplay.play()}initializeProgressBar(){const barElement=this.querySelector(".splide-carousel-progress-bar");if(!barElement||!this.slideInstance)return;const update=()=>{!this.slideInstance||!this.slideInstance.Components||(this.progressRafId&&cancelAnimationFrame(this.progressRafId),this.progressRafId=requestAnimationFrame(()=>{if(!this.slideInstance||!this.slideInstance.Components)return;const end=this.slideInstance.Components.Controller.getEnd()+1,rate=Math.min((this.slideInstance.index+1)/end,1);barElement.style.transform=`scaleX(${rate})`,this.progressRafId=null}))};update(),this.onSlideEvent("move",update)}cleanupProgressBar(){this.progressRafId&&(cancelAnimationFrame(this.progressRafId),this.progressRafId=null)}onSlideEvent(eventName,handler){this.slideInstance&&(this.slideInstance.on(eventName,handler),this.eventBindings.push({eventName,handler}))}offSlideEvent(eventName,handler){this.slideInstance&&this.slideInstance.off(eventName,handler)}fixParentArrow(){this.arrowClickHandler=e=>{const arrow=e.target.closest(".splide__arrow");if(!arrow)return;const splideElement=arrow.closest(".splide"),mySplide=this.querySelector(".splide");if(splideElement!==mySplide)return;e.stopPropagation(),e.preventDefault();const direction=arrow.classList.contains("splide__arrow--prev")?"<":">";this.slideInstance&&this.slideInstance.go(direction)},this.arrowPointerHandler=e=>{const arrow=e.target.closest(".splide__arrow");if(!arrow)return;const splideElement=arrow.closest(".splide"),mySplide=this.querySelector(".splide");splideElement===mySplide&&e.stopPropagation()},this.addEventListener("click",this.arrowClickHandler,{capture:!0,passive:!1}),this.addEventListener("pointerdown",this.arrowPointerHandler,{capture:!0,passive:!0})}cleanupArrowHandlers(){this.arrowClickHandler&&(this.removeEventListener("click",this.arrowClickHandler,{capture:!0}),this.arrowClickHandler=null),this.arrowPointerHandler&&(this.removeEventListener("pointerdown",this.arrowPointerHandler,{capture:!0}),this.arrowPointerHandler=null)}
1cleanupSlideEvents(){this.eventBindings.forEach(({eventName,handler})=>{this.offSlideEvent(eventName,handler)}),this.eventBindings=[]}cleanupRaf(){this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=null)}cleanupShopifyListeners(){Shopify?.designMode&&this.removeShopifyEventListeners()}initCarousel(){throw new Error("initCarousel must be implemented")}cleanup(){this.cleanupSlideEvents(),this.cleanupProgressBar(),this.cleanupRaf(),this.cleanupShopifyListeners(),this.slideInstance&&(this.slideInstance.destroy(),this.slideInstance=null)}}class SplideCarousel extends BaseCarousel{constructor(){super(),this.observer=null,this.videoCache=new Map,this.isInViewport=!1,this.isInitialized=!1,this.handleVideoPlayback=this.handleVideoPlayback.bind(this)}connectedCallback(){this.slideInstance||(this.initObserver(),this.initCarousel(),this.addShopifyEventListeners())}initCarousel(){const splideElement=this.querySelector(".splide");if(!splideElement)return;const options=splideElement.getAttribute("data-splide");if(options)try{const parsedOptions=JSON.parse(options);this.slideInstance=new Splide(splideElement,parsedOptions),this.onSlideEvent("mounted",()=>{this.cacheVideoElements(),this.fixParentArrow(),this.isInitialized=!0,requestAnimationFrame(()=>this.handleVideoPlayback())}),this.onSlideEvent("moved",this.handleVideoPlayback),setTimeout(()=>this.initializeProgressBar(),300),this.slideInstance.mount()}catch(e){console.error("Failed to initialize Splide carousel:",e)}}cacheVideoElements(){if(!this.slideInstance)return;const slides=this.slideInstance.Components.Elements.slides;this.videoCache.clear(),slides.forEach((slide,index)=>{if(!slide.classList.contains("is-clone")){const video=slide.querySelector(".shopable-video__video");video&&this.videoCache.set(index,video)}})}initObserver(){if(!("IntersectionObserver"in window)){this.isInViewport=!0;return}this.observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{const wasInViewport=this.isInViewport;this.isInViewport=entry.isIntersecting,entry.isIntersecting?this.handleVideoPlayback():wasInViewport&&this.pauseAllVideos()})},{rootMargin:"0px 0px -50% 0px",threshold:.1}),this.observer.observe(this)}handleVideoPlayback(){if(!(!this.slideInstance||!this.isInitialized)&&!(this.hasAttribute("data-play-videos")&&this.getAttribute("data-play-videos")==="true")){if(!this.isInViewport){const rect=this.getBoundingClientRect();if(rect.top>=window.innerHeight||rect.bottom<=0)return}this.cleanupRaf(),this.rafId=requestAnimationFrame(()=>{const currentIndex=this.slideInstance.index;this.videoCache.size>0?this.videoCache.forEach((video,index)=>{this.toggleVideo(video,currentIndex===index)}):this.slideInstance.Components.Elements.slides.forEach((slide,index)=>{const video=slide.querySelector(".shopable-video__video");video&&!slide.classList.contains("is-clone")?this.toggleVideo(video,currentIndex===index):video&&video.pause()}),this.rafId=null})}}toggleVideo(video,shouldPlay){shouldPlay?video.paused&&video.play().catch(()=>{}):video.paused||video.pause()}pauseAllVideos(){this.videoCache.forEach(video=>{video.paused||video.pause()})}cleanup(){this.observer&&(this.observer.disconnect(),this.observer=null),this.videoCache.clear(),this.isInitialized=!1,super.cleanup()}}if(customElements.define("splide-carousel",SplideCarousel),!customElements.get("slide-show")){class Slideshow extends BaseCarousel{constructor(){super(),this.videoStates=new Map,this.handleVideoPlayback=this.handleVideoPlayback.bind(this),this.updateSlideCounter=this.updateSlideCounter.bind(this),this.handleFirstSlide=this.handleFirstSlide.bind(this),this.customizePagination=this.customizePagination.bind(this)}initCarousel(){const options=this.getAttribute("data-splide");if(options)try{const parsedOptions=JSON.parse(options);this.slideInstance=new Splide(this,parsedOptions),this.getAttribute("data-pagination")==="numbers"&&this.onSlideEvent("pagination:mounted",this.customizePagination),this.onSlideEvent("moved",this.handleVideoPlayback),this.onSlideEvent("moved",this.updateSlideCounter),this.onSlideEvent("moved",this.handleFirstSlide),this.slideInstance.mount(),this.initializeProgressBar(),this.updateSlideCounter(this.slideInstance.index),this.addShopifyEventListeners()}catch(e){console.error("Failed to initialize Slideshow:",e)}}handleFirstSlide(){this.slideInstance&&this.slideInstance.Components.Elements.slides.forEac
1h(slide=>{slide.classList.remove("first-slide")})}handleVideoPlayback(){this.slideInstance&&this.slideInstance.Components.Elements.slides.forEach(slide=>{const video=slide.querySelector("video");video&&(video.muted=!0,slide.classList.contains("is-active")?video.play():video.pause())})}updateSlideCounter(indexOrEvent){if(!this.slideInstance)return;const newIndex=typeof indexOrEvent=="number"?indexOrEvent:this.slideInstance.index,totalSlides=this.slideInstance.length,currentSlideElement=this.querySelector(".current-slide"),totalSlidesElement=this.querySelector(".total-slides");currentSlideElement&&(currentSlideElement.textContent=newIndex+1),totalSlidesElement&&(totalSlidesElement.textContent=totalSlides)}customizePagination(data){!data?.list||!data?.items||(data.list.classList.add("splide__pagination--custom"),data.items.forEach(item=>{item.button&&(item.button.textContent=String(item.page+1).padStart(2,"0"))}))}cleanup(){this.videoStates.clear(),super.cleanup()}}customElements.define("slide-show",Slideshow)}if(!customElements.get("async-carousel")){class AsyncCarousel extends BaseCarousel{constructor(){super(),this.thumbnailInstance=null,this.thumbnails=null,this.currentThumbnail=null,this.thumbnailClickHandlers=[],this.handleSlideChange=this.handleSlideChange.bind(this)}initCarousel(){const mainSlider=this.querySelector('[data-slider="main"]'),thumbnailSlider=this.querySelector('[data-slider="thumbnail"]');if(!mainSlider)return;const mainOptions=JSON.parse(mainSlider.getAttribute("data-splide")||"{}");if(this.slideInstance=new Splide(mainSlider,mainOptions),thumbnailSlider){const thumbnailOptions=JSON.parse(thumbnailSlider.getAttribute("data-splide")||"{}");this.thumbnailInstance=new Splide(thumbnailSlider,thumbnailOptions),this.slideInstance.sync(this.thumbnailInstance),this.updateThumbnailARIA(thumbnailSlider)}this.onSlideEvent("mounted",()=>{this.initThumbnails(),this.initializeProgressBar(),this.fixParentArrow()}),this.slideInstance.mount(),this.thumbnailInstance?.mount(),this.addShopifyEventListeners()}initThumbnails(){this.slideInstance&&(this.thumbnails=this.querySelectorAll(".thumbnail-item"),this.thumbnails.forEach((thumbnail,index)=>{const handler=()=>this.slideInstance?.go(index);thumbnail.addEventListener("click",handler,{passive:!0}),this.thumbnailClickHandlers.push({element:thumbnail,handler})}),this.onSlideEvent("move",this.handleSlideChange),this.handleSlideChange())}handleSlideChange(){if(!this.slideInstance||!this.thumbnails)return;const thumbnail=this.thumbnails[this.slideInstance.index];thumbnail&&this.currentThumbnail!==thumbnail&&(this.currentThumbnail?.classList.remove("is-active"),thumbnail.classList.add("is-active"),this.currentThumbnail=thumbnail)}updateThumbnailARIA(thumbnailSlider){thumbnailSlider.querySelectorAll(".splide__slide").forEach(item=>item.setAttribute("role","group"))}cleanup(){this.thumbnailClickHandlers.forEach(({element,handler})=>{element.removeEventListener("click",handler)}),this.thumbnailClickHandlers=[],this.thumbnailInstance?.destroy(),this.thumbnailInstance=null,this.thumbnails=null,this.currentThumbnail=null,super.cleanup()}}customElements.define("async-carousel",AsyncCarousel)}if(!customElements.get("gallery-carousel")){class GalleryCarousel extends HTMLElement{constructor(){super(),this.main=null,this.thumbnails=null,this.originalSlides=[],this.originalThumbnails=[],this.rafId=null,this.resizeObserver=null,this.handleInactiveSlide=this.handleInactiveSlide.bind(this),this.handleMainActiveSlide=this.handleMainActiveSlide.bind(this),this.handleThumbnailActiveSlide=this.handleThumbnailActiveSlide.bind(this),this.updateSlideCounter=this.updateSlideCounter.bind(this),this.handleVariantChange=this.handleVariantChange.bind(this)}connectedCallback(){const mainCarousel=this.querySelector('[id^="Main-Carousel"]'),thumbnailCarousel=this.querySelector('[id^="Thumbnail-Carousel"]');if(!mainCarousel||!thumbnailCarousel){console.error("Main or thumbnail carousel element not found.");return}this.cacheOriginalSlides(mainCarousel,thumbnailCarousel);const mainOptions=this.getCarouselOptions(mainCarousel),thumbnailOptions=this.getCarouselOptions(thumbn
1ailCarousel),initialSlideIndex=this.getInitialSlideIndex();mainOptions.start=initialSlideIndex,thumbnailOptions.start=initialSlideIndex,this.initializeCarousels(mainCarousel,mainOptions,thumbnailCarousel,thumbnailOptions),this.addEventListeners(),this.dataset.mediaGrouping==="true"&&this.initializeFiltering()}disconnectedCallback(){this.cleanup()}cacheOriginalSlides(mainCarousel,thumbnailCarousel){this.originalSlides=[...mainCarousel.querySelectorAll(".splide__slide")],this.originalThumbnails=[...thumbnailCarousel.querySelectorAll(".splide__slide")]}getCarouselOptions(carouselElement){return JSON.parse(carouselElement.getAttribute("data-splide")||"{}")}getInitialSlideIndex(){const selectedThumbnailSlide=this.querySelector('.thumbnail-carousel .splide__slide[data-selected="true"]');return selectedThumbnailSlide?Array.from(this.querySelectorAll(".thumbnail-carousel .splide__slide")).indexOf(selectedThumbnailSlide):0}initializeCarousels(mainCarousel,mainOptions,thumbnailCarousel,thumbnailOptions){this.main=new Splide(mainCarousel,mainOptions),this.thumbnails=new Splide(thumbnailCarousel,thumbnailOptions),thumbnailCarousel.getAttribute("data-thumbnail")==="vertical"&&this.thumbnails.on("mounted",()=>{const thumbnailList=thumbnailCarousel.querySelector(".splide__list");thumbnailList&&thumbnailList.setAttribute("role","tablist"),this.updateThumbnailARIA()}),this.main.on("mounted",()=>{mainCarousel.classList.remove("is-initializing"),this.main.index!==void 0&&this.updateSlideCounter(this.main.index)}),this.thumbnails.mount(),this.main.sync(this.thumbnails),this.main.mount()}addEventListeners(){this.main.on("inactive",this.handleInactiveSlide),this.main.on("active",this.handleMainActiveSlide),this.main.on("moved",this.updateSlideCounter),this.thumbnails.on("active",this.handleThumbnailActiveSlide)}initializeFiltering(){const defaultFilter=this.dataset.filterSelected;this.filterSlides(defaultFilter),document.querySelectorAll(".variant-picker__color input[type='radio']").forEach(radio=>{radio.addEventListener("change",this.handleVariantChange,{passive:!0})})}handleVariantChange(event){this.filterSlides(event.target.value)}updateSlideCounter(indexOrEvent){const newIndex=typeof indexOrEvent=="number"?indexOrEvent:indexOrEvent.index,totalSlides=this.main.length,currentSlideElement=this.querySelector(".current-slide"),totalSlidesElement=this.querySelector(".total-slides");currentSlideElement&&totalSlidesElement&&(totalSlidesElement.textContent=totalSlides,currentSlideElement.textContent=newIndex+1)}handleInactiveSlide(oldSlide){const inactiveSlide=this.main.Components.Elements.slides[oldSlide.index];this.pauseYouTubeVideo(inactiveSlide)}handleMainActiveSlide(newSlide){window.pauseAllMedia&&window.pauseAllMedia();const activeSlide=this.main.Components.Elements.slides[newSlide.index];this.handleActiveSlide(activeSlide);const hasProductModel=activeSlide.querySelector("product-model")!==null;this.main.Components.Drag&&this.main.Components.Drag.disable(hasProductModel)}handleThumbnailActiveSlide(newSlide){window.pauseAllMedia&&window.pauseAllMedia();const target=this.thumbnails.Components.Elements.slides[newSlide.index].getAttribute("data-target"),activeSlide=Array.from(this.main.Components.Elements.slides).find(slide=>slide.getAttribute("data-media-id")===target);this.handleActiveSlide(activeSlide)}handleActiveSlide(slide){slide&&!slide.dataset.played&&this.getAttribute("data-autoplay")==="true"&&(this.playActiveMedia(slide),slide.dataset.played=!0)}playActiveMedia(activeSlide){const deferredMedia=activeSlide.querySelector(".deferred-media");deferredMedia&&deferredMedia.loadContent&&deferredMedia.loadContent(!1)}pauseYouTubeVideo(slide){const iframe=slide.querySelector("iframe");iframe&&iframe.src.includes("youtube.com")&&(iframe.src=iframe.src.replace("autoplay=1","autoplay=0"))}updateCarouselImages(mediaId){if(!this.main)return;const mainSlides=this.main.Components.Elements.slides,mainSlide=mainSlides.find(slide=>slide.getAttribute("data-media-id")===mediaId.toString());if(mainSlide){const mainIndex=mainSlides.indexOf(mainSlide);mainIndex!==-1&&this.main.go(mainIndex)}this.hasAttribute("desktop-grid")&&window.innerWidth>=768&&this.scrollToGalleryItem(mediaId)}scrollToGalleryItem(mediaId){const galleryListsContainer=this.querySelector(".splide__gallery");if(!galleryListsContainer)return;const galleryLists=galleryListsContainer.querySelectorAll(".splide__slide"),targetItem=Array.from(galleryLists).find(item=>item.getAttribute("data-media-id")===mediaId.toString());targetItem&&(this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(()=>{const header=document.querySelector(".header"),headerOffset=header?header.offsetHeight+16:16,offsetPosition=targetItem.getBoundingClientRect().top+window.pageYOffset-headerOffset;window.scrollTo({top:offsetPosition,behavior:"smooth"}),this.rafId=null}))}updateThumbnailARIA(){if(!this.thumbnails?.Components?.Elements?.list)return;this.thumbnails.Components.Elements.list.querySelectorAll(".splide__slide").forEach(thumbnailItem=>{thumbnailItem.setAttribute("role","tab")})}filterSlides(group){const mainList=this.main?.Components?.Elements?.list,thumbList=this.thumbnails?.Components?.Elements?.list;if(!mainList||!thumbList){console.error("Splide list element not found for main or thumbnails.");return}mainList.innerHTML="",thumbList.innerHTML="";let slidesToShow=this.originalSlides,thumbsToShow=this.originalThumbnails;if(group&&group.trim()!==""){const filteredSlides=this.originalSlides.filter(slide=>slide.dataset.mediaGroup===group),filteredThumbs=this.originalThumbnails.filter(slide=>slide.dataset.mediaGroup===group);filteredSlides.length>0&&filteredThumbs.length>0&&(slidesToShow=filteredSlides,thumbsToShow=filteredThumbs)}const fragment1=document.createDocumentFragment(),fragment2=document.createDocumentFragment();
1slidesToShow.forEach(slide=>fragment1.appendChild(slide)),thumbsToShow.forEach(slide=>fragment2.appendChild(slide)),mainList.appendChild(fragment1),thumbList.appendChild(fragment2);try{this.main.refresh(),this.thumbnails.refresh(),slidesToShow.length>0?(this.main.go(0),this.thumbnails.go(0),this.updateSlideCounter(0)):(this.updateSlideCounter(-1),console.warn("No slides to display in the carousel after filtering."))}catch(error){console.error("Error refreshing Splide instances:",error)}this.observeResponsiveImages(),this.updateThumbnailARIA()}observeResponsiveImages(){this.querySelectorAll("responsive-image").forEach(img=>{img.img&&img.intersectionObserver&&img.img instanceof Element&&img.intersectionObserver.observe(img.img)})}cleanup(){this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=null),document.querySelectorAll(".variant-picker__color input[type='radio']").forEach(radio=>{radio.removeEventListener("change",this.handleVariantChange)}),this.main&&(this.main.off("inactive",this.handleInactiveSlide),this.main.off("active",this.handleMainActiveSlide),this.main.off("moved",this.updateSlideCounter),this.main.destroy(),this.main=null),this.thumbnails&&(this.thumbnails.off("active",this.handleThumbnailActiveSlide),this.thumbnails.destroy(),this.thumbnails=null),this.originalSlides=[],this.originalThumbnails=[]}}customElements.define("gallery-carousel",GalleryCarousel)}if(!customElements.get("product-recommendations")){class ProductRecommendations extends HTMLElement{constructor(){super()}connectedCallback(){if(!this.dataset.url){console.warn("[ProductRecommendations] Missing data-url attribute");return}this.fetchProducts()}async fetchProducts(){try{const response=await fetch(this.dataset.url);if(!response.ok)throw new Error(`Failed to fetch: ${response.status}`);const text=await response.text(),recommendations=new DOMParser().parseFromString(text,"text/html").querySelector("product-recommendations");recommendations&&recommendations.innerHTML.trim()&&this.renderRecommendations(recommendations.innerHTML)}catch(error){console.error("Error fetching product recommendations:",error)}}renderRecommendations(html){this.innerHTML=html,this.initCarousels(),this.classList.add("product-recommendations--loaded")}initCarousels(){this.querySelectorAll("splide-carousel").forEach(carousel=>carousel.connectedCallback?.())}}customElements.define("product-recommendations",ProductRecommendations)}class ProductCardSlider extends BaseCarousel{constructor(){super(),this.initObserver=null,this.underlineRafId=null,this.updateUnderline=this.updateUnderline.bind(this)}connectedCallback(){this.setupInitObserver()}setupInitObserver(){"IntersectionObserver"in window?(this.initObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting&&!this.slideInstance&&(this.initCarousel(),this.initObserver.disconnect())})},{rootMargin:"200px 0px 200px 0px",threshold:0}),this.initObserver.observe(this)):this.initCarousel()}initCarousel(){const splideElement=this.querySelector(".splide");if(!splideElement)return;const options=splideElement.getAttribute("data-splide");if(options)try{const parsedOptions=JSON.parse(options);this.slideInstance=new Splide(splideElement,parsedOptions),this.onSlideEvent("mounted",()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.initializeUnderlineIndicator(),this.fixParentArrow()})})}),this.slideInstance.mount()}catch(e){console.error("Failed to initialize Splide card:",e)}}initializeUnderlineIndicator(){!this.querySelector(".product-card-slider__underline")||!this.slideInstance||(this.updateUnderline(),this.onSlideEvent("move",this.updateUnderline),this.onSlideEvent("mounted",this.updateUnderline),this.onSlideEvent("resized",this.updateUnderline))}updateUnderline(){!this.slideInstance||!this.slideInstance.Components||(this.underlineRafId&&cancelAnimationFrame(this.underlineRafId),this.underlineRafId=requestAnimationFrame(()=>{const track=this.slideInstance.root.querySelector(".splide__track"),indicator=this.querySelector(".product-card-slider__underline");if(!track||!indicator){this.underlineRafId=null;return}const totalSlides=this.slideInstance.Components.Elements.slides.filter(slide=>!slide.classList.contains("is-clone")).length;if(totalSlides===0){this.underlineRafId=null;return}const index=this.slideInstance.index%totalSlides,width=track.clientWidth/totalSlides,offset=width*index;indicator.style.width=`${width}px`,indicator.style.transform=`translate3d(${offset}px, 0, 0)`,this.underlineRafId=null}))}cleanup(){this.initObserver&&(this.initObserver.disconnect(),this.initObserver=null),this.underlineRafId&&(cancelAnimationFrame(this.underlineRafId),this.underlineRafId=null),super.cleanup()}}customElements.get("product-card-slider")||customElements.define("product-card-slider",ProductCardSlider);class ComponentDrawer extends HTMLElement{constructor(){super(),this.overlay=this.querySelector(".drawer-overlay"),this.drawer=this.querySelector(".drawer-content"),this.closeButton=this.querySelector(".close-drawer-btn"),this.triggerButton=null,this.overlay.addEventListener("click",()=>this.close()),this.closeButton.addEventListener("click",()=>this.close()),this.handleKeyPress=this.handleKeyPress.bind(this),this.trapFocus=this.trapFocus.bind(this)}connectedCallback(){this.hasAttribute("role")||this.setAttribute("role","dialog"),document.addEventListener("keydown",this.handleKeyPress)}disconnectedCallback(){document.removeEventListener("keydown",this.handleKeyPress),document.removeEventListener("focus",this.trapFocus,!0)}open(triggerButton){this.triggerButton=triggerButton,this.setAttribute("open",""),document.body.classList.add("overflow-hidden"),this.drawer.setAttribute("aria-hidden","false"),this.closeButton.focus(),document.addEventListener("focus",this.trapFocus,!0)}close(){this.removeAttribute("open"),document.body.classList.remove("overflow-hidden"),this.drawer.setAttribute("aria-hidden","true"),document.removeEventListener("focus",this.trapFocus,!0),this.triggerButton&&(this.triggerButton.focus(),this.triggerButton=null)}handleKeyPress(event){event.key==="Escape"&&this.close()}trapFocus(event){this.contains(event.target)||(event.stopPropagation(),this.closeButton.focus())}static get observedAttributes(){return["open"]}}customElements.define("component-drawer",ComponentDrawer);class SearchDrawer extends ComponentDrawer{constructor(){super(),this.predictiveSearch=this.querySelector("predictive-search"),this.openTransitionEndHandler=this.openTransitionEndHandler.bind(this)}open(triggerButton){this.triggerButton=triggerButton,this.setAttribute("open",""),document.body.classList.add("overflow-hidden"),this.drawer.setAttribute("aria-hidden","false"),this.addEventListener("transitionend",this.openTransitionEndHandler),document.addEventListener("focus",this.trapFocus,!0)}openTransitionEndHandler(event){event.target===this.overlay&&(this.removeEventListener("transitionend",this.openTransitionEndHandler),this.predictiveSearch&&setTimeout(()=>{const focusElement=this.predictiveSearch.querySelector('input:not([type="hidden"])');focusElement&&typeof focusElement.focus=="function"&&focusElement.focus()},150))}close(){if(this.predictiveSearch){const inputElement=this.predictiveSearch.querySelector('input:not([type="hidden"])');inputElement&&(inputElement.value=""),this.predictiveSearch.hasAttribute("open")&&this.predictiveSearch.removeAttribute("open"),this.predictiveSearch.setAttribute("results","false")}super.close()}}customElements.define("search-drawer",SearchDrawer);class DrawerButton extends HTMLElement{constructor(){super(),this.handleClick=this.handleClick.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this)}connectedCallback(){this.targetId=this.getAttribute("data-target"),this.targetDrawer=document.getElementById(this.targetId),this.setAttribute("tabindex","0"),this.setAttribute("role","button"),this.targetDrawer?(this.addEventListener("click",this.handleClick),this.addEventListener("keydown",this.handleKeyPress)):console.warn(`Drawer element with ID '${this.targetId}' does not exist.`)}disconnectedCallback(){this.removeEventListener("click",this.handleClick),this.removeEventListener("keydown",this.handleKeyPress)}handleKeyPress(event){(event.key==="Enter"||event.key===" ")&&(event.preventDefault(),this.handleClick())}handleClick(){this.targetDrawer&&typeof this.targetDrawer.open=="function"&&this.targetDrawer.open(this)}}if(customElements.define("drawer-button",DrawerButton),!customElements.get("quick-view")){class QuickView extends HTMLElement{constructor(){super(),this.isFetching=!1,this.abortController=null,this.cache={},this.cacheDuration=6e4,this.boundTrapFocus=this.trapFocus.bind(this),this.isFocusTrapped=!1,this.loadedScripts=new Set,this.initElements(),this.bindEvents()}initElements(){const modal=document.getElementById("product-modal");this.elements={overlay:document.querySelector(".product-quick-view-overlay"),modal,body:document.body,closeButton:modal?.querySelector(".product-modal-close"),modalContent:modal?.querySelector("#product-modal-content")}}bindEvents(){const{overlay,closeButton,modal}=this.elements;this.addEventListener("click",this.onQuickViewClick.bind(this)),this.addEventListener("keydown",this.onQuickViewKeydown.bind(this)),closeButton&&overlay&&modal?(overlay.addEventListener("click",this.closeQuickView.bind(this)),closeButton.addEventListener("click",this.closeQuickView.bind(this)),document.addEventListener("keydown",this.onKeyDown.bind(this)),modal.addEventListener("transitionend",this.onTransitionEnd.bind(this))):console.error("QuickView: Critical elements (Modal, Overlay, or Close Button) not found.")}onKeyDown(event){event.key==="Escape"&&this.elements.modal?.classList.contains("active")&&this.closeQuickView()}onQuickViewKeydown(event){(event.key==="Enter"||event.key===" ")&&(event.preventDefault(),this.onQuickViewClick(event))}trapFocus(event){if(!(!this.isFocusTrapped||!this.elements.modal?.classList.contains("active"))&&event.key==="Tab"){const focusableContent=this.elements.modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not
1([tabindex="-1"])');if(focusableContent.length===0)return;const firstFocusableElement=focusableContent[0],lastFocusableElement=focusableContent[focusableContent.length-1];event.shiftKey?document.activeElement===firstFocusableElement&&(event.preventDefault(),lastFocusableElement.focus()):document.activeElement===lastFocusableElement&&(event.preventDefault(),firstFocusableElement.focus())}}onTransitionEnd(event){event.target===this.elements.modal&&!this.elements.modal?.classList.contains("active")&&this.elements.modalContent&&(this.elements.modalContent.innerHTML="")}async onQuickViewClick(event){if(event.preventDefault(),this.isFetching||!this.elements.modalContent)return;const productHandle=this.dataset.productHandle,href=this.buildProductUrl(productHandle);if(!href||!productHandle)return;this.classList.add("loading"),this.elements.modalContent.innerHTML="",this.elements.modalContent.classList.add("is-loading");const cachedData=this.cache[href];if(cachedData&&Date.now()-cachedData.timestamp<this.cacheDuration){this.renderQuickView(cachedData.content,href,productHandle),this.classList.remove("loading"),setTimeout(()=>{this.elements.modalContent&&this.elements.modalContent.classList.remove("is-loading")},150);return}this.abortController&&this.abortController.abort(),this.abortController=new AbortController;const signal=this.abortController.signal;this.isFetching=!0;try{const content=await this.fetchProductContent(href,signal);signal.aborted||(this.cache[href]={content,timestamp:Date.now()},this.renderQuickView(content,href,productHandle))}catch(error){error.name!=="AbortError"&&(console.error("Error fetching quick view content:",error),this.elements.modalContent&&(this.elements.modalContent.innerHTML="<p>Error loading product details.</p>"))}finally{(this.isFetching||signal?.aborted)&&(this.isFetching=!1,this.classList.remove("loading"),this.abortController=null,setTimeout(()=>{this.elements.modalContent&&this.elements.modalContent.classList.remove("is-loading")},150))}}buildProductUrl(productHandle){const rootUrl=typeof theme?.routes?.root_url=="string"?theme.routes.root_url:"";return`${rootUrl==="/"?"":rootUrl}/products/${productHandle}?view=quick-view`.replace("//","/")}async fetchProductContent(url,signal){const response=await fetch(url,{signal});if(!response.ok)throw new Error(`HTTP error! status: ${response.status}`);const text=await response.text(),contentElement=new DOMParser().parseFromString(text,"text/html").querySelector("#product-modal-content");if(!contentElement)throw new Error("Content element (#product-modal-content) not found in fetched HTML.");return contentElement.innerHTML}renderQuickView(content,url,productHandle){this.elements.modalContent&&(this.elements.modalContent.innerHTML=content,this.loadJavaScriptFiles(),this.initializeShopifyComponents(),this.openQuickView(),this.dispatchQuickViewOpenEvent(url,productHandle))}loadJavaScriptFiles(){this.elements.modalContent&&this.elements.modalContent.querySelectorAll("script[src]").forEach(script=>{const src=script.getAttribute("src");if(src&&!this.loadedScripts.has(src)&&!document.querySelector(`script[src="${src}"]`)){const newScript=document.createElement("script");newScript.src=src,newScript.defer=!0,document.head.appendChild(newScript),this.loadedScripts.add(src)}})}initializeShopifyComponents(){setTimeout(()=>{try{typeof Shopify?.PaymentButton?.init=="function"&&Shopify.PaymentButton.init(),typeof window.ProductModel?.loadShopifyXR=="function"&&window.ProductModel.loadShopifyXR()}catch(error){console.error("Error initializing Shopify components:",error)}},200)}openQuickView(){const{body,modal,closeButton}=this.elements;!body||!modal||(body.classList.add("quickview-open"),modal.classList.add("active"),setTimeout(()=>{closeButton?.focus()},50),this.isFocusTrapped||(document.addEventListener("keydown",this.boundTrapFocus),this.isFocusTrapped=!0))}closeQuickView(){const{body,modal}=this.elements;!body||!modal||(body.classList.remove("quickview-open"),modal.classList.remove("active"),this.isFocusTrapped&&(document.removeEventListener("keydown",this.boundTrapFocus),this.isFocusTrapped=!1),this.abortController&&this.abortController.abort())}dispatchQuickViewOpenEvent(url,productHandle){document.dispatchEvent(new CustomEvent("quick-view:open",{bubbles:!0,detail:{productUrl:url,productHandle}}))}}customElements.define("quick-view",QuickView)}if(!customElements.get("collapsible-details")){class CollapsibleDetails extends HTMLElement{constructor(){super(),this.toggleContent=this.toggleContent.bind(this),this.onTransitionEnd=this.onTransitionEnd.bind(this),this.updateHeight=this.updateHeight.bind(this),this.setResponsiveState=this.setResponsiveState.bind(this),this.isAnimating=!1}connectedCallback(){this.detailsEl=this.querySelector("details"),this.summaryEl=this.querySelector("summary"),this.contentEl=this.querySelector(".collapsible__content"),this.contentInnerEl=this.querySelector(".collapsible__content-inner"),!(!this.detailsEl||!this.summaryEl||!this.contentEl)&&(this.wrapContent(),this.setupInitialState(),this.addEventListeners(),this.contentInnerEl&&(this.resizeObserver=new ResizeObserver(this.updateHeight),this.resizeObserver.observe(this.contentInnerEl)),this.detailsEl.dataset.responsive==="true"&&this.setResponsiveState(),this.mutationObserver=new MutationObserver(this.updateContentHeight.bind(this)),this.contentInnerEl&&this.mutationObserver.observe(this.contentInnerEl,{childList:!0,subtree:!0,characterData:!0}
1))}wrapContent(){if(!(!this.contentEl||!this.contentEl.parentElement)){if(this.contentEl.parentElement.classList.contains("collapsible__content-wrapper")){this.contentWrapper=this.contentEl.parentElement;return}this.contentWrapper=document.createElement("div"),this.contentWrapper.className="collapsible__content-wrapper",this.contentEl.parentNode.insertBefore(this.contentWrapper,this.contentEl),this.contentWrapper.appendChild(this.contentEl)}}setupInitialState(){this.detailsEl&&(this.detailsEl.hasAttribute("open")?(this.contentWrapper.style.height="auto",this.contentEl.style.transform="translateY(0)",this.detailsEl.classList.add("is-open")):(this.contentWrapper.style.height="0",this.contentEl.style.transform="translateY(16px)"))}addEventListeners(){!this.summaryEl||!this.contentWrapper||(this.summaryEl.addEventListener("click",this.toggleContent),this.contentWrapper.addEventListener("transitionend",this.onTransitionEnd))}toggleContent(event){if(event.preventDefault(),this.isAnimating){this.pendingState=!this.detailsEl.open;return}this[this.detailsEl.open?"closeContent":"openContent"]()}openContent(){this.isAnimating=!0,this.detailsEl.open=!0,requestAnimationFrame(()=>{const height=this.contentEl.scrollHeight;this.contentWrapper.style.height="0",this.contentEl.style.transform="translateY(16px)",requestAnimationFrame(()=>{this.detailsEl.classList.add("is-open"),this.contentWrapper.style.height=`${height}px`,this.contentEl.style.transform="translateY(0)"})})}closeContent(){this.isAnimating=!0,requestAnimationFrame(()=>{const height=this.contentWrapper.scrollHeight;this.contentWrapper.style.height=`${height}px`,requestAnimationFrame(()=>{this.detailsEl.classList.remove("is-open"),this.contentWrapper.style.height="0",this.contentEl.style.transform="translateY(16px)"})})}onTransitionEnd(event){event.propertyName!=="height"||event.target!==this.contentWrapper||(this.isAnimating=!1,this.detailsEl.classList.contains("is-open")?this.contentWrapper.style.height="auto":this.detailsEl.open=!1,this.pendingState!==void 0&&(this[this.pendingState?"openContent":"closeContent"](),this.pendingState=void 0))}updateHeight(){if(this.detailsEl.open&&!this.isAnimating){this.contentWrapper.style.height="auto";const height=this.contentWrapper.scrollHeight;this.contentWrapper.style.height=`${height}px`}}updateContentHeight(){if(this.detailsEl.open){const height=this.contentEl.scrollHeight;this.contentWrapper.style.height=`${height}px`}}disconnectedCallback(){this.summaryEl&&this.summaryEl.removeEventListener("click",this.toggleContent),this.contentWrapper&&this.contentWrapper.removeEventListener("transitionend",this.onTransitionEnd),this.resizeObserver&&this.resizeObserver.disconnect(),this.mutationObserver&&this.mutationObserver.disconnect()}setResponsiveState(){const isMobile=window.matchMedia("(max-width: 768px)").matches;isMobile&&this.detailsEl.open||(this.detailsEl.open=!isMobile,this.detailsEl.classList.toggle("is-open",!isMobile),isMobile?this.contentWrapper.style.height="0":(this.contentWrapper.style.height="auto",this.contentEl.style.transform="translateY(0)",setTimeout(()=>{const height=this.contentEl.scrollHeight;this.contentWrapper.style.height=`${height}px`},0)))}}customElements.define("collapsible-details",CollapsibleDetails)}function debounce(func,wait=100){let timeout;return function(...args){clearTimeout(timeout),timeout=setTimeout(()=>func.apply(this,args),wait)}}if(window.addEventListener("resize",debounce(()=>{document.querySelectorAll('collapsible-details details[data-responsive="true"]').forEach(details=>details.closest("collapsible-details").setResponsiveState())})),!customElements.get("tabs-component")){class TabsComponent extends HTMLElement{constructor(){super()}connectedCallback(){this.tabsHeader=this.querySelector(".tabs-header"),this.tabsContent=this.querySelector(".tabs-content"),this.tabActiveIndicator=this.querySelector(".indicator"),this.tabsHeader.addEventListener("click",e=>{e.target.classList.contains("tab-button")&&this.activateTab(e.target)}),this.tabsHeader.addEventListener("keydown",e=>{e.target.classList.contains("tab-button")&&this.handleKeyDown(e)}),this.activateTab(this.tabsHeader.querySelector(".tab-button")),Shopify&&Shopify.designMode&&document.addEventListener("shopify:block:select",this.handleBlockSelect.bind(this))}activateTab(tab){const tabIndex=tab.getAttribute("data-tab");this.tabsHeader.querySelectorAll(".tab-button").forEach(t=>{const isActive=t===tab;t.classList.toggle("active",isActive),t.setAttribute("aria-selected",isActive),t.setAttribute("tabindex",isActive?"0":"-1")}),this.tabsContent.querySelectorAll(".tab-content").forEach(content=>{content.classList.toggle("active",content.getAttribute("id")===tabIndex)});const tabRect=tab.getBoundingClientRect(),tabsHeaderRect=this.tabsHeader.getBoundingClientRect(),offsetLeft=tabRect.left-tabsHeaderRect.left;this.tabsHeader.style.setProperty("--indicator-width",`${tabRect.width}px`),this.tabsHeader.style.setProperty("--indicator-offset",`${offsetLeft}px`)}handleKeyDown(e){const key=e.key,currentTab=e.target;let newTab;switch(key){case"ArrowRight":newTab=currentTab.nextElementSibling||this.tabsHeader.firstElementChild;break;case"ArrowLeft":newTab=currentTab.previousElementSibling||this.tabsHeader.lastElementChild;break;case"Enter":case"Space":this.activateTab(currentTab);return}newTab&&newTab.classList.contains("tab-button")&&(e.preventDefault(),newTab.focus())}handleBlockSelect(e){const blockId=e.detail.blockId,tabToActivate=this.tabsHeader.querySelector(`[data-tab="tab-${blockId}"]`);tabToActivate&&this.activateTab(tabToActivate)}}customElements.define("tabs-component",TabsComponent)}if(!customElements.get("card-product-swatch")){class CardProductSwatch extends HTMLElement{constructor(){super(),this.slideInstance=null,this.clickHandlers=new Map}connectedCallback(){this.swatchButtons=this.querySelectorAll(".swatch-button"),this.image=this.closest(".card-product")?.querySelector(".product-first-image img"),this.link=this.closest(".card-product")?.querySelector(".product-link"),this.sliderCarousel=this.hasAttribute("data-sli
1der")?this.closest(".card-product")?.querySelector("product-card-slider")||this.parentElement?.querySelector("product-card-slider"):null,this.swatchButtons.forEach(button=>{const handler=e=>this.handleSwatchClick(e,button);this.clickHandlers.set(button,handler),button.addEventListener("click",handler)})}disconnectedCallback(){this.clickHandlers.forEach((handler,button)=>{button.removeEventListener("click",handler)}),this.clickHandlers.clear()}async handleSwatchClick(e,button){e.preventDefault();const imageSrc=button.dataset.variantImageSrc||button.dataset.src;if(!imageSrc)return;if(this.updateActiveButton(button),!this.hasAttribute("data-slider")){this.updateProductImage(button),this.updateProductLink(button);return}if(await this.ensureSlideInitialized(),!this.slideInstance)return;const slideIndex=this.findSlideIndexByImage(imageSrc);slideIndex!==-1&&this.slideInstance.go(slideIndex)}async ensureSlideInitialized(){if(!(this.slideInstance||!this.sliderCarousel))return new Promise(resolve=>{const check=()=>{this.sliderCarousel.slideInstance?(this.slideInstance=this.sliderCarousel.slideInstance,resolve()):requestAnimationFrame(check)};check()})}findSlideIndexByImage(imageSrc){if(!this.slideInstance)return-1;const slides=this.slideInstance.Components.Elements.slides.filter(slide=>!slide.classList.contains("is-clone")),normalize=url=>url?.split("?")[0].toLowerCase().trim()||"",normalizedSearch=normalize(imageSrc);for(let i=0;i<slides.length;i++){const slideImageSrc=slides[i].dataset.variantImageSrc;if(slideImageSrc&&normalize(slideImageSrc)===normalizedSearch)return i}for(let i=0;i<slides.length;i++){const slideImageSrc=slides[i].dataset.variantImageSrc;if(slideImageSrc){const normalized=normalize(slideImageSrc);if(normalized.includes(normalizedSearch)||normalizedSearch.includes(normalized))return i}}for(let i=0;i<slides.length;i++){const img=slides[i].querySelector("img");if(img?.src&&normalize(img.src).includes(normalizedSearch))return i}return-1}updateActiveButton(button){this.swatchButtons.forEach(btn=>btn.classList.remove("active")),button.classList.add("active")}updateProductImage(button){if(!this.image)return;const srcset=button.getAttribute("data-srcset"),src=button.getAttribute("data-src");srcset&&(this.image.srcset=srcset),src&&(this.image.src=src)}updateProductLink(button){const link=button.getAttribute("data-link");this.link&&link&&(this.link.href=link)}}customElements.define("card-product-swatch",CardProductSwatch)}if(!customElements.get("count-down")){class CountdownTimer extends HTMLElement{constructor(){super(),this.endTime=new Date(this.getAttribute("data-timer")).getTime(),this.daysElem=this.querySelector('li[data-value="days"] .countdown-day'),this.hoursElem=this.querySelector('li[data-value="hours"] .countdown-hour'),this.minutesElem=this.querySelector('li[data-value="minutes"] .countdown-minute'),this.secondsElem=this.querySelector('li[data-value="seconds"] .countdown-second')}connectedCallback(){this.startCountdown()}startCountdown(){const updateCountdown=()=>{const now=new Date().getTime(),distance=this.endTime-now;if(distance<0){this.displayTime(0,0,0,0);return}const days=Math.floor(distance/(1e3*60*60*24)),hours=Math.floor(distance%(1e3*60*60*24)/(1e3*60*60)),minutes=Math.floor(distance%(1e3*60*60)/(1e3*60)),seconds=Math.floor(distance%(1e3*60)/1e3);this.displayTime(days,hours,minutes,seconds),requestAnimationFrame(updateCountdown)};updateCountdown()}displayTime(days,hours,minutes,seconds){this.daysElem.textContent=days,this.hoursElem.textContent=hours,this.minutesElem.textContent=minutes,this.secondsElem.textContent=seconds}}customElements.define("count-down",CountdownTimer)}(function(){function getAbsoluteTop(element){if(!element)return 0;const rect=element.getBoundingClientRect(),scrollTop=window.pageYOffset||document.documentElement.scrollTop;return rect.top+scrollTop}function initSmoothScroll(){document.addEventListener("click",function(event){if(event.target.matches("[data-anchor]")){event.preventDefault();const href=event.target.getAttribute("href");if(!href||href==="#")return;const targetId=href.replace("#",""),targetSection=document.getElementById(targetId);
1if(targetSection){const headerHeight=parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--header-height"))||0,targetPosition=getAbsoluteTop(targetSection)-headerHeight;window.scrollTo({top:targetPosition,behavior:"smooth"})}}})}document.addEventListener("DOMContentLoaded",initSmoothScroll)})(),customElements.get("show-more-toggle")||customElements.define("show-more-toggle",class extends HTMLElement{constructor(){super(),this.content=this.querySelector("[data-show-more-content]"),this.button=this.querySelector("button"),this.showMoreText=this.querySelector(".label-show-more"),this.showLessText=this.querySelector(".label-show-less"),this.button.addEventListener("click",()=>this.toggle())}toggle(){this.content.classList.toggle("content-truncated"),this.showMoreText.classList.toggle("hidden"),this.showLessText.classList.toggle("hidden")}});
2//# sourceMappingURL=/cdn/shop/t/12/assets/theme.js.map?v=145770457292470148891774454413

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.