1import{ThemeEvents as h,CartAddEvent as S}from"@theme/events";import{fetchConfig as T,getViewParameterValue as q}from"@theme/utilities";import{morph as M}from"@theme/morph";const p="lei-subscription:change",x="lei-subscription-cta",w=5e3,d=r=>String(r??"").trim().toLowerCase();function f(r,t){if(!r)return[];const e=r.colorOptionIndex;if(e==null||e<0||!t)return r.variants;const i=d(t);return r.variants.filter(n=>d(n.options[e])===i)}function P(r,t){const e=r?.sizeOptionIndex??-1;if(!r||e<0)return[];const i=new Set;for(const n of f(r,t)){const a=n.options[e];a!=null&&i.add(a)}return[...i]}function E(r,t,e){if(!r)return null;const i=f(r,t),n=r.sizeOptionIndex??-1,a=n<0?i:i.filter(s=>d(s.options[n])===d(e));return a.find(s=>s.available)??a[0]??null}function A(r,t){return f(r,t).some(e=>e.available)}function C({variantId:r,sellingPlanId:t,subscriptionId:e,baseVariantId:i,bundleId:n}){const a={id:Number(r),quantity:1};if(t&&(a.selling_plan=Number(t)),!i)return[a];const s={_purelei_subscription_id:e,_purelei_subscription_bundle:n};return[{...a,properties:{...s}},{id:Number(i),quantity:1,properties:{...s}}]}function H(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`lei-${Date.now()}-${Math.random().toString(16).slice(2)}`}function I(r){return r.closest("pdp-variant-fragments")??r.closest(".shopify-section")??document}function m(r,t){return t.target instanceof Element&&!r.contains(t.target)}class L extends HTMLElement{#n=[];#i="";#s="base";#t=null;#e=null;#r=null;#h=new Map;connectedCallback(){this.#f(),this.#i=this.dataset.currentColor??"",this.#s=this.#p("[data-lei-plan-input]")==="none"?"none":"base",this.addEventListener("change",this.#m),document.addEventListener(h.variantUpdate,this.#y),this.#b(),this.#d()}disconnectedCallback(){this.removeEventListener("change",this.#m),document.removeEventListener(h.variantUpdate,this.#y)}get state(){const t=this.#t==null?null:this.#o(this.#t);let e=null;if(this.#s==="base"&&t&&(!(t.sizeOptionIndex>=0)||this.#e)){const n=E(t,this.#i,this.#e);n?.available&&(e=n.id)}return{mode:this.#s,baseProductId:t?.productId??null,baseVariantId:e,complete:this.#s==="none"||e!=null}}#f(){const t=this.querySelector("[data-lei-plan-data]");try{const e=JSON.parse(t?.textContent||"{}");this.#n=Array.isArray(e.bases)?e.bases:[]}catch{this.#n=[]}}#o(t){const e=Number(t);return this.#n.find(i=>i.productId===e)??null}#p(t){for(const e of this.querySelectorAll(t))if(e instanceof HTMLInputElement&&e.checked)return e.value;return null}#m=t=>{const e=t.target;e instanceof HTMLInputElement&&(e.hasAttribute("data-lei-plan-input")?this.#a(e.value==="none"?"none":"base"):e.hasAttribute("data-lei-base-input")?this.#u(Number(e.value)):e.hasAttribute("data-size-input")&&(this.#e=e.value,this.#t!=null&&this.#h.set(this.#t,e.value),this.#d()))};#a(t){this.#s=t;const e=this.querySelector("[data-lei-base-group]");e instanceof HTMLElement&&(e.hidden=t==="none"),t==="none"?(this.#t!=null&&(this.#r=this.#t),this.#c()):this.#l(),this.#d()}#l(){if(this.#t!=null)return;const t=[...this.querySelectorAll("[data-lei-base-input]")].filter(i=>i instanceof HTMLInputElement&&!i.disabled),e=t.find(i=>Number(i.value)===this.#r)??t[0];e instanceof HTMLInputElement&&(e.checked=!0,this.#u(Number(e.value),{emit:!1}))}#c(){this.#t=null,this.#e=null;for(const t of this.querySelectorAll("[data-lei-base-input], [data-size-input]"))t instanceof HTMLInputElement&&(t.checked=!1);for(const t of this.querySelectorAll("[data-lei-sizes]"))t instanceof HTMLElement&&(t.hidden=!0)}#u(t,{emit:e=!0}={}){this.#t=t,this.#r=t,this.#e=null;const i=this.#h.get(t);for(const n of this.querySelectorAll("[data-lei-sizes]")){if(!(n instanceof HTMLElement))continue;const a=Number(n.getAttribute("data-lei-sizes"))===t;n.hidden=!a;for(const s of n.querySelectorAll("[data-size-input]"))s instanceof HTMLInputElement&&(a?s.checked?this.#e=s.value:this.#e==null&&i!=null&&s.value===i&&!s.disabled&&(s.checked=!0,this.#e=s.value):s.checked=!1)}e&&this.#d()}#b(){for(const t of this.querySelectorAll("[data-lei-base]")){if(!(t instanceof HTMLElement))continue;const e=this.#o(t.getAttribute("data-base-product-id")),i=t.querySelector("[data-lei-base-input]");if(!e||!(i instanceof HTMLInputElement))continue;const n=e.available&&A(e,this.#i);i.disabled=!n,t.classList.toggle("is-unavailable",!n),!n&&this.#t===e.productId&&this.#c();const a=t.querySelector(".pdp-lei-base__image"),s=f(e,this.#i).find(o=>o.image);a instanceof HTMLImageElement&&s?.image&&a.dataset.leiSrc!==s.image&&(a.removeAttribute("srcset"),a.src=s.image,a.dataset.leiSrc=s.image);const l=this.querySelector(`[data-lei-sizes="${e.productId}"]`);if(l)for(const o of l.querySelectorAll("[data-size-input]")){if(!(o instanceof HTMLInputElement))continue;const c=!!E(e,this.#i,o.value)?.available;o.disabled=!c,!c&&o.checked&&(o.checked=!1,this.#t===e.productId&&(this.#e=null))}}this.#s==="base"&&this.#l()}#y=t=>{if(m(I(this),t))return;const e=Number(this.dataset.colorOptionIndex??-1),i=t.detail?.resource?.options;if(e<0||!Array.isArray(i))return;const n=i[e];
1typeof n!="string"||d(n)===d(this.#i)||(this.#i=n,this.dataset.currentColor=n,this.#b(),this.#d())};#d(){this.dispatchEvent(new CustomEvent(p,{bubbles:!0,detail:this.state}))}}class z extends HTMLElement{#n=null;#i={mode:"base",baseProductId:null,baseVariantId:null,complete:!1};#s=!1;#t=!1;#e;connectedCallback(){this.#f();const t=this.#h();t&&(this.#i=t.state),document.addEventListener(p,this.#o),document.addEventListener(h.variantUpdate,this.#p),this.addEventListener("submit",this.#l),this.#a()}disconnectedCallback(){document.removeEventListener(p,this.#o),document.removeEventListener(h.variantUpdate,this.#p),this.removeEventListener("submit",this.#l),this.#e&&clearTimeout(this.#e)}#r(){return I(this)}#h(){const t=this.#r().querySelector("lei-subscription-plan");return t instanceof L?t:null}#f(){const t=this.querySelector("[data-lei-cta-data]");try{this.#n=JSON.parse(t?.textContent||"null")}catch{this.#n=null}}#o=t=>{if(m(this.#r(),t))return;const e=t.detail;e&&(this.#i={...e},this.#a())};#p=async t=>{if(m(this.#r(),t))return;const e=t.detail;let i=e?.data?.html;if(!i){const s=e?.resource?.id,l=this.dataset.sectionId;if(!s||!l)return;const o=new URL(window.location.pathname,window.location.origin);o.searchParams.set("section_id",l),o.searchParams.set("variant",String(s));const u=q();u&&o.searchParams.set("view",u),this.#t=!0,this.#a();try{const c=await fetch(o);i=new DOMParser().parseFromString(await c.text(),"text/html")}catch{return}finally{this.#t=!1}}const n=i.querySelector("lei-subscription-cta [data-lei-cta-body]"),a=this.querySelector("[data-lei-cta-body]");if(n&&a){M(a,n.cloneNode(!0));const s=n.closest("lei-subscription-cta");s&&(this.dataset.soldOut=s.getAttribute("data-sold-out")??"false"),this.#f()}this.#a()};#m(){const t=this.querySelector('[data-lei-cta-form] button[type="submit"]');return t instanceof HTMLButtonElement?t:null}#a(){const t=this.#n;if(!t)return;const{mode:e,baseVariantId:i,complete:n}=this.#i,a=e==="base"&&i!=null?t.byBaseVariant?.[String(i)]:null,s=this.querySelector("[data-lei-row-base]"),l=this.querySelector("[data-lei-row-discount]");s instanceof HTMLElement&&(s.hidden=!a),l instanceof HTMLElement&&(l.hidden=!a);const o=this.querySelector("[data-lei-value-monthly]");o&&typeof t.monthly=="string"&&(o.innerHTML=t.monthly);const u=this.querySelector("[data-lei-value-base]");u&&a&&typeof a.basePrice=="string"&&(u.innerHTML=a.basePrice);const c=a?a.total:t.none?.total,b=this.querySelector(".pdp-lei-cta__price");b&&typeof c=="string"&&(b.innerHTML=c);const y=e==="base"&&!n,v=this.querySelector("[data-lei-cta-hint]");v instanceof HTMLElement&&(v.textContent=y?this.dataset.hintIncomplete??"":"");const g=this.#m();g&&(g.disabled=this.dataset.soldOut==="true"||this.#s||this.#t||y)}#l=async t=>{const e=t.target;if(!(e instanceof HTMLFormElement)||!e.hasAttribute("data-lei-cta-form")||(t.preventDefault(),this.#s||!this.#n))return;const{mode:i,baseVariantId:n,complete:a}=this.#i;if(this.dataset.soldOut==="true"||i==="base"&&!a)return;const s=C({variantId:this.#n.variantId,sellingPlanId:this.#n.sellingPlanId,subscriptionId:this.dataset.subscriptionId??"",baseVariantId:i==="base"?n:null,bundleId:H()});this.#s=!0,this.classList.add("is-submitting"),this.#u(),this.#a();try{const o=await(await fetch(Theme.routes.cart_add_url,T("json",{body:JSON.stringify({items:s})}))).json();if(o.status){this.#c(o.description??o.message??"");return}document.dispatchEvent(new S(o,this.dataset.sectionId??"",{source:x,itemCount:s.length,productId:this.dataset.productId,variantId:String(this.#n.variantId)}))}catch{this.#c("")}finally{this.#s=!1,this.classList.remove("is-submitting"),this.#a()}};#c(t){const e=this.querySelector("[data-lei-cta-error]"),i=this.querySelector("[data-lei-cta-error-text]");e instanceof HTMLElement&&(i&&(i.textContent=t),e.classList.remove("hidden"),this.#e&&clearTimeout(this.#e),this.#e=setTimeout(()=>this.#u(),w))}#u(){const t=this.querySelector("[data-lei-cta-error]");t instanceof HTMLElement&&t.classList.add("hidden")}}customElements.get("lei-subscription-plan")||customElements.define("lei-subscription-plan",L),customElements.get("lei-subscription-cta")||customElements.define("lei-subscription-cta",z);export{x as LEI_CART_SOURCE,p as LEI_CHANGE_EVENT,C as buildCartItems,H as createBundleId,A as hasAvailableVariantInColor,E as resolveBaseVariant,P as sizesForColor,f as variantsForColor};
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.