@elevateab/sdk 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,6 @@ npm install @elevateab/sdk
9
9
  ```
10
10
 
11
11
  **Peer Dependencies:**
12
-
13
12
  - `react` >= 18.0.0 or >= 19.0.0
14
13
  - `@shopify/hydrogen` >= 2023.10.0 (Hydrogen only)
15
14
  - `next` >= 13.0.0 (Next.js only)
@@ -23,23 +22,17 @@ Hydrogen uses automatic analytics tracking via Shopify's `useAnalytics()` hook.
23
22
  ```tsx
24
23
  // app/root.tsx
25
24
  import { ElevateProvider, ElevateAnalytics } from "@elevateab/sdk";
26
- import { Analytics, useNonce } from "@shopify/hydrogen";
25
+ import { Analytics } from "@shopify/hydrogen";
27
26
 
28
27
  export default function Root() {
29
28
  const data = useLoaderData<typeof loader>();
30
- const nonce = useNonce(); // Required for CSP compliance
31
29
 
32
30
  return (
33
- <Analytics.Provider
34
- cart={data.cart}
35
- shop={data.shop}
36
- consent={data.consent}
37
- >
31
+ <Analytics.Provider cart={data.cart} shop={data.shop} consent={data.consent}>
38
32
  <ElevateProvider
39
33
  storeId="mystore.myshopify.com"
40
34
  storefrontAccessToken={env.PUBLIC_STOREFRONT_API_TOKEN}
41
35
  preventFlickering={true}
42
- nonce={nonce}
43
36
  >
44
37
  <ElevateAnalytics />
45
38
  <Outlet />
@@ -49,49 +42,10 @@ export default function Root() {
49
42
  }
50
43
  ```
51
44
 
52
- That's it! Analytics events are tracked automatically when users view pages, products, add to cart, etc.
45
+ That's it. Analytics events are tracked automatically when users view pages, products, add to cart, etc.
53
46
 
54
47
  The `preventFlickering={true}` prop prevents content flash while tests load.
55
48
 
56
- ### Content Security Policy Configuration
57
-
58
- **For Hydrogen stores:** Add Elevate CDN domains to your CSP in `app/entry.server.tsx`:
59
-
60
- ```tsx
61
- // app/entry.server.tsx
62
- export default async function handleRequest(
63
- request: Request,
64
- responseStatusCode: number,
65
- responseHeaders: Headers,
66
- reactRouterContext: EntryContext,
67
- context: HydrogenRouterContextProvider,
68
- ) {
69
- const {nonce, header, NonceProvider} = createContentSecurityPolicy({...});
70
-
71
- // Add Elevate domains to CSP
72
- let elevateCSP = header
73
- .replace(
74
- /script-src-elem\s+([^;]+)/,
75
- `script-src-elem $1 https://d19dz5bxptjmv5.cloudfront.net`
76
- )
77
- .replace(
78
- /connect-src\s+([^;]+)/,
79
- `connect-src $1 https://d19dz5bxptjmv5.cloudfront.net https://d339co84ntxcme.cloudfront.net https://configs.elevateab.com`
80
- );
81
-
82
- responseHeaders.set('Content-Security-Policy', elevateCSP);
83
- // ... rest of your code
84
- }
85
- ```
86
-
87
- **For other frameworks (Next.js, Gatsby, etc.):**
88
-
89
- Add the following CSP header:
90
-
91
- ```
92
- Content-Security-Policy: script-src 'self' https://d19dz5bxptjmv5.cloudfront.net; script-src-elem 'self' https://d19dz5bxptjmv5.cloudfront.net; connect-src 'self' https://d19dz5bxptjmv5.cloudfront.net https://d339co84ntxcme.cloudfront.net https://configs.elevateab.com
93
- ```
94
-
95
49
  ---
96
50
 
97
51
  ## Next.js Setup
@@ -122,7 +76,6 @@ export default function RootLayout({ children }) {
122
76
  ```
123
77
 
124
78
  The `ElevateNextProvider` automatically:
125
-
126
79
  - Tracks page views on route changes
127
80
  - Initializes analytics globally
128
81
  - Prevents content flicker (when `preventFlickering={true}`)
@@ -156,12 +109,12 @@ import { trackAddToCart } from "@elevateab/sdk";
156
109
  async function handleAddToCart() {
157
110
  // Shopify GIDs are automatically converted to numeric IDs
158
111
  await trackAddToCart({
159
- productId: product.id, // "gid://shopify/Product/123" works
160
- variantId: variant.id, // "gid://shopify/ProductVariant/456" works
112
+ productId: product.id, // "gid://shopify/Product/123" works
113
+ variantId: variant.id, // "gid://shopify/ProductVariant/456" works
161
114
  productPrice: 99.99,
162
115
  productQuantity: 1,
163
116
  currency: "USD",
164
- cartId: cart.id, // For cart attribute tagging
117
+ cartId: cart.id, // For cart attribute tagging
165
118
  });
166
119
  }
167
120
  ```
@@ -197,21 +150,6 @@ await trackCartView({
197
150
 
198
151
  // Search
199
152
  await trackSearchSubmitted({ searchQuery: "blue shirt" });
200
-
201
- // Checkout started
202
- await trackCheckoutStarted({
203
- cartTotalPrice: 199.99,
204
- currency: "USD",
205
- cartItems: [...],
206
- });
207
-
208
- // Checkout completed (order placed)
209
- await trackCheckoutCompleted({
210
- orderId: "order_123",
211
- cartTotalPrice: 199.99,
212
- currency: "USD",
213
- cartItems: [...],
214
- });
215
153
  ```
216
154
 
217
155
  ---
@@ -231,7 +169,7 @@ function PricingSection() {
231
169
  if (variant?.isControl) {
232
170
  return <Price amount={99.99} />;
233
171
  }
234
-
172
+
235
173
  return <Price amount={79.99} />;
236
174
  }
237
175
  ```
@@ -241,13 +179,13 @@ function PricingSection() {
241
179
  ```tsx
242
180
  const { variant } = useExperiment("test-id");
243
181
 
244
- variant?.isControl; // true if control group
245
- variant?.isA; // true if variant A
246
- variant?.isB; // true if variant B
247
- variant?.isC; // true if variant C
248
- variant?.isD; // true if variant D
249
- variant?.id; // variant ID
250
- variant?.name; // variant name
182
+ variant?.isControl // true if control group
183
+ variant?.isA // true if variant A
184
+ variant?.isB // true if variant B
185
+ variant?.isC // true if variant C
186
+ variant?.isD // true if variant D
187
+ variant?.id // variant ID
188
+ variant?.name // variant name
251
189
  ```
252
190
 
253
191
  ### Multiple Variants
@@ -275,7 +213,6 @@ https://yourstore.com/?eabUserPreview=true&abtid=<test-id>&eab_tests=<short-id>_
275
213
  ```
276
214
 
277
215
  Example:
278
-
279
216
  ```
280
217
  https://yourstore.com/products/shirt?eabUserPreview=true&abtid=abc123&eab_tests=c123_12345
281
218
  ```
@@ -296,16 +233,13 @@ if (isPreviewMode()) {
296
233
 
297
234
  Orders are attributed to A/B tests via cart attributes. This happens automatically when you provide `storefrontAccessToken` and `cartId`.
298
235
 
299
- For Hydrogen, pass `storefrontAccessToken` and `nonce` to the provider:
236
+ For Hydrogen, pass `storefrontAccessToken` to the provider:
300
237
 
301
238
  ```tsx
302
- const nonce = useNonce();
303
-
304
239
  <ElevateProvider
305
240
  storeId="mystore.myshopify.com"
306
241
  storefrontAccessToken={env.PUBLIC_STOREFRONT_API_TOKEN}
307
- nonce={nonce}
308
- />;
242
+ />
309
243
  ```
310
244
 
311
245
  For Next.js, pass `cartId` to `trackAddToCart`:
@@ -331,7 +265,7 @@ The Storefront Access Token is safe to use client-side - it's a public token des
331
265
  import { extractShopifyId, isShopifyGid } from "@elevateab/sdk";
332
266
 
333
267
  extractShopifyId("gid://shopify/Product/123456"); // "123456"
334
- isShopifyGid("gid://shopify/Product/123"); // true
268
+ isShopifyGid("gid://shopify/Product/123"); // true
335
269
  ```
336
270
 
337
271
  Note: Tracking functions automatically extract IDs, so you rarely need these directly.
@@ -344,25 +278,25 @@ Note: Tracking functions automatically extract IDs, so you rarely need these dir
344
278
 
345
279
  ```tsx
346
280
  interface ElevateProviderProps {
347
- storeId: string; // Required: your-store.myshopify.com
348
- storefrontAccessToken?: string; // For cart attribute tagging
349
- preventFlickering?: boolean; // Prevent content flash during test load (recommended)
350
- nonce?: string; // Only needed if you have strict CSP headers
281
+ storeId: string; // Required: your-store.myshopify.com
282
+ storefrontAccessToken?: string; // For cart attribute tagging
283
+ preventFlickering?: boolean; // Enable anti-flicker (default: false)
284
+ flickerTimeout?: number; // Max wait time in ms (default: 3000)
351
285
  children: React.ReactNode;
352
286
  }
353
287
  ```
354
288
 
355
289
  ### Analytics Events Summary
356
290
 
357
- | Event | Hydrogen | Next.js |
358
- | ------------------ | --------- | -------------------------- |
359
- | Page view | Automatic | Automatic |
360
- | Product view | Automatic | `ProductViewTracker` |
361
- | Add to cart | Automatic | `trackAddToCart()` |
362
- | Remove from cart | Automatic | `trackRemoveFromCart()` |
363
- | Cart view | Automatic | `trackCartView()` |
364
- | Search | Automatic | `trackSearchSubmitted()` |
365
- | Checkout started | Automatic | `trackCheckoutStarted()` |
291
+ | Event | Hydrogen | Next.js |
292
+ |-------|----------|---------|
293
+ | Page view | Automatic | Automatic |
294
+ | Product view | Automatic | `ProductViewTracker` |
295
+ | Add to cart | Automatic | `trackAddToCart()` |
296
+ | Remove from cart | Automatic | `trackRemoveFromCart()` |
297
+ | Cart view | Automatic | `trackCartView()` |
298
+ | Search | Automatic | `trackSearchSubmitted()` |
299
+ | Checkout started | Automatic | `trackCheckoutStarted()` |
366
300
  | Checkout completed | Automatic | `trackCheckoutCompleted()` |
367
301
 
368
302
  ---
package/dist/index.cjs CHANGED
@@ -42,5 +42,5 @@
42
42
  if(window.__eab_reveal)window.__eab_reveal();
43
43
  };
44
44
  document.head.appendChild(script);
45
- })();`}function Hr(e){if(!e?.trim())return"";try{let r=`https://${e.trim().replace(/^https?:\/\//,"")}`,o=new URL(r.replace(/\/+$/,""));return o.hostname.startsWith("www.")&&(o.hostname=o.hostname.substring(4)),o.toString().replace(/\/+$/,"")}catch{return e.trim().replace(/\/+$/,"")}}function $t(e,t){let r=Hr(e.split("?")[0]);for(let o of t){let n=Hr(o.split("?")[0]);if(r===n)return!0;try{let c=new URL(e).pathname,a=new URL(o,e).pathname;if(c===a)return!0}catch{}}return!1}function Sn(e){return e.data?.redirectBehavior||"redirectAll"}function zr(e){return!!(N("eabRedirectedTests")||{})[e]}function qr(e){let t=N("eabRedirectedTests")||{};t[e]=!0,H("eabRedirectedTests",JSON.stringify(t))}function In(e,t){for(let r of e.tests)if(!(r.type!=="SPLIT_URL"||!r.enabled))for(let o of r.variations){let n=o.splitUrlTestLinks||[];if(n.length!==0&&$t(t,n))return{test:r,matchedVariation:o,isControlUrl:!!o.isControl}}return null}function Un(e){if(typeof window>"u")return;let t=new URL(e,window.location.origin);t.searchParams.set("abtr","true");let r=t.toString(),o=window.__remixRouter?.navigate??window.next?.router?.push??window.$nuxt?.$router?.push??window.__navigate;if(o&&typeof o=="function")try{let n=t.pathname+t.search;o(n);return}catch{}window.location.href=r}function Fe(e,t){if(typeof window>"u")return!1;let r=window.location.href;if(new URLSearchParams(window.location.search).get("abtr")==="true")return!1;let n=In(e,r);if(!n)return!1;let{test:c,matchedVariation:a,isControlUrl:f}=n,d=c.testId,g=Sn(c),i=J(d);if(!i)return!1;let l=c.variations.find(p=>p.id===i);if(!l)return!1;let s=l.splitUrlTestLinks||[];if(s.length===0||$t(r,s))return!1;switch(g){case"redirectOnlyControlUrl":if(!f||l.isControl)return!1;break;case"redirectOnce":if(zr(d))return!1;qr(d);break;case"redirectOnceControlUrlOnly":if(!f||zr(d)||l.isControl)return!1;qr(d);break;default:break}let u=s[0];return Un(u),!0}var Wt={type:"SPLIT_URL",shouldActivate(e,t){for(let r of e.variations){let o=r.splitUrlTestLinks||[];if($t(t.currentUrl,o))return!0}return!1},getVariantData(){return{handlerActivated:!0}}};var Gt=nt(jr(),1),Fr={"facebook.com":"Facebook","fb.me":"Facebook","m.facebook.com":"Facebook","l.facebook.com":"Facebook","lm.facebook.com":"Facebook","instagram.com":"Instagram","l.instagram.com":"Instagram","youtube.com":"Youtube","youtu.be":"Youtube","m.youtube.com":"Youtube","bing.com":"Bing","www.bing.com":"Bing","msnbc.msn.com":"Bing","dizionario.it.msn.com":"Bing","cc.bingj.com":"Bing","m.bing.com":"Bing","twitter.com":"Twitter","t.co":"Twitter"};function P(e){return typeof e!="string"?String(e):e.replace(/[\\"'`\x00-\x1F\x7F]/g,"")}function v(e){if(e==null)return null;let t=typeof e=="string"?parseFloat(e):Number(e);return isNaN(t)?null:+(Math.round(+(t+"e2"))+"e-2")}function te(e){if(!e)return null;let t=/gid:\/\/shopify\/Product\/(\d+)/,r=e.match(t);return r?r[1]:null}function we(e){if(!e)return null;let t=/gid:\/\/shopify\/ProductVariant\/(\d+)/,r=e.match(t);return r?r[1]:null}function Ue(e){if(!e)return null;let t=/gid:\/\/shopify\/Cart\/([^?]+(\?.+)?)/,r=e.match(t);return r?r[1]:null}function Re(e){try{return typeof e!="string"?null:decodeURIComponent(e).split("?")[0]}catch{return e||null}}function Rn(e){return/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i.test(e)}function On(e){return/(instagram)[\/ ]([-\w\.]+)/i.test(e)}function $r(e){return Rn(e)||On(e)}function Vn(e){if(!e)return"";switch(e){case"Mobile Safari":return"Safari";case"Chrome Mobile":case"Chrome Mobile iOS":return"Chrome";case"Firefox Mobile":case"Firefox Mobile iOS":return"Firefox";case"Opera Mobile":case"Opera Mini":case"Opera Mini iOS":return"Opera";case"Yandex Browser Lite":return"Yandex Browser";case"Chrome Webview":case"Mobile App":return"Mobile App";default:return e}}function Ln(e){let t={};return e.searchParams.forEach((r,o)=>{t[o]||(t[o]=r)}),t}function Bn(e){return!!e.host&&["http:","https:"].includes(e.protocol)}function Dn(e){return e.replace(/^www\./,"")}function Nn(e,t,r){if(t&&{Facebook:"Facebook",Instagram:"Instagram"}[t])return t;let n,c;try{if(e&&e.trim()!=="")n=new URL(e);else return"Direct";if(n?.hostname&&Bn(n)){if(c=n.hostname,r&&r===c)return"Direct"}else return""}catch{}if(!c)return"";let a=Dn(c);return a?Fr[a]?Fr[a]:a?.includes("google")?"Google":a:""}function Oe(e){let{referrer:t,entryPage:r,userAgent:o}=e,n={referrer_source:"",browser_info:"",os_info:"",device_type:"",page_entry_path:"",utm_medium:"",utm_source:"",utm_campaign:"",utm_content:"",utm_term:"",referrer_url:t||"",gclid:"",fbclid:"",pins_campaign_id:"",epik:""};try{let c;if(r&&r.trim()!==""&&r.startsWith("http"))try{let a=new URL(r),f=a?.pathname;c=a?.hostname,f&&(n.page_entry_path=f??"");let d=Ln(a);n.utm_medium=d.utm_medium??"",n.utm_source=d.utm_source??"",n.utm_campaign=d.utm_campaign??"",n.utm_content=d.utm_content??"",n.utm_term=d.utm_term??"",n.gclid=d.gclid??"",n.fbclid=d.fbclid??"",n.pins_campaign_id=d.pins_campaign_id??"",n.epik=d.epik??""}catch{}if(o){let a=(0,Gt.UAParser)(o),f=a?.browser?.name,d=Vn(f);n.browser_info=d??"",n.os_info=a?.os?.name??"",o&&(n.device_type=(a?.device?.type||"desktop")?.toUpperCase()??"")}return n.referrer_source=Nn(t,n?.browser_info,c)??"",n}catch{return n}}function Ve(e,t){let r=e==="/"||e==="",n=t&&/^\/[a-z]{2}(-[a-z]{2})?\/?$/i.test(e);return r||n?"index":/\/products\//.test(e)?"product":/\/collections\//.test(e)?"collection":/\/pages\//.test(e)?"page":/\/search/.test(e)?"search":/\/cart/.test(e)?"cart":/\/checkouts\//.test(e)?"checkout":"unknown"}function Wr(e){try{return e&&new URLSearchParams(e).get("eabUserId")||!1}catch{return!1}}function Le(e){if(!e)return"";try{let t=(0,Gt.UAParser)(e),r=t?.os,o=t?.device,n="";return r?.name&&(n+=r.name,r.version&&(n+=` ${r.version}`)),o?.type&&(n+=n?` (${o.type})`:o.type),o?.vendor&&(n+=n?` ${o.vendor}`:o.vendor),o?.model&&(n+=n?` ${o.model}`:o.model),n||e}catch{return e}}function q(e){return e?e.includes("gid://")&&e.split("/").pop()||e:""}function Gr(e){return!e||!e.includes("gid://")?null:e.split("/")[3]||null}function Jr(e){return!!e&&e.startsWith("gid://shopify/")}function Yr(){if(typeof window>"u")return;let e=window.Shopify;if(e?.currency?.active)return e.currency.active}fe();var Qr="elv-el-",Xr={ELEMENT_NODE:1,TEXT_NODE:3},ft=new Map,mt=new Map,gt=new Map,wt=new Map,Be=!1;function re(e,t){if(t==="*")return!0;if(t.startsWith("*")&&t.endsWith("*")){let r=t.slice(1,-1);return e.includes(r)}if(t.startsWith("*")){let r=t.slice(1);return e.endsWith(r)}return t===e}function Qt(){return typeof window>"u"?!1:window.innerWidth<768}function Mn(e){let t="";for(let r=0;r<e.length;r++){let o=e[r];o>="A"&&o<="Z"?(r!==0&&(t+="-"),t+=o.toLowerCase()):t+=o}return t}function Hn(e){return e.nodeType===Xr.TEXT_NODE}function Jt(e){return e.nodeType===Xr.ELEMENT_NODE}function Yt(e,t){ft.has(e)||ft.set(e,t.cloneNode(!0))}function Kr(e){let t=e;t=t.replace(/&#96;/g,"`").replace(/&#36;/g,"$");try{t=JSON.parse('"'+t+'"')}catch{}return t}function Xt(e){if(typeof window>"u"||e.length===0)return;let t=window.location.pathname,r=e.filter(n=>n.pathnames?.length?n.pathnames.some(c=>re(t,c)):!0);Be=Qt();let o=r.map(n=>({...n,style:n.style?{...n.style.lg,...Be&&n.style.sm}:void 0,content:n.content&&Be&&n.content.sm?n.content.sm:n.content?.lg}));o.filter(n=>n.content!==void 0).forEach(n=>{(n.applyAll?Array.from(document.querySelectorAll(n.selector)):[document.querySelector(n.selector)].filter(Boolean)).forEach((a,f)=>{if(!a)return;let d=n.applyAll?`${n.selector}-${f}-${a.id||Math.random().toString(36).substr(2,9)}`:n.selector;Yt(d,a),Hn(a)?a.nodeValue=n.content:Jt(a)&&(a.innerHTML=n.content)})}),o.filter(n=>n.style!==void 0).forEach(n=>{let c=document.querySelector(n.selector);!c||!Jt(c)||(Yt(n.selector,c),Object.entries(n.style).forEach(([a,f])=>{let d=Mn(a),g=f.toString().includes("!important"),i=f.toString().replace(/\s*!important\s*$/,"");c.style.setProperty(d,i,g?"important":void 0)}))}),o.filter(n=>n.attributes!==void 0).forEach(n=>{let c=document.querySelector(n.selector);!c||!Jt(c)||(Yt(n.selector,c),Object.entries(n.attributes).forEach(([a,f])=>{c.setAttribute(a,f)}))})}function Kt(e){if(typeof window>"u"||e.length===0)return;let t=window.location.pathname;e.filter(o=>o.selector?.pathnames?.length?o.selector.pathnames.some(n=>re(t,n)):!0).forEach(o=>{let n=`${Qr}${o.id}`;if(wt.has(n))return;let c=document.querySelector(o.selector.target);if(!c||c.parentElement?.querySelector(`#${n}`))return;let a=Zr(o);o.selector.placement==="after"?c.after(a):o.selector.placement==="before"&&c.before(a),wt.set(n,a)})}function Zr(e){let t=document.createElement(e.tagName);return t.id=`${Qr}${e.id}`,e.style&&Object.assign(t.style,e.style),e.attributes&&Object.entries(e.attributes).forEach(([r,o])=>{t.setAttribute(r,o)}),e.kind==="text"&&e.content&&(t.innerText=e.content),e.kind==="container"&&e.childrens&&e.childrens.forEach(r=>{let o=Zr(r);t.appendChild(o)}),t}function We(e,t){if(typeof window>"u"||e.length===0)return;let r=window.location.pathname;e.filter(n=>n.pathnames?.length?n.excludePathnames?.length&&n.excludePathnames.some(a=>re(r,a))?!1:n.pathnames.some(c=>re(r,c)):!0).forEach(n=>{n.id&&(n.css&&zn(n.id,n.css),n.js&&qn(n.id,n.js,t))})}function zn(e,t){let r=`css-${e}`;if(mt.has(r)||document.getElementById(r))return;let o=document.createElement("style");o.id=r,o.textContent=Kr(t),document.head.appendChild(o),mt.set(r,o)}function qn(e,t,r){let o=`js-${e}`;if(gt.has(o)||document.getElementById(o))return;let n=document.createElement("script");n.id=o,r&&n.setAttribute("nonce",r);let c=Kr(t);n.textContent="(function(){try{"+c+"}catch(e){console.error('[ElevateAB] Custom script error:', e)}})();",document.head.appendChild(n),gt.set(o,n)}function Zt(){ft.forEach((e,t)=>{let r=document.querySelector(t);r&&r.replaceWith(e.cloneNode(!0))})}function er(){mt.forEach(e=>e.remove()),mt.clear(),gt.forEach(e=>e.remove()),gt.clear(),wt.forEach(e=>e.remove()),wt.clear(),ft.clear()}function jn(e,t){let r=[],o=[],n=[];return e.tests.filter(a=>a.type==="CONTENT"&&a.enabled).forEach(a=>{let f=J(a.testId);if(!f)return;let d=a.variations.find(g=>g.id===f);d?.content&&(d.content.changes?.length&&r.push(...d.content.changes),d.content.elements?.length&&o.push(...d.content.elements),d.content.customCodes?.length&&n.push(...d.content.customCodes))}),{changes:r,elements:o,blocks:[],customCodes:n}}function Ge(e){return e.tests.some(t=>t.type==="CONTENT"&&t.enabled)}function Je(e,t,r){if(typeof window>"u"||!Ge(e))return;let o=jn(e,t);(o.changes.length>0||o.elements.length>0||o.customCodes.length>0)&&(Xt(o.changes),Kt(o.elements),We(o.customCodes,r))}function bt(e,t,r){if(typeof window>"u")return;let o=Qt();o!==Be&&(Zt(),Be=o),Je(e,t,r)}function ht(e,t,r){if(typeof window>"u")return()=>{};let o=()=>{Qt()!==Be&&bt(e,t,r)},n=()=>{bt(e,t,r)};return window.addEventListener("resize",o),window.addEventListener("popstate",n),()=>{window.removeEventListener("resize",o),window.removeEventListener("popstate",n),er()}}vt();tr();Y();var Pe=require("react"),Fn="https://bitter-river-9c62.support-67d.workers.dev",$n="https://d339co84ntxcme.cloudfront.net/Prod/orders",D=null;function _t(e){D=e}function be(e){let t=e?.storeId||D?.storeId;return t||(console.warn("[ElevateAB] No storeId provided. Call initAnalytics() first or pass storeId to tracking function."),"")}function Wn(e){return Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,r])=>({test_id:t,variant_id:r}))}function Gn(e,t){return Object.entries(e).filter(([r])=>typeof t[r]=="string").map(([r])=>({test_id:r,variant_id:t[r]}))}function Jn(){return typeof window>"u"?!1:V("eabUserPreview")==="true"||new URLSearchParams(window.location.search).get("eabUserPreview")==="true"}function he(e,t,r){if(typeof window>"u"||Jn())return null;let o=navigator.userAgent,n=window.location.pathname,c=Ve(n,r),{referrer:a,entryPage:f}=Ie(),d=Oe({referrer:a,entryPage:f,userAgent:o}),g=N("ABTL")||{},i=N("ABAU")||{},l=Wn(g),s=Gn(i,g),u=Ue(localStorage.getItem("shopifyCartId")),p=new Date().toISOString(),_=sessionStorage.getItem("eabIsFirstVisit")==="true",x=V("localization")||"";return{pixel_event_id:`sh-${le()}`,shop_name:e,timestamp:p,event_type:t,client_id:V("_shopify_y")||void 0,visitor_id:ce(),session_id:Te(),cart_token:Re(u||V("cart")),page_url:window.location.href,page_pathname:n,page_search:window.location.search,referrer_url:a,referrer_source:d?.referrer_source,previous_page:document.referrer,page_entry:f,page_entry_path:d?.page_entry_path,page_type:c,utm_medium:d?.utm_medium,utm_source:d?.utm_source,utm_campaign:d?.utm_campaign,utm_content:d?.utm_content,utm_term:d?.utm_term,gclid:d?.gclid,fbclid:d?.fbclid,pins_campaign_id:d?.pins_campaign_id,epik:d?.epik,browser_info:d?.browser_info,os_info:d?.os_info,device_type:d?.device_type,language:navigator.language,root_route:localStorage.getItem("eabRootRoute")||"",user_agent:o,user_agent_no_browser:Le(o),is_first_visit:_,shopify_country:x,ab_test_assignments:l,ab_test_views:s,is_first_order:null}}async function ye(e,t=Fn){try{let r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0});if(!r.ok)throw new Error(`Worker error: ${r.status}`)}catch(r){console.error("[ElevateAB] Error sending analytics:",r)}}async function nr(e={}){let t=be(e);if(!t)return;let r=e.hasLocalizedPaths??D?.hasLocalizedPaths,o=e.workerUrl??D?.workerUrl,n=he(t,"page_viewed",r);if(!n)return;let c={...n,cart_currency:e.currency};await ye(c,o)}async function rn(e){let t=be(e);if(!t)return;let{productId:r,productVendor:o,productPrice:n,productSku:c,currency:a}=e,f=e.hasLocalizedPaths??D?.hasLocalizedPaths,d=e.workerUrl??D?.workerUrl,g=he(t,"product_viewed",f);if(!g)return;let i={...g,cart_currency:a,product_id:q(r),product_vendor:P(o),product_price:v(n),product_sku:P(c)};await ye(i,d)}async function nn(e){let t=be(e);if(!t)return;let{productId:r,variantId:o,productVendor:n,productPrice:c,productQuantity:a,productSku:f,currency:d,cartId:g}=e,i=e.hasLocalizedPaths??D?.hasLocalizedPaths,l=e.workerUrl??D?.workerUrl,s=e.storefrontAccessToken??D?.storefrontAccessToken,u=he(t,"product_added_to_cart",i);if(!u)return;let p={...u,cart_currency:d,product_id:q(r),variant_id:q(o),product_vendor:P(n),product_price:v(c),product_quantity:a,product_sku:P(f)};if(await ye(p,l),g&&s)try{let{updateCartAttributes:_}=await Promise.resolve().then(()=>(vt(),tn));await _(g,{storefrontAccessToken:s})}catch(_){console.error("[ElevateAB] Failed to update cart attributes:",_)}}async function on(e){let t=be(e);if(!t)return;let{productId:r,variantId:o,productVendor:n,productPrice:c,productQuantity:a,productSku:f,currency:d}=e,g=e.hasLocalizedPaths??D?.hasLocalizedPaths,i=e.workerUrl??D?.workerUrl,l=he(t,"product_removed_from_cart",g);if(!l)return;let s={...l,cart_currency:d,product_id:q(r),variant_id:q(o),product_vendor:P(n),product_price:v(c),product_quantity:a,product_sku:P(f)};await ye(s,i)}async function sn(e){let t=be(e);if(!t)return;let{cartTotalPrice:r,cartTotalQuantity:o,cartItems:n,currency:c}=e,a=e.hasLocalizedPaths??D?.hasLocalizedPaths,f=e.workerUrl??D?.workerUrl,d=he(t,"cart_viewed",a);if(!d)return;let g={...d,cart_currency:c,cart_total_price:v(r),cart_total_quantity:o,cart_items:n?.map(i=>({product_id:q(i.productId),variant_id:q(i.variantId),product_vendor:P(i.productVendor)||"",product_price:v(i.productPrice),product_quantity:i.productQuantity??null,product_sku:P(i.productSku)||""}))};await ye(g,f)}async function an(e){let t=be(e);if(!t)return;let{searchQuery:r,currency:o}=e,n=e.hasLocalizedPaths??D?.hasLocalizedPaths,c=e.workerUrl??D?.workerUrl,a=he(t,"search_submitted",n);if(!a)return;let f={...a,cart_currency:o,search_query:P(r)};await ye(f,c)}async function cn(e){let t=be(e);if(!t)return;let{cartTotalPrice:r,cartSubtotalPrice:o,cartShippingPrice:n,cartTaxAmount:c,cartDiscountAmount:a,customerId:f,cartItems:d,currency:g}=e,i=e.hasLocalizedPaths??D?.hasLocalizedPaths,l=e.workerUrl??D?.workerUrl,s=he(t,"checkout_started",i);if(!s)return;let u=0,p=d?.map(x=>{let w=x.productQuantity??0;return u+=w,{product_id:q(x.productId),variant_id:q(x.variantId),product_vendor:P(x.productVendor)||"",vendor:P(x.productVendor)||"",product_price:v(x.productPrice),total_price:v(x.productPrice),product_quantity:w,quantity:w,product_sku:P(x.productSku)||"",sku:P(x.productSku)||"",total_discount:v(x.totalDiscount)}})||[],_={...s,cart_currency:g,cart_total_price:v(r),cart_subtotal_price:v(o),cart_total_quantity:u,cart_shipping_price:v(n),cart_tax_amount:v(c),cart_discount_amount:v(a),cart_items:p,customer_id:f};await ye(_,l)}async function un(e){let t=be(e);if(!t)return;let{orderId:r,cartTotalPrice:o,cartSubtotalPrice:n,cartShippingPrice:c,cartTaxAmount:a,cartDiscountAmount:f,customerId:d,isFirstOrder:g,noteAttributes:i,cartItems:l,currency:s}=e,u=e.hasLocalizedPaths??D?.hasLocalizedPaths,p=e.ordersWorkerUrl??D?.ordersWorkerUrl??$n,_=he(t,"checkout_completed",u);if(!_)return;let x=0,w=l?.map(k=>{let L=k.productQuantity??0;return x+=L,{product_id:q(k.productId),variant_id:q(k.variantId),product_vendor:P(k.productVendor)||"",vendor:P(k.productVendor)||"",product_price:v(k.productPrice),total_price:v(k.productPrice),product_quantity:L,quantity:L,product_sku:P(k.productSku)||"",sku:P(k.productSku)||"",total_discount:v(k.totalDiscount)}})||[],b={..._,cart_currency:s,cart_total_price:v(o),cart_subtotal_price:v(n),cart_total_quantity:x,cart_shipping_price:v(c),cart_tax_amount:v(a),cart_discount_amount:v(f),cart_items:w,order_id:r,customer_id:d,is_first_order:g??null,note_attributes:i};await ye(b,p)}function dn(e){let{storeId:t,hasLocalizedPaths:r,currency:o,workerUrl:n,enabled:c=!0,pathname:a}=e,f=(0,Pe.useRef)(null),[d,g]=(0,Pe.useState)(()=>a||(typeof window<"u"?window.location.pathname:""));(0,Pe.useEffect)(()=>{a&&g(a)},[a]),(0,Pe.useEffect)(()=>{typeof window>"u"||!c||f.current!==d&&(f.current=d,nr({storeId:t,hasLocalizedPaths:r,currency:o,workerUrl:n}))},[d,t,r,o,n,c])}var _e=nt(require("react"),1);var or=nt(require("react"),1),Xe=or.default.createContext(null);function Ct(){let e=or.default.useContext(Xe);if(e===null)throw new Error("useElevateConfig must be used within ElevateProvider");return e}fe();je();var kt=new Map;function ve(e){kt.set(e.type,e)}function Ke(e){return kt.get(e)}function ir(){return Array.from(kt.values())}function sr(e){return kt.has(e)}function Yn(e){try{let o=new URL(e,"https://example.com").pathname.match(/\/products\/([^\/\?]+)/);return o?o[1]:null}catch{return null}}function Qn(e,t,r,o){if(typeof window>"u"||!e.prices||!t)return;let n=e.prices[t];if(!n)return;let c=n.price?.[r],a=n.compare?.[r],f=o;if(f?.selectorsV2?.length)for(let d of f.selectorsV2){if(d.price&&c){let g=d.price.replace("{{variant}}",t);document.querySelectorAll(g).forEach(l=>{let s=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(parseFloat(c));l.textContent=s})}if(d.compareAt&&a){let g=d.compareAt.replace("{{variant}}",t);document.querySelectorAll(g).forEach(l=>{let s=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(parseFloat(a));l.textContent=s})}if(d.saving&&c&&a)for(let g of d.saving){let i=g.selector.replace("{{variant}}",t);document.querySelectorAll(i).forEach(s=>{let u=parseFloat(c),p=parseFloat(a),_=p-u;if(g.isPercentage){let x=Math.round(_/p*100);s.textContent=`${x}%`}else{let x=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(_);s.textContent=x}})}}}var ar={type:"PRICE_PLUS",shouldActivate(e,t){let r=e.data;if(!r)return!1;let{productId:o,productHandle:n}=t,c=n||Yn(t.currentUrl),a=o&&r.productIds?.includes(o),f=c&&r.handles?.includes(c);return a||f},applyEffect(e,t,r){Qn(t,r.variantId,r.currencyCode||"USD",r.selectors)},getVariantData(e,t,r){let o=e.data;return{prices:t.prices,matchedProductId:r.productId,productIds:o?.productIds,handles:o?.handles,handlerActivated:!0}}};function Xn(e,t){let o=e.data?.pathnames||[];if(!o.length)return!0;try{let c=new URL(t,"https://example.com").pathname;return o.some(a=>re(c,a))}catch{return!1}}var Ze={type:"CONTENT",shouldActivate(e,t){return Xn(e,t.currentUrl)},getVariantData(e,t,r){let o=e.data;return{content:t.content,pathnames:o?.pathnames,handlerActivated:!0}}};function Kn(e,t){let o=e.data?.pathnames||[];if(!o.length)return!0;try{let c=new URL(t,"https://example.com").pathname;return o.some(a=>re(c,a))}catch{return!1}}var cr={type:"CUSTOM_CODE",shouldActivate(e,t){return Kn(e,t.currentUrl)},getVariantData(e,t,r){let o=e.data;return{customCode:t.customCode,pathnames:o?.pathnames,excludePathnames:o?.excludePathnames,handlerActivated:!0}}};ve(ar);ve(Wt);ve(Ze);ve(cr);function Zn(e){if(typeof window>"u")return{currentUrl:"",selectors:e};let t=window.location.href,r=window.location.pathname,o,n=r.match(/\/products\/([^\/\?]+)/);n&&(o=n[1]);let c,f=new URLSearchParams(window.location.search).get("variant");return f&&(c=f),{currentUrl:t,productHandle:o,variantId:c,selectors:e,currencyCode:"USD"}}function ln(e){let{config:t,previewState:r,selectors:o}=Ct(),[n,c]=_e.default.useState(null),[a,f]=_e.default.useState(!0),d=_e.default.useMemo(()=>t&&t.tests.find(s=>s.testId===e)||null,[t,e]),g=_e.default.useMemo(()=>r||pe(),[r]),i=_e.default.useRef(null),l=_e.default.useRef(null);return _e.default.useEffect(()=>{let s=!0;if(t===null)return;if(!d){i.current!==e&&(i.current=e,console.warn(`[ElevateAB] Test not found: ${e}`)),s&&f(!1);return}if(!d.enabled&&!g?.isPreview){i.current!==`${e}-disabled`&&(i.current=`${e}-disabled`,console.warn(`[ElevateAB] Test disabled: ${e}`)),s&&f(!1);return}let u=J(e);if(!u){s&&f(!1);return}let p=d.variations.find(b=>b.id===u);if(!p){s&&f(!1);return}let _=Ke(d.type),x=Zn(o),w={...p};if(_?.shouldActivate(d,x)){let b=`${e}-${p.id}`;_.applyEffect&&l.current!==b&&(l.current=b,_.applyEffect(d,p,x));let k=_.getVariantData(d,p,x);w={...w,...k}}return s&&c(w),g?.isPreview||dt(e),s&&f(!1),()=>{s=!1}},[t,d,e,g,o]),{variant:n,isLoading:a,isControl:n?.isControl??!1,isA:n?.isA??!1,isB:n?.isB??!1,isC:n?.isC??!1,isD:n?.isD??!1}}var M=nt(require("react"),1);it();je();fe();function ur(e){return e.tests.some(t=>t.type==="CUSTOM_CODE"&&t.enabled)}function dr(e,t,r){if(typeof window>"u")return;if(console.log("[ElevateAB Custom Code] All tests:",e.tests.map(c=>({id:c.testId,type:c.type,enabled:c.enabled}))),!ur(e)){console.log("[ElevateAB Custom Code] No CUSTOM_CODE tests found");return}let o=e.tests.filter(c=>c.type==="CUSTOM_CODE"&&c.enabled);console.log("[ElevateAB Custom Code] Found",o.length,"CUSTOM_CODE tests");let n=[];o.forEach(c=>{let a=J(c.testId);if(console.log("[ElevateAB Custom Code] Test",c.testId,"assigned variant:",a),!a)return;let f=c.variations.find(d=>d.id===a);if(console.log("[ElevateAB Custom Code] Variation data:",f),!f?.customCode){console.log("[ElevateAB Custom Code] No customCode on variation");return}(f.customCode.js||f.customCode.css)&&(console.log("[ElevateAB Custom Code] Adding custom code:",f.customCode),n.push(f.customCode))}),n.length>0?(console.log("[ElevateAB Custom Code] Applying",n.length,"custom code blocks"),We(n,r)):console.log("[ElevateAB Custom Code] No custom code to apply")}function eo(e,t,r){typeof window>"u"||dr(e,t,r)}function pn(e,t,r){if(typeof window>"u")return()=>{};let o=()=>{eo(e,t,r)};return window.addEventListener("popstate",o),()=>{window.removeEventListener("popstate",o)}}fe();var xt=require("react/jsx-runtime"),to="https://d19dz5bxptjmv5.cloudfront.net/headless";function ro(e){return e.replace(/^https?:\/\//,"").replace(".myshopify.com","")}function fn(e){return`${to}/${ro(e)}.js`}function mn({storeId:e,storefrontAccessToken:t,preventFlickering:r=!1,flickerTimeout:o=3e3,nonce:n,children:c}){let[a,f]=M.default.useState(null),[d,g]=M.default.useState(null),[i,l]=M.default.useState(null);M.default.useEffect(()=>{if(typeof window>"u")return;_t({storeId:e,storefrontAccessToken:t});let w=pe();g(w);let b=ge();l(b)},[e,t]);let s=(0,M.useCallback)(()=>{typeof window<"u"&&window.__eab_reveal&&window.__eab_reveal()},[]);M.default.useEffect(()=>{async function w(){try{let b=typeof window<"u"?pe():null,k=null;if(typeof window<"u"&&window.eab_data)k=window.eab_data;else{let Q=fn(e);k=await new Promise((ne,X)=>{let $=document.createElement("script");$.src=Q,$.async=!0,$.onload=()=>{let m=window.eab_data;$.remove(),m?ne(m):X(new Error("Failed to load config: window.eab_data is undefined"))},$.onerror=()=>{$.remove(),ne({allTests:{},selectors:{selectorsV2:[]}})},document.head.appendChild($)})}if(!k||!k.allTests||Object.keys(k.allTests).length===0){f({tests:[],selectors:void 0}),s();return}if(k.subscriptionPaused){console.error(`[ElevateAB] Subscription is paused or stopped for store: ${e}. `+(k.subscriptionMessage||"A/B tests will not run. Please reactivate your subscription.")),f({tests:[],selectors:void 0}),s();return}if(!(Object.keys(k.allTests||{}).length>0)){f({tests:[],selectors:void 0}),s();return}let F=Cr(k);if(ut(F,b),F.tests.some(Q=>Q.type==="SPLIT_URL")&&Fe(F,b))return;f(F),s()}catch(b){console.error("[ElevateAB] Failed to load config:",b),f({tests:[],selectors:void 0}),s()}}w()},[e,s]),M.default.useEffect(()=>!a||typeof window>"u"||!Ge(a)?void 0:(Je(a,d,n),ht(a,d,n)),[a,d,n]),M.default.useEffect(()=>!a||typeof window>"u"||!ur(a)?void 0:(dr(a,d,n),pn(a,d,n)),[a,d,n]);let u=M.default.useMemo(()=>({config:a,storeId:e,storefrontAccessToken:t,isPreviewMode:d?.isPreview??!1,previewTestId:d?.previewTestId??null,previewState:d,selectors:a?.selectors,countryCode:i}),[a,e,t,d,i]),p=(0,M.useRef)(!1);M.default.useEffect(()=>{!t&&!p.current&&(p.current=!0,console.warn("[ElevateAB] No storefrontAccessToken provided. Orders won't be attributed to test variants."))},[t]);let _=M.default.useMemo(()=>fn(e),[e]),x=M.default.useMemo(()=>lt({configUrl:_,timeout:r?o:2e3}),[_,r,o]);return(0,xt.jsxs)(Xe.Provider,{value:u,children:[(0,xt.jsx)("script",{nonce:n,dangerouslySetInnerHTML:{__html:x}}),c]})}var Ee=require("react");Y();Y();vt();var no="https://bitter-river-9c62.support-67d.workers.dev",oo="https://d339co84ntxcme.cloudfront.net/Prod/orders";function Ce(){return`sh-${le()}`}function io(e){return Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,r])=>({test_id:t,variant_id:r}))}function so(e,t){return Object.entries(e).filter(([r])=>typeof t[r]=="string").map(([r])=>({test_id:r,variant_id:t[r]}))}function gn({storeId:e,storefrontAccessToken:t,hasLocalizedPaths:r,workerUrl:o=no,ordersWorkerUrl:n=oo,useAnalytics:c}){let a=(0,Ee.useContext)(Xe),f=e||a?.storeId||"",d=t||a?.storefrontAccessToken,g=(0,Ee.useRef)(!1);(0,Ee.useEffect)(()=>{!a&&!e&&!g.current&&(g.current=!0,console.error("[ElevateAB] ElevateAnalytics must be used inside ElevateProvider, or you must pass storeId as a prop."))},[a,e]);let{subscribe:i,register:l}=c(),{ready:s}=l("Elevate Analytics");return(0,Ee.useEffect)(()=>{if(typeof window>"u")return;if(ce(),Te(),typeof document<"u"){let p=document.referrer||"",_=window.location.href;st(p,_)}(()=>{let p=m=>{let h=te(m.products?.[0]?.id);h&&typeof localStorage<"u"?localStorage.setItem("eabProductPageId",h):typeof window<"u"&&!window.location.pathname.includes("/products/")&&localStorage?.removeItem("eabProductPageId");let S=Ue(typeof localStorage<"u"?localStorage.getItem("shopifyCartId"):null),{referrer:R,entryPage:O}=Ie();return{visitorId:ce(),sessionId:Te(),cartToken:S||V("cart")||"",referrer:R,entryPage:O,clientId:V("_shopify_y"),rootRoute:typeof localStorage<"u"&&localStorage.getItem("eabRootRoute")||"",productPageId:typeof localStorage<"u"&&localStorage.getItem("eabProductPageId")||""}},_=(m,h,S,R)=>{let O=typeof navigator<"u"?navigator.userAgent:"",z=S?.url?new URL(S.url).pathname:typeof window<"u"?window.location.pathname:"",W=Ve(z,r),I=Oe({referrer:R.referrer,entryPage:R.entryPage,userAgent:O}),B=N("ABTL")||{},G=N("ABAU")||{},ke=io(B),oe=so(G,B),ie=new Date().toISOString(),de=typeof sessionStorage<"u"?sessionStorage.getItem("eabIsFirstVisit")==="true":!1,xe=V("localization")||"";return{pixel_event_id:h,shop_name:f,timestamp:ie,event_type:m,client_id:R.clientId,visitor_id:R.visitorId,session_id:R.sessionId,cart_token:Re(R.cartToken),page_url:S.context?.document?.location?.href||(typeof window<"u"?window.location.href:""),page_pathname:z,page_search:S.context?.document?.location?.search||(typeof window<"u"?window.location.search:""),referrer_url:R.referrer,referrer_source:I?.referrer_source,previous_page:typeof document<"u"?document.referrer:"",page_entry:R.entryPage,page_entry_path:I?.page_entry_path,page_type:W,utm_medium:I?.utm_medium,utm_source:I?.utm_source,utm_campaign:I?.utm_campaign,utm_content:I?.utm_content,utm_term:I?.utm_term,gclid:I?.gclid,fbclid:I?.fbclid,pins_campaign_id:I?.pins_campaign_id,epik:I?.epik,browser_info:I?.browser_info,os_info:I?.os_info,device_type:I?.device_type,language:S.context?.navigator?.language||(typeof navigator<"u"?navigator.language:""),root_route:R.rootRoute,user_agent:O,user_agent_no_browser:Le(O),is_first_visit:de,shopify_country:xe,cart_currency:S.shop?.currency,ab_test_assignments:ke,ab_test_views:oe,is_first_order:null}},x=async m=>{if(!m.exclude)try{let h=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m),keepalive:!0});if(!h.ok)throw new Error(`Worker error: ${h.status}`);return h}catch(h){console.error("[ElevateAB] Error sending analytics:",h)}},w=async m=>{try{let h=p(m),S=Ce(),R=_("page_viewed",S,m,h);await x(R)}catch(h){console.error("[ElevateAB] Error handling page_viewed:",h)}},b=async m=>{try{let h=p(m),S=Ce(),O={..._("product_viewed",S,m,h),product_id:te(m?.products?.[0]?.id)||"",product_vendor:P(m?.products?.[0]?.vendor)??"",product_price:v(m?.products?.[0]?.price)??null,product_sku:P(m?.products?.[0]?.sku)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling product_viewed:",h)}},k=async m=>{try{let h=p(m),S=Ce(),O={..._("product_added_to_cart",S,m,h),product_id:te(m?.currentLine?.merchandise?.product?.id)??"",variant_id:we(m?.currentLine?.merchandise?.id)??"",product_vendor:P(m?.currentLine?.merchandise?.product?.vendor)??"",product_price:v(m?.currentLine?.cost?.totalAmount?.amount)??null,product_quantity:m?.currentLine?.quantity??null,product_sku:P(m?.currentLine?.merchandise?.sku)??""};await x(O);let z=m?.cart?.id;z&&d&&f&&Qe(z,{storefrontAccessToken:d,storefrontApiUrl:`https://${f}/api/2025-01/graphql.json`}).catch(W=>{console.error("[ElevateAB] Failed to update cart attributes:",W)})}catch(h){console.error("[ElevateAB] Error handling product_added_to_cart:",h)}},L=async m=>{try{let h=p(m),S=Ce(),O={..._("product_removed_from_cart",S,m,h),product_id:te(m?.prevLine?.merchandise?.product?.id)??"",variant_id:we(m?.prevLine?.merchandise?.id)??"",product_vendor:P(m?.prevLine?.merchandise?.product?.vendor)??"",product_price:v(m?.prevLine?.cost?.totalAmount?.amount)??null,product_quantity:m?.prevLine?.quantity??null,product_sku:P(m?.prevLine?.merchandise?.sku)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling product_removed_from_cart:",h)}},F=async m=>{try{let h=p(m),S=Ce(),R=_("cart_viewed",S,m,h),z=(m?.data?.cart?.lines?.nodes||m?.data?.cart?.lines||[]).map(I=>({product_id:te(I?.merchandise?.product?.id)??"",variant_id:we(I?.merchandise?.id)??"",vendor:P(I?.merchandise?.product?.vendor)??"",total_price:v(I?.cost?.totalAmount?.amount)??null,quantity:I?.quantity??null,sku:P(I?.merchandise?.sku)??""})),W={...R,cart_total_price:v(m?.cart?.cost?.totalAmount?.amount)??null,cart_total_quantity:m?.cart?.totalQuantity??null,cart_items:z};await x(W)}catch(h){console.error("[ElevateAB] Error handling cart_viewed:",h)}},Q=async m=>{try{let h=p(m),S=Ce(),O={..._("search_submitted",S,m,h),search_query:P(m?.data?.searchResult?.query)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling search_submitted:",h)}},ne=async m=>{try{let h=p(m),S=Ce(),R=_("checkout_started",S,m,h),O=0,W=(m?.data?.checkout?.lineItems??[]).map(B=>{let G=B?.quantity??0;O+=G;let oe=(B?.discountAllocations??[])?.reduce((ie,de)=>ie+(de?.amount?.amount||0),0);return{product_id:te(B?.variant?.product?.id)??"",variant_id:we(B?.variant?.id)??"",vendor:P(B?.variant?.product?.vendor)??"",total_price:v(B?.finalLinePrice?.amount)??null,quantity:G,sku:P(B?.variant?.sku)??"",total_discount:v(oe)??null}}),I={...R,cart_total_price:v(m?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:v(m?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:O,cart_shipping_price:v(m?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:v(m?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:v(m?.data?.checkout?.discountsAmount?.amount)??null,cart_items:W,customer_id:m?.data?.checkout?.order?.customer?.id??""};await x(I)}catch(h){console.error("[ElevateAB] Error handling checkout_started:",h)}},X=async m=>{try{let h=p(m),S=Ce(),R=_("checkout_completed",S,m,h),O=0,W=(m?.data?.checkout?.lineItems??[]).map(B=>{let G=B?.quantity??0;O+=G;let oe=(B?.discountAllocations??[])?.reduce((ie,de)=>ie+(de?.amount?.amount||0),0);return{product_id:te(B?.variant?.product?.id)??"",variant_id:we(B?.variant?.id)??"",vendor:P(B?.variant?.product?.vendor)??"",total_price:v(B?.finalLinePrice?.amount)??null,quantity:G,sku:P(B?.variant?.sku)??"",total_discount:v(oe)??null}}),I={...R,cart_total_price:v(m?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:v(m?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:O,cart_shipping_price:v(m?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:v(m?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:v(m?.data?.checkout?.discountsAmount?.amount)??null,cart_items:W,order_id:m?.data?.checkout?.order?.id??"",customer_id:m?.data?.checkout?.order?.customer?.id??"",is_first_order:m?.data?.checkout?.order?.customer?.isFirstOrder??null,note_attributes:m?.data?.checkout?.attributes??[]};await $(I)}catch(h){console.error("[ElevateAB] Error handling checkout_completed:",h)}},$=async m=>{if(!m.exclude)try{let h=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m),keepalive:!0});if(!h.ok)throw new Error(`Orders worker error: ${h.status}`);return h}catch(h){console.error("[ElevateAB] Error sending order analytics:",h)}};i("page_viewed",w),i("product_viewed",b),i("product_added_to_cart",k),i("product_removed_from_cart",L),i("cart_viewed",F),i("search_submitted",Q),i("checkout_started",ne),i("checkout_completed",X)})(),s()},[i,s,f,r,d,o,n]),null}var ao="1.1.2";0&&(module.exports={CART_ATTRIBUTES_UPDATE_MUTATION,COUNTRIES,ElevateAnalytics,ElevateProvider,REGIONS,VERSION,applyContentChanges,applyContentElements,applyCustomCode,assignAllTests,assignAndPersistVariant,buildEabTestsParam,canAssignToTest,checkFacebookBrowser,checkFacebookInstagramBrowser,checkInstagramBrowser,checkPinterestBrowser,checkTikTokBrowser,checkVisitorIdParams,cleanCartToken,cleanupCartAttributes,cleanupContentTests,clearPreviewMode,contentHandler,deleteCookie,detectShopifyCurrency,extractCartToken,extractProductId,extractProductVariantId,extractShopifyId,extractShopifyType,getAllHandlers,getAssignedVariant,getCartAttributesPayload,getCookie,getCountryCode,getDeviceType,getGeoLocation,getHandler,getJsonCookie,getJsonSessionItem,getPageTypeFromPathname,getPreviewState,getPreviewVariation,getReferrerData,getSessionId,getSessionItem,getSplitUrlBlockingScript,getTestList,getTrafficSource,getUserAgentNoBrowser,getVisitorId,hasContentTests,hasHandler,hasSessionView,hasUniqueView,hashString,initAnalytics,initializeSessionId,initializeVisitorId,isCountryExcluded,isCountryIncluded,isInPreviewMode,isPreviewTest,isShopifyGid,matchesGeoTargeting,matchesWildcardPattern,parseAddViewData,processContentTests,processSplitUrlTests,registerHandler,reprocessContentTests,restoreOriginalElements,roundToTwo,sanitizeString,saveTestList,setCookie,setCountryCode,setGeoLocation,setReferrerData,setSessionItem,setupContentTestListeners,shouldShowTest,trackAddToCart,trackCartView,trackCheckoutCompleted,trackCheckoutStarted,trackPageView,trackProductView,trackRemoveFromCart,trackSearchSubmitted,trackSessionView,trackUniqueView,trackViews,updateCartAttributes,updateUrlWithTestParams,useElevateConfig,useExperiment,usePageViewTracking,uuidv4});
45
+ })();`}function Hr(e){if(!e?.trim())return"";try{let r=`https://${e.trim().replace(/^https?:\/\//,"")}`,o=new URL(r.replace(/\/+$/,""));return o.hostname.startsWith("www.")&&(o.hostname=o.hostname.substring(4)),o.toString().replace(/\/+$/,"")}catch{return e.trim().replace(/\/+$/,"")}}function $t(e,t){let r=Hr(e.split("?")[0]);for(let o of t){let n=Hr(o.split("?")[0]);if(r===n)return!0;try{let c=new URL(e).pathname,a=new URL(o,e).pathname;if(c===a)return!0}catch{}}return!1}function Sn(e){return e.data?.redirectBehavior||"redirectAll"}function zr(e){return!!(N("eabRedirectedTests")||{})[e]}function qr(e){let t=N("eabRedirectedTests")||{};t[e]=!0,H("eabRedirectedTests",JSON.stringify(t))}function In(e,t){for(let r of e.tests)if(!(r.type!=="SPLIT_URL"||!r.enabled))for(let o of r.variations){let n=o.splitUrlTestLinks||[];if(n.length!==0&&$t(t,n))return{test:r,matchedVariation:o,isControlUrl:!!o.isControl}}return null}function Un(e){if(typeof window>"u")return;let t=new URL(e,window.location.origin);t.searchParams.set("abtr","true");let r=t.toString(),o=window.__remixRouter?.navigate??window.next?.router?.push??window.$nuxt?.$router?.push??window.__navigate;if(o&&typeof o=="function")try{let n=t.pathname+t.search;o(n);return}catch{}window.location.href=r}function Fe(e,t){if(typeof window>"u")return!1;let r=window.location.href;if(new URLSearchParams(window.location.search).get("abtr")==="true")return!1;let n=In(e,r);if(!n)return!1;let{test:c,matchedVariation:a,isControlUrl:f}=n,d=c.testId,g=Sn(c),i=J(d);if(!i)return!1;let l=c.variations.find(p=>p.id===i);if(!l)return!1;let s=l.splitUrlTestLinks||[];if(s.length===0||$t(r,s))return!1;switch(g){case"redirectOnlyControlUrl":if(!f||l.isControl)return!1;break;case"redirectOnce":if(zr(d))return!1;qr(d);break;case"redirectOnceControlUrlOnly":if(!f||zr(d)||l.isControl)return!1;qr(d);break;default:break}let u=s[0];return Un(u),!0}var Wt={type:"SPLIT_URL",shouldActivate(e,t){for(let r of e.variations){let o=r.splitUrlTestLinks||[];if($t(t.currentUrl,o))return!0}return!1},getVariantData(){return{handlerActivated:!0}}};var Gt=nt(jr(),1),Fr={"facebook.com":"Facebook","fb.me":"Facebook","m.facebook.com":"Facebook","l.facebook.com":"Facebook","lm.facebook.com":"Facebook","instagram.com":"Instagram","l.instagram.com":"Instagram","youtube.com":"Youtube","youtu.be":"Youtube","m.youtube.com":"Youtube","bing.com":"Bing","www.bing.com":"Bing","msnbc.msn.com":"Bing","dizionario.it.msn.com":"Bing","cc.bingj.com":"Bing","m.bing.com":"Bing","twitter.com":"Twitter","t.co":"Twitter"};function P(e){return typeof e!="string"?String(e):e.replace(/[\\"'`\x00-\x1F\x7F]/g,"")}function v(e){if(e==null)return null;let t=typeof e=="string"?parseFloat(e):Number(e);return isNaN(t)?null:+(Math.round(+(t+"e2"))+"e-2")}function te(e){if(!e)return null;let t=/gid:\/\/shopify\/Product\/(\d+)/,r=e.match(t);return r?r[1]:null}function we(e){if(!e)return null;let t=/gid:\/\/shopify\/ProductVariant\/(\d+)/,r=e.match(t);return r?r[1]:null}function Ue(e){if(!e)return null;let t=/gid:\/\/shopify\/Cart\/([^?]+(\?.+)?)/,r=e.match(t);return r?r[1]:null}function Re(e){try{return typeof e!="string"?null:decodeURIComponent(e).split("?")[0]}catch{return e||null}}function Rn(e){return/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i.test(e)}function On(e){return/(instagram)[\/ ]([-\w\.]+)/i.test(e)}function $r(e){return Rn(e)||On(e)}function Vn(e){if(!e)return"";switch(e){case"Mobile Safari":return"Safari";case"Chrome Mobile":case"Chrome Mobile iOS":return"Chrome";case"Firefox Mobile":case"Firefox Mobile iOS":return"Firefox";case"Opera Mobile":case"Opera Mini":case"Opera Mini iOS":return"Opera";case"Yandex Browser Lite":return"Yandex Browser";case"Chrome Webview":case"Mobile App":return"Mobile App";default:return e}}function Ln(e){let t={};return e.searchParams.forEach((r,o)=>{t[o]||(t[o]=r)}),t}function Bn(e){return!!e.host&&["http:","https:"].includes(e.protocol)}function Dn(e){return e.replace(/^www\./,"")}function Nn(e,t,r){if(t&&{Facebook:"Facebook",Instagram:"Instagram"}[t])return t;let n,c;try{if(e&&e.trim()!=="")n=new URL(e);else return"Direct";if(n?.hostname&&Bn(n)){if(c=n.hostname,r&&r===c)return"Direct"}else return""}catch{}if(!c)return"";let a=Dn(c);return a?Fr[a]?Fr[a]:a?.includes("google")?"Google":a:""}function Oe(e){let{referrer:t,entryPage:r,userAgent:o}=e,n={referrer_source:"",browser_info:"",os_info:"",device_type:"",page_entry_path:"",utm_medium:"",utm_source:"",utm_campaign:"",utm_content:"",utm_term:"",referrer_url:t||"",gclid:"",fbclid:"",pins_campaign_id:"",epik:""};try{let c;if(r&&r.trim()!==""&&r.startsWith("http"))try{let a=new URL(r),f=a?.pathname;c=a?.hostname,f&&(n.page_entry_path=f??"");let d=Ln(a);n.utm_medium=d.utm_medium??"",n.utm_source=d.utm_source??"",n.utm_campaign=d.utm_campaign??"",n.utm_content=d.utm_content??"",n.utm_term=d.utm_term??"",n.gclid=d.gclid??"",n.fbclid=d.fbclid??"",n.pins_campaign_id=d.pins_campaign_id??"",n.epik=d.epik??""}catch{}if(o){let a=(0,Gt.UAParser)(o),f=a?.browser?.name,d=Vn(f);n.browser_info=d??"",n.os_info=a?.os?.name??"",o&&(n.device_type=(a?.device?.type||"desktop")?.toUpperCase()??"")}return n.referrer_source=Nn(t,n?.browser_info,c)??"",n}catch{return n}}function Ve(e,t){let r=e==="/"||e==="",n=t&&/^\/[a-z]{2}(-[a-z]{2})?\/?$/i.test(e);return r||n?"index":/\/products\//.test(e)?"product":/\/collections\//.test(e)?"collection":/\/pages\//.test(e)?"page":/\/search/.test(e)?"search":/\/cart/.test(e)?"cart":/\/checkouts\//.test(e)?"checkout":"unknown"}function Wr(e){try{return e&&new URLSearchParams(e).get("eabUserId")||!1}catch{return!1}}function Le(e){if(!e)return"";try{let t=(0,Gt.UAParser)(e),r=t?.os,o=t?.device,n="";return r?.name&&(n+=r.name,r.version&&(n+=` ${r.version}`)),o?.type&&(n+=n?` (${o.type})`:o.type),o?.vendor&&(n+=n?` ${o.vendor}`:o.vendor),o?.model&&(n+=n?` ${o.model}`:o.model),n||e}catch{return e}}function q(e){return e?e.includes("gid://")&&e.split("/").pop()||e:""}function Gr(e){return!e||!e.includes("gid://")?null:e.split("/")[3]||null}function Jr(e){return!!e&&e.startsWith("gid://shopify/")}function Yr(){if(typeof window>"u")return;let e=window.Shopify;if(e?.currency?.active)return e.currency.active}fe();var Qr="elv-el-",Xr={ELEMENT_NODE:1,TEXT_NODE:3},ft=new Map,mt=new Map,gt=new Map,wt=new Map,Be=!1;function re(e,t){if(t==="*")return!0;if(t.startsWith("*")&&t.endsWith("*")){let r=t.slice(1,-1);return e.includes(r)}if(t.startsWith("*")){let r=t.slice(1);return e.endsWith(r)}return t===e}function Qt(){return typeof window>"u"?!1:window.innerWidth<768}function Mn(e){let t="";for(let r=0;r<e.length;r++){let o=e[r];o>="A"&&o<="Z"?(r!==0&&(t+="-"),t+=o.toLowerCase()):t+=o}return t}function Hn(e){return e.nodeType===Xr.TEXT_NODE}function Jt(e){return e.nodeType===Xr.ELEMENT_NODE}function Yt(e,t){ft.has(e)||ft.set(e,t.cloneNode(!0))}function Kr(e){let t=e;t=t.replace(/&#96;/g,"`").replace(/&#36;/g,"$");try{t=JSON.parse('"'+t+'"')}catch{}return t}function Xt(e){if(typeof window>"u"||e.length===0)return;let t=window.location.pathname,r=e.filter(n=>n.pathnames?.length?n.pathnames.some(c=>re(t,c)):!0);Be=Qt();let o=r.map(n=>({...n,style:n.style?{...n.style.lg,...Be&&n.style.sm}:void 0,content:n.content&&Be&&n.content.sm?n.content.sm:n.content?.lg}));o.filter(n=>n.content!==void 0).forEach(n=>{(n.applyAll?Array.from(document.querySelectorAll(n.selector)):[document.querySelector(n.selector)].filter(Boolean)).forEach((a,f)=>{if(!a)return;let d=n.applyAll?`${n.selector}-${f}-${a.id||Math.random().toString(36).substr(2,9)}`:n.selector;Yt(d,a),Hn(a)?a.nodeValue=n.content:Jt(a)&&(a.innerHTML=n.content)})}),o.filter(n=>n.style!==void 0).forEach(n=>{let c=document.querySelector(n.selector);!c||!Jt(c)||(Yt(n.selector,c),Object.entries(n.style).forEach(([a,f])=>{let d=Mn(a),g=f.toString().includes("!important"),i=f.toString().replace(/\s*!important\s*$/,"");c.style.setProperty(d,i,g?"important":void 0)}))}),o.filter(n=>n.attributes!==void 0).forEach(n=>{let c=document.querySelector(n.selector);!c||!Jt(c)||(Yt(n.selector,c),Object.entries(n.attributes).forEach(([a,f])=>{c.setAttribute(a,f)}))})}function Kt(e){if(typeof window>"u"||e.length===0)return;let t=window.location.pathname;e.filter(o=>o.selector?.pathnames?.length?o.selector.pathnames.some(n=>re(t,n)):!0).forEach(o=>{let n=`${Qr}${o.id}`;if(wt.has(n))return;let c=document.querySelector(o.selector.target);if(!c||c.parentElement?.querySelector(`#${n}`))return;let a=Zr(o);o.selector.placement==="after"?c.after(a):o.selector.placement==="before"&&c.before(a),wt.set(n,a)})}function Zr(e){let t=document.createElement(e.tagName);return t.id=`${Qr}${e.id}`,e.style&&Object.assign(t.style,e.style),e.attributes&&Object.entries(e.attributes).forEach(([r,o])=>{t.setAttribute(r,o)}),e.kind==="text"&&e.content&&(t.innerText=e.content),e.kind==="container"&&e.childrens&&e.childrens.forEach(r=>{let o=Zr(r);t.appendChild(o)}),t}function We(e,t){if(typeof window>"u"||e.length===0)return;let r=window.location.pathname;e.filter(n=>n.pathnames?.length?n.excludePathnames?.length&&n.excludePathnames.some(a=>re(r,a))?!1:n.pathnames.some(c=>re(r,c)):!0).forEach(n=>{n.id&&(n.css&&zn(n.id,n.css),n.js&&qn(n.id,n.js,t))})}function zn(e,t){let r=`css-${e}`;if(mt.has(r)||document.getElementById(r))return;let o=document.createElement("style");o.id=r,o.textContent=Kr(t),document.head.appendChild(o),mt.set(r,o)}function qn(e,t,r){let o=`js-${e}`;if(gt.has(o)||document.getElementById(o))return;let n=document.createElement("script");n.id=o,r&&n.setAttribute("nonce",r);let c=Kr(t);n.textContent="(function(){try{"+c+"}catch(e){console.error('[ElevateAB] Custom script error:', e)}})();",document.head.appendChild(n),gt.set(o,n)}function Zt(){ft.forEach((e,t)=>{let r=document.querySelector(t);r&&r.replaceWith(e.cloneNode(!0))})}function er(){mt.forEach(e=>e.remove()),mt.clear(),gt.forEach(e=>e.remove()),gt.clear(),wt.forEach(e=>e.remove()),wt.clear(),ft.clear()}function jn(e,t){let r=[],o=[],n=[];return e.tests.filter(a=>a.type==="CONTENT"&&a.enabled).forEach(a=>{let f=J(a.testId);if(!f)return;let d=a.variations.find(g=>g.id===f);d?.content&&(d.content.changes?.length&&r.push(...d.content.changes),d.content.elements?.length&&o.push(...d.content.elements),d.content.customCodes?.length&&n.push(...d.content.customCodes))}),{changes:r,elements:o,blocks:[],customCodes:n}}function Ge(e){return e.tests.some(t=>t.type==="CONTENT"&&t.enabled)}function Je(e,t,r){if(typeof window>"u"||!Ge(e))return;let o=jn(e,t);(o.changes.length>0||o.elements.length>0||o.customCodes.length>0)&&(Xt(o.changes),Kt(o.elements),We(o.customCodes,r))}function bt(e,t,r){if(typeof window>"u")return;let o=Qt();o!==Be&&(Zt(),Be=o),Je(e,t,r)}function ht(e,t,r){if(typeof window>"u")return()=>{};let o=()=>{Qt()!==Be&&bt(e,t,r)},n=()=>{bt(e,t,r)};return window.addEventListener("resize",o),window.addEventListener("popstate",n),()=>{window.removeEventListener("resize",o),window.removeEventListener("popstate",n),er()}}vt();tr();Y();var Pe=require("react"),Fn="https://bitter-river-9c62.support-67d.workers.dev",$n="https://d339co84ntxcme.cloudfront.net/Prod/orders",D=null;function _t(e){D=e}function be(e){let t=e?.storeId||D?.storeId;return t||(console.warn("[ElevateAB] No storeId provided. Call initAnalytics() first or pass storeId to tracking function."),"")}function Wn(e){return Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,r])=>({test_id:t,variant_id:r}))}function Gn(e,t){return Object.entries(e).filter(([r])=>typeof t[r]=="string").map(([r])=>({test_id:r,variant_id:t[r]}))}function Jn(){return typeof window>"u"?!1:V("eabUserPreview")==="true"||new URLSearchParams(window.location.search).get("eabUserPreview")==="true"}function he(e,t,r){if(typeof window>"u"||Jn())return null;let o=navigator.userAgent,n=window.location.pathname,c=Ve(n,r),{referrer:a,entryPage:f}=Ie(),d=Oe({referrer:a,entryPage:f,userAgent:o}),g=N("ABTL")||{},i=N("ABAU")||{},l=Wn(g),s=Gn(i,g),u=Ue(localStorage.getItem("shopifyCartId")),p=new Date().toISOString(),_=sessionStorage.getItem("eabIsFirstVisit")==="true",x=V("localization")||"";return{pixel_event_id:`sh-${le()}`,shop_name:e,timestamp:p,event_type:t,client_id:V("_shopify_y")||void 0,visitor_id:ce(),session_id:Te(),cart_token:Re(u||V("cart")),page_url:window.location.href,page_pathname:n,page_search:window.location.search,referrer_url:a,referrer_source:d?.referrer_source,previous_page:document.referrer,page_entry:f,page_entry_path:d?.page_entry_path,page_type:c,utm_medium:d?.utm_medium,utm_source:d?.utm_source,utm_campaign:d?.utm_campaign,utm_content:d?.utm_content,utm_term:d?.utm_term,gclid:d?.gclid,fbclid:d?.fbclid,pins_campaign_id:d?.pins_campaign_id,epik:d?.epik,browser_info:d?.browser_info,os_info:d?.os_info,device_type:d?.device_type,language:navigator.language,root_route:localStorage.getItem("eabRootRoute")||"",user_agent:o,user_agent_no_browser:Le(o),is_first_visit:_,shopify_country:x,ab_test_assignments:l,ab_test_views:s,is_first_order:null}}async function ye(e,t=Fn){try{let r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0});if(!r.ok)throw new Error(`Worker error: ${r.status}`)}catch(r){console.error("[ElevateAB] Error sending analytics:",r)}}async function nr(e={}){let t=be(e);if(!t)return;let r=e.hasLocalizedPaths??D?.hasLocalizedPaths,o=e.workerUrl??D?.workerUrl,n=he(t,"page_viewed",r);if(!n)return;let c={...n,cart_currency:e.currency};await ye(c,o)}async function rn(e){let t=be(e);if(!t)return;let{productId:r,productVendor:o,productPrice:n,productSku:c,currency:a}=e,f=e.hasLocalizedPaths??D?.hasLocalizedPaths,d=e.workerUrl??D?.workerUrl,g=he(t,"product_viewed",f);if(!g)return;let i={...g,cart_currency:a,product_id:q(r),product_vendor:P(o),product_price:v(n),product_sku:P(c)};await ye(i,d)}async function nn(e){let t=be(e);if(!t)return;let{productId:r,variantId:o,productVendor:n,productPrice:c,productQuantity:a,productSku:f,currency:d,cartId:g}=e,i=e.hasLocalizedPaths??D?.hasLocalizedPaths,l=e.workerUrl??D?.workerUrl,s=e.storefrontAccessToken??D?.storefrontAccessToken,u=he(t,"product_added_to_cart",i);if(!u)return;let p={...u,cart_currency:d,product_id:q(r),variant_id:q(o),product_vendor:P(n),product_price:v(c),product_quantity:a,product_sku:P(f)};if(await ye(p,l),g&&s)try{let{updateCartAttributes:_}=await Promise.resolve().then(()=>(vt(),tn));await _(g,{storefrontAccessToken:s})}catch(_){console.error("[ElevateAB] Failed to update cart attributes:",_)}}async function on(e){let t=be(e);if(!t)return;let{productId:r,variantId:o,productVendor:n,productPrice:c,productQuantity:a,productSku:f,currency:d}=e,g=e.hasLocalizedPaths??D?.hasLocalizedPaths,i=e.workerUrl??D?.workerUrl,l=he(t,"product_removed_from_cart",g);if(!l)return;let s={...l,cart_currency:d,product_id:q(r),variant_id:q(o),product_vendor:P(n),product_price:v(c),product_quantity:a,product_sku:P(f)};await ye(s,i)}async function sn(e){let t=be(e);if(!t)return;let{cartTotalPrice:r,cartTotalQuantity:o,cartItems:n,currency:c}=e,a=e.hasLocalizedPaths??D?.hasLocalizedPaths,f=e.workerUrl??D?.workerUrl,d=he(t,"cart_viewed",a);if(!d)return;let g={...d,cart_currency:c,cart_total_price:v(r),cart_total_quantity:o,cart_items:n?.map(i=>({product_id:q(i.productId),variant_id:q(i.variantId),product_vendor:P(i.productVendor)||"",product_price:v(i.productPrice),product_quantity:i.productQuantity??null,product_sku:P(i.productSku)||""}))};await ye(g,f)}async function an(e){let t=be(e);if(!t)return;let{searchQuery:r,currency:o}=e,n=e.hasLocalizedPaths??D?.hasLocalizedPaths,c=e.workerUrl??D?.workerUrl,a=he(t,"search_submitted",n);if(!a)return;let f={...a,cart_currency:o,search_query:P(r)};await ye(f,c)}async function cn(e){let t=be(e);if(!t)return;let{cartTotalPrice:r,cartSubtotalPrice:o,cartShippingPrice:n,cartTaxAmount:c,cartDiscountAmount:a,customerId:f,cartItems:d,currency:g}=e,i=e.hasLocalizedPaths??D?.hasLocalizedPaths,l=e.workerUrl??D?.workerUrl,s=he(t,"checkout_started",i);if(!s)return;let u=0,p=d?.map(x=>{let w=x.productQuantity??0;return u+=w,{product_id:q(x.productId),variant_id:q(x.variantId),product_vendor:P(x.productVendor)||"",vendor:P(x.productVendor)||"",product_price:v(x.productPrice),total_price:v(x.productPrice),product_quantity:w,quantity:w,product_sku:P(x.productSku)||"",sku:P(x.productSku)||"",total_discount:v(x.totalDiscount)}})||[],_={...s,cart_currency:g,cart_total_price:v(r),cart_subtotal_price:v(o),cart_total_quantity:u,cart_shipping_price:v(n),cart_tax_amount:v(c),cart_discount_amount:v(a),cart_items:p,customer_id:f};await ye(_,l)}async function un(e){let t=be(e);if(!t)return;let{orderId:r,cartTotalPrice:o,cartSubtotalPrice:n,cartShippingPrice:c,cartTaxAmount:a,cartDiscountAmount:f,customerId:d,isFirstOrder:g,noteAttributes:i,cartItems:l,currency:s}=e,u=e.hasLocalizedPaths??D?.hasLocalizedPaths,p=e.ordersWorkerUrl??D?.ordersWorkerUrl??$n,_=he(t,"checkout_completed",u);if(!_)return;let x=0,w=l?.map(k=>{let L=k.productQuantity??0;return x+=L,{product_id:q(k.productId),variant_id:q(k.variantId),product_vendor:P(k.productVendor)||"",vendor:P(k.productVendor)||"",product_price:v(k.productPrice),total_price:v(k.productPrice),product_quantity:L,quantity:L,product_sku:P(k.productSku)||"",sku:P(k.productSku)||"",total_discount:v(k.totalDiscount)}})||[],b={..._,cart_currency:s,cart_total_price:v(o),cart_subtotal_price:v(n),cart_total_quantity:x,cart_shipping_price:v(c),cart_tax_amount:v(a),cart_discount_amount:v(f),cart_items:w,order_id:r,customer_id:d,is_first_order:g??null,note_attributes:i};await ye(b,p)}function dn(e){let{storeId:t,hasLocalizedPaths:r,currency:o,workerUrl:n,enabled:c=!0,pathname:a}=e,f=(0,Pe.useRef)(null),[d,g]=(0,Pe.useState)(()=>a||(typeof window<"u"?window.location.pathname:""));(0,Pe.useEffect)(()=>{a&&g(a)},[a]),(0,Pe.useEffect)(()=>{typeof window>"u"||!c||f.current!==d&&(f.current=d,nr({storeId:t,hasLocalizedPaths:r,currency:o,workerUrl:n}))},[d,t,r,o,n,c])}var _e=nt(require("react"),1);var or=nt(require("react"),1),Xe=or.default.createContext(null);function Ct(){let e=or.default.useContext(Xe);if(e===null)throw new Error("useElevateConfig must be used within ElevateProvider");return e}fe();je();var kt=new Map;function ve(e){kt.set(e.type,e)}function Ke(e){return kt.get(e)}function ir(){return Array.from(kt.values())}function sr(e){return kt.has(e)}function Yn(e){try{let o=new URL(e,"https://example.com").pathname.match(/\/products\/([^\/\?]+)/);return o?o[1]:null}catch{return null}}function Qn(e,t,r,o){if(typeof window>"u"||!e.prices||!t)return;let n=e.prices[t];if(!n)return;let c=n.price?.[r],a=n.compare?.[r],f=o;if(f?.selectorsV2?.length)for(let d of f.selectorsV2){if(d.price&&c){let g=d.price.replace("{{variant}}",t);document.querySelectorAll(g).forEach(l=>{let s=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(parseFloat(c));l.textContent=s})}if(d.compareAt&&a){let g=d.compareAt.replace("{{variant}}",t);document.querySelectorAll(g).forEach(l=>{let s=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(parseFloat(a));l.textContent=s})}if(d.saving&&c&&a)for(let g of d.saving){let i=g.selector.replace("{{variant}}",t);document.querySelectorAll(i).forEach(s=>{let u=parseFloat(c),p=parseFloat(a),_=p-u;if(g.isPercentage){let x=Math.round(_/p*100);s.textContent=`${x}%`}else{let x=new Intl.NumberFormat("en-US",{style:"currency",currency:r}).format(_);s.textContent=x}})}}}var ar={type:"PRICE_PLUS",shouldActivate(e,t){let r=e.data;if(!r)return!1;let{productId:o,productHandle:n}=t,c=n||Yn(t.currentUrl),a=o&&r.productIds?.includes(o),f=c&&r.handles?.includes(c);return a||f},applyEffect(e,t,r){Qn(t,r.variantId,r.currencyCode||"USD",r.selectors)},getVariantData(e,t,r){let o=e.data;return{prices:t.prices,matchedProductId:r.productId,productIds:o?.productIds,handles:o?.handles,handlerActivated:!0}}};function Xn(e,t){let o=e.data?.pathnames||[];if(!o.length)return!0;try{let c=new URL(t,"https://example.com").pathname;return o.some(a=>re(c,a))}catch{return!1}}var Ze={type:"CONTENT",shouldActivate(e,t){return Xn(e,t.currentUrl)},getVariantData(e,t,r){let o=e.data;return{content:t.content,pathnames:o?.pathnames,handlerActivated:!0}}};function Kn(e,t){let o=e.data?.pathnames||[];if(!o.length)return!0;try{let c=new URL(t,"https://example.com").pathname;return o.some(a=>re(c,a))}catch{return!1}}var cr={type:"CUSTOM_CODE",shouldActivate(e,t){return Kn(e,t.currentUrl)},getVariantData(e,t,r){let o=e.data;return{customCode:t.customCode,pathnames:o?.pathnames,excludePathnames:o?.excludePathnames,handlerActivated:!0}}};ve(ar);ve(Wt);ve(Ze);ve(cr);function Zn(e){if(typeof window>"u")return{currentUrl:"",selectors:e};let t=window.location.href,r=window.location.pathname,o,n=r.match(/\/products\/([^\/\?]+)/);n&&(o=n[1]);let c,f=new URLSearchParams(window.location.search).get("variant");return f&&(c=f),{currentUrl:t,productHandle:o,variantId:c,selectors:e,currencyCode:"USD"}}function ln(e){let{config:t,previewState:r,selectors:o}=Ct(),[n,c]=_e.default.useState(null),[a,f]=_e.default.useState(!0),d=_e.default.useMemo(()=>t&&t.tests.find(s=>s.testId===e)||null,[t,e]),g=_e.default.useMemo(()=>r||pe(),[r]),i=_e.default.useRef(null),l=_e.default.useRef(null);return _e.default.useEffect(()=>{let s=!0;if(t===null)return;if(!d){i.current!==e&&(i.current=e,console.warn(`[ElevateAB] Test not found: ${e}`)),s&&f(!1);return}if(!d.enabled&&!g?.isPreview){i.current!==`${e}-disabled`&&(i.current=`${e}-disabled`,console.warn(`[ElevateAB] Test disabled: ${e}`)),s&&f(!1);return}let u=J(e);if(!u){s&&f(!1);return}let p=d.variations.find(b=>b.id===u);if(!p){s&&f(!1);return}let _=Ke(d.type),x=Zn(o),w={...p};if(_?.shouldActivate(d,x)){let b=`${e}-${p.id}`;_.applyEffect&&l.current!==b&&(l.current=b,_.applyEffect(d,p,x));let k=_.getVariantData(d,p,x);w={...w,...k}}return s&&c(w),g?.isPreview||dt(e),s&&f(!1),()=>{s=!1}},[t,d,e,g,o]),{variant:n,isLoading:a,isControl:n?.isControl??!1,isA:n?.isA??!1,isB:n?.isB??!1,isC:n?.isC??!1,isD:n?.isD??!1}}var M=nt(require("react"),1);it();je();fe();function ur(e){return e.tests.some(t=>t.type==="CUSTOM_CODE"&&t.enabled)}function dr(e,t,r){if(typeof window>"u")return;if(console.log("[ElevateAB Custom Code] All tests:",e.tests.map(c=>({id:c.testId,type:c.type,enabled:c.enabled}))),!ur(e)){console.log("[ElevateAB Custom Code] No CUSTOM_CODE tests found");return}let o=e.tests.filter(c=>c.type==="CUSTOM_CODE"&&c.enabled);console.log("[ElevateAB Custom Code] Found",o.length,"CUSTOM_CODE tests");let n=[];o.forEach(c=>{let a=J(c.testId);if(console.log("[ElevateAB Custom Code] Test",c.testId,"assigned variant:",a),!a)return;let f=c.variations.find(d=>d.id===a);if(console.log("[ElevateAB Custom Code] Variation data:",f),!f?.customCode){console.log("[ElevateAB Custom Code] No customCode on variation");return}(f.customCode.js||f.customCode.css)&&(console.log("[ElevateAB Custom Code] Adding custom code:",f.customCode),n.push(f.customCode))}),n.length>0?(console.log("[ElevateAB Custom Code] Applying",n.length,"custom code blocks"),We(n,r)):console.log("[ElevateAB Custom Code] No custom code to apply")}function eo(e,t,r){typeof window>"u"||dr(e,t,r)}function pn(e,t,r){if(typeof window>"u")return()=>{};let o=()=>{eo(e,t,r)};return window.addEventListener("popstate",o),()=>{window.removeEventListener("popstate",o)}}fe();var xt=require("react/jsx-runtime"),to="https://ds0wlyksfn0sb.cloudfront.net/headless";function ro(e){return e.replace(/^https?:\/\//,"").replace(".myshopify.com","")}function fn(e){return`${to}/${ro(e)}.js`}function mn({storeId:e,storefrontAccessToken:t,preventFlickering:r=!1,flickerTimeout:o=3e3,nonce:n,children:c}){let[a,f]=M.default.useState(null),[d,g]=M.default.useState(null),[i,l]=M.default.useState(null);M.default.useEffect(()=>{if(typeof window>"u")return;_t({storeId:e,storefrontAccessToken:t});let w=pe();g(w);let b=ge();l(b)},[e,t]);let s=(0,M.useCallback)(()=>{typeof window<"u"&&window.__eab_reveal&&window.__eab_reveal()},[]);M.default.useEffect(()=>{async function w(){try{let b=typeof window<"u"?pe():null,k=null;if(typeof window<"u"&&window.eab_data)k=window.eab_data;else{let Q=fn(e);k=await new Promise((ne,X)=>{let $=document.createElement("script");$.src=Q,$.async=!0,$.onload=()=>{let m=window.eab_data;$.remove(),m?ne(m):X(new Error("Failed to load config: window.eab_data is undefined"))},$.onerror=()=>{$.remove(),ne({allTests:{},selectors:{selectorsV2:[]}})},document.head.appendChild($)})}if(!k||!k.allTests||Object.keys(k.allTests).length===0){f({tests:[],selectors:void 0}),s();return}if(k.subscriptionPaused){console.error(`[ElevateAB] Subscription is paused or stopped for store: ${e}. `+(k.subscriptionMessage||"A/B tests will not run. Please reactivate your subscription.")),f({tests:[],selectors:void 0}),s();return}if(!(Object.keys(k.allTests||{}).length>0)){f({tests:[],selectors:void 0}),s();return}let F=Cr(k);if(ut(F,b),F.tests.some(Q=>Q.type==="SPLIT_URL")&&Fe(F,b))return;f(F),s()}catch(b){console.error("[ElevateAB] Failed to load config:",b),f({tests:[],selectors:void 0}),s()}}w()},[e,s]),M.default.useEffect(()=>!a||typeof window>"u"||!Ge(a)?void 0:(Je(a,d,n),ht(a,d,n)),[a,d,n]),M.default.useEffect(()=>!a||typeof window>"u"||!ur(a)?void 0:(dr(a,d,n),pn(a,d,n)),[a,d,n]);let u=M.default.useMemo(()=>({config:a,storeId:e,storefrontAccessToken:t,isPreviewMode:d?.isPreview??!1,previewTestId:d?.previewTestId??null,previewState:d,selectors:a?.selectors,countryCode:i}),[a,e,t,d,i]),p=(0,M.useRef)(!1);M.default.useEffect(()=>{!t&&!p.current&&(p.current=!0,console.warn("[ElevateAB] No storefrontAccessToken provided. Orders won't be attributed to test variants."))},[t]);let _=M.default.useMemo(()=>fn(e),[e]),x=M.default.useMemo(()=>lt({configUrl:_,timeout:r?o:2e3}),[_,r,o]);return(0,xt.jsxs)(Xe.Provider,{value:u,children:[(0,xt.jsx)("script",{nonce:n,dangerouslySetInnerHTML:{__html:x}}),c]})}var Ee=require("react");Y();Y();vt();var no="https://bitter-river-9c62.support-67d.workers.dev",oo="https://d339co84ntxcme.cloudfront.net/Prod/orders";function Ce(){return`sh-${le()}`}function io(e){return Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,r])=>({test_id:t,variant_id:r}))}function so(e,t){return Object.entries(e).filter(([r])=>typeof t[r]=="string").map(([r])=>({test_id:r,variant_id:t[r]}))}function gn({storeId:e,storefrontAccessToken:t,hasLocalizedPaths:r,workerUrl:o=no,ordersWorkerUrl:n=oo,useAnalytics:c}){let a=(0,Ee.useContext)(Xe),f=e||a?.storeId||"",d=t||a?.storefrontAccessToken,g=(0,Ee.useRef)(!1);(0,Ee.useEffect)(()=>{!a&&!e&&!g.current&&(g.current=!0,console.error("[ElevateAB] ElevateAnalytics must be used inside ElevateProvider, or you must pass storeId as a prop."))},[a,e]);let{subscribe:i,register:l}=c(),{ready:s}=l("Elevate Analytics");return(0,Ee.useEffect)(()=>{if(typeof window>"u")return;if(ce(),Te(),typeof document<"u"){let p=document.referrer||"",_=window.location.href;st(p,_)}(()=>{let p=m=>{let h=te(m.products?.[0]?.id);h&&typeof localStorage<"u"?localStorage.setItem("eabProductPageId",h):typeof window<"u"&&!window.location.pathname.includes("/products/")&&localStorage?.removeItem("eabProductPageId");let S=Ue(typeof localStorage<"u"?localStorage.getItem("shopifyCartId"):null),{referrer:R,entryPage:O}=Ie();return{visitorId:ce(),sessionId:Te(),cartToken:S||V("cart")||"",referrer:R,entryPage:O,clientId:V("_shopify_y"),rootRoute:typeof localStorage<"u"&&localStorage.getItem("eabRootRoute")||"",productPageId:typeof localStorage<"u"&&localStorage.getItem("eabProductPageId")||""}},_=(m,h,S,R)=>{let O=typeof navigator<"u"?navigator.userAgent:"",z=S?.url?new URL(S.url).pathname:typeof window<"u"?window.location.pathname:"",W=Ve(z,r),I=Oe({referrer:R.referrer,entryPage:R.entryPage,userAgent:O}),B=N("ABTL")||{},G=N("ABAU")||{},ke=io(B),oe=so(G,B),ie=new Date().toISOString(),de=typeof sessionStorage<"u"?sessionStorage.getItem("eabIsFirstVisit")==="true":!1,xe=V("localization")||"";return{pixel_event_id:h,shop_name:f,timestamp:ie,event_type:m,client_id:R.clientId,visitor_id:R.visitorId,session_id:R.sessionId,cart_token:Re(R.cartToken),page_url:S.context?.document?.location?.href||(typeof window<"u"?window.location.href:""),page_pathname:z,page_search:S.context?.document?.location?.search||(typeof window<"u"?window.location.search:""),referrer_url:R.referrer,referrer_source:I?.referrer_source,previous_page:typeof document<"u"?document.referrer:"",page_entry:R.entryPage,page_entry_path:I?.page_entry_path,page_type:W,utm_medium:I?.utm_medium,utm_source:I?.utm_source,utm_campaign:I?.utm_campaign,utm_content:I?.utm_content,utm_term:I?.utm_term,gclid:I?.gclid,fbclid:I?.fbclid,pins_campaign_id:I?.pins_campaign_id,epik:I?.epik,browser_info:I?.browser_info,os_info:I?.os_info,device_type:I?.device_type,language:S.context?.navigator?.language||(typeof navigator<"u"?navigator.language:""),root_route:R.rootRoute,user_agent:O,user_agent_no_browser:Le(O),is_first_visit:de,shopify_country:xe,cart_currency:S.shop?.currency,ab_test_assignments:ke,ab_test_views:oe,is_first_order:null}},x=async m=>{if(!m.exclude)try{let h=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m),keepalive:!0});if(!h.ok)throw new Error(`Worker error: ${h.status}`);return h}catch(h){console.error("[ElevateAB] Error sending analytics:",h)}},w=async m=>{try{let h=p(m),S=Ce(),R=_("page_viewed",S,m,h);await x(R)}catch(h){console.error("[ElevateAB] Error handling page_viewed:",h)}},b=async m=>{try{let h=p(m),S=Ce(),O={..._("product_viewed",S,m,h),product_id:te(m?.products?.[0]?.id)||"",product_vendor:P(m?.products?.[0]?.vendor)??"",product_price:v(m?.products?.[0]?.price)??null,product_sku:P(m?.products?.[0]?.sku)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling product_viewed:",h)}},k=async m=>{try{let h=p(m),S=Ce(),O={..._("product_added_to_cart",S,m,h),product_id:te(m?.currentLine?.merchandise?.product?.id)??"",variant_id:we(m?.currentLine?.merchandise?.id)??"",product_vendor:P(m?.currentLine?.merchandise?.product?.vendor)??"",product_price:v(m?.currentLine?.cost?.totalAmount?.amount)??null,product_quantity:m?.currentLine?.quantity??null,product_sku:P(m?.currentLine?.merchandise?.sku)??""};await x(O);let z=m?.cart?.id;z&&d&&f&&Qe(z,{storefrontAccessToken:d,storefrontApiUrl:`https://${f}/api/2025-01/graphql.json`}).catch(W=>{console.error("[ElevateAB] Failed to update cart attributes:",W)})}catch(h){console.error("[ElevateAB] Error handling product_added_to_cart:",h)}},L=async m=>{try{let h=p(m),S=Ce(),O={..._("product_removed_from_cart",S,m,h),product_id:te(m?.prevLine?.merchandise?.product?.id)??"",variant_id:we(m?.prevLine?.merchandise?.id)??"",product_vendor:P(m?.prevLine?.merchandise?.product?.vendor)??"",product_price:v(m?.prevLine?.cost?.totalAmount?.amount)??null,product_quantity:m?.prevLine?.quantity??null,product_sku:P(m?.prevLine?.merchandise?.sku)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling product_removed_from_cart:",h)}},F=async m=>{try{let h=p(m),S=Ce(),R=_("cart_viewed",S,m,h),z=(m?.data?.cart?.lines?.nodes||m?.data?.cart?.lines||[]).map(I=>({product_id:te(I?.merchandise?.product?.id)??"",variant_id:we(I?.merchandise?.id)??"",vendor:P(I?.merchandise?.product?.vendor)??"",total_price:v(I?.cost?.totalAmount?.amount)??null,quantity:I?.quantity??null,sku:P(I?.merchandise?.sku)??""})),W={...R,cart_total_price:v(m?.cart?.cost?.totalAmount?.amount)??null,cart_total_quantity:m?.cart?.totalQuantity??null,cart_items:z};await x(W)}catch(h){console.error("[ElevateAB] Error handling cart_viewed:",h)}},Q=async m=>{try{let h=p(m),S=Ce(),O={..._("search_submitted",S,m,h),search_query:P(m?.data?.searchResult?.query)??""};await x(O)}catch(h){console.error("[ElevateAB] Error handling search_submitted:",h)}},ne=async m=>{try{let h=p(m),S=Ce(),R=_("checkout_started",S,m,h),O=0,W=(m?.data?.checkout?.lineItems??[]).map(B=>{let G=B?.quantity??0;O+=G;let oe=(B?.discountAllocations??[])?.reduce((ie,de)=>ie+(de?.amount?.amount||0),0);return{product_id:te(B?.variant?.product?.id)??"",variant_id:we(B?.variant?.id)??"",vendor:P(B?.variant?.product?.vendor)??"",total_price:v(B?.finalLinePrice?.amount)??null,quantity:G,sku:P(B?.variant?.sku)??"",total_discount:v(oe)??null}}),I={...R,cart_total_price:v(m?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:v(m?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:O,cart_shipping_price:v(m?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:v(m?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:v(m?.data?.checkout?.discountsAmount?.amount)??null,cart_items:W,customer_id:m?.data?.checkout?.order?.customer?.id??""};await x(I)}catch(h){console.error("[ElevateAB] Error handling checkout_started:",h)}},X=async m=>{try{let h=p(m),S=Ce(),R=_("checkout_completed",S,m,h),O=0,W=(m?.data?.checkout?.lineItems??[]).map(B=>{let G=B?.quantity??0;O+=G;let oe=(B?.discountAllocations??[])?.reduce((ie,de)=>ie+(de?.amount?.amount||0),0);return{product_id:te(B?.variant?.product?.id)??"",variant_id:we(B?.variant?.id)??"",vendor:P(B?.variant?.product?.vendor)??"",total_price:v(B?.finalLinePrice?.amount)??null,quantity:G,sku:P(B?.variant?.sku)??"",total_discount:v(oe)??null}}),I={...R,cart_total_price:v(m?.data?.checkout?.totalPrice?.amount)??null,cart_subtotal_price:v(m?.data?.checkout?.subtotalPrice?.amount)??null,cart_total_quantity:O,cart_shipping_price:v(m?.data?.checkout?.shippingLine?.price?.amount)??null,cart_tax_amount:v(m?.data?.checkout?.totalTax?.amount)??null,cart_discount_amount:v(m?.data?.checkout?.discountsAmount?.amount)??null,cart_items:W,order_id:m?.data?.checkout?.order?.id??"",customer_id:m?.data?.checkout?.order?.customer?.id??"",is_first_order:m?.data?.checkout?.order?.customer?.isFirstOrder??null,note_attributes:m?.data?.checkout?.attributes??[]};await $(I)}catch(h){console.error("[ElevateAB] Error handling checkout_completed:",h)}},$=async m=>{if(!m.exclude)try{let h=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m),keepalive:!0});if(!h.ok)throw new Error(`Orders worker error: ${h.status}`);return h}catch(h){console.error("[ElevateAB] Error sending order analytics:",h)}};i("page_viewed",w),i("product_viewed",b),i("product_added_to_cart",k),i("product_removed_from_cart",L),i("cart_viewed",F),i("search_submitted",Q),i("checkout_started",ne),i("checkout_completed",X)})(),s()},[i,s,f,r,d,o,n]),null}var ao="1.1.2";0&&(module.exports={CART_ATTRIBUTES_UPDATE_MUTATION,COUNTRIES,ElevateAnalytics,ElevateProvider,REGIONS,VERSION,applyContentChanges,applyContentElements,applyCustomCode,assignAllTests,assignAndPersistVariant,buildEabTestsParam,canAssignToTest,checkFacebookBrowser,checkFacebookInstagramBrowser,checkInstagramBrowser,checkPinterestBrowser,checkTikTokBrowser,checkVisitorIdParams,cleanCartToken,cleanupCartAttributes,cleanupContentTests,clearPreviewMode,contentHandler,deleteCookie,detectShopifyCurrency,extractCartToken,extractProductId,extractProductVariantId,extractShopifyId,extractShopifyType,getAllHandlers,getAssignedVariant,getCartAttributesPayload,getCookie,getCountryCode,getDeviceType,getGeoLocation,getHandler,getJsonCookie,getJsonSessionItem,getPageTypeFromPathname,getPreviewState,getPreviewVariation,getReferrerData,getSessionId,getSessionItem,getSplitUrlBlockingScript,getTestList,getTrafficSource,getUserAgentNoBrowser,getVisitorId,hasContentTests,hasHandler,hasSessionView,hasUniqueView,hashString,initAnalytics,initializeSessionId,initializeVisitorId,isCountryExcluded,isCountryIncluded,isInPreviewMode,isPreviewTest,isShopifyGid,matchesGeoTargeting,matchesWildcardPattern,parseAddViewData,processContentTests,processSplitUrlTests,registerHandler,reprocessContentTests,restoreOriginalElements,roundToTwo,sanitizeString,saveTestList,setCookie,setCountryCode,setGeoLocation,setReferrerData,setSessionItem,setupContentTestListeners,shouldShowTest,trackAddToCart,trackCartView,trackCheckoutCompleted,trackCheckoutStarted,trackPageView,trackProductView,trackRemoveFromCart,trackSearchSubmitted,trackSessionView,trackUniqueView,trackViews,updateCartAttributes,updateUrlWithTestParams,useElevateConfig,useExperiment,usePageViewTracking,uuidv4});
46
46
  //# sourceMappingURL=index.cjs.map