1/*! Copyright (c) Safe As Milk. All rights reserved. */class Accordion{#reducedMotionMediaQuery;constructor(el){this.#reducedMotionMediaQuery=window.matchMedia("(prefers-reduced-motion: reduce)"),this.el=el,this.summary=el.querySelector("summary"),this.content=el.querySelector("details-content"),this.animation=null,this.isClosing=!1,this.isExpanding=!1,this.summary.addEventListener("click",(e=>this.onClick(e))),this.elementToScrollTo=document.getElementById(this.el.dataset.scrollToElementIdOnClose)}onClick(e){e.preventDefault(),!this.el.hasAttribute("non-dismissible")&&(this.isClosing||!this.el.open?this.open():(this.isExpanding||this.el.open)&&this.shrink())}shrink(){this.el.dispatchEvent(new CustomEvent("on:accordion:closing")),this.isClosing=!0,this.el.classList.add("is-closing"),this.el.style.overflow="hidden";const startHeight=`${this.el.offsetHeight}px`,endHeight=`${this.summary.offsetHeight}px`;this.elementToScrollTo&&this.elementToScrollTo.scrollIntoView({behavior:"smooth"}),this.animation&&(this.animation.cancel(),this.el.dispatchEvent(new CustomEvent("on:accordion:cancelled"))),this.animation=this.el.animate({height:[startHeight,endHeight]},{duration:this.#reducedMotionMediaQuery.matches?0:300,easing:"ease-in-out"}),this.animation.onfinish=()=>{this.onAnimationFinish(!1),this.el.dispatchEvent(new CustomEvent("on:accordion:closed"))},this.animation.oncancel=()=>{this.isClosing=!1,this.el.classList.remove("is-closing")}}open(){this.el.style.overflow="hidden",this.el.style.height=`${this.el.offsetHeight}px`,this.el.open=!0,window.requestAnimationFrame((()=>this.expand()))}expand(){this.el.dispatchEvent(new CustomEvent("on:accordion:opening")),this.isExpanding=!0,this.el.classList.add("is-opening");const startHeight=`${this.el.offsetHeight}px`,endHeight=`${this.summary.offsetHeight+this.content.offsetHeight}px`;this.animation&&(this.animation.cancel(),this.el.dispatchEvent(new CustomEvent("on:accordion:cancelled"))),this.animation=this.el.animate({height:[startHeight,endHeight]},{duration:this.#reducedMotionMediaQuery.matches?0:300,easing:"ease-in-out"}),this.animation.onfinish=()=>{this.onAnimationFinish(!0),this.el.dispatchEvent(new CustomEvent("on:accordion:opened"))},this.animation.oncancel=()=>{this.isExpanding=!1,this.el.classList.remove("is-opening")}}onAnimationFinish(open){this.el.open=open,this.animation=null,this.isClosing=!1,this.el.classList.remove("is-closing"),this.isExpanding=!1,this.el.classList.remove("is-opening"),this.el.style.height="",this.el.style.overflow=""}}export{Accordion};class AccordionGroup extends HTMLElement{#alwaysOpen;#boundHandleNonDismissible;#boundHandleSingleOpen;#singleOpen;constructor(){super(),this.#boundHandleSingleOpen=this.#handleSingleOpen.bind(this),this.#boundHandleNonDismissible=this.#handleNonDismissible.bind(this)}connectedCallback(){if(this.#singleOpen=this.hasAttribute("single-open"),this.#alwaysOpen=this.hasAttribute("always-open"),this.triggers=this.querySelectorAll("summary"),this.details=this.querySelectorAll("details"),this.accordions={},this.details.length!==0){if(this.details.forEach((el=>{this.accordions[el.id]=new Accordion(el)})),this.#singleOpen){const openAccordions=Array.from(this.querySelectorAll("details[open]"));openAccordions.length>0?openAccordions.forEach(((el,index)=>{index>0&&this.close(el.id)})):this.open(this.details[0].id),this.details.forEach((details=>{details.addEventListener("on:accordion:opening",this.#boundHandleSingleOpen)}))}if(this.#alwaysOpen){let currentlyOpen=this.querySelector("details[open]");currentlyOpen||this.details.length>0&&(this.open(this.details[0].id),[currentlyOpen]=this.details),currentlyOpen&¤tlyOpen.setAttribute("non-dismissible",""),this.details.forEach((details=>{details.addEventListener("on:accordion:opening",this.#boundHandleNonDismissible)}))}window.addEventListener("DOMContentLoaded",(()=>{document.querySelectorAll(Array.from(this.details).map((el=>`a[href="#${el.id}"]`)).toString()).forEach((trigger=>{trigger.addEventListener("click",(e=>{e.preventDefault(),this.open(trigger.getAttribute("href").slice(1));const elementToScrollTo=document.querySelector(trigger.getAttribute("href"));if(elementToScrollTo){let scrollOffset=24;
1const header=document.querySelector(".js-header");header&&header.classList.contains("js-header-sticky")&&(scrollOffset+=header.offsetHeight);const announcement=document.querySelector(".js-section__announcement");announcement&&(scrollOffset+=announcement.offsetHeight),window.scrollTo({top:elementToScrollTo.offsetTop+scrollOffset,behavior:"smooth"})}}))}))}))}}disconnectedCallback(){(this.#singleOpen||this.#alwaysOpen)&&this.details.forEach((details=>{this.#singleOpen&&details.removeEventListener("on:accordion:opening",this.#boundHandleSingleOpen),this.#alwaysOpen&&details.removeEventListener("on:accordion:opening",this.#boundHandleNonDismissible)}))}open(id){this.accordions[id]&&this.accordions[id].open()}close(id){this.accordions[id]&&this.accordions[id].shrink()}#handleSingleOpen(e){const{id}=e.target.closest("details"),currentlyOpen=Array.from(this.querySelectorAll("details[open]"));Array.from(currentlyOpen).filter((el=>el.id!==id)).forEach((el=>{this.close(el.id)}))}#handleNonDismissible(e){Array.from(this.querySelectorAll("details[non-dismissible]")).forEach((el=>{el.removeAttribute("non-dismissible")})),e.target.setAttribute("non-dismissible","")}}customElements.define("accordion-group",AccordionGroup); 2//# sourceMappingURL=/cdn/shop/t/6/assets/accordion-group.js.map?v=94275686039891721051782245198
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.