@lime-bundles/widget 4.4.0 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +10 -0
- package/dist/index.js +10 -0
- package/dist/lime-bundle.global.js +4 -4
- package/dist/lime-bundle.global.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var LimeBundles=(()=>{var gt=Object.defineProperty;var Nr=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var Dr=Object.prototype.hasOwnProperty;var Or=(e,t)=>{for(var n in t)gt(e,n,{get:t[n],enumerable:!0})},Fr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Hr(t))!Dr.call(e,o)&&o!==n&>(e,o,{get:()=>t[o],enumerable:!(r=Nr(t,o))||r.enumerable});return e};var Vr=e=>Fr(gt({},"__esModule",{value:!0}),e);var ui={};Or(ui,{LimeBundleElement:()=>
|
|
1
|
+
"use strict";var LimeBundles=(()=>{var gt=Object.defineProperty;var Nr=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var Dr=Object.prototype.hasOwnProperty;var Or=(e,t)=>{for(var n in t)gt(e,n,{get:t[n],enumerable:!0})},Fr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Hr(t))!Dr.call(e,o)&&o!==n&>(e,o,{get:()=>t[o],enumerable:!(r=Nr(t,o))||r.enumerable});return e};var Vr=e=>Fr(gt({},"__esModule",{value:!0}),e);var ui={};Or(ui,{LimeBundleElement:()=>De,trackInputMode:()=>ft});var Ur=Object.defineProperty,Jt=(e,t)=>{for(var n in t)Ur(e,n,{get:t[n],enumerable:!0})},Ot=class extends Error{constructor(e){super(e.map(t=>t.message).join("; ")),this.errors=e,this.name="StorefrontApiError"}},zr="2026-07";async function Qr(e){if(e)return typeof e=="function"?await e():e}function Xt(e){return!!(e.country||e.language||e.buyer)}function yt(e){let t=e.apiVersion??zr,n=`https://${e.shopDomain}/api/${t}/graphql.json`;return{async query(r,o,i){let a={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":e.accessToken};e.buyerIp&&(a["Shopify-Storefront-Buyer-IP"]=e.buyerIp);let l=await Qr(e.buyer),d={...o??{}};e.country&&(d.country=e.country),e.language&&(d.language=e.language),l&&(d.buyer=l);let s=await fetch(n,{method:"POST",headers:a,body:JSON.stringify({query:r,variables:d}),signal:i?.signal});if(!s.ok)throw new Ot([{message:`Storefront API error: ${s.status} ${s.statusText}`}]);let u=await s.json();if(u.errors?.length)throw new Ot(u.errors);return u.data}}}function Zt(e){return e.replace(/query\s+(\w+)\s*(?:\(([^)]*)\))?\s*\{/,(t,n,r)=>{let o=(r||"").trim(),i="$country: CountryCode, $language: LanguageCode, $buyer: BuyerInput",a=o?`${o}, ${i}`:i;return`query ${n}(${a}) @inContext(country: $country, language: $language, buyer: $buyer) {`})}var en=`#graphql
|
|
2
2
|
query BundleMetaobject($id: ID!) {
|
|
3
3
|
metaobject(id: $id) {
|
|
4
4
|
id
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
warnings { code message target }
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
|
-
`;var ae=class extends Error{constructor(e,t){super(e),this.reason=t,this.name="BundleParseError"}},Ft={none:0,subtle:6,rounded:12,round:18},ie={header:{countdownBgColor:"#B4DC7F47",countdownTextColor:"#555555"},layout:{backgroundColor:"#FCFCFC",borderColor:"#E5E5E5",borderWidth:1,borderRadius:"subtle"},productList:{textColor:"#555555",thumbnailRatio:"square",showPrice:!0,showCompareAtPrice:!0,showUnitPrice:!0,showQuantity:!0},pricing:{showComparePrice:!0,showPerUnitPrice:!0,showItemCount:!0,showCompareAtPrice:!0},cta:{ctaText:"Add to cart",primaryColor:"#B4DC7F",buttonTextColor:"#555555",borderWidth:0,borderColor:"#B4DC7F"},savingsBar:{visible:!0},countdown:{showCountdown:!0},popularBadge:{visible:!0,text:"Most Popular",bgColor:"#1A1A1A",textColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A"},showLowStockBadge:!0,lowStockThreshold:10,lowStockBgColor:"#FEF3C7",lowStockTextColor:"#92400E",showSearch:!0,mixMatchShowTypeFilters:!0,mixMatchShowQuantitySelector:!0,pickerBgColor:"#FCFCFC",pickerTextColor:"#555555",pickerBorderWidth:1,pickerBorderColor:"#E5E5E5",pickerBorderRadius:"subtle",pickerThumbnailRatio:"square",pickerAddBgColor:"#B4DC7F",pickerAddLabelColor:"#555555",pickerAddBorderWidth:0,pickerAddBorderColor:"#B4DC7F",defaultTier:"first"};function Wr(e){if(!e||typeof e!="object")return ie;let t=e;return{...ie,...t,defaultTier:jr(t.defaultTier),pickerBorderRadius:Vt(t.pickerBorderRadius),header:{...ie.header,...t.header??{}},layout:{...ie.layout,...t.layout??{},borderRadius:Vt(t.layout?.borderRadius)},productList:{...ie.productList,...t.productList??{}},pricing:{...ie.pricing,...t.pricing??{}},cta:{...ie.cta,...t.cta??{}},savingsBar:{...ie.savingsBar,...t.savingsBar??{}},countdown:{...ie.countdown,...t.countdown??{}},popularBadge:{...ie.popularBadge,...t.popularBadge??{}}}}function jr(e){return e==="first"||e==="best_value"||typeof e=="number"&&Number.isInteger(e)&&e>=0?e:ie.defaultTier}function Vt(e){return e==="none"||e==="subtle"||e==="rounded"||e==="round"?e:ie.layout.borderRadius}function $r(e){return{primaryColor:e.cta.primaryColor,backgroundColor:e.layout.backgroundColor,textColor:e.productList.textColor,borderColor:e.layout.borderColor,borderWidth:e.layout.borderWidth,buttonTextColor:e.cta.buttonTextColor,ctaBorderWidth:e.cta.borderWidth,ctaBorderColor:e.cta.borderColor,borderRadius:Ft[e.layout.borderRadius],countdownBgColor:e.header.countdownBgColor,countdownTextColor:e.header.countdownTextColor,thumbnailRatio:e.productList.thumbnailRatio,showProductPrice:e.productList.showPrice,showProductCompareAtPrice:e.productList.showCompareAtPrice,showProductUnitPrice:e.productList.showUnitPrice,showProductQuantity:e.productList.showQuantity,showCountdown:e.countdown.showCountdown,ctaText:e.cta.ctaText,showLowStockBadge:e.showLowStockBadge,lowStockThreshold:e.lowStockThreshold,lowStockBgColor:e.lowStockBgColor,lowStockTextColor:e.lowStockTextColor,showComparePrice:e.pricing.showComparePrice,showPerUnitPrice:e.pricing.showPerUnitPrice,showItemCount:e.pricing.showItemCount,showCompareAtPrice:e.pricing.showCompareAtPrice,showMostPopular:e.popularBadge.visible,popularBadgeText:e.popularBadge.text,popularBadgeBgColor:e.popularBadge.bgColor,popularBadgeTextColor:e.popularBadge.textColor,popularBadgeBorderWidth:e.popularBadge.borderWidth,popularBadgeBorderColor:e.popularBadge.borderColor,showSearch:e.showSearch,mixMatchShowTypeFilters:e.mixMatchShowTypeFilters,pickerBgColor:e.pickerBgColor,pickerTextColor:e.pickerTextColor,pickerBorderWidth:e.pickerBorderWidth,pickerBorderColor:e.pickerBorderColor,pickerBorderRadius:Ft[e.pickerBorderRadius],pickerThumbnailRatio:e.pickerThumbnailRatio,pickerAddBgColor:e.pickerAddBgColor,pickerAddLabelColor:e.pickerAddLabelColor,pickerAddBorderWidth:e.pickerAddBorderWidth,pickerAddBorderColor:e.pickerAddBorderColor,defaultTier:e.defaultTier,...e.popularBadge.tierIndex!==void 0&&{mostPopularTierIndex:e.popularBadge.tierIndex}}}var Gr={primaryColor:"--lb-primary-color",backgroundColor:"--lb-bg",textColor:"--lb-text",borderColor:"--lb-border",borderWidth:"--lb-border-width",buttonTextColor:"--lb-btn-text",borderRadius:"--lb-radius",countdownBgColor:"--lb-countdown-bg",countdownTextColor:"--lb-countdown-text",ctaBorderWidth:"--lb-cta-border-width",ctaBorderColor:"--lb-cta-border-color",popularBadgeBgColor:"--lb-popular-badge-bg",popularBadgeTextColor:"--lb-popular-badge-text",popularBadgeBorderWidth:"--lb-popular-badge-border-width",popularBadgeBorderColor:"--lb-popular-badge-border-color",pickerBgColor:"--lb-picker-bg",pickerTextColor:"--lb-picker-text",pickerBorderWidth:"--lb-picker-border-width",pickerBorderColor:"--lb-picker-border-color",pickerBorderRadius:"--lb-picker-radius",pickerAddBgColor:"--lb-picker-add-bg",pickerAddLabelColor:"--lb-picker-add-label",pickerAddBorderWidth:"--lb-picker-add-border-width",pickerAddBorderColor:"--lb-picker-add-border-color"},Kr=new Set(["borderRadius","borderWidth","ctaBorderWidth","popularBadgeBorderWidth","pickerBorderWidth","pickerBorderRadius","pickerAddBorderWidth"]);function sn(e,t){let n=$r(t);for(let[i,a]of Object.entries(Gr)){let l=n[i];if(l==null)continue;let d=Kr.has(i)?`${l}px`:String(l);e.style.setProperty(a,d)}e.style.setProperty("--lb-product-price-display",t.productList.showPrice?"block":"none"),e.style.setProperty("--lb-product-compare-display",t.productList.showCompareAtPrice?"inline":"none"),e.style.setProperty("--lb-product-unit-price-display",t.productList.showUnitPrice?"block":"none"),e.style.setProperty("--lb-product-qty-chip-display",t.productList.showQuantity?"inline-flex":"none"),e.style.setProperty("--lb-product-qty-inline-display",t.productList.showQuantity?"inline":"none"),e.style.setProperty("--lb-variant-chevron",Ut(t.layout.borderColor)),e.style.setProperty("--lb-picker-variant-chevron",Ut(t.pickerBorderColor));let r=zt(t.productList.thumbnailRatio);e.style.setProperty("--lb-thumbnail-aspect-ratio",r.aspectRatio),e.style.setProperty("--lb-thumbnail-img-fit",r.imgFit),e.style.setProperty("--lb-thumbnail-img-height",r.imgHeight);let o=zt(t.pickerThumbnailRatio);e.style.setProperty("--lb-picker-thumbnail-aspect-ratio",o.aspectRatio),e.style.setProperty("--lb-picker-thumbnail-img-fit",o.imgFit),e.style.setProperty("--lb-picker-thumbnail-img-height",o.imgHeight)}function Ut(e){return`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='${e.replace(/#/g,"%23")}' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")`}function zt(e){switch(e){case"tall":return{aspectRatio:"3 / 4",imgFit:"cover",imgHeight:"100%"};case"wide":return{aspectRatio:"4 / 3",imgFit:"cover",imgHeight:"100%"};case"original":return{aspectRatio:"auto",imgFit:"contain",imgHeight:"auto"};default:return{aspectRatio:"1 / 1",imgFit:"cover",imgHeight:"100%"}}}var Yr=new Set(["fixed","mix_match","volume","bogo","multi_step"]),Jr=new Set(["active"]);function wt(e,t){try{return Xr(e,t)}catch(n){if(n instanceof ae)return null;throw n}}function Xr(e,t){let n=new Map(t.map(v=>[v.key,v])),r=n.get("title")?.value??"Bundle",o=n.get("bundle_type")?.value,i=n.get("status")?.value;if(!o||!Yr.has(o))throw new ae(`Invalid or missing bundle_type: ${o??"null"}`,"invalid_type");let a=o;if(!i||!Jr.has(i))throw new ae(`Bundle is not active: status=${i??"null"}`,"inactive");let l=i,d=n.get("starts_at")?.value??null,s=n.get("ends_at")?.value??null,u=new Date;if(d){let v=new Date(d);if(Number.isNaN(v.getTime()))throw new ae(`Invalid starts_at: ${d}`,"invalid_type");if(v>u)throw new ae(`Bundle not yet started: starts_at=${d}`,"not_started")}if(s){let v=new Date(s);if(Number.isNaN(v.getTime()))throw new ae(`Invalid ends_at: ${s}`,"invalid_type");if(v<u)throw new ae(`Bundle has expired: ends_at=${s}`,"expired")}let c=no(n),p=ro(n),f=oo(n),b={id:e,title:r,description:n.get("description")?.value||null,status:l,products:c,discountConfig:p,widgetConfig:f,startsAt:d,endsAt:s,discountLabel:n.get("discount_label")?.value??null,selectedVariantIds:io(n),productQuantities:Qt(n,"product_quantities"),variantQuantities:Qt(n,"variant_quantities"),marketVisibility:ao(n),marketIds:lo(n),abTestId:n.get("ab_test_id")?.value||null,abWeight:so(n)};switch(a){case"fixed":return{...b,bundleType:"fixed"};case"volume":return{...b,bundleType:"volume",volumeTiers:co(n)};case"mix_match":return{...b,bundleType:"mix_match",minQuantity:po(n,"min_quantity",{min:1}),maxQuantity:null,productRules:De(n,"product_rules"),variantRules:De(n,"variant_rules")};case"bogo":return{...b,bundleType:"bogo",...to(n)};case"multi_step":return{...b,bundleType:"multi_step",steps:Zr(n),productRules:De(n,"product_rules"),variantRules:De(n,"variant_rules"),collectionProductIds:eo(n)}}}function Zr(e){let t=ve(e,"steps");if(!Array.isArray(t))throw new ae("Invalid or missing steps","invalid_type");let n=o=>Array.isArray(o)?o.filter(i=>typeof i=="string"):[],r=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let i=o;if(typeof i.name!="string")continue;let a=typeof i.minQuantity=="number"?i.minQuantity:Number(i.minQuantity),l=Number.isFinite(a)&&a>=1?Math.floor(a):1,d=null;typeof i.maxQuantity=="number"&&Number.isFinite(i.maxQuantity)&&(d=Math.max(l,Math.floor(i.maxQuantity))),r.push({name:i.name,minQuantity:l,maxQuantity:d,productIds:n(i.productIds),collectionIds:n(i.collectionIds)})}if(r.length===0)throw new ae("multi_step bundle has no valid steps","invalid_type");return r}function eo(e){let t={},n=e.get("collection");if(!n?.references?.nodes)return t;for(let r of n.references.nodes)!("products"in r)||!r.products?.nodes||(t[r.id]=r.products.nodes.map(o=>o.id));return t}function to(e){let t=ve(e,"bogo_config");if(!t||typeof t!="object"||Array.isArray(t))throw new ae("Invalid or missing bogo_config","invalid_type");let n=t,r=typeof n.buyProductId=="string"?n.buyProductId:"",o=typeof n.getProductId=="string"?n.getProductId:"";if(!r||!o)throw new ae("bogo_config is missing buy/get product ids","invalid_type");let i=a=>{let l=typeof a=="number"?a:Number(a);return!Number.isFinite(l)||l<1?1:Math.min(99,Math.floor(l))};return{buyProductId:r,getProductId:o,buyQuantity:i(n.buyQuantity),getQuantity:i(n.getQuantity)}}function no(e){let t=[],n=e.get("products");if(n?.reference&&"variants"in n.reference&&t.push(n.reference),n?.references?.nodes)for(let o of n.references.nodes)"variants"in o?t.push(o):"products"in o&&o.products?.nodes&&t.push(...o.products.nodes);let r=e.get("collection");if(r?.references?.nodes)for(let o of r.references.nodes)"products"in o&&o.products?.nodes&&t.push(...o.products.nodes);return t}function ro(e){return{discountType:e.get("discount_type")?.value??"percentage",discountValue:parseFloat(e.get("discount_value")?.value??"0"),allowStacking:e.get("allow_stacking")?.value==="true"}}function oo(e){return Wr(ve(e,"widget_config"))}function io(e){let t=ve(e,"selected_variant_ids");if(!Array.isArray(t))return null;let n=[];for(let r of t)Array.isArray(r)?n.push(r.filter(o=>typeof o=="string")):n.push([]);return n}function Qt(e,t){let n=ve(e,t);if(!n||typeof n!="object"||Array.isArray(n))return{};let r={};for(let[o,i]of Object.entries(n)){let a=typeof i=="number"?i:Number(i);Number.isFinite(a)&&a>=0&&a<=99&&(r[o]=Math.floor(a))}return r}function De(e,t){let n=ve(e,t);if(!n||typeof n!="object"||Array.isArray(n))return{};let r={};for(let[o,i]of Object.entries(n)){if(!i||typeof i!="object"||Array.isArray(i))continue;let{min:a,max:l,required:d}=i,s=typeof a=="number"?a:Number(a),u=typeof l=="number"?l:Number(l);if(!Number.isFinite(s)||!Number.isFinite(u))continue;let c=Math.max(1,Math.min(99,Math.floor(s))),p=Math.max(c,Math.min(99,Math.floor(u)));r[o]=d===!0?{min:c,max:p,required:!0}:{min:c,max:p}}return r}function ao(e){return e.get("market_visibility")?.value==="specific"?"specific":"all"}function lo(e){let t=e.get("markets")?.value;if(!t)return[];try{let n=JSON.parse(t);return Array.isArray(n)?n.filter(r=>typeof r=="string"):[]}catch{return[]}}function so(e){let t=e.get("ab_weight")?.value;if(!t)return 0;let n=Number.parseInt(t,10);return Number.isNaN(n)?0:Math.min(100,Math.max(0,n))}function co(e){let t=ve(e,"volume_tiers");return Array.isArray(t)?t.filter(n=>typeof n=="object"&&n!==null).map(uo):[]}function uo(e){let t=Number(e.minQuantity??0),n={minQuantity:Number.isFinite(t)&&t>=0?t:0};return typeof e.percentage=="number"&&Number.isFinite(e.percentage)&&(n.percentage=e.percentage),typeof e.amount=="number"&&Number.isFinite(e.amount)&&(n.amount=e.amount),n}function ve(e,t){let n=e.get(t)?.value;if(!n)return null;try{return JSON.parse(n)}catch{return null}}function po(e,t,n={}){let r=e.get(t)?.value;if(!r)return null;let o=parseInt(r,10);return isNaN(o)||n.min!==void 0&&o<n.min?null:o}function dn(e,t){let n=0,r=0;for(let o=0;o<e.length;o++){let i=t==="fixed_amount"?e[o].amount??0:e[o].percentage??0;i>n&&(n=i,r=o)}return r}function cn(e,t,n){return t<=0?0:e==="best_value"?Math.min(n,t-1):Math.max(0,Math.min(Math.floor(typeof e=="number"?e:0),t-1))}function un(e,t,n){return t?typeof e=="number"&&Number.isFinite(e)?Math.floor(e):n:-1}function Wt(e){return e.split("/").pop()??e}function pn(e,t){if(e.marketVisibility!=="specific")return!0;if(!t)return!1;let n=Wt(t);return e.marketIds.some(r=>Wt(r)===n)}function mo(e,t){return e===t?!0:/^\d+$/.test(t)&&e.endsWith(`/${t}`)}function mn(e,t){let n=t?.productId?.trim();if(n){let o=e.find(i=>mo(i.id,n));if(o)return o}let r=t?.productHandle?.trim();if(r){let o=e.find(i=>i.handle===r);if(o)return o}return e[0]}function _t(e,t,n){let r=e.variantQuantities[n];return r!==void 0?r:e.productQuantities[t]??1}function bn(e,t){let n=e.steps[t];if(!n)return[];let r=new Set(n.productIds),o=new Set;for(let l of n.collectionIds)for(let d of e.collectionProductIds[l]??[])o.add(d);let i=new Set,a=[];for(let l of e.products)i.has(l.id)||!r.has(l.id)&&!o.has(l.id)||(i.add(l.id),a.push(l));return a}async function hn(e,t){await xn(e,{shopDomain:e.shopDomain,eventType:"bundle_impression",bundleGid:t.bundleGid,bundleType:t.bundleType,productId:t.productId,occurredAt:new Date().toISOString()})}async function fn(e,t){await xn(e,{shopDomain:e.shopDomain,eventType:"bundle_add_to_cart",...t,occurredAt:new Date().toISOString()})}function gn(e,t){if(typeof IntersectionObserver>"u")return t(),()=>{};let n=new IntersectionObserver(r=>{for(let o of r)o.isIntersecting&&(t(),n.unobserve(o.target))},{threshold:.5});return n.observe(e),()=>n.disconnect()}async function xn(e,t){let n=`${e.appUrl}/api/analytics`,r=JSON.stringify(t);try{(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r})).ok||(await new Promise(i=>setTimeout(i,2e3)),await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r}))}catch{try{typeof navigator<"u"&&navigator.sendBeacon&&navigator.sendBeacon(n,r)}catch{}}}var jt=1e4,bo=[[/@import/i,"@import rules"],[/@charset/i,"@charset declarations"],[/expression\s*\(/i,"CSS expressions"],[/-moz-binding/i,"-moz-binding"],[/-webkit-binding/i,"-webkit-binding"],[/behavior\s*:/i,"behavior property"]],ho=/^(https:|\/[^/]|\.\/|\.\.\/|#)/;function Ct(e){if(e.length>jt)return{ok:!1,error:`CSS exceeds ${jt.toLocaleString("en-US")} character limit`};let t=e.replace(/\/\*[\s\S]*?\*\//g,"");try{t=t.replace(/\\([0-9a-fA-F]{1,6})[ \t\n\f]?/g,(o,i)=>{let a=parseInt(i,16);return a<0||a>1114111?"\uFFFD":String.fromCodePoint(a)}),t=t.replace(/\\\r?\n/g,""),t=t.replace(/\\([^\n\r\f0-9a-fA-F])/g,"$1")}catch{return{ok:!1,error:"CSS contains invalid unicode escape sequences"}}t=t.replace(/</g,"").replace(/>/g,"");for(let[o,i]of bo)if(o.test(t))return{ok:!1,error:`CSS contains blocked pattern: ${i}`};let n=/url\s*\(\s*([\s\S]*?)\s*\)/gi,r;for(;(r=n.exec(t))!==null;){let o=r[1].trim();if((o.startsWith("'")||o.startsWith('"'))&&(o=o.slice(1)),(o.endsWith("'")||o.endsWith('"'))&&(o=o.slice(0,-1)),o=o.trim(),o&&!ho.test(o))return{ok:!1,error:"CSS url() values must use https:// or relative paths"}}return{ok:!0,css:t}}var fo="lb-custom-css-";function vn(e,t){if(typeof document>"u"||!t)return!1;let n=Ct(t);if(!n.ok||!n.css.trim())return!1;let r=fo+go(e),o=document.getElementById(r);return o||(o=document.createElement("style"),o.id=r,o.setAttribute("data-lime-bundles","custom-css"),document.head.appendChild(o)),o.textContent!==n.css&&(o.textContent=n.css),!0}function go(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function xo(e,t){let n=typeof e=="string"?parseFloat(e):e;try{return new Intl.NumberFormat(void 0,{style:"currency",currency:t}).format(n)}catch{return`${t} ${n.toFixed(2)}`}}function Fe(e,t,n){return t==="percentage"?Math.max(0,e*(1-n/100)):Math.max(0,e-n)}var vo={CL:"cl",CM:"cm",FLOZ:"fl oz",FT:"ft",FT2:"ft\xB2",G:"g",GAL:"gal",IN:"in",ITEM:"each",KG:"kg",L:"l",LB:"lb",M:"m",M2:"m\xB2",M3:"m\xB3",MG:"mg",ML:"ml",MM:"mm",OZ:"oz",PT:"pt",QT:"qt",UNKNOWN:"",YD:"yd"};function yn(e,t,n){if(!e||!t||t.referenceUnit==="UNKNOWN")return null;let r=parseFloat(e.amount);if(!Number.isFinite(r))return null;let o=vo[t.referenceUnit]??"";if(!o)return null;let i=e.currencyCode||n||"USD",a=xo(r,i),l=t.referenceValue,d=l===1?o:`${l}${o}`;return`${a}/${d}`}var ye={};Jt(ye,{computePosition:()=>wo,emptyTypeAheadState:()=>So,firstEnabled:()=>Oe,handleKey:()=>ko,pushTypeAheadChar:()=>Eo});var yo=4;function wo({trigger:e,viewportHeight:t,desiredHeight:n,margin:r=yo,clip:o}){let i=o?Math.min(t,o.bottom):t,a=o?Math.max(0,o.top):0,l=Math.max(0,i-e.bottom-r),d=Math.max(0,e.top-a-r),s=n<=l?"down":d>l?"up":"down",c=Math.min(n,s==="down"?l:d),p=s==="down"?e.bottom+r:e.top-r-c;return{placement:s,maxHeight:c,offsetTop:p,offsetLeft:e.left,width:e.width}}var xt={type:"passthrough",preventDefault:!1};function Oe(e){for(let t=0;t<e.length;t++)if(!e[t].disabled)return t;return-1}function $t(e){for(let t=e.length-1;t>=0;t--)if(!e[t].disabled)return t;return-1}function _o(e,t){if(e.length===0)return-1;for(let n=1;n<=e.length;n++){let r=(t+n)%e.length;if(!e[r].disabled)return r}return t}function Co(e,t){if(e.length===0)return-1;for(let n=1;n<=e.length;n++){let r=(t-n+e.length)%e.length;if(!e[r].disabled)return r}return t}function Gt(e){return e.length===1&&e!==" "&&/\S/.test(e)}function ko(e,t){if(e.ctrlKey||e.metaKey||e.altKey)return xt;let{key:n}=e,{isOpen:r,activeIndex:o,selectedIndex:i,options:a}=t;if(!r)switch(n){case"Enter":case" ":case"ArrowDown":return{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:Oe(a),preventDefault:!0};case"ArrowUp":return{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:$t(a),preventDefault:!0};default:return Gt(n)?{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:Oe(a),preventDefault:!0}:xt}switch(n){case"ArrowDown":return{type:"move-active",activeIndex:_o(a,o),preventDefault:!0};case"ArrowUp":return{type:"move-active",activeIndex:Co(a,o),preventDefault:!0};case"Home":return{type:"move-active",activeIndex:Oe(a),preventDefault:!0};case"End":return{type:"move-active",activeIndex:$t(a),preventDefault:!0};case"Enter":case" ":return o>=0&&!a[o]?.disabled?{type:"commit",index:o,preventDefault:!0}:{type:"passthrough",preventDefault:!0};case"Escape":return{type:"close",commit:!1,restoreFocus:!0,preventDefault:!0};case"Tab":return{type:"close",commit:!1,restoreFocus:!1,preventDefault:!1};default:return Gt(n)?{type:"type-ahead",char:n,preventDefault:!1}:xt}}var To=500;function So(){return{buffer:"",lastTime:0}}function Eo(e,t,n,r,o=To){if(t.length!==1)return{newState:e,matchedIndex:null};let a=(n-e.lastTime>o?"":e.buffer)+t.toLowerCase(),l={buffer:a,lastTime:n};for(let d=0;d<r.length;d++){let s=r[d];if(!s.disabled&&s.label.toLowerCase().startsWith(a))return{newState:l,matchedIndex:d}}return{newState:l,matchedIndex:null}}var Io={};Jt(Io,{findVariantByOptions:()=>Ao,isOptionValueAvailable:()=>Lo,toPickerVariant:()=>Mo});function wn(e){return e.availableForSale&&!e.currentlyNotInStock&&e.quantityAvailable!=null&&e.quantityAvailable<=0}function Ee(e,t){return e.availableForSale?e.currentlyNotInStock||e.quantityAvailable==null||wn(e)?!0:e.quantityAvailable>=t:!1}function Ve(e){return e.currentlyNotInStock||e.quantityAvailable==null||wn(e)?null:Math.max(0,e.quantityAvailable)}function Ao(e,t){if(e.length===0)return null;for(let n of e){if(n.optionValues.length!==t.length)continue;let r=!0;for(let o=0;o<n.optionValues.length;o++)if(n.optionValues[o]!==t[o]){r=!1;break}if(r)return n}return null}function Lo(e,t,n,r){for(let o of e){if(!o.available||o.optionValues[t]!==n)continue;let i=!0;for(let a=0;a<o.optionValues.length;a++)if(a!==t&&o.optionValues[a]!==r[a]){i=!1;break}if(i)return!0}return!1}function Mo(e,t){return{id:e.id,optionValues:e.selectedOptions.map(n=>n.value),available:t!==void 0?Ee(e,t):e.availableForSale}}var Kt="_lb_v",vt=null;function Po(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24),t>>>=0;return t>>>0}function _n(){try{let e=window.localStorage.getItem(Kt);if(e)return e;let t=Yt();return window.localStorage.setItem(Kt,t),t}catch{return vt||(vt=Yt()),vt}}function Yt(){return Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}function Bo(e,t,n){let r=e.slice().sort((a,l)=>a.id<l.id?-1:a.id>l.id?1:0),o=Po(t+":"+n)%100,i=0;for(let a of r)if(i+=Math.max(0,a.abWeight),o<i)return a;return r[r.length-1]}function Cn(e,t){let n=new Map;for(let o of e){if(!o.abTestId)continue;let i=n.get(o.abTestId);i?i.push(o):n.set(o.abTestId,[o])}if(n.size===0)return e.slice();let r=new Map;return n.forEach((o,i)=>{if(o.length===1){r.set(i,o[0]);return}r.set(i,Bo(o,t,i))}),e.filter(o=>!o.abTestId||r.get(o.abTestId)===o)}function le(e){return t=>{try{return new Intl.NumberFormat(void 0,{style:"currency",currency:e}).format(t/100)}catch{return e+" "+(t/100).toFixed(2)}}}var kt="_lime_bundle_gid",qo="_lime_bundle_type";function se(e,t){return[{key:kt,value:e},{key:qo,value:t}]}function kn(e){let t=e.slice(e.lastIndexOf("/")+1),n=Number(t);return Number.isFinite(n)&&t!==""?n:e}function Ue(e){if(!e)return 0;let t=parseFloat(e);return Number.isFinite(t)?Math.round(t*100):0}function Ro(e){let t=e?.width,n=e?.height;return typeof t!="number"||typeof n!="number"||t<=0||n<=0?null:t/n}function No(e,t,n){return{id:kn(e.id),title:e.title,options:(e.selectedOptions??[]).map(r=>r.value),available:Ee(e,t),price:Ue(e.price?.amount),compareAtPrice:Ue(e.compareAtPrice?.amount),unitPrice:yn(e.unitPrice,e.unitPriceMeasurement,n),image:e.image?.url??null,inventoryQuantity:Ve(e)}}function _e(e,t,n){let r=n.allowedVariantIds,o=e.variants.nodes.filter(s=>!r||r.length===0||r.includes(s.id)),i=e.priceRange.minVariantPrice.currencyCode,a=_t(n.quantities,e.id,o[0]?.id??""),l=o.map(s=>{let u=_t(n.quantities,e.id,s.id),c=No(s,u,i);return u!==a&&(c.quantity=u),c}),d=l.find(s=>s.available)??l[0];return{productId:kn(e.id),title:e.title,url:e.handle?"/products/"+e.handle:null,featuredImage:e.featuredImage?.url??null,featuredImageRatio:Ro(e.featuredImage),quantity:a,selectedVariantId:d?d.id:"",optionNames:(o[0]?.selectedOptions??[]).map(s=>s.name),variants:l}}function ze(e){return e.products.map((t,n)=>_e(t,e.id,{quantities:{productQuantities:e.productQuantities,variantQuantities:e.variantQuantities},allowedVariantIds:e.selectedVariantIds?.[n]??null}))}function Z(e,t){for(let n=0;n<e.variants.length;n++)if(String(e.variants[n].id)===String(t))return e.variants[n];return e.variants[0]}function Tn(e){let t=Z(e,e.selectedVariantId);if(t&&t.available!==!1)return t;for(let n=0;n<e.variants.length;n++)if(e.variants[n].available!==!1)return e.variants[n];return null}function Sn(e,t){if(!e.variants||!t)return null;for(let n=0;n<e.variants.length;n++){let r=e.variants[n];if(!r.options||r.options.length!==t.length)continue;let o=!0;for(let i=0;i<r.options.length;i++)if(r.options[i]!==t[i]){o=!1;break}if(o)return r}return null}function En(e,t,n,r){for(let o=0;o<e.length;o++){let i=e[o];if(i.available===!1||!i.options||i.options[t]!==n)continue;let a=!0;for(let l=0;l<i.options.length;l++)if(l!==t&&i.options[l]!==r[l]){a=!1;break}if(a)return!0}return!1}function In(e){let t=[];for(let n=0;n<e.length;n++){let r=Z(e[n],e[n].selectedVariantId),o=r.quantity||e[n].quantity||1;t.push({variantId:Number(e[n].selectedVariantId),quantity:o,priceCents:(r.price||0)*o})}return t}function Ho(e,t,n){let r=0,o=0;for(let i=0;i<e.length;i++){let a=Z(e[i],e[i].selectedVariantId),l=a.quantity||e[i].quantity||1,d=a.price*l;if(r+=d,t==="percentage"){let s=Math.floor(a.price*n/100);o+=(a.price-s)*l}else o+=d}if(t==="fixed_amount"&&(o=Math.max(0,r-Math.round(n*100))),t==="flat_price"){let i=Math.round(n*100);o=i<r?i:r}return{totalPrice:r,salePrice:o,savings:r-o}}function Tt(e,t,n){let r=e.classList?.contains("lb-fixed")?e:e.querySelector(".lb-fixed");if(!r)return;let{totalPrice:o,salePrice:i,savings:a}=Ho(t,r.getAttribute("data-discount-type")||"",parseFloat(r.getAttribute("data-discount-value")??"")||0),l=e.querySelector("[data-sale-price]"),d=e.querySelector("[data-compare-price]"),s=e.querySelector("[data-savings-bar]"),u=e.querySelector("[data-savings-amount]"),c=e.querySelector("[data-savings-percent]");if(l&&(l.textContent=n(i)),d&&(a>0?(d.textContent=n(o),d.style.display=""):d.style.display="none"),s)if(a>0){if(u&&(u.textContent=n(a)),c){let p=o>0?Math.round(a*100/o):0;c.textContent="("+p+"%)"}s.style.display=""}else s.style.display="none"}function Qe(e,t,n){let r=e.querySelectorAll("[data-variant-option]");if(!r.length)return;function o(s){return parseInt(s.getAttribute("data-option-position")??"",10)}function i(){let s=[];for(let u=0;u<r.length;u++){let c=o(r[u]);!c||c<1||(s[c-1]=r[u].value)}return s}function a(s){if(!(!s||!s.options))for(let u=0;u<r.length;u++){let c=o(r[u]);if(!c||c<1)continue;let p=s.options[c-1];r[u].value!==p&&(r[u].value=p)}}function l(s,u){for(let c=0;c<r.length;c++){let p=r[c],f=o(p);if(!f||f<1)continue;let b=p.options;for(let v=0;v<b.length;v++)b[v].disabled=!En(s.variants,f-1,b[v].value,u)}}let d=t();if(d){let s=Z(d,d.selectedVariantId);s&&s.options&&l(d,s.options)}for(let s=0;s<r.length;s++)r[s].addEventListener("change",u=>{u.stopPropagation();let c=t();if(!c)return;let p=Sn(c,i());if(!p){let f=Z(c,c.selectedVariantId);a(f),f&&f.options&&l(c,f.options);return}c.selectedVariantId=p.id,l(c,p.options),n(p,c)})}function We(e,t,n){if(!t.variants.length)return;let r=e.querySelector(".lb-bundle-variant-badge");r&&!r.textContent&&(r.textContent=n.title);let o=e.querySelector(".lb-bundle-variant-option-groups");o&&!o.children.length&&Do(o,t,n)}function Do(e,t,n){let r=t.optionNames||[];for(let o=0;o<r.length;o++){let i=document.createElement("div");i.className="lb-bundle-variant-option-group";let a=document.createElement("span");a.className="lb-bundle-variant-option-label",a.textContent=r[o],i.appendChild(a);let l=document.createElement("select");l.className="lb-bundle-variant-select",l.setAttribute("data-variant-option",""),l.setAttribute("data-option-position",String(o+1)),l.setAttribute("data-product-id",String(t.productId)),l.name="lb-variant-"+t.productId+"-"+(o+1),l.setAttribute("aria-label",r[o]);let d=Object.create(null);for(let s of t.variants){let u=s.options&&s.options[o];if(!u||d[u])continue;d[u]=!0;let c=document.createElement("option");c.value=u,c.textContent=u,n.options&&n.options[o]===u&&(c.selected=!0),l.appendChild(c)}i.appendChild(l),e.appendChild(i)}}var St=new WeakMap;function je(e,t,n){let r=e.querySelector("[data-thumbnail]");if(!r)return;let o=r.querySelector("img");if(!St.has(e)){let a=n||(o?o.src:null);a&&St.set(e,a)}let i=t.image||St.get(e)||null;if(i)if(o)o.src=i,o.srcset="";else{let a=document.createElement("img");a.src=i,a.loading="lazy",a.alt="",r.textContent="",r.appendChild(a)}}function Oo(e,t){let n=e.querySelector("[data-qty-inline]");n&&(n.textContent="\xD7"+t)}function Et(e,t,n,r){if(!t)return;je(e,t,n.featuredImage),Oo(e,t.quantity||n.quantity||1);let o=e.querySelector("[data-product-price]");o&&t.price!=null&&(o.textContent=r(t.price));let i=e.querySelector("[data-product-compare-price]");if(i){let l=t.compareAtPrice;l&&l>t.price?(i.textContent=r(l),i.hidden=!1):(i.textContent="",i.hidden=!0)}let a=e.querySelector("[data-product-unit-price]");a&&(t.unitPrice?(a.textContent=t.unitPrice,a.hidden=!1):(a.textContent="",a.hidden=!0))}function P(e,t,n){let r=document.createElement(e);r.className=t;for(let o in n)r.setAttribute(o,n[o]);return r}function $e(e,t,n){let r=e.variants.length,o=P("div","lb-bundle-product-row");n.isOos&&(o.classList.add("lb-bundle-product-row--oos"),o.setAttribute("aria-disabled","true")),o.setAttribute("data-product-id",String(e.productId)),n.bogoRole&&o.setAttribute("data-bogo-role",n.bogoRole);let i=P("div","lb-bundle-thumbnail",{"data-thumbnail":""}),a=e.featuredImageRatio;n.thumbnailRatio==="original"&&a!=null&&a>0&&i.style.setProperty("--lb-row-thumb-ratio",String(a)),o.appendChild(i);let l=P("div","lb-bundle-product-info"),d=document.createElement(n.href?"a":"span");if(d.className="lb-bundle-product-name",n.href&&(d.href=n.href),d.textContent=e.title??"",l.appendChild(d),n.isOos){let u=P("span","lb-bundle-oos-label");return u.textContent=t.outOfStock||"Out of stock",l.appendChild(u),o.appendChild(l),o}r===1&&e.variants[0]?.title!=="Default Title"&&l.appendChild(P("span","lb-bundle-variant-badge"));let s=P("span","lb-bundle-product-prices");if(s.appendChild(P("span","lb-bundle-product-compare-price",{"data-product-compare-price":"",hidden:""})),s.appendChild(P("span","lb-bundle-product-price",{"data-product-price":""})),n.inlineQuantity!=null){let u=P("span","lb-bundle-qty-inline",{"data-qty-inline":""});u.textContent="\xD7"+n.inlineQuantity,s.appendChild(u)}if(l.appendChild(s),l.appendChild(P("span","lb-bundle-product-unit-price",{"data-product-unit-price":""})),r>1&&l.appendChild(P("div","lb-bundle-variant-option-groups",{style:"--lb-row-option-count: "+(e.optionNames.length||1)})),o.appendChild(l),n.inlineQuantity==null&&o.appendChild(P("span","lb-bundle-qty-chip",{"data-qty-inline":""})),n.badgeText){let u=P("span","lb-bogo__badge");u.textContent=n.badgeText,o.appendChild(u)}return o}function de(e,t){let n=P("div",e),r=P("div","lb-bundle-header"),o=P("h3","lb-bundle-title");if(o.textContent=t.title,r.appendChild(o),t.subtitle){let p=P("p","lb-bundle-subtitle");p.textContent=t.subtitle,r.appendChild(p)}if(n.appendChild(r),t.endsAt){let p=P("div","lb-bundle-countdown",{"data-countdown":""}),f=P("span","lb-bundle-countdown-label");f.textContent=t.countdownLabel??"Limited time offer",p.appendChild(f),p.appendChild(P("span","lb-bundle-countdown-timer",{"data-countdown-timer":""})),n.appendChild(p)}let i=P("div",e+"__products lb-edge-fade");n.appendChild(i),n.appendChild(P("div","lb-bundle-divider"));let a=P("div","lb-bundle-summary",{"data-pricing-section":""}),l=P("div","lb-bundle-summary__text"),d=P("span","lb-bundle-summary__label");if(d.textContent=t.summaryLabel??"Bundle total",l.appendChild(d),t.withItemCount&&d.appendChild(P("span","",{"data-item-count":""})),t.showSavingsBar){let p=P("p","lb-bundle-savings-line",{"data-savings-bar":"",style:"display:none"});p.appendChild(document.createTextNode("Save ")),p.appendChild(P("span","",{"data-savings-amount":""})),p.appendChild(document.createTextNode(" ")),p.appendChild(P("span","",{"data-savings-percent":""})),l.appendChild(p)}a.appendChild(l);let s=P("span","lb-bundle-summary__prices");t.showComparePrice&&s.appendChild(P("span","lb-bundle-compare-price",{"data-compare-price":""})),s.appendChild(P("span","lb-bundle-sale-price",{[t.totalPriceSlot?"data-total-price":"data-sale-price"]:""})),a.appendChild(s),n.appendChild(a);let u=P("button","lb-bundle-cta",{"data-cta-text":t.ctaText,type:"button","data-add-bundle":""}),c=P("span","lb-cta-label",{"data-cta-label":""});return c.textContent=t.ctaText,u.appendChild(c),n.appendChild(u),n.appendChild(P("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),n.appendChild(P("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),{root:n,products:i,cta:u}}function An(e,t,n={}){let r=n.showCompare!==!1,o=n.showPriceEach!==!1,i=P("div","lb-volume__tiers lb-edge-fade",{role:"radiogroup","aria-label":t,"data-tier-group":""});return e.forEach((a,l)=>{let d=P("div","lb-volume__tier",{role:"radio","aria-checked":a.selected?"true":"false",tabindex:a.selected?"0":"-1","data-tier-index":String(l),"data-tier-qty":String(a.quantity),"data-tier-pct":String(a.percent),"data-tier-amt":String(a.amountCents)}),s=P("span","lb-volume__radio");s.appendChild(P("span","lb-volume__radio-dot")),d.appendChild(s);let u=P("span","lb-volume__tier-info"),c=P("span","lb-volume__tier-label");c.textContent=a.label,u.appendChild(c);let p=P("span","lb-volume__tier-price");if(r&&(a.percent>0||a.amountCents>0)&&p.appendChild(P("span","lb-volume__tier-compare")),o&&(p.appendChild(P("span","",{"data-tier-price-each":""})),n.unitLabel)){let f=P("span","lb-volume__tier-unit");f.textContent=n.unitLabel,p.appendChild(f)}if(u.appendChild(p),d.appendChild(u),a.badgeLabel||a.savingsLabel){let f=P("span","lb-volume__tier-right");if(a.badgeLabel){let b=P("span","lb-volume__tier-badge");b.textContent=a.badgeLabel,f.appendChild(b)}if(a.savingsLabel){let b=P("span","lb-volume__tier-savings");b.textContent=a.savingsLabel,f.appendChild(b)}d.appendChild(f)}i.appendChild(d)}),i}function Ge(e){let t=P("div","lb-mix-match__progress",{"data-progress":""}),n=P("div","lb-mix-match__progress-segments",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e)});for(let o=0;o<e;o++)n.appendChild(P("span","lb-mix-match__progress-segment",{"data-progress-segment":""}));t.appendChild(n);let r=P("div","lb-mix-match__progress-labels");return r.appendChild(P("span","lb-mix-match__progress-count",{"data-progress-count":"","aria-live":"polite"})),r.appendChild(P("span","lb-mix-match__progress-remaining",{"data-progress-remaining":"","aria-live":"polite"})),t.appendChild(r),t}function Ce(e){return e<10?"0"+e:String(e)}function ce(e){e._lbCountdownInterval&&(clearInterval(e._lbCountdownInterval),e._lbCountdownInterval=null);let t=e.querySelector("[data-countdown]");if(!t)return;let n=e.closest(".lb-bundle-widget"),r=n&&n.getAttribute("data-ends-at");if(!r){t.style.display="none";return}let o=new Date(r).getTime();if(isNaN(o)){t.style.display="none";return}let i=t.querySelector("[data-countdown-timer]");if(!i)return;let a;function l(){let d=o-Date.now();if(d<=0){n&&(n.style.display="none"),a&&clearInterval(a);return}let s=Math.floor(d/864e5),u=Math.floor(d%864e5/36e5),c=Math.floor(d%36e5/6e4),p=Math.floor(d%6e4/1e3);i.textContent=s>0?s+"d "+Ce(u)+"h "+Ce(c)+"m "+Ce(p)+"s":Ce(u)+"h "+Ce(c)+"m "+Ce(p)+"s"}l(),o-Date.now()>0&&(a=setInterval(l,1e3),e._lbCountdownInterval=a)}var ue={locale:"en",addItem:"Add",addedItem:"Added",removeItem:"Remove",swapItem:"Swap",required:"Required",soldOut:"Sold out",outOfStock:"Out of stock",itemsOutOfStock:{one:"__COUNT__ item out of stock",other:"__COUNT__ items out of stock"},quantity:"Quantity",increaseQuantity:"Increase quantity",decreaseQuantity:"Decrease quantity",allTypes:"All",editSelection:"Edit selection",addToCart:"Add to cart",bundlePrice:"Bundle price",save:"Save",complete:"Complete",ofSelected:"__COUNT__ of __TOTAL__ added",moreToGo:"__COUNT__ more to go",nProductsShown:"__COUNT__ products shown",bundleComplete:"Your bundle is complete",chooseMoreUnlock:"Choose __COUNT__ more to unlock __PCT__% off",chooseMoreComplete:"Choose __COUNT__ more to complete your bundle",stepOf:"Step __STEP__ of __TOTAL__",stepsCompleted:"__COUNT__ of __TOTAL__ steps completed",doorChoose:"Choose your products",doorContinue:"Continue building",doorQuickSteps:{one:"__COUNT__ quick step",other:"__COUNT__ quick steps"},doorStepsToGo:{one:"__COUNT__ step to go",other:"__COUNT__ steps to go"},each:" each",buyQty:"Buy __COUNT__",itemCount:{one:"__COUNT__ item",other:"__COUNT__ items"},needsSpots:{one:"Needs __COUNT__ spot",other:"Needs __COUNT__ spots"}};function Ke(e,t){let n=e.itemsOutOfStock,r;if(n&&typeof n=="object"){let o=new Intl.PluralRules(e.locale||"en").select(t);r=n[o]||n.other}else r=n;return(r||"__COUNT__ items out of stock").split("__COUNT__").join(String(t))}function Ln(e){let t=e.ownerDocument,n=t&&t.defaultView;if(!n)return null;let r=e.parentElement;for(;r&&r!==t.body;){let o=n.getComputedStyle(r).overflowY;if(o==="auto"||o==="scroll"||o==="hidden")return r;r=r.parentElement}return null}var re=[],Ye=!1;function Fo(e,t){if(e.composedPath){let r=e.composedPath();for(let o=0;o<r.length;o++)if(r[o]===t.shell||r[o]===t.listbox)return!0;return!1}let n=e.target;return t.shell.contains(n)||t.listbox.contains(n)}function Je(e){for(let t=re.length-1;t>=0;t--)Fo(e,re[t])||re[t].close()}function Mn(){for(let e=re.length-1;e>=0;e--)re[e].close()}function Vo(){Ye||(document.addEventListener("pointerdown",Je,!0),window.addEventListener("resize",Mn),window.addEventListener("scroll",Je,!0),Ye=!0)}function Uo(){Ye&&(document.removeEventListener("pointerdown",Je,!0),window.removeEventListener("resize",Mn),window.removeEventListener("scroll",Je,!0),Ye=!1)}function Pn(e){re.push(e),re.length===1&&Vo()}function Bn(e){let t=re.indexOf(e);t>=0&&re.splice(t,1),re.length===0&&Uo()}function qn(e){for(let t=re.length-1;t>=0;t--)re[t]!==e&&re[t].close()}var zo=32,Qo=8,Wo=8,It=new WeakMap;function Rn(e){return It.get(e)}function Nn(e){if(e.classList.contains("lb-dropdown-state"))return null;let t=document,n=e.getAttribute("aria-label")||"",r="lb-dd-"+Math.random().toString(36).slice(2,9);e.classList.add("lb-dropdown-state"),e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex","-1");let o=t.createElement("div");o.className="lb-dropdown",o.setAttribute("data-lb-dropdown","");let i=t.createElement("button");i.type="button",i.className="lb-dropdown-trigger",i.setAttribute("role","combobox"),i.setAttribute("aria-haspopup","listbox"),i.setAttribute("aria-expanded","false");let a=r+"-listbox";i.setAttribute("aria-controls",a),n&&i.setAttribute("aria-label",n);let l=t.createElement("span");l.className="lb-dropdown-trigger-value";let d=t.createElement("span");d.className="lb-dropdown-chevron",d.setAttribute("aria-hidden","true"),i.appendChild(l),i.appendChild(d);let s=t.createElement("ul");s.id=a,s.className="lb-dropdown-listbox",s.setAttribute("role","listbox"),n&&s.setAttribute("aria-label",n),s.hidden=!0,o.appendChild(i),e.parentNode?.insertBefore(o,e.nextSibling);let u=e.closest("[data-modal-overlay]");u?(u.appendChild(s),s.setAttribute("data-lb-dropdown-portal","")):o.appendChild(s);let c=!1,p=-1,f=ye.emptyTypeAheadState(),b=[];function v(){let A=[];for(let T=0;T<e.options.length;T++){let h=e.options[T];A.push({disabled:h.disabled,label:h.textContent||h.value})}return A}function F(){i.disabled=e.disabled;let A=v(),T=e.selectedIndex;for(l.textContent=T>=0&&A[T]?A[T].label:"";s.firstChild;)s.removeChild(s.firstChild);b=[];for(let h=0;h<A.length;h++){let S=t.createElement("li");S.id=r+"-opt-"+h,S.className="lb-dropdown-option",S.setAttribute("role","option"),S.setAttribute("aria-selected",h===T?"true":"false"),A[h].disabled&&S.setAttribute("aria-disabled","true"),S.setAttribute("data-value",e.options[h].value),S.setAttribute("data-index",String(h)),S.textContent=A[h].label,s.appendChild(S),b.push(S)}}function x(A){if(p>=0&&b[p]&&b[p].classList.remove("is-active"),p=A,A<0||!b[A]){i.setAttribute("aria-activedescendant","");return}let T=b[A];T.classList.add("is-active"),i.setAttribute("aria-activedescendant",T.id);let h=T.offsetTop,S=h+T.offsetHeight,U=s.scrollTop,g=U+s.clientHeight;h<U?s.scrollTop=h:S>g&&(s.scrollTop=S-s.clientHeight)}function k(){let A=i.getBoundingClientRect();if(A.width===0)return!1;let h=Math.min(b.length||1,Wo)*zo+Qo,S=Ln(i),U=S?{top:S.getBoundingClientRect().top,bottom:S.getBoundingClientRect().bottom}:void 0,g=ye.computePosition({trigger:{top:A.top,bottom:A.bottom,left:A.left,width:A.width},viewportHeight:window.innerHeight,desiredHeight:h,clip:U});return s.setAttribute("data-placement",g.placement),s.style.maxHeight=g.maxHeight+"px",s.hasAttribute("data-lb-dropdown-portal")&&(s.style.top=g.offsetTop+"px",s.style.left=g.offsetLeft+"px",s.style.width=g.width+"px"),!0}function Q(){if(c)return;qn($),c=!0,s.hidden=!1,i.setAttribute("aria-expanded","true"),k()||requestAnimationFrame(()=>{k()});let A=v(),T=e.selectedIndex;T>=0&&A[T]&&!A[T].disabled?x(T):x(ye.firstEnabled(A)),Pn($)}function I(A){c&&(c=!1,s.hidden=!0,i.setAttribute("aria-expanded","false"),i.setAttribute("aria-activedescendant",""),p>=0&&b[p]&&b[p].classList.remove("is-active"),p=-1,Bn($),A&&i.focus())}function N(A){let T=e.options[A];!T||T.disabled||(e.value!==T.value&&(e.value=T.value,e.dispatchEvent(new Event("change",{bubbles:!0}))),F(),I(!0))}function w(A){let T=v(),h=ye.handleKey({key:A.key,ctrlKey:A.ctrlKey,metaKey:A.metaKey,altKey:A.altKey,shiftKey:A.shiftKey},{isOpen:c,activeIndex:p,selectedIndex:e.selectedIndex,options:T});switch(h.preventDefault&&A.preventDefault(),h.type){case"open":Q(),h.activeIndex>=0&&x(h.activeIndex);break;case"close":I(h.restoreFocus);break;case"move-active":x(h.activeIndex);break;case"commit":N(h.index);break;case"type-ahead":{let S=ye.pushTypeAheadChar(f,h.char,Date.now(),T);f=S.newState,S.matchedIndex!==null&&(c||Q(),x(S.matchedIndex));break}}}function _(A){A.preventDefault(),c?I(!1):Q()}function m(A){let T=A.target;for(;T&&T!==s;){if(T.classList&&T.classList.contains("lb-dropdown-option")){let h=parseInt(T.getAttribute("data-index")??"",10);return isNaN(h)?null:h}T=T.parentNode}return null}function D(A){let T=m(A);T!==null&&N(T)}function H(A){let T=A.target;for(;T&&T!==s;){if(T.classList&&T.classList.contains("lb-dropdown-option")){if(T.getAttribute("aria-disabled")==="true")return;let h=parseInt(T.getAttribute("data-index")??"",10);!isNaN(h)&&h!==p&&x(h);return}T=T.parentNode}}function O(){setTimeout(()=>{c&&(o.contains(document.activeElement)||I(!1))},0)}function B(){F()}let G=new MutationObserver(()=>{F()});G.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["disabled","value","selected"]});function K(A){A.preventDefault()}i.addEventListener("click",_),i.addEventListener("keydown",w),o.addEventListener("focusout",O),s.addEventListener("mousedown",K),s.addEventListener("click",D),s.addEventListener("mousemove",H),e.addEventListener("change",B);function j(){c&&I(!1),G.disconnect(),i.removeEventListener("click",_),i.removeEventListener("keydown",w),o.removeEventListener("focusout",O),s.removeEventListener("mousedown",K),s.removeEventListener("click",D),s.removeEventListener("mousemove",H),e.removeEventListener("change",B),o.parentNode?.removeChild(o),s.parentNode?.removeChild(s),e.classList.remove("lb-dropdown-state"),e.removeAttribute("aria-hidden"),e.removeAttribute("tabindex"),It.delete(e)}let $={shell:o,listbox:s,select:e,close:()=>I(!1),destroy:j};return It.set(e,$),F(),$}var jo="select.lb-bundle-variant-select:not(.lb-dropdown-state), select.lb-mix-match__variant-select:not(.lb-dropdown-state)";function Hn(e){let n=(e??document).querySelectorAll(jo);for(let r=0;r<n.length;r++)Nn(n[r])}function Dn(e){let n=(e??document).querySelectorAll("select.lb-dropdown-state");for(let r=0;r<n.length;r++)Rn(n[r])?.destroy()}function he(e){return Hn(e),()=>Dn(e)}function On(e,t,n,r){let o=t.widgetConfig,i=ze(t);if(!i.length)return;let a=i.filter(c=>!c.variants.some(p=>p.available)),l=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",d=le(l),s=ue,u=de("lb-fixed",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||s.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});u.root.setAttribute("data-discount-type",t.discountConfig.discountType),u.root.setAttribute("data-discount-value",String(t.discountConfig.discountValue));for(let c of i){let p=!c.variants.some(F=>F.available),f=$e(c,s,{isOos:p,href:c.url,thumbnailRatio:o.productList?.thumbnailRatio});if(u.products.appendChild(f),p)continue;let b=Tn(c);b&&(c.selectedVariantId=b.id);let v=b??Z(c,c.selectedVariantId);We(f,c,v),Et(f,v,c,d),Qe(f,()=>c,(F,x)=>{Et(f,F,x,d),Tt(u.root,i,d)})}if(a.length>0){u.cta.disabled=!0;let c=u.cta.querySelector("[data-cta-label]");c&&(c.textContent=Ke(s,a.length))}else u.cta.addEventListener("click",()=>{n(In(i).map(c=>({merchandiseId:"gid://shopify/ProductVariant/"+c.variantId,quantity:c.quantity,attributes:se(t.id,t.bundleType)})))});e.appendChild(u.root),ce(u.root),Tt(u.root,i,d),r?.(he(u.root))}function X(e,t){let n=e;for(let r in t)n=n.split("__"+r+"__").join(String(t[r]));return n}function Xe(e,t){let n=t.needsSpots;if(!n)return"Needs "+e+" spots";let r=new Intl.PluralRules(t.locale||"en").select(e);return X(n[r]||n.other||"__COUNT__",{COUNT:e})}function Ze(e,t,n){return X(n.ofSelected||"__COUNT__ of __TOTAL__ added",{COUNT:e,TOTAL:t})}function Fn(e,t){return e>0?X(t.moreToGo||"__COUNT__ more to go",{COUNT:e}):t.complete||"Complete"}function Vn(e,t,n,r){if(e<=0)return r.bundleComplete||"Your bundle is complete";let o=t==="percentage"&&n?Math.round(n):0;return o>0?X(r.chooseMoreUnlock||"Choose __COUNT__ more to unlock __PCT__% off",{COUNT:e,PCT:o}):X(r.chooseMoreComplete||"Choose __COUNT__ more to complete your bundle",{COUNT:e})}var $o={min:1,max:99};function ee(e,t,n){if(n!=null){let o=t["gid://shopify/ProductVariant/"+n];if(o&&typeof o.min=="number"&&typeof o.max=="number")return o}let r=t["gid://shopify/Product/"+e];return!r||typeof r.min!="number"||typeof r.max!="number"?$o:r}function pe(e,t){if(e==null)return;let n=t["gid://shopify/ProductVariant/"+e];if(!(!n||typeof n.min!="number"||typeof n.max!="number"))return n}function et(e,t){let n=e??{};if(!t)return n;let r=Object.keys(t);if(r.length===0)return n;let o={...n};for(let i of r)o[i]=t[i];return o}function tt(e,t,n){return ee(e,t,n).min}function oe(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n].quantity||1;return t}function me(e,t){for(let n=0;n<e.length;n++)if(e[n]&&e[n].variantId===t)return n;return-1}function Un(e,t){let n=me(e,t);return n===-1?0:e[n].quantity||0}function zn(e,t){return e.min<=t}function Qn(e,t,n,r=0,o=0,i){let a=Math.min(e.max-o,r+t);return typeof i=="number"&&(a=Math.min(a,i)),typeof n=="number"?Math.min(a,n):a}var Wn=[120,180,240],At=[480,600,768,1024],jn="60px",$n="(max-width: 767px) 45vw, 228px";function ke(e,t){return e&&(/[?&]width=\d+/.test(e)?e.replace(/([?&])width=\d+/,"$1width="+t):e+(e.indexOf("?")===-1?"?":"&")+"width="+t)}function Ie(e,t){return e?t.map(n=>ke(e,n)+" "+n+"w").join(", "):""}function nt(e,t){let n=null;return function(...r){n&&clearTimeout(n),n=setTimeout(()=>e.apply(this,r),t)}}function Te(e){return e?e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase():""}var Gn=600;function rt(e,t,n){let{t:r,rulesMap:o,capacity:i,formatMoney:a}=n,l=ee(e.id,o),d=document.createElement("div");d.className="lb-mix-match__modal-product",e.available||(d.className+=" lb-mix-match__modal-product--sold-out"),d.setAttribute("data-product-item",""),d.setAttribute("data-title",Te(e.title)),d.setAttribute("data-type",e.type||"");let s=!1,u=!1,c=document.createElement("div");c.className="lb-mix-match__modal-product-thumb";let p=document.createElement("span");p.className="lb-mix-match__modal-added-badge",p.textContent=r.addedItem||"Added",p.hidden=!0,c.appendChild(p);let f=e.variants.find(g=>g.available)??null,b=f&&f.image||e.featuredImage;if(b){let g=document.createElement("img");g.src=ke(b,Gn),g.srcset=Ie(b,At),g.sizes=$n,g.alt=e.title,g.loading="lazy",c.appendChild(g)}d.appendChild(c);let v=document.createElement("div");v.className="lb-mix-match__modal-product-info";let F=document.createElement("p");if(F.className="lb-mix-match__modal-product-title",e.url){let g=document.createElement("a");g.href=e.url,g.target="_blank",g.rel="noopener noreferrer",g.textContent=e.title,F.appendChild(g)}else F.textContent=e.title;v.appendChild(F);let x=f??(e.variants.length>0?e.variants[0]:null),k=g=>ee(e.id,o,g?g.id:null),Q=x?k(x).min:1,I=document.createElement("p");I.className="lb-mix-match__modal-product-price",I.setAttribute("data-row-price","");let N=document.createElement("span");N.setAttribute("data-row-price-sale",""),x&&(N.textContent=a(x.price*Q)),I.appendChild(N);let w=document.createElement("s");w.className="lb-mix-match__modal-product-compare",w.setAttribute("data-row-compare",""),I.appendChild(w),v.appendChild(I);function _(g,V,C){let y=V&&V.compareAtPrice?V.compareAtPrice*C:0,L=V?V.price*C:0;y>L?(g.textContent=a(y),g.hidden=!1):(g.textContent="",g.hidden=!0)}_(w,x,Q);let m=document.createElement("p");m.className="lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price",m.setAttribute("data-row-unit-price","");let D=x?x.unitPrice:null;D?m.textContent=D:m.hidden=!0,v.appendChild(m);let H=null,O=null,B=k(x).min,G=k(x).max,K=null,j=null;if(e.available&&n.showQtySelector){H=document.createElement("div"),H.className="lb-bundle-variant-option-group lb-mix-match__qty-stepper-group";let g=document.createElement("div");g.className="lb-mix-match__qty-stepper",g.setAttribute("role","group"),g.setAttribute("aria-label",r.quantity||"Quantity");let V=document.createElement("button");V.type="button",V.className="lb-mix-match__qty-stepper-button lb-mix-match__qty-stepper-button--minus",V.setAttribute("aria-label",r.decreaseQuantity||"Decrease quantity"),V.textContent="\u2212",O=document.createElement("span"),O.className="lb-mix-match__qty-stepper-value",O.setAttribute("data-row-qty",""),O.setAttribute("aria-live","polite"),O.textContent=String(k(x).min);let C=document.createElement("button");C.type="button",C.className="lb-mix-match__qty-stepper-button lb-mix-match__qty-stepper-button--plus",C.setAttribute("aria-label",r.increaseQuantity||"Increase quantity"),C.textContent="+",g.appendChild(V),g.appendChild(O),g.appendChild(C),H.appendChild(g);let y=O;K=()=>{y.textContent=String(B),y.setAttribute("data-qty",String(B)),V.disabled=u||B<=k(x).min,C.disabled=u||B>=G},j=(E,R=0)=>{let M=E?E.id:null,q=M===null?0:i.ownQty(M),z=M===null?0:i.productUnitsElsewhere(e.id,M),W=M===null?0:i.swapUnits(e.id,M),J=E?E.inventoryQuantity:null,te=Math.max(0,R-q),be=typeof J=="number"?Math.max(0,J-te):void 0,xe=pe(M,o)?.max,ne=k(E).min;G=W>0?typeof be=="number"?Math.min(W,be):W:Qn(l,i.remainingSpots(),be,q,z,xe),G<ne?B=ne:(B>G&&(B=G),B<ne&&(B=ne)),K()};let L=()=>{x&&i.commitQty(x.id,B)&&n.onCommittedQtyChanged()};V.addEventListener("click",()=>{B>k(x).min&&(B-=1),K(),L()}),C.addEventListener("click",()=>{B<G&&(B+=1),K(),L()}),x?j(x):K()}let $=e.variants.slice(),A=[];if($.length>1){let g=e.optionNames||[];x=$.find(M=>M.available!==!1)??$[0];let V=()=>{let M=A.map(q=>q.value);for(let q of $)if(!(!q.options||q.options.length!==M.length)&&q.options.every((z,W)=>z===M[W]))return q;return null},C=M=>{if(!(!M||!M.options))for(let q=0;q<A.length&&q<M.options.length;q++)A[q].value!==M.options[q]&&(A[q].value=M.options[q])},y=(M,q,z)=>{for(let W of $){if(W.available===!1||!W.options||W.options[M]!==q)continue;let J=!0;for(let te=0;te<W.options.length;te++)if(te!==M&&W.options[te]!==z[te]){J=!1;break}if(J)return!0}return!1},L=M=>{for(let q=0;q<A.length;q++){let z=A[q];for(let W=0;W<z.options.length;W++)z.options[W].disabled=!y(q,z.options[W].value,M)}},E=()=>{let M=V();if(!M){C(x),x?.options&&L(x.options);return}x=M,d.setAttribute("data-selected-variant-id",String(M.id));let q=k(M).min;N.textContent=a(M.price*q),_(w,M,q),M.unitPrice?(m.textContent=M.unitPrice,m.hidden=!1):(m.textContent="",m.hidden=!0);let z=c.querySelector("img"),W=M.image||e.featuredImage;z&&W&&(z.src=ke(W,Gn),z.srcset=Ie(W,At)),j?.(M,i.variantUnitsElsewhere(M.id)),M.options&&L(M.options),U()},R=document.createElement("div");R.className="lb-bundle-variant-option-groups";for(let M=0;M<g.length;M++){let q=g[M],z=document.createElement("div");z.className="lb-bundle-variant-option-group";let W=document.createElement("span");W.className="lb-bundle-variant-option-label",W.textContent=q,z.appendChild(W);let J=document.createElement("select");J.className="lb-mix-match__variant-select",J.setAttribute("data-variant-option",""),J.setAttribute("data-option-position",String(M+1)),J.name="lb-variant-"+e.id+"-"+(M+1),J.setAttribute("aria-label",q);let te=Object.create(null),be=x?.options?.[M];for(let xe of $){let ne=xe.options&&xe.options[M];if(!ne||te[ne])continue;te[ne]=!0;let He=document.createElement("option");He.value=ne,He.textContent=ne,ne===be&&(He.selected=!0),J.appendChild(He)}J.addEventListener("change",E),A.push(J),z.appendChild(J),R.appendChild(z)}v.appendChild(R),x&&(d.setAttribute("data-selected-variant-id",String(x.id)),x.options&&L(x.options))}else if($.length===1&&$[0].title!=="Default Title"){let g=document.createElement("span");g.className="lb-mix-match__filled-variant",g.textContent=$[0].title,v.appendChild(g)}let T=null;e.available&&(T=document.createElement("span"),T.className="lb-mix-match__modal-needs-spots",T.hidden=!0,v.appendChild(T));let h=null;if(e.available){let g=document.createElement("div");g.className="lb-mix-match__modal-product-actions",H&&g.appendChild(H),h=document.createElement("button"),h.type="button",h.className="lb-mix-match__modal-add",h.textContent=r.addItem||"Add",h.setAttribute("aria-label",(r.addItem||"Add")+" "+e.title),h.setAttribute("data-add-product",String(t)),g.appendChild(h),v.appendChild(g)}else{let g=document.createElement("span");g.className="lb-mix-match__modal-sold-out-label",g.textContent=r.soldOut||"Sold out",d.setAttribute("aria-disabled","true"),v.appendChild(g)}d.appendChild(v);let S=x?x.id:null;function U(){if(!x)return;let g=x,V=g.inventoryQuantity,C=typeof V=="number"?i.variantUnitsElsewhere(g.id):0,y=i.isInBundle(g.id);if(j){let z=i.ownQty(g.id);z>0?B=z:S!==g.id&&(B=k(g).min),S=g.id,j(g,C)}let L=i.swapUnits(e.id,g.id),E=k(g),R=L>=E.min,M=i.remainingSpots(),q=!y&&!R&&!zn(E,M);if(T&&(q&&M>0?(T.textContent=Xe(E.min,r),T.hidden=!1):T.hidden=!0),h)if(y)h.disabled=!1,i.canRemove(g.id)?(h.textContent=r.removeItem||"Remove",h.setAttribute("aria-label",(r.removeItem||"Remove")+" "+e.title),h.classList.remove("lb-mix-match__modal-add--required")):(h.disabled=!0,h.textContent=r.required||"Required",h.setAttribute("aria-label",e.title+" is required and cannot be removed"),h.classList.add("lb-mix-match__modal-add--required")),h.classList.add("lb-mix-match__modal-add--added"),d.classList.add("lb-mix-match__modal-product--in-bundle"),p.hidden=!1;else{let z=r.swapItem||"Swap",W=R?z:r.addItem||"Add";h.textContent=W,h.setAttribute("aria-label",W+" "+e.title),h.classList.remove("lb-mix-match__modal-add--added"),h.classList.remove("lb-mix-match__modal-add--required"),d.classList.remove("lb-mix-match__modal-product--in-bundle"),p.hidden=!0;let J=typeof V=="number"?Math.max(0,V-C)<E.min:!1;if(R)h.disabled=J;else{let te=l.max-i.productUnitsElsewhere(e.id,g.id)<E.min;h.disabled=J||te||q||i.isFull()}}s=!e.available,u=!e.available||!y&&!!h?.disabled,K?.();for(let z of A)z.disabled=s}return{el:d,refresh:U}}var Go='a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';function ot(e){let t=e.querySelectorAll(Go),n=[];for(let r=0;r<t.length;r++)t[r].offsetParent!==null&&n.push(t[r]);return n}var Lt=0,Ae=0;function it(){if(Ae++,Ae>1)return;Lt=window.pageYOffset||document.documentElement.scrollTop;let e=document.body;e.style.position="fixed",e.style.top="-"+Lt+"px",e.style.left="0",e.style.right="0",e.style.overflow="hidden"}function at(){if(Ae<=0||(Ae--,Ae>0))return;let e=document.body;e.style.position="",e.style.top="",e.style.left="",e.style.right="",e.style.overflow="",window.scrollTo(0,Lt)}function lt(e,t,n){let r=[],o=[];for(let i=0;i<t.length;i++)(n(i)?o:r).push(t[i]);for(let i of r)e.appendChild(i);for(let i of o)e.appendChild(i)}var Le="__all__",Ko=300,Yo=200;function Kn(e){let{container:t,data:n,t:r,eligibleProducts:o,items:i}=e,a=t.querySelector("[data-modal-overlay]");a&&e.portalTarget&&e.portalTarget.appendChild(a);let l=h=>a?a.querySelector(h):null,d=l('[role="dialog"]'),s=l("[data-modal-search]"),u=l("[data-modal-search-clear]"),c=l("[data-modal-list]"),p=l("[data-modal-empty]"),f=l("[data-modal-live]"),b=l("[data-modal-close]"),v=l("[data-modal-done]"),F=l("[data-modal-footer-count]"),x=l("[data-modal-subtitle]"),k=l("[data-modal-filters]"),Q=n.showTypeFilters!==!1,I=Le,N=!1,w=!1,_=!1,m=[];function D(){for(let h of m)h.refresh()}function H(){let h=Math.min(oe(i),e.requiredQty),S=Math.max(0,e.requiredQty-h);F&&(F.textContent=Ze(h,e.requiredQty,r)),x&&(x.textContent=Vn(S,n.discountType,n.discountValue,r))}function O(){D(),H()}function B(){if(c){e.dropdown?.unbindAll(c),c.innerHTML="",m=[];for(let h=0;h<o.length;h++){let S=rt(o[h],h,{t:r,rulesMap:e.rulesMap,showQtySelector:e.showQtySelector,capacity:e.rowCapacity,formatMoney:e.formatMoney,onCommittedQtyChanged:()=>{e.onSelectionChanged(),O()}});m.push(S),c.appendChild(S.el)}e.dropdown?.bindAll(c),c.addEventListener("click",G)}}function G(h){let S=h.target.closest("[data-add-product]");if(!S||S.disabled)return;let U=parseInt(S.getAttribute("data-add-product")??"",10),g=o[U];if(!g)return;let V=S.closest(".lb-mix-match__modal-product"),C=V&&V.getAttribute("data-selected-variant-id"),y=(C?g.variants.find(q=>q.id===parseInt(C,10)):null)??null;if(y||(y=g.variants.find(q=>q.available)??null),!y)return;if(e.isInBundle(y.id)){e.removeVariant(y.id),O();return}let L=V?.querySelector("[data-row-qty]"),E=L?Math.max(1,parseInt(L.getAttribute("data-qty")||L.textContent||"",10)||1):tt(g.id,e.rulesMap,y.id),R={productId:g.id,variantId:y.id,title:g.title,url:g.url||null,variantTitle:y.title,featuredImage:y.image||g.featuredImage||null,price:y.price,compareAtPrice:y.compareAtPrice||null,unitPrice:y.unitPrice||null,quantity:E},M=e.swapUnitsFor(g.id,y.id);if(M>0){e.swapVariant(R,Math.min(E,M)),O();return}e.atCapacity()||(e.addSelection(R),O())}function K(){if(!k||!Q)return;let h=[],S=Object.create(null);for(let U of o){let g=(U.type||"").trim();g&&!S[g]&&(S[g]=!0,h.push(g))}if(h.length<2){k.style.display="none",d?.classList.add("lb-mix-match__modal--filters-hidden");return}k.innerHTML="";for(let U of[Le,...h]){let g=document.createElement("button");g.type="button",g.className="lb-mix-match__filter",g.setAttribute("data-filter",U),g.setAttribute("aria-pressed",U===I?"true":"false"),U===I&&g.classList.add("lb-mix-match__filter--active"),g.textContent=U===Le?r.allTypes||"All":U,g.addEventListener("click",()=>{I=U,j(),$(s?s.value:"")}),k.appendChild(g)}}function j(){if(!k)return;let h=k.querySelectorAll("[data-filter]");for(let S=0;S<h.length;S++){let U=h[S].getAttribute("data-filter")===I;h[S].classList.toggle("lb-mix-match__filter--active",U),h[S].setAttribute("aria-pressed",U?"true":"false")}}function $(h){if(!c)return;let S=Te(h),U=c.querySelectorAll("[data-product-item]"),g=0;for(let V=0;V<U.length;V++){let C=U[V].getAttribute("data-title")??"",y=U[V].getAttribute("data-type")||"",L=(!S||C.indexOf(S)!==-1)&&(I===Le||y===I);U[V].classList.toggle("lb-hidden",!L),L&&g++}p&&(p.style.display=g===0&&S.length>0?"":"none"),u&&(u.style.display=h.length>0?"":"none"),f&&(f.textContent=X(r.nProductsShown||"__COUNT__ products shown",{COUNT:g}))}if(s){let h=nt(()=>$(s.value),Yo);s.addEventListener("input",h)}u&&u.addEventListener("click",()=>{s&&(s.value="",$(""),s.focus())});function A(){if(!(!a||_)){if(_=!0,N||(B(),N=!0),w||(K(),w=!0),O(),I=Le,j(),s&&(s.value=""),$(s?s.value:""),c){let h=Object.create(null);for(let S of i)h[String(S.productId)]=!0;lt(c,m.map(S=>S.el),S=>h[String(o[S].id)]===!0),c.scrollTop=0}a.style.display="",a.offsetHeight,a.classList.add("lb-mix-match__modal-overlay--open"),it(),setTimeout(()=>{b?b.focus():d?.focus()},50)}}function T(){if(!a||!_)return;_=!1,a.classList.remove("lb-mix-match__modal-overlay--open"),at(),setTimeout(()=>{_||(a.style.display="none")},Ko);let h=e.fallbackFocus;h&&typeof h.focus=="function"&&setTimeout(()=>h.focus(),0)}if(b?.addEventListener("click",T),v?.addEventListener("click",T),a){let h=null;a.addEventListener("mousedown",S=>{h=S.target}),a.addEventListener("mouseup",S=>{S.target===a&&h===a&&T(),h=null})}return document.addEventListener("keydown",h=>{if(_){if(h.key==="Escape"){h.preventDefault(),T();return}if(h.key==="Tab"&&d){let S=ot(d);if(S.length===0){h.preventDefault();return}let U=S[0],g=S[S.length-1];h.shiftKey&&document.activeElement===U?(h.preventDefault(),g.focus()):!h.shiftKey&&document.activeElement===g&&(h.preventDefault(),U.focus())}}}),{open:A,close:T,isOpen:()=>_,refresh:O,overlay:a}}function Yn(e,t){return Math.max(0,t-oe(e))}function Mt(e,t){return oe(e)>=t}function Jn(e,t){let n=0;for(let r=0;r<e.length;r++)e[r].variantId===t&&(n+=e[r].quantity||0);return n}function st(e,t,n){let r=0;for(let o=0;o<e.length;o++){let i=e[o];i&&i.productId===t&&i.variantId!==n&&(r+=i.quantity||0)}return r}function Se(e,t,n){if(pe(t.variantId,n)?.required)return!1;let r=ee(t.productId,n);if(!r.required)return!0;let o=0;for(let i=0;i<e.length;i++){let a=e[i];a!==t&&a.productId===t.productId&&(o+=a.quantity||1)}return o>=r.min}function Pt(e,t,n,r){let o=ee(t,r);return!o.required||o.max!==o.min||me(e,n)!==-1?0:st(e,t,n)}function Jo(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("width","16"),t.setAttribute("height","16"),t.setAttribute("viewBox","0 0 20 20"),t.setAttribute("fill","none");for(let[n,r,o,i]of[["5","5","15","15"],["15","5","5","15"]]){let a=document.createElementNS(e,"line");a.setAttribute("x1",n),a.setAttribute("y1",r),a.setAttribute("x2",o),a.setAttribute("y2",i),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","2"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)}return t}function dt(e,t,n,r,o,i){let a=document.createElement("div");a.className="lb-mix-match__slot lb-mix-match__slot--filled";let l=document.createElement("div");if(l.className="lb-bundle-thumbnail",e.featuredImage){let b=document.createElement("img");b.src=ke(e.featuredImage,240),b.srcset=Ie(e.featuredImage,Wn),b.sizes=jn,b.alt=e.title,b.loading="lazy",l.appendChild(b)}a.appendChild(l);let d=document.createElement("div");d.className="lb-mix-match__filled-info";let s=document.createElement("button");if(s.type="button",s.className="lb-mix-match__filled-title",s.textContent=e.title,s.setAttribute("aria-label",(t.editSelection||"Edit selection")+": "+e.title),d.appendChild(s),e.variantTitle&&e.variantTitle!=="Default Title"){let b=document.createElement("span");b.className="lb-mix-match__filled-variant",b.textContent=e.variantTitle,d.appendChild(b)}let u=document.createElement("span");u.className="lb-mix-match__filled-price";let c=e.compareAtPrice||0;if(c>e.price){let b=document.createElement("s");b.className="lb-mix-match__filled-compare",b.textContent=n(c),u.appendChild(b)}let p=document.createElement("span");p.className="lb-bundle-product-price",p.textContent=n(e.price),u.appendChild(p);let f=document.createElement("span");if(f.className="lb-bundle-qty-inline",f.textContent="\xD7"+(e.quantity||1),u.appendChild(f),d.appendChild(u),e.unitPrice){let b=document.createElement("span");b.className="lb-bundle-product-unit-price",b.textContent=e.unitPrice,d.appendChild(b)}if(a.appendChild(d),r){let b=document.createElement("button");b.type="button",b.className="lb-mix-match__slot-remove",b.setAttribute("aria-label",(t.removeItem||"Remove")+" "+e.title),b.appendChild(Jo()),b.addEventListener("click",v=>{v.stopPropagation(),o()}),a.appendChild(b)}else{let b=document.createElement("span");b.className="lb-mix-match__slot-required",b.textContent=t.required||"Required",a.appendChild(b)}return a.addEventListener("click",i),a}function Xn(e,t,n,r,o){let i=r.translations||{},a=e.querySelector("[data-selection-slots]");if(a){a.innerHTML="";for(let s=0;s<t.length;s++){let u=s;a.appendChild(dt(t[u],i,o.formatMoney,Se(t,t[u],o.rulesMap),()=>o.onRemove(u),o.onEdit))}}let l=e.querySelector("[data-add-product-trigger]");l&&(l.style.display=oe(t)>=n?"none":"");let d=e.querySelector("[data-add-bundle]");if(d){d.disabled=oe(t)<n;let s=d.querySelector("[data-cta-label]");s&&(s.textContent=d.getAttribute("data-cta-text")||i.addToCart||"Add to cart")}}function Zn(e,t,n,r,o,i){let a=e.querySelector("[data-pricing-section]");if(oe(t)<n){a&&(a.style.display="none");return}a&&(a.style.display="");let l=0;for(let d=0;d<t.length;d++)l+=t[d].price*(t[d].quantity||1);l>0&&r.discountType&&i(e,o(l,r.discountType,r.discountValue??0),l)}function er(e,t,n,r,o){let i=Math.min(oe(n),r),a=Math.max(0,r-i),l=[e];t&&l.push(t);for(let d of l){let s=d.querySelectorAll("[data-progress-segment]");for(let f=0;f<s.length;f++)s[f].classList.toggle("lb-mix-match__progress-segment--filled",f<i);let u=d.querySelector("[data-progress-count]");u&&(u.textContent=Ze(i,r,o));let c=d.querySelector("[data-progress-remaining]");c&&(c.textContent=Fn(a,o));let p=d.querySelector(".lb-mix-match__progress-segments");p&&p.setAttribute("aria-valuenow",String(i))}}function ct(e){return(t,n,r)=>{let o=t.querySelector("[data-sale-price]"),i=t.querySelector("[data-compare-price]"),a=t.querySelector("[data-savings-bar]"),l=t.querySelector("[data-savings-amount]"),d=t.querySelector("[data-savings-percent]"),s=r-n;if(o&&(o.textContent=e(n)),i&&(s>0?(i.textContent=e(r),i.style.display=""):i.style.display="none"),a)if(s>0){if(l&&(l.textContent=e(s)),d){let u=r>0?Math.round(s*100/r):0;d.textContent="("+u+"%)"}a.style.display=""}else a.style.display="none"}}function tr(e,t,n,r){let o=u=>u.variants.find(c=>c.available)??null,i=(u,c,p)=>({productId:u.id,variantId:c.id,title:u.title,url:u.url||null,variantTitle:c.title,featuredImage:u.featuredImage||null,price:c.price,compareAtPrice:c.compareAtPrice||null,unitPrice:c.unitPrice||null,quantity:p}),a=[];for(let u of e){if(!u.available||!u.variants)continue;let c=!1;for(let b of u.variants){let v=pe(b.id,t);!v?.required||!b.available||(a.push(i(u,b,Math.max(1,v.min))),c=!0)}if(c)continue;let p=ee(u.id,t);if(!p.required)continue;let f=o(u);f&&a.push(i(u,f,Math.max(1,p.min)))}if(a.length||!r?.enabled)return a;let l=u=>u.available&&ee(u.id,t).min<=n,d=(r.currentProductId!=null?e.find(u=>u.id===r.currentProductId&&l(u)):null)??e.find(l);if(!d)return[];let s=o(d);return s?[i(d,s,ee(d.id,t).min)]:[]}function nr(e){let t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg");n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("viewBox","0 0 20 20"),n.setAttribute("fill","none");for(let[r,o,i,a]of e){let l=document.createElementNS(t,"line");l.setAttribute("x1",r),l.setAttribute("y1",o),l.setAttribute("x2",i),l.setAttribute("y2",a),l.setAttribute("stroke","currentColor"),l.setAttribute("stroke-width","2"),l.setAttribute("stroke-linecap","round"),n.appendChild(l)}return n}function Y(e,t,n={}){let r=document.createElement(e);t&&(r.className=t);for(let o in n)r.setAttribute(o,n[o]);return r}function ut(e){let t="lb-modal-title-"+e.domId,n=Y("div","lb-mix-match__modal-overlay",{"data-modal-overlay":"","data-bundle-gid":e.bundleGid,style:"display: none;"}),r=Y("div","lb-mix-match__modal"+(e.showTypeFilters?"":" lb-mix-match__modal--filters-hidden"),{role:"dialog","aria-modal":"true","aria-labelledby":t,tabindex:"-1"}),o=Y("div","lb-mix-match__modal-header"),i=Y("div","lb-mix-match__modal-header-top"),a=Y("div","lb-mix-match__modal-heading"),l=Y("h4","lb-mix-match__modal-title",{id:t});e.wizard&&l.setAttribute("tabindex","-1"),l.textContent="Add to your bundle",a.appendChild(l),a.appendChild(Y("p","lb-mix-match__modal-subtitle",{"data-modal-subtitle":""})),i.appendChild(a);let d=Y("button","lb-mix-match__modal-close",{type:"button","data-modal-close":"","aria-label":"Close"});d.appendChild(nr([["5","5","15","15"],["15","5","5","15"]])),i.appendChild(d),o.appendChild(i);let s=Y("div","lb-mix-match__progress lb-mix-match__modal-progress",{"data-progress":""}),u=Y("div","lb-mix-match__progress-segments",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e.segmentCount??0)});if(e.wizard)u.setAttribute("data-modal-step-segments","");else for(let v=0;v<(e.segmentCount??0);v++)u.appendChild(Y("span","lb-mix-match__progress-segment",{"data-progress-segment":""}));if(s.appendChild(u),o.appendChild(s),r.appendChild(o),e.showSearch){let v=Y("div","lb-mix-match__modal-search"),F=Y("input","lb-mix-match__modal-search-input",{type:"text","data-modal-search":"",role:"searchbox","aria-label":"Search products",placeholder:"Search products",autocomplete:"off"});v.appendChild(F);let x=Y("button","lb-mix-match__modal-search-clear",{type:"button","data-modal-search-clear":"","aria-label":"Clear search",style:"display: none;"});x.appendChild(nr([["5","5","15","15"],["15","5","5","15"]])),v.appendChild(x),r.appendChild(v)}e.showTypeFilters&&r.appendChild(Y("div","lb-mix-match__filters",{"data-modal-filters":"",role:"group","aria-label":"Filter by type"})),r.appendChild(Y("div","lb-mix-match__modal-list",{"data-modal-list":""}));let c=Y("div","lb-mix-match__modal-empty",{"data-modal-empty":"",style:"display: none;"}),p=document.createElement("p");p.textContent="No products match your search",c.appendChild(p),r.appendChild(c),r.appendChild(Y("span","lb-visually-hidden",{"data-modal-live":"","aria-live":"polite"}));let f=Y("div",e.wizard?"lb-mix-match__modal-footer lb-multi-step__modal-footer":"lb-mix-match__modal-footer");if(e.wizard){let v=Y("button","lb-multi-step__modal-back",{type:"button","data-modal-back":"",style:"display: none;"});v.textContent="Back",f.appendChild(v)}if(f.appendChild(Y("span","lb-mix-match__modal-footer-count",{"data-modal-footer-count":"","aria-live":"polite"})),e.wizard){let v=Y("button","lb-mix-match__modal-done",{type:"button","data-modal-next":"",style:"display: none;"});v.textContent="Next",f.appendChild(v)}let b=Y("button","lb-mix-match__modal-done",{type:"button","data-modal-done":"",...e.wizard?{style:"display: none;"}:{}});return b.textContent="Done",f.appendChild(b),r.appendChild(f),n.appendChild(r),n}function rr(e,t,n,r,o){let i=t.widgetConfig,a=ue,l=t.minQuantity||1,d=et(t.productRules,t.variantRules),u=ze(t).map((w,_)=>({id:Number(w.productId),title:w.title??"",url:w.url??null,type:t.products[_]?.productType??"",featuredImage:w.featuredImage??null,available:w.variants.some(m=>m.available),optionNames:w.optionNames,variants:w.variants.map(m=>({id:Number(m.id),title:m.title,options:m.options,available:m.available,price:m.price,compareAtPrice:m.compareAtPrice,unitPrice:m.unitPrice,image:m.image,inventoryQuantity:m.inventoryQuantity??null}))}));if(!u.length||u.filter(w=>w.available).length===0)return;let p=le(t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD"),f=de("lb-mix-match",{title:t.title,subtitle:t.description,showSavingsBar:i.savingsBar?.visible!==!1,showComparePrice:i.pricing?.showCompareAtPrice!==!1,ctaText:i.cta?.ctaText||a.addToCart||"Add to cart",endsAt:i.countdown?.showCountdown===!1?null:t.endsAt});f.root.setAttribute("data-required-quantity",String(l)),f.products.before(Ge(l));let b=document.createElement("div");b.className="lb-mix-match__slots lb-edge-fade",b.setAttribute("data-selection-slots",""),f.products.replaceWith(b);let v=document.createElement("button");v.type="button",v.className="lb-mix-match__add-product",v.setAttribute("data-add-product-trigger",""),v.textContent=(a.addItem,"Add a product"),b.after(v);let F=ut({bundleGid:t.id,domId:t.id.replace(/\D/g,""),showSearch:i.showSearch!==!1,showTypeFilters:i.mixMatchShowTypeFilters!==!1,segmentCount:l,wizard:!1});f.root.appendChild(F);let x=o?t.products.findIndex(w=>w.handle===o):-1,k=tr(u,d,l,{enabled:!!o,currentProductId:x!==-1?u[x]?.id??null:null}),Q={remainingSpots:()=>Yn(k,l),ownQty:w=>Un(k,w),variantUnitsElsewhere:w=>Jn(k,w),productUnitsElsewhere:(w,_)=>st(k,w,_),swapUnits:(w,_)=>Pt(k,w,_,d),isInBundle:w=>me(k,w)!==-1,canRemove:w=>{let _=me(k,w);return _!==-1&&Se(k,k[_],d)},isFull:()=>Mt(k,l),commitQty:(w,_)=>{let m=me(k,w);return m===-1||k[m].quantity===_?!1:(k[m].quantity=_,!0)}};function I(){Xn(f.root,k,l,t,{formatMoney:p,rulesMap:d,onRemove:w=>{Se(k,k[w],d)&&(k.splice(w,1),I(),N.isOpen()&&N.refresh())},onEdit:()=>N.open()}),Zn(f.root,k,l,{discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},(w,_,m)=>Fe(w,_,m),ct(p)),er(f.root,N.overlay,k,l,a)}let N=Kn({container:f.root,data:{translations:a,discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},t:a,rulesMap:d,eligibleProducts:u,requiredQty:l,showQtySelector:i.mixMatchShowQuantitySelector!==!1,items:k,formatMoney:p,rowCapacity:Q,dropdown:void 0,portalTarget:null,fallbackFocus:v,onSelectionChanged:I,addSelection:w=>{if(oe(k)+(w.quantity||1)>l)return;let _=pe(w.variantId,d)?.max,m=ee(w.productId,d).max-st(k,w.productId,w.variantId);typeof _=="number"&&(m=Math.min(m,_)),!((w.quantity||1)>m)&&(k.push(w),I())},removeVariant:w=>{let _=me(k,w);_===-1||!Se(k,k[_],d)||(k.splice(_,1),I())},swapVariant:(w,_)=>{let m=0;for(let D=k.length-1;D>=0&&m<_;D--){let H=k[D];if(H.productId!==w.productId||H.variantId===w.variantId)continue;let O=Math.min(H.quantity||1,_-m);O>=(H.quantity||1)?k.splice(D,1):H.quantity=(H.quantity||1)-O,m+=O}m>0&&(w.quantity=m,k.push(w),I())},swapUnitsFor:(w,_)=>Pt(k,w,_,d),isInBundle:w=>me(k,w)!==-1,atCapacity:()=>Mt(k,l)});v.addEventListener("click",()=>{N.isOpen()||N.open()}),f.cta.addEventListener("click",()=>{oe(k)<l||n(k.map(w=>({merchandiseId:"gid://shopify/ProductVariant/"+w.variantId,quantity:w.quantity||1,attributes:se(t.id,t.bundleType)})))}),e.appendChild(f.root),ce(f.root),I(),r?.(he(f.root))}var or="lb-volume__tier--oos";function Xo(e){return parseInt(e.getAttribute("data-tier-qty")??"",10)||0}function Me(e){return e.getAttribute("aria-disabled")==="true"}function ir(e,t){for(let n=0;n<e.length;n++){let r=e[n];t!==null&&Xo(r)>t?(r.classList.add(or),r.setAttribute("aria-disabled","true")):(r.classList.remove(or),r.removeAttribute("aria-disabled"))}}function ar(e,t){let n=e[t];if(n&&!Me(n))return t;for(let r=0;r<e.length;r++)if(!Me(e[r]))return r;return-1}function Bt(e,t,n){let r=t+n;for(;r>=0&&r<e.length;){if(!Me(e[r]))return r;r+=n}return t}function lr(e,t,n){if(t==="fixed_amount"){let o=parseInt(n.getAttribute("data-tier-amt")??"",10)||0;return Math.max(0,e-o)}let r=parseInt(n.getAttribute("data-tier-pct")??"",10)||0;return Math.max(0,e-Math.floor(e*r/100))}function Zo(e,t,n){let r=parseInt(n.getAttribute("data-tier-qty")??"",10),o=lr(e,t,n),i=o*r,a=e*r;return{qty:r,priceEach:o,totalPrice:i,undiscountedTotal:a,totalSavings:a-i}}function ei(e,t){if(!t.itemCount)return null;let n=new Intl.PluralRules(t.locale||"en").select(e);return" ("+(t.itemCount[n]||t.itemCount.other||"__COUNT__").split("__COUNT__").join(String(e))+")"}function sr(e,t,n,r){for(let o=0;o<e.length;o++){let i=e[o],a=i.querySelector("[data-tier-price-each]");a&&(a.textContent=r(lr(t,n,i)));let l=i.querySelector(".lb-volume__tier-compare");l&&(l.textContent=r(t))}}function dr(e,t,n,r,o,i,a){for(let x=0;x<t.length;x++)t[x].setAttribute("aria-checked",x===o?"true":"false"),t[x].setAttribute("tabindex",x===o?"0":"-1");let{qty:l,totalPrice:d,undiscountedTotal:s,totalSavings:u}=Zo(n,r,t[o]),c=e.querySelector("[data-item-count]");if(c){let x=ei(l,i);x!==null&&(c.textContent=x)}let p=e.querySelector("[data-total-price]");p&&(p.textContent=a(d));let f=e.querySelector("[data-compare-price]");f&&(u>0?(f.textContent=a(s),f.style.display=""):f.style.display="none");let b=e.querySelector("[data-savings-bar]"),v=e.querySelector("[data-savings-amount]"),F=e.querySelector("[data-savings-percent]");if(b)if(u>0){if(v&&(v.textContent=a(u)),F){let x=s>0?Math.round(u*100/s):0;F.textContent="("+x+"%)"}b.style.display=""}else b.style.display="none"}function cr(e,t,n,r){let o=t.widgetConfig,i=mn(t.products,r);if(!i)return;let a=i.variants.nodes,l=Math.min(...t.volumeTiers.map(_=>_.minQuantity)),d=a.find(_=>Ee(_,l))??a.find(_=>_.availableForSale)??a[0];if(!d)return;let s=Ue(d.price.amount),u=t.discountConfig.discountType,c=le(i.priceRange.minVariantPrice.currencyCode),p=ue,f=dn(t.volumeTiers,u),b=cn(o.defaultTier,t.volumeTiers.length,f),v=un(o.popularBadge?.tierIndex,o.popularBadge?.visible!==!1,f),F=t.volumeTiers.map((_,m)=>{let D=u==="fixed_amount"?0:Math.round(_.percentage??0),H=u==="fixed_amount"?Math.round((_.amount??0)*100):0,O=u==="fixed_amount"?Math.max(0,s-H):Math.max(0,s-Math.floor(s*D/100)),B=s>0?Math.round((s-O)*100/s):0;return{quantity:_.minQuantity,percent:D,amountCents:H,label:X(p.buyQty||"Buy __COUNT__",{COUNT:_.minQuantity}),savingsLabel:B>0?"Save "+B+"%":null,badgeLabel:m===v?o.popularBadge?.text||"Most popular":null,selected:m===b}});if(!F.length)return;let x=de("lb-volume",{title:t.title,subtitle:t.description,summaryLabel:"Total",withItemCount:o.pricing?.showItemCount!==!1,totalPriceSlot:!0,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||p.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt}),k=An(F,"Select quantity",{showCompare:o.pricing?.showComparePrice!==!1,showPriceEach:o.pricing?.showPerUnitPrice!==!1,unitLabel:(p.each||"each").trim()});x.products.replaceWith(k);let Q=k.querySelectorAll("[data-tier-index]");sr(Q,s,u,c),ir(Q,Ve(d));let I=ar(Q,b),N=I===-1;N&&(I=b);let w=()=>dr(x.root,Q,s,u,I,p,c);if(k.addEventListener("click",_=>{let m=_.target.closest("[data-tier-index]");!m||Me(m)||(I=parseInt(m.getAttribute("data-tier-index")??"",10)||0,w())}),k.addEventListener("keydown",_=>{_.key==="ArrowDown"||_.key==="ArrowRight"?(_.preventDefault(),I=Bt(Q,I,1),w(),Q[I].focus()):(_.key==="ArrowUp"||_.key==="ArrowLeft")&&(_.preventDefault(),I=Bt(Q,I,-1),w(),Q[I].focus())}),N){x.cta.disabled=!0;let _=x.cta.querySelector("[data-cta-label]");_&&(_.textContent=p.outOfStock||"Out of stock")}else x.cta.addEventListener("click",()=>{let _=parseInt(Q[I].getAttribute("data-tier-qty")??"",10);n([{merchandiseId:d.id,quantity:_,attributes:se(t.id,t.bundleType)}])});e.appendChild(x.root),ce(x.root),w()}function pt(e,t){return e-Math.floor(e*t/100)}function ti(e,t,n,r){let o=Z(e[0],e[0].selectedVariantId),i=Z(e[1],e[1].selectedVariantId),a=o.price*n+i.price*r,l=o.price*n+pt(i.price,t)*r;return{totalPrice:a,salePrice:l,savings:a-l}}function qt(e,t,n,r,o){let i=e.querySelector("[data-product-price]"),a=e.querySelector("[data-product-compare-price]");if(i){if(r&&n>0){i.textContent=o(pt(t.price,n)),a&&(a.textContent=o(t.price),a.hidden=!1);return}if(i.textContent=o(t.price),a){let l=t.compareAtPrice;l&&l>t.price?(a.textContent=o(l),a.hidden=!1):(a.textContent="",a.hidden=!0)}}}function Rt(e,t,n,r,o,i){let{totalPrice:a,salePrice:l,savings:d}=ti(t,n,r,o),s=e.querySelector("[data-sale-price]"),u=e.querySelector("[data-compare-price]"),c=e.querySelector("[data-savings-bar]"),p=e.querySelector("[data-savings-amount]"),f=e.querySelector("[data-savings-percent]");if(s&&(s.textContent=i(l)),u&&(d>0?(u.textContent=i(a),u.style.display=""):u.style.display="none"),c)if(d>0){if(p&&(p.textContent=i(d)),f){let b=a>0?Math.round(d*100/a):0;f.textContent="("+b+"%)"}c.style.display=""}else c.style.display="none"}function ur(e,t,n,r){let o=Z(e[0],e[0].selectedVariantId),i=Z(e[1],e[1].selectedVariantId),a={variantId:Number(e[0].selectedVariantId),quantity:n,priceCents:(o.price||0)*n},l=pt(i.price||0,t)*r;return String(e[0].selectedVariantId)===String(e[1].selectedVariantId)?[{variantId:a.variantId,quantity:n+r,priceCents:(a.priceCents??0)+l}]:[a,{variantId:Number(e[1].selectedVariantId),quantity:r,priceCents:l}]}function ni(){let e=document.createElement("div");return e.className="lb-bogo__plus",e.setAttribute("aria-hidden","true"),e.innerHTML='<svg width="12" height="12" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><line x1="9" y1="3" x2="9" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><line x1="3" y1="9" x2="15" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',e}function pr(e,t,n,r){let o=t.widgetConfig,i=t.products.find(x=>x.id===t.buyProductId),a=t.products.find(x=>x.id===t.getProductId);if(!i||!a)return;let l=t.buyQuantity,d=t.getQuantity,s=t.discountConfig.discountValue,u={productQuantities:t.productQuantities,variantQuantities:t.variantQuantities},c=[{..._e(i,t.id,{quantities:u,allowedVariantIds:t.selectedVariantIds?.[0]??null}),role:"buy"},{..._e(a,t.id,{quantities:u,allowedVariantIds:t.selectedVariantIds?.[1]??null}),role:"get"}],p=c.filter(x=>!x.variants.some(k=>k.available)).length,f=le(i.priceRange.minVariantPrice.currencyCode),b=ue,v=de("lb-bogo",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||b.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});v.root.setAttribute("data-discount-value",String(s)),v.root.setAttribute("data-buy-qty",String(l)),v.root.setAttribute("data-get-qty",String(d));let F=s>=100?"Free":s+"% off";if(c.forEach((x,k)=>{let Q=k===1;Q&&v.products.appendChild(ni());let I=!x.variants.some(_=>_.available),N=$e(x,b,{isOos:I,href:x.url,bogoRole:x.role,inlineQuantity:Q?d:l,badgeText:Q&&!I?F:null,thumbnailRatio:o.productList?.thumbnailRatio});if(v.products.appendChild(N),I)return;let w=Z(x,x.selectedVariantId);We(N,x,w),je(N,w,x.featuredImage),qt(N,w,s,Q,f),Qe(N,()=>x,_=>{je(N,_,x.featuredImage),qt(N,_,s,Q,f),Rt(v.root,c,s,l,d,f)})}),p>0){v.cta.disabled=!0;let x=v.cta.querySelector("[data-cta-label]");x&&(x.textContent=Ke(b,p))}else v.cta.addEventListener("click",()=>{n(ur(c,s,l,d).map(x=>({merchandiseId:"gid://shopify/ProductVariant/"+x.variantId,quantity:x.quantity,attributes:se(t.id,t.bundleType)})))});e.appendChild(v.root),ce(v.root),Rt(v.root,c,s,l,d,f),r?.(he(v.root))}function Nt(e,t,n){return X(n.stepOf||"Step __STEP__ of __TOTAL__",{STEP:e+1,TOTAL:t})}function Pe(e,t,n){return X(n.ofSelected||"__COUNT__ of __TOTAL__ added",{COUNT:e,TOTAL:t})}function br(e,t,n){return X(n.stepsCompleted||"__COUNT__ of __TOTAL__ steps completed",{COUNT:e,TOTAL:t})}function hr(e,t){return e>0?X(t.moreToGo||"__COUNT__ more to go",{COUNT:e}):t.complete||"Complete"}function mr(e,t,n){let r=new Intl.PluralRules(n||"en").select(t);return X(e[r]||e.other||"__COUNT__",{COUNT:t})}function fr(e,t){return e?t.doorContinue||"Continue building":t.doorChoose||"Choose your products"}function gr(e,t,n,r){if(!e){let o=r.doorQuickSteps;return typeof o=="string"?X(o,{COUNT:n}):mr(o||{one:"__COUNT__ quick step",other:"__COUNT__ quick steps"},n,r.locale)}return mr(r.doorStepsToGo||{one:"__COUNT__ step to go",other:"__COUNT__ steps to go"},t,r.locale)}function fe(e,t){let n=0;for(let r=0;r<e[t].length;r++)n+=e[t][r].quantity||1;return n}function ge(e,t,n){return fe(e,n)>=(t[n].minQuantity||1)}function mt(e,t,n){let r=t[n].maxQuantity;return r==null?1/0:Math.max(0,r-fe(e,n))}function Be(e,t){for(let n=0;n<t.length;n++)if(!ge(e,t,n))return!1;return!0}function qe(e,t,n){if(pe(t.variantId,n)?.required)return!1;let r=ee(t.productId,n);if(!r.required)return!0;let o=0;for(let i of e)for(let a of i)a!==t&&a.productId===t.productId&&(o+=a.quantity||1);return o>=r.min}function Ht(e,t,n,r,o){let i=ee(n,o);if(!i.required||i.max!==i.min||we(e,t,r)!==-1)return 0;let a=0;for(let l of e[t])l.productId===n&&l.variantId!==r&&(a+=l.quantity||1);return a}function we(e,t,n){for(let r=0;r<e[t].length;r++)if(e[t][r].variantId===n)return r;return-1}function xr(e){let{container:t,steps:n,selections:r,t:o}=e;for(let i=0;i<n.length;i++){let a=n[i].minQuantity||1,l=t.querySelector('[data-step-group="'+i+'"]');l&&l.setAttribute("data-step-mode",r[i].length>0?"open":"row");let d=Pe(Math.min(fe(r,i),a),a,o),s=ge(r,n,i),u=t.querySelectorAll('[data-step-count="'+i+'"]');for(let p=0;p<u.length;p++)u[p].textContent=d,u[p].classList.toggle("lb-multi-step__group-count--met",s);let c=t.querySelector('[data-step-slots="'+i+'"]');if(c){c.innerHTML="";for(let p=0;p<r[i].length;p++){let f=i,b=p,v=r[f][b];c.appendChild(dt(v,o,e.formatMoney,qe(r,v,e.rulesMap),()=>e.onRemove(f,b),()=>e.onEdit(f)))}}}}function vr(e){let{container:t,steps:n,selections:r,t:o}=e,i=t.querySelector("[data-step-door]");if(!i)return;let a=-1,l=0,d=!1;for(let b=0;b<n.length;b++)r[b].length>0&&(d=!0),ge(r,n,b)||(l+=1,a===-1&&(a=b));if(a===-1){i.style.display="none",i.classList.add("lb-multi-step__door--hidden");let b=i.parentElement;b&&b.firstElementChild!==i&&b.insertBefore(i,b.firstElementChild);return}i.style.display="",i.classList.remove("lb-multi-step__door--hidden"),i.setAttribute("data-step-door",String(a));let s=fr(d,o),u=i.querySelector(".lb-mix-match__add-product-label");u&&(u.textContent=s);let c=i.querySelector(".lb-multi-step__door-sub");c&&(c.textContent=gr(d,l,n.length,o));let p=n[a].name||"";i.setAttribute("aria-label",p?s+": "+p:s);let f=t.querySelector('[data-step-group="'+a+'"]');f&&f.parentElement&&f.previousElementSibling!==i&&f.parentElement.insertBefore(i,f)}function yr(e,t,n,r){let{container:o,steps:i,selections:a}=e,l=o.querySelector("[data-pricing-section]");if(!Be(a,i)){l&&(l.style.display="none");return}l&&(l.style.display="");let d=0;for(let s of a)for(let u of s)d+=u.price*(u.quantity||1);d>0&&t.discountType&&r(o,n(d,t.discountType,t.discountValue??0),d)}function wr(e){let{container:t,steps:n,selections:r,t:o}=e,i=0;for(let c=0;c<n.length;c++)ge(r,n,c)&&(i+=1);let a=n.length-i,l=t.querySelectorAll("[data-progress] [data-progress-segment]");for(let c=0;c<l.length;c++)l[c].classList.toggle("lb-mix-match__progress-segment--filled",c<i);let d=t.querySelector("[data-progress-count]");d&&(d.textContent=br(i,n.length,o));let s=t.querySelector("[data-progress-remaining]");s&&(s.textContent=hr(a,o));let u=t.querySelector(".lb-mix-match__progress-segments");u&&u.setAttribute("aria-valuenow",String(i))}function _r(e){let t=e.container.querySelector("[data-add-bundle]");if(!t)return;t.disabled=!Be(e.selections,e.steps);let n=t.querySelector("[data-cta-label]");n&&(n.textContent=t.getAttribute("data-cta-text")||e.t.addToCart||"Add to cart")}function Cr(e){let t=Object.create(null),n=[];for(let r of e)for(let o of r){let i=o.quantity||1,a=String(o.variantId);t[a]?(t[a].quantity+=i,t[a].priceCents=(t[a].priceCents??0)+(o.price||0)*i):(t[a]={variantId:o.variantId,quantity:i,priceCents:(o.price||0)*i},n.push(a))}return n.map(r=>t[r])}var Re="__all__",ri=300,oi=200;function kr(e){let{container:t,steps:n,selections:r,t:o}=e,i=t.querySelector("[data-modal-overlay]");i&&e.portalTarget&&e.portalTarget.appendChild(i);let a=C=>i?i.querySelector(C):null,l=a('[role="dialog"]'),d=a(".lb-mix-match__modal-title"),s=a("[data-modal-search]"),u=a("[data-modal-search-clear]"),c=a("[data-modal-list]"),p=a("[data-modal-empty]"),f=a("[data-modal-live]"),b=a("[data-modal-close]"),v=a("[data-modal-back]"),F=a("[data-modal-next]"),x=a("[data-modal-done]"),k=a("[data-modal-footer-count]"),Q=a("[data-modal-subtitle]"),I=a("[data-modal-step-segments]"),N=a("[data-modal-filters]"),w=Re,_=!1,m=0,D=[],H=C=>n[C].eligibleProducts||[],O={remainingSpots:()=>mt(r,n,m),ownQty:C=>{let y=we(r,m,C);return y===-1?0:r[m][y].quantity||0},variantUnitsElsewhere:C=>{let y=0;for(let L of r)for(let E of L)E.variantId===C&&(y+=E.quantity||0);return y},productUnitsElsewhere:(C,y)=>{let L=0;for(let E=0;E<r.length;E++)for(let R of r[E])R.productId===C&&(E===m&&R.variantId===y||(L+=R.quantity||0));return L},swapUnits:(C,y)=>Ht(r,m,C,y,e.rulesMap),isInBundle:C=>we(r,m,C)!==-1,canRemove:C=>{let y=we(r,m,C);return y!==-1&&e.canRemove(r[m][y])},isFull:()=>mt(r,n,m)===0,commitQty:(C,y)=>{let L=we(r,m,C);return L===-1||r[m][L].quantity===y?!1:(r[m][L].quantity=y,!0)}};function B(C){if(!I)return;let y=n[C].minQuantity||1;I.innerHTML="",I.setAttribute("aria-valuemax",String(y));for(let L=0;L<y;L++){let E=document.createElement("span");E.className="lb-mix-match__progress-segment",E.setAttribute("data-progress-segment",""),I.appendChild(E)}G()}function G(){if(!I)return;let C=n[m].minQuantity||1,y=Math.min(fe(r,m),C),L=I.querySelectorAll("[data-progress-segment]");for(let E=0;E<L.length;E++)L[E].classList.toggle("lb-mix-match__progress-segment--filled",E<y);I.setAttribute("aria-valuenow",String(y))}function K(){let C=n[m].minQuantity||1,y=Math.min(fe(r,m),C);k&&(k.textContent=Pe(y,C,o)),Q&&(Q.textContent=Nt(m,n.length,o)+" \xB7 "+(n[m].name||""));let L=ge(r,n,m),E=m===n.length-1;v&&(v.style.display=m>0?"":"none"),F&&(F.style.display=E?"none":"",F.disabled=!L),x&&(x.style.display=E?"":"none",x.disabled=!L),G()}function j(){for(let C of D)C.refresh();K()}function $(C){if(!c)return;e.dropdown?.unbindAll(c),c.innerHTML="",D=[];let y=H(C);for(let R=0;R<y.length;R++){let M=rt(y[R],R,{t:o,rulesMap:e.rulesMap,capacity:O,showQtySelector:e.showQtySelector,formatMoney:e.formatMoney,onCommittedQtyChanged:()=>{e.onSelectionChanged(),j()}});D.push(M),c.appendChild(M.el)}let L=r[C]||[],E=Object.create(null);for(let R of L)E[String(R.productId)]=!0;lt(c,D.map(R=>R.el),R=>E[String(y[R].id)]===!0),e.dropdown?.bindAll(c)}function A(C){let y=C.target.closest("[data-add-product]");if(!y||y.disabled)return;let E=H(m)[parseInt(y.getAttribute("data-add-product")??"",10)];if(!E)return;let R=y.closest(".lb-mix-match__modal-product"),M=R&&R.getAttribute("data-selected-variant-id"),q=(M?E.variants.find(ne=>ne.id===parseInt(M,10)):null)??null;if(q||(q=E.variants.find(ne=>ne.available)??null),!q)return;let z=we(r,m,q.id);if(z!==-1){if(!e.canRemove(r[m][z]))return;r[m].splice(z,1),e.onSelectionChanged(),j();return}let W=R?.querySelector("[data-row-qty]"),J=W?Math.max(1,parseInt(W.getAttribute("data-qty")||W.textContent||"",10)||1):tt(E.id,e.rulesMap,q.id),te={productId:E.id,variantId:q.id,title:E.title,url:E.url||null,variantTitle:q.title,featuredImage:q.image||E.featuredImage||null,price:q.price,compareAtPrice:q.compareAtPrice||null,unitPrice:q.unitPrice||null,quantity:J},be=Ht(r,m,E.id,q.id,e.rulesMap);if(be>0){e.swapVariant(m,te,Math.min(J,be)),j();return}let xe=mt(r,n,m);xe!==1/0&&J>xe||(r[m].push(te),e.onSelectionChanged(),j())}c&&c.addEventListener("click",A);function T(C){if(!N||!e.showTypeFilters)return;let y=[],L=Object.create(null);for(let E of H(C)){let R=(E.type||"").trim();R&&!L[R]&&(L[R]=!0,y.push(R))}if(y.length<2){N.style.display="none",l?.classList.add("lb-mix-match__modal--filters-hidden");return}N.style.display="",l?.classList.remove("lb-mix-match__modal--filters-hidden"),N.innerHTML="";for(let E of[Re,...y]){let R=document.createElement("button");R.type="button",R.className="lb-mix-match__filter",R.setAttribute("data-filter",E),R.setAttribute("aria-pressed",E===w?"true":"false"),E===w&&R.classList.add("lb-mix-match__filter--active"),R.textContent=E===Re?o.allTypes||"All":E,R.addEventListener("click",()=>{w=E,h(),S(s?s.value:"")}),N.appendChild(R)}}function h(){if(!N)return;let C=N.querySelectorAll("[data-filter]");for(let y=0;y<C.length;y++){let L=C[y].getAttribute("data-filter")===w;C[y].classList.toggle("lb-mix-match__filter--active",L),C[y].setAttribute("aria-pressed",L?"true":"false")}}function S(C){if(!c)return;let y=Te(C),L=c.querySelectorAll("[data-product-item]"),E=0;for(let R=0;R<L.length;R++){let M=L[R].getAttribute("data-title")??"",q=L[R].getAttribute("data-type")||"",z=(!y||M.indexOf(y)!==-1)&&(w===Re||q===w);L[R].classList.toggle("lb-hidden",!z),z&&E++}p&&(p.style.display=E===0&&y.length>0?"":"none"),u&&(u.style.display=C.length>0?"":"none"),f&&(f.textContent=X(o.nProductsShown||"__COUNT__ products shown",{COUNT:E}))}if(s){let C=nt(()=>S(s.value),oi);s.addEventListener("input",C)}u&&u.addEventListener("click",()=>{s&&(s.value="",S(""),s.focus())});function U(C,y={}){if(m=Math.max(0,Math.min(n.length-1,C)),$(m),T(m),w=Re,h(),s&&(s.value=""),S(""),c&&(c.scrollTop=0),B(m),j(),f){let L=n[m].minQuantity||1;f.textContent=Nt(m,n.length,o)+". "+(n[m].name||"")+". "+Pe(Math.min(fe(r,m),L),L,o)}!y.skipFocus&&d&&typeof d.focus=="function"&&d.focus()}function g(C){!i||_||(_=!0,U(typeof C=="number"?C:0,{skipFocus:!0}),i.style.display="",i.offsetHeight,i.classList.add("lb-mix-match__modal-overlay--open"),it(),setTimeout(()=>{b?b.focus():l?.focus()},50))}function V(){if(!i||!_)return;_=!1,i.classList.remove("lb-mix-match__modal-overlay--open"),at(),setTimeout(()=>{_||(i.style.display="none")},ri);let C=L=>L&&L.offsetParent!==null?L:null,y=C(t.querySelector('[data-step-row="'+m+'"]'))||C(t.querySelector("[data-step-door]"))||e.ctaButton;y&&typeof y.focus=="function"&&setTimeout(()=>y.focus(),0)}if(b?.addEventListener("click",V),x?.addEventListener("click",V),v?.addEventListener("click",()=>{m>0&&U(m-1)}),F?.addEventListener("click",()=>{m<n.length-1&&ge(r,n,m)&&U(m+1)}),i){let C=null;i.addEventListener("mousedown",y=>{C=y.target}),i.addEventListener("mouseup",y=>{y.target===i&&C===i&&V(),C=null})}return document.addEventListener("keydown",C=>{if(_){if(C.key==="Escape"){C.preventDefault(),V();return}if(C.key==="Tab"&&l){let y=ot(l);if(y.length===0){C.preventDefault();return}let L=y[0],E=y[y.length-1];C.shiftKey&&document.activeElement===L?(C.preventDefault(),E.focus()):!C.shiftKey&&document.activeElement===E&&(C.preventDefault(),L.focus())}}}),{open:g,close:V,isOpen:()=>_,refresh:j}}function ii(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("viewBox","0 0 18 18"),t.setAttribute("fill","none");for(let[n,r,o,i]of[["9","3","9","15"],["3","9","15","9"]]){let a=document.createElementNS(e,"line");a.setAttribute("x1",n),a.setAttribute("y1",r),a.setAttribute("x2",o),a.setAttribute("y2",i),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","2"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)}return t}function Tr(e,t,n,r){let o=t.widgetConfig,i=ue,a=et(t.productRules,t.variantRules),l=t.steps??[];if(!l.length)return;let d={productQuantities:t.productQuantities,variantQuantities:t.variantQuantities},s=l.map((m,D)=>bn(t,D).map(H=>{let O=_e(H,t.id,{quantities:d,allowedVariantIds:null});return{id:Number(O.productId),title:O.title??"",url:O.url??null,type:H.productType??"",featuredImage:O.featuredImage??null,available:O.variants.some(B=>B.available),optionNames:O.optionNames,variants:O.variants.map(B=>({id:Number(B.id),title:B.title,options:B.options,available:B.available,price:B.price,compareAtPrice:B.compareAtPrice,unitPrice:B.unitPrice,image:B.image,inventoryQuantity:B.inventoryQuantity??null}))}}));if(!(s.length>0&&s.every(m=>m.some(D=>D.available))))return;let c=le(t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD"),p=de("lb-multi-step",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||i.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});p.products.before(Ge(l.length));let f=document.createElement("div");f.className="lb-multi-step__groups",f.setAttribute("data-step-groups","");let b=document.createElement("button");b.type="button",b.className="lb-mix-match__add-product lb-multi-step__door",b.setAttribute("data-step-door","0");let v=document.createElement("span");v.className="lb-mix-match__add-product-icon",v.setAttribute("aria-hidden","true"),v.appendChild(ii()),b.appendChild(v);let F=document.createElement("span");F.className="lb-multi-step__door-copy";let x=document.createElement("span");x.className="lb-mix-match__add-product-label",F.appendChild(x);let k=document.createElement("span");k.className="lb-multi-step__door-sub",F.appendChild(k),b.appendChild(F),f.appendChild(b),l.forEach((m,D)=>{let H=document.createElement("section");H.className="lb-multi-step__group",H.setAttribute("data-step-group",String(D)),H.setAttribute("data-step-mode","row");let O=()=>{let T=document.createElement("span");return T.className="lb-multi-step__group-count",T.setAttribute("data-step-count",String(D)),T},B=document.createElement("button");B.type="button",B.className="lb-multi-step__step-row",B.setAttribute("data-step-row",String(D)),B.setAttribute("aria-label","Choose products: "+m.name);let G=document.createElement("span");G.className="lb-multi-step__step-ix",G.setAttribute("aria-hidden","true"),G.textContent=String(D+1),B.appendChild(G);let K=document.createElement("span");K.className="lb-multi-step__group-name",K.textContent=m.name,B.appendChild(K),B.appendChild(O()),H.appendChild(B);let j=document.createElement("div");j.className="lb-multi-step__group-heading";let $=document.createElement("span");$.className="lb-multi-step__group-name",$.textContent=m.name,j.appendChild($),j.appendChild(O()),H.appendChild(j);let A=document.createElement("div");A.className="lb-mix-match__slots lb-edge-fade lb-multi-step__group-slots",A.setAttribute("data-step-slots",String(D)),H.appendChild(A),f.appendChild(H)}),p.products.replaceWith(f);let Q=ut({bundleGid:t.id,domId:t.id.replace(/\D/g,""),showSearch:o.showSearch!==!1,showTypeFilters:o.mixMatchShowTypeFilters!==!1,segmentCount:null,wizard:!0});p.root.appendChild(Q);let I=l.map(()=>[]),N={container:p.root,steps:l.map((m,D)=>({name:m.name,minQuantity:m.minQuantity,maxQuantity:m.maxQuantity,eligibleProducts:s[D]})),selections:I,t:i,rulesMap:a,formatMoney:c,onRemove:(m,D)=>{let H=I[m][D];!H||!qe(I,H,a)||(I[m].splice(D,1),w(),_.isOpen()&&_.refresh())},onEdit:m=>_.open(m)};function w(){xr(N),vr(N),yr(N,{discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},(m,D,H)=>Fe(m,D,H),ct(c)),wr(N),_r(N)}let _=kr({container:p.root,steps:N.steps,selections:I,t:i,rulesMap:a,showQtySelector:o.mixMatchShowQuantitySelector!==!1,showTypeFilters:o.mixMatchShowTypeFilters!==!1,formatMoney:c,dropdown:void 0,portalTarget:null,ctaButton:p.cta,onSelectionChanged:w,swapVariant:(m,D,H)=>{let O=0,B=I[m];for(let G=B.length-1;G>=0&&O<H;G--){let K=B[G];if(K.productId!==D.productId||K.variantId===D.variantId)continue;let j=Math.min(K.quantity||1,H-O);j>=(K.quantity||1)?B.splice(G,1):K.quantity=(K.quantity||1)-j,O+=j}O>0&&(D.quantity=O,B.push(D),w())},canRemove:m=>qe(I,m,a)});b.addEventListener("click",()=>{_.isOpen()||_.open(parseInt(b.getAttribute("data-step-door")??"",10)||0)}),p.root.querySelectorAll("[data-step-row]").forEach(m=>{m.addEventListener("click",()=>{_.isOpen()||_.open(parseInt(m.getAttribute("data-step-row")??"",10)||0)})}),p.cta.addEventListener("click",()=>{Be(I,N.steps)&&n(Cr(I).map(m=>({merchandiseId:"gid://shopify/ProductVariant/"+m.variantId,quantity:m.quantity,attributes:se(t.id,t.bundleType)})))}),e.appendChild(p.root),ce(p.root),w(),r?.(he(p.root))}var ai=new Set(["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown","Enter"," ","Escape"]),bt=new Set,ht=!1;function Sr(e){let t=e==="using-mouse"?"using-keyboard":"using-mouse";for(let n of bt)n.classList.add(e),n.classList.remove(t)}function Er(e){ai.has(e.key)&&Sr("using-keyboard")}function Ir(){Sr("using-mouse")}function li(){ht||(ht=!0,document.addEventListener("keydown",Er,!0),document.addEventListener("pointerdown",Ir,!0))}function si(){ht&&(ht=!1,document.removeEventListener("keydown",Er,!0),document.removeEventListener("pointerdown",Ir,!0))}function ft(e){return e.classList.add("using-mouse"),e.classList.remove("using-keyboard"),bt.add(e),li(),()=>{bt.delete(e),e.classList.remove("using-mouse"),e.classList.remove("using-keyboard"),bt.size===0&&si()}}var Dt=`/* Lime Bundles \u2014 shared base styles for all bundle widget types */
|
|
260
|
+
`;var ae=class extends Error{constructor(e,t){super(e),this.reason=t,this.name="BundleParseError"}},Ft={none:0,subtle:6,rounded:12,round:18},ie={header:{countdownBgColor:"#B4DC7F47",countdownTextColor:"#555555"},layout:{backgroundColor:"#FCFCFC",borderColor:"#E5E5E5",borderWidth:1,borderRadius:"subtle"},productList:{textColor:"#555555",thumbnailRatio:"square",showPrice:!0,showCompareAtPrice:!0,showUnitPrice:!0,showQuantity:!0},pricing:{showComparePrice:!0,showPerUnitPrice:!0,showItemCount:!0,showCompareAtPrice:!0},cta:{ctaText:"Add to cart",primaryColor:"#B4DC7F",buttonTextColor:"#555555",borderWidth:0,borderColor:"#B4DC7F"},savingsBar:{visible:!0},countdown:{showCountdown:!0},popularBadge:{visible:!0,text:"Most Popular",bgColor:"#1A1A1A",textColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A"},showLowStockBadge:!0,lowStockThreshold:10,lowStockBgColor:"#FEF3C7",lowStockTextColor:"#92400E",showSearch:!0,mixMatchShowTypeFilters:!0,mixMatchShowQuantitySelector:!0,pickerBgColor:"#FCFCFC",pickerTextColor:"#555555",pickerBorderWidth:1,pickerBorderColor:"#E5E5E5",pickerBorderRadius:"subtle",pickerThumbnailRatio:"square",pickerAddBgColor:"#B4DC7F",pickerAddLabelColor:"#555555",pickerAddBorderWidth:0,pickerAddBorderColor:"#B4DC7F",multiStepAutoAdvance:!1,defaultTier:"first"};function Wr(e){if(!e||typeof e!="object")return ie;let t=e;return{...ie,...t,defaultTier:jr(t.defaultTier),pickerBorderRadius:Vt(t.pickerBorderRadius),header:{...ie.header,...t.header??{}},layout:{...ie.layout,...t.layout??{},borderRadius:Vt(t.layout?.borderRadius)},productList:{...ie.productList,...t.productList??{}},pricing:{...ie.pricing,...t.pricing??{}},cta:{...ie.cta,...t.cta??{}},savingsBar:{...ie.savingsBar,...t.savingsBar??{}},countdown:{...ie.countdown,...t.countdown??{}},popularBadge:{...ie.popularBadge,...t.popularBadge??{}}}}function jr(e){return e==="first"||e==="best_value"||typeof e=="number"&&Number.isInteger(e)&&e>=0?e:ie.defaultTier}function Vt(e){return e==="none"||e==="subtle"||e==="rounded"||e==="round"?e:ie.layout.borderRadius}function $r(e){return{primaryColor:e.cta.primaryColor,backgroundColor:e.layout.backgroundColor,textColor:e.productList.textColor,borderColor:e.layout.borderColor,borderWidth:e.layout.borderWidth,buttonTextColor:e.cta.buttonTextColor,ctaBorderWidth:e.cta.borderWidth,ctaBorderColor:e.cta.borderColor,borderRadius:Ft[e.layout.borderRadius],countdownBgColor:e.header.countdownBgColor,countdownTextColor:e.header.countdownTextColor,thumbnailRatio:e.productList.thumbnailRatio,showProductPrice:e.productList.showPrice,showProductCompareAtPrice:e.productList.showCompareAtPrice,showProductUnitPrice:e.productList.showUnitPrice,showProductQuantity:e.productList.showQuantity,showCountdown:e.countdown.showCountdown,ctaText:e.cta.ctaText,showLowStockBadge:e.showLowStockBadge,lowStockThreshold:e.lowStockThreshold,lowStockBgColor:e.lowStockBgColor,lowStockTextColor:e.lowStockTextColor,showComparePrice:e.pricing.showComparePrice,showPerUnitPrice:e.pricing.showPerUnitPrice,showItemCount:e.pricing.showItemCount,showCompareAtPrice:e.pricing.showCompareAtPrice,showMostPopular:e.popularBadge.visible,popularBadgeText:e.popularBadge.text,popularBadgeBgColor:e.popularBadge.bgColor,popularBadgeTextColor:e.popularBadge.textColor,popularBadgeBorderWidth:e.popularBadge.borderWidth,popularBadgeBorderColor:e.popularBadge.borderColor,showSearch:e.showSearch,mixMatchShowTypeFilters:e.mixMatchShowTypeFilters,pickerBgColor:e.pickerBgColor,pickerTextColor:e.pickerTextColor,pickerBorderWidth:e.pickerBorderWidth,pickerBorderColor:e.pickerBorderColor,pickerBorderRadius:Ft[e.pickerBorderRadius],pickerThumbnailRatio:e.pickerThumbnailRatio,pickerAddBgColor:e.pickerAddBgColor,pickerAddLabelColor:e.pickerAddLabelColor,pickerAddBorderWidth:e.pickerAddBorderWidth,pickerAddBorderColor:e.pickerAddBorderColor,defaultTier:e.defaultTier,...e.popularBadge.tierIndex!==void 0&&{mostPopularTierIndex:e.popularBadge.tierIndex}}}var Gr={primaryColor:"--lb-primary-color",backgroundColor:"--lb-bg",textColor:"--lb-text",borderColor:"--lb-border",borderWidth:"--lb-border-width",buttonTextColor:"--lb-btn-text",borderRadius:"--lb-radius",countdownBgColor:"--lb-countdown-bg",countdownTextColor:"--lb-countdown-text",ctaBorderWidth:"--lb-cta-border-width",ctaBorderColor:"--lb-cta-border-color",popularBadgeBgColor:"--lb-popular-badge-bg",popularBadgeTextColor:"--lb-popular-badge-text",popularBadgeBorderWidth:"--lb-popular-badge-border-width",popularBadgeBorderColor:"--lb-popular-badge-border-color",pickerBgColor:"--lb-picker-bg",pickerTextColor:"--lb-picker-text",pickerBorderWidth:"--lb-picker-border-width",pickerBorderColor:"--lb-picker-border-color",pickerBorderRadius:"--lb-picker-radius",pickerAddBgColor:"--lb-picker-add-bg",pickerAddLabelColor:"--lb-picker-add-label",pickerAddBorderWidth:"--lb-picker-add-border-width",pickerAddBorderColor:"--lb-picker-add-border-color"},Kr=new Set(["borderRadius","borderWidth","ctaBorderWidth","popularBadgeBorderWidth","pickerBorderWidth","pickerBorderRadius","pickerAddBorderWidth"]);function sn(e,t){let n=$r(t);for(let[i,a]of Object.entries(Gr)){let l=n[i];if(l==null)continue;let d=Kr.has(i)?`${l}px`:String(l);e.style.setProperty(a,d)}e.style.setProperty("--lb-product-price-display",t.productList.showPrice?"block":"none"),e.style.setProperty("--lb-product-compare-display",t.productList.showCompareAtPrice?"inline":"none"),e.style.setProperty("--lb-product-unit-price-display",t.productList.showUnitPrice?"block":"none"),e.style.setProperty("--lb-product-qty-chip-display",t.productList.showQuantity?"inline-flex":"none"),e.style.setProperty("--lb-product-qty-inline-display",t.productList.showQuantity?"inline":"none"),e.style.setProperty("--lb-variant-chevron",Ut(t.layout.borderColor)),e.style.setProperty("--lb-picker-variant-chevron",Ut(t.pickerBorderColor));let r=zt(t.productList.thumbnailRatio);e.style.setProperty("--lb-thumbnail-aspect-ratio",r.aspectRatio),e.style.setProperty("--lb-thumbnail-img-fit",r.imgFit),e.style.setProperty("--lb-thumbnail-img-height",r.imgHeight);let o=zt(t.pickerThumbnailRatio);e.style.setProperty("--lb-picker-thumbnail-aspect-ratio",o.aspectRatio),e.style.setProperty("--lb-picker-thumbnail-img-fit",o.imgFit),e.style.setProperty("--lb-picker-thumbnail-img-height",o.imgHeight)}function Ut(e){return`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='${e.replace(/#/g,"%23")}' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")`}function zt(e){switch(e){case"tall":return{aspectRatio:"3 / 4",imgFit:"cover",imgHeight:"100%"};case"wide":return{aspectRatio:"4 / 3",imgFit:"cover",imgHeight:"100%"};case"original":return{aspectRatio:"auto",imgFit:"contain",imgHeight:"auto"};default:return{aspectRatio:"1 / 1",imgFit:"cover",imgHeight:"100%"}}}var Yr=new Set(["fixed","mix_match","volume","bogo","multi_step"]),Jr=new Set(["active"]);function wt(e,t){try{return Xr(e,t)}catch(n){if(n instanceof ae)return null;throw n}}function Xr(e,t){let n=new Map(t.map(v=>[v.key,v])),r=n.get("title")?.value??"Bundle",o=n.get("bundle_type")?.value,i=n.get("status")?.value;if(!o||!Yr.has(o))throw new ae(`Invalid or missing bundle_type: ${o??"null"}`,"invalid_type");let a=o;if(!i||!Jr.has(i))throw new ae(`Bundle is not active: status=${i??"null"}`,"inactive");let l=i,d=n.get("starts_at")?.value??null,s=n.get("ends_at")?.value??null,u=new Date;if(d){let v=new Date(d);if(Number.isNaN(v.getTime()))throw new ae(`Invalid starts_at: ${d}`,"invalid_type");if(v>u)throw new ae(`Bundle not yet started: starts_at=${d}`,"not_started")}if(s){let v=new Date(s);if(Number.isNaN(v.getTime()))throw new ae(`Invalid ends_at: ${s}`,"invalid_type");if(v<u)throw new ae(`Bundle has expired: ends_at=${s}`,"expired")}let c=no(n),p=ro(n),f=oo(n),b={id:e,title:r,description:n.get("description")?.value||null,status:l,products:c,discountConfig:p,widgetConfig:f,startsAt:d,endsAt:s,discountLabel:n.get("discount_label")?.value??null,selectedVariantIds:io(n),productQuantities:Qt(n,"product_quantities"),variantQuantities:Qt(n,"variant_quantities"),marketVisibility:ao(n),marketIds:lo(n),abTestId:n.get("ab_test_id")?.value||null,abWeight:so(n)};switch(a){case"fixed":return{...b,bundleType:"fixed"};case"volume":return{...b,bundleType:"volume",volumeTiers:co(n)};case"mix_match":return{...b,bundleType:"mix_match",minQuantity:po(n,"min_quantity",{min:1}),maxQuantity:null,productRules:Oe(n,"product_rules"),variantRules:Oe(n,"variant_rules")};case"bogo":return{...b,bundleType:"bogo",...to(n)};case"multi_step":return{...b,bundleType:"multi_step",steps:Zr(n),productRules:Oe(n,"product_rules"),variantRules:Oe(n,"variant_rules"),collectionProductIds:eo(n)}}}function Zr(e){let t=ye(e,"steps");if(!Array.isArray(t))throw new ae("Invalid or missing steps","invalid_type");let n=o=>Array.isArray(o)?o.filter(i=>typeof i=="string"):[],r=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let i=o;if(typeof i.name!="string")continue;let a=typeof i.minQuantity=="number"?i.minQuantity:Number(i.minQuantity),l=Number.isFinite(a)&&a>=1?Math.floor(a):1,d=null;typeof i.maxQuantity=="number"&&Number.isFinite(i.maxQuantity)&&(d=Math.max(l,Math.floor(i.maxQuantity))),r.push({name:i.name,minQuantity:l,maxQuantity:d,productIds:n(i.productIds),collectionIds:n(i.collectionIds)})}if(r.length===0)throw new ae("multi_step bundle has no valid steps","invalid_type");return r}function eo(e){let t={},n=e.get("collection");if(!n?.references?.nodes)return t;for(let r of n.references.nodes)!("products"in r)||!r.products?.nodes||(t[r.id]=r.products.nodes.map(o=>o.id));return t}function to(e){let t=ye(e,"bogo_config");if(!t||typeof t!="object"||Array.isArray(t))throw new ae("Invalid or missing bogo_config","invalid_type");let n=t,r=typeof n.buyProductId=="string"?n.buyProductId:"",o=typeof n.getProductId=="string"?n.getProductId:"";if(!r||!o)throw new ae("bogo_config is missing buy/get product ids","invalid_type");let i=a=>{let l=typeof a=="number"?a:Number(a);return!Number.isFinite(l)||l<1?1:Math.min(99,Math.floor(l))};return{buyProductId:r,getProductId:o,buyQuantity:i(n.buyQuantity),getQuantity:i(n.getQuantity)}}function no(e){let t=[],n=e.get("products");if(n?.reference&&"variants"in n.reference&&t.push(n.reference),n?.references?.nodes)for(let o of n.references.nodes)"variants"in o?t.push(o):"products"in o&&o.products?.nodes&&t.push(...o.products.nodes);let r=e.get("collection");if(r?.references?.nodes)for(let o of r.references.nodes)"products"in o&&o.products?.nodes&&t.push(...o.products.nodes);return t}function ro(e){return{discountType:e.get("discount_type")?.value??"percentage",discountValue:parseFloat(e.get("discount_value")?.value??"0"),allowStacking:e.get("allow_stacking")?.value==="true"}}function oo(e){return Wr(ye(e,"widget_config"))}function io(e){let t=ye(e,"selected_variant_ids");if(!Array.isArray(t))return null;let n=[];for(let r of t)Array.isArray(r)?n.push(r.filter(o=>typeof o=="string")):n.push([]);return n}function Qt(e,t){let n=ye(e,t);if(!n||typeof n!="object"||Array.isArray(n))return{};let r={};for(let[o,i]of Object.entries(n)){let a=typeof i=="number"?i:Number(i);Number.isFinite(a)&&a>=0&&a<=99&&(r[o]=Math.floor(a))}return r}function Oe(e,t){let n=ye(e,t);if(!n||typeof n!="object"||Array.isArray(n))return{};let r={};for(let[o,i]of Object.entries(n)){if(!i||typeof i!="object"||Array.isArray(i))continue;let{min:a,max:l,required:d}=i,s=typeof a=="number"?a:Number(a),u=typeof l=="number"?l:Number(l);if(!Number.isFinite(s)||!Number.isFinite(u))continue;let c=Math.max(1,Math.min(99,Math.floor(s))),p=Math.max(c,Math.min(99,Math.floor(u)));r[o]=d===!0?{min:c,max:p,required:!0}:{min:c,max:p}}return r}function ao(e){return e.get("market_visibility")?.value==="specific"?"specific":"all"}function lo(e){let t=e.get("markets")?.value;if(!t)return[];try{let n=JSON.parse(t);return Array.isArray(n)?n.filter(r=>typeof r=="string"):[]}catch{return[]}}function so(e){let t=e.get("ab_weight")?.value;if(!t)return 0;let n=Number.parseInt(t,10);return Number.isNaN(n)?0:Math.min(100,Math.max(0,n))}function co(e){let t=ye(e,"volume_tiers");return Array.isArray(t)?t.filter(n=>typeof n=="object"&&n!==null).map(uo):[]}function uo(e){let t=Number(e.minQuantity??0),n={minQuantity:Number.isFinite(t)&&t>=0?t:0};return typeof e.percentage=="number"&&Number.isFinite(e.percentage)&&(n.percentage=e.percentage),typeof e.amount=="number"&&Number.isFinite(e.amount)&&(n.amount=e.amount),n}function ye(e,t){let n=e.get(t)?.value;if(!n)return null;try{return JSON.parse(n)}catch{return null}}function po(e,t,n={}){let r=e.get(t)?.value;if(!r)return null;let o=parseInt(r,10);return isNaN(o)||n.min!==void 0&&o<n.min?null:o}function dn(e,t){let n=0,r=0;for(let o=0;o<e.length;o++){let i=t==="fixed_amount"?e[o].amount??0:e[o].percentage??0;i>n&&(n=i,r=o)}return r}function cn(e,t,n){return t<=0?0:e==="best_value"?Math.min(n,t-1):Math.max(0,Math.min(Math.floor(typeof e=="number"?e:0),t-1))}function un(e,t,n){return t?typeof e=="number"&&Number.isFinite(e)?Math.floor(e):n:-1}function Wt(e){return e.split("/").pop()??e}function pn(e,t){if(e.marketVisibility!=="specific")return!0;if(!t)return!1;let n=Wt(t);return e.marketIds.some(r=>Wt(r)===n)}function mo(e,t){return e===t?!0:/^\d+$/.test(t)&&e.endsWith(`/${t}`)}function mn(e,t){let n=t?.productId?.trim();if(n){let o=e.find(i=>mo(i.id,n));if(o)return o}let r=t?.productHandle?.trim();if(r){let o=e.find(i=>i.handle===r);if(o)return o}return e[0]}function _t(e,t,n){let r=e.variantQuantities[n];return r!==void 0?r:e.productQuantities[t]??1}function bn(e,t){let n=e.steps[t];if(!n)return[];let r=new Set(n.productIds),o=new Set;for(let l of n.collectionIds)for(let d of e.collectionProductIds[l]??[])o.add(d);let i=new Set,a=[];for(let l of e.products)i.has(l.id)||!r.has(l.id)&&!o.has(l.id)||(i.add(l.id),a.push(l));return a}async function hn(e,t){await xn(e,{shopDomain:e.shopDomain,eventType:"bundle_impression",bundleGid:t.bundleGid,bundleType:t.bundleType,productId:t.productId,occurredAt:new Date().toISOString()})}async function fn(e,t){await xn(e,{shopDomain:e.shopDomain,eventType:"bundle_add_to_cart",...t,occurredAt:new Date().toISOString()})}function gn(e,t){if(typeof IntersectionObserver>"u")return t(),()=>{};let n=new IntersectionObserver(r=>{for(let o of r)o.isIntersecting&&(t(),n.unobserve(o.target))},{threshold:.5});return n.observe(e),()=>n.disconnect()}async function xn(e,t){let n=`${e.appUrl}/api/analytics`,r=JSON.stringify(t);try{(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r})).ok||(await new Promise(i=>setTimeout(i,2e3)),await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:r}))}catch{try{typeof navigator<"u"&&navigator.sendBeacon&&navigator.sendBeacon(n,r)}catch{}}}var jt=1e4,bo=[[/@import/i,"@import rules"],[/@charset/i,"@charset declarations"],[/expression\s*\(/i,"CSS expressions"],[/-moz-binding/i,"-moz-binding"],[/-webkit-binding/i,"-webkit-binding"],[/behavior\s*:/i,"behavior property"]],ho=/^(https:|\/[^/]|\.\/|\.\.\/|#)/;function Ct(e){if(e.length>jt)return{ok:!1,error:`CSS exceeds ${jt.toLocaleString("en-US")} character limit`};let t=e.replace(/\/\*[\s\S]*?\*\//g,"");try{t=t.replace(/\\([0-9a-fA-F]{1,6})[ \t\n\f]?/g,(o,i)=>{let a=parseInt(i,16);return a<0||a>1114111?"\uFFFD":String.fromCodePoint(a)}),t=t.replace(/\\\r?\n/g,""),t=t.replace(/\\([^\n\r\f0-9a-fA-F])/g,"$1")}catch{return{ok:!1,error:"CSS contains invalid unicode escape sequences"}}t=t.replace(/</g,"").replace(/>/g,"");for(let[o,i]of bo)if(o.test(t))return{ok:!1,error:`CSS contains blocked pattern: ${i}`};let n=/url\s*\(\s*([\s\S]*?)\s*\)/gi,r;for(;(r=n.exec(t))!==null;){let o=r[1].trim();if((o.startsWith("'")||o.startsWith('"'))&&(o=o.slice(1)),(o.endsWith("'")||o.endsWith('"'))&&(o=o.slice(0,-1)),o=o.trim(),o&&!ho.test(o))return{ok:!1,error:"CSS url() values must use https:// or relative paths"}}return{ok:!0,css:t}}var fo="lb-custom-css-";function vn(e,t){if(typeof document>"u"||!t)return!1;let n=Ct(t);if(!n.ok||!n.css.trim())return!1;let r=fo+go(e),o=document.getElementById(r);return o||(o=document.createElement("style"),o.id=r,o.setAttribute("data-lime-bundles","custom-css"),document.head.appendChild(o)),o.textContent!==n.css&&(o.textContent=n.css),!0}function go(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function xo(e,t){let n=typeof e=="string"?parseFloat(e):e;try{return new Intl.NumberFormat(void 0,{style:"currency",currency:t}).format(n)}catch{return`${t} ${n.toFixed(2)}`}}function Ve(e,t,n){return t==="percentage"?Math.max(0,e*(1-n/100)):Math.max(0,e-n)}var vo={CL:"cl",CM:"cm",FLOZ:"fl oz",FT:"ft",FT2:"ft\xB2",G:"g",GAL:"gal",IN:"in",ITEM:"each",KG:"kg",L:"l",LB:"lb",M:"m",M2:"m\xB2",M3:"m\xB3",MG:"mg",ML:"ml",MM:"mm",OZ:"oz",PT:"pt",QT:"qt",UNKNOWN:"",YD:"yd"};function yn(e,t,n){if(!e||!t||t.referenceUnit==="UNKNOWN")return null;let r=parseFloat(e.amount);if(!Number.isFinite(r))return null;let o=vo[t.referenceUnit]??"";if(!o)return null;let i=e.currencyCode||n||"USD",a=xo(r,i),l=t.referenceValue,d=l===1?o:`${l}${o}`;return`${a}/${d}`}var we={};Jt(we,{computePosition:()=>wo,emptyTypeAheadState:()=>So,firstEnabled:()=>Fe,handleKey:()=>ko,pushTypeAheadChar:()=>Eo});var yo=4;function wo({trigger:e,viewportHeight:t,desiredHeight:n,margin:r=yo,clip:o}){let i=o?Math.min(t,o.bottom):t,a=o?Math.max(0,o.top):0,l=Math.max(0,i-e.bottom-r),d=Math.max(0,e.top-a-r),s=n<=l?"down":d>l?"up":"down",c=Math.min(n,s==="down"?l:d),p=s==="down"?e.bottom+r:e.top-r-c;return{placement:s,maxHeight:c,offsetTop:p,offsetLeft:e.left,width:e.width}}var xt={type:"passthrough",preventDefault:!1};function Fe(e){for(let t=0;t<e.length;t++)if(!e[t].disabled)return t;return-1}function $t(e){for(let t=e.length-1;t>=0;t--)if(!e[t].disabled)return t;return-1}function _o(e,t){if(e.length===0)return-1;for(let n=1;n<=e.length;n++){let r=(t+n)%e.length;if(!e[r].disabled)return r}return t}function Co(e,t){if(e.length===0)return-1;for(let n=1;n<=e.length;n++){let r=(t-n+e.length)%e.length;if(!e[r].disabled)return r}return t}function Gt(e){return e.length===1&&e!==" "&&/\S/.test(e)}function ko(e,t){if(e.ctrlKey||e.metaKey||e.altKey)return xt;let{key:n}=e,{isOpen:r,activeIndex:o,selectedIndex:i,options:a}=t;if(!r)switch(n){case"Enter":case" ":case"ArrowDown":return{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:Fe(a),preventDefault:!0};case"ArrowUp":return{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:$t(a),preventDefault:!0};default:return Gt(n)?{type:"open",activeIndex:i>=0&&!a[i]?.disabled?i:Fe(a),preventDefault:!0}:xt}switch(n){case"ArrowDown":return{type:"move-active",activeIndex:_o(a,o),preventDefault:!0};case"ArrowUp":return{type:"move-active",activeIndex:Co(a,o),preventDefault:!0};case"Home":return{type:"move-active",activeIndex:Fe(a),preventDefault:!0};case"End":return{type:"move-active",activeIndex:$t(a),preventDefault:!0};case"Enter":case" ":return o>=0&&!a[o]?.disabled?{type:"commit",index:o,preventDefault:!0}:{type:"passthrough",preventDefault:!0};case"Escape":return{type:"close",commit:!1,restoreFocus:!0,preventDefault:!0};case"Tab":return{type:"close",commit:!1,restoreFocus:!1,preventDefault:!1};default:return Gt(n)?{type:"type-ahead",char:n,preventDefault:!1}:xt}}var To=500;function So(){return{buffer:"",lastTime:0}}function Eo(e,t,n,r,o=To){if(t.length!==1)return{newState:e,matchedIndex:null};let a=(n-e.lastTime>o?"":e.buffer)+t.toLowerCase(),l={buffer:a,lastTime:n};for(let d=0;d<r.length;d++){let s=r[d];if(!s.disabled&&s.label.toLowerCase().startsWith(a))return{newState:l,matchedIndex:d}}return{newState:l,matchedIndex:null}}var Io={};Jt(Io,{findVariantByOptions:()=>Ao,isOptionValueAvailable:()=>Lo,toPickerVariant:()=>Mo});function wn(e){return e.availableForSale&&!e.currentlyNotInStock&&e.quantityAvailable!=null&&e.quantityAvailable<=0}function Ie(e,t){return e.availableForSale?e.currentlyNotInStock||e.quantityAvailable==null||wn(e)?!0:e.quantityAvailable>=t:!1}function Ue(e){return e.currentlyNotInStock||e.quantityAvailable==null||wn(e)?null:Math.max(0,e.quantityAvailable)}function Ao(e,t){if(e.length===0)return null;for(let n of e){if(n.optionValues.length!==t.length)continue;let r=!0;for(let o=0;o<n.optionValues.length;o++)if(n.optionValues[o]!==t[o]){r=!1;break}if(r)return n}return null}function Lo(e,t,n,r){for(let o of e){if(!o.available||o.optionValues[t]!==n)continue;let i=!0;for(let a=0;a<o.optionValues.length;a++)if(a!==t&&o.optionValues[a]!==r[a]){i=!1;break}if(i)return!0}return!1}function Mo(e,t){return{id:e.id,optionValues:e.selectedOptions.map(n=>n.value),available:t!==void 0?Ie(e,t):e.availableForSale}}var Kt="_lb_v",vt=null;function Po(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24),t>>>=0;return t>>>0}function _n(){try{let e=window.localStorage.getItem(Kt);if(e)return e;let t=Yt();return window.localStorage.setItem(Kt,t),t}catch{return vt||(vt=Yt()),vt}}function Yt(){return Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}function Bo(e,t,n){let r=e.slice().sort((a,l)=>a.id<l.id?-1:a.id>l.id?1:0),o=Po(t+":"+n)%100,i=0;for(let a of r)if(i+=Math.max(0,a.abWeight),o<i)return a;return r[r.length-1]}function Cn(e,t){let n=new Map;for(let o of e){if(!o.abTestId)continue;let i=n.get(o.abTestId);i?i.push(o):n.set(o.abTestId,[o])}if(n.size===0)return e.slice();let r=new Map;return n.forEach((o,i)=>{if(o.length===1){r.set(i,o[0]);return}r.set(i,Bo(o,t,i))}),e.filter(o=>!o.abTestId||r.get(o.abTestId)===o)}function le(e){return t=>{try{return new Intl.NumberFormat(void 0,{style:"currency",currency:e}).format(t/100)}catch{return e+" "+(t/100).toFixed(2)}}}var kt="_lime_bundle_gid",qo="_lime_bundle_type";function se(e,t){return[{key:kt,value:e},{key:qo,value:t}]}function kn(e){let t=e.slice(e.lastIndexOf("/")+1),n=Number(t);return Number.isFinite(n)&&t!==""?n:e}function ze(e){if(!e)return 0;let t=parseFloat(e);return Number.isFinite(t)?Math.round(t*100):0}function Ro(e){let t=e?.width,n=e?.height;return typeof t!="number"||typeof n!="number"||t<=0||n<=0?null:t/n}function No(e,t,n){return{id:kn(e.id),title:e.title,options:(e.selectedOptions??[]).map(r=>r.value),available:Ie(e,t),price:ze(e.price?.amount),compareAtPrice:ze(e.compareAtPrice?.amount),unitPrice:yn(e.unitPrice,e.unitPriceMeasurement,n),image:e.image?.url??null,inventoryQuantity:Ue(e)}}function Ce(e,t,n){let r=n.allowedVariantIds,o=e.variants.nodes.filter(s=>!r||r.length===0||r.includes(s.id)),i=e.priceRange.minVariantPrice.currencyCode,a=_t(n.quantities,e.id,o[0]?.id??""),l=o.map(s=>{let u=_t(n.quantities,e.id,s.id),c=No(s,u,i);return u!==a&&(c.quantity=u),c}),d=l.find(s=>s.available)??l[0];return{productId:kn(e.id),title:e.title,url:e.handle?"/products/"+e.handle:null,featuredImage:e.featuredImage?.url??null,featuredImageRatio:Ro(e.featuredImage),quantity:a,selectedVariantId:d?d.id:"",optionNames:(o[0]?.selectedOptions??[]).map(s=>s.name),variants:l}}function Qe(e){return e.products.map((t,n)=>Ce(t,e.id,{quantities:{productQuantities:e.productQuantities,variantQuantities:e.variantQuantities},allowedVariantIds:e.selectedVariantIds?.[n]??null}))}function Z(e,t){for(let n=0;n<e.variants.length;n++)if(String(e.variants[n].id)===String(t))return e.variants[n];return e.variants[0]}function Tn(e){let t=Z(e,e.selectedVariantId);if(t&&t.available!==!1)return t;for(let n=0;n<e.variants.length;n++)if(e.variants[n].available!==!1)return e.variants[n];return null}function Sn(e,t){if(!e.variants||!t)return null;for(let n=0;n<e.variants.length;n++){let r=e.variants[n];if(!r.options||r.options.length!==t.length)continue;let o=!0;for(let i=0;i<r.options.length;i++)if(r.options[i]!==t[i]){o=!1;break}if(o)return r}return null}function En(e,t,n,r){for(let o=0;o<e.length;o++){let i=e[o];if(i.available===!1||!i.options||i.options[t]!==n)continue;let a=!0;for(let l=0;l<i.options.length;l++)if(l!==t&&i.options[l]!==r[l]){a=!1;break}if(a)return!0}return!1}function In(e){let t=[];for(let n=0;n<e.length;n++){let r=Z(e[n],e[n].selectedVariantId),o=r.quantity||e[n].quantity||1;t.push({variantId:Number(e[n].selectedVariantId),quantity:o,priceCents:(r.price||0)*o})}return t}function Ho(e,t,n){let r=0,o=0;for(let i=0;i<e.length;i++){let a=Z(e[i],e[i].selectedVariantId),l=a.quantity||e[i].quantity||1,d=a.price*l;if(r+=d,t==="percentage"){let s=Math.floor(a.price*n/100);o+=(a.price-s)*l}else o+=d}if(t==="fixed_amount"&&(o=Math.max(0,r-Math.round(n*100))),t==="flat_price"){let i=Math.round(n*100);o=i<r?i:r}return{totalPrice:r,salePrice:o,savings:r-o}}function Tt(e,t,n){let r=e.classList?.contains("lb-fixed")?e:e.querySelector(".lb-fixed");if(!r)return;let{totalPrice:o,salePrice:i,savings:a}=Ho(t,r.getAttribute("data-discount-type")||"",parseFloat(r.getAttribute("data-discount-value")??"")||0),l=e.querySelector("[data-sale-price]"),d=e.querySelector("[data-compare-price]"),s=e.querySelector("[data-savings-bar]"),u=e.querySelector("[data-savings-amount]"),c=e.querySelector("[data-savings-percent]");if(l&&(l.textContent=n(i)),d&&(a>0?(d.textContent=n(o),d.style.display=""):d.style.display="none"),s)if(a>0){if(u&&(u.textContent=n(a)),c){let p=o>0?Math.round(a*100/o):0;c.textContent="("+p+"%)"}s.style.display=""}else s.style.display="none"}function We(e,t,n){let r=e.querySelectorAll("[data-variant-option]");if(!r.length)return;function o(s){return parseInt(s.getAttribute("data-option-position")??"",10)}function i(){let s=[];for(let u=0;u<r.length;u++){let c=o(r[u]);!c||c<1||(s[c-1]=r[u].value)}return s}function a(s){if(!(!s||!s.options))for(let u=0;u<r.length;u++){let c=o(r[u]);if(!c||c<1)continue;let p=s.options[c-1];r[u].value!==p&&(r[u].value=p)}}function l(s,u){for(let c=0;c<r.length;c++){let p=r[c],f=o(p);if(!f||f<1)continue;let b=p.options;for(let v=0;v<b.length;v++)b[v].disabled=!En(s.variants,f-1,b[v].value,u)}}let d=t();if(d){let s=Z(d,d.selectedVariantId);s&&s.options&&l(d,s.options)}for(let s=0;s<r.length;s++)r[s].addEventListener("change",u=>{u.stopPropagation();let c=t();if(!c)return;let p=Sn(c,i());if(!p){let f=Z(c,c.selectedVariantId);a(f),f&&f.options&&l(c,f.options);return}c.selectedVariantId=p.id,l(c,p.options),n(p,c)})}function je(e,t,n){if(!t.variants.length)return;let r=e.querySelector(".lb-bundle-variant-badge");r&&!r.textContent&&(r.textContent=n.title);let o=e.querySelector(".lb-bundle-variant-option-groups");o&&!o.children.length&&Do(o,t,n)}function Do(e,t,n){let r=t.optionNames||[];for(let o=0;o<r.length;o++){let i=document.createElement("div");i.className="lb-bundle-variant-option-group";let a=document.createElement("span");a.className="lb-bundle-variant-option-label",a.textContent=r[o],i.appendChild(a);let l=document.createElement("select");l.className="lb-bundle-variant-select",l.setAttribute("data-variant-option",""),l.setAttribute("data-option-position",String(o+1)),l.setAttribute("data-product-id",String(t.productId)),l.name="lb-variant-"+t.productId+"-"+(o+1),l.setAttribute("aria-label",r[o]);let d=Object.create(null);for(let s of t.variants){let u=s.options&&s.options[o];if(!u||d[u])continue;d[u]=!0;let c=document.createElement("option");c.value=u,c.textContent=u,n.options&&n.options[o]===u&&(c.selected=!0),l.appendChild(c)}i.appendChild(l),e.appendChild(i)}}var St=new WeakMap;function $e(e,t,n){let r=e.querySelector("[data-thumbnail]");if(!r)return;let o=r.querySelector("img");if(!St.has(e)){let a=n||(o?o.src:null);a&&St.set(e,a)}let i=t.image||St.get(e)||null;if(i)if(o)o.src=i,o.srcset="";else{let a=document.createElement("img");a.src=i,a.loading="lazy",a.alt="",r.textContent="",r.appendChild(a)}}function Oo(e,t){let n=e.querySelector("[data-qty-inline]");n&&(n.textContent="\xD7"+t)}function Et(e,t,n,r){if(!t)return;$e(e,t,n.featuredImage),Oo(e,t.quantity||n.quantity||1);let o=e.querySelector("[data-product-price]");o&&t.price!=null&&(o.textContent=r(t.price));let i=e.querySelector("[data-product-compare-price]");if(i){let l=t.compareAtPrice;l&&l>t.price?(i.textContent=r(l),i.hidden=!1):(i.textContent="",i.hidden=!0)}let a=e.querySelector("[data-product-unit-price]");a&&(t.unitPrice?(a.textContent=t.unitPrice,a.hidden=!1):(a.textContent="",a.hidden=!0))}function P(e,t,n){let r=document.createElement(e);r.className=t;for(let o in n)r.setAttribute(o,n[o]);return r}function Ge(e,t,n){let r=e.variants.length,o=P("div","lb-bundle-product-row");n.isOos&&(o.classList.add("lb-bundle-product-row--oos"),o.setAttribute("aria-disabled","true")),o.setAttribute("data-product-id",String(e.productId)),n.bogoRole&&o.setAttribute("data-bogo-role",n.bogoRole);let i=P("div","lb-bundle-thumbnail",{"data-thumbnail":""}),a=e.featuredImageRatio;n.thumbnailRatio==="original"&&a!=null&&a>0&&i.style.setProperty("--lb-row-thumb-ratio",String(a)),o.appendChild(i);let l=P("div","lb-bundle-product-info"),d=document.createElement(n.href?"a":"span");if(d.className="lb-bundle-product-name",n.href&&(d.href=n.href),d.textContent=e.title??"",l.appendChild(d),n.isOos){let u=P("span","lb-bundle-oos-label");return u.textContent=t.outOfStock||"Out of stock",l.appendChild(u),o.appendChild(l),o}r===1&&e.variants[0]?.title!=="Default Title"&&l.appendChild(P("span","lb-bundle-variant-badge"));let s=P("span","lb-bundle-product-prices");if(s.appendChild(P("span","lb-bundle-product-compare-price",{"data-product-compare-price":"",hidden:""})),s.appendChild(P("span","lb-bundle-product-price",{"data-product-price":""})),n.inlineQuantity!=null){let u=P("span","lb-bundle-qty-inline",{"data-qty-inline":""});u.textContent="\xD7"+n.inlineQuantity,s.appendChild(u)}if(l.appendChild(s),l.appendChild(P("span","lb-bundle-product-unit-price",{"data-product-unit-price":""})),r>1&&l.appendChild(P("div","lb-bundle-variant-option-groups",{style:"--lb-row-option-count: "+(e.optionNames.length||1)})),o.appendChild(l),n.inlineQuantity==null&&o.appendChild(P("span","lb-bundle-qty-chip",{"data-qty-inline":""})),n.badgeText){let u=P("span","lb-bogo__badge");u.textContent=n.badgeText,o.appendChild(u)}return o}function de(e,t){let n=P("div",e),r=P("div","lb-bundle-header"),o=P("h3","lb-bundle-title");if(o.textContent=t.title,r.appendChild(o),t.subtitle){let p=P("p","lb-bundle-subtitle");p.textContent=t.subtitle,r.appendChild(p)}if(n.appendChild(r),t.endsAt){let p=P("div","lb-bundle-countdown",{"data-countdown":""}),f=P("span","lb-bundle-countdown-label");f.textContent=t.countdownLabel??"Limited time offer",p.appendChild(f),p.appendChild(P("span","lb-bundle-countdown-timer",{"data-countdown-timer":""})),n.appendChild(p)}let i=P("div",e+"__products lb-edge-fade");n.appendChild(i),n.appendChild(P("div","lb-bundle-divider"));let a=P("div","lb-bundle-summary",{"data-pricing-section":""}),l=P("div","lb-bundle-summary__text"),d=P("span","lb-bundle-summary__label");if(d.textContent=t.summaryLabel??"Bundle total",l.appendChild(d),t.withItemCount&&d.appendChild(P("span","",{"data-item-count":""})),t.showSavingsBar){let p=P("p","lb-bundle-savings-line",{"data-savings-bar":"",style:"display:none"});p.appendChild(document.createTextNode("Save ")),p.appendChild(P("span","",{"data-savings-amount":""})),p.appendChild(document.createTextNode(" ")),p.appendChild(P("span","",{"data-savings-percent":""})),l.appendChild(p)}a.appendChild(l);let s=P("span","lb-bundle-summary__prices");t.showComparePrice&&s.appendChild(P("span","lb-bundle-compare-price",{"data-compare-price":""})),s.appendChild(P("span","lb-bundle-sale-price",{[t.totalPriceSlot?"data-total-price":"data-sale-price"]:""})),a.appendChild(s),n.appendChild(a);let u=P("button","lb-bundle-cta",{"data-cta-text":t.ctaText,type:"button","data-add-bundle":""}),c=P("span","lb-cta-label",{"data-cta-label":""});return c.textContent=t.ctaText,u.appendChild(c),n.appendChild(u),n.appendChild(P("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),n.appendChild(P("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),{root:n,products:i,cta:u}}function An(e,t,n={}){let r=n.showCompare!==!1,o=n.showPriceEach!==!1,i=P("div","lb-volume__tiers lb-edge-fade",{role:"radiogroup","aria-label":t,"data-tier-group":""});return e.forEach((a,l)=>{let d=P("div","lb-volume__tier",{role:"radio","aria-checked":a.selected?"true":"false",tabindex:a.selected?"0":"-1","data-tier-index":String(l),"data-tier-qty":String(a.quantity),"data-tier-pct":String(a.percent),"data-tier-amt":String(a.amountCents)}),s=P("span","lb-volume__radio");s.appendChild(P("span","lb-volume__radio-dot")),d.appendChild(s);let u=P("span","lb-volume__tier-info"),c=P("span","lb-volume__tier-label");c.textContent=a.label,u.appendChild(c);let p=P("span","lb-volume__tier-price");if(r&&(a.percent>0||a.amountCents>0)&&p.appendChild(P("span","lb-volume__tier-compare")),o&&(p.appendChild(P("span","",{"data-tier-price-each":""})),n.unitLabel)){let f=P("span","lb-volume__tier-unit");f.textContent=n.unitLabel,p.appendChild(f)}if(u.appendChild(p),d.appendChild(u),a.badgeLabel||a.savingsLabel){let f=P("span","lb-volume__tier-right");if(a.badgeLabel){let b=P("span","lb-volume__tier-badge");b.textContent=a.badgeLabel,f.appendChild(b)}if(a.savingsLabel){let b=P("span","lb-volume__tier-savings");b.textContent=a.savingsLabel,f.appendChild(b)}d.appendChild(f)}i.appendChild(d)}),i}function Ke(e){let t=P("div","lb-mix-match__progress",{"data-progress":""}),n=P("div","lb-mix-match__progress-segments",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e)});for(let o=0;o<e;o++)n.appendChild(P("span","lb-mix-match__progress-segment",{"data-progress-segment":""}));t.appendChild(n);let r=P("div","lb-mix-match__progress-labels");return r.appendChild(P("span","lb-mix-match__progress-count",{"data-progress-count":"","aria-live":"polite"})),r.appendChild(P("span","lb-mix-match__progress-remaining",{"data-progress-remaining":"","aria-live":"polite"})),t.appendChild(r),t}function ke(e){return e<10?"0"+e:String(e)}function ce(e){e._lbCountdownInterval&&(clearInterval(e._lbCountdownInterval),e._lbCountdownInterval=null);let t=e.querySelector("[data-countdown]");if(!t)return;let n=e.closest(".lb-bundle-widget"),r=n&&n.getAttribute("data-ends-at");if(!r){t.style.display="none";return}let o=new Date(r).getTime();if(isNaN(o)){t.style.display="none";return}let i=t.querySelector("[data-countdown-timer]");if(!i)return;let a;function l(){let d=o-Date.now();if(d<=0){n&&(n.style.display="none"),a&&clearInterval(a);return}let s=Math.floor(d/864e5),u=Math.floor(d%864e5/36e5),c=Math.floor(d%36e5/6e4),p=Math.floor(d%6e4/1e3);i.textContent=s>0?s+"d "+ke(u)+"h "+ke(c)+"m "+ke(p)+"s":ke(u)+"h "+ke(c)+"m "+ke(p)+"s"}l(),o-Date.now()>0&&(a=setInterval(l,1e3),e._lbCountdownInterval=a)}var ue={locale:"en",addItem:"Add",addedItem:"Added",removeItem:"Remove",swapItem:"Swap",required:"Required",soldOut:"Sold out",outOfStock:"Out of stock",itemsOutOfStock:{one:"__COUNT__ item out of stock",other:"__COUNT__ items out of stock"},quantity:"Quantity",increaseQuantity:"Increase quantity",decreaseQuantity:"Decrease quantity",allTypes:"All",editSelection:"Edit selection",addToCart:"Add to cart",bundlePrice:"Bundle price",save:"Save",complete:"Complete",ofSelected:"__COUNT__ of __TOTAL__ added",moreToGo:"__COUNT__ more to go",nProductsShown:"__COUNT__ products shown",bundleComplete:"Your bundle is complete",chooseMoreUnlock:"Choose __COUNT__ more to unlock __PCT__% off",chooseMoreComplete:"Choose __COUNT__ more to complete your bundle",stepOf:"Step __STEP__ of __TOTAL__",stepsCompleted:"__COUNT__ of __TOTAL__ steps completed",doorChoose:"Choose your products",doorContinue:"Continue building",doorQuickSteps:{one:"__COUNT__ quick step",other:"__COUNT__ quick steps"},doorStepsToGo:{one:"__COUNT__ step to go",other:"__COUNT__ steps to go"},each:" each",buyQty:"Buy __COUNT__",itemCount:{one:"__COUNT__ item",other:"__COUNT__ items"},needsSpots:{one:"Needs __COUNT__ spot",other:"Needs __COUNT__ spots"}};function Ye(e,t){let n=e.itemsOutOfStock,r;if(n&&typeof n=="object"){let o=new Intl.PluralRules(e.locale||"en").select(t);r=n[o]||n.other}else r=n;return(r||"__COUNT__ items out of stock").split("__COUNT__").join(String(t))}function Ln(e){let t=e.ownerDocument,n=t&&t.defaultView;if(!n)return null;let r=e.parentElement;for(;r&&r!==t.body;){let o=n.getComputedStyle(r).overflowY;if(o==="auto"||o==="scroll"||o==="hidden")return r;r=r.parentElement}return null}var re=[],Je=!1;function Fo(e,t){if(e.composedPath){let r=e.composedPath();for(let o=0;o<r.length;o++)if(r[o]===t.shell||r[o]===t.listbox)return!0;return!1}let n=e.target;return t.shell.contains(n)||t.listbox.contains(n)}function Xe(e){for(let t=re.length-1;t>=0;t--)Fo(e,re[t])||re[t].close()}function Mn(){for(let e=re.length-1;e>=0;e--)re[e].close()}function Vo(){Je||(document.addEventListener("pointerdown",Xe,!0),window.addEventListener("resize",Mn),window.addEventListener("scroll",Xe,!0),Je=!0)}function Uo(){Je&&(document.removeEventListener("pointerdown",Xe,!0),window.removeEventListener("resize",Mn),window.removeEventListener("scroll",Xe,!0),Je=!1)}function Pn(e){re.push(e),re.length===1&&Vo()}function Bn(e){let t=re.indexOf(e);t>=0&&re.splice(t,1),re.length===0&&Uo()}function qn(e){for(let t=re.length-1;t>=0;t--)re[t]!==e&&re[t].close()}var zo=32,Qo=8,Wo=8,It=new WeakMap;function Rn(e){return It.get(e)}function Nn(e){if(e.classList.contains("lb-dropdown-state"))return null;let t=document,n=e.getAttribute("aria-label")||"",r="lb-dd-"+Math.random().toString(36).slice(2,9);e.classList.add("lb-dropdown-state"),e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex","-1");let o=t.createElement("div");o.className="lb-dropdown",o.setAttribute("data-lb-dropdown","");let i=t.createElement("button");i.type="button",i.className="lb-dropdown-trigger",i.setAttribute("role","combobox"),i.setAttribute("aria-haspopup","listbox"),i.setAttribute("aria-expanded","false");let a=r+"-listbox";i.setAttribute("aria-controls",a),n&&i.setAttribute("aria-label",n);let l=t.createElement("span");l.className="lb-dropdown-trigger-value";let d=t.createElement("span");d.className="lb-dropdown-chevron",d.setAttribute("aria-hidden","true"),i.appendChild(l),i.appendChild(d);let s=t.createElement("ul");s.id=a,s.className="lb-dropdown-listbox",s.setAttribute("role","listbox"),n&&s.setAttribute("aria-label",n),s.hidden=!0,o.appendChild(i),e.parentNode?.insertBefore(o,e.nextSibling);let u=e.closest("[data-modal-overlay]");u?(u.appendChild(s),s.setAttribute("data-lb-dropdown-portal","")):o.appendChild(s);let c=!1,p=-1,f=we.emptyTypeAheadState(),b=[];function v(){let A=[];for(let S=0;S<e.options.length;S++){let h=e.options[S];A.push({disabled:h.disabled,label:h.textContent||h.value})}return A}function F(){i.disabled=e.disabled;let A=v(),S=e.selectedIndex;for(l.textContent=S>=0&&A[S]?A[S].label:"";s.firstChild;)s.removeChild(s.firstChild);b=[];for(let h=0;h<A.length;h++){let E=t.createElement("li");E.id=r+"-opt-"+h,E.className="lb-dropdown-option",E.setAttribute("role","option"),E.setAttribute("aria-selected",h===S?"true":"false"),A[h].disabled&&E.setAttribute("aria-disabled","true"),E.setAttribute("data-value",e.options[h].value),E.setAttribute("data-index",String(h)),E.textContent=A[h].label,s.appendChild(E),b.push(E)}}function x(A){if(p>=0&&b[p]&&b[p].classList.remove("is-active"),p=A,A<0||!b[A]){i.setAttribute("aria-activedescendant","");return}let S=b[A];S.classList.add("is-active"),i.setAttribute("aria-activedescendant",S.id);let h=S.offsetTop,E=h+S.offsetHeight,V=s.scrollTop,g=V+s.clientHeight;h<V?s.scrollTop=h:E>g&&(s.scrollTop=E-s.clientHeight)}function T(){let A=i.getBoundingClientRect();if(A.width===0)return!1;let h=Math.min(b.length||1,Wo)*zo+Qo,E=Ln(i),V=E?{top:E.getBoundingClientRect().top,bottom:E.getBoundingClientRect().bottom}:void 0,g=we.computePosition({trigger:{top:A.top,bottom:A.bottom,left:A.left,width:A.width},viewportHeight:window.innerHeight,desiredHeight:h,clip:V});return s.setAttribute("data-placement",g.placement),s.style.maxHeight=g.maxHeight+"px",s.hasAttribute("data-lb-dropdown-portal")&&(s.style.top=g.offsetTop+"px",s.style.left=g.offsetLeft+"px",s.style.width=g.width+"px"),!0}function z(){if(c)return;qn(W),c=!0,s.hidden=!1,i.setAttribute("aria-expanded","true"),T()||requestAnimationFrame(()=>{T()});let A=v(),S=e.selectedIndex;S>=0&&A[S]&&!A[S].disabled?x(S):x(we.firstEnabled(A)),Pn(W)}function I(A){c&&(c=!1,s.hidden=!0,i.setAttribute("aria-expanded","false"),i.setAttribute("aria-activedescendant",""),p>=0&&b[p]&&b[p].classList.remove("is-active"),p=-1,Bn(W),A&&i.focus())}function R(A){let S=e.options[A];!S||S.disabled||(e.value!==S.value&&(e.value=S.value,e.dispatchEvent(new Event("change",{bubbles:!0}))),F(),I(!0))}function _(A){let S=v(),h=we.handleKey({key:A.key,ctrlKey:A.ctrlKey,metaKey:A.metaKey,altKey:A.altKey,shiftKey:A.shiftKey},{isOpen:c,activeIndex:p,selectedIndex:e.selectedIndex,options:S});switch(h.preventDefault&&A.preventDefault(),h.type){case"open":z(),h.activeIndex>=0&&x(h.activeIndex);break;case"close":I(h.restoreFocus);break;case"move-active":x(h.activeIndex);break;case"commit":R(h.index);break;case"type-ahead":{let E=we.pushTypeAheadChar(f,h.char,Date.now(),S);f=E.newState,E.matchedIndex!==null&&(c||z(),x(E.matchedIndex));break}}}function C(A){A.preventDefault(),c?I(!1):z()}function m(A){let S=A.target;for(;S&&S!==s;){if(S.classList&&S.classList.contains("lb-dropdown-option")){let h=parseInt(S.getAttribute("data-index")??"",10);return isNaN(h)?null:h}S=S.parentNode}return null}function H(A){let S=m(A);S!==null&&R(S)}function N(A){let S=A.target;for(;S&&S!==s;){if(S.classList&&S.classList.contains("lb-dropdown-option")){if(S.getAttribute("aria-disabled")==="true")return;let h=parseInt(S.getAttribute("data-index")??"",10);!isNaN(h)&&h!==p&&x(h);return}S=S.parentNode}}function D(){setTimeout(()=>{c&&(o.contains(document.activeElement)||I(!1))},0)}function B(){F()}let G=new MutationObserver(()=>{F()});G.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["disabled","value","selected"]});function K(A){A.preventDefault()}i.addEventListener("click",C),i.addEventListener("keydown",_),o.addEventListener("focusout",D),s.addEventListener("mousedown",K),s.addEventListener("click",H),s.addEventListener("mousemove",N),e.addEventListener("change",B);function j(){c&&I(!1),G.disconnect(),i.removeEventListener("click",C),i.removeEventListener("keydown",_),o.removeEventListener("focusout",D),s.removeEventListener("mousedown",K),s.removeEventListener("click",H),s.removeEventListener("mousemove",N),e.removeEventListener("change",B),o.parentNode?.removeChild(o),s.parentNode?.removeChild(s),e.classList.remove("lb-dropdown-state"),e.removeAttribute("aria-hidden"),e.removeAttribute("tabindex"),It.delete(e)}let W={shell:o,listbox:s,select:e,close:()=>I(!1),destroy:j};return It.set(e,W),F(),W}var jo="select.lb-bundle-variant-select:not(.lb-dropdown-state), select.lb-mix-match__variant-select:not(.lb-dropdown-state)";function Hn(e){let n=(e??document).querySelectorAll(jo);for(let r=0;r<n.length;r++)Nn(n[r])}function Dn(e){let n=(e??document).querySelectorAll("select.lb-dropdown-state");for(let r=0;r<n.length;r++)Rn(n[r])?.destroy()}function fe(e){return Hn(e),()=>Dn(e)}function On(e,t,n,r){let o=t.widgetConfig,i=Qe(t);if(!i.length)return;let a=i.filter(c=>!c.variants.some(p=>p.available)),l=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",d=le(l),s=ue,u=de("lb-fixed",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||s.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});u.root.setAttribute("data-discount-type",t.discountConfig.discountType),u.root.setAttribute("data-discount-value",String(t.discountConfig.discountValue));for(let c of i){let p=!c.variants.some(F=>F.available),f=Ge(c,s,{isOos:p,href:c.url,thumbnailRatio:o.productList?.thumbnailRatio});if(u.products.appendChild(f),p)continue;let b=Tn(c);b&&(c.selectedVariantId=b.id);let v=b??Z(c,c.selectedVariantId);je(f,c,v),Et(f,v,c,d),We(f,()=>c,(F,x)=>{Et(f,F,x,d),Tt(u.root,i,d)})}if(a.length>0){u.cta.disabled=!0;let c=u.cta.querySelector("[data-cta-label]");c&&(c.textContent=Ye(s,a.length))}else u.cta.addEventListener("click",()=>{n(In(i).map(c=>({merchandiseId:"gid://shopify/ProductVariant/"+c.variantId,quantity:c.quantity,attributes:se(t.id,t.bundleType)})))});e.appendChild(u.root),ce(u.root),Tt(u.root,i,d),r?.(fe(u.root))}function X(e,t){let n=e;for(let r in t)n=n.split("__"+r+"__").join(String(t[r]));return n}function Ze(e,t){let n=t.needsSpots;if(!n)return"Needs "+e+" spots";let r=new Intl.PluralRules(t.locale||"en").select(e);return X(n[r]||n.other||"__COUNT__",{COUNT:e})}function et(e,t,n){return X(n.ofSelected||"__COUNT__ of __TOTAL__ added",{COUNT:e,TOTAL:t})}function Fn(e,t){return e>0?X(t.moreToGo||"__COUNT__ more to go",{COUNT:e}):t.complete||"Complete"}function Vn(e,t,n,r){if(e<=0)return r.bundleComplete||"Your bundle is complete";let o=t==="percentage"&&n?Math.round(n):0;return o>0?X(r.chooseMoreUnlock||"Choose __COUNT__ more to unlock __PCT__% off",{COUNT:e,PCT:o}):X(r.chooseMoreComplete||"Choose __COUNT__ more to complete your bundle",{COUNT:e})}var $o={min:1,max:99};function te(e,t,n){if(n!=null){let o=t["gid://shopify/ProductVariant/"+n];if(o&&typeof o.min=="number"&&typeof o.max=="number")return o}let r=t["gid://shopify/Product/"+e];return!r||typeof r.min!="number"||typeof r.max!="number"?$o:r}function pe(e,t){if(e==null)return;let n=t["gid://shopify/ProductVariant/"+e];if(!(!n||typeof n.min!="number"||typeof n.max!="number"))return n}function tt(e,t){let n=e??{};if(!t)return n;let r=Object.keys(t);if(r.length===0)return n;let o={...n};for(let i of r)o[i]=t[i];return o}function nt(e,t,n){return te(e,t,n).min}function oe(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n].quantity||1;return t}function me(e,t){for(let n=0;n<e.length;n++)if(e[n]&&e[n].variantId===t)return n;return-1}function Un(e,t){let n=me(e,t);return n===-1?0:e[n].quantity||0}function zn(e,t){return e.min<=t}function Qn(e,t,n,r=0,o=0,i){let a=Math.min(e.max-o,r+t);return typeof i=="number"&&(a=Math.min(a,i)),typeof n=="number"?Math.min(a,n):a}var Wn=[120,180,240],At=[480,600,768,1024],jn="60px",$n="(max-width: 767px) 45vw, 228px";function Te(e,t){return e&&(/[?&]width=\d+/.test(e)?e.replace(/([?&])width=\d+/,"$1width="+t):e+(e.indexOf("?")===-1?"?":"&")+"width="+t)}function Ae(e,t){return e?t.map(n=>Te(e,n)+" "+n+"w").join(", "):""}function rt(e,t){let n=null;return function(...r){n&&clearTimeout(n),n=setTimeout(()=>e.apply(this,r),t)}}function Se(e){return e?e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase():""}var Gn=600;function ot(e,t,n){let{t:r,rulesMap:o,capacity:i,formatMoney:a}=n,l=te(e.id,o),d=document.createElement("div");d.className="lb-mix-match__modal-product",e.available||(d.className+=" lb-mix-match__modal-product--sold-out"),d.setAttribute("data-product-item",""),d.setAttribute("data-title",Se(e.title)),d.setAttribute("data-type",e.type||"");let s=!1,u=!1,c=document.createElement("div");c.className="lb-mix-match__modal-product-thumb";let p=document.createElement("span");p.className="lb-mix-match__modal-added-badge",p.textContent=r.addedItem||"Added",p.hidden=!0,c.appendChild(p);let f=e.variants.find(g=>g.available)??null,b=f&&f.image||e.featuredImage;if(b){let g=document.createElement("img");g.src=Te(b,Gn),g.srcset=Ae(b,At),g.sizes=$n,g.alt=e.title,g.loading="lazy",c.appendChild(g)}d.appendChild(c);let v=document.createElement("div");v.className="lb-mix-match__modal-product-info";let F=document.createElement("p");if(F.className="lb-mix-match__modal-product-title",e.url){let g=document.createElement("a");g.href=e.url,g.target="_blank",g.rel="noopener noreferrer",g.textContent=e.title,F.appendChild(g)}else F.textContent=e.title;v.appendChild(F);let x=f??(e.variants.length>0?e.variants[0]:null),T=g=>te(e.id,o,g?g.id:null),z=x?T(x).min:1,I=document.createElement("p");I.className="lb-mix-match__modal-product-price",I.setAttribute("data-row-price","");let R=document.createElement("span");R.setAttribute("data-row-price-sale",""),x&&(R.textContent=a(x.price*z)),I.appendChild(R);let _=document.createElement("s");_.className="lb-mix-match__modal-product-compare",_.setAttribute("data-row-compare",""),I.appendChild(_),v.appendChild(I);function C(g,Q,$){let y=Q&&Q.compareAtPrice?Q.compareAtPrice*$:0,k=Q?Q.price*$:0;y>k?(g.textContent=a(y),g.hidden=!1):(g.textContent="",g.hidden=!0)}C(_,x,z);let m=document.createElement("p");m.className="lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price",m.setAttribute("data-row-unit-price","");let H=x?x.unitPrice:null;H?m.textContent=H:m.hidden=!0,v.appendChild(m);let N=null,D=null,B=T(x).min,G=T(x).max,K=null,j=null;if(e.available&&n.showQtySelector){N=document.createElement("div"),N.className="lb-bundle-variant-option-group lb-mix-match__qty-stepper-group";let g=document.createElement("div");g.className="lb-mix-match__qty-stepper",g.setAttribute("role","group"),g.setAttribute("aria-label",r.quantity||"Quantity");let Q=document.createElement("button");Q.type="button",Q.className="lb-mix-match__qty-stepper-button lb-mix-match__qty-stepper-button--minus",Q.setAttribute("aria-label",r.decreaseQuantity||"Decrease quantity"),Q.textContent="\u2212",D=document.createElement("span"),D.className="lb-mix-match__qty-stepper-value",D.setAttribute("data-row-qty",""),D.setAttribute("aria-live","polite"),D.textContent=String(T(x).min);let $=document.createElement("button");$.type="button",$.className="lb-mix-match__qty-stepper-button lb-mix-match__qty-stepper-button--plus",$.setAttribute("aria-label",r.increaseQuantity||"Increase quantity"),$.textContent="+",g.appendChild(Q),g.appendChild(D),g.appendChild($),N.appendChild(g);let y=D;K=()=>{y.textContent=String(B),y.setAttribute("data-qty",String(B)),Q.disabled=u||B<=T(x).min,$.disabled=u||B>=G},j=(M,L=0)=>{let w=M?M.id:null,q=w===null?0:i.ownQty(w),O=w===null?0:i.productUnitsElsewhere(e.id,w),U=w===null?0:i.swapUnits(e.id,w),J=M?M.inventoryQuantity:null,ee=Math.max(0,L-q),be=typeof J=="number"?Math.max(0,J-ee):void 0,ve=pe(w,o)?.max,ne=T(M).min;G=U>0?typeof be=="number"?Math.min(U,be):U:Qn(l,i.remainingSpots(),be,q,O,ve),G<ne?B=ne:(B>G&&(B=G),B<ne&&(B=ne)),K()};let k=()=>{x&&i.commitQty(x.id,B)&&n.onCommittedQtyChanged()};Q.addEventListener("click",()=>{B>T(x).min&&(B-=1),K(),k()}),$.addEventListener("click",()=>{B<G&&(B+=1),K(),k()}),x?j(x):K()}let W=e.variants.slice(),A=[];if(W.length>1){let g=e.optionNames||[];x=W.find(w=>w.available!==!1)??W[0];let Q=()=>{let w=A.map(q=>q.value);for(let q of W)if(!(!q.options||q.options.length!==w.length)&&q.options.every((O,U)=>O===w[U]))return q;return null},$=w=>{if(!(!w||!w.options))for(let q=0;q<A.length&&q<w.options.length;q++)A[q].value!==w.options[q]&&(A[q].value=w.options[q])},y=(w,q,O)=>{for(let U of W){if(U.available===!1||!U.options||U.options[w]!==q)continue;let J=!0;for(let ee=0;ee<U.options.length;ee++)if(ee!==w&&U.options[ee]!==O[ee]){J=!1;break}if(J)return!0}return!1},k=w=>{for(let q=0;q<A.length;q++){let O=A[q];for(let U=0;U<O.options.length;U++)O.options[U].disabled=!y(q,O.options[U].value,w)}},M=()=>{let w=Q();if(!w){$(x),x?.options&&k(x.options);return}x=w,d.setAttribute("data-selected-variant-id",String(w.id));let q=T(w).min;R.textContent=a(w.price*q),C(_,w,q),w.unitPrice?(m.textContent=w.unitPrice,m.hidden=!1):(m.textContent="",m.hidden=!0);let O=c.querySelector("img"),U=w.image||e.featuredImage;O&&U&&(O.src=Te(U,Gn),O.srcset=Ae(U,At)),j?.(w,i.variantUnitsElsewhere(w.id)),w.options&&k(w.options),V()},L=document.createElement("div");L.className="lb-bundle-variant-option-groups";for(let w=0;w<g.length;w++){let q=g[w],O=document.createElement("div");O.className="lb-bundle-variant-option-group";let U=document.createElement("span");U.className="lb-bundle-variant-option-label",U.textContent=q,O.appendChild(U);let J=document.createElement("select");J.className="lb-mix-match__variant-select",J.setAttribute("data-variant-option",""),J.setAttribute("data-option-position",String(w+1)),J.name="lb-variant-"+e.id+"-"+(w+1),J.setAttribute("aria-label",q);let ee=Object.create(null),be=x?.options?.[w];for(let ve of W){let ne=ve.options&&ve.options[w];if(!ne||ee[ne])continue;ee[ne]=!0;let he=document.createElement("option");he.value=ne,he.textContent=ne,ne===be&&(he.selected=!0),J.appendChild(he)}J.addEventListener("change",M),A.push(J),O.appendChild(J),L.appendChild(O)}v.appendChild(L),x&&(d.setAttribute("data-selected-variant-id",String(x.id)),x.options&&k(x.options))}else if(W.length===1&&W[0].title!=="Default Title"){let g=document.createElement("span");g.className="lb-mix-match__filled-variant",g.textContent=W[0].title,v.appendChild(g)}let S=null;e.available&&(S=document.createElement("span"),S.className="lb-mix-match__modal-needs-spots",S.hidden=!0,v.appendChild(S));let h=null;if(e.available){let g=document.createElement("div");g.className="lb-mix-match__modal-product-actions",N&&g.appendChild(N),h=document.createElement("button"),h.type="button",h.className="lb-mix-match__modal-add",h.textContent=r.addItem||"Add",h.setAttribute("aria-label",(r.addItem||"Add")+" "+e.title),h.setAttribute("data-add-product",String(t)),g.appendChild(h),v.appendChild(g)}else{let g=document.createElement("span");g.className="lb-mix-match__modal-sold-out-label",g.textContent=r.soldOut||"Sold out",d.setAttribute("aria-disabled","true"),v.appendChild(g)}d.appendChild(v);let E=x?x.id:null;function V(){if(!x)return;let g=x,Q=g.inventoryQuantity,$=typeof Q=="number"?i.variantUnitsElsewhere(g.id):0,y=i.isInBundle(g.id);if(j){let O=i.ownQty(g.id);O>0?B=O:E!==g.id&&(B=T(g).min),E=g.id,j(g,$)}let k=i.swapUnits(e.id,g.id),M=T(g),L=k>=M.min,w=i.remainingSpots(),q=!y&&!L&&!zn(M,w);if(S&&(q&&w>0?(S.textContent=Ze(M.min,r),S.hidden=!1):S.hidden=!0),h)if(y)h.disabled=!1,i.canRemove(g.id)?(h.textContent=r.removeItem||"Remove",h.setAttribute("aria-label",(r.removeItem||"Remove")+" "+e.title),h.classList.remove("lb-mix-match__modal-add--required")):(h.disabled=!0,h.textContent=r.required||"Required",h.setAttribute("aria-label",e.title+" is required and cannot be removed"),h.classList.add("lb-mix-match__modal-add--required")),h.classList.add("lb-mix-match__modal-add--added"),d.classList.add("lb-mix-match__modal-product--in-bundle"),p.hidden=!1;else{let O=r.swapItem||"Swap",U=L?O:r.addItem||"Add";h.textContent=U,h.setAttribute("aria-label",U+" "+e.title),h.classList.remove("lb-mix-match__modal-add--added"),h.classList.remove("lb-mix-match__modal-add--required"),d.classList.remove("lb-mix-match__modal-product--in-bundle"),p.hidden=!0;let J=typeof Q=="number"?Math.max(0,Q-$)<M.min:!1;if(L)h.disabled=J;else{let ee=l.max-i.productUnitsElsewhere(e.id,g.id)<M.min;h.disabled=J||ee||q||i.isFull()}}s=!e.available,u=!e.available||!y&&!!h?.disabled,K?.();for(let O of A)O.disabled=s}return{el:d,refresh:V}}var Go='a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';function it(e){let t=e.querySelectorAll(Go),n=[];for(let r=0;r<t.length;r++)t[r].offsetParent!==null&&n.push(t[r]);return n}var Lt=0,Le=0;function at(){if(Le++,Le>1)return;Lt=window.pageYOffset||document.documentElement.scrollTop;let e=document.body;e.style.position="fixed",e.style.top="-"+Lt+"px",e.style.left="0",e.style.right="0",e.style.overflow="hidden"}function lt(){if(Le<=0||(Le--,Le>0))return;let e=document.body;e.style.position="",e.style.top="",e.style.left="",e.style.right="",e.style.overflow="",window.scrollTo(0,Lt)}function st(e,t,n){let r=[],o=[];for(let i=0;i<t.length;i++)(n(i)?o:r).push(t[i]);for(let i of r)e.appendChild(i);for(let i of o)e.appendChild(i)}var Me="__all__",Ko=300,Yo=200;function Kn(e){let{container:t,data:n,t:r,eligibleProducts:o,items:i}=e,a=t.querySelector("[data-modal-overlay]");a&&e.portalTarget&&e.portalTarget.appendChild(a);let l=h=>a?a.querySelector(h):null,d=l('[role="dialog"]'),s=l("[data-modal-search]"),u=l("[data-modal-search-clear]"),c=l("[data-modal-list]"),p=l("[data-modal-empty]"),f=l("[data-modal-live]"),b=l("[data-modal-close]"),v=l("[data-modal-done]"),F=l("[data-modal-footer-count]"),x=l("[data-modal-subtitle]"),T=l("[data-modal-filters]"),z=n.showTypeFilters!==!1,I=Me,R=!1,_=!1,C=!1,m=[];function H(){for(let h of m)h.refresh()}function N(){let h=Math.min(oe(i),e.requiredQty),E=Math.max(0,e.requiredQty-h);F&&(F.textContent=et(h,e.requiredQty,r)),x&&(x.textContent=Vn(E,n.discountType,n.discountValue,r))}function D(){H(),N()}function B(){if(c){e.dropdown?.unbindAll(c),c.innerHTML="",m=[];for(let h=0;h<o.length;h++){let E=ot(o[h],h,{t:r,rulesMap:e.rulesMap,showQtySelector:e.showQtySelector,capacity:e.rowCapacity,formatMoney:e.formatMoney,onCommittedQtyChanged:()=>{e.onSelectionChanged(),D()}});m.push(E),c.appendChild(E.el)}e.dropdown?.bindAll(c),c.addEventListener("click",G)}}function G(h){let E=h.target.closest("[data-add-product]");if(!E||E.disabled)return;let V=parseInt(E.getAttribute("data-add-product")??"",10),g=o[V];if(!g)return;let Q=E.closest(".lb-mix-match__modal-product"),$=Q&&Q.getAttribute("data-selected-variant-id"),y=($?g.variants.find(q=>q.id===parseInt($,10)):null)??null;if(y||(y=g.variants.find(q=>q.available)??null),!y)return;if(e.isInBundle(y.id)){e.removeVariant(y.id),D();return}let k=Q?.querySelector("[data-row-qty]"),M=k?Math.max(1,parseInt(k.getAttribute("data-qty")||k.textContent||"",10)||1):nt(g.id,e.rulesMap,y.id),L={productId:g.id,variantId:y.id,title:g.title,url:g.url||null,variantTitle:y.title,featuredImage:y.image||g.featuredImage||null,price:y.price,compareAtPrice:y.compareAtPrice||null,unitPrice:y.unitPrice||null,quantity:M},w=e.swapUnitsFor(g.id,y.id);if(w>0){e.swapVariant(L,Math.min(M,w)),D();return}e.atCapacity()||(e.addSelection(L),D())}function K(){if(!T||!z)return;let h=[],E=Object.create(null);for(let V of o){let g=(V.type||"").trim();g&&!E[g]&&(E[g]=!0,h.push(g))}if(h.length<2){T.style.display="none",d?.classList.add("lb-mix-match__modal--filters-hidden");return}T.innerHTML="";for(let V of[Me,...h]){let g=document.createElement("button");g.type="button",g.className="lb-mix-match__filter",g.setAttribute("data-filter",V),g.setAttribute("aria-pressed",V===I?"true":"false"),V===I&&g.classList.add("lb-mix-match__filter--active"),g.textContent=V===Me?r.allTypes||"All":V,g.addEventListener("click",()=>{I=V,j(),W(s?s.value:"")}),T.appendChild(g)}}function j(){if(!T)return;let h=T.querySelectorAll("[data-filter]");for(let E=0;E<h.length;E++){let V=h[E].getAttribute("data-filter")===I;h[E].classList.toggle("lb-mix-match__filter--active",V),h[E].setAttribute("aria-pressed",V?"true":"false")}}function W(h){if(!c)return;let E=Se(h),V=c.querySelectorAll("[data-product-item]"),g=0;for(let Q=0;Q<V.length;Q++){let $=V[Q].getAttribute("data-title")??"",y=V[Q].getAttribute("data-type")||"",k=(!E||$.indexOf(E)!==-1)&&(I===Me||y===I);V[Q].classList.toggle("lb-hidden",!k),k&&g++}p&&(p.style.display=g===0&&E.length>0?"":"none"),u&&(u.style.display=h.length>0?"":"none"),f&&(f.textContent=X(r.nProductsShown||"__COUNT__ products shown",{COUNT:g}))}if(s){let h=rt(()=>W(s.value),Yo);s.addEventListener("input",h)}u&&u.addEventListener("click",()=>{s&&(s.value="",W(""),s.focus())});function A(){if(!(!a||C)){if(C=!0,R||(B(),R=!0),_||(K(),_=!0),D(),I=Me,j(),s&&(s.value=""),W(s?s.value:""),c){let h=Object.create(null);for(let E of i)h[String(E.productId)]=!0;st(c,m.map(E=>E.el),E=>h[String(o[E].id)]===!0),c.scrollTop=0}a.style.display="",a.offsetHeight,a.classList.add("lb-mix-match__modal-overlay--open"),at(),setTimeout(()=>{b?b.focus():d?.focus()},50)}}function S(){if(!a||!C)return;C=!1,a.classList.remove("lb-mix-match__modal-overlay--open"),lt(),setTimeout(()=>{C||(a.style.display="none")},Ko);let h=e.fallbackFocus;h&&typeof h.focus=="function"&&setTimeout(()=>h.focus(),0)}if(b?.addEventListener("click",S),v?.addEventListener("click",S),a){let h=null;a.addEventListener("mousedown",E=>{h=E.target}),a.addEventListener("mouseup",E=>{E.target===a&&h===a&&S(),h=null})}return document.addEventListener("keydown",h=>{if(C){if(h.key==="Escape"){h.preventDefault(),S();return}if(h.key==="Tab"&&d){let E=it(d);if(E.length===0){h.preventDefault();return}let V=E[0],g=E[E.length-1];h.shiftKey&&document.activeElement===V?(h.preventDefault(),g.focus()):!h.shiftKey&&document.activeElement===g&&(h.preventDefault(),V.focus())}}}),{open:A,close:S,isOpen:()=>C,refresh:D,overlay:a}}function Yn(e,t){return Math.max(0,t-oe(e))}function Mt(e,t){return oe(e)>=t}function Jn(e,t){let n=0;for(let r=0;r<e.length;r++)e[r].variantId===t&&(n+=e[r].quantity||0);return n}function dt(e,t,n){let r=0;for(let o=0;o<e.length;o++){let i=e[o];i&&i.productId===t&&i.variantId!==n&&(r+=i.quantity||0)}return r}function Ee(e,t,n){if(pe(t.variantId,n)?.required)return!1;let r=te(t.productId,n);if(!r.required)return!0;let o=0;for(let i=0;i<e.length;i++){let a=e[i];a!==t&&a.productId===t.productId&&(o+=a.quantity||1)}return o>=r.min}function Pt(e,t,n,r){let o=te(t,r);return!o.required||o.max!==o.min||me(e,n)!==-1?0:dt(e,t,n)}function Jo(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("width","16"),t.setAttribute("height","16"),t.setAttribute("viewBox","0 0 20 20"),t.setAttribute("fill","none");for(let[n,r,o,i]of[["5","5","15","15"],["15","5","5","15"]]){let a=document.createElementNS(e,"line");a.setAttribute("x1",n),a.setAttribute("y1",r),a.setAttribute("x2",o),a.setAttribute("y2",i),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","2"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)}return t}function ct(e,t,n,r,o,i){let a=document.createElement("div");a.className="lb-mix-match__slot lb-mix-match__slot--filled";let l=document.createElement("div");if(l.className="lb-bundle-thumbnail",e.featuredImage){let b=document.createElement("img");b.src=Te(e.featuredImage,240),b.srcset=Ae(e.featuredImage,Wn),b.sizes=jn,b.alt=e.title,b.loading="lazy",l.appendChild(b)}a.appendChild(l);let d=document.createElement("div");d.className="lb-mix-match__filled-info";let s=document.createElement("button");if(s.type="button",s.className="lb-mix-match__filled-title",s.textContent=e.title,s.setAttribute("aria-label",(t.editSelection||"Edit selection")+": "+e.title),d.appendChild(s),e.variantTitle&&e.variantTitle!=="Default Title"){let b=document.createElement("span");b.className="lb-mix-match__filled-variant",b.textContent=e.variantTitle,d.appendChild(b)}let u=document.createElement("span");u.className="lb-mix-match__filled-price";let c=e.compareAtPrice||0;if(c>e.price){let b=document.createElement("s");b.className="lb-mix-match__filled-compare",b.textContent=n(c),u.appendChild(b)}let p=document.createElement("span");p.className="lb-bundle-product-price",p.textContent=n(e.price),u.appendChild(p);let f=document.createElement("span");if(f.className="lb-bundle-qty-inline",f.textContent="\xD7"+(e.quantity||1),u.appendChild(f),d.appendChild(u),e.unitPrice){let b=document.createElement("span");b.className="lb-bundle-product-unit-price",b.textContent=e.unitPrice,d.appendChild(b)}if(a.appendChild(d),r){let b=document.createElement("button");b.type="button",b.className="lb-mix-match__slot-remove",b.setAttribute("aria-label",(t.removeItem||"Remove")+" "+e.title),b.appendChild(Jo()),b.addEventListener("click",v=>{v.stopPropagation(),o()}),a.appendChild(b)}else{let b=document.createElement("span");b.className="lb-mix-match__slot-required",b.textContent=t.required||"Required",a.appendChild(b)}return a.addEventListener("click",i),a}function Xn(e,t,n,r,o){let i=r.translations||{},a=e.querySelector("[data-selection-slots]");if(a){a.innerHTML="";for(let s=0;s<t.length;s++){let u=s;a.appendChild(ct(t[u],i,o.formatMoney,Ee(t,t[u],o.rulesMap),()=>o.onRemove(u),o.onEdit))}}let l=e.querySelector("[data-add-product-trigger]");l&&(l.style.display=oe(t)>=n?"none":"");let d=e.querySelector("[data-add-bundle]");if(d){d.disabled=oe(t)<n;let s=d.querySelector("[data-cta-label]");s&&(s.textContent=d.getAttribute("data-cta-text")||i.addToCart||"Add to cart")}}function Zn(e,t,n,r,o,i){let a=e.querySelector("[data-pricing-section]");if(oe(t)<n){a&&(a.style.display="none");return}a&&(a.style.display="");let l=0;for(let d=0;d<t.length;d++)l+=t[d].price*(t[d].quantity||1);l>0&&r.discountType&&i(e,o(l,r.discountType,r.discountValue??0),l)}function er(e,t,n,r,o){let i=Math.min(oe(n),r),a=Math.max(0,r-i),l=[e];t&&l.push(t);for(let d of l){let s=d.querySelectorAll("[data-progress-segment]");for(let f=0;f<s.length;f++)s[f].classList.toggle("lb-mix-match__progress-segment--filled",f<i);let u=d.querySelector("[data-progress-count]");u&&(u.textContent=et(i,r,o));let c=d.querySelector("[data-progress-remaining]");c&&(c.textContent=Fn(a,o));let p=d.querySelector(".lb-mix-match__progress-segments");p&&p.setAttribute("aria-valuenow",String(i))}}function ut(e){return(t,n,r)=>{let o=t.querySelector("[data-sale-price]"),i=t.querySelector("[data-compare-price]"),a=t.querySelector("[data-savings-bar]"),l=t.querySelector("[data-savings-amount]"),d=t.querySelector("[data-savings-percent]"),s=r-n;if(o&&(o.textContent=e(n)),i&&(s>0?(i.textContent=e(r),i.style.display=""):i.style.display="none"),a)if(s>0){if(l&&(l.textContent=e(s)),d){let u=r>0?Math.round(s*100/r):0;d.textContent="("+u+"%)"}a.style.display=""}else a.style.display="none"}}function tr(e,t,n,r){let o=u=>u.variants.find(c=>c.available)??null,i=(u,c,p)=>({productId:u.id,variantId:c.id,title:u.title,url:u.url||null,variantTitle:c.title,featuredImage:u.featuredImage||null,price:c.price,compareAtPrice:c.compareAtPrice||null,unitPrice:c.unitPrice||null,quantity:p}),a=[];for(let u of e){if(!u.available||!u.variants)continue;let c=!1;for(let b of u.variants){let v=pe(b.id,t);!v?.required||!b.available||(a.push(i(u,b,Math.max(1,v.min))),c=!0)}if(c)continue;let p=te(u.id,t);if(!p.required)continue;let f=o(u);f&&a.push(i(u,f,Math.max(1,p.min)))}if(a.length||!r?.enabled)return a;let l=u=>u.available&&te(u.id,t).min<=n,d=(r.currentProductId!=null?e.find(u=>u.id===r.currentProductId&&l(u)):null)??e.find(l);if(!d)return[];let s=o(d);return s?[i(d,s,te(d.id,t).min)]:[]}function nr(e){let t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg");n.setAttribute("width","20"),n.setAttribute("height","20"),n.setAttribute("viewBox","0 0 20 20"),n.setAttribute("fill","none");for(let[r,o,i,a]of e){let l=document.createElementNS(t,"line");l.setAttribute("x1",r),l.setAttribute("y1",o),l.setAttribute("x2",i),l.setAttribute("y2",a),l.setAttribute("stroke","currentColor"),l.setAttribute("stroke-width","2"),l.setAttribute("stroke-linecap","round"),n.appendChild(l)}return n}function Y(e,t,n={}){let r=document.createElement(e);t&&(r.className=t);for(let o in n)r.setAttribute(o,n[o]);return r}function pt(e){let t="lb-modal-title-"+e.domId,n=Y("div","lb-mix-match__modal-overlay",{"data-modal-overlay":"","data-bundle-gid":e.bundleGid,style:"display: none;"}),r=Y("div","lb-mix-match__modal"+(e.showTypeFilters?"":" lb-mix-match__modal--filters-hidden"),{role:"dialog","aria-modal":"true","aria-labelledby":t,tabindex:"-1"}),o=Y("div","lb-mix-match__modal-header"),i=Y("div","lb-mix-match__modal-header-top"),a=Y("div","lb-mix-match__modal-heading"),l=Y("h4","lb-mix-match__modal-title",{id:t});e.wizard&&l.setAttribute("tabindex","-1"),l.textContent="Add to your bundle",a.appendChild(l),a.appendChild(Y("p","lb-mix-match__modal-subtitle",{"data-modal-subtitle":""})),i.appendChild(a);let d=Y("button","lb-mix-match__modal-close",{type:"button","data-modal-close":"","aria-label":"Close"});d.appendChild(nr([["5","5","15","15"],["15","5","5","15"]])),i.appendChild(d),o.appendChild(i);let s=Y("div","lb-mix-match__progress lb-mix-match__modal-progress",{"data-progress":""}),u=Y("div","lb-mix-match__progress-segments",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e.segmentCount??0)});if(e.wizard)u.setAttribute("data-modal-step-segments","");else for(let v=0;v<(e.segmentCount??0);v++)u.appendChild(Y("span","lb-mix-match__progress-segment",{"data-progress-segment":""}));if(s.appendChild(u),o.appendChild(s),r.appendChild(o),e.showSearch){let v=Y("div","lb-mix-match__modal-search"),F=Y("input","lb-mix-match__modal-search-input",{type:"text","data-modal-search":"",role:"searchbox","aria-label":"Search products",placeholder:"Search products",autocomplete:"off"});v.appendChild(F);let x=Y("button","lb-mix-match__modal-search-clear",{type:"button","data-modal-search-clear":"","aria-label":"Clear search",style:"display: none;"});x.appendChild(nr([["5","5","15","15"],["15","5","5","15"]])),v.appendChild(x),r.appendChild(v)}e.showTypeFilters&&r.appendChild(Y("div","lb-mix-match__filters",{"data-modal-filters":"",role:"group","aria-label":"Filter by type"})),r.appendChild(Y("div","lb-mix-match__modal-list",{"data-modal-list":""}));let c=Y("div","lb-mix-match__modal-empty",{"data-modal-empty":"",style:"display: none;"}),p=document.createElement("p");p.textContent="No products match your search",c.appendChild(p),r.appendChild(c),r.appendChild(Y("span","lb-visually-hidden",{"data-modal-live":"","aria-live":"polite"}));let f=Y("div",e.wizard?"lb-mix-match__modal-footer lb-multi-step__modal-footer":"lb-mix-match__modal-footer");if(e.wizard){let v=Y("button","lb-multi-step__modal-back",{type:"button","data-modal-back":"",style:"display: none;"});v.textContent="Back",f.appendChild(v)}if(f.appendChild(Y("span","lb-mix-match__modal-footer-count",{"data-modal-footer-count":"","aria-live":"polite"})),e.wizard){let v=Y("button","lb-mix-match__modal-done",{type:"button","data-modal-next":"",style:"display: none;"});v.textContent="Next",f.appendChild(v)}let b=Y("button","lb-mix-match__modal-done",{type:"button","data-modal-done":"",...e.wizard?{style:"display: none;"}:{}});return b.textContent="Done",f.appendChild(b),r.appendChild(f),n.appendChild(r),n}function rr(e,t,n,r,o){let i=t.widgetConfig,a=ue,l=t.minQuantity||1,d=tt(t.productRules,t.variantRules),u=Qe(t).map((_,C)=>({id:Number(_.productId),title:_.title??"",url:_.url??null,type:t.products[C]?.productType??"",featuredImage:_.featuredImage??null,available:_.variants.some(m=>m.available),optionNames:_.optionNames,variants:_.variants.map(m=>({id:Number(m.id),title:m.title,options:m.options,available:m.available,price:m.price,compareAtPrice:m.compareAtPrice,unitPrice:m.unitPrice,image:m.image,inventoryQuantity:m.inventoryQuantity??null}))}));if(!u.length||u.filter(_=>_.available).length===0)return;let p=le(t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD"),f=de("lb-mix-match",{title:t.title,subtitle:t.description,showSavingsBar:i.savingsBar?.visible!==!1,showComparePrice:i.pricing?.showCompareAtPrice!==!1,ctaText:i.cta?.ctaText||a.addToCart||"Add to cart",endsAt:i.countdown?.showCountdown===!1?null:t.endsAt});f.root.setAttribute("data-required-quantity",String(l)),f.products.before(Ke(l));let b=document.createElement("div");b.className="lb-mix-match__slots lb-edge-fade",b.setAttribute("data-selection-slots",""),f.products.replaceWith(b);let v=document.createElement("button");v.type="button",v.className="lb-mix-match__add-product",v.setAttribute("data-add-product-trigger",""),v.textContent=(a.addItem,"Add a product"),b.after(v);let F=pt({bundleGid:t.id,domId:t.id.replace(/\D/g,""),showSearch:i.showSearch!==!1,showTypeFilters:i.mixMatchShowTypeFilters!==!1,segmentCount:l,wizard:!1});f.root.appendChild(F);let x=o?t.products.findIndex(_=>_.handle===o):-1,T=tr(u,d,l,{enabled:!!o,currentProductId:x!==-1?u[x]?.id??null:null}),z={remainingSpots:()=>Yn(T,l),ownQty:_=>Un(T,_),variantUnitsElsewhere:_=>Jn(T,_),productUnitsElsewhere:(_,C)=>dt(T,_,C),swapUnits:(_,C)=>Pt(T,_,C,d),isInBundle:_=>me(T,_)!==-1,canRemove:_=>{let C=me(T,_);return C!==-1&&Ee(T,T[C],d)},isFull:()=>Mt(T,l),commitQty:(_,C)=>{let m=me(T,_);return m===-1||T[m].quantity===C?!1:(T[m].quantity=C,!0)}};function I(){Xn(f.root,T,l,t,{formatMoney:p,rulesMap:d,onRemove:_=>{Ee(T,T[_],d)&&(T.splice(_,1),I(),R.isOpen()&&R.refresh())},onEdit:()=>R.open()}),Zn(f.root,T,l,{discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},(_,C,m)=>Ve(_,C,m),ut(p)),er(f.root,R.overlay,T,l,a)}let R=Kn({container:f.root,data:{translations:a,discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},t:a,rulesMap:d,eligibleProducts:u,requiredQty:l,showQtySelector:i.mixMatchShowQuantitySelector!==!1,items:T,formatMoney:p,rowCapacity:z,dropdown:void 0,portalTarget:null,fallbackFocus:v,onSelectionChanged:I,addSelection:_=>{if(oe(T)+(_.quantity||1)>l)return;let C=pe(_.variantId,d)?.max,m=te(_.productId,d).max-dt(T,_.productId,_.variantId);typeof C=="number"&&(m=Math.min(m,C)),!((_.quantity||1)>m)&&(T.push(_),I())},removeVariant:_=>{let C=me(T,_);C===-1||!Ee(T,T[C],d)||(T.splice(C,1),I())},swapVariant:(_,C)=>{let m=0;for(let H=T.length-1;H>=0&&m<C;H--){let N=T[H];if(N.productId!==_.productId||N.variantId===_.variantId)continue;let D=Math.min(N.quantity||1,C-m);D>=(N.quantity||1)?T.splice(H,1):N.quantity=(N.quantity||1)-D,m+=D}m>0&&(_.quantity=m,T.push(_),I())},swapUnitsFor:(_,C)=>Pt(T,_,C,d),isInBundle:_=>me(T,_)!==-1,atCapacity:()=>Mt(T,l)});v.addEventListener("click",()=>{R.isOpen()||R.open()}),f.cta.addEventListener("click",()=>{oe(T)<l||n(T.map(_=>({merchandiseId:"gid://shopify/ProductVariant/"+_.variantId,quantity:_.quantity||1,attributes:se(t.id,t.bundleType)})))}),e.appendChild(f.root),ce(f.root),I(),r?.(fe(f.root))}var or="lb-volume__tier--oos";function Xo(e){return parseInt(e.getAttribute("data-tier-qty")??"",10)||0}function Pe(e){return e.getAttribute("aria-disabled")==="true"}function ir(e,t){for(let n=0;n<e.length;n++){let r=e[n];t!==null&&Xo(r)>t?(r.classList.add(or),r.setAttribute("aria-disabled","true")):(r.classList.remove(or),r.removeAttribute("aria-disabled"))}}function ar(e,t){let n=e[t];if(n&&!Pe(n))return t;for(let r=0;r<e.length;r++)if(!Pe(e[r]))return r;return-1}function Bt(e,t,n){let r=t+n;for(;r>=0&&r<e.length;){if(!Pe(e[r]))return r;r+=n}return t}function lr(e,t,n){if(t==="fixed_amount"){let o=parseInt(n.getAttribute("data-tier-amt")??"",10)||0;return Math.max(0,e-o)}let r=parseInt(n.getAttribute("data-tier-pct")??"",10)||0;return Math.max(0,e-Math.floor(e*r/100))}function Zo(e,t,n){let r=parseInt(n.getAttribute("data-tier-qty")??"",10),o=lr(e,t,n),i=o*r,a=e*r;return{qty:r,priceEach:o,totalPrice:i,undiscountedTotal:a,totalSavings:a-i}}function ei(e,t){if(!t.itemCount)return null;let n=new Intl.PluralRules(t.locale||"en").select(e);return" ("+(t.itemCount[n]||t.itemCount.other||"__COUNT__").split("__COUNT__").join(String(e))+")"}function sr(e,t,n,r){for(let o=0;o<e.length;o++){let i=e[o],a=i.querySelector("[data-tier-price-each]");a&&(a.textContent=r(lr(t,n,i)));let l=i.querySelector(".lb-volume__tier-compare");l&&(l.textContent=r(t))}}function dr(e,t,n,r,o,i,a){for(let x=0;x<t.length;x++)t[x].setAttribute("aria-checked",x===o?"true":"false"),t[x].setAttribute("tabindex",x===o?"0":"-1");let{qty:l,totalPrice:d,undiscountedTotal:s,totalSavings:u}=Zo(n,r,t[o]),c=e.querySelector("[data-item-count]");if(c){let x=ei(l,i);x!==null&&(c.textContent=x)}let p=e.querySelector("[data-total-price]");p&&(p.textContent=a(d));let f=e.querySelector("[data-compare-price]");f&&(u>0?(f.textContent=a(s),f.style.display=""):f.style.display="none");let b=e.querySelector("[data-savings-bar]"),v=e.querySelector("[data-savings-amount]"),F=e.querySelector("[data-savings-percent]");if(b)if(u>0){if(v&&(v.textContent=a(u)),F){let x=s>0?Math.round(u*100/s):0;F.textContent="("+x+"%)"}b.style.display=""}else b.style.display="none"}function cr(e,t,n,r){let o=t.widgetConfig,i=mn(t.products,r);if(!i)return;let a=i.variants.nodes,l=Math.min(...t.volumeTiers.map(C=>C.minQuantity)),d=a.find(C=>Ie(C,l))??a.find(C=>C.availableForSale)??a[0];if(!d)return;let s=ze(d.price.amount),u=t.discountConfig.discountType,c=le(i.priceRange.minVariantPrice.currencyCode),p=ue,f=dn(t.volumeTiers,u),b=cn(o.defaultTier,t.volumeTiers.length,f),v=un(o.popularBadge?.tierIndex,o.popularBadge?.visible!==!1,f),F=t.volumeTiers.map((C,m)=>{let H=u==="fixed_amount"?0:Math.round(C.percentage??0),N=u==="fixed_amount"?Math.round((C.amount??0)*100):0,D=u==="fixed_amount"?Math.max(0,s-N):Math.max(0,s-Math.floor(s*H/100)),B=s>0?Math.round((s-D)*100/s):0;return{quantity:C.minQuantity,percent:H,amountCents:N,label:X(p.buyQty||"Buy __COUNT__",{COUNT:C.minQuantity}),savingsLabel:B>0?"Save "+B+"%":null,badgeLabel:m===v?o.popularBadge?.text||"Most popular":null,selected:m===b}});if(!F.length)return;let x=de("lb-volume",{title:t.title,subtitle:t.description,summaryLabel:"Total",withItemCount:o.pricing?.showItemCount!==!1,totalPriceSlot:!0,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||p.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt}),T=An(F,"Select quantity",{showCompare:o.pricing?.showComparePrice!==!1,showPriceEach:o.pricing?.showPerUnitPrice!==!1,unitLabel:(p.each||"each").trim()});x.products.replaceWith(T);let z=T.querySelectorAll("[data-tier-index]");sr(z,s,u,c),ir(z,Ue(d));let I=ar(z,b),R=I===-1;R&&(I=b);let _=()=>dr(x.root,z,s,u,I,p,c);if(T.addEventListener("click",C=>{let m=C.target.closest("[data-tier-index]");!m||Pe(m)||(I=parseInt(m.getAttribute("data-tier-index")??"",10)||0,_())}),T.addEventListener("keydown",C=>{C.key==="ArrowDown"||C.key==="ArrowRight"?(C.preventDefault(),I=Bt(z,I,1),_(),z[I].focus()):(C.key==="ArrowUp"||C.key==="ArrowLeft")&&(C.preventDefault(),I=Bt(z,I,-1),_(),z[I].focus())}),R){x.cta.disabled=!0;let C=x.cta.querySelector("[data-cta-label]");C&&(C.textContent=p.outOfStock||"Out of stock")}else x.cta.addEventListener("click",()=>{let C=parseInt(z[I].getAttribute("data-tier-qty")??"",10);n([{merchandiseId:d.id,quantity:C,attributes:se(t.id,t.bundleType)}])});e.appendChild(x.root),ce(x.root),_()}function mt(e,t){return e-Math.floor(e*t/100)}function ti(e,t,n,r){let o=Z(e[0],e[0].selectedVariantId),i=Z(e[1],e[1].selectedVariantId),a=o.price*n+i.price*r,l=o.price*n+mt(i.price,t)*r;return{totalPrice:a,salePrice:l,savings:a-l}}function qt(e,t,n,r,o){let i=e.querySelector("[data-product-price]"),a=e.querySelector("[data-product-compare-price]");if(i){if(r&&n>0){i.textContent=o(mt(t.price,n)),a&&(a.textContent=o(t.price),a.hidden=!1);return}if(i.textContent=o(t.price),a){let l=t.compareAtPrice;l&&l>t.price?(a.textContent=o(l),a.hidden=!1):(a.textContent="",a.hidden=!0)}}}function Rt(e,t,n,r,o,i){let{totalPrice:a,salePrice:l,savings:d}=ti(t,n,r,o),s=e.querySelector("[data-sale-price]"),u=e.querySelector("[data-compare-price]"),c=e.querySelector("[data-savings-bar]"),p=e.querySelector("[data-savings-amount]"),f=e.querySelector("[data-savings-percent]");if(s&&(s.textContent=i(l)),u&&(d>0?(u.textContent=i(a),u.style.display=""):u.style.display="none"),c)if(d>0){if(p&&(p.textContent=i(d)),f){let b=a>0?Math.round(d*100/a):0;f.textContent="("+b+"%)"}c.style.display=""}else c.style.display="none"}function ur(e,t,n,r){let o=Z(e[0],e[0].selectedVariantId),i=Z(e[1],e[1].selectedVariantId),a={variantId:Number(e[0].selectedVariantId),quantity:n,priceCents:(o.price||0)*n},l=mt(i.price||0,t)*r;return String(e[0].selectedVariantId)===String(e[1].selectedVariantId)?[{variantId:a.variantId,quantity:n+r,priceCents:(a.priceCents??0)+l}]:[a,{variantId:Number(e[1].selectedVariantId),quantity:r,priceCents:l}]}function ni(){let e=document.createElement("div");return e.className="lb-bogo__plus",e.setAttribute("aria-hidden","true"),e.innerHTML='<svg width="12" height="12" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><line x1="9" y1="3" x2="9" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><line x1="3" y1="9" x2="15" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',e}function pr(e,t,n,r){let o=t.widgetConfig,i=t.products.find(x=>x.id===t.buyProductId),a=t.products.find(x=>x.id===t.getProductId);if(!i||!a)return;let l=t.buyQuantity,d=t.getQuantity,s=t.discountConfig.discountValue,u={productQuantities:t.productQuantities,variantQuantities:t.variantQuantities},c=[{...Ce(i,t.id,{quantities:u,allowedVariantIds:t.selectedVariantIds?.[0]??null}),role:"buy"},{...Ce(a,t.id,{quantities:u,allowedVariantIds:t.selectedVariantIds?.[1]??null}),role:"get"}],p=c.filter(x=>!x.variants.some(T=>T.available)).length,f=le(i.priceRange.minVariantPrice.currencyCode),b=ue,v=de("lb-bogo",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||b.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});v.root.setAttribute("data-discount-value",String(s)),v.root.setAttribute("data-buy-qty",String(l)),v.root.setAttribute("data-get-qty",String(d));let F=s>=100?"Free":s+"% off";if(c.forEach((x,T)=>{let z=T===1;z&&v.products.appendChild(ni());let I=!x.variants.some(C=>C.available),R=Ge(x,b,{isOos:I,href:x.url,bogoRole:x.role,inlineQuantity:z?d:l,badgeText:z&&!I?F:null,thumbnailRatio:o.productList?.thumbnailRatio});if(v.products.appendChild(R),I)return;let _=Z(x,x.selectedVariantId);je(R,x,_),$e(R,_,x.featuredImage),qt(R,_,s,z,f),We(R,()=>x,C=>{$e(R,C,x.featuredImage),qt(R,C,s,z,f),Rt(v.root,c,s,l,d,f)})}),p>0){v.cta.disabled=!0;let x=v.cta.querySelector("[data-cta-label]");x&&(x.textContent=Ye(b,p))}else v.cta.addEventListener("click",()=>{n(ur(c,s,l,d).map(x=>({merchandiseId:"gid://shopify/ProductVariant/"+x.variantId,quantity:x.quantity,attributes:se(t.id,t.bundleType)})))});e.appendChild(v.root),ce(v.root),Rt(v.root,c,s,l,d,f),r?.(fe(v.root))}function Nt(e,t,n){return X(n.stepOf||"Step __STEP__ of __TOTAL__",{STEP:e+1,TOTAL:t})}function Be(e,t,n){return X(n.ofSelected||"__COUNT__ of __TOTAL__ added",{COUNT:e,TOTAL:t})}function br(e,t,n){return X(n.stepsCompleted||"__COUNT__ of __TOTAL__ steps completed",{COUNT:e,TOTAL:t})}function hr(e,t){return e>0?X(t.moreToGo||"__COUNT__ more to go",{COUNT:e}):t.complete||"Complete"}function mr(e,t,n){let r=new Intl.PluralRules(n||"en").select(t);return X(e[r]||e.other||"__COUNT__",{COUNT:t})}function fr(e,t){return e?t.doorContinue||"Continue building":t.doorChoose||"Choose your products"}function gr(e,t,n,r){if(!e){let o=r.doorQuickSteps;return typeof o=="string"?X(o,{COUNT:n}):mr(o||{one:"__COUNT__ quick step",other:"__COUNT__ quick steps"},n,r.locale)}return mr(r.doorStepsToGo||{one:"__COUNT__ step to go",other:"__COUNT__ steps to go"},t,r.locale)}function ge(e,t){let n=0;for(let r=0;r<e[t].length;r++)n+=e[t][r].quantity||1;return n}function xe(e,t,n){return ge(e,n)>=(t[n].minQuantity||1)}function qe(e,t,n){let r=t[n].maxQuantity;return r==null?1/0:Math.max(0,r-ge(e,n))}function Re(e,t){for(let n=0;n<t.length;n++)if(!xe(e,t,n))return!1;return!0}function Ne(e,t,n){if(pe(t.variantId,n)?.required)return!1;let r=te(t.productId,n);if(!r.required)return!0;let o=0;for(let i of e)for(let a of i)a!==t&&a.productId===t.productId&&(o+=a.quantity||1);return o>=r.min}function Ht(e,t,n,r,o){let i=te(n,o);if(!i.required||i.max!==i.min||_e(e,t,r)!==-1)return 0;let a=0;for(let l of e[t])l.productId===n&&l.variantId!==r&&(a+=l.quantity||1);return a}function _e(e,t,n){for(let r=0;r<e[t].length;r++)if(e[t][r].variantId===n)return r;return-1}function xr(e){let{container:t,steps:n,selections:r,t:o}=e;for(let i=0;i<n.length;i++){let a=n[i].minQuantity||1,l=t.querySelector('[data-step-group="'+i+'"]');l&&l.setAttribute("data-step-mode",r[i].length>0?"open":"row");let d=Be(Math.min(ge(r,i),a),a,o),s=xe(r,n,i),u=t.querySelectorAll('[data-step-count="'+i+'"]');for(let p=0;p<u.length;p++)u[p].textContent=d,u[p].classList.toggle("lb-multi-step__group-count--met",s);let c=t.querySelector('[data-step-slots="'+i+'"]');if(c){c.innerHTML="";for(let p=0;p<r[i].length;p++){let f=i,b=p,v=r[f][b];c.appendChild(ct(v,o,e.formatMoney,Ne(r,v,e.rulesMap),()=>e.onRemove(f,b),()=>e.onEdit(f)))}}}}function vr(e){let{container:t,steps:n,selections:r,t:o}=e,i=t.querySelector("[data-step-door]");if(!i)return;let a=-1,l=0,d=!1;for(let b=0;b<n.length;b++)r[b].length>0&&(d=!0),xe(r,n,b)||(l+=1,a===-1&&(a=b));if(a===-1){i.style.display="none",i.classList.add("lb-multi-step__door--hidden");let b=i.parentElement;b&&b.firstElementChild!==i&&b.insertBefore(i,b.firstElementChild);return}i.style.display="",i.classList.remove("lb-multi-step__door--hidden"),i.setAttribute("data-step-door",String(a));let s=fr(d,o),u=i.querySelector(".lb-mix-match__add-product-label");u&&(u.textContent=s);let c=i.querySelector(".lb-multi-step__door-sub");c&&(c.textContent=gr(d,l,n.length,o));let p=n[a].name||"";i.setAttribute("aria-label",p?s+": "+p:s);let f=t.querySelector('[data-step-group="'+a+'"]');f&&f.parentElement&&f.previousElementSibling!==i&&f.parentElement.insertBefore(i,f)}function yr(e,t,n,r){let{container:o,steps:i,selections:a}=e,l=o.querySelector("[data-pricing-section]");if(!Re(a,i)){l&&(l.style.display="none");return}l&&(l.style.display="");let d=0;for(let s of a)for(let u of s)d+=u.price*(u.quantity||1);d>0&&t.discountType&&r(o,n(d,t.discountType,t.discountValue??0),d)}function wr(e){let{container:t,steps:n,selections:r,t:o}=e,i=0;for(let c=0;c<n.length;c++)xe(r,n,c)&&(i+=1);let a=n.length-i,l=t.querySelectorAll("[data-progress] [data-progress-segment]");for(let c=0;c<l.length;c++)l[c].classList.toggle("lb-mix-match__progress-segment--filled",c<i);let d=t.querySelector("[data-progress-count]");d&&(d.textContent=br(i,n.length,o));let s=t.querySelector("[data-progress-remaining]");s&&(s.textContent=hr(a,o));let u=t.querySelector(".lb-mix-match__progress-segments");u&&u.setAttribute("aria-valuenow",String(i))}function _r(e){let t=e.container.querySelector("[data-add-bundle]");if(!t)return;t.disabled=!Re(e.selections,e.steps);let n=t.querySelector("[data-cta-label]");n&&(n.textContent=t.getAttribute("data-cta-text")||e.t.addToCart||"Add to cart")}function Cr(e){let t=Object.create(null),n=[];for(let r of e)for(let o of r){let i=o.quantity||1,a=String(o.variantId);t[a]?(t[a].quantity+=i,t[a].priceCents=(t[a].priceCents??0)+(o.price||0)*i):(t[a]={variantId:o.variantId,quantity:i,priceCents:(o.price||0)*i},n.push(a))}return n.map(r=>t[r])}var He="__all__",ri=300,oi=200;function kr(e){let{container:t,steps:n,selections:r,t:o}=e,i=t.querySelector("[data-modal-overlay]");i&&e.portalTarget&&e.portalTarget.appendChild(i);let a=y=>i?i.querySelector(y):null,l=a('[role="dialog"]'),d=a(".lb-mix-match__modal-title"),s=a("[data-modal-search]"),u=a("[data-modal-search-clear]"),c=a("[data-modal-list]"),p=a("[data-modal-empty]"),f=a("[data-modal-live]"),b=a("[data-modal-close]"),v=a("[data-modal-back]"),F=a("[data-modal-next]"),x=a("[data-modal-done]"),T=a("[data-modal-footer-count]"),z=a("[data-modal-subtitle]"),I=a("[data-modal-step-segments]"),R=a("[data-modal-filters]"),_=He,C=!1,m=0,H=[],N=y=>n[y].eligibleProducts||[],D={remainingSpots:()=>qe(r,n,m),ownQty:y=>{let k=_e(r,m,y);return k===-1?0:r[m][k].quantity||0},variantUnitsElsewhere:y=>{let k=0;for(let M of r)for(let L of M)L.variantId===y&&(k+=L.quantity||0);return k},productUnitsElsewhere:(y,k)=>{let M=0;for(let L=0;L<r.length;L++)for(let w of r[L])w.productId===y&&(L===m&&w.variantId===k||(M+=w.quantity||0));return M},swapUnits:(y,k)=>Ht(r,m,y,k,e.rulesMap),isInBundle:y=>_e(r,m,y)!==-1,canRemove:y=>{let k=_e(r,m,y);return k!==-1&&e.canRemove(r[m][k])},isFull:()=>qe(r,n,m)===0,commitQty:(y,k)=>{let M=_e(r,m,y);return M===-1||r[m][M].quantity===k?!1:(r[m][M].quantity=k,!0)}};function B(y){if(!I)return;let k=n[y].minQuantity||1;I.innerHTML="",I.setAttribute("aria-valuemax",String(k));for(let M=0;M<k;M++){let L=document.createElement("span");L.className="lb-mix-match__progress-segment",L.setAttribute("data-progress-segment",""),I.appendChild(L)}G()}function G(){if(!I)return;let y=n[m].minQuantity||1,k=Math.min(ge(r,m),y),M=I.querySelectorAll("[data-progress-segment]");for(let L=0;L<M.length;L++)M[L].classList.toggle("lb-mix-match__progress-segment--filled",L<k);I.setAttribute("aria-valuenow",String(k))}function K(){let y=n[m].minQuantity||1,k=Math.min(ge(r,m),y);T&&(T.textContent=Be(k,y,o)),z&&(z.textContent=Nt(m,n.length,o)+" \xB7 "+(n[m].name||""));let M=xe(r,n,m),L=m===n.length-1;v&&(v.style.display=m>0?"":"none"),F&&(F.style.display=L?"none":"",F.disabled=!M),x&&(x.style.display=L?"":"none",x.disabled=!M),G()}function j(){for(let y of H)y.refresh();K()}function W(){e.autoAdvance&&(m>=n.length-1||qe(r,n,m)===0&&g(m+1))}function A(y){if(!c)return;e.dropdown?.unbindAll(c),c.innerHTML="",H=[];let k=N(y);for(let w=0;w<k.length;w++){let q=ot(k[w],w,{t:o,rulesMap:e.rulesMap,capacity:D,showQtySelector:e.showQtySelector,formatMoney:e.formatMoney,onCommittedQtyChanged:()=>{e.onSelectionChanged(),j(),W()}});H.push(q),c.appendChild(q.el)}let M=r[y]||[],L=Object.create(null);for(let w of M)L[String(w.productId)]=!0;st(c,H.map(w=>w.el),w=>L[String(k[w].id)]===!0),e.dropdown?.bindAll(c)}function S(y){let k=y.target.closest("[data-add-product]");if(!k||k.disabled)return;let L=N(m)[parseInt(k.getAttribute("data-add-product")??"",10)];if(!L)return;let w=k.closest(".lb-mix-match__modal-product"),q=w&&w.getAttribute("data-selected-variant-id"),O=(q?L.variants.find(he=>he.id===parseInt(q,10)):null)??null;if(O||(O=L.variants.find(he=>he.available)??null),!O)return;let U=_e(r,m,O.id);if(U!==-1){if(!e.canRemove(r[m][U]))return;r[m].splice(U,1),e.onSelectionChanged(),j();return}let J=w?.querySelector("[data-row-qty]"),ee=J?Math.max(1,parseInt(J.getAttribute("data-qty")||J.textContent||"",10)||1):nt(L.id,e.rulesMap,O.id),be={productId:L.id,variantId:O.id,title:L.title,url:L.url||null,variantTitle:O.title,featuredImage:O.image||L.featuredImage||null,price:O.price,compareAtPrice:O.compareAtPrice||null,unitPrice:O.unitPrice||null,quantity:ee},ve=Ht(r,m,L.id,O.id,e.rulesMap);if(ve>0){e.swapVariant(m,be,Math.min(ee,ve)),j();return}let ne=qe(r,n,m);ne!==1/0&&ee>ne||(r[m].push(be),e.onSelectionChanged(),j(),W())}c&&c.addEventListener("click",S);function h(y){if(!R||!e.showTypeFilters)return;let k=[],M=Object.create(null);for(let L of N(y)){let w=(L.type||"").trim();w&&!M[w]&&(M[w]=!0,k.push(w))}if(k.length<2){R.style.display="none",l?.classList.add("lb-mix-match__modal--filters-hidden");return}R.style.display="",l?.classList.remove("lb-mix-match__modal--filters-hidden"),R.innerHTML="";for(let L of[He,...k]){let w=document.createElement("button");w.type="button",w.className="lb-mix-match__filter",w.setAttribute("data-filter",L),w.setAttribute("aria-pressed",L===_?"true":"false"),L===_&&w.classList.add("lb-mix-match__filter--active"),w.textContent=L===He?o.allTypes||"All":L,w.addEventListener("click",()=>{_=L,E(),V(s?s.value:"")}),R.appendChild(w)}}function E(){if(!R)return;let y=R.querySelectorAll("[data-filter]");for(let k=0;k<y.length;k++){let M=y[k].getAttribute("data-filter")===_;y[k].classList.toggle("lb-mix-match__filter--active",M),y[k].setAttribute("aria-pressed",M?"true":"false")}}function V(y){if(!c)return;let k=Se(y),M=c.querySelectorAll("[data-product-item]"),L=0;for(let w=0;w<M.length;w++){let q=M[w].getAttribute("data-title")??"",O=M[w].getAttribute("data-type")||"",U=(!k||q.indexOf(k)!==-1)&&(_===He||O===_);M[w].classList.toggle("lb-hidden",!U),U&&L++}p&&(p.style.display=L===0&&k.length>0?"":"none"),u&&(u.style.display=y.length>0?"":"none"),f&&(f.textContent=X(o.nProductsShown||"__COUNT__ products shown",{COUNT:L}))}if(s){let y=rt(()=>V(s.value),oi);s.addEventListener("input",y)}u&&u.addEventListener("click",()=>{s&&(s.value="",V(""),s.focus())});function g(y,k={}){if(m=Math.max(0,Math.min(n.length-1,y)),A(m),h(m),_=He,E(),s&&(s.value=""),V(""),c&&(c.scrollTop=0),B(m),j(),f){let M=n[m].minQuantity||1;f.textContent=Nt(m,n.length,o)+". "+(n[m].name||"")+". "+Be(Math.min(ge(r,m),M),M,o)}!k.skipFocus&&d&&typeof d.focus=="function"&&d.focus()}function Q(y){!i||C||(C=!0,g(typeof y=="number"?y:0,{skipFocus:!0}),i.style.display="",i.offsetHeight,i.classList.add("lb-mix-match__modal-overlay--open"),at(),setTimeout(()=>{b?b.focus():l?.focus()},50))}function $(){if(!i||!C)return;C=!1,i.classList.remove("lb-mix-match__modal-overlay--open"),lt(),setTimeout(()=>{C||(i.style.display="none")},ri);let y=M=>M&&M.offsetParent!==null?M:null,k=y(t.querySelector('[data-step-row="'+m+'"]'))||y(t.querySelector("[data-step-door]"))||e.ctaButton;k&&typeof k.focus=="function"&&setTimeout(()=>k.focus(),0)}if(b?.addEventListener("click",$),x?.addEventListener("click",$),v?.addEventListener("click",()=>{m>0&&g(m-1)}),F?.addEventListener("click",()=>{m<n.length-1&&xe(r,n,m)&&g(m+1)}),i){let y=null;i.addEventListener("mousedown",k=>{y=k.target}),i.addEventListener("mouseup",k=>{k.target===i&&y===i&&$(),y=null})}return document.addEventListener("keydown",y=>{if(C){if(y.key==="Escape"){y.preventDefault(),$();return}if(y.key==="Tab"&&l){let k=it(l);if(k.length===0){y.preventDefault();return}let M=k[0],L=k[k.length-1];y.shiftKey&&document.activeElement===M?(y.preventDefault(),L.focus()):!y.shiftKey&&document.activeElement===L&&(y.preventDefault(),M.focus())}}}),{open:Q,close:$,isOpen:()=>C,refresh:j}}function ii(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("viewBox","0 0 18 18"),t.setAttribute("fill","none");for(let[n,r,o,i]of[["9","3","9","15"],["3","9","15","9"]]){let a=document.createElementNS(e,"line");a.setAttribute("x1",n),a.setAttribute("y1",r),a.setAttribute("x2",o),a.setAttribute("y2",i),a.setAttribute("stroke","currentColor"),a.setAttribute("stroke-width","2"),a.setAttribute("stroke-linecap","round"),t.appendChild(a)}return t}function Tr(e,t,n,r){let o=t.widgetConfig,i=ue,a=tt(t.productRules,t.variantRules),l=t.steps??[];if(!l.length)return;let d={productQuantities:t.productQuantities,variantQuantities:t.variantQuantities},s=l.map((m,H)=>bn(t,H).map(N=>{let D=Ce(N,t.id,{quantities:d,allowedVariantIds:null});return{id:Number(D.productId),title:D.title??"",url:D.url??null,type:N.productType??"",featuredImage:D.featuredImage??null,available:D.variants.some(B=>B.available),optionNames:D.optionNames,variants:D.variants.map(B=>({id:Number(B.id),title:B.title,options:B.options,available:B.available,price:B.price,compareAtPrice:B.compareAtPrice,unitPrice:B.unitPrice,image:B.image,inventoryQuantity:B.inventoryQuantity??null}))}}));if(!(s.length>0&&s.every(m=>m.some(H=>H.available))))return;let c=le(t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD"),p=de("lb-multi-step",{title:t.title,subtitle:t.description,showSavingsBar:o.savingsBar?.visible!==!1,showComparePrice:o.pricing?.showCompareAtPrice!==!1,ctaText:o.cta?.ctaText||i.addToCart||"Add to cart",endsAt:o.countdown?.showCountdown===!1?null:t.endsAt});p.products.before(Ke(l.length));let f=document.createElement("div");f.className="lb-multi-step__groups",f.setAttribute("data-step-groups","");let b=document.createElement("button");b.type="button",b.className="lb-mix-match__add-product lb-multi-step__door",b.setAttribute("data-step-door","0");let v=document.createElement("span");v.className="lb-mix-match__add-product-icon",v.setAttribute("aria-hidden","true"),v.appendChild(ii()),b.appendChild(v);let F=document.createElement("span");F.className="lb-multi-step__door-copy";let x=document.createElement("span");x.className="lb-mix-match__add-product-label",F.appendChild(x);let T=document.createElement("span");T.className="lb-multi-step__door-sub",F.appendChild(T),b.appendChild(F),f.appendChild(b),l.forEach((m,H)=>{let N=document.createElement("section");N.className="lb-multi-step__group",N.setAttribute("data-step-group",String(H)),N.setAttribute("data-step-mode","row");let D=()=>{let S=document.createElement("span");return S.className="lb-multi-step__group-count",S.setAttribute("data-step-count",String(H)),S},B=document.createElement("button");B.type="button",B.className="lb-multi-step__step-row",B.setAttribute("data-step-row",String(H)),B.setAttribute("aria-label","Choose products: "+m.name);let G=document.createElement("span");G.className="lb-multi-step__step-ix",G.setAttribute("aria-hidden","true"),G.textContent=String(H+1),B.appendChild(G);let K=document.createElement("span");K.className="lb-multi-step__group-name",K.textContent=m.name,B.appendChild(K),B.appendChild(D()),N.appendChild(B);let j=document.createElement("div");j.className="lb-multi-step__group-heading";let W=document.createElement("span");W.className="lb-multi-step__group-name",W.textContent=m.name,j.appendChild(W),j.appendChild(D()),N.appendChild(j);let A=document.createElement("div");A.className="lb-mix-match__slots lb-edge-fade lb-multi-step__group-slots",A.setAttribute("data-step-slots",String(H)),N.appendChild(A),f.appendChild(N)}),p.products.replaceWith(f);let z=pt({bundleGid:t.id,domId:t.id.replace(/\D/g,""),showSearch:o.showSearch!==!1,showTypeFilters:o.mixMatchShowTypeFilters!==!1,segmentCount:null,wizard:!0});p.root.appendChild(z);let I=l.map(()=>[]),R={container:p.root,steps:l.map((m,H)=>({name:m.name,minQuantity:m.minQuantity,maxQuantity:m.maxQuantity,eligibleProducts:s[H]})),selections:I,t:i,rulesMap:a,formatMoney:c,onRemove:(m,H)=>{let N=I[m][H];!N||!Ne(I,N,a)||(I[m].splice(H,1),_(),C.isOpen()&&C.refresh())},onEdit:m=>C.open(m)};function _(){xr(R),vr(R),yr(R,{discountType:t.discountConfig.discountType,discountValue:t.discountConfig.discountValue},(m,H,N)=>Ve(m,H,N),ut(c)),wr(R),_r(R)}let C=kr({container:p.root,steps:R.steps,selections:I,t:i,rulesMap:a,showQtySelector:o.mixMatchShowQuantitySelector!==!1,showTypeFilters:o.mixMatchShowTypeFilters!==!1,autoAdvance:o.multiStepAutoAdvance===!0,formatMoney:c,dropdown:void 0,portalTarget:null,ctaButton:p.cta,onSelectionChanged:_,swapVariant:(m,H,N)=>{let D=0,B=I[m];for(let G=B.length-1;G>=0&&D<N;G--){let K=B[G];if(K.productId!==H.productId||K.variantId===H.variantId)continue;let j=Math.min(K.quantity||1,N-D);j>=(K.quantity||1)?B.splice(G,1):K.quantity=(K.quantity||1)-j,D+=j}D>0&&(H.quantity=D,B.push(H),_())},canRemove:m=>Ne(I,m,a)});b.addEventListener("click",()=>{C.isOpen()||C.open(parseInt(b.getAttribute("data-step-door")??"",10)||0)}),p.root.querySelectorAll("[data-step-row]").forEach(m=>{m.addEventListener("click",()=>{C.isOpen()||C.open(parseInt(m.getAttribute("data-step-row")??"",10)||0)})}),p.cta.addEventListener("click",()=>{Re(I,R.steps)&&n(Cr(I).map(m=>({merchandiseId:"gid://shopify/ProductVariant/"+m.variantId,quantity:m.quantity,attributes:se(t.id,t.bundleType)})))}),e.appendChild(p.root),ce(p.root),_(),r?.(fe(p.root))}var ai=new Set(["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown","Enter"," ","Escape"]),bt=new Set,ht=!1;function Sr(e){let t=e==="using-mouse"?"using-keyboard":"using-mouse";for(let n of bt)n.classList.add(e),n.classList.remove(t)}function Er(e){ai.has(e.key)&&Sr("using-keyboard")}function Ir(){Sr("using-mouse")}function li(){ht||(ht=!0,document.addEventListener("keydown",Er,!0),document.addEventListener("pointerdown",Ir,!0))}function si(){ht&&(ht=!1,document.removeEventListener("keydown",Er,!0),document.removeEventListener("pointerdown",Ir,!0))}function ft(e){return e.classList.add("using-mouse"),e.classList.remove("using-keyboard"),bt.add(e),li(),()=>{bt.delete(e),e.classList.remove("using-mouse"),e.classList.remove("using-keyboard"),bt.size===0&&si()}}var Dt=`/* Lime Bundles \u2014 shared base styles for all bundle widget types */
|
|
261
261
|
|
|
262
262
|
.lb-bundle-widget.lb-bundle-widget,
|
|
263
263
|
.lb-bundle-widget.lb-bundle-widget * {
|
|
@@ -2956,7 +2956,7 @@ a.lb-bundle-product-name:focus-visible {
|
|
|
2956
2956
|
animation: none;
|
|
2957
2957
|
}
|
|
2958
2958
|
}
|
|
2959
|
-
`;var di=e=>`lb_cart_id:${e}`;function ci(e){if(e)return e.trim()||null;if(typeof document<"u"){let t=document.querySelector('meta[name="shopify:product-handle"]');if(t?.content)return t.content.trim()||null}if(typeof window<"u"){let t=window.location.pathname.match(/\/products\/([^/?#]+)/);if(t?.[1])return decodeURIComponent(t[1])}return null}var
|
|
2959
|
+
`;var di=e=>`lb_cart_id:${e}`;function ci(e){if(e)return e.trim()||null;if(typeof document<"u"){let t=document.querySelector('meta[name="shopify:product-handle"]');if(t?.content)return t.content.trim()||null}if(typeof window<"u"){let t=window.location.pathname.match(/\/products\/([^/?#]+)/);if(t?.[1])return decodeURIComponent(t[1])}return null}var De=class extends HTMLElement{static observedAttributes=["shop-domain","storefront-token","bundle-gid","product-handle","product-id","app-url","analytics","locale","country","language","market-id"];buyer=void 0;shadow;bundles=[];currentProductHandle=null;abortController=null;impressionCleanups=[];renderCleanups=[];shopCustomCss=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.fetchBundle()}disconnectedCallback(){this.abortController?.abort(),this.teardownImpressions(),this.teardownRenderers()}teardownImpressions(){for(let t of this.impressionCleanups)t();this.impressionCleanups=[]}teardownRenderers(){for(let t of this.renderCleanups)t();this.renderCleanups=[]}attributeChangedCallback(t,n,r){n===r||!this.isConnected||(t==="bundle-gid"||t==="product-handle"||t==="product-id"||t==="shop-domain"||t==="storefront-token")&&this.shopDomain&&this.storefrontToken&&this.fetchBundle()}get shopDomain(){return this.getAttribute("shop-domain")??""}get storefrontToken(){return this.getAttribute("storefront-token")??""}get bundleGid(){return this.getAttribute("bundle-gid")??""}get productHandleAttr(){return this.getAttribute("product-handle")??""}get productIdAttr(){return this.getAttribute("product-id")??""}get appUrl(){return this.getAttribute("app-url")??""}get analyticsEnabled(){return this.getAttribute("analytics")!=="false"}get country(){return this.getAttribute("country")??void 0}get language(){return this.getAttribute("language")??void 0}get marketId(){return this.getAttribute("market-id")??void 0}wrapQueryForContext(t){return Xt({shopDomain:this.shopDomain,accessToken:this.storefrontToken,country:this.country,language:this.language,buyer:this.buyer})?Zt(t):t}isMarketHidden(t){return!pn(t,this.marketId)}async fetchBundle(){if(!this.shopDomain||!this.storefrontToken){this.renderError("Missing required attributes: shop-domain, storefront-token");return}this.abortController?.abort();let t=new AbortController;this.abortController=t,this.renderLoading();let n=yt({shopDomain:this.shopDomain,accessToken:this.storefrontToken,country:this.country,language:this.language,buyer:this.buyer});try{let r,o=!1;if(this.currentProductHandle=ci(this.productHandleAttr),this.bundleGid)o=!0,r=this.fetchSingleBundle(n,t.signal);else{let d=this.currentProductHandle;if(!d){this.teardownImpressions(),this.renderError("No bundle-gid or product-handle provided, and the current URL doesn't match /products/<handle>.");return}r=this.fetchProductBundles(n,t.signal,d)}let i=n.query(tn,void 0,{signal:t.signal}).catch(()=>null);if(await r,t.signal.aborted)return;if(o&&this.bundles.length===0){this.teardownImpressions(),this.renderError("Bundle not found");return}let l=(await i)?.shop?.customCss?.value;if(l){vn(this.shopDomain,l);let d=Ct(l);d.ok&&(this.shopCustomCss=d.css)}this.renderBundles()}catch(r){if(t.signal.aborted)return;this.bundles=[],this.teardownImpressions(),this.renderError(r instanceof Error?r.message:"Failed to load bundle")}}async fetchSingleBundle(t,n){let r=await t.query(this.wrapQueryForContext(en),{id:this.bundleGid},{signal:n});if(!r.metaobject){this.bundles=[];return}let o=wt(r.metaobject.id,r.metaobject.fields);this.bundles=o&&!this.isMarketHidden(o)?[o]:[]}async fetchProductBundles(t,n,r){let o=await t.query(this.wrapQueryForContext(nn),{handle:r},{signal:n});if(!o.product){this.bundles=[];return}let i=o.product.metafield?.references?.nodes??[],a=[];for(let l of i){let d=wt(l.id,l.fields);d&&!this.isMarketHidden(d)&&a.push(d)}this.bundles=Cn(a,_n())}handleAddToCart=async(t,n)=>{let r=new CustomEvent("lime-bundle:add-to-cart",{detail:{lines:n},bubbles:!0,composed:!0,cancelable:!0}),o=this.dispatchEvent(r);this.reportAddToCartEvent(t,n),o&&await this.defaultAddToCart(n)};async defaultAddToCart(t){if(typeof window>"u")return;let n=yt({shopDomain:this.shopDomain,accessToken:this.storefrontToken}),r=window.localStorage,o=di(this.shopDomain),i=r?.getItem(o)??null,a=s=>s.length>0&&s.every(u=>(u.field??[]).includes("cartId")),l=s=>(s??[]).some(u=>u.code==="MERCHANDISE_NOT_ENOUGH_STOCK"),d=s=>{this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:s,code:"CART_ERROR"},bubbles:!0,composed:!0}))};try{let s=null;if(i&&(i=await this.clearAbandonedBundleLines(n,i,()=>r?.removeItem(o))),i){let c=(await n.query(on,{cartId:i,lines:t})).cartLinesAdd;if(c?.userErrors?.length){if(!a(c.userErrors)){d(c.userErrors[0].message);return}r?.removeItem(o)}else if(l(c?.warnings)){d("Some items in this bundle are out of stock.");return}else c?.cart&&(s=c.cart.checkoutUrl)}if(!s){let c=(await n.query(rn,{input:{lines:t}})).cartCreate;if(c?.userErrors?.length){d(c.userErrors[0].message);return}if(l(c?.warnings)){d("Some items in this bundle are out of stock.");return}c?.cart&&(r?.setItem(o,c.cart.id),s=c.cart.checkoutUrl)}s?window.location.assign(s):d("Cart creation failed")}catch(s){this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:s instanceof Error?s.message:"Cart mutation failed",code:"CART_ERROR"},bubbles:!0,composed:!0}))}}async clearAbandonedBundleLines(t,n,r){let o=await t.query(an,{cartId:n});if(!o.cart)return r(),null;let i=o.cart.lines.nodes.filter(l=>l.attributes.some(d=>d.key===kt)).map(l=>l.id);return i.length===0?n:(await t.query(ln,{cartId:n,lineIds:i})).cartLinesRemove?.userErrors?.length?(r(),null):n}reportAddToCartEvent(t,n){if(!this.analyticsEnabled||!this.appUrl)return;let r=n.reduce((i,a)=>i+a.quantity,0),o=n.reduce((i,a)=>{let d=t.products.find(u=>u.variants.nodes.some(c=>c.id===a.merchandiseId))?.variants.nodes.find(u=>u.id===a.merchandiseId),s=d?parseFloat(d.price.amount):0;return i+s*a.quantity},0);fn({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType,productId:t.products[0]?.id??"",quantity:r,totalPrice:Math.round(o*100)/100})}renderBundles(){this.teardownImpressions(),this.teardownRenderers(),this.shadow.innerHTML="";let t=document.createElement("style");if(t.textContent=[Dt,Ar,Lr,Br,Mr,Pr,qr].join(`
|
|
2960
2960
|
`),this.shadow.appendChild(t),this.shopCustomCss){let r=document.createElement("style");r.setAttribute("data-lime-bundles","shop-custom-css"),r.textContent=this.shopCustomCss,this.shadow.appendChild(r)}for(let r of this.bundles){let o=document.createElement("div");o.className="lb-bundle-widget",o.setAttribute("role","region"),o.setAttribute("aria-label",r.title),o.setAttribute("data-bundle-type",r.bundleType),o.setAttribute("data-bundle-gid",r.id),r.endsAt&&o.setAttribute("data-ends-at",r.endsAt),sn(o,r.widgetConfig),this.renderCleanups.push(ft(o));let i=l=>this.handleAddToCart(r,l),a=l=>this.renderCleanups.push(l);switch(r.bundleType){case"fixed":On(o,r,i,a);break;case"mix_match":rr(o,r,i,a,this.currentProductHandle);break;case"volume":cr(o,r,i,{productId:this.productIdAttr||null,productHandle:this.currentProductHandle});break;case"bogo":pr(o,r,i,a);break;case"multi_step":Tr(o,r,i,a);break}this.shadow.appendChild(o),this.setupImpressionFor(r,o)}let n=this.bundles[0];this.dispatchEvent(new CustomEvent("lime-bundle:loaded",{detail:{bundleCount:this.bundles.length,bundleTypes:this.bundles.map(r=>r.bundleType),bundleType:n?.bundleType,title:n?.title},bubbles:!0,composed:!0}))}setupImpressionFor(t,n){if(!this.analyticsEnabled||!this.appUrl)return;let r=gn(n,()=>{hn({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType})});this.impressionCleanups.push(r)}renderLoading(){this.shadow.innerHTML=`
|
|
2961
2961
|
<style>${Dt}</style>
|
|
2962
2962
|
<style>${Rr}</style>
|
|
@@ -2993,5 +2993,5 @@ a.lb-bundle-product-name:focus-visible {
|
|
|
2993
2993
|
<div class="lb-skeleton lb-skeleton--cta"></div>
|
|
2994
2994
|
</div>
|
|
2995
2995
|
</div>
|
|
2996
|
-
`}renderError(t){this.shadow.innerHTML="",this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:t,code:"LOAD_ERROR"},bubbles:!0,composed:!0}))}};typeof customElements<"u"&&!customElements.get("lime-bundle")&&customElements.define("lime-bundle",
|
|
2996
|
+
`}renderError(t){this.shadow.innerHTML="",this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:t,code:"LOAD_ERROR"},bubbles:!0,composed:!0}))}};typeof customElements<"u"&&!customElements.get("lime-bundle")&&customElements.define("lime-bundle",De);return Vr(ui);})();
|
|
2997
2997
|
//# sourceMappingURL=lime-bundle.global.js.map
|