class t extends HTMLElement{constructor(){super(),this.sourceId=null}show(t){this.sourceId=t,this.classList.remove("hidden")}hide(t){t===this.sourceId&&(this.classList.add("hidden"),this.sourceId=null)}}class e extends HTMLElement{constructor(){super()}connectedCallback(){this.setAttribute("role","radiogroup")}selectOption(t){this.dispatchEvent(new CustomEvent("change",{detail:{id:this.getAttribute("id"),value:t.getAttribute("value"),dataset:t.dataset},bubbles:!0}))}}class n extends HTMLElement{constructor(){super(),this.onSelectBound=this.onSelect.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onSelectBound)}disconnectedCallback(){this.removeEventListener("click",this.onSelectBound)}onSelect(){if(this.hasAttribute("selected"))return;const t=this.closest("radio-button");t&&t.selectOption(this)}}class s extends HTMLElement{static formAssociated=!0;constructor(){super(),this._internals="function"==typeof this.attachInternals?this.attachInternals():null,this._value="",this.trigger=null,this.triggerPlaceholder=null,this.triggerLabel=null,this.onClickTriggerBound=this.onClickTrigger.bind(this),this.onClickOutsideBound=this.onClickOutside.bind(this)}connectedCallback(){this.setAttribute("role","listbox"),this.setAttribute("aria-expanded","false"),this.trigger=this.querySelector("dropdown-trigger"),this.trigger&&(this.triggerPlaceholder=this.trigger.querySelector("dropdown-trigger-placeholder"),this.triggerLabel=this.trigger.querySelector("dropdown-trigger-label"),this.trigger.addEventListener("click",this.onClickTriggerBound)),document.addEventListener("click",this.onClickOutsideBound)}disconnectedCallback(){this.trigger&&this.trigger.removeEventListener("click",this.onClickTriggerBound),document.removeEventListener("click",this.onClickOutsideBound)}formResetCallback(){this.value=""}set value(t){const e=this.hasAttribute("required"),n=t?this.querySelector(`dropdown-option[value="${t}"]`):null;n?(this._value=t,this.showSelectedValue(n.dataset?.label||t),this.setAttribute("value",this._value)):(this._value="",this.showPlaceholder(),this.removeAttribute("value")),this._internals?.setFormValue(this._value),e&&!this._value?this._internals?.setValidity({valueMissing:!0},null):this._internals?.setValidity({})}get value(){return this._value}get name(){return this.getAttribute("name")}get validity(){return this._internals?.validity}showSelectedValue(t){this.triggerPlaceholder&&this.triggerPlaceholder.classList.add("hidden"),this.triggerLabel&&t&&(this.triggerLabel.classList.remove("hidden"),this.triggerLabel.textContent=t)}showPlaceholder(){this.triggerPlaceholder&&this.triggerPlaceholder.classList.remove("hidden"),this.triggerLabel&&(this.triggerLabel.classList.add("hidden"),this.triggerLabel.textContent="")}onClickTrigger(){const t="true"===this.getAttribute("aria-expanded");this.setAttribute("aria-expanded",String(!t))}onClickOutside(t){this.contains(t.target)||this.setAttribute("aria-expanded","false")}selectOption(t){this.value=t.getAttribute("value"),this.dispatchEvent(new CustomEvent("change",{detail:{id:this.getAttribute("id"),value:this.value,dataset:t.dataset},bubbles:!0}))}}class i extends HTMLElement{constructor(){super()}connectedCallback(){this.setAttribute("role","button"),this.setAttribute("aria-haspopup","listbox")}}class o extends HTMLElement{constructor(){super(),this.onSelectBound=this.onSelect.bind(this)}connectedCallback(){this.setAttribute("role","option"),this.addEventListener("click",this.onSelectBound)}disconnectedCallback(){this.removeEventListener("click",this.onSelectBound)}onSelect(){if(this.hasAttribute("selected"))return;const t=this.closest("dropdown-menu");t&&(t.onClickTrigger(),t.selectOption(this))}}class r extends HTMLElement{static formAssociated=!0;constructor(){super(),this._internals="function"==typeof this.attachInternals?this.attachInternals():null,this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","switch"),this.addEventListener("click",this.onClickBound),requestAnimationFrame(()=>{this.updateCheckbox()})}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}formResetCallback(){this.value=!1}get value(){return"true"===this.getAttribute("aria-checked")||null}set value(t){this.setAttribute("aria-checked",Boolean(t)),this.updateCheckbox(),this._internals?.setFormValue(!!t||null)}get name(){return this.getAttribute("name")}get(t=this.value){return{id:this.getAttribute("id"),value:!!t&&this.getAttribute("value"),dataset:this.dataset}}updateCheckbox(){const t=this.querySelector("toggle-button-checkbox");t&&t.update(this)}onClick(t){t.stopPropagation();const e=Boolean(this.value);this.value=!e,this.dispatchChangeEvent(!e)}dispatchChangeEvent(t){const e=this.get(t);this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0}))}}class a extends HTMLElement{update(t=this.closest("toggle-button")){return t.value?this.check():this.uncheck()}check(){const{checkedClass:t,uncheckedClass:e}=this.dataset;t&&this.classList.add(t),e&&this.classList.remove(e)}uncheck(){const{checkedClass:t,uncheckedClass:e}=this.dataset;e&&this.classList.add(e),t&&this.classList.remove(t)}}function c(t,e=0,n=0){const s=Number(t);if(Number.isNaN(s))return e;const i=10**n;return Math.round(s*i)/i}let d=null;const l="range-slider-tooltip";class h extends HTMLElement{constructor(){super(),this.tooltip=null,this.onUpdateBound=this.onUpdate.bind(this),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.create(),this.initTooltip()}disconnectedCallback(){this.destroy()}get(t=!0){const[e,n]=this.noUiSlider.get(t),{range:{min:[s],max:[i]}}=this.noUiSlider.options;return{from:c(e),to:c(n),min:c(s),max:c(i)}}getConfig(){const{min:t,max:e,startMin:n,startMax:s,step:i}=this.dataset;return{min:c(t),max:c(e),startMin:c(n),startMax:c(s),step:c(i,1)}}async create(){const{min:t,max:e,startMin:n,startMax:s,step:i}=this.getConfig(),o=await function(){if(!d){const t=(window.theme.nouislider_asset_url||"").replace("https://cdn.swell.store","/swell-assets");d=import(t).then(t=>t.default)}return d}();this.isConnected&&(o.create(this,{start:[n,s],connect:!0,margin:1,step:i,range:{min:[t],max:[e]}}),this.noUiSlider.on("change",this.onChangeBound),this.noUiSlider.on("update",this.onUpdateBound))}destroy(){this.noUiSlider&&this.noUiSlider.destroy()}initTooltip(){const{startMin:t,startMax:e}=this.dataset;customElements.whenDefined(l).then(()=>{this.tooltip=this.querySelector(l),this.tooltip&&this.tooltip.update(t,e)})}onUpdate([t,e]){if(!this.tooltip)return null;this.tooltip.update(t,e)}onChange([t,e]){this.dispatchEvent(new CustomEvent("change",{detail:{from:t,to:e},bubbles:!0}))}}class u extends HTMLElement{formatValue(t){const{format:e}=this.dataset;return e.replace(/{{.*?}}/,c(t))}format(t,e){const{format:n}=this.dataset;return n?`${this.formatValue(t)} - ${this.formatValue(e)}`:null}update(t,e){this.textContent=this.format(t,e)}}class m extends HTMLElement{constructor(){super(),this.handleIncrementBound=this.handleIncrement.bind(this),this.handleDecrementBound=this.handleDecrement.bind(this),this.handleInputChangeBound=this.handleInputChange.bind(this)}connectedCallback(){this.quantity=this.querySelector("input"),this.increment=this.querySelector("quantity-selector-increment"),this.decrement=this.querySelector("quantity-selector-decrement"),this.quantity&&(this.min=parseInt(this.quantity.min),this.max=parseInt(this.quantity.max),this.step=parseInt(this.quantity.step),this.quantity.addEventListener("change",this.handleInputChangeBound)),this.increment&&this.decrement&&(this.increment.addEventListener("click",this.handleIncrementBound),this.decrement.addEventListener("click",this.handleDecrementBound))}disconnectedCallback(){this.quantity&&this.quantity.removeEventListener("change",this.handleInputChangeBound),this.increment&&this.decrement&&(this.increment.removeEventListener("click",this.handleIncrementBound),this.decrement.removeEventListener("click",this.handleDecrementBound))}get(){return Number(this.quantity.value)}handleIncrement(){if(!this.quantity)return;const t=parseInt(this.quantity.value),e=Math.min(t+this.step,this.max);this.setQuantityValue(e)}handleDecrement(){if(!this.quantity)return;const t=parseInt(this.quantity.value),e=Math.max(t-this.step,this.min);this.setQuantityValue(e)}handleInputChange(){const t=parseInt(this.quantity.value),e=parseInt(this.quantity.min)||0,n=parseInt(this.quantity.max)||1/0;!Number.isFinite(t)||tn&&this.setQuantityValue(n)}setQuantityValue(t){t!==this.get()&&(this.quantity.value=t.toString(),this.quantity.setAttribute("value",t),this.dispatchChangeEvent())}dispatchChangeEvent(){const t=new CustomEvent("change",{detail:{value:this.get()},bubbles:!0});this.dispatchEvent(t)}}class p extends HTMLElement{constructor(){super(),this.triggers=document.querySelectorAll("copy-to-clipboard"),this.init()}init(){this.triggers.forEach(t=>{t.addEventListener("click",e=>{const n=t.getAttribute("data-copy-content");n&&navigator.clipboard.writeText(n).then(()=>{console.log("Content copied to clipboard:",n)}).catch(t=>{console.error("Failed to copy content:",t)})})})}}class g extends CustomEvent{constructor(t,e){super(t,{bubbles:!0,detail:e})}}class v extends g{static type="filter-input-change";constructor(t){super(v.type,t)}}class b extends g{static type="filters-clear";constructor(t){super(b.type,t)}}class f extends g{static type="pagination-link-click";constructor(t){super(f.type,t)}}class y extends g{static type="pagination-change";constructor(t){super(y.type,t)}}class C extends g{static type="cart-item-quantity-change";constructor(t){super(C.type,t)}}class w extends g{static type="cart-item-remove";constructor(t){super(w.type,t)}}class E extends g{static type="product-quantity-change";constructor(t){super(E.type,t)}}class k extends g{static type="product-option-change";constructor(t){super(k.type,t)}}class B extends g{static type="product-option-giftcard-send-toggle";constructor(t){super(B.type,t)}}class L extends g{static type="product-purchase-option-change";constructor(t){super(L.type,t)}}class x extends g{static type="product-sort-change";constructor(t){super(x.type,t)}}class S extends g{static type="product-filters-change";constructor(t){super(S.type,t)}}class I extends g{static type="product-filter-toggle";constructor(t){super(I.type,t)}}class A extends g{static type="address-modal-submit";constructor(t){super(A.type,t)}}class T extends g{static type="address-remove-modal-submit";constructor(t){super(T.type,t)}}class q extends g{static type="subscription-modal-submit";constructor(t){super(q.type,t)}}class M extends g{static type="search-input-change";constructor(t){super(M.type,t)}}class D extends HTMLElement{constructor(){super(),this.input=null,this.formElement=null,this.debounceTimeout=null,this.onKeydownBound=this.onKeydown.bind(this),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.input=this.querySelector("input"),this.formElement=this.closest("#search-form"),this.input&&(this.input.addEventListener("keydown",this.onKeydownBound),this.input.addEventListener("input",this.onChangeBound))}disconnectedCallback(){this.input&&(this.input.removeEventListener("keydown",this.onKeydownBound),this.input.removeEventListener("input",this.onChangeBound))}get value(){return this.input?this.input.value:""}clear(){this.input&&this.input.value&&(this.input.value="",this.input.dispatchEvent(new Event("input",{bubbles:!0})))}onKeydown(t){"Enter"===t.key&&t.preventDefault()}onChange(t){t.stopPropagation(),window.htmx&&this.formElement&&htmx.trigger(this.formElement,"htmx:abort"),clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(()=>this.dispatchSearchInputChangeEvent(),300)}dispatchSearchInputChangeEvent(){this.dispatchEvent(new M)}}class _ extends HTMLElement{constructor(){super(),this.searchInput=null,this.backdropOverlay=null,this.onBackdropClickBound=this.onBackdropClick.bind(this),this.onDocumentKeyDownBound=this.onDocumentKeyDown.bind(this)}connectedCallback(){this.searchInput=this.querySelector("search-input"),this.backdropOverlay=document.querySelector("backdrop-root"),this.backdropOverlay&&this.backdropOverlay.addEventListener("click",this.onBackdropClickBound),document.addEventListener("keydown",this.onDocumentKeyDownBound)}disconnectedCallback(){this.backdropOverlay&&this.backdropOverlay.removeEventListener("click",this.onBackdropClickBound),document.removeEventListener("keydown",this.onDocumentKeyDownBound)}toggle(){return"true"===this.getAttribute("aria-hidden")?this.open():this.close()}open(){this.classList.remove("hidden"),this.setAttribute("aria-hidden","false"),this.backdropOverlay&&this.backdropOverlay.show("search-dialog")}close(){this.classList.add("hidden"),this.setAttribute("aria-hidden","true"),this.searchInput&&"function"==typeof this.searchInput.clear&&this.searchInput.clear(),this.backdropOverlay&&this.backdropOverlay.hide("search-dialog")}onBackdropClick(){"false"===this.getAttribute("aria-hidden")&&this.close()}onDocumentKeyDown(t){"Escape"===t.key&&"false"===this.getAttribute("aria-hidden")&&this.close()}}class H extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=document.querySelector("search-dialog");e&&e.toggle()}}class P extends HTMLElement{constructor(){super()}connectedCallback(){this.setAttribute("role","presentation")}}class O extends HTMLElement{constructor(){super()}connectedCallback(){if(this.setAttribute("role","listitem"),this.hasAttribute("aria-expanded")){const t="true"===this.getAttribute("aria-expanded").trim();this.setAttribute("aria-expanded",t?"true":"false")}else this.setAttribute("aria-expanded","false")}toggle(){const t="true"===this.getAttribute("aria-expanded"),e=this.querySelector("accordion-content");e&&(e.toggle(t),this.setAttribute("aria-expanded",String(!t)))}}class F extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.preventDefault();const e=this.closest("accordion-item");e&&e.toggle(this)}}class j extends HTMLElement{constructor(){super()}connectedCallback(){this.setAttribute("role","region"),this.classList.add("overflow-hidden","transition-[height]","duration-300","ease-in-out","h-0","hidden");const t=this.closest("accordion-item");if(!t)return;"true"===t.getAttribute("aria-expanded")&&this.open()}toggle(t){return t?this.close():this.open()}open(){this.style.display="block";const t=this.scrollHeight;this.style.height="0px",requestAnimationFrame(()=>{this.style.height=`${t}px`}),this.addEventListener("transitionend",()=>{this.style.height="auto"},{once:!0})}close(){const t=this.scrollHeight;this.style.height=`${t}px`,requestAnimationFrame(()=>{this.style.height="0px"}),this.addEventListener("transitionend",()=>{this.style.display="none"},{once:!0})}}class N extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){const{currentPage:t}=this.dataset;this.currentPage=t,this.addEventListener(f.type,this.onChangeBound)}disconnectedCallback(){this.removeEventListener(f.type,this.onChangeBound)}get(){return{page:this.currentPage||1}}onChange(t){t.stopPropagation();const{page:e}=t.detail;this.currentPage=e,this.dispatchPaginationChangeEvent()}dispatchPaginationChangeEvent(t){const e=new y({page:t});this.dispatchEvent(e)}}class U extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.getAttribute("href")||"";let n=null;try{n=new URL(e,window.location.origin).searchParams.get("page")}catch{const t=e.split("?")[1]||"";n=new URLSearchParams(t).get("page")}this.dispatchPaginationLinkClickEvent(n)}dispatchPaginationLinkClickEvent(t){const e=new f({page:t});this.dispatchEvent(e)}}class R extends HTMLElement{constructor(){super(),this.backdropOverlay=null}connectedCallback(){this.classList.add("fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","z-50","hidden"),this.backdropOverlay=document.querySelector("backdrop-root")}disconnectedCallback(){}open(){this.classList.remove("hidden"),this.backdropOverlay&&this.backdropOverlay.show("modal")}close(){this.classList.add("hidden"),this.backdropOverlay&&this.backdropOverlay.hide("modal")}}function V(t){return null!=t}function $(t,e=""){return Object.entries(t).reduce((t,[n,s])=>{if(!V(s))return t;const i=e?`${e}[${n}]`:n;if(s instanceof Set)t[i]=Array.from(s);else if(Array.isArray(s))s.forEach((e,n)=>{if(V(e)){const s=$(e,`${i}[${n}]`);Object.assign(t,s)}});else if("object"==typeof s){const e=$(s,i);Object.assign(t,e)}else t[i]=String(s);return t},{})}function X(t,e){Object.entries(e).forEach(([e,n])=>{t.detail.parameters[e]=n})}function z(t){if(!t)return null;const e=new FormData(t);return Object.fromEntries(e.entries())}function Q(t,e){if(!t||!e)return!1;const n=z(t),s=Object.keys(n);return s.length!==Object.keys(e).length||s.some(t=>n[t]!==e[t])}function K(t){if(!t)return!1;for(const e of t.elements)if("validity"in e&&!e.validity.valid)return!1;return!0}class Y extends R{constructor(){super(),this.statesByCountry=new Map,this.modalTitle=null,this.form=null,this.updateAddressIdInput=null,this.initialFormData=null,this.submitButton=null,this.countryDropdown=null,this.stateInput=null,this.stateDropdown=null,this.stateOptions=null,this.setAsDefaultCheckbox=null,this.onChangeBound=this.onChange.bind(this),this.closeBound=this.close.bind(this)}connectedCallback(){super.connectedCallback(),this.setElements(),this.addEventListener("input",this.onChangeBound),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("input",this.onChangeBound),this.removeEventListener("change",this.onChangeBound)}setElements(){this.modalTitle=this.querySelector("address-modal-title"),this.form=this.querySelector("form"),this.updateAddressIdInput=this.querySelector('input[name="update_address_id"]'),this.setAsDefaultCheckbox=this.querySelector('toggle-button[name="address[default]"]'),this.submitButton=this.querySelector("address-modal-submit-button"),this.countryDropdown=this.querySelector("dropdown-menu#address-country-dropdown"),this.stateInput=this.querySelector("input#address-province-input"),this.stateDropdown=this.querySelector("dropdown-menu#address-province-dropdown"),this.stateDropdown&&(this.stateOptions=this.stateDropdown.querySelectorAll("dropdown-option"))}open(t,e,n){super.open(),this.reset(),e&&(this.populate(e,n),this.updateAddressIdInput.value=e),this.initialFormData=z(this.form),this.setTitle(t)}close(){super.close()}getAddressFieldFromElement(t){if(!t.name)return;const e=t.name.match(/address\[(.+?)\]/)?.[1];return e}populate(t,e){const n=document.getElementById(`address-data-${t}`);if(!n)return;const s=JSON.parse(n.textContent);for(const t of this.form.elements){if(!t.name||t.disabled)continue;if("address[default]"===t.name){e&&(t.value=!0,t.setAttribute("disabled",""));continue}const n=this.getAddressFieldFromElement(t);if(!n)continue;const i=s[n];i&&("country"===n?(this.onChangeCountry(i.name),t.value=i.name):t.value=i)}}reset(){this.form.reset(),this.updateAddressIdInput.value=null,this.setAsDefaultCheckbox.removeAttribute("disabled"),this.submitButton.setAttribute("disabled","")}setTitle(t){t&&this.modalTitle&&(this.modalTitle.textContent=t)}getCountry(t){return window.theme.geo.countries.find(e=>e.id===t)}getCountryStates(t){if(this.statesByCountry.has(t))return this.statesByCountry.get(t);const e=window.theme.geo.states.filter(e=>e.country===t),n=new Map;return e.forEach(t=>{n.set(t.id,t)}),this.statesByCountry.set(t,n),n}showStateInput(){this.stateInput.disabled=!1,this.stateInput.value="",this.stateInput.classList.remove("hidden"),this.stateDropdown.disabled=!0,this.stateDropdown.removeAttribute("required"),this.stateDropdown.classList.add("hidden")}showStateDropdown(){this.stateInput.disabled=!0,this.stateInput.classList.add("hidden"),this.stateDropdown.disabled=!1,this.stateDropdown.setAttribute("required",""),this.stateDropdown.classList.remove("hidden")}showCountyStates(t){const e=this.getCountryStates(t);if(!(e.size>0))return this.showStateInput();this.showStateDropdown();let n=null;this.stateOptions.forEach(t=>{const s=t.getAttribute("value");e.has(s)?(t.classList.remove("hidden"),n||(n=s)):t.classList.add("hidden")}),n&&(this.stateDropdown.value=n)}onChange(t){t.stopPropagation();"address-country"===t.target.id&&this.onChangeCountry(t.detail.value),Q(this.form,this.initialFormData)&&K(this.form)?this.submitButton.removeAttribute("disabled"):this.submitButton.setAttribute("disabled","")}onChangeCountry(t){this.getCountry(t)&&this.showCountyStates(t)}}class G extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const{modalTitle:e}=this.dataset,n=document.querySelector("address-modal");n&&n.open(e)}}class J extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const{modalTitle:e,addressId:n,isDefaultAddress:s}=this.dataset,i="true"===s,o=document.querySelector("address-modal");o&&o.open(e,n,i)}}class W extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("address-modal");e&&e.close()}}class Z extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("address-modal");e&&(this.dispatchEvent(new A),e.close())}}class tt extends R{constructor(){super(),this.deleteAddressIdInput=null}connectedCallback(){super.connectedCallback(),this.deleteAddressIdInput=this.querySelector('input[name="delete_address_id"]')}disconnectedCallback(){super.disconnectedCallback()}open(t){super.open(),this.deleteAddressIdInput.value=t}close(){super.close()}}class et extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const{addressId:e}=this.dataset,n=document.querySelector("address-remove-modal");n&&n.open(e)}}class nt extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("address-remove-modal");e&&e.close()}}class st extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("address-remove-modal");e&&(this.dispatchEvent(new T),e.close())}}class it extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){const t=this.querySelector("toggle-button");if(!t)return{};const{name:e}=this.dataset,{value:n}=t.get();return n?{[e]:n}:{}}onChange(t){t.stopPropagation();const e=new v;this.dispatchEvent(e)}}class ot extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){const{name:t}=this.dataset,e=this.querySelectorAll("toggle-button");return Array.from(e).reduce((e,n)=>{const{value:s}=n.get();return s&&(e[t]||=new Set,e[t].add(s)),e},{})}onChange(t){t.stopPropagation();const e=new v;this.dispatchEvent(e)}}class rt extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){const t=this.querySelector("range-slider");if(!t)return{};const{name:e}=this.dataset,{from:n,to:s,min:i,max:o}=t.get();return n!==i||s!==o?{[`${e}[gte]`]:n,[`${e}[lte]`]:s}:{}}onChange(t){t.stopPropagation();const e=new v;this.dispatchEvent(e)}}class at extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=new b;this.dispatchEvent(e)}}new class{constructor(){this.showMegaMenu=this.showMegaMenu.bind(this),this.hideMegaMenu=this.hideMegaMenu.bind(this),this.keepMenuVisible=this.keepMenuVisible.bind(this),this.init()}init(){this.setupEventListeners(),window.megaMenuManager=this}setupEventListeners(){document.querySelectorAll("a[data-mega-menu]").forEach(t=>{const e=t.getAttribute("data-mega-menu"),n=document.getElementById(e);n&&(t.addEventListener("mouseenter",()=>{n.classList.add("active")}),t.addEventListener("mouseleave",()=>{setTimeout(()=>{n.matches(":hover")||t.matches(":hover")||n.classList.remove("active")},50)}),n.addEventListener("mouseenter",()=>{n.classList.add("active")}),n.addEventListener("mouseleave",()=>{setTimeout(()=>{n.matches(":hover")||t.matches(":hover")||n.classList.remove("active")},50)}))})}showMegaMenu(t){const e=document.getElementById(t);e&&e.classList.add("active")}keepMenuVisible(t){const e=document.getElementById(t);e&&e.classList.add("active")}hideMegaMenu(t){const e=document.getElementById(t);e&&setTimeout(()=>{const n=document.querySelector(`a[data-mega-menu="${t}"]`);e.matches(":hover")||n&&n.matches(":hover")||e.classList.remove("active")},50)}};class ct extends HTMLElement{connectedCallback(){window.megaMenuManager&&window.megaMenuManager.init()}}new class{constructor(){this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this),this.handleClickOutside=this.handleClickOutside.bind(this),this.currentHoveredItem=null,this.activeSubmenu=null,this.hoverIntentInstances=new Map,this.menuItems=new Map,this.initializedItems=new Set,this.menuCheckStartTime=Date.now(),this.isInitialized=!1,window.cascadingMenuManager=this,this.checkForMenuItems(),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isInitialized||this.checkForMenuItems()})}checkForMenuItems(){document.querySelectorAll(".cascading-menu-item.has-children").length>0?(this.setupEventListeners(),this.setupClickOutsideHandler(),this.isInitialized=!0):Date.now()-this.menuCheckStartTime<1e4&&setTimeout(()=>this.checkForMenuItems(),100)}setupEventListeners(){const t=document.querySelectorAll(".cascading-menu-item.has-children");"function"==typeof window.hoverintent?t.forEach(t=>{if(this.initializedItems.has(t))return;const e=t.querySelector(".cascading-submenu");if(!e)return;this.menuItems.set(t,e),e.classList.remove("show");const n=window.hoverintent(t,function(n){this.activeSubmenu&&this.activeSubmenu!==e&&this.hideMenu(this.activeSubmenu),this.showMenu(e),this.activeSubmenu=e,this.currentHoveredItem=t}.bind(this),function(t){this.activeSubmenu!==e||t.relatedTarget&&(t.relatedTarget.closest(".cascading-submenu")||t.relatedTarget.closest(".cascading-menu-item.has-children"))||(this.hideMenu(e),this.activeSubmenu=null,this.currentHoveredItem=null)}.bind(this)).options({sensitivity:4,interval:50,timeout:200});this.hoverIntentInstances.set(t,n),this.initializedItems.add(t)}):setTimeout(()=>this.checkForMenuItems(),100)}setupClickOutsideHandler(){document.addEventListener("click",this.handleClickOutside)}handleClickOutside(t){document.querySelectorAll(".cascading-submenu").forEach(e=>{e.contains(t.target)||(this.hideMenu(e),this.activeSubmenu=null,this.currentHoveredItem=null)})}showMenu(t){t&&t.classList.add("show")}hideMenu(t){t&&t.classList.remove("show")}hideAllSubmenus(){this.menuItems.forEach(t=>{this.hideMenu(t)}),this.activeSubmenu=null,this.currentHoveredItem=null}destroy(){document.removeEventListener("click",this.handleClickOutside)}isMovingToSubmenu(t){const e=t.closest(".cascading-submenu"),n=t.closest(".cascading-menu-item.has-children");return e?this.activeSubmenu===e:!!n&&(this.currentHoveredItem===n||this.activeSubmenu&&this.menuItems.get(n)===this.activeSubmenu)}};class dt extends HTMLElement{connectedCallback(){window.cascadingMenuManager&&window.cascadingMenuManager.checkForMenuItems()}disconnectedCallback(){window.cascadingMenuManager&&window.cascadingMenuManager.destroy()}}const lt=Object.freeze({RIGHT:"right",LEFT:"left",BOTTOM:"bottom"}),ht=lt.RIGHT;class ut extends HTMLElement{constructor(){super(),this.side=ht,this.backdropOverlay=null,this.touchStartX=0,this.touchStartY=0,this.touchEndX=0,this.touchEndY=0,this.swipeThreshold=100,this.openBound=this.open.bind(this),this.closeBound=this.close.bind(this),this.onDocumentKeyDownBound=this.onDocumentKeyDown.bind(this),this.handleTouchStartBound=this.handleTouchStart.bind(this),this.handleTouchMoveBound=this.handleTouchMove.bind(this),this.handleTouchEndBound=this.handleTouchEnd.bind(this)}connectedCallback(){const{side:t=ht}=this.dataset;this.side=t,this.setAttribute("role","dialog"),this.setAttribute("aria-hidden","true"),this.setAttribute("aria-modal","true"),this.setAttribute("aria-tabindex","-1"),this.toggleAttribute("inert",!0),this.classList.add("fixed","z-[5001]","h-screen","overflow-y-auto","transition-transform","duration-300"),this.isRightDrawer()?this.classList.add("top-0","right-0"):this.isLeftDrawer()?this.classList.add("top-0","left-0"):this.isBottomDrawer()&&this.classList.add("bottom-0","left-0"),this.backdropOverlay=document.querySelector("backdrop-root"),this.backdropOverlay&&this.backdropOverlay.addEventListener("click",this.closeBound),document.addEventListener("keydown",this.onDocumentKeyDownBound),this.addEventListener("touchstart",this.handleTouchStartBound),this.addEventListener("touchmove",this.handleTouchMoveBound),this.addEventListener("touchend",this.handleTouchEndBound)}disconnectedCallback(){this.backdropOverlay&&this.backdropOverlay.removeEventListener("click",this.closeBound),document.removeEventListener("keydown",this.onDocumentKeyDownBound),this.removeEventListener("touchstart",this.handleTouchStartBound),this.removeEventListener("touchmove",this.handleTouchMoveBound),this.removeEventListener("touchend",this.handleTouchEndBound)}isRightDrawer(){return this.side===lt.RIGHT}isLeftDrawer(){return this.side===lt.LEFT}isBottomDrawer(){return this.side===lt.BOTTOM}getTranslateClass(){switch(this.side){case lt.LEFT:return"-translate-x-full";case lt.BOTTOM:return"translate-y-full";case lt.RIGHT:default:return"translate-x-full"}}toggle(){return"true"===this.getAttribute("aria-hidden").trim()?this.open():this.close()}open(){const t=this.getTranslateClass();this.setAttribute("aria-hidden","false"),this.removeAttribute("inert"),this.classList.remove(t),this.backdropOverlay&&this.backdropOverlay.show("drawer-panel")}close(){const t=this.getTranslateClass();this.setAttribute("aria-hidden","true"),this.toggleAttribute("inert",!0),this.classList.add(t),this.backdropOverlay&&this.backdropOverlay.hide("drawer-panel")}onDocumentKeyDown(t){"Escape"===t.key&&"false"===this.getAttribute("aria-hidden")&&this.closeBound()}handleTouchStart(t){this.isBottomDrawer()?this.touchStartY=t.touches[0].clientY:this.touchStartX=t.touches[0].clientX}handleTouchMove(t){if("true"!==this.getAttribute("aria-hidden"))if(this.isBottomDrawer()){const e=t.touches[0].clientY,n=this.touchStartY-e;n<0&&(t.preventDefault(),this.style.transform=`translateY(${Math.abs(n)}px)`)}else{const e=this.isRightDrawer(),n=t.touches[0].clientX,s=this.touchStartX-n;if(e&&s<0||!e&&s>0){t.preventDefault();const n=e?Math.abs(s):-s;this.style.transform=`translateX(${n}px)`}}}handleTouchEnd(t){if("true"!==this.getAttribute("aria-hidden"))if(this.style.transform="",this.isBottomDrawer()){const e=t.changedTouches[0].clientY;-(this.touchStartY-e)>this.swipeThreshold&&this.closeBound()}else{const e=this.isRightDrawer(),n=t.changedTouches[0].clientX,s=this.touchStartX-n;(e&&s<-this.swipeThreshold||!e&&s>this.swipeThreshold)&&this.closeBound()}}}class mt extends ut{constructor(){super(),this.trigger=null,this.menuStack=[],this.openBound=this.open.bind(this),this.closeBound=this.close.bind(this),this.handleSubmenuTriggerBound=this.handleSubmenuTrigger.bind(this),this.handleBackButtonBound=this.handleBackButton.bind(this)}connectedCallback(){super.connectedCallback(),this.trigger=document.querySelector("[data-drawer-menu-trigger]"),this.closeButton=this.querySelector("[data-drawer-close]"),this.menuContent=this.querySelector("[data-menu-content]"),this.menuTitle=this.querySelector("[data-header] h2"),this.backButton=this.querySelector("[data-back-button]"),this.trigger&&this.trigger.addEventListener("click",this.openBound),this.closeButton&&this.closeButton.addEventListener("click",this.closeBound),this.backButton&&this.backButton.addEventListener("click",this.handleBackButtonBound),this.setupSubmenuListeners()}disconnectedCallback(){super.disconnectedCallback(),this.trigger&&this.trigger.removeEventListener("click",this.openBound),this.closeButton&&this.closeButton.removeEventListener("click",this.closeBound),this.backButton&&this.backButton.removeEventListener("click",this.handleBackButtonBound),this.removeSubmenuListeners()}setupSubmenuListeners(){this.querySelectorAll("[data-submenu-trigger]").forEach(t=>{t.addEventListener("click",this.handleSubmenuTriggerBound)})}removeSubmenuListeners(){this.querySelectorAll("[data-submenu-trigger]").forEach(t=>{t.removeEventListener("click",this.handleSubmenuTriggerBound)})}handleSubmenuTrigger(t){const e=t.currentTarget.closest("li").querySelector("[data-submenu-content]");if(!e||!this.menuContent)return;const n=this.menuContent.innerHTML;this.menuStack.push({content:n,title:this.menuTitle.textContent});const s=this.querySelector("[data-header-left]"),i=s.querySelector("h2"),o=s.querySelector("[data-back-button]");s&&i&&o&&(i.classList.add("hidden"),o.classList.remove("hidden"));const r=e.content.cloneNode(!0);this.menuContent.innerHTML="",this.menuContent.appendChild(r),this.setupSubmenuListeners()}handleBackButton(){if(!this.menuStack.length)return;const t=this.menuStack.pop(),e=this.querySelector("[data-header-left]"),n=e.querySelector("h2"),s=e.querySelector("[data-back-button]");e&&n&&s&&(0===this.menuStack.length?(n.classList.remove("hidden"),s.classList.add("hidden")):(n.classList.add("hidden"),s.classList.remove("hidden"))),this.menuContent.innerHTML=t.content,this.setupSubmenuListeners()}open(){super.open()}close(){super.close()}}var pt=new class{listeners=new Map;on(t,e){let n=this.listeners.get(t);return n||(n=new Set,this.listeners.set(t,n)),n.add(e),()=>{n.delete(e)}}off(t,e){let n=this.listeners.get(t);n&&n.delete(e)}emit(t,e){const n=this.listeners.get(t);if(n)for(const t of n)t(e)}};const gt="/cart/add",vt="/cart/update",bt="/cart?xhr=1",ft="/cart/clear",yt={async addToCart(t,e,n,s=1){try{const i={product_id:t,quantity:s,options:e};n&&n.type&&"standard"!==n.type&&(i.purchase_option=n);const o=await fetch(gt,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify(i)});if(!o.ok)throw new Error("Network response was not ok");const r=await o.json();pt.emit("cart-item-add",r);const a=r&&"number"==typeof r.item_count&&r.item_count>0?r.item_count:null,c=r&&"number"==typeof r.quantity?r.quantity:s||1,d=a??c;if(null===a&&window.Sentry)try{window.Sentry.captureMessage("cart_add_response_no_item_count_using_fallback_qty",{level:"info",tags:{component:"cart-api",issue:"post-add-count-missing"},extra:{fallbackQty:c}})}catch(t){}return pt.emit("cart-item-count-update",d),window.writeCartCount&&window.writeCartCount(d),window.cartJitPrefetch&&window.cartJitPrefetch(),r}catch(t){throw console.error("Error adding product to cart:",t),t}},async getCart(){try{const t=await fetch(bt,{method:"GET",headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});if(!t.ok)throw new Error("Network response was not ok");const e=t.headers.get("content-type")||"";if(e.indexOf("json")<0)throw new Error("cart non-json: "+e);const n=await t.json();return console.log("Cart:",n),n}catch(t){throw console.error("Error getting cart:",t),t}},async getCartAfterWrite(){const t=[150,300];let e=null,n=null;try{if(e=await this.getCart(),e&&Array.isArray(e.items)&&e.items.length>0)return e}catch(t){n=t}let s=1;for(const i of t){console.info("[cart-after-write] "+(n?"threw '"+n.message+"'":"empty")+" on attempt "+s+", retrying in "+i+"ms"),await new Promise(t=>setTimeout(t,i)),s++;try{e=await this.getCart(),n=null}catch(t){n=t;continue}if(e&&Array.isArray(e.items)&&e.items.length>0){try{window.Sentry&&window.Sentry.addBreadcrumb&&window.Sentry.addBreadcrumb({category:"cart-api",level:"info",message:"cart retry rescued empty-after-add",data:{issue:"session-rotation-race",attemptsUsed:s,totalDelayMs:t.slice(0,s-1).reduce((t,e)=>t+e,0)}})}catch(t){}return e}}if(n)throw n;return e},async clearCart(){try{const t=await fetch(ft,{method:"POST",headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});if(!t.ok)throw new Error("Network response was not ok");const e=await t.json();return console.log("Cart cleared:",e),window.writeCartCount&&window.writeCartCount(0),window.cartJitPrefetch&&window.cartJitPrefetch(),e}catch(t){}},async updateCart(t){pt.emit("cart-update-before",t);try{const e=await fetch(vt,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify(t)});if(!e.ok)throw new Error("Network response was not ok");pt.emit("cart-update-after",t);const n=await e.json();return pt.emit("cart-item-count-update",n.item_quantity),window.writeCartCount&&window.writeCartCount(n.item_quantity),window.cartJitPrefetch&&window.cartJitPrefetch(),console.log("Cart updated:",n),n}catch(t){throw console.error("Error updating cart:",t),t}}},Ct="scheme-1",wt="flex items-center justify-center font-display text-label-large h-48 pl-24 pr-24 break-words rounded-[0.6rem]",Et={en:{title:"Cart",empty:"Your cart is empty",continueShopping:"Continue shopping",estimatedTotal:"Estimated total",taxesNote:"Taxes, discounts and shipping calculated at checkout.",viewCart:"View cart",checkout:"Checkout",remove:"Remove"},fr:{title:"Votre panier",empty:"Votre panier est vide",continueShopping:"Continuer vos achats",estimatedTotal:"Total estimé",taxesNote:"Taxes, remises et frais de livraison calculés à la caisse.",viewCart:"Voir le panier",checkout:"Passer à la caisse",remove:"Remove"}},kt={CAD:"CA$",USD:"$"};function Bt(t){return String(null==t?"":t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function Lt(t,e){const n=e&&e.iso_code||"CAD";return(kt[n]||e&&e.symbol||"$")+Number(t||0).toLocaleString("en",{minimumFractionDigits:2,maximumFractionDigits:2})}function xt(t){const e=t&&t.image;if(!e)return'
';const n=Bt(t.title);return'
'+n+'
'}function St(t){const e=Array.isArray(t.options_with_values)?t.options_with_values:[];if(0===e.length)return"";const n=e.filter(t=>t&&null!=t.value&&""!==t.value).map((t,e)=>(e>0?"/ ":"")+Bt(t.value)).join("");return n?''+n+"":""}function It(t,e){const n=Number(t.quantity||1);return''}function At(t,e,n,s){return''+xt(t)+'
'+Bt(t.title)+"
"+St(t)+function(t,e){const n=Number(t.discount_each||0),s=Number(t.price||0);return'
'+(n>0?''+Lt(s,e)+""+Lt(s-n,e):Lt(s,e))+"
"}(t,n)+'
'+It(t,e)+''+s.remove+"
"}function Tt(t,e="en"){const n=Et[e]||Et.en,s=t&&Array.isArray(t.items)?t.items:[],i=!t||!0===t["empty?"]||0===s.length,o=t&&t.currency,r=function(t,e){const n=null!=e?"("+e+")":"";return'
'+t.title+""+n+'
\n\n\n
'}(n,i?null:t.item_count);let a;if(i)a='
'+function(t){return'"}(n)+"
";else{a='
'+s.map((t,e)=>At(t,e+1,o,n)).join("")+"
"}const c=i?"":function(t,e,n){const s=Number(t.total_discount||0)>0?''+Lt(t.items_subtotal_price,e)+""+Lt(t.total_price,e):Lt(t.items_subtotal_price,e);return'
'+n.estimatedTotal+""+s+'
'+n.taxesNote+'
"}(t,o,n);return r+a+c}const qt="scheme-1",Mt="flex items-center justify-center font-display text-label-large h-48 pl-24 pr-24 break-words rounded-[0.6rem] whitespace-nowrap btn-primary-"+qt+" w-full",Dt={en:{subtotal:"Subtotal",taxesNote:"Taxes, discounts and shipping calculated at checkout.",checkout:"Continue to checkout",empty:"Your cart is empty",continueShopping:"Continue shopping",remove:"Remove"},fr:{subtotal:"Sous-total",taxesNote:"Taxes, remises et frais de livraison calculés à la caisse.",checkout:"Continuer vers la caisse",empty:"Votre panier est vide",continueShopping:"Continuer vos achats",remove:"Remove"}};function _t(){try{const t=(t=>{const e=String(t||"").slice(0,2).toLowerCase();return"fr"===e?"fr":"en"===e?"en":null})(document.documentElement.getAttribute("lang"));if(t)return t;if(/^\/fr(\/|$)/.test(location.pathname))return"fr";if(/^\/en(\/|$)/.test(location.pathname))return"en"}catch(t){}return"en"}function Ht(t,e){try{("undefined"!=typeof window&&window.__aswCartDebug||"undefined"!=typeof location&&location.search.indexOf("cart_debug=1")>-1||"undefined"!=typeof localStorage&&"1"===localStorage.getItem("asw-cart-debug"))&&console.debug("[cart-page]",t,null==e?"":e)}catch(t){}}function Pt(t,e,n){const s=t.items,i=s.map((t,s)=>function(t,e,n,s){const i=Number(t.discount_each||0),o=Number(t.price||0),r=i>0?''+Lt(o,n)+""+Lt(o-i,n)+"":Lt(o,n);return''+xt(t)+'
'+Bt(t.title)+''+r+"
"+St(t)+'
'+It(t,e)+''+s.remove+"
"}(t,s+1,e,n)).join(""),o=Number(t.total_discount||0)>0?''+Lt(t.items_subtotal_price,e)+""+Lt(t.total_price,e):Lt(t.items_subtotal_price,e);return'
'+i+'
'+n.subtotal+""+o+'
'+n.taxesNote+'
'+n.checkout+"
"}function Ot(t,e="en"){const n=Dt[e]||Dt.en,s=t&&Array.isArray(t.items)?t.items:[],i=!t||!0===t["empty?"]||0===s.length,o=t&&t.currency;return i?function(t){return'
'+t.empty+''+t.continueShopping+"
"}(n):Pt(t,o,n)}class Ft extends HTMLElement{constructor(){super(),this.subscriptions=[],this.onChangeItemQuantityBound=this.onChangeItemQuantity.bind(this),this.onRemoveItemBound=this.onRemoveItem.bind(this),this.onBeforeUpdateCartBound=this.onBeforeUpdateCart.bind(this),this.onAfterUpdateCartBound=this.onAfterUpdateCart.bind(this)}connectedCallback(){this.addEventListener(C.type,this.onChangeItemQuantityBound),this.addEventListener(w.type,this.onRemoveItemBound),this.subscriptions.push(pt.on("cart-update-before",this.onBeforeUpdateCartBound),pt.on("cart-update-after",this.onAfterUpdateCartBound))}disconnectedCallback(){this.removeEventListener(C.type,this.onChangeItemQuantityBound),this.removeEventListener(w.type,this.onRemoveItemBound),this.subscriptions.forEach(t=>t()),this.subscriptions=[]}disableItem(t){const e=this.querySelector(`cart-item[data-index="${t}"]`);e&&e.classList.add("disabled")}onBeforeUpdateCart(t){const{line:e}=t;void 0!==e&&this.disableItem(e)}onAfterUpdateCart(t){this.safeUpdateCartContent()}async onChangeItemQuantity(t){t.stopPropagation();const{line:e,quantity:n}=t.detail;await yt.updateCart({line:e,quantity:n})}async onRemoveItem(t){t.stopPropagation();const{line:e}=t.detail;await yt.updateCart({line:e,quantity:0})}async updateCartContent(){const t="undefined"!=typeof performance&&performance.now?performance.now():Date.now(),e=await yt.getCartAfterWrite(),n=Array.isArray(e&&e.items)?e.items:[],s=!e||!0===e["empty?"]||0===n.length,i=this.querySelector("[data-cart-body]");document.documentElement.setAttribute("data-cart-state",s?"empty":"hydrated"),i&&(i.innerHTML=Ot(e,_t()),i.setAttribute("data-cart-render-source","get-cart-json"),i.setAttribute("data-cart-item-count",String(n.length))),this.setTitleCount(e,s);const o="undefined"!=typeof performance&&performance.now?performance.now():Date.now();Ht("page re-render",{items:n.length,empty:s,ms:Math.round(o-t)})}async safeUpdateCartContent(){try{await this.updateCartContent()}catch(t){const e=String(t&&(t.message||t)||"");try{window.Sentry&&window.Sentry.addBreadcrumb&&window.Sentry.addBreadcrumb({category:"cart-page",level:"warning",message:"cart page re-render failed: "+(t&&t.name||"Error"),data:{issue:"after-update-fetch-error",error:e.slice(0,140)}})}catch(t){}window.swCapture&&window.swCapture("cart-page update failed",{level:"warning",tags:{component:"cart-page",issue:"after-update-fetch-error"}}),Ht("re-render error",e)}}setTitleCount(t,e){try{const n=this.firstElementChild;let s=this.querySelector("[data-cart-count]");if(e)return void(s&&s.remove());!s&&n&&(s=document.createElement("span"),s.setAttribute("data-cart-count",""),n.appendChild(s)),s&&(s.textContent="("+(t&&null!=t.item_count?t.item_count:"")+")")}catch(t){}}}function jt(){try{const t=(t=>{const e=String(t||"").slice(0,2).toLowerCase();return"fr"===e?"fr":"en"===e?"en":null})(document.documentElement.getAttribute("lang"));if(t)return t;if(/^\/fr(\/|$)/.test(location.pathname))return"fr";if(/^\/en(\/|$)/.test(location.pathname))return"en"}catch(t){}return"en"}class Nt extends ut{constructor(){super(),this.trigger=null,this.drawerTriggers=[],this.subscriptions=[],this.openBound=this.open.bind(this),this.closeBound=this.close.bind(this),this.onAddItemBound=this.onAddItem.bind(this),this.onChangeItemQuantityBound=this.onChangeItemQuantity.bind(this),this.onRemoveItemBound=this.onRemoveItem.bind(this),this.onBeforeUpdateCartBound=this.onBeforeUpdateCart.bind(this),this.onAfterUpdateCartBound=this.onAfterUpdateCart.bind(this),this._navigating=!1,this._onPageHide=()=>{this._navigating=!0}}async connectedCallback(){super.connectedCallback(),this.trigger=document.querySelector("cart-trigger"),this.trigger&&this.trigger.addEventListener("click",this.openBound),window.addEventListener("pagehide",this._onPageHide),this.connectDrawerTriggers(),this.addEventListener(C.type,this.onChangeItemQuantityBound),this.addEventListener(w.type,this.onRemoveItemBound),this.subscriptions.push(pt.on("cart-item-add",this.onAddItemBound),pt.on("cart-update-before",this.onBeforeUpdateCartBound),pt.on("cart-update-after",this.onAfterUpdateCartBound)),"undefined"!=typeof document&&document.cookie.includes("swell-data")&&await this.safeUpdateCartDrawerContent("hydration-fetch-error")}disconnectedCallback(){super.disconnectedCallback(),this.trigger&&this.trigger.removeEventListener("click",this.openBound),window.removeEventListener("pagehide",this._onPageHide),this.disconnectDrawerTriggers(),this.removeEventListener(C.type,this.onChangeItemQuantityBound),this.removeEventListener(w.type,this.onRemoveItemBound),this.subscriptions.forEach(t=>t()),this.subscriptions=[]}connectDrawerTriggers(){this.drawerTriggers=document.querySelectorAll("cart-drawer-trigger"),this.drawerTriggers.forEach(t=>{t.addEventListener("click",this.closeBound)})}disconnectDrawerTriggers(){this.drawerTriggers.forEach(t=>{t.removeEventListener("click",this.closeBound)})}open(){super.open()}close(){super.close()}disableItem(t){const e=this.querySelector(`cart-item[data-index="${t}"]`);e&&e.classList.add("disabled")}onBeforeUpdateCart(t){const{line:e}=t;void 0!==e&&this.disableItem(e)}onAfterUpdateCart(){this.safeUpdateCartDrawerContent("after-update-fetch-error")}onAddItem(t){t&&Array.isArray(t.items)?(this.renderCartObject(t,"add-item-render"),this.open()):this.safeUpdateCartDrawerContent("add-item-fetch-error").then(()=>this.open())}async onChangeItemQuantity(t){t.stopPropagation();const{line:e,quantity:n}=t.detail;await yt.updateCart({line:e,quantity:n})}async onRemoveItem(t){t.stopPropagation();const{line:e}=t.detail;await yt.updateCart({line:e,quantity:0})}async safeUpdateCartDrawerContent(t){try{await this.updateCartDrawerContent(t)}catch(e){const n=String(e&&(e.message||e)||"");if(this._navigating&&(e&&"AbortError"===e.name||/Failed to fetch|Load failed|Network request failed/i.test(n)))return;try{window.Sentry&&window.Sentry.addBreadcrumb&&window.Sentry.addBreadcrumb({category:"cart-drawer",level:"warning",message:"drawer hydrate failed: "+(e&&e.name||"Error"),data:{issue:t,error:n.slice(0,140)}})}catch(t){}this.reportEmptyDrawerIfCartHasItems(t),window.swCapture&&window.swCapture("cart-drawer update failed",{level:"warning",tags:{component:"cart-drawer",issue:t}})}}async fetchCartJson(){const t=async()=>{const t=new AbortController,e=setTimeout(()=>t.abort(),6e3);try{const e=await fetch("/cart",{signal:t.signal,headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw new Error("Failed to fetch cart: "+e.status);return await e.json()}finally{clearTimeout(e)}};try{return await t()}catch(e){if(this._navigating)throw e;return await new Promise(t=>setTimeout(t,300)),await t()}}_captureEmptyDrawer(t,e){try{if(!(t&&Array.isArray(t.items)&&t.items.length>0))return;if(this.querySelector("cart-item, [data-index]"))return;if(!window.Sentry)return;window.Sentry.captureMessage("cart-drawer empty despite cart having "+t.items.length+" items",{level:"error",tags:{component:"cart-drawer",issue:e},extra:{cartItemCount:t.items.length,cartItemQuantity:t.item_quantity,cartSubtotal:t.sub_total}})}catch(t){}}reportEmptyDrawerIfCartHasItems(t){try{if(this.querySelector("cart-item, [data-index]"))return;if(!window.Sentry)return;var e=this;yt.getCart().then(function(n){e._captureEmptyDrawer(n,t)}).catch(function(){})}catch(t){}}async updateCartDrawerContent(t){const e="undefined"!=typeof performance&&performance.now?performance.now():Date.now(),n=await this.fetchCartJson();this.renderCartObject(n,t,e)}renderCartObject(t,e,n){this.innerHTML=Tt(t,jt()),this.disconnectDrawerTriggers(),this.connectDrawerTriggers();try{if(window.Sentry&&window.Sentry.addBreadcrumb){const s="undefined"!=typeof performance&&performance.now?performance.now():Date.now();window.Sentry.addBreadcrumb({category:"cart-drawer",level:"info",message:"drawer rendered",data:{issue:e,ms:null!=n?Math.round(s-n):void 0,items:Array.isArray(t&&t.items)?t.items.length:0}})}}catch(t){}this._captureEmptyDrawer(t,e||"empty-after-add")}}class Ut extends HTMLElement{constructor(){super(),this.unsubscribeItemCountUpdate=null,this.onUpdateItemCountBound=this.onUpdateItemCount.bind(this)}async connectedCallback(){if(this.unsubscribeItemCountUpdate=pt.on("cart-item-count-update",this.onUpdateItemCountBound),"undefined"!=typeof document&&document.cookie.includes("swell-data"))try{const t=await yt.getCart();t&&"number"==typeof t.item_quantity&&this.onUpdateItemCount(t.item_quantity)}catch(t){const e=String(t&&(t.message||t))||"";!(t&&"AbortError"===t.name||/Failed to fetch|Load failed|Network request failed/i.test(e))&&window.swCapture&&window.swCapture("cart-count hydration failed",{level:"warning",tags:{component:"cart-count",issue:"hydration-fetch-error"}})}}disconnectedCallback(){this.unsubscribeItemCountUpdate&&this.unsubscribeItemCountUpdate()}onUpdateItemCount(t){this.textContent=t}}class Rt extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){const t=this.querySelector("quantity-selector");return t?.get()||1}onChange(t){t.stopPropagation(),this.dispatchChangeEvent()}dispatchChangeEvent(){const t=new C({line:this.dataset.index,quantity:this.get()});this.dispatchEvent(t)}}class Vt extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation(),this.dispatchClickEvent()}dispatchClickEvent(){const t=new w({line:this.dataset.index});this.dispatchEvent(t)}}class $t extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){const t=this.querySelector("quantity-selector");return t?.get()||1}onChange(t){t.stopPropagation(),this.dispatchChangeEvent()}dispatchChangeEvent(){const t=new E({value:this.get()});this.dispatchEvent(t)}}class Xt extends HTMLElement{get(t=!0){const e=this.querySelectorAll("product-option-select"),n=this.querySelectorAll("product-option-toggle"),s=this.querySelectorAll("product-option-text"),i=this.querySelectorAll("product-option-giftcard");return[...Array.from(e),...Array.from(n),...Array.from(s),...Array.from(i)].reduce((e,n)=>{const s=n.get(),i=t?n.validate():n.valid();return Array.isArray(s)?e.options.push(...s):e.options.push(s),i||(e.valid=!1),e},{options:[],valid:!0})}getValueIds(){const t=this.querySelectorAll("product-option-select"),e=this.querySelectorAll("product-option-toggle"),n=this.querySelectorAll("product-option-giftcard");return[...Array.from(t),...Array.from(e),...Array.from(n)].reduce((t,e)=>(e.valueId&&t.push(e.valueId),t),[])}}class zt extends HTMLElement{constructor(){super(),this.optionId=null,this.value="",this.valueId=null,this.error=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.optionId=this.dataset.optionId,this.error=this.querySelector("option-error");const t=this.querySelector("[selected]");t&&(this.value=t.getAttribute("value"),this.valueId=t.dataset.valueId),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return{id:this.optionId,value:this.value,value_id:this.valueId}}valid(){return Boolean(this.value)&&Boolean(this.valueId)}validate(){return this.valid()?(this.hideError(),!0):(this.showError(),!1)}showError(){this.error&&this.error.classList.remove("hidden")}hideError(){this.error&&this.error.classList.add("hidden")}onChange(t){t.stopPropagation();const{value:e,dataset:{valueId:n}}=t.detail;this.value=e,this.valueId=n,this.dispatchOptionChangeEvent()}dispatchOptionChangeEvent(){const t=this.get(),e=new k(t);this.dispatchEvent(e)}}class Qt extends HTMLElement{constructor(){super(),this.optionId=null,this.value="",this.valueId=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.optionId=this.dataset.optionId;const t=this.querySelector("toggle-button[aria-checked='true']");t&&(this.value=t.getAttribute("value"),this.valueId=t.dataset.valueId),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return{id:this.optionId,value:this.value,value_id:this.valueId}}valid(){return!0}validate(){return!0}onChange(t){t.stopPropagation();const{value:e,dataset:{valueId:n}}=t.detail;this.value=e||"",this.valueId=e?n:null,this.dispatchOptionChangeEvent()}dispatchOptionChangeEvent(){const t=this.get(),e=new k(t);this.dispatchEvent(e)}}class Kt extends HTMLElement{constructor(){super(),this.optionId=null,this.value="",this.required=!1,this.error=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.optionId=this.dataset.optionId,this.required=this.hasAttribute("required"),this.error=this.querySelector("option-error"),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return{id:this.optionId,value:this.value}}valid(){return!this.required||Boolean(this.value)}validate(){return this.valid()?(this.hideError(),!0):(this.showError(),!1)}showError(){this.error&&this.error.classList.remove("hidden")}hideError(){this.error&&this.error.classList.add("hidden")}onChange(t){t.stopPropagation();const{value:e}=t.target;this.value=e.trim(),this.validate()}}class Yt extends HTMLElement{constructor(){super(),this.optionId=null,this.name="",this.value="",this.valueId=null,this.error=null,this.send=null,this.sendFields=null,this.sendEmail=null,this.sendNote=null,this.onChangeBound=this.onChange.bind(this),this.onToggleGiftcardSendBound=this.onToggleGiftcardSend.bind(this)}connectedCallback(){const{optionId:t,optionName:e}=this.dataset;this.optionId=t,this.name=e,this.send=this.querySelector("giftcard-send"),this.sendFields=this.querySelector("giftcard-send-fields"),this.sendEmail=this.querySelector("giftcard-send-email"),this.sendNote=this.querySelector("giftcard-send-note"),this.error=this.querySelector("option-error");const n=this.querySelector("[selected]");n&&(this.value=n.getAttribute("value"),this.valueId=n.dataset.valueId),this.addEventListener("change",this.onChangeBound),this.addEventListener(B.type,this.onToggleGiftcardSendBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound),this.removeEventListener(B.type,this.onToggleGiftcardSendBound)}get(){return[{id:this.optionId,name:this.name,value:this.value,value_id:this.valueId},...this.getSendValues()]}valid(){return this.isOptionValueValid()&&this.areSendValuesValid()}validate(){return this.valid()?(this.hideError(),!0):(this.isOptionValueValid()||this.showError(),this.validateSendValues(),!1)}isSendEnabled(){return Boolean(this.send?.get())}getSendValues(){if(!this.isSendEnabled())return[];const t=[];if(this.sendEmail){const e=this.sendEmail.get();t.push({id:"send_email",value:e})}if(this.sendNote){const e=this.sendNote.get();t.push({id:"send_note",value:e})}return t}isOptionValueValid(){return Boolean(this.value)&&Boolean(this.valueId)}areSendValuesValid(){return!this.isSendEnabled()||Boolean(this.sendEmail?.valid())}validateSendValues(){this.isSendEnabled()&&this.sendEmail?.validate()}showError(){this.error&&this.error.classList.remove("hidden")}hideError(){this.error&&this.error.classList.add("hidden")}onToggleGiftcardSend(t){if(t.stopPropagation(),!this.sendFields||!this.send)return;const{value:e}=t.detail;if(this.send.classList.add("pointer-events-none"),e){this.sendFields.classList.remove("hidden");const t=this.sendFields.scrollHeight;this.sendFields.style.height="0px",requestAnimationFrame(()=>{this.sendFields.style.height=`${t}px`}),this.sendFields.addEventListener("transitionend",()=>{this.sendFields.style.height="auto",this.send.classList.remove("pointer-events-none")},{once:!0})}else{this.sendEmail?.clear(),this.sendNote?.clear();const t=this.sendFields.scrollHeight;this.sendFields.style.height=`${t}px`,requestAnimationFrame(()=>{this.sendFields.style.height="0px"}),this.sendFields.addEventListener("transitionend",()=>{this.sendFields.classList.add("hidden"),this.send.classList.remove("pointer-events-none")},{once:!0})}}onChange(t){if(t.stopPropagation(),"giftcard-options-dropdown"!==t.detail?.id)return;const{value:e,dataset:{valueId:n}}=t.detail;this.value=e,this.valueId=n,this.dispatchOptionChangeEvent()}dispatchOptionChangeEvent(){const t=this.get(),e=new k(t);this.dispatchEvent(e)}}class Gt extends HTMLElement{constructor(){super(),this.value=!1,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return this.value}onChange(t){t.stopPropagation();const{value:e}=t.detail;this.value=Boolean(e),this.dispatchGiftcardSendToggleEvent()}dispatchGiftcardSendToggleEvent(){const t=new B({value:this.get()});this.dispatchEvent(t)}}class Jt extends HTMLElement{constructor(){super(),this.input=null,this.error=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.input=this.querySelector('input[type="email"]'),this.error=this.querySelector("giftcard-send-email-error"),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return this.input?.value}clear(){this.input&&(this.input.value="",this.hideError())}valid(){return this.get()&&this.input.validity.valid}validate(){return this.valid()?(this.hideError(),!0):(this.showError(),!1)}showError(){this.error&&this.error.classList.remove("hidden")}hideError(){this.error&&this.error.classList.add("hidden")}onChange(t){t.stopPropagation(),this.validate()}}class Wt extends HTMLElement{constructor(){super(),this.input=null,this.sendNoteCount=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){this.input=this.querySelector("textarea"),this.sendNoteCount=this.querySelector("giftcard-send-note-count"),this.addEventListener("input",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("input",this.onChangeBound)}get(){return this.input?.value}clear(){this.input&&(this.input.value="",this.updateSendNoteCount(""))}updateSendNoteCount(t){this.sendNoteCount&&this.sendNoteCount.update(t)}onChange(t){t.stopPropagation();const e=this.get();this.updateSendNoteCount(e)}}class Zt extends HTMLElement{update(t){this.textContent=t.length}}const te=Object.freeze({type:"standard"});class ee extends HTMLElement{get(){const t=this.getSelected();return t?.get()||te}getSelected(){return[this.querySelector("product-purchase-option-standard"),this.querySelector("product-purchase-option-subscription")].find(t=>t?.hasAttribute("selected"))}}class ne extends HTMLElement{constructor(){super(),this.type="standard",this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}get(){return{type:this.type}}onClick(t){t.stopPropagation(),this.hasAttribute("selected")||this.dispatchPurchaseOptionChangeEvent()}dispatchPurchaseOptionChangeEvent(){const t=this.get(),e=new L(t);this.dispatchEvent(e)}}class se extends HTMLElement{constructor(){super(),this.type="subscription",this.planId=null,this.onChangeBound=this.onChange.bind(this)}connectedCallback(){const t=this.querySelector("[selected]");t&&(this.planId=t.getAttribute("value")),this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return{type:this.type,plan_id:this.planId}}onChange(t){t.stopPropagation();const{value:e}=t.detail;this.planId=e,this.dispatchPurchaseOptionChangeEvent()}dispatchPurchaseOptionChangeEvent(){const t=this.get(),e=new L(t);this.dispatchEvent(e)}}class ie extends HTMLElement{constructor(){super(),this.buyButton=null,this.onChangeProductBound=this.onChangeProduct.bind(this),this.onAddItemBound=this.onAddItem.bind(this)}connectedCallback(){this.addEventListener("htmx:configRequest",this.onChangeProductBound),this.buyButton=this.querySelector("button#buy-button"),this.buyButton&&this.buyButton.addEventListener("click",this.onAddItemBound)}disconnectedCallback(){this.removeEventListener("htmx:configRequest",this.onChangeProductBound),this.buyButton&&this.buyButton.removeEventListener("click",this.onAddItemBound)}onChangeProduct(t){!function(t,e){X(t,$(e))}(t,this.getData(t,!1))}getData(t,e=!0){const{options:n,option_values:s,selected_option_value:i}=this.getOptions(t,e)||{};return{options:n,option_values:s,selected_option_value:i,purchase_option:this.getPurchaseOption(t),quantity:this.getQuantity(t)}}getQuantity(t){const{triggeringEvent:e}=t.detail;if(e instanceof E)return e.detail.value;const n=this.querySelector("product-quantity");return n?.get()||1}getOptions(t,e=!0){const n=this.querySelector("product-options");if(!n)return;const{options:s,valid:i}=n.get(e);if(e&&!i)throw new Error("Product options are invalid");const{triggeringEvent:o}=t.detail,r={options:s,option_values:n.getValueIds().join(",")};return o instanceof k&&(r.selected_option_value=o.detail.value_id),r}getPurchaseOption(t){const{triggeringEvent:e}=t.detail;if(e instanceof L)return e.detail;const n=this.querySelector("product-purchase-options");return n?.get()||te}async onAddItem(t){t.preventDefault();try{const{productId:e}=this.dataset,{options:n,purchase_option:s,quantity:i}=this.getData(t);this.toggleBuyButtonLoader(!0),await yt.addToCart(e,n,s,i),this.verifyCartIntegrity(e,i)}catch(t){console.error(t.message)}finally{this.toggleBuyButtonLoader(!1)}}async verifyCartIntegrity(t,e){if(window.swCapture)try{const n=await yt.getCartAfterWrite();n&&Array.isArray(n.items)&&0!==n.items.length||window.swCapture("add-to-cart succeeded but cart is empty after",{level:"error",tags:{component:"product-section",issue:"silent-add-failure"},extra:{productId:t,quantity:e,cartItemQuantity:n&&n.item_quantity}})}catch(t){}}toggleBuyButtonLoader(t){const e=this.buyButton.querySelector("#buy-button-text"),n=this.buyButton.querySelector('[role="status"]');t?(e.classList.add("hidden"),n.classList.replace("hidden","flex")):(e.classList.remove("hidden"),n.classList.replace("flex","hidden"))}}function oe(t){return""!==t}function re(t){const e=function(t){const e=new URLSearchParams;for(const[n,s]of Object.entries(t))if(Array.isArray(s))for(const t of s)e.append(n,t);else oe(s)&&e.set(n,s);return e}(t),n=e.size>0?`${location.pathname}?${e.toString()}`:location.pathname;history.replaceState(null,"",n)}class ae extends HTMLElement{constructor(){super(),this.onChangeBound=this.onChange.bind(this),this.onToggleFiltersBound=this.onToggleFilters.bind(this)}connectedCallback(){this.addEventListener("htmx:configRequest",this.onChangeBound),this.addEventListener(I.type,this.onToggleFiltersBound)}disconnectedCallback(){this.removeEventListener("htmx:configRequest",this.onChangeBound),this.removeEventListener(I.type,this.onToggleFiltersBound)}getFilterData(t){const{triggeringEvent:e}=t.detail;if(e instanceof b)return{};const n=this.querySelector("product-filters");return n?n.get():{}}getSortData(){const t=this.querySelector("product-sort");return t?t.get():{}}getPaginationData(t){const{triggeringEvent:e}=t.detail;if(!(e instanceof y))return{};const n=this.querySelector("pagination-nav");return n?n.get():{}}getCategoryData(){const t=this.querySelector("#category-id");if(!t)return{};const e=t.getAttribute("data-category-id");return e&&"all"!==e?{category:e}:{}}getData(t){return{...this.getFilterData(t),...this.getPaginationData(t),...this.getSortData(),...this.getCategoryData()}}onChange(t){const e=$(this.getData(t));X(t,e),re(e)}onToggleFilters(){const t=this.querySelector("product-filters");t&&t.toggle()}}class ce extends HTMLElement{constructor(){super(),this.value="",this.onChangeBound=this.onChange.bind(this)}connectedCallback(){const{value:t}=this.dataset;this.value=t,this.addEventListener("change",this.onChangeBound)}disconnectedCallback(){this.removeEventListener("change",this.onChangeBound)}get(){return{sort_by:this.value}}onChange(t){t.stopPropagation();const{detail:{value:e}}=t;this.value=e,this.dispatchProductSortChangeEvent()}dispatchProductSortChangeEvent(){const t=this.get(),e=new x(t);this.dispatchEvent(e)}}class de extends HTMLElement{constructor(){super(),this.onFilterInputChangeBound=this.onFilterInputChange.bind(this)}connectedCallback(){this.addEventListener(v.type,this.onFilterInputChangeBound)}disconnectedCallback(){this.removeEventListener(v.type,this.onFilterInputChangeBound)}isMobile(){return window.matchMedia("(max-width: 639px)").matches}getFiltersContainer(){return this.isMobile()?this.querySelector("product-filter-drawer"):this.querySelector("product-filter-sidebar")}get(){const t=this.getFiltersContainer();if(!t)return{};const e=t.querySelectorAll("filter-input-boolean"),n=t.querySelectorAll("filter-input-list"),s=t.querySelectorAll("filter-input-price-range");return[...Array.from(e),...Array.from(n),...Array.from(s)].reduce((t,e)=>{const n=e.get();return n&&Object.assign(t,n),t},{})}toggle(){const t=this.getFiltersContainer();t&&t.toggle()}abortHtmxRequest(){const{htmxForm:t}=this.dataset;t&&window.htmx&&htmx.trigger(`#${t}`,"htmx:abort")}onFilterInputChange(t){t.stopPropagation(),this.abortHtmxRequest(),this.dispatchProductFiltersChangeEvent()}dispatchProductFiltersChangeEvent(){const t=new S;this.dispatchEvent(t)}}class le extends HTMLElement{toggle(){const t="true"===this.getAttribute("aria-hidden").trim();this.setAttribute("aria-hidden",String(!t))}}class he extends ut{}class ue extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation(),this.dispatchProductFilterToggleEvent()}dispatchProductFilterToggleEvent(){const t=new I;this.dispatchEvent(t)}}class me extends HTMLElement{constructor(){super(),this.drawer=null,this.onChangeTabBound=this.onChangeTab.bind(this)}connectedCallback(){window.addEventListener("hashchange",this.onChangeTabBound),this.onChangeTab()}disconnectedCallback(){window.removeEventListener("hashchange",this.onChangeTabBound)}getDrawer(){return this.drawer=this.drawer||this.querySelector("account-nav-drawer"),this.drawer}toggleDrawer(){const t=this.getDrawer();t&&t.toggle()}scrollToTop(){setTimeout(function(){window.scrollTo(0,0)},0)}onChangeTab(){const{hash:t}=window.location,e=this.querySelector(`.account-nav-item[href="${t}"]`);if(!e)return window.location.hash="orders",void this.scrollToTop();const n=this.querySelector("account-nav-trigger-text");n&&(n.textContent=e.textContent);const s=this.querySelectorAll(".account-nav-item"),i=document.querySelectorAll(".account-tab");s.forEach(e=>{e.getAttribute("href")===t?e.classList.add("active"):e.classList.remove("active")}),i.forEach(e=>{`#${e.id}`===t?e.classList.remove("hidden"):e.classList.add("hidden")}),this.scrollToTop()}}class pe extends ut{constructor(){super(),this.onClickNavItemBound=this.onClickNavItem.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.onClickNavItemBound)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this.onClickNavItemBound)}onClickNavItem(t){const e=t.target.closest(".account-nav-item");e&&this.contains(e)&&this.close()}}class ge extends HTMLElement{constructor(){super(),this.nav=null,this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.addEventListener("click",this.onClickBound)}getNav(){return this.nav=this.nav||this.closest("account-nav"),this.nav}onClick(t){t.stopPropagation();this.getNav().toggleDrawer()}}const ve=Object.freeze(["customer[first_name]","customer[last_name]","customer[email]","customer[phone]"]);class be extends HTMLElement{constructor(){super(),this.form=null,this.submitButton=null,this.initialFormData=null,this.onInputChangeBound=this.onInputChange.bind(this)}connectedCallback(){this.form=this.querySelector("form"),this.submitButton=this.querySelector('button[type="submit"]'),this.initialFormData=z(this.form),this.addEventListener("input",this.onInputChangeBound)}disconnectedCallback(){this.removeEventListener("input",this.onInputChangeBound)}onInputChange(t){t.stopPropagation(),Q(this.form,ve,this.initialFormData)&&K(this.form)?this.submitButton.disabled=!1:this.submitButton.disabled=!0}}class fe extends R{}class ye extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("account-subscription-modal");e&&e.close()}}class Ce extends HTMLElement{constructor(){super(),this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.setAttribute("role","button"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=this.closest("account-subscription-modal");e&&(this.dispatchEvent(new q),e.close())}}class we extends HTMLElement{constructor(){super(),this.modalId=null,this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.modalId=this.getAttribute("aria-controls"),this.setAttribute("role","button"),this.setAttribute("aria-haspopup","dialog"),this.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.removeEventListener("click",this.onClickBound)}onClick(t){t.stopPropagation();const e=document.getElementById(this.modalId);e&&e.open()}}class Ee extends HTMLElement{constructor(){super(),this.form=null,this.submitButton=null,this.initialFormData=null,this.onInputChangeBound=this.onInputChange.bind(this)}connectedCallback(){this.form=this.querySelector("form"),this.submitButton=this.querySelector('button[type="submit"]'),this.initialFormData=z(this.form),this.addEventListener("input",this.onInputChangeBound)}disconnectedCallback(){this.removeEventListener("input",this.onInputChangeBound),this.form=null,this.submitButton=null,this.initialFormData=null}onInputChange(t){t.stopPropagation(),Q(this.form,this.initialFormData)&&K(this.form)?this.submitButton.disabled=!1:this.submitButton.disabled=!0}}const ke=Object.freeze(["customer[password]"]);class Be extends HTMLElement{constructor(){super(),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={},this.onInputChangeBound=this.onInputChange.bind(this),this.onBeforeSwapBound=this.onBeforeSwap.bind(this),this.onAfterSwapBound=this.onAfterSwap.bind(this)}connectedCallback(){this.form=this.querySelector("form"),this.submitButton=this.querySelector('button[type="submit"]'),this.initialFormData=z(this.form),this.addEventListener("input",this.onInputChangeBound),this.addEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.addEventListener("htmx:afterSwap",this.onAfterSwapBound)}disconnectedCallback(){this.removeEventListener("input",this.onInputChangeBound),this.removeEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.removeEventListener("htmx:afterSwap",this.onAfterSwapBound),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={}}onInputChange(t){t.stopPropagation(),Q(this.form,this.initialFormData)&&K(this.form)?this.submitButton.disabled=!1:this.submitButton.disabled=!0}onBeforeSwap(){this.fields={};for(const t of ke){const e=this.form?.elements[t]?.value||"";this.fields[t]=e}}onAfterSwap(){for(const t of ke){const e=this.form?.elements[t];e&&(e.value=this.fields[t])}}}const Le=Object.freeze(["customer[first_name]","customer[last_name]","customer[email]","customer[password]"]);class xe extends HTMLElement{constructor(){super(),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={},this.onInputChangeBound=this.onInputChange.bind(this),this.onBeforeSwapBound=this.onBeforeSwap.bind(this),this.onAfterSwapBound=this.onAfterSwap.bind(this)}connectedCallback(){this.form=this.querySelector("form"),this.submitButton=this.querySelector('button[type="submit"]'),this.initialFormData=z(this.form),this.addEventListener("input",this.onInputChangeBound),this.addEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.addEventListener("htmx:afterSwap",this.onAfterSwapBound)}disconnectedCallback(){this.removeEventListener("input",this.onInputChangeBound),this.removeEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.removeEventListener("htmx:afterSwap",this.onAfterSwapBound),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={}}onInputChange(t){t.stopPropagation(),Q(this.form,this.initialFormData)&&K(this.form)?this.submitButton.disabled=!1:this.submitButton.disabled=!0}onBeforeSwap(){this.fields={};for(const t of Le){const e=this.form?.elements[t]?.value||"";this.fields[t]=e}}onAfterSwap(){for(const t of Le){const e=this.form?.elements[t];e&&(e.value=this.fields[t])}}}const Se=Object.freeze(["email"]);class Ie extends HTMLElement{constructor(){super(),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={},this.onInputChangeBound=this.onInputChange.bind(this),this.onBeforeSwapBound=this.onBeforeSwap.bind(this),this.onAfterSwapBound=this.onAfterSwap.bind(this)}connectedCallback(){this.form=this.querySelector("form"),this.submitButton=this.querySelector('button[type="submit"]'),this.initialFormData=z(this.form),this.addEventListener("input",this.onInputChangeBound),this.addEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.addEventListener("htmx:afterSwap",this.onAfterSwapBound)}disconnectedCallback(){this.removeEventListener("input",this.onInputChangeBound),this.removeEventListener("htmx:beforeSwap",this.onBeforeSwapBound),this.removeEventListener("htmx:afterSwap",this.onAfterSwapBound),this.form=null,this.submitButton=null,this.initialFormData=null,this.fields={}}onInputChange(t){t.stopPropagation(),Q(this.form,this.initialFormData)&&K(this.form)?this.submitButton.disabled=!1:this.submitButton.disabled=!0}onBeforeSwap(){this.fields={};for(const t of Se){const e=this.form?.elements[t]?.value||"";this.fields[t]=e}}onAfterSwap(){for(const t of Se){const e=this.form?.elements[t];e&&(e.value=this.fields[t])}const t=this.querySelector("#recover-errors"),e=this.querySelector("#recover-success"),n=this.querySelector("#recover-form"),s=this.querySelector("#recover-password-subtext");!t&&e&&n&&s&&(n.style.display="none",s.style.display="none",e.style.display="flex")}}class Ae extends HTMLElement{constructor(){super(),this.trigger=null,this.onClickBound=this.onClick.bind(this)}connectedCallback(){this.trigger=this.querySelector("announcement-trigger"),this.trigger&&this.trigger.addEventListener("click",this.onClickBound)}disconnectedCallback(){this.trigger&&this.trigger.removeEventListener("click",this.onClickBound),this.trigger=null}onClick(){this.classList.add("hidden")}}var Te;Te||(Te=1,(()=>{if(customElements.get("swiper-container"))return;if(!document.querySelector("swiper-container"))return;let t=window.theme&&window.theme.swiper_asset_url||"";if(t=t.replace("https://cdn.swell.store","/swell-assets"),!t)return;const e=document.createElement("script");e.type="module",e.src=t,document.head.appendChild(e)})());class qe extends HTMLElement{connectedCallback(){const t=Array.from(this.children);if(t.length<=1)return;this.vertical="vertical"===this.dataset.direction;const e=parseInt(this.dataset.autoplayDelay||"0",10);this.track=document.createElement("div"),this.track.style.cssText=this.vertical?"display:flex;flex-direction:column;height:100%":"display:flex;height:100%",t.forEach(t=>{t.style.flex="0 0 100%",this.track.appendChild(t)}),this.track.appendChild(t[0].cloneNode(!0)),this.appendChild(this.track),this.count=t.length,this.index=0,this.reducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches,e>0&&(this.timer=setInterval(()=>this.next(),e))}disconnectedCallback(){this.timer&&clearInterval(this.timer)}next(){this.index+=1,this.slideTo(this.index,!this.reducedMotion),this.index===this.count&&setTimeout(()=>{this.index=0,this.slideTo(0,!1)},320)}slideTo(t,e){this.track.style.transition=e?"transform 300ms ease":"none",this.track.style.transform=this.vertical?`translateY(-${100*t}%)`:`translateX(-${100*t}%)`}}customElements.get("announcement-rotator")||customElements.define("announcement-rotator",qe),function(){class t extends HTMLElement{constructor(){super(),this.container=this?.parentElement?.querySelector("swiper-container"),this.addEventListener("click",this.prev.bind(this))}prev(){this.container&&this.container.swiper.slidePrev()}}class e extends HTMLElement{constructor(){super(),this.container=this?.parentElement?.querySelector("swiper-container"),this.addEventListener("click",this.next.bind(this))}next(){this.container&&this.container.swiper.slideNext()}}customElements.get("slideshow-button-prev")||customElements.define("slideshow-button-prev",t),customElements.get("slideshow-button-next")||customElements.define("slideshow-button-next",e)}();var Me,De={};!function(){if(Me)return De;Me=1;let t=!1;function e(){if(t||window.htmx)return;t=!0;let e=window.theme&&window.theme.htmx_asset_url||"";if(e=e.replace("https://cdn.swell.store","/swell-assets"),!e)return;const n=document.createElement("script");n.src=e,n.onload=()=>{if(!window.htmx)return;window.htmx.process(document.body);const t=document.querySelector("#search-form"),e=t&&t.querySelector("input[name='q']");t&&e&&e.value&&window.htmx.trigger(t,"search-input-change")},document.head.appendChild(n)}if(function(){const t=document.querySelectorAll("[hx-get],[hx-post],[hx-put],[hx-delete],[hx-patch],[hx-boost]");for(const e of t)if(!e.closest("search-dialog"))return!0;return!1}())e();else{const t=n=>{const s=n.target;s&&s.closest&&s.closest("search-dialog-trigger, search-input")&&(e(),document.removeEventListener("pointerdown",t,!0),document.removeEventListener("focusin",t,!0))};document.addEventListener("pointerdown",t,!0),document.addEventListener("focusin",t,!0)}}(),window.hoverintent=function(t,e,n){var s,i,o,r,a=!1,c=!1,d={},l=0,h=0,u={sensitivity:7,interval:100,timeout:0,handleFocus:!1};function m(t){s=t.clientX,i=t.clientY}function p(t,n){if(h&&(h=clearTimeout(h)),Math.abs(o-s)+Math.abs(r-i)