PageSourceSearch

https://www.libertineparfumerie.com.au/cdn/shop/t/77/assets/custom.js?v=133958872203253189351790770553

js libertineparfumerie.com.au collected 2026-10-04 23:36:25 UTC 36,038 bytes, 15 lines download raw bytes

1document.addEventListener("DOMContentLoaded",()=>{function initMobileAnnouncements(){document.querySelectorAll(".split-announcements--container").forEach((container,containerIndex)=>{const blocks=container.querySelectorAll(".split-announcements--block");let currentIndex=0,intervalId;function isMobile(){return window.innerWidth<768}function showNextAnnouncement(){if(!isMobile())return;const nextIndex=(currentIndex+1)%blocks.length;blocks[nextIndex].classList.add("active"),blocks[currentIndex].classList.remove("active"),currentIndex=nextIndex}function startRotation(){if(isMobile()&&!intervalId){blocks.forEach(block=>block.classList.remove("active")),blocks[0].classList.add("active"),currentIndex=0;const delay=containerIndex*1e3;setTimeout(()=>{intervalId=setInterval(showNextAnnouncement,3e3)},delay)}}function stopRotation(){intervalId&&(clearInterval(intervalId),intervalId=null),isMobile()||blocks.forEach(block=>{block.classList.remove("active")})}function handleResize(){isMobile()?startRotation():stopRotation()}handleResize(),window.addEventListener("resize",handleResize),container.addEventListener("mouseenter",()=>{isMobile()&&intervalId&&(clearInterval(intervalId),intervalId=null)}),container.addEventListener("mouseleave",()=>{isMobile()&&!intervalId&&(intervalId=setInterval(showNextAnnouncement,3e3))})})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initMobileAnnouncements):initMobileAnnouncements(),document.querySelectorAll('.x-menu--level-1--link[data-megamenu="true"]').forEach(link=>{link.addEventListener("mouseenter",()=>{document.body.classList.add("menu-open")}),link.addEventListener("mouseleave",()=>{document.body.classList.remove("menu-open")})});const samplesPopup=document.querySelector(".samples-popup"),samplesButtons=document.querySelectorAll(".cart--samples-select"),closeButton=document.querySelector(".samples-popup--close");let selectedSamples=[],chooseForMeMode=!1;initializeAccordionToggle(),initializeCartState();async function initializeCartState(){try{const cart=await(await fetch("/cart.js")).json(),sampleChoices=cart.attributes&&cart.attributes["Sample Choices"],chooseForMe=cart.attributes&&cart.attributes["Choose For Me"];sampleChoices&&sampleChoices.trim()!==""&&chooseForMe!=="true"?chooseForMeMode=!1:(chooseForMeMode=chooseForMe==="true",selectedSamples=[]),await updateSelectedSamplesAccordion(),console.log("Initialized cart state:",{chooseForMeMode,selectedSamples:selectedSamples.length,sampleChoices:sampleChoices||"",chooseForMe:chooseForMe||""})}catch(error){console.error("Error initializing cart state:",error),chooseForMeMode=!1,selectedSamples=[]}}function extractSampleData(card){const img=card.querySelector("img"),vendor=card.querySelector(".sample-vendor")?.textContent.trim(),title=card.querySelector(".sample-title")?.textContent.trim(),scent=card.querySelector(".product-card--scent-family")?.textContent.trim();return{vendor,title,scent,image:img?img.src:null}}async function updateSelectedSamplesAccordion(forcedSampleChoices=null,forcedChooseForMe=null){const accordion=document.getElementById("selected-samples-accordion"),samplesList=document.getElementById("selected-samples-list"),samplesCount=document.getElementById("selected-samples-count"),chooseForMeButton=document.querySelector(".cart--samples-choose-for-me"),selectSamplesButton=document.querySelector(".cart--samples-select:not(.cart--samples-choose-for-me)");if(!(!accordion||!samplesList||!samplesCount))try{let sampleChoices,chooseForMe;if(forcedSampleChoices!==null&&forcedChooseForMe!==null)sampleChoices=Array.isArray(forcedSampleChoices)?forcedSampleChoices.map(choice=>choice.title.trim()).join("; "):forcedSampleChoices,chooseForMe=forcedChooseForMe;else{const cart=await(await fetch("/cart.js")).json();sampleChoices=cart.attributes&&cart.attributes["Sample Choices"],chooseForMe=cart.attributes&&cart.attributes["Choose For Me"]}if(sampleChoices&&sampleChoices.trim()!==""&&chooseForMe!=="true"){const sampleNames=sampleChoices.split(";").map(name=>name.trim()).filter(name=>name!=="");accordion.style.display="block",samplesCount.textContent=sampleNames.length;const availableSamples=getAllAvailableSamples(),matchedSamples=sampleNames.map(sampleName=>{const matchedSample=availableSamples.find(sample=>sample.title.toLowerCase().trim()===sampleName.toLowerCase().trim());return matchedSample?{title:matchedSample.title,vendor:matchedSample.vendor,image:matchedSample.image}:{title:sampleName,vendor:"",image:null}});samplesList.innerHTML=matchedSamples.map(sample=>`
2                    <div class="selected-sample-item">
3                        <div class="selected-sample-details">
4                        <div class="selected-sample-image-container">
5                            ${sample.image?`<img src="${sample.image}" alt="${sample.title}" class="selected-sample-image">`:""}
6                            </div>
7                            <div class="selected-sample-info">
8                                ${sample.vendor?`<div class="selected-sample-vendor h6" data-item="small-text">${sample.vendor}</div>`:""}
9                                <div class="selected-sample-title h3" data-item="nav-text">${sample.title}</div>
10                            </div>
11                        </div>
12                        <div class="selected-sample-price h5" data-item="nav-text">FREE</div>
13                    </div>
14                `).join(""),selectedSamples=matchedSamples.map(sample=>({title:sample.title,vendor:sample.vendor,image:sample.image,sce
14nt:""})),chooseForMeMode=!1,selectSamplesButton.classList.add("button--selected"),chooseForMeButton.classList.remove("button--selected"),matchedSamples.map(sample=>{let sampleCard=document.querySelector(`.sample-card[data-product-title="${sample.title}"]`);if(sampleCard){sampleCard.classList.add("selected");const button=sampleCard.querySelector(".sample-select-btn");button&&(button.textContent="Selected")}}),selectSamplesButton.querySelector("span[data-content]").innerHTML=`${matchedSamples.length} Free Samples Selected`}else accordion.style.display="none",samplesList.innerHTML="",samplesCount.textContent="0",selectedSamples=[],chooseForMeMode=chooseForMe==="true",selectSamplesButton.querySelector("span[data-content]").innerHTML="Select 3 Free Samples",chooseForMeMode&&(chooseForMeButton.classList.add("button--selected"),selectSamplesButton.classList.remove("button--selected"))}catch(error){console.error("Error updating selected samples accordion:",error),accordion.style.display="none",samplesList.innerHTML="",samplesCount.textContent="0",selectedSamples=[],chooseForMeMode=!1,selectSamplesButton.querySelector("span[data-content]").innerHTML="Select 3 Free Samples",selectSamplesButton.classList.remove("button--selected"),chooseForMeButton.classList.remove("button--selected")}}function getAllAvailableSamples(){const sampleCards=document.querySelectorAll(".sample-card"),samples=[];return sampleCards.forEach(card=>{const img=card.querySelector(".sample-image"),vendor=card.querySelector(".sample-vendor")?.textContent.trim(),title=card.querySelector(".sample-title")?.textContent.trim(),scent=card.querySelector(".product-card--scent-family")?.textContent.trim();title&&samples.push({title,vendor:vendor||"",image:img?img.src:null,scent:scent||""})}),samples}function initializeAccordionToggle(){const header=document.getElementById("selected-samples-header"),toggle=d
14ocument.getElementById("selected-samples-toggle"),content=document.getElementById("selected-samples-content");header&&toggle&&content&&header.addEventListener("click",()=>{toggle.getAttribute("aria-expanded")==="true"?(content.style.display="none",toggle.setAttribute("aria-expanded","false"),toggle.classList.remove("expanded")):(content.style.display="block",toggle.setAttribute("aria-expanded","true"),toggle.classList.add("expanded"))})}function updateConfirmButtonState(){let confirmButton=document.querySelector(".samples-popup--button.primary");confirmButton||(confirmButton=document.querySelector(".samples-popup--button.secondary"));const selectedCount=document.querySelectorAll(".sample-card.selected").length,maxSamples=parseInt(document.querySelector("[data-sample-quantity]")?.dataset.sampleQuantity)||3;confirmButton&&(selectedCount===maxSamples?(confirmButton.disabled=!1,confirmButton.classList.remove("secondary"),confirmButton.classList.add("primary")):(confirmButton.disabled=!0,confirmButton.classList.remove("primary"),confirmButton.classList.add("secondary")))}samplesButtons.forEach(button=>{button.addEventListener("click",async e=>{if(e.preventDefault(),button.classList.contains("cart--samples-choose-for-me")){await handleChooseForMeDirectly();return}else chooseForMeMode=!1,selectedSamples=[];samplesPopup.classList.add("active"),document.body.style.overflow="hidden",initializeSamplesPopup()})});async function handleChooseForMeDirectly(){selectedSamples=[],chooseForMeMode=!0;let confirmButton=document.querySelector(".samples-popup--button.primary");confirmButton&&(confirmButton.disabled=!0,confirmButton.classList.remove("primary"),confirmButton.classList.add("secondary")),document.querySelectorAll(".sample-card").forEach(card=>{card.classList.remove("selected","disabled");const button=card.querySelector(".sample-select-btn");button&&(button.textContent="Select Sample",button.disabled=!1)});const attributes={"Choose For Me":"true","Sample Choices":""};samplesButtons.forEach(button=>{button.classList.add("button--loading")}),fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes})}).then(response=>response.json()).then(async data=>{console.log("Choose for me cart attributes updated:",attributes),await updateSelectedSamplesAccordion("","true"),samplesButtons.forEach(button=>{button.classList.remove("button--loading")})}).catch(error=>{console.error("Error updating cart attributes:",error)})}function initializeSamplesPopup(){const sampleCards=document.querySelectorAll(".sample-card"),samplesPopup2=document.querySelector(".samples-popup--content");if(samplesPopup2.hasAttribute("data-initialized"))return;samplesPopup2.setAttribute("data-initialized","true");const confirmButton=document.querySelector(".samples-popup--button.primary"),chooseForMeButton=document.querySelector(".samples-popup--button.secondary");confirmButton&&!confirmButton.hasAttribute("data-action")&&confirmButton.setAttribute("data-action","confirm-samples"),chooseForMeButton&&!chooseForMeButton.hasAttribute("data-action")&&chooseForMeButton.setAttribute("data-action","choose-for-me"),sampleCards.forEach(card=>{card.hasAttribute("data-sample-card")||card.setAttribute("data-sample-card","true")}),updateConfirmButtonState()}const closePopup=()=>{samplesPopup.classList.remove("active"),document.body.style.overflow=""};document.addEventListener("click",async e=>{if(e.target.classList.contains("samples-popup--close")){closePopup();return}if(e.target.classList.contains("samples-popup")){closePopup();return}const sampleCard=e.target.closest("[data-sample-card]");if(sampleCard){await handleSampleCardClick(sampleCard);return}const actionButton=e.target.closest("[data-action]");if(actionButton){const action=actionButton.getAttribute("data-action");action==="confirm-samples"?await handleConfirmSamples():action==="choose-for-me"&&await handleChooseForMe();return}});async function handleSampleCardClick(card){const button=card.querySelector(".sample-select-btn");if(card.classList.contains("selected")){card.classList.remove("selected"),button.textContent="Select Sample";const sampleData=extractSampleData(card);selectedSamples=selectedSamples.filter(sample=>sample.vendor!==sampleData.vendor||sample.title!==sampleData.title)}else{const maxSamples=parseInt(document.querySelector("[data-sample-quantity]")?.dataset.sampleQuantity)||3;if(document.querySelectorAll(".sample-card.selected").length>=maxSamples){alert(`You can only select ${maxSamples} samples.`);return}card.classList.add("selected"),button.textContent="Selected",selectedSamples.push(extractSampleData(card))}updateConfirmButtonState(),updateCardStates()}async function handleChooseForMe(){samplesButtons.forEach(button=>{button.classList.add("button--loading")}),closePopup(),chooseForMeMode=!0;let confirmButton=document.querySelector(".samples-popup--button.primary");confirmButton&&(confirmButton.disabled=!0,confirmButton.classList.remove("primary"),confirmButton.classList.add("secondary"));const maxSamples=parseInt(document.querySelector("[data-sample-quantity]")?.dataset.sampleQuantity)||3,sampleCards=document.querySelectorAll(".sample-card"),selected=Array.from(sampleCards).sort(()=>.5-Math.random()).slice(0,maxSamples);selectedSamples=[],sampleCards.forEach(card=>{card.classList.remove("selected","disabled");const button=card.querySelector(".sample-select-btn");button.textContent="Select Sample",button.disabled=!1}),selected.forEach(card=>{selectedSamples.push(extractSampleData(card))});const attributes={"Choose For Me":"true","Sample Choices":""};fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes})}).then(response=>response.json()).then(async data=>{console.log("Choose for me cart attributes updated:",attributes),console.log("Choose for me samples:",selectedSamples),await updateSelectedSamplesAccordion("","true"),closePopup(),samplesButtons.forEach(button=>{button.classList.remove("button--loading")})}).catch(error=>{console.error("Error updating cart attributes:",error),closePopup(),samplesButtons.forEach(button=>{button.classList.remove("button--loading")})})}async function handleConfirmSamples(){samplesButtons.forEach(button=>{button.classList.add("button--loading")}),closePopup();const selectedCards=Array.from(document.querySelectorAll(".sample-card.selected")),maxSamples=parseInt(document.querySelector("[data-sample-quantity]")?.dataset.sampleQuantity)||3;if(selectedCards.length===0||selectedCards.length!==maxSamples)return;const sampleChoices=selectedCards.map(card=>card.querySelector(".sample-title")?.textContent.trim()).join("; ");console.log("handleConfirmSamples called with:",{chooseForMeMode,selectedCardsLe
14ngth:selectedCards.length,sampleChoices});const attributes={"Sample Choices":sampleChoices,"Choose For Me":""};fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes})}).then(response=>response.json()).then(async data=>{console.log("Cart attributes updated:",attributes),await updateSelectedSamplesAccordion(sampleChoices,""),samplesButtons.forEach(button=>{button.classList.remove("button--loading")}),chooseForMeMode=!1}).catch(error=>{console.error("Error updating cart attributes:",error),closePopup()})}function updateCardStates(){const sampleCards=document.querySelectorAll(".sample-card"),currentSelectedCount=document.querySelectorAll(".sample-card.selected").length,maxSamples=parseInt(document.querySelector("[data-sample-quantity]")?.dataset.sampleQuantity)||3;currentSelectedCount>=maxSamples?sampleCards.forEach(card=>{card.classList.contains("selected")||(card.classList.add("disabled"),card.querySelector(".sample-select-btn").disabled=!0)}):sampleCards.forEach(card=>{card.classList.remove("disabled"),card.querySelector(".sample-select-btn").disabled=!1})}document.addEventListener("keydown",e=>{e.key==="Escape"&&samplesPopup.classList.contains("active")&&closePopup()});const checkoutButton=document.querySelector(".cart--checkout-button");if(checkoutButton){let isProcessingFallback=!1;checkoutButton.addEventListener("click",e=>{isProcessingFallback||!chooseForMeMode&&selectedSamples.length===0&&fetch("/cart.js").then(response=>response.json()).then(cart=>{const hasChooseForMe=cart.attributes&&cart.attributes["Choose For Me"],hasSampleChoices=cart.attributes&&cart.attributes["Sample Choices"];!hasChooseForMe&&!hasSampleChoices&&(e.preventDefault(),isProcessingFallback=!0,fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:{"Choose For Me":"true"}})}).then(response=>response.json()).then(()=>{console.log("Added choose for me fallback for checkout"),checkoutButton.closest("form").submit()}).catch(error=>{console.error("Error adding choose for me fallback:",error),checkoutButton.closest("form").submit()}).finally(()=>{isProcessingFallback=!1}))}).catch(error=>{console.error("Error checking cart attributes:",error)})})}const checkValidProductsAndResetSamples=async()=>{try{const cart=await(await fetch("/cart.js")).json(),hasValidProducts=cart.items.some(item=>{const productType=item.product_type,productTitle=item.product_title;return productType!=="Online Masterclass"&&productType!=="Discovery Masterclass"&&productTitle!=="Libertine Samples"&&productType!=="In-Store Masterclass"&&productType!=="event"&&productType!=="Event"&&productType!=="Gift Cards"}),currentChooseForMe=cart.attributes&&cart.attributes["Choose For Me"],currentSampleChoices=cart.attributes&&cart.attributes["Sample Choices"],hasSampleAttributes=currentChooseForMe||currentSampleChoices&&currentSampleChoices.trim()!=="";hasValidProducts||(samplesButtons.forEach(button=>{button.style.display="none"}),hasSampleAttributes&&fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:{"Choose For Me":"","Sample Choices":""}})}).then(response2=>response2.json()).then(async()=>{console.log("Sample attributes reset - no valid products in cart"),selectedSamples=[],chooseForMeMode=!1,await updateSelectedSamplesAccordion()}).catch(error=>{console.error("Error resetting sample attributes:",error)}))}catch(error){console.error("Error fetching cart data:",error)}};window.addEventListener("theme:cart:drawer:updateHtml",async()=>{window.location.pathname==="/cart"&&(await checkValidProductsAndResetSamples(),await initializeCartState())}),window.addEventListener("theme:cart:desktop:updateHtml",async()=>{window.location.pathname==="/cart"&&(await checkValidProductsAndResetSamples(),await initializeCartState())}),window.addEventListener("theme:cart:mobile:updateHtml",async()=>{window.location.pathname==="/cart"&&(await checkValidProductsAndResetSamples(),await initializeCartState())});function updateProductCardVariant(card){const options=card.querySelectorAll(".product-options--option"),addButton=card.querySelector("button.add[data-variant]"),priceElement=card.querySelector("button.add .price");if(!addButton)return;const selectedOptions=[];if(options.forEach(optionContainer=>{const checkedRadio=optionContainer.querySelector('input[type="radio"]:checked');if(checkedRadio){const variantId=checkedRadio.getAttribute("data-option-value-id"),price=checkedRadio.getAttribute("data-price");selectedOptions.push({variantId,price})}}),selectedOptions.length>0){const lastSelected=selectedOptions[selectedOptions.length-1];lastSelected.variantId&&(addButton.setAttribute("data-variant",lastSelected.variantId),addButton.disabled=!1,priceElement&&lastSelected.price&&(priceElement.textContent=lastSelected.price))}}window.updateProductCardVariant=updateProductCardVariant}),document.addEventListener("DOMContentLoaded",function(){const variantInput=document.querySelector('.product-buy-buttons--input[name="id"]');variantInput&&new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(mutation.attributeName==="value"){const newVariantId=variantInput.value;updateAfterpayWidget(newVariantId)}})}).observe(variantInput,{attributes:!0,attributeFilter:["value"]});function updateAfterpayWidget(variantId){const squarePlacement=document.querySelector("square-placement");
14if(squarePlacement){const priceElement=document.querySelector(".product-price--original");if(priceElement){const priceMatch=(priceElement.textContent||priceElement.innerText).match(/[\d,]+\.?\d*/);if(priceMatch){const price=parseFloat(priceMatch[0].replace(",",""));squarePlacement.setAttribute("data-amount",price.toString())}}}}}),document.addEventListener("click",function(e){const trigger=e.target.closest(".product-add-trigger");if(trigger){const productCard=trigger.closest(".product-card--root");if(productCard){let targetCard=productCard.querySelector(".product-card--add");if(!targetCard){const productHandle=productCard.dataset.handle;productHandle&&(targetCard=document.body.querySelector(`.product-card--add[data-product-handle="${productHandle}"]`),targetCard||(targetCard=Array.from(document.body.querySelectorAll(".product-card--add")).find(card=>card.querySelector('[data-variant="46764484624612"]'))))}targetCard&&(!targetCard.dataset.productHandle&&productCard.dataset.handle&&(targetCard.dataset.productHandle=productCard.dataset.handle),document.body.appendChild(targetCard),targetCard.classList.add("active"))}}else{const clickedInsideOptions=e.target.closest(".product-options--container"),clickedAddButton=e.target.closest(".product--add--button");!clickedInsideOptions&&!clickedAddButton&&document.querySelectorAll(".product-card--add.active").forEach(card=>{card.classList.remove("active")})}}),window.addEventListener("theme:cart:productAdded",({detail:variantId})=>{document.querySelectorAll(".product-card--add.active").forEach(card=>{card.classList.remove("active")})});const sourceElement=document.querySelector(".header--root .header--cart"),targetElement=document.querySelector(".drawer--cart-total");if(sourceElement&&targetElement){new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.type==="attributes"&&mutation.attributeName==="data-cart-count"){const newValue=sourceElement.getAttribute("data-cart-count");targetElement.setAttribute("data-cart-count",newValue)}})}).observe(sourceElement,{attributes:!0,attributeFilter:["data-cart-count"]});const initialValue=sourceElement.getAttribute("data-cart-count");initialValue!==null&&targetElement.setAttribute("data-cart-count",initialValue)}function cartMinusRemove(e){if(e.type==="keydown"&&e.key!=="Enter")return;const minus=e.target.closest('quantity-selector[data-type="cart"] .quantity-selector--minus');if(!minus)return;const selector=minus.closest("quantity-selector"),input=selector.querySelector(".quantity-selector--input"),remove=selector.querySelector(".quantity-selector--remove");remove&&parseInt(input.value)===1&&(e.preventDefault(),e.stopPropagation(),remove.click())}document.addEventListener("click",cartMinusRemove,!0),document.addEventListener("keydown",cartMinusRemove,!0),document.addEventListener("click",e=>{if(!e.target.closest("[data-scroll-to-reviews]"))return;const reviewsRow=document.getElementById("product-reviews");if(!reviewsRow)return;e.preventDefault();const toggle=reviewsRow.querySelector(".collapsible-row--toggle");toggle&&toggle.getAttribute("aria-expanded")!=="true"&&toggle.click(),reviewsRow.scrollIntoView({behavior:"smooth",block:"start"})}),document.addEventListener("DOMContentLoaded",function(){const menuContainers=document.querySelectorAll(".x-menu--level-2--container");function setUniformMenuHeight(){let maxHeight=0;menuContainers.forEach(container=>{const wasHidden=container.getAttribute("aria-hidden")==="true";wasHidden&&(container.style.visibility="hidden",container.setAttribute("aria-hidden","false"));const naturalHeight=container.scrollHeight;maxHeight=Math.max(maxHeight,naturalHeight),wasHidden&&(container.style.visibility="",container.setAttribute("aria-hidden","true"))}),menuContainers.forEach(container=>{container.style.setProperty("--natural-height",`${maxHeight}px`)})}setUniformMenuHeight();let resizeTimer;window.addEventListener("resize",function(){clearTimeout(resizeTimer),resizeTimer=setTimeout(setUniformMenuHeight,250)})}),document.addEventListener("click",e=>{e.target.closest('[data-filter], .filter-item, .facet-checkbox, input[type="checkbox"]')&&window.scrollTo(0,0)});const originalFetch=window.fetch;window.fetch=function(...args){return originalFetch.apply(this,args).then(response=>{const clonedResponse=response.clone();if(args[0]&&typeof args[0]=="string"){const url=args[0];(url.includes("filter")||url.includes("search")||url.includes("/search?"))&&clonedResponse.text().then(html=>{const doc=new DOMParser().parseFromString(html,"text/html"),newCountElement=doc.querySelector("[data-products-count]");if(newCountElement){const newCount=parseInt(newCountElement.dataset.productsCount);setTimeout(()=>{displayProductCount(newCount)},150)}else{const productItems=doc.querySelectorAll("[data-product-id], .product-item, .product-card");productItems.length>0&&displayProductCount(productItems.length)}})}return response})};function displayProductCount(count){const countDisplay=document.querySelector(".collection-
14product-count"),countNumber=countDisplay?.querySelector(".count-number");countNumber&&!isNaN(count)&&(countNumber.textContent=count),countDisplay&&!isNaN(count)&&(countDisplay.dataset.productsCount=count)}function updateFilterHeight(){const filterRoot=document.querySelector(".filter--root");if(!filterRoot)return;filterRoot.style.height="auto",filterRoot.offsetHeight;const contentHeight=filterRoot.scrollHeight;filterRoot.style.height=contentHeight+"px"}document.addEventListener("click",e=>{e.target.closest(".filter--toggle")&&(setTimeout(updateFilterHeight,10),setTimeout(updateFilterHeight,350))});const observeFilters=()=>{const filterRoot=document.querySelector(".filter--root");if(!filterRoot)return;new MutationObserver(mutations=>{let shouldUpdate=!1;mutations.forEach(mutation=>{mutation.type==="attributes"&&(mutation.target.classList.contains("filter--menu")||mutation.target.classList.contains("filter--toggle"))&&(shouldUpdate=!0)}),shouldUpdate&&updateFilterHeight()}).observe(filterRoot,{attributes:!0,subtree:!0,attributeFilter:["aria-expanded","data-transition-active","class","style"]})};document.addEventListener("DOMContentLoaded",()=>{const countElement=document.querySelector("[data-products-count]");if(countElement){const totalCount=parseInt(countElement.dataset.productsCount);displayProductCount(totalCount)}setTimeout(()=>{updateFilterHeight(),observeFilters()},500)}),window.addEventListener("theme:navigation:reloaded",()=>{setTimeout(updateFilterHeight,100)}),document.addEventListener("change",e=>{if(e.target.matches('#sort_filter-clone input[type="radio"]')){const selectedValue=e.target.value,mainFilter=document.getElementById("sort_filter");if(mainFilter){const mainRadio=mainFilter.querySelector(`input[value="${selectedValue}"]`);if(mainRadio){const mainLabel=mainFilter.querySelector(`label[for="${mainRadio.id}"]`);mainLabel&&mainLabel.click()}}}});const collectionSubheader=document.querySelector(".collection-subheader"),filterBtn=document.querySelector(".btn-filters"),filterToggleMenu=document.querySelector(".main-collection--filters");filterBtn&&filterToggleMenu&&filterBtn.addEventListener("click",e=>{e.stopPropagation();const sortFiltersElement2=document.querySelector(".sort-filters"),sortBtn2=document.querySelector(".btn-sort");if(sortFiltersElement2&&sortFiltersElement2.classList.remove("show"),sortBtn2&&sortBtn2.classList.remove("active"),filterToggleMenu.classList.toggle("show"),filterBtn.classList.toggle("active"),filterToggleMenu.classList.contains("show")?document.body.style.overflow="hidden":document.body.style.overflow="",collectionSubheader){const offsetPosition=collectionSubheader.getBoundingClientRect().top+window.pageYOffset-90;window.scrollTo({top:offsetPosition,behavior:"auto"})}});const sortBtn=document.querySelector(".btn-sort"),sortFiltersElement=document.querySelector(".sort-filters");sortBtn&&sortFiltersElement&&sortBtn.addEventListener("click",e=>{if(e.stopPropagation(),filterToggleMenu&&filterToggleMenu.classList.remove("show"),filterBtn&&filterBtn.classList.remove("active"),sortFiltersElement.classList.toggle("show"),sortBtn.classList.toggle("active"),sortFiltersElement.classList.contains("show")?document.body.style.overflow="hidden":document.body.style.overflow="",collectionSubheader){const offsetPosition=collectionSubheader.getBoundingClientRect().top+window.pageYOffset-90;window.scrollTo({top:offsetPosition,behavior:"auto"})}}),document.addEventListener("click",e=>{sortFiltersElement&&sortBtn&&!sortFiltersElement.contains(e.target)&&!sortBtn.contains(e.target)&&(sortFiltersElement.classList.remove("show"),sortBtn.classList.remove("active")),filterToggleMenu&&filterBtn&&!filterToggleMenu.contains(e.target)&&!filterBtn.contains(e.target)&&(filterToggleMenu.classList.remove("show"),filterBtn.classList.remove("active")),!document.querySelector(".sort-filters.show")&&!document.querySelector(".main-collection--filters.show")&&(document.body.style.overflow="")}),sortFiltersElement&&sortFiltersElement.addEventListener("click",e=>{e.stopPropagation()}),filterToggleMenu&&filterToggleMenu.addEventListener("click",e=>{e.stopPropagation()}
14),window.addEventListener("theme:cart:updated",({detail:cart})=>{setTimeout(()=>{checkSectionConditionsAndUpdate()},1e3*2)});const renderContents=(parsedState,sectionsToRender)=>{sectionsToRender.forEach(section=>{const sectionElement=section.selector?document.querySelector(section.selector):document.getElementById(section.id);parsedState[section.id]&&(sectionElement.innerHTML=getSectionInnerHTML(parsedState[section.id],section.selector))})},getSectionInnerHTML=(html,selector)=>new DOMParser().parseFromString(html,"text/html").querySelector(selector.slice(0,1)==="#"&&!selector.includes("shopify-section")?`#shopify-section-${selector.slice(1)}`:selector).innerHTML,checkSectionConditionsAndUpdate=()=>{const sectionsConfig=getCartDrawerSectionsToRender();getSectionsAndUpdate(sectionsConfig)},getSectionsAndUpdate=async sectionsConfig=>{const sectionsToFetch=sectionsConfig.flat().map(section=>section.id).join(","),data=await(await fetch(`${window.location.pathname}?sections=${sectionsToFetch}`)).json();renderContents(data,sectionsConfig)},getCartDrawerSectionsToRender=()=>[{id:"cart-drawer",selector:'cart-element.cart--root[data-view="drawer"]'},{id:"cart",selector:'cart-element.cart--root[data-view="desktop"]'}];document.addEventListener("DOMContentLoaded",function(){const searchInput=document.querySelector(".search--textbox"),predictiveSearch=document.querySelector(".predictive-search-default");searchInput&&predictiveSearch&&(searchInput.addEventListener("focus",function(){predictiveSearch.classList.add("active")}),predictiveSearch.addEventListener("mousedown",function(e){e.preventDefault()}),searchInput.addEventListener("blur",function(){setTimeout(function(){predictiveSearch.classList.remove("active")},100)}))});const stickyElement=document.querySelector(".section--collection-subheader");if(stickyElement){let checkSticky2=function(){window.scrollY>=stickyTop?stickyElement.classList.add("is-stuck"):stickyElement.classList.remove("is-stuck")};var checkSticky=checkSticky2;const stickyTop=stickyElement.offsetTop;window.addEventListener("scroll",checkSticky2),checkSticky2()}const viewport=document.querySelector(".layout--viewport");let scrollPosition=0;const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{mutation.attributeName==="data-drawer-status"&&(viewport.getAttribute("data-drawer-status")==="opened"?(scrollPosition=window.scrollY,document.body.style.position="fixed",document.body.style.top=`-${scrollPosition}px`,document.body.style.width="100%"):(document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,scrollPosition)))})});observer.observe(viewport,{attributes:!0});const applyButton=document.querySelector('button[data-type="apply"]');applyButton&&applyButton.addEventListener("click",function(){const mainFilters=document.querySelector(".main-collection--filters");mainFilters&&mainFilters.classList.remove("show");const filterBtn2=document.querySelector(".btn-filters");filterBtn2&&filterBtn2.classList.remove("active"),document.body.style.overflow=""});const productJsonCache=new Map;function fetchProductJson(handle){if(!productJsonCache.has(handle)){const request=fetch(`/products/${handle}.js`).then(response=>response.ok?response.json():null).catch(()=>null);productJsonCache.set(handle,request)}return productJsonCache.get(handle)}function getAddedVariantId(options){const body=options.body;if(typeof body!="string")return null;try{const data=JSON.parse(body);return String(data.items?.[0]?.id??data.id??"")}catch{return new URLSearchParams(body).get("id")}}function formatPrice(cents){const currency=window.Shopify?.currency?.active||"AUD";return new Intl.NumberFormat("en-AU",{style:"currency",currency}).format(cents/100)}function buildPendingItem(product,variant){const imageSrc=variant.featured_image?.src||product.featured_image,element=(tag,className,text)=>{const el=document.createElement(tag);return className&&(el.className=className),text&&(el.textContent=text),el},item=element("div","cart--item cart--item--pending");item.dataset.pendingVariantId=variant.id;
14const image=element("div","cart--item--image");if(imageSrc){const url=new URL(imageSrc,window.location.origin);url.searchParams.set("width","300");const img=element("img");img.src=url.toString(),img.alt=product.title,image.append(img)}const info=element("div","cart--item--info"),title=element("div","cart--item--title");title.append(element("div","h7",product.vendor));const name=element("div","b1",product.title);if(name.dataset.item="block-heading",title.append(name),info.append(title),!product.has_only_default_variant&&variant.public_title){const variantName=element("div","cart--item--variant-name h7",variant.public_title);variantName.dataset.item="nav-text",info.append(variantName)}const actions=element("div","cart--item-actions"),price=element("div","cart--item--price"),total=element("div","cart--item--total money h5",formatPrice(variant.price));return total.dataset.item="nav-text",price.append(total),actions.append(price),item.append(image,info,actions),item}async function showPendingItem(drawerCart,trigger,variantId,isStillAdding){const handle=trigger.closest("[data-handle]")?.dataset.handle||window.location.pathname.match(/\/products\/([^/?#]+)/)?.[1];if(!drawerCart||!handle||!variantId)return;const existing=drawerCart.querySelector(`.cart--item[data-variant-id="${variantId}"]`);if(existing){existing.classList.add("cart--item--pending");return}const product=await fetchProductJson(handle),variant=product?.variants.find(v=>String(v.id)===variantId),body=drawerCart.querySelector(".cart--body");!variant||!body||!isStillAdding()||body.prepend(buildPendingItem(product,variant))}customElements.whenDefined("cart-element").then(()=>{const CartElement=customElements.get("cart-element"),originalAddItems=CartElement.addItems,viewport2=document.querySelector(".layout--viewport");CartElement.addItems=async function(options={},trigger=!1){if(!trigger)return originalAddItems.call(this,options,trigger);const drawerCart=document.querySelector('cart-element[data-view="drawer"]'),wasEmpty=viewport2?.getAttribute("data-cart-empty");let adding=!0;drawerCart?.setAttribute("data-updating","true"),viewport2?.setAttribute("data-cart-empty","false"),window.trigger("theme:drawer:open",{side:"right",view:"cart-drawer",trigger}),showPendingItem(drawerCart,trigger,getAddedVariantId(options),()=>adding);try{await originalAddItems.call(this,options,!1)}catch(error){throw wasEmpty!==null&&viewport2?.setAttribute("data-cart-empty",wasEmpty),window.trigger("theme:drawer:close"),error}finally{adding=!1,drawerCart?.removeAttribute("data-updating"),drawerCart?.querySelectorAll(".cart--item--pending").forEach(item=>{item.dataset.lineNum?item.classList.remove("cart--item--pending"):item.remove()})}}}),document.addEventListener("pointerover",event=>{const handle=event.target.closest?.(".product--add--button button, .product-card--add button.add, .product-buy-buttons--primary, .product-add-trigger")?.closest("[data-handle]")?.dataset.handle;handle&&fetchProductJson(handle)},{passive:!0});
15//# sourceMappingURL=/cdn/shop/t/77/assets/custom.js.map?v=133958872203253189351790770553

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.