@xenia-martech/sdk-js 1.2.0-dev.7 → 1.2.0-dev.9

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 (96) hide show
  1. package/README.md +70 -6
  2. package/dist/{actions-35V37IT0.d.cts → actions--1_9Z8ig.d.cts} +13 -2
  3. package/dist/{actions-35V37IT0.d.ts → actions--1_9Z8ig.d.ts} +13 -2
  4. package/dist/{api-0IycTYJR.d.cts → api-DbUxT38T.d.ts} +1 -1
  5. package/dist/{api-COXWLL5L.d.ts → api-DgzJ5s-k.d.cts} +1 -1
  6. package/dist/chunk-DPXINHQR.cjs +34 -0
  7. package/dist/chunk-DPXINHQR.cjs.map +1 -0
  8. package/dist/chunk-FSJMHXS6.js +432 -0
  9. package/dist/chunk-FSJMHXS6.js.map +1 -0
  10. package/dist/chunk-GXJLU3RE.cjs +448 -0
  11. package/dist/chunk-GXJLU3RE.cjs.map +1 -0
  12. package/dist/{chunk-2DR5AVPX.cjs → chunk-I5EHLRSR.cjs} +11 -10
  13. package/dist/chunk-I5EHLRSR.cjs.map +1 -0
  14. package/dist/{chunk-LW5AEJ6K.js → chunk-MEULT5X6.js} +4 -241
  15. package/dist/chunk-MEULT5X6.js.map +1 -0
  16. package/dist/{chunk-GWRDZIVA.js → chunk-NDRRSRTU.js} +4 -3
  17. package/dist/chunk-NDRRSRTU.js.map +1 -0
  18. package/dist/chunk-RC46KXDM.js +32 -0
  19. package/dist/chunk-RC46KXDM.js.map +1 -0
  20. package/dist/{chunk-RWE2OCQL.cjs → chunk-SU25SELD.cjs} +4 -244
  21. package/dist/chunk-SU25SELD.cjs.map +1 -0
  22. package/dist/{chunk-WHGK55JP.cjs → chunk-UUIKUU5W.cjs} +5 -5
  23. package/dist/{chunk-WHGK55JP.cjs.map → chunk-UUIKUU5W.cjs.map} +1 -1
  24. package/dist/{chunk-QEYONKWY.js → chunk-UVTFGQR6.js} +3 -3
  25. package/dist/{chunk-QEYONKWY.js.map → chunk-UVTFGQR6.js.map} +1 -1
  26. package/dist/{chunk-OMMIRSPK.js → chunk-V4EGU3PM.js} +48 -11
  27. package/dist/chunk-V4EGU3PM.js.map +1 -0
  28. package/dist/{chunk-YLMMTKQL.cjs → chunk-WMGCQPHY.cjs} +52 -13
  29. package/dist/chunk-WMGCQPHY.cjs.map +1 -0
  30. package/dist/client/index.cjs +26 -10
  31. package/dist/client/index.cjs.map +1 -1
  32. package/dist/client/index.d.cts +2 -2
  33. package/dist/client/index.d.ts +2 -2
  34. package/dist/client/index.js +26 -10
  35. package/dist/client/index.js.map +1 -1
  36. package/dist/client/react/index.cjs +73 -15
  37. package/dist/client/react/index.cjs.map +1 -1
  38. package/dist/client/react/index.d.cts +9 -3
  39. package/dist/client/react/index.d.ts +9 -3
  40. package/dist/client/react/index.js +73 -15
  41. package/dist/client/react/index.js.map +1 -1
  42. package/dist/cms/contentful.cjs +7 -24
  43. package/dist/cms/contentful.cjs.map +1 -1
  44. package/dist/cms/contentful.d.cts +5 -4
  45. package/dist/cms/contentful.d.ts +5 -4
  46. package/dist/cms/contentful.js +4 -23
  47. package/dist/cms/contentful.js.map +1 -1
  48. package/dist/cms/contentstack.cjs +120 -0
  49. package/dist/cms/contentstack.cjs.map +1 -0
  50. package/dist/cms/contentstack.d.cts +41 -0
  51. package/dist/cms/contentstack.d.ts +41 -0
  52. package/dist/cms/contentstack.js +117 -0
  53. package/dist/cms/contentstack.js.map +1 -0
  54. package/dist/{consent-DRCV0N0d.d.ts → consent-Dtiqzz2B.d.cts} +71 -11
  55. package/dist/{consent-BgAETCkL.d.cts → consent-byYiDMFr.d.ts} +71 -11
  56. package/dist/{cookie-names-DU3MtcNG.d.ts → cookie-names-B4hda2rX.d.cts} +1 -1
  57. package/dist/{cookie-names-DFItnSLK.d.cts → cookie-names-DioZXuV0.d.ts} +1 -1
  58. package/dist/edge/index.cjs +122 -29
  59. package/dist/edge/index.cjs.map +1 -1
  60. package/dist/edge/index.d.cts +42 -6
  61. package/dist/edge/index.d.ts +42 -6
  62. package/dist/edge/index.js +92 -9
  63. package/dist/edge/index.js.map +1 -1
  64. package/dist/index.cjs +31 -31
  65. package/dist/index.d.cts +4 -5
  66. package/dist/index.d.ts +4 -5
  67. package/dist/index.js +2 -2
  68. package/dist/next/index.cjs +39 -34
  69. package/dist/next/index.cjs.map +1 -1
  70. package/dist/next/index.d.cts +2 -3
  71. package/dist/next/index.d.ts +2 -3
  72. package/dist/next/index.js +13 -8
  73. package/dist/next/index.js.map +1 -1
  74. package/dist/{types-DgVHS4Qw.d.ts → personalize-content-D6xeBI7-.d.cts} +150 -1
  75. package/dist/{types-DgVHS4Qw.d.cts → personalize-content-D6xeBI7-.d.ts} +150 -1
  76. package/dist/server/index.cjs +30 -30
  77. package/dist/server/index.d.cts +5 -6
  78. package/dist/server/index.d.ts +5 -6
  79. package/dist/server/index.js +5 -5
  80. package/dist/xenia-sdk.iife.js +3 -3
  81. package/dist/xenia-sdk.iife.js.map +1 -1
  82. package/dist/{xenia-server-Cf24mL0c.d.ts → xenia-server-BcgeUHX4.d.ts} +2 -3
  83. package/dist/{xenia-server-D-bx14lw.d.cts → xenia-server-lv6LtJZP.d.cts} +2 -3
  84. package/package.json +14 -1
  85. package/dist/chunk-2DR5AVPX.cjs.map +0 -1
  86. package/dist/chunk-BQ5PJCZ7.js +0 -179
  87. package/dist/chunk-BQ5PJCZ7.js.map +0 -1
  88. package/dist/chunk-GWRDZIVA.js.map +0 -1
  89. package/dist/chunk-LW5AEJ6K.js.map +0 -1
  90. package/dist/chunk-N5M4PI7C.cjs +0 -192
  91. package/dist/chunk-N5M4PI7C.cjs.map +0 -1
  92. package/dist/chunk-OMMIRSPK.js.map +0 -1
  93. package/dist/chunk-RWE2OCQL.cjs.map +0 -1
  94. package/dist/chunk-YLMMTKQL.cjs.map +0 -1
  95. package/dist/personalize-content-Cwc2AomC.d.ts +0 -141
  96. package/dist/personalize-content-CxSdplMV.d.cts +0 -141
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-PKWANLT7.cjs');
4
- var chunk2DR5AVPX_cjs = require('../chunk-2DR5AVPX.cjs');
5
- var chunkRWE2OCQL_cjs = require('../chunk-RWE2OCQL.cjs');
6
- var chunkWHGK55JP_cjs = require('../chunk-WHGK55JP.cjs');
7
- var chunkN5M4PI7C_cjs = require('../chunk-N5M4PI7C.cjs');
4
+ var chunkI5EHLRSR_cjs = require('../chunk-I5EHLRSR.cjs');
5
+ var chunkSU25SELD_cjs = require('../chunk-SU25SELD.cjs');
6
+ var chunkUUIKUU5W_cjs = require('../chunk-UUIKUU5W.cjs');
7
+ var chunkGXJLU3RE_cjs = require('../chunk-GXJLU3RE.cjs');
8
8
 
9
9
  // src/server/token.ts
