@xenia-martech/sdk-js 1.2.0-dev.1 → 1.2.0-dev.3

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.
Files changed (56) hide show
  1. package/README.md +6 -1
  2. package/dist/{actions-D9_aAvCv.d.cts → actions-Bhji05Pe.d.cts} +19 -4
  3. package/dist/{actions-D9_aAvCv.d.ts → actions-Bhji05Pe.d.ts} +19 -4
  4. package/dist/{api-CktVQ6Gl.d.ts → api-BqSvWgBZ.d.cts} +4 -2
  5. package/dist/{api-BEPW0Uan.d.cts → api-ByoECRhR.d.ts} +4 -2
  6. package/dist/{chunk-DWFVDNU5.js → chunk-INM2SPH4.js} +4 -4
  7. package/dist/chunk-INM2SPH4.js.map +1 -0
  8. package/dist/{chunk-7NGJC7CF.js → chunk-TGG5Y4QD.js} +17 -6
  9. package/dist/chunk-TGG5Y4QD.js.map +1 -0
  10. package/dist/{chunk-3PYPPIUM.cjs → chunk-TRRMMPBH.cjs} +13 -13
  11. package/dist/chunk-TRRMMPBH.cjs.map +1 -0
  12. package/dist/{chunk-IBNIRT7J.cjs → chunk-YZG6JR4E.cjs} +17 -6
  13. package/dist/chunk-YZG6JR4E.cjs.map +1 -0
  14. package/dist/client/index.cjs +43 -8
  15. package/dist/client/index.cjs.map +1 -1
  16. package/dist/client/index.d.cts +2 -2
  17. package/dist/client/index.d.ts +2 -2
  18. package/dist/client/index.js +43 -8
  19. package/dist/client/index.js.map +1 -1
  20. package/dist/client/react/index.cjs +46 -11
  21. package/dist/client/react/index.cjs.map +1 -1
  22. package/dist/client/react/index.d.cts +2 -2
  23. package/dist/client/react/index.d.ts +2 -2
  24. package/dist/client/react/index.js +46 -11
  25. package/dist/client/react/index.js.map +1 -1
  26. package/dist/cms/contentful.cjs +2 -1
  27. package/dist/cms/contentful.cjs.map +1 -1
  28. package/dist/cms/contentful.d.cts +1 -1
  29. package/dist/cms/contentful.d.ts +1 -1
  30. package/dist/cms/contentful.js +2 -1
  31. package/dist/cms/contentful.js.map +1 -1
  32. package/dist/{cookie-names-CLqtmGBM.d.ts → cookie-names-Bxd-VNyJ.d.ts} +1 -1
  33. package/dist/{cookie-names-BACctagz.d.cts → cookie-names-RXVfGYPE.d.cts} +1 -1
  34. package/dist/index.cjs +21 -21
  35. package/dist/index.d.cts +4 -4
  36. package/dist/index.d.ts +4 -4
  37. package/dist/index.js +1 -1
  38. package/dist/next/index.cjs +9 -9
  39. package/dist/next/index.d.cts +3 -3
  40. package/dist/next/index.d.ts +3 -3
  41. package/dist/next/index.js +2 -2
  42. package/dist/{personalize-content-Clc1oMYY.d.cts → personalize-content-Bf6YZdkZ.d.cts} +12 -1
  43. package/dist/{personalize-content-Clc1oMYY.d.ts → personalize-content-Bf6YZdkZ.d.ts} +12 -1
  44. package/dist/server/index.cjs +19 -19
  45. package/dist/server/index.d.cts +5 -5
  46. package/dist/server/index.d.ts +5 -5
  47. package/dist/server/index.js +3 -3
  48. package/dist/xenia-sdk.iife.js +3 -3
  49. package/dist/xenia-sdk.iife.js.map +1 -1
  50. package/dist/{xenia-server-BWhWD0La.d.ts → xenia-server-CcjQenru.d.ts} +2 -2
  51. package/dist/{xenia-server-o_wDOcei.d.cts → xenia-server-MlI3Khya.d.cts} +2 -2
  52. package/package.json +1 -1
  53. package/dist/chunk-3PYPPIUM.cjs.map +0 -1
  54. package/dist/chunk-7NGJC7CF.js.map +0 -1
  55. package/dist/chunk-DWFVDNU5.js.map +0 -1
  56. package/dist/chunk-IBNIRT7J.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-o_wDOcei.cjs';
2
- import { f as ConsentState } from '../personalize-content-Clc1oMYY.cjs';
3
- export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, d as AppliedSwap, e as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, l as EventIdentity, I as IdentifyRequest, m as IdentifyResponse, J as JsonValue, P as PagePersonalizeOptions, q as PageRef, r as PersonalizationSwap, t as PersonalizeContentResult, R as ResolveBatchItem, u as ResolveBatchResult, w as ResolveOptions, x as ResolveResult, W as WebhookResponse, L as XeniaConfig, N as XeniaEvent, X as XeniaMarker, O as pendingTargets, Q as personalizeContent, S as personalizePage } from '../personalize-content-Clc1oMYY.cjs';
4
- export { X as XeniaApi } from '../api-BEPW0Uan.cjs';
5
- export { C as CONSENT_COOKIE, a as CircuitOpenError, V as VISITOR_COOKIE, f as consentCookie, g as consentCookieName, p as parseActions, v as visitorCookieName } from '../cookie-names-BACctagz.cjs';
1
+ export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-MlI3Khya.cjs';
2
+ import { f as ConsentState } from '../personalize-content-Bf6YZdkZ.cjs';
3
+ export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, d as AppliedSwap, e as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, l as EventIdentity, I as IdentifyRequest, m as IdentifyResponse, J as JsonValue, P as PagePersonalizeOptions, q as PageRef, r as PersonalizationSwap, t as PersonalizeContentResult, R as ResolveBatchItem, u as ResolveBatchResult, w as ResolveOptions, x as ResolveResult, W as WebhookResponse, L as XeniaConfig, N as XeniaEvent, X as XeniaMarker, O as pendingTargets, Q as personalizeContent, S as personalizePage } from '../personalize-content-Bf6YZdkZ.cjs';
4
+ export { X as XeniaApi } from '../api-BqSvWgBZ.cjs';
5
+ export { C as CONSENT_COOKIE, a as CircuitOpenError, V as VISITOR_COOKIE, f as consentCookie, g as consentCookieName, p as parseActions, v as visitorCookieName } from '../cookie-names-RXVfGYPE.cjs';
6
6
 
