var __defProp=Object.defineProperty,__typeError=t=>{throw TypeError(t)},__publicField=(t,e,i)=>((t,e,i)=>e in t?__defProp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i)(t,"symbol"!=typeof e?e+"":e,i),__accessCheck=(t,e,i)=>e.has(t)||__typeError("Cannot "+i),__privateGet=(t,e,i)=>(__accessCheck(t,e,"read from private field"),i?i.call(t):e.get(t)),__privateAdd=(t,e,i)=>e.has(t)?__typeError("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),__privateSet=(t,e,i,n)=>(__accessCheck(t,e,"write to private field"),n?n.call(t,i):e.set(t,i),i),__privateMethod=(t,e,i)=>(__accessCheck(t,e,"access private method"),i),__privateWrapper=(t,e,i,n)=>({set _(n){__privateSet(t,e,n,i)},get _(){return __privateGet(t,e,n)}});!function(){var t,e,i,n,r,a,s,o,c,l,d,u,h,p,_,f,g,v,b,m,w,y,S,C,E,T,A,M,P,O,G,I,k,L,x,q,F,D,V,R,$,N,B,H,W,z,U,Z,j,Q,J,K,Y,X,tt,et,it,nt,rt,at,st,ot,ct,lt,dt,ut,ht,pt,_t,ft,gt,vt,bt,mt,wt,yt,St,Ct,Et,Tt,At,Mt,Pt,Ot,Gt,It,kt,Lt,xt,qt,Ft,Dt,Vt,Rt,$t,Nt,Bt,Ht,Wt,zt,Ut,Zt,jt,Qt,Jt,Kt,Yt,Xt,te,ee,ie,ne,re,ae,se,oe,ce,le,de,ue,he,pe,_e,fe,ge,ve,be,me,we,ye,Se,Ce,Ee,Te,Ae,Me,Pe,Oe,Ge,Ie,ke,Le,xe,qe,Fe,De,Ve,Re,$e,Ne,Be,He,We,ze,Ue,Ze,je,Qe,Je,Ke,Ye,Xe,ti,ei,ii,ni,ri,ai,si,oi,ci,li,di,ui,hi,pi,_i,fi,gi,vi,bi,mi,wi,yi,Si,Ci,Ei,Ti,Ai,Mi,Pi,Oi,Gi,Ii,ki,Li,xi,qi,Fi,Di,Vi,Ri,$i,Ni,Bi,Hi,Wi,zi,Ui,Zi,ji,Qi,Ji,Ki,Yi,Xi,tn,en,nn,rn,an,sn,on,cn,ln,dn,un,hn,pn,_n,fn,gn,vn,bn,mn,wn,yn,Sn,Cn,En,Tn,An,Mn,Pn,On,Gn,In,kn,Ln,xn,qn,Fn,Dn,Vn,Rn,$n,Nn,Bn,Hn,Wn,zn,Un,Zn,jn,Qn,Jn,Kn,Yn,Xn,tr,er,ir,nr,rr,ar,sr,or,cr,lr,dr,ur,hr,pr,_r,fr,gr,vr,br,mr,wr,yr,Sr,Cr,Er,Tr,Ar,Mr,Pr,Or,Gr,Ir,kr,Lr,xr,qr,Fr,Dr,Vr,Rr,$r,Nr,Br,Hr,Wr,zr,Ur,Zr,jr,Qr,Jr,Kr,Yr,Xr,ta,ea,ia,na,ra,aa,sa,oa,ca,la,da,ua,ha,pa,_a,fa,ga,va,ba,ma,wa,ya,Sa,Ca,Ea,Ta,Aa,Ma,Pa,Oa,Ga,Ia,ka,La,xa,qa,Fa,Da,Va;const Ra=Symbol.for("constructDateFrom");function $a(t,e){return n=t,"function"==typeof(i=t)?i(n):i&&"object"==typeof i&&Ra in i?i[Ra](n):i instanceof Date?new i.constructor(n):new Date(n);var i,n}function Na(t,e){return+$a(t)>+$a(e)}function Ba(t,e){return+$a(t)<+$a(e)}function Ha(t){for(var e=1;evoid 0===globalThis.DOMException?new Ka(t):new DOMException(t),Xa=t=>{const e=void 0===t.reason?Ya("This operation was aborted."):t.reason;return e instanceof Error?e:Ya(e)};class ts{constructor(){__privateAdd(this,t,[])}enqueue(e,i){const n={priority:(i={priority:0,...i}).priority,id:i.id,run:e};if(0===this.size||__privateGet(this,t)[this.size-1].priority>=i.priority)return void __privateGet(this,t).push(n);const r=function(t,e,i){let n=0,r=t.length;for(;r>0;){const a=Math.trunc(r/2);let s=n+a;i(t[s],e)<=0?(n=++s,r-=a+1):r=a}return n}(__privateGet(this,t),n,(t,e)=>e.priority-t.priority);__privateGet(this,t).splice(r,0,n)}setPriority(e,i){const n=__privateGet(this,t).findIndex(t=>t.id===e);if(-1===n)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[r]=__privateGet(this,t).splice(n,1);this.enqueue(r.run,{priority:i,id:e})}dequeue(){const e=__privateGet(this,t).shift();return e?.run}filter(e){return __privateGet(this,t).filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return __privateGet(this,t).length}}t=new WeakMap;class es extends Qa{constructor(t){if(super(),__privateAdd(this,g),__privateAdd(this,e),__privateAdd(this,i),__privateAdd(this,n,0),__privateAdd(this,r),__privateAdd(this,a),__privateAdd(this,s,0),__privateAdd(this,o),__privateAdd(this,c),__privateAdd(this,l),__privateAdd(this,d),__privateAdd(this,u,0),__privateAdd(this,h),__privateAdd(this,p),__privateAdd(this,_),__privateAdd(this,f,1n),__publicField(this,"timeout"),!("number"==typeof(t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:ts,...t}).intervalCap&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(void 0===t.interval||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);__privateSet(this,e,t.carryoverConcurrencyCount),__privateSet(this,i,t.intervalCap===Number.POSITIVE_INFINITY||0===t.interval),__privateSet(this,r,t.intervalCap),__privateSet(this,a,t.interval),__privateSet(this,l,new t.queueClass),__privateSet(this,d,t.queueClass),this.concurrency=t.concurrency,this.timeout=t.timeout,__privateSet(this,_,!0===t.throwOnTimeout),__privateSet(this,p,!1===t.autoStart)}get concurrency(){return __privateGet(this,h)}set concurrency(t){if(!("number"==typeof t&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);__privateSet(this,h,t),__privateMethod(this,g,T).call(this)}setPriority(t,e){__privateGet(this,l).setPriority(t,e)}async add(t,e={}){return e.id??(e.id=(__privateWrapper(this,f)._++).toString()),e={timeout:this.timeout,throwOnTimeout:__privateGet(this,_),...e},new Promise((i,r)=>{__privateGet(this,l).enqueue(async()=>{__privateWrapper(this,u)._++;try{e.signal?.throwIfAborted(),__privateWrapper(this,n)._++;let r=t({signal:e.signal});e.timeout&&(r=function(t,e){const{milliseconds:i,fallback:n,message:r,customTimers:a={setTimeout:setTimeout,clearTimeout:clearTimeout}}=e;let s,o;const c=new Promise((c,l)=>{if("number"!=typeof i||1!==Math.sign(i))throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${i}\``);if(e.signal){const{signal:t}=e;t.aborted&&l(Xa(t)),o=()=>{l(Xa(t))},t.addEventListener("abort",o,{once:!0})}if(i===Number.POSITIVE_INFINITY)return void t.then(c,l);const d=new Ja;s=a.setTimeout.call(void 0,()=>{if(n)try{c(n())}catch(e){l(e)}else"function"==typeof t.cancel&&t.cancel(),!1===r?c():r instanceof Error?l(r):(d.message=r??`Promise timed out after ${i} milliseconds`,l(d))},i),(async()=>{try{c(await t)}catch(e){l(e)}})()}).finally(()=>{c.clear(),o&&e.signal&&e.signal.removeEventListener("abort",o)});return c.clear=()=>{a.clearTimeout.call(void 0,s),s=void 0},c}(Promise.resolve(r),{milliseconds:e.timeout})),e.signal&&(r=Promise.race([r,__privateMethod(this,g,A).call(this,e.signal)]));const a=await r;i(a),this.emit("completed",a)}catch(a){if(a instanceof Ja&&!e.throwOnTimeout)return void i();r(a),this.emit("error",a)}finally{__privateMethod(this,g,m).call(this)}},e),this.emit("add"),__privateMethod(this,g,S).call(this)})}async addAll(t,e){return Promise.all(t.map(async t=>this.add(t,e)))}start(){return __privateGet(this,p)?(__privateSet(this,p,!1),__privateMethod(this,g,T).call(this),this):this}pause(){__privateSet(this,p,!0)}clear(){__privateSet(this,l,new(__privateGet(this,d)))}async onEmpty(){0!==__privateGet(this,l).size&&await __privateMethod(this,g,M).call(this,"empty")}async onSizeLessThan(t){__privateGet(this,l).size__privateGet(this,l).size{__privateMethod(this,g,w).call(this)},i)),!0;__privateSet(this,n,__privateGet(this,e)?__privateGet(this,u):0)}return!1},S=function(){if(0===__privateGet(this,l).size)return __privateGet(this,o)&&clearInterval(__privateGet(this,o)),__privateSet(this,o,void 0),this.emit("empty"),0===__privateGet(this,u)&&this.emit("idle"),!1;if(!__privateGet(this,p)){const t=!__privateGet(this,g,y);if(__privateGet(this,g,v)&&__privateGet(this,g,b)){const e=__privateGet(this,l).dequeue();return!!e&&(this.emit("active"),e(),t&&__privateMethod(this,g,C).call(this),!0)}}return!1},C=function(){__privateGet(this,i)||void 0!==__privateGet(this,o)||(__privateSet(this,o,setInterval(()=>{__privateMethod(this,g,E).call(this)},__privateGet(this,a))),__privateSet(this,s,Date.now()+__privateGet(this,a)))},E=function(){0===__privateGet(this,n)&&0===__privateGet(this,u)&&__privateGet(this,o)&&(clearInterval(__privateGet(this,o)),__privateSet(this,o,void 0)),__privateSet(this,n,__privateGet(this,e)?__privateGet(this,u):0),__privateMethod(this,g,T).call(this)},T=function(){for(;__privateMethod(this,g,S).call(this););},A=async function(t){return new Promise((e,i)=>{t.addEventListener("abort",()=>{i(t.reason)},{once:!0})})},M=async function(t,e){return new Promise(i=>{const n=()=>{e&&!e()||(this.off(t,n),i())};this.on(t,n)})};const is={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y"},ns=/[$%&<>|¢£¤¥©®฿†•…₠₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵₸₹₺₽₿℠™∂∆∑∞♥元円﷼ﻵﻷﻹﻻ''""„]/g;function rs(t){if(!t)throw new Error("Text is required to generate a slug");return t.toString().normalize().replace(ns,"").split("").map(t=>is[t]||t).join("").replace(/[^A-Za-z0-9\s]/g," ").trim().replace(/\s+/g,"-")}function as(){return void 0!==window.localStorage}class ss{constructor(t,e={}){__publicField(this,"logContext"),__publicField(this,"logLevel"),__publicField(this,"context"),__publicField(this,"options"),__publicField(this,"url"),this.context=t,this.url=new URL(e.url||window.location.href),this.logContext=this.getLogContext(),this.logLevel=this.getLogLevel(),this.options=e}createSubLogger(t){return new ss(this.context+"/"+t,this.options)}debug(...t){this.logLevel>0||this.logContext&&this.logContext!==this.context||console.debug(`[${this.context}]`,...t)}log(...t){this.logLevel>1||this.logContext&&this.logContext!==this.context||console.log(`[${this.context}]`,...t)}info(...t){this.logLevel>2||this.logContext&&this.logContext!==this.context||console.info(`[${this.context}]`,...t)}warn(...t){this.logLevel>3||this.logContext&&this.logContext!==this.context||console.warn(`[${this.context}]`,...t)}error(...t){this.logLevel>4||this.logContext&&this.logContext!==this.context||console.error(`[${this.context}]`,...t)}async alert(t,e,...i){if(!(this.logLevel>5||this.logContext&&this.logContext!==this.context||this.options.alert?.excludedHosts?.includes(this.url.host)))if(this.options.alert?.endpoint){console.error(`[${this.context}]`,t,e,...i);try{await fetch(this.options.alert.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cause:e?.cause,message:e?.message,name:e?.name,stack:e?.stack,userAgent:navigator.userAgent,userMessage:t})})}catch(n){console.error("failed to alert app developer",{err:n})}}else console.error('you must set an alert endpoint, i.e. { alertEndpoint: "/alert" }')}getLogLevel(){let t=this.url.searchParams.get("_log");if(as()&&(t||(t=window.localStorage.getItem("_log")),t))try{window.localStorage.setItem("_log",t)}catch(e){console.log(e)}return t?parseInt(t,10):2}getLogContext(){let t=this.url.searchParams.get("_logc");if(as()&&(t||(t=window.localStorage.getItem("_logc")),t))try{window.localStorage.setItem("_logc",t)}catch(e){console.log(e)}return t||void 0}}const os=new ss("abra",{alert:{endpoint:"/apps/abra/alert?_abraignore=1",excludedHosts:["shopwigdealer.com","abra-development-1.myshopify.com"]}});class cs{constructor(t,{ignoreRegex:e,includeRegex:i}){__privateAdd(this,P),__privateAdd(this,O),__publicField(this,"ignoreRegex"),__publicField(this,"includeRegex"),__publicField(this,"isUnsupported"),__publicField(this,"onRequest"),__privateSet(this,P,os.createSubLogger("network")),__privateSet(this,O,void 0),this.ignoreRegex=e,this.includeRegex=i,this.isUnsupported=void 0===window.PerformanceObserver,this.onRequest=t,this.callback=this.callback.bind(this)}observe(){if(!this.isUnsupported)return __privateGet(this,O)&&this.disconnect(),__privateSet(this,O,new PerformanceObserver(this.callback)),__privateGet(this,O).observe({entryTypes:["resource"]});__privateGet(this,P).warn("PerformanceObserver isn't supported by this browser. Features may be affected")}disconnect(){__privateGet(this,O)&&(__privateGet(this,O).disconnect(),__privateSet(this,O,void 0))}callback(t){let e=!1;for(const i of t.getEntries())if(!this.ignoreRegex.test(i.name)&&this.includeRegex.test(i.name)){__privateGet(this,P).debug("detected request that changes DOM",i.name),e=!0;break}e&&window.requestAnimationFrame(()=>this.onRequest())}}function ls(t,e){if(t)if("string"==typeof t)window.addEventListener(t,e),document.addEventListener(t,e);else{if("object"!=typeof t)throw new TypeError("onevent must be a string or an object");Object.values(t).forEach(t=>{window.addEventListener(t,e),document.addEventListener(t,e)})}}function ds(t,e){if(t)if("string"==typeof t)window.removeEventListener(t,e),document.removeEventListener(t,e);else{if("object"!=typeof t)throw new TypeError("onevent must be a string or an object");Object.values(t).forEach(t=>{window.removeEventListener(t,e),document.removeEventListener(t,e)})}}P=new WeakMap,O=new WeakMap;class us{constructor(t,e){__privateAdd(this,I),__publicField(this,"applied"),__publicField(this,"elements"),__privateAdd(this,G),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"type"),__privateSet(this,G,os.createSubLogger(`blocks/add-class/${t}`)),this.applied=!1,this.config=e,this.elements=[],this.id=t,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}apply(){__privateGet(this,G).debug("applying",{id:this.id,config:this.config}),this.config.onevent&&ls(this.config.onevent,this.apply),__privateMethod(this,I,k).call(this);for(const t of this.elements)t.setAttribute("data-abra-selector",this.config.selector),t.setAttribute("data-abra-block",this.config.type),t.classList.add(this.config.value);return this.applied=!0,!0}undo(){__privateGet(this,G).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.elements)t.removeAttribute("data-abra-selector"),t.removeAttribute("data-abra-block"),t.classList.remove(this.config.value);return this.elements=[],this.applied=!1,!0}}G=new WeakMap,I=new WeakSet,k=function(){return this.elements=Array.from(document.querySelectorAll(this.config.selector)),this},__publicField(us,"validate",t=>{const e=[];return t.selector||e.push("'selector' is required"),t.value||e.push("'value' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});const hs=/{{(.*?)}}/g;function ps(t,e){const i=t.split("\n"),n=[],r=[];for(let a=0;a0)&&(t=function(t,e,i){const n=[],r=t.length;let a=0;for(;a0&&!1===i[s-1]){const e=t.indexOf("{% endif %}");-1!==e&&(i.pop(),a=e+11-1)}else(s>0&&i.every(t=>t)||0===s)&&n.push(r);a++}return n.join("")}(t,e,i)),t.includes("{{")&&(t=function(t,e){const i=t.match(hs);if(!i)return t;for(const n of i){const i=fs(n.slice(2,-2).trim(),e);t=t.replace(n,i?i.toString():"")}return t}(t,e)),t}function fs(t,e){let i;return i=t.includes(".")?t.split(".").reduce((t,e)=>t&&"object"==typeof t&&e in t?t[e]:"",e):e[t],void 0===i?"":i}function gs(t){if("string"==typeof t){if(ys(t))return parseFloat(t);if("true"===t)return!0;if("false"===t)return!1}return t}function vs(t,e){const i=t.split(" ");if(1===i.length){const t=ms(i[0])?bs(i[0]):gs(fs(i[0],e));return Boolean(t)}const n=ms(i[0])?bs(i[0]):gs(fs(i[0],e)),r=i[1],a=ms(i[2])?bs(i[2]):gs(fs(i[2],e));switch(r){case"==":return Ss(n,a);case"!=":return!Ss(n,a);case">":return Boolean(n&&a&&n>a);case">=":return Boolean(n&&a&&n>=a);case"<":return Boolean(n&&a&&nt.expiresAt>e),Es.some(e=>e.url===t)}function As(t,e=3e5){const i=Date.now();Es=Es.filter(e=>e.expiresAt>i&&e.url!==t),Es.push({url:t,expiresAt:i+e})}async function Ms(t,{logger:e}={}){if(window.Abra?.cache.products.has(t)){const i=window.Abra?.cache.products.get(t);return e?.debug(`loading product ${t} from cache`,i),i}e?.debug(`loading product ${t} from network`);let i=window.Shopify.routes.root;i&&!i.endsWith("/")&&(i+="/");const n=i+`products/${t}.js?_abraignore=1`;if(Ts(n))return void e?.debug(`skipping blacklisted URL ${n}`);const r=await fetch(n,{headers:{"Content-Type":"application/json"}});if(!r.ok)return As(n),void e?.error(`product failed to fetch: status=${r.status}`,{handle:t});const a=await r.json();return a?.id?window.Abra.cacheProduct(t,a):(As(n),void e?.error("product not found on Shopify",{handle:t}))}function Ps(t){return"string"==typeof t?parseInt(t,10):t}async function Os({logger:t}={}){let e=window.Shopify.routes.root;e&&!e.endsWith("/")&&(e+="/");const i=await fetch(e+"cart.js?_abraignore=1",{headers:{"Content-Type":"application/json"}});return i.ok?await i.json()??null:(t?.error(`cart failed to fetch: status=${i.status}`),null)}const Gs=(t=window.location.href)=>{const{searchParams:e}=new URL(t),i=e.get("modal-variant"),n=e.get("variant");return i??n??void 0};function Is(t,e,i){if(t){const e=t.closest("[data-variant-id]")?.getAttribute("data-variant-id");if(e)return e}const n=Gs(),r=function(t=window.location.href){const e=t.split("/");if(-1===e.indexOf("products"))return;const i=e.indexOf("products")+1;return e[i].split("?")[0]}();if(n&&(!i||i===r))return n;if(e&&t){const i=t.closest(e)?.querySelector('[href*="/products/"]')?.href;if(i)return Gs(i)}return n}function ks(t,e){return t.find(t=>t.id==e)}var Ls,xs,qs=9e15,Fs=1e9,Ds="0123456789abcdef",Vs="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Rs="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",$s={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-qs,maxE:qs,crypto:!1},Ns=!0,Bs="[DecimalError] ",Hs=Bs+"Invalid argument: ",Ws=Bs+"Precision limit exceeded",zs=Bs+"crypto unavailable",Us="[object Decimal]",Zs=Math.floor,js=Math.pow,Qs=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Js=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ks=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ys=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Xs=1e7,to=Vs.length-1,eo=Rs.length-1,io={toStringTag:Us};function no(t){var e,i,n,r=t.length-1,a="",s=t[0];if(r>0){for(a+=s,e=1;ei)throw Error(Hs+t)}function ao(t,e,i,n){var r,a,s,o;for(a=t[0];a>=10;a/=10)--e;return--e<0?(e+=7,r=0):(r=Math.ceil((e+1)/7),e%=7),a=js(10,7-e),o=t[r]%a|0,null==n?e<3?(0==e?o=o/100|0:1==e&&(o=o/10|0),s=i<4&&99999==o||i>3&&49999==o||5e4==o||0==o):s=(i<4&&o+1==a||i>3&&o+1==a/2)&&(t[r+1]/a/100|0)==js(10,e-2)-1||(o==a/2||0==o)&&!(t[r+1]/a/100|0):e<4?(0==e?o=o/1e3|0:1==e?o=o/100|0:2==e&&(o=o/10|0),s=(n||i<4)&&9999==o||!n&&i>3&&4999==o):s=((n||i<4)&&o+1==a||!n&&i>3&&o+1==a/2)&&(t[r+1]/a/1e3|0)==js(10,e-3)-1,s}function so(t,e,i){for(var n,r,a=[0],s=0,o=t.length;si-1&&(void 0===a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/i|0,a[n]%=i)}return a.reverse()}io.absoluteValue=io.abs=function(){var t=new this.constructor(this);return t.s<0&&(t.s=1),co(t)},io.ceil=function(){return co(new this.constructor(this),this.e+1,2)},io.clampedTo=io.clamp=function(t,e){var i=this,n=i.constructor;if(t=new n(t),e=new n(e),!t.s||!e.s)return new n(NaN);if(t.gt(e))throw Error(Hs+e);return i.cmp(t)<0?t:i.cmp(e)>0?e:new n(i)},io.comparedTo=io.cmp=function(t){var e,i,n,r,a=this,s=a.d,o=(t=new a.constructor(t)).d,c=a.s,l=t.s;if(!s||!o)return c&&l?c!==l?c:s===o?0:!s^c<0?1:-1:NaN;if(!s[0]||!o[0])return s[0]?c:o[0]?-l:0;if(c!==l)return c;if(a.e!==t.e)return a.e>t.e^c<0?1:-1;for(e=0,i=(n=s.length)<(r=o.length)?n:r;eo[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1},io.cosine=io.cos=function(){var t,e,i=this,n=i.constructor;return i.d?i.d[0]?(e=n.rounding,n.precision=(t=n.precision)+Math.max(i.e,i.sd())+7,n.rounding=1,i=function(t,e){var i,n,r;if(e.isZero())return e;(n=e.d.length)<32?r=(1/Eo(4,i=Math.ceil(n/3))).toString():(i=16,r="2.3283064365386962890625e-10"),t.precision+=i,e=Co(t,1,e.times(r),new t(1));for(var a=i;a--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return t.precision-=i,e}(n,To(n,i)),n.precision=t,n.rounding=e,co(2==xs||3==xs?i.neg():i,t,e,!0)):new n(1):new n(NaN)},io.cubeRoot=io.cbrt=function(){var t,e,i,n,r,a,s,o,c,l,d=this,u=d.constructor;if(!d.isFinite()||d.isZero())return new u(d);for(Ns=!1,(a=d.s*js(d.s*d,1/3))&&Math.abs(a)!=1/0?n=new u(a.toString()):(i=no(d.d),(a=((t=d.e)-i.length+1)%3)&&(i+=1==a||-2==a?"0":"00"),a=js(i,1/3),t=Zs((t+1)/3)-(t%3==(t<0?-1:2)),(n=new u(i=a==1/0?"5e"+t:(i=a.toExponential()).slice(0,i.indexOf("e")+1)+t)).s=d.s),s=(t=u.precision)+3;;)if(l=(c=(o=n).times(o).times(o)).plus(d),n=oo(l.plus(d).times(o),l.plus(c),s+2,1),no(o.d).slice(0,s)===(i=no(n.d)).slice(0,s)){if("9999"!=(i=i.slice(s-3,s+1))&&(r||"4999"!=i)){+i&&(+i.slice(1)||"5"!=i.charAt(0))||(co(n,t+1,1),e=!n.times(n).times(n).eq(d));break}if(!r&&(co(o,t+1,0),o.times(o).times(o).eq(d))){n=o;break}s+=4,r=1}return Ns=!0,co(n,t,u.rounding,e)},io.decimalPlaces=io.dp=function(){var t,e=this.d,i=NaN;if(e){if(i=7*((t=e.length-1)-Zs(this.e/7)),t=e[t])for(;t%10==0;t/=10)i--;i<0&&(i=0)}return i},io.dividedBy=io.div=function(t){return oo(this,new this.constructor(t))},io.dividedToIntegerBy=io.divToInt=function(t){var e=this.constructor;return co(oo(this,new e(t),0,1,1),e.precision,e.rounding)},io.equals=io.eq=function(t){return 0===this.cmp(t)},io.floor=function(){return co(new this.constructor(this),this.e+1,3)},io.greaterThan=io.gt=function(t){return this.cmp(t)>0},io.greaterThanOrEqualTo=io.gte=function(t){var e=this.cmp(t);return 1==e||0===e},io.hyperbolicCosine=io.cosh=function(){var t,e,i,n,r,a=this,s=a.constructor,o=new s(1);if(!a.isFinite())return new s(a.s?1/0:NaN);if(a.isZero())return o;n=s.rounding,s.precision=(i=s.precision)+Math.max(a.e,a.sd())+4,s.rounding=1,(r=a.d.length)<32?e=(1/Eo(4,t=Math.ceil(r/3))).toString():(t=16,e="2.3283064365386962890625e-10"),a=Co(s,1,a.times(e),new s(1),!0);for(var c,l=t,d=new s(8);l--;)c=a.times(a),a=o.minus(c.times(d.minus(c.times(d))));return co(a,s.precision=i,s.rounding=n,!0)},io.hyperbolicSine=io.sinh=function(){var t,e,i,n,r=this,a=r.constructor;if(!r.isFinite()||r.isZero())return new a(r);if(i=a.rounding,a.precision=(e=a.precision)+Math.max(r.e,r.sd())+4,a.rounding=1,(n=r.d.length)<3)r=Co(a,2,r,r,!0);else{t=1.4*Math.sqrt(n),r=Co(a,2,r=r.times(1/Eo(5,t=t>16?16:0|t)),r,!0);for(var s,o=new a(5),c=new a(16),l=new a(20);t--;)s=r.times(r),r=r.times(o.plus(s.times(c.times(s).plus(l))))}return a.precision=e,a.rounding=i,co(r,e,i,!0)},io.hyperbolicTangent=io.tanh=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.rounding,n.precision=(t=n.precision)+7,n.rounding=1,oo(i.sinh(),i.cosh(),n.precision=t,n.rounding=e)):new n(i.s)},io.inverseCosine=io.acos=function(){var t=this,e=t.constructor,i=t.abs().cmp(1),n=e.precision,r=e.rounding;return-1!==i?0===i?t.isNeg()?po(e,n,r):new e(0):new e(NaN):t.isZero()?po(e,n+4,r).times(.5):(e.precision=n+6,e.rounding=1,t=new e(1).minus(t).div(t.plus(1)).sqrt().atan(),e.precision=n,e.rounding=r,t.times(2))},io.inverseHyperbolicCosine=io.acosh=function(){var t,e,i=this,n=i.constructor;return i.lte(1)?new n(i.eq(1)?0:NaN):i.isFinite()?(e=n.rounding,n.precision=(t=n.precision)+Math.max(Math.abs(i.e),i.sd())+4,n.rounding=1,Ns=!1,i=i.times(i).minus(1).sqrt().plus(i),Ns=!0,n.precision=t,n.rounding=e,i.ln()):new n(i)},io.inverseHyperbolicSine=io.asinh=function(){var t,e,i=this,n=i.constructor;return!i.isFinite()||i.isZero()?new n(i):(e=n.rounding,n.precision=(t=n.precision)+2*Math.max(Math.abs(i.e),i.sd())+6,n.rounding=1,Ns=!1,i=i.times(i).plus(1).sqrt().plus(i),Ns=!0,n.precision=t,n.rounding=e,i.ln())},io.inverseHyperbolicTangent=io.atanh=function(){var t,e,i,n,r=this,a=r.constructor;return r.isFinite()?r.e>=0?new a(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(t=a.precision,e=a.rounding,n=r.sd(),Math.max(n,t)<2*-r.e-1?co(new a(r),t,e,!0):(a.precision=i=n-r.e,r=oo(r.plus(1),new a(1).minus(r),i+t,1),a.precision=t+4,a.rounding=1,r=r.ln(),a.precision=t,a.rounding=e,r.times(.5))):new a(NaN)},io.inverseSine=io.asin=function(){var t,e,i,n,r=this,a=r.constructor;return r.isZero()?new a(r):(e=r.abs().cmp(1),i=a.precision,n=a.rounding,-1!==e?0===e?((t=po(a,i+4,n).times(.5)).s=r.s,t):new a(NaN):(a.precision=i+6,a.rounding=1,r=r.div(new a(1).minus(r.times(r)).sqrt().plus(1)).atan(),a.precision=i,a.rounding=n,r.times(2)))},io.inverseTangent=io.atan=function(){var t,e,i,n,r,a,s,o,c,l=this,d=l.constructor,u=d.precision,h=d.rounding;if(l.isFinite()){if(l.isZero())return new d(l);if(l.abs().eq(1)&&u+4<=eo)return(s=po(d,u+4,h).times(.25)).s=l.s,s}else{if(!l.s)return new d(NaN);if(u+4<=eo)return(s=po(d,u+4,h).times(.5)).s=l.s,s}for(d.precision=o=u+10,d.rounding=1,t=i=Math.min(28,o/7+2|0);t;--t)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(Ns=!1,e=Math.ceil(o/7),n=1,c=l.times(l),s=new d(l),r=l;-1!==t;)if(r=r.times(c),a=s.minus(r.div(n+=2)),r=r.times(c),void 0!==(s=a.plus(r.div(n+=2))).d[e])for(t=e;s.d[t]===a.d[t]&&t--;);return i&&(s=s.times(2<this.d.length-2},io.isNaN=function(){return!this.s},io.isNegative=io.isNeg=function(){return this.s<0},io.isPositive=io.isPos=function(){return this.s>0},io.isZero=function(){return!!this.d&&0===this.d[0]},io.lessThan=io.lt=function(t){return this.cmp(t)<0},io.lessThanOrEqualTo=io.lte=function(t){return this.cmp(t)<1},io.logarithm=io.log=function(t){var e,i,n,r,a,s,o,c,l=this,d=l.constructor,u=d.precision,h=d.rounding;if(null==t)t=new d(10),e=!0;else{if(i=(t=new d(t)).d,t.s<0||!i||!i[0]||t.eq(1))return new d(NaN);e=t.eq(10)}if(i=l.d,l.s<0||!i||!i[0]||l.eq(1))return new d(i&&!i[0]?-1/0:1!=l.s?NaN:i?0:1/0);if(e)if(i.length>1)a=!0;else{for(r=i[0];r%10==0;)r/=10;a=1!==r}if(Ns=!1,s=wo(l,o=u+5),n=e?ho(d,o+10):wo(t,o),ao((c=oo(s,n,o,1)).d,r=u,h))do{if(s=wo(l,o+=10),n=e?ho(d,o+10):wo(t,o),c=oo(s,n,o,1),!a){+no(c.d).slice(r+1,r+15)+1==1e14&&(c=co(c,u+1,0));break}}while(ao(c.d,r+=10,h));return Ns=!0,co(c,u,h)},io.minus=io.sub=function(t){var e,i,n,r,a,s,o,c,l,d,u,h,p=this,_=p.constructor;if(t=new _(t),!p.d||!t.d)return p.s&&t.s?p.d?t.s=-t.s:t=new _(t.d||p.s!==t.s?p:NaN):t=new _(NaN),t;if(p.s!=t.s)return t.s=-t.s,p.plus(t);if(h=t.d,o=_.precision,c=_.rounding,!(l=p.d)[0]||!h[0]){if(h[0])t.s=-t.s;else{if(!l[0])return new _(3===c?-0:0);t=new _(p)}return Ns?co(t,o,c):t}if(i=Zs(t.e/7),d=Zs(p.e/7),l=l.slice(),a=d-i){for((u=a<0)?(e=l,a=-a,s=h.length):(e=h,i=d,s=l.length),a>(n=Math.max(Math.ceil(o/7),s)+2)&&(a=n,e.length=1),e.reverse(),n=a;n--;)e.push(0);e.reverse()}else{for((u=(n=l.length)<(s=h.length))&&(s=n),n=0;n0;--n)l[s++]=0;for(n=h.length;n>a;){if(l[--n](s=(a=Math.ceil(o/7))>s?a+1:s+1)&&(r=s,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for((s=l.length)-(r=d.length)<0&&(r=s,i=d,d=l,l=i),e=0;r;)e=(l[--r]=l[r]+d[r]+e)/Xs|0,l[r]%=Xs;for(e&&(l.unshift(e),++n),s=l.length;0==l[--s];)l.pop();return t.d=l,t.e=uo(l,n),Ns?co(t,o,c):t},io.precision=io.sd=function(t){var e,i=this;if(void 0!==t&&t!==!!t&&1!==t&&0!==t)throw Error(Hs+t);return i.d?(e=_o(i.d),t&&i.e+1>e&&(e=i.e+1)):e=NaN,e},io.round=function(){var t=this,e=t.constructor;return co(new e(t),t.e+1,e.rounding)},io.sine=io.sin=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.rounding,n.precision=(t=n.precision)+Math.max(i.e,i.sd())+7,n.rounding=1,i=function(t,e){var i,n=e.d.length;if(n<3)return e.isZero()?e:Co(t,2,e,e);i=1.4*Math.sqrt(n),e=Co(t,2,e=e.times(1/Eo(5,i=i>16?16:0|i)),e);for(var r,a=new t(5),s=new t(16),o=new t(20);i--;)r=e.times(e),e=e.times(a.plus(r.times(s.times(r).minus(o))));return e}(n,To(n,i)),n.precision=t,n.rounding=e,co(xs>2?i.neg():i,t,e,!0)):new n(NaN)},io.squareRoot=io.sqrt=function(){var t,e,i,n,r,a,s=this,o=s.d,c=s.e,l=s.s,d=s.constructor;if(1!==l||!o||!o[0])return new d(!l||l<0&&(!o||o[0])?NaN:o?s:1/0);for(Ns=!1,0==(l=Math.sqrt(+s))||l==1/0?(((e=no(o)).length+c)%2==0&&(e+="0"),l=Math.sqrt(e),c=Zs((c+1)/2)-(c<0||c%2),n=new d(e=l==1/0?"5e"+c:(e=l.toExponential()).slice(0,e.indexOf("e")+1)+c)):n=new d(l.toString()),i=(c=d.precision)+3;;)if(n=(a=n).plus(oo(s,a,i+2,1)).times(.5),no(a.d).slice(0,i)===(e=no(n.d)).slice(0,i)){if("9999"!=(e=e.slice(i-3,i+1))&&(r||"4999"!=e)){+e&&(+e.slice(1)||"5"!=e.charAt(0))||(co(n,c+1,1),t=!n.times(n).eq(s));break}if(!r&&(co(a,c+1,0),a.times(a).eq(s))){n=a;break}i+=4,r=1}return Ns=!0,co(n,c,d.rounding,t)},io.tangent=io.tan=function(){var t,e,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.rounding,n.precision=(t=n.precision)+10,n.rounding=1,(i=i.sin()).s=1,i=oo(i,new n(1).minus(i.times(i)).sqrt(),t+10,0),n.precision=t,n.rounding=e,co(2==xs||4==xs?i.neg():i,t,e,!0)):new n(NaN)},io.times=io.mul=function(t){var e,i,n,r,a,s,o,c,l,d=this,u=d.constructor,h=d.d,p=(t=new u(t)).d;if(t.s*=d.s,!(h&&h[0]&&p&&p[0]))return new u(!t.s||h&&!h[0]&&!p||p&&!p[0]&&!h?NaN:h&&p?0*t.s:t.s/0);for(i=Zs(d.e/7)+Zs(t.e/7),(c=h.length)<(l=p.length)&&(a=h,h=p,p=a,s=c,c=l,l=s),a=[],n=s=c+l;n--;)a.push(0);for(n=l;--n>=0;){for(e=0,r=c+n;r>n;)o=a[r]+p[n]*h[r-n-1]+e,a[r--]=o%Xs|0,e=o/Xs|0;a[r]=(a[r]+e)%Xs|0}for(;!a[--s];)a.pop();return e?++i:a.shift(),t.d=a,t.e=uo(a,i),Ns?co(t,u.precision,u.rounding):t},io.toBinary=function(t,e){return Ao(this,2,t,e)},io.toDecimalPlaces=io.toDP=function(t,e){var i=this,n=i.constructor;return i=new n(i),void 0===t?i:(ro(t,0,Fs),void 0===e?e=n.rounding:ro(e,0,8),co(i,t+i.e+1,e))},io.toExponential=function(t,e){var i,n=this,r=n.constructor;return void 0===t?i=lo(n,!0):(ro(t,0,Fs),void 0===e?e=r.rounding:ro(e,0,8),i=lo(n=co(new r(n),t+1,e),!0,t+1)),n.isNeg()&&!n.isZero()?"-"+i:i},io.toFixed=function(t,e){var i,n,r=this,a=r.constructor;return void 0===t?i=lo(r):(ro(t,0,Fs),void 0===e?e=a.rounding:ro(e,0,8),i=lo(n=co(new a(r),t+r.e+1,e),!1,t+n.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i},io.toFraction=function(t){var e,i,n,r,a,s,o,c,l,d,u,h,p=this,_=p.d,f=p.constructor;if(!_)return new f(p);if(l=i=new f(1),n=c=new f(0),a=(e=new f(n)).e=_o(_)-p.e-1,e.d[0]=js(10,(s=a%7)<0?7+s:s),null==t)t=a>0?e:l;else{if(!(o=new f(t)).isInt()||o.lt(l))throw Error(Hs+o);t=o.gt(e)?a>0?e:l:o}for(Ns=!1,o=new f(no(_)),d=f.precision,f.precision=a=7*_.length*2;u=oo(o,e,0,1,1),1!=(r=i.plus(u.times(n))).cmp(t);)i=n,n=r,l=c.plus(u.times(r=l)),c=r,e=o.minus(u.times(r=e)),o=r;return r=oo(t.minus(i),n,0,1,1),c=c.plus(r.times(l)),i=i.plus(r.times(n)),c.s=l.s=p.s,h=oo(l,n,a,1).minus(p).abs().cmp(oo(c,i,a,1).minus(p).abs())<1?[l,n]:[c,i],f.precision=d,Ns=!0,h},io.toHexadecimal=io.toHex=function(t,e){return Ao(this,16,t,e)},io.toNearest=function(t,e){var i=this,n=i.constructor;if(i=new n(i),null==t){if(!i.d)return i;t=new n(1),e=n.rounding}else{if(t=new n(t),void 0===e?e=n.rounding:ro(e,0,8),!i.d)return t.s?i:t;if(!t.d)return t.s&&(t.s=i.s),t}return t.d[0]?(Ns=!1,i=oo(i,t,0,e,1).times(t),Ns=!0,co(i)):(t.s=i.s,i=t),i},io.toNumber=function(){return+this},io.toOctal=function(t,e){return Ao(this,8,t,e)},io.toPower=io.pow=function(t){var e,i,n,r,a,s,o=this,c=o.constructor,l=+(t=new c(t));if(!(o.d&&t.d&&o.d[0]&&t.d[0]))return new c(js(+o,l));if((o=new c(o)).eq(1))return o;if(n=c.precision,a=c.rounding,t.eq(1))return co(o,n,a);if((e=Zs(t.e/7))>=t.d.length-1&&(i=l<0?-l:l)<=9007199254740991)return r=go(c,o,i,n),t.s<0?new c(1).div(r):co(r,n,a);if((s=o.s)<0){if(ec.maxE+1||e0?s/0:0):(Ns=!1,c.rounding=o.s=1,i=Math.min(12,(e+"").length),(r=mo(t.times(wo(o,n+i)),n)).d&&ao((r=co(r,n+5,1)).d,n,a)&&+no((r=co(mo(t.times(wo(o,(e=n+10)+i)),e),e+5,1)).d).slice(n+1,n+15)+1==1e14&&(r=co(r,n+1,0)),r.s=s,Ns=!0,c.rounding=a,co(r,n,a))},io.toPrecision=function(t,e){var i,n=this,r=n.constructor;return void 0===t?i=lo(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(ro(t,1,Fs),void 0===e?e=r.rounding:ro(e,0,8),i=lo(n=co(new r(n),t,e),t<=n.e||n.e<=r.toExpNeg,t)),n.isNeg()&&!n.isZero()?"-"+i:i},io.toSignificantDigits=io.toSD=function(t,e){var i=this.constructor;return void 0===t?(t=i.precision,e=i.rounding):(ro(t,1,Fs),void 0===e?e=i.rounding:ro(e,0,8)),co(new i(this),t,e)},io.toString=function(){var t=this,e=t.constructor,i=lo(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()&&!t.isZero()?"-"+i:i},io.truncated=io.trunc=function(){return co(new this.constructor(this),this.e+1,1)},io.valueOf=io.toJSON=function(){var t=this,e=t.constructor,i=lo(t,t.e<=e.toExpNeg||t.e>=e.toExpPos);return t.isNeg()?"-"+i:i};var oo=function(){function t(t,e,i){var n,r=0,a=t.length;for(t=t.slice();a--;)t[a]=(n=t[a]*e+r)%i|0,r=n/i|0;return r&&t.unshift(r),t}function e(t,e,i,n){var r,a;if(i!=n)a=i>n?1:-1;else for(r=a=0;re[r]?1:-1;break}return a}function i(t,e,i,n){for(var r=0;i--;)t[i]-=r,t[i]=(r=t[i]1;)t.shift()}return function(n,r,a,s,o,c){var l,d,u,h,p,_,f,g,v,b,m,w,y,S,C,E,T,A,M,P,O=n.constructor,G=n.s==r.s?1:-1,I=n.d,k=r.d;if(!(I&&I[0]&&k&&k[0]))return new O(n.s&&r.s&&(I?!k||I[0]!=k[0]:k)?I&&0==I[0]||!k?0*G:G/0:NaN);for(c?(p=1,d=n.e-r.e):(c=Xs,d=Zs(n.e/(p=7))-Zs(r.e/p)),M=k.length,T=I.length,b=(v=new O(G)).d=[],u=0;k[u]==(I[u]||0);u++);if(k[u]>(I[u]||0)&&d--,null==a?(S=a=O.precision,s=O.rounding):S=o?a+(n.e-r.e)+1:a,S<0)b.push(1),_=!0;else{if(S=S/p+2|0,u=0,1==M){for(h=0,k=k[0],S++;(u1&&(k=t(k,h,c),I=t(I,h,c),M=k.length,T=I.length),E=M,w=(m=I.slice(0,M)).length;w=c/2&&++A;do{h=0,(l=e(k,m,M,w))<0?(y=m[0],M!=w&&(y=y*c+(m[1]||0)),(h=y/A|0)>1?(h>=c&&(h=c-1),1==(l=e(f=t(k,h,c),m,g=f.length,w=m.length))&&(h--,i(f,M=10;h/=10)u++;v.e=u+d*p-1,co(v,o?a+v.e+1:a,s,_)}return v}}();function co(t,e,i,n){var r,a,s,o,c,l,d,u,h,p=t.constructor;t:if(null!=e){if(!(u=t.d))return t;for(r=1,o=u[0];o>=10;o/=10)r++;if((a=e-r)<0)a+=7,c=(d=u[h=0])/js(10,r-(s=e)-1)%10|0;else if((h=Math.ceil((a+1)/7))>=(o=u.length)){if(!n)break t;for(;o++<=h;)u.push(0);d=c=0,r=1,s=(a%=7)-7+1}else{for(d=o=u[h],r=1;o>=10;o/=10)r++;c=(s=(a%=7)-7+r)<0?0:d/js(10,r-s-1)%10|0}if(n=n||e<0||void 0!==u[h+1]||(s<0?d:d%js(10,r-s-1)),l=i<4?(c||n)&&(0==i||i==(t.s<0?3:2)):c>5||5==c&&(4==i||n||6==i&&(a>0?s>0?d/js(10,r-s):0:u[h-1])%10&1||i==(t.s<0?8:7)),e<1||!u[0])return u.length=0,l?(u[0]=js(10,(7-(e-=t.e+1)%7)%7),t.e=-e||0):u[0]=t.e=0,t;if(0==a?(u.length=h,o=1,h--):(u.length=h+1,o=js(10,7-a),u[h]=s>0?(d/js(10,r-s)%js(10,s)|0)*o:0),l)for(;;){if(0==h){for(a=1,s=u[0];s>=10;s/=10)a++;for(s=u[0]+=o,o=1;s>=10;s/=10)o++;a!=o&&(t.e++,u[0]==Xs&&(u[0]=1));break}if(u[h]+=o,u[h]!=Xs)break;u[h--]=0,o=1}for(a=u.length;0===u[--a];)u.pop()}return Ns&&(t.e>p.maxE?(t.d=null,t.e=NaN):t.e0?a=a.charAt(0)+"."+a.slice(1)+fo(n):s>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(t.e<0?"e":"e+")+t.e):r<0?(a="0."+fo(-r-1)+a,i&&(n=i-s)>0&&(a+=fo(n))):r>=s?(a+=fo(r+1-s),i&&(n=i-r-1)>0&&(a=a+"."+fo(n))):((n=r+1)0&&(r+1===s&&(a+="."),a+=fo(n))),a}function uo(t,e){var i=t[0];for(e*=7;i>=10;i/=10)e++;return e}function ho(t,e,i){if(e>to)throw Ns=!0,i&&(t.precision=i),Error(Ws);return co(new t(Vs),e,1,!0)}function po(t,e,i){if(e>eo)throw Error(Ws);return co(new t(Rs),e,i,!0)}function _o(t){var e=t.length-1,i=7*e+1;if(e=t[e]){for(;e%10==0;e/=10)i--;for(e=t[0];e>=10;e/=10)i++}return i}function fo(t){for(var e="";t--;)e+="0";return e}function go(t,e,i,n){var r,a=new t(1),s=Math.ceil(n/7+4);for(Ns=!1;;){if(i%2&&Mo((a=a.times(e)).d,s)&&(r=!0),0===(i=Zs(i/2))){i=a.d.length-1,r&&0===a.d[i]&&++a.d[i];break}Mo((e=e.times(e)).d,s)}return Ns=!0,a}function vo(t){return 1&t.d[t.d.length-1]}function bo(t,e,i){for(var n,r,a=new t(e[0]),s=0;++s17)return new h(t.d?t.d[0]?t.s<0?0:1/0:1:t.s?t.s<0?0:t:NaN);for(null==e?(Ns=!1,c=_):c=e,o=new h(.03125);t.e>-2;)t=t.times(o),u+=5;for(c+=n=Math.log(js(2,u))/Math.LN10*2+5|0,i=a=s=new h(1),h.precision=c;;){if(a=co(a.times(t),c,1),i=i.times(++d),no((o=s.plus(oo(a,i,c,1))).d).slice(0,c)===no(s.d).slice(0,c)){for(r=u;r--;)s=co(s.times(s),c,1);if(null!=e)return h.precision=_,s;if(!(l<3&&ao(s.d,c-n,p,l)))return co(s,h.precision=_,p,Ns=!0);h.precision=c+=10,i=a=o=new h(1),d=0,l++}s=o}}function wo(t,e){var i,n,r,a,s,o,c,l,d,u,h,p=1,_=t,f=_.d,g=_.constructor,v=g.rounding,b=g.precision;if(_.s<0||!f||!f[0]||!_.e&&1==f[0]&&1==f.length)return new g(f&&!f[0]?-1/0:1!=_.s?NaN:f?0:_);if(null==e?(Ns=!1,d=b):d=e,g.precision=d+=10,n=(i=no(f)).charAt(0),!(Math.abs(a=_.e)<15e14))return l=ho(g,d+2,b).times(a+""),_=wo(new g(n+"."+i.slice(1)),d-10).plus(l),g.precision=b,null==e?co(_,b,v,Ns=!0):_;for(;n<7&&1!=n||1==n&&i.charAt(1)>3;)n=(i=no((_=_.times(t)).d)).charAt(0),p++;for(a=_.e,n>1?(_=new g("0."+i),a++):_=new g(n+"."+i.slice(1)),u=_,c=s=_=oo(_.minus(1),_.plus(1),d,1),h=co(_.times(_),d,1),r=3;;){if(s=co(s.times(h),d,1),no((l=c.plus(oo(s,new g(r),d,1))).d).slice(0,d)===no(c.d).slice(0,d)){if(c=c.times(2),0!==a&&(c=c.plus(ho(g,d+2,b).times(a+""))),c=oo(c,new g(p),d,1),null!=e)return g.precision=b,c;if(!ao(c.d,d-10,v,o))return co(c,g.precision=b,v,Ns=!0);g.precision=d+=10,l=s=_=oo(u.minus(1),u.plus(1),d,1),h=co(_.times(_),d,1),r=o=1}c=l,r+=2}}function yo(t){return String(t.s*t.s/0)}function So(t,e){var i,n,r;for((i=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(i<0&&(i=n),i+=+e.slice(n+1),e=e.substring(0,n)):i<0&&(i=e.length),n=0;48===e.charCodeAt(n);n++);for(r=e.length;48===e.charCodeAt(r-1);--r);if(e=e.slice(n,r)){if(r-=n,t.e=i=i-n-1,t.d=[],n=(i+1)%7,i<0&&(n+=7),nt.constructor.maxE?(t.d=null,t.e=NaN):t.e=0&&(d=d.replace(".",""),(h=new p(1)).e=d.length-s,h.d=so(lo(h),10,r),h.e=h.d.length),a=c=(u=so(d,10,r)).length;0==u[--c];)u.pop();if(u[0]){if(s<0?a--:((t=new p(t)).d=u,t.e=a,u=(t=oo(t,h,i,n,0,r)).d,a=t.e,l=Ls),s=u[i],o=r/2,l=l||void 0!==u[i+1],l=n<4?(void 0!==s||l)&&(0===n||n===(t.s<0?3:2)):s>o||s===o&&(4===n||l||6===n&&1&u[i-1]||n===(t.s<0?8:7)),u.length=i,l)for(;++u[--i]>r-1;)u[i]=0,i||(++a,u.unshift(1));for(c=u.length;!u[c-1];--c);for(s=0,d="";s1)if(16==e||8==e){for(s=16==e?4:3,--c;c%s;c++)d+="0";for(c=(u=so(d,r,e)).length;!u[c-1];--c);for(s=1,d="1.";sc)for(a-=c;a--;)d+="0";else ae)return t.length=e,!0}function Po(t){return new this(t).abs()}function Oo(t){return new this(t).acos()}function Go(t){return new this(t).acosh()}function Io(t,e){return new this(t).plus(e)}function ko(t){return new this(t).asin()}function Lo(t){return new this(t).asinh()}function xo(t){return new this(t).atan()}function qo(t){return new this(t).atanh()}function Fo(t,e){t=new this(t),e=new this(e);var i,n=this.precision,r=this.rounding,a=n+4;return t.s&&e.s?t.d||e.d?!e.d||t.isZero()?(i=e.s<0?po(this,n,r):new this(0)).s=t.s:!t.d||e.isZero()?(i=po(this,a,1).times(.5)).s=t.s:e.s<0?(this.precision=a,this.rounding=1,i=this.atan(oo(t,e,a,1)),e=po(this,a,1),this.precision=n,this.rounding=r,i=t.s<0?i.minus(e):i.plus(e)):i=this.atan(oo(t,e,a,1)):(i=po(this,a,1).times(e.s>0?.25:.75)).s=t.s:i=new this(NaN),i}function Do(t){return new this(t).cbrt()}function Vo(t){return co(t=new this(t),t.e+1,2)}function Ro(t,e,i){return new this(t).clamp(e,i)}function $o(t){if(!t||"object"!=typeof t)throw Error(Bs+"Object expected");var e,i,n,r=!0===t.defaults,a=["precision",1,Fs,"rounding",0,8,"toExpNeg",-qs,0,"toExpPos",0,qs,"maxE",0,qs,"minE",-qs,0,"modulo",0,9];for(e=0;e=a[e+1]&&n<=a[e+2]))throw Error(Hs+i+": "+n);this[i]=n}if(i="crypto",r&&(this[i]=$s[i]),void 0!==(n=t[i])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(Hs+i+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(zs);this[i]=!0}else this[i]=!1}return this}function No(t){return new this(t).cos()}function Bo(t){return new this(t).cosh()}function Ho(t,e){return new this(t).div(e)}function Wo(t){return new this(t).exp()}function zo(t){return co(t=new this(t),t.e+1,3)}function Uo(){var t,e,i=new this(0);for(Ns=!1,t=0;t=429e7?e[a]=crypto.getRandomValues(new Uint32Array(1))[0]:o[a++]=r%1e7;else{if(!crypto.randomBytes)throw Error(zs);for(e=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(e,a):(o.push(r%1e7),a+=4);a=n/4}else for(;a=10;r/=10)n++;n<7&&(i-=7-n)}return s.e=i,s.d=o,s}function rc(t){return co(t=new this(t),t.e+1,this.rounding)}function ac(t){return(t=new this(t)).d?t.d[0]?t.s:0*t.s:t.s||NaN}function sc(t){return new this(t).sin()}function oc(t){return new this(t).sinh()}function cc(t){return new this(t).sqrt()}function lc(t,e){return new this(t).sub(e)}function dc(){var t=0,e=arguments,i=new this(e[t]);for(Ns=!1;i.s&&++ta.maxE?(r.e=NaN,r.d=null):t.e=10;i/=10)e++;return void(Ns?e>a.maxE?(r.e=NaN,r.d=null):e-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ys.test(e))return So(t,e)}else if("Infinity"===e||"NaN"===e)return+e||(t.s=NaN),t.e=NaN,t.d=null,t;if(Js.test(e))i=16,e=e.toLowerCase();else if(Qs.test(e))i=2;else{if(!Ks.test(e))throw Error(Hs+e);i=8}for((a=e.search(/p/i))>0?(c=+e.slice(a+1),e=e.substring(2,a)):e=e.slice(2),a=e.indexOf("."),n=t.constructor,(s=a>=0)&&(a=(o=(e=e.replace(".","")).length)-a,r=go(n,new n(i),a,2*a)),a=d=(l=so(e,i,Xs)).length-1;0===l[a];--a)l.pop();return a<0?new n(0*t.s):(t.e=uo(l,d),t.d=l,Ns=!1,s&&(t=oo(t,r,4*o)),c&&(t=t.times(Math.abs(c)<54?js(2,c):_c.pow(2,c))),Ns=!0,t)}(r,t);if("bigint"===n)return t<0?(t=-t,r.s=-1):r.s=1,So(r,t.toString());throw Error(Hs+t)}if(a.prototype=io,a.ROUND_UP=0,a.ROUND_DOWN=1,a.ROUND_CEIL=2,a.ROUND_FLOOR=3,a.ROUND_HALF_UP=4,a.ROUND_HALF_DOWN=5,a.ROUND_HALF_EVEN=6,a.ROUND_HALF_CEIL=7,a.ROUND_HALF_FLOOR=8,a.EUCLID=9,a.config=a.set=$o,a.clone=t,a.isDecimal=Zo,a.abs=Po,a.acos=Oo,a.acosh=Go,a.add=Io,a.asin=ko,a.asinh=Lo,a.atan=xo,a.atanh=qo,a.atan2=Fo,a.cbrt=Do,a.ceil=Vo,a.clamp=Ro,a.cos=No,a.cosh=Bo,a.div=Ho,a.exp=Wo,a.floor=zo,a.hypot=Uo,a.ln=jo,a.log=Qo,a.log10=Ko,a.log2=Jo,a.max=Yo,a.min=Xo,a.mod=tc,a.mul=ec,a.pow=ic,a.random=nc,a.round=rc,a.sign=ac,a.sin=sc,a.sinh=oc,a.sqrt=cc,a.sub=lc,a.sum=dc,a.tan=uc,a.tanh=hc,a.trunc=pc,void 0===e&&(e={}),e&&!0!==e.defaults)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],i=0;i`${fc(100*t).toFixed(0)}%`;class Ec{constructor(t,e){__publicField(this,"compareAt"),__publicField(this,"original"),__publicField(this,"originalTotalDiscount"),__publicField(this,"currentProductDiscount"),__publicField(this,"currentOrderDiscounts"),__publicField(this,"discounted"),this.compareAt=e??t,this.original=t,this.originalTotalDiscount=0,this.discounted=!1,this.currentProductDiscount={amount:0,code:""},this.currentOrderDiscounts=new Map}get compareAtTotalDiscount(){return this.compareAt-this.original+this.originalTotalDiscount}get final(){const t=this.original-this.originalTotalDiscount;return t>=0?t:0}isHigherProductDiscount(t,e){const i=this.currentProductDiscount.amount{this.discount(t.amount,t.code,!0)})}discount(t,e,i=!1){if(i&&this.currentOrderDiscounts.set(e,{amount:t,code:e}),i||this.isHigherProductDiscount(t,e))return this.discounted=!0,this.originalTotalDiscount+t>this.original?(this.originalTotalDiscount=this.original,this):(this.originalTotalDiscount+=t,this)}merge(t){return this.compareAt+=t.compareAt,this.original+=t.original,this.originalTotalDiscount+=t.originalTotalDiscount,this}divide(t){return this.compareAt=this.compareAt/t,this.original=this.original/t,this.originalTotalDiscount=this.originalTotalDiscount/t,this}clone(){const t=new Ec(0,0);return t.compareAt=this.compareAt,t.original=this.original,t.originalTotalDiscount=this.originalTotalDiscount,t.discounted=this.discounted,t}toJSON(){return{compareAt:this.compareAt,compareAtTotalDiscount:fc(this.compareAtTotalDiscount),final:vc(this.final),original:this.original,originalTotalDiscount:fc(this.originalTotalDiscount)}}}var Tc=(t=>(t.ProductDiscount="ProductDiscount",t.GWPDiscount="GWPDiscount",t.OrderDiscount="OrderDiscount",t.FreeShippingDiscount="FreeShippingDiscount",t))(Tc||{});const Ac=os.createSubLogger("money");function Mc(t){if("number"==typeof t)return t;const e=t.replaceAll(",","").split(".");if(!e[0]||!e[1])return void Ac.debug("decimal couldn't be parsed",{decimal:t,parts:e});const i=e[1].length;return parseInt(e[0],10)*Math.pow(10,i)+parseInt(e[1],10)}function Pc(){return void 0!==window.Shopify&&window.Shopify?.currency?.active||window.Abra.currency}function Oc(t){const e=Pc();if(e!==t.currencyCode){const i=window.Shopify?.currency?.rate?parseFloat(window.Shopify?.currency?.rate):1;return{cents:t.cents*i,amount:(parseFloat(t.amount)*i).toString(),currencyCode:e}}return{cents:t.cents,amount:t.amount,currencyCode:t.currencyCode}}function Gc(t){if(t.prerequisite?.minimumRequirement?.greaterThanOrEqualToSubtotal&&(t.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal=Oc(t.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal)),"DiscountAmount"===t.discountValue?.type&&t.discountValue.discountAmount&&(t.discountValue.discountAmount=Oc(t.discountValue.discountAmount)),"TieredDiscount"===t.discountValue?.type&&t.discountValue.tiers)for(let e=0;e{"DiscountPercentage"!==t.value.type&&(t.value.discountAmount=Oc(t.value.discountAmount))}),"DiscountMultiValueProduct"===t.discountValue?.type&&"productDiscounts"in t.discountValue&&"variantDiscounts"in t.discountValue&&(t.discountValue.productDiscounts.forEach(t=>{"DiscountPercentage"!==t.value.type&&(t.value.discountAmount=Oc(t.value.discountAmount))}),t.discountValue.variantDiscounts.forEach(t=>{"DiscountPercentage"!==t.value.type&&(t.value.discountAmount=Oc(t.value.discountAmount))})),"MultiEffectTiers"===t.discountValue?.type&&t.discountValue.tiers)for(let e=0;ee?t:e}class xc{constructor(t){__publicField(this,"codes"),__publicField(this,"displayName"),__publicField(this,"handle"),__publicField(this,"id"),__publicField(this,"name"),__publicField(this,"price"),__publicField(this,"sellingPlanPrice"),__publicField(this,"title"),__publicField(this,"unitPrice"),__publicField(this,"unitPriceMeasurement"),__publicField(this,"originalVariant"),__publicField(this,"sellingPlans"),this.codes=new Set,this.displayName=t.displayName,this.handle=t.handle,this.id=t.id,this.name=t.name,this.price=t.price?new Ec(t.price,t.compareAtPrice):void 0,this.unitPrice=t.unitPrice?new Ec(t.unitPrice):void 0,this.unitPriceMeasurement=t.unitPriceMeasurement,this.sellingPlans=t.sellingPlans,this.title=t.title,this.originalVariant=t;const e=new URLSearchParams(window.location.search).get("selling_plan");if(e){const t=this.sellingPlans.find(t=>t.id==e);t&&t.price&&(this.sellingPlanPrice=new Ec(t.price,t.compareAtPrice))}else{const t=this.sellingPlans?.[0];t&&t.price&&(this.sellingPlanPrice=new Ec(t.price,t.compareAtPrice))}}discount(t,e,i=!1){if(this.price?.discount(t,e,i),this.price&&this.unitPrice){const n=Sc(this.unitPrice,t,1,this.unitPriceMeasurement?.quantityValue);this.unitPrice.discount(n,e,i)}return this}clone(){return new xc(this.originalVariant)}}class qc{constructor(t,e){__publicField(this,"discounted"),__publicField(this,"codes"),__publicField(this,"discounts"),__publicField(this,"handle"),__publicField(this,"id"),__publicField(this,"key"),__publicField(this,"linePrice"),__publicField(this,"properties"),__publicField(this,"quantity"),__publicField(this,"type"),__publicField(this,"unitPrice"),__publicField(this,"unitPriceMeasurement"),__publicField(this,"url"),__publicField(this,"variantId"),__publicField(this,"isGiftCard"),__publicField(this,"variant"),__publicField(this,"originalItem"),__publicField(this,"shopifyFinalLinePrice"),this.codes=new Set,this.discounted=!1,this.discounts=t.discounts,this.handle=t.handle,this.id=t.id,this.key=t.key,this.linePrice=new Ec(t.original_line_price,e?.price?.compareAt?e.price.compareAt*t.quantity:t.original_line_price),this.properties=t.properties,this.quantity=t.quantity,this.type=t.selling_plan_allocation?.selling_plan?"SELLING_PLAN":"ONE_TIME_PURCHASE",this.unitPrice=e?.unitPrice,this.unitPriceMeasurement=t.unit_price_measurement?{quantityValue:t.unit_price_measurement.quantity_value?parseFloat(t.unit_price_measurement.quantity_value):void 0,referenceUnit:t.unit_price_measurement.reference_unit,referenceValue:t.unit_price_measurement.reference_value}:void 0,this.url=t.url,this.variantId=t.variant_id.toString(),this.isGiftCard=t.gift_card,this.originalItem=t,this.variant=e,this.shopifyFinalLinePrice=t.final_line_price}get code(){return Array.from(this.codes).join(" | ")}get price(){return this.linePrice.clone().divide(this.quantity)}discount(t,e,i=!1){if(0===t)return this;if(this.linePrice.discount(t,e,i),this.discounted=!0,this.unitPrice){const n=Sc(this.unitPrice,t,this.quantity,this.unitPriceMeasurement?.quantityValue);this.unitPrice.discount(n,e,i)}return this}isOneTimePurchase(){return"ONE_TIME_PURCHASE"===this.type}isSellingPlan(){return"SELLING_PLAN"===this.type}getAbraProperty(){if(!this.properties)return null;const t=this.properties.__abra;try{return t?JSON.parse(t):null}catch(e){return console.error(e),null}}clone(){return new qc(this.originalItem,this.variant?.clone()??null)}toJSON(){return{code:this.code,codes:Array.from(this.codes),discounted:this.discounted,handle:this.handle,id:this.id,key:this.key,linePrice:this.linePrice.toJSON(),properties:this.properties,price:this.price.toJSON(),quantity:this.quantity,type:this.type,unitPrice:this.unitPrice?.toJSON(),unitPriceMeasurement:this.unitPriceMeasurement,url:this.url,variantId:this.variantId}}}async function Fc(t,e={}){const i=await async function(t,e,{logger:i}={}){if(window.Abra?.cache.products.has(t)){const n=window.Abra?.cache.products.get(t);return i?.debug(`loading variant ${t} from cache`,n),ks(n.variants,e)}i?.debug(`loading variant ${t} from network`);let n=window.Shopify.routes.root;n&&!n.endsWith("/")&&(n+="/");const r=n+`products/${t}.js?_abraignore=1`;if(Ts(r))return void i?.debug(`skipping blacklisted URL ${r}`);const a=await fetch(r,{headers:{"Content-Type":"application/json"}});if(!a.ok)return As(r),void i?.error(`variant failed to fetch: status=${a.status}`);const s=await a.json();return s?.id?ks(window.Abra.cacheProduct(t,s).variants,e):(As(r),void i?.error("variant not found on Shopify"))}(t.handle,t.variant_id,e);return new qc(t,i?new xc(i):null)}class Dc{constructor(t){__publicField(this,"discounted"),__publicField(this,"handle"),__publicField(this,"id"),__publicField(this,"featuredImage"),__publicField(this,"title"),__publicField(this,"variants"),this.discounted=!1,this.handle=t.handle,this.id=t.id,this.featuredImage=t.featuredImage,this.title=t.title,this.variants=t.variants.map(t=>new xc(t))}get minFinalPrice(){return this.variants.map(t=>t.price?.final).filter(t=>void 0!==t).sort((t,e)=>t-e)[0]}get url(){return`/products/${this.handle}`}discount(t,e,i,n=!1){const r=this.getFirstOrSelectedVariant(i);return r&&(r.discount(t,e,n),this.discounted=!0),this}doesPriceVary(){const t=this.variants[0];return this.variants.some(e=>t.price?.original!==e.price?.original)}findVariant(t){return ks(this.variants,t)}getFirstOrSelectedVariant(t){return t&&this.findVariant(t)||this.variants[0]}getPrice(t){const e=this.getFirstOrSelectedVariant(t);return e?.price}getSellingPlanPrice(t,e){const i=this.getFirstOrSelectedVariant(t);if(!i.sellingPlanPrice){if(!e){const t=new URLSearchParams(window.location.search);e=t.get("selling_plan")}let t=i.sellingPlans.find(t=>t.id==e);t||(t=i.sellingPlans[0]),t&&t.price&&t.compareAtPrice&&(i.sellingPlanPrice=new Ec(t.price,t.compareAtPrice))}return i.sellingPlanPrice}getUnitPrice(t){const e=this.getFirstOrSelectedVariant(t);return e?.unitPrice}getUnitPriceMeasurement(t){const e=this.getFirstOrSelectedVariant(t);return e?.unitPriceMeasurement}clone(){const t={handle:this.handle,id:this.id,featuredImage:this.featuredImage,title:this.title,variants:this.variants.map(t=>({compareAtPrice:t.price?.compareAt,displayName:t.displayName,handle:t.handle,id:t.id,name:t.name,price:t.price?.original,sellingPlans:t.sellingPlans,title:t.title,unitPrice:t.unitPrice?.original,unitPriceMeasurement:t.unitPriceMeasurement}))},e=new Dc(t);return e.discounted=this.discounted,e}}L=new WeakMap;let Vc=class t{constructor(t,e,i=!1){__privateAdd(this,L),__publicField(this,"attributes"),__publicField(this,"codes"),__publicField(this,"currency"),__publicField(this,"itemCount"),__publicField(this,"items"),__publicField(this,"token"),__publicField(this,"discountCodes"),__publicField(this,"cartLevelDiscountApplications"),__publicField(this,"cartTotalDiscountByCode"),__publicField(this,"originalCart"),__publicField(this,"isFakeCart"),__privateSet(this,L,os.createSubLogger("cart")),__privateGet(this,L).debug("Cart value",t),this.attributes=t.attributes,this.discountCodes=t.discount_codes,this.codes=new Set,this.currency=t.currency,this.itemCount=t.item_count,this.items=e,this.token=t.token,this.cartLevelDiscountApplications=t.cart_level_discount_applications,this.originalCart=t,this.cartTotalDiscountByCode=new Map;for(const n of e)for(const t of n.discounts){const e=this.cartTotalDiscountByCode.get(t.title);this.cartTotalDiscountByCode.set(t.title,{totalAllocatedAmount:e?e.totalAllocatedAmount+t.amount:t.amount,title:t.title})}this.isFakeCart=i}get code(){return Array.from(this.codes).join(" | ")}get subtotalPrice(){const t=new Ec(0,0);for(const e of this.items)t.merge(e.linePrice);return t}async addItem(t){if(this.isFakeCart)return this.fakeAddItem(t);const e={variant:t.variant,quantity:t.quantity};e.properties=t.properties;const i=await async function({variant:t,quantity:e,properties:i},{logger:n}={}){let r=window.Shopify.routes.root;r&&!r.endsWith("/")&&(r+="/");const a=r+"cart/add.js?_abraignore=1",s=r+`cart/${t}/add.js?_abraignore=1`;if(Ts(s))return null;const o=function(t){if(!t)return null;if(t.includes("gid://shopify/ProductVariant/")){const e=t.split("/");return e[e.length-1]}return t}(t);if(!o)return n?.error("Failed to extract numeric variant ID:",{variant:t}),null;const c=Ps(o),l=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:c,quantity:e,...i?{properties:{...i.discount?{__abra:JSON.stringify({discount:i.discount})}:{},...i.hideQuantity?{__hide_quantity:i.hideQuantity}:{}}}:{}})});if(l.ok)return await l.json()??null;{let t;As(s);try{t=await l.json()}catch(d){t=await l.text()}return n?.error(`add to cart failed: status=${l.status}`,{errorDetails:t}),null}}(e,{logger:__privateGet(this,L)});if(i){t.properties?.discount&&(i.properties={...t.properties?.discount?{__abra:JSON.stringify({discount:t.properties.discount})}:{},...t.properties?.hideQuantity?{__hide_quantity:t.properties.hideQuantity}:{}},i.quantity=t.quantity,i.original_line_price=i.original_price*t.quantity);const e=await Fc(i);return this.items.push(e),this.itemCount+=t.quantity,e}return null}async fakeAddItem(t){if(!t.handle)return null;const e=await Ms(t.handle);if(!e)return null;const i=Rc(new Dc(e),t.variant,t.quantity);return this.items.push(i),this.itemCount+=1,i}async removeItemByKey(t){if(this.isFakeCart){const e=this.items.find(e=>e.key===t);return e&&(this.items=this.items.filter(e=>e.key!==t),this.itemCount-=e.quantity),!0}const e=this.items.find(e=>e.key===t),i=await async function(t,{logger:e}={}){let i=window.Shopify.routes.root;i&&!i.endsWith("/")&&(i+="/");const n=i+"cart/change.js?_abraignore=1",r=i+`cart/${t}/change.js?_abraignore=1`;if(Ts(r))return!1;const a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:t,quantity:0})});return a.ok||(As(r),e?.error(`remove from cart failed: status=${a.status}`)),a.ok}(t);return i&&e&&(this.items=this.items.filter(e=>e.key!==t),this.itemCount-=e.quantity),i}async changeQuantityByKey(t,e){if(this.isFakeCart){const i=this.items.find(e=>e.key===t||e.variantId===t);if(i){const t=e-i.quantity;i.quantity=e,this.itemCount+=t}}return await async function(t,e,{logger:i}={}){let n=window.Shopify.routes.root;n&&!n.endsWith("/")&&(n+="/");const r=n+"cart/change.js?_abraignore=1",a=n+`cart/${t}/change.js?_abraignore=1`;if(Ts(a))return!1;const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:t,quantity:e})});return s.ok||(As(a),i?.error(`Change cart line item quantity failed: status=${s.status}`)),s.ok}(t,e)}async updateItemProperties(t,e){if(this.isFakeCart)return null;const i=this.items.find(e=>e.key===t);if(!i)return __privateGet(this,L).warn("Item not found in cart",{key:t}),null;const n=i.getAbraProperty(),r=i.properties?i.properties.__hide_quantity:void 0;if(!(e.discount&&n?.discount!==e.discount||void 0!==e.hideQuantity&&r!==e.hideQuantity))return __privateGet(this,L).debug("Properties already set, skipping update",{key:t,properties:e}),null;const a={};e.discount&&(a.__abra=JSON.stringify({discount:e.discount})),void 0!==e.hideQuantity&&(a.__hide_quantity=e.hideQuantity);const s=await async function(t,e,{logger:i}={}){let n=window.Shopify.routes.root;n&&!n.endsWith("/")&&(n+="/");const r=n+"cart/change.js?_abraignore=1",a=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:t,properties:e})});return a.ok?(await a.json()).items.find(e=>e.key===t)??null:(i?.error(`Update cart line item properties failed: status=${a.status}`),null)}(t,a,{logger:__privateGet(this,L)});if(s){const e=this.items.findIndex(e=>e.key===t);if(-1!==e){const t=await Fc(s,{logger:__privateGet(this,L)});this.items[e]=t}}return s}clone({forceFakeCart:e=!1}){return new t(this.originalCart,this.items.map(t=>t.clone()),e)}dispatchEvent(t){this.isFakeCart||window.dispatchEvent(new CustomEvent(t))}};const Rc=(t,e,i=1)=>{const n=t.getPrice(e);if(!n)throw new Error(`Variant ${e} not found in product ${t.handle}`);const r={id:Date.now(),properties:null,quantity:i,variant_id:parseInt(e,10),key:`simulated-${e}`,title:t.title,price:n.original,original_price:n.original,discounted_price:0,line_price:n.original*i,original_line_price:n.original*i,total_discount:0,discounts:[],sku:"",grams:0,vendor:"",taxable:!0,product_id:Date.now(),product_has_only_default_variant:!0,gift_card:!1,final_price:n.original,final_line_price:n.original*i,url:`https://shop.myshopify.com/products/${t.handle}`,handle:t.handle,requires_shipping:!1,product_type:"",product_title:t.title,product_description:null,variant_title:null,variant_options:["Default Title"],options_with_values:[{name:"Title",value:"Default Title"}],line_level_discount_allocations:[],line_level_total_discount:0,quantity_rule:{min:1,max:null,increment:1}};return new qc(r,t.getFirstOrSelectedVariant(e))};async function $c(t){const e=t.items.filter(t=>!t.remote),i=await Promise.all(e.map(t=>Fc(t)));return new Vc(t,i)}const Nc=[{discountClass:"ORDER",combinesWithProperty:"orderDiscounts"},{discountClass:"PRODUCT",combinesWithProperty:"productDiscounts"},{discountClass:"SHIPPING",combinesWithProperty:"shippingDiscounts"}],Bc=(t,e)=>Nc.every(({discountClass:i,combinesWithProperty:n})=>!(t.discountClass===i&&!e.combinesWith[n]||e.discountClass===i&&!t.combinesWith[n])),Hc=async(t,e,i,n)=>{const r=t.clone({forceFakeCart:!0});if(i&&n){const t=Rc(i,n,1);r.items.push(t),r.itemCount+=1}for(const a of e)await a.applyToCart(r);return r},Wc=t=>t.subtotalPrice.originalTotalDiscount,zc=async(t,e,i,n,r)=>{if(e.every(e=>Bc(t,e)))return!0;const a=((t,e)=>e.filter(e=>Bc(t,e)))(t,e),s=((t,e)=>e.filter(e=>!Bc(t,e)))(t,e),[o,c,l]=await Promise.all([Hc(i,[t],n,r),Hc(i,a,n,r),Hc(i,s,n,r)]);return((t,e,i,n)=>{const r=e+i;return"PRODUCT"===t.discountClass?r>=n:r>n})(t,Wc(o),Wc(c),Wc(l))};async function Uc(t,e,i,n,r){if(t.length<=1)return!0;const a=t.filter(t=>t.title!==e.title);if(!n)return zc(e,a,i,n,r);const s=await(async(t,e,i,n,r)=>{if("PRODUCT"!==t.discountClass||!t.combinesWith.productDiscounts||!i)return[];const a=e.filter(t=>"PRODUCT"===t.discountClass&&t.combinesWith.productDiscounts),s=await Promise.all(a.map(t=>(async(t,e,i,n)=>{const r=t.clone();return await n.applyToProduct(r,e,i),r.discounted})(i,r,n,t)));return a.filter((t,e)=>s[e])})(e,a,n,i,r);if(0===s.length)return zc(e,a,i,n,r);const o=(await Hc(i,[e],n,r)).items.filter(t=>t.discounted),c=await(async(t,e,i,n,r)=>(await Promise.all(t.map(async t=>{const a=(await Hc(e,[t],i,n)).items.filter(t=>t.discounted&&r.some(e=>e.key===t.key)),s=a.reduce((t,e)=>t+e.linePrice.originalTotalDiscount,0);return{discount:t,conflictingItems:a,value:s}}))).reduce((t,e)=>e.value>t.value?e:t,{discount:t[0],conflictingItems:[],value:0}))(s,i,n,r??null,o),l=o.reduce((t,e)=>c.conflictingItems.find(t=>t.key===e.key)?t+e.linePrice.originalTotalDiscount:t,0);if(l"ORDER"===t.discountClass&&i.cartTotalDiscountByCode.has(t.title)),a=await Hc(i,e,n,r),s=Wc(a);if(l0&&(e+=`,${r.join(",")}`)}const n=document.querySelectorAll('form[action="/cart"]'),r=document.createElement("input");r.type="hidden",r.name="discount",r.value=e,n.forEach(t=>{const i=t.querySelector('input[name="discount"]');i?i.value=e:t.appendChild(r)})}function Kc(t,e,i){return t.items.find(t=>t.discounts.some(t=>t.title===e)&&0===t.shopifyFinalLinePrice&&(!i||t.variantId===i))||t.items.find(t=>function(t,e,i){return i?t.variantId==i&&t.getAbraProperty()?.discount===e:t.getAbraProperty()?.discount===e}(t,e,i))}function Yc(){return function(t=window.location.href){const e=t.split("/");if(-1===e.indexOf("collections"))return;const i=e.indexOf("collections")+1;return e[i].split("?")[0]}()}function Xc(t,e,i){return!(t?.minimumRequirement?.greaterThanOrEqualToQuantity&&en.expiresAt))return n;this.removeTrackedGift(t,e)}removeTrackedGift(t,e){this.ensureInitialized();const i=this.getKey(t,e);this.gifts.delete(i),this.saveToStorage()}getKey(t,e){return`${t}:${e}`}loadFromStorage(){try{const e=localStorage.getItem(t.STORAGE_KEY);if(!e)return new Map;const i=JSON.parse(e),n=Date.now(),r=Object.entries(i).filter(([t,e])=>n<=e.expiresAt);return new Map(r)}catch{return new Map}}saveToStorage(){try{const e=Object.fromEntries(this.gifts.entries());localStorage.setItem(t.STORAGE_KEY,JSON.stringify(e))}catch{}}cleanExpired(){const t=Date.now();for(const[e,i]of this.gifts.entries())t>i.expiresAt&&this.gifts.delete(e);this.gifts.size>0&&this.saveToStorage()}clearAll(){this.gifts.clear(),localStorage.removeItem(t.STORAGE_KEY),this.isInitialized=!1}};__publicField(nl,"STORAGE_KEY","abra:gifts:tracking"),__publicField(nl,"CACHE_TTL",18e5);const rl=new nl,al=class t{constructor(t){__privateAdd(this,D),__privateAdd(this,x),__privateAdd(this,q),__privateAdd(this,F),__publicField(this,"isMultiVariantDiscount"),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"compound"),t=Gc(t),__privateSet(this,F,os.createSubLogger("gift-discount")),__privateSet(this,x,0),__privateSet(this,q,0),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.combinesWith=t.combinesWith,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title,this.isMultiVariantDiscount=this.discountValue?.products?.some(t=>t?.variants?.length>1),this.compound=this.discountValue?.compound??!1}async applyMultiVariantDiscountToCart(t,e,i){const n=this.discountValue?.products.find(t=>t.variants.some(t=>t.id===e));if(n){const i=__privateMethod(this,D,V).call(this,t,e);if(this.isCartEligible(t))if(i)i.discount(i.price.final,this.title),i.codes.add(this.title),t.codes.add(this.title),rl.trackAddedGift(e,i.quantity,this.title);else{const i=await t.addItem({variant:e,handle:n.handle,quantity:1});i&&(i.discount(i.price.final,this.title),i.codes.add(this.title),t.codes.add(this.title),rl.trackAddedGift(e,1,this.title),t.dispatchEvent("abra:cart:changed"),t.dispatchEvent("abra:render"))}}}async applyToCart(e,i=!1){if("Gift"!==this.discountValue?.type)return e;__privateGet(this,F).debug("discounting free gifts",{gifts:this.discountValue.products,cart:e,manuallyTriggered:i});const n=i||1===this.discountValue.products.length&&1===this.discountValue.products[0].variants.length;for(let a=0;a0&&d.quantity===l)d.discount(fc(d.price.final*l),this.title),e.codes.add(this.title),d.codes.add(this.title),rl.trackAddedGift(o,l,this.title);else if(d&&l>0&&d.quantity!==l&&(!h||i))i&&(l=d.quantity+1),await e.changeQuantityByKey(d.variantId,l),d.discount(fc(d.price.final*l),this.title),rl.trackAddedGift(o,l,this.title),e.dispatchEvent("abra:cart:changed");else if(!d&&l>0&&(!u||i)){if(__privateGet(this,x)>t.MAX_ATTEMPTS){__privateGet(this,F).warn("attempted to add gift too many times, refresh and try again");continue}__privateWrapper(this,x)._++;let i=null;try{if(i=await e.addItem({variant:o,handle:s.handle,quantity:1}),!i)break}catch(r){window.Abra.Notification.show({content:"Error: Your free gift isn't available"}),__privateGet(this,F).error(r);continue}__privateSet(this,x,0),e.dispatchEvent("abra:cart:changed"),i&&(i.discount(fc(1*i.price.final),this.title),i.codes.add(this.title),e.codes.add(this.title),window.Abra.cache.giftInCart?.set(i),rl.trackAddedGift(o,1,this.title))}}}return e}async unapplyFromCart(t){return"Gift"!==this.discountValue?.type||this.isCartEligible(t)||__privateMethod(this,D,N).call(this)&&await this.removeGiftFromCart(t),t}async removeGiftFromCart(t){if(!this.discountValue)return t;for(let e=0;ethis.isCartItemEntitled(t))}isCartEligible(t){const{entitledItems:e,entitledQuantity:i,entitledTotal:n}=__privateMethod(this,D,H).call(this,t);return Boolean(e.length&&Xc(this.prerequisite,i,n))}isCartItemEntitled(t){const e=this.discountValue?.products.some(e=>e.variants.some(e=>e.id==t.variantId));return!(e&&!this.discountValue?.countsTowardEligibility)&&(this.entitled?.all||this.entitled?.variants&&this.entitled.variants.includes(t.variantId.toString())||!(!this.entitled?.products||!this.entitled.products.includes(t.handle)))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())}isCartItemEntitledToReceiveDiscount(t){const e=this.discountValue?.products.some(e=>e.variants.some(e=>e.id==t.variantId));return e??!1}isCollectionEntitled(t){return!!this.entitled?.all||!(!this.entitled?.collections||!this.entitled.collections.includes(t))}isProductEntitled(t,e){const i=this.discountValue?.products.some(t=>t.variants.some(t=>t.id==e));return!(i&&!this.discountValue?.countsTowardEligibility)&&el(this,t,e)}isProductPrerequisite(t,e){return this.isProductEntitled(t,e)}isProductEntitledToReceiveDiscount(t,e){const i=this.discountValue?.products.some(t=>t.variants.some(t=>t.id==e));return i??!1}isShownInCart(){return!0}isShownInCartItem(){return!0}isShownInCollection(t){return"product"!==t}isShownInProduct(t){return"product"!==t}};x=new WeakMap,q=new WeakMap,F=new WeakMap,D=new WeakSet,V=function(t,e){return t.items.find(t=>t.discounts.some(t=>t.title===this.title)&&0===t.shopifyFinalLinePrice&&(!e||t.variantId===e))},R=function(t){return t.discounts.some(t=>t.title===this.title)&&0===t.shopifyFinalLinePrice},$=function(t,e){if(rl.getTrackedGift(e,this.title))return t.items.find(t=>{const i=t.variantId===e,n=!__privateMethod(this,D,R).call(this,t);return i&&n})},N=function(){return window.Abra?.schemaConfig?.automaticallyRemoveGiftsFromCart??!0},B=async function(t,e){const i=__privateMethod(this,D,V).call(this,t,e),n=__privateMethod(this,D,$).call(this,t,e),r=i||n;if(!r)return!1;if(__privateGet(this,q)>al.MAX_ATTEMPTS)return __privateGet(this,F).warn("attempted to remove gift too many times, refresh and try again"),!1;__privateWrapper(this,q)._++;const a=Math.max(0,r.quantity-1);__privateGet(this,F).debug("removing gift from cart",{variantId:e,isFormerGift:!!n,currentQuantity:r.quantity,newQuantity:a});try{0===a?await t.removeItemByKey(r.key):await t.changeQuantityByKey(e,a)}catch(s){return __privateGet(this,F).error(s),!1}return __privateSet(this,q,0),window.Abra.cache.giftInCart?.remove(e),rl.removeTrackedGift(e,this.title),t.dispatchEvent("abra:cart:changed"),!0},H=function(t){const e=t.items.filter(t=>this.isCartItemEntitled(t)),{entitledQuantity:i,entitledTotal:n}=e.reduce((t,e)=>__privateMethod(this,D,R).call(this,e)?((this.discountValue?.countsTowardEligibility??!1)&&(t.entitledQuantity+=e.quantity,t.entitledTotal+=e.linePrice.original),t):(t.entitledQuantity+=e.quantity,t.entitledTotal+=e.linePrice.original,t),{entitledQuantity:0,entitledTotal:0});return{entitledQuantity:i,entitledTotal:n,entitledItems:e}},W=function(t){const{entitledItems:e,entitledQuantity:i,entitledTotal:n}=__privateMethod(this,D,H).call(this,t);return e.length&&Xc(this.prerequisite,i,n)?function(t,e,i){let n=0;if(t?.minimumRequirement?.greaterThanOrEqualToQuantity){const i=Ps(t.minimumRequirement.greaterThanOrEqualToQuantity);e>=i&&(n=fc(e/i))}else if(t?.minimumRequirement?.greaterThanOrEqualToSubtotal){const e=Oc(t.minimumRequirement.greaterThanOrEqualToSubtotal).cents;i>=e&&(n=fc(i/e))}return n}(this.prerequisite,i,n):0},z=function(t,e,i,n,r){let a=!1;if("Gift"===this.discountValue?.type){const t=this.discountValue.products;if(t){const e=t[0]?.variants[0];e&&(a=window.Abra.cache.giftManuallyRemoved?.get(e.id))}}const s=!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession&&a;return t?.minimumRequirement?.greaterThanOrEqualToQuantity?__privateMethod(this,D,U).call(this,t.minimumRequirement.greaterThanOrEqualToQuantity,e,n,r,s):t?.minimumRequirement?.greaterThanOrEqualToSubtotal?__privateMethod(this,D,Z).call(this,t.minimumRequirement.greaterThanOrEqualToSubtotal,i,n,r,s):{state:"SUCCESS",progress:void 0}},U=function(t,e,i,n,r){const a=t.toString();if(0===e)return{state:"PROGRESS_ZERO",progress:{percentage:"0",remainder:a,total:a}};if(e0?t-n:0,o=fc(e/t),c=(i?.quantity??0)0&&l<100?d="PROGRESS_OTHER":100===l&&(d=r?"PENDING_SELECTION":"SUCCESS"),{state:d,progress:{percentage:c,remainder:s.toString(),total:a}}}return{state:"SUCCESS",progress:{percentage:"100",remainder:"0",total:a}}},Z=function(t,e,i,n,r){const a=Oc(t),s=kc(a.cents,{returnOnZeroOrNull:"ZERO"});if(0===e)return{state:"PROGRESS_ZERO",progress:{percentage:"0",remainder:s,total:s}};if(e0?a.cents-t:0,o=fc(e/a.cents),c=(i?.quantity??0)0&&l<100?d="PROGRESS_OTHER":100===l&&(d=r?"PENDING_SELECTION":"SUCCESS"),{state:d,progress:{percentage:c,remainder:kc(n,{returnOnZeroOrNull:"ZERO"}),total:s}}}return{state:"SUCCESS",progress:{percentage:"100",remainder:kc(0,{returnOnZeroOrNull:"ZERO"}),total:s}}},__publicField(al,"MAX_ATTEMPTS",3);let sl=al;class ol{constructor(t){__privateAdd(this,j),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),t=Gc(t),__privateSet(this,j,os.createSubLogger("order-discount")),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.combinesWith=t.combinesWith,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title}async applyToCart(t){if(t.codes.has(this.title))return t;const e=t.items.filter(t=>this.isCartItemEntitled(t)),i=e.reduce((t,e)=>t+e.linePrice.original,0);for(let n=0;nthis.isCartItemEntitled(t))}isCartEligible(t){const{itemCount:e,subtotalPrice:i}=t,n=Xc(this.prerequisite,e,i.original);return n||__privateGet(this,j).debug("cart isn't eligible",{itemCount:e,subtotalPrice:i.original,prerequisite:this.prerequisite}),this.isCartEntitled(t)&&n}isCartItemEntitled(t){return!t.isGiftCard&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){return!!this.entitled?.all||!(!this.entitled?.collections||!this.entitled.collections.includes(t))}isProductEntitled(t,e){return el(this,t,e)}isProductEntitledToReceiveDiscount(t,e){return this.isProductEntitled(t,e)}isProductPrerequisite(){return!1}isShownInCart(){return!0}isShownInCartItem(){return!1}isShownInCollection(){return!1}isShownInProduct(t){return"cart"!==t&&"cart-item"!==t&&"product"!==t}}j=new WeakMap;class cl{constructor(t){__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),t=Gc(t),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.combinesWith=t.combinesWith,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title}async applyToCart(t){const e=t.items.filter(t=>this.isCartItemEntitled(t)&&!t.codes.has(this.title));if("DiscountAmount"!==this.discountValue?.type||this.discountValue.appliesOnEachItem)for(let i=0;it+e.linePrice.original,0);for(let n=0;nthis.isCartItemEntitled(t)),{entitledQuantity:i,entitledTotal:n}=e.reduce((t,e)=>(t.entitledQuantity+=e.quantity,t.entitledTotal+=e.linePrice.original,t),{entitledQuantity:0,entitledTotal:0}),{state:r,progress:a}=tl(this.prerequisite,i,n);return{state:r,progress:a}}isCartEntitled(t){return t.items.some(t=>this.isCartItemEntitled(t))}isCartEligible(t){const e=t.items.filter(t=>this.isCartItemEntitled(t)),{entitledQuantity:i,entitledTotal:n}=e.reduce((t,e)=>(t.entitledQuantity+=e.quantity,t.entitledTotal+=e.linePrice.original,t),{entitledQuantity:0,entitledTotal:0});return this.isCartEntitled(t)&&Xc(this.prerequisite,i,n)}isCartItemEntitled(t){return(this.entitled?.all||this.entitled?.variants&&this.entitled.variants.includes(t.variantId.toString())||!(!this.entitled?.products||!this.entitled.products.includes(t.handle)))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){return!!this.entitled?.all||!(!this.entitled?.collections||!this.entitled.collections.includes(t))}isProductEntitled(t,e){return el(this,t,e)}isProductPrerequisite(){return!1}isProductEntitledToReceiveDiscount(t,e){return this.isProductEntitled(t,e)}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}}class ll{constructor(t){__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),t=Gc(t),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.combinesWith=t.combinesWith,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title}async applyToCart(t){return t}async unapplyFromCart(t){return t}async applyToPrice(t){return t}async applyToProduct(t){return t}getCartEligibility(){return{state:"PROGRESS_OTHER",progress:{percentage:"0",remainder:"0",total:"0"}}}isCartEntitled(){return!1}isCartEligible(){return!0}isCartItemEntitled(){return!1}isCartItemEntitledToReceiveDiscount(){return this.isCartItemEntitled()}isCollectionEntitled(){return!0}isProductEntitled(){return!0}isProductPrerequisite(){return!1}isProductEntitledToReceiveDiscount(){return!0}isShownInCart(){return!0}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}}class dl{constructor(t){__privateAdd(this,J),__privateAdd(this,Q),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),t=Gc(t),__privateSet(this,Q,os.createSubLogger("order-discount")),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.combinesWith=t.combinesWith,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title}async applyToCart(t){return t}async unapplyFromCart(t){return t}async applyToPrice(t){return t}async applyToProduct(t){return t}getCartEligibility(t){const{itemCount:e,subtotalPrice:i}=t,{state:n,progress:r}=tl(this.prerequisite,e,i.original);return"SUCCESS"!==n&&__privateGet(this,Q).debug("cart isn't eligible",{itemCount:e,subtotalPrice:i.original,prerequisite:this.prerequisite}),{state:n,progress:r}}isCartEntitled(t){return!1}isCartEligible(t){return!1}isCartItemEntitled(t){return!1}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){const e=this.discountValue?.collections.map(t=>t.handle);return e?.includes(t)??!1}isProductEntitled(t,e){const i=__privateMethod(this,J,K).call(this);return!!(i&&i.length>0&&i.includes(t))}isProductPrerequisite(){return!1}isProductEntitledToReceiveDiscount(t,e){return this.isProductEntitled(t,e)}isShownInCart(){return!1}isShownInCartItem(){return!1}isShownInCollection(){return!0}isShownInProduct(t){return!0}}Q=new WeakMap,J=new WeakSet,K=function(){return this?.discountValue?.collections?.map(t=>t.productHandles).flat()};class ul{constructor(t){__privateAdd(this,tt),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"giftVariantIds"),__privateAdd(this,Y),__privateAdd(this,X),t=Gc(t),__privateSet(this,Y,os.createSubLogger("multi-effect-tiered-discount")),__privateSet(this,X,new Set),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.combinesWith=t.combinesWith,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title,this.giftVariantIds=this.discountValue?.tiers.flatMap(t=>t.discounts.flatMap(t=>t.type===Tc.GWPDiscount?t.value.products.flatMap(t=>t.variants.map(t=>t.id)):[]))??[],this.applyMultiVariantDiscountGiftToCart=this.applyMultiVariantDiscountGiftToCart.bind(this)}async applyToCart(t){if(!this.discountValue)return t;const e=__privateMethod(this,tt,at).call(this,t);for(const i of t.items){if(!this.isCartItemEntitled(i))continue;const t=__privateMethod(this,tt,ot).call(this,i,e);t&&(i.discount(t.amount,this.title),i.codes.add(this.title))}return await __privateMethod(this,tt,ut).call(this,t,e),t}async unapplyFromCart(t){return this.discountValue?(__privateMethod(this,tt,et).call(this)&&await __privateMethod(this,tt,ht).call(this,t),t):t}async applyToPrice(t,e,i,n){if(!__privateMethod(this,tt,it).call(this,e,i)||!n)return t;const r=__privateMethod(this,tt,at).call(this,n??void 0);let a=0;for(const s of r)for(const n of s.discounts)if(n.type===Tc.ProductDiscount)for(const r of n.value){if(!__privateMethod(this,tt,dt).call(this,e,i,r))continue;let n=0;"DiscountPercentage"===r.value.type?n=bc(t.original,r.value.percentage):"DiscountAmount"===r.value.type&&(n=r.value.discountAmount.cents),n>a&&(a=n)}return a>0&&t.discount(a,this.title),t}async applyToProduct(t,e,i){if(!__privateMethod(this,tt,it).call(this,t.handle,e)||!i)return t;const n=__privateMethod(this,tt,at).call(this,i??void 0),{oneTime:r,subscription:a}=__privateMethod(this,tt,lt).call(this,t,e,n);if(r&&t.discount(r.amount,this.title,e),a){const i=t.getFirstOrSelectedVariant(e);i&&i.sellingPlanPrice&&i.sellingPlanPrice.discount(a.amount,this.title)}return t}getCartEligibility(t){if(!this.discountValue||!this.discountValue.tiers.length)return!1;const e=t.items.filter(t=>__privateMethod(this,tt,nt).call(this,t)),i=e.reduce((t,e)=>t+e.quantity,0),n=e.reduce((t,e)=>t+e.linePrice.original,0),r=this.discountValue.tiers,a=r.length;let s=0,o=0,c=0,l=!1,d=null,u=0,h=0,p="0",_="0";for(let v=0;v0||"subtotal"===d&&u>0?Math.min(1,h/u):0:1;const f=Math.min(100,fc(s/a*100+o/a*100)).toString();let g;return g=c===r.length?"SUCCESS":`TIER_${c+1}`,{state:g,progress:{percentage:f,remainder:p,total:_}}}isCartEligible(t){return!!this.discountValue&&__privateMethod(this,tt,at).call(this,t).length>0}isCartEntitled(t){return t.items.some(t=>this.isCartItemEntitled(t))}isCartItemEntitled(t){return __privateMethod(this,tt,rt).call(this,t)||__privateMethod(this,tt,nt).call(this,t)}isCartItemEntitledToReceiveDiscount(t){return __privateMethod(this,tt,rt).call(this,t)}isCollectionEntitled(t){return!!(this.entitled?.all||this.entitled?.collections&&this.entitled.collections.includes(t)||this.discountValue?.entitled?.all||this.discountValue?.entitled?.collections&&this.discountValue.entitled.collections.includes(t))}isProductEntitled(t,e){let i=el(this,t,e);e&&this.giftVariantIds.includes(e)&&(i=!1);const n=__privateMethod(this,tt,it).call(this,t,e);return i||n}isProductEntitledToReceiveDiscount(t,e){return __privateMethod(this,tt,it).call(this,t,e)}isProductPrerequisite(t,e){return el(this,t,e)}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}async applyMultiVariantDiscountGiftToCart(t,e){try{__privateGet(this,X).add(e),setTimeout(()=>{__privateGet(this,X).delete(e)},1e4);const t=window;t.Abra=t.Abra||{},t.Abra.cache=t.Abra.cache||{},t.Abra.cache.recentGiftAdded=t.Abra.cache.recentGiftAdded||new Map,t.Abra.cache.recentGiftAdded.set(e,Date.now())}catch(s){}const i=t.items.find(t=>t.variantId===e);if(!this.isCartEligible(t))return;if(i)return i.discount(i.price.final,this.title),i.codes.add(this.title),void t.codes.add(this.title);let n;this.discountValue?.compound||await __privateMethod(this,tt,pt).call(this,t,e);for(const o of this.discountValue?.tiers??[]){const t=o.discounts.filter(t=>t.type===Tc.GWPDiscount);for(const i of t)i.value.products.some(t=>t.variants.some(t=>t.id===e))&&(n=i)}if(!n)return;const r=n.value.products[0].handle,a=await t.addItem({variant:e,handle:r,quantity:1,properties:{discount:this.title,hideQuantity:!0}});a&&(a.discount(a.price.final,this.title),a.codes.add(this.title),t.codes.add(this.title),window.Abra?.cache?.giftInCart?.set?.(a)),t.dispatchEvent("abra:cart:changed"),t.dispatchEvent("abra:render")}}Y=new WeakMap,X=new WeakMap,tt=new WeakSet,et=function(){return window.Abra?.schemaConfig?.automaticallyRemoveGiftsFromCart??!0},it=function(t,e){if(!this.discountValue)return!1;for(const i of this.discountValue.tiers)for(const n of i.discounts){if(n.type===Tc.ProductDiscount)for(const i of n.value){if(i.entitled?.all)return!0;if(i.entitled?.products&&t&&i.entitled.products.includes(t))return!0;if(i.entitled?.variants&&e&&i.entitled.variants.includes(e.toString()))return!0}if(n.type===Tc.GWPDiscount)for(const i of n.value.products)if(i.handle===t){if(!e)return!0;for(const t of i.variants)if(t.id===e)return!0}}return!1},nt=function(t){return!this.giftVariantIds.includes(t.variantId)&&(this.entitled?.all||this.entitled?.variants&&this.entitled.variants.includes(t.variantId.toString())||!(!this.entitled?.products||!this.entitled.products.includes(t.handle)))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())},rt=function(t){if(!this.discountValue)return!1;for(const e of this.discountValue.tiers)for(const i of e.discounts){if(i.type===Tc.ProductDiscount)for(const e of i.value){if(e.entitled?.all)return this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase();if(e.entitled?.products&&e.entitled.products.includes(t.handle))return this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase();if(e.entitled?.variants&&e.entitled.variants.includes(t.variantId.toString()))return this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase()}if(i.type===Tc.GWPDiscount)for(const e of i.value.products)if(e.variants.length>0&&e.variants[0].id===t.variantId)return!0}return!1},at=function(t){if(!this.discountValue||!t)return[];const e=[];for(const i of this.discountValue.tiers)__privateMethod(this,tt,st).call(this,t,i)&&e.push(i);return e},st=function(t,e){const{minimumRequirement:i}=e.prerequisite??{};if(!i)return!0;const n=t.items.filter(t=>__privateMethod(this,tt,nt).call(this,t)),r=n.reduce((t,e)=>t+e.quantity,0),a=n.reduce((t,e)=>t+e.linePrice.original,0),{greaterThanOrEqualToQuantity:s,greaterThanOrEqualToSubtotal:o}=i;return!(s&&ri&&(i=s,n={amount:s,tier:r,discount:e})}return n},ct=function(t,e){const i=e.entitled;return!!i&&(i.all||i.products&&i.products.includes(t.handle)||!(!i.variants||!i.variants.includes(t.variantId.toString())))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())},lt=function(t,e,i){let n=0,r=0,a=null,s=null;const o=t.handle,c=t?t.getPrice(e)?.original??0:0,l=t?t.getFirstOrSelectedVariant(e)?.sellingPlanPrice?.original??0:0;for(const d of i)for(const t of d.discounts)if(t.type===Tc.ProductDiscount)for(const i of t.value)if(__privateMethod(this,tt,dt).call(this,o,e,i)){if(this.appliesOnOneTimePurchase&&c>0){let e=0;"DiscountPercentage"===i.value.type?e=bc(c,i.value.percentage):"DiscountAmount"===i.value.type&&(e=i.value.discountAmount.cents),e>n&&(n=e,a={amount:e,tier:d,discount:t})}if(this.appliesOnSubscription&&l>0){let e=0;"DiscountPercentage"===i.value.type?e=bc(l,i.value.percentage):"DiscountAmount"===i.value.type&&(e=i.value.discountAmount.cents),e>r&&(r=e,s={amount:e,tier:d,discount:t})}}return{oneTime:a,subscription:s}},dt=function(t,e,i){const n=i.entitled;return!!(n&&(n.all||n.products&&t&&n.products.includes(t)||n.variants&&e&&n.variants.includes(e.toString())))},ut=async function(t,e){if(!this.discountValue?.compound){let i=null,n=[];for(let t=e.length-1;t>=0;t--){const r=e[t],a=r.discounts.filter(t=>t.type===Tc.GWPDiscount).flatMap(t=>t.value.products.flatMap(t=>t.variants.map(t=>t.id)));if(a.length>0){i=r,n=a;break}}const r=n;await __privateMethod(this,tt,ht).call(this,t,...r),e=i?[i]:[]}for(const n of e){const e=n.discounts.filter(t=>t.type===Tc.GWPDiscount).map(t=>({variants:t.value.products.flatMap(t=>t.variants.map(t=>t.id)),handles:t.value.products.flatMap(t=>t.handle)}));if(1!==e.length)continue;if(e[0].variants.length>1)continue;const r=e[0].variants[0],a=t.items.find(t=>t.variantId===r),s=window.Abra?.cache?.giftInCart?.get?.(r),o=!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession;let c=!1;if(!a&&o&&s&&!1!==this.discountValue?.compound&&(c=!0,window.Abra.cache.giftManuallyRemoved?.set(!0,r)),a||c)a&&(a.discount(a.price.final,this.title),a.codes.add(this.title),t.codes.add(this.title));else{try{const i=await t.addItem({variant:r,handle:e[0].handles[0],quantity:1,properties:{discount:this.title,hideQuantity:!0}});if(i){window.Abra?.cache?.giftInCart?.set?.(i);const t=window;t.Abra=t.Abra||{},t.Abra.cache=t.Abra.cache||{},t.Abra.cache.recentGiftAdded=t.Abra.cache.recentGiftAdded||new Map,t.Abra.cache.recentGiftAdded.set(r,Date.now())}}catch(i){__privateGet(this,Y).error(i)}t.dispatchEvent("abra:cart:changed")}}},ht=async function(t,...e){if(__privateMethod(this,tt,et).call(this))for(const r of t.items)if(!e.includes(r.variantId)&&!__privateGet(this,X).has(r.variantId)){try{const t=window,e=t?.Abra?.cache?.recentGiftAdded,i=e?.get(r.variantId);if("number"==typeof i&&Date.now()-i<15e3)continue}catch(i){}if(this.giftVariantIds.includes(r.variantId)){try{await t.removeItemByKey(r.key),window.Abra?.cache?.giftInCart?.remove?.(r.variantId)}catch(n){__privateGet(this,Y).error(n)}t.dispatchEvent("abra:cart:changed")}}},pt=async function(t,e){if(__privateMethod(this,tt,et).call(this))for(const i of this.giftVariantIds){if(i===e)continue;const n=Kc(t,this.title,i);n&&(await t.removeItemByKey(n.key),window.Abra?.cache?.giftInCart?.remove?.(i))}};class hl{constructor(t){__privateAdd(this,_t),__publicField(this,"id"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"endsAt"),__publicField(this,"startsAt"),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountValue"),__publicField(this,"discountClass"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),t=Gc(t),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.startsAt=t.startsAt,this.endsAt=t.endsAt,this.id=t.id,this.status=t.status,this.title=t.title,this.entitled=t.entitled,this.combinesWith=t.combinesWith}async applyToCart(t){const e=t.items.filter(t=>this.isCartItemEntitled(t));for(let i=0;ithis.isCartItemEntitled(t))}isCartEntitled(t){return t.items.some(t=>this.isCartItemEntitled(t))}isCartItemEntitled(t){const e=__privateMethod(this,_t,ft).call(this);return!(!e||!e.includes(t.handle))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){const e=this.discountValue?.collections;return e?.includes(t)??!1}isProductEntitled(t){const e=__privateMethod(this,_t,ft).call(this);return!(!e||!e.includes(t))}isProductEntitledToReceiveDiscount(t){return this.isProductEntitled(t)}isProductPrerequisite(){return!1}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}}_t=new WeakSet,ft=function(){return this?.discountValue?.productDiscounts?.map(t=>t.products).flat()},gt=function(t,e,i=1){return(this.discountValue?.productDiscounts.filter(t=>t.products.includes(e))??[]).reduce((e,n)=>{let r=0;return"DiscountAmount"===n.value.type?r=fc(n.value.discountAmount.cents*i):"DiscountPercentage"===n.value.type&&(r=bc(t,n.value.percentage)),Math.max(e,r)},0)};class pl{constructor(t){__privateAdd(this,vt),__publicField(this,"id"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"endsAt"),__publicField(this,"startsAt"),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountValue"),__publicField(this,"discountClass"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),t=Gc(t),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.startsAt=t.startsAt,this.endsAt=t.endsAt,this.id=t.id,this.status=t.status,this.title=t.title,this.entitled=t.entitled,this.combinesWith=t.combinesWith}async applyToCart(t){const e=t.items.filter(t=>this.isCartItemEntitled(t));for(let i=0;ithis.isCartItemEntitled(t))}isCartEntitled(t){return t.items.some(t=>this.isCartItemEntitled(t))}isCartItemEntitled(t){const e=__privateMethod(this,vt,bt).call(this);if(e&&e.includes(t.variantId.toString()))return this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase();const i=__privateMethod(this,vt,mt).call(this);return!(!i||!i.includes(t.handle))&&(this.appliesOnSubscription&&!this.appliesOnOneTimePurchase?t.isSellingPlan():!(!this.appliesOnSubscription&&this.appliesOnOneTimePurchase)||t.isOneTimePurchase())}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){const e=this.discountValue?.collections;return e?.includes(t)??!1}isProductEntitled(t,e){const i=__privateMethod(this,vt,mt).call(this),n=__privateMethod(this,vt,bt).call(this);return!!(n&&e&&n.includes(e))||!(!i||!i.includes(t))}isProductEntitledToReceiveDiscount(t,e){return this.isProductEntitled(t,e)}isProductPrerequisite(){return!1}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}}vt=new WeakSet,bt=function(){return this.discountValue?.variantDiscounts?.map(t=>t.variants).flat()},mt=function(){return this?.discountValue?.productDiscounts?.map(t=>t.products).flat()},wt=function(t,e,i,n=1){const r=this.discountValue?.productDiscounts.filter(t=>t.products.includes(e))??[];let a=[];return i&&(a=this.discountValue?.variantDiscounts.filter(t=>t.variants.includes(i.toString()))??[]),[...r,...a].reduce((e,i)=>{let r=0;return"DiscountAmount"===i.value.type?r=fc(i.value.discountAmount.cents*n):"DiscountPercentage"===i.value.type&&(r=bc(t,i.value.percentage)),Math.max(e,r)},0)};class _l{constructor(t){__privateAdd(this,yt),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"combinesWith"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),t=Gc(t),__privateSet(this,yt,os.createSubLogger("shipping-discount")),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.combinesWith=t.combinesWith,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title}async applyToCart(t){return t}async unapplyFromCart(t){return t}async applyToPrice(t){return t}async applyToProduct(t,e){return t}getCartEligibility(t){const{itemCount:e,subtotalPrice:i}=t,{state:n,progress:r}=tl(this.prerequisite,e,i.original);return"SUCCESS"!==n&&__privateGet(this,yt).debug("cart isn't eligible",{itemCount:e,subtotalPrice:i.original,prerequisite:this.prerequisite}),{state:n,progress:r}}isCartEntitled(t){return!0}isCartEligible(t){const{itemCount:e,subtotalPrice:i}=t,n=Xc(this.prerequisite,e,i.original);return n||__privateGet(this,yt).debug("cart isn't eligible",{itemCount:e,subtotalPrice:i.original,prerequisite:this.prerequisite}),this.isCartEntitled(t)&&n}isCartItemEntitled(t){return!0}isCartItemEntitledToReceiveDiscount(t){return this.isCartItemEntitled(t)}isCollectionEntitled(t){return!0}isProductEntitled(t,e){return!0}isProductEntitledToReceiveDiscount(t,e){return this.isProductEntitled(t,e)}isProductPrerequisite(){return!1}isShownInCart(){return!0}isShownInCartItem(){return!1}isShownInCollection(){return!1}isShownInProduct(t){return"cart"!==t&&"cart-item"!==t&&"product"!==t}}yt=new WeakMap;const fl=class t{constructor(t){__privateAdd(this,Tt),__privateAdd(this,Ct),__privateAdd(this,Et),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"endsAt"),__publicField(this,"startsAt"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"id"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"entitled"),__publicField(this,"giftVariantIds"),__publicField(this,"combinesWith"),t=Gc(t),__privateSet(this,Ct,0),__privateSet(this,Et,os.createSubLogger("tiered-discount")),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.startsAt=t.startsAt,this.endsAt=t.endsAt,this.id=t.id,this.status=t.status,this.title=t.title,this.entitled=t.entitled,this.combinesWith=t.combinesWith,this.giftVariantIds="FREE_GIFT"===this.discountValue.tiersType?this.discountValue?.tiers?.flatMap(t=>t.value.products.flatMap(t=>t.variants.map(t=>t.id)))??[]:[]}async applyToCart(t){const e=this.getBiggestEligibleTier(t),i=this.isCartEligible(t);return e&&i&&("PERCENTAGE_OFF"===e.type?await __privateMethod(this,Tt,At).call(this,e,t):"FREE_GIFT"===e.type&&this.discountValue?.compound?await __privateMethod(this,Tt,Mt).call(this,t,i):"FREE_GIFT"===e.type&&await this.applyFreeGiftDiscountToCart(e,i,t)),t}async applyFreeGiftDiscountToCart(e,i,n,r){if("Gift"===e.value.type){const s=e.value.products.flatMap(t=>t.variants.flatMap(t=>t.id));if(1===s.length){for(let s=0;s1&&!l)continue;const d=!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession;let u=!1;if(!l&&d&&c&&(u=!0),l&&i)l.discount(fc(l.price.final),this.title),n.codes.add(this.title),l.codes.add(this.title);else if(!l&&i&&(!u||r)){if(__privateGet(this,Ct)>t.MAX_ATTEMPTS){__privateGet(this,Et).warn("attempted to add gift too many times, refresh and try again");continue}__privateWrapper(this,Ct)._++;let e=null;try{if(e=await n.addItem({variant:s,handle:o.handle,quantity:1,properties:{discount:this.title,hideQuantity:!0}}),!e)break}catch(a){window.Abra.Notification.show({content:"Error: Your free gift isn't available"}),__privateGet(this,Et).error(a);continue}__privateSet(this,Ct,0),e&&(e.discount(fc(e.price.final),this.title),e.codes.add(this.title),n.codes.add(this.title),window.Abra.cache.giftInCart?.set(e),n.dispatchEvent("abra:cart:changed"))}}}this.giftVariantIds.filter(t=>!s.includes(t))}}}async applyMultiVariantDiscountGiftToCart(t,e,i){const n=Kc(t,this.title,i);if(!this.isCartEligible(t))return;if(n)return n.discount(n.price.final,this.title),n.codes.add(this.title),void t.codes.add(this.title);this.discountValue?.compound||await __privateMethod(this,Tt,Pt).call(this,t,i);const r=e.value?.products[0]?.handle,a=await t.addItem({variant:i,handle:r,quantity:1,properties:{discount:this.title,hideQuantity:!0}});a&&(a.discount(a.price.final,this.title),a.codes.add(this.title),t.codes.add(this.title),window.Abra?.cache?.giftInCart?.set?.(a)),t.dispatchEvent("abra:cart:changed"),t.dispatchEvent("abra:render")}async unapplyFromCart(t){return"FREE_GIFT"===this.discountValue?.tiersType&&__privateMethod(this,Tt,Ot).call(this)&&await this.removeGiftsFromCart(t),t}async removeGiftsFromCart(t){for(const e of this.giftVariantIds){const i=Kc(t,this.title,e);i&&(await t.removeItemByKey(i.id.toString()),t.dispatchEvent("abra:cart:changed"))}return t}async applyToPrice(t,e,i,n){if(!this.isProductEntitledToReceiveDiscount(e,i)||!n)return t;const r=this.getBiggestEligibleTier(n);if(r&&"DiscountPercentage"===r.value.type&&r.value.percentage){const e=bc(t.original,r.value.percentage);t.discount(e,this.title)}return t}async applyToProduct(t,e,i){if(!this.isProductEntitledToReceiveDiscount(t.handle,e)||!i)return t;const n=this.getBiggestEligibleTier(i);if(n){if(this.appliesOnOneTimePurchase){const i=t.getPrice(e)?.original??0;if("DiscountPercentage"===n.value.type&&n.value.percentage){const r=bc(i,n.value.percentage);t.discount(r,this.title,e)}}if(this.appliesOnSubscription&&t.getFirstOrSelectedVariant(e)?.sellingPlanPrice?.original){const i=t.getFirstOrSelectedVariant(e)?.sellingPlanPrice?.original??0;if("DiscountPercentage"===n.value.type&&n.value.percentage){const r=bc(i,n.value.percentage);t.getFirstOrSelectedVariant(e)?.sellingPlanPrice?.discount(r,this.title)}}}return t}getCartEligibility(t){if(this.discountValue?.tiers){const e=this.discountValue.tiers.length,i=this.discountValue.tiers[e-1],{entitledQuantity:n,entitledTotal:r}=this.getEntitledQuantityAndTotal(t),{nextEligibleTier:a}=this.getNextEligibleTier(n,r);if(!a&&e>0){let t="0";return i.prerequisite?.minimumRequirement?.greaterThanOrEqualToQuantity&&(t=i.prerequisite.minimumRequirement.greaterThanOrEqualToQuantity.toString()),i.prerequisite?.minimumRequirement?.greaterThanOrEqualToSubtotal&&(t=kc(i.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal.cents,{returnOnZeroOrNull:"ZERO"})),{state:"SUCCESS",progress:{percentage:"100",remainder:"0",total:t}}}if(0===e||!a)return!1;let s="0";a.prerequisite?.minimumRequirement?.greaterThanOrEqualToQuantity&&(s=fc(n/a.prerequisite.minimumRequirement.greaterThanOrEqualToQuantity*100).toString()),a.prerequisite?.minimumRequirement?.greaterThanOrEqualToSubtotal&&(s=fc(r/a.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal.cents*100).toString());let o="0",c="0";a.prerequisite?.minimumRequirement?.greaterThanOrEqualToQuantity&&(o=a.prerequisite.minimumRequirement.greaterThanOrEqualToQuantity.toString(),c=(a.prerequisite.minimumRequirement.greaterThanOrEqualToQuantity-n).toString()),a.prerequisite?.minimumRequirement?.greaterThanOrEqualToSubtotal&&(o=kc(a.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal.cents,{returnOnZeroOrNull:"ZERO"}),c=kc(a.prerequisite.minimumRequirement.greaterThanOrEqualToSubtotal.cents-r,{returnOnZeroOrNull:"ZERO"}));let l="PROGRESS_ZERO";return Number(s)>0&&(l="PROGRESS_OTHER"),{state:l,progress:{percentage:s,remainder:c,total:o}}}return!1}isCartEligible(t){const{entitledQuantity:e,entitledTotal:i}=this.getEntitledQuantityAndTotal(t);if(this.discountValue?.tiers)for(let n=0;nthis.isCartItemEntitled(t))}isCartItemEntitled(t){return __privateMethod(this,Tt,It).call(this,t)||__privateMethod(this,Tt,Gt).call(this,t)}isCartItemEntitledToReceiveDiscount(t){return __privateMethod(this,Tt,It).call(this,t)}isCollectionEntitled(t){return!!(this.entitled?.all||this.entitled?.collections&&this.entitled.collections.includes(t)||this.discountValue?.entitled?.all||this.discountValue?.entitled?.collections&&this.discountValue.entitled.collections.includes(t))}isProductEntitled(t,e){return el(this,t,e)||this.isProductEntitledToReceiveDiscount(t,e)}isProductPrerequisite(t,e){return el(this,t,e)}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}isProductEntitledToReceiveDiscount(t,e){if(this.discountValue?.entitled?.all)return!0;if(this.discountValue?.entitled?.variants&&e&&this.discountValue?.entitled?.variants.includes(e.toString()))return!0;if(this.discountValue?.entitled?.products&&t&&this.discountValue?.entitled?.products.includes(t))return!0;if("collection"===window.Abra.template?.name){const t=Yc();if(this.discountValue?.entitled?.collections&&t&&this.discountValue?.entitled?.collections.includes(t))return!0}return!1}getEntitledQuantityAndTotal(t){const e=t.items.filter(t=>__privateMethod(this,Tt,Gt).call(this,t)),{entitledQuantity:i,entitledTotal:n}=e.reduce((t,e)=>(t.entitledQuantity+=e.quantity,t.entitledTotal+=e.linePrice.original,t),{entitledQuantity:0,entitledTotal:0});return{entitledQuantity:i,entitledTotal:n,entitledItems:e}}getBiggestEligibleTier(e){const{entitledQuantity:i,entitledTotal:n}=this.getEntitledQuantityAndTotal(e);let r=-1,a=!1;if(this.discountValue?.tiers)for(let t=0;t__privateMethod(this,Tt,It).call(this,t));for(let n=0;n0){const{entitledQuantity:n,entitledTotal:r}=this.getEntitledQuantityAndTotal(t),a=this.getAllEligibleTiers(n,r),s=a?.map(t=>t.value.products.map(t=>t.variants.map(t=>t.id)).flat()).flat()??[];this.giftVariantIds.filter(t=>!s.includes(t));let o=!1;for(const c of a)if(1===c.value.products.flatMap(t=>t.variants.flatMap(t=>t.id)).length&&"Gift"===c.value.type)for(let n=0;n1&&!c)continue;const l=!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession;let d=!1;if(!c&&l&&s&&(d=!0),c&&e)c.discount(fc(c.price.final),this.title),t.codes.add(this.title),c.codes.add(this.title);else if(!c&&e&&!d){if(__privateGet(this,Ct)>fl.MAX_ATTEMPTS){__privateGet(this,Et).warn("attempted to add gift too many times, refresh and try again");continue}__privateWrapper(this,Ct)._++;let e=null;try{if(e=await t.addItem({variant:a,handle:r.handle,quantity:1,properties:{discount:this.title,hideQuantity:!0}}),!e)break}catch(i){window.Abra.Notification.show({content:"Error: Your free gift isn't available"}),__privateGet(this,Et).error(i);continue}o=!0,__privateSet(this,Ct,0),e&&(e.discount(fc(e.price.final),this.title),e.codes.add(this.title),t.codes.add(this.title),window.Abra.cache.giftInCart?.set(e)),o&&t.dispatchEvent("abra:cart:changed")}}}}},Pt=async function(t,e){if(__privateMethod(this,Tt,Ot).call(this))for(const n of t.items)if(n.variantId!==e&&this.giftVariantIds.includes(n.variantId)){try{await t.removeItemByKey(n.key),window.Abra?.cache?.giftInCart?.remove?.(n.variantId)}catch(i){__privateGet(this,Et).error(i)}t.dispatchEvent("abra:cart:changed")}},Ot=function(){return window.Abra?.schemaConfig?.automaticallyRemoveGiftsFromCart??!0},Gt=function(t){return!this.giftVariantIds.includes(t.variantId)&&il(t,this.entitled,this.appliesOnSubscription,this.appliesOnOneTimePurchase)},It=function(t){return il(t,this.discountValue?.entitled,this.appliesOnSubscription,this.appliesOnOneTimePurchase)},__publicField(fl,"MAX_ATTEMPTS",3),__privateAdd(fl,St,-1);let gl=fl;class vl{constructor(t){__privateAdd(this,qt),__publicField(this,"appliesOnOneTimePurchase"),__publicField(this,"appliesOnSubscription"),__publicField(this,"discountClass"),__publicField(this,"discountValue"),__publicField(this,"entitled"),__publicField(this,"endsAt"),__publicField(this,"id"),__publicField(this,"prerequisite"),__publicField(this,"startsAt"),__publicField(this,"status"),__publicField(this,"title"),__publicField(this,"giftVariantIds"),__publicField(this,"combinesWith"),__privateAdd(this,kt),__privateAdd(this,Lt),__privateAdd(this,xt),t=Gc(t),__privateSet(this,kt,os.createSubLogger("volume-discount")),this.appliesOnOneTimePurchase=t.appliesOnOneTimePurchase,this.appliesOnSubscription=t.appliesOnSubscription,this.discountClass=t.discountClass,this.discountValue=t.discountValue,this.entitled=t.entitled,this.endsAt=t.endsAt,this.id=t.id,this.prerequisite=t.prerequisite,this.startsAt=t.startsAt,this.status=t.status,this.title=t.title,this.combinesWith=t.combinesWith,__privateSet(this,Lt,Boolean(this.volumeDiscountValue?.minimumPurchaseAmountPerProductVariant)),__privateSet(this,xt,this.volumeDiscountValue?.customerGets),this.giftVariantIds=__privateMethod(this,qt,Rt).call(this),this.applyMultiVariantDiscountGiftToCart=this.applyMultiVariantDiscountGiftToCart.bind(this)}get volumeDiscountValue(){return"VolumeDiscount"===this.discountValue?.type?this.discountValue:null}async applyToCart(t){if(!this.discountValue)return t;if(__privateGet(this,Lt))await __privateMethod(this,qt,Bt).call(this,t);else{const{eligibleTiers:e,eligibleItems:i}=__privateMethod(this,qt,Ht).call(this,t);e.length>0&&(__privateMethod(this,qt,Ut).call(this,i,e),await __privateMethod(this,qt,le).call(this,t,e))}return t}async unapplyFromCart(t){return this.discountValue?(__privateMethod(this,qt,Zt).call(this)&&await __privateMethod(this,qt,jt).call(this,t),t):t}async applyToPrice(t,e,i,n){if(!this.isProductEntitledToReceiveDiscount(e,i)||!n)return t;const r=__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS",a=__privateGet(this,Lt)&&"ELIGIBLE_VARIANTS"===r?i??void 0:void 0,s=__privateMethod(this,qt,Nt).call(this,n,a),o=__privateMethod(this,qt,Qt).call(this,t.original,s);return o>0&&t.discount(o,this.title),t}async applyToProduct(t,e,i){if(!this.isProductEntitledToReceiveDiscount(t.handle,e)||!i)return t;const n=__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS",r=__privateGet(this,Lt)&&"ELIGIBLE_VARIANTS"===n?e??void 0:void 0,a=__privateMethod(this,qt,Nt).call(this,i,r),{oneTime:s,subscription:o}=__privateMethod(this,qt,Jt).call(this,t,e,a);if(s&&t.discount(s.amount,this.title,e),o){const i=t.getFirstOrSelectedVariant(e);i?.sellingPlanPrice?.discount(o.amount,this.title)}return t}getCartEligibility(t,e){if(!this.discountValue?.tiers.length)return!1;if(e&&__privateGet(this,Lt)&&"ELIGIBLE_VARIANTS"===(__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS")){const i=t.items.filter(t=>t.variantId===e&&__privateMethod(this,qt,Ft).call(this,t,"give"));if(0===i.length)return __privateMethod(this,qt,ee).call(this);const n=__privateMethod(this,qt,Yt).call(this,i);return __privateMethod(this,qt,ne).call(this,n)}return __privateGet(this,Lt)?__privateMethod(this,qt,Xt).call(this,t):__privateMethod(this,qt,ie).call(this,t)}isProductEntitledToReceiveDiscount(t,e){const i=__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS";return"ELIGIBLE_VARIANTS"===i?__privateMethod(this,qt,ce).call(this,t,e):!("ALL_PRODUCTS"!==i||!__privateGet(this,xt)?.all)||el({entitled:__privateMethod(this,qt,Vt).call(this,__privateGet(this,xt))},t,e)}isCartEligible(t,e){if(!this.discountValue)return!1;const i=this.getCartEligibility(t,e);return!!i&&"TIER_1"!==i.state}getCartEligibilityProgress(t,e){const i=this.getCartEligibility(t,e);return i&&i.progress?i.progress.percentage:"0"}isCartEntitled(t){return t.items.some(t=>this.isCartItemEntitled(t))}isCartItemEntitled(t){return __privateMethod(this,qt,Ft).call(this,t,"receive")||__privateMethod(this,qt,Ft).call(this,t,"give")}isCartItemEntitledToReceiveDiscount(t){return __privateMethod(this,qt,Ft).call(this,t,"receive")}isCollectionEntitled(t){return this.entitled?.all||this.entitled?.collections?.includes(t)||!1}isProductEntitled(t,e){return this.isProductPrerequisite(t,e)||this.isProductEntitledToReceiveDiscount(t,e)}isProductPrerequisite(t,e){return __privateMethod(this,qt,ce).call(this,t,e)}isShownInCart(){return!1}isShownInCartItem(){return!0}isShownInCollection(){return!0}isShownInProduct(){return!0}async applyMultiVariantDiscountGiftToCart(t,e,i=!0){const n=Kc(t,this.title,e);if(!this.isCartEligible(t))return;if(n){if(0===n.price.final&&n.codes.has(this.title))return;return n.discount(n.price.final,this.title),n.codes.add(this.title),void t.codes.add(this.title)}const r=window.Abra.cache.giftInCart?.get(e);let a=!1;if(!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession&&r&&!n&&(a=!0,window.Abra.cache.giftManuallyRemoved?.set(!0,e)),a&&!i)return;this.discountValue?.compound||await __privateMethod(this,qt,ve).call(this,t,e);let s="";for(const c of this.discountValue?.tiers??[])if("Gift"===c.value.type)for(const t of c.value.products??[])for(const i of t.variants)if(i.id===e){s=t.handle;break}const o=await t.addItem({variant:e,handle:s,quantity:1,properties:{discount:this.title,hideQuantity:!0}});o&&(o.discount(o.price.final,this.title),o.codes.add(this.title),t.codes.add(this.title),window.Abra?.cache?.giftInCart?.set?.(o)),t.dispatchEvent("abra:cart:changed"),t.dispatchEvent("abra:render")}}kt=new WeakMap,Lt=new WeakMap,xt=new WeakMap,qt=new WeakSet,Ft=function(t,e){return!this.giftVariantIds.includes(t.variantId)&&il(t,"give"===e?this.entitled:__privateMethod(this,qt,Dt).call(this),this.appliesOnSubscription,this.appliesOnOneTimePurchase)},Dt=function(){return"ELIGIBLE_VARIANTS"===(__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS")?this.entitled:__privateMethod(this,qt,Vt).call(this,__privateGet(this,xt))},Vt=function(t){if(!t)return null;switch(t.appliesTo){case"ALL_PRODUCTS":return{type:"AllDiscountItems",all:!0};case"SPECIFIC_PRODUCTS":{const e=t.products?.flatMap(t=>t.variants?.map(t=>t.id)||[])||[],i=t.products?.map(t=>t.handle).filter(Boolean)||[];return{type:"DiscountProducts",all:t.all,variants:e.length>0?e:void 0,products:i.length>0?i:void 0}}case"SPECIFIC_COLLECTIONS":return{type:"DiscountCollections",all:t.all,collections:t.collections?.map(t=>t.handle).filter(Boolean)||[],products:t.collections?.flatMap(t=>t.products).filter(t=>Boolean(t))||[]};default:return{type:"DiscountProducts",all:t.all}}},Rt=function(){return(this.discountValue?.tiers.flatMap(t=>"Gift"===t.value.type?t.value.products?.flatMap(t=>t.variants.map(t=>t.id)):[])??[]).filter(t=>Boolean(t))},$t=function(t){const e=t.items.filter(t=>__privateMethod(this,qt,Ft).call(this,t,"give")),i=new Map;for(const n of e){const t=i.get(n.variantId);t?(t.items.push(n),t.quantity+=n.quantity,t.total+=n.linePrice.original):i.set(n.variantId,{items:[n],quantity:n.quantity,total:n.linePrice.original})}return i},Nt=function(t,e){if(!this.discountValue)return[];if(__privateGet(this,Lt)&&e){const i=t.items.filter(t=>t.variantId===e&&__privateMethod(this,qt,Ft).call(this,t,"give"));if(0===i.length)return[];const n=i.reduce((t,e)=>t+e.quantity,0),r=i.reduce((t,e)=>t+e.linePrice.original,0);return __privateMethod(this,qt,ae).call(this,n,r)}const i=t.items.filter(t=>__privateMethod(this,qt,Ft).call(this,t,"give")),n=i.reduce((t,e)=>t+e.quantity,0),r=i.reduce((t,e)=>t+e.linePrice.original,0);return __privateMethod(this,qt,ae).call(this,n,r)},Bt=async function(t){const e=__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS",i=__privateMethod(this,qt,$t).call(this,t);if("ELIGIBLE_VARIANTS"!==e){const e=__privateMethod(this,qt,zt).call(this,i),n=t.items.filter(t=>__privateMethod(this,qt,Ft).call(this,t,"receive"));e.length>0&&(__privateMethod(this,qt,Ut).call(this,n,e),await __privateMethod(this,qt,le).call(this,t,e))}else{const e=[];for(const[,t]of i){const i=__privateMethod(this,qt,Wt).call(this,t.items);if(i.length>0){__privateMethod(this,qt,Ut).call(this,t.items,i);const n=i.filter(t=>"Gift"===t.value.type);e.push(...n)}}e.length>0&&await __privateMethod(this,qt,le).call(this,t,e)}},Ht=function(t){return{eligibleTiers:__privateMethod(this,qt,Nt).call(this,t),eligibleItems:t.items.filter(t=>__privateMethod(this,qt,Ft).call(this,t,"receive"))}},Wt=function(t){const e=t.reduce((t,e)=>t+e.quantity,0),i=t.reduce((t,e)=>t+e.linePrice.original,0);return __privateMethod(this,qt,ae).call(this,e,i)},zt=function(t){let e=[];for(const[,i]of t){const t=__privateMethod(this,qt,Wt).call(this,i.items);t.length>e.length&&(e=t)}return e},Ut=function(t,e){for(const i of t){if(!__privateMethod(this,qt,Ft).call(this,i,"receive"))continue;const t=__privateMethod(this,qt,oe).call(this,i,e);t&&(i.discount(t.amount,this.title),i.codes.add(this.title))}},Zt=function(){return window.Abra?.schemaConfig?.automaticallyRemoveGiftsFromCart??!0},jt=async function(t){for(const i of t.items)if(this.giftVariantIds.includes(i.variantId)){try{await t.removeItemByKey(i.key)}catch(e){__privateGet(this,kt).error(e)}t.dispatchEvent("abra:cart:changed")}},Qt=function(t,e){let i=0;for(const n of e){if("Gift"===n.value.type)continue;let e=0;"DiscountPercentage"===n.value.type?e=bc(t,n.value.percentage||0):"DiscountAmount"===n.value.type&&(e=n.value.discountAmount.cents||0),e>i&&(i=e)}return i},Jt=function(t,e,i){let n=0,r=0,a=null,s=null;const o=t.getPrice(e)?.original??0,c=t.getFirstOrSelectedVariant(e)?.sellingPlanPrice?.original??0;for(const l of i)if("Gift"!==l.value.type){if(this.appliesOnOneTimePurchase&&o>0){const t=__privateMethod(this,qt,Kt).call(this,o,l);t>n&&(n=t,a={amount:t,tier:l})}if(this.appliesOnSubscription&&c>0){const t=__privateMethod(this,qt,Kt).call(this,c,l);t>r&&(r=t,s={amount:t,tier:l})}}return{oneTime:a,subscription:s}},Kt=function(t,e){return"DiscountPercentage"===e.value.type?bc(t,e.value.percentage||0):"DiscountAmount"===e.value.type&&e.value.discountAmount.cents||0},Yt=function(t){const e=t.reduce((t,e)=>t+e.quantity,0),i=t.reduce((t,e)=>t+e.linePrice.original,0);return __privateMethod(this,qt,re).call(this,e,i)},Xt=function(t){const e=__privateGet(this,xt)?.appliesTo||"ELIGIBLE_VARIANTS",i=__privateMethod(this,qt,$t).call(this,t);if("ELIGIBLE_VARIANTS"!==e){if(0===__privateMethod(this,qt,zt).call(this,i).length)return __privateMethod(this,qt,ee).call(this);let t=__privateMethod(this,qt,re).call(this,0,0);for(const[,e]of i){const i=__privateMethod(this,qt,re).call(this,e.quantity,e.total);t&&!__privateMethod(this,qt,te).call(this,i,t)||(t=i)}return __privateMethod(this,qt,ne).call(this,t)}let n=1/0,r=1,a=__privateMethod(this,qt,re).call(this,0,0);for(const[,s]of i){const t=__privateMethod(this,qt,re).call(this,s.quantity,s.total);t.completedTierse.completedTiers||!(t.completedTierse.progressWithinCurrentTier},ee=function(){if(!this.discountValue||!this.discountValue.tiers.length)return __privateGet(this,kt).debug("no discount value or tiers, returning false"),!1;const t=this.discountValue.tiers[0],{minimumRequirement:e}=t.prerequisite??{};let i="0",n="0";if(e?.greaterThanOrEqualToQuantity){const t=e.greaterThanOrEqualToQuantity;n=t.toString(),i=t.toString()}else if(e?.greaterThanOrEqualToSubtotal){const t=e.greaterThanOrEqualToSubtotal.cents;n=kc(t,{returnOnZeroOrNull:"ZERO"}),i=kc(t,{returnOnZeroOrNull:"ZERO"})}return{state:"TIER_1",progress:{percentage:"0",remainder:i,total:n}}},ie=function(t){const e=t.items.filter(t=>__privateMethod(this,qt,Ft).call(this,t,"give")),i=e.reduce((t,e)=>t+e.quantity,0),n=e.reduce((t,e)=>t+e.linePrice.original,0),r=__privateMethod(this,qt,re).call(this,i,n);return __privateMethod(this,qt,ne).call(this,r)},ne=function(t){if(!t||!this.discountValue)return!1;const e=this.discountValue.tiers,i=e.length,n=Math.min(100,fc(t.completedTiers/i*100+t.progressWithinCurrentTier/i*100)).toString();let r;return r=t.nextEligibleTierIndex===e.length?"SUCCESS":0===t.completedTiers&&0===t.progressWithinCurrentTier?"TIER_1":`TIER_${t.nextEligibleTierIndex+1}`,{state:r,progress:{percentage:n,remainder:t.remainder,total:t.total}}},re=function(t,e){if(!this.discountValue)return{completedTiers:0,progressWithinCurrentTier:0,nextEligibleTierIndex:0,remainder:"0",total:"0"};const i=this.discountValue.tiers;let n=0,r=0,a=0,s=!1,o=null,c=0,l=0,d="0",u="0";for(let h=0;h0||"subtotal"===o&&c>0?Math.min(1,l/c):0:1,{completedTiers:n,progressWithinCurrentTier:r,nextEligibleTierIndex:a,remainder:d,total:u}},ae=function(t,e){if(!this.discountValue)return[];const i=[];for(const n of this.discountValue.tiers){if(!__privateMethod(this,qt,se).call(this,n,t,e))break;i.push(n)}return i},se=function(t,e,i){const{minimumRequirement:n}=t.prerequisite??{};if(!n||!n.greaterThanOrEqualToQuantity&&!n.greaterThanOrEqualToSubtotal)return!0;const{greaterThanOrEqualToQuantity:r,greaterThanOrEqualToSubtotal:a}=n;return!(r&&ei&&(i=e,n={amount:e,tier:r})}return n},ce=function(t,e){return el(this,t,e)},le=async function(t,e){const i=e.filter(t=>"Gift"===t.value.type);0!==i.length&&(this.discountValue?.compound&&i.length>0?await __privateMethod(this,qt,de).call(this,t,i):await __privateMethod(this,qt,ge).call(this,t,i))},de=async function(t,e){const i=__privateMethod(this,qt,ue).call(this,e),n=this.giftVariantIds.filter(t=>!i.includes(t));let r=!1;for(const a of e){const e=__privateMethod(this,qt,he).call(this,a);e&&await __privateMethod(this,qt,pe).call(this,t,e)&&(r=!0)}r&&(await __privateMethod(this,qt,be).call(this,n,t),t.dispatchEvent("abra:cart:changed"))},ue=function(t){return t.flatMap(t=>"Gift"===t.value.type&&t.value.products?t.value.products.flatMap(t=>t.variants.map(t=>t.id)):[])},he=function(t){if("Gift"!==t.value.type||!t.value.products?.length)return null;const e=t.value.products.flatMap(t=>t.variants.map(t=>t.id));return 1===e.length?e[0]:null},pe=async function(t,e,i=!1){if(!this.isCartEligible(t))return!1;const n=Kc(t,this.title,e);if(n)return 0===n.price.final&&n.codes.has(this.title)||__privateMethod(this,qt,_e).call(this,n,t),!1;const r=window.Abra.cache.giftInCart?.get(e);let a=!1;return!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession&&r&&!n&&(a=!0),!(a&&!i)&&await __privateMethod(this,qt,fe).call(this,t,e)},_e=function(t,e){t.discount(t.price.final,this.title),t.codes.add(this.title),e.codes.add(this.title)},fe=async function(t,e){try{let i="";for(const t of this.discountValue?.tiers??[])if("Gift"===t.value.type)for(const n of t.value.products??[])for(const t of n.variants)if(t.id===e){i=n.handle;break}const n=await t.addItem({variant:e,handle:i,quantity:1,properties:{discount:this.title,hideQuantity:!0}});if(n)return __privateMethod(this,qt,_e).call(this,n,t),window.Abra?.cache?.giftInCart?.set?.(n),!0}catch(i){__privateGet(this,kt).error(i)}return!1},ge=async function(t,e){const i=[...e].reverse().find(t=>"Gift"===t.value.type);if(!i)return;const n=__privateMethod(this,qt,he).call(this,i);n&&(await __privateMethod(this,qt,ve).call(this,t,n),await this.applyMultiVariantDiscountGiftToCart(t,n,!1))},ve=async function(t,e){if(__privateMethod(this,qt,Zt).call(this))for(const i of this.giftVariantIds){if(i===e)continue;const n=Kc(t,this.title,i);n&&(await t.removeItemByKey(n.key),window.Abra?.cache?.giftInCart?.remove?.(i))}},be=async function(t,e){if(__privateMethod(this,qt,Zt).call(this))for(const n of t){const t=e.items.find(t=>t.variantId===n);if(t)try{await e.removeItemByKey(t.key),window.Abra?.cache?.giftInCart?.remove?.(n)}catch(i){__privateGet(this,kt).error(i)}}};class bl{constructor(t){__privateAdd(this,ye),__privateAdd(this,me),__privateAdd(this,we),__publicField(this,"title"),__publicField(this,"code"),__publicField(this,"endsAt"),__publicField(this,"mainDiscount"),__publicField(this,"discounts"),__publicField(this,"redeemCode"),__publicField(this,"startsAt"),__publicField(this,"origin"),__publicField(this,"affiliate"),__privateSet(this,me,os.createSubLogger("promotion")),__privateGet(this,me).debug("Promotion value",t),__privateSet(this,we,t),this.title=t.title,this.endsAt=t.endsAt,this.discounts=__privateMethod(this,ye,Se).call(this,t.discounts),this.mainDiscount=this.discounts?.at(0),this.redeemCode=t.redeemCode??null,this.startsAt=t.startsAt,this.origin=t.origin??"ABRA",this.affiliate=t.affiliate,this.code=t.code??null}get displayCode(){return this.redeemCode||this.title}get discountTitles(){return __privateGet(this,we)?.discounts?Object.values(__privateGet(this,we).discounts).map(t=>t.title):[]}getPromotionDiscountsOnCart(t){return this.discounts.filter(e=>t.cartTotalDiscountByCode.has(e.title))}getDiscountById(t){return t?this.discounts.find(e=>e.id===t)??null:this.mainDiscount??null}async getTargetDiscount(t,e,i,n,r=!1){let a=null;return a=this.getDiscountById(e),a&&(r&&i&&a.isProductPrerequisite(i.handle,n)||await Uc(this.discounts,a,t,i,n))?a:null}async checkAllDiscountsOrSpecific(t,e,i,n,r,a,s=!1){if(e){const o=await this.getTargetDiscount(t,e,r,a,s);return o?i(o):n}for(const o of this.discounts){if(s&&r&&o.isProductPrerequisite(r.handle,a)){const t=await i(o);if(t!==n)return t}if(!(await Uc(this.discounts,o,t,r,a)))continue;const e=await i(o);if(e!==n)return e}return n}async applyToCart(t){for(const e of this.discounts)await Uc(this.discounts,e,t)&&await e.applyToCart(t);return t}async unapplyFromCart(t){for(const e of this.discounts)await e.unapplyFromCart(t);return t}async applyToPrice(t,e,i,n){for(const r of this.discounts)await Uc(this.discounts,r,n,e,i)&&await r.applyToPrice(t,e.handle,i,n);return t}async applyToProduct(t,e,i){for(const n of this.discounts)await Uc(this.discounts,n,i,t,e)&&await n.applyToProduct(t,e,i);return t}async getCartEligibility(t,e,i){return this.checkAllDiscountsOrSpecific(t,i,async i=>i.getCartEligibility(t,e),!1)}async isCartEntitled(t,e){return this.checkAllDiscountsOrSpecific(t,e,async e=>e.isCartEntitled(t),!1)}async isCartEligible(t,e){return this.checkAllDiscountsOrSpecific(t,e,async e=>e.isCartEligible(t),!1)}async isCartItemEntitled(t,e,i){return this.checkAllDiscountsOrSpecific(t,i,async t=>t.isCartItemEntitled(e),!1)}async isCartItemEntitledToReceiveDiscount(t,e,i){return this.checkAllDiscountsOrSpecific(t,i,async t=>t.isCartItemEntitledToReceiveDiscount(e),!1)}async isCollectionEntitled(t,e,i){return this.checkAllDiscountsOrSpecific(e,i,async e=>e.isCollectionEntitled(t),!1)}async isProductEntitled(t,e,i,n){const r=await Ms(t);if(!r)return!1;const a=new Dc(r);return this.checkAllDiscountsOrSpecific(i,n,async t=>t.isProductEntitled(r.handle,e),!1,a,e??void 0,!0)}async isProductEntitledToReceiveDiscount(t,e,i,n){return this.checkAllDiscountsOrSpecific(i,n,async i=>i.isProductEntitledToReceiveDiscount(t.handle,e),!1,t,e??void 0)}async isShownInCart(t,e,i){return this.checkAllDiscountsOrSpecific(e,i,async i=>i.isShownInCart(t,e),!1)}async isShownInCartItem(t,e,i,n){return this.checkAllDiscountsOrSpecific(i,n,async i=>i.isShownInCartItem(t,e),!1)}async isShownInCollection(t,e,i,n){return this.checkAllDiscountsOrSpecific(i,n,async i=>i.isShownInCollection(t,e),!1)}async isShownInProduct(t,e,i,n,r){return this.checkAllDiscountsOrSpecific(n,r,async n=>n.isShownInProduct(t,e,i),!1)}toJSON(){return __privateGet(this,we)}}function ml(t){return(new Date).getTime()+60*t*1e3}me=new WeakMap,we=new WeakMap,ye=new WeakSet,Se=function(t){const e=new Date;return Object.values(t??[]).filter(t=>{if(t.startsAt&&Ba(e,new Date(t.startsAt)))return __privateGet(this,me).debug(`discount ${t.title} is not active yet`,{startsAt:t.startsAt,now:e.toISOString()}),!1;if(t.endsAt&&Na(e,new Date(t.endsAt)))return __privateGet(this,me).debug(`discount ${t.title} has expired`,{endsAt:t.endsAt,now:e.toISOString()}),!1;const i=t?.prerequisite?.tapCartExclusive,n=t?.prerequisite?.posExclusive;if(i||n)return!1;const r=t?.entitled?.markets;return!(r&&r.length>0&&window.Shopify.country&&!r.includes(window.Shopify.country)&&(__privateGet(this,me).debug(`discount ${t.title} is not eligible for market ${window.Shopify.country}`,{markets:t?.entitled?.markets,country:window.Shopify.country}),1))}).sort((t,e)=>{const i=t=>{switch(t){case"PRODUCT":return 0;case"SHIPPING":default:return 1;case"ORDER":return 2}};return i(t.discountClass)-i(e.discountClass)}).map(t=>{switch(t.discountValue?.type){case"DiscountCodeBxgy":case"BXGY":return new ll(t);case"Gift":return new sl(t);case"DiscountMultiValueProduct":return new pl(t);case"DiscountMultiValueCollection":return new hl(t);case"TieredDiscount":return new gl(t);case"CollectionOrderDiscount":return new dl(t);case"MultiEffectTiers":return new ul(t);case"VolumeDiscount":return new vl(t);default:switch(t.discountClass){case"ORDER":return new ol(t);case"SHIPPING":return new _l(t);default:return new cl(t)}}})};const wl=os.createSubLogger("promotion");let yl=null;function Sl(){const t=window.localStorage.getItem("abra:active-promotion");if(t)try{const e=JSON.parse(t);e.expiresAt>=Date.now()||!e.promotion||!e.promotion.title?Cl(e.promotion):window.localStorage.removeItem("abra:active-promotion")}catch(e){wl.error("promotion cache is corrupt, clearing cache"),wl.error(e),window.localStorage.removeItem("abra:active-promotion")}return yl}function Cl(t){yl=new bl(t);try{window.localStorage.setItem("abra:active-promotion",JSON.stringify({expiresAt:ml(30),promotion:t}))}catch(e){wl.error(e)}return yl}function El(){window.localStorage.removeItem("abra:active-promotion"),Wa.remove("snowball_affiliate_referral"),yl=null}class Tl{constructor(t,e){__privateAdd(this,Ee),__publicField(this,"applied"),__privateAdd(this,Ce),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"promotion"),__publicField(this,"type"),__privateSet(this,Ce,os.createSubLogger("blocks/announcement-bar")),this.applied=!1,this.config=e,this.id=t,this.promotion=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}apply(t={}){if(__privateGet(this,Ce).debug("applying",{id:this.id,config:this.config}),__privateMethod(this,Ee,Te).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.config.persistentState){const t=this.config.states?.at(0);t&&(t.text=ps(t.text,{code:this.promotion?.title}),window.Abra.AnnouncementBar.show(t))}return this.applied=!0,!0}undo(){return __privateGet(this,Ce).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),window.Abra.AnnouncementBar.hide(),this.applied=!1,!0}}Ce=new WeakMap,Ee=new WeakSet,Te=function(t){this.promotion=t.promotion??Sl()},__publicField(Tl,"validate",t=>({errors:!1,config:t}));const Al="__abra";async function Ml(){let t=window.Shopify.routes.root;return t&&!t.endsWith("/")&&(t+="/"),(await fetch(t+"cart/update.js?_abraignore=1",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({attributes:{[Al]:null}})})).ok}async function Pl({logger:t}={}){const e=Sl(),i=await Os({logger:t});let n=null;return i&&(n=await $c(i),e&&await e.isCartEligible(n)?n=await e.applyToCart(n):e&&(n=await e.unapplyFromCart(n))),n}function Ol(t,e){switch(e){case"banner-gift":return t instanceof sl;case"tiered-banner":case"multi-effect-tiered-banner":return t instanceof gl||t instanceof ul||t instanceof vl;default:return!0}}function Gl(t,e){if(!t)return[];const i=e.discountIds;if(!i||0===i.length)return t.discounts.filter(t=>Ol(t,e.type));const n=[];for(const r of i){const i=t.getDiscountById(r);i&&Ol(i,e.type)&&n.push(i)}return n}function Il(t,e){return null!=t.statesByDiscountGroup?t.statesByDiscountGroup[e]:t.states}const kl=t=>parseInt(t,16),Ll=(t,e)=>{const i=(t=>"#"===t.charAt(0)?t.slice(1):t)(t),n=(({r:t,g:e,b:i,a:n})=>({r:kl(t),g:kl(e),b:kl(i),a:+(kl(n)/255).toFixed(2)}))((t=>{const e=3===t.length||4===t.length;return{r:e?`${t.slice(0,1)}${t.slice(0,1)}`:t.slice(0,2),g:e?`${t.slice(1,2)}${t.slice(1,2)}`:t.slice(2,4),b:e?`${t.slice(2,3)}${t.slice(2,3)}`:t.slice(4,6),a:(e?`${t.slice(3,4)}${t.slice(3,4)}`:t.slice(6,8))||"ff"}})(i));return((t,e)=>{const{r:i,g:n,b:r,a:a}=t;var s;return`rgba(${i}, ${n}, ${r}, ${s=e,!isNaN(parseFloat(s))&&isFinite(s)?e:a})`})(n,e)};function xl(t){return"string"==typeof t?t.replace(/<[^>]*>/g,""):t}function ql({promotion:t,discountState:e,cart:i,product:n,collectionHandle:r,discountId:a,usePromotionTitleAsCode:s}){const o=t?.getDiscountById(a),c=function({discount:t,product:e,cart:i,collectionHandle:n}){const r=t?.discountValue;if(!r)return"";let a="";if("DiscountAmount"===r.type)a=kc(r.discountAmount.cents);else if("DiscountOnQuantity"===r.type)a=Cc(r.effect.percentage);else if("DiscountPercentage"===r.type)a=Cc(r.percentage);else if("Gift"===r.type)a="";else if("DiscountMultiValueProduct"===r.type){const t=r,{maxDiscount:s,maxDiscountType:o}=$l({discountObject:t,product:e,collectionHandle:n,cart:i});a="$"===o?kc(mc(s,100)):s+"%"}else if("DiscountMultiValueCollection"===r.type){const t=r,{maxDiscount:s,maxDiscountType:o}=$l({discountObject:t,product:e,collectionHandle:n,cart:i});a="$"===o?kc(mc(s,100)):s+"%"}else if("TieredDiscount"===r.type){const e=t;let n;if(i){const{entitledQuantity:t,entitledTotal:r}=e.getEntitledQuantityAndTotal(i),{nextEligibleTier:a}=e.getNextEligibleTier(t,r);a&&(n=a)}else n=e.discountValue?.tiers?.at(0);n&&n&&("DiscountPercentage"===n.value.type&&(a=n.value.percentage+"%"),"Gift"===n.value.type&&n.value.products.length>0&&(a=""))}return a}({discount:o,product:n,cart:i,collectionHandle:r});return{code:s?t?.title??"":o?.title??"",currency:{iso_code:window.Abra.currency},redeemCode:t?.redeemCode??"",affiliate_name:Nl(t?.affiliate),discount:{progress_total:xl(e?.progress?.total),progress_remaining:xl(e?.progress?.remainder)},offer:{progress_total:xl(e?.progress?.total),progress_remaining:xl(e?.progress?.remainder)},discount_value:c,offer_value:c}}function Fl({promotion:t,subtotalPrice:e,priceMode:i,discountId:n}){const r=t.getDiscountById(n),a=Lc(e.compareAt,e.original),s=Lc(e.compareAtTotalDiscount,e.originalTotalDiscount);return{code:r?.title??"",currency:{iso_code:window.Abra.currency},compare_at_subtotal_price:kc(a,{returnOnZeroOrNull:"EMPTY"}),final_subtotal_price:kc(e.final),original_subtotal_price:kc(e.original),redeemCode:t.redeemCode??"",affiliate_name:Nl(t.affiliate),subtotal_price:kc(e.final),total_discount:kc("compare_at"===i?s:e.originalTotalDiscount),total_discount_dollar:kc("compare_at"===i?s:e.originalTotalDiscount),total_discount_percentage:yc(vc(wc("compare_at"===i?a:e.original,e.final)))}}function Dl({promotion:t,priceMode:e,linePriceMode:i,linePrice:n,price:r,unitPrice:a,cartItem:s,discountId:o}){const c=t.getDiscountById(o),l=Lc(n.compareAt,n.original),d=Lc(n.compareAtTotalDiscount,n.originalTotalDiscount),u=Lc(r.compareAt,r.original),h=Lc(r.compareAtTotalDiscount,r.originalTotalDiscount);return{code:c?.title??"",compare_at_line_price:kc(l,{returnOnZeroOrNull:"EMPTY"}),compare_at_price:kc(u,{returnOnZeroOrNull:"EMPTY"}),currency:{iso_code:window.Abra.currency},final_line_price:kc(n.final),final_price:kc(r.final),final_unit_price:kc(a?.final),original_line_price:kc(n.original),original_price:kc(r.original),original_unit_price:kc(a?.original),redeemCode:t.redeemCode??"",quantity:s.quantity,affiliate_name:Nl(t.affiliate),total_discount:kc("compare_at"===e?h:r.originalTotalDiscount),total_discount_dollar:kc("compare_at"===e?h:r.originalTotalDiscount),total_discount_percentage:yc(vc(wc("compare_at"===e?u:r.original,r.final))),total_line_discount:kc("compare_at"===i?d:n.originalTotalDiscount),unit_price_measurement:{reference_unit:s.unitPriceMeasurement?.referenceUnit||""},url:s.url}}function Vl({promotion:t,finalPrice:e,productPrice:i,productUnitPrice:n,variantPrice:r,variantUnitPrice:a,selectedVariant:s,product:o,productUnitPriceMeasurement:c,priceMode:l,discountId:d}){const u=t.getDiscountById(d),h=Lc(i.compareAt,i.original),p=Lc(i.compareAtTotalDiscount,i.originalTotalDiscount),_=Lc(r.compareAt,r.original),f=Lc(r.compareAtTotalDiscount,r.originalTotalDiscount),g=Lc(s.sellingPlanPrice?.compareAt??0,s.sellingPlanPrice?.original??0),v=s.sellingPlanPrice?.final,b=s.sellingPlanPrice?.original,m=Lc(s.sellingPlanPrice?.compareAtTotalDiscount??0,s.sellingPlanPrice?.originalTotalDiscount??0);let w=r?.final,y=_,S=f,C=r?.originalTotalDiscount,E=r?.original;return(new URLSearchParams(window.location.search).get("selling_plan")||window.Abra.useSellingPlanPriceOnProductBlock)&&s.sellingPlanPrice&&(w=s.sellingPlanPrice.final,y=g,S=m,C=s.sellingPlanPrice?.originalTotalDiscount,E=s?.sellingPlanPrice?.original),{code:u?.title??"",compare_at_price:kc(h,{returnOnZeroOrNull:"EMPTY"}),compare_at_total_discount:kc(p,{returnOnZeroOrNull:"EMPTY"}),currency:{iso_code:window.Abra.currency},final_price:e,final_unit_price:kc(n?.final),original_price:kc(i.original),original_total_discount:kc(i.originalTotalDiscount),original_unit_price:kc(n?.original),redeemCode:t.redeemCode??"",affiliate_name:Nl(t.affiliate),selected_variant:{compare_at_price:kc(_,{returnOnZeroOrNull:"EMPTY"}),compare_at_price_cents:_,compare_at_total_discount:kc(f,{returnOnZeroOrNull:"EMPTY"}),final_price:kc(r.final),final_price_cents:r.final,final_unit_price:kc(a?.final),original_total_discount:kc(r.originalTotalDiscount),original_price:kc(r.original),original_price_cents:r.original,original_unit_price:kc(a?.original),selected_selling_plan:{compare_at_price:kc(g,{returnOnZeroOrNull:"EMPTY"}),compare_at_price_cents:g,final_price:kc(v),final_price_cents:v,original_price:kc(b),original_price_cents:b,total_discount_percentage:yc(vc("compare_at"===l?wc(y,w):s.sellingPlanPrice?.original&&s?.sellingPlanPrice?.final?wc(s.sellingPlanPrice.original,s.sellingPlanPrice.final):0))},selected_selling_plan_or_variant:{compare_at_price:kc(y,{returnOnZeroOrNull:"EMPTY"}),compare_at_price_cents:y,final_price:kc(w),final_price_cents:w,total_discount_dollar:kc("compare_at"===l?S:C),total_discount_percentage:yc(vc(wc("compare_at"===l?y:E,w)))},unit_price_measurement:{reference_unit:s.unitPriceMeasurement?.referenceUnit||""},total_discount:kc("compare_at"===l?f:r.originalTotalDiscount),total_discount_dollar:kc("compare_at"===l?f:r.originalTotalDiscount),total_discount_percentage:yc(vc(wc("compare_at"===l?_:r.original,r.final)))},title:o.title,total_discount:kc("compare_at"===l?p:i.originalTotalDiscount),total_discount_dollar:kc("compare_at"===l?p:i.originalTotalDiscount),total_discount_percentage:yc(vc(wc("compare_at"===l?h:i.original,i.final))),unit_price_measurement:{reference_unit:c?.referenceUnit||""},url:o.url}}function Rl(t,...e){return e.some(e=>function(t,e){return Boolean(t?.includes(`{{${e.toString()}}}`)||t?.includes(`{{ ${e.toString()} }}`))}(t,e))}function $l({discountObject:t,product:e,collectionHandle:i,cart:n}){const r=t.productDiscounts;let a=[];"variantDiscounts"in t&&(a=t.variantDiscounts);let s=[...r,...a];if(i&&"collections"in t){const e=t.collections.reduce((t,e,n)=>(e===i&&t.push(n),t),[]);s=r.filter((t,i)=>e.includes(i))}else e?(s=[...t.productDiscounts.filter(t=>t.products.includes(e.handle))],"variantDiscounts"in t&&t.variantDiscounts.filter(t=>!e.variants||t.variants.some(t=>e.variants.some(e=>e.id===t))).forEach(t=>{s.push(t)})):n&&(s=[...t.productDiscounts.filter(t=>t.products.some(t=>n.items.some(e=>e.handle===t)))],"variantDiscounts"in t&&t.variantDiscounts.filter(t=>t.variants.some(t=>n.items.some(e=>e.variantId===t))).forEach(t=>{s.push(t)}));return s=s.map(t=>({value:t.value})),s.reduce((t,e)=>{if("DiscountPercentage"===e.value.type){if(i=t.maxDiscount,new _c(e.value.percentage).greaterThanOrEqualTo(new _c(i)))return{maxDiscount:e.value.percentage.toString(),maxDiscountType:"%"}}else if("DiscountAmount"===e.value.type&&function(t,e){return new _c(t).greaterThan(new _c(e))}(e.value.discountAmount.amount,t.maxDiscount))return{maxDiscount:e.value.discountAmount.amount,maxDiscountType:"$"};var i;return t},{maxDiscount:"0",maxDiscountType:"%"})}function Nl(t){return t&&t.first_name?t.first_name+" "+(t?.last_name??""):""}function Bl(t=window.location.href){const e=t.split("/");if(-1===e.indexOf("products"))return;const i=e.indexOf("products")+1;return e[i].split("?")[0]}function Hl(t,e){if(!t)return Bl();let i,n="closest";if(e){const i=t.closest(e);i&&(i.setAttribute("data-abra-container",e),t=i,n="querySelector")}if(function(t){return"a"===t.tagName}(t)&&(i=Bl(t.href),i))return i;let r=t.getAttribute("data-product-handle");if(r||(r=t.getAttribute("[data-product-handle]")),r&&(i=r,i))return i;const a=t[n]('[href*="/products/"]');if(a&&(i=Bl(a.href),i))return i;const s=t[n]("[data-product-handle]");if(s&&(i=s.getAttribute("data-product-handle")||void 0,i))return i;const o=t[n]('[class$="card"], [class~="card"], [class$="Card"], [class~="Card"]');if(o){const t=o.querySelector('[href*="/products/"]');if(t&&(i=Bl(t.href),i))return i}const c=t[n]('[class*="grid-item"], [class*="product-block"]');if(c){const t=c.querySelector('[href*="/products/"]');if(t&&(i=Bl(t.href),i))return i}return t[n]('form[action="/cart"]')||(i=Bl()),i}function Wl(t){return t?rs(t).toLowerCase():""}function zl(t,e,i){const n=t?.tags?.map(t=>t.toLowerCase());return!(!n?.includes("trade")&&!n?.includes("wholesale")||"spiral-usa.myshopify.com"!==e)||!(!t?.b2b||!i.includes(e||""))}async function Ul(t,e){if(t)if("all"===t||"global"===t)await e.all();else if(t.startsWith("product"))await e.product();else if(t.startsWith("collection"))await e.collection();else if(t.startsWith("index"))await e.index();else if(t.startsWith("cart"))await e.cart();else{if(!t.startsWith("account"))throw new Error("template isn't supported");await e.account()}}class Zl{constructor(t,e,i){__privateAdd(this,Me),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"promotion"),__privateAdd(this,Ae),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"page"),__publicField(this,"type"),__privateSet(this,Ae,os.createSubLogger("blocks/banner")),this.applied=!1,this.cart=null,this.config=e,this.id=t,this.page=i.page,this.promotion=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,Ae).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Me,$e).call(this,t),ls("abra:cart:changed",this.apply),this.config.onevent&&ls(this.config.onevent,this.apply),"global"===this.config.template?await __privateMethod(this,Me,Ge).call(this):this.page?.fullName&&await Ul(this.page.fullName,{all:()=>__privateMethod(this,Me,Oe).call(this),cart:()=>__privateMethod(this,Me,Ge).call(this),collection:()=>__privateMethod(this,Me,Ie).call(this),index:()=>__privateMethod(this,Me,ke).call(this),product:()=>__privateMethod(this,Me,xe).call(this),account:()=>__privateMethod(this,Me,Le).call(this)}),this.applied=!0,!0}undo(){return __privateGet(this,Ae).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),ds("abra:cart:changed",this.apply),__privateMethod(this,Me,Pe).call(this),this.applied=!1,!0}}var jl;Ae=new WeakMap,Me=new WeakSet,Pe=function(){"global"===this.config.template?window.Abra.Banner.hide("AbraGlobalGiftBanner"):window.Abra.Banner.hide(Wl(this.config.name))},Oe=async function(){this.config.persistentState?__privateMethod(this,Me,qe).call(this,{}):__privateMethod(this,Me,Re).call(this,{})},Ge=async function(){this.promotion&&this.cart&&(this.config.persistentState?__privateMethod(this,Me,qe).call(this,{cart:this.cart}):__privateMethod(this,Me,Re).call(this,{cart:this.cart}))},Ie=async function(){const t=Yc(),e=this.page?.findAllProductsInDOM();if(!t)return void __privateGet(this,Ae).debug("skipping element, collection not found");if(!this.cart)return void __privateGet(this,Ae).debug("skipping element, cart not found");let i;for(const n of this.validDiscounts){if(await(this.promotion?.isCollectionEntitled(t,this.cart,n.id))){i=n.id;break}let r=!1;for(const t of e??[])if(await(this.promotion?.isProductEntitled(t,null,this.cart,n.id))){r=!0;break}if(r){i=n.id;break}}i?this.config.persistentState?__privateMethod(this,Me,qe).call(this,{collectionHandle:t,discountId:i}):__privateMethod(this,Me,Re).call(this,{collectionHandle:t,discountId:i}):(__privateGet(this,Ae).debug("products on collection page aren't entitled, hiding banner"),__privateMethod(this,Me,Pe).call(this))},ke=async function(){this.config.persistentState?__privateMethod(this,Me,qe).call(this,{}):__privateMethod(this,Me,Re).call(this,{})},Le=async function(){this.config.persistentState?__privateMethod(this,Me,qe).call(this,{}):__privateMethod(this,Me,Re).call(this,{})},xe=async function(){if(!this.cart)return void __privateGet(this,Ae).debug("skipping element, cart not found");const t=Hl();if(!t)return void __privateGet(this,Ae).debug("skipping element, product handle not found");let e=null;try{const i=await Ms(t,{logger:__privateGet(this,Ae)});i&&(e=new Dc(i))}catch(r){__privateGet(this,Ae).error("product failed to fetch",{error:r})}if(!e)return void __privateGet(this,Ae).debug("skipping element, product can't be found");const i=e.getFirstOrSelectedVariant(Is())?.id;let n;for(const a of this.validDiscounts)if(await(this.promotion?.isProductEntitled(e.handle,i,this.cart,a.id))){n=a.id;break}__privateGet(this,Ae).debug(`product is entitled: ${!!n}`,{product:e,variantId:i,cart:this.cart,eligibleDiscountId:n}),n?this.config.persistentState?__privateMethod(this,Me,qe).call(this,{product:e,discountId:n}):__privateMethod(this,Me,Re).call(this,{product:e,variantId:i,discountId:n}):(__privateGet(this,Ae).debug("product isn't entitled, hiding banner"),__privateMethod(this,Me,Pe).call(this))},qe=async function({cart:t,collectionHandle:e,product:i,discountId:n}){if(!this.promotion)return;const r=this.validDiscounts,a=n??r[0]?.id??this.config.discountIds?.[0]??void 0;if(!a)return;const s=Il(this.config,a)?.at(0);if(s){const n=ql({promotion:this.promotion,cart:t,collectionHandle:e,product:i,discountId:a});s.text=ps(s.text,n),s.recommended_by&&(s.recommended_by=ps(s.recommended_by,n)),s.discount_message&&(s.discount_message=ps(s.discount_message,n)),s.message&&(s.message=ps(s.message,n)),this.promotion.affiliate&&(this.promotion.affiliate.first_name&&(s.full_name=this.promotion.affiliate.first_name+" "+(this.promotion.affiliate.last_name??"")),this.promotion.affiliate.referral_link&&(s.referral_link=this.promotion.affiliate.referral_link),this.promotion.affiliate.avatar_url&&(s.avatar_url=this.promotion.affiliate.avatar_url)),"global"===this.config.template?(__privateMethod(this,Me,Ve).call(this),window.Abra.Banner.show("AbraGlobalGiftBanner",{...s,discount:{code:this.promotion?.displayCode}})):window.Abra.Banner.show(Wl(this.config.name),{...s,discount:{code:this.promotion?.displayCode}})}},Fe=async function({variantId:t,discountId:e}){if(!this.promotion||!this.cart)return __privateGet(this,Ae).debug("no promotion or cart, hiding banner"),void __privateMethod(this,Me,Pe).call(this);const i=this.validDiscounts,n=e?i.filter(t=>t.id===e):i;for(const r of n){if(!(r instanceof ul)){__privateGet(this,Ae).debug("not a multi-effect tiered discount, skipping");continue}const e=r;if(!e||!e.discountValue||"MultiEffectTiers"!==e.discountValue.type){__privateGet(this,Ae).debug("no multi-effect tiers, skipping");continue}const i=r.id,n=await this.promotion.getCartEligibility(this.cart,t,i);if(!n){__privateGet(this,Ae).debug("no target state, skipping");continue}let a=[],s=null;"SUCCESS"===n.state?a=e.discountValue.tiers:e.discountValue.tiers.forEach((t,e)=>{const i=Number(n.state.split("TIER_").at(1)),r=e+1;rt.discounts.some(t=>"GWPDiscount"===t.type));if(0===o.length&&!s){__privateGet(this,Ae).debug("no tiers with gifts, skipping");continue}const c=o.flatMap(t=>t.discounts?.find(t=>"GWPDiscount"===t.type)?.value.products).filter(t=>!!t);let l=null;for(const t of c)if(!t.variants.find(t=>Boolean(Kc(this.cart,e.title,t.id)))){l=t;break}if(l){const t=await Ms(l.handle,{logger:__privateGet(this,Ae)});if(!t){__privateGet(this,Ae).warn("Failed to fetch pending gift product");continue}const r=this.validDiscounts,a=i??r[0]?.id??this.config.discountIds?.[0]??void 0;if(!a)continue;const s=Il(this.config,a)?.find(({state:t})=>"PENDING_SELECTION"===t);if(!s){__privateGet(this,Ae).warn("No pending selection state found");continue}const o={text:s.text,icon:s.icon,state:s.state,discount:{product:t,isMultiVariantGiftDiscount:t.variants.length>1,allGiftVariants:t.variants.filter(t=>l.variants.some(e=>e.id===t.id)),code:e.title,cart:this.cart,progress:n.progress?.percentage}};return o.discount.applyMultiVariantDiscountGiftToCart=e.applyMultiVariantDiscountGiftToCart.bind(e),void("global"===this.config.template?(__privateMethod(this,Me,Ve).call(this),window.Abra.Banner.show("AbraGlobalGiftBanner",o)):window.Abra.Banner.show(Wl(this.config.name),o))}let d=null;for(const t of c.reverse())if(t.variants.find(t=>Boolean(Kc(this.cart,e.title,t.id)))){d=t;break}if(d){const t=await Ms(d.handle,{logger:__privateGet(this,Ae)});if(!t){__privateGet(this,Ae).warn("Failed to fetch pending gift product");continue}const r=Il(this.config,i)?.find(({state:t})=>"SUCCESS"===t);if(!r){__privateGet(this,Ae).warn("No pending selection state found");continue}const a={text:r.text,icon:r.icon,state:r.state,discount:{product:t,isMultiVariantGiftDiscount:t.variants.length>1,allGiftVariants:t.variants.filter(t=>d.variants.some(e=>e.id===t.id)),code:e.title,cart:this.cart,progress:n.progress?.percentage}};return void("global"===this.config.template?(__privateMethod(this,Me,Ve).call(this),window.Abra.Banner.show("AbraGlobalGiftBanner",a)):window.Abra.Banner.show(Wl(this.config.name),a))}}__privateMethod(this,Me,Pe).call(this)},De=async function({variantId:t,discountId:e}){if(!this.promotion||!this.cart)return __privateGet(this,Ae).debug("no promotion or cart, hiding banner"),void __privateMethod(this,Me,Pe).call(this);const i=this.validDiscounts,n=e?i.filter(t=>t.id===e):i;for(const r of n){if(!(r instanceof vl)){__privateGet(this,Ae).debug("not a volume discount, skipping");continue}const e=r;if(!e||!e.discountValue||"VolumeDiscount"!==e.discountValue.type){__privateGet(this,Ae).debug("no volume discount, skipping");continue}const i=r.id,n=await this.promotion.getCartEligibility(this.cart,t,i);if(!n){__privateGet(this,Ae).debug("no target state, skipping");continue}let a=[],s=null;"SUCCESS"===n.state?a=e.discountValue.tiers:e.discountValue.tiers.forEach((t,e)=>{const i=Number(n.state.split("TIER_").at(1)),r=e+1;r"Gift"===t.value.type);if(0===o.length&&!s){__privateGet(this,Ae).debug("no tiers with gifts, skipping");continue}const c=o.flatMap(t=>t.value.products).filter(t=>!!t);let l=null;const d=e.discountValue.compound?c:[...c.reverse()];for(const t of d){if(t.variants.find(t=>Boolean(Kc(this.cart,e.title,t.id)))){if(e.discountValue.compound)continue;break}l=t;break}if(l){const t=await Ms(l.handle,{logger:__privateGet(this,Ae)});if(!t){__privateGet(this,Ae).warn("Failed to fetch pending gift product");continue}const r=Il(this.config,i)?.find(({state:t})=>"PENDING_SELECTION"===t);if(!r){__privateGet(this,Ae).warn("No pending selection state found");continue}const a={text:r.text,icon:r.icon,state:r.state,discount:{product:t,isMultiVariantGiftDiscount:t.variants.length>1,allGiftVariants:t.variants.filter(t=>l.variants.some(e=>e.id===t.id)),code:e.title,cart:this.cart,progress:n.progress?.percentage}};return a.discount.applyMultiVariantDiscountGiftToCart=e.applyMultiVariantDiscountGiftToCart.bind(e),void("global"===this.config.template?(__privateMethod(this,Me,Ve).call(this),window.Abra.Banner.show("AbraGlobalGiftBanner",a)):window.Abra.Banner.show(Wl(this.config.name),a))}let u=null;for(const t of[...c.reverse()])if(t.variants.find(t=>Boolean(Kc(this.cart,e.title,t.id)))){u=t;break}if(u){const t=await Ms(u.handle,{logger:__privateGet(this,Ae)});if(!t){__privateGet(this,Ae).warn("Failed to fetch pending gift product");continue}const r=this.validDiscounts,a=i??r.at(0)?.id??this.config.discountIds?.[0]??void 0;if(!a)continue;const s=Il(this.config,a)?.find(({state:t})=>"SUCCESS"===t);if(!s){__privateGet(this,Ae).warn("No pending selection state found");continue}const o={text:s.text,icon:s.icon,state:s.state,discount:{product:t,isMultiVariantGiftDiscount:t.variants.length>1,allGiftVariants:t.variants.filter(t=>u.variants.some(e=>e.id===t.id)),code:e.title,cart:this.cart,progress:n.progress?.percentage}};return void("global"===this.config.template?(__privateMethod(this,Me,Ve).call(this),window.Abra.Banner.show("AbraGlobalGiftBanner",o)):window.Abra.Banner.show(Wl(this.config.name),o))}}__privateMethod(this,Me,Pe).call(this)},Ve=function(){if("global"===this.config.template&&this.config.styles){document.createElement("style").setAttribute("id","abra-gift-banner-global-styles");const t={color:"--abra-banner-color",font_size:"--abra-banner-font-size",icon_color:"--abra-banner-icon-color",icon_size:"--abra-banner-icon-size",progress_bar_color:"--abra-banner-progress-bar-color",badge_background_color:"--abra-banner-badge-background",badge_border_radius:"--abra-banner-badge-border-radius",badge_color:"--abra-banner-badge-color",badge_font_size:"--abra-banner-badge-font-size",badge_icon_color:"--abra-banner-badge-icon-color",badge_icon_size:"--abra-banner-badge-icon-size",discount_background_color:"--abra-banner-discount-background",discount_padding_x:"--abra-banner-discount-padding-x",discount_padding_y:"--abra-banner-discount-padding-y",discount_price_color:"--abra-banner-discount-price-color",discount_price_font_size:"--abra-banner-discount-price-font-size",discount_title_color:"--abra-banner-discount-title-color",discount_title_font_size:"--abra-banner-discount-title-font-size",add_variant_color:"--abra-banner-variant-add-background",add_variant_text_color:"--abra-banner-variant-add-color",add_variant_disabled_color:"--abra-banner-variant-add-disabled-background",add_variant_disabled_text_color:"--abra-banner-variant-add-disabled-color"},e=Object.entries(this.config.styles).map(([e,i])=>{const n=t[e];return n?"progress_bar_color"===e&&"string"==typeof i?`\n --abra-banner-progress-bar-color: ${Ll(i,.1)};\n --abra-banner-progress-bar-active-color: ${i};\n `:`${n}: ${i}${["font_size","icon_size","badge_border_radius","badge_font_size","badge_icon_size","discount_padding_x","discount_padding_y","discount_price_font_size","discount_title_font_size"].includes(e)?"px":""};`:""}).join("\n"),i=document.getElementById("abra-gift-banner-global-styles-container");i&&i.remove();const n=document.createElement("style");n.setAttribute("id","abra-gift-banner-global-styles-container"),n.textContent=`.abra-gift-banner-global { ${e} }`;const r=document.getElementById("AbraGlobalGiftBannerContainer");r&&r.insertBefore(n,r.firstChild)}},Re=async function({cart:t,collectionHandle:e,product:i,variantId:n,discountId:r}){if(!this.promotion||!this.cart)return;const a=this.validDiscounts,s=r?a.filter(t=>t.id===r):a;for(const c of s){if("MultiEffectTiers"===c?.discountValue?.type)return __privateMethod(this,Me,Fe).call(this,{variantId:n,discountId:c.id});if("VolumeDiscount"===c?.discountValue?.type)return __privateMethod(this,Me,De).call(this,{variantId:n,discountId:c.id});const r=await this.promotion.getCartEligibility(this.cart,n,c.id);if(!r){__privateGet(this,Ae).debug("no target state, skipping");continue}const a=Il(this.config,c.id);__privateGet(this,Ae).debug(`targetting state ${r.state}`,{targetState:r,states:a});let s={...a?.find(({state:t})=>t===r.state)??{}};if(!s||!s.text){__privateGet(this,Ae).debug("no state content, skipping");continue}const l=ql({promotion:this.promotion,discountState:r,cart:t,collectionHandle:e,product:i,discountId:c.id});if(s.text=ps(s.text,l),s.recommended_by&&(s.recommended_by=ps(s.recommended_by,l)),this.promotion.affiliate&&(this.promotion.affiliate.first_name&&(s.full_name=this.promotion.affiliate.first_name+" "+(this.promotion.affiliate.last_name??"")),this.promotion.affiliate.referral_link&&(s.referral_link=this.promotion.affiliate.referral_link),this.promotion.affiliate.avatar_url&&(s.avatar_url=this.promotion.affiliate.avatar_url)),s.discount_message&&(s.discount_message=ps(s.discount_message,l)),s.message&&(s.message=ps(s.message,l)),"Gift"===c?.discountValue?.type){const t=c,e=(t?.discountValue?.products||[]).slice(0,10),i=[];for(const n of e){const t=n?.variants?.at(0),e=n?.variants;if(t)try{const r=await Ms(n.handle,{logger:__privateGet(this,Ae)});r?.variants&&ks(r.variants,t.id)&&i.push({allGiftVariants:r.variants.filter(t=>e.some(e=>e.id===t.id)),product:r})}catch(o){__privateGet(this,Ae).error("failed to fetch gift from Shopify",o)}}if(i.length>0){const e=c.discountValue?.products?.some(t=>t?.variants?.length>1);s={...s,discount:{allGiftProducts:i,allGiftVariants:i[0].allGiftVariants,product:i[0].product,progress:r.progress?.percentage,code:t.title,compound:t?.compound??!1,isMultiVariantGiftDiscount:e,addGiftMultiVariantDiscount:t?.applyMultiVariantDiscountToCart?.bind(t),addGiftDefaultDiscount:t?.applyToCart?.bind(t),cart:this.cart}}}if("global"===this.config.template)return __privateMethod(this,Me,Ve).call(this),void window.Abra.Banner.show("AbraGlobalGiftBanner",s)}return void window.Abra.Banner.show(Wl(this.config.name),s)}__privateMethod(this,Me,Pe).call(this)},$e=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(Zl,"validate",t=>({errors:!1,config:t}));var Ql="undefined"==typeof document?void 0:document,Jl=!!Ql&&"content"in Ql.createElement("template"),Kl=!!Ql&&Ql.createRange&&"createContextualFragment"in Ql.createRange();function Yl(t,e){var i,n,r=t.nodeName,a=e.nodeName;return r===a||(i=r.charCodeAt(0),n=a.charCodeAt(0),i<=90&&n>=97?r===a.toUpperCase():n<=90&&i>=97&&a===r.toUpperCase())}function Xl(t,e,i){t[i]!==e[i]&&(t[i]=e[i],t[i]?t.setAttribute(i,""):t.removeAttribute(i))}var td={OPTION:function(t,e){var i=t.parentNode;if(i){var n=i.nodeName.toUpperCase();"OPTGROUP"===n&&(n=(i=i.parentNode)&&i.nodeName.toUpperCase()),"SELECT"!==n||i.hasAttribute("multiple")||(t.hasAttribute("selected")&&!e.selected&&(t.setAttribute("selected","selected"),t.removeAttribute("selected")),i.selectedIndex=-1)}Xl(t,e,"selected")},INPUT:function(t,e){Xl(t,e,"checked"),Xl(t,e,"disabled"),t.value!==e.value&&(t.value=e.value),e.hasAttribute("value")||t.removeAttribute("value")},TEXTAREA:function(t,e){var i=e.value;t.value!==i&&(t.value=i);var n=t.firstChild;if(n){var r=n.nodeValue;if(r==i||!i&&r==t.placeholder)return;n.nodeValue=i}},SELECT:function(t,e){if(!e.hasAttribute("multiple")){for(var i,n,r=-1,a=0,s=t.firstChild;s;)if("OPTGROUP"===(n=s.nodeName&&s.nodeName.toUpperCase()))(s=(i=s).firstChild)||(s=i.nextSibling,i=null);else{if("OPTION"===n){if(s.hasAttribute("selected")){r=a;break}a++}!(s=s.nextSibling)&&i&&(s=i.nextSibling,i=null)}t.selectedIndex=r}}};function ed(){}function id(t){if(t)return t.getAttribute&&t.getAttribute("id")||t.id}var nd,rd=(nd=function(t,e){var i,n,r,a,s=e.attributes;if(11!==e.nodeType&&11!==t.nodeType){for(var o=s.length-1;o>=0;o--)n=(i=s[o]).name,a=i.value,(r=i.namespaceURI)?t.getAttributeNS(r,n=i.localName||n)!==a&&("xmlns"===i.prefix&&(n=i.name),t.setAttributeNS(r,n,a)):t.getAttribute(n)!==a&&t.setAttribute(n,a);for(var c=t.attributes,l=c.length-1;l>=0;l--)n=(i=c[l]).name,(r=i.namespaceURI)?e.hasAttributeNS(r,n=i.localName||n)||t.removeAttributeNS(r,n):e.hasAttribute(n)||t.removeAttribute(n)}},function(t,e,i){if(i||(i={}),"string"==typeof e)if("#document"===t.nodeName||"HTML"===t.nodeName||"BODY"===t.nodeName){var n=e;(e=Ql.createElement("html")).innerHTML=n}else r=(r=e).trim(),e=Jl?function(t){var e=Ql.createElement("template");return e.innerHTML=t,e.content.childNodes[0]}(r):Kl?function(t){return jl||(jl=Ql.createRange()).selectNode(Ql.body),jl.createContextualFragment(t).childNodes[0]}(r):function(t){var e=Ql.createElement("body");return e.innerHTML=t,e.childNodes[0]}(r);else 11===e.nodeType&&(e=e.firstElementChild);var r,a=i.getNodeKey||id,s=i.onBeforeNodeAdded||ed,o=i.onNodeAdded||ed,c=i.onBeforeElUpdated||ed,l=i.onElUpdated||ed,d=i.onBeforeNodeDiscarded||ed,u=i.onNodeDiscarded||ed,h=i.onBeforeElChildrenUpdated||ed,p=i.skipFromChildren||ed,_=i.addChild||function(t,e){return t.appendChild(e)},f=!0===i.childrenOnly,g=Object.create(null),v=[];function b(t){v.push(t)}function m(t,e){if(1===t.nodeType)for(var i=t.firstChild;i;){var n=void 0;e&&(n=a(i))?b(n):(u(i),i.firstChild&&m(i,e)),i=i.nextSibling}}function w(t,e,i){!1!==d(t)&&(e&&e.removeChild(t),u(t),m(t,i))}function y(t){if(1===t.nodeType||11===t.nodeType)for(var e=t.firstChild;e;){var i=a(e);i&&(g[i]=e),y(e),e=e.nextSibling}}function S(t){o(t);for(var e=t.firstChild;e;){var i=e.nextSibling,n=a(e);if(n){var r=g[n];r&&Yl(e,r)?(e.parentNode.replaceChild(r,e),C(r,e)):S(e)}else S(e);e=i}}function C(t,e,i){var n=a(e);if(n&&delete g[n],!i){var r=c(t,e);if(!1===r)return;if(r instanceof HTMLElement&&y(t=r),nd(t,e),l(t),!1===h(t,e))return}"TEXTAREA"!==t.nodeName?function(t,e){var i,n,r,o,c,l=p(t,e),d=e.firstChild,u=t.firstChild;t:for(;d;){for(o=d.nextSibling,i=a(d);!l&&u;){if(r=u.nextSibling,d.isSameNode&&d.isSameNode(u)){d=o,u=r;continue t}n=a(u);var h=u.nodeType,f=void 0;if(h===d.nodeType&&(1===h?(i?i!==n&&((c=g[i])?r===c?f=!1:(t.insertBefore(c,u),n?b(n):w(u,t,!0),n=a(u=c)):f=!1):n&&(f=!1),(f=!1!==f&&Yl(u,d))&&C(u,d)):3!==h&&8!=h||(f=!0,u.nodeValue!==d.nodeValue&&(u.nodeValue=d.nodeValue))),f){d=o,u=r;continue t}n?b(n):w(u,t,!0),u=r}if(i&&(c=g[i])&&Yl(c,d))l||_(t,c),C(c,d);else{var v=s(d);!1!==v&&(v&&(d=v),d.actualize&&(d=d.actualize(t.ownerDocument||Ql)),_(t,d),S(d))}d=o,u=r}!function(t,e,i){for(;e;){var n=e.nextSibling;(i=a(e))?b(i):w(e,t,!0),e=n}}(t,u,n);var m=td[t.nodeName];m&&m(t,e)}(t,e):td.TEXTAREA(t,e)}y(t);var E,T,A=t,M=A.nodeType,P=e.nodeType;if(!f)if(1===M)1===P?Yl(t,e)||(u(t),A=function(t,e){for(var i=t.firstChild;i;){var n=i.nextSibling;e.appendChild(i),i=n}return e}(t,(E=e.nodeName,(T=e.namespaceURI)&&"http://www.w3.org/1999/xhtml"!==T?Ql.createElementNS(T,E):Ql.createElement(E)))):A=e;else if(3===M||8===M){if(P===M)return A.nodeValue!==e.nodeValue&&(A.nodeValue=e.nodeValue),A;A=e}if(A===e)u(t);else{if(e.isSameNode&&e.isSameNode(A))return;if(C(A,e,f),v)for(var O=0,G=v.length;O{e.querySelectorAll(t).forEach(t=>{i.push(t)}),e.querySelectorAll("*").forEach(t=>{t.shadowRoot&&n(t.shadowRoot)})};return n(e),i}const ld={onBeforeElUpdated:function(t,e){return!t.isEqualNode(e)}};class dd{constructor(t,e){__privateAdd(this,Be),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"morphels"),__publicField(this,"promotion"),__privateAdd(this,Ne),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"linePriceMode"),__publicField(this,"priceMode"),__publicField(this,"type"),this.id=t,this.type=e.type,__privateSet(this,Ne,os.createSubLogger(`blocks/cart-item/${t}`)),this.applied=!1,this.cart=null,this.promotion=null,this.config=e,this.morphels=[],this.linePriceMode=Rl(e.html,"compare_at_line_price")?"compare_at":"original",this.priceMode=Rl(e.html,"compare_at_price")?"compare_at":"original",this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}async apply(t={}){return __privateGet(this,Ne).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Be,We).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.applied=await __privateMethod(this,Be,He).call(this),this.applied}undo(){this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.morphels)t.restore();return this.applied=!1,this.morphels=[],!0}}Ne=new WeakMap,Be=new WeakSet,He=async function(){if(!(this.config.item&&this.config.selector&&this.config.html&&this.cart&&this.promotion))return __privateGet(this,Ne).debug("block is missing data",{config:this.config,cart:this.cart,promotion:this.promotion}),!1;const t=Gl(this.promotion,this.config);let e;for(const n of t)if(await this.promotion.isCartEligible(this.cart,n.id)){e=n.id;break}if(!e){__privateGet(this,Ne).debug("cart isn't eligible");for(const t of this.morphels)t.restore();return!0}const i=cd(this.config.item);for(let n=0;nt.el)),o=Array.from(a).filter(t=>!s.has(t)).map(t=>new sd(t)),c=await this.promotion.isShownInCartItem(this.type,t,this.cart,e),l=await this.promotion.isCartItemEntitled(this.cart,t,e);if(!t||!c||!l){for(const t of o)t.restore();__privateGet(this,Ne).debug("cart item isn't entitled");continue}if(!t.discounted){for(const t of o)t.restore();__privateGet(this,Ne).debug("skipping element, cart item isn't discounted");continue}r.setAttribute("data-abra-item",this.config.item),r.setAttribute("data-abra-block",this.config.type);const{linePrice:d}=t,u=t.price.toJSON(),h=t.unitPrice?.toJSON();r.shadowRoot&&r.shadowRoot.querySelectorAll(this.config.selector).forEach(t=>{a.push(t)});for(const i of o){const n=ps(this.config.html,Dl({promotion:this.promotion,linePriceMode:this.linePriceMode,priceMode:this.priceMode,linePrice:d,price:u,unitPrice:h,cartItem:t,discountId:e}));i.morph(n,ld),i.el.setAttribute("data-abra-selector",this.config.selector),i.el.setAttribute("data-abra-block",this.config.type)}this.morphels.push(...o)}return!0},We=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(dd,"validate",t=>{const e=[];return t.item||e.push("'item' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class ud{constructor(t,e,i){__privateAdd(this,Ue),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"morphels"),__publicField(this,"promotion"),__privateAdd(this,ze),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"priceMode"),__publicField(this,"type"),this.id=t,this.type=e.type,__privateSet(this,ze,os.createSubLogger(`blocks/cart/${t}`)),this.applied=!1,this.config=e,this.cart=null,this.promotion=null,this.morphels=[];const n=Object.values(i.blocks).some(t=>"cart-item"===t.type&&Rl(t.html,"compare_at_line_price","compare_at_price"));this.priceMode=n?"compare_at":"original",this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}async apply(t={}){return __privateGet(this,ze).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Ue,Qe).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.applied=await __privateMethod(this,Ue,Ze).call(this),this.applied}undo(){__privateGet(this,ze).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.morphels)t.restore();return this.applied=!1,this.morphels=[],!0}}ze=new WeakMap,Ue=new WeakSet,Ze=async function(){if(!(this.promotion&&this.cart&&this.config.selector&&this.config.html))return!1;const t=Gl(this.promotion,this.config);let e;for(const n of t)if(await this.promotion.isCartEligible(this.cart,n.id)){e=n.id;break}if(!e){__privateGet(this,ze).debug("cart isn't eligible");for(const t of this.morphels)t.restore();return!0}__privateMethod(this,Ue,je).call(this);const i=this.cart.subtotalPrice.toJSON();for(const n of this.morphels){const t=ps(this.config.html,Fl({priceMode:this.priceMode,promotion:this.promotion,subtotalPrice:i,discountId:e}));n.morph(t,ld),n.el.setAttribute("data-abra-selector",this.config.selector),n.el.setAttribute("data-abra-block",this.config.type)}return!0},je=function(){if(this.config.selector){const t=cd(this.config.selector),e=new Set(this.morphels.map(t=>t.el));t.forEach(t=>{e.has(t)||this.morphels.push(new sd(t))})}},Qe=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(ud,"validate",t=>{const e=[];return t.selector||e.push("'selector' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class hd{constructor(t,e,i){__privateAdd(this,Ke),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"promotion"),__privateAdd(this,Je),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"page"),__publicField(this,"type"),__privateSet(this,Je,os.createSubLogger("blocks/dynamic-text")),this.applied=!1,this.cart=null,this.config=e,this.config.name=Wl(this.config.name),this.id=t,this.page=i.page,this.promotion=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,Je).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Ke,si).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.page?.fullName&&await Ul(this.page.fullName,{all:()=>__privateMethod(this,Ke,Ye).call(this),cart:()=>__privateMethod(this,Ke,Xe).call(this),collection:()=>__privateMethod(this,Ke,ti).call(this),index:()=>__privateMethod(this,Ke,ei).call(this),product:()=>__privateMethod(this,Ke,ni).call(this),account:()=>__privateMethod(this,Ke,ii).call(this)}),this.applied=!0,!0}undo(){return __privateGet(this,Je).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),window.Abra.DynamicText.hide(this.config.name),this.applied=!1,!0}}Je=new WeakMap,Ke=new WeakSet,Ye=async function(){this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{}):await __privateMethod(this,Ke,ai).call(this,{})},Xe=async function(){this.promotion&&this.cart&&(this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{cart:this.cart}):await __privateMethod(this,Ke,ai).call(this,{cart:this.cart}))},ti=async function(){const t=Yc(),e=this.page?.findAllProductsInDOM();if(!t)return void __privateGet(this,Je).debug("skipping element, collection not found");if(!this.cart)return void __privateGet(this,Je).debug("skipping element, cart not found");let i;for(const n of this.validDiscounts){if(await(this.promotion?.isCollectionEntitled(t,this.cart,n.id))){i=n.id;break}let r=!1;for(const t of e??[])if(await(this.promotion?.isProductEntitled(t,null,this.cart,n.id))){r=!0;break}if(r){i=n.id;break}}i?this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{collectionHandle:t,discountId:i}):await __privateMethod(this,Ke,ai).call(this,{collectionHandle:t,discountId:i}):window.Abra.DynamicText.hide(this.config.name)},ei=async function(){this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{}):await __privateMethod(this,Ke,ai).call(this,{})},ii=async function(){this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{}):await __privateMethod(this,Ke,ai).call(this,{})},ni=async function(){const t=Hl();if(!t)return void __privateGet(this,Je).debug("skipping element, product handle not found");let e,i=null;try{const e=await Ms(t,{logger:__privateGet(this,Je)});e&&(i=new Dc(e))}catch(n){__privateGet(this,Je).error("product failed to fetch",{error:n})}if(i){for(const t of this.validDiscounts)if(await(this.promotion?.isProductEntitled(i.handle,i.getFirstOrSelectedVariant(Is()).id,this.cart,t.id))){e=t.id;break}e?this.config.persistentState?__privateMethod(this,Ke,ri).call(this,{product:i,discountId:e}):await __privateMethod(this,Ke,ai).call(this,{product:i,discountId:e}):(__privateGet(this,Je).debug("product isn't entitled, hiding dynamic-text"),window.Abra.DynamicText.hide(this.config.name))}else __privateGet(this,Je).debug("skipping element, product can't be found")},ri=function({cart:t,collectionHandle:e,product:i,discountId:n}){if(!this.promotion)return void window.Abra.DynamicText.hide(this.config.name);const r=this.validDiscounts,a=n??r[0]?.id??this.config.discountIds?.[0]??void 0;if(!a)return void window.Abra.DynamicText.hide(this.config.name);const s=Il(this.config,a)?.at(0);s?(s.text=ps(s.text,ql({promotion:this.promotion,cart:t,collectionHandle:e,product:i,discountId:a})),window.Abra.DynamicText.show(this.config.name,s)):window.Abra.DynamicText.hide(this.config.name)},ai=async function({cart:t,collectionHandle:e,product:i,discountId:n}){if(!this.promotion||!this.cart)return;const r=this.validDiscounts,a=n?r.filter(t=>t.id===n):r;for(const s of a){const n=await this.promotion.getCartEligibility(this.cart,void 0,s.id);if(!n)continue;const r=Il(this.config,s.id)?.find(({state:t})=>t===n.state);if(r)return r.text=ps(r.text,ql({promotion:this.promotion,discountState:n,cart:t,collectionHandle:e,product:i,discountId:s.id})),void window.Abra.DynamicText.show(this.config.name,r)}window.Abra.DynamicText.hide(this.config.name)},si=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(hd,"validate",t=>({errors:!1,config:t}));class pd{constructor(t,e){__privateAdd(this,ci),__publicField(this,"applied"),__publicField(this,"elements"),__privateAdd(this,oi),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"type"),__privateSet(this,oi,os.createSubLogger(`blocks/hide/${t}`)),this.applied=!1,this.config=e,this.id=t,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}apply(){return __privateGet(this,oi).debug("applying",{id:this.id,config:this.config}),__privateMethod(this,ci,li).call(this),this.config.onevent&&ls(this.config.onevent,this.apply),this.elements?.forEach(t=>{t.setAttribute("data-abra-selector",this.config.selector),t.setAttribute("data-abra-block",this.config.type),t.classList.add("abra-hide")}),this.applied=!0,!0}undo(){return __privateGet(this,oi).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),this.elements?.forEach(t=>{t.removeAttribute("data-abra-selector"),t.removeAttribute("data-abra-block"),t.classList.remove("abra-hide")}),this.applied=!1,!0}}oi=new WeakMap,ci=new WeakSet,li=function(){return this.elements=document.querySelectorAll(this.config.selector),this},__publicField(pd,"validate",t=>{const e=[];return t.selector||e.push("'selector' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class _d{constructor(t,e){__privateAdd(this,ui),__publicField(this,"applied"),__publicField(this,"morphels"),__publicField(this,"promotion"),__privateAdd(this,di),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"type"),__publicField(this,"cart"),__privateSet(this,di,os.createSubLogger(`blocks/money/${t}`)),this.applied=!1,this.config=e,this.id=t,this.morphels=[],this.promotion=null,this.cart=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,di).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,ui,gi).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.applied=await __privateMethod(this,ui,pi).call(this),this.applied}undo(){__privateGet(this,di).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.morphels)t.restore();return this.applied=!1,this.morphels=[],!0}}di=new WeakMap,ui=new WeakSet,hi=function(){const t=document.querySelectorAll(this.config.selector),e=new Set(this.morphels.map(t=>t.el));return t.forEach(t=>{e.has(t)||this.morphels.push(new sd(t))}),this},pi=async function(){__privateMethod(this,ui,hi).call(this);for(const e of this.morphels){const i=e.el.getAttribute("data-abra-block");if("cart"===i||"cart-item"===i||"product"===i){__privateGet(this,di).debug(`skipping element, ${i} takes precedence`);continue}const n=e.el.getAttribute("data-product-handle")?e.el.getAttribute("data-product-handle"):Hl(e.el,this.config.container);if(!n){__privateGet(this,di).debug("skipping element, product handle not found",{element:e.el});continue}let r,a=null,s=null;try{const t=await Ms(n,{logger:__privateGet(this,di)});t&&(a=new Dc(t),s=__privateMethod(this,ui,_i).call(this,e,a))}catch(t){__privateGet(this,di).error("product failed to fetch",{error:t})}if(a)if(s)if(this.promotion)if(this.cart){for(const t of this.validDiscounts){const e=await this.promotion.isShownInProduct(this.type,n,s,this.cart,t.id),i=await this.promotion.isProductEntitledToReceiveDiscount(a,s,this.cart,t.id);if(e&&i){r=t.id;break}}if(r){if(this.config.html){let t=e.el;this.config.price&&(t=e.el.querySelector(this.config.price)??e.el);const i=__privateMethod(this,ui,fi).call(this,t,s),n=i?await(this.promotion?.applyToPrice(new Ec(i),a,s,this.cart)):void 0;if(!n){__privateGet(this,di).debug("skipping element, final price coudn't be calculated",{element:e.el,money:i});continue}const o=n.toJSON(),c=this.promotion.getDiscountById(r),l=ps(this.config.html,{code:c?.title??"",currency:{iso_code:window.Abra.currency},final_price:kc(o.final),original_price:kc(o.original),redeemCode:c?.title??"",total_discount:kc(o.originalTotalDiscount),total_discount_dollar:kc(o.originalTotalDiscount),total_discount_percentage:gc(o.originalTotalDiscount/o.original*100).toString()+"%"});e.morph(l,ld),e.el.setAttribute("data-abra-selector",this.config.selector),e.el.setAttribute("data-abra-block",this.config.type),i&&t.setAttribute("data-abra-money",`${s}:${i}`),this.config.price&&e.el.setAttribute("data-abra-price-selector",this.config.price)}e.el.setAttribute("data-product-handle",n)}else e.restore(),this.morphels=this.morphels.filter(t=>t!==e),__privateGet(this,di).debug("skipping element, product isn't entitled to any discount",{element:e.el})}else __privateGet(this,di).debug("skipping element, cart not found",{element:e.el});else __privateGet(this,di).debug("skipping element, promotion not found",{element:e.el});else __privateGet(this,di).debug("skipping element, variant not found",{element:e.el});else __privateGet(this,di).debug("skipping element, product not found",{element:e.el})}return!0},_i=function(t,e){const i=t.el.getAttribute("data-variant-id"),n=Is();return i||n||(e.variants.length?e.variants[0].id:null)},fi=function(t,e){const i=t.getAttribute("data-abra-money");if(i){const[t,n]=i.split(":");if(t==e&&n)return __privateGet(this,di).debug("using data-abra-money value",{attribute:i}),parseInt(n,10)}return __privateGet(this,di).debug("using text content value",{textContent:t.textContent}),t.textContent?function(t){const e=function(t){const e=/\d(\.|\d|,)*/gm.exec(t);return e?e[0]:void 0}(t);return e?function(t){if("number"==typeof t)return t;const{thousandsMark:e,decimalMark:i}=function(t){switch(t){case"ANG":case"ARS":case"BRL":case"CLF":case"CLP":case"COP":case"CRC":case"DKK":case"EUR":case"HRK":case"IDR":case"ISK":case"MZN":case"NOK":case"RON":case"RUB":case"TRY":case"UYU":case"VES":case"VND":return{thousandsMark:".",decimalMark:","};default:return{thousandsMark:",",decimalMark:"."}}}(Pc()),n=t.replaceAll(e,"").split(i);if(!n[0]||!n[1])return void Ac.debug("money couldn't be parsed",{amount:t,thousandsMark:e,decimalMark:i,parts:n});const r=n[1].length;return parseInt(n[0],10)*Math.pow(10,r)+parseInt(n[1],10)}(e):void 0}(t.textContent):void 0},gi=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(_d,"validate",t=>{const e=[];return t.container||e.push("'container' is required"),t.selector||e.push("'selector' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class fd{constructor(t,e){__privateAdd(this,bi),__publicField(this,"applied"),__publicField(this,"promotion"),__privateAdd(this,vi),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"type"),__privateSet(this,vi,os.createSubLogger("blocks/popup")),this.applied=!1,this.config=e,this.id=t,this.promotion=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}apply(t={}){if(__privateGet(this,vi).debug("applying",{id:this.id,config:this.config}),__privateMethod(this,bi,mi).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.config.persistentState){const t=this.config.states?.at(0);t&&(t.text=ps(t.text,{code:this.promotion?.title}),window.Abra.Popup.show(t))}return this.applied=!0,!0}undo(){return __privateGet(this,vi).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),window.Abra.Popup.hide(),this.applied=!1,!0}}vi=new WeakMap,bi=new WeakSet,mi=function(t){this.promotion=t.promotion??Sl()},__publicField(fd,"validate",t=>({errors:!1,config:t}));class gd{constructor(t,e){__privateAdd(this,yi),__publicField(this,"applied"),__publicField(this,"morphels"),__publicField(this,"promotion"),__privateAdd(this,wi),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"priceMode"),__publicField(this,"type"),__publicField(this,"cart"),__privateSet(this,wi,os.createSubLogger(`blocks/product/${t}`)),this.applied=!1,this.config=e,this.id=t,this.morphels=[],this.promotion=null,this.cart=null,this.type=e.type,this.priceMode=Rl(e.html,"compare_at_price","selected_variant.compare_at_price","selected_variant.selected_selling_plan_or_variant.compare_at_price","selected_variant.selected_selling_plan.compare_at_price")?"compare_at":"original",this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,wi).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,yi,Ti).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.applied=await __privateMethod(this,yi,Ci).call(this),this.applied}undo(){__privateGet(this,wi).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.morphels)t.restore();return this.applied=!1,this.morphels=[],!0}}wi=new WeakMap,yi=new WeakSet,Si=function(){const t=cd(this.config.selector),e=new Set(this.morphels.map(t=>t.el));return t.forEach(t=>{e.has(t)||this.morphels.push(new sd(t))}),this},Ci=async function(){__privateMethod(this,yi,Si).call(this);for(const e of this.morphels){const i=e.el.getAttribute("data-abra-block");if("cart"===i||"cart-item"===i){__privateGet(this,wi).debug(`skipping element, ${i} takes precedence`);continue}const n=e.el.getAttribute("data-product-handle")?e.el.getAttribute("data-product-handle"):Hl(e.el,this.config.container);if(!n){__privateGet(this,wi).debug("skipping element, product handle not found",{element:e.el});continue}const r=e.el.getAttribute("data-variant-id")?e.el.getAttribute("data-variant-id"):Is(e.el,this.config.container,n);let a=null;try{const t=await Ms(n,{logger:__privateGet(this,wi)});t&&(a=new Dc(t))}catch(t){__privateGet(this,wi).error("product failed to fetch",{error:t})}if(!a){console.log("product not found",{handle:n}),__privateGet(this,wi).debug("skipping element, product can't be found",{element:e.el});continue}let s,o=a.getFirstOrSelectedVariant(r);if(!this.promotion){console.log("promotion not found",{handle:n}),__privateGet(this,wi).debug("skipping element, promotion not found",{element:e.el});continue}if(!this.cart){console.log("cart not found",{handle:n}),__privateGet(this,wi).debug("skipping element, cart not found",{element:e.el});continue}for(const t of this.validDiscounts){const e=await this.promotion.isProductEntitledToReceiveDiscount(a,o.id,this.cart,t.id),i=await this.promotion.isProductEntitled(a.handle,o.id,this.cart,t.id);if(e&&i){s=t.id;break}}if(!s){e.restore(),this.morphels=this.morphels.filter(t=>t!==e),__privateGet(this,wi).debug("skipping element, product isn't entitled to any discount",{element:e.el});continue}if(!(await this.promotion.isShownInProduct(this.type,a.handle,o.id,this.cart,s))){e.restore(),this.morphels=this.morphels.filter(t=>t!==e),__privateGet(this,wi).debug("skipping element, promotion isn't shown on product page",{element:e.el});continue}if(await this.promotion.applyToProduct(a,o.id,this.cart),o=a.getFirstOrSelectedVariant(r),!(a.discounted||this.config.html?.includes("selected_selling_plan")&&o?.sellingPlanPrice?.discounted)){e.restore(),this.morphels=this.morphels.filter(t=>t!==e),__privateGet(this,wi).debug("skipping element, product and selling plan isn't discounted");continue}const c=a.getPrice(o.id)?.toJSON(),l=a.getUnitPrice(o.id)?.toJSON(),d=a.getUnitPriceMeasurement(o.id),u=o.price?.toJSON(),h=o.unitPrice?.toJSON();if(c&&u&&this.config.html){const t=Vl({finalPrice:__privateMethod(this,yi,Ei).call(this,a,c),priceMode:this.priceMode,product:a,productPrice:c,productUnitPrice:l,productUnitPriceMeasurement:d,promotion:this.promotion,selectedVariant:o,variantPrice:u,variantUnitPrice:h,discountId:s});let i=this.config.html;"subcultured.myshopify.com"===window.Shopify.shop&&(a.discounted||window.Abra.useSellingPlanPriceOnProductBlock||!i.includes("selected_selling_plan_or_variant")||(i='
Sale price
{{ selected_variant.selected_selling_plan_or_variant.final_price }} {{ currency.iso_code }}
'));const n=ps(i,t);e.morph(n,ld),e.el.shadowRoot&&"OG-PRICE"===e.el.tagName.toUpperCase()&&(e.el.shadowRoot.innerHTML=ps('{{ selected_variant.selected_selling_plan_or_variant.final_price }}',t)),e.el.setAttribute("data-abra-selector",this.config.selector),e.el.setAttribute("data-abra-block",this.config.type)}const p=["nobulldev.myshopify.com","nobull.myshopify.com"].includes(window.Shopify.shop),_=["rothysretheme.myshopify.com","rothys-us-staging.myshopify.com","rothys.myshopify.com"].includes(window.Shopify.shop),f="gods-fingerprints.myshopify.com"===window.Shopify.shop,g="ombrelab.myshopify.com"===window.Shopify.shop;(!p&&!_&&!f&&!g||_&&"product"!==window.Abra.template?.name&&"page"!==window.Abra.template?.name)&&e.el.setAttribute("data-product-handle",n)}return!0},Ei=function(t,e){let i="";return e.final&&(i=kc(e.final),t.doesPriceVary()&&window.Abra.settings?.translations?.final_price_varies&&(i=ps(window.Abra.settings.translations.final_price_varies,{price:i}))),i},Ti=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(gd,"validate",t=>{const e=[];return t.selector||e.push("'selector' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class vd{constructor(t,e){__privateAdd(this,Mi),__publicField(this,"applied"),__publicField(this,"elements"),__privateAdd(this,Ai),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"type"),__privateSet(this,Ai,os.createSubLogger("blocks/add-class")),this.applied=!1,this.config=e,this.elements=[],this.id=t,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}apply(){__privateGet(this,Ai).debug("applying",{id:this.id,config:this.config}),this.config.onevent&&ls(this.config.onevent,this.apply),__privateMethod(this,Mi,Pi).call(this);for(const t of this.elements)t.setAttribute("data-abra-selector",this.config.selector),t.setAttribute("data-abra-block",this.config.type),t.classList.remove(this.config.value);return this.applied=!0,!0}undo(){__privateGet(this,Ai).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply);for(const t of this.elements)t.removeAttribute("data-abra-selector"),t.removeAttribute("data-abra-block"),t.classList.add(this.config.value);return this.elements=[],this.applied=!1,!0}}Ai=new WeakMap,Mi=new WeakSet,Pi=function(){return this.elements=Array.from(document.querySelectorAll(this.config.selector)),this},__publicField(vd,"validate",t=>{const e=[];return t.selector||e.push("'selector' is required"),t.value||e.push("'value' is required"),e.length>0?{errors:e,config:t}:{errors:!1,config:t}});class bd{constructor(t,e,i){__privateAdd(this,Gi),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"promotion"),__privateAdd(this,Oi),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"page"),__publicField(this,"type"),__privateSet(this,Oi,os.createSubLogger("blocks/html-banner")),this.applied=!1,this.cart=null,this.config=e,this.config.name=Wl(this.config.name),this.id=t,this.page=i.page,this.promotion=null,this.type=e.type,this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,Oi).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Gi,Di).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),this.page?.fullName&&await Ul(this.page.fullName,{all:()=>__privateMethod(this,Gi,Ii).call(this),cart:()=>__privateMethod(this,Gi,ki).call(this),collection:()=>__privateMethod(this,Gi,Li).call(this),index:()=>__privateMethod(this,Gi,xi).call(this),product:()=>__privateMethod(this,Gi,Fi).call(this),account:()=>__privateMethod(this,Gi,qi).call(this)}),this.applied=!0,!0}undo(){return __privateGet(this,Oi).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),window.Abra.HtmlBanner.hide(this.config.name),this.applied=!1,!0}}Oi=new WeakMap,Gi=new WeakSet,Ii=async function(){this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{}):__privateMethod(this,Gi,Ri).call(this)},ki=async function(){this.promotion&&this.cart&&(this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{cart:this.cart}):__privateMethod(this,Gi,Ri).call(this))},Li=async function(){const t=Yc(),e=this.page?.findAllProductsInDOM();if(!t)return void __privateGet(this,Oi).debug("skipping element, collection not found");if(!this.cart)return void __privateGet(this,Oi).debug("skipping element, cart not found");let i;for(const n of this.validDiscounts){if(await(this.promotion?.isCollectionEntitled(t,this.cart,n.id))){i=n.id;break}let r=!1;for(const t of e??[])if(await(this.promotion?.isProductEntitled(t,null,this.cart,n.id))){r=!0;break}if(r){i=n.id;break}}i?this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{collectionHandle:t,discountId:i}):__privateMethod(this,Gi,Ri).call(this):(__privateGet(this,Oi).debug("products on collection page aren't entitled, hiding html banner"),window.Abra.HtmlBanner.hide(this.config.name))},xi=async function(){this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{}):__privateMethod(this,Gi,Ri).call(this)},qi=async function(){this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{}):__privateMethod(this,Gi,Ri).call(this)},Fi=async function(){const t=Hl();if(!t)return void __privateGet(this,Oi).debug("skipping element, product handle not found");let e,i=null;try{const e=await Ms(t,{logger:__privateGet(this,Oi)});e&&(i=new Dc(e))}catch(n){__privateGet(this,Oi).error("product failed to fetch",{error:n})}if(i)if(this.cart){for(const t of this.validDiscounts)if(await(this.promotion?.isProductEntitled(i.handle,i.getFirstOrSelectedVariant(Is()).id,this.cart,t.id))){e=t.id;break}e?this.config.persistentState?__privateMethod(this,Gi,Vi).call(this,{product:i,discountId:e}):__privateMethod(this,Gi,Ri).call(this):(__privateGet(this,Oi).debug("product isn't entitled, hiding html banner"),window.Abra.HtmlBanner.hide(this.config.name))}else __privateGet(this,Oi).debug("skipping element, cart not found");else __privateGet(this,Oi).debug("skipping element, product can't be found")},Di=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},Vi=function({cart:t,collectionHandle:e,product:i,discountId:n}){if(!this.promotion)return;const r=this.validDiscounts,a=n??r[0]?.id??this.config.discountIds?.[0]??void 0;if(!a)return;const s=Il(this.config,a)?.at(0);s&&s.html?(s.html=ps(s.html,ql({promotion:this.promotion,cart:t,collectionHandle:e,product:i,discountId:a})),window.Abra.HtmlBanner.show(this.config.name,s)):window.Abra.HtmlBanner.hide(this.config.name)},Ri=function(){},__publicField(bd,"validate",t=>({errors:!1,config:t}));class md{constructor(t,e,i){__privateAdd(this,Ni),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"promotion"),__privateAdd(this,$i),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"page"),__publicField(this,"type"),__privateSet(this,$i,os.createSubLogger("blocks/multi-effect-tiered-banner")),this.applied=!1,this.cart=null,this.config=e,this.id=t,this.page=i.page,this.promotion=null,this.type=this.config.type,this.config.name=Wl(this.config.name),this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,$i).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Ni,Ji).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),"global"===this.config.template?await __privateMethod(this,Ni,Wi).call(this):this.page?.fullName&&await Ul(this.page.fullName,{all:()=>__privateMethod(this,Ni,Hi).call(this),cart:()=>__privateMethod(this,Ni,Wi).call(this),collection:()=>__privateMethod(this,Ni,zi).call(this),index:()=>__privateMethod(this,Ni,Ui).call(this),product:()=>__privateMethod(this,Ni,ji).call(this),account:()=>__privateMethod(this,Ni,Zi).call(this)}),this.applied=!0,!0}undo(){return __privateGet(this,$i).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),__privateMethod(this,Ni,Bi).call(this),this.applied=!1,!1}}$i=new WeakMap,Ni=new WeakSet,Bi=function(){"global"===this.config.template?window.Abra.TieredBanner.hideMultiEffect("AbraGlobalTieredBanner"):window.Abra.TieredBanner.hideMultiEffect(this.config.name)},Hi=async function(){this.promotion&&this.cart&&(this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{cart:this.cart}))},Wi=async function(){this.promotion&&this.cart&&(this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{cart:this.cart}))},zi=async function(){const t=Yc(),e=this.page?.findAllProductsInDOM();if(!t)return void __privateGet(this,$i).debug("skipping element, collection not found");if(!this.cart)return void __privateGet(this,$i).debug("skipping element, cart not found");let i;for(const n of this.validDiscounts){if(await(this.promotion?.isCollectionEntitled(t,this.cart,n.id))){i=n.id;break}let r=!1;for(const t of e??[])if(await(this.promotion?.isProductEntitled(t,null,this.cart,n.id))){r=!0;break}if(r){i=n.id;break}}i||"global"===this.config.template?this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{collectionHandle:t,discountId:i}):(__privateGet(this,$i).debug("products on collection page aren't entitled, hiding multi-class tier banner"),__privateMethod(this,Ni,Bi).call(this))},Ui=async function(){this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{})},Zi=async function(){this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{})},ji=async function(){const t=Hl();if(!t)return void __privateGet(this,$i).debug("skipping element, product handle not found");let e,i=null;try{const e=await Ms(t,{logger:__privateGet(this,$i)});e&&(i=new Dc(e))}catch(r){__privateGet(this,$i).error("product failed to fetch",{error:r})}if(!i)return void __privateGet(this,$i).debug("skipping element, product can't be found");const n=i.getFirstOrSelectedVariant(Is()).id;for(const a of this.validDiscounts)if(await(this.promotion?.isProductEntitled(i.handle,n,this.cart,a.id))){e=a.id;break}e||"global"===this.config.template?this.config.persistentState||await __privateMethod(this,Ni,Qi).call(this,{product:i,variantId:n,discountId:e}):(__privateGet(this,$i).debug("product isn't entitled, hiding multi-class tier banner"),__privateMethod(this,Ni,Bi).call(this))},Qi=async function({collectionHandle:t,product:e,variantId:i,discountId:n}){if(!this.promotion||!this.cart)return;const r=this.validDiscounts,a=n?r.filter(t=>t.id===n):r;for(const o of a){const n=await this.promotion.getCartEligibility(this.cart,i,o.id);if(!n){__privateGet(this,$i).debug("no target state, skipping");continue}const r=Il(this.config,o.id);__privateGet(this,$i).debug(`targetting state ${n.state}`,{targetState:n,states:r});const a={...r?.find(({state:t})=>t===n.state)??{}};if(!a){__privateGet(this,$i).debug("no state content, skipping");continue}const c=ql({promotion:this.promotion,discountState:n,cart:this.cart,collectionHandle:t,product:e,discountId:o.id}),l=o,d=l.discountValue,u=document.querySelector(`abra-tiered-banner[data-name="${this.config.name}"]`)||document.querySelector('abra-tiered-banner[data-name="AbraGlobalTieredBanner"]'),h=u?.getAttribute("data-reward-tier-display")||"current";let p=n.state;if(p&&p.startsWith("TIER_")){const t=parseInt(p.split("TIER_")[1]||"1",10);if("next"===h)p=`TIER_${t}`;else{let e=t-1;e<1&&(e=1),p=`TIER_${e}`}}const _=Il(this.config,o.id)?.find(t=>t.state===p);a.text=ps(_?.text??a.text,c),a.tier_summary=ps(_?.tier_summary??a.tier_summary,c),a.progress=n.progress,a.state=n.state,a.discountValue=d;const f={},g=Il(this.config,o.id);g&&g.forEach((t,e)=>{t.icon&&(f[e]=t.icon)}),a.tierIcons=f;const v=[];if(d)if("MultiEffectTiers"===d.type&&d.tiers&&d.tiers.length>0){for(const t of d.tiers)for(const e of t.discounts)if(e.type===Tc.GWPDiscount)for(const t of e.value.products)try{const e=await Ms(t.handle,{logger:__privateGet(this,$i)});if(e){const i=new Dc(e);i.variants=i.variants.filter(e=>t.variants.some(t=>t.id===e.id)),v.push(i)}}catch(s){__privateGet(this,$i).error("product failed to fetch",{error:s})}}else if("VolumeDiscount"===d.type&&d.tiers&&d.tiers.length>0)for(const t of d.tiers)if("Gift"===t.value.type)for(const e of t.value.products??[])try{const t=await Ms(e.handle,{logger:__privateGet(this,$i)});if(t){const i=new Dc(t);i.variants=i.variants.filter(t=>e.variants.some(e=>e.id===t.id)),v.push(i)}}catch(s){__privateGet(this,$i).error("product failed to fetch",{error:s})}if(a.giftProducts=v,a.cart=this.cart,a.discountTitle=l.title,a.configStates=Il(this.config,o.id),a.promotion=this.promotion,"applyMultiVariantDiscountGiftToCart"in l&&(a.applyMultiVariantDiscountGiftToCart=(t,e)=>l.applyMultiVariantDiscountGiftToCart.call(l,t,e)),"applyFreeGiftDiscountToCart"in l&&(a.applyFreeGiftDiscountToCart=l.applyFreeGiftDiscountToCart.bind(l)),"global"===this.config.template&&this.config.styles){document.createElement("style").setAttribute("id","abra-multi-effect-tiered-banner-global-styles");const t={color:"--abra-tiered-banner-color",font_size:"--abra-tiered-banner-font-size",icon_color:"--abra-tiered-banner-icon-color",icon_size:"--abra-tiered-banner-icon-size",progress_bar_color:"--abra-tiered-banner-progress-bar-color",progress_bar_circle_background:"--abra-tiered-banner-progress-bar-circle-background",progress_bar_circle_active_background:"--abra-tiered-banner-progress-bar-circle-active-background",progress_bar_text_box_color:"--abra-tiered-banner-progress-bar-text-box-color",progress_bar_text_box_font_weight:"--abra-tiered-banner-progress-bar-font-weight",reward_tier_color:"--abra-tiered-banner-reward-tier-color",active_reward_tier_color:"--abra-tiered-banner-active-reward-tier-color",banner_background_color:"--abra-banner-background-color",banner_padding_x:"--abra-banner-padding-x",banner_padding_y:"--abra-banner-padding-y",reward_tier_text_color:"--abra-tiered-banner-reward-tier-text-color",progress_bar_text_size:"--abra-tiered-banner-progress-bar-text-size",progress_bar_icon_size:"--abra-tiered-banner-progress-bar-icon-size",progress_bar_text_and_icon_color:"--abra-tiered-banner-progress-bar-text-and-icon-color",reward_tier_icon_color:"--abra-tiered-banner-reward-tier-icon-color",active_reward_tier_icon_color:"--abra-tiered-banner-active-reward-tier-icon-color",gift_background_color:"--abra-tiered-banner-gift-background-color",gift_product_name_text_size:"--abra-tiered-banner-gift-product-name-text-size",gift_product_text_color:["--abra-tiered-banner-gift-product-name-color","--abra-tiered-banner-gift-product-price-color"],gift_product_price_text_size:"--abra-tiered-banner-gift-product-price-text-size",gift_padding_x:"--abra-gift-padding-x",gift_padding_y:"--abra-gift-padding-y",gift_badge_background_color:"--abra-tiered-banner-gift-badge-background-color",gift_badge_text_and_icon_color:"--abra-tiered-banner-gift-badge-text-and-icon-color",gift_badge_border_radius:"--abra-tiered-banner-gift-badge-border-radius",gift_badge_text_size:"--abra-tiered-banner-gift-badge-text-size",gift_badge_icon_size:"--abra-tiered-banner-gift-badge-icon-size",enable_reward_hover_preview:"--abra-tiered-banner-enable-hover-preview"},e=Object.entries(this.config.styles).map(([e,i])=>{const n=t[e];if(!n)return"";if("progress_bar_color"===e&&"string"==typeof i)return`\n ${n}: ${Ll(i,.25)};\n --abra-tiered-banner-progress-bar-active-color: ${i};\n `;const r=["font_size","icon_size","banner_padding_x","banner_padding_y","progress_bar_text_size","progress_bar_icon_size","gift_product_name_text_size","gift_product_price_text_size","gift_padding_x","gift_padding_y","gift_badge_border_radius","gift_badge_text_size","gift_badge_icon_size"].includes(e)?"px":"";return Array.isArray(n)?n.map(t=>`${t}: ${i}${r};`).join("\n"):`${n}: ${i}${r};`}).join("\n"),i=document.getElementById("abra-multi-effect-tiered-banner-global-styles-container");i&&i.remove();const n=document.createElement("style");n.setAttribute("id","abra-multi-effect-tiered-banner-global-styles-container"),n.textContent=`.abra-tiered-banner--global { ${e} }`;const r=document.getElementById("AbraGlobalTieredBannerContainer");return r&&r.insertBefore(n,r.firstChild),void window.Abra.TieredBanner.showMultiEffect("AbraGlobalTieredBanner",a)}return void window.Abra.TieredBanner.showMultiEffect(this.config.name,a)}__privateMethod(this,Ni,Bi).call(this)},Ji=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(md,"validate",t=>({errors:!1,config:t}));class wd{constructor(t,e,i){__privateAdd(this,Yi),__publicField(this,"applied"),__publicField(this,"cart"),__publicField(this,"promotion"),__privateAdd(this,Ki),__publicField(this,"config"),__publicField(this,"id"),__publicField(this,"page"),__publicField(this,"type"),__privateSet(this,Ki,os.createSubLogger("blocks/tiered-banner")),this.applied=!1,this.cart=null,this.config=e,this.id=t,this.page=i.page,this.promotion=null,this.type=this.config.type,this.config.name=Wl(this.config.name),this.apply=this.apply.bind(this),this.undo=this.undo.bind(this)}get validDiscounts(){return Gl(this.promotion,this.config)}async apply(t={}){return __privateGet(this,Ki).debug("applying",{id:this.id,config:this.config}),await __privateMethod(this,Yi,cn).call(this,t),this.config.onevent&&ls(this.config.onevent,this.apply),"global"===this.config.template?await __privateMethod(this,Yi,en).call(this):this.page?.fullName&&await Ul(this.page.fullName,{all:()=>__privateMethod(this,Yi,tn).call(this),cart:()=>__privateMethod(this,Yi,en).call(this),collection:()=>__privateMethod(this,Yi,nn).call(this),index:()=>__privateMethod(this,Yi,rn).call(this),product:()=>__privateMethod(this,Yi,sn).call(this),account:()=>__privateMethod(this,Yi,an).call(this)}),this.applied=!0,!0}undo(){return __privateGet(this,Ki).debug("undoing",{config:this.config}),this.config.onevent&&ds(this.config.onevent,this.apply),__privateMethod(this,Yi,Xi).call(this),this.applied=!1,!1}}Ki=new WeakMap,Yi=new WeakSet,Xi=function(){"global"===this.config.template?window.Abra.TieredBanner.hide("AbraGlobalTieredBanner"):window.Abra.TieredBanner.hide(this.config.name)},tn=async function(){this.promotion&&this.cart&&(this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{cart:this.cart}))},en=async function(){this.promotion&&this.cart&&(this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{cart:this.cart}))},nn=async function(){const t=Yc(),e=this.page?.findAllProductsInDOM();if(!t)return void __privateGet(this,Ki).debug("skipping element, collection not found");if(!this.cart)return void __privateGet(this,Ki).debug("skipping element, cart not found");let i;for(const n of this.validDiscounts){if(await(this.promotion?.isCollectionEntitled(t,this.cart,n.id))){i=n.id;break}let r=!1;for(const t of e??[])if(await(this.promotion?.isProductEntitled(t,null,this.cart,n.id))){r=!0;break}if(r){i=n.id;break}}i||"global"===this.config.template?this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{collectionHandle:t,discountId:i}):(__privateGet(this,Ki).debug("products on collection page aren't entitled, hiding tiered banner"),__privateMethod(this,Yi,Xi).call(this))},rn=async function(){this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{})},an=async function(){this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{})},sn=async function(){if(!this.cart)return void __privateGet(this,Ki).debug("skipping element, cart not found");const t=Hl();if(!t)return void __privateGet(this,Ki).debug("skipping element, product handle not found");let e,i=null;try{const e=await Ms(t,{logger:__privateGet(this,Ki)});e&&(i=new Dc(e))}catch(n){__privateGet(this,Ki).error("product failed to fetch",{error:n})}if(i){for(const t of this.validDiscounts)if(await(this.promotion?.isProductEntitled(i.handle,i.getFirstOrSelectedVariant(Is()).id,this.cart,t.id))){e=t.id;break}e||"global"===this.config.template?this.config.persistentState||await __privateMethod(this,Yi,on).call(this,{product:i,discountId:e}):(__privateGet(this,Ki).debug("product isn't entitled, hiding tiered banner"),__privateMethod(this,Yi,Xi).call(this))}else __privateGet(this,Ki).debug("skipping element, product can't be found")},on=async function({collectionHandle:t,product:e,discountId:i}){if(!this.promotion||!this.cart)return;const n=this.validDiscounts,r=i?n.filter(t=>t.id===i):n;for(const s of r){const i=await this.promotion.getCartEligibility(this.cart,void 0,s.id);if(!i){__privateGet(this,Ki).debug("no target state, skipping");continue}const n=Il(this.config,s.id);__privateGet(this,Ki).debug(`targetting state ${i.state}`,{targetState:i,states:n});const r={...n?.find(({state:t})=>t===i.state)??{}};if(!r||!r.text){__privateGet(this,Ki).debug("no state content, skipping");continue}const o=ql({promotion:this.promotion,discountState:i,cart:this.cart,collectionHandle:t,product:e,discountId:s.id}),c=s;r.text=ps(r.text,o),r.progress=i.progress,r.state=i.state,r.discountValue=c?.discountValue,r.biggestEligibleTierIndex=c.getBiggestEligibleTierIndex(this.cart);const l=[];if("FREE_GIFT"===c.discountValue?.tiersType&&c.discountValue.tiers&&c.discountValue.tiers.length>0)for(const t of c.discountValue.tiers)if("FREE_GIFT"===t.type){const e=t.value.products[0];try{const t=await Ms(e.handle,{logger:__privateGet(this,Ki)});if(t){const i=new Dc(t);i.variants=i.variants.filter(t=>e.variants.some(e=>e.id===t.id)),l.push(i)}}catch(a){__privateGet(this,Ki).error("product failed to fetch",{error:a})}}if(r.giftProducts=l,r.cart=this.cart,r.applyMultiVariantDiscountGiftToCart=c.applyMultiVariantDiscountGiftToCart.bind(c),r.applyFreeGiftDiscountToCart=c.applyFreeGiftDiscountToCart.bind(c),r.discountTitle=c.title,"global"===this.config.template&&this.config.styles){document.createElement("style").setAttribute("id","abra-tiered-banner-global-styles");const t={color:"--abra-tiered-banner-color",font_size:"--abra-tiered-banner-font-size",icon_color:"--abra-tiered-banner-icon-color",icon_size:"--abra-tiered-banner-icon-size",progress_bar_color:"--abra-tiered-banner-progress-bar-color",progress_bar_circle_background:"--abra-tiered-banner-progress-bar-circle-background",progress_bar_circle_active_background:"--abra-tiered-banner-progress-bar-circle-active-background",progress_bar_text_box_color:"--abra-tiered-banner-progress-bar-text-box-color",progress_bar_text_box_font_weight:"--abra-tiered-banner-progress-bar-font-weight",reward_tier_color:"--abra-tiered-banner-reward-tier-color",active_reward_tier_color:"--abra-tiered-banner-active-reward-tier-color",banner_background_color:"--abra-banner-background-color",banner_padding_x:"--abra-banner-padding-x",banner_padding_y:"--abra-banner-padding-y",reward_tier_text_color:"--abra-tiered-banner-reward-tier-text-color",progress_bar_text_size:"--abra-tiered-banner-progress-bar-text-size",progress_bar_icon_size:"--abra-tiered-banner-progress-bar-icon-size",progress_bar_text_and_icon_color:"--abra-tiered-banner-progress-bar-text-and-icon-color",reward_tier_icon_color:"--abra-tiered-banner-reward-tier-icon-color",active_reward_tier_icon_color:"--abra-tiered-banner-active-reward-tier-icon-color",gift_background_color:"--abra-tiered-banner-gift-background-color",gift_product_name_text_size:"--abra-tiered-banner-gift-product-name-text-size",gift_product_text_color:["--abra-tiered-banner-gift-product-name-color","--abra-tiered-banner-gift-product-price-color"],gift_product_price_text_size:"--abra-tiered-banner-gift-product-price-text-size",gift_padding_x:"--abra-gift-padding-x",gift_padding_y:"--abra-gift-padding-y",gift_badge_background_color:"--abra-tiered-banner-gift-badge-background-color",gift_badge_text_and_icon_color:"--abra-tiered-banner-gift-badge-text-and-icon-color",gift_badge_border_radius:"--abra-tiered-banner-gift-badge-border-radius",gift_badge_text_size:"--abra-tiered-banner-gift-badge-text-size",gift_badge_icon_size:"--abra-tiered-banner-gift-badge-icon-size",enable_reward_hover_preview:"--abra-tiered-banner-enable-hover-preview"},e=Object.entries(this.config.styles).map(([e,i])=>{const n=t[e];if(!n)return"";if("progress_bar_color"===e&&"string"==typeof i)return`\n ${n}: ${Ll(i,.25)};\n --abra-tiered-banner-progress-bar-active-color: ${i};\n `;const r=["font_size","icon_size","banner_padding_x","banner_padding_y","progress_bar_text_size","progress_bar_icon_size","gift_product_name_text_size","gift_product_price_text_size","gift_padding_x","gift_padding_y","gift_badge_border_radius","gift_badge_text_size","gift_badge_icon_size"].includes(e)?"px":"";return Array.isArray(n)?n.map(t=>`${t}: ${i}${r};`).join("\n"):`${n}: ${i}${r};`}).join("\n"),i=document.getElementById("abra-tiered-banner-global-styles-container");i&&i.remove();const n=document.createElement("style");n.setAttribute("id","abra-tiered-banner-global-styles-container"),n.textContent=`.abra-tiered-banner--global { ${e} }`;const a=document.getElementById("AbraGlobalTieredBannerContainer");return a&&a.insertBefore(n,a.firstChild),void window.Abra.TieredBanner.show("AbraGlobalTieredBanner",r)}return void window.Abra.TieredBanner.show(this.config.name,r)}__privateMethod(this,Yi,Xi).call(this)},cn=async function(t){this.promotion=t.promotion??Sl(),this.cart=t.cart??await Pl()},__publicField(wd,"validate",t=>({errors:!1,config:t}));const yd={"add-class":us,"announcement-bar":Tl,banner:Zl,"banner-gift":Zl,"affiliate-banner":Zl,"html-banner":bd,cart:ud,"cart-item":dd,"dynamic-text":hd,hide:pd,money:_d,popup:fd,product:gd,"remove-class":vd,"tiered-banner":wd,"multi-effect-tiered-banner":md};let Sd=[];class Cd{constructor(){__privateAdd(this,ln),__publicField(this,"schema"),__privateSet(this,ln,os.createSubLogger("engine")),this.schema=null}initialize(t){return this.schema=t,this}async run(){if(!this.schema)return __privateGet(this,ln).warn("you must set a schema before running a promotion"),!1;__privateGet(this,ln).debug(`running blocks for "${this.schema.page?.fullName}"`,{blocks:this.schema.blocks});const t=Sl(),e=await Pl(),i=Object.keys(this.schema.blocks).map(async i=>{if(!this.schema)return!1;const n=this.schema.blocks[i],r=yd[n.type];if(r){const{errors:a}=r.validate(n);if(a)return __privateGet(this,ln).error(`'${i}' is invalid`,{errors:a}),!1;const s=new r(i,n,this.schema),o=await s.apply({cart:e,promotion:t});return Sd.push(s),o}return!1});return await Promise.all(i),!0}async rerun(){const t=Sl(),e=await Pl(),i=Sd.map(i=>i.apply({cart:e,promotion:t}));return await Promise.all(i),!0}async renderBlock(t){if(!this.schema)return __privateGet(this,ln).warn("you must set a schema before running a promotion"),!1;if(__privateGet(this,ln).debug(`running block ${t} for "${this.schema.page?.fullName}"`,{blocks:this.schema.blocks}),!this.schema.blocks[t])return __privateGet(this,ln).warn(`schema does not contain a block with id ${t}`),!1;const e=Sd.find(e=>e.id===t);if(!e)return __privateGet(this,ln).warn("block not found, you must activate the promotion first"),!1;const i=Sl(),n=await Pl();return await e.apply({cart:n,promotion:i})}async unload(){const t=Sd.map(t=>t.undo());await Promise.all(t),this.clear()}clear(){Sd=[],this.schema=null}}async function Ed(t,e,{logger:i}={}){try{const n=await fetch("/apps/abra/events?_abraignore=1",{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({name:t,metadata:e?JSON.stringify(e):null})});return n.ok||i?.error(`abra event failed to create: status=${n.status}`),n}catch(n){throw i?.alert("abra event failed to create",n),n}}ln=new WeakMap;const Td=new Map;class Ad{constructor(t,e={}){__publicField(this,"cb"),__publicField(this,"intervalMs"),__publicField(this,"maxTries"),__privateAdd(this,dn),__privateAdd(this,un),this.cb=t,this.intervalMs=e.intervalMs||500,this.maxTries=e.intervalMs||20,__privateSet(this,un,0)}isPolling(){return void 0!==__privateGet(this,dn)}start(){this.isPolling()&&this.stop(),__privateSet(this,dn,setInterval(()=>{__privateGet(this,un)>=this.maxTries?this.stop():this.cb()},this.intervalMs))}stop(){__privateGet(this,dn)&&(clearInterval(__privateGet(this,dn)),__privateSet(this,dn,void 0),__privateSet(this,un,0))}}dn=new WeakMap,un=new WeakMap;class Md{constructor(t,e="",i="",n=!0){__privateAdd(this,hn),__publicField(this,"autolink"),__publicField(this,"linked"),__publicField(this,"id"),__publicField(this,"name"),__publicField(this,"url"),__publicField(this,"integrationEnabled"),__privateSet(this,hn,os.createSubLogger(`integrations/${t}`)),this.autolink=n,this.id=t,this.linked=!1,this.name=e,this.url=i}link(){__privateGet(this,hn).error(`${this.name} integration not implemented`)}setLinked(t){this.linked=Boolean(t),this.linked&&(__privateGet(this,hn).info(`${this.name} integration linked`,{id:this.id,name:this.name,url:this.url}),Ed("INTEGRATION_LINKED",{id:this.id,name:this.name,url:this.url}))}}hn=new WeakMap;class Pd extends Md{constructor(){super("aftersell-upcart","UpCart","https://apps.shopify.com/upcart-cart-builder"),__privateAdd(this,pn),__privateAdd(this,_n,!1),__privateAdd(this,fn,!1),__privateAdd(this,gn,!1),this.onAbraCartChanged=this.onAbraCartChanged.bind(this),__privateSet(this,pn,new Ad(()=>{void 0!==window.upcartRegisterAddToCart&&(__privateGet(this,pn).stop(),window.addEventListener("abra:cart:changed",this.onAbraCartChanged),window.addEventListener("message",this.handleMessageEvent.bind(this)),this.integrationEnabled&&(window.addEventListener("upcart:discount-remove",()=>{window.Abra.deactivate()}),window.addEventListener("upcart:discount-apply",t=>{t.detail.code&&window.Abra.activate(t.detail.code)})),window.addEventListener("aftersell-upcart:public-events:cart-loaded",()=>{window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:render"))}),this.setLinked(!0))},{maxTries:20,intervalMs:500}))}handleMessageEvent(t){switch(t.data.key){case"abra-global-tiered-banner-select":this.handleTieredBannerSelect(t.data.value);break;case"abra-global-tiered-banner-atc":this.handleTieredBannerATC();break;case"abra-global-multi-effect-tiered-banner-select":this.handleMultiEffectTieredBannerSelect(t.data.value);break;case"abra-global-multi-effect-tiered-banner-atc":this.handleMultiEffectTieredBannerATC();break;case"abra-global-gift-banner-select":this.handleGiftBannerSelect(t.data.value);break;case"abra-global-gift-banner-atc":this.handleGiftBannerATC()}}handleTieredBannerSelect(t){const e=document.querySelector("#AbraGlobalTieredBanner");if(e){const i=e.querySelector('select[name="selectedGiftVariant"]');if(i){const e=new Event("change",{bubbles:!1});i.value=t,i.dispatchEvent(e)}}}handleTieredBannerATC(){if(!__privateGet(this,fn)){__privateSet(this,fn,!0);try{window.dispatchEvent(new CustomEvent("abra:tiered-banner:add-to-cart",{detail:{source:"upcart-integration"}}))}finally{setTimeout(()=>{__privateSet(this,fn,!1)},500)}}}handleMultiEffectTieredBannerSelect(t){const e=document.querySelector("#AbraGlobalTieredBanner");if(e){const i=e.querySelector('select[name="selectedGiftVariant"]');if(i){const e=new Event("change",{bubbles:!1});i.value=t,i.dispatchEvent(e)}}}handleMultiEffectTieredBannerATC(){if(!__privateGet(this,_n)){__privateSet(this,_n,!0);try{window.dispatchEvent(new CustomEvent("abra:multi-effect-tiered-banner:add-to-cart",{detail:{source:"upcart-integration"}}))}finally{setTimeout(()=>{__privateSet(this,_n,!1)},500)}}}handleGiftBannerSelect(t){const e=document.querySelector("#AbraGlobalGiftBanner");if(e){const i=e.querySelector('select[name="selectedGiftVariant"]');if(i){const e=new Event("change",{bubbles:!1});i.value=t,i.dispatchEvent(e)}}}handleGiftBannerATC(){if(!__privateGet(this,gn)){__privateSet(this,gn,!0);try{window.dispatchEvent(new CustomEvent("abra:gift-banner:add-to-cart",{detail:{source:"upcart-integration"}}))}finally{setTimeout(()=>{__privateSet(this,gn,!1)},500)}}}async link(){this.integrationEnabled=this.getIntegrationStatus(),__privateGet(this,pn).start()}onAbraCartChanged(){"function"==typeof window.upcartRegisterAddToCart&&window.upcartRegisterAddToCart(),"function"==typeof window.upcartRefreshCart&&window.upcartRefreshCart()}getIntegrationStatus(){const t=document.getElementById("AbraTapcartIntegration");if(t&&t.textContent)try{const e=JSON.parse(t.textContent);return e?.enabled}catch(e){return!1}return!1}}pn=new WeakMap,_n=new WeakMap,fn=new WeakMap,gn=new WeakMap;class Od extends Md{constructor(){super("slide-cart","Slide Cart","https://apps.shopify.com/slide-cart"),__privateAdd(this,bn),__privateAdd(this,vn),this.onAbraCartChanged=this.onAbraCartChanged.bind(this),__privateSet(this,vn,new Ad(()=>{void 0!==window.SLIDECART&&[__privateMethod(this,bn,mn).call(this),__privateMethod(this,bn,wn).call(this),__privateMethod(this,bn,yn).call(this),__privateMethod(this,bn,Sn).call(this)].every(t=>!0===t)&&(__privateGet(this,vn).stop(),this.setLinked(!0))},{maxTries:20,intervalMs:500}))}link(){__privateGet(this,vn).start()}onAbraCartChanged(){"function"==typeof window.SLIDECART_UPDATE&&window.SLIDECART_UPDATE()}}vn=new WeakMap,bn=new WeakSet,mn=function(){if(void 0===window.SLIDECART)return!1;const t=window.SLIDECART_UPDATED;return window.SLIDECART_UPDATED=function(e){"function"==typeof t&&t(e),window.dispatchEvent(new CustomEvent("abra:render"))},!0},wn=function(){if(void 0===window.SLIDECART)return!1;const t=window.SLIDECART_LOADED;return window.SLIDECART_LOADED=function(e){"function"==typeof t&&t(e),window.dispatchEvent(new CustomEvent("abra:render"))},!0},yn=function(){if(void 0===window.SLIDECART)return!1;const t=window.SLIDECART_OPENED;return window.SLIDECART_OPENED=function(){"function"==typeof t&&t(),window.dispatchEvent(new CustomEvent("abra:render"))},!0},Sn=function(){return void 0!==window.SLIDECART&&(window.addEventListener("abra:cart:changed",this.onAbraCartChanged),!0)};class Gd{constructor(){__privateAdd(this,Cn,new Map),__privateAdd(this,En,5e3)}set(t){try{const e=`abra:gift-in-cart:${t.variantId}`;__privateGet(this,Cn).set(t.variantId,{data:t,timestamp:Date.now()}),window.localStorage.setItem(e,JSON.stringify({giftInCart:t,expiresAt:ml(30)}))}catch(e){console.error(e)}}remove(t){const e=`abra:gift-in-cart:${t}`;__privateGet(this,Cn).delete(t),window.localStorage.removeItem(e)}get(t){const e=__privateGet(this,Cn).get(t);if(e&&Date.now()-e.timestamp<__privateGet(this,En))return e.data;const i=window.localStorage.getItem(`abra:gift-in-cart:${t}`);let n;if(i)try{const e=JSON.parse(i);e.expiresAt>=Date.now()?(n=e.giftInCart,__privateGet(this,Cn).set(t,{data:n,timestamp:Date.now()})):__privateGet(this,Cn).delete(t)}catch(r){return}return n}}Cn=new WeakMap,En=new WeakMap;class Id{constructor(){__privateAdd(this,Tn,new Map),__privateAdd(this,An,5e3)}set(t,e){try{__privateGet(this,Tn).set(e,{data:t,timestamp:Date.now()}),window.localStorage.setItem(`abra:gift-removed:${e}`,JSON.stringify({giftManuallyRemoved:t,expiresAt:ml(30)}))}catch(i){console.error(i)}}remove(t){__privateGet(this,Tn).delete(t),window.localStorage.removeItem(`abra:gift-removed:${t}`)}get(t){const e=__privateGet(this,Tn).get(t);if(e&&Date.now()-e.timestamp<__privateGet(this,An))return e.data;const i=window.localStorage.getItem(`abra:gift-removed:${t}`);let n=!1;if(i)try{const e=JSON.parse(i);e.expiresAt>=Date.now()?(n=e.giftManuallyRemoved,__privateGet(this,Tn).set(t,{data:n,timestamp:Date.now()})):__privateGet(this,Tn).delete(t)}catch(r){return!1}return n}}Tn=new WeakMap,An=new WeakMap;class kd{constructor(t){__publicField(this,"name"),__publicField(this,"suffix"),__publicField(this,"promotion"),this.name=t.name,this.suffix=t.suffix,this.promotion=null}get fullName(){return(this?.suffix?`${this?.name}.${this?.suffix}`:this?.name)||null}isEligible(t){return!0}findAllProductsInDOM(){return function(){const t=new Set;return document.querySelectorAll("a").forEach(e=>{const i=Hl(e);i&&t.add(i)}),Array.from(t)}()}}class Ld extends kd{}class xd{constructor(){__privateAdd(this,Gn),__publicField(this,"data"),__publicField(this,"STORAGE_KEY","abra_product_cache"),__publicField(this,"DEFAULT_TTL",18e5),__publicField(this,"CLEANUP_INTERVAL",3e5),__publicField(this,"STORAGE_CACHE_TTL",1e4),__privateAdd(this,Mn,0),__privateAdd(this,Pn,null),__privateAdd(this,On,0),this.data=new Map,this.loadFromStorage()}init(t){this.data=new Map(Object.entries(t)),this.saveToStorage()}has(t){return __privateMethod(this,Gn,kn).call(this),this.data.has(t)}get(t){return __privateMethod(this,Gn,kn).call(this),this.data.get(t)}set(t,e,i){const n=this.data.set(t,e);return this.saveToStorage(t,e,i),n}delete(t){const e=this.data.delete(t);return this.removeFromStorage(t),e}clear(){this.data=new Map,this.clearStorage()}loadFromStorage(){try{const t=localStorage.getItem(this.STORAGE_KEY);if(!t)return;const e=JSON.parse(t),i=Date.now();for(const[n,r]of Object.entries(e))i-r.timestamp{n[e]={data:t,timestamp:Date.now(),ttl:i}}),localStorage.setItem(this.STORAGE_KEY,JSON.stringify(n)),__privateMethod(this,Gn,In).call(this)}catch(n){}}removeFromStorage(t){try{const e=this.getStorageData();delete e[t],localStorage.setItem(this.STORAGE_KEY,JSON.stringify(e)),__privateMethod(this,Gn,In).call(this)}catch(e){}}clearStorage(){try{localStorage.removeItem(this.STORAGE_KEY),__privateMethod(this,Gn,In).call(this)}catch(t){}}getStorageData(t=!1){const e=Date.now();if(!t&&__privateGet(this,Pn)&&e-__privateGet(this,On)=a.ttl&&(delete t[r],i=!0);if(i)try{localStorage.setItem(this.STORAGE_KEY,JSON.stringify(t))}catch(n){}}}Mn=new WeakMap,Pn=new WeakMap,On=new WeakMap,Gn=new WeakSet,In=function(){__privateSet(this,Pn,null),__privateSet(this,On,0)},kn=function(){const t=Date.now();t-__privateGet(this,Mn)>this.CLEANUP_INTERVAL&&(__privateSet(this,Mn,t),__privateMethod(this,Gn,Ln).call(this))},Ln=function(){const t=Date.now(),e=[],i=this.getStorageData();this.data.forEach((n,r)=>{const a=i[r];a&&t-a.timestamp>=a.ttl&&e.push(r)}),e.forEach(t=>this.delete(t))};class qd{constructor(t,e,i){__publicField(this,"config"),__publicField(this,"blocks"),__privateAdd(this,xn),__privateAdd(this,qn),this.blocks={},this.config=t,__privateSet(this,xn,e),__privateSet(this,qn,i),this.setBlocks()}get promotion(){return __privateGet(this,qn)}get page(){return __privateGet(this,xn)}set page(t){__privateSet(this,xn,t),this.setBlocks()}setBlocks(){const t=this.config.all||{},e=Object.entries(this.config.global||{}).reduce((t,[e,i])=>({...t,[`global-${e}`]:i}),{}),i=this.page?.name&&this.config[this.page.name],n=this.page?.fullName&&this.config[this.page.fullName];let r;if(this.page){const t=this.page.name,e=this.page?.name&&Object.keys(this.config).find(e=>{const i=e.split("/");return i[i.length-1]===t});r=e&&this.config[e]}const a=this.getMarketContextBlocks();if(0===Object.keys(e).length){const t=document.createElement("style");t.textContent="#AbraCartDrawerBannerContainer { display: none !important; }",document.head.appendChild(t)}this.blocks=[t,e,i||{},n||{},r||{},a].reduce((t,e)=>({...t,...e}),{})}getMarketContextBlocks(){if(!this.page)return{};const t=window.Shopify?.country?.toLowerCase();if(!t)return{};const e={},i=/^(.+)\.context\.([a-z]{2})$/i;for(const n of Object.keys(this.config)){const r=n.match(i);if(!r)continue;const[,a,s]=r;if(s.toLowerCase()===t&&(a===this.page.name||a===this.page.fullName||this.page.fullName&&a.startsWith(this.page.name)&&this.page.fullName.startsWith(a))){const t=this.config[n];t&&Object.assign(e,t)}}return e}}xn=new WeakMap,qn=new WeakMap;class Fd{constructor(){__privateAdd(this,Fn),__privateSet(this,Fn,os.createSubLogger("announcement-bar"))}hide(){window.dispatchEvent(new CustomEvent("abra:announcement-bar:hide"))}render(t={}){window.dispatchEvent(new CustomEvent("abra:announcement-bar:render",{detail:t}))}show(t={}){window.dispatchEvent(new CustomEvent("abra:announcement-bar:show",{detail:t}))}addListener(t,e){switch(t){case"hidden":case"shown":return window.addEventListener(`abra:announcement-bar:${t}`,e),()=>window.removeEventListener(`abra:announcement-bar:${t}`,e);default:return __privateGet(this,Fn).error(`${t} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t,e){switch(t){case"hidden":case"shown":window.removeEventListener(`abra:announcement-bar:${t}`,e);break;default:__privateGet(this,Fn).error(`${t} is invalid, use 'hidden' or 'shown'`)}}}Fn=new WeakMap;class Dd{constructor(){__privateAdd(this,Dn),__privateSet(this,Dn,os.createSubLogger("banner"))}show(t="default",e={}){window.dispatchEvent(new CustomEvent(`abra:banner:${t}:show`,{detail:e}))}hide(t="default"){window.dispatchEvent(new CustomEvent(`abra:banner:${t}:hide`))}addListener(t="default",e,i){switch(e){case"hidden":case"shown":return window.addEventListener(`abra:banner:${t}:${e}`,i),()=>window.removeEventListener(`abra:banner:${t}:${e}`,i);default:return __privateGet(this,Dn).error(`${e} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t="default",e,i){switch(e){case"hidden":case"shown":window.removeEventListener(`abra:banner:${t}:${e}`,i);break;default:__privateGet(this,Dn).error(`${e} is invalid, use 'hidden' or 'shown'`)}}}Dn=new WeakMap;class Vd{constructor(){__privateAdd(this,Vn),__privateSet(this,Vn,os.createSubLogger("dynamic-text"))}show(t="default",e={}){window.dispatchEvent(new CustomEvent(`abra:dynamic-text:${t}:show`,{detail:e}))}hide(t="default"){window.dispatchEvent(new CustomEvent(`abra:dynamic-text:${t}:hide`))}addListener(t="default",e,i){switch(e){case"hidden":case"shown":return window.addEventListener(`abra:dynamic-text:${t}:${e}`,i),()=>window.removeEventListener(`abra:dynamic-text:${t}:${e}`,i);default:return __privateGet(this,Vn).error(`${e} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t="default",e,i){switch(e){case"hidden":case"shown":window.removeEventListener(`abra:dynamic-text:${t}:${e}`,i);break;default:__privateGet(this,Vn).error(`${e} is invalid, use 'hidden' or 'shown'`)}}}Vn=new WeakMap;class Rd{constructor(){__privateAdd(this,Rn),__privateSet(this,Rn,os.createSubLogger("html-banner"))}show(t="default",e={}){window.dispatchEvent(new CustomEvent(`abra:html-banner:${t}:show`,{detail:e}))}hide(t="default"){window.dispatchEvent(new CustomEvent(`abra:html-banner:${t}:hide`))}addListener(t="default",e,i){switch(e){case"hidden":case"shown":return window.addEventListener(`abra:html-banner:${t}:${e}`,i),()=>window.removeEventListener(`abra:html-banner:${t}:${e}`,i);default:return __privateGet(this,Rn).error(`${e} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t="default",e,i){switch(e){case"hidden":case"shown":window.removeEventListener(`abra:html-banner:${t}:${e}`,i);break;default:__privateGet(this,Rn).error(`${e} is invalid, use 'hidden' or 'shown'`)}}}Rn=new WeakMap;class $d{constructor(t){__privateAdd(this,$n),__publicField(this,"all"),__privateSet(this,$n,os.createSubLogger("integrations")),this.all=t||[]}add(t){this.find(t.id)?__privateGet(this,$n).warn(`${t.name} already exists`):this.all.push(t)}find(t){return this.all.filter(e=>e.id===t)[0]}isLinked(t){const e=this.find(t);return!!e&&e.linked}link(){__privateGet(this,$n).info("linking app integrations"),this.all.forEach(t=>{t.autolink&&!t.linked&&t.link()})}}$n=new WeakMap;class Nd{constructor(){__privateAdd(this,Nn),__privateSet(this,Nn,os.createSubLogger("notification"))}show(t={}){window.dispatchEvent(new CustomEvent("abra:notification:show",{detail:t}))}hide(){window.dispatchEvent(new CustomEvent("abra:notification:hide"))}addListener(t,e){switch(t){case"hidden":case"shown":return window.addEventListener(`abra:notification:${t}`,e),()=>window.removeEventListener(`abra:notification:${t}`,e);default:return __privateGet(this,Nn).error(`${t} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t,e){switch(t){case"hidden":case"shown":window.removeEventListener(`abra:notification:${t}`,e);break;default:__privateGet(this,Nn).error(`${t} is invalid, use 'hidden' or 'shown'`)}}}Nn=new WeakMap;class Bd{constructor(){__privateAdd(this,Bn),__privateSet(this,Bn,os.createSubLogger("popup"))}show(t={}){window.dispatchEvent(new CustomEvent("abra:popup:show",{detail:t}))}hide(){window.dispatchEvent(new CustomEvent("abra:popup:hide"))}addListener(t,e){switch(t){case"hidden":case"shown":return window.addEventListener(`abra:popup:${t}`,e),()=>window.removeEventListener(`abra:popup:${t}`,e);default:return __privateGet(this,Bn).error(`${t} is invalid, use 'hidden' or 'shown'`),()=>{}}}removeListener(t,e){switch(t){case"hidden":case"shown":window.removeEventListener(`abra:popup:${t}`,e);break;default:__privateGet(this,Bn).error(`${t} is invalid, use 'hidden' or 'shown'`)}}}Bn=new WeakMap;class Hd{show(t="default",e={}){window.dispatchEvent(new CustomEvent(`abra:tiered-banner:${t}:show`,{detail:e}))}hide(t="default"){window.dispatchEvent(new CustomEvent(`abra:tiered-banner:${t}:hide`))}showMultiEffect(t="default",e){window.dispatchEvent(new CustomEvent(`abra:multi-effect-tiered-banner:${t}:show`,{detail:e}))}hideMultiEffect(t="default"){window.dispatchEvent(new CustomEvent(`abra:multi-effect-tiered-banner:${t}:hide`))}}function Wd(t){const e=t.detail.variant;if(e?.id){const t=new URL(window.location.href);t.searchParams.set("modal-variant",e.id),window.history.replaceState({path:t.toString()},"",t.toString())}}class zd{constructor(t){__privateAdd(this,Zn),__privateAdd(this,Hn),__privateAdd(this,Wn),__privateAdd(this,zn),__publicField(this,"isUnsupported"),__publicField(this,"onStateChange"),__privateAdd(this,Un,null),__publicField(this,"pushStateExcludedShops",["scentclubcopenhagen.myshopify.com","rothysretheme.myshopify.com","rothys-us-staging.myshopify.com","rothys.myshopify.com","f031fc-3.myshopify.com","savilerow-co.myshopify.com"]),__publicField(this,"replaceStateExcludedShops",["scentclubcopenhagen.myshopify.com","f031fc-3.myshopify.com","savilerow-co.myshopify.com"]),__privateSet(this,Hn,os.createSubLogger("history")),this.isUnsupported=void 0===window.history?.replaceState,this.onStateChange=t}observe(){this.isUnsupported?__privateGet(this,Hn).warn("History isn't supported by this browser. Features may be affected"):(__privateSet(this,Wn,window.history.pushState),__privateSet(this,zn,window.history.replaceState),window.history.pushState=new Proxy(window.history.pushState,{apply:(t,e,i)=>{const n=Reflect.apply(t,e,i),r=this.pushStateExcludedShops.includes(window.Shopify.shop)&&"collection"===window.Abra?.template?.name?2e3:0;return this.scheduleCallback(r),n}}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:(t,e,i)=>{const n=Reflect.apply(t,e,i),r=this.replaceStateExcludedShops.includes(window.Shopify.shop)&&"collection"===window.Abra?.template?.name?2e3:0;return this.scheduleCallback(r),n}}))}disconnect(){__privateMethod(this,Zn,jn).call(this),__privateGet(this,Wn)&&(window.history.pushState=__privateGet(this,Wn),__privateSet(this,Wn,void 0)),__privateGet(this,zn)&&(window.history.replaceState=__privateGet(this,zn),__privateSet(this,zn,void 0))}scheduleCallback(t){__privateMethod(this,Zn,jn).call(this),__privateSet(this,Un,setTimeout(()=>{__privateSet(this,Un,null),"requestIdleCallback"in window?requestIdleCallback(()=>this.onStateChange(),{timeout:100}):setTimeout(()=>this.onStateChange(),0)},t))}}Hn=new WeakMap,Wn=new WeakMap,zn=new WeakMap,Un=new WeakMap,Zn=new WeakSet,jn=function(){null!==__privateGet(this,Un)&&(clearTimeout(__privateGet(this,Un)),__privateSet(this,Un,null))};const Ud=/[?|&]_abraignore=1/i,Zd=/\/recommendations\/products|\/search|\/variants|\/cart\/[^/]+|[?|&]page=|[?|&]section_id=/i;Qn=new WeakMap,Jn=new WeakMap,Kn=new WeakMap,Yn=new WeakMap,Xn=new WeakMap,tr=new WeakMap,er=new WeakSet,ir=function(t,e=!0){if("RESTRICTED"===t.status&&!this.previewMode)return __privateGet(this,Kn).debug(`promotion ${t.title} is restricted and can only be viewed in preview mode`),!1;if("DRAFT"===t.status&&!this.previewMode)return __privateGet(this,Kn).debug(`promotion ${t.title} is a draft and can only be viewed in preview mode`),!1;const i=new Date;if(t.startsAt&&Ba(i,new Date(t.startsAt)))return __privateGet(this,Kn).debug(`promotion ${t.title} is not active yet`,{startsAt:t.startsAt,now:i.toISOString()}),!1;if(t.endsAt&&Na(i,new Date(t.endsAt)))return __privateGet(this,Kn).debug(`promotion ${t.title} has expired`,{endsAt:t.endsAt,now:i.toISOString()}),!1;const n=Object.values(t?.discounts??{});if(n.length>0){if(n.every(t=>t?.prerequisite?.tapCartExclusive||t?.prerequisite?.posExclusive))return __privateGet(this,Kn).debug("All discounts are sales channel exclusive (TapCart or POS), skipping promotion"),e&&Cl(t),!1;const i=window.Shopify.country;if(i&&0===n.filter(t=>{const e=t?.entitled?.markets;return!e||0===e.length||e.includes(i)}).length)return __privateGet(this,Kn).debug(`No discounts eligible for market ${window.Shopify.country}`),e&&Cl(t),!1}return!0};const jd={discount:'\n \n \n ',gift:'\n \n \n ',percentage:'\n \n \n \n \n ',shipping:'\n \n \n ',logo:'\n \n '};function Qd(t,e,{width:i=20,height:n=20}={}){const r=jd["gift-card"===e?"gift":e];r?(t.classList.remove("abra-hide"),t.innerHTML=r.replace('class="abra-icon"',`class="abra-icon" width="${i}" height="${n}"`)):""===e&&t.classList.add("abra-hide")}class Jd extends HTMLElement{constructor(){super(),__privateAdd(this,sr),__privateAdd(this,nr),__privateAdd(this,rr),__privateAdd(this,ar),__privateSet(this,nr,os.createSubLogger("announcement-bar")),__privateSet(this,rr,"section"),this.onHide=this.onHide.bind(this),this.onRender=this.onRender.bind(this),this.onResize=this.onResize.bind(this),this.onShow=this.onShow.bind(this),__privateSet(this,ar,function(t){let e;return function(...i){const n=this;return clearTimeout(e),e=setTimeout(()=>{t.apply(n,i)},200),null}}(this.onResize))}connectedCallback(){this.dataset.target&&__privateSet(this,rr,this.dataset.target),this.onResize(),window.addEventListener("abra:announcement-bar:hide",this.onHide),window.addEventListener("abra:announcement-bar:render",this.onRender),window.addEventListener("abra:announcement-bar:show",this.onShow),window.addEventListener("resize",__privateGet(this,ar))}disconnectedCallback(){document.body.style.setProperty("--abra-announcement-bar-height","0px"),window.removeEventListener("abra:announcement-bar:hide",this.onHide),window.removeEventListener("abra:announcement-bar:render",this.onRender),window.removeEventListener("abra:announcement-bar:show",this.onShow),window.removeEventListener("resize",__privateGet(this,ar))}onHide(){document.body.style.setProperty("--abra-announcement-bar-height","0px"),this.classList.remove("abra-announcement-bar--show"),window.dispatchEvent(new CustomEvent("abra:announcement-bar:hidden"))}onRender(t){"string"==typeof t?.detail?.link&&t.detail.link&&__privateMethod(this,sr,or).call(this,t.detail.link),"string"==typeof t?.detail?.text&&t.detail.text&&__privateMethod(this,sr,cr).call(this,t.detail.text),"string"==typeof t?.detail?.icon&&t.detail.icon&&__privateMethod(this,sr,lr).call(this,t.detail.icon)}onResize(){if("body"===__privateGet(this,rr)){const t=this.classList.contains("abra-announcement-bar--show")?`${this.offsetHeight??0}px`:"0px";__privateGet(this,nr).debug(`setting height to ${t}`),document.body.style.setProperty("--abra-announcement-bar-height",t)}}onShow(t){this.onRender(t),this.classList.add("abra-announcement-bar--show"),this.onResize(),window.dispatchEvent(new CustomEvent("abra:announcement-bar:shown")),Ed("ANNOUNCEMENT_BAR_SHOWN")}}nr=new WeakMap,rr=new WeakMap,ar=new WeakMap,sr=new WeakSet,or=function(t){const e=this.querySelector(".abra-announcement-bar__link");if(e)e.href=t;else{const e=this.querySelector(".abra-announcement-bar__item");e?e.innerHTML=`${e.innerHTML}`:__privateGet(this,nr).warn("link cannot be rendered")}},cr=function(t){const e=this.querySelector(".abra-announcement-bar__text");e?e.innerText=t:__privateGet(this,nr).warn("text cannot be rendered")},lr=function(t){const e=this.querySelector(".abra-announcement-bar__icon");e?Qd(e,t):__privateGet(this,nr).warn("icon cannot be rendered",{icon:t,element:this})};const Kd=class t extends HTMLElement{constructor(){super(),__privateAdd(this,fr),__privateAdd(this,dr),__publicField(this,"name"),__publicField(this,"selectVariantListeners"),__publicField(this,"addGiftInCartListeners"),__privateAdd(this,_r),this.name="default",__privateSet(this,dr,os.createSubLogger("banner")),this.onHide=this.onHide.bind(this),this.onShow=this.onShow.bind(this),__privateGet(t,pr)||(__privateSet(this,_r,__privateMethod(this,fr,gr).bind(this)),window.addEventListener("abra:gift-banner:add-to-cart",__privateGet(this,_r)),__privateSet(t,pr,!0))}connectedCallback(){this.dataset.name&&(this.name=this.dataset.name),window.addEventListener(`abra:banner:${this.name}:hide`,this.onHide),window.addEventListener(`abra:banner:${this.name}:show`,this.onShow)}disconnectedCallback(){window.removeEventListener(`abra:banner:${this.name}:hide`,this.onHide),window.removeEventListener(`abra:banner:${this.name}:show`,this.onShow)}onHide(){this.classList.remove("abra-banner--show"),window.dispatchEvent(new CustomEvent(`abra:banner:${this.name}:hidden`)),("AbraGlobalGiftBanner"===this.name||!document.getElementById("AbraGlobalGiftBanner"))&&window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:deactivate"))}onShow(t){this.onRender(t),this.classList.add("abra-banner--show"),window.dispatchEvent(new CustomEvent(`abra:banner:${this.name}:shown`)),Ed("BANNER_SHOWN"),setTimeout(()=>{__privateMethod(this,fr,qr).call(this)},150)}onRender(t){__privateGet(this,dr).debug("rendering banner",{detail:t?.detail});const e=this.classList.contains("abra-banner--show");"string"==typeof t?.detail?.link&&t.detail.link&&__privateMethod(this,fr,vr).call(this,t.detail.link),"string"==typeof t?.detail?.text&&t.detail.text&&__privateMethod(this,fr,br).call(this,t.detail.text),"string"==typeof t?.detail?.message&&t.detail.message&&__privateMethod(this,fr,Ir).call(this,t.detail.message),"string"==typeof t?.detail?.recommended_by&&t.detail.recommended_by&&__privateMethod(this,fr,kr).call(this,t.detail.recommended_by,t?.detail?.full_name,t?.detail?.referral_link),"string"==typeof t?.detail?.avatar_url&&t?.detail?.avatar_url&&__privateMethod(this,fr,Lr).call(this,t?.detail?.avatar_url),"string"==typeof t?.detail?.discount_message&&t.detail.discount_message&&"object"==typeof t.detail.discount&&t.detail.discount?.code&&__privateMethod(this,fr,xr).call(this,t.detail.discount_message,t.detail.discount.code),"string"==typeof t?.detail?.icon&&t.detail.icon&&__privateMethod(this,fr,mr).call(this,t.detail.icon),"object"==typeof t?.detail?.discount&&t.detail.discount&&"string"==typeof t?.detail?.state&&__privateMethod(this,fr,wr).call(this,t.detail.discount,t.detail.state);const i=window?.Abra?.Integrations?.all[0]?.integrationEnabled,n="AbraGlobalGiftBanner"===this.name||!document.getElementById("AbraGlobalGiftBanner");if(i&&n){if(!e&&(window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:deactivate")),window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:activate",{detail:{contentId:"AbraGlobalGiftBannerContainer",selectSelector:'select[name="selectedGiftVariant"]',selectPostMessageKey:"abra-global-gift-banner-select",atcButtonSelector:".abra-banner__discount-variant-add",atcButtonPostMessageKey:"abra-global-gift-banner-atc",paginatorPrevSelector:".abra-banner__paginator-prev",paginatorPrevPostMessageKey:"abra-paginator-prev-click",paginatorNextSelector:".abra-banner__paginator-next",paginatorNextPostMessageKey:"abra-paginator-next-click"}})),window.upcartSettings?.upcartSettings?.renderCartInShadowDom)){const t=document.getElementById("abra-banner-css");if(t){const e=t.cloneNode(!0);window.upcartDocumentOrShadowRoot.querySelector("#abra-banner-css")||window.upcartDocumentOrShadowRoot.insertBefore(e,window.upcartDocumentOrShadowRoot.firstChild)}const e=document.getElementById("abra-utilities-css");if(e){const t=e.cloneNode(!0);window.upcartDocumentOrShadowRoot.querySelector("#abra-utilities-css")||window.upcartDocumentOrShadowRoot.insertBefore(t,window.upcartDocumentOrShadowRoot.firstChild)}}window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:render"))}}};dr=new WeakMap,ur=new WeakMap,hr=new WeakMap,pr=new WeakMap,_r=new WeakMap,fr=new WeakSet,gr=function(t){if(!(t instanceof CustomEvent)||"upcart-integration"!==t.detail?.source)return;if(__privateGet(Kd,ur))return;const e=document.querySelector("#AbraGlobalGiftBanner");if(!e)return;const i=e.querySelector(".abra-banner__discount-variant-add");if(i&&this.addGiftInCartListeners?.length){const t=this.addGiftInCartListeners[0];if(t&&"function"==typeof t){__privateSet(Kd,ur,!0);const e=new MouseEvent("click",{bubbles:!0,cancelable:!0});t.call(i,e),setTimeout(()=>{__privateSet(Kd,ur,!1)},1e3)}}},vr=function(t){const e=this.querySelector(".abra-banner__link");e?e.href=t:this.innerHTML=`${this.innerHTML}`},br=function(t){const e=this.querySelector(".abra-banner__text");e?e.innerHTML=t:__privateGet(this,dr).warn("text cannot be rendered",{element:this})},mr=function(t){const e=this.querySelector(".abra-banner__icon");e?Qd(e,t):__privateGet(this,dr).warn("icon cannot be rendered",{icon:t,element:this})},wr=function(t,e){const{product:i,progress:n,allGiftVariants:r,allGiftProducts:a,code:s,cart:o}=t,c=(a||(i&&r?[{product:i,allGiftVariants:r}]:[])).slice(0,10);if(c.length>0&&o&&s){let i=this.querySelector(".abra-banner__discounts-scroll");i||(i=document.createElement("div"),i.classList.add("abra-banner__discounts-scroll"),this.appendChild(i));const r=i.querySelectorAll(".abra-banner__discount");if(r.forEach((t,e)=>{e>=c.length&&t.remove()}),c.forEach((n,a)=>{const s=n.product.title,o=n.product.featuredImage?{src:n.product.featuredImage}:void 0;let c=r[a];c||(c=document.createElement("div"),c.classList.add("abra-banner__discount"),i.appendChild(c));const l={...t,allGiftVariants:n.allGiftVariants};"PENDING_SELECTION"===e?n.allGiftVariants.length>1?__privateMethod(this,fr,Mr).call(this,l,s,o,c,e):__privateMethod(this,fr,Pr).call(this,l,s,o,c,e):"SUCCESS"===e?__privateMethod(this,fr,Tr).call(this,l,c,s,o):__privateMethod(this,fr,Ar).call(this,l,c,s,o,e)}),c.length>1)__privateMethod(this,fr,Cr).call(this,i,c.length);else{const t=this.querySelector(".abra-banner__paginator");t&&t.remove()}const a=this.querySelector(".abra-banner__progress-bar");a&&void 0!==n&&od(a,__privateMethod(this,fr,Gr).call(this,n)),__privateMethod(this,fr,Er).call(this,e,o,s,c)}},yr=function(){return'
\n \n \n \n \n \n \n \n Free gift\n
'},Sr=function(t,e){if(!t||!t.src)return"";const i=new URL(t.src);let n=180,r=180;return e&&(n=60,r=60),i.searchParams.set("width",n.toString()),i.searchParams.set("height",r.toString()),`
\n \n
`},Cr=function(t,e){let i=this.querySelector(".abra-banner__paginator");i||(i=document.createElement("div"),i.classList.add("abra-banner__paginator"),this.appendChild(i));const n=()=>{const e=t.scrollLeft+t.offsetWidth/2,i=Array.from(t.querySelectorAll(".abra-banner__discount"));let n=0,r=1/0;return i.forEach((t,i)=>{const a=Math.abs(e-(t.offsetLeft+t.offsetWidth/2));a{const t=n(),r=i.querySelector(".abra-banner__paginator-prev"),a=i.querySelector(".abra-banner__paginator-next"),s=i.querySelector(".abra-banner__paginator-count");r&&(r.disabled=0===t),a&&(a.disabled=t===e-1),s&&(s.textContent=`${t+1}/${e}`)},a=e=>{const i=Array.from(t.querySelectorAll(".abra-banner__discount"))[e];i&&t.scrollTo({left:i.offsetLeft+i.offsetWidth/2-t.offsetWidth/2,behavior:"smooth"})};i.innerHTML=`\n \n 1/${e}\n \n `;const s=i.querySelector(".abra-banner__paginator-prev"),o=i.querySelector(".abra-banner__paginator-next"),c=()=>{const t=n();t>0&&a(t-1)},l=()=>{const t=n();t{__privateMethod(this,fr,Fr).call(this,t,e)},100);let u=null;const h=()=>{null!==u&&cancelAnimationFrame(u),clearTimeout(d),u=requestAnimationFrame(()=>{d=setTimeout(()=>{r(),u=null},10)})},p=()=>{null!==u&&(cancelAnimationFrame(u),u=null),clearTimeout(d),r()};t.removeEventListener("scroll",h),t.removeEventListener("scrollend",p),t.addEventListener("scroll",h,{passive:!0}),t.addEventListener("scrollend",p),requestAnimationFrame(()=>{r()})},Er=function(t,e,i,n){const r=this.querySelector(".abra-banner__counter"),a=this.querySelector(".abra-banner__content");if(r&&a)if(("PENDING_SELECTION"===t||"SUCCESS"===t)&&e&&i&&n){let t=0;for(const r of n)r.allGiftVariants.find(t=>Boolean(Kc(e,i,t.id)))&&t++;r.textContent=`${t}/1 added`,r.classList.remove("abra-hide"),a.classList.add("abra-banner__content--with-counter")}else r.classList.add("abra-hide"),a.classList.remove("abra-banner__content--with-counter")},Tr=function(t,e,i,n){const{allGiftVariants:r,code:a,cart:s}=t;if(!r||!s||!a)return;const o=r[0],c=r.find(t=>Boolean(Kc(s,a,t.id))),l=r.length>1,d=Boolean(c),u=c?.id||o.id,h=c?.handle||o.handle,p=c?.price||o.price,_=(c||o).title,f=`
\n ${__privateMethod(this,fr,Sr).call(this,n,!0)}\n
\n

\n ${l?'
':'
'}\n
\n ${d?'
1 Added
':""}\n
`;__privateMethod(this,fr,Or).call(this,e,f,p,i,l?_:void 0)},Ar=function(t,e,i,n,r){const{progress:a,allGiftVariants:s,code:o,cart:c,addGiftDefaultDiscount:l,compound:d}=t;if(!s||!c||!o)return;const u=s[0],h=u.id,p=u.handle,_=u.price;let f;f=s.find(t=>Boolean(Kc(c,o,t.id)));const g=Boolean(f),v=`
\n ${__privateMethod(this,fr,Sr).call(this,n,"SUCCESS"===r)}\n
\n
\n ${"SUCCESS"!==r?__privateMethod(this,fr,yr).call(this):""}\n
\n

\n ${"SUCCESS"===r?'
':'
'}\n
\n
\n ${g?'
1 Added
':""}\n
`;__privateMethod(this,fr,Or).call(this,e,v,_,i,f?.title);const b=window.Abra.cache.giftManuallyRemoved?.get(h),m=!1!==window.Abra?.schemaConfig?.freeGiftOncePerSession;if(!(Number(a)<100)&&h&&"SUCCESS"!==r&&(!g&&m&&b||"PENDING_SELECTION"===r&&d)){const t=e.querySelector(".abra-banner__discount-add-to-cart");if(!t)return;t.innerHTML=``;const i=e.querySelector(".abra-banner__discount-variant-add");if(!i)return;this.addGiftInCartListeners?.forEach(t=>{i.removeEventListener("click",t)});const n=()=>{i.classList.add("loading"),l?.(c,!0)};this.addGiftInCartListeners=[n],i.addEventListener("click",n)}},Mr=function(t,e,i,n,r){const{progress:a,allGiftVariants:s,code:o,cart:c,addGiftMultiVariantDiscount:l}=t;if(s&&o&&c){let d,u,h=n.querySelector('select[name="selectedGiftVariant"]'),p="",_="",f="";if(u=s.find(t=>Boolean(Kc(c,o,t.id))),u)p=u.id,_=u.handle,f=u.name,d=u.price;else if(h&&h.value){const t=s.find(({id:t})=>t===h?.value);t&&(p=t.id,_=t.handle,f=t.name,d=t.price)}else if(s.length>0){const t=s[0];p=t.id,_=t.handle,f=t.name,d=t.price}const g=Boolean(u),v=`
\n ${__privateMethod(this,fr,Sr).call(this,i,"SUCCESS"===r)}\n
\n
\n ${__privateMethod(this,fr,yr).call(this)}\n
\n
\n

\n
\n
\n
\n
\n
\n
\n
\n ${g?'
1 Added
':""}\n
`;__privateMethod(this,fr,Or).call(this,n,v,d,e,u?.title);const b=n.querySelector(".abra-banner__discount-variants"),m=n.querySelector(".abra-banner__discount-add-to-cart");if(b){if(u)b.innerHTML=`
${f}
`;else if(b.innerHTML=`",m&&(m.innerHTML=``,""!==p)){const e=n.querySelector(".abra-banner__discount-variant-add");if(e){this.addGiftInCartListeners?.forEach(t=>{e?.removeEventListener("click",t)});const i=()=>{l&&(e.classList.add("loading"),l(c,p,o)),t.applyMultiVariantDiscountGiftToCart&&(e.classList.add("loading"),t.applyMultiVariantDiscountGiftToCart(c,p))};this.addGiftInCartListeners=[i],e.addEventListener("click",i)}}if(h=n.querySelector('select[name="selectedGiftVariant"]'),h&&!u){this.selectVariantListeners?.forEach(t=>{h?.removeEventListener("change",t)});const e=()=>{const e=this.querySelector(".abra-banner__discounts-scroll"),i=e?.scrollLeft||0,n=document.getElementById("upCart"),a=n?.shadowRoot?.querySelector(".abra-banner__discounts-scroll"),s=a?.scrollLeft||0;__privateMethod(this,fr,wr).call(this,t,r),requestAnimationFrame(()=>{if(e){const t=e.style.scrollBehavior;e.style.scrollBehavior="auto",e.scrollLeft=i,e.style.scrollBehavior=t}window.dispatchEvent(new CustomEvent("abra:aftersell-upcart:tiers:render")),setTimeout(()=>{const t=n?.shadowRoot?.querySelector(".abra-banner__discounts-scroll");if(t){const e=t.style.scrollBehavior;t.style.scrollBehavior="auto",t.scrollLeft=s,t.style.scrollBehavior=e;const i=t.closest(".abra-banner"),n=i?.querySelector(".abra-banner__paginator");if(n){const e=t.scrollLeft+t.offsetWidth/2,i=Array.from(t.querySelectorAll(".abra-banner__discount"));let r=0,a=1/0;i.forEach((t,i)=>{const n=Math.abs(e-(t.offsetLeft+t.offsetWidth/2));nBoolean(Kc(c,o,t.id)));_?(u=_.id,h=_.handle,p=_.name,d=_.price):(u=s[0].id,h=s[0].handle,p=s[0].name,d=s[0].price);const f=Boolean(_),g=`\n
\n ${__privateMethod(this,fr,Sr).call(this,i,"SUCCESS"===r)}\n
\n
\n ${__privateMethod(this,fr,yr).call(this)}\n
\n
\n

\n
\n
\n
\n
\n
\n
\n ${f?'
1 Added
':""}\n
`;__privateMethod(this,fr,Or).call(this,n,g,d,e,_?.title);const v=n.querySelector(".abra-banner__discount-add-to-cart");if(v)if(_)v.innerHTML=`
${p}
`;else{v.innerHTML=``;const e=n.querySelector(".abra-banner__discount-variant-add");if(e){this.addGiftInCartListeners?.forEach(t=>{e?.removeEventListener("click",t)});const i=()=>{l&&(e.classList.add("loading"),l(c,u,o)),t.applyMultiVariantDiscountGiftToCart&&(e.classList.add("loading"),t.applyMultiVariantDiscountGiftToCart(c,u))};this.addGiftInCartListeners=[i],e.addEventListener("click",i)}}}},Or=function(t,e,i,n,r){if(od(t,e),n){const e=t.querySelector(".abra-banner__discount-title");e&&(e.innerHTML=n)}if(i){const e=t.querySelector(".abra-banner__discount-price");if(e){const t=e.querySelector("[data-price]");t&&(t.innerHTML=kc(i),e.append(" value"))}}if(r&&"Default Title"!==r){const e=t.querySelector(".abra-banner__selected-gift-variant-title");e&&(e.innerHTML=`${r}`)}},Gr=function(t){return t?`
\n \n
`:""},Ir=function(t){const e=this.querySelector(".abra-banner--affiliate-message");e?e.innerHTML=t:__privateGet(this,dr).warn("message cannot be rendered",{element:this})},kr=function(t,e,i){const n=this.querySelector(".abra-banner--affiliate-recommended-by");n&&e&&!i?n.innerHTML=t:n&&e&&i?n.innerHTML=`${t}`:__privateGet(this,dr).warn("message cannot be rendered",{element:this})},Lr=function(t){const e=this.querySelector(".abra-banner__affiliate-image");e&&t?e.innerHTML=`Affiliate Avatar`:__privateGet(this,dr).warn("Affiliate image cannot be rendered",{element:this})},xr=function(t,e){const i=this.querySelector(".abra-banner__affiliate-discount");i?i.innerHTML=`
\n
\n \n \n \n \n \n ${e}\n
\n
\n ${t}\n
\n
`:__privateGet(this,dr).warn("message cannot be rendered",{element:this})},qr=function(){const t=this.querySelector(".abra-banner__discounts-scroll");if(!t)return;const e=t.querySelectorAll(".abra-banner__discount").length;e>0&&(__privateGet(this,dr).debug("Re-attaching shadow DOM listeners after state change",{totalItems:e}),__privateMethod(this,fr,Fr).call(this,t,e))},Fr=function(t,e,i=0){const n=document.getElementById("upCart");if(!n?.shadowRoot)return void(i<3&&setTimeout(()=>{__privateMethod(this,fr,Fr).call(this,t,e,i+1)},100));const r=n.shadowRoot.querySelectorAll(".abra-banner__paginator-prev"),a=n.shadowRoot.querySelectorAll(".abra-banner__paginator-next"),s=n.shadowRoot.querySelectorAll(".abra-banner__discount-variant-add"),o=n.shadowRoot.querySelectorAll('select[name="selectedGiftVariant"]'),c=n.shadowRoot.querySelectorAll(".abra-banner__discounts-scroll");__privateGet(this,dr).debug("Shadow DOM listeners setup",{prevButtons:r.length,nextButtons:a.length,addButtons:s.length,variantSelects:o.length,scrollWrappers:c.length,retryCount:i,bannerName:this.name}),r.forEach(t=>{t.addEventListener("click",e=>{if(e.preventDefault(),e.stopPropagation(),__privateGet(Kd,hr))return void __privateGet(this,dr).debug("Shadow DOM prev button clicked - navigation in progress, ignoring");__privateGet(this,dr).debug("Shadow DOM prev button clicked"),__privateSet(Kd,hr,!0);const i=t.closest(".abra-banner"),n=i?.querySelector(".abra-banner__discounts-scroll"),r=i?.querySelector(".abra-banner__paginator");if(n){const e=Array.from(n.querySelectorAll(".abra-banner__discount")),i=n.scrollLeft+n.offsetWidth/2;let a=0,s=1/0;if(e.forEach((t,e)=>{const n=Math.abs(i-(t.offsetLeft+t.offsetWidth/2));n0){const i=e[a-1];i&&(n.scrollTo({left:i.offsetLeft+i.offsetWidth/2-n.offsetWidth/2,behavior:"smooth"}),setTimeout(()=>{const i=a-1;t.disabled=0===i;const n=r?.querySelector(".abra-banner__paginator-next");n&&(n.disabled=i===e.length-1);const s=r?.querySelector(".abra-banner__paginator-count");s&&(s.textContent=`${i+1}/${e.length}`)},100))}}setTimeout(()=>{__privateSet(Kd,hr,!1)},300)})}),a.forEach(t=>{t.addEventListener("click",e=>{if(e.preventDefault(),e.stopPropagation(),__privateGet(Kd,hr))return void __privateGet(this,dr).debug("Shadow DOM next button clicked - navigation in progress, ignoring");__privateGet(this,dr).debug("Shadow DOM next button clicked"),__privateSet(Kd,hr,!0);const i=t.closest(".abra-banner"),n=i?.querySelector(".abra-banner__discounts-scroll"),r=i?.querySelector(".abra-banner__paginator");if(n){const e=Array.from(n.querySelectorAll(".abra-banner__discount")),i=n.scrollLeft+n.offsetWidth/2;let a=0,s=1/0;if(e.forEach((t,e)=>{const n=Math.abs(i-(t.offsetLeft+t.offsetWidth/2));n{const i=a+1;t.disabled=i===e.length-1;const n=r?.querySelector(".abra-banner__paginator-prev");n&&(n.disabled=0===i);const s=r?.querySelector(".abra-banner__paginator-count");s&&(s.textContent=`${i+1}/${e.length}`)},100))}}setTimeout(()=>{__privateSet(Kd,hr,!1)},300)})}),s.forEach(t=>{t.addEventListener("click",e=>{if(e.preventDefault(),e.stopPropagation(),__privateGet(Kd,ur))return void __privateGet(this,dr).debug("Shadow DOM add button clicked - add to cart in progress, ignoring");const i=t.dataset.variantId;if(__privateGet(this,dr).debug("Shadow DOM add button clicked",{variantId:i}),i){__privateSet(Kd,ur,!0);const t=this.querySelector(`.abra-banner__discount-variant-add[data-variant-id="${i}"]`);t&&t.click(),setTimeout(()=>{__privateSet(Kd,ur,!1)},1e3)}})}),o.forEach(t=>{t.addEventListener("change",t=>{const e=t.target,i=e.value,n=e.dataset.productHandle;__privateGet(this,dr).debug("Shadow DOM select changed",{variantId:i,productHandle:n});const r=this.querySelector(`select[name="selectedGiftVariant"][data-product-handle="${n}"]`);r&&(r.value=i,r.dispatchEvent(new Event("change",{bubbles:!0})))})}),c.forEach(t=>{const e=t.closest(".abra-banner"),i=e?.querySelector(".abra-banner__paginator");if(!i)return;const n=()=>{const e=t.scrollLeft+t.offsetWidth/2,n=Array.from(t.querySelectorAll(".abra-banner__discount"));let r=0,a=1/0;n.forEach((t,i)=>{const n=Math.abs(e-(t.offsetLeft+t.offsetWidth/2));n{null!==a&&cancelAnimationFrame(a),clearTimeout(r),a=requestAnimationFrame(()=>{r=setTimeout(()=>{n(),a=null},10)})},{passive:!0}),t.addEventListener("scrollend",()=>{null!==a&&(cancelAnimationFrame(a),a=null),clearTimeout(r),n()})}),setTimeout(()=>{const t=n.shadowRoot?.querySelector(".abra-banner"),e=t?.querySelector(".abra-banner__discounts-scroll"),i=t?.querySelector(".abra-banner__paginator");if(e&&i){const t=Array.from(e.querySelectorAll(".abra-banner__discount")),n=i.querySelector(".abra-banner__paginator-prev"),r=i.querySelector(".abra-banner__paginator-next");n&&r&&(n.disabled=!0,r.disabled=t.length<=1,__privateGet(this,dr).debug("Initialized shadow DOM paginator button states",{prevDisabled:n.disabled,nextDisabled:r.disabled,totalCards:t.length}))}},150)},__privateAdd(Kd,ur,!1),__privateAdd(Kd,hr,!1),__privateAdd(Kd,pr,!1);let Yd=Kd;class Xd extends HTMLElement{constructor(){super(),__privateAdd(this,Vr),__privateAdd(this,Dr),__publicField(this,"name"),this.name="default",__privateSet(this,Dr,os.createSubLogger("dynamic-text")),this.onHide=this.onHide.bind(this),this.onShow=this.onShow.bind(this)}connectedCallback(){__privateMethod(this,Vr,Nr).call(this),this.dataset.name&&(this.name=this.dataset.name),window.addEventListener(`abra:dynamic-text:${this.name}:hide`,this.onHide),window.addEventListener(`abra:dynamic-text:${this.name}:show`,this.onShow)}disconnectedCallback(){window.removeEventListener(`abra:dynamic-text:${this.name}:hide`,this.onHide),window.removeEventListener(`abra:dynamic-text:${this.name}:show`,this.onShow)}onHide(){this.classList.remove("abra-dynamic-text--show"),window.dispatchEvent(new CustomEvent(`abra:dynamic-text:${this.name}:hidden`))}onShow(t){this.onRender(t),this.classList.add("abra-dynamic-text--show"),window.dispatchEvent(new CustomEvent(`abra:dynamic-text:${this.name}:shown`)),Ed("DYNAMIC_TEXT_SHOWN")}onRender(t){"string"==typeof t?.detail?.text&&t.detail.text&&__privateMethod(this,Vr,Rr).call(this,t.detail.text),"string"==typeof t?.detail?.icon&&t.detail.icon&&__privateMethod(this,Vr,$r).call(this,t.detail.icon)}}Dr=new WeakMap,Vr=new WeakSet,Rr=function(t){const e=this.querySelector(".abra-dynamic-text__text");e?e.innerText=t:__privateGet(this,Dr).warn("text cannot be rendered",{element:this})},$r=function(t){const e=this.querySelector(".abra-dynamic-text__icon");e?Qd(e,t):__privateGet(this,Dr).warn("icon cannot be rendered",{icon:t,element:this})},Nr=function(){null!==(this instanceof Element?this.closest(".announcement-slider__slide"):null)&&this.closest(".abra-dynamic-text-block")?.classList.add("announcement-slider__content")};class tu extends HTMLElement{constructor(){super(),__privateAdd(this,Hr),__privateAdd(this,Br),__publicField(this,"name"),this.name="default",__privateSet(this,Br,os.createSubLogger("html-banner")),this.onHide=this.onHide.bind(this),this.onShow=this.onShow.bind(this)}connectedCallback(){this.dataset.name&&(this.name=this.dataset.name),window.addEventListener(`abra:html-banner:${this.name}:hide`,this.onHide),window.addEventListener(`abra:html-banner:${this.name}:show`,this.onShow)}disconnectedCallback(){window.removeEventListener(`abra:html-banner:${this.name}:hide`,this.onHide),window.removeEventListener(`abra:html-banner:${this.name}:show`,this.onShow)}onHide(){this.classList.remove("abra-banner--show"),window.dispatchEvent(new CustomEvent(`abra:html-banner:${this.name}:hidden`))}onShow(t){this.onRender(t),this.classList.add("abra-html-banner--show"),window.dispatchEvent(new CustomEvent(`abra:html-banner:${this.name}:shown`)),Ed("HTML_BANNER_SHOWN")}onRender(t){__privateGet(this,Br).debug("rendering html banner",{detail:t?.detail}),"string"==typeof t?.detail?.html&&t.detail.html&&__privateMethod(this,Hr,Wr).call(this,t.detail.html)}}Br=new WeakMap,Hr=new WeakSet,Wr=function(t){const e=this.querySelector(".abra-html-banner-container");e&&(e.innerHTML=t)};class eu extends HTMLElement{constructor(){super(),__privateAdd(this,Zr),__privateAdd(this,zr),__privateAdd(this,Ur),__privateSet(this,zr,os.createSubLogger("notification")),__privateSet(this,Ur,null),this.onShow=this.onShow.bind(this),this.onHide=this.onHide.bind(this)}connectedCallback(){window.addEventListener("abra:notification:show",this.onShow),window.addEventListener("abra:notification:hide",this.onHide),this.querySelector(".abra-notification__close")?.addEventListener("click",this.onHide)}disconnectedCallback(){__privateGet(this,Ur)&&(clearTimeout(__privateGet(this,Ur)),__privateSet(this,Ur,null)),window.removeEventListener("abra:notification:show",this.onShow),window.removeEventListener("abra:notification:hide",this.onHide)}show({content:t,error:e}={}){t?(__privateMethod(this,Zr,jr).call(this,t),this.classList.add("abra-notification--show"),e&&this.classList.add("abra-notification--error"),window.dispatchEvent(new CustomEvent("abra:notification:shown")),__privateSet(this,Ur,setTimeout(this.onHide,7e3)),Ed("NOTIFICATION_SHOWN")):__privateGet(this,zr).warn("you must provide content")}hide(){this.classList.remove("abra-notification--show"),this.classList.remove("abra-notification--error"),__privateGet(this,Ur)&&(clearTimeout(__privateGet(this,Ur)),__privateSet(this,Ur,null)),window.dispatchEvent(new CustomEvent("abra:notification:hidden"))}onShow(t){this.show({content:t?.detail?.content})}onHide(){this.hide()}}zr=new WeakMap,Ur=new WeakMap,Zr=new WeakSet,jr=function(t){const e=this.querySelector(".abra-notification__content");e&&(e.innerText=t)};class iu extends HTMLElement{constructor(){super(),__privateAdd(this,Kr),__privateAdd(this,Qr),__privateAdd(this,Jr),__publicField(this,"icon"),__publicField(this,"text"),__privateSet(this,Qr,os.createSubLogger("popup")),__privateSet(this,Jr,null),this.icon="",this.text="",this.onHide=this.onHide.bind(this),this.onShow=this.onShow.bind(this),this.onDismiss=this.onDismiss.bind(this)}connectedCallback(){window.addEventListener("abra:popup:hide",this.onHide),window.addEventListener("abra:popup:show",this.onShow),this.querySelector(".abra-popup__close-button")?.addEventListener("click",this.onDismiss)}disconnectedCallback(){__privateGet(this,Jr)&&(clearTimeout(__privateGet(this,Jr)),__privateSet(this,Jr,null)),window.removeEventListener("abra:popup:hide",this.onHide),window.removeEventListener("abra:popup:show",this.onShow)}onShow(t){if(t?.detail?.text&&"hidden"===window.sessionStorage.getItem(`abra:popup:${rs(t.detail.text)}`))return;const e=t?.detail?.autohide??this.getAttribute("autohide");this.onRender(t),this.classList.add("abra-popup--show"),e&&__privateSet(this,Jr,setTimeout(this.onHide,parseInt(e.toString(),10)||0)),window.dispatchEvent(new CustomEvent("abra:popup:shown")),Ed("POPUP_SHOWN")}onHide(){this.classList.remove("abra-popup--show"),__privateGet(this,Jr)&&(clearTimeout(__privateGet(this,Jr)),__privateSet(this,Jr,null)),window.dispatchEvent(new CustomEvent("abra:popup:hidden"));try{window.sessionStorage.setItem(`abra:popup:${rs(this.text)}`,"hidden")}catch(t){__privateGet(this,Qr).error(t)}}onDismiss(){this.onHide(),Ed("POPUP_DISMISSED")}onRender(t){"string"==typeof t?.detail?.text&&t.detail.text&&(this.text=t.detail.text,__privateMethod(this,Kr,Yr).call(this,t.detail.text)),"string"==typeof t?.detail?.icon&&t.detail.icon&&(this.icon=t.detail.icon,__privateMethod(this,Kr,Xr).call(this,t.detail.icon))}}Qr=new WeakMap,Jr=new WeakMap,Kr=new WeakSet,Yr=function(t){const e=this.querySelector(".abra-popup__text");e?e.innerText=t:__privateGet(this,Qr).warn("text cannot be rendered",{element:this})},Xr=function(t){const e=this.querySelector(".abra-popup__icon");e?Qd(e,t):__privateGet(this,Qr).warn("icon cannot be rendered",{icon:t,element:this})};const nu=function(t,e,i){function n(t){const e=new Event("vite:preloadError",{cancelable:!0});if(e.payload=t,window.dispatchEvent(e),!e.defaultPrevented)throw t}return Promise.resolve().then(e=>{for(const t of e||[])"rejected"===t.status&&n(t.reason);return t().catch(n)})};let ru,au;class su extends HTMLElement{constructor(){super(),__privateAdd(this,ea),__privateAdd(this,ta),__publicField(this,"name"),__publicField(this,"multiEffectTieredBanner"),__publicField(this,"tieredBanner"),this.name="default",__privateSet(this,ta,os.createSubLogger("tiered-banner")),this.onHide=this.onHide.bind(this),this.onShow=this.onShow.bind(this),this.multiEffectTieredBanner=null,this.tieredBanner=null}async initializeBanners(){if(!ru||!au){const[t,e]=await Promise.all([nu(()=>Promise.resolve().then(()=>lu)),nu(()=>Promise.resolve().then(()=>du))]);ru=t.AbraMultiEffectTieredBannerElement,au=e.AbraTieredBannerElement}this.multiEffectTieredBanner||(this.multiEffectTieredBanner=new ru),this.tieredBanner||(this.tieredBanner=new au)}async connectedCallback(){await this.initializeBanners(),this.dataset.name&&(this.name=this.dataset.name),window.addEventListener(`abra:multi-effect-tiered-banner:${this.name}:hide`,this.onHide),window.addEventListener(`abra:multi-effect-tiered-banner:${this.name}:show`,this.onShow),window.addEventListener(`abra:tiered-banner:${this.name}:hide`,this.onHide),window.addEventListener(`abra:tiered-banner:${this.name}:show`,this.onShow)}disconnectedCallback(){window.removeEventListener(`abra:multi-effect-tiered-banner:${this.name}:hide`,this.onHide),window.removeEventListener(`abra:multi-effect-tiered-banner:${this.name}:show`,this.onShow),window.removeEventListener(`abra:tiered-banner:${this.name}:hide`,this.onHide),window.removeEventListener(`abra:tiered-banner:${this.name}:show`,this.onShow)}onHide(t){const e=t.type;e===`abra:multi-effect-tiered-banner:${this.name}:hide`||t instanceof CustomEvent&&t.type.startsWith("abra:multi-effect-tiered-banner:")?__privateMethod(this,ea,ra).call(this,this,t):e===`abra:tiered-banner:${this.name}:hide`||t instanceof CustomEvent&&t.type.startsWith("abra:tiered-banner:")?__privateMethod(this,ea,aa).call(this,this,t):__privateGet(this,ta).warn("Unknown hide event type",{type:e,event:t})}onShow(t){const e=t.type;e===`abra:multi-effect-tiered-banner:${this.name}:show`||t instanceof CustomEvent&&t.type.startsWith("abra:multi-effect-tiered-banner:")?__privateMethod(this,ea,ia).call(this,this,t):e===`abra:tiered-banner:${this.name}:show`||t instanceof CustomEvent&&t.type.startsWith("abra:tiered-banner:")?__privateMethod(this,ea,na).call(this,this,t):__privateGet(this,ta).warn("Unknown show event type",{type:e,event:t})}}function ou(){return Boolean(window.matchMedia&&(window.matchMedia("only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)").matches)||window.devicePixelRatio&&window.devicePixelRatio>1.3)}ta=new WeakMap,ea=new WeakSet,ia=function(t,e){__privateGet(this,ta).debug("onShowMultiEffect",{tieredBanner:t,event:e}),this.multiEffectTieredBanner.onShowMultiEffect(t,e)},na=function(t,e){__privateGet(this,ta).debug("onShowTiered",{tieredBanner:t,event:e}),this.tieredBanner.onShowTiered(t,e)},ra=function(t,e){__privateGet(this,ta).debug("onHideMultiEffect",{tieredBanner:t,event:e}),this.multiEffectTieredBanner.onHideMultiEffect(t)},aa=function(t,e){__privateGet(this,ta).debug("onHideTiered",{tieredBanner:t,event:e}),this.tieredBanner.onHide(t)},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll('a[href="/account/logout"]').forEach(t=>{t.addEventListener("click",async t=>{t.preventDefault(),await window.Abra.deactivate(!1),window.location.href="/account/logout"})})}),window.customElements.define("abra-announcement-bar",Jd),window.customElements.define("abra-banner",Yd),window.customElements.define("abra-dynamic-text",Xd),window.customElements.define("abra-notification",eu),window.customElements.define("abra-popup",iu),window.customElements.define("abra-html-banner",tu),window.customElements.define("abra-tiered-banner",su),window.Abra=new class{constructor(){__privateAdd(this,er),__privateAdd(this,Qn),__privateAdd(this,Jn,null),__privateAdd(this,Kn),__privateAdd(this,Yn,null),__privateAdd(this,Xn),__privateAdd(this,tr,["drippin-jewellery.myshopify.com","abra-development-inktuitive-1.myshopify.com","cmc-motorsports.myshopify.com","spiral-usa.myshopify.com","dixxon-flannel-co.myshopify.com"]),__publicField(this,"AnnouncementBar"),__publicField(this,"Banner"),__publicField(this,"TieredBanner"),__publicField(this,"DynamicText"),__publicField(this,"Integrations"),__publicField(this,"Notification"),__publicField(this,"Popup"),__publicField(this,"HtmlBanner"),__publicField(this,"cache"),__publicField(this,"currency"),__publicField(this,"designMode"),__publicField(this,"initialized"),__publicField(this,"moneyFormat"),__publicField(this,"moneyWithCurrencyFormat"),__publicField(this,"previewMode"),__publicField(this,"settings"),__publicField(this,"template"),__publicField(this,"useSellingPlanPriceOnProductBlock"),__publicField(this,"schemaConfig"),__publicField(this,"customer",null),__publicField(this,"version"),this.useSellingPlanPriceOnProductBlock=!1,__privateSet(this,Kn,os),this.AnnouncementBar=new Fd,this.Banner=new Dd,this.TieredBanner=new Hd,this.DynamicText=new Vd,this.Integrations=new $d([new Pd,new Od]),this.Notification=new Nd,this.Popup=new