10
10
  async function refreshSdkToken(opts) {
11
- const http = new chunkN5M4PI7C_cjs.HttpClient({ baseUrl: opts.baseUrl, timeout: opts.timeout });
11
+ const http = new chunkGXJLU3RE_cjs.HttpClient({ baseUrl: opts.baseUrl, timeout: opts.timeout });
12
12
  const { data } = await http.request({
13
13
  method: "POST",
14
14
  path: "/api/personalization/token/refresh",
@@ -41,67 +41,67 @@ function createTokenRoute(config) {
41
41
 
42
42
  Object.defineProperty(exports, "XeniaServer", {
43
43
  enumerable: true,
44
- get: function () { return chunk2DR5AVPX_cjs.XeniaServer; }
44
+ get: function () { return chunkI5EHLRSR_cjs.XeniaServer; }
45
45
  });
46
46
  Object.defineProperty(exports, "createXeniaServer", {
47
47
  enumerable: true,
48
- get: function () { return chunk2DR5AVPX_cjs.createXeniaServer; }
48
+ get: function () { return chunkI5EHLRSR_cjs.createXeniaServer; }
49
49
  });
50
50
  Object.defineProperty(exports, "XeniaApi", {
51
51
  enumerable: true,
52
- get: function () { return chunkRWE2OCQL_cjs.XeniaApi; }
52
+ get: function () { return chunkSU25SELD_cjs.XeniaApi; }
53
53
  });
54
54
  Object.defineProperty(exports, "parseActions", {
55
55
  enumerable: true,
56
- get: function () { return chunkRWE2OCQL_cjs.parseActions; }
57
- });
58
- Object.defineProperty(exports, "pendingTargets", {
59
- enumerable: true,
60
- get: function () { return chunkRWE2OCQL_cjs.pendingTargets; }
61
- });
62
- Object.defineProperty(exports, "personalizeContent", {
63
- enumerable: true,
64
- get: function () { return chunkRWE2OCQL_cjs.personalizeContent; }
65
- });
66
- Object.defineProperty(exports, "personalizePage", {
67
- enumerable: true,
68
- get: function () { return chunkRWE2OCQL_cjs.personalizePage; }
56
+ get: function () { return chunkSU25SELD_cjs.parseActions; }
69
57
  });
70
58
  Object.defineProperty(exports, "getConsent", {
71
59
  enumerable: true,
72
- get: function () { return chunkWHGK55JP_cjs.getConsent; }
60
+ get: function () { return chunkUUIKUU5W_cjs.getConsent; }
73
61
  });
74
62
  Object.defineProperty(exports, "getVisitorId", {
75
63
  enumerable: true,
76
- get: function () { return chunkWHGK55JP_cjs.getVisitorId; }
64
+ get: function () { return chunkUUIKUU5W_cjs.getVisitorId; }
77
65
  });
78
66
  Object.defineProperty(exports, "parseCookies", {
79
67
  enumerable: true,
80
- get: function () { return chunkWHGK55JP_cjs.parseCookies; }
68
+ get: function () { return chunkUUIKUU5W_cjs.parseCookies; }
81
69
  });
82
70
  Object.defineProperty(exports, "CONSENT_COOKIE", {
83
71
  enumerable: true,
84
- get: function () { return chunkN5M4PI7C_cjs.CONSENT_COOKIE; }
72
+ get: function () { return chunkGXJLU3RE_cjs.CONSENT_COOKIE; }
85
73
  });
86
74
  Object.defineProperty(exports, "CircuitOpenError", {
87
75
  enumerable: true,
88
- get: function () { return chunkN5M4PI7C_cjs.CircuitOpenError; }
76
+ get: function () { return chunkGXJLU3RE_cjs.CircuitOpenError; }
89
77
  });
90
78
  Object.defineProperty(exports, "VISITOR_COOKIE", {
91
79
  enumerable: true,
92
- get: function () { return chunkN5M4PI7C_cjs.VISITOR_COOKIE; }
80
+ get: function () { return chunkGXJLU3RE_cjs.VISITOR_COOKIE; }
93
81
  });
94
82
  Object.defineProperty(exports, "consentCookie", {
95
83
  enumerable: true,
96
- get: function () { return chunkN5M4PI7C_cjs.consentCookie; }
84
+ get: function () { return chunkGXJLU3RE_cjs.consentCookie; }
97
85
  });
98
86
  Object.defineProperty(exports, "consentCookieName", {
99
87
  enumerable: true,
100
- get: function () { return chunkN5M4PI7C_cjs.consentCookieName; }
88
+ get: function () { return chunkGXJLU3RE_cjs.consentCookieName; }
89
+ });
90
+ Object.defineProperty(exports, "pendingTargets", {
91
+ enumerable: true,
92
+ get: function () { return chunkGXJLU3RE_cjs.pendingTargets; }
93
+ });
94
+ Object.defineProperty(exports, "personalizeContent", {
95
+ enumerable: true,
96
+ get: function () { return chunkGXJLU3RE_cjs.personalizeContent; }
97
+ });
98
+ Object.defineProperty(exports, "personalizePage", {
99
+ enumerable: true,
100
+ get: function () { return chunkGXJLU3RE_cjs.personalizePage; }
101
101
  });
102
102
  Object.defineProperty(exports, "visitorCookieName", {
103
103
  enumerable: true,
104
- get: function () { return chunkN5M4PI7C_cjs.visitorCookieName; }
104
+ get: function () { return chunkGXJLU3RE_cjs.visitorCookieName; }
105
105
  });
106
106
  exports.createTokenRoute = createTokenRoute;
107
107
  exports.refreshSdkToken = refreshSdkToken;
@@ -1,9 +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-D-bx14lw.cjs';
2
- import { d as ConsentState } from '../types-DgVHS4Qw.cjs';
3
- export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, C as CircuitBreakerConfig, E as EventContext, i as EventIdentity, I as IdentifyRequest, j as IdentifyResponse, J as JsonValue, P as PersonalizationSwap, R as ResolveBatchItem, n as ResolveBatchResult, p as ResolveOptions, q as ResolveResult, W as WebhookResponse, x as XeniaConfig, y as XeniaEvent } from '../types-DgVHS4Qw.cjs';
4
- export { X as XeniaApi } from '../api-0IycTYJR.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-DFItnSLK.cjs';
6
- export { A as AppliedSwap, C as CmsAdapter, P as PagePersonalizeOptions, a as PageRef, c as PersonalizeContentResult, X as XeniaMarker, p as pendingTargets, d as personalizeContent, e as personalizePage } from '../personalize-content-CxSdplMV.cjs';
1
+ export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-lv6LtJZP.cjs';
2
+ import { h as ConsentState } from '../personalize-content-D6xeBI7-.cjs';
3
+ export { A as AnalyticsContext, c as AnalyticsEventName, d as AnalyticsIdentity, e as AnalyticsIngestResponse, f as AppliedSwap, g as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, n as EventIdentity, I as IdentifyRequest, o as IdentifyResponse, J as JsonValue, s as PagePersonalizeOptions, b as PageRef, t as PersonalizationSwap, a 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-D6xeBI7-.cjs';
4
+ export { X as XeniaApi } from '../api-DgzJ5s-k.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-B4hda2rX.cjs';
7
6
 
8
7
  interface RefreshTokenOptions {
9
8
  /**
@@ -1,9 +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-Cf24mL0c.js';
2
- import { d as ConsentState } from '../types-DgVHS4Qw.js';
3
- export { A as AnalyticsContext, a as AnalyticsEventName, b as AnalyticsIdentity, c as AnalyticsIngestResponse, C as CircuitBreakerConfig, E as EventContext, i as EventIdentity, I as IdentifyRequest, j as IdentifyResponse, J as JsonValue, P as PersonalizationSwap, R as ResolveBatchItem, n as ResolveBatchResult, p as ResolveOptions, q as ResolveResult, W as WebhookResponse, x as XeniaConfig, y as XeniaEvent } from '../types-DgVHS4Qw.js';
4
- export { X as XeniaApi } from '../api-COXWLL5L.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-DU3MtcNG.js';
6
- export { A as AppliedSwap, C as CmsAdapter, P as PagePersonalizeOptions, a as PageRef, c as PersonalizeContentResult, X as XeniaMarker, p as pendingTargets, d as personalizeContent, e as personalizePage } from '../personalize-content-Cwc2AomC.js';
1
+ export { S as ServerResolveOptions, a as ServerTrackOptions, b as ServerWebhookOptions, W as WithFallback, X as XeniaServer, c as createXeniaServer } from '../xenia-server-BcgeUHX4.js';
2
+ import { h as ConsentState } from '../personalize-content-D6xeBI7-.js';
3
+ export { A as AnalyticsContext, c as AnalyticsEventName, d as AnalyticsIdentity, e as AnalyticsIngestResponse, f as AppliedSwap, g as CircuitBreakerConfig, C as CmsAdapter, E as EventContext, n as EventIdentity, I as IdentifyRequest, o as IdentifyResponse, J as JsonValue, s as PagePersonalizeOptions, b as PageRef, t as PersonalizationSwap, a 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-D6xeBI7-.js';
4
+ export { X as XeniaApi } from '../api-DbUxT38T.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-DioZXuV0.js';
7
6
 
8
7
  interface RefreshTokenOptions {
9
8
  /**
@@ -1,9 +1,9 @@
1
1
  import '../chunk-OUZU4Z5B.js';
2
- export { XeniaServer, createXeniaServer } from '../chunk-GWRDZIVA.js';
3
- export { XeniaApi, parseActions, pendingTargets, personalizeContent, personalizePage } from '../chunk-LW5AEJ6K.js';
4
- export { getConsent, getVisitorId, parseCookies } from '../chunk-QEYONKWY.js';
5
- import { HttpClient } from '../chunk-BQ5PJCZ7.js';
6
- export { CONSENT_COOKIE, CircuitOpenError, VISITOR_COOKIE, consentCookie, consentCookieName, visitorCookieName } from '../chunk-BQ5PJCZ7.js';
2
+ export { XeniaServer, createXeniaServer } from '../chunk-NDRRSRTU.js';
3
+ export { XeniaApi, parseActions } from '../chunk-MEULT5X6.js';
4
+ export { getConsent, getVisitorId, parseCookies } from '../chunk-UVTFGQR6.js';
5
+ import { HttpClient } from '../chunk-FSJMHXS6.js';
6
+ export { CONSENT_COOKIE, CircuitOpenError, VISITOR_COOKIE, consentCookie, consentCookieName, pendingTargets, personalizeContent, personalizePage, visitorCookieName } from '../chunk-FSJMHXS6.js';
7
7
 
8
8
  // src/server/token.ts
9
9
  async function refreshSdkToken(opts) {
@@ -1,5 +1,5 @@
1
- var Xenia=(function(exports){'use strict';var lt=new Set(["banner","popup","modal","inline"]),ct=new Set(["top-left","top-right","bottom-left","bottom-right","top","bottom"]),dt=new Set(["standard","spin-wheel"]),ut=new Set(["swap","hide","show","setContent","redirect",...lt]);function A(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function b(n){return typeof n=="string"?n:void 0}function ke(n){return typeof n=="number"?n:void 0}function pt(n){if(!A(n))return null;let e=b(n.type);if(!e||!ut.has(e))return null;if(e==="redirect"){let i=b(n.url);return i?{type:e,url:i}:null}if(e==="hide"||e==="show"){let i=b(n.target);return i?{type:e,target:i}:null}if(e==="swap"||e==="setContent"){let i=b(n.target);return i?{type:e,target:i,html:b(n.html),text:b(n.text)}:null}let t=A(n.cta)?{label:b(n.cta.label)??"",url:b(n.cta.url),event:b(n.cta.event)}:void 0;return {type:e,target:b(n.target),title:b(n.title),message:b(n.message),imageUrl:b(n.imageUrl),html:b(n.html),cta:t&&(t.label||t.url)?t:void 0,dismissAfterMs:ke(n.dismissAfterMs),position:mt(n.position),widgetType:ft(n.widgetType),segments:ht(n.segments),formSubmit:gt(n.formSubmit),style:yt(n.style),spinnerHtml:b(n.spinnerHtml),winHtml:b(n.winHtml),lossHtml:b(n.lossHtml)}}function mt(n){let e=b(n);return e&&ct.has(e)?e:void 0}function ft(n){let e=b(n);return e&&dt.has(e)?e:void 0}function ht(n){if(!Array.isArray(n))return;let e=[];for(let t of n){if(!A(t))continue;let i=b(t.id),r=b(t.label);!i||!r||e.push({id:i,label:r,colorHex:b(t.colorHex),isLoss:t.isLoss===true});}return e.length?e:void 0}function gt(n){if(!A(n))return;let e=b(n.mode);if(e)return {requiresResolve:n.requiresResolve===true,mode:e,flowRef:b(n.flowRef),bindingRef:b(n.bindingRef),successDisplayMs:ke(n.successDisplayMs)}}function yt(n){if(!A(n))return;let e={hideCloseButton:n.hideCloseButton===true,hideOverlay:n.hideOverlay===true};return e.hideCloseButton||e.hideOverlay?e:void 0}function ee(n){let e;if(Array.isArray(n)?e=n:A(n)&&Array.isArray(n.xeniaActions)&&(e=n.xeniaActions),!Array.isArray(e))return [];let t=[];for(let i of e){let r=pt(i);r&&t.push(r);}return t}var vt="https://engine.xeniamartech.com/xenia";function V(){return typeof window<"u"&&typeof document<"u"}function Ee(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 Ce(n){return new Promise(e=>setTimeout(e,n))}var T=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},te=class extends Error{constructor(t){super(`Circuit open for ${t}: failing fast until the cooldown passes`);this.endpoint=t;this.name="CircuitOpenError";}endpoint},_=new Map,D=class{baseUrl;defaultHeaders;timeout;retry;debug;breaker;constructor(e){this.baseUrl=(e.baseUrl??vt).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=Ee(this.baseUrl+e.path,e.query),i=_.get(t)??{failures:0,openedAt:0};if(i.openedAt){if(Date.now()-i.openedAt<this.breaker.cooldownMs)throw new te(t);i.openedAt=0,i.failures=this.breaker.failureThreshold-1;}try{let r=await this.send(e);return _.delete(t),r}catch(r){throw r instanceof T&&!this.isRetryableStatus(r.status)?(_.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`)),_.set(t,i),r)}}async send(e){let t=Ee(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,l=e.noRetry?1:(e.retry?.attempts??this.retry.attempts)+1,a=e.retry?.baseDelayMs??this.retry.baseDelayMs,c;for(let d=0;d<l;d++)try{let m=await this.fetchWithTimeout(t,{method:i,headers:r,body:s,...e.keepalive?{keepalive:!0}:{}},o),y=await this.parseBody(m);if(m.ok)return {response:m,data:y};if(this.isRetryableStatus(m.status)&&d<l-1){let u=this.retryAfterMs(m,a,d);this.log(`retrying ${e.path} after ${u}ms (status ${m.status})`),await Ce(u);continue}throw new T(m.status,y)}catch(m){if(c=m,m instanceof T)throw m;if(d<l-1){let y=a*2**d;this.log(`retrying ${e.path} after ${y}ms (network error)`),await Ce(y);continue}}throw c instanceof Error?c: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 bt(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=bt(t),r=i?i-3e4:e+5*6e4;return this.cached={token:t,expiresAt:r},t}).finally(()=>{this.inflight=null;}),this.inflight}};function Re(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function xt(n){return n!==void 0&&Re(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 q=class{http;tenantId;environmentKey;tokenProvider;constructor(e){this.tenantId=e.tenantId,this.environmentKey=e.environmentKey,this.tokenProvider=new $(e),this.http=new D({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:ee(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=Re(r)?r:{};return {status:i.status,body:r,actions:ee(r),prize:xt(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 M="xenia";function ne(n=M){return `${n||M}_vid`}function Te(n=M){return `${n||M}_consent`}function Ie(n,e,t=365){return `${Te(e)}=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=${Math.floor(t*86400)}; SameSite=Lax`}var wt=new Set(["eventId","eventType","journeyId","deviceId","visitorId","customerId","email","utmSource","utmMedium","utmCampaign","utmContent","utmId","url","referrer","path","query"]);function Ae(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}function Me(n){let e={},t={};if(n.props)for(let[r,s]of Object.entries(n.props))s!==void 0&&(wt.has(r)?t[r]=s:e[r]=s);return {...e,...t,...Ae(n.context??{}),...Ae(n.identity??{}),eventId:n.eventId,...n.eventType?{eventType:n.eventType}:{},...n.journeyId?{journeyId:n.journeyId}:{}}}var H="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 C(n=Date.now()){let e="",t=n;for(let s=9;s>=0;s--)e=H[t%32]+e,t=Math.floor(t/32);let i=St(16),r="";for(let s=0;s<16;s++)r+=H[i[s]%32];return e+r}var ie=26;function Pe(n){if(n.length<=ie)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+=H[r%32];}let t="";for(let i=0;i<ie;i++){let r=i+1;for(let s=i;s<e.length;s+=ie)r=r*31+H.indexOf(e[s])>>>0;t+=H[r%32];}return t}var kt=n=>n&&typeof n=="object"&&typeof structuredClone=="function"?structuredClone(n):n;async function se(n,e){let t=Tt(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{}},l=n;try{!e.inPlace&&typeof structuredClone=="function"&&(l=structuredClone(l)),l=t.prepare?t.prepare(l):l;}catch(u){return {content:n,applied:s,complete:false,error:u}}let a={root:l},c=new WeakSet,d=new Map,m=[{parent:a,key:"root",value:a.root}],y=(u,h,f)=>{c.add(u.entry),t.clearMarker?.(u.entry);let p=h.items.map(kt);if(!h.decision||p.length===0)return Ct(u,t);for(let g of p)g&&typeof g=="object"&&c.add(g);let v=h.decision.op??u.marker.op??"replace",x=He(u,v,h.decision.field??u.marker.field,p,t);return o({target:u.id,kind:"runtime",op:v,entryIds:p.map(g=>t.entryId(g)).filter(g=>!!g),contentKey:h.decision.contentKey,bucket:h.decision.bucket,round:f}),x};for(let u=0;;u++){let h=Et(m,t,c,u,o,g=>{let w=d.get(g.id);return w?y(g,w,u):void 0});if(h.size===0)return {content:a.root,applied:s,complete:true};if(!e.resolve||u>=i)return {content:a.root,applied:s,complete:!e.resolve};Oe(e,{content:a.root,round:u,pending:[...h.keys()]});let f,p,v;try{f=await Ve(e.resolve([...h.keys()]),r),{entriesById:p,queried:v}=await Ve(Rt(f,t,e.locale),r);}catch(g){return {content:a.root,applied:s,complete:false,error:g===re?void 0:g}}let x=new Map(f.map(g=>[g.target,g]));m=[];for(let g of h.values()){let w=x.get(g.id),I=w?w.ids?w.ids.map(L=>p.get(L)).filter(L=>L!==void 0):v.get(w)??[]:[],k={decision:w,items:I};d.set(g.id,k),m.push(...y(g,k,u));}Oe(e,{content:a.root,round:u,pending:[]});}}function Oe(n,e){try{n.onProgress?.(e);}catch{}}function Et(n,e,t,i,r,s){let o=new Map,l=new WeakSet,a=new WeakSet,c=[...n];for(;c.length>0;){let d=c.shift(),m=d.value;if(!m||typeof m!="object"||a.has(m))continue;let y=t.has(m)?void 0:e.entryId(m),u=y?e.marker(m):null;if(y&&u?.kind==="runtime"){let h=s({id:y,marker:u,entry:m,slots:[d]});if(h){c.push(...h);continue}let f=o.get(y);if(f)f.slots.push(d);else if(o.set(y,{id:y,marker:u,entry:m,slots:[d]}),u.op==="items"&&u.field){let p=e.getField(m,u.field);p&&typeof p=="object"&&a.add(p),c.push(...Le(m));}continue}if(y&&u?.kind==="static"){let h=e.staticVariants(m).filter(f=>f&&typeof f=="object");if(t.add(m),e.clearMarker?.(m),h.length>0){for(let v of h)t.add(v);let f=u.op??"replace",p={entry:m,slots:[d]};c.push(...He(p,f,u.field,h,e)),r({target:y,kind:"static",op:f,entryIds:h.map(v=>e.entryId(v)).filter(v=>!!v),round:i});continue}}l.has(m)||(l.add(m),c.push(...Le(m)));}return o}function He(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 l=e==="expand"&&Array.isArray(o.parent)?i:[i[0]];if(Array.isArray(o.parent)){let a=o.parent.indexOf(n.entry);if(a<0)continue;o.parent.splice(a,1,...l);}else o.parent[o.key]=l[0];for(let a of l)s.push({parent:o.parent,key:o.key,value:a});}return s}function Ct(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 Le(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 Rt(n,e,t){let i=[...new Set(n.flatMap(c=>c.ids??[]))],r=n.filter(c=>!c.ids&&c.query),[s,...o]=await Promise.all([i.length>0?e.fetchEntries(i,t):Promise.resolve([]),...r.map(c=>e.queryEntries(c.query,t).catch(()=>[]))]),l=new Map;for(let c of s){let d=e.entryId(c);d&&l.set(d,c);}let a=new Map;return r.forEach((c,d)=>a.set(c,o[d])),{entriesById:l,queried:a}}var re=Symbol("timeout");function Ve(n,e){let t=e-Date.now();if(t<=0)return Promise.reject(re);let i;return Promise.race([n,new Promise((r,s)=>{i=setTimeout(()=>s(re),t);})]).finally(()=>clearTimeout(i))}function Tt(n,e){return {...n,marker(t){let i=n.marker(t);return i&&e&&i.keys?.includes(e)?i:null}}}async function We(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}:se(t,e)}var z=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 T&&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 It=new Set(["click","view-port","page-load"]);function Ne(n){let e=n.indexOf("&");if(e===-1)return null;let t=n.slice(0,e),i=n.slice(e+1);return !t||!It.has(i)?null:{eventId:t,interactionType:i}}function _e(n){let e=c=>n.getAttribute(`data-xenia-${c}`)??void 0,t=e("content-key"),i=e("content-entry-id");if(!t&&!i)return null;let r=e("personalized"),s={},o=e("slot");o&&(s.slot=o),t&&(s.contentKey=t),i&&(s.contentEntryId=i);let l=e("base-entry-id");l&&(s.baseEntryId=l),r!=null&&(s.personalized=r==="true");let a=e("bucket");return a&&(s.bucket=a),s}var X=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?Ne(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=_e(s),l=i.closest("a, button"),a=l&&s.contains(l)?l:null;if(!a&&this.opts.slotClicks==="controls")return;let c=a?(a.textContent??"").trim().slice(0,60):"";o&&!this.throttled(s)&&this.opts.fireSlot("click",c?{...o,label:c}:o);}}},document.addEventListener("click",this.clickHandler);}observeSlot(e){if(!this.opts.fireSlot||this.slotObservers.has(e))return;let t=_e(e);if(!t)return;let i=this.opts.fireSlot,{threshold:r,rootMargin:s}=this.opts.viewport,o=new IntersectionObserver(l=>{for(let a of l)!(a.isIntersecting&&(a.intersectionRatio>=r||a.intersectionRect.height>=window.innerHeight/2))||this.slotImpressed.has(e)||(this.slotImpressed.add(e),i("impression",t),o.disconnect(),this.slotObservers.delete(e));},{threshold:[...new Set([.1,.25,r])].sort(),rootMargin:s});o.observe(At(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(l=>{for(let a of l)a.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=Ne(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 At(n){return typeof getComputedStyle!="function"?n:getComputedStyle(n).display==="contents"?n.firstElementChild??n:n}var oe=8,De=1800;function $e(n=M){return `${n}_trail`}var Mt=n=>{try{return decodeURIComponent(n)}catch{return n}};function ae(n){if(!n)return [];try{let e=JSON.parse(Mt(n));return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&typeof t[0]=="string"&&typeof t[1]=="number").slice(0,oe).map(([t,i,r])=>typeof r=="number"&&r>=0&&r<=86400?{path:t,at:i,seconds:r}:{path:t,at:i}):[]}catch{return []}}function qe(n,e,t=Date.now()){if(n[0]?.path===e)return n;let i=n.find(r=>r.path===e);return [{path:e,at:i?.at??t},...n.filter(r=>r.path!==e)].slice(0,oe)}function le(n){return JSON.stringify(n.slice(0,oe).map(e=>e.seconds===void 0?[e.path,e.at]:[e.path,e.at,e.seconds]))}var j=new Set,B=null;function ce(n){if(j.add(n),!B){let{pushState:e,replaceState:t}=history,i=()=>j.forEach(o=>{try{o();}catch{}}),r=function(...o){e.apply(this,o),i();},s=function(...o){t.apply(this,o),i();};history.pushState=r,history.replaceState=s,window.addEventListener("popstate",i),B=()=>history.pushState!==r||history.replaceState!==s?false:(history.pushState=e,history.replaceState=t,window.removeEventListener("popstate",i),true);}return ()=>{j.delete(n),!j.size&&B?.()&&(B=null);}}var ze=n=>document.querySelector(`meta[name="${n}"]`)?.content||void 0;function Je(n,e){let t=location.pathname,i=null,r,s={path:t,since:o(),sent:false};function o(){return document.visibilityState==="visible"?Date.now():null}function l(){clearTimeout(r);let y=Date.now(),u=()=>{if(!(document.title!==""&&document.title!==i)&&Date.now()-y<3e3){r=setTimeout(u,50);return}let f=new URLSearchParams(location.search),p=(f.get("utm_term")??f.get("q")??"").slice(0,120),v=ze("xenia-category");i=document.title,n.track("pageView",{title:(ze("xenia-title")??document.title).slice(0,160),...p?{searchTerm:p}:{},...v?{category:v}:{}});};r=setTimeout(u,0);}function a(){s.sent||s.since===null||Date.now()-s.since<250||(s.sent=true,n.track("page_leave",{path:s.path,durationMs:Date.now()-s.since}));}let c=()=>{location.pathname!==t&&(e.pageLeave&&a(),t=location.pathname,s={path:t,since:o(),sent:false},e.pageViews&&l());},d=()=>{document.visibilityState==="hidden"?a():s.since===null&&(s.since=Date.now());},m=ce(c);return e.pageLeave&&document.addEventListener("visibilitychange",d),e.pageViews&&l(),()=>{clearTimeout(r),m(),document.removeEventListener("visibilitychange",d);}}var Fe=(n,e)=>typeof n=="object"&&n.root||e;function de(n){return document.cookie.match(new RegExp(`(?:^|;\\s*)${n}=([^;]*)`))?.[1]}function ue(n,e){try{document.cookie=`${n}=${encodeURIComponent(e)}; path=/; max-age=${De}; samesite=lax`;}catch{}}function Xe(n){if(!(!n||n.origin!==location.origin))return n.pathname.split("/").filter(Boolean)[0]}function Pt(n,e){let t=n;for(let i=0;t&&i<5&&t!==e;i++,t=t.parentElement){let r=[...t.querySelectorAll("img")].filter(s=>s.alt.trim());if(r.length)return new Set(r.map(s=>s.alt.trim())).size===1?r[0]:null}return null}function je(n,e){let t=$e(e.prefix),i=`${e.prefix}_clicks`,r=()=>document.visibilityState==="visible"?Date.now():null,s={path:location.pathname,since:r(),stamped:false},o=()=>{if(s.stamped||!e.trail||!e.analyticsAllowed()||s.since===null)return;s.stamped=true;let f=Math.round((Date.now()-s.since)/100)/10,p=ae(de(t)),v=p.findIndex(x=>x.path===s.path);v<0||(p[v]={...p[v],seconds:f},ue(t,le(p)));},l=()=>{if(location.pathname===s.path||(o(),s={path:location.pathname,since:r(),stamped:false},!e.trail||!e.analyticsAllowed()))return;let f=ae(de(t)),p=qe(f,s.path);p!==f&&ue(t,le(p));},a=()=>{document.visibilityState==="visible"&&s.since===null&&(s.since=Date.now());},c=f=>{let p=f.target?.closest?.("a[href]");p&&p.origin===location.origin&&p.pathname!==location.pathname&&o();},d=()=>{e.analyticsAllowed()&&ue(i,String((Number(de(i))||0)+1));},m=Fe(e.navClicks,"header"),y=Fe(e.contentClicks,"main"),u=f=>{let p=f.target;if(!p?.closest)return;let v=e.navClicks?p.closest(`${m} a[href]`):null;if(v){let k=Xe(v);if(!k)return;n.track("nav_click",{category:k,label:(v.textContent??"").trim().slice(0,60)}),d();return}let x=e.contentClicks?p.closest(y):null;if(!x)return;let w=((p.closest("img")??Pt(p,x))?.alt??"").trim().slice(0,160);if(!w)return;let I=Xe(p.closest("a[href]"));n.track("content_click",I?{label:w,category:I}:{label:w}),d();},h=ce(l);return window.addEventListener("click",c,{capture:true}),document.addEventListener("visibilitychange",a),(e.contentClicks||e.navClicks)&&document.addEventListener("click",u,{capture:true}),()=>{h(),window.removeEventListener("click",c,{capture:true}),document.removeEventListener("visibilitychange",a),document.removeEventListener("click",u,{capture:true});}}function Be(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();if(r)try{e[r]=decodeURIComponent(s);}catch{e[r]=s;}}return e}var Ot=1800*1e3,U=class{prefix;cookie;deviceId=null;journeyId=null;sessionId=null;constructor(e="xenia",t=true){this.prefix=e,this.cookie=Lt(t);}key(e){return `${this.prefix}_${e}`}cookieName(){return ne(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 Be(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),r=this.cookie?.authoritative?this.readVisitorCookie():null,s=localStorage.getItem(this.key("visitor_id"))??i;if(i&&r&&r!==s)return this.deviceId=r,localStorage.setItem(e,r),localStorage.getItem(this.key("visitor_id"))&&localStorage.setItem(this.key("visitor_id"),r),r;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)),l=r&&Number.isFinite(s)&&i-s<Ot?r:C(i);return sessionStorage.setItem(e,l),sessionStorage.setItem(t,String(i)),this.sessionId=l,l}catch{return this.sessionId||(this.sessionId=C(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 l=this.getVisitorId();return l&&(e.visitorId=l),e}};function Lt(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,authoritative:e.authoritative??false}}function K(n){let e={};return n.querySelectorAll("[data-xenia-field]").forEach(t=>{let i=t.getAttribute("data-xenia-field");i&&(e[i]=Vt(t));}),e}function Vt(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 Ue(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 pe(n,e){let t=n.querySelector("[data-xenia-error]");t&&(t.textContent=e);}var Ke="xenia-form-submit-style";function Ht(n){if(n.querySelector(`#${Ke}`))return;let e=document.createElement("style");e.id=Ke,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 me(n,e){n&&(e?n.setAttribute("data-xenia-submitting",""):n.removeAttribute("data-xenia-submitting"));}function Wt(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 Nt=900;function _t(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 Qe(n,e,t){let i=n.querySelector("form"),r=false;Ht(n);let s=(o,l)=>{if(r)return;if(!e.formSubmit){pe(n,"This form isn't connected yet.");return}r=true,pe(n,""),Ue(o,true),me(o,true);let a=Date.now(),c=e.formSubmit.successDisplayMs??Nt;t.submitWidgetForm(l).then(()=>{me(o,false),_t(n,i);let d=Math.max(0,c-(Date.now()-a));window.setTimeout(()=>Wt(n,t.dismiss),d);}).catch(()=>{me(o,false),Ue(o,false),pe(n,"Something went wrong. Please try again.");}).finally(()=>{r=false;});};i&&i.addEventListener("submit",o=>{o.preventDefault();let l={};new FormData(i).forEach((c,d)=>{typeof c=="string"&&(l[d]=c);});let a=o.submitter??i.querySelector('[type="submit"], button:not([type])');s(a,{...K(n),...l});}),n.querySelectorAll("[data-xenia-submit]").forEach(o=>{i?.contains(o)||o.addEventListener("click",()=>s(o,K(n)));});}function fe(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ge(n){return fe(n).replace(/"/g,"&quot;")}function Q(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 P=260,W=P/2,O=P/2,Ye=["#7c3aed","#2563eb","#059669","#d97706","#dc2626","#0891b2"],Dt="transform 3.2s cubic-bezier(0.15, 0.85, 0.25, 1)",$t='<div class="xenia-wheel-pointer" aria-hidden="true"></div>',ge=320,Ze=`opacity ${ge}ms ease, transform ${ge}ms ease`,qt=900,he=(n,e)=>`perspective(${qt}px) translateZ(${e}px) scale(${n})`;function ye(n,e){let t=n*Math.PI/180;return {x:O+e*Math.sin(t),y:O-e*Math.cos(t)}}function zt(n,e){let t=ye(n,W),i=ye(e,W),r=e-n>180?1:0;return `M ${O},${O} L ${t.x},${t.y} A ${W},${W} 0 ${r} 1 ${i.x},${i.y} Z`}function Jt(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 tt(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=he(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&r.offsetHeight;}),nt(()=>{t.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=Ze,r.style.opacity="0",r.style.transform=he(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=Ze,r.style.opacity="1",r.style.transform=he(1,0));});}),n&&setTimeout(()=>{n.hidden=true;},ge);}function nt(n){typeof requestAnimationFrame=="function"?requestAnimationFrame(n):setTimeout(n,0);}function Ft(n){let t=360/(n.length||1),i=n.map((r,s)=>{let o=s*t,l=o+t,a=r.colorHex||Ye[s%Ye.length],c=o+t/2,d=ye(c,W*.62);return `<path d="${zt(o,l)}" fill="${Ge(a)}" stroke="#fff" stroke-width="1"></path><text x="${d.x}" y="${d.y}" fill="#fff" font-size="12" text-anchor="middle" transform="rotate(${c} ${d.x} ${d.y})">${fe(r.label)}</text>`}).join("");return `<svg class="xenia-wheel-svg" viewBox="0 0 ${P} ${P}" width="${P}" height="${P}"><g class="xenia-wheel-dial">${i}</g><circle class="xenia-wheel-hub" cx="${O}" cy="${O}" r="6"></circle></svg>`}var it={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){Q(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]"),l=n.querySelector("[data-xenia-wheel-loss]"),a=n.querySelector("[data-xenia-error]"),c=n.querySelector("[data-xenia-wheel-slot]");c&&c.insertAdjacentHTML("afterbegin",Ft(i)+$t);let d=n.querySelector(".xenia-wheel-dial");if(!s||!e.formSubmit)return;n.querySelectorAll("[data-xenia-wheel-cta]").forEach(h=>{h.addEventListener("click",()=>t.fireCta());});let m=(h,f,p)=>{n.querySelectorAll("[data-xenia-wheel-prize]").forEach(g=>{g.textContent=h;});let v=f?l:o,x=f?o:l;x&&(x.hidden=true),tt(r,v),p||(u=true,n.querySelectorAll("[data-xenia-spin-again]").forEach(g=>{g.hidden=true;}));},y=false,u=false;n.querySelectorAll("[data-xenia-spin-again]").forEach(h=>{h.addEventListener("click",()=>{if(u)return;let f=o&&!o.hidden?o:l&&!l.hidden?l:null;f&&(y=false,s.disabled=false,a&&(a.textContent=""),tt(f,r));});}),s.addEventListener("click",()=>{if(y)return;y=true,s.disabled=true,a&&(a.textContent="");let h=K(n);t.submitWidgetForm(h).then(f=>{let p=i.findIndex(at=>at.id===f.prize?.segmentId),v=f.prize?.label??i[p]?.label??"",x=p>=0&&!!i[p]?.isLoss,g=f.alreadyPlayed!==true;if(p<0||!d){m(v,x,g);return}let w=3+Math.floor(Math.random()*3),I=Jt(p,i.length||1,w),k=/rotate\(([-\d.]+)deg\)/.exec(d.style.transform),L=k?parseFloat(k[1]):0;d.style.transition="none",d.style.transform=`rotate(${L%360}deg)`,d.getBoundingClientRect(),d.style.transition=Dt;let Se=()=>{d.removeEventListener("transitionend",Se),m(v,x,g);};d.addEventListener("transitionend",Se),nt(()=>{d.style.transform=`rotate(${I}deg)`;});}).catch(()=>{y=false,s.disabled=false,a&&(a.textContent="Something went wrong. Please try again.");});});}};var ve={"spin-wheel":it};function Z(n,e=document){if(!n)return null;let t=e.querySelector(`[data-xenia-slot="${Xt(n)}"]`);if(t)return t;try{return e.querySelector(n)}catch{return null}}function Xt(n){let e=window;return e.CSS?.escape?e.CSS.escape(n):n.replace(/["\\]/g,"\\$&")}function G(n,e){let t=Z(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 be(n){let e=Z(n);return !e||!(e instanceof HTMLElement)?false:(e.dataset.xeniaHidden="1",e.style.setProperty("display","none","important"),true)}function xe(n){let e=Z(n);return !e||!(e instanceof HTMLElement)?false:(delete e.dataset.xeniaHidden,e.style.removeProperty("display"),true)}var jt=new Set(["banner","popup","modal","inline"]);function Bt(n){return jt.has(n)}var Y=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 G(e.target,{html:e.html,text:e.text});case "setContent":return G(e.target,{html:e.html,text:e.text});case "hide":return be(e.target);case "show":return xe(e.target);case "redirect":try{return window.location.assign(e.url),!0}catch{return false}default:return Bt(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?`${st}
2
- ${this.messageStyles}`:st,e}renderMessage(e){let t=e.html===void 0&&!!this.messageComponent;if(e.type==="inline"){if(!e.target)return false;let c=Z(e.target);return c?(this.unmount(c),t?(c.innerHTML="",this.mountComponent(c,e,"inline",()=>this.unmount(c))):(c.innerHTML=this.cardHtml(e,"inline"),this.wireCard(c,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":"",l=e.style?.hideOverlay?" xenia-no-overlay":"";r.className=`xenia-msg xenia-${e.type}${s?` ${s}`:""}${o}${l}`,i.appendChild(r);let a=()=>{this.unmount(r),r.remove();};if(t?this.mountComponent(r,e,e.type,a):(r.innerHTML=this.cardHtml(e,e.type),this.wireCard(r,e,a)),e.dismissAfterMs&&e.dismissAfterMs>0){let c=setTimeout(a,e.dismissAfterMs),d=()=>clearTimeout(c);r.addEventListener("click",d,{once:true}),r.addEventListener("focusin",d,{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?ve[e.widgetType]:void 0;if(i)return i.html(e,t);if(e.html!==void 0)return Ut(e.html,t);if(this.messageTemplate){let c={action:e,variant:t,escapeHtml:N,escapeAttr:rt};return this.messageTemplate(c)}let r=e.imageUrl?`<img class="xenia-img" src="${rt(e.imageUrl)}" alt="" />`:"",s=e.title?`<div class="xenia-title">${N(e.title)}</div>`:"",o=e.message?`<div class="xenia-body">${N(e.message)}</div>`:"",l=e.cta?`<button class="xenia-cta" type="button">${N(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}${l}</div></div>`}wireCard(e,t,i){let r=t.widgetType?ve[t.widgetType]:void 0;if(r){r.wire(e,t,this.buildWidgetCtx(t,i));return}Q(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?.();}),Qe(e,t,this.buildWidgetCtx(t,i));}buildWidgetCtx(e,t){let i=C();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 Ut(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 N(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function rt(n){return N(n).replace(/"/g,"&quot;")}var st=`
1
+ var Xenia=(function(exports){'use strict';var lt=new Set(["banner","popup","modal","inline"]),ct=new Set(["top-left","top-right","bottom-left","bottom-right","top","bottom"]),dt=new Set(["standard","spin-wheel"]),ut=new Set(["swap","hide","show","setContent","redirect",...lt]);function A(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function v(n){return typeof n=="string"?n:void 0}function Ee(n){return typeof n=="number"?n:void 0}function pt(n){if(!A(n))return null;let e=v(n.type);if(!e||!ut.has(e))return null;if(e==="redirect"){let i=v(n.url);return i?{type:e,url:i}:null}if(e==="hide"||e==="show"){let i=v(n.target);return i?{type:e,target:i}:null}if(e==="swap"||e==="setContent"){let i=v(n.target);return i?{type:e,target:i,html:v(n.html),text:v(n.text)}:null}let t=A(n.cta)?{label:v(n.cta.label)??"",url:v(n.cta.url),event:v(n.cta.event)}:void 0;return {type:e,target:v(n.target),title:v(n.title),message:v(n.message),imageUrl:v(n.imageUrl),html:v(n.html),cta:t&&(t.label||t.url)?t:void 0,dismissAfterMs:Ee(n.dismissAfterMs),position:mt(n.position),widgetType:ft(n.widgetType),segments:ht(n.segments),formSubmit:gt(n.formSubmit),style:yt(n.style),spinnerHtml:v(n.spinnerHtml),winHtml:v(n.winHtml),lossHtml:v(n.lossHtml)}}function mt(n){let e=v(n);return e&&ct.has(e)?e:void 0}function ft(n){let e=v(n);return e&&dt.has(e)?e:void 0}function ht(n){if(!Array.isArray(n))return;let e=[];for(let t of n){if(!A(t))continue;let i=v(t.id),r=v(t.label);!i||!r||e.push({id:i,label:r,colorHex:v(t.colorHex),isLoss:t.isLoss===true});}return e.length?e:void 0}function gt(n){if(!A(n))return;let e=v(n.mode);if(e)return {requiresResolve:n.requiresResolve===true,mode:e,flowRef:v(n.flowRef),bindingRef:v(n.bindingRef),successDisplayMs:Ee(n.successDisplayMs)}}function yt(n){if(!A(n))return;let e={hideCloseButton:n.hideCloseButton===true,hideOverlay:n.hideOverlay===true};return e.hideCloseButton||e.hideOverlay?e:void 0}function ne(n){let e;if(Array.isArray(n)?e=n:A(n)&&Array.isArray(n.xeniaActions)&&(e=n.xeniaActions),!Array.isArray(e))return [];let t=[];for(let i of e){let r=pt(i);r&&t.push(r);}return t}var vt="https://engine.xeniamartech.com/xenia";function H(){return typeof window<"u"&&typeof document<"u"}function Ce(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 Re(n){return new Promise(e=>setTimeout(e,n))}var I=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},ie=class extends Error{constructor(t){super(`Circuit open for ${t}: failing fast until the cooldown passes`);this.endpoint=t;this.name="CircuitOpenError";}endpoint},_=new Map,$=class{baseUrl;defaultHeaders;timeout;retry;debug;breaker;constructor(e){this.baseUrl=(e.baseUrl??vt).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=Ce(this.baseUrl+e.path,e.query),i=_.get(t)??{failures:0,openedAt:0};if(i.openedAt){if(Date.now()-i.openedAt<this.breaker.cooldownMs)throw new ie(t);i.openedAt=0,i.failures=this.breaker.failureThreshold-1;}try{let r=await this.send(e);return _.delete(t),r}catch(r){throw r instanceof I&&!this.isRetryableStatus(r.status)?(_.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`)),_.set(t,i),r)}}async send(e){let t=Ce(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,l=e.noRetry?1:(e.retry?.attempts??this.retry.attempts)+1,a=e.retry?.baseDelayMs??this.retry.baseDelayMs,d;for(let c=0;c<l;c++)try{let h=await this.fetchWithTimeout(t,{method:i,headers:r,body:s,...e.keepalive?{keepalive:!0}:{}},o),f=await this.parseBody(h);if(h.ok)return {response:h,data:f};if(this.isRetryableStatus(h.status)&&c<l-1){let u=this.retryAfterMs(h,a,c);this.log(`retrying ${e.path} after ${u}ms (status ${h.status})`),await Re(u);continue}throw new I(h.status,f)}catch(h){if(d=h,h instanceof I)throw h;if(c<l-1){let f=a*2**c;this.log(`retrying ${e.path} after ${f}ms (network error)`),await Re(f);continue}}throw d instanceof Error?d: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 bt(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 q=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=bt(t),r=i?i-3e4:e+5*6e4;return this.cached={token:t,expiresAt:r},t}).finally(()=>{this.inflight=null;}),this.inflight}};function Te(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function xt(n){return n!==void 0&&Te(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 q(e),this.http=new $({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:ne(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=Te(r)?r:{};return {status:i.status,body:r,actions:ne(r),prize:xt(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 M="xenia";function re(n=M){return `${n||M}_vid`}function Ie(n=M){return `${n||M}_consent`}function Ae(n,e,t=365){return `${Ie(e)}=${encodeURIComponent(JSON.stringify(n))}; path=/; max-age=${Math.floor(t*86400)}; SameSite=Lax`}var wt=new Set(["eventId","eventType","journeyId","deviceId","visitorId","customerId","email","utmSource","utmMedium","utmCampaign","utmContent","utmId","url","referrer","path","query"]);function Me(n){let e={};for(let[t,i]of Object.entries(n))i!==void 0&&(e[t]=i);return e}function Pe(n){let e={},t={};if(n.props)for(let[r,s]of Object.entries(n.props))s!==void 0&&(wt.has(r)?t[r]=s:e[r]=s);return {...e,...t,...Me(n.context??{}),...Me(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 C(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 se=26;function Oe(n){if(n.length<=se)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<se;i++){let r=i+1;for(let s=i;s<e.length;s+=se)r=r*31+W.indexOf(e[s])>>>0;t+=W[r%32];}return t}var kt=n=>n&&typeof n=="object"&&typeof structuredClone=="function"?structuredClone(n):n;async function ae(n,e){let t=It(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{}},l=n;try{!e.inPlace&&typeof structuredClone=="function"&&(l=structuredClone(l)),l=t.prepare?t.prepare(l):l;}catch(u){return {content:n,applied:s,complete:false,error:u}}let a={root:l},d=new WeakSet,c=new Map,h=[{parent:a,key:"root",value:a.root}],f=(u,m,y)=>{d.add(u.entry),t.clearMarker?.(u.entry);let p=m.items.map(kt);if(!m.decision||p.length===0)return Rt(u,t);for(let b of p)b&&typeof b=="object"&&d.add(b);let g=m.decision.op??u.marker.op??"replace",w=We(u,g,m.decision.field??u.marker.field,p,t);return o({target:u.id,kind:u.local?"static":"runtime",op:g,entryIds:p.map(b=>t.entryId(b)).filter(b=>!!b),contentKey:m.decision.contentKey,bucket:m.decision.bucket,round:y}),w};for(let u=0;;u++){let m=Et(h,t,d,u,o,e.contentKey,x=>{let S=c.get(x.id);return S?f(x,S,u):void 0});if(m.size===0)return {content:a.root,applied:s,complete:true};let y=[...m.values()].filter(x=>!x.local).map(x=>x.id),p=[...m.values()].flatMap(x=>x.local?[x.local]:[]);if(!e.resolve&&p.length===0||u>=i)return {content:a.root,applied:s,complete:!e.resolve&&u<i};Le(e,{content:a.root,round:u,pending:[...m.keys()]});let g,w,b;try{g=e.resolve&&y.length>0?await He(e.resolve(y),r):[],g=[...g,...p],{entriesById:w,queried:b}=await He(Tt(g,t,e.locale),r);}catch(x){return {content:a.root,applied:s,complete:false,error:x===oe?void 0:x}}let T=new Map(g.map(x=>[x.target,x]));h=[];for(let x of m.values()){let S=T.get(x.id),te=S?S.ids?S.ids.map(V=>w.get(V)).filter(V=>V!==void 0):b.get(S)??[]:[],L={decision:S,items:te};c.set(x.id,L),h.push(...f(x,L,u));}Le(e,{content:a.root,round:u,pending:[]});}}function Le(n,e){try{n.onProgress?.(e);}catch{}}function Et(n,e,t,i,r,s,o){let l=new Map,a=new WeakSet,d=new WeakSet,c=[...n];for(;c.length>0;){let h=c.shift(),f=h.value;if(!f||typeof f!="object"||d.has(f))continue;let u=t.has(f)?void 0:e.entryId(f),m=u?e.marker(f):null,y=u&&m?.kind==="static"&&m.ids?.length&&e.staticVariants(f).length===0?Ct(u,m,s):void 0;if(u&&m&&(m.kind==="runtime"||y)){let p=o({id:u,marker:m,entry:f,slots:[h]});if(p){c.push(...p);continue}let g=l.get(u);if(g)g.slots.push(h);else if(l.set(u,{id:u,marker:m,entry:f,slots:[h],...y?{local:y}:{}}),m.op==="items"&&m.field){let w=e.getField(f,m.field);w&&typeof w=="object"&&d.add(w),c.push(...Ve(f));}continue}if(u&&m?.kind==="static"){let p=e.staticVariants(f).filter(g=>g&&typeof g=="object");if(t.add(f),e.clearMarker?.(f),p.length>0){for(let b of p)t.add(b);let g=m.op??"replace",w={entry:f,slots:[h]};c.push(...We(w,g,m.field,p,e)),r({target:u,kind:"static",op:g,entryIds:p.map(b=>e.entryId(b)).filter(b=>!!b),round:i});continue}}a.has(f)||(a.add(f),c.push(...Ve(f)));}return l}function Ct(n,e,t){return {target:n,op:e.op??"replace",...e.field?{field:e.field}:{},ids:e.ids,...e.ct?{contentType:e.ct}:{},contentKey:t}}function We(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 l=e==="expand"&&Array.isArray(o.parent)?i:[i[0]];if(Array.isArray(o.parent)){let a=o.parent.indexOf(n.entry);if(a<0)continue;o.parent.splice(a,1,...l);}else o.parent[o.key]=l[0];for(let a of l)s.push({parent:o.parent,key:o.key,value:a});}return s}function Rt(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 Ve(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 Tt(n,e,t){let i=[...new Set(n.flatMap(c=>c.ids??[]))],r={};for(let c of n)if(c.contentType)for(let h of c.ids??[])r[h]=c.contentType;let s=n.filter(c=>!c.ids&&c.query),[o,...l]=await Promise.all([i.length>0?e.fetchEntries(i,t,r):Promise.resolve([]),...s.map(c=>e.queryEntries(c.query,t).catch(()=>[]))]),a=new Map;for(let c of o){let h=e.entryId(c);h&&a.set(h,c);}let d=new Map;return s.forEach((c,h)=>d.set(c,l[h])),{entriesById:a,queried:d}}var oe=Symbol("timeout");function He(n,e){let t=e-Date.now();if(t<=0)return Promise.reject(oe);let i;return Promise.race([n,new Promise((r,s)=>{i=setTimeout(()=>s(oe),t);})]).finally(()=>clearTimeout(i))}function It(n,e){return {...n,marker(t){let i=n.marker(t);return i&&e&&i.keys?.includes(e)?i:null}}}async function Ne(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}:ae(t,e)}var J=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();}},F=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 X=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 I&&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 At=new Set(["click","view-port","page-load"]);function De(n){let e=n.indexOf("&");if(e===-1)return null;let t=n.slice(0,e),i=n.slice(e+1);return !t||!At.has(i)?null:{eventId:t,interactionType:i}}function _e(n){let e=d=>n.getAttribute(`data-xenia-${d}`)??void 0,t=e("content-key"),i=e("content-entry-id");if(!t&&!i)return null;let r=e("personalized"),s={},o=e("slot");o&&(s.slot=o),t&&(s.contentKey=t),i&&(s.contentEntryId=i);let l=e("base-entry-id");l&&(s.baseEntryId=l),r!=null&&(s.personalized=r==="true");let a=e("bucket");return a&&(s.bucket=a),s}var j=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?De(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=_e(s),l=i.closest("a, button"),a=l&&s.contains(l)?l:null;if(!a&&this.opts.slotClicks==="controls")return;let d=a?(a.textContent??"").trim().slice(0,60):"";o&&!this.throttled(s)&&this.opts.fireSlot("click",d?{...o,label:d}:o);}}},document.addEventListener("click",this.clickHandler);}observeSlot(e){if(!this.opts.fireSlot||this.slotObservers.has(e))return;let t=_e(e);if(!t)return;let i=this.opts.fireSlot,{threshold:r,rootMargin:s}=this.opts.viewport,o=new IntersectionObserver(l=>{for(let a of l)!(a.isIntersecting&&(a.intersectionRatio>=r||a.intersectionRect.height>=window.innerHeight/2))||this.slotImpressed.has(e)||(this.slotImpressed.add(e),i("impression",t),o.disconnect(),this.slotObservers.delete(e));},{threshold:[...new Set([.1,.25,r])].sort(),rootMargin:s});o.observe(Mt(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(l=>{for(let a of l)a.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=De(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 Mt(n){return typeof getComputedStyle!="function"?n:getComputedStyle(n).display==="contents"?n.firstElementChild??n:n}var le=8,$e=1800;function qe(n=M){return `${n}_trail`}var Pt=n=>{try{return decodeURIComponent(n)}catch{return n}};function ce(n){if(!n)return [];try{let e=JSON.parse(Pt(n));return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&typeof t[0]=="string"&&typeof t[1]=="number").slice(0,le).map(([t,i,r])=>typeof r=="number"&&r>=0&&r<=86400?{path:t,at:i,seconds:r}:{path:t,at:i}):[]}catch{return []}}function ze(n,e,t=Date.now()){if(n[0]?.path===e)return n;let i=n.find(r=>r.path===e);return [{path:e,at:i?.at??t},...n.filter(r=>r.path!==e)].slice(0,le)}function de(n){return JSON.stringify(n.slice(0,le).map(e=>e.seconds===void 0?[e.path,e.at]:[e.path,e.at,e.seconds]))}var B=new Set,U=null;function ue(n){if(B.add(n),!U){let{pushState:e,replaceState:t}=history,i=()=>B.forEach(o=>{try{o();}catch{}}),r=function(...o){e.apply(this,o),i();},s=function(...o){t.apply(this,o),i();};history.pushState=r,history.replaceState=s,window.addEventListener("popstate",i),U=()=>history.pushState!==r||history.replaceState!==s?false:(history.pushState=e,history.replaceState=t,window.removeEventListener("popstate",i),true);}return ()=>{B.delete(n),!B.size&&U?.()&&(U=null);}}var Je=n=>document.querySelector(`meta[name="${n}"]`)?.content||void 0;function Fe(n,e){let t=location.pathname,i=null,r,s={path:t,since:o(),sent:false};function o(){return document.visibilityState==="visible"?Date.now():null}function l(){clearTimeout(r);let f=Date.now(),u=()=>{if(!(document.title!==""&&document.title!==i)&&Date.now()-f<3e3){r=setTimeout(u,50);return}let y=new URLSearchParams(location.search),p=(y.get("utm_term")??y.get("q")??"").slice(0,120),g=Je("xenia-category");i=document.title,n.track("pageView",{title:(Je("xenia-title")??document.title).slice(0,160),...p?{searchTerm:p}:{},...g?{category:g}:{}});};r=setTimeout(u,0);}function a(){s.sent||s.since===null||Date.now()-s.since<250||(s.sent=true,n.track("page_leave",{path:s.path,durationMs:Date.now()-s.since}));}let d=()=>{location.pathname!==t&&(e.pageLeave&&a(),t=location.pathname,s={path:t,since:o(),sent:false},e.pageViews&&l());},c=()=>{document.visibilityState==="hidden"?a():s.since===null&&(s.since=Date.now());},h=ue(d);return e.pageLeave&&document.addEventListener("visibilitychange",c),e.pageViews&&l(),()=>{clearTimeout(r),h(),document.removeEventListener("visibilitychange",c);}}var Xe=(n,e)=>typeof n=="object"&&n.root||e;function pe(n){return document.cookie.match(new RegExp(`(?:^|;\\s*)${n}=([^;]*)`))?.[1]}function me(n,e){try{document.cookie=`${n}=${encodeURIComponent(e)}; path=/; max-age=${$e}; samesite=lax`;}catch{}}function je(n){if(!(!n||n.origin!==location.origin))return n.pathname.split("/").filter(Boolean)[0]}function Ot(n,e){let t=n;for(let i=0;t&&i<5&&t!==e;i++,t=t.parentElement){let r=[...t.querySelectorAll("img")].filter(s=>s.alt.trim());if(r.length)return new Set(r.map(s=>s.alt.trim())).size===1?r[0]:null}return null}function Be(n,e){let t=qe(e.prefix),i=`${e.prefix}_clicks`,r=()=>document.visibilityState==="visible"?Date.now():null,s={path:location.pathname,since:r(),stamped:false},o=()=>{if(s.stamped||!e.trail||!e.analyticsAllowed()||s.since===null)return;s.stamped=true;let y=Math.round((Date.now()-s.since)/100)/10,p=ce(pe(t)),g=p.findIndex(w=>w.path===s.path);g<0||(p[g]={...p[g],seconds:y},me(t,de(p)));},l=()=>{if(location.pathname===s.path||(o(),s={path:location.pathname,since:r(),stamped:false},!e.trail||!e.analyticsAllowed()))return;let y=ce(pe(t)),p=ze(y,s.path);p!==y&&me(t,de(p));},a=()=>{document.visibilityState==="visible"&&s.since===null&&(s.since=Date.now());},d=y=>{let p=y.target?.closest?.("a[href]");p&&p.origin===location.origin&&p.pathname!==location.pathname&&o();},c=()=>{e.analyticsAllowed()&&me(i,String((Number(pe(i))||0)+1));},h=Xe(e.navClicks,"header"),f=Xe(e.contentClicks,"main"),u=y=>{let p=y.target;if(!p?.closest)return;let g=e.navClicks?p.closest(`${h} a[href]`):null;if(g){let S=je(g);if(!S)return;n.track("nav_click",{category:S,label:(g.textContent??"").trim().slice(0,60)}),c();return}let w=e.contentClicks?p.closest(f):null;if(!w)return;let T=((p.closest("img")??Ot(p,w))?.alt??"").trim().slice(0,160);if(!T)return;let x=je(p.closest("a[href]"));n.track("content_click",x?{label:T,category:x}:{label:T}),c();},m=ue(l);return window.addEventListener("click",d,{capture:true}),document.addEventListener("visibilitychange",a),(e.contentClicks||e.navClicks)&&document.addEventListener("click",u,{capture:true}),()=>{m(),window.removeEventListener("click",d,{capture:true}),document.removeEventListener("visibilitychange",a),document.removeEventListener("click",u,{capture:true});}}function Ue(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();if(r)try{e[r]=decodeURIComponent(s);}catch{e[r]=s;}}return e}var Lt=1800*1e3,K=class{prefix;cookie;deviceId=null;journeyId=null;sessionId=null;constructor(e="xenia",t=true){this.prefix=e,this.cookie=Vt(t);}key(e){return `${this.prefix}_${e}`}cookieName(){return re(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 Ue(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),r=this.cookie?.authoritative?this.readVisitorCookie():null,s=localStorage.getItem(this.key("visitor_id"))??i;if(i&&r&&r!==s)return this.deviceId=r,localStorage.setItem(e,r),localStorage.getItem(this.key("visitor_id"))&&localStorage.setItem(this.key("visitor_id"),r),r;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)),l=r&&Number.isFinite(s)&&i-s<Lt?r:C(i);return sessionStorage.setItem(e,l),sessionStorage.setItem(t,String(i)),this.sessionId=l,l}catch{return this.sessionId||(this.sessionId=C(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 l=this.getVisitorId();return l&&(e.visitorId=l),e}};function Vt(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,authoritative:e.authoritative??false}}function Q(n){let e={};return n.querySelectorAll("[data-xenia-field]").forEach(t=>{let i=t.getAttribute("data-xenia-field");i&&(e[i]=Ht(t));}),e}function Ht(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 Ke(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 fe(n,e){let t=n.querySelector("[data-xenia-error]");t&&(t.textContent=e);}var Qe="xenia-form-submit-style";function Wt(n){if(n.querySelector(`#${Qe}`))return;let e=document.createElement("style");e.id=Qe,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 he(n,e){n&&(e?n.setAttribute("data-xenia-submitting",""):n.removeAttribute("data-xenia-submitting"));}function Nt(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 Dt=900;function _t(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 Ge(n,e,t){let i=n.querySelector("form"),r=false;Wt(n);let s=(o,l)=>{if(r)return;if(!e.formSubmit){fe(n,"This form isn't connected yet.");return}r=true,fe(n,""),Ke(o,true),he(o,true);let a=Date.now(),d=e.formSubmit.successDisplayMs??Dt;t.submitWidgetForm(l).then(()=>{he(o,false),_t(n,i);let c=Math.max(0,d-(Date.now()-a));window.setTimeout(()=>Nt(n,t.dismiss),c);}).catch(()=>{he(o,false),Ke(o,false),fe(n,"Something went wrong. Please try again.");}).finally(()=>{r=false;});};i&&i.addEventListener("submit",o=>{o.preventDefault();let l={};new FormData(i).forEach((d,c)=>{typeof d=="string"&&(l[c]=d);});let a=o.submitter??i.querySelector('[type="submit"], button:not([type])');s(a,{...Q(n),...l});}),n.querySelectorAll("[data-xenia-submit]").forEach(o=>{i?.contains(o)||o.addEventListener("click",()=>s(o,Q(n)));});}function ge(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ye(n){return ge(n).replace(/"/g,"&quot;")}function G(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 P=260,N=P/2,O=P/2,Ze=["#7c3aed","#2563eb","#059669","#d97706","#dc2626","#0891b2"],$t="transform 3.2s cubic-bezier(0.15, 0.85, 0.25, 1)",qt='<div class="xenia-wheel-pointer" aria-hidden="true"></div>',ve=320,et=`opacity ${ve}ms ease, transform ${ve}ms ease`,zt=900,ye=(n,e)=>`perspective(${zt}px) translateZ(${e}px) scale(${n})`;function be(n,e){let t=n*Math.PI/180;return {x:O+e*Math.sin(t),y:O-e*Math.cos(t)}}function Jt(n,e){let t=be(n,N),i=be(e,N),r=e-n>180?1:0;return `M ${O},${O} L ${t.x},${t.y} A ${N},${N} 0 ${r} 1 ${i.x},${i.y} Z`}function Ft(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 nt(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=ye(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&r.offsetHeight;}),it(()=>{t.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=et,r.style.opacity="0",r.style.transform=ye(.94,-60));}),i.forEach(r=>{r instanceof HTMLElement&&(r.style.transition=et,r.style.opacity="1",r.style.transform=ye(1,0));});}),n&&setTimeout(()=>{n.hidden=true;},ve);}function it(n){typeof requestAnimationFrame=="function"?requestAnimationFrame(n):setTimeout(n,0);}function Xt(n){let t=360/(n.length||1),i=n.map((r,s)=>{let o=s*t,l=o+t,a=r.colorHex||Ze[s%Ze.length],d=o+t/2,c=be(d,N*.62);return `<path d="${Jt(o,l)}" fill="${Ye(a)}" stroke="#fff" stroke-width="1"></path><text x="${c.x}" y="${c.y}" fill="#fff" font-size="12" text-anchor="middle" transform="rotate(${d} ${c.x} ${c.y})">${ge(r.label)}</text>`}).join("");return `<svg class="xenia-wheel-svg" viewBox="0 0 ${P} ${P}" width="${P}" height="${P}"><g class="xenia-wheel-dial">${i}</g><circle class="xenia-wheel-hub" cx="${O}" cy="${O}" r="6"></circle></svg>`}var rt={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){G(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]"),l=n.querySelector("[data-xenia-wheel-loss]"),a=n.querySelector("[data-xenia-error]"),d=n.querySelector("[data-xenia-wheel-slot]");d&&d.insertAdjacentHTML("afterbegin",Xt(i)+qt);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 h=(m,y,p)=>{n.querySelectorAll("[data-xenia-wheel-prize]").forEach(b=>{b.textContent=m;});let g=y?l:o,w=y?o:l;w&&(w.hidden=true),nt(r,g),p||(u=true,n.querySelectorAll("[data-xenia-spin-again]").forEach(b=>{b.hidden=true;}));},f=false,u=false;n.querySelectorAll("[data-xenia-spin-again]").forEach(m=>{m.addEventListener("click",()=>{if(u)return;let y=o&&!o.hidden?o:l&&!l.hidden?l:null;y&&(f=false,s.disabled=false,a&&(a.textContent=""),nt(y,r));});}),s.addEventListener("click",()=>{if(f)return;f=true,s.disabled=true,a&&(a.textContent="");let m=Q(n);t.submitWidgetForm(m).then(y=>{let p=i.findIndex(V=>V.id===y.prize?.segmentId),g=y.prize?.label??i[p]?.label??"",w=p>=0&&!!i[p]?.isLoss,b=y.alreadyPlayed!==true;if(p<0||!c){h(g,w,b);return}let T=3+Math.floor(Math.random()*3),x=Ft(p,i.length||1,T),S=/rotate\(([-\d.]+)deg\)/.exec(c.style.transform),te=S?parseFloat(S[1]):0;c.style.transition="none",c.style.transform=`rotate(${te%360}deg)`,c.getBoundingClientRect(),c.style.transition=$t;let L=()=>{c.removeEventListener("transitionend",L),h(g,w,b);};c.addEventListener("transitionend",L),it(()=>{c.style.transform=`rotate(${x}deg)`;});}).catch(()=>{f=false,s.disabled=false,a&&(a.textContent="Something went wrong. Please try again.");});});}};var xe={"spin-wheel":rt};function ee(n,e=document){if(!n)return null;let t=e.querySelector(`[data-xenia-slot="${jt(n)}"]`);if(t)return t;try{return e.querySelector(n)}catch{return null}}function jt(n){let e=window;return e.CSS?.escape?e.CSS.escape(n):n.replace(/["\\]/g,"\\$&")}function Y(n,e){let t=ee(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 we(n){let e=ee(n);return !e||!(e instanceof HTMLElement)?false:(e.dataset.xeniaHidden="1",e.style.setProperty("display","none","important"),true)}function Se(n){let e=ee(n);return !e||!(e instanceof HTMLElement)?false:(delete e.dataset.xeniaHidden,e.style.removeProperty("display"),true)}var Bt=new Set(["banner","popup","modal","inline"]);function Ut(n){return Bt.has(n)}var Z=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 Y(e.target,{html:e.html,text:e.text});case "setContent":return Y(e.target,{html:e.html,text:e.text});case "hide":return we(e.target);case "show":return Se(e.target);case "redirect":try{return window.location.assign(e.url),!0}catch{return false}default:return Ut(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?`${ot}
2
+ ${this.messageStyles}`:ot,e}renderMessage(e){let t=e.html===void 0&&!!this.messageComponent;if(e.type==="inline"){if(!e.target)return false;let d=ee(e.target);return d?(this.unmount(d),t?(d.innerHTML="",this.mountComponent(d,e,"inline",()=>this.unmount(d))):(d.innerHTML=this.cardHtml(e,"inline"),this.wireCard(d,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":"",l=e.style?.hideOverlay?" xenia-no-overlay":"";r.className=`xenia-msg xenia-${e.type}${s?` ${s}`:""}${o}${l}`,i.appendChild(r);let a=()=>{this.unmount(r),r.remove();};if(t?this.mountComponent(r,e,e.type,a):(r.innerHTML=this.cardHtml(e,e.type),this.wireCard(r,e,a)),e.dismissAfterMs&&e.dismissAfterMs>0){let d=setTimeout(a,e.dismissAfterMs),c=()=>clearTimeout(d);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?xe[e.widgetType]:void 0;if(i)return i.html(e,t);if(e.html!==void 0)return Kt(e.html,t);if(this.messageTemplate){let d={action:e,variant:t,escapeHtml:D,escapeAttr:st};return this.messageTemplate(d)}let r=e.imageUrl?`<img class="xenia-img" src="${st(e.imageUrl)}" alt="" />`:"",s=e.title?`<div class="xenia-title">${D(e.title)}</div>`:"",o=e.message?`<div class="xenia-body">${D(e.message)}</div>`:"",l=e.cta?`<button class="xenia-cta" type="button">${D(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}${l}</div></div>`}wireCard(e,t,i){let r=t.widgetType?xe[t.widgetType]:void 0;if(r){r.wire(e,t,this.buildWidgetCtx(t,i));return}G(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?.();}),Ge(e,t,this.buildWidgetCtx(t,i));}buildWidgetCtx(e,t){let i=C();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 Kt(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 D(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function st(n){return D(n).replace(/"/g,"&quot;")}var ot=`
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}`:st,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 we=class{api;identity;responses;options;renderer;analyticsQueue;tracker=null;stopPageTracking=null;stopEngagement=null;booting=null;generation=0;consentState;listeners=new Map;constructor(e){this.options=e;let t=e.prefix??"xenia";this.identity=new U(t,e.visitorCookie??true),e.visitorId&&this.identity.identify(e.visitorId),this.api=new q(e),this.responses=e.persistResponses===false||!V()?new z:new J(t),this.renderer=new Y((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 V()?this.booting??=this.boot():Promise.resolve()}async boot(){let e=this.generation;if(await this.identity.resolveDeviceId(),e!==this.generation)return;this.analyticsAllowed()&&this.analyticsQueue.start(),this.options.autoTrack!==false&&(this.tracker=new X({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},slotClicks:this.options.slotClicks,fire:(l,a)=>this.track(l,{interactionType:a},{trigger:true}),fireSlot:(l,a)=>{this.track("customEvent",{customEventName:l==="impression"?"personalization_impression":"personalization_click",...a.contentKey?{contentKey:a.contentKey}:{},contentEntryId:a.contentEntryId??null,baseEntryId:a.baseEntryId??null,...a.bucket?{bucket:a.bucket}:{},...a.slot?{slot:a.slot}:{},...a.label?{label:a.label}:{}},{trigger:false});}}),this.tracker.start());let{pageViews:t=false,pageLeave:i=false}=this.options;(t||i)&&(this.stopPageTracking=Je({track:(l,a)=>this.track(l,a)},{pageViews:t,pageLeave:i}));let{trail:r=false,contentClicks:s=false,navClicks:o=false}=this.options;(r||s||o)&&(this.stopEngagement=je({track:(l,a)=>this.track(l,a)},{trail:r,contentClicks:s,navClicks:o,prefix:this.options.prefix??"xenia",analyticsAllowed:()=>this.analyticsAllowed()&&!this.dntBlocked()}));}destroy(){this.tracker?.stop(),this.tracker=null,this.stopPageTracking?.(),this.stopPageTracking=null,this.stopEngagement?.(),this.stopEngagement=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(!V())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?Pe(i.eventId):C(),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 se(e,{...t,resolve:this.entryResolver(t)})}async personalizePage(e,t){return We(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=Me({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??C(),o=e.flowRef??e.bindingRef,l={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},a=e.flowRef?await this.api.webhook(e.flowRef,E({...l,...t}),"POST"):await this.api.submitWidget(e.bindingRef??"",E({...l,fields:t}));return this.emit("response",{triggerId:o,response:a}),(i?.apply??this.options.autoApplyActions!==false)&&a.actions.length&&this.applyActions(a.actions),a}swapContent(e,t){return G(e,t)}hideContent(e){return be(e)}showContent(e){return xe(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},V())try{document.cookie=Ie(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 ot(n){return new we(n)}var R=null;function S(n){if(!R)throw console.warn(`[xenia] ${n}() called before init().`),new Error("Xenia not initialized");return R}var Gn={init(n){R&&R.destroy(),R=ot(n),R.init();},destroy(){R?.destroy(),R=null;},track(n,e,t){S("track").track(n,e,t);},identify(n){S("identify").identify(n);},consent(n){return S("consent").consent(n)},resolve(n,e){return S("resolve").resolve(n,e)},resolveBatch(n,e){return S("resolveBatch").resolveBatch(n,e)},setJourneyId(n){S("setJourneyId").setJourneyId(n);},request(n,e){return S("request").request(n,e)},getResponse(n){return S("getResponse").getResponse(n)},swapContent(n,e){return S("swapContent").swapContent(n,e)},hideContent(n){return S("hideContent").hideContent(n)},showContent(n){return S("showContent").showContent(n)}};exports.Xenia=Gn;return exports;})({});
79
+ `;var ke=class{api;identity;responses;options;renderer;analyticsQueue;tracker=null;stopPageTracking=null;stopEngagement=null;booting=null;generation=0;consentState;listeners=new Map;constructor(e){this.options=e;let t=e.prefix??"xenia";this.identity=new K(t,e.visitorCookie??true),e.visitorId&&this.identity.identify(e.visitorId),this.api=new z(e),this.responses=e.persistResponses===false||!H()?new J:new F(t),this.renderer=new Z((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 X({debug:e.debug,send:(i,r)=>this.api.sendEvents(i.map(s=>({...s,consent:this.consentState})),r)});}init(){return H()?this.booting??=this.boot():Promise.resolve()}async boot(){let e=this.generation;if(await this.identity.resolveDeviceId(),e!==this.generation)return;this.analyticsAllowed()&&this.analyticsQueue.start(),this.options.autoTrack!==false&&(this.tracker=new j({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},slotClicks:this.options.slotClicks,fire:(l,a)=>this.track(l,{interactionType:a},{trigger:true}),fireSlot:(l,a)=>{this.track("customEvent",{customEventName:l==="impression"?"personalization_impression":"personalization_click",...a.contentKey?{contentKey:a.contentKey}:{},contentEntryId:a.contentEntryId??null,baseEntryId:a.baseEntryId??null,...a.bucket?{bucket:a.bucket}:{},...a.slot?{slot:a.slot}:{},...a.label?{label:a.label}:{}},{trigger:false});}}),this.tracker.start());let{pageViews:t=false,pageLeave:i=false}=this.options;(t||i)&&(this.stopPageTracking=Fe({track:(l,a)=>this.track(l,a)},{pageViews:t,pageLeave:i}));let{trail:r=false,contentClicks:s=false,navClicks:o=false}=this.options;(r||s||o)&&(this.stopEngagement=Be({track:(l,a)=>this.track(l,a)},{trail:r,contentClicks:s,navClicks:o,prefix:this.options.prefix??"xenia",analyticsAllowed:()=>this.analyticsAllowed()&&!this.dntBlocked()}));}destroy(){this.tracker?.stop(),this.tracker=null,this.stopPageTracking?.(),this.stopPageTracking=null,this.stopEngagement?.(),this.stopEngagement=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(!H())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?Oe(i.eventId):C(),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 ae(e,{...t,resolve:this.entryResolver(t)})}async personalizePage(e,t){return Ne(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=Pe({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??C(),o=e.flowRef??e.bindingRef,l={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},a=e.flowRef?await this.api.webhook(e.flowRef,E({...l,...t}),"POST"):await this.api.submitWidget(e.bindingRef??"",E({...l,fields:t}));return this.emit("response",{triggerId:o,response:a}),(i?.apply??this.options.autoApplyActions!==false)&&a.actions.length&&this.applyActions(a.actions),a}swapContent(e,t){return Y(e,t)}hideContent(e){return we(e)}showContent(e){return Se(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},H())try{document.cookie=Ae(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 at(n){return new ke(n)}var R=null;function k(n){if(!R)throw console.warn(`[xenia] ${n}() called before init().`),new Error("Xenia not initialized");return R}var Yn={init(n){R&&R.destroy(),R=at(n),R.init();},destroy(){R?.destroy(),R=null;},track(n,e,t){k("track").track(n,e,t);},identify(n){k("identify").identify(n);},consent(n){return k("consent").consent(n)},resolve(n,e){return k("resolve").resolve(n,e)},resolveBatch(n,e){return k("resolveBatch").resolveBatch(n,e)},setJourneyId(n){k("setJourneyId").setJourneyId(n);},request(n,e){return k("request").request(n,e)},getResponse(n){return k("getResponse").getResponse(n)},swapContent(n,e){return k("swapContent").swapContent(n,e)},hideContent(n){return k("hideContent").hideContent(n)},showContent(n){return k("showContent").showContent(n)}};exports.Xenia=Yn;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