7
7
  interface RefreshTokenOptions {
8
8
  /**
@@ -1,8 +1,8 @@
1
- export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-BWhWD0La.js';
2
- import { f as ConsentState } from '../personalize-content-Clc1oMYY.js';
3
- export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, d as AppliedSwap, e as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, l as EventIdentity, I as IdentifyRequest, m as IdentifyResponse, J as JsonValue, P as PagePersonalizeOptions, q as PageRef, r as PersonalizationSwap, t as PersonalizeContentResult, R as ResolveBatchItem, u as ResolveBatchResult, w as ResolveOptions, x as ResolveResult, W as WebhookResponse, L as XeniaConfig, N as XeniaEvent, X as XeniaMarker, O as pendingTargets, Q as personalizeContent, S as personalizePage } from '../personalize-content-Clc1oMYY.js';
4
- export { X as XeniaApi } from '../api-CktVQ6Gl.js';
5
- export { C as CONSENT_COOKIE, a as CircuitOpenError, V as VISITOR_COOKIE, f as consentCookie, g as consentCookieName, p as parseActions, v as visitorCookieName } from '../cookie-names-CLqtmGBM.js';
1
+ export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-CcjQenru.js';
2
+ import { f as ConsentState } from '../personalize-content-Bf6YZdkZ.js';
3
+ export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, d as AppliedSwap, e as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, l as EventIdentity, I as IdentifyRequest, m as IdentifyResponse, J as JsonValue, P as PagePersonalizeOptions, q as PageRef, r as PersonalizationSwap, t as PersonalizeContentResult, R as ResolveBatchItem, u as ResolveBatchResult, w as ResolveOptions, x as ResolveResult, W as WebhookResponse, L as XeniaConfig, N as XeniaEvent, X as XeniaMarker, O as pendingTargets, Q as personalizeContent, S as personalizePage } from '../personalize-content-Bf6YZdkZ.js';
4
+ export { X as XeniaApi } from '../api-ByoECRhR.js';
5
+ export { C as CONSENT_COOKIE, a as CircuitOpenError, V as VISITOR_COOKIE, f as consentCookie, g as consentCookieName, p as parseActions, v as visitorCookieName } from '../cookie-names-Bxd-VNyJ.js';
6
6
 
7
7
  interface RefreshTokenOptions {
8
8
  /**
@@ -1,7 +1,7 @@
1
1
  import '../chunk-OUZU4Z5B.js';
2
- export { XeniaServer, createXeniaServer, getConsent, getVisitorId, parseCookies } from '../chunk-DWFVDNU5.js';
3
- import { HttpClient } from '../chunk-7NGJC7CF.js';
4
- export { CONSENT_COOKIE, CircuitOpenError, VISITOR_COOKIE, XeniaApi, consentCookie, consentCookieName, parseActions, pendingTargets, personalizeContent, personalizePage, visitorCookieName } from '../chunk-7NGJC7CF.js';
2
+ export { XeniaServer, createXeniaServer, getConsent, getVisitorId, parseCookies } from '../chunk-INM2SPH4.js';
3
+ import { HttpClient } from '../chunk-TGG5Y4QD.js';
4
+ export { CONSENT_COOKIE, CircuitOpenError, VISITOR_COOKIE, XeniaApi, consentCookie, consentCookieName, parseActions, pendingTargets, personalizeContent, personalizePage, visitorCookieName } from '../chunk-TGG5Y4QD.js';
5
5
 
6
6
  // src/server/token.ts
7
7
  async function refreshSdkToken(opts) {
@@ -1,5 +1,5 @@
1
- var Xenia=(function(exports){'use strict';var Xe=new Set(["banner","popup","modal","inline"]),je=new Set(["top-left","top-right","bottom-left","bottom-right","top","bottom"]),Be=new Set(["standard","spin-wheel"]),Ue=new Set(["swap","hide","show","setContent","redirect",...Xe]);function I(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function f(n){return typeof n=="string"?n:void 0}function fe(n){return typeof n=="number"?n:void 0}function Ke(n){if(!I(n))return null;let e=f(n.type);if(!e||!Ue.has(e))return null;if(e==="redirect"){let i=f(n.url);return i?{type:e,url:i}:null}if(e==="hide"||e==="show"){let i=f(n.target);return i?{type:e,target:i}:null}if(e==="swap"||e==="setContent"){let i=f(n.target);return i?{type:e,target:i,html:f(n.html),text:f(n.text)}:null}let t=I(n.cta)?{label:f(n.cta.label)??"",url:f(n.cta.url),event:f(n.cta.event)}:void 0;return {type:e,target:f(n.target),title:f(n.title),message:f(n.message),imageUrl:f(n.imageUrl),html:f(n.html),cta:t&&(t.label||t.url)?t:void 0,dismissAfterMs:fe(n.dismissAfterMs),position:Qe(n.position),widgetType:Ge(n.widgetType),segments:Ye(n.segments),formSubmit:Ze(n.formSubmit),style:et(n.style),spinnerHtml:f(n.spinnerHtml),winHtml:f(n.winHtml),lossHtml:f(n.lossHtml)}}function Qe(n){let e=f(n);return e&&je.has(e)?e:void 0}function Ge(n){let e=f(n);return e&&Be.has(e)?e:void 0}function Ye(n){if(!Array.isArray(n))return;let e=[];for(let t of n){if(!I(t))continue;let i=f(t.id),r=f(t.label);!i||!r||e.push({id:i,label:r,colorHex:f(t.colorHex),isLoss:t.isLoss===true});}return e.length?e:void 0}function Ze(n){if(!I(n))return;let e=f(n.mode);if(e)return {requiresResolve:n.requiresResolve===true,mode:e,flowRef:f(n.flowRef),bindingRef:f(n.bindingRef),successDisplayMs:fe(n.successDisplayMs)}}function et(n){if(!I(n))return;let e={hideCloseButton:n.hideCloseButton===true,hideOverlay:n.hideOverlay===true};return e.hideCloseButton||e.hideOverlay?e:void 0}function Y(n){let e;if(Array.isArray(n)?e=n:I(n)&&Array.isArray(n.xeniaActions)&&(e=n.xeniaActions),!Array.isArray(e))return [];let t=[];for(let i of e){let r=Ke(i);r&&t.push(r);}return t}var tt="https://engine.xeniamartech.com/xenia";function O(){return typeof window<"u"&&typeof document<"u"}function ge(n,e){if(!e||Object.keys(e).length===0)return n;let t=new URLSearchParams(e),i=n.includes("?")?"&":"?";return `${n}${i}${t.toString()}`}function ye(n){return new Promise(e=>setTimeout(e,n))}var C=class extends Error{constructor(t,i,r){super(r??`Request failed with status ${t}`);this.status=t;this.data=i;this.name="HttpError";}status;data},Z=class extends Error{constructor(t){super(`Circuit open for ${t}: failing fast until the cooldown passes`);this.endpoint=t;this.name="CircuitOpenError";}endpoint},L=new Map,q=class{baseUrl;defaultHeaders;timeout;retry;debug;breaker;constructor(e){this.baseUrl=(e.baseUrl??tt).replace(/\/+$/,""),this.defaultHeaders=e.defaultHeaders??{},this.timeout=e.timeout??8e3,this.retry={attempts:e.retry?.attempts??2,baseDelayMs:e.retry?.baseDelayMs??300},this.debug=e.debug??false;let t=e.circuitBreaker===true?{}:e.circuitBreaker||null;this.breaker=t&&{failureThreshold:t.failureThreshold??3,cooldownMs:t.cooldownMs??3e4};}async request(e){if(!this.breaker)return this.send(e);let t=ge(this.baseUrl+e.path,e.query),i=L.get(t)??{failures:0,openedAt:0};if(i.openedAt){if(Date.now()-i.openedAt<this.breaker.cooldownMs)throw new Z(t);i.openedAt=0,i.failures=this.breaker.failureThreshold-1;}try{let r=await this.send(e);return L.delete(t),r}catch(r){throw r instanceof C&&!this.isRetryableStatus(r.status)?(L.delete(t),r):(i.failures+=1,i.failures>=this.breaker.failureThreshold&&(i.openedAt=Date.now(),this.log(`circuit opened for ${e.path} after ${i.failures} failures`)),L.set(t,i),r)}}async send(e){let t=ge(this.baseUrl+e.path,e.query),i=e.method??"GET",r={"Content-Type":"application/json",...this.defaultHeaders,...e.headers},s=e.body!==void 0?JSON.stringify(e.body):void 0,o=e.timeout??this.timeout,a=e.noRetry?1:(e.retry?.attempts??this.retry.attempts)+1,d=e.retry?.baseDelayMs??this.retry.baseDelayMs,l;for(let c=0;c<a;c++)try{let p=await this.fetchWithTimeout(t,{method:i,headers:r,body:s,...e.keepalive?{keepalive:!0}:{}},o),y=await this.parseBody(p);if(p.ok)return {response:p,data:y};if(this.isRetryableStatus(p.status)&&c<a-1){let u=this.retryAfterMs(p,d,c);this.log(`retrying ${e.path} after ${u}ms (status ${p.status})`),await ye(u);continue}throw new C(p.status,y)}catch(p){if(l=p,p instanceof C)throw p;if(c<a-1){let y=d*2**c;this.log(`retrying ${e.path} after ${y}ms (network error)`),await ye(y);continue}}throw l instanceof Error?l:new Error("Request failed")}async fetchWithTimeout(e,t,i){let r=new AbortController,s=setTimeout(()=>r.abort(),i);try{return await fetch(e,{...t,signal:r.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?new Error(`Request timeout after ${i}ms`,{cause:o}):o}finally{clearTimeout(s);}}async parseBody(e){let t=await e.text().catch(()=>"");if(!t)return null;try{return JSON.parse(t)}catch{return t}}isRetryableStatus(e){return e===429||e>=500&&e<=599}retryAfterMs(e,t,i){let r=e.headers.get("Retry-After");if(r){let s=Number(r);if(!Number.isNaN(s))return s*1e3}return t*2**i}log(e){this.debug&&console.warn(`[xenia] ${e}`);}};function nt(n){try{let e=n.split(".")[1];if(!e)return;let t=JSON.parse(atob(e.replace(/-/g,"+").replace(/_/g,"/")));return typeof t.exp=="number"?t.exp*1e3:void 0}catch{return}}var $=class{config;cached=null;inflight=null;constructor(e){this.config=e;}hasSource(){return !!(this.config.token||this.config.getToken)}getToken=async()=>{if(this.config.token&&!this.config.getToken)return this.config.token;let e=Date.now();if(this.cached&&this.cached.expiresAt>e)return this.cached.token;if(this.inflight)return this.inflight;if(!this.config.getToken)throw new Error("No token source: set config.token or config.getToken.");return this.inflight=Promise.resolve(this.config.getToken()).then(t=>{let i=nt(t),r=i?i-3e4:e+5*6e4;return this.cached={token:t,expiresAt:r},t}).finally(()=>{this.inflight=null;}),this.inflight}};function ve(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function it(n){return n!==void 0&&ve(n)?n:void 0}function E(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}var z=class{http;tenantId;environmentKey;tokenProvider;constructor(e){this.tenantId=e.tenantId,this.environmentKey=e.environmentKey,this.tokenProvider=new $(e),this.http=new q({baseUrl:e.baseUrl,defaultHeaders:e.headers,timeout:e.timeout,retry:e.retry,circuitBreaker:e.circuitBreaker,debug:e.debug});}tenantHeaders(){return {"X-Tenant-Id":this.tenantId,"X-Environment":this.environmentKey}}async authHeaders(){let e=this.tenantHeaders();if(!this.tokenProvider.hasSource())return e;let t=await this.tokenProvider.getToken();return t&&(e.Authorization=`Bearer ${t}`),e}async webhook(e,t,i="POST"){let{response:r,data:s}=await this.http.request({method:i,path:"/flow",query:{id:e},headers:await this.authHeaders(),body:i==="POST"?t??{}:void 0,noRetry:true});return {status:r.status,body:s,actions:Y(s),receivedAt:Date.now()}}async submitWidget(e,t){let{response:i,data:r}=await this.http.request({method:"POST",path:"/widget-submissions",query:{ref:e},headers:await this.authHeaders(),body:t??{},noRetry:true}),s=ve(r)?r:{};return {status:i.status,body:r,actions:Y(r),prize:it(s.prize),alreadyPlayed:s.alreadyPlayed===true,dispatched:s.dispatched===true,dispatchError:typeof s.dispatchError=="string"?s.dispatchError:void 0,widgetType:typeof s.widgetType=="string"?s.widgetType:void 0,receivedAt:Date.now()}}async sendEvents(e,t){let{data:i}=await this.http.request({method:"POST",path:"/api/events/v1",headers:await this.authHeaders(),body:{events:e},keepalive:t?.keepalive});return i}async identify(e){let{data:t}=await this.http.request({method:"POST",path:"/api/events/v1/identify",headers:await this.authHeaders(),body:e});return t}async consent(e,t){let{data:i}=await this.http.request({method:"POST",path:"/api/events/v1/consent",headers:await this.authHeaders(),body:E({xeniaVisitorId:e,analytics:t.analytics===true,marketing:t.marketing===true,personalization:t.personalization===true,consentSource:t.consentSource,consentVersion:t.consentVersion})});return i}async resolve(e,t={}){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve",query:t.merge!==void 0?{merge:String(t.merge)}:void 0,headers:await this.authHeaders(),body:E({contentKey:e,data:t.data,locale:t.locale})});return i}async resolveBatch(e,t={}){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve-batch",query:t.merge!==void 0?{merge:String(t.merge)}:void 0,headers:await this.authHeaders(),body:E({items:e,data:t.data,locale:t.locale})});return i}async resolveEntries(e,t={}){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve-entries",headers:await this.authHeaders(),body:E({entryIds:e,data:t.data,locale:t.locale})});return i}};var D="xenia";function ee(n=D){return `${n||D}_vid`}function be(n=D){return `${n||D}_consent`}function xe(n,e,t=365){return `${be(e)}=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=${Math.floor(t*86400)}; SameSite=Lax`}var rt=new Set(["eventId","eventType","journeyId","deviceId","visitorId","customerId","email","utmSource","utmMedium","utmCampaign","utmContent","utmId","url","referrer","path","query"]);function we(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}function Se(n){let e={},t={};if(n.props)for(let[r,s]of Object.entries(n.props))s!==void 0&&(rt.has(r)?t[r]=s:e[r]=s);return {...e,...t,...we(n.context??{}),...we(n.identity??{}),eventId:n.eventId,...n.eventType?{eventType:n.eventType}:{},...n.journeyId?{journeyId:n.journeyId}:{}}}var W="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function st(n){let e=new Uint8Array(n);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(e);else for(let t=0;t<n;t++)e[t]=Math.floor(Math.random()*256);return e}function k(n=Date.now()){let e="",t=n;for(let s=9;s>=0;s--)e=W[t%32]+e,t=Math.floor(t/32);let i=st(16),r="";for(let s=0;s<16;s++)r+=W[i[s]%32];return e+r}var te=26;function Ee(n){if(n.length<=te)return n;let e="";for(let i of [2166136261,16777619]){let r=i>>>0;for(let s=0;s<n.length;s++)r^=n.charCodeAt(s),r=Math.imul(r,16777619)>>>0,e+=W[r%32];}let t="";for(let i=0;i<te;i++){let r=i+1;for(let s=i;s<e.length;s+=te)r=r*31+W.indexOf(e[s])>>>0;t+=W[r%32];}return t}var ot=n=>n&&typeof n=="object"&&typeof structuredClone=="function"?structuredClone(n):n;async function ie(n,e){let{cms:t}=e,i=e.maxRounds??3,r=Date.now()+(e.timeoutMs??300),s=[],o=u=>{s.push(u);try{e.onApplied?.(u);}catch{}},a=n;try{!e.inPlace&&typeof structuredClone=="function"&&(a=structuredClone(a)),a=t.prepare?t.prepare(a):a;}catch(u){return {content:n,applied:s,complete:false,error:u}}let d={root:a},l=new WeakSet,c=new Map,p=[{parent:d,key:"root",value:d.root}],y=(u,m,g)=>{l.add(u.entry),t.clearMarker?.(u.entry);let v=m.items.map(ot);if(!m.decision||v.length===0)return lt(u,t);for(let h of v)h&&typeof h=="object"&&l.add(h);let b=m.decision.op??u.marker.op??"replace",S=Ie(u,b,m.decision.field??u.marker.field,v,t);return o({target:u.id,kind:"runtime",op:b,entryIds:v.map(h=>t.entryId(h)).filter(h=>!!h),contentKey:m.decision.contentKey,bucket:m.decision.bucket,round:g}),S};for(let u=0;;u++){let m=at(p,t,l,u,o,h=>{let w=c.get(h.id);return w?y(h,w,u):void 0});if(m.size===0)return {content:d.root,applied:s,complete:true};if(!e.resolve||u>=i)return {content:d.root,applied:s,complete:!e.resolve};ke(e,{content:d.root,round:u,pending:[...m.keys()]});let g,v,b;try{g=await Ce(e.resolve([...m.keys()]),r),{entriesById:v,queried:b}=await Ce(dt(g,t,e.locale),r);}catch(h){return {content:d.root,applied:s,complete:false,error:h===ne?void 0:h}}let S=new Map(g.map(h=>[h.target,h]));p=[];for(let h of m.values()){let w=S.get(h.id),G=w?w.ids?w.ids.map(P=>v.get(P)).filter(P=>P!==void 0):b.get(w)??[]:[],M={decision:w,items:G};c.set(h.id,M),p.push(...y(h,M,u));}ke(e,{content:d.root,round:u,pending:[]});}}function ke(n,e){try{n.onProgress?.(e);}catch{}}function at(n,e,t,i,r,s){let o=new Map,a=new WeakSet,d=new WeakSet,l=[...n];for(;l.length>0;){let c=l.shift(),p=c.value;if(!p||typeof p!="object"||d.has(p))continue;let y=t.has(p)?void 0:e.entryId(p),u=y?e.marker(p):null;if(y&&u?.kind==="runtime"){let m=s({id:y,marker:u,entry:p,slots:[c]});if(m){l.push(...m);continue}let g=o.get(y);if(g)g.slots.push(c);else if(o.set(y,{id:y,marker:u,entry:p,slots:[c]}),u.op==="items"&&u.field){let v=e.getField(p,u.field);v&&typeof v=="object"&&d.add(v),l.push(...Re(p));}continue}if(y&&u?.kind==="static"){let m=e.staticVariants(p).filter(g=>g&&typeof g=="object");if(t.add(p),e.clearMarker?.(p),m.length>0){for(let b of m)t.add(b);let g=u.op??"replace",v={entry:p,slots:[c]};l.push(...Ie(v,g,u.field,m,e)),r({target:y,kind:"static",op:g,entryIds:m.map(b=>e.entryId(b)).filter(b=>!!b),round:i});continue}}a.has(p)||(a.add(p),l.push(...Re(p)));}return o}function Ie(n,e,t,i,r){if(e==="items"){if(t)return r.setField(n.entry,t,i),[{parent:n.entry,key:t,value:r.getField(n.entry,t)}];if(r.mergeItems)return r.mergeItems(n.entry,i[0]),n.slots.map(o=>({...o,value:n.entry}));e="replace";}let s=[];for(let o of n.slots){let a=e==="expand"&&Array.isArray(o.parent)?i:[i[0]];if(Array.isArray(o.parent)){let d=o.parent.indexOf(n.entry);if(d<0)continue;o.parent.splice(d,1,...a);}else o.parent[o.key]=a[0];for(let d of a)s.push({parent:o.parent,key:o.key,value:d});}return s}function lt(n,e){return n.marker.op==="items"&&n.marker.field?[{parent:n.entry,key:n.marker.field,value:e.getField(n.entry,n.marker.field)}]:n.slots.map(t=>({...t,value:n.entry}))}function Re(n){return Array.isArray(n)?n.map((e,t)=>({parent:n,key:t,value:e})):Object.keys(n).map(e=>({parent:n,key:e,value:n[e]}))}async function dt(n,e,t){let i=[...new Set(n.flatMap(l=>l.ids??[]))],r=n.filter(l=>!l.ids&&l.query),[s,...o]=await Promise.all([i.length>0?e.fetchEntries(i,t):Promise.resolve([]),...r.map(l=>e.queryEntries(l.query,t).catch(()=>[]))]),a=new Map;for(let l of s){let c=e.entryId(l);c&&a.set(c,l);}let d=new Map;return r.forEach((l,c)=>d.set(l,o[c])),{entriesById:a,queried:d}}var ne=Symbol("timeout");function Ce(n,e){let t=e-Date.now();if(t<=0)return Promise.reject(ne);let i;return Promise.race([n,new Promise((r,s)=>{i=setTimeout(()=>s(ne),t);})]).finally(()=>clearTimeout(i))}async function Te(n,e){let t;try{if(!e.cms.fetchPage)throw new Error("This CMS adapter cannot fetch pages; use personalizeContent(page)");t=await e.cms.fetchPage(n,e.locale);}catch(i){return {content:null,applied:[],complete:false,error:i}}return t==null?{content:null,applied:[],complete:true}:ie(t,e)}var N=class{map=new Map;set(e,t){this.map.set(e,t);}get(e){return this.map.get(e)}keys(){return [...this.map.keys()]}clear(){this.map.clear();}},J=class{nsKey;constructor(e="xenia"){this.nsKey=`${e}_responses`;}read(){try{let e=localStorage.getItem(this.nsKey);return e?JSON.parse(e):{}}catch{return {}}}write(e){try{localStorage.setItem(this.nsKey,JSON.stringify(e));}catch{}}set(e,t){let i=this.read();i[e]=t,this.write(i);}get(e){return this.read()[e]}keys(){return Object.keys(this.read())}clear(){try{localStorage.removeItem(this.nsKey);}catch{}}};var F=class{queue=[];send;batchSize;flushIntervalMs;maxQueueSize;debug;timer=null;flushing=false;listenersAttached=false;allowed=false;onPageHide=()=>this.flushOnUnload();onVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flushOnUnload();};constructor(e){this.send=e.send,this.batchSize=e.batchSize??20,this.flushIntervalMs=e.flushIntervalMs??3e3,this.maxQueueSize=e.maxQueueSize??200,this.debug=e.debug??false;}start(){this.allowed=true,!(this.timer||typeof window>"u")&&(this.timer=setInterval(()=>{this.flush();},this.flushIntervalMs),window.addEventListener("pagehide",this.onPageHide),document.addEventListener("visibilitychange",this.onVisibilityChange),this.listenersAttached=true);}stop(){this.allowed=false,this.timer&&clearInterval(this.timer),this.timer=null,this.listenersAttached&&(window.removeEventListener("pagehide",this.onPageHide),document.removeEventListener("visibilitychange",this.onVisibilityChange),this.listenersAttached=false);}enqueue(e){this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(e),this.allowed&&this.queue.length>=this.batchSize&&this.flush();}async sendImmediate(e){try{await this.send([e],{keepalive:!0});}catch(t){this.isPermanentFailure(t)||this.requeue([e]),this.debug&&console.warn("[xenia] immediate send failed",t);}}async flush(){if(!this.allowed||this.flushing||this.queue.length===0)return;this.flushing=true;let e=this.queue.splice(0,this.batchSize);try{await this.send(e);}catch(t){this.isPermanentFailure(t)||this.requeue(e),this.debug&&console.warn("[xenia] analytics flush failed",t);}finally{this.flushing=false;}}isPermanentFailure(e){return e instanceof C&&e.status>=400&&e.status<500}flushOnUnload(){if(!this.allowed||this.queue.length===0)return;let e=this.queue.splice(0,this.queue.length);this.send(e,{keepalive:true}).catch(()=>{});}requeue(e){let t=this.maxQueueSize-this.queue.length;t<=0||this.queue.unshift(...e.slice(0,t));}};var ct=new Set(["click","view-port","page-load"]);function Ae(n){let e=n.indexOf("&");if(e===-1)return null;let t=n.slice(0,e),i=n.slice(e+1);return !t||!ct.has(i)?null:{eventId:t,interactionType:i}}function Me(n){let e=n.getAttribute("data-xenia-content-key");if(!e)return null;let t=n.getAttribute("data-xenia-content-entry-id"),i=n.getAttribute("data-xenia-base-entry-id"),r=n.getAttribute("data-xenia-personalized");return {contentKey:e,contentEntryId:t??void 0,baseEntryId:i??void 0,personalized:r==null?void 0:r==="true"}}var _=class{opts;throttleTimers=new Map;observers=new Map;slotObservers=new Map;triggered=new Set;slotImpressed=new Set;clickHandler=null;mutationObserver=null;constructor(e){this.opts=e;}start(){this.setupClicks(),this.scan(document),this.setupMutations();}stop(){this.clickHandler&&document.removeEventListener("click",this.clickHandler),this.clickHandler=null,this.mutationObserver?.disconnect(),this.mutationObserver=null,this.observers.forEach(e=>e.disconnect()),this.observers.clear(),this.slotObservers.forEach(e=>e.disconnect()),this.slotObservers.clear(),this.throttleTimers.clear(),this.triggered.clear(),this.slotImpressed.clear();}attr(){return `data-${this.opts.prefix}`}throttled(e){if(this.opts.throttleMs<=0)return false;let t=Date.now(),i=this.throttleTimers.get(e)??0;return t-i>=this.opts.throttleMs?(this.throttleTimers.set(e,t),false):true}setupClicks(){let e=this.attr();this.clickHandler=t=>{let i=t.target;if(!i)return;let r=i.closest(`[${e}]`);if(r){let s=r.getAttribute(e),o=s?Ae(s):null;o&&o.interactionType==="click"&&!this.throttled(r)&&this.opts.fire(o.eventId,"click");}if(this.opts.fireSlot){let s=i.closest("[data-xenia-slot]");if(s){let o=Me(s);o&&!this.throttled(s)&&this.opts.fireSlot("click",o);}}},document.addEventListener("click",this.clickHandler);}observeSlot(e){if(!this.opts.fireSlot||this.slotObservers.has(e))return;let t=Me(e);if(!t)return;let i=this.opts.fireSlot,{threshold:r,rootMargin:s}=this.opts.viewport,o=new IntersectionObserver(a=>{for(let d of a)d.isIntersecting&&(this.slotImpressed.has(e)||(this.slotImpressed.add(e),i("impression",t),o.disconnect(),this.slotObservers.delete(e)));},{threshold:r,rootMargin:s});o.observe(e),this.slotObservers.set(e,o);}observeViewport(e,t){if(this.observers.has(e))return;let{threshold:i,rootMargin:r,triggerOnce:s}=this.opts.viewport,o=new IntersectionObserver(a=>{for(let d of a)d.isIntersecting&&(s&&this.triggered.has(e)||this.throttled(e)||(this.opts.fire(t,"view-port"),s&&(this.triggered.add(e),o.disconnect(),this.observers.delete(e))));},{threshold:i,rootMargin:r});o.observe(e),this.observers.set(e,o);}handleElement(e){let t=e.getAttribute(this.attr());if(!t)return;let i=Ae(t);i&&(i.interactionType==="view-port"?this.observeViewport(e,i.eventId):i.interactionType==="page-load"&&this.opts.fire(i.eventId,"page-load"));}scan(e){e.querySelectorAll(`[${this.attr()}]`).forEach(t=>this.handleElement(t)),this.opts.fireSlot&&e.querySelectorAll("[data-xenia-slot]").forEach(t=>this.observeSlot(t));}setupMutations(){this.mutationObserver=new MutationObserver(e=>{for(let t of e)for(let i of t.addedNodes){if(i.nodeType!==Node.ELEMENT_NODE)continue;let r=i;this.handleElement(r),this.opts.fireSlot&&r.matches("[data-xenia-slot]")&&this.observeSlot(r),this.scan(r);}}),this.mutationObserver.observe(document.body,{childList:true,subtree:true});}};var ut=1800*1e3,X=class{prefix;cookie;deviceId=null;journeyId=null;sessionId=null;constructor(e="xenia",t=true){this.prefix=e,this.cookie=pt(t);}key(e){return `${this.prefix}_${e}`}cookieName(){return ee(this.prefix)}writeVisitorCookie(e){if(!(!this.cookie||!e))try{if(typeof document>"u")return;let t=[`${this.cookieName()}=${encodeURIComponent(e)}`,"path=/",`max-age=${Math.floor(this.cookie.maxAgeDays*86400)}`,`SameSite=${this.cookie.sameSite}`];this.cookie.domain&&t.push(`domain=${this.cookie.domain}`),this.cookie.secure&&t.push("Secure"),document.cookie=t.join("; ");}catch{}}async resolveDeviceId(){if(this.deviceId)return this.writeVisitorCookie(this.getVisitorId()??this.deviceId),this.deviceId;let e=this.key("device_id");try{let i=localStorage.getItem(e);if(i)return this.deviceId=i,this.writeVisitorCookie(this.getVisitorId()??i),i}catch{}let t=await this.mediaDeviceId();t||(t=await this.fingerprint()),this.deviceId=t;try{localStorage.setItem(e,t);}catch{}return this.writeVisitorCookie(this.getVisitorId()??t),t}getDeviceId(){return this.deviceId}async mediaDeviceId(){try{if(!navigator.mediaDevices?.enumerateDevices)return null;let e=await navigator.mediaDevices.enumerateDevices();return (e.find(i=>i.kind==="videoinput"&&i.deviceId)||e.find(i=>i.kind==="audioinput"&&i.deviceId)||e.find(i=>i.kind==="audiooutput"&&i.deviceId))?.deviceId||null}catch{return null}}async fingerprint(){let e=[navigator.userAgent,navigator.language,screen.width,screen.height,screen.colorDepth,new Date().getTimezoneOffset()].join("|"),t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t)).map(i=>i.toString(16).padStart(2,"0")).join("")}identify(e){if(e){try{localStorage.setItem(this.key("visitor_id"),e);}catch{}this.writeVisitorCookie(e);}}getVisitorId(){try{return localStorage.getItem(this.key("visitor_id"))}catch{return null}}setCustomerId(e){try{e?localStorage.setItem(this.key("customer_id"),e):localStorage.removeItem(this.key("customer_id"));}catch{}}getCustomerId(){try{return localStorage.getItem(this.key("customer_id"))}catch{return null}}setEmail(e){try{e?localStorage.setItem(this.key("email"),e):localStorage.removeItem(this.key("email"));}catch{}}getEmail(){try{return localStorage.getItem(this.key("email"))}catch{return null}}getSessionId(){let e=this.key("session_id"),t=this.key("session_last_activity"),i=Date.now();try{let r=sessionStorage.getItem(e),s=Number(sessionStorage.getItem(t)),a=r&&Number.isFinite(s)&&i-s<ut?r:k(i);return sessionStorage.setItem(e,a),sessionStorage.setItem(t,String(i)),this.sessionId=a,a}catch{return this.sessionId||(this.sessionId=k(i)),this.sessionId}}setJourneyId(e){this.journeyId=e&&e.trim()?e.trim():null;}getJourneyId(){return this.journeyId||this.utmParam("utm_id")||null}utmParam(e){try{let t=new URLSearchParams(window.location.search).get(e);if(t){try{sessionStorage.setItem(this.key(e),t);}catch{}return t}try{return sessionStorage.getItem(this.key(e))}catch{}}catch{}return null}collectContext(){let e={},t=this.utmParam("utm_source"),i=this.utmParam("utm_medium"),r=this.utmParam("utm_campaign"),s=this.utmParam("utm_content"),o=this.utmParam("utm_id");t&&(e.utmSource=t),i&&(e.utmMedium=i),r&&(e.utmCampaign=r),s&&(e.utmContent=s),o&&(e.utmId=o);try{e.url=window.location.href,e.path=window.location.pathname,e.query=Object.fromEntries(new URLSearchParams(window.location.search)),document.referrer&&(e.referrer=document.referrer);}catch{}let a=this.getVisitorId();return a&&(e.visitorId=a),e}};function pt(n){if(n===false)return null;let e=n===true?{}:n,t=e.sameSite??"Lax",i=t==="None"?true:e.secure??false;return {sameSite:t,secure:i,maxAgeDays:e.maxAgeDays??365,domain:e.domain}}function j(n){let e={};return n.querySelectorAll("[data-xenia-field]").forEach(t=>{let i=t.getAttribute("data-xenia-field");i&&(e[i]=mt(t));}),e}function mt(n){return n instanceof HTMLInputElement?n.type==="checkbox"?n.checked?n.value||"on":"":n.type==="radio"?n.checked?n.value:"":n.value:n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement?n.value:n.textContent?.trim()??""}function Pe(n,e){n&&(n instanceof HTMLButtonElement||n instanceof HTMLInputElement||n instanceof HTMLSelectElement||n instanceof HTMLTextAreaElement||n instanceof HTMLFieldSetElement?n.disabled=e:e?n.setAttribute("aria-disabled","true"):n.removeAttribute("aria-disabled"));}function re(n,e){let t=n.querySelector("[data-xenia-error]");t&&(t.textContent=e);}var Oe="xenia-form-submit-style";function ht(n){if(n.querySelector(`#${Oe}`))return;let e=document.createElement("style");e.id=Oe,e.textContent="@keyframes xenia-submit-spin{to{transform:rotate(360deg)}}[data-xenia-submitting]::after{content:'';display:inline-block;width:0.85em;height:0.85em;margin-left:0.5em;vertical-align:-0.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:xenia-submit-spin 0.6s linear infinite}",n.prepend(e);}function se(n,e){n&&(e?n.setAttribute("data-xenia-submitting",""):n.removeAttribute("data-xenia-submitting"));}function ft(n,e){if(!e)return;let t=n instanceof ShadowRoot?n.host:n;t instanceof HTMLElement?(t.style.transition="opacity 220ms ease, transform 220ms ease",t.style.opacity="0",t.style.transform="scale(0.96)",window.setTimeout(e,220)):e();}var gt=900;function yt(n,e){let t=n.querySelector("[data-xenia-success]");return t?(t instanceof HTMLElement?t.hidden=false:t.removeAttribute("hidden"),e?e.hidden=true:n.querySelectorAll("[data-xenia-field], [data-xenia-submit]").forEach(i=>{i.hidden=true;}),true):false}function We(n,e,t){let i=n.querySelector("form"),r=false;ht(n);let s=(o,a)=>{if(r)return;if(!e.formSubmit){re(n,"This form isn't connected yet.");return}r=true,re(n,""),Pe(o,true),se(o,true);let d=Date.now(),l=e.formSubmit.successDisplayMs??gt;t.submitWidgetForm(a).then(()=>{se(o,false),yt(n,i);let c=Math.max(0,l-(Date.now()-d));window.setTimeout(()=>ft(n,t.dismiss),c);}).catch(()=>{se(o,false),Pe(o,false),re(n,"Something went wrong. Please try again.");}).finally(()=>{r=false;});};i&&i.addEventListener("submit",o=>{o.preventDefault();let a={};new FormData(i).forEach((l,c)=>{typeof l=="string"&&(a[c]=l);});let d=o.submitter??i.querySelector('[type="submit"], button:not([type])');s(d,{...j(n),...a});}),n.querySelectorAll("[data-xenia-submit]").forEach(o=>{i?.contains(o)||o.addEventListener("click",()=>s(o,j(n)));});}function oe(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function He(n){return oe(n).replace(/"/g,"&quot;")}function B(n,e){e&&n.querySelectorAll(".xenia-close, [data-xenia-close], [class*='close' i], [id*='close' i], [class*='backdrop' i], [id*='backdrop' i]").forEach(i=>{i.removeAttribute("onclick"),i.addEventListener("click",e);}),n.querySelectorAll("[class*='backdrop' i], [id*='backdrop' i]").forEach(t=>{t instanceof HTMLElement&&t.children.length===0&&!t.textContent?.trim()&&(t.style.opacity="0.5");});}var T=260,H=T/2,A=T/2,Ve=["#7c3aed","#2563eb","#059669","#d97706","#dc2626","#0891b2"],vt="transform 3.2s cubic-bezier(0.15, 0.85, 0.25, 1)",bt='<div class="xenia-wheel-pointer" aria-hidden="true"></div>',le=320,Le=`opacity ${le}ms ease, transform ${le}ms ease`,xt=900,ae=(n,e)=>`perspective(${xt}px) translateZ(${e}px) scale(${n})`;function de(n,e){let t=n*Math.PI/180;return {x:A+e*Math.sin(t),y:A-e*Math.cos(t)}}function wt(n,e){let t=de(n,H),i=de(e,H),r=e-n>180?1:0;return `M ${A},${A} L ${t.x},${t.y} A ${H},${H} 0 ${r} 1 ${i.x},${i.y} Z`}function St(n,e,t=0){if(e<=0)return 0;let i=360/e,s=(360-(n*i+i/2))%360;return t*360+s}function $e(n,e){let t=n?Array.from(n.children):[],i=e?Array.from(e.children):[];e&&(e.hidden=false),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition="none",r.style.opacity="0",r.style.transform=ae(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&r.offsetHeight;}),ze(()=>{t.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=Le,r.style.opacity="0",r.style.transform=ae(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=Le,r.style.opacity="1",r.style.transform=ae(1,0));});}),n&&setTimeout(()=>{n.hidden=true;},le);}function ze(n){typeof requestAnimationFrame=="function"?requestAnimationFrame(n):setTimeout(n,0);}function Et(n){let t=360/(n.length||1),i=n.map((r,s)=>{let o=s*t,a=o+t,d=r.colorHex||Ve[s%Ve.length],l=o+t/2,c=de(l,H*.62);return `<path d="${wt(o,a)}" fill="${He(d)}" stroke="#fff" stroke-width="1"></path><text x="${c.x}" y="${c.y}" fill="#fff" font-size="12" text-anchor="middle" transform="rotate(${l} ${c.x} ${c.y})">${oe(r.label)}</text>`}).join("");return `<svg class="xenia-wheel-svg" viewBox="0 0 ${T} ${T}" width="${T}" height="${T}"><g class="xenia-wheel-dial">${i}</g><circle class="xenia-wheel-hub" cx="${A}" cy="${A}" r="6"></circle></svg>`}var De={html(n){return `<div class="xenia-spin-wheel"><div data-xenia-wheel-face>${n.spinnerHtml??""}</div><div class="xenia-widget-result" data-xenia-wheel-result hidden>${n.winHtml??""}</div><div class="xenia-widget-result" data-xenia-wheel-loss hidden>${n.lossHtml??""}</div></div>`},wire(n,e,t){B(n,t.dismiss);let i=e.segments??[],r=n.querySelector("[data-xenia-wheel-face]"),s=n.querySelector("[data-xenia-spin]"),o=n.querySelector("[data-xenia-wheel-result]"),a=n.querySelector("[data-xenia-wheel-loss]"),d=n.querySelector("[data-xenia-error]"),l=n.querySelector("[data-xenia-wheel-slot]");l&&l.insertAdjacentHTML("afterbegin",Et(i)+bt);let c=n.querySelector(".xenia-wheel-dial");if(!s||!e.formSubmit)return;n.querySelectorAll("[data-xenia-wheel-cta]").forEach(m=>{m.addEventListener("click",()=>t.fireCta());});let p=(m,g,v)=>{n.querySelectorAll("[data-xenia-wheel-prize]").forEach(h=>{h.textContent=m;});let b=g?a:o,S=g?o:a;S&&(S.hidden=true),$e(r,b),v||(u=true,n.querySelectorAll("[data-xenia-spin-again]").forEach(h=>{h.hidden=true;}));},y=false,u=false;n.querySelectorAll("[data-xenia-spin-again]").forEach(m=>{m.addEventListener("click",()=>{if(u)return;let g=o&&!o.hidden?o:a&&!a.hidden?a:null;g&&(y=false,s.disabled=false,d&&(d.textContent=""),$e(g,r));});}),s.addEventListener("click",()=>{if(y)return;y=true,s.disabled=true,d&&(d.textContent="");let m=j(n);t.submitWidgetForm(m).then(g=>{let v=i.findIndex(_e=>_e.id===g.prize?.segmentId),b=g.prize?.label??i[v]?.label??"",S=v>=0&&!!i[v]?.isLoss,h=g.alreadyPlayed!==true;if(v<0||!c){p(b,S,h);return}let w=3+Math.floor(Math.random()*3),G=St(v,i.length||1,w),M=/rotate\(([-\d.]+)deg\)/.exec(c.style.transform),P=M?parseFloat(M[1]):0;c.style.transition="none",c.style.transform=`rotate(${P%360}deg)`,c.getBoundingClientRect(),c.style.transition=vt;let he=()=>{c.removeEventListener("transitionend",he),p(b,S,h);};c.addEventListener("transitionend",he),ze(()=>{c.style.transform=`rotate(${G}deg)`;});}).catch(()=>{y=false,s.disabled=false,d&&(d.textContent="Something went wrong. Please try again.");});});}};var ce={"spin-wheel":De};function Q(n,e=document){if(!n)return null;let t=e.querySelector(`[data-xenia-slot="${kt(n)}"]`);if(t)return t;try{return e.querySelector(n)}catch{return null}}function kt(n){let e=window;return e.CSS?.escape?e.CSS.escape(n):n.replace(/["\\]/g,"\\$&")}function U(n,e){let t=Q(n);return t?(e.html!==void 0?t.innerHTML=e.html:e.text!==void 0&&(t.textContent=e.text),t.removeAttribute("hidden"),true):false}function ue(n){let e=Q(n);return !e||!(e instanceof HTMLElement)?false:(e.dataset.xeniaHidden="1",e.style.setProperty("display","none","important"),true)}function pe(n){let e=Q(n);return !e||!(e instanceof HTMLElement)?false:(delete e.dataset.xeniaHidden,e.style.removeProperty("display"),true)}var Rt=new Set(["banner","popup","modal","inline"]);function Ct(n){return Rt.has(n)}var K=class{host=null;shadow=null;onCta;messageTemplate;messageStyles;messageComponent;submitWidgetFormFn;mounted=new Map;constructor(e,t){this.onCta=e,this.messageTemplate=t?.messageTemplate,this.messageStyles=t?.messageStyles,this.messageComponent=t?.messageComponent,this.submitWidgetFormFn=t?.submitWidgetForm;}apply(e){let t=0;for(let i of e)this.applyOne(i)&&t++;return t}applyOne(e){switch(e.type){case "swap":return U(e.target,{html:e.html,text:e.text});case "setContent":return U(e.target,{html:e.html,text:e.text});case "hide":return ue(e.target);case "show":return pe(e.target);case "redirect":try{return window.location.assign(e.url),!0}catch{return false}default:return Ct(e.type)?this.renderMessage(e):false}}destroy(){this.mounted.forEach(e=>e()),this.mounted.clear(),this.host?.remove(),this.host=null,this.shadow=null;}ensureShadow(){if(this.shadow)return this.shadow;let e=document.createElement("div");e.setAttribute("data-xenia-ui",""),document.body.appendChild(e);let t=e.attachShadow({mode:"open"});return t.appendChild(this.styleEl()),this.host=e,this.shadow=t,t}styleEl(){let e=document.createElement("style");return e.textContent=this.messageStyles?`${Je}
2
- ${this.messageStyles}`:Je,e}renderMessage(e){let t=e.html===void 0&&!!this.messageComponent;if(e.type==="inline"){if(!e.target)return false;let l=Q(e.target);return l?(this.unmount(l),t?(l.innerHTML="",this.mountComponent(l,e,"inline",()=>this.unmount(l))):(l.innerHTML=this.cardHtml(e,"inline"),this.wireCard(l,e)),true):false}let i=this.ensureShadow(),r=document.createElement("div"),s=this.positionClass(e.type,e.position),o=e.html!==void 0?" xenia-custom-bg":"",a=e.style?.hideOverlay?" xenia-no-overlay":"";r.className=`xenia-msg xenia-${e.type}${s?` ${s}`:""}${o}${a}`,i.appendChild(r);let d=()=>{this.unmount(r),r.remove();};if(t?this.mountComponent(r,e,e.type,d):(r.innerHTML=this.cardHtml(e,e.type),this.wireCard(r,e,d)),e.dismissAfterMs&&e.dismissAfterMs>0){let l=setTimeout(d,e.dismissAfterMs),c=()=>clearTimeout(l);r.addEventListener("click",c,{once:true}),r.addEventListener("focusin",c,{once:true});}return true}mountComponent(e,t,i,r){if(!this.messageComponent)return;let s={action:t,variant:i,close:r,fireCta:()=>{t.cta?.event&&this.onCta?.(t.cta.event,t.cta),t.cta?.url&&window.location.assign(t.cta.url),r();}},o=this.messageComponent(e,s);o&&this.mounted.set(e,o);}unmount(e){let t=this.mounted.get(e);t&&(t(),this.mounted.delete(e));}positionClass(e,t){return e==="popup"?`xenia-pos-${t==="top-left"||t==="top-right"||t==="bottom-left"?t:"bottom-right"}`:e==="banner"?`xenia-pos-${t==="top"?"top":"bottom"}`:""}cardHtml(e,t){let i=e.widgetType?ce[e.widgetType]:void 0;if(i)return i.html(e,t);if(e.html!==void 0)return It(e.html,t);if(this.messageTemplate){let l={action:e,variant:t,escapeHtml:V,escapeAttr:Ne};return this.messageTemplate(l)}let r=e.imageUrl?`<img class="xenia-img" src="${Ne(e.imageUrl)}" alt="" />`:"",s=e.title?`<div class="xenia-title">${V(e.title)}</div>`:"",o=e.message?`<div class="xenia-body">${V(e.message)}</div>`:"",a=e.cta?`<button class="xenia-cta" type="button">${V(e.cta.label)}</button>`:"";return `<div class="xenia-card">${t==="inline"?"":'<button class="xenia-close" type="button" aria-label="Close">\xD7</button>'}${r}<div class="xenia-content">${s}${o}${a}</div></div>`}wireCard(e,t,i){let r=t.widgetType?ce[t.widgetType]:void 0;if(r){r.wire(e,t,this.buildWidgetCtx(t,i));return}B(e,i);let s=e.querySelector(".xenia-cta, [data-xenia-cta]");s&&t.cta&&s.addEventListener("click",()=>{t.cta?.event&&this.onCta?.(t.cta.event,t.cta),t.cta?.url&&window.location.assign(t.cta.url),i?.();}),We(e,t,this.buildWidgetCtx(t,i));}buildWidgetCtx(e,t){let i=k();return {dismiss:t,fireCta:()=>{e.cta?.event&&this.onCta?.(e.cta.event,e.cta),e.cta?.url&&window.location.assign(e.cta.url),t?.();},submitWidgetForm:r=>!e.formSubmit||!this.submitWidgetFormFn?Promise.reject(new Error("xenia: this action has no formSubmit config, or no submitWidgetForm handler is wired (construct the ActionRenderer via XeniaClient to get one)")):this.submitWidgetFormFn(e.formSubmit,r,{idempotencyKey:i})}}};function It(n,e){return e==="modal"?`<div class="xenia-custom-html">${n}</div>`:`<div class="xenia-custom-html"><style>.xenia-custom-html{position:relative}.xenia-custom-html>*{position:static!important;inset:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important}</style>${n}</div>`}function V(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ne(n){return V(n).replace(/"/g,"&quot;")}var Je=`
1
+ var Xenia=(function(exports){'use strict';var je=new Set(["banner","popup","modal","inline"]),Be=new Set(["top-left","top-right","bottom-left","bottom-right","top","bottom"]),Ue=new Set(["standard","spin-wheel"]),Ke=new Set(["swap","hide","show","setContent","redirect",...je]);function I(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function f(n){return typeof n=="string"?n:void 0}function fe(n){return typeof n=="number"?n:void 0}function Qe(n){if(!I(n))return null;let e=f(n.type);if(!e||!Ke.has(e))return null;if(e==="redirect"){let i=f(n.url);return i?{type:e,url:i}:null}if(e==="hide"||e==="show"){let i=f(n.target);return i?{type:e,target:i}:null}if(e==="swap"||e==="setContent"){let i=f(n.target);return i?{type:e,target:i,html:f(n.html),text:f(n.text)}:null}let t=I(n.cta)?{label:f(n.cta.label)??"",url:f(n.cta.url),event:f(n.cta.event)}:void 0;return {type:e,target:f(n.target),title:f(n.title),message:f(n.message),imageUrl:f(n.imageUrl),html:f(n.html),cta:t&&(t.label||t.url)?t:void 0,dismissAfterMs:fe(n.dismissAfterMs),position:Ge(n.position),widgetType:Ye(n.widgetType),segments:Ze(n.segments),formSubmit:et(n.formSubmit),style:tt(n.style),spinnerHtml:f(n.spinnerHtml),winHtml:f(n.winHtml),lossHtml:f(n.lossHtml)}}function Ge(n){let e=f(n);return e&&Be.has(e)?e:void 0}function Ye(n){let e=f(n);return e&&Ue.has(e)?e:void 0}function Ze(n){if(!Array.isArray(n))return;let e=[];for(let t of n){if(!I(t))continue;let i=f(t.id),r=f(t.label);!i||!r||e.push({id:i,label:r,colorHex:f(t.colorHex),isLoss:t.isLoss===true});}return e.length?e:void 0}function et(n){if(!I(n))return;let e=f(n.mode);if(e)return {requiresResolve:n.requiresResolve===true,mode:e,flowRef:f(n.flowRef),bindingRef:f(n.bindingRef),successDisplayMs:fe(n.successDisplayMs)}}function tt(n){if(!I(n))return;let e={hideCloseButton:n.hideCloseButton===true,hideOverlay:n.hideOverlay===true};return e.hideCloseButton||e.hideOverlay?e:void 0}function Y(n){let e;if(Array.isArray(n)?e=n:I(n)&&Array.isArray(n.xeniaActions)&&(e=n.xeniaActions),!Array.isArray(e))return [];let t=[];for(let i of e){let r=Qe(i);r&&t.push(r);}return t}var nt="https://engine.xeniamartech.com/xenia";function O(){return typeof window<"u"&&typeof document<"u"}function ge(n,e){if(!e||Object.keys(e).length===0)return n;let t=new URLSearchParams(e),i=n.includes("?")?"&":"?";return `${n}${i}${t.toString()}`}function ye(n){return new Promise(e=>setTimeout(e,n))}var R=class extends Error{constructor(t,i,r){super(r??`Request failed with status ${t}`);this.status=t;this.data=i;this.name="HttpError";}status;data},Z=class extends Error{constructor(t){super(`Circuit open for ${t}: failing fast until the cooldown passes`);this.endpoint=t;this.name="CircuitOpenError";}endpoint},L=new Map,q=class{baseUrl;defaultHeaders;timeout;retry;debug;breaker;constructor(e){this.baseUrl=(e.baseUrl??nt).replace(/\/+$/,""),this.defaultHeaders=e.defaultHeaders??{},this.timeout=e.timeout??8e3,this.retry={attempts:e.retry?.attempts??2,baseDelayMs:e.retry?.baseDelayMs??300},this.debug=e.debug??false;let t=e.circuitBreaker===true?{}:e.circuitBreaker||null;this.breaker=t&&{failureThreshold:t.failureThreshold??3,cooldownMs:t.cooldownMs??3e4};}async request(e){if(!this.breaker)return this.send(e);let t=ge(this.baseUrl+e.path,e.query),i=L.get(t)??{failures:0,openedAt:0};if(i.openedAt){if(Date.now()-i.openedAt<this.breaker.cooldownMs)throw new Z(t);i.openedAt=0,i.failures=this.breaker.failureThreshold-1;}try{let r=await this.send(e);return L.delete(t),r}catch(r){throw r instanceof R&&!this.isRetryableStatus(r.status)?(L.delete(t),r):(i.failures+=1,i.failures>=this.breaker.failureThreshold&&(i.openedAt=Date.now(),this.log(`circuit opened for ${e.path} after ${i.failures} failures`)),L.set(t,i),r)}}async send(e){let t=ge(this.baseUrl+e.path,e.query),i=e.method??"GET",r={"Content-Type":"application/json",...this.defaultHeaders,...e.headers},s=e.body!==void 0?JSON.stringify(e.body):void 0,o=e.timeout??this.timeout,a=e.noRetry?1:(e.retry?.attempts??this.retry.attempts)+1,d=e.retry?.baseDelayMs??this.retry.baseDelayMs,l;for(let c=0;c<a;c++)try{let p=await this.fetchWithTimeout(t,{method:i,headers:r,body:s,...e.keepalive?{keepalive:!0}:{}},o),y=await this.parseBody(p);if(p.ok)return {response:p,data:y};if(this.isRetryableStatus(p.status)&&c<a-1){let u=this.retryAfterMs(p,d,c);this.log(`retrying ${e.path} after ${u}ms (status ${p.status})`),await ye(u);continue}throw new R(p.status,y)}catch(p){if(l=p,p instanceof R)throw p;if(c<a-1){let y=d*2**c;this.log(`retrying ${e.path} after ${y}ms (network error)`),await ye(y);continue}}throw l instanceof Error?l:new Error("Request failed")}async fetchWithTimeout(e,t,i){let r=new AbortController,s=setTimeout(()=>r.abort(),i);try{return await fetch(e,{...t,signal:r.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?new Error(`Request timeout after ${i}ms`,{cause:o}):o}finally{clearTimeout(s);}}async parseBody(e){let t=await e.text().catch(()=>"");if(!t)return null;try{return JSON.parse(t)}catch{return t}}isRetryableStatus(e){return e===429||e>=500&&e<=599}retryAfterMs(e,t,i){let r=e.headers.get("Retry-After");if(r){let s=Number(r);if(!Number.isNaN(s))return s*1e3}return t*2**i}log(e){this.debug&&console.warn(`[xenia] ${e}`);}};function it(n){try{let e=n.split(".")[1];if(!e)return;let t=JSON.parse(atob(e.replace(/-/g,"+").replace(/_/g,"/")));return typeof t.exp=="number"?t.exp*1e3:void 0}catch{return}}var N=class{config;cached=null;inflight=null;constructor(e){this.config=e;}hasSource(){return !!(this.config.token||this.config.getToken)}getToken=async()=>{if(this.config.token&&!this.config.getToken)return this.config.token;let e=Date.now();if(this.cached&&this.cached.expiresAt>e)return this.cached.token;if(this.inflight)return this.inflight;if(!this.config.getToken)throw new Error("No token source: set config.token or config.getToken.");return this.inflight=Promise.resolve(this.config.getToken()).then(t=>{let i=it(t),r=i?i-3e4:e+5*6e4;return this.cached={token:t,expiresAt:r},t}).finally(()=>{this.inflight=null;}),this.inflight}};function ve(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function rt(n){return n!==void 0&&ve(n)?n:void 0}function E(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}var z=class{http;tenantId;environmentKey;tokenProvider;constructor(e){this.tenantId=e.tenantId,this.environmentKey=e.environmentKey,this.tokenProvider=new N(e),this.http=new q({baseUrl:e.baseUrl,defaultHeaders:e.headers,timeout:e.timeout,retry:e.retry,circuitBreaker:e.circuitBreaker,debug:e.debug});}tenantHeaders(){return {"X-Tenant-Id":this.tenantId,"X-Environment":this.environmentKey}}async authHeaders(){let e=this.tenantHeaders();if(!this.tokenProvider.hasSource())return e;let t=await this.tokenProvider.getToken();return t&&(e.Authorization=`Bearer ${t}`),e}async webhook(e,t,i="POST"){let{response:r,data:s}=await this.http.request({method:i,path:"/flow",query:{id:e},headers:await this.authHeaders(),body:i==="POST"?t??{}:void 0,noRetry:true});return {status:r.status,body:s,actions:Y(s),receivedAt:Date.now()}}async submitWidget(e,t){let{response:i,data:r}=await this.http.request({method:"POST",path:"/widget-submissions",query:{ref:e},headers:await this.authHeaders(),body:t??{},noRetry:true}),s=ve(r)?r:{};return {status:i.status,body:r,actions:Y(r),prize:rt(s.prize),alreadyPlayed:s.alreadyPlayed===true,dispatched:s.dispatched===true,dispatchError:typeof s.dispatchError=="string"?s.dispatchError:void 0,widgetType:typeof s.widgetType=="string"?s.widgetType:void 0,receivedAt:Date.now()}}async sendEvents(e,t){let{data:i}=await this.http.request({method:"POST",path:"/api/events/v1",headers:await this.authHeaders(),body:{events:e},keepalive:t?.keepalive});return i}async identify(e){let{data:t}=await this.http.request({method:"POST",path:"/api/events/v1/identify",headers:await this.authHeaders(),body:e});return t}async consent(e,t){let{data:i}=await this.http.request({method:"POST",path:"/api/events/v1/consent",headers:await this.authHeaders(),body:E({xeniaVisitorId:e,analytics:t.analytics===true,marketing:t.marketing===true,personalization:t.personalization===true,consentSource:t.consentSource,consentVersion:t.consentVersion})});return i}async resolve(e,t={}){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve",query:t.merge!==void 0?{merge:String(t.merge)}:void 0,headers:await this.authHeaders(),body:E({contentKey:e,data:t.data,locale:t.locale})});return i}async resolveBatch(e,t={}){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve-batch",query:t.merge!==void 0?{merge:String(t.merge)}:void 0,headers:await this.authHeaders(),body:E({items:e,data:t.data,locale:t.locale})});return i}async resolveEntries(e,t){let{data:i}=await this.http.request({method:"POST",path:"/api/personalization/resolve-entries",headers:await this.authHeaders(),body:E({entryIds:e,data:t.data,locale:t.locale,contentKey:t.contentKey})});return i}};var $="xenia";function ee(n=$){return `${n||$}_vid`}function be(n=$){return `${n||$}_consent`}function xe(n,e,t=365){return `${be(e)}=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=${Math.floor(t*86400)}; SameSite=Lax`}var st=new Set(["eventId","eventType","journeyId","deviceId","visitorId","customerId","email","utmSource","utmMedium","utmCampaign","utmContent","utmId","url","referrer","path","query"]);function we(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}function Se(n){let e={},t={};if(n.props)for(let[r,s]of Object.entries(n.props))s!==void 0&&(st.has(r)?t[r]=s:e[r]=s);return {...e,...t,...we(n.context??{}),...we(n.identity??{}),eventId:n.eventId,...n.eventType?{eventType:n.eventType}:{},...n.journeyId?{journeyId:n.journeyId}:{}}}var W="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function ot(n){let e=new Uint8Array(n);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(e);else for(let t=0;t<n;t++)e[t]=Math.floor(Math.random()*256);return e}function k(n=Date.now()){let e="",t=n;for(let s=9;s>=0;s--)e=W[t%32]+e,t=Math.floor(t/32);let i=ot(16),r="";for(let s=0;s<16;s++)r+=W[i[s]%32];return e+r}var te=26;function Ee(n){if(n.length<=te)return n;let e="";for(let i of [2166136261,16777619]){let r=i>>>0;for(let s=0;s<n.length;s++)r^=n.charCodeAt(s),r=Math.imul(r,16777619)>>>0,e+=W[r%32];}let t="";for(let i=0;i<te;i++){let r=i+1;for(let s=i;s<e.length;s+=te)r=r*31+W.indexOf(e[s])>>>0;t+=W[r%32];}return t}var at=n=>n&&typeof n=="object"&&typeof structuredClone=="function"?structuredClone(n):n;async function ie(n,e){let t=ut(e.cms,e.contentKey),i=e.maxRounds??3,r=Date.now()+(e.timeoutMs??300),s=[],o=u=>{s.push(u);try{e.onApplied?.(u);}catch{}},a=n;try{!e.inPlace&&typeof structuredClone=="function"&&(a=structuredClone(a)),a=t.prepare?t.prepare(a):a;}catch(u){return {content:n,applied:s,complete:false,error:u}}let d={root:a},l=new WeakSet,c=new Map,p=[{parent:d,key:"root",value:d.root}],y=(u,m,g)=>{l.add(u.entry),t.clearMarker?.(u.entry);let v=m.items.map(at);if(!m.decision||v.length===0)return dt(u,t);for(let h of v)h&&typeof h=="object"&&l.add(h);let b=m.decision.op??u.marker.op??"replace",S=Ie(u,b,m.decision.field??u.marker.field,v,t);return o({target:u.id,kind:"runtime",op:b,entryIds:v.map(h=>t.entryId(h)).filter(h=>!!h),contentKey:m.decision.contentKey,bucket:m.decision.bucket,round:g}),S};for(let u=0;;u++){let m=lt(p,t,l,u,o,h=>{let w=c.get(h.id);return w?y(h,w,u):void 0});if(m.size===0)return {content:d.root,applied:s,complete:true};if(!e.resolve||u>=i)return {content:d.root,applied:s,complete:!e.resolve};ke(e,{content:d.root,round:u,pending:[...m.keys()]});let g,v,b;try{g=await Re(e.resolve([...m.keys()]),r),{entriesById:v,queried:b}=await Re(ct(g,t,e.locale),r);}catch(h){return {content:d.root,applied:s,complete:false,error:h===ne?void 0:h}}let S=new Map(g.map(h=>[h.target,h]));p=[];for(let h of m.values()){let w=S.get(h.id),G=w?w.ids?w.ids.map(P=>v.get(P)).filter(P=>P!==void 0):b.get(w)??[]:[],M={decision:w,items:G};c.set(h.id,M),p.push(...y(h,M,u));}ke(e,{content:d.root,round:u,pending:[]});}}function ke(n,e){try{n.onProgress?.(e);}catch{}}function lt(n,e,t,i,r,s){let o=new Map,a=new WeakSet,d=new WeakSet,l=[...n];for(;l.length>0;){let c=l.shift(),p=c.value;if(!p||typeof p!="object"||d.has(p))continue;let y=t.has(p)?void 0:e.entryId(p),u=y?e.marker(p):null;if(y&&u?.kind==="runtime"){let m=s({id:y,marker:u,entry:p,slots:[c]});if(m){l.push(...m);continue}let g=o.get(y);if(g)g.slots.push(c);else if(o.set(y,{id:y,marker:u,entry:p,slots:[c]}),u.op==="items"&&u.field){let v=e.getField(p,u.field);v&&typeof v=="object"&&d.add(v),l.push(...Ce(p));}continue}if(y&&u?.kind==="static"){let m=e.staticVariants(p).filter(g=>g&&typeof g=="object");if(t.add(p),e.clearMarker?.(p),m.length>0){for(let b of m)t.add(b);let g=u.op??"replace",v={entry:p,slots:[c]};l.push(...Ie(v,g,u.field,m,e)),r({target:y,kind:"static",op:g,entryIds:m.map(b=>e.entryId(b)).filter(b=>!!b),round:i});continue}}a.has(p)||(a.add(p),l.push(...Ce(p)));}return o}function Ie(n,e,t,i,r){if(e==="items"){if(t)return r.setField(n.entry,t,i),[{parent:n.entry,key:t,value:r.getField(n.entry,t)}];if(r.mergeItems)return r.mergeItems(n.entry,i[0]),n.slots.map(o=>({...o,value:n.entry}));e="replace";}let s=[];for(let o of n.slots){let a=e==="expand"&&Array.isArray(o.parent)?i:[i[0]];if(Array.isArray(o.parent)){let d=o.parent.indexOf(n.entry);if(d<0)continue;o.parent.splice(d,1,...a);}else o.parent[o.key]=a[0];for(let d of a)s.push({parent:o.parent,key:o.key,value:d});}return s}function dt(n,e){return n.marker.op==="items"&&n.marker.field?[{parent:n.entry,key:n.marker.field,value:e.getField(n.entry,n.marker.field)}]:n.slots.map(t=>({...t,value:n.entry}))}function Ce(n){return Array.isArray(n)?n.map((e,t)=>({parent:n,key:t,value:e})):Object.keys(n).map(e=>({parent:n,key:e,value:n[e]}))}async function ct(n,e,t){let i=[...new Set(n.flatMap(l=>l.ids??[]))],r=n.filter(l=>!l.ids&&l.query),[s,...o]=await Promise.all([i.length>0?e.fetchEntries(i,t):Promise.resolve([]),...r.map(l=>e.queryEntries(l.query,t).catch(()=>[]))]),a=new Map;for(let l of s){let c=e.entryId(l);c&&a.set(c,l);}let d=new Map;return r.forEach((l,c)=>d.set(l,o[c])),{entriesById:a,queried:d}}var ne=Symbol("timeout");function Re(n,e){let t=e-Date.now();if(t<=0)return Promise.reject(ne);let i;return Promise.race([n,new Promise((r,s)=>{i=setTimeout(()=>s(ne),t);})]).finally(()=>clearTimeout(i))}function ut(n,e){return {...n,marker(t){let i=n.marker(t);return i&&e&&i.keys?.includes(e)?i:null}}}async function Te(n,e){let t;try{if(!e.cms.fetchPage)throw new Error("This CMS adapter cannot fetch pages; use personalizeContent(page)");t=await e.cms.fetchPage(n,e.locale);}catch(i){return {content:null,applied:[],complete:false,error:i}}return t==null?{content:null,applied:[],complete:true}:ie(t,e)}var D=class{map=new Map;set(e,t){this.map.set(e,t);}get(e){return this.map.get(e)}keys(){return [...this.map.keys()]}clear(){this.map.clear();}},J=class{nsKey;constructor(e="xenia"){this.nsKey=`${e}_responses`;}read(){try{let e=localStorage.getItem(this.nsKey);return e?JSON.parse(e):{}}catch{return {}}}write(e){try{localStorage.setItem(this.nsKey,JSON.stringify(e));}catch{}}set(e,t){let i=this.read();i[e]=t,this.write(i);}get(e){return this.read()[e]}keys(){return Object.keys(this.read())}clear(){try{localStorage.removeItem(this.nsKey);}catch{}}};var _=class{queue=[];send;batchSize;flushIntervalMs;maxQueueSize;debug;timer=null;flushing=false;listenersAttached=false;allowed=false;onPageHide=()=>this.flushOnUnload();onVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flushOnUnload();};constructor(e){this.send=e.send,this.batchSize=e.batchSize??20,this.flushIntervalMs=e.flushIntervalMs??3e3,this.maxQueueSize=e.maxQueueSize??200,this.debug=e.debug??false;}start(){this.allowed=true,!(this.timer||typeof window>"u")&&(this.timer=setInterval(()=>{this.flush();},this.flushIntervalMs),window.addEventListener("pagehide",this.onPageHide),document.addEventListener("visibilitychange",this.onVisibilityChange),this.listenersAttached=true);}stop(){this.allowed=false,this.timer&&clearInterval(this.timer),this.timer=null,this.listenersAttached&&(window.removeEventListener("pagehide",this.onPageHide),document.removeEventListener("visibilitychange",this.onVisibilityChange),this.listenersAttached=false);}enqueue(e){this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(e),this.allowed&&this.queue.length>=this.batchSize&&this.flush();}async sendImmediate(e){try{await this.send([e],{keepalive:!0});}catch(t){this.isPermanentFailure(t)||this.requeue([e]),this.debug&&console.warn("[xenia] immediate send failed",t);}}async flush(){if(!this.allowed||this.flushing||this.queue.length===0)return;this.flushing=true;let e=this.queue.splice(0,this.batchSize);try{await this.send(e);}catch(t){this.isPermanentFailure(t)||this.requeue(e),this.debug&&console.warn("[xenia] analytics flush failed",t);}finally{this.flushing=false;}}isPermanentFailure(e){return e instanceof R&&e.status>=400&&e.status<500}flushOnUnload(){if(!this.allowed||this.queue.length===0)return;let e=this.queue.splice(0,this.queue.length);this.send(e,{keepalive:true}).catch(()=>{});}requeue(e){let t=this.maxQueueSize-this.queue.length;t<=0||this.queue.unshift(...e.slice(0,t));}};var pt=new Set(["click","view-port","page-load"]);function Ae(n){let e=n.indexOf("&");if(e===-1)return null;let t=n.slice(0,e),i=n.slice(e+1);return !t||!pt.has(i)?null:{eventId:t,interactionType:i}}function Me(n){let e=n.getAttribute("data-xenia-content-key");if(!e)return null;let t=n.getAttribute("data-xenia-content-entry-id"),i=n.getAttribute("data-xenia-base-entry-id"),r=n.getAttribute("data-xenia-personalized");return {contentKey:e,contentEntryId:t??void 0,baseEntryId:i??void 0,personalized:r==null?void 0:r==="true"}}var F=class{opts;throttleTimers=new Map;observers=new Map;slotObservers=new Map;triggered=new Set;slotImpressed=new Set;clickHandler=null;mutationObserver=null;constructor(e){this.opts=e;}start(){this.setupClicks(),this.scan(document),this.setupMutations();}stop(){this.clickHandler&&document.removeEventListener("click",this.clickHandler),this.clickHandler=null,this.mutationObserver?.disconnect(),this.mutationObserver=null,this.observers.forEach(e=>e.disconnect()),this.observers.clear(),this.slotObservers.forEach(e=>e.disconnect()),this.slotObservers.clear(),this.throttleTimers.clear(),this.triggered.clear(),this.slotImpressed.clear();}attr(){return `data-${this.opts.prefix}`}throttled(e){if(this.opts.throttleMs<=0)return false;let t=Date.now(),i=this.throttleTimers.get(e)??0;return t-i>=this.opts.throttleMs?(this.throttleTimers.set(e,t),false):true}setupClicks(){let e=this.attr();this.clickHandler=t=>{let i=t.target;if(!i)return;let r=i.closest(`[${e}]`);if(r){let s=r.getAttribute(e),o=s?Ae(s):null;o&&o.interactionType==="click"&&!this.throttled(r)&&this.opts.fire(o.eventId,"click");}if(this.opts.fireSlot){let s=i.closest("[data-xenia-slot]");if(s){let o=Me(s);o&&!this.throttled(s)&&this.opts.fireSlot("click",o);}}},document.addEventListener("click",this.clickHandler);}observeSlot(e){if(!this.opts.fireSlot||this.slotObservers.has(e))return;let t=Me(e);if(!t)return;let i=this.opts.fireSlot,{threshold:r,rootMargin:s}=this.opts.viewport,o=new IntersectionObserver(a=>{for(let d of a)d.isIntersecting&&(this.slotImpressed.has(e)||(this.slotImpressed.add(e),i("impression",t),o.disconnect(),this.slotObservers.delete(e)));},{threshold:r,rootMargin:s});o.observe(e),this.slotObservers.set(e,o);}observeViewport(e,t){if(this.observers.has(e))return;let{threshold:i,rootMargin:r,triggerOnce:s}=this.opts.viewport,o=new IntersectionObserver(a=>{for(let d of a)d.isIntersecting&&(s&&this.triggered.has(e)||this.throttled(e)||(this.opts.fire(t,"view-port"),s&&(this.triggered.add(e),o.disconnect(),this.observers.delete(e))));},{threshold:i,rootMargin:r});o.observe(e),this.observers.set(e,o);}handleElement(e){let t=e.getAttribute(this.attr());if(!t)return;let i=Ae(t);i&&(i.interactionType==="view-port"?this.observeViewport(e,i.eventId):i.interactionType==="page-load"&&this.opts.fire(i.eventId,"page-load"));}scan(e){e.querySelectorAll(`[${this.attr()}]`).forEach(t=>this.handleElement(t)),this.opts.fireSlot&&e.querySelectorAll("[data-xenia-slot]").forEach(t=>this.observeSlot(t));}setupMutations(){this.mutationObserver=new MutationObserver(e=>{for(let t of e)for(let i of t.addedNodes){if(i.nodeType!==Node.ELEMENT_NODE)continue;let r=i;this.handleElement(r),this.opts.fireSlot&&r.matches("[data-xenia-slot]")&&this.observeSlot(r),this.scan(r);}}),this.mutationObserver.observe(document.body,{childList:true,subtree:true});}};function Pe(n){let e={};if(!n)return e;for(let t of n.split(";")){let i=t.indexOf("=");if(i===-1)continue;let r=t.slice(0,i).trim(),s=t.slice(i+1).trim();r&&(e[r]=decodeURIComponent(s));}return e}var mt=1800*1e3,X=class{prefix;cookie;deviceId=null;journeyId=null;sessionId=null;constructor(e="xenia",t=true){this.prefix=e,this.cookie=ht(t);}key(e){return `${this.prefix}_${e}`}cookieName(){return ee(this.prefix)}writeVisitorCookie(e){if(!(!this.cookie||!e))try{if(typeof document>"u")return;let t=[`${this.cookieName()}=${encodeURIComponent(e)}`,"path=/",`max-age=${Math.floor(this.cookie.maxAgeDays*86400)}`,`SameSite=${this.cookie.sameSite}`];this.cookie.domain&&t.push(`domain=${this.cookie.domain}`),this.cookie.secure&&t.push("Secure"),document.cookie=t.join("; ");}catch{}}readVisitorCookie(){if(!this.cookie||typeof document>"u")return null;try{return Pe(document.cookie)[this.cookieName()]||null}catch{return null}}async resolveDeviceId(){if(this.deviceId)return this.writeVisitorCookie(this.getVisitorId()??this.deviceId),this.deviceId;let e=this.key("device_id");try{let i=localStorage.getItem(e);if(i)return this.deviceId=i,this.writeVisitorCookie(this.getVisitorId()??i),i}catch{}let t=this.readVisitorCookie();t||(t=await this.mediaDeviceId()),t||(t=await this.fingerprint()),this.deviceId=t;try{localStorage.setItem(e,t);}catch{}return this.writeVisitorCookie(this.getVisitorId()??t),t}getDeviceId(){return this.deviceId}async mediaDeviceId(){try{if(!navigator.mediaDevices?.enumerateDevices)return null;let e=await navigator.mediaDevices.enumerateDevices();return (e.find(i=>i.kind==="videoinput"&&i.deviceId)||e.find(i=>i.kind==="audioinput"&&i.deviceId)||e.find(i=>i.kind==="audiooutput"&&i.deviceId))?.deviceId||null}catch{return null}}async fingerprint(){let e=[navigator.userAgent,navigator.language,screen.width,screen.height,screen.colorDepth,new Date().getTimezoneOffset()].join("|"),t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t)).map(i=>i.toString(16).padStart(2,"0")).join("")}identify(e){if(e){try{localStorage.setItem(this.key("visitor_id"),e);}catch{}this.writeVisitorCookie(e);}}getVisitorId(){try{return localStorage.getItem(this.key("visitor_id"))}catch{return null}}setCustomerId(e){try{e?localStorage.setItem(this.key("customer_id"),e):localStorage.removeItem(this.key("customer_id"));}catch{}}getCustomerId(){try{return localStorage.getItem(this.key("customer_id"))}catch{return null}}setEmail(e){try{e?localStorage.setItem(this.key("email"),e):localStorage.removeItem(this.key("email"));}catch{}}getEmail(){try{return localStorage.getItem(this.key("email"))}catch{return null}}getSessionId(){let e=this.key("session_id"),t=this.key("session_last_activity"),i=Date.now();try{let r=sessionStorage.getItem(e),s=Number(sessionStorage.getItem(t)),a=r&&Number.isFinite(s)&&i-s<mt?r:k(i);return sessionStorage.setItem(e,a),sessionStorage.setItem(t,String(i)),this.sessionId=a,a}catch{return this.sessionId||(this.sessionId=k(i)),this.sessionId}}setJourneyId(e){this.journeyId=e&&e.trim()?e.trim():null;}getJourneyId(){return this.journeyId||this.utmParam("utm_id")||null}utmParam(e){try{let t=new URLSearchParams(window.location.search).get(e);if(t){try{sessionStorage.setItem(this.key(e),t);}catch{}return t}try{return sessionStorage.getItem(this.key(e))}catch{}}catch{}return null}collectContext(){let e={},t=this.utmParam("utm_source"),i=this.utmParam("utm_medium"),r=this.utmParam("utm_campaign"),s=this.utmParam("utm_content"),o=this.utmParam("utm_id");t&&(e.utmSource=t),i&&(e.utmMedium=i),r&&(e.utmCampaign=r),s&&(e.utmContent=s),o&&(e.utmId=o);try{e.url=window.location.href,e.path=window.location.pathname,e.query=Object.fromEntries(new URLSearchParams(window.location.search)),document.referrer&&(e.referrer=document.referrer);}catch{}let a=this.getVisitorId();return a&&(e.visitorId=a),e}};function ht(n){if(n===false)return null;let e=n===true?{}:n,t=e.sameSite??"Lax",i=t==="None"?true:e.secure??false;return {sameSite:t,secure:i,maxAgeDays:e.maxAgeDays??365,domain:e.domain}}function j(n){let e={};return n.querySelectorAll("[data-xenia-field]").forEach(t=>{let i=t.getAttribute("data-xenia-field");i&&(e[i]=ft(t));}),e}function ft(n){return n instanceof HTMLInputElement?n.type==="checkbox"?n.checked?n.value||"on":"":n.type==="radio"?n.checked?n.value:"":n.value:n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement?n.value:n.textContent?.trim()??""}function Oe(n,e){n&&(n instanceof HTMLButtonElement||n instanceof HTMLInputElement||n instanceof HTMLSelectElement||n instanceof HTMLTextAreaElement||n instanceof HTMLFieldSetElement?n.disabled=e:e?n.setAttribute("aria-disabled","true"):n.removeAttribute("aria-disabled"));}function re(n,e){let t=n.querySelector("[data-xenia-error]");t&&(t.textContent=e);}var We="xenia-form-submit-style";function gt(n){if(n.querySelector(`#${We}`))return;let e=document.createElement("style");e.id=We,e.textContent="@keyframes xenia-submit-spin{to{transform:rotate(360deg)}}[data-xenia-submitting]::after{content:'';display:inline-block;width:0.85em;height:0.85em;margin-left:0.5em;vertical-align:-0.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:xenia-submit-spin 0.6s linear infinite}",n.prepend(e);}function se(n,e){n&&(e?n.setAttribute("data-xenia-submitting",""):n.removeAttribute("data-xenia-submitting"));}function yt(n,e){if(!e)return;let t=n instanceof ShadowRoot?n.host:n;t instanceof HTMLElement?(t.style.transition="opacity 220ms ease, transform 220ms ease",t.style.opacity="0",t.style.transform="scale(0.96)",window.setTimeout(e,220)):e();}var vt=900;function bt(n,e){let t=n.querySelector("[data-xenia-success]");return t?(t instanceof HTMLElement?t.hidden=false:t.removeAttribute("hidden"),e?e.hidden=true:n.querySelectorAll("[data-xenia-field], [data-xenia-submit]").forEach(i=>{i.hidden=true;}),true):false}function He(n,e,t){let i=n.querySelector("form"),r=false;gt(n);let s=(o,a)=>{if(r)return;if(!e.formSubmit){re(n,"This form isn't connected yet.");return}r=true,re(n,""),Oe(o,true),se(o,true);let d=Date.now(),l=e.formSubmit.successDisplayMs??vt;t.submitWidgetForm(a).then(()=>{se(o,false),bt(n,i);let c=Math.max(0,l-(Date.now()-d));window.setTimeout(()=>yt(n,t.dismiss),c);}).catch(()=>{se(o,false),Oe(o,false),re(n,"Something went wrong. Please try again.");}).finally(()=>{r=false;});};i&&i.addEventListener("submit",o=>{o.preventDefault();let a={};new FormData(i).forEach((l,c)=>{typeof l=="string"&&(a[c]=l);});let d=o.submitter??i.querySelector('[type="submit"], button:not([type])');s(d,{...j(n),...a});}),n.querySelectorAll("[data-xenia-submit]").forEach(o=>{i?.contains(o)||o.addEventListener("click",()=>s(o,j(n)));});}function oe(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ve(n){return oe(n).replace(/"/g,"&quot;")}function B(n,e){e&&n.querySelectorAll(".xenia-close, [data-xenia-close], [class*='close' i], [id*='close' i], [class*='backdrop' i], [id*='backdrop' i]").forEach(i=>{i.removeAttribute("onclick"),i.addEventListener("click",e);}),n.querySelectorAll("[class*='backdrop' i], [id*='backdrop' i]").forEach(t=>{t instanceof HTMLElement&&t.children.length===0&&!t.textContent?.trim()&&(t.style.opacity="0.5");});}var T=260,H=T/2,A=T/2,Le=["#7c3aed","#2563eb","#059669","#d97706","#dc2626","#0891b2"],xt="transform 3.2s cubic-bezier(0.15, 0.85, 0.25, 1)",wt='<div class="xenia-wheel-pointer" aria-hidden="true"></div>',le=320,qe=`opacity ${le}ms ease, transform ${le}ms ease`,St=900,ae=(n,e)=>`perspective(${St}px) translateZ(${e}px) scale(${n})`;function de(n,e){let t=n*Math.PI/180;return {x:A+e*Math.sin(t),y:A-e*Math.cos(t)}}function Et(n,e){let t=de(n,H),i=de(e,H),r=e-n>180?1:0;return `M ${A},${A} L ${t.x},${t.y} A ${H},${H} 0 ${r} 1 ${i.x},${i.y} Z`}function kt(n,e,t=0){if(e<=0)return 0;let i=360/e,s=(360-(n*i+i/2))%360;return t*360+s}function ze(n,e){let t=n?Array.from(n.children):[],i=e?Array.from(e.children):[];e&&(e.hidden=false),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition="none",r.style.opacity="0",r.style.transform=ae(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&r.offsetHeight;}),$e(()=>{t.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=qe,r.style.opacity="0",r.style.transform=ae(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=qe,r.style.opacity="1",r.style.transform=ae(1,0));});}),n&&setTimeout(()=>{n.hidden=true;},le);}function $e(n){typeof requestAnimationFrame=="function"?requestAnimationFrame(n):setTimeout(n,0);}function Ct(n){let t=360/(n.length||1),i=n.map((r,s)=>{let o=s*t,a=o+t,d=r.colorHex||Le[s%Le.length],l=o+t/2,c=de(l,H*.62);return `<path d="${Et(o,a)}" fill="${Ve(d)}" stroke="#fff" stroke-width="1"></path><text x="${c.x}" y="${c.y}" fill="#fff" font-size="12" text-anchor="middle" transform="rotate(${l} ${c.x} ${c.y})">${oe(r.label)}</text>`}).join("");return `<svg class="xenia-wheel-svg" viewBox="0 0 ${T} ${T}" width="${T}" height="${T}"><g class="xenia-wheel-dial">${i}</g><circle class="xenia-wheel-hub" cx="${A}" cy="${A}" r="6"></circle></svg>`}var De={html(n){return `<div class="xenia-spin-wheel"><div data-xenia-wheel-face>${n.spinnerHtml??""}</div><div class="xenia-widget-result" data-xenia-wheel-result hidden>${n.winHtml??""}</div><div class="xenia-widget-result" data-xenia-wheel-loss hidden>${n.lossHtml??""}</div></div>`},wire(n,e,t){B(n,t.dismiss);let i=e.segments??[],r=n.querySelector("[data-xenia-wheel-face]"),s=n.querySelector("[data-xenia-spin]"),o=n.querySelector("[data-xenia-wheel-result]"),a=n.querySelector("[data-xenia-wheel-loss]"),d=n.querySelector("[data-xenia-error]"),l=n.querySelector("[data-xenia-wheel-slot]");l&&l.insertAdjacentHTML("afterbegin",Ct(i)+wt);let c=n.querySelector(".xenia-wheel-dial");if(!s||!e.formSubmit)return;n.querySelectorAll("[data-xenia-wheel-cta]").forEach(m=>{m.addEventListener("click",()=>t.fireCta());});let p=(m,g,v)=>{n.querySelectorAll("[data-xenia-wheel-prize]").forEach(h=>{h.textContent=m;});let b=g?a:o,S=g?o:a;S&&(S.hidden=true),ze(r,b),v||(u=true,n.querySelectorAll("[data-xenia-spin-again]").forEach(h=>{h.hidden=true;}));},y=false,u=false;n.querySelectorAll("[data-xenia-spin-again]").forEach(m=>{m.addEventListener("click",()=>{if(u)return;let g=o&&!o.hidden?o:a&&!a.hidden?a:null;g&&(y=false,s.disabled=false,d&&(d.textContent=""),ze(g,r));});}),s.addEventListener("click",()=>{if(y)return;y=true,s.disabled=true,d&&(d.textContent="");let m=j(n);t.submitWidgetForm(m).then(g=>{let v=i.findIndex(Xe=>Xe.id===g.prize?.segmentId),b=g.prize?.label??i[v]?.label??"",S=v>=0&&!!i[v]?.isLoss,h=g.alreadyPlayed!==true;if(v<0||!c){p(b,S,h);return}let w=3+Math.floor(Math.random()*3),G=kt(v,i.length||1,w),M=/rotate\(([-\d.]+)deg\)/.exec(c.style.transform),P=M?parseFloat(M[1]):0;c.style.transition="none",c.style.transform=`rotate(${P%360}deg)`,c.getBoundingClientRect(),c.style.transition=xt;let he=()=>{c.removeEventListener("transitionend",he),p(b,S,h);};c.addEventListener("transitionend",he),$e(()=>{c.style.transform=`rotate(${G}deg)`;});}).catch(()=>{y=false,s.disabled=false,d&&(d.textContent="Something went wrong. Please try again.");});});}};var ce={"spin-wheel":De};function Q(n,e=document){if(!n)return null;let t=e.querySelector(`[data-xenia-slot="${Rt(n)}"]`);if(t)return t;try{return e.querySelector(n)}catch{return null}}function Rt(n){let e=window;return e.CSS?.escape?e.CSS.escape(n):n.replace(/["\\]/g,"\\$&")}function U(n,e){let t=Q(n);return t?(e.html!==void 0?t.innerHTML=e.html:e.text!==void 0&&(t.textContent=e.text),t.removeAttribute("hidden"),true):false}function ue(n){let e=Q(n);return !e||!(e instanceof HTMLElement)?false:(e.dataset.xeniaHidden="1",e.style.setProperty("display","none","important"),true)}function pe(n){let e=Q(n);return !e||!(e instanceof HTMLElement)?false:(delete e.dataset.xeniaHidden,e.style.removeProperty("display"),true)}var It=new Set(["banner","popup","modal","inline"]);function Tt(n){return It.has(n)}var K=class{host=null;shadow=null;onCta;messageTemplate;messageStyles;messageComponent;submitWidgetFormFn;mounted=new Map;constructor(e,t){this.onCta=e,this.messageTemplate=t?.messageTemplate,this.messageStyles=t?.messageStyles,this.messageComponent=t?.messageComponent,this.submitWidgetFormFn=t?.submitWidgetForm;}apply(e){let t=0;for(let i of e)this.applyOne(i)&&t++;return t}applyOne(e){switch(e.type){case "swap":return U(e.target,{html:e.html,text:e.text});case "setContent":return U(e.target,{html:e.html,text:e.text});case "hide":return ue(e.target);case "show":return pe(e.target);case "redirect":try{return window.location.assign(e.url),!0}catch{return false}default:return Tt(e.type)?this.renderMessage(e):false}}destroy(){this.mounted.forEach(e=>e()),this.mounted.clear(),this.host?.remove(),this.host=null,this.shadow=null;}ensureShadow(){if(this.shadow)return this.shadow;let e=document.createElement("div");e.setAttribute("data-xenia-ui",""),document.body.appendChild(e);let t=e.attachShadow({mode:"open"});return t.appendChild(this.styleEl()),this.host=e,this.shadow=t,t}styleEl(){let e=document.createElement("style");return e.textContent=this.messageStyles?`${_e}
2
+ ${this.messageStyles}`:_e,e}renderMessage(e){let t=e.html===void 0&&!!this.messageComponent;if(e.type==="inline"){if(!e.target)return false;let l=Q(e.target);return l?(this.unmount(l),t?(l.innerHTML="",this.mountComponent(l,e,"inline",()=>this.unmount(l))):(l.innerHTML=this.cardHtml(e,"inline"),this.wireCard(l,e)),true):false}let i=this.ensureShadow(),r=document.createElement("div"),s=this.positionClass(e.type,e.position),o=e.html!==void 0?" xenia-custom-bg":"",a=e.style?.hideOverlay?" xenia-no-overlay":"";r.className=`xenia-msg xenia-${e.type}${s?` ${s}`:""}${o}${a}`,i.appendChild(r);let d=()=>{this.unmount(r),r.remove();};if(t?this.mountComponent(r,e,e.type,d):(r.innerHTML=this.cardHtml(e,e.type),this.wireCard(r,e,d)),e.dismissAfterMs&&e.dismissAfterMs>0){let l=setTimeout(d,e.dismissAfterMs),c=()=>clearTimeout(l);r.addEventListener("click",c,{once:true}),r.addEventListener("focusin",c,{once:true});}return true}mountComponent(e,t,i,r){if(!this.messageComponent)return;let s={action:t,variant:i,close:r,fireCta:()=>{t.cta?.event&&this.onCta?.(t.cta.event,t.cta),t.cta?.url&&window.location.assign(t.cta.url),r();}},o=this.messageComponent(e,s);o&&this.mounted.set(e,o);}unmount(e){let t=this.mounted.get(e);t&&(t(),this.mounted.delete(e));}positionClass(e,t){return e==="popup"?`xenia-pos-${t==="top-left"||t==="top-right"||t==="bottom-left"?t:"bottom-right"}`:e==="banner"?`xenia-pos-${t==="top"?"top":"bottom"}`:""}cardHtml(e,t){let i=e.widgetType?ce[e.widgetType]:void 0;if(i)return i.html(e,t);if(e.html!==void 0)return At(e.html,t);if(this.messageTemplate){let l={action:e,variant:t,escapeHtml:V,escapeAttr:Je};return this.messageTemplate(l)}let r=e.imageUrl?`<img class="xenia-img" src="${Je(e.imageUrl)}" alt="" />`:"",s=e.title?`<div class="xenia-title">${V(e.title)}</div>`:"",o=e.message?`<div class="xenia-body">${V(e.message)}</div>`:"",a=e.cta?`<button class="xenia-cta" type="button">${V(e.cta.label)}</button>`:"";return `<div class="xenia-card">${t==="inline"?"":'<button class="xenia-close" type="button" aria-label="Close">\xD7</button>'}${r}<div class="xenia-content">${s}${o}${a}</div></div>`}wireCard(e,t,i){let r=t.widgetType?ce[t.widgetType]:void 0;if(r){r.wire(e,t,this.buildWidgetCtx(t,i));return}B(e,i);let s=e.querySelector(".xenia-cta, [data-xenia-cta]");s&&t.cta&&s.addEventListener("click",()=>{t.cta?.event&&this.onCta?.(t.cta.event,t.cta),t.cta?.url&&window.location.assign(t.cta.url),i?.();}),He(e,t,this.buildWidgetCtx(t,i));}buildWidgetCtx(e,t){let i=k();return {dismiss:t,fireCta:()=>{e.cta?.event&&this.onCta?.(e.cta.event,e.cta),e.cta?.url&&window.location.assign(e.cta.url),t?.();},submitWidgetForm:r=>!e.formSubmit||!this.submitWidgetFormFn?Promise.reject(new Error("xenia: this action has no formSubmit config, or no submitWidgetForm handler is wired (construct the ActionRenderer via XeniaClient to get one)")):this.submitWidgetFormFn(e.formSubmit,r,{idempotencyKey:i})}}};function At(n,e){return e==="modal"?`<div class="xenia-custom-html">${n}</div>`:`<div class="xenia-custom-html"><style>.xenia-custom-html{position:relative}.xenia-custom-html>*{position:static!important;inset:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important}</style>${n}</div>`}function V(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Je(n){return V(n).replace(/"/g,"&quot;")}var _e=`
3
3
  :host { all: initial; }
4
4
  .xenia-msg { position: fixed; z-index: var(--xenia-z-index, 2147483000);
5
5
  font-family: var(--xenia-font-family, system-ui, sans-serif); }
@@ -76,6 +76,6 @@ ${this.messageStyles}`:Je,e}renderMessage(e){let t=e.html===void 0&&!!this.messa
76
76
  .xenia-widget-result-cta { margin-top: 8px; background: var(--xenia-cta-bg, #111); color: var(--xenia-cta-color, #fff);
77
77
  border: 0; border-radius: var(--xenia-cta-radius, 8px); padding: var(--xenia-cta-padding, 8px 14px);
78
78
  font-size: var(--xenia-cta-size, 14px); font-family: inherit; cursor: pointer; }
79
- `;var me=class{api;identity;responses;options;renderer;analyticsQueue;tracker=null;booting=null;generation=0;consentState;listeners=new Map;constructor(e){this.options=e;let t=e.prefix??"xenia";this.identity=new X(t,e.visitorCookie??true),e.visitorId&&this.identity.identify(e.visitorId),this.api=new z(e),this.responses=e.persistResponses===false||!O()?new N:new J(t),this.renderer=new K((i,r)=>this.onCtaEvent(i,r),{messageTemplate:e.messageTemplate,messageStyles:e.messageStyles,messageComponent:e.messageComponent,submitWidgetForm:(i,r,s)=>this.submitWidgetForm(i,r,s)}),this.consentState={...e.consent},this.analyticsQueue=new F({debug:e.debug,send:(i,r)=>this.api.sendEvents(i.map(s=>({...s,consent:this.consentState})),r)});}init(){return O()?this.booting??=this.boot():Promise.resolve()}async boot(){let e=this.generation;await this.identity.resolveDeviceId(),e===this.generation&&(this.analyticsAllowed()&&this.analyticsQueue.start(),this.options.autoTrack!==false&&(this.tracker=new _({prefix:this.options.prefix??"xenia",throttleMs:this.options.throttleMs??1e3,viewport:{threshold:this.options.viewport?.threshold??.5,rootMargin:this.options.viewport?.rootMargin,triggerOnce:this.options.viewport?.triggerOnce??true},fire:(t,i)=>this.track(t,{interactionType:i},{trigger:true}),fireSlot:(t,i)=>{this.track("customEvent",{customEventName:t==="impression"?"personalization_impression":"personalization_click",contentKey:i.contentKey,contentEntryId:i.contentEntryId??null,baseEntryId:i.baseEntryId??null},{trigger:false});}}),this.tracker.start()));}destroy(){this.tracker?.stop(),this.tracker=null,this.renderer.destroy(),this.analyticsQueue.stop(),this.booting=null,this.generation++;}identify(e,t){this.identity.identify(e),t?.customerId!==void 0&&this.identity.setCustomerId(t.customerId),t?.email!==void 0&&this.identity.setEmail(t.email),this.api.identify({xeniaVisitorId:e,userId:t?.customerId,email:t?.email}).then(i=>this.emit("identify",i)).catch(i=>this.emitError(i));}setJourneyId(e){this.identity.setJourneyId(e);}track(e,t,i={}){if(!O())return;let r=i.trigger===true;if(!r&&this.dntBlocked())return;let s=this.buildEvent(e,t,i);this.emit("event",{eventName:e,event:s}),r?this.analyticsQueue.sendImmediate(s).catch(o=>this.emitError(o)):(this.analyticsQueue.enqueue(s),this.analyticsAllowed()&&this.analyticsQueue.start());}buildEvent(e,t,i){let r=this.identity.collectContext(),s;try{s=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch{}return {eventName:e,eventId:i.eventId?Ee(i.eventId):k(),eventVersion:1,occurredAtMs:Date.now(),source:"xenia-js-sdk",identity:{sessionId:this.identity.getSessionId(),...i.identity,xeniaVisitorId:r.visitorId??this.identity.getDeviceId()??void 0},context:{pagePath:r.path,referrer:r.referrer,userAgent:navigator.userAgent,locale:navigator.language,timezone:s,journeyId:this.identity.getJourneyId()??void 0,utmSource:r.utmSource,utmMedium:r.utmMedium,utmCampaign:r.utmCampaign,utmContent:r.utmContent,...i.context},properties:this.withUtmId(t,r.utmId),trigger:i.trigger===true?true:void 0}}withUtmId(e,t){return !t||e&&(e.utm_id!==void 0||e.utmId!==void 0)?e:{...e,utm_id:t}}async resolve(e,t){return this.api.resolve(e,this.withVisitor(t))}async resolveBatch(e,t){return this.api.resolveBatch(e,this.withVisitor(t))}async personalizeContent(e,t){return ie(e,{...t,resolve:this.entryResolver(t)})}async personalizePage(e,t){return Te(e,{...t,resolve:this.entryResolver(t)})}entryResolver(e){let t=this.withVisitor({data:e.data,locale:e.locale});return async i=>(await this.api.resolveEntries(i,t)).decisions??[]}resolveVisitorId(){return this.identity.getVisitorId()??this.identity.getDeviceId()??void 0}withVisitor(e){let t=this.identity.collectContext(),i=this.resolveVisitorId(),r=E({path:t.path,query:t.query,deviceId:this.identity.getDeviceId()??void 0,visitorId:i,customerId:this.identity.getCustomerId()??void 0,email:this.identity.getEmail()??void 0,url:t.url,referrer:t.referrer,utmSource:t.utmSource,utmMedium:t.utmMedium,utmCampaign:t.utmCampaign,utmContent:t.utmContent,utmId:t.utmId});return i&&(r._xenia_vid=i),Object.keys(r).length===0?e:{...e,data:{...e?.data??{},...r}}}dntBlocked(){if(this.options.respectDnt===false)return false;try{let e=navigator,t=navigator.doNotTrack??window.doNotTrack;if(t==="1"||t==="yes"||e.globalPrivacyControl===!0)return !0}catch{}return false}analyticsAllowed(){return this.consentState.analytics===true}async request(e,t,i){let r=this.identity.collectContext(),s=Se({eventId:e,journeyId:this.identity.getJourneyId()??void 0,identity:{deviceId:this.identity.getDeviceId()??void 0,visitorId:this.resolveVisitorId()},context:r,props:t}),o=await this.api.webhook(e,s,i?.method??"POST");return this.responses.set(e,o),this.emit("response",{triggerId:e,response:o}),(i?.apply??this.options.autoApplyActions!==false)&&o.actions.length&&this.applyActions(o.actions),o}getResponse(e){return this.responses.get(e)}async submitWidgetForm(e,t,i){let r=this.identity.collectContext(),s=i?.idempotencyKey??k(),o=e.flowRef??e.bindingRef,a={visitorId:this.resolveVisitorId(),deviceId:this.identity.getDeviceId()??void 0,idempotencyKey:s,mode:e.mode,ref:o,url:r.url,referrer:r.referrer,path:r.path,query:r.query,utmSource:r.utmSource,utmMedium:r.utmMedium,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmId:r.utmId},d=e.flowRef?await this.api.webhook(e.flowRef,E({...a,...t}),"POST"):await this.api.submitWidget(e.bindingRef??"",E({...a,fields:t}));return this.emit("response",{triggerId:o,response:d}),(i?.apply??this.options.autoApplyActions!==false)&&d.actions.length&&this.applyActions(d.actions),d}swapContent(e,t){return U(e,t)}hideContent(e){return ue(e)}showContent(e){return pe(e)}applyActions(e){let t=this.renderer.apply(e);return this.emit("actions",{actions:e,applied:t}),t}async consent(e){let t=this.analyticsAllowed();if(this.consentState={...this.consentState,...e},O())try{document.cookie=xe(this.consentState,this.options.prefix);}catch{}this.analyticsAllowed()&&!t?(this.analyticsQueue.start(),this.analyticsQueue.flush()):!this.analyticsAllowed()&&t&&this.analyticsQueue.stop();let i=this.identity.getVisitorId()??this.identity.getDeviceId();if(i)try{await this.api.consent(i,e);}catch(r){this.emitError(r);}}on(e,t){let i=this.listeners.get(e)??new Set;return i.add(t),this.listeners.set(e,i),()=>i.delete(t)}emit(e,t){this.listeners.get(e)?.forEach(i=>{try{i(t);}catch{}});}emitError(e){let t=e instanceof Error?e:new Error(String(e));this.options.debug&&console.error("[xenia]",t),this.emit("error",t);}onCtaEvent(e,t){this.track(e,{ctaLabel:t.label,ctaUrl:t.url??null},{trigger:true});}};function Fe(n){return new me(n)}var R=null;function x(n){if(!R)throw console.warn(`[xenia] ${n}() called before init().`),new Error("Xenia not initialized");return R}var xn={init(n){R&&R.destroy(),R=Fe(n),R.init();},destroy(){R?.destroy(),R=null;},track(n,e,t){x("track").track(n,e,t);},identify(n){x("identify").identify(n);},consent(n){return x("consent").consent(n)},resolve(n,e){return x("resolve").resolve(n,e)},resolveBatch(n,e){return x("resolveBatch").resolveBatch(n,e)},setJourneyId(n){x("setJourneyId").setJourneyId(n);},request(n,e){return x("request").request(n,e)},getResponse(n){return x("getResponse").getResponse(n)},swapContent(n,e){return x("swapContent").swapContent(n,e)},hideContent(n){return x("hideContent").hideContent(n)},showContent(n){return x("showContent").showContent(n)}};exports.Xenia=xn;return exports;})({});
79
+ `;var me=class{api;identity;responses;options;renderer;analyticsQueue;tracker=null;booting=null;generation=0;consentState;listeners=new Map;constructor(e){this.options=e;let t=e.prefix??"xenia";this.identity=new X(t,e.visitorCookie??true),e.visitorId&&this.identity.identify(e.visitorId),this.api=new z(e),this.responses=e.persistResponses===false||!O()?new D:new J(t),this.renderer=new K((i,r)=>this.onCtaEvent(i,r),{messageTemplate:e.messageTemplate,messageStyles:e.messageStyles,messageComponent:e.messageComponent,submitWidgetForm:(i,r,s)=>this.submitWidgetForm(i,r,s)}),this.consentState={...e.consent},this.analyticsQueue=new _({debug:e.debug,send:(i,r)=>this.api.sendEvents(i.map(s=>({...s,consent:this.consentState})),r)});}init(){return O()?this.booting??=this.boot():Promise.resolve()}async boot(){let e=this.generation;await this.identity.resolveDeviceId(),e===this.generation&&(this.analyticsAllowed()&&this.analyticsQueue.start(),this.options.autoTrack!==false&&(this.tracker=new F({prefix:this.options.prefix??"xenia",throttleMs:this.options.throttleMs??1e3,viewport:{threshold:this.options.viewport?.threshold??.5,rootMargin:this.options.viewport?.rootMargin,triggerOnce:this.options.viewport?.triggerOnce??true},fire:(t,i)=>this.track(t,{interactionType:i},{trigger:true}),fireSlot:(t,i)=>{this.track("customEvent",{customEventName:t==="impression"?"personalization_impression":"personalization_click",contentKey:i.contentKey,contentEntryId:i.contentEntryId??null,baseEntryId:i.baseEntryId??null},{trigger:false});}}),this.tracker.start()));}destroy(){this.tracker?.stop(),this.tracker=null,this.renderer.destroy(),this.analyticsQueue.stop(),this.booting=null,this.generation++;}identify(e,t){this.identity.identify(e),t?.customerId!==void 0&&this.identity.setCustomerId(t.customerId),t?.email!==void 0&&this.identity.setEmail(t.email),this.api.identify({xeniaVisitorId:e,userId:t?.customerId,email:t?.email}).then(i=>this.emit("identify",i)).catch(i=>this.emitError(i));}setJourneyId(e){this.identity.setJourneyId(e);}track(e,t,i={}){if(!O())return;let r=i.trigger===true;if(!r&&this.dntBlocked())return;let s=this.buildEvent(e,t,i);this.emit("event",{eventName:e,event:s}),r?this.analyticsQueue.sendImmediate(s).catch(o=>this.emitError(o)):(this.analyticsQueue.enqueue(s),this.analyticsAllowed()&&this.analyticsQueue.start());}buildEvent(e,t,i){let r=this.identity.collectContext(),s;try{s=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch{}return {eventName:e,eventId:i.eventId?Ee(i.eventId):k(),eventVersion:1,occurredAtMs:Date.now(),source:"xenia-js-sdk",identity:{sessionId:this.identity.getSessionId(),...i.identity,xeniaVisitorId:r.visitorId??this.identity.getDeviceId()??void 0},context:{pagePath:r.path,referrer:r.referrer,userAgent:navigator.userAgent,locale:navigator.language,timezone:s,journeyId:this.identity.getJourneyId()??void 0,utmSource:r.utmSource,utmMedium:r.utmMedium,utmCampaign:r.utmCampaign,utmContent:r.utmContent,...i.context},properties:this.withUtmId(t,r.utmId),trigger:i.trigger===true?true:void 0}}withUtmId(e,t){return !t||e&&(e.utm_id!==void 0||e.utmId!==void 0)?e:{...e,utm_id:t}}async resolve(e,t){return this.api.resolve(e,this.withVisitor(t))}async resolveBatch(e,t){return this.api.resolveBatch(e,this.withVisitor(t))}async personalizeContent(e,t){return ie(e,{...t,resolve:this.entryResolver(t)})}async personalizePage(e,t){return Te(e,{...t,resolve:this.entryResolver(t)})}entryResolver(e){let t={...this.withVisitor({data:e.data,locale:e.locale}),contentKey:e.contentKey};return async i=>(await this.api.resolveEntries(i,t)).decisions??[]}resolveVisitorId(){return this.identity.getVisitorId()??this.identity.getDeviceId()??void 0}withVisitor(e){let t=this.identity.collectContext(),i=this.resolveVisitorId(),r=E({path:t.path,query:t.query,deviceId:this.identity.getDeviceId()??void 0,visitorId:i,customerId:this.identity.getCustomerId()??void 0,email:this.identity.getEmail()??void 0,url:t.url,referrer:t.referrer,utmSource:t.utmSource,utmMedium:t.utmMedium,utmCampaign:t.utmCampaign,utmContent:t.utmContent,utmId:t.utmId});return i&&(r._xenia_vid=i),Object.keys(r).length===0?e:{...e,data:{...e?.data??{},...r}}}dntBlocked(){if(this.options.respectDnt===false)return false;try{let e=navigator,t=navigator.doNotTrack??window.doNotTrack;if(t==="1"||t==="yes"||e.globalPrivacyControl===!0)return !0}catch{}return false}analyticsAllowed(){return this.consentState.analytics===true}async request(e,t,i){let r=this.identity.collectContext(),s=Se({eventId:e,journeyId:this.identity.getJourneyId()??void 0,identity:{deviceId:this.identity.getDeviceId()??void 0,visitorId:this.resolveVisitorId()},context:r,props:t}),o=await this.api.webhook(e,s,i?.method??"POST");return this.responses.set(e,o),this.emit("response",{triggerId:e,response:o}),(i?.apply??this.options.autoApplyActions!==false)&&o.actions.length&&this.applyActions(o.actions),o}getResponse(e){return this.responses.get(e)}async submitWidgetForm(e,t,i){let r=this.identity.collectContext(),s=i?.idempotencyKey??k(),o=e.flowRef??e.bindingRef,a={visitorId:this.resolveVisitorId(),deviceId:this.identity.getDeviceId()??void 0,idempotencyKey:s,mode:e.mode,ref:o,url:r.url,referrer:r.referrer,path:r.path,query:r.query,utmSource:r.utmSource,utmMedium:r.utmMedium,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmId:r.utmId},d=e.flowRef?await this.api.webhook(e.flowRef,E({...a,...t}),"POST"):await this.api.submitWidget(e.bindingRef??"",E({...a,fields:t}));return this.emit("response",{triggerId:o,response:d}),(i?.apply??this.options.autoApplyActions!==false)&&d.actions.length&&this.applyActions(d.actions),d}swapContent(e,t){return U(e,t)}hideContent(e){return ue(e)}showContent(e){return pe(e)}applyActions(e){let t=this.renderer.apply(e);return this.emit("actions",{actions:e,applied:t}),t}async consent(e){let t=this.analyticsAllowed();if(this.consentState={...this.consentState,...e},O())try{document.cookie=xe(this.consentState,this.options.prefix);}catch{}this.analyticsAllowed()&&!t?(this.analyticsQueue.start(),this.analyticsQueue.flush()):!this.analyticsAllowed()&&t&&this.analyticsQueue.stop();let i=this.identity.getVisitorId()??this.identity.getDeviceId();if(i)try{await this.api.consent(i,e);}catch(r){this.emitError(r);}}on(e,t){let i=this.listeners.get(e)??new Set;return i.add(t),this.listeners.set(e,i),()=>i.delete(t)}emit(e,t){this.listeners.get(e)?.forEach(i=>{try{i(t);}catch{}});}emitError(e){let t=e instanceof Error?e:new Error(String(e));this.options.debug&&console.error("[xenia]",t),this.emit("error",t);}onCtaEvent(e,t){this.track(e,{ctaLabel:t.label,ctaUrl:t.url??null},{trigger:true});}};function Fe(n){return new me(n)}var C=null;function x(n){if(!C)throw console.warn(`[xenia] ${n}() called before init().`),new Error("Xenia not initialized");return C}var kn={init(n){C&&C.destroy(),C=Fe(n),C.init();},destroy(){C?.destroy(),C=null;},track(n,e,t){x("track").track(n,e,t);},identify(n){x("identify").identify(n);},consent(n){return x("consent").consent(n)},resolve(n,e){return x("resolve").resolve(n,e)},resolveBatch(n,e){return x("resolveBatch").resolveBatch(n,e)},setJourneyId(n){x("setJourneyId").setJourneyId(n);},request(n,e){return x("request").request(n,e)},getResponse(n){return x("getResponse").getResponse(n)},swapContent(n,e){return x("swapContent").swapContent(n,e)},hideContent(n){return x("hideContent").hideContent(n)},showContent(n){return x("showContent").showContent(n)}};exports.Xenia=kn;return exports;})({});
80
80
  Xenia=Xenia&&(Xenia.Xenia||Xenia.default)||Xenia;if(typeof window!=='undefined'){window.Xenia=Xenia;}
81
81
  //# sourceMappingURL=xenia-sdk.iife.js.map