wineater-bot 3.0.22 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,8 @@
1
- (function(it){typeof define=="function"&&define.amd?define(it):it()})(function(){"use strict";var mi,bi,yi,vi,wi;const it=`
1
+ (function(it){typeof define=="function"&&define.amd?define(it):it()})(function(){"use strict";var bi,vi,yi,wi,Si,xi;const it=`
2
+ :root {
3
+ --wineater-corp-color: #0044FF;
4
+ --wineater-color: #7B2BEB;
5
+ }
2
6
  @font-face {
3
7
  font-family: 'Poppins';
4
8
  src: url('https://fonts.googleapis.com/css2?family=Poppins:wght@400&display=swap');
@@ -21,7 +25,7 @@
21
25
  justify-content: center;
22
26
  padding: 10px 20px;
23
27
  border-radius: 25px;
24
- background: linear-gradient(90deg, #7B2BEB, #0044FF); /* Фиолетовый к синему */
28
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color)); /* Фиолетовый к синему */
25
29
  cursor: pointer;
26
30
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); /* Тень */
27
31
  color: white; /* Белый текст */
@@ -95,7 +99,7 @@ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
95
99
  display: none;
96
100
  overflow: hidden;
97
101
  background: linear-gradient(white, white) padding-box,
98
- linear-gradient(90deg, #7B2BEB, #0044FF) border-box;
102
+ linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color)) border-box;
99
103
 
100
104
  }
101
105
 
@@ -194,7 +198,7 @@ linear-gradient(90deg, #7B2BEB, #0044FF) border-box;
194
198
  transition: all 0.2s ease;
195
199
  background:
196
200
  linear-gradient(white, white) padding-box,
197
- linear-gradient(90deg, #0044FF, #7B2BEB) border-box;
201
+ linear-gradient(90deg, var(--wineater-corp-color), var(--wineater-color)) border-box;
198
202
  }
199
203
 
200
204
  #user-input:focus {
@@ -204,7 +208,7 @@ linear-gradient(90deg, #7B2BEB, #0044FF) border-box;
204
208
 
205
209
  /* Кнопка отправки */
206
210
  #send-button {
207
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
211
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
208
212
  color: white;
209
213
  border: none;
210
214
  padding: 12px 24px;
@@ -283,7 +287,7 @@ linear-gradient(90deg, #7B2BEB, #0044FF) border-box;
283
287
 
284
288
  /* Стили для сообщений API (бота) */
285
289
  .message.api {
286
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
290
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
287
291
  color: white;
288
292
  border-top-left-radius: 4px;
289
293
  margin-right: auto;
@@ -325,7 +329,7 @@ border-top-left-radius: 4px;
325
329
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
326
330
  background:
327
331
  linear-gradient(white, white) padding-box,
328
- linear-gradient(90deg, #7B2BEB, #0044FF) border-box;
332
+ linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color)) border-box;
329
333
  }
330
334
 
331
335
  .wine-item {
@@ -353,7 +357,7 @@ border-top-left-radius: 4px;
353
357
  }
354
358
 
355
359
  .wine-item-price {
356
- color: #7B2BEB;
360
+ color: var(--wineater-color);
357
361
  font-weight: 500;
358
362
  margin-bottom: 4px;
359
363
  }
@@ -365,7 +369,7 @@ border-top-left-radius: 4px;
365
369
  }
366
370
 
367
371
  .wine-item a {
368
- color: #0044FF; /* Синий цвет ссылки */
372
+ color: var(--wineater-corp-color); /* Синий цвет ссылки */
369
373
  text-decoration: underline; /* Подчеркивание для эффекта ссылки */
370
374
  font-size: 14px; /* Размер текста */
371
375
  font-weight: 500; /* Полужирный текст */
@@ -388,7 +392,7 @@ border-bottom-right-radius: 15px;
388
392
 
389
393
  font-size: 14px;
390
394
  line-height: 1.5;
391
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
395
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
392
396
  box-shadow: 0 2px 8px rgba(123, 43, 235, 0.15);
393
397
  }
394
398
 
@@ -403,7 +407,7 @@ border-bottom-right-radius: 15px;
403
407
  width: 40px;
404
408
  height: 40px;
405
409
  margin: 20px auto;
406
- background: conic-gradient(from 0deg, #7B2BEB, #0044FF, #7B2BEB);
410
+ background: conic-gradient(from 0deg, var(--wineater-color), var(--wineater-corp-color), var(--wineater-color));
407
411
  border-radius: 50%;
408
412
  animation: spin 1s linear infinite;
409
413
  position: relative;
@@ -449,7 +453,7 @@ visibility: visible;
449
453
  height: 8px;
450
454
  margin: 0 3px;
451
455
  border-radius: 50%;
452
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
456
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
453
457
  opacity: 0.7;
454
458
  animation: typing 1s infinite;
455
459
  }
@@ -640,515 +644,637 @@ visibility: visible;
640
644
  height: 80px;
641
645
  }
642
646
  }
643
- `,qn=document.createElement("style");qn.textContent=it,document.head.appendChild(qn);function Ci(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function rt(t,e,n){console.log(t,n);let s="";if(n){const i=new Date;i.setTime(i.getTime()+n*24*60*60*1e3),s="; expires="+i.toUTCString()}document.cookie=t+"="+(e||"")+s+"; path=/; secure; samesite=strict"}function se(t){const e=t+"=",n=document.cookie.split(";");for(let s=0;s<n.length;s++){let i=n[s];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(e)===0)return i.substring(e.length,i.length)}return null}function _i(t){document.cookie=t+"=; Max-Age=-99999999;"}function Ni(){const t="uniqueUserID";let e=se(t);return e||(e=Ci(),rt(t,e,365)),e}function Ke(t,e){fetch("https://wineater-backend.vercel.app/proxy/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:t,properties:e})}).then(i=>{i.ok||console.error("Mixpanel tracking failed",i)}).catch(i=>{console.error("Mixpanel tracking error",i)})}function Oi(){Ke("Chatbot Opened",{distinct_id:se("uniqueUserID"),client:se("chatbotToken")})}function Vn(){Ke("Chatbot Closed",{distinct_id:se("uniqueUserID"),client:se("chatbotToken")})}function Ri(t){Ke("Message Sent",{distinct_id:se("uniqueUserID"),message_content:t,client:se("chatbotToken")})}function Fi(t){Ke("Products Got",{distinct_id:se("uniqueUserID"),products:t,client:se("chatbotToken")})}function Ai(t){Ke("Product Clicked",{distinct_id:se("uniqueUserID"),product_id:t,client:se("chatbotToken")})}var Le=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Gn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Dt={exports:{}};(function(t,e){(function(n,s){s(e)})(Le,function(n){var s={getItemSync:function(b){try{return localStorage.getItem(b)||null}catch{return null}},getItem:function(b,f){var d=this;return new Promise(function(m,g){try{var w=d.getItemSync(b);f==null||f(null,w),m(w)}catch(x){f&&f(x,null),g(x)}})},setItem:function(b,f,d){return new Promise(function(m,g){try{localStorage.setItem(b,f),d&&d(null,f),m(f)}catch(w){d&&d(w,null),g(w)}})}},i=function(){return i=Object.assign||function(b){for(var f,d=1,m=arguments.length;d<m;d++)for(var g in f=arguments[d])Object.prototype.hasOwnProperty.call(f,g)&&(b[g]=f[g]);return b},i.apply(this,arguments)};function r(b,f,d,m){return new(d||(d=Promise))(function(g,w){function x(H){try{M(m.next(H))}catch(_){w(_)}}function R(H){try{M(m.throw(H))}catch(_){w(_)}}function M(H){var _;H.done?g(H.value):(_=H.value,_ instanceof d?_:new d(function(q){q(_)})).then(x,R)}M((m=m.apply(b,f||[])).next())})}function o(b,f){var d,m,g,w,x={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return w={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(w[Symbol.iterator]=function(){return this}),w;function R(M){return function(H){return function(_){if(d)throw new TypeError("Generator is already executing.");for(;x;)try{if(d=1,m&&(g=2&_[0]?m.return:_[0]?m.throw||((g=m.return)&&g.call(m),0):m.next)&&!(g=g.call(m,_[1])).done)return g;switch(m=0,g&&(_=[2&_[0],g.value]),_[0]){case 0:case 1:g=_;break;case 4:return x.label++,{value:_[1],done:!1};case 5:x.label++,m=_[1],_=[0];continue;case 7:_=x.ops.pop(),x.trys.pop();continue;default:if(g=x.trys,!((g=g.length>0&&g[g.length-1])||_[0]!==6&&_[0]!==2)){x=0;continue}if(_[0]===3&&(!g||_[1]>g[0]&&_[1]<g[3])){x.label=_[1];break}if(_[0]===6&&x.label<g[1]){x.label=g[1],g=_;break}if(g&&x.label<g[2]){x.label=g[2],x.ops.push(_);break}g[2]&&x.ops.pop(),x.trys.pop();continue}_=f.call(b,x)}catch(q){_=[6,q],m=0}finally{d=g=0}if(5&_[0])throw _[1];return{value:_[0]?_[1]:void 0,done:!0}}([M,H])}}}function l(b,f,d){if(d||arguments.length===2)for(var m,g=0,w=f.length;g<w;g++)!m&&g in f||(m||(m=Array.prototype.slice.call(f,0,g)),m[g]=f[g]);return b.concat(m||Array.prototype.slice.call(f))}var a=function b(f,d){if(f===d)return!0;if(f&&d&&typeof f=="object"&&typeof d=="object"){if(f.constructor!==d.constructor)return!1;var m,g,w;if(Array.isArray(f)){if((m=f.length)!=d.length)return!1;for(g=m;g--!=0;)if(!b(f[g],d[g]))return!1;return!0}if(f.constructor===RegExp)return f.source===d.source&&f.flags===d.flags;if(f.valueOf!==Object.prototype.valueOf)return f.valueOf()===d.valueOf();if(f.toString!==Object.prototype.toString)return f.toString()===d.toString();if((m=(w=Object.keys(f)).length)!==Object.keys(d).length)return!1;for(g=m;g--!=0;)if(!Object.prototype.hasOwnProperty.call(d,w[g]))return!1;for(g=m;g--!=0;){var x=w[g];if(!b(f[x],d[x]))return!1}return!0}return f!=f&&d!=d};function h(b,f){var d=Object.keys(f||{}).filter(function(m){var g=b==null?void 0:b[m],w=f==null?void 0:f[m];return!a(g,w)});return Object.keys(b||{}).filter(function(m){Object.keys(f||{}).includes(m)||d.push(m)}),Object.keys(d).length?d:null}var c,u;function p(b,f,d){var m="shortString",g=!0;typeof d=="number"&&(m="javaDouble",g=!1),b[m]=b[m]||{},b[m][f]=g?d+"":d}function y(b){return!!b&&typeof b=="object"&&b.value!==void 0}function S(b){return Object.fromEntries(Object.entries(b).map(function(f){var d=f[0],m=f[1];return[d,y(m)?m:{value:m}]}))}function v(b){return i(i({},b),{identity:b.identity?i(i({},b.identity),{traits:S(b.identity.traits||{})}):void 0})}(function(b){b.NONE="NONE",b.DEFAULT_FLAGS="DEFAULT_FLAGS",b.CACHE="CACHE",b.SERVER="SERVER"})(c||(c={}));var E,F=null,P="BULLET_TRAIN_DB",A="BULLET_TRAIN_EVENT",k="https://edge.api.flagsmith.com/api/v1/",N="flagsmith_value_",O="flagsmith_enabled_",D="flagsmith_trait_",I=function(){function b(f){var d=this;this._trigger=null,this._triggerLoadingState=null,this.timestamp=null,this.isLoading=!1,this.eventSource=null,this.getFlags=function(){var m=d,g=m.api,w=m.evaluationContext;d.log("Get Flags"),d.isLoading=!0,d.loadingState.isFetching||d.setLoadingState(i(i({},d.loadingState),{isFetching:!0}));var x="".concat(d.getContext().identity),R=function(M){var H,_,q,ee;if(M&&x==="".concat(d.getContext().identity)){var ae=M.flags,te=M.traits,ne=M.identifier;d.isLoading=!1;var de={},ue={};te=te||[],(ae=ae||[]).forEach(function(J){de[J.feature.name.toLowerCase().replace(/ /g,"_")]={id:J.feature.id,enabled:J.enabled,value:J.feature_state_value}}),te.forEach(function(J){ue[J.trait_key.toLowerCase().replace(/ /g,"_")]={transient:J.transient,value:J.trait_value}}),d.oldFlags=i({},d.flags);var we=h(d.oldFlags,de),Ze=h((H=d.evaluationContext.identity)===null||H===void 0?void 0:H.traits,ue);if((ne||Object.keys(ue).length)&&(d.evaluationContext.identity={traits:ue},ne&&(d.evaluationContext.identity.identifier=ne)),d.flags=de,d.updateStorage(),d._onChange(d.oldFlags,{isFromServer:!0,flagsChanged:we,traitsChanged:Ze},d._loadedState(null,c.SERVER)),d.datadogRum)try{if(d.datadogRum.trackTraits){var et={};Object.keys(((_=d.evaluationContext.identity)===null||_===void 0?void 0:_.traits)||{}).map(function(J){et[D+J]=d.getTrait(J)});var qe=i(i(i({},d.datadogRum.client.getUser()),{id:d.datadogRum.client.getUser().id||((q=d.evaluationContext.identity)===null||q===void 0?void 0:q.identifier)}),et);d.log("Setting Datadog user",qe),d.datadogRum.client.setUser(qe)}}catch(J){console.error(J)}if(d.dtrum)try{var re={javaDouble:{},date:{},shortString:{},javaLongOrObject:{}};Object.keys(d.flags).map(function(J){p(re,N+J,d.getValue(J,{skipAnalytics:!0})),p(re,O+J,d.hasFeature(J,{skipAnalytics:!0}))}),Object.keys(((ee=d.evaluationContext.identity)===null||ee===void 0?void 0:ee.traits)||{}).map(function(J){p(re,D+J,d.getTrait(J))}),d.log("Sending javaLongOrObject traits to dynatrace",re.javaLongOrObject),d.log("Sending date traits to dynatrace",re.date),d.log("Sending shortString traits to dynatrace",re.shortString),d.log("Sending javaDouble to dynatrace",re.javaDouble),d.dtrum.sendSessionProperties(re.javaLongOrObject,re.date,re.shortString,re.javaDouble)}catch(J){console.error(J)}}};return w.identity?Promise.all([w.identity.traits&&Object.keys(w.identity.traits).length||!w.identity.identifier?d.getJSON(g+"identities/","POST",JSON.stringify({identifier:w.identity.identifier,transient:w.identity.transient,traits:Object.entries(w.identity.traits).map(function(M){var H=M[0],_=M[1];return{trait_key:H,trait_value:_==null?void 0:_.value,transient:_==null?void 0:_.transient}}).filter(function(M){return M.trait_value!==void 0||(d.log("Warning - attempted to set an undefined trait value for key",M.trait_key),!1)})})):d.getJSON(g+"identities/?identifier="+encodeURIComponent(w.identity.identifier)+(w.identity.transient?"&transient=true":""))]).then(function(M){return d.evaluationContext.identity=i(i({},d.evaluationContext.identity),{traits:{}}),R(M==null?void 0:M[0])}).catch(function(M){var H=M.message,_=new Error(H);return Promise.reject(_)}):d.getJSON(g+"flags/").then(function(M){return R({flags:M,traits:void 0})})},this.analyticsFlags=function(){var m=d.api;if(d.evaluationEvent&&d.evaluationContext.environment&&d.evaluationEvent[d.evaluationContext.environment.apiKey])return d.evaluationEvent&&Object.getOwnPropertyNames(d.evaluationEvent).length!==0&&Object.getOwnPropertyNames(d.evaluationEvent[d.evaluationContext.environment.apiKey]).length!==0?d.getJSON(m+"analytics/flags/","POST",JSON.stringify(d.evaluationEvent[d.evaluationContext.environment.apiKey])).then(function(g){if(d.evaluationContext.environment){var w=d.getState();d.evaluationEvent||(d.evaluationEvent={}),d.evaluationEvent[d.evaluationContext.environment.apiKey]={},d.setState(i(i({},w),{evaluationEvent:d.evaluationEvent})),d.updateEventStorage()}}).catch(function(g){d.log("Exception fetching evaluationEvent",g)}):void 0},this.datadogRum=null,this.loadingState={isLoading:!0,isFetching:!0,error:null,source:c.NONE},this.canUseStorage=!1,this.analyticsInterval=null,this.api=null,this.cacheFlags=!1,this.ts=null,this.enableAnalytics=!1,this.enableLogs=!1,this.evaluationContext={},this.evaluationEvent=null,this.flags=null,this.getFlagInterval=null,this.headers=null,this.initialised=!1,this.oldFlags=null,this.onChange=null,this.onError=null,this.ticks=null,this.timer=null,this.dtrum=null,this.withTraits=null,this.cacheOptions={ttl:0,skipAPI:!1,loadStale:!1},this.getValue=function(m,g,w){var x=d.flags&&d.flags[m.toLowerCase().replace(/ /g,"_")],R=null;if(x&&(R=x.value),g!=null&&g.skipAnalytics||w||d.evaluateFlag(m,"VALUE"),R===null&&(g==null?void 0:g.fallback)!==void 0)return g.fallback;if(g!=null&&g.json)try{return R===null?(d.log("Tried to parse null flag as JSON: "+m),null):JSON.parse(R)}catch{return g.fallback}return R},this.getTrait=function(m){var g,w;return((g=d.evaluationContext.identity)===null||g===void 0?void 0:g.traits)&&((w=d.evaluationContext.identity.traits[m.toLowerCase().replace(/ /g,"_")])===null||w===void 0?void 0:w.value)},this.getAllTraits=function(){var m;return Object.fromEntries(Object.entries(((m=d.evaluationContext.identity)===null||m===void 0?void 0:m.traits)||{}).map(function(g){var w=g[0],x=g[1];return[w,x==null?void 0:x.value]}))},this.setContext=function(m){var g=v(m);return d.evaluationContext=i(i({},g),{environment:g.environment||d.evaluationContext.environment}),d.initialised?d.getFlags():Promise.resolve()},this.getContext=function(){return d.evaluationContext},this.updateContext=function(m){return d.setContext(i(i({},d.getContext()),m))},this.setTrait=function(m,g){var w;if(d.api)return d.setContext(i(i({},d.evaluationContext),{identity:i(i({},d.evaluationContext.identity),{traits:i(i({},(w=d.evaluationContext.identity)===null||w===void 0?void 0:w.traits),S(Object.fromEntries([[m,g]])))})}))},this.setTraits=function(m){var g;if(d.api)return d.setContext(i(i({},d.evaluationContext),{identity:i(i({},d.evaluationContext.identity),{traits:i(i({},(g=d.evaluationContext.identity)===null||g===void 0?void 0:g.traits),Object.fromEntries(Object.entries(m).map(function(w){var x=w[0],R=w[1];return[x,y(R)?R:{value:R}]})))})}));console.error("Attempted to setTraits a user before calling flagsmith.init. Call flagsmith.init first, if you wish to prevent it sending a request for flags, call init with preventFetch:true.")},this.hasFeature=function(m,g){var w=typeof g=="object",x=d.flags&&d.flags[m.toLowerCase().replace(/ /g,"_")],R=!1;return!x&&w&&g.fallback!==void 0?R=g==null?void 0:g.fallback:x&&x.enabled&&(R=!0),(w&&!g.skipAnalytics||!g)&&d.evaluateFlag(m,"ENABLED"),R},this.getJSON=function(m,g,w){var x,R=d;R.evaluationContext;var M=R.headers,H={method:g||"GET",body:w,cache:"no-cache",headers:{}};d.evaluationContext.environment&&(H.headers["X-Environment-Key"]=d.evaluationContext.environment.apiKey),g&&g!=="GET"&&(H.headers["Content-Type"]="application/json; charset=utf-8"),M&&Object.assign(H.headers,M),u||console.error("Flagsmith: fetch is undefined, please specify a fetch implementation into flagsmith.init to support SSR.");var _="".concat((x=d.evaluationContext.identity)===null||x===void 0?void 0:x.identifier);return u(m,H).then(function(q){var ee,ae,te="".concat((ee=d.evaluationContext.identity)===null||ee===void 0?void 0:ee.identifier);if(_===te){var ne=(ae=q.headers)===null||ae===void 0?void 0:ae.get("x-flagsmith-document-updated-at");if(ne)try{var de=parseFloat(ne);if(isNaN(de))return Promise.reject("Failed to parse x-flagsmith-document-updated-at");d.timestamp=de}catch(ue){d.log(ue,"Failed to parse x-flagsmith-document-updated-at",ne)}return d.log("Fetch response: "+q.status+" "+(g||"GET")+0+m),q.text().then(function(ue){var we=ue;try{we=JSON.parse(ue)}catch{}return!we&&q.status&&(we="API Response: ".concat(q.status)),q.status&&q.status>=200&&q.status<300?we:Promise.reject(new Error(we))})}d.log("Received response with identity mismatch, ignoring response. Requested: ".concat(_,", Current: ").concat(te))})},this.evaluateFlag=function(m,g){if(d.datadogRum&&(d.datadogRum.client.addFeatureFlagEvaluation?g==="VALUE"?d.datadogRum.client.addFeatureFlagEvaluation(N+m,d.getValue(m,{},!0)):d.datadogRum.client.addFeatureFlagEvaluation(O+m,d.hasFeature(m,!0)):console.error("Flagsmith: Your datadog RUM client does not support the function addFeatureFlagEvaluation, please update it.")),d.enableAnalytics){if(!d.evaluationEvent||!d.evaluationContext.environment)return;d.evaluationEvent[d.evaluationContext.environment.apiKey]||(d.evaluationEvent[d.evaluationContext.environment.apiKey]={}),d.evaluationEvent[d.evaluationContext.environment.apiKey][m]===void 0&&(d.evaluationEvent[d.evaluationContext.environment.apiKey][m]=0),d.evaluationEvent[d.evaluationContext.environment.apiKey][m]+=1}d.updateEventStorage()},this._onChange=function(m,g,w){var x,R;d.setLoadingState(w),(x=d.onChange)===null||x===void 0||x.call(d,m,g,d.loadingState),(R=d._trigger)===null||R===void 0||R.call(d)},u=f.fetch?f.fetch:typeof fetch<"u"?fetch:Le==null?void 0:Le.fetch,this.canUseStorage=typeof window<"u"||!!f.browserlessStorage,this.log("Constructing flagsmith instance "+f),f.eventSource&&(E=f.eventSource),f.AsyncStorage&&(F=f.AsyncStorage)}return b.prototype.init=function(f){var d,m,g;return r(this,void 0,void 0,function(){var w,x,R,M,H,_,q,ee,ae,te,ne,de,ue,we,Ze,et,qe,re,J,En,tt,Si,nt,Tn,xi,ki,In,Ei,Cn,st,Ve,Ti,oe=this;return o(this,function(ge){switch(ge.label){case 0:w=v(f.evaluationContext||this.evaluationContext),ge.label=1;case 1:if(ge.trys.push([1,13,,14]),x=f.environmentID,R=f.api,M=R===void 0?k:R,H=f.headers,_=f.onChange,q=f.cacheFlags,ee=f.datadogRum,ae=f.onError,te=f.defaultFlags,ne=f.fetch,de=f.preventFetch,ue=f.enableLogs,we=f.enableDynatrace,Ze=f.enableAnalytics,et=f.realtime,qe=f.eventSourceUrl,re=qe===void 0?"https://realtime.flagsmith.com/":qe,J=f.AsyncStorage,En=f.identity,tt=f.traits,Si=f.state,nt=f.cacheOptions,Tn=f.angularHttpClient,xi=f._trigger,ki=f._triggerLoadingState,w.environment=x?{apiKey:x}:w.environment,!w.environment||!w.environment.apiKey)throw new Error("Please provide `evaluationContext.environment` with non-empty `apiKey`");if(w.identity=En||tt?{identifier:En,traits:tt?Object.fromEntries(Object.entries(tt).map(function(fe){return[fe[0],{value:fe[1]}]})):{}}:w.identity,this.evaluationContext=w,this.api=M,this.headers=H,this.getFlagInterval=null,this.analyticsInterval=null,this.onChange=_,In="Wrong Flagsmith Configuration: preventFetch is true and no defaulFlags provided",this._trigger=xi||this._trigger,this._triggerLoadingState=ki||this._triggerLoadingState,this.onError=function(fe){oe.setLoadingState(i(i({},oe.loadingState),{isFetching:!1,isLoading:!1,error:fe})),ae==null||ae(fe)},this.enableLogs=ue||!1,this.cacheOptions=nt?{skipAPI:!!nt.skipAPI,ttl:nt.ttl||0,loadStale:!!nt.loadStale}:this.cacheOptions,!this.cacheOptions.ttl&&this.cacheOptions.skipAPI&&console.warn("Flagsmith: you have set a cache ttl of 0 and are skipping API calls, this means the API will not be hit unless you clear local storage."),ne&&(u=ne),this.enableAnalytics=Ze||!1,this.flags=Object.assign({},te)||{},this.datadogRum=ee||null,this.initialised=!0,this.ticks=1e4,this.timer=this.enableLogs?new Date().valueOf():null,this.cacheFlags=F!==void 0&&!!q,J&&(F=J),et&&typeof window<"u"&&this.setupRealtime(re,w.environment.apiKey),Object.keys(this.flags).length&&(this.loadingState=i(i({},this.loadingState),{isLoading:!1,source:c.DEFAULT_FLAGS})),this.setState(Si),this.log("Initialising with properties",f,this),we&&(typeof dtrum>"u"?console.error("You have attempted to enable dynatrace but dtrum is undefined, please check you have the Dynatrace RUM JavaScript API installed."):this.dtrum=dtrum),Tn&&(u=function(fe){return function(Se,xe){var Ne=xe.headers,Y=xe.method,Ge=xe.body;return new Promise(function(De){switch(Y){case"GET":return fe.get(Se,{headers:Ne}).subscribe(function(Ee){De({ok:!0,text:function(){return Promise.resolve(Ee)}})});case"POST":case"PUT":return fe.post(Se,Ge,{headers:Ne}).subscribe(function(Ee){De({ok:!0,text:function(){return Promise.resolve(Ee)}})})}})}}(Tn)),F&&this.canUseStorage&&F.getItem(A).then(function(fe){try{oe.evaluationEvent=JSON.parse(fe)||{}}catch{oe.evaluationEvent={}}oe.analyticsInterval=setInterval(oe.analyticsFlags,oe.ticks)}),this.enableAnalytics&&(this.analyticsInterval&&clearInterval(this.analyticsInterval),F&&this.canUseStorage&&F.getItem(A,function(fe,Se){if(Se&&oe.evaluationContext.environment){var xe=JSON.parse(Se);if(xe[oe.evaluationContext.environment.apiKey]){var Ne=oe.getState();oe.log("Retrieved events from cache",Se),oe.setState(i(i({},Ne),{evaluationEvent:xe[oe.evaluationContext.environment.apiKey]}))}}})),!q)return[3,9];if(!F||!this.canUseStorage)return[3,8];Ei=function(fe,Se){return r(oe,void 0,void 0,function(){var xe,Ne,Y,Ge,De,Ee,_n,Ii,Nn,On,Rn,Fn,An,Dn,Ln,Mn,Bn,Pn,jn,zn,Un,Hn,$n,Wn;return o(this,function(Oe){switch(Oe.label){case 0:if(!Se)return[3,7];xe=null,Ne=null,Oe.label=1;case 1:return Oe.trys.push([1,5,,6]),Y=JSON.parse(Se),Ge=!1,De=!1,Y&&Y.api===this.api&&((On=(Nn=Y.evaluationContext)===null||Nn===void 0?void 0:Nn.environment)===null||On===void 0?void 0:On.apiKey)===((Rn=this.evaluationContext.environment)===null||Rn===void 0?void 0:Rn.apiKey)&&(Ee=!0,this.evaluationContext.identity&&((An=(Fn=Y.evaluationContext)===null||Fn===void 0?void 0:Fn.identity)===null||An===void 0?void 0:An.identifier)!==this.evaluationContext.identity.identifier&&(this.log("Ignoring cache, identity has changed from "+((Ln=(Dn=Y.evaluationContext)===null||Dn===void 0?void 0:Dn.identity)===null||Ln===void 0?void 0:Ln.identifier)+" to "+this.evaluationContext.identity.identifier),Ee=!1),this.cacheOptions.ttl&&(!Y.ts||new Date().valueOf()-Y.ts>this.cacheOptions.ttl)&&(Y.ts&&!this.cacheOptions.loadStale?(this.log("Ignoring cache, timestamp is too old ts:"+Y.ts+" ttl: "+this.cacheOptions.ttl+" time elapsed since cache: "+(new Date().valueOf()-Y.ts)+"ms"),Ee=!1):Y.ts&&this.cacheOptions.loadStale&&(this.log("Loading stale cache, timestamp ts:"+Y.ts+" ttl: "+this.cacheOptions.ttl+" time elapsed since cache: "+(new Date().valueOf()-Y.ts)+"ms"),De=!0,Ee=!0)),Ee&&(Ge=!0,Ne=h((Mn=this.evaluationContext.identity)===null||Mn===void 0?void 0:Mn.traits,(Pn=(Bn=Y.evaluationContext)===null||Bn===void 0?void 0:Bn.identity)===null||Pn===void 0?void 0:Pn.traits),xe=h(this.flags,Y.flags),this.setState(i(i({},Y),{evaluationContext:v(i(i({},Y.evaluationContext),{identity:!((jn=Y.evaluationContext)===null||jn===void 0)&&jn.identity?i(i({},(zn=Y.evaluationContext)===null||zn===void 0?void 0:zn.identity),{traits:i(i({},((Hn=(Un=Y.evaluationContext)===null||Un===void 0?void 0:Un.identity)===null||Hn===void 0?void 0:Hn.traits)||{}),tt||{})}):void 0}))})),this.log("Retrieved flags from cache",Y))),Ge?(_n=!de&&(!this.cacheOptions.skipAPI||De),this._onChange(null,{isFromServer:!1,flagsChanged:xe,traitsChanged:Ne},this._loadedState(null,c.CACHE,_n)),this.oldFlags=this.flags,this.cacheOptions.skipAPI&&Ge&&!De&&this.log("Skipping API, using cache"),_n&&this.getFlags(),[3,4]):[3,2];case 2:return de?[3,4]:[4,this.getFlags()];case 3:Oe.sent(),Oe.label=4;case 4:return[3,6];case 5:return Ii=Oe.sent(),this.log("Exception fetching cached logs",Ii),[3,6];case 6:return[3,10];case 7:return de?[3,9]:[4,this.getFlags()];case 8:return Oe.sent(),[3,10];case 9:if(te)this._onChange(null,{isFromServer:!1,flagsChanged:h({},this.flags),traitsChanged:h({},($n=this.evaluationContext.identity)===null||$n===void 0?void 0:$n.traits)},this._loadedState(null,c.DEFAULT_FLAGS));else{if(!this.flags)throw new Error(In);this._onChange(null,{isFromServer:!1,flagsChanged:h({},this.flags),traitsChanged:h({},(Wn=this.evaluationContext.identity)===null||Wn===void 0?void 0:Wn.traits)},this._loadedState(null,c.DEFAULT_FLAGS))}Oe.label=10;case 10:return[2]}})})},ge.label=2;case 2:return ge.trys.push([2,7,,8]),F.getItemSync?(Cn=F.getItemSync(P),[3,5]):[3,3];case 3:return[4,F.getItem(P)];case 4:Cn=ge.sent(),ge.label=5;case 5:return[4,Ei(null,Cn)];case 6:case 7:return ge.sent(),[3,8];case 8:return[3,12];case 9:return de?[3,11]:[4,this.getFlags()];case 10:return ge.sent(),[3,12];case 11:if(te)this._onChange(null,{isFromServer:!1,flagsChanged:h({},te),traitsChanged:h({},(d=w.identity)===null||d===void 0?void 0:d.traits)},this._loadedState(null,c.DEFAULT_FLAGS));else if(this.flags&&(st=null,Object.keys(this.flags).length===0&&(st=In),this._onChange(null,{isFromServer:!1,flagsChanged:h({},this.flags),traitsChanged:h({},(m=w.identity)===null||m===void 0?void 0:m.traits)},this._loadedState(st,c.DEFAULT_FLAGS)),st))throw new Error(st);ge.label=12;case 12:return[3,14];case 13:throw Ve=ge.sent(),this.log("Error during initialisation ",Ve),Ti=Ve instanceof Error?Ve:new Error("".concat(Ve)),(g=this.onError)===null||g===void 0||g.call(this,Ti),Ve;case 14:return[2]}})})},b.prototype._loadedState=function(f,d,m){return f===void 0&&(f=null),m===void 0&&(m=!1),{error:f,isFetching:m,isLoading:!1,source:d}},b.prototype.getAllFlags=function(){return this.flags},b.prototype.identify=function(f,d,m){return this.evaluationContext.identity={identifier:f,transient:m,traits:this.evaluationContext.identity&&this.evaluationContext.identity.identifier==f?this.evaluationContext.identity.traits:{}},this.evaluationContext.identity.identifier=f,this.log("Identify: "+this.evaluationContext.identity.identifier),d&&(this.evaluationContext.identity.traits=Object.fromEntries(Object.entries(d).map(function(g){var w=g[0],x=g[1];return[w,y(x)?x:{value:x}]}))),this.initialised?this.getFlags():Promise.resolve()},b.prototype.getState=function(){return{api:this.api,flags:this.flags,ts:this.ts,evaluationContext:this.evaluationContext,evaluationEvent:this.evaluationEvent}},b.prototype.setState=function(f){f&&(this.initialised=!0,this.api=f.api||this.api||k,this.flags=f.flags||this.flags,this.evaluationContext=f.evaluationContext||this.evaluationContext,this.evaluationEvent=f.evaluationEvent||this.evaluationEvent,this.log("setState called",this))},b.prototype.logout=function(){return this.evaluationContext.identity=null,this.initialised?this.getFlags():Promise.resolve()},b.prototype.startListening=function(f){f===void 0&&(f=1e3),this.getFlagInterval&&clearInterval(this.getFlagInterval),this.getFlagInterval=setInterval(this.getFlags,f)},b.prototype.stopListening=function(){this.getFlagInterval&&(clearInterval(this.getFlagInterval),this.getFlagInterval=null)},b.prototype.log=function(){for(var f=[],d=0;d<arguments.length;d++)f[d]=arguments[d];this.enableLogs&&console.log.apply(this,l(["FLAGSMITH:",new Date().valueOf()-(this.timer||0),"ms"],f,!0))},b.prototype.updateStorage=function(){if(this.cacheFlags){this.ts=new Date().valueOf();var f=JSON.stringify(this.getState());this.log("Setting storage",f),F.setItem(P,f)}},b.prototype.updateEventStorage=function(){if(this.enableAnalytics){var f=JSON.stringify(this.getState().evaluationEvent);F.setItem(A,f)}},b.prototype.setLoadingState=function(f){var d;a(f,this.loadingState)||(this.loadingState=i({},f),this.log("Loading state changed",f),(d=this._triggerLoadingState)===null||d===void 0||d.call(this))},b.prototype.setupRealtime=function(f,d){var m=this,g=f+"sse/environments/"+d+"/stream";E?this.eventSource||(this.log("Creating event source with url "+g),this.eventSource=new E(g),this.eventSource.addEventListener("environment_updated",function(w){var x;try{x=JSON.parse(w.data).updated_at}catch(R){m.log("Could not parse sse event",R)}x?!m.timestamp||x>m.timestamp?m.isLoading?m.log("updated_at is new, but flags are loading",w.data,m.timestamp):(m.log("updated_at is new, fetching flags",w.data,m.timestamp),m.getFlags()):m.log("updated_at is outdated, skipping get flags",w.data,m.timestamp):m.log("No updated_at received, fetching flags",w)})):this.log("Error, EventSource is undefined")},b}();function T(b){var f=b.fetch,d=b.AsyncStorage,m=b.eventSource;return new I({fetch:f,AsyncStorage:d,eventSource:m})}var B,G=(B=function(b,f){return B=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,m){d.__proto__=m}||function(d,m){for(var g in m)Object.prototype.hasOwnProperty.call(m,g)&&(d[g]=m[g])},B(b,f)},function(b,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");function d(){this.constructor=b}B(b,f),b.prototype=f===null?Object.create(f):(d.prototype=f.prototype,new d)}),j=function(b){var f=typeof Symbol=="function"&&Symbol.iterator,d=f&&b[f],m=0;if(d)return d.call(b);if(b&&typeof b.length=="number")return{next:function(){return b&&m>=b.length&&(b=void 0),{value:b&&b[m++],done:!b}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")},$=function(b,f){var d=typeof Symbol=="function"&&b[Symbol.iterator];if(!d)return b;var m,g,w=d.call(b),x=[];try{for(;(f===void 0||f-- >0)&&!(m=w.next()).done;)x.push(m.value)}catch(R){g={error:R}}finally{try{m&&!m.done&&(d=w.return)&&d.call(w)}finally{if(g)throw g.error}}return x},C=function(b,f,d){if(d||arguments.length===2)for(var m,g=0,w=f.length;g<w;g++)!m&&g in f||(m||(m=Array.prototype.slice.call(f,0,g)),m[g]=f[g]);return b.concat(m||Array.prototype.slice.call(f))},L=function(b){function f(){return b.call(this,`EventSource not available.
644
- Consider loading an EventSource polyfill and making it available globally as EventSource, or passing one in as eventSourceClass to the ReconnectingEventSource constructor.`)||this}return G(f,b),f}(Error),V=function(){function b(f,d){var m=this;if(this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,this._configuration=d!=null?Object.assign({},d):void 0,this.withCredentials=!1,this._eventSource=null,this._lastEventId=null,this._timer=null,this._listeners={open:[],error:[],message:[]},this.url=f.toString(),this.readyState=this.CONNECTING,this.max_retry_time=3e3,this.eventSourceClass=globalThis.FlagsmithEventSource,this._configuration!=null&&(this._configuration.lastEventId&&(this._lastEventId=this._configuration.lastEventId,delete this._configuration.lastEventId),this._configuration.max_retry_time&&(this.max_retry_time=this._configuration.max_retry_time,delete this._configuration.max_retry_time),this._configuration.eventSourceClass&&(this.eventSourceClass=this._configuration.eventSourceClass,delete this._configuration.eventSourceClass)),this.eventSourceClass==null||typeof this.eventSourceClass!="function")throw new L;this._onevent_wrapped=function(g){m._onevent(g)},this._start()}return b.prototype.dispatchEvent=function(f){throw new Error("Method not implemented.")},b.prototype._start=function(){var f,d,m=this,g=this.url;this._lastEventId&&(g.indexOf("?")===-1?g+="?":g+="&",g+="lastEventId="+encodeURIComponent(this._lastEventId)),this._eventSource=new this.eventSourceClass(g,this._configuration),this._eventSource.onopen=function(M){m._onopen(M)},this._eventSource.onerror=function(M){m._onerror(M)},this._eventSource.onmessage=function(M){m.onmessage(M)};try{for(var w=j(Object.keys(this._listeners)),x=w.next();!x.done;x=w.next()){var R=x.value;this._eventSource.addEventListener(R,this._onevent_wrapped)}}catch(M){f={error:M}}finally{try{x&&!x.done&&(d=w.return)&&d.call(w)}finally{if(f)throw f.error}}},b.prototype._onopen=function(f){this.readyState===0&&(this.readyState=1,this.onopen(f))},b.prototype._onerror=function(f){var d=this;if(this.readyState===1&&(this.readyState=0,this.onerror(f)),this._eventSource){this._eventSource.close(),this._eventSource=null;var m=Math.round(this.max_retry_time*Math.random());this._timer=setTimeout(function(){return d._start()},m)}},b.prototype._onevent=function(f){var d,m;f&&f.lastEventId&&(this._lastEventId=f.lastEventId);var g=this._listeners[f.type];if(g!=null)try{for(var w=j(C([],$(g),!1)),x=w.next();!x.done;x=w.next())x.value.call(this,f)}catch(R){d={error:R}}finally{try{x&&!x.done&&(m=w.return)&&m.call(w)}finally{if(d)throw d.error}}f.type==="message"&&this.onmessage(f)},b.prototype.onopen=function(f){},b.prototype.onerror=function(f){},b.prototype.onmessage=function(f){},b.prototype.close=function(){this._timer&&(clearTimeout(this._timer),this._timer=null),this._eventSource&&(this._eventSource.close(),this._eventSource=null),this.readyState=2},b.prototype.addEventListener=function(f,d,m){this._listeners[f]==null&&(this._listeners[f]=[],this._eventSource!=null&&this._eventSource.addEventListener(f,this._onevent_wrapped));var g=this._listeners[f];g.includes(d)||(this._listeners[f]=C(C([],$(g),!1),[d],!1))},b.prototype.removeEventListener=function(f,d,m){var g=this._listeners[f];this._listeners[f]=g.filter(function(w){return w!==d})},b}();globalThis.FlagsmithEventSource=typeof EventSource<"u"?EventSource:null;var K=function(b,f){return f=f||{},new Promise(function(d,m){var g=new XMLHttpRequest,w=[],x=[],R={},M=function(){return{ok:(g.status/100|0)==2,statusText:g.statusText,status:g.status,url:g.responseURL,text:function(){return Promise.resolve(g.responseText)},json:function(){return Promise.resolve(g.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([g.response]))},clone:M,headers:{keys:function(){return w},entries:function(){return x},get:function(_){return R[_.toLowerCase()]},has:function(_){return _.toLowerCase()in R}}}};for(var H in g.open(f.method||"get",b,!0),g.onload=function(){g.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(_,q,ee){w.push(q=q.toLowerCase()),x.push([q,ee]),R[q]=R[q]?R[q]+","+ee:ee}),d(M())},g.onerror=m,g.withCredentials=f.credentials=="include",f.headers)g.setRequestHeader(H,f.headers[H]);g.send(f.body||null)})},U=T({AsyncStorage:s,fetch:K,eventSource:V});typeof window<"u"&&(window.flagsmith=U),n.createFlagsmithInstance=function(){return T({AsyncStorage:s,fetch:K,eventSource:V})},n.default=U,Object.defineProperty(n,"__esModule",{value:!0})})})(Dt,Dt.exports);var Di=Dt.exports;const Kn=Gn(Di);var Jn={},Li=function(t,e,n,s,i){var r=new Worker(Jn[e]||(Jn[e]=URL.createObjectURL(new Blob([t+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return r.onmessage=function(o){var l=o.data,a=l.$e$;if(a){var h=new Error(a[0]);h.code=a[1],h.stack=a[2],i(h,null)}else i(null,l)},r.postMessage(n,s),r},ce=Uint8Array,ie=Uint16Array,ot=Int32Array,at=new ce([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ct=new ce([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Lt=new ce([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Xn=function(t,e){for(var n=new ie(31),s=0;s<31;++s)n[s]=e+=1<<t[s-1];for(var i=new ot(n[30]),s=1;s<30;++s)for(var r=n[s];r<n[s+1];++r)i[r]=r-n[s]<<5|s;return{b:n,r:i}},Yn=Xn(at,2),Mi=Yn.b,lt=Yn.r;Mi[28]=258,lt[258]=28;for(var Bi=Xn(ct,0),Mt=Bi.r,ht=new ie(32768),X=0;X<32768;++X){var Te=(X&43690)>>1|(X&21845)<<1;Te=(Te&52428)>>2|(Te&13107)<<2,Te=(Te&61680)>>4|(Te&3855)<<4,ht[X]=((Te&65280)>>8|(Te&255)<<8)>>1}for(var Me=function(t,e,n){for(var s=t.length,i=0,r=new ie(e);i<s;++i)t[i]&&++r[t[i]-1];var o=new ie(e);for(i=1;i<e;++i)o[i]=o[i-1]+r[i-1]<<1;var l;if(n){l=new ie(1<<e);var a=15-e;for(i=0;i<s;++i)if(t[i])for(var h=i<<4|t[i],c=e-t[i],u=o[t[i]-1]++<<c,p=u|(1<<c)-1;u<=p;++u)l[ht[u]>>a]=h}else for(l=new ie(s),i=0;i<s;++i)t[i]&&(l[i]=ht[o[t[i]-1]++]>>15-t[i]);return l},Ie=new ce(288),X=0;X<144;++X)Ie[X]=8;for(var X=144;X<256;++X)Ie[X]=9;for(var X=256;X<280;++X)Ie[X]=7;for(var X=280;X<288;++X)Ie[X]=8;for(var Je=new ce(32),X=0;X<32;++X)Je[X]=5;var Qn=Me(Ie,9,0),Zn=Me(Je,5,0),Bt=function(t){return(t+7)/8|0},es=function(t,e,n){return(e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new ce(t.subarray(e,n))},Pi=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ts=function(t,e,n){var s=new Error(e||Pi[t]);if(s.code=t,Error.captureStackTrace&&Error.captureStackTrace(s,ts),!n)throw s;return s},me=function(t,e,n){n<<=e&7;var s=e/8|0;t[s]|=n,t[s+1]|=n>>8},Be=function(t,e,n){n<<=e&7;var s=e/8|0;t[s]|=n,t[s+1]|=n>>8,t[s+2]|=n>>16},dt=function(t,e){for(var n=[],s=0;s<t.length;++s)t[s]&&n.push({s,f:t[s]});var i=n.length,r=n.slice();if(!i)return{t:Ut,l:0};if(i==1){var o=new ce(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(N,O){return N.f-O.f}),n.push({s:-1,f:25001});var l=n[0],a=n[1],h=0,c=1,u=2;for(n[0]={s:-1,f:l.f+a.f,l,r:a};c!=i-1;)l=n[n[h].f<n[u].f?h++:u++],a=n[h!=c&&n[h].f<n[u].f?h++:u++],n[c++]={s:-1,f:l.f+a.f,l,r:a};for(var p=r[0].s,s=1;s<i;++s)r[s].s>p&&(p=r[s].s);var y=new ie(p+1),S=ut(n[c-1],y,0);if(S>e){var s=0,v=0,E=S-e,F=1<<E;for(r.sort(function(O,D){return y[D.s]-y[O.s]||O.f-D.f});s<i;++s){var P=r[s].s;if(y[P]>e)v+=F-(1<<S-y[P]),y[P]=e;else break}for(v>>=E;v>0;){var A=r[s].s;y[A]<e?v-=1<<e-y[A]++-1:++s}for(;s>=0&&v;--s){var k=r[s].s;y[k]==e&&(--y[k],++v)}S=e}return{t:new ce(y),l:S}},ut=function(t,e,n){return t.s==-1?Math.max(ut(t.l,e,n+1),ut(t.r,e,n+1)):e[t.s]=n},Pt=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new ie(++e),s=0,i=t[0],r=1,o=function(a){n[s++]=a},l=1;l<=e;++l)if(t[l]==i&&l!=e)++r;else{if(!i&&r>2){for(;r>138;r-=138)o(32754);r>2&&(o(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(o(i),--r;r>6;r-=6)o(8304);r>2&&(o(r-3<<5|8208),r=0)}for(;r--;)o(i);r=1,i=t[l]}return{c:n.subarray(0,s),n:e}},Pe=function(t,e){for(var n=0,s=0;s<e.length;++s)n+=t[s]*e[s];return n},jt=function(t,e,n){var s=n.length,i=Bt(e+2);t[i]=s&255,t[i+1]=s>>8,t[i+2]=t[i]^255,t[i+3]=t[i+1]^255;for(var r=0;r<s;++r)t[i+r+4]=n[r];return(i+4+s)*8},zt=function(t,e,n,s,i,r,o,l,a,h,c){me(e,c++,n),++i[256];for(var u=dt(i,15),p=u.t,y=u.l,S=dt(r,15),v=S.t,E=S.l,F=Pt(p),P=F.c,A=F.n,k=Pt(v),N=k.c,O=k.n,D=new ie(19),I=0;I<P.length;++I)++D[P[I]&31];for(var I=0;I<N.length;++I)++D[N[I]&31];for(var T=dt(D,7),B=T.t,G=T.l,j=19;j>4&&!B[Lt[j-1]];--j);var $=h+5<<3,C=Pe(i,Ie)+Pe(r,Je)+o,L=Pe(i,p)+Pe(r,v)+o+14+3*j+Pe(D,B)+2*D[16]+3*D[17]+7*D[18];if(a>=0&&$<=C&&$<=L)return jt(e,c,t.subarray(a,a+h));var V,K,U,b;if(me(e,c,1+(L<C)),c+=2,L<C){V=Me(p,y,0),K=p,U=Me(v,E,0),b=v;var f=Me(B,G,0);me(e,c,A-257),me(e,c+5,O-1),me(e,c+10,j-4),c+=14;for(var I=0;I<j;++I)me(e,c+3*I,B[Lt[I]]);c+=3*j;for(var d=[P,N],m=0;m<2;++m)for(var g=d[m],I=0;I<g.length;++I){var w=g[I]&31;me(e,c,f[w]),c+=B[w],w>15&&(me(e,c,g[I]>>5&127),c+=g[I]>>12)}}else V=Qn,K=Ie,U=Zn,b=Je;for(var I=0;I<l;++I){var x=s[I];if(x>255){var w=x>>18&31;Be(e,c,V[w+257]),c+=K[w+257],w>7&&(me(e,c,x>>23&31),c+=at[w]);var R=x&31;Be(e,c,U[R]),c+=b[R],R>3&&(Be(e,c,x>>5&8191),c+=ct[R])}else Be(e,c,V[x]),c+=K[x]}return Be(e,c,V[256]),c+K[256]},ns=new ot([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ut=new ce(0),ss=function(t,e,n,s,i,r){var o=r.z||t.length,l=new ce(s+o+5*(1+Math.ceil(o/7e3))+i),a=l.subarray(s,l.length-i),h=r.l,c=(r.r||0)&7;if(e){c&&(a[0]=r.r>>3);for(var u=ns[e-1],p=u>>13,y=u&8191,S=(1<<n)-1,v=r.p||new ie(32768),E=r.h||new ie(S+1),F=Math.ceil(n/3),P=2*F,A=function(ne){return(t[ne]^t[ne+1]<<F^t[ne+2]<<P)&S},k=new ot(25e3),N=new ie(288),O=new ie(32),D=0,I=0,T=r.i||0,B=0,G=r.w||0,j=0;T+2<o;++T){var $=A(T),C=T&32767,L=E[$];if(v[C]=L,E[$]=C,G<=T){var V=o-T;if((D>7e3||B>24576)&&(V>423||!h)){c=zt(t,a,0,k,N,O,I,B,j,T-j,c),B=D=I=0,j=T;for(var K=0;K<286;++K)N[K]=0;for(var K=0;K<30;++K)O[K]=0}var U=2,b=0,f=y,d=C-L&32767;if(V>2&&$==A(T-d))for(var m=Math.min(p,V)-1,g=Math.min(32767,T),w=Math.min(258,V);d<=g&&--f&&C!=L;){if(t[T+U]==t[T+U-d]){for(var x=0;x<w&&t[T+x]==t[T+x-d];++x);if(x>U){if(U=x,b=d,x>m)break;for(var R=Math.min(d,x-2),M=0,K=0;K<R;++K){var H=T-d+K&32767,_=v[H],q=H-_&32767;q>M&&(M=q,L=H)}}}C=L,L=v[C],d+=C-L&32767}if(b){k[B++]=268435456|lt[U]<<18|Mt[b];var ee=lt[U]&31,ae=Mt[b]&31;I+=at[ee]+ct[ae],++N[257+ee],++O[ae],G=T+U,++D}else k[B++]=t[T],++N[t[T]]}}for(T=Math.max(T,G);T<o;++T)k[B++]=t[T],++N[t[T]];c=zt(t,a,h,k,N,O,I,B,j,T-j,c),h||(r.r=c&7|a[c/8|0]<<3,c-=7,r.h=E,r.p=v,r.i=T,r.w=G)}else{for(var T=r.w||0;T<o+h;T+=65535){var te=T+65535;te>=o&&(a[c/8|0]=h,te=o),c=jt(a,c+1,t.subarray(T,te))}r.i=o}return es(l,0,s+Bt(c)+i)},is=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var n=e,s=9;--s;)n=(n&1&&-306674912)^n>>>1;t[e]=n}return t}(),rs=function(){var t=-1;return{p:function(e){for(var n=t,s=0;s<e.length;++s)n=is[n&255^e[s]]^n>>>8;t=n},d:function(){return~t}}},Ht=function(t,e,n,s,i){if(!i&&(i={l:1},e.dictionary)){var r=e.dictionary.subarray(-32768),o=new ce(r.length+t.length);o.set(r),o.set(t,r.length),t=o,i.w=r.length}return ss(t,e.level==null?6:e.level,e.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,n,s,i)},ji=function(t,e){var n={};for(var s in t)n[s]=t[s];for(var s in e)n[s]=e[s];return n},os=function(t,e,n){for(var s=t(),i=t.toString(),r=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o<s.length;++o){var l=s[o],a=r[o];if(typeof l=="function"){e+=";"+a+"=";var h=l.toString();if(l.prototype)if(h.indexOf("[native code]")!=-1){var c=h.indexOf(" ",8)+1;e+=h.slice(c,h.indexOf("(",c))}else{e+=h;for(var u in l.prototype)e+=";"+a+".prototype."+u+"="+l.prototype[u].toString()}else e+=h}else n[a]=l}return e},ft=[],zi=function(t){var e=[];for(var n in t)t[n].buffer&&e.push((t[n]=new t[n].constructor(t[n])).buffer);return e},Ui=function(t,e,n,s){if(!ft[n]){for(var i="",r={},o=t.length-1,l=0;l<o;++l)i=os(t[l],i,r);ft[n]={c:os(t[o],i,r),e:r}}var a=ji({},ft[n].e);return Li(ft[n].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+e.toString()+"}",n,a,zi(a),s)},Hi=function(){return[ce,ie,ot,at,ct,Lt,lt,Mt,Qn,Ie,Zn,Je,ht,ns,Ut,Me,me,Be,dt,ut,Pt,Pe,jt,zt,Bt,es,ss,Ht,qi,as]},$i=function(){return[cs,ls,pt,rs,is]},as=function(t){return postMessage(t,[t.buffer])},Wi=function(t,e,n,s,i,r){var o=Ui(n,s,i,function(l,a){o.terminate(),r(l,a)});return o.postMessage([t,e],e.consume?[t.buffer]:[]),function(){o.terminate()}},pt=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8},cs=function(t,e){var n=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:e.level==9?2:0,t[9]=3,e.mtime!=0&&pt(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),n){t[3]=8;for(var s=0;s<=n.length;++s)t[s+10]=n.charCodeAt(s)}},ls=function(t){return 10+(t.filename?t.filename.length+1:0)};function qi(t,e){return Ht(t,e||{},0,0)}function Vi(t,e,n){return n||(n=e,e={}),typeof n!="function"&&ts(7),Wi(t,e,[Hi,$i,function(){return[hs]}],function(s){return as(hs(s.data[0],s.data[1]))},2,n)}function hs(t,e){e||(e={});var n=rs(),s=t.length;n.p(t);var i=Ht(t,e,ls(e),8),r=i.length;return cs(i,e),pt(i,r-8,n.d()),pt(i,r-4,s),i}var Gi=typeof TextDecoder<"u"&&new TextDecoder,Ki=0;try{Gi.decode(Ut,{stream:!0}),Ki=1}catch{}class ds{constructor(){this.idx=1,this.backDict={}}getKey(e){let n=!1;return this.backDict[e]||(n=!0,this.backDict[e]=this.idx++),[this.backDict[e],n]}}class Ji{constructor(e,n){this.app=e,this.isDictDisabled=n,this.dict=new ds}sendSetAttribute(e,n,s){if(this.isDictDisabled){const i=[12,e,n,s];return this.app.send(i)}else{const i=[51,e,this.applyDict(n),this.applyDict(s)];return this.app.send(i)}}applyDict(e){const[n,s]=this.dict.getKey(e);return s&&this.app.send([50,n,e]),n}clear(){this.dict=new ds}}class Xi{constructor(e,n){this.app=e,this.startParams=n,this.conditions=[],this.hasStarted=!1,this.createConditionFromFilter=s=>{if(s.value.length){const i=Yi(s);if(i.type)return i}},this.durationInt=null}setConditions(e){this.conditions=e}async fetchConditions(e,n){try{const s=await fetch(`${this.app.options.ingestPoint}/v1/web/conditions/${e}`,{method:"GET",headers:{Authorization:`Bearer ${n}`}}),{conditions:i}=await s.json(),r=[];i.forEach(o=>{o.filters.forEach(a=>{let h;a.type==="fetch"?(h={type:"network_request",subConditions:[],name:o.name},a.filters.forEach(c=>{const u=this.createConditionFromFilter(c);u&&h.subConditions.push(u)})):h=this.createConditionFromFilter(a),h&&(h.type==="session_duration"&&this.processDuration(h.value[0],o.name),r.push({...h,name:o.name}))})}),this.conditions=r}catch{this.app.debug.error("Critical: cannot fetch start conditions")}}trigger(e){if(!this.hasStarted)try{this.hasStarted=!0,this.app.start(this.startParams,void 0,e)}catch(n){this.app.debug.error(n)}}processMessage(e){if(!this.hasStarted)switch(e[0]){case 78:this.jsExceptionEvent(e);break;case 27:this.customEvent(e);break;case 68:this.clickEvent(e);break;case 122:this.pageLocationEvent(e);break;case 83:this.networkRequest(e);break}}processFlags(e){const n=this.conditions.filter(s=>s.type==="feature_flag");n.length&&n.forEach(s=>{const i=je[s.operator];i&&e.find(r=>i(r.key,s.value))&&this.trigger(s.name)})}processDuration(e,n){this.durationInt=setInterval(()=>{performance.now()>e&&this.trigger(n)},1e3),this.app.attachStopCallback(()=>{this.durationInt&&clearInterval(this.durationInt)})}networkRequest(e){const n=this.conditions.filter(s=>s.type==="network_request");n.length&&n.forEach(s=>{const i=s.subConditions.filter(r=>r.operator!=="isAny");i.length?i.every(o=>{let l;switch(o.key){case"url":l=e[3];break;case"status":l=e[6];break;case"method":l=e[2];break;case"duration":l=e[8];break}const a=je[o.operator];if(a&&a(l,o.value))return!0})&&this.trigger(s.name):i.length===0&&s.subConditions.length&&this.trigger(s.name)})}customEvent(e){const n=this.conditions.filter(s=>s.type==="custom_event");n.length&&n.forEach(s=>{const i=je[s.operator];i&&(i(e[1],s.value)||i(e[2],s.value))&&this.trigger(s.name)})}clickEvent(e){const n=this.conditions.filter(s=>s.type==="click");n.length&&n.forEach(s=>{const i=je[s.operator];i&&(i(e[3],s.value)||i(e[4],s.value))&&this.trigger(s.name)})}pageLocationEvent(e){const n=this.conditions.filter(s=>s.type==="visited_url");n&&n.forEach(s=>{const i=je[s.operator];i&&i(e[1],s.value)&&this.trigger(s.name)})}jsExceptionEvent(e){const n=[e[1],e[2],e[3]],s=this.conditions.filter(i=>i.type==="exception");s&&s.forEach(i=>{const r=je[i.operator];r&&n.some(o=>r(o,i.value))&&this.trigger(i.name)})}}const je={is:(t,e)=>e.some(n=>t.includes(n)),isAny:()=>!0,isNot:(t,e)=>!e.some(n=>t.includes(n)),contains:(t,e)=>e.some(n=>t.includes(n)),notContains:(t,e)=>!e.some(n=>t.includes(n)),startsWith:(t,e)=>e.some(n=>t.startsWith(n)),endsWith:(t,e)=>e.some(n=>t.endsWith(n)),greaterThan:(t,e)=>t>e,greaterOrEqual:(t,e)=>t>=e,lessOrEqual:(t,e)=>t<=e,lessThan:(t,e)=>t<e},Yi=t=>{const e={on:"is",notOn:"isNot",">":"greaterThan","<":"lessThan","=":"is","<=":"lessOrEqual",">=":"greaterOrEqual"},n=i=>{if(Object.keys(e).includes(i))return e[i]};let s={type:"",operator:"",value:t.value,key:""};switch(t.type){case"click":s={type:"click",operator:n(t.operator),value:t.value,key:""};break;case"location":s={type:"visited_url",operator:t.operator,value:t.value,key:""};break;case"custom":s={type:"custom_event",operator:t.operator,value:t.value,key:""};break;case"metadata":s={type:t.source==="featureFlag"?"feature_flag":t.type,operator:t.operator,value:t.value,key:""};break;case"error":s={type:"exception",operator:t.operator,value:t.value,key:""};break;case"duration":s={type:"session_duration",value:t.value[0],key:""};break;case"fetchUrl":s={type:"network_request",key:"url",operator:t.operator,value:t.value};break;case"fetchStatusCode":s={type:"network_request",key:"status",operator:n(t.operator),value:t.value};break;case"fetchMethod":s={type:"network_request",key:"method",operator:n(t.operator),value:t.value};break;case"fetchDuration":s={type:"network_request",key:"duration",operator:n(t.operator),value:t.value};break}return s};class Qi{constructor(e){this.app=e,this.flags=[],this.storageKey="__openreplay_flags";const n=this.app.sessionStorage.getItem(this.storageKey);if(n){const s=n.split(";").filter(Boolean);this.flags=s.map(i=>JSON.parse(i))}}getFeatureFlag(e){return this.flags.find(n=>n.key===e)}isFlagEnabled(e){return this.flags.findIndex(n=>n.key===e)!==-1}onFlagsLoad(e){this.onFlagsCb=e}async reloadFlags(e){const n=this.app.sessionStorage.getItem(this.storageKey),s={};n&&n.split(";").filter(Boolean).forEach(c=>{const u=JSON.parse(c);s[u.key]={key:u.key,value:u.value}});const i=this.app.session.getInfo(),r=this.app.session.userInfo,o={projectID:i.projectID,userID:i.userID,metadata:i.metadata,referrer:document.referrer,os:r.userOS,device:r.userDevice,country:r.userCountry,state:r.userState,city:r.userCity,browser:r.userBrowser,persistFlags:s},l=e??this.app.session.getSessionToken(),a=await fetch(this.app.options.ingestPoint+"/v1/web/feature-flags",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify(o)});if(a.status===200){const h=await a.json();return this.handleFlags(h.flags)}}handleFlags(e){var r;const n=[];e.forEach(o=>{o.is_persist&&n.push(o)});let s="";return this.diffPersist(n).forEach(o=>{s+=`${JSON.stringify(o)};`}),this.app.sessionStorage.setItem(this.storageKey,s),this.flags=e,(r=this.onFlagsCb)==null?void 0:r.call(this,e)}clearPersistFlags(){this.app.sessionStorage.removeItem(this.storageKey)}diffPersist(e){const n=this.app.sessionStorage.getItem(this.storageKey);if(!n)return e;const i=n.split(";").filter(Boolean).map(r=>JSON.parse(r));return e.filter(r=>i.findIndex(o=>o.key===r.key)===-1)}}const us={htmlmasked:"hidden",masked:"obscured"},be=!(typeof window>"u"),Zi=be&&navigator.userAgent.match(/firefox|fxios/i),er=1e5;let $t=be?Date.now()-performance.now():0;function Wt(){$t=Date.now()-performance.now()}function ze(){return $t}const pe=be&&performance.now?()=>Math.round(performance.now()+$t):()=>Date.now(),qt="repeat"in String.prototype?t=>"*".repeat(t.length):t=>t.replace(/./g,"*");function fs(t){return t.trim().replace(/\s+/g," ")}function ps(t){return t.startsWith("https://")||t.startsWith("http://")}const gt="https://docs.openreplay.com",gs={};function Ce(t,e,n="/"){gs[t]||(console.warn(`OpenReplay: ${t} is deprecated. ${e?`Please, use ${e} instead.`:""} Visit ${gt}${n} for more information.`),gs[t]=!0)}function Vt(t){let e=t.getAttribute("data-openreplay-label");return e!==null||(e=t.getAttribute("data-asayer-label"),e!==null&&Ce('"data-asayer-label" attribute','"data-openreplay-label" attribute',"/")),e}function Re(t,e){const n=`data-openreplay-${e}`;return t.hasAttribute(n)?(us[e]&&Ce(`"${n}" attribute`,`"${us[e]}" attribute`,"/installation/sanitize-data"),!0):!1}function tr(t){try{return!!t.contentDocument}catch{return!1}}function ms(t){return t.toString(16).padStart(2,"0")}function nr(t){const e=new Uint8Array((t||40)/2),n=window.crypto||window.msCrypto;return n?(n.getRandomValues(e),Array.from(e,ms).join("")):Array.from({length:t||40},()=>ms(Math.floor(Math.random()*16))).join("")}function sr(){try{return window.self&&window.top&&window.self!==window.top}catch{return!0}}function Gt(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}function bs(t){const e=Gt("MutationObserver");return new window[e](t)}function ys(t,e,n,s){const i=Gt("addEventListener");try{t[i](e,n,s)}catch(r){const o=r.message;console.debug(`Openreplay: ${o}; if this error is caused by an IframeObserver, ignore it`)}}function vs(t,e,n,s){const i=Gt("removeEventListener");try{t[i](e,n,s)}catch(r){const o=r.message;console.debug(`Openreplay: ${o}; if this error is caused by an IframeObserver, ignore it`)}}class ir{constructor(){this.taskQueue=[],this.isRunning=!1}addTask(e){this.taskQueue.push(e),this.runTasks()}runTasks(){if(this.isRunning||this.taskQueue.length===0)return;this.isRunning=!0;const e=()=>{if(this.taskQueue.length===0){this.isRunning=!1;return}const n=this.taskQueue.shift();Promise.resolve(n()).then(()=>{requestAnimationFrame(()=>e())})};e()}}const rr=new ir;function or(t){rr.addTask(t)}function ws(t,e){const n={...t};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],r=t[s];typeof i=="object"&&!Array.isArray(i)&&i!==null?n[s]=ws(r||{},i):n[s]=i}return n}function Fe(t){return[0,t]}function ar(t,e){return[5,t,e]}function cr(t,e){return[6,t,e]}function lr(){return[7]}function hr(t,e,n,s,i){return[8,t,e,n,s,i]}function dr(t,e,n){return[9,t,e,n]}function ur(t,e,n){return[10,t,e,n]}function fr(t){return[11,t]}function Ss(t,e){return[13,t,e]}function pr(t,e){return[14,t,e]}function gr(t,e,n){return[16,t,e,n]}function mr(t,e,n){return[18,t,e,n]}function br(t,e){return[19,t,e]}function yr(t,e){return[20,t,e]}function vr(t,e){return[22,t,e]}function wr(t,e,n,s,i,r,o,l,a){return[23,t,e,n,s,i,r,o,l,a]}function Sr(t,e,n){return[24,t,e,n]}function xr(t,e){return[27,t,e]}function kr(t){return[28,t]}function Er(t){return[29,t]}function xs(t,e){return[30,t,e]}function Tr(t,e,n,s){return[49,t,e,n,s]}function Ir(t,e){return[54,t,e]}function Cr(t){return[55,t]}function ks(t,e,n,s){return[57,t,e,n,s]}function Es(t){return[58,t]}function Kt(t,e,n,s){return[60,t,e,n,s]}function _r(t,e,n){return[61,t,e,n]}function Nr(t,e){return[63,t,e]}function Or(t,e){return[64,t,e]}function Rr(t,e,n,s,i,r){return[68,t,e,n,s,i,r]}function Jt(t,e){return[70,t,e]}function Ts(t,e,n){return[71,t,e,n]}function Xt(t,e,n,s){return[73,t,e,n,s]}function Is(t,e){return[75,t,e]}function Cs(t,e){return[76,t,e]}function Fr(t,e){return[77,t,e]}function Yt(t,e,n,s){return[78,t,e,n,s]}function mt(t,e,n,s,i,r,o,l,a){return[83,t,e,n,s,i,r,o,l,a]}function Ar(t,e,n,s,i,r){return[84,t,e,n,s,i,r]}function Dr(t,e,n,s,i,r){return[112,t,e,n,s,i,r]}function _s(t,e,n){return[113,t,e,n]}function Lr(t){return[114,t]}function Mr(t){return[115,t]}function Ns(t,e,n,s,i,r,o,l,a,h){return[116,t,e,n,s,i,r,o,l,a,h]}function bt(t){return[117,t]}function Ae(t){return[118,t]}function Br(t,e){return[119,t,e]}function Pr(t){return[120,t]}function jr(t,e,n,s){return[122,t,e,n,s]}const Qt=be&&"performance"in window&&"memory"in performance?performance:{memory:{}},Zt=be?(navigator.deviceMemory||0)*1024:0,en=Qt.memory.jsHeapSizeLimit||0;function zr(t,e){if(!Object.assign({capturePerformance:!0},e).capturePerformance)return;let s,i;const r=()=>{s===void 0||s===-1||(s++,requestAnimationFrame(r))};t.ticker.attach(()=>{i===void 0||i===-1||i++},0,!1);const o=()=>{s===void 0||i===void 0||(t.send(Tr(s,i,Qt.memory.totalJSHeapSize||0,Qt.memory.usedJSHeapSize||0)),i=s=document.hidden?-1:0)};t.attachStartCallback(()=>{i=s=-1,o(),r()}),t.attachStopCallback(()=>{i=s=void 0}),t.ticker.attach(o,40,!1),document.hidden!==void 0&&t.attachEventListener(document,"visibilitychange",o,!1,!1)}const Os="__or__watched_tags__";class Ur{constructor(e,n,s){this.sessionStorage=e,this.errLog=n,this.onTag=s,this.intervals={},this.tags=[];const i=JSON.parse(e.getItem(Os)??"[]");this.setTags(i),this.observer=new IntersectionObserver(r=>{r.forEach(o=>{if(o.isIntersecting&&o.target){const l=o.target.__or_watcher_tagname;l&&this.onTagRendered(l),this.observer.unobserve(o.target)}})})}async fetchTags(e,n){return fetch(`${e}/v1/web/tags`,{method:"GET",headers:{Authorization:`Bearer ${n}`}}).then(s=>s.json()).then(({tags:s})=>{if(s&&s.length){this.setTags(s);const i=JSON.stringify(s);this.sessionStorage.setItem(Os,i||"")}}).catch(s=>this.errLog(s))}setTags(e){this.tags=e,this.intervals={},e.forEach(n=>{this.intervals[n.id]=setInterval(()=>{const s=document.querySelectorAll(n.selector);if(s.length>0){const i=s[0];i.__or_watcher_tagname=n.id,this.observer.observe(i)}},500)})}onTagRendered(e){this.intervals[e]&&clearInterval(this.intervals[e]),this.onTag(e)}clear(){this.tags.forEach(e=>{clearInterval(this.intervals[e.id])}),this.tags=[],this.intervals={},this.observer.disconnect()}}const Hr={position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0, 0, 0, 0.40)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:999999,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'},$r={display:"flex",flexDirection:"column",gap:"2rem",alignItems:"center",padding:"1.5rem",borderRadius:"2px",border:"1px solid #D9D9D9",background:"#FFF",width:"22rem"},yt={display:"flex","flex-direction":"column",gap:"unset","align-items":"center",padding:"unset",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',"border-radius":"2px",border:"1px solid #D9D9D9",background:"rgba(255, 255, 255, 0.75)",width:"22rem"},Wr={fontFamily:"Verdana, sans-serif",fontSize:"1.25rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.75rem",color:"rgba(0, 0, 0, 0.85)"},qr={borderTop:"1px solid rgba(0, 0, 0, 0.06)",borderBottom:"1px solid rgba(0, 0, 0, 0.06)",padding:"1.25rem 0rem",color:"rgba(0, 0, 0, 0.85)",fontFamily:"Verdana, sans-serif",fontSize:"13px",fontStyle:"normal",fontWeight:"400",lineHeight:"auto",whiteSpace:"pre-wrap"},Vr={display:"flex",padding:"0.4rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.625rem",borderRadius:"0.25rem",border:"1px solid #394EFF",background:"#394EFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",color:"#FFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"1rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.5rem",cursor:"pointer"},Rs={fontFamily:"Verdana, sans-serif",fontSize:"13px",fontWeight:"500",lineHeight:"auto",display:"flex",justifyContent:"space-between",width:"100%",cursor:"pointer"},Ue={display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"0.625rem",fontSize:"13px",lineHeight:"auto"},Gr={padding:"0.5rem",gap:"0.5rem",fontFamily:"Verdana, sans-serif",fontSize:"16px",fontStyle:"normal",fontWeight:"500",lineHeight:"auto",color:"white",display:"flex",alignItems:"center",width:"100%",borderRadius:"2px",background:"rgba(0, 0, 0, 0.75)",boxSizing:"border-box"},He={boxSizing:"border-box",display:"block",width:"100%",borderBottom:"1px solid #D9D9D9",background:"#FFF",padding:"0.65rem",alignSelf:"stretch",color:"#000",fontFamily:"Verdana, sans-serif",fontStyle:"normal",fontWeight:"400"},Kr={...He,display:"flex",flexDirection:"column",alignItems:"center",gap:"0.625rem"},Fs={fontSize:"1.25rem",fontWeight:"500",cursor:"pointer",color:"#394EFF"},As={display:"flex",padding:"0.4rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.625rem",borderRadius:"0.25rem",border:"1px solid #394EFF",background:"#394EFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",color:"#FFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"1rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.5rem",width:"100%",boxSizing:"border-box",cursor:"pointer"},Ds={marginTop:"1rem",marginBottom:"1rem",cursor:"pointer",display:"block",fontWeight:"500",fontSize:"13px!important",lineHeight:"auto"},Jr={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"1rem",padding:"0.5rem",width:"100%",boxSizing:"border-box"},Ls={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em",outline:"1px solid #394EFF",fontSize:"13px",height:"24px",width:"24px"},Xr={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em",outline:"1px solid #D2DFFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",background:"#D2DFFF",fontSize:"13px",height:"24px",width:"24px"},Ms={borderRadius:"0.375rem",border:"1px solid rgba(0, 0, 0, 0.06)",background:"#F5F7FF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",display:"flex",flexDirection:"column",padding:"0.625rem 0.9375rem",gap:"0.5rem",alignSelf:"stretch"},Bs={fontWeight:"bold"},Yr={fontSize:"13px",lineHeight:"auto"},Ps={marginRight:"0.5rem",cursor:"pointer",color:"#394EFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"13px",fontStyle:"normal",fontWeight:"500",lineHeight:"auto"},Qr={...Ps,display:"flex",padding:"0.25rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.5rem",borderRadius:"0.25rem",border:"1px solid #394EFF"},Zr={display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",boxSizing:"border-box"},eo={border:"4px solid rgba(255, 255, 255, 0.4)",width:"16px",height:"16px",borderRadius:"50%",borderLeftColor:"#fff",animation:"spin 0.5s linear infinite"},js={Standard:{width:1280,height:720},High:{width:1920,height:1080}};class to{constructor(e){this.app=e,this.mediaRecorder=null,this.recordedChunks=[],this.stream=null,this.recStartTs=null}async startRecording(e,n,s,i){this.recStartTs=this.app.timestamp();const r=n;try{this.stream=await navigator.mediaDevices.getUserMedia({video:i?{...r,frameRate:{ideal:e}}:!1,audio:s}),this.mediaRecorder=new MediaRecorder(this.stream,{mimeType:"video/webm;codecs=vp9"}),this.recordedChunks=[],this.mediaRecorder.ondataavailable=o=>{o.data.size>0&&this.recordedChunks.push(o.data)},this.mediaRecorder.start()}catch(o){console.error(o)}}async stopRecording(){return new Promise(e=>{this.mediaRecorder&&(this.mediaRecorder.onstop=()=>{const n=new Blob(this.recordedChunks,{type:"video/webm"});e(n)},this.mediaRecorder.stop())})}async sendToAPI(){const e=await this.stopRecording();return fetch(`${this.app.options.ingestPoint}/v1/web/uxt/upload-url`,{headers:{Authorization:`Bearer ${this.app.session.getSessionToken()}`}}).then(n=>{if(n.ok)return n.json();throw new Error("Failed to get upload url")}).then(({url:n})=>fetch(n,{method:"PUT",headers:{"Content-Type":"video/webm"},body:e})).catch(console.error).finally(()=>{this.discard()})}async saveToFile(e="recorded-video.webm"){const n=await this.stopRecording(),s=URL.createObjectURL(n),i=document.createElement("a");i.style.display="none",i.href=s,i.download=e,document.body.appendChild(i),i.click(),window.URL.revokeObjectURL(s),document.body.removeChild(i)}discard(){var e,n;(e=this.mediaRecorder)==null||e.stop(),(n=this.stream)==null||n.getTracks().forEach(s=>s.stop())}}function no(t,e){e.onmousedown=function(n){const s=t.getBoundingClientRect(),i=n.clientX-s.left,r=n.clientY-s.top;t.style.position="fixed",t.style.zIndex=99999999999999,o(n.pageX,n.pageY);function o(h,c){let u=h-i,p=c-r;u<=5&&(u=5),p<=5&&(p=5),u>=window.innerWidth-s.width&&(u=window.innerWidth-s.width),p>=window.innerHeight-s.height&&(p=window.innerHeight-s.height),t.style.left=`${u}px`,t.style.top=`${p}px`}function l(h){o(h.pageX,h.pageY)}document.addEventListener("mousemove",l);const a=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a)},e.ondragstart=function(){return!1}}function so(){const t=document.createElement("div");t.className="grid";for(let e=0;e<16;e++){const n=document.createElement("div");Object.assign(n.style,{width:"2px",height:"2px",borderRadius:"10px",background:"white"}),n.className="cell",t.appendChild(n)}return Object.assign(t.style,{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gridTemplateRows:"repeat(4, 1fr)",gap:"2px",cursor:"grab"}),t}function io(){const t=document.createElement("div");Object.assign(t.style,{width:"0",height:"0",borderLeft:"7px solid transparent",borderRight:"7px solid transparent",borderBottom:"7px solid white"});const e=document.createElement("div");return e.appendChild(t),Object.assign(e.style,{display:"flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",cursor:"pointer",marginLeft:"auto",transform:"rotate(180deg)"}),e}function ro(){const t=document.createElement("style");t.type="text/css",t.innerText=`@keyframes spin {
647
+ `,Gn=document.createElement("style");Gn.textContent=it,document.head.appendChild(Gn);function Ni(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function rt(t,e,n){console.log(t,n);let s="";if(n){const i=new Date;i.setTime(i.getTime()+n*24*60*60*1e3),s="; expires="+i.toUTCString()}document.cookie=t+"="+(e||"")+s+"; path=/; secure; samesite=strict"}function se(t){const e=t+"=",n=document.cookie.split(";");for(let s=0;s<n.length;s++){let i=n[s];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(e)===0)return i.substring(e.length,i.length)}return null}function Oi(t){document.cookie=t+"=; Max-Age=-99999999;"}function Ri(){const t="uniqueUserID";let e=se(t);return e||(e=Ni(),rt(t,e,365)),e}function Ke(t,e){fetch("https://wineater-backend.vercel.app/proxy/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:t,properties:e})}).then(i=>{i.ok||console.error("Mixpanel tracking failed",i)}).catch(i=>{console.error("Mixpanel tracking error",i)})}function Ai(){Ke("Chatbot Opened",{distinct_id:se("uniqueUserID"),client:se("chatbotToken")})}function Vn(){Ke("Chatbot Closed",{distinct_id:se("uniqueUserID"),client:se("chatbotToken")})}function Di(t){Ke("Message Sent",{distinct_id:se("uniqueUserID"),message_content:t,client:se("chatbotToken")})}function Li(t){Ke("Products Got",{distinct_id:se("uniqueUserID"),products:t,client:se("chatbotToken")})}function Fi(t){Ke("Product Clicked",{distinct_id:se("uniqueUserID"),product_id:t,client:se("chatbotToken")})}var Fe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Kn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Lt={exports:{}};(function(t,e){(function(n,s){s(e)})(Fe,function(n){var s={getItemSync:function(b){try{return localStorage.getItem(b)||null}catch{return null}},getItem:function(b,f){var h=this;return new Promise(function(m,g){try{var w=h.getItemSync(b);f==null||f(null,w),m(w)}catch(x){f&&f(x,null),g(x)}})},setItem:function(b,f,h){return new Promise(function(m,g){try{localStorage.setItem(b,f),h&&h(null,f),m(f)}catch(w){h&&h(w,null),g(w)}})}},i=function(){return i=Object.assign||function(b){for(var f,h=1,m=arguments.length;h<m;h++)for(var g in f=arguments[h])Object.prototype.hasOwnProperty.call(f,g)&&(b[g]=f[g]);return b},i.apply(this,arguments)};function r(b,f,h,m){return new(h||(h=Promise))(function(g,w){function x($){try{M(m.next($))}catch(_){w(_)}}function R($){try{M(m.throw($))}catch(_){w(_)}}function M($){var _;$.done?g($.value):(_=$.value,_ instanceof h?_:new h(function(W){W(_)})).then(x,R)}M((m=m.apply(b,f||[])).next())})}function o(b,f){var h,m,g,w,x={label:0,sent:function(){if(1&g[0])throw g[1];return g[1]},trys:[],ops:[]};return w={next:R(0),throw:R(1),return:R(2)},typeof Symbol=="function"&&(w[Symbol.iterator]=function(){return this}),w;function R(M){return function($){return function(_){if(h)throw new TypeError("Generator is already executing.");for(;x;)try{if(h=1,m&&(g=2&_[0]?m.return:_[0]?m.throw||((g=m.return)&&g.call(m),0):m.next)&&!(g=g.call(m,_[1])).done)return g;switch(m=0,g&&(_=[2&_[0],g.value]),_[0]){case 0:case 1:g=_;break;case 4:return x.label++,{value:_[1],done:!1};case 5:x.label++,m=_[1],_=[0];continue;case 7:_=x.ops.pop(),x.trys.pop();continue;default:if(g=x.trys,!((g=g.length>0&&g[g.length-1])||_[0]!==6&&_[0]!==2)){x=0;continue}if(_[0]===3&&(!g||_[1]>g[0]&&_[1]<g[3])){x.label=_[1];break}if(_[0]===6&&x.label<g[1]){x.label=g[1],g=_;break}if(g&&x.label<g[2]){x.label=g[2],x.ops.push(_);break}g[2]&&x.ops.pop(),x.trys.pop();continue}_=f.call(b,x)}catch(W){_=[6,W],m=0}finally{h=g=0}if(5&_[0])throw _[1];return{value:_[0]?_[1]:void 0,done:!0}}([M,$])}}}function l(b,f,h){if(h||arguments.length===2)for(var m,g=0,w=f.length;g<w;g++)!m&&g in f||(m||(m=Array.prototype.slice.call(f,0,g)),m[g]=f[g]);return b.concat(m||Array.prototype.slice.call(f))}var a=function b(f,h){if(f===h)return!0;if(f&&h&&typeof f=="object"&&typeof h=="object"){if(f.constructor!==h.constructor)return!1;var m,g,w;if(Array.isArray(f)){if((m=f.length)!=h.length)return!1;for(g=m;g--!=0;)if(!b(f[g],h[g]))return!1;return!0}if(f.constructor===RegExp)return f.source===h.source&&f.flags===h.flags;if(f.valueOf!==Object.prototype.valueOf)return f.valueOf()===h.valueOf();if(f.toString!==Object.prototype.toString)return f.toString()===h.toString();if((m=(w=Object.keys(f)).length)!==Object.keys(h).length)return!1;for(g=m;g--!=0;)if(!Object.prototype.hasOwnProperty.call(h,w[g]))return!1;for(g=m;g--!=0;){var x=w[g];if(!b(f[x],h[x]))return!1}return!0}return f!=f&&h!=h};function d(b,f){var h=Object.keys(f||{}).filter(function(m){var g=b==null?void 0:b[m],w=f==null?void 0:f[m];return!a(g,w)});return Object.keys(b||{}).filter(function(m){Object.keys(f||{}).includes(m)||h.push(m)}),Object.keys(h).length?h:null}var c,u;function p(b,f,h){var m="shortString",g=!0;typeof h=="number"&&(m="javaDouble",g=!1),b[m]=b[m]||{},b[m][f]=g?h+"":h}function v(b){return!!b&&typeof b=="object"&&b.value!==void 0}function S(b){return Object.fromEntries(Object.entries(b).map(function(f){var h=f[0],m=f[1];return[h,v(m)?m:{value:m}]}))}function y(b){return i(i({},b),{identity:b.identity?i(i({},b.identity),{traits:S(b.identity.traits||{})}):void 0})}(function(b){b.NONE="NONE",b.DEFAULT_FLAGS="DEFAULT_FLAGS",b.CACHE="CACHE",b.SERVER="SERVER"})(c||(c={}));var T,A=null,B="BULLET_TRAIN_DB",D="BULLET_TRAIN_EVENT",k="https://edge.api.flagsmith.com/api/v1/",N="flagsmith_value_",O="flagsmith_enabled_",L="flagsmith_trait_",I=function(){function b(f){var h=this;this._trigger=null,this._triggerLoadingState=null,this.timestamp=null,this.isLoading=!1,this.eventSource=null,this.getFlags=function(){var m=h,g=m.api,w=m.evaluationContext;h.log("Get Flags"),h.isLoading=!0,h.loadingState.isFetching||h.setLoadingState(i(i({},h.loadingState),{isFetching:!0}));var x="".concat(h.getContext().identity),R=function(M){var $,_,W,ee;if(M&&x==="".concat(h.getContext().identity)){var ae=M.flags,te=M.traits,ne=M.identifier;h.isLoading=!1;var he={},ue={};te=te||[],(ae=ae||[]).forEach(function(X){he[X.feature.name.toLowerCase().replace(/ /g,"_")]={id:X.feature.id,enabled:X.enabled,value:X.feature_state_value}}),te.forEach(function(X){ue[X.trait_key.toLowerCase().replace(/ /g,"_")]={transient:X.transient,value:X.trait_value}}),h.oldFlags=i({},h.flags);var we=d(h.oldFlags,he),Ze=d(($=h.evaluationContext.identity)===null||$===void 0?void 0:$.traits,ue);if((ne||Object.keys(ue).length)&&(h.evaluationContext.identity={traits:ue},ne&&(h.evaluationContext.identity.identifier=ne)),h.flags=he,h.updateStorage(),h._onChange(h.oldFlags,{isFromServer:!0,flagsChanged:we,traitsChanged:Ze},h._loadedState(null,c.SERVER)),h.datadogRum)try{if(h.datadogRum.trackTraits){var et={};Object.keys(((_=h.evaluationContext.identity)===null||_===void 0?void 0:_.traits)||{}).map(function(X){et[L+X]=h.getTrait(X)});var We=i(i(i({},h.datadogRum.client.getUser()),{id:h.datadogRum.client.getUser().id||((W=h.evaluationContext.identity)===null||W===void 0?void 0:W.identifier)}),et);h.log("Setting Datadog user",We),h.datadogRum.client.setUser(We)}}catch(X){console.error(X)}if(h.dtrum)try{var re={javaDouble:{},date:{},shortString:{},javaLongOrObject:{}};Object.keys(h.flags).map(function(X){p(re,N+X,h.getValue(X,{skipAnalytics:!0})),p(re,O+X,h.hasFeature(X,{skipAnalytics:!0}))}),Object.keys(((ee=h.evaluationContext.identity)===null||ee===void 0?void 0:ee.traits)||{}).map(function(X){p(re,L+X,h.getTrait(X))}),h.log("Sending javaLongOrObject traits to dynatrace",re.javaLongOrObject),h.log("Sending date traits to dynatrace",re.date),h.log("Sending shortString traits to dynatrace",re.shortString),h.log("Sending javaDouble to dynatrace",re.javaDouble),h.dtrum.sendSessionProperties(re.javaLongOrObject,re.date,re.shortString,re.javaDouble)}catch(X){console.error(X)}}};return w.identity?Promise.all([w.identity.traits&&Object.keys(w.identity.traits).length||!w.identity.identifier?h.getJSON(g+"identities/","POST",JSON.stringify({identifier:w.identity.identifier,transient:w.identity.transient,traits:Object.entries(w.identity.traits).map(function(M){var $=M[0],_=M[1];return{trait_key:$,trait_value:_==null?void 0:_.value,transient:_==null?void 0:_.transient}}).filter(function(M){return M.trait_value!==void 0||(h.log("Warning - attempted to set an undefined trait value for key",M.trait_key),!1)})})):h.getJSON(g+"identities/?identifier="+encodeURIComponent(w.identity.identifier)+(w.identity.transient?"&transient=true":""))]).then(function(M){return h.evaluationContext.identity=i(i({},h.evaluationContext.identity),{traits:{}}),R(M==null?void 0:M[0])}).catch(function(M){var $=M.message,_=new Error($);return Promise.reject(_)}):h.getJSON(g+"flags/").then(function(M){return R({flags:M,traits:void 0})})},this.analyticsFlags=function(){var m=h.api;if(h.evaluationEvent&&h.evaluationContext.environment&&h.evaluationEvent[h.evaluationContext.environment.apiKey])return h.evaluationEvent&&Object.getOwnPropertyNames(h.evaluationEvent).length!==0&&Object.getOwnPropertyNames(h.evaluationEvent[h.evaluationContext.environment.apiKey]).length!==0?h.getJSON(m+"analytics/flags/","POST",JSON.stringify(h.evaluationEvent[h.evaluationContext.environment.apiKey])).then(function(g){if(h.evaluationContext.environment){var w=h.getState();h.evaluationEvent||(h.evaluationEvent={}),h.evaluationEvent[h.evaluationContext.environment.apiKey]={},h.setState(i(i({},w),{evaluationEvent:h.evaluationEvent})),h.updateEventStorage()}}).catch(function(g){h.log("Exception fetching evaluationEvent",g)}):void 0},this.datadogRum=null,this.loadingState={isLoading:!0,isFetching:!0,error:null,source:c.NONE},this.canUseStorage=!1,this.analyticsInterval=null,this.api=null,this.cacheFlags=!1,this.ts=null,this.enableAnalytics=!1,this.enableLogs=!1,this.evaluationContext={},this.evaluationEvent=null,this.flags=null,this.getFlagInterval=null,this.headers=null,this.initialised=!1,this.oldFlags=null,this.onChange=null,this.onError=null,this.ticks=null,this.timer=null,this.dtrum=null,this.withTraits=null,this.cacheOptions={ttl:0,skipAPI:!1,loadStale:!1},this.getValue=function(m,g,w){var x=h.flags&&h.flags[m.toLowerCase().replace(/ /g,"_")],R=null;if(x&&(R=x.value),g!=null&&g.skipAnalytics||w||h.evaluateFlag(m,"VALUE"),R===null&&(g==null?void 0:g.fallback)!==void 0)return g.fallback;if(g!=null&&g.json)try{return R===null?(h.log("Tried to parse null flag as JSON: "+m),null):JSON.parse(R)}catch{return g.fallback}return R},this.getTrait=function(m){var g,w;return((g=h.evaluationContext.identity)===null||g===void 0?void 0:g.traits)&&((w=h.evaluationContext.identity.traits[m.toLowerCase().replace(/ /g,"_")])===null||w===void 0?void 0:w.value)},this.getAllTraits=function(){var m;return Object.fromEntries(Object.entries(((m=h.evaluationContext.identity)===null||m===void 0?void 0:m.traits)||{}).map(function(g){var w=g[0],x=g[1];return[w,x==null?void 0:x.value]}))},this.setContext=function(m){var g=y(m);return h.evaluationContext=i(i({},g),{environment:g.environment||h.evaluationContext.environment}),h.initialised?h.getFlags():Promise.resolve()},this.getContext=function(){return h.evaluationContext},this.updateContext=function(m){return h.setContext(i(i({},h.getContext()),m))},this.setTrait=function(m,g){var w;if(h.api)return h.setContext(i(i({},h.evaluationContext),{identity:i(i({},h.evaluationContext.identity),{traits:i(i({},(w=h.evaluationContext.identity)===null||w===void 0?void 0:w.traits),S(Object.fromEntries([[m,g]])))})}))},this.setTraits=function(m){var g;if(h.api)return h.setContext(i(i({},h.evaluationContext),{identity:i(i({},h.evaluationContext.identity),{traits:i(i({},(g=h.evaluationContext.identity)===null||g===void 0?void 0:g.traits),Object.fromEntries(Object.entries(m).map(function(w){var x=w[0],R=w[1];return[x,v(R)?R:{value:R}]})))})}));console.error("Attempted to setTraits a user before calling flagsmith.init. Call flagsmith.init first, if you wish to prevent it sending a request for flags, call init with preventFetch:true.")},this.hasFeature=function(m,g){var w=typeof g=="object",x=h.flags&&h.flags[m.toLowerCase().replace(/ /g,"_")],R=!1;return!x&&w&&g.fallback!==void 0?R=g==null?void 0:g.fallback:x&&x.enabled&&(R=!0),(w&&!g.skipAnalytics||!g)&&h.evaluateFlag(m,"ENABLED"),R},this.getJSON=function(m,g,w){var x,R=h;R.evaluationContext;var M=R.headers,$={method:g||"GET",body:w,cache:"no-cache",headers:{}};h.evaluationContext.environment&&($.headers["X-Environment-Key"]=h.evaluationContext.environment.apiKey),g&&g!=="GET"&&($.headers["Content-Type"]="application/json; charset=utf-8"),M&&Object.assign($.headers,M),u||console.error("Flagsmith: fetch is undefined, please specify a fetch implementation into flagsmith.init to support SSR.");var _="".concat((x=h.evaluationContext.identity)===null||x===void 0?void 0:x.identifier);return u(m,$).then(function(W){var ee,ae,te="".concat((ee=h.evaluationContext.identity)===null||ee===void 0?void 0:ee.identifier);if(_===te){var ne=(ae=W.headers)===null||ae===void 0?void 0:ae.get("x-flagsmith-document-updated-at");if(ne)try{var he=parseFloat(ne);if(isNaN(he))return Promise.reject("Failed to parse x-flagsmith-document-updated-at");h.timestamp=he}catch(ue){h.log(ue,"Failed to parse x-flagsmith-document-updated-at",ne)}return h.log("Fetch response: "+W.status+" "+(g||"GET")+0+m),W.text().then(function(ue){var we=ue;try{we=JSON.parse(ue)}catch{}return!we&&W.status&&(we="API Response: ".concat(W.status)),W.status&&W.status>=200&&W.status<300?we:Promise.reject(new Error(we))})}h.log("Received response with identity mismatch, ignoring response. Requested: ".concat(_,", Current: ").concat(te))})},this.evaluateFlag=function(m,g){if(h.datadogRum&&(h.datadogRum.client.addFeatureFlagEvaluation?g==="VALUE"?h.datadogRum.client.addFeatureFlagEvaluation(N+m,h.getValue(m,{},!0)):h.datadogRum.client.addFeatureFlagEvaluation(O+m,h.hasFeature(m,!0)):console.error("Flagsmith: Your datadog RUM client does not support the function addFeatureFlagEvaluation, please update it.")),h.enableAnalytics){if(!h.evaluationEvent||!h.evaluationContext.environment)return;h.evaluationEvent[h.evaluationContext.environment.apiKey]||(h.evaluationEvent[h.evaluationContext.environment.apiKey]={}),h.evaluationEvent[h.evaluationContext.environment.apiKey][m]===void 0&&(h.evaluationEvent[h.evaluationContext.environment.apiKey][m]=0),h.evaluationEvent[h.evaluationContext.environment.apiKey][m]+=1}h.updateEventStorage()},this._onChange=function(m,g,w){var x,R;h.setLoadingState(w),(x=h.onChange)===null||x===void 0||x.call(h,m,g,h.loadingState),(R=h._trigger)===null||R===void 0||R.call(h)},u=f.fetch?f.fetch:typeof fetch<"u"?fetch:Fe==null?void 0:Fe.fetch,this.canUseStorage=typeof window<"u"||!!f.browserlessStorage,this.log("Constructing flagsmith instance "+f),f.eventSource&&(T=f.eventSource),f.AsyncStorage&&(A=f.AsyncStorage)}return b.prototype.init=function(f){var h,m,g;return r(this,void 0,void 0,function(){var w,x,R,M,$,_,W,ee,ae,te,ne,he,ue,we,Ze,et,We,re,X,En,tt,ki,nt,In,Ti,Ei,Cn,Ii,_n,st,Ge,Ci,oe=this;return o(this,function(ge){switch(ge.label){case 0:w=y(f.evaluationContext||this.evaluationContext),ge.label=1;case 1:if(ge.trys.push([1,13,,14]),x=f.environmentID,R=f.api,M=R===void 0?k:R,$=f.headers,_=f.onChange,W=f.cacheFlags,ee=f.datadogRum,ae=f.onError,te=f.defaultFlags,ne=f.fetch,he=f.preventFetch,ue=f.enableLogs,we=f.enableDynatrace,Ze=f.enableAnalytics,et=f.realtime,We=f.eventSourceUrl,re=We===void 0?"https://realtime.flagsmith.com/":We,X=f.AsyncStorage,En=f.identity,tt=f.traits,ki=f.state,nt=f.cacheOptions,In=f.angularHttpClient,Ti=f._trigger,Ei=f._triggerLoadingState,w.environment=x?{apiKey:x}:w.environment,!w.environment||!w.environment.apiKey)throw new Error("Please provide `evaluationContext.environment` with non-empty `apiKey`");if(w.identity=En||tt?{identifier:En,traits:tt?Object.fromEntries(Object.entries(tt).map(function(fe){return[fe[0],{value:fe[1]}]})):{}}:w.identity,this.evaluationContext=w,this.api=M,this.headers=$,this.getFlagInterval=null,this.analyticsInterval=null,this.onChange=_,Cn="Wrong Flagsmith Configuration: preventFetch is true and no defaulFlags provided",this._trigger=Ti||this._trigger,this._triggerLoadingState=Ei||this._triggerLoadingState,this.onError=function(fe){oe.setLoadingState(i(i({},oe.loadingState),{isFetching:!1,isLoading:!1,error:fe})),ae==null||ae(fe)},this.enableLogs=ue||!1,this.cacheOptions=nt?{skipAPI:!!nt.skipAPI,ttl:nt.ttl||0,loadStale:!!nt.loadStale}:this.cacheOptions,!this.cacheOptions.ttl&&this.cacheOptions.skipAPI&&console.warn("Flagsmith: you have set a cache ttl of 0 and are skipping API calls, this means the API will not be hit unless you clear local storage."),ne&&(u=ne),this.enableAnalytics=Ze||!1,this.flags=Object.assign({},te)||{},this.datadogRum=ee||null,this.initialised=!0,this.ticks=1e4,this.timer=this.enableLogs?new Date().valueOf():null,this.cacheFlags=A!==void 0&&!!W,X&&(A=X),et&&typeof window<"u"&&this.setupRealtime(re,w.environment.apiKey),Object.keys(this.flags).length&&(this.loadingState=i(i({},this.loadingState),{isLoading:!1,source:c.DEFAULT_FLAGS})),this.setState(ki),this.log("Initialising with properties",f,this),we&&(typeof dtrum>"u"?console.error("You have attempted to enable dynatrace but dtrum is undefined, please check you have the Dynatrace RUM JavaScript API installed."):this.dtrum=dtrum),In&&(u=function(fe){return function(Se,xe){var Ne=xe.headers,Y=xe.method,Ve=xe.body;return new Promise(function(Le){switch(Y){case"GET":return fe.get(Se,{headers:Ne}).subscribe(function(Te){Le({ok:!0,text:function(){return Promise.resolve(Te)}})});case"POST":case"PUT":return fe.post(Se,Ve,{headers:Ne}).subscribe(function(Te){Le({ok:!0,text:function(){return Promise.resolve(Te)}})})}})}}(In)),A&&this.canUseStorage&&A.getItem(D).then(function(fe){try{oe.evaluationEvent=JSON.parse(fe)||{}}catch{oe.evaluationEvent={}}oe.analyticsInterval=setInterval(oe.analyticsFlags,oe.ticks)}),this.enableAnalytics&&(this.analyticsInterval&&clearInterval(this.analyticsInterval),A&&this.canUseStorage&&A.getItem(D,function(fe,Se){if(Se&&oe.evaluationContext.environment){var xe=JSON.parse(Se);if(xe[oe.evaluationContext.environment.apiKey]){var Ne=oe.getState();oe.log("Retrieved events from cache",Se),oe.setState(i(i({},Ne),{evaluationEvent:xe[oe.evaluationContext.environment.apiKey]}))}}})),!W)return[3,9];if(!A||!this.canUseStorage)return[3,8];Ii=function(fe,Se){return r(oe,void 0,void 0,function(){var xe,Ne,Y,Ve,Le,Te,Nn,_i,On,Rn,An,Dn,Ln,Fn,Mn,Pn,Bn,jn,zn,Un,Hn,$n,qn,Wn;return o(this,function(Oe){switch(Oe.label){case 0:if(!Se)return[3,7];xe=null,Ne=null,Oe.label=1;case 1:return Oe.trys.push([1,5,,6]),Y=JSON.parse(Se),Ve=!1,Le=!1,Y&&Y.api===this.api&&((Rn=(On=Y.evaluationContext)===null||On===void 0?void 0:On.environment)===null||Rn===void 0?void 0:Rn.apiKey)===((An=this.evaluationContext.environment)===null||An===void 0?void 0:An.apiKey)&&(Te=!0,this.evaluationContext.identity&&((Ln=(Dn=Y.evaluationContext)===null||Dn===void 0?void 0:Dn.identity)===null||Ln===void 0?void 0:Ln.identifier)!==this.evaluationContext.identity.identifier&&(this.log("Ignoring cache, identity has changed from "+((Mn=(Fn=Y.evaluationContext)===null||Fn===void 0?void 0:Fn.identity)===null||Mn===void 0?void 0:Mn.identifier)+" to "+this.evaluationContext.identity.identifier),Te=!1),this.cacheOptions.ttl&&(!Y.ts||new Date().valueOf()-Y.ts>this.cacheOptions.ttl)&&(Y.ts&&!this.cacheOptions.loadStale?(this.log("Ignoring cache, timestamp is too old ts:"+Y.ts+" ttl: "+this.cacheOptions.ttl+" time elapsed since cache: "+(new Date().valueOf()-Y.ts)+"ms"),Te=!1):Y.ts&&this.cacheOptions.loadStale&&(this.log("Loading stale cache, timestamp ts:"+Y.ts+" ttl: "+this.cacheOptions.ttl+" time elapsed since cache: "+(new Date().valueOf()-Y.ts)+"ms"),Le=!0,Te=!0)),Te&&(Ve=!0,Ne=d((Pn=this.evaluationContext.identity)===null||Pn===void 0?void 0:Pn.traits,(jn=(Bn=Y.evaluationContext)===null||Bn===void 0?void 0:Bn.identity)===null||jn===void 0?void 0:jn.traits),xe=d(this.flags,Y.flags),this.setState(i(i({},Y),{evaluationContext:y(i(i({},Y.evaluationContext),{identity:!((zn=Y.evaluationContext)===null||zn===void 0)&&zn.identity?i(i({},(Un=Y.evaluationContext)===null||Un===void 0?void 0:Un.identity),{traits:i(i({},(($n=(Hn=Y.evaluationContext)===null||Hn===void 0?void 0:Hn.identity)===null||$n===void 0?void 0:$n.traits)||{}),tt||{})}):void 0}))})),this.log("Retrieved flags from cache",Y))),Ve?(Nn=!he&&(!this.cacheOptions.skipAPI||Le),this._onChange(null,{isFromServer:!1,flagsChanged:xe,traitsChanged:Ne},this._loadedState(null,c.CACHE,Nn)),this.oldFlags=this.flags,this.cacheOptions.skipAPI&&Ve&&!Le&&this.log("Skipping API, using cache"),Nn&&this.getFlags(),[3,4]):[3,2];case 2:return he?[3,4]:[4,this.getFlags()];case 3:Oe.sent(),Oe.label=4;case 4:return[3,6];case 5:return _i=Oe.sent(),this.log("Exception fetching cached logs",_i),[3,6];case 6:return[3,10];case 7:return he?[3,9]:[4,this.getFlags()];case 8:return Oe.sent(),[3,10];case 9:if(te)this._onChange(null,{isFromServer:!1,flagsChanged:d({},this.flags),traitsChanged:d({},(qn=this.evaluationContext.identity)===null||qn===void 0?void 0:qn.traits)},this._loadedState(null,c.DEFAULT_FLAGS));else{if(!this.flags)throw new Error(Cn);this._onChange(null,{isFromServer:!1,flagsChanged:d({},this.flags),traitsChanged:d({},(Wn=this.evaluationContext.identity)===null||Wn===void 0?void 0:Wn.traits)},this._loadedState(null,c.DEFAULT_FLAGS))}Oe.label=10;case 10:return[2]}})})},ge.label=2;case 2:return ge.trys.push([2,7,,8]),A.getItemSync?(_n=A.getItemSync(B),[3,5]):[3,3];case 3:return[4,A.getItem(B)];case 4:_n=ge.sent(),ge.label=5;case 5:return[4,Ii(null,_n)];case 6:case 7:return ge.sent(),[3,8];case 8:return[3,12];case 9:return he?[3,11]:[4,this.getFlags()];case 10:return ge.sent(),[3,12];case 11:if(te)this._onChange(null,{isFromServer:!1,flagsChanged:d({},te),traitsChanged:d({},(h=w.identity)===null||h===void 0?void 0:h.traits)},this._loadedState(null,c.DEFAULT_FLAGS));else if(this.flags&&(st=null,Object.keys(this.flags).length===0&&(st=Cn),this._onChange(null,{isFromServer:!1,flagsChanged:d({},this.flags),traitsChanged:d({},(m=w.identity)===null||m===void 0?void 0:m.traits)},this._loadedState(st,c.DEFAULT_FLAGS)),st))throw new Error(st);ge.label=12;case 12:return[3,14];case 13:throw Ge=ge.sent(),this.log("Error during initialisation ",Ge),Ci=Ge instanceof Error?Ge:new Error("".concat(Ge)),(g=this.onError)===null||g===void 0||g.call(this,Ci),Ge;case 14:return[2]}})})},b.prototype._loadedState=function(f,h,m){return f===void 0&&(f=null),m===void 0&&(m=!1),{error:f,isFetching:m,isLoading:!1,source:h}},b.prototype.getAllFlags=function(){return this.flags},b.prototype.identify=function(f,h,m){return this.evaluationContext.identity={identifier:f,transient:m,traits:this.evaluationContext.identity&&this.evaluationContext.identity.identifier==f?this.evaluationContext.identity.traits:{}},this.evaluationContext.identity.identifier=f,this.log("Identify: "+this.evaluationContext.identity.identifier),h&&(this.evaluationContext.identity.traits=Object.fromEntries(Object.entries(h).map(function(g){var w=g[0],x=g[1];return[w,v(x)?x:{value:x}]}))),this.initialised?this.getFlags():Promise.resolve()},b.prototype.getState=function(){return{api:this.api,flags:this.flags,ts:this.ts,evaluationContext:this.evaluationContext,evaluationEvent:this.evaluationEvent}},b.prototype.setState=function(f){f&&(this.initialised=!0,this.api=f.api||this.api||k,this.flags=f.flags||this.flags,this.evaluationContext=f.evaluationContext||this.evaluationContext,this.evaluationEvent=f.evaluationEvent||this.evaluationEvent,this.log("setState called",this))},b.prototype.logout=function(){return this.evaluationContext.identity=null,this.initialised?this.getFlags():Promise.resolve()},b.prototype.startListening=function(f){f===void 0&&(f=1e3),this.getFlagInterval&&clearInterval(this.getFlagInterval),this.getFlagInterval=setInterval(this.getFlags,f)},b.prototype.stopListening=function(){this.getFlagInterval&&(clearInterval(this.getFlagInterval),this.getFlagInterval=null)},b.prototype.log=function(){for(var f=[],h=0;h<arguments.length;h++)f[h]=arguments[h];this.enableLogs&&console.log.apply(this,l(["FLAGSMITH:",new Date().valueOf()-(this.timer||0),"ms"],f,!0))},b.prototype.updateStorage=function(){if(this.cacheFlags){this.ts=new Date().valueOf();var f=JSON.stringify(this.getState());this.log("Setting storage",f),A.setItem(B,f)}},b.prototype.updateEventStorage=function(){if(this.enableAnalytics){var f=JSON.stringify(this.getState().evaluationEvent);A.setItem(D,f)}},b.prototype.setLoadingState=function(f){var h;a(f,this.loadingState)||(this.loadingState=i({},f),this.log("Loading state changed",f),(h=this._triggerLoadingState)===null||h===void 0||h.call(this))},b.prototype.setupRealtime=function(f,h){var m=this,g=f+"sse/environments/"+h+"/stream";T?this.eventSource||(this.log("Creating event source with url "+g),this.eventSource=new T(g),this.eventSource.addEventListener("environment_updated",function(w){var x;try{x=JSON.parse(w.data).updated_at}catch(R){m.log("Could not parse sse event",R)}x?!m.timestamp||x>m.timestamp?m.isLoading?m.log("updated_at is new, but flags are loading",w.data,m.timestamp):(m.log("updated_at is new, fetching flags",w.data,m.timestamp),m.getFlags()):m.log("updated_at is outdated, skipping get flags",w.data,m.timestamp):m.log("No updated_at received, fetching flags",w)})):this.log("Error, EventSource is undefined")},b}();function E(b){var f=b.fetch,h=b.AsyncStorage,m=b.eventSource;return new I({fetch:f,AsyncStorage:h,eventSource:m})}var P,V=(P=function(b,f){return P=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,m){h.__proto__=m}||function(h,m){for(var g in m)Object.prototype.hasOwnProperty.call(m,g)&&(h[g]=m[g])},P(b,f)},function(b,f){if(typeof f!="function"&&f!==null)throw new TypeError("Class extends value "+String(f)+" is not a constructor or null");function h(){this.constructor=b}P(b,f),b.prototype=f===null?Object.create(f):(h.prototype=f.prototype,new h)}),j=function(b){var f=typeof Symbol=="function"&&Symbol.iterator,h=f&&b[f],m=0;if(h)return h.call(b);if(b&&typeof b.length=="number")return{next:function(){return b&&m>=b.length&&(b=void 0),{value:b&&b[m++],done:!b}}};throw new TypeError(f?"Object is not iterable.":"Symbol.iterator is not defined.")},q=function(b,f){var h=typeof Symbol=="function"&&b[Symbol.iterator];if(!h)return b;var m,g,w=h.call(b),x=[];try{for(;(f===void 0||f-- >0)&&!(m=w.next()).done;)x.push(m.value)}catch(R){g={error:R}}finally{try{m&&!m.done&&(h=w.return)&&h.call(w)}finally{if(g)throw g.error}}return x},C=function(b,f,h){if(h||arguments.length===2)for(var m,g=0,w=f.length;g<w;g++)!m&&g in f||(m||(m=Array.prototype.slice.call(f,0,g)),m[g]=f[g]);return b.concat(m||Array.prototype.slice.call(f))},F=function(b){function f(){return b.call(this,`EventSource not available.
648
+ Consider loading an EventSource polyfill and making it available globally as EventSource, or passing one in as eventSourceClass to the ReconnectingEventSource constructor.`)||this}return V(f,b),f}(Error),G=function(){function b(f,h){var m=this;if(this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,this._configuration=h!=null?Object.assign({},h):void 0,this.withCredentials=!1,this._eventSource=null,this._lastEventId=null,this._timer=null,this._listeners={open:[],error:[],message:[]},this.url=f.toString(),this.readyState=this.CONNECTING,this.max_retry_time=3e3,this.eventSourceClass=globalThis.FlagsmithEventSource,this._configuration!=null&&(this._configuration.lastEventId&&(this._lastEventId=this._configuration.lastEventId,delete this._configuration.lastEventId),this._configuration.max_retry_time&&(this.max_retry_time=this._configuration.max_retry_time,delete this._configuration.max_retry_time),this._configuration.eventSourceClass&&(this.eventSourceClass=this._configuration.eventSourceClass,delete this._configuration.eventSourceClass)),this.eventSourceClass==null||typeof this.eventSourceClass!="function")throw new F;this._onevent_wrapped=function(g){m._onevent(g)},this._start()}return b.prototype.dispatchEvent=function(f){throw new Error("Method not implemented.")},b.prototype._start=function(){var f,h,m=this,g=this.url;this._lastEventId&&(g.indexOf("?")===-1?g+="?":g+="&",g+="lastEventId="+encodeURIComponent(this._lastEventId)),this._eventSource=new this.eventSourceClass(g,this._configuration),this._eventSource.onopen=function(M){m._onopen(M)},this._eventSource.onerror=function(M){m._onerror(M)},this._eventSource.onmessage=function(M){m.onmessage(M)};try{for(var w=j(Object.keys(this._listeners)),x=w.next();!x.done;x=w.next()){var R=x.value;this._eventSource.addEventListener(R,this._onevent_wrapped)}}catch(M){f={error:M}}finally{try{x&&!x.done&&(h=w.return)&&h.call(w)}finally{if(f)throw f.error}}},b.prototype._onopen=function(f){this.readyState===0&&(this.readyState=1,this.onopen(f))},b.prototype._onerror=function(f){var h=this;if(this.readyState===1&&(this.readyState=0,this.onerror(f)),this._eventSource){this._eventSource.close(),this._eventSource=null;var m=Math.round(this.max_retry_time*Math.random());this._timer=setTimeout(function(){return h._start()},m)}},b.prototype._onevent=function(f){var h,m;f&&f.lastEventId&&(this._lastEventId=f.lastEventId);var g=this._listeners[f.type];if(g!=null)try{for(var w=j(C([],q(g),!1)),x=w.next();!x.done;x=w.next())x.value.call(this,f)}catch(R){h={error:R}}finally{try{x&&!x.done&&(m=w.return)&&m.call(w)}finally{if(h)throw h.error}}f.type==="message"&&this.onmessage(f)},b.prototype.onopen=function(f){},b.prototype.onerror=function(f){},b.prototype.onmessage=function(f){},b.prototype.close=function(){this._timer&&(clearTimeout(this._timer),this._timer=null),this._eventSource&&(this._eventSource.close(),this._eventSource=null),this.readyState=2},b.prototype.addEventListener=function(f,h,m){this._listeners[f]==null&&(this._listeners[f]=[],this._eventSource!=null&&this._eventSource.addEventListener(f,this._onevent_wrapped));var g=this._listeners[f];g.includes(h)||(this._listeners[f]=C(C([],q(g),!1),[h],!1))},b.prototype.removeEventListener=function(f,h,m){var g=this._listeners[f];this._listeners[f]=g.filter(function(w){return w!==h})},b}();globalThis.FlagsmithEventSource=typeof EventSource<"u"?EventSource:null;var K=function(b,f){return f=f||{},new Promise(function(h,m){var g=new XMLHttpRequest,w=[],x=[],R={},M=function(){return{ok:(g.status/100|0)==2,statusText:g.statusText,status:g.status,url:g.responseURL,text:function(){return Promise.resolve(g.responseText)},json:function(){return Promise.resolve(g.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([g.response]))},clone:M,headers:{keys:function(){return w},entries:function(){return x},get:function(_){return R[_.toLowerCase()]},has:function(_){return _.toLowerCase()in R}}}};for(var $ in g.open(f.method||"get",b,!0),g.onload=function(){g.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(_,W,ee){w.push(W=W.toLowerCase()),x.push([W,ee]),R[W]=R[W]?R[W]+","+ee:ee}),h(M())},g.onerror=m,g.withCredentials=f.credentials=="include",f.headers)g.setRequestHeader($,f.headers[$]);g.send(f.body||null)})},U=E({AsyncStorage:s,fetch:K,eventSource:G});typeof window<"u"&&(window.flagsmith=U),n.createFlagsmithInstance=function(){return E({AsyncStorage:s,fetch:K,eventSource:G})},n.default=U,Object.defineProperty(n,"__esModule",{value:!0})})})(Lt,Lt.exports);var Mi=Lt.exports;const Xn=Kn(Mi);var Jn={},Pi=function(t,e,n,s,i){var r=new Worker(Jn[e]||(Jn[e]=URL.createObjectURL(new Blob([t+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return r.onmessage=function(o){var l=o.data,a=l.$e$;if(a){var d=new Error(a[0]);d.code=a[1],d.stack=a[2],i(d,null)}else i(null,l)},r.postMessage(n,s),r},ce=Uint8Array,ie=Uint16Array,ot=Int32Array,at=new ce([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ct=new ce([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Ft=new ce([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Yn=function(t,e){for(var n=new ie(31),s=0;s<31;++s)n[s]=e+=1<<t[s-1];for(var i=new ot(n[30]),s=1;s<30;++s)for(var r=n[s];r<n[s+1];++r)i[r]=r-n[s]<<5|s;return{b:n,r:i}},Qn=Yn(at,2),Bi=Qn.b,lt=Qn.r;Bi[28]=258,lt[258]=28;for(var ji=Yn(ct,0),Mt=ji.r,dt=new ie(32768),J=0;J<32768;++J){var Ee=(J&43690)>>1|(J&21845)<<1;Ee=(Ee&52428)>>2|(Ee&13107)<<2,Ee=(Ee&61680)>>4|(Ee&3855)<<4,dt[J]=((Ee&65280)>>8|(Ee&255)<<8)>>1}for(var Me=function(t,e,n){for(var s=t.length,i=0,r=new ie(e);i<s;++i)t[i]&&++r[t[i]-1];var o=new ie(e);for(i=1;i<e;++i)o[i]=o[i-1]+r[i-1]<<1;var l;if(n){l=new ie(1<<e);var a=15-e;for(i=0;i<s;++i)if(t[i])for(var d=i<<4|t[i],c=e-t[i],u=o[t[i]-1]++<<c,p=u|(1<<c)-1;u<=p;++u)l[dt[u]>>a]=d}else for(l=new ie(s),i=0;i<s;++i)t[i]&&(l[i]=dt[o[t[i]-1]++]>>15-t[i]);return l},Ie=new ce(288),J=0;J<144;++J)Ie[J]=8;for(var J=144;J<256;++J)Ie[J]=9;for(var J=256;J<280;++J)Ie[J]=7;for(var J=280;J<288;++J)Ie[J]=8;for(var Xe=new ce(32),J=0;J<32;++J)Xe[J]=5;var Zn=Me(Ie,9,0),es=Me(Xe,5,0),Pt=function(t){return(t+7)/8|0},ts=function(t,e,n){return(e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new ce(t.subarray(e,n))},zi=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ns=function(t,e,n){var s=new Error(e||zi[t]);if(s.code=t,Error.captureStackTrace&&Error.captureStackTrace(s,ns),!n)throw s;return s},me=function(t,e,n){n<<=e&7;var s=e/8|0;t[s]|=n,t[s+1]|=n>>8},Pe=function(t,e,n){n<<=e&7;var s=e/8|0;t[s]|=n,t[s+1]|=n>>8,t[s+2]|=n>>16},ht=function(t,e){for(var n=[],s=0;s<t.length;++s)t[s]&&n.push({s,f:t[s]});var i=n.length,r=n.slice();if(!i)return{t:Ut,l:0};if(i==1){var o=new ce(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(N,O){return N.f-O.f}),n.push({s:-1,f:25001});var l=n[0],a=n[1],d=0,c=1,u=2;for(n[0]={s:-1,f:l.f+a.f,l,r:a};c!=i-1;)l=n[n[d].f<n[u].f?d++:u++],a=n[d!=c&&n[d].f<n[u].f?d++:u++],n[c++]={s:-1,f:l.f+a.f,l,r:a};for(var p=r[0].s,s=1;s<i;++s)r[s].s>p&&(p=r[s].s);var v=new ie(p+1),S=ut(n[c-1],v,0);if(S>e){var s=0,y=0,T=S-e,A=1<<T;for(r.sort(function(O,L){return v[L.s]-v[O.s]||O.f-L.f});s<i;++s){var B=r[s].s;if(v[B]>e)y+=A-(1<<S-v[B]),v[B]=e;else break}for(y>>=T;y>0;){var D=r[s].s;v[D]<e?y-=1<<e-v[D]++-1:++s}for(;s>=0&&y;--s){var k=r[s].s;v[k]==e&&(--v[k],++y)}S=e}return{t:new ce(v),l:S}},ut=function(t,e,n){return t.s==-1?Math.max(ut(t.l,e,n+1),ut(t.r,e,n+1)):e[t.s]=n},Bt=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new ie(++e),s=0,i=t[0],r=1,o=function(a){n[s++]=a},l=1;l<=e;++l)if(t[l]==i&&l!=e)++r;else{if(!i&&r>2){for(;r>138;r-=138)o(32754);r>2&&(o(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(o(i),--r;r>6;r-=6)o(8304);r>2&&(o(r-3<<5|8208),r=0)}for(;r--;)o(i);r=1,i=t[l]}return{c:n.subarray(0,s),n:e}},Be=function(t,e){for(var n=0,s=0;s<e.length;++s)n+=t[s]*e[s];return n},jt=function(t,e,n){var s=n.length,i=Pt(e+2);t[i]=s&255,t[i+1]=s>>8,t[i+2]=t[i]^255,t[i+3]=t[i+1]^255;for(var r=0;r<s;++r)t[i+r+4]=n[r];return(i+4+s)*8},zt=function(t,e,n,s,i,r,o,l,a,d,c){me(e,c++,n),++i[256];for(var u=ht(i,15),p=u.t,v=u.l,S=ht(r,15),y=S.t,T=S.l,A=Bt(p),B=A.c,D=A.n,k=Bt(y),N=k.c,O=k.n,L=new ie(19),I=0;I<B.length;++I)++L[B[I]&31];for(var I=0;I<N.length;++I)++L[N[I]&31];for(var E=ht(L,7),P=E.t,V=E.l,j=19;j>4&&!P[Ft[j-1]];--j);var q=d+5<<3,C=Be(i,Ie)+Be(r,Xe)+o,F=Be(i,p)+Be(r,y)+o+14+3*j+Be(L,P)+2*L[16]+3*L[17]+7*L[18];if(a>=0&&q<=C&&q<=F)return jt(e,c,t.subarray(a,a+d));var G,K,U,b;if(me(e,c,1+(F<C)),c+=2,F<C){G=Me(p,v,0),K=p,U=Me(y,T,0),b=y;var f=Me(P,V,0);me(e,c,D-257),me(e,c+5,O-1),me(e,c+10,j-4),c+=14;for(var I=0;I<j;++I)me(e,c+3*I,P[Ft[I]]);c+=3*j;for(var h=[B,N],m=0;m<2;++m)for(var g=h[m],I=0;I<g.length;++I){var w=g[I]&31;me(e,c,f[w]),c+=P[w],w>15&&(me(e,c,g[I]>>5&127),c+=g[I]>>12)}}else G=Zn,K=Ie,U=es,b=Xe;for(var I=0;I<l;++I){var x=s[I];if(x>255){var w=x>>18&31;Pe(e,c,G[w+257]),c+=K[w+257],w>7&&(me(e,c,x>>23&31),c+=at[w]);var R=x&31;Pe(e,c,U[R]),c+=b[R],R>3&&(Pe(e,c,x>>5&8191),c+=ct[R])}else Pe(e,c,G[x]),c+=K[x]}return Pe(e,c,G[256]),c+K[256]},ss=new ot([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ut=new ce(0),is=function(t,e,n,s,i,r){var o=r.z||t.length,l=new ce(s+o+5*(1+Math.ceil(o/7e3))+i),a=l.subarray(s,l.length-i),d=r.l,c=(r.r||0)&7;if(e){c&&(a[0]=r.r>>3);for(var u=ss[e-1],p=u>>13,v=u&8191,S=(1<<n)-1,y=r.p||new ie(32768),T=r.h||new ie(S+1),A=Math.ceil(n/3),B=2*A,D=function(ne){return(t[ne]^t[ne+1]<<A^t[ne+2]<<B)&S},k=new ot(25e3),N=new ie(288),O=new ie(32),L=0,I=0,E=r.i||0,P=0,V=r.w||0,j=0;E+2<o;++E){var q=D(E),C=E&32767,F=T[q];if(y[C]=F,T[q]=C,V<=E){var G=o-E;if((L>7e3||P>24576)&&(G>423||!d)){c=zt(t,a,0,k,N,O,I,P,j,E-j,c),P=L=I=0,j=E;for(var K=0;K<286;++K)N[K]=0;for(var K=0;K<30;++K)O[K]=0}var U=2,b=0,f=v,h=C-F&32767;if(G>2&&q==D(E-h))for(var m=Math.min(p,G)-1,g=Math.min(32767,E),w=Math.min(258,G);h<=g&&--f&&C!=F;){if(t[E+U]==t[E+U-h]){for(var x=0;x<w&&t[E+x]==t[E+x-h];++x);if(x>U){if(U=x,b=h,x>m)break;for(var R=Math.min(h,x-2),M=0,K=0;K<R;++K){var $=E-h+K&32767,_=y[$],W=$-_&32767;W>M&&(M=W,F=$)}}}C=F,F=y[C],h+=C-F&32767}if(b){k[P++]=268435456|lt[U]<<18|Mt[b];var ee=lt[U]&31,ae=Mt[b]&31;I+=at[ee]+ct[ae],++N[257+ee],++O[ae],V=E+U,++L}else k[P++]=t[E],++N[t[E]]}}for(E=Math.max(E,V);E<o;++E)k[P++]=t[E],++N[t[E]];c=zt(t,a,d,k,N,O,I,P,j,E-j,c),d||(r.r=c&7|a[c/8|0]<<3,c-=7,r.h=T,r.p=y,r.i=E,r.w=V)}else{for(var E=r.w||0;E<o+d;E+=65535){var te=E+65535;te>=o&&(a[c/8|0]=d,te=o),c=jt(a,c+1,t.subarray(E,te))}r.i=o}return ts(l,0,s+Pt(c)+i)},rs=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var n=e,s=9;--s;)n=(n&1&&-306674912)^n>>>1;t[e]=n}return t}(),os=function(){var t=-1;return{p:function(e){for(var n=t,s=0;s<e.length;++s)n=rs[n&255^e[s]]^n>>>8;t=n},d:function(){return~t}}},Ht=function(t,e,n,s,i){if(!i&&(i={l:1},e.dictionary)){var r=e.dictionary.subarray(-32768),o=new ce(r.length+t.length);o.set(r),o.set(t,r.length),t=o,i.w=r.length}return is(t,e.level==null?6:e.level,e.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,n,s,i)},Ui=function(t,e){var n={};for(var s in t)n[s]=t[s];for(var s in e)n[s]=e[s];return n},as=function(t,e,n){for(var s=t(),i=t.toString(),r=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o<s.length;++o){var l=s[o],a=r[o];if(typeof l=="function"){e+=";"+a+"=";var d=l.toString();if(l.prototype)if(d.indexOf("[native code]")!=-1){var c=d.indexOf(" ",8)+1;e+=d.slice(c,d.indexOf("(",c))}else{e+=d;for(var u in l.prototype)e+=";"+a+".prototype."+u+"="+l.prototype[u].toString()}else e+=d}else n[a]=l}return e},ft=[],Hi=function(t){var e=[];for(var n in t)t[n].buffer&&e.push((t[n]=new t[n].constructor(t[n])).buffer);return e},$i=function(t,e,n,s){if(!ft[n]){for(var i="",r={},o=t.length-1,l=0;l<o;++l)i=as(t[l],i,r);ft[n]={c:as(t[o],i,r),e:r}}var a=Ui({},ft[n].e);return Pi(ft[n].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+e.toString()+"}",n,a,Hi(a),s)},qi=function(){return[ce,ie,ot,at,ct,Ft,lt,Mt,Zn,Ie,es,Xe,dt,ss,Ut,Me,me,Pe,ht,ut,Bt,Be,jt,zt,Pt,ts,is,Ht,Vi,cs]},Wi=function(){return[ls,ds,pt,os,rs]},cs=function(t){return postMessage(t,[t.buffer])},Gi=function(t,e,n,s,i,r){var o=$i(n,s,i,function(l,a){o.terminate(),r(l,a)});return o.postMessage([t,e],e.consume?[t.buffer]:[]),function(){o.terminate()}},pt=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8},ls=function(t,e){var n=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:e.level==9?2:0,t[9]=3,e.mtime!=0&&pt(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),n){t[3]=8;for(var s=0;s<=n.length;++s)t[s+10]=n.charCodeAt(s)}},ds=function(t){return 10+(t.filename?t.filename.length+1:0)};function Vi(t,e){return Ht(t,e||{},0,0)}function Ki(t,e,n){return n||(n=e,e={}),typeof n!="function"&&ns(7),Gi(t,e,[qi,Wi,function(){return[hs]}],function(s){return cs(hs(s.data[0],s.data[1]))},2,n)}function hs(t,e){e||(e={});var n=os(),s=t.length;n.p(t);var i=Ht(t,e,ds(e),8),r=i.length;return ls(i,e),pt(i,r-8,n.d()),pt(i,r-4,s),i}var Xi=typeof TextDecoder<"u"&&new TextDecoder,Ji=0;try{Xi.decode(Ut,{stream:!0}),Ji=1}catch{}class us{constructor(){this.idx=1,this.backDict={}}getKey(e){let n=!1;return this.backDict[e]||(n=!0,this.backDict[e]=this.idx++),[this.backDict[e],n]}}class Yi{constructor(e,n){this.app=e,this.isDictDisabled=n,this.dict=new us}sendSetAttribute(e,n,s){if(this.isDictDisabled){const i=[12,e,n,s];return this.app.send(i)}else{const i=[51,e,this.applyDict(n),this.applyDict(s)];return this.app.send(i)}}applyDict(e){const[n,s]=this.dict.getKey(e);return s&&this.app.send([50,n,e]),n}clear(){this.dict=new us}}class Qi{constructor(e,n){this.app=e,this.startParams=n,this.conditions=[],this.hasStarted=!1,this.createConditionFromFilter=s=>{if(s.value.length){const i=Zi(s);if(i.type)return i}},this.durationInt=null}setConditions(e){this.conditions=e}async fetchConditions(e,n){try{const s=await fetch(`${this.app.options.ingestPoint}/v1/web/conditions/${e}`,{method:"GET",headers:{Authorization:`Bearer ${n}`}}),{conditions:i}=await s.json(),r=[];i.forEach(o=>{o.filters.forEach(a=>{let d;a.type==="fetch"?(d={type:"network_request",subConditions:[],name:o.name},a.filters.forEach(c=>{const u=this.createConditionFromFilter(c);u&&d.subConditions.push(u)})):d=this.createConditionFromFilter(a),d&&(d.type==="session_duration"&&this.processDuration(d.value[0],o.name),r.push({...d,name:o.name}))})}),this.conditions=r}catch{this.app.debug.error("Critical: cannot fetch start conditions")}}trigger(e){if(!this.hasStarted)try{this.hasStarted=!0,this.app.start(this.startParams,void 0,e)}catch(n){this.app.debug.error(n)}}processMessage(e){if(!this.hasStarted)switch(e[0]){case 78:this.jsExceptionEvent(e);break;case 27:this.customEvent(e);break;case 68:this.clickEvent(e);break;case 122:this.pageLocationEvent(e);break;case 83:this.networkRequest(e);break}}processFlags(e){const n=this.conditions.filter(s=>s.type==="feature_flag");n.length&&n.forEach(s=>{const i=je[s.operator];i&&e.find(r=>i(r.key,s.value))&&this.trigger(s.name)})}processDuration(e,n){this.durationInt=setInterval(()=>{performance.now()>e&&this.trigger(n)},1e3),this.app.attachStopCallback(()=>{this.durationInt&&clearInterval(this.durationInt)})}networkRequest(e){const n=this.conditions.filter(s=>s.type==="network_request");n.length&&n.forEach(s=>{const i=s.subConditions.filter(r=>r.operator!=="isAny");i.length?i.every(o=>{let l;switch(o.key){case"url":l=e[3];break;case"status":l=e[6];break;case"method":l=e[2];break;case"duration":l=e[8];break}const a=je[o.operator];if(a&&a(l,o.value))return!0})&&this.trigger(s.name):i.length===0&&s.subConditions.length&&this.trigger(s.name)})}customEvent(e){const n=this.conditions.filter(s=>s.type==="custom_event");n.length&&n.forEach(s=>{const i=je[s.operator];i&&(i(e[1],s.value)||i(e[2],s.value))&&this.trigger(s.name)})}clickEvent(e){const n=this.conditions.filter(s=>s.type==="click");n.length&&n.forEach(s=>{const i=je[s.operator];i&&(i(e[3],s.value)||i(e[4],s.value))&&this.trigger(s.name)})}pageLocationEvent(e){const n=this.conditions.filter(s=>s.type==="visited_url");n&&n.forEach(s=>{const i=je[s.operator];i&&i(e[1],s.value)&&this.trigger(s.name)})}jsExceptionEvent(e){const n=[e[1],e[2],e[3]],s=this.conditions.filter(i=>i.type==="exception");s&&s.forEach(i=>{const r=je[i.operator];r&&n.some(o=>r(o,i.value))&&this.trigger(i.name)})}}const je={is:(t,e)=>e.some(n=>t.includes(n)),isAny:()=>!0,isNot:(t,e)=>!e.some(n=>t.includes(n)),contains:(t,e)=>e.some(n=>t.includes(n)),notContains:(t,e)=>!e.some(n=>t.includes(n)),startsWith:(t,e)=>e.some(n=>t.startsWith(n)),endsWith:(t,e)=>e.some(n=>t.endsWith(n)),greaterThan:(t,e)=>t>e,greaterOrEqual:(t,e)=>t>=e,lessOrEqual:(t,e)=>t<=e,lessThan:(t,e)=>t<e},Zi=t=>{const e={on:"is",notOn:"isNot",">":"greaterThan","<":"lessThan","=":"is","<=":"lessOrEqual",">=":"greaterOrEqual"},n=i=>{if(Object.keys(e).includes(i))return e[i]};let s={type:"",operator:"",value:t.value,key:""};switch(t.type){case"click":s={type:"click",operator:n(t.operator),value:t.value,key:""};break;case"location":s={type:"visited_url",operator:t.operator,value:t.value,key:""};break;case"custom":s={type:"custom_event",operator:t.operator,value:t.value,key:""};break;case"metadata":s={type:t.source==="featureFlag"?"feature_flag":t.type,operator:t.operator,value:t.value,key:""};break;case"error":s={type:"exception",operator:t.operator,value:t.value,key:""};break;case"duration":s={type:"session_duration",value:t.value[0],key:""};break;case"fetchUrl":s={type:"network_request",key:"url",operator:t.operator,value:t.value};break;case"fetchStatusCode":s={type:"network_request",key:"status",operator:n(t.operator),value:t.value};break;case"fetchMethod":s={type:"network_request",key:"method",operator:n(t.operator),value:t.value};break;case"fetchDuration":s={type:"network_request",key:"duration",operator:n(t.operator),value:t.value};break}return s};class er{constructor(e){this.app=e,this.flags=[],this.storageKey="__openreplay_flags";const n=this.app.sessionStorage.getItem(this.storageKey);if(n){const s=n.split(";").filter(Boolean);this.flags=s.map(i=>JSON.parse(i))}}getFeatureFlag(e){return this.flags.find(n=>n.key===e)}isFlagEnabled(e){return this.flags.findIndex(n=>n.key===e)!==-1}onFlagsLoad(e){this.onFlagsCb=e}async reloadFlags(e){const n=this.app.sessionStorage.getItem(this.storageKey),s={};n&&n.split(";").filter(Boolean).forEach(c=>{const u=JSON.parse(c);s[u.key]={key:u.key,value:u.value}});const i=this.app.session.getInfo(),r=this.app.session.userInfo,o={projectID:i.projectID,userID:i.userID,metadata:i.metadata,referrer:document.referrer,os:r.userOS,device:r.userDevice,country:r.userCountry,state:r.userState,city:r.userCity,browser:r.userBrowser,persistFlags:s},l=e??this.app.session.getSessionToken(),a=await fetch(this.app.options.ingestPoint+"/v1/web/feature-flags",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify(o)});if(a.status===200){const d=await a.json();return this.handleFlags(d.flags)}}handleFlags(e){var r;const n=[];e.forEach(o=>{o.is_persist&&n.push(o)});let s="";return this.diffPersist(n).forEach(o=>{s+=`${JSON.stringify(o)};`}),this.app.sessionStorage.setItem(this.storageKey,s),this.flags=e,(r=this.onFlagsCb)==null?void 0:r.call(this,e)}clearPersistFlags(){this.app.sessionStorage.removeItem(this.storageKey)}diffPersist(e){const n=this.app.sessionStorage.getItem(this.storageKey);if(!n)return e;const i=n.split(";").filter(Boolean).map(r=>JSON.parse(r));return e.filter(r=>i.findIndex(o=>o.key===r.key)===-1)}}const fs={htmlmasked:"hidden",masked:"obscured"},be=!(typeof window>"u"),tr=be&&navigator.userAgent.match(/firefox|fxios/i),nr=1e5;let $t=be?Date.now()-performance.now():0;function qt(){$t=Date.now()-performance.now()}function ze(){return $t}const pe=be&&performance.now?()=>Math.round(performance.now()+$t):()=>Date.now(),Wt="repeat"in String.prototype?t=>"*".repeat(t.length):t=>t.replace(/./g,"*");function ps(t){return t.trim().replace(/\s+/g," ")}function gs(t){return t.startsWith("https://")||t.startsWith("http://")}const gt="https://docs.openreplay.com",ms={};function Ce(t,e,n="/"){ms[t]||(console.warn(`OpenReplay: ${t} is deprecated. ${e?`Please, use ${e} instead.`:""} Visit ${gt}${n} for more information.`),ms[t]=!0)}function Gt(t){let e=t.getAttribute("data-openreplay-label");return e!==null||(e=t.getAttribute("data-asayer-label"),e!==null&&Ce('"data-asayer-label" attribute','"data-openreplay-label" attribute',"/")),e}function Re(t,e){const n=`data-openreplay-${e}`;return t.hasAttribute(n)?(fs[e]&&Ce(`"${n}" attribute`,`"${fs[e]}" attribute`,"/installation/sanitize-data"),!0):!1}function sr(t){try{return!!t.contentDocument}catch{return!1}}function bs(t){return t.toString(16).padStart(2,"0")}function ir(t){const e=new Uint8Array((t||40)/2),n=window.crypto||window.msCrypto;return n?(n.getRandomValues(e),Array.from(e,bs).join("")):Array.from({length:t||40},()=>bs(Math.floor(Math.random()*16))).join("")}function rr(){try{return window.self&&window.top&&window.self!==window.top}catch{return!0}}function Vt(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}function vs(t){const e=Vt("MutationObserver");return new window[e](t)}function ys(t,e,n,s){const i=Vt("addEventListener");try{t[i](e,n,s)}catch(r){const o=r.message;console.debug(`Openreplay: ${o}; if this error is caused by an IframeObserver, ignore it`)}}function ws(t,e,n,s){const i=Vt("removeEventListener");try{t[i](e,n,s)}catch(r){const o=r.message;console.debug(`Openreplay: ${o}; if this error is caused by an IframeObserver, ignore it`)}}class or{constructor(){this.taskQueue=[],this.isRunning=!1}addTask(e){this.taskQueue.push(e),this.runTasks()}runTasks(){if(this.isRunning||this.taskQueue.length===0)return;this.isRunning=!0;const e=()=>{if(this.taskQueue.length===0){this.isRunning=!1;return}const n=this.taskQueue.shift();Promise.resolve(n()).then(()=>{requestAnimationFrame(()=>e())})};e()}}const ar=new or;function cr(t){ar.addTask(t)}function Ss(t,e){const n={...t};for(const s in e)if(e.hasOwnProperty(s)){const i=e[s],r=t[s];typeof i=="object"&&!Array.isArray(i)&&i!==null?n[s]=Ss(r||{},i):n[s]=i}return n}function Ae(t){return[0,t]}function lr(t,e){return[5,t,e]}function dr(t,e){return[6,t,e]}function hr(){return[7]}function ur(t,e,n,s,i){return[8,t,e,n,s,i]}function fr(t,e,n){return[9,t,e,n]}function pr(t,e,n){return[10,t,e,n]}function gr(t){return[11,t]}function xs(t,e){return[13,t,e]}function mr(t,e){return[14,t,e]}function br(t,e,n){return[16,t,e,n]}function vr(t,e,n){return[18,t,e,n]}function yr(t,e){return[19,t,e]}function wr(t,e){return[20,t,e]}function Sr(t,e){return[22,t,e]}function xr(t,e,n,s,i,r,o,l,a){return[23,t,e,n,s,i,r,o,l,a]}function kr(t,e,n){return[24,t,e,n]}function Tr(t,e){return[27,t,e]}function Er(t){return[28,t]}function Ir(t){return[29,t]}function ks(t,e){return[30,t,e]}function Cr(t,e,n,s){return[49,t,e,n,s]}function _r(t,e){return[54,t,e]}function Nr(t){return[55,t]}function Ts(t,e,n,s){return[57,t,e,n,s]}function Es(t){return[58,t]}function Kt(t,e,n,s){return[60,t,e,n,s]}function Or(t,e,n){return[61,t,e,n]}function Rr(t,e){return[63,t,e]}function Ar(t,e){return[64,t,e]}function Dr(t,e,n,s,i,r){return[68,t,e,n,s,i,r]}function Xt(t,e){return[70,t,e]}function Is(t,e,n){return[71,t,e,n]}function Jt(t,e,n,s){return[73,t,e,n,s]}function Cs(t,e){return[75,t,e]}function _s(t,e){return[76,t,e]}function Lr(t,e){return[77,t,e]}function Yt(t,e,n,s){return[78,t,e,n,s]}function mt(t,e,n,s,i,r,o,l,a){return[83,t,e,n,s,i,r,o,l,a]}function Fr(t,e,n,s,i,r){return[84,t,e,n,s,i,r]}function Mr(t,e,n,s,i,r){return[112,t,e,n,s,i,r]}function Ns(t,e,n){return[113,t,e,n]}function Pr(t){return[114,t]}function Br(t){return[115,t]}function Os(t,e,n,s,i,r,o,l,a,d){return[116,t,e,n,s,i,r,o,l,a,d]}function bt(t){return[117,t]}function De(t){return[118,t]}function jr(t,e){return[119,t,e]}function zr(t){return[120,t]}function Ur(t,e,n,s){return[122,t,e,n,s]}const Qt=be&&"performance"in window&&"memory"in performance?performance:{memory:{}},Zt=be?(navigator.deviceMemory||0)*1024:0,en=Qt.memory.jsHeapSizeLimit||0;function Hr(t,e){if(!Object.assign({capturePerformance:!0},e).capturePerformance)return;let s,i;const r=()=>{s===void 0||s===-1||(s++,requestAnimationFrame(r))};t.ticker.attach(()=>{i===void 0||i===-1||i++},0,!1);const o=()=>{s===void 0||i===void 0||(t.send(Cr(s,i,Qt.memory.totalJSHeapSize||0,Qt.memory.usedJSHeapSize||0)),i=s=document.hidden?-1:0)};t.attachStartCallback(()=>{i=s=-1,o(),r()}),t.attachStopCallback(()=>{i=s=void 0}),t.ticker.attach(o,40,!1),document.hidden!==void 0&&t.attachEventListener(document,"visibilitychange",o,!1,!1)}const Rs="__or__watched_tags__";class $r{constructor(e,n,s){this.sessionStorage=e,this.errLog=n,this.onTag=s,this.intervals={},this.tags=[];const i=JSON.parse(e.getItem(Rs)??"[]");this.setTags(i),this.observer=new IntersectionObserver(r=>{r.forEach(o=>{if(o.isIntersecting&&o.target){const l=o.target.__or_watcher_tagname;l&&this.onTagRendered(l),this.observer.unobserve(o.target)}})})}async fetchTags(e,n){return fetch(`${e}/v1/web/tags`,{method:"GET",headers:{Authorization:`Bearer ${n}`}}).then(s=>s.json()).then(({tags:s})=>{if(s&&s.length){this.setTags(s);const i=JSON.stringify(s);this.sessionStorage.setItem(Rs,i||"")}}).catch(s=>this.errLog(s))}setTags(e){this.tags=e,this.intervals={},e.forEach(n=>{this.intervals[n.id]=setInterval(()=>{const s=document.querySelectorAll(n.selector);if(s.length>0){const i=s[0];i.__or_watcher_tagname=n.id,this.observer.observe(i)}},500)})}onTagRendered(e){this.intervals[e]&&clearInterval(this.intervals[e]),this.onTag(e)}clear(){this.tags.forEach(e=>{clearInterval(this.intervals[e.id])}),this.tags=[],this.intervals={},this.observer.disconnect()}}const qr={position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0, 0, 0, 0.40)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:999999,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'},Wr={display:"flex",flexDirection:"column",gap:"2rem",alignItems:"center",padding:"1.5rem",borderRadius:"2px",border:"1px solid #D9D9D9",background:"#FFF",width:"22rem"},vt={display:"flex","flex-direction":"column",gap:"unset","align-items":"center",padding:"unset",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',"border-radius":"2px",border:"1px solid #D9D9D9",background:"rgba(255, 255, 255, 0.75)",width:"22rem"},Gr={fontFamily:"Verdana, sans-serif",fontSize:"1.25rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.75rem",color:"rgba(0, 0, 0, 0.85)"},Vr={borderTop:"1px solid rgba(0, 0, 0, 0.06)",borderBottom:"1px solid rgba(0, 0, 0, 0.06)",padding:"1.25rem 0rem",color:"rgba(0, 0, 0, 0.85)",fontFamily:"Verdana, sans-serif",fontSize:"13px",fontStyle:"normal",fontWeight:"400",lineHeight:"auto",whiteSpace:"pre-wrap"},Kr={display:"flex",padding:"0.4rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.625rem",borderRadius:"0.25rem",border:"1px solid #394EFF",background:"#394EFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",color:"#FFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"1rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.5rem",cursor:"pointer"},As={fontFamily:"Verdana, sans-serif",fontSize:"13px",fontWeight:"500",lineHeight:"auto",display:"flex",justifyContent:"space-between",width:"100%",cursor:"pointer"},Ue={display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"0.625rem",fontSize:"13px",lineHeight:"auto"},Xr={padding:"0.5rem",gap:"0.5rem",fontFamily:"Verdana, sans-serif",fontSize:"16px",fontStyle:"normal",fontWeight:"500",lineHeight:"auto",color:"white",display:"flex",alignItems:"center",width:"100%",borderRadius:"2px",background:"rgba(0, 0, 0, 0.75)",boxSizing:"border-box"},He={boxSizing:"border-box",display:"block",width:"100%",borderBottom:"1px solid #D9D9D9",background:"#FFF",padding:"0.65rem",alignSelf:"stretch",color:"#000",fontFamily:"Verdana, sans-serif",fontStyle:"normal",fontWeight:"400"},Jr={...He,display:"flex",flexDirection:"column",alignItems:"center",gap:"0.625rem"},Ds={fontSize:"1.25rem",fontWeight:"500",cursor:"pointer",color:"#394EFF"},Ls={display:"flex",padding:"0.4rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.625rem",borderRadius:"0.25rem",border:"1px solid #394EFF",background:"#394EFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",color:"#FFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"1rem",fontStyle:"normal",fontWeight:"500",lineHeight:"1.5rem",width:"100%",boxSizing:"border-box",cursor:"pointer"},Fs={marginTop:"1rem",marginBottom:"1rem",cursor:"pointer",display:"block",fontWeight:"500",fontSize:"13px!important",lineHeight:"auto"},Yr={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"1rem",padding:"0.5rem",width:"100%",boxSizing:"border-box"},Ms={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em",outline:"1px solid #394EFF",fontSize:"13px",height:"24px",width:"24px"},Qr={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em",outline:"1px solid #D2DFFF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",background:"#D2DFFF",fontSize:"13px",height:"24px",width:"24px"},Ps={borderRadius:"0.375rem",border:"1px solid rgba(0, 0, 0, 0.06)",background:"#F5F7FF",boxShadow:"0px 2px 0px 0px rgba(0, 0, 0, 0.04)",display:"flex",flexDirection:"column",padding:"0.625rem 0.9375rem",gap:"0.5rem",alignSelf:"stretch"},Bs={fontWeight:"bold"},Zr={fontSize:"13px",lineHeight:"auto"},js={marginRight:"0.5rem",cursor:"pointer",color:"#394EFF",textAlign:"center",fontFamily:"Verdana, sans-serif",fontSize:"13px",fontStyle:"normal",fontWeight:"500",lineHeight:"auto"},eo={...js,display:"flex",padding:"0.25rem 0.9375rem",justifyContent:"center",alignItems:"center",gap:"0.5rem",borderRadius:"0.25rem",border:"1px solid #394EFF"},to={display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",boxSizing:"border-box"},no={border:"4px solid rgba(255, 255, 255, 0.4)",width:"16px",height:"16px",borderRadius:"50%",borderLeftColor:"#fff",animation:"spin 0.5s linear infinite"},zs={Standard:{width:1280,height:720},High:{width:1920,height:1080}};class so{constructor(e){this.app=e,this.mediaRecorder=null,this.recordedChunks=[],this.stream=null,this.recStartTs=null}async startRecording(e,n,s,i){this.recStartTs=this.app.timestamp();const r=n;try{this.stream=await navigator.mediaDevices.getUserMedia({video:i?{...r,frameRate:{ideal:e}}:!1,audio:s}),this.mediaRecorder=new MediaRecorder(this.stream,{mimeType:"video/webm;codecs=vp9"}),this.recordedChunks=[],this.mediaRecorder.ondataavailable=o=>{o.data.size>0&&this.recordedChunks.push(o.data)},this.mediaRecorder.start()}catch(o){console.error(o)}}async stopRecording(){return new Promise(e=>{this.mediaRecorder&&(this.mediaRecorder.onstop=()=>{const n=new Blob(this.recordedChunks,{type:"video/webm"});e(n)},this.mediaRecorder.stop())})}async sendToAPI(){const e=await this.stopRecording();return fetch(`${this.app.options.ingestPoint}/v1/web/uxt/upload-url`,{headers:{Authorization:`Bearer ${this.app.session.getSessionToken()}`}}).then(n=>{if(n.ok)return n.json();throw new Error("Failed to get upload url")}).then(({url:n})=>fetch(n,{method:"PUT",headers:{"Content-Type":"video/webm"},body:e})).catch(console.error).finally(()=>{this.discard()})}async saveToFile(e="recorded-video.webm"){const n=await this.stopRecording(),s=URL.createObjectURL(n),i=document.createElement("a");i.style.display="none",i.href=s,i.download=e,document.body.appendChild(i),i.click(),window.URL.revokeObjectURL(s),document.body.removeChild(i)}discard(){var e,n;(e=this.mediaRecorder)==null||e.stop(),(n=this.stream)==null||n.getTracks().forEach(s=>s.stop())}}function io(t,e){e.onmousedown=function(n){const s=t.getBoundingClientRect(),i=n.clientX-s.left,r=n.clientY-s.top;t.style.position="fixed",t.style.zIndex=99999999999999,o(n.pageX,n.pageY);function o(d,c){let u=d-i,p=c-r;u<=5&&(u=5),p<=5&&(p=5),u>=window.innerWidth-s.width&&(u=window.innerWidth-s.width),p>=window.innerHeight-s.height&&(p=window.innerHeight-s.height),t.style.left=`${u}px`,t.style.top=`${p}px`}function l(d){o(d.pageX,d.pageY)}document.addEventListener("mousemove",l);const a=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",a)};document.addEventListener("mouseup",a)},e.ondragstart=function(){return!1}}function ro(){const t=document.createElement("div");t.className="grid";for(let e=0;e<16;e++){const n=document.createElement("div");Object.assign(n.style,{width:"2px",height:"2px",borderRadius:"10px",background:"white"}),n.className="cell",t.appendChild(n)}return Object.assign(t.style,{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gridTemplateRows:"repeat(4, 1fr)",gap:"2px",cursor:"grab"}),t}function oo(){const t=document.createElement("div");Object.assign(t.style,{width:"0",height:"0",borderLeft:"7px solid transparent",borderRight:"7px solid transparent",borderBottom:"7px solid white"});const e=document.createElement("div");return e.appendChild(t),Object.assign(e.style,{display:"flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",cursor:"pointer",marginLeft:"auto",transform:"rotate(180deg)"}),e}function ao(){const t=document.createElement("style");t.type="text/css",t.innerText=`@keyframes spin {
645
649
  0% { transform: rotate(0deg); }
646
650
  100% { transform: rotate(360deg); }
647
- }`,document.head.appendChild(t)}function oo(){ro();const t=document.createElement("div");return t.classList.add("spinner"),Object.assign(t.style,eo),t}function z(t,e,n,s,i){const r=document.createElement(t);return r.className=e,Object.assign(r.style,n),s&&(r.textContent=s),i&&(r.id=i),r}const vt="or_uxt_test_start",tn="or_uxt_task_index",nn="or_uxt_session_id",ao="or_uxt_test_id";class co{constructor(e,n,s,i,r,o,l,a,h){this.ingestPoint=e,this.getTimestamp=n,this.token=s,this.testId=i,this.storageKey=r,this.setStorageKey=o,this.removeStorageKey=l,this.getStorageKey=a,this.getSessionId=h,this.durations={testStart:0,tasks:[]},this.getDurations=()=>this.durations,this.setDurations=u=>{this.durations.testStart=u.testStart,this.durations.tasks=u.tasks},this.signalTask=(u,p,y)=>{if(!u)return console.error("User Testing: No Task ID Given");const S=this.durations.tasks.find(F=>F.taskId===u),v=this.getTimestamp(),E=S?v-S.started:0;return fetch(`${this.ingestPoint}/v1/web/uxt/signals/task`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`},body:JSON.stringify({testId:this.testId,taskId:u,status:p,duration:E,timestamp:v,taskAnswer:y})})},this.signalTest=u=>{const p=this.getTimestamp();if(u==="begin"&&this.testId){const v=this.getSessionId();this.setStorageKey(nn,v),this.setStorageKey(this.storageKey,this.testId.toString()),this.setStorageKey(vt,p.toString())}else this.removeStorageKey(this.storageKey),this.removeStorageKey(tn),this.removeStorageKey(vt);const y=this.durations.testStart||p,S=p-y;return fetch(`${this.ingestPoint}/v1/web/uxt/signals/test`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`},body:JSON.stringify({testId:this.testId,status:u,duration:S,timestamp:p})})};const c=this.getStorageKey(vt);c&&(this.durations.testStart=parseInt(c,10))}}class lo{constructor(e,n){this.app=e,this.storageKey=n,this.bg=z("div","bg",Hr,void 0,"__or_ut_bg"),this.container=z("div","container",$r,void 0,"__or_ut_ct"),this.widgetGuidelinesVisible=!0,this.widgetTasksVisible=!1,this.widgetVisible=!0,this.isActive=!1,this.descriptionSection=null,this.taskSection=null,this.endSection=null,this.stopButton=null,this.stopButtonContainer=null,this.test=null,this.testId=null,this.signalManager=null,this.getTest=(o,l,a)=>{this.testId=o;const h=this.app.options.ingestPoint;return fetch(`${h}/v1/web/uxt/test/${o}`,{headers:{Authorization:`Bearer ${l}`}}).then(c=>c.json()).then(({test:c})=>{this.isActive=!0,this.test=c,this.signalManager=new co(this.app.options.ingestPoint,()=>this.app.timestamp(),l,o,this.storageKey,(u,p)=>this.app.localStorage.setItem(u,p),u=>this.app.localStorage.removeItem(u),u=>this.app.localStorage.getItem(u),()=>this.app.getSessionID()),this.createGreeting(c.title,c.reqMic,c.reqCamera),a&&((c.reqMic||c.reqCamera)&&this.userRecorder.startRecording(30,js.Standard,c.reqMic,c.reqCamera),this.showWidget(c.description,c.tasks,!0),this.showTaskSection())}).then(()=>o).catch(c=>{console.log("OR: Error fetching test",c)})},this.hideTaskSection=()=>!1,this.showTaskSection=()=>!0,this.collapseWidget=()=>!1,this.removeGreeting=()=>!1,this.toggleDescriptionVisibility=()=>{},this.currentTaskIndex=0,this.userRecorder=new to(e);const s=this.app.getSessionID(),i=this.app.localStorage.getItem(nn);s!==i&&(this.app.localStorage.removeItem(this.storageKey),this.app.localStorage.removeItem(nn),this.app.localStorage.removeItem(ao),this.app.localStorage.removeItem(tn),this.app.localStorage.removeItem(vt));const r=this.app.localStorage.getItem(tn);r&&(this.currentTaskIndex=parseInt(r,10))}getTestId(){return this.testId}createGreeting(e,n,s){const i=z("div","title",Wr,e),r=z("div","description",qr,`Welcome, you're here to help us improve, not to be judged. Your insights matter!
651
+ }`,document.head.appendChild(t)}function co(){ao();const t=document.createElement("div");return t.classList.add("spinner"),Object.assign(t.style,no),t}function z(t,e,n,s,i){const r=document.createElement(t);return r.className=e,Object.assign(r.style,n),s&&(r.textContent=s),i&&(r.id=i),r}const yt="or_uxt_test_start",tn="or_uxt_task_index",nn="or_uxt_session_id",lo="or_uxt_test_id";class ho{constructor(e,n,s,i,r,o,l,a,d){this.ingestPoint=e,this.getTimestamp=n,this.token=s,this.testId=i,this.storageKey=r,this.setStorageKey=o,this.removeStorageKey=l,this.getStorageKey=a,this.getSessionId=d,this.durations={testStart:0,tasks:[]},this.getDurations=()=>this.durations,this.setDurations=u=>{this.durations.testStart=u.testStart,this.durations.tasks=u.tasks},this.signalTask=(u,p,v)=>{if(!u)return console.error("User Testing: No Task ID Given");const S=this.durations.tasks.find(A=>A.taskId===u),y=this.getTimestamp(),T=S?y-S.started:0;return fetch(`${this.ingestPoint}/v1/web/uxt/signals/task`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`},body:JSON.stringify({testId:this.testId,taskId:u,status:p,duration:T,timestamp:y,taskAnswer:v})})},this.signalTest=u=>{const p=this.getTimestamp();if(u==="begin"&&this.testId){const y=this.getSessionId();this.setStorageKey(nn,y),this.setStorageKey(this.storageKey,this.testId.toString()),this.setStorageKey(yt,p.toString())}else this.removeStorageKey(this.storageKey),this.removeStorageKey(tn),this.removeStorageKey(yt);const v=this.durations.testStart||p,S=p-v;return fetch(`${this.ingestPoint}/v1/web/uxt/signals/test`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`},body:JSON.stringify({testId:this.testId,status:u,duration:S,timestamp:p})})};const c=this.getStorageKey(yt);c&&(this.durations.testStart=parseInt(c,10))}}class uo{constructor(e,n){this.app=e,this.storageKey=n,this.bg=z("div","bg",qr,void 0,"__or_ut_bg"),this.container=z("div","container",Wr,void 0,"__or_ut_ct"),this.widgetGuidelinesVisible=!0,this.widgetTasksVisible=!1,this.widgetVisible=!0,this.isActive=!1,this.descriptionSection=null,this.taskSection=null,this.endSection=null,this.stopButton=null,this.stopButtonContainer=null,this.test=null,this.testId=null,this.signalManager=null,this.getTest=(o,l,a)=>{this.testId=o;const d=this.app.options.ingestPoint;return fetch(`${d}/v1/web/uxt/test/${o}`,{headers:{Authorization:`Bearer ${l}`}}).then(c=>c.json()).then(({test:c})=>{this.isActive=!0,this.test=c,this.signalManager=new ho(this.app.options.ingestPoint,()=>this.app.timestamp(),l,o,this.storageKey,(u,p)=>this.app.localStorage.setItem(u,p),u=>this.app.localStorage.removeItem(u),u=>this.app.localStorage.getItem(u),()=>this.app.getSessionID()),this.createGreeting(c.title,c.reqMic,c.reqCamera),a&&((c.reqMic||c.reqCamera)&&this.userRecorder.startRecording(30,zs.Standard,c.reqMic,c.reqCamera),this.showWidget(c.description,c.tasks,!0),this.showTaskSection())}).then(()=>o).catch(c=>{console.log("OR: Error fetching test",c)})},this.hideTaskSection=()=>!1,this.showTaskSection=()=>!0,this.collapseWidget=()=>!1,this.removeGreeting=()=>!1,this.toggleDescriptionVisibility=()=>{},this.currentTaskIndex=0,this.userRecorder=new so(e);const s=this.app.getSessionID(),i=this.app.localStorage.getItem(nn);s!==i&&(this.app.localStorage.removeItem(this.storageKey),this.app.localStorage.removeItem(nn),this.app.localStorage.removeItem(lo),this.app.localStorage.removeItem(tn),this.app.localStorage.removeItem(yt));const r=this.app.localStorage.getItem(tn);r&&(this.currentTaskIndex=parseInt(r,10))}getTestId(){return this.testId}createGreeting(e,n,s){const i=z("div","title",Gr,e),r=z("div","description",Vr,`Welcome, you're here to help us improve, not to be judged. Your insights matter!
648
652
 
649
653
  📹 We're recording this browser tab to learn from your experience.
650
- 🎤 Please enable mic and camera if asked, to give us a complete picture.`),o=z("div","button",Vr,"Read guidelines to begin");this.removeGreeting=()=>((n||s)&&this.userRecorder.startRecording(30,js.Standard,n,s),this.container.removeChild(o),this.container.removeChild(r),this.container.removeChild(i),!1),o.onclick=()=>{var a,h,c,u;this.removeGreeting();const l=(a=this.signalManager)==null?void 0:a.getDurations();l&&this.signalManager&&(l.testStart=this.app.timestamp(),this.signalManager.setDurations(l)),(h=this.signalManager)==null||h.signalTest("begin"),this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,yt),this.showWidget(((c=this.test)==null?void 0:c.guidelines)||"",((u=this.test)==null?void 0:u.tasks)||[])},this.container.append(i,r,o),this.bg.appendChild(this.container),document.body.appendChild(this.bg)}showWidget(e,n,s){this.container.innerHTML="",Object.assign(this.bg.style,{position:"fixed",zIndex:99999999999999,right:"8px",left:"unset",width:"fit-content",top:"8px",height:"fit-content",background:"unset",display:"unset",alignItems:"unset",justifyContent:"unset"});const i=this.createTitleSection();this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,yt);const r=this.createDescriptionSection(e),o=this.createTasksSection(n),l=z("div","stop_bn_or",Ds,"Abort Session"),a=z("div","stop_ct_or",{fontSize:"13px!important"});a.style.fontSize="13px",a.append(l),this.container.append(i,r,o,a),this.taskSection=o,this.descriptionSection=r,this.stopButton=l,this.stopButtonContainer=a,l.onclick=()=>{var h;this.userRecorder.discard(),(h=this.signalManager)==null||h.signalTest("skipped"),document.body.removeChild(this.bg),window.close()},s?this.toggleDescriptionVisibility():this.hideTaskSection()}createTitleSection(){var l;const e=z("div","title",Gr),n=so(),s=z("div","title_text",{maxWidth:"19rem",overflow:"hidden",textOverflow:"ellipsis",width:"100%",fontSize:16,lineHeight:"auto",cursor:"pointer"},(l=this.test)==null?void 0:l.title),i=io();e.append(n,s,i);const r=a=>(this.widgetVisible=a,this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,this.widgetVisible?yt:{border:"none",background:"none",padding:0}),this.taskSection&&Object.assign(this.taskSection.style,this.widgetVisible?He:{display:"none"}),this.descriptionSection&&Object.assign(this.descriptionSection.style,this.widgetVisible?He:{display:"none"}),this.endSection&&Object.assign(this.endSection.style,this.widgetVisible?He:{display:"none"}),this.stopButton&&Object.assign(this.stopButton.style,this.widgetVisible?Ds:{display:"none"}),a),o=()=>{Object.assign(i.style,{transform:this.widgetVisible?"rotate(0deg)":"rotate(180deg)"}),r(!this.widgetVisible)};return s.onclick=o,i.onclick=o,no(this.bg,n),this.collapseWidget=()=>r(!1),e}createDescriptionSection(e){const n=z("div","description_section_or",He),s=z("div","description_s_title_or",Rs),i=z("div","title",{fontSize:13,fontWeight:500,lineHeight:"auto"},"Introduction & Guidelines"),r=z("div","icon",Fs,"-"),o=z("div","content",Ue),l=z("div","text_description",{maxHeight:"250px",overflowY:"auto",whiteSpace:"pre-wrap",fontSize:13,color:"#454545",lineHeight:"auto"});l.innerHTML=e;const a=z("div","button_begin_or",As,"Begin Test");s.append(i,r),o.append(l,a),n.append(s,o);const h=()=>{this.widgetGuidelinesVisible=!this.widgetGuidelinesVisible,r.textContent=this.widgetGuidelinesVisible?"-":"+",Object.assign(o.style,this.widgetGuidelinesVisible?Ue:{display:"none"})};return s.onclick=h,this.toggleDescriptionVisibility=()=>{this.widgetGuidelinesVisible=!1,r.textContent=this.widgetGuidelinesVisible?"-":"+",Object.assign(o.style,this.widgetGuidelinesVisible?Ue:{display:"none"}),o.removeChild(a)},a.onclick=()=>{var c,u,p;if(h(),this.test){const y=(c=this.signalManager)==null?void 0:c.getDurations(),S=y?y.tasks.findIndex(v=>this.test&&v.taskId===this.test.tasks[0].task_id):null;y&&S===-1&&(y.tasks.push({taskId:this.test.tasks[0].task_id,started:this.app.timestamp()}),(u=this.signalManager)==null||u.setDurations(y)),(p=this.signalManager)==null||p.signalTask(this.test.tasks[0].task_id,"begin")}this.showTaskSection(),o.removeChild(a)},n}createTasksSection(e){this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,yt);const n=z("div","task_section_or",He),s=z("div","description_t_title_or",Rs),i=z("div","title",{fontSize:"13px",fontWeight:"500",lineHeight:"auto"},"Tasks"),r=z("div","icon",Fs,"-"),o=z("div","content",Ue),l=z("div","pagination",Jr),a=z("div","taskCard",Ms),h=z("div","taskText",Bs),c=z("div","taskDescription",Yr),u=z("div","taskButtons",Zr),p=z("div","taskText",Bs);p.textContent="Your answer";const y=z("textarea","taskDescription",{resize:"vertical"}),S=z("div","inputArea",Ms);S.append(p,y);const v=z("div","closePanelButton",Ps,"Collapse Panel"),E=z("div","nextButton",Qr,"Done, Next");s.append(i,r),a.append(h,c),u.append(v,E),o.append(l,a,S,u),n.append(s,o);const F=()=>{const k=e[this.currentTaskIndex];h.textContent=k.title,c.textContent=k.description,k.allow_typing?S.style.display="flex":S.style.display="none"};e.forEach((k,N)=>{const O=z("span",`or_task_${N}`,{outline:"1px solid #efefef",fontSize:"13px",height:"24px",width:"24px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em"},(N+1).toString());O.id=`or_task_${N}`,l.append(O)});const P=()=>{this.widgetTasksVisible=!this.widgetTasksVisible,r.textContent=this.widgetTasksVisible?"-":"+",Object.assign(o.style,this.widgetTasksVisible?Ue:{display:"none"})};this.hideTaskSection=()=>(r.textContent="+",Object.assign(o.style,{display:"none"}),this.widgetTasksVisible=!1,!1),this.showTaskSection=()=>(r.textContent="-",Object.assign(o.style,Ue),this.widgetTasksVisible=!0,!0);const A=()=>{const k=document.getElementById(`or_task_${this.currentTaskIndex}`);k&&Object.assign(k.style,Ls);for(let N=0;N<this.currentTaskIndex;N++){const O=document.getElementById(`or_task_${N}`);O&&Object.assign(O.style,Xr)}};return s.onclick=P,v.onclick=this.collapseWidget,E.onclick=()=>{var N,O,D,I;const k=e[this.currentTaskIndex].allow_typing?y.value:void 0;if(y.value="",(N=this.signalManager)==null||N.signalTask(e[this.currentTaskIndex].task_id,"done",k),this.currentTaskIndex<e.length-1){this.currentTaskIndex++,F();const T=(O=this.signalManager)==null?void 0:O.getDurations();T&&T.tasks.findIndex(B=>B.taskId===e[this.currentTaskIndex].task_id)===-1&&(T.tasks.push({taskId:e[this.currentTaskIndex].task_id,started:this.app.timestamp()}),(D=this.signalManager)==null||D.setDurations(T)),(I=this.signalManager)==null||I.signalTask(e[this.currentTaskIndex].task_id,"begin"),A()}else this.showEndSection();this.app.localStorage.setItem("or_uxt_task_index",this.currentTaskIndex.toString())},setTimeout(()=>{const k=document.getElementById("or_task_0");k&&Object.assign(k.style,Ls),F(),A()},1),n}showEndSection(){var l,a,h,c;let e=!0;(l=this.signalManager)==null||l.signalTest("done");const n=z("div","end_section_or",Kr),s=z("div","end_title_or",{fontSize:"1.25rem",fontWeight:"500"},"Thank you! 👍"),i=z("div","end_description_or",{},((a=this.test)==null?void 0:a.conclusion)??`Thank you for participating in our usability test. Your feedback has been captured and will be used to enhance our website.
654
+ 🎤 Please enable mic and camera if asked, to give us a complete picture.`),o=z("div","button",Kr,"Read guidelines to begin");this.removeGreeting=()=>((n||s)&&this.userRecorder.startRecording(30,zs.Standard,n,s),this.container.removeChild(o),this.container.removeChild(r),this.container.removeChild(i),!1),o.onclick=()=>{var a,d,c,u;this.removeGreeting();const l=(a=this.signalManager)==null?void 0:a.getDurations();l&&this.signalManager&&(l.testStart=this.app.timestamp(),this.signalManager.setDurations(l)),(d=this.signalManager)==null||d.signalTest("begin"),this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,vt),this.showWidget(((c=this.test)==null?void 0:c.guidelines)||"",((u=this.test)==null?void 0:u.tasks)||[])},this.container.append(i,r,o),this.bg.appendChild(this.container),document.body.appendChild(this.bg)}showWidget(e,n,s){this.container.innerHTML="",Object.assign(this.bg.style,{position:"fixed",zIndex:99999999999999,right:"8px",left:"unset",width:"fit-content",top:"8px",height:"fit-content",background:"unset",display:"unset",alignItems:"unset",justifyContent:"unset"});const i=this.createTitleSection();this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,vt);const r=this.createDescriptionSection(e),o=this.createTasksSection(n),l=z("div","stop_bn_or",Fs,"Abort Session"),a=z("div","stop_ct_or",{fontSize:"13px!important"});a.style.fontSize="13px",a.append(l),this.container.append(i,r,o,a),this.taskSection=o,this.descriptionSection=r,this.stopButton=l,this.stopButtonContainer=a,l.onclick=()=>{var d;this.userRecorder.discard(),(d=this.signalManager)==null||d.signalTest("skipped"),document.body.removeChild(this.bg),window.close()},s?this.toggleDescriptionVisibility():this.hideTaskSection()}createTitleSection(){var l;const e=z("div","title",Xr),n=ro(),s=z("div","title_text",{maxWidth:"19rem",overflow:"hidden",textOverflow:"ellipsis",width:"100%",fontSize:16,lineHeight:"auto",cursor:"pointer"},(l=this.test)==null?void 0:l.title),i=oo();e.append(n,s,i);const r=a=>(this.widgetVisible=a,this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,this.widgetVisible?vt:{border:"none",background:"none",padding:0}),this.taskSection&&Object.assign(this.taskSection.style,this.widgetVisible?He:{display:"none"}),this.descriptionSection&&Object.assign(this.descriptionSection.style,this.widgetVisible?He:{display:"none"}),this.endSection&&Object.assign(this.endSection.style,this.widgetVisible?He:{display:"none"}),this.stopButton&&Object.assign(this.stopButton.style,this.widgetVisible?Fs:{display:"none"}),a),o=()=>{Object.assign(i.style,{transform:this.widgetVisible?"rotate(0deg)":"rotate(180deg)"}),r(!this.widgetVisible)};return s.onclick=o,i.onclick=o,io(this.bg,n),this.collapseWidget=()=>r(!1),e}createDescriptionSection(e){const n=z("div","description_section_or",He),s=z("div","description_s_title_or",As),i=z("div","title",{fontSize:13,fontWeight:500,lineHeight:"auto"},"Introduction & Guidelines"),r=z("div","icon",Ds,"-"),o=z("div","content",Ue),l=z("div","text_description",{maxHeight:"250px",overflowY:"auto",whiteSpace:"pre-wrap",fontSize:13,color:"#454545",lineHeight:"auto"});l.innerHTML=e;const a=z("div","button_begin_or",Ls,"Begin Test");s.append(i,r),o.append(l,a),n.append(s,o);const d=()=>{this.widgetGuidelinesVisible=!this.widgetGuidelinesVisible,r.textContent=this.widgetGuidelinesVisible?"-":"+",Object.assign(o.style,this.widgetGuidelinesVisible?Ue:{display:"none"})};return s.onclick=d,this.toggleDescriptionVisibility=()=>{this.widgetGuidelinesVisible=!1,r.textContent=this.widgetGuidelinesVisible?"-":"+",Object.assign(o.style,this.widgetGuidelinesVisible?Ue:{display:"none"}),o.removeChild(a)},a.onclick=()=>{var c,u,p;if(d(),this.test){const v=(c=this.signalManager)==null?void 0:c.getDurations(),S=v?v.tasks.findIndex(y=>this.test&&y.taskId===this.test.tasks[0].task_id):null;v&&S===-1&&(v.tasks.push({taskId:this.test.tasks[0].task_id,started:this.app.timestamp()}),(u=this.signalManager)==null||u.setDurations(v)),(p=this.signalManager)==null||p.signalTask(this.test.tasks[0].task_id,"begin")}this.showTaskSection(),o.removeChild(a)},n}createTasksSection(e){this.container.style.fontFamily='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',Object.assign(this.container.style,vt);const n=z("div","task_section_or",He),s=z("div","description_t_title_or",As),i=z("div","title",{fontSize:"13px",fontWeight:"500",lineHeight:"auto"},"Tasks"),r=z("div","icon",Ds,"-"),o=z("div","content",Ue),l=z("div","pagination",Yr),a=z("div","taskCard",Ps),d=z("div","taskText",Bs),c=z("div","taskDescription",Zr),u=z("div","taskButtons",to),p=z("div","taskText",Bs);p.textContent="Your answer";const v=z("textarea","taskDescription",{resize:"vertical"}),S=z("div","inputArea",Ps);S.append(p,v);const y=z("div","closePanelButton",js,"Collapse Panel"),T=z("div","nextButton",eo,"Done, Next");s.append(i,r),a.append(d,c),u.append(y,T),o.append(l,a,S,u),n.append(s,o);const A=()=>{const k=e[this.currentTaskIndex];d.textContent=k.title,c.textContent=k.description,k.allow_typing?S.style.display="flex":S.style.display="none"};e.forEach((k,N)=>{const O=z("span",`or_task_${N}`,{outline:"1px solid #efefef",fontSize:"13px",height:"24px",width:"24px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:"6.25em"},(N+1).toString());O.id=`or_task_${N}`,l.append(O)});const B=()=>{this.widgetTasksVisible=!this.widgetTasksVisible,r.textContent=this.widgetTasksVisible?"-":"+",Object.assign(o.style,this.widgetTasksVisible?Ue:{display:"none"})};this.hideTaskSection=()=>(r.textContent="+",Object.assign(o.style,{display:"none"}),this.widgetTasksVisible=!1,!1),this.showTaskSection=()=>(r.textContent="-",Object.assign(o.style,Ue),this.widgetTasksVisible=!0,!0);const D=()=>{const k=document.getElementById(`or_task_${this.currentTaskIndex}`);k&&Object.assign(k.style,Ms);for(let N=0;N<this.currentTaskIndex;N++){const O=document.getElementById(`or_task_${N}`);O&&Object.assign(O.style,Qr)}};return s.onclick=B,y.onclick=this.collapseWidget,T.onclick=()=>{var N,O,L,I;const k=e[this.currentTaskIndex].allow_typing?v.value:void 0;if(v.value="",(N=this.signalManager)==null||N.signalTask(e[this.currentTaskIndex].task_id,"done",k),this.currentTaskIndex<e.length-1){this.currentTaskIndex++,A();const E=(O=this.signalManager)==null?void 0:O.getDurations();E&&E.tasks.findIndex(P=>P.taskId===e[this.currentTaskIndex].task_id)===-1&&(E.tasks.push({taskId:e[this.currentTaskIndex].task_id,started:this.app.timestamp()}),(L=this.signalManager)==null||L.setDurations(E)),(I=this.signalManager)==null||I.signalTask(e[this.currentTaskIndex].task_id,"begin"),D()}else this.showEndSection();this.app.localStorage.setItem("or_uxt_task_index",this.currentTaskIndex.toString())},setTimeout(()=>{const k=document.getElementById("or_task_0");k&&Object.assign(k.style,Ms),A(),D()},1),n}showEndSection(){var l,a,d,c;let e=!0;(l=this.signalManager)==null||l.signalTest("done");const n=z("div","end_section_or",Jr),s=z("div","end_title_or",{fontSize:"1.25rem",fontWeight:"500"},"Thank you! 👍"),i=z("div","end_description_or",{},((a=this.test)==null?void 0:a.conclusion)??`Thank you for participating in our usability test. Your feedback has been captured and will be used to enhance our website.
651
655
 
652
- We appreciate your time and valuable input.`),r=z("div","end_button_or",As,"Submitting Feedback"),o=oo();r.appendChild(o),(h=this.test)!=null&&h.reqMic||(c=this.test)!=null&&c.reqCamera?this.userRecorder.sendToAPI().then(()=>{r.removeChild(o),r.textContent="End Session",e=!1}).catch(u=>{console.error(u),r.removeChild(o),r.textContent="End Session",e=!1}):(r.removeChild(o),r.textContent="End Session",e=!1),this.taskSection&&this.container.removeChild(this.taskSection),this.descriptionSection&&this.container.removeChild(this.descriptionSection),this.stopButton&&this.stopButtonContainer&&this.container.removeChild(this.stopButtonContainer),r.onclick=()=>{e||(window.close(),document.body.removeChild(this.bg))},n.append(s,i,r),this.endSection=n,this.container.append(n)}}function zs(t){return!!t&&t.nodeType!=null}function sn(t){return t.namespaceURI==="http://www.w3.org/2000/svg"}function ke(t){return t.nodeType===Node.ELEMENT_NODE}function ho(t){return t.nodeType===Node.COMMENT_NODE}function rn(t){return t.nodeType===Node.TEXT_NODE}function wt(t){return t.nodeType===Node.DOCUMENT_NODE}function St(t){return t.nodeType===Node.DOCUMENT_NODE||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Q(t,e){return t.localName===e}class uo{constructor(e,n){this.app=e,this.options=n,this.snapshots={},this.intervals=[],this.restartTracking=()=>{this.clear(),this.app.nodes.scanTree(this.captureCanvas)},this.captureCanvas=s=>{const i=this.app.nodes.getID(s);if(!i||!Q(s,"canvas")||this.app.sanitizer.isObscured(i)||this.app.sanitizer.isHidden(i)||!Q(s,"canvas")||this.snapshots[i])return;new IntersectionObserver(l=>{l.forEach(a=>{a.isIntersecting&&(a.target?this.snapshots[i]&&this.snapshots[i].createdAt?this.snapshots[i].paused=!1:this.recordCanvas(a.target,i):this.snapshots[i]&&(this.snapshots[i].paused=!0))})}).observe(s)},this.recordCanvas=(s,i)=>{const r=this.app.timestamp();this.snapshots[i]={images:[],createdAt:r,paused:!1,dummy:document.createElement("canvas")};const o=Br(i.toString(),r);this.app.send(o);const l=h=>{fo(h,this.options.quality,this.snapshots[i].dummy,this.options.fixedScaling,this.fileExt,c=>{c&&(this.snapshots[i].images.push({id:this.app.timestamp(),data:c}),this.snapshots[i].images.length>9&&(this.sendSnaps(this.snapshots[i].images,i,this.snapshots[i].createdAt),this.snapshots[i].images=[]))})},a=setInterval(()=>{const h=this.app.nodes.getID(s),c=h?this.app.nodes.getNode(h):void 0;!c||!Q(c,"canvas")||c!==s?(this.app.debug.log("Canvas element not in sync"),clearInterval(a)):this.snapshots[i].paused||(this.options.useAnimationFrame?requestAnimationFrame(()=>{l(c)}):l(c))},this.interval);this.intervals.push(a)},this.fileExt=n.fileExt??"webp",this.interval=1e3/n.fps}startTracking(){setTimeout(()=>{this.app.nodes.scanTree(this.captureCanvas),this.app.nodes.attachNodeCallback(e=>{this.captureCanvas(e)})},500)}sendSnaps(e,n,s){if(Object.keys(this.snapshots).length===0)return;const i=new FormData;e.forEach(r=>{const o=r.data;o&&(i.append("snapshot",o,`${s}_${n}_${r.id}.${this.fileExt}`),this.options.isDebug&&po(o,`${s}_${n}_${r.id}.${this.fileExt}`))}),fetch(this.app.options.ingestPoint+"/v1/web/images",{method:"POST",headers:{Authorization:`Bearer ${this.app.session.getSessionToken()??""}`},body:i}).then(()=>!0).catch(r=>{this.app.debug.error("error saving canvas",r)})}clear(){this.intervals.forEach(e=>clearInterval(e)),this.snapshots={}}}const Us={low:.35,medium:.55,high:.8};function fo(t,e="medium",n,s=!1,i,r){const o=`image/${i}`;if(s){const l=window.devicePixelRatio||1;n.width=t.width/l,n.height=t.height/l;const a=n.getContext("2d");if(!a)return"";a.clearRect(0,0,n.width,n.height),a.drawImage(t,0,0,n.width,n.height),n.toBlob(r,o,Us[e])}else t.toBlob(r,o,Us[e])}function po(t,e){const n=URL.createObjectURL(t),s=document.createElement("a");s.href=n,s.download=e,s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}const Xe={Verbose:5,Log:4,Warnings:3,Errors:2,Silent:0};class go{constructor(e=Xe.Silent){this.shouldLog=n=>this.level>=n,this.log=(...n)=>{this.shouldLog(Xe.Log)&&console.log(...n)},this.warn=(...n)=>{this.shouldLog(Xe.Warnings)&&console.warn(...n)},this.error=(...n)=>{this.shouldLog(Xe.Errors)&&console.error(...n)},this.level=e}}class mo{constructor(e){this.node_id=e,this.nodes=[],this.totalNodeAmount=0,this.nodeCallbacks=[],this.elementListeners=new Map,this.nextNodeId=0,this.scanTree=n=>{this.nodes.forEach(s=>n(s))}}syntheticMode(e){const i=99999999*e;if(i>9007199254740900)throw new Error("Placeholder id overflow");this.nextNodeId=i}attachNodeCallback(e){this.nodeCallbacks.push(e)}attachNodeListener(e,n,s,i=!0){const r=this.getID(e);if(r===void 0)return;ys(e,n,s,i);let o=this.elementListeners.get(r);o===void 0&&(o=[],this.elementListeners.set(r,o)),o.push([n,s,i])}registerNode(e){let n=e[this.node_id];const s=n===void 0;return s&&(n=this.nextNodeId,this.totalNodeAmount++,this.nextNodeId++,this.nodes[n]=e,e[this.node_id]=n),[n,s]}unregisterNode(e){const n=e[this.node_id];if(n!==void 0){e[this.node_id]=void 0,delete e[this.node_id],delete this.nodes[n];const s=this.elementListeners.get(n);s!==void 0&&(this.elementListeners.delete(n),s.forEach(i=>vs(e,i[0],i[1],i[2]))),this.totalNodeAmount--}return n}cleanTree(){for(let e=0;e<this.nodes.length;e++){const n=this.nodes[e];n&&!document.contains(n)&&this.unregisterNode(n)}}callNodeCallbacks(e,n){this.nodeCallbacks.forEach(s=>s(e,n))}getID(e){if(e)return e[this.node_id]}getNode(e){return this.nodes[e]}getNodeCount(){return this.totalNodeAmount}clear(){for(let e=0;e<this.nodes.length;e++){const n=this.nodes[e];n&&this.unregisterNode(n)}this.nextNodeId=0,this.nodes.length=0}}function on(t){if(ho(t))return!0;if(rn(t))return!1;if(!ke(t))return!0;const e=t.tagName.toUpperCase();if(e==="LINK"){const n=t.getAttribute("rel"),s=t.getAttribute("as");return!(n!=null&&n.includes("stylesheet")||s==="style"||s==="font")}return e==="SCRIPT"||e==="NOSCRIPT"||e==="META"||e==="TITLE"||e==="BASE"}function an(t){return St(t)?!0:!on(t)}var ye;(function(t){t[t.New=0]="New",t[t.Removed=1]="Removed",t[t.Changed=2]="Changed"})(ye||(ye={}));class cn{constructor(e,n=!1){this.app=e,this.isTopContext=n,this.commited=[],this.recents=new Map,this.indexes=[],this.attributesMap=new Map,this.textSet=new Set,this.observer=bs(this.app.safe(s=>{for(const i of s){const r=i.target,o=i.type;if(!an(r))continue;if(o==="childList"){for(let a=0;a<i.removedNodes.length;a++)an(i.removedNodes[a])&&this.bindNode(i.removedNodes[a]);for(let a=0;a<i.addedNodes.length;a++)this.bindTree(i.addedNodes[a]);continue}const l=this.app.nodes.getID(r);if(l!==void 0){if(this.recents.has(l)||this.recents.set(l,ye.Changed),o==="attributes"){const a=i.attributeName;if(a===null)continue;let h=this.attributesMap.get(l);h===void 0&&this.attributesMap.set(l,h=new Set),h.add(a);continue}if(o==="characterData"){this.textSet.add(l);continue}}}this.commitNodes()}))}clear(){this.commited.length=0,this.recents.clear(),this.indexes.length=1,this.attributesMap.clear(),this.textSet.clear()}sendNodeAttribute(e,n,s,i){if(sn(n)){s.substr(0,6)==="xlink:"&&(s=s.substr(6)),i===null?this.app.send(Ss(e,s)):s==="href"?(i.length>1e5&&(i=""),this.app.send(Kt(e,s,i,this.app.getBaseHref()))):this.app.attributeSender.sendSetAttribute(e,s,i);return}if(!(s==="src"||s==="srcset"||s==="integrity"||s==="crossorigin"||s==="autocomplete"||s.substr(0,2)==="on")&&!(s==="value"&&Q(n,"input")&&n.type!=="button"&&n.type!=="reset"&&n.type!=="submit")){if(i===null){this.app.send(Ss(e,s));return}if(s==="style"||s==="href"&&Q(n,"link")){this.app.send(Kt(e,s,i,this.app.getBaseHref()));return}(s==="href"||i.length>1e5)&&(i=""),this.app.attributeSender.sendSetAttribute(e,s,i)}}sendNodeData(e,n,s){if(Q(n,"style")){this.app.send(_r(e,s,this.app.getBaseHref()));return}s=this.app.sanitizer.sanitize(e,s),this.app.send(pr(e,s))}bindNode(e){const[n,s]=this.app.nodes.registerNode(e);s?this.recents.set(n,ye.New):this.recents.get(n)!==ye.New&&this.recents.set(n,ye.Removed)}bindTree(e){if(!an(e))return;this.bindNode(e);const n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT+NodeFilter.SHOW_TEXT,{acceptNode:s=>(this.app.nodes.getID(s)!==void 0&&this.app.debug.error("! Node is already bound",s),on(s)||this.app.nodes.getID(s)!==void 0?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT)},!1);for(;n.nextNode();)this.bindNode(n.currentNode)}unbindTree(e){const n=this.app.nodes.unregisterNode(e);if(n!==void 0&&this.recents.get(n)===ye.Removed){this.app.send(fr(n));const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT+NodeFilter.SHOW_TEXT,{acceptNode:l=>on(l)||this.app.nodes.getID(l)===void 0?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},!1);let i=0;const r=this.app.nodes.getNodeCount();for(;s.nextNode();)i+=1,this.app.nodes.unregisterNode(s.currentNode);const o=Math.floor(i/r*100);o>30&&this.app.send(Mr(o))}}_commitNode(e,n){if(St(n))return!0;const s=n.parentNode;let i;if(!Q(n,"html")||!this.isTopContext){if(s===null)return this.unbindTree(n),!1;if(i=this.app.nodes.getID(s),i===void 0)return this.unbindTree(n),!1;if(!this.commitNode(i))return this.unbindTree(n),!1;if(this.app.sanitizer.handleNode(e,i,n),this.app.sanitizer.isHidden(i))return!1}let r=n.previousSibling;for(;r!==null;){const c=this.app.nodes.getID(r);if(c!==void 0){this.commitNode(c),this.indexes[e]=this.indexes[c]+1;break}r=r.previousSibling}r===null&&(this.indexes[e]=0);const o=this.recents.get(e),l=o===ye.New,a=this.indexes[e];if(a===void 0)throw"commitNode: missing node index";if(l){if(ke(n)){let c=n;if(i!==void 0){if(this.app.sanitizer.isHidden(e)){const u=c.clientWidth,p=c.clientHeight;c=n.cloneNode(),c.style.width=`${u}px`,c.style.height=`${p}px`}this.app.send(hr(e,i,a,c.tagName,sn(n)))}for(let u=0;u<c.attributes.length;u++){const p=c.attributes[u];this.sendNodeAttribute(e,c,p.nodeName,p.value)}}else rn(n)&&(this.app.send(dr(e,i,a)),this.sendNodeData(e,s,n.data));return!0}o===ye.Removed&&i!==void 0&&this.app.send(ur(e,i,a));const h=this.attributesMap.get(e);if(h!==void 0){if(!ke(n))throw"commitNode: node is not an element";for(const c of h)this.sendNodeAttribute(e,n,c,n.getAttribute(c))}if(this.textSet.has(e)){if(!rn(n))throw"commitNode: node is not a text";this.sendNodeData(e,s,n.data)}return!0}commitNode(e){const n=this.app.nodes.getNode(e);if(n===void 0)return!1;const s=this.commited[e];return s!==void 0?s:this.commited[e]=this._commitNode(e,n)}commitNodes(e=!1){let n;this.recents.forEach((s,i)=>{this.commitNode(i),s===ye.New&&(n=this.app.nodes.getNode(i))&&this.app.nodes.callNodeCallbacks(n,e)}),this.clear()}observeRoot(e,n,s=e){this.observer.observe(e,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1}),this.bindTree(s),n(this.app.nodes.getID(e)),this.commitNodes(!0)}disconnect(){this.observer.disconnect(),this.clear()}}class Hs extends cn{observe(e){const n=e.contentDocument,s=this.app.nodes.getID(e);!n||s===void 0||this.observeRoot(n,i=>{if(i===void 0){this.app.debug.log("OpenReplay: Iframe document not bound");return}this.app.send(Jt(s,i))})}syntheticObserve(e,n){this.observeRoot(n,s=>{if(s===void 0){this.app.debug.log("OpenReplay: Iframe document not bound");return}this.app.send(Jt(e,s))})}}class bo extends cn{observe(e){const n=e.shadowRoot,s=this.app.nodes.getID(e);!n||s===void 0||this.observeRoot(n,i=>{if(i===void 0){this.app.debug.error("OpenReplay: Shadow Root was not bound");return}this.app.send(Jt(s,i))})}}class yo{constructor(){this.states=new Map}calcOffset(e){let n=0,s=0;if(e.parent&&([n,s]=this.calcOffset(e.parent)),!e.offset){const{left:o,top:l}=e.iFrame.getBoundingClientRect();e.offset=[o,l]}const[i,r]=e.offset;return[n+i,s+r]}getDocumentOffset(e){const n=this.states.get(e);return n?this.calcOffset(n):[0,0]}observe(e){var l;const n=e.contentDocument;if(!n)return;const s=e.ownerDocument,i=this.states.get(s),r={offset:null,iFrame:e,parent:i||null,clear:()=>{var a;s.removeEventListener("scroll",o),(a=s.defaultView)==null||a.removeEventListener("resize",o)}},o=()=>{r.offset=null};s.addEventListener("scroll",o),(l=s.defaultView)==null||l.addEventListener("resize",o),this.states.set(n,r)}clear(){this.states.forEach(e=>e.clear()),this.states.clear()}}const ln=be?Element.prototype.attachShadow:()=>new ShadowRoot;class vo extends cn{constructor(e,n){super(e,!0),this.iframeOffsets=new yo,this.contextCallbacks=[],this.contextsSet=new Set,this.iframeObservers=[],this.shadowRootObservers=[],this.options=Object.assign({captureIFrames:!0},n),this.app.nodes.attachNodeCallback(s=>{Q(s,"iframe")&&(this.options.captureIFrames&&!Re(s,"obscured")||Re(s,"capture"))&&this.handleIframe(s)}),this.app.nodes.attachNodeCallback(s=>{ke(s)&&s.shadowRoot!==null&&this.handleShadowRoot(s.shadowRoot)})}attachContextCallback(e){this.contextCallbacks.push(e)}getDocumentOffset(e){return this.iframeOffsets.getDocumentOffset(e)}handleIframe(e){let n=null;const s=this.app.safe(()=>setTimeout(()=>{if(this.app.nodes.getID(e)===void 0||!tr(e))return;const r=e.contentWindow,o=e.contentDocument;if(o&&o!==n){const l=new Hs(this.app);this.iframeObservers.push(l),l.observe(e),n=o,this.iframeOffsets.observe(e)}r&&r===r.window&&!this.contextsSet.has(r)&&(this.contextsSet.add(r),this.contextCallbacks.forEach(l=>l(r)))},100));e.addEventListener("load",s),s()}handleShadowRoot(e){const n=new bo(this.app);this.shadowRootObservers.push(n),n.observe(e.host)}observe(){const e=this;Element.prototype.attachShadow=function(){const n=ln.apply(this,arguments);return e.handleShadowRoot(n),n},this.app.nodes.clear(),this.observeRoot(window.document,()=>{this.app.send(lr()),this.app.nodes.callNodeCallbacks(document,!0)},window.document.documentElement)}crossdomainObserve(e,n){const s=this;Element.prototype.attachShadow=function(){const r=ln.apply(this,arguments);return s.handleShadowRoot(r),r},this.app.nodes.clear(),this.app.nodes.syntheticMode(n);const i=new Hs(this.app);this.iframeObservers.push(i),i.syntheticObserve(e,window.document)}disconnect(){this.iframeOffsets.clear(),Element.prototype.attachShadow=ln,this.iframeObservers.forEach(e=>e.disconnect()),this.iframeObservers=[],this.shadowRootObservers.forEach(e=>e.disconnect()),this.shadowRootObservers=[],super.disconnect()}}var xt;(function(t){t[t.Plain=0]="Plain",t[t.Obscured=1]="Obscured",t[t.Hidden=2]="Hidden"})(xt||(xt={}));const wo=t=>t.trim().replace(/[^\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/g,"█");class So{constructor(e,n){this.app=e,this.obscured=new Set,this.hidden=new Set,this.options=Object.assign({obscureTextEmails:!0,obscureTextNumbers:!1},n)}handleNode(e,n,s){if((this.obscured.has(n)||ke(s)&&(Re(s,"masked")||Re(s,"obscured")))&&this.obscured.add(e),(this.hidden.has(n)||ke(s)&&(Re(s,"htmlmasked")||Re(s,"hidden")))&&this.hidden.add(e),this.options.domSanitizer!==void 0&&ke(s)){const i=this.options.domSanitizer(s);i===xt.Obscured&&this.obscured.add(e),i===xt.Hidden&&this.hidden.add(e)}}sanitize(e,n){return this.obscured.has(e)?wo(n):(this.options.obscureTextNumbers&&(n=n.replace(/\d/g,"0")),this.options.obscureTextEmails&&(n=n.replace(/^\w+([+.-]\w+)*@\w+([.-]\w+)*\.\w{2,3}$/g,s=>{const[i,r]=s.split("@"),[o,l]=r.split(".");return`${qt(i)}@${qt(o)}.${qt(l)}`})),n)}isObscured(e){return this.obscured.has(e)}isHidden(e){return this.hidden.has(e)}getInnerTextSecure(e){const n=this.app.nodes.getID(e);return n?this.sanitize(n,e.innerText):""}clear(){this.obscured.clear(),this.hidden.clear()}}class xo{constructor(e,n){this.app=e,this.options=n,this.metadata={},this.userID=null,this.callbacks=[],this.timestamp=0,this.createTabId()}attachUpdateCallback(e){this.callbacks.push(e)}handleUpdate(e){e.userID==null&&delete e.userID,e.sessionID==null&&delete e.sessionID,this.callbacks.forEach(n=>n(e))}assign(e){e.userID!==void 0&&(this.userID=e.userID),e.metadata!==void 0&&Object.entries(e.metadata).forEach(([n,s])=>this.metadata[n]=s),e.sessionID!==void 0&&(this.sessionID=e.sessionID),e.timestamp!==void 0&&(this.timestamp=e.timestamp),e.projectID!==void 0&&(this.projectID=e.projectID),this.handleUpdate(e)}setMetadata(e,n){this.metadata[e]=n,this.handleUpdate({metadata:{[e]:n}})}setUserID(e){this.userID=e,this.handleUpdate({userID:e})}setUserInfo(e){this.userInfo=e}getPageNumber(){const e=this.app.sessionStorage.getItem(this.options.session_pageno_key);if(e!=null)return parseInt(e)}incPageNo(){let e=this.getPageNumber();return e===void 0?e=0:e++,this.app.sessionStorage.setItem(this.options.session_pageno_key,e.toString()),e}getSessionToken(){return this.app.sessionStorage.getItem(this.options.session_token_key)||void 0}setSessionToken(e){this.app.sessionStorage.setItem(this.options.session_token_key,e)}applySessionHash(e){const n=decodeURI(e).split("&");let s=e,i="100500";n.length==2&&([i,s]=n),!(!i||!s)&&(this.app.sessionStorage.setItem(this.options.session_token_key,s),this.app.sessionStorage.setItem(this.options.session_pageno_key,i))}getSessionHash(){const e=this.getPageNumber(),n=this.getSessionToken();if(!(e===void 0||n===void 0))return encodeURI(String(e)+"&"+n)}getTabId(){return this.tabId||this.createTabId(),this.tabId}regenerateTabId(){const e=nr(12);this.app.sessionStorage.setItem(this.options.session_tabid_key,e),this.tabId=e}createTabId(){const e=this.app.sessionStorage.getItem(this.options.session_tabid_key);e?this.tabId=e:this.regenerateTabId()}getInfo(){return{sessionID:this.sessionID,metadata:this.metadata,userID:this.userID,timestamp:this.timestamp,projectID:this.projectID}}reset(){this.app.sessionStorage.removeItem(this.options.session_token_key),this.metadata={},this.userID=null,this.sessionID=void 0,this.timestamp=0}}function ko(t,e){let n=0;return()=>{n++>=e&&(n=0,t())}}class Eo{constructor(e){this.app=e,this.timer=null,this.callbacks=[]}attach(e,n=0,s=!0,i){i&&(e=e.bind(i)),s&&(e=this.app.safe(e)),this.callbacks.unshift(n?ko(e,n):e)-1}start(){this.timer===null&&(this.timer=setInterval(()=>this.callbacks.forEach(e=>{e&&e()}),30))}stop(){this.timer!==null&&(clearInterval(this.timer),this.timer=null)}}const Ye="canceled",$s="or_uxt_active",hn="or_buffer_1",_e=t=>({reason:t,success:!1}),To=t=>({...t,success:!0});var Z;(function(t){t[t.NotActive=0]="NotActive",t[t.Starting=1]="Starting",t[t.Active=2]="Active",t[t.ColdStart=3]="ColdStart"})(Z||(Z={}));const Ws="https://api.openreplay.com/ingest";function dn(){const t=new Date().getTimezoneOffset()*-1,e=t>=0?"+":"-",n=Math.floor(Math.abs(t)/60),s=Math.abs(t)%60;return`UTC${e}${String(n).padStart(2,"0")}:${String(s).padStart(2,"0")}`}const Io=t=>new Promise(e=>setTimeout(e,t)),le={ask:"never-gonna-give-you-up",resp:"never-gonna-let-you-down",reg:"never-gonna-run-around-and-desert-you",iframeSignal:"never-gonna-make-you-cry",iframeId:"never-gonna-say-goodbye",iframeBatch:"never-gonna-tell-a-lie-and-hurt-you"};let Co=class{constructor(e,n,s,i,r){this.signalError=i,this.insideIframe=r,this.messages=[],this.bufferedMessages1=[],this.bufferedMessages2=[],this.startCallbacks=[],this.stopCallbacks=[],this.commitCallbacks=[],this.activityState=Z.NotActive,this.version="14.0.4",this.socketMode=!1,this.compressionThreshold=24*1e3,this.bc=null,this.canvasRecorder=null,this.conditionsManager=null,this.canStart=!1,this.rootId=null,this.pageFrames=[],this.frameOderNumber=0,this.initialHostName=location.hostname,this.startTimeout=null,this.coldStartCommitN=0,this.delay=0,this.coldInterval=null,this.orderNumber=0,this.coldStartTs=0,this.singleBuffer=!1,this.onSessionSent=()=>{},this.restartCanvasTracking=()=>{var a;(a=this.canvasRecorder)==null||a.restartTracking()},this.flushBuffer=async a=>new Promise(h=>{let c=!1;const u=[a.shift()];for(;!c;){const p=a[0];!p||p[0]===0?c=!0:u.push(a.shift())}this.postToWorker(u),h(null)}),this.onUxtCb=[],this.contextId=Math.random().toString(36).slice(2),this.projectKey=e,Object.keys(s).findIndex(a=>["fixedCanvasScaling","disableCanvas"].includes(a))!==-1&&(console.warn('Openreplay: canvas options are moving to separate key "canvas" in next update. Please update your configuration.'),s={...s,canvas:{__save_canvas_locally:s.__save_canvas_locally,fixedCanvasScaling:s.fixedCanvasScaling,disableCanvas:s.disableCanvas}}),this.networkOptions=s.network;const o={revID:"",node_id:"__openreplay_id",session_token_key:"__openreplay_token",session_pageno_key:"__openreplay_pageno",session_reset_key:"__openreplay_reset",session_tabid_key:"__openreplay_tabid",local_uuid_key:"__openreplay_uuid",ingestPoint:Ws,resourceBaseHref:null,__is_snippet:!1,__debug_report_edp:null,__debug__:Xe.Silent,__save_canvas_locally:!1,localStorage:null,sessionStorage:null,disableStringDict:!1,forceSingleTab:!1,assistSocketHost:"",fixedCanvasScaling:!1,disableCanvas:!1,captureIFrames:!0,obscureTextEmails:!0,obscureTextNumbers:!1,crossdomain:{parentDomain:"*"},canvas:{disableCanvas:!1,fixedCanvasScaling:!1,__save_canvas_locally:!1,useAnimationFrame:!1}};if(this.options=ws(o,s),!this.insideIframe&&!this.options.forceSingleTab&&globalThis&&"BroadcastChannel"in globalThis){const a=location.hostname.split(".").slice(-2).join("_");this.bc=new BroadcastChannel(`rick_${a}`)}this.revID=this.options.revID,this.localStorage=this.options.localStorage??window.localStorage,this.sessionStorage=this.options.sessionStorage??window.sessionStorage,this.sanitizer=new So(this,s),this.nodes=new mo(this.options.node_id),this.observer=new vo(this,s),this.ticker=new Eo(this),this.ticker.attach(()=>this.commit()),this.debug=new go(this.options.__debug__),this.session=new xo(this,this.options),this.attributeSender=new Ji(this,!!this.options.disableStringDict),this.featureFlags=new Qi(this),this.tagWatcher=new Ur(this.sessionStorage,this.debug.error,a=>{this.send(Pr(a))}),this.session.attachUpdateCallback(({userID:a,metadata:h})=>{a!=null&&this.send(kr(a)),h!=null&&Object.entries(h).forEach(([c,u])=>this.send(xs(c,u)))}),n!=null&&this.session.applySessionHash(n),this.initWorker();const l=this.session.getTabId();if(this.insideIframe){const a=c=>{const{data:u}=c;u.line===le.iframeId&&(this.rootId=u.id,this.session.setSessionToken(u.token),this.frameOderNumber=u.frameOrderNumber,this.debug.log("starting iframe tracking",u),this.allowAppStart())};window.addEventListener("message",a),this.attachStopCallback(()=>{window.removeEventListener("message",a)});const h=this.initialHostName;window.parent.postMessage({line:le.iframeSignal,source:l,context:this.contextId,domain:h},"*")}else{let a=0;const h=c=>{const{data:u}=c;if(u.line===le.iframeSignal){const p=u.domain,y=Array.from(document.querySelectorAll("iframe"));this.pageFrames=y,(async()=>{let v=0;for(;v<10;){const E=this.checkNodeId(y,p);if(E){this.waitStarted().then(()=>{var A;a++;const F=this.session.getSessionToken(),P={line:le.iframeId,context:this.contextId,domain:p,id:E,token:F,frameOrderNumber:a};this.debug.log("iframe_data",P),(A=c.source)==null||A.postMessage(P,"*")}).catch(console.error),v=10;break}v++,await Io(100)}})()}if(u.line===le.iframeBatch){const y=u.messages.map(S=>{if(S[0]===20){let v=S;return this.pageFrames.forEach(E=>{if(E.dataset.domain===c.data.domain){const[F,P,A]=S,{left:k,top:N}=E.getBoundingClientRect();v=[F,P+k,A+N]}}),v}if(S[0]===68){let v=S;return this.pageFrames.forEach(E=>{if(E.dataset.domain===c.data.domain){const[F,P,A,k,N,O,D]=S,{left:I,top:T,width:B,height:G}=E.getBoundingClientRect(),j=document.documentElement.scrollWidth,$=document.documentElement.scrollHeight,C=O/100*B+I,L=D/100*G+T,V=C/j,K=L/$;v=[F,P,A,k,N,Math.round(V*1e3)/10,Math.round(K*1e3)/10]}}),v}return S});this.messages.push(...y)}};window.addEventListener("message",h),this.attachStopCallback(()=>{window.removeEventListener("message",h)})}this.bc!==null&&(this.bc.postMessage({line:le.ask,source:l,context:this.contextId}),this.startTimeout=setTimeout(()=>{this.allowAppStart()},500),this.bc.onmessage=a=>{if(a.data.context!==this.contextId){if(a.data.line===le.resp){const h=a.data.token;this.session.setSessionToken(h),this.allowAppStart()}if(a.data.line===le.reg){const h=a.data.token;this.session.regenerateTabId(),this.session.setSessionToken(h),this.allowAppStart()}if(a.data.line===le.ask){const h=this.session.getSessionToken();h&&this.bc&&this.bc.postMessage({line:a.data.source===l?le.reg:le.resp,token:h,source:l,context:this.contextId})}}})}allowAppStart(){this.canStart=!0,this.startTimeout&&(clearTimeout(this.startTimeout),this.startTimeout=null)}checkNodeId(e,n){for(const s of e)if(s.dataset.domain===n)return s[this.options.node_id];return null}initWorker(){try{this.worker=new Worker(URL.createObjectURL(new Blob(['"use strict";class t{constructor(t,s,i,e=10,n=250,h,r){this.onUnauthorised=s,this.onFailure=i,this.MAX_ATTEMPTS_COUNT=e,this.ATTEMPT_TIMEOUT=n,this.onCompress=h,this.pageNo=r,this.attemptsCount=0,this.busy=!1,this.queue=[],this.token=null,this.lastBatchNum=0,this.ingestURL=t+"/v1/web/i",this.isCompressing=void 0!==h}getQueueStatus(){return 0===this.queue.length&&!this.busy}authorise(t){this.token=t,this.busy||this.sendNext()}push(t){if(this.busy||!this.token)this.queue.push(t);else if(this.busy=!0,this.isCompressing&&this.onCompress)this.onCompress(t);else{const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}}sendNext(){const t=this.queue.shift();if(t)if(this.busy=!0,this.isCompressing&&this.onCompress)this.onCompress(t);else{const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}else this.busy=!1}retry(t,s,i){this.attemptsCount>=this.MAX_ATTEMPTS_COUNT?this.onFailure(`Failed to send batch after ${this.attemptsCount} attempts.`):(this.attemptsCount++,setTimeout((()=>this.sendBatch(t,s,i)),this.ATTEMPT_TIMEOUT*this.attemptsCount))}sendBatch(t,s,i){const e=i?.toString().replace(/^([^_]+)_([^_]+).*/,"$1_$2_$3");this.busy=!0;const n={Authorization:`Bearer ${this.token}`};s&&(n["Content-Encoding"]="gzip"),null!==this.token?fetch(`${this.ingestURL}?batch=${this.pageNo??"noPageNum"}_${e??"noBatchNum"}`,{body:t,method:"POST",headers:n,keepalive:t.length<65536}).then((e=>{if(401===e.status)return this.busy=!1,void this.onUnauthorised();e.status>=400?this.retry(t,s,`${i??"noBatchNum"}_network:${e.status}`):(this.attemptsCount=0,this.sendNext())})).catch((e=>{console.warn("OpenReplay:",e),this.retry(t,s,`${i??"noBatchNum"}_reject:${e.message}`)})):setTimeout((()=>{this.sendBatch(t,s,`${i??"noBatchNum"}_newToken`)}),500)}sendCompressed(t){const s=++this.lastBatchNum;this.sendBatch(t,!0,s)}sendUncompressed(t){const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}clean(){this.sendNext(),setTimeout((()=>{this.token=null,this.queue.length=0}),10)}}const s="function"==typeof TextEncoder?new TextEncoder:{encode(t){const s=t.length,i=new Uint8Array(3*s);let e=-1;for(let n=0,h=0,r=0;r!==s;){if(n=t.charCodeAt(r),r+=1,n>=55296&&n<=56319){if(r===s){i[e+=1]=239,i[e+=1]=191,i[e+=1]=189;break}if(h=t.charCodeAt(r),!(h>=56320&&h<=57343)){i[e+=1]=239,i[e+=1]=191,i[e+=1]=189;continue}if(n=1024*(n-55296)+h-56320+65536,r+=1,n>65535){i[e+=1]=240|n>>>18,i[e+=1]=128|n>>>12&63,i[e+=1]=128|n>>>6&63,i[e+=1]=128|63&n;continue}}n<=127?i[e+=1]=0|n:n<=2047?(i[e+=1]=192|n>>>6,i[e+=1]=128|63&n):(i[e+=1]=224|n>>>12,i[e+=1]=128|n>>>6&63,i[e+=1]=128|63&n)}return i.subarray(0,e+1)}};class i{constructor(t){this.size=t,this.offset=0,this.checkpointOffset=0,this.data=new Uint8Array(t)}getCurrentOffset(){return this.offset}checkpoint(){this.checkpointOffset=this.offset}get isEmpty(){return 0===this.offset}skip(t){return this.offset+=t,this.offset<=this.size}set(t,s){this.data.set(t,s)}boolean(t){return this.data[this.offset++]=+t,this.offset<=this.size}uint(t){for((t<0||t>Number.MAX_SAFE_INTEGER)&&(t=0);t>=128;)this.data[this.offset++]=t%256|128,t=Math.floor(t/128);return this.data[this.offset++]=t,this.offset<=this.size}int(t){return t=Math.round(t),this.uint(t>=0?2*t:-2*t-1)}string(t){const i=s.encode(t),e=i.byteLength;return!(!this.uint(e)||this.offset+e>this.size)&&(this.data.set(i,this.offset),this.offset+=e,!0)}reset(){this.offset=0,this.checkpointOffset=0}flush(){const t=this.data.slice(0,this.checkpointOffset);return this.reset(),t}}class e extends i{encode(t){switch(t[0]){case 0:case 11:case 114:case 115:return this.uint(t[1]);case 4:case 44:case 47:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3]);case 5:case 20:case 38:case 70:case 75:case 76:case 77:case 82:return this.uint(t[1])&&this.uint(t[2]);case 6:return this.int(t[1])&&this.int(t[2]);case 7:return!0;case 8:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.string(t[4])&&this.boolean(t[5]);case 9:case 10:case 24:case 51:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3]);case 12:case 61:case 71:return this.uint(t[1])&&this.string(t[2])&&this.string(t[3]);case 13:case 14:case 17:case 50:case 54:return this.uint(t[1])&&this.string(t[2]);case 16:return this.uint(t[1])&&this.int(t[2])&&this.int(t[3]);case 18:return this.uint(t[1])&&this.string(t[2])&&this.int(t[3]);case 19:return this.uint(t[1])&&this.boolean(t[2]);case 21:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.string(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8]);case 22:case 27:case 30:case 41:case 45:case 46:case 63:case 64:case 79:return this.string(t[1])&&this.string(t[2]);case 23:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8])&&this.uint(t[9]);case 28:case 29:case 42:case 117:case 118:return this.string(t[1]);case 37:return this.uint(t[1])&&this.string(t[2])&&this.uint(t[3]);case 39:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.uint(t[7]);case 40:return this.string(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4]);case 48:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.int(t[5]);case 49:return this.int(t[1])&&this.int(t[2])&&this.uint(t[3])&&this.uint(t[4]);case 53:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.string(t[7])&&this.string(t[8]);case 55:return this.boolean(t[1]);case 57:case 60:return this.uint(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4]);case 58:case 120:return this.int(t[1]);case 59:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.string(t[5])&&this.string(t[6])&&this.string(t[7]);case 67:case 73:return this.uint(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.string(t[4]);case 68:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])&&this.uint(t[6]);case 69:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4]);case 78:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4]);case 81:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.int(t[4])&&this.string(t[5]);case 83:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.string(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8])&&this.uint(t[9]);case 84:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.uint(t[4])&&this.string(t[5])&&this.string(t[6]);case 112:return this.uint(t[1])&&this.string(t[2])&&this.boolean(t[3])&&this.string(t[4])&&this.int(t[5])&&this.int(t[6]);case 113:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3]);case 116:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.string(t[7])&&this.string(t[8])&&this.uint(t[9])&&this.boolean(t[10]);case 119:return this.string(t[1])&&this.uint(t[2]);case 121:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.uint(t[4]);case 122:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.string(t[4]);case 123:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])}}}class n{constructor(t,s,i,n,h,r){this.pageNo=t,this.timestamp=s,this.url=i,this.onBatch=n,this.tabId=h,this.onOfflineEnd=r,this.nextIndex=0,this.beaconSize=2e5,this.encoder=new e(this.beaconSize),this.sizeBuffer=new Uint8Array(3),this.isEmpty=!0,this.beaconSizeLimit=1e6,this.prepare()}writeType(t){return this.encoder.uint(t[0])}writeFields(t){return this.encoder.encode(t)}writeSizeAt(t,s){for(let s=0;s<3;s++)this.sizeBuffer[s]=t>>8*s;this.encoder.set(this.sizeBuffer,s)}prepare(){if(!this.encoder.isEmpty)return;const t=[81,1,this.pageNo,this.nextIndex,this.timestamp,this.url],s=[118,this.tabId];this.writeType(t),this.writeFields(t),this.writeWithSize(s),this.isEmpty=!0}writeWithSize(t){const s=this.encoder;if(!this.writeType(t)||!s.skip(3))return!1;const i=s.getCurrentOffset(),e=this.writeFields(t);if(e){const e=s.getCurrentOffset()-i;if(e>16777215)return console.warn("OpenReplay: max message size overflow."),!1;this.writeSizeAt(e,i-3),s.checkpoint(),this.isEmpty=this.isEmpty&&0===t[0],this.nextIndex++}return e}setBeaconSizeLimit(t){this.beaconSizeLimit=t}writeMessage(t){if("q_end"===t[0])return this.finaliseBatch(),this.onOfflineEnd();0===t[0]&&(this.timestamp=t[1]),122===t[0]&&(this.url=t[1]),this.writeWithSize(t)||(this.finaliseBatch(),this.writeWithSize(t)||(this.encoder=new e(this.beaconSizeLimit),this.prepare(),this.writeWithSize(t)?this.finaliseBatch():console.warn("OpenReplay: beacon size overflow. Skipping large message.",t,this),this.encoder=new e(this.beaconSize),this.prepare()))}finaliseBatch(){if(this.isEmpty)return;const t=this.encoder.flush();this.onBatch(t),this.prepare()}clean(){this.encoder.reset()}}var h;!function(t){t[t.NotActive=0]="NotActive",t[t.Starting=1]="Starting",t[t.Stopping=2]="Stopping",t[t.Active=3]="Active",t[t.Stopped=4]="Stopped"}(h||(h={}));let r=null,a=null,u=h.NotActive;function o(){a&&a.finaliseBatch()}function c(){return new Promise((t=>{u=h.Stopping,null!==l&&(clearInterval(l),l=null),a&&(a.clean(),a=null),r&&(r.clean(),setTimeout((()=>{r=null}),20)),setTimeout((()=>{u=h.NotActive,t(null)}),100)}))}function g(){u!==h.Stopped&&(postMessage("a_stop"),c().then((()=>{postMessage("a_start")})))}let p,l=null;self.onmessage=({data:s})=>{if(null!=s){if("stop"===s)return o(),void c().then((()=>{u=h.Stopped}));if("forceFlushBatch"!==s){if(!Array.isArray(s)){if("compressed"===s.type){if(!r)return console.debug("OR WebWorker: sender not initialised. Compressed batch."),void g();s.batch&&r.sendCompressed(s.batch)}if("uncompressed"===s.type){if(!r)return console.debug("OR WebWorker: sender not initialised. Uncompressed batch."),void g();s.batch&&r.sendUncompressed(s.batch)}return"start"===s.type?(u=h.Starting,r=new t(s.ingestPoint,(()=>{g()}),(t=>{!function(t){postMessage({type:"failure",reason:t}),c()}(t)}),s.connAttemptCount,s.connAttemptGap,(t=>{postMessage({type:"compress",batch:t},[t.buffer])}),s.pageNo),a=new n(s.pageNo,s.timestamp,s.url,(t=>{r&&r.push(t)}),s.tabId,(()=>postMessage({type:"queue_empty"}))),null===l&&(l=setInterval(o,1e4)),u=h.Active):"auth"===s.type?r?a?(r.authorise(s.token),void(s.beaconSizeLimit&&a.setBeaconSizeLimit(s.beaconSizeLimit))):(console.debug("OR WebWorker: writer not initialised. Received auth."),void g()):(console.debug("OR WebWorker: sender not initialised. Received auth."),void g()):void 0}if(a){const t=a;s.forEach((s=>{55===s[0]&&(s[1]?p=setTimeout((()=>g()),18e5):clearTimeout(p)),t.writeMessage(s)}))}else postMessage("not_init"),g()}else o()}else o()};'],{type:"text/javascript"}))),this.worker.onerror=n=>{this._debug("webworker_error",n)},this.worker.onmessage=({data:n})=>{this.handleWorkerMsg(n)};const e=()=>{this.worker&&this.worker.postMessage(null)};this.attachEventListener(window,"beforeunload",e,!1),this.attachEventListener(document.body,"mouseleave",e,!1,!1),this.attachEventListener(document,"visibilitychange",e,!1)}catch(e){this._debug("worker_start",e)}}handleWorkerMsg(e){var n;if(e==="a_stop")this.stop(!1);else if(e==="a_start")this.start({},!0);else if(e==="not_init")this.debug.warn("OR WebWorker: writer not initialised. Restarting tracker");else if(e.type==="failure")this.stop(!1),this.debug.error("worker_failed",e.reason),this._debug("worker_failed",e.reason);else if(e.type==="compress"){const s=e.batch;s.byteLength>this.compressionThreshold?Vi(e.batch,{mtime:0},(r,o)=>{var l,a;r?(this.debug.error("Openreplay compression error:",r),(l=this.worker)==null||l.postMessage({type:"uncompressed",batch:s})):(a=this.worker)==null||a.postMessage({type:"compressed",batch:o})}):(n=this.worker)==null||n.postMessage({type:"uncompressed",batch:s})}else e.type==="queue_empty"&&this.onSessionSent()}_debug(e,n){this.options.__debug_report_edp!==null&&fetch(this.options.__debug_report_edp,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e,error:`${n}`})}),this.debug.error("OpenReplay error: ",e,n)}send(e,n=!1){var s;this.activityState!==Z.NotActive&&(this.activityState===Z.ColdStart?(this.bufferedMessages1.push(e),this.singleBuffer||this.bufferedMessages2.push(e),(s=this.conditionsManager)==null||s.processMessage(e)):this.messages.push(e),this.activityState===Z.Active&&n&&this.commit())}_nCommit(){if(this.socketMode){this.messages.unshift(Ae(this.session.getTabId())),this.messages.unshift(Fe(this.timestamp())),this.commitCallbacks.forEach(e=>e(this.messages)),this.messages.length=0;return}if(!(this.worker===void 0||!this.messages.length)){if(this.insideIframe){window.parent.postMessage({line:le.iframeBatch,messages:this.messages,domain:this.initialHostName},"*"),this.commitCallbacks.forEach(e=>e(this.messages)),this.messages.length=0;return}try{or(()=>{var e;this.messages.unshift(Ae(this.session.getTabId())),this.messages.unshift(Fe(this.timestamp())),(e=this.worker)==null||e.postMessage(this.messages),this.commitCallbacks.forEach(n=>n(this.messages)),this.messages.length=0})}catch(e){this._debug("worker_commit",e),this.stop(!0),setTimeout(()=>{this.start()},500)}}}_cStartCommit(){this.coldStartCommitN+=1,this.coldStartCommitN===2&&(this.bufferedMessages1.push(Fe(this.timestamp())),this.bufferedMessages1.push(Ae(this.session.getTabId())),this.bufferedMessages2.push(Fe(this.timestamp())),this.bufferedMessages2.push(Ae(this.session.getTabId())),this.coldStartCommitN=0)}commit(){this.activityState===Z.ColdStart?this._cStartCommit():this._nCommit()}postToWorker(e){var n;(n=this.worker)==null||n.postMessage(e),this.commitCallbacks.forEach(s=>s(e)),e.length=0}timestamp(){return pe()+this.delay}safe(e){const n=this;return function(...s){try{e.apply(this,s)}catch(i){n._debug("safe_fn_call",i)}}}attachCommitCallback(e){this.commitCallbacks.push(e)}attachStartCallback(e,n=!1){n&&(e=this.safe(e)),this.startCallbacks.push(e)}attachStopCallback(e,n=!1){n&&(e=this.safe(e)),this.stopCallbacks.push(e)}attachEventListener(e,n,s,i=!0,r=!0){i&&(s=this.safe(s));const o=()=>e?ys(e,n,s,r):null,l=()=>e?vs(e,n,s,r):null;this.attachStartCallback(o,i),this.attachStopCallback(l,i)}checkRequiredVersion(e){const n=e.split(/[.-]/),s=this.version.split(/[.-]/);for(let i=0;i<3;i++){if(isNaN(Number(s[i]))||isNaN(Number(n[i])))return!1;if(Number(s[i])>Number(n[i]))return!0;if(Number(s[i])<Number(n[i]))return!1}return!0}getTrackerInfo(){return{userUUID:this.localStorage.getItem(this.options.local_uuid_key),projectKey:this.projectKey,revID:this.revID,trackerVersion:this.version,isSnippet:this.options.__is_snippet}}getSessionInfo(){return{...this.session.getInfo(),...this.getTrackerInfo()}}getSessionToken(){return this.session.getSessionToken()}getSessionID(){return this.session.getInfo().sessionID||void 0}getSessionURL(e){const{projectID:n,sessionID:s,timestamp:i}=this.session.getInfo();if(!n||!s){this.debug.error("OpenReplay error: Unable to build session URL");return}const r=this.options.ingestPoint,a=(/api\.openreplay\.com/.test(r)?"https://app.openreplay.com/ingest":r).replace(/ingest$/,`${n}/session/${s}`);if(e!=null&&e.withCurrentTime){const h=pe()-i;return`${a}?jumpto=${h}`}return a}getHost(){return new URL(this.options.ingestPoint).host}getProjectKey(){return this.projectKey}getBaseHref(){var e,n;return typeof this.options.resourceBaseHref=="string"?this.options.resourceBaseHref:(this.options.resourceBaseHref,document.baseURI?document.baseURI:((n=(e=document.head)==null?void 0:e.getElementsByTagName("base")[0])==null?void 0:n.getAttribute("href"))||location.origin+location.pathname)}resolveResourceURL(e){const n=new URL(this.getBaseHref());return n.pathname+="/"+new URL(e).pathname,n.pathname.replace(/\/+/g,"/"),n.toString()}isServiceURL(e){return e.startsWith(this.options.ingestPoint)}active(){return this.activityState===Z.Active}resetNextPageSession(e){e?this.sessionStorage.setItem(this.options.session_reset_key,"t"):this.sessionStorage.removeItem(this.options.session_reset_key)}checkSessionToken(e){const n=this.sessionStorage.getItem(this.options.session_reset_key)!==null,s=e||n,i=this.session.getSessionToken();return s||!i}async coldStart(e={},n){this.singleBuffer=!1;const s=1e3,i=this.checkSessionToken(e.forceNew);n&&await this.setupConditionalStart(e);const r=()=>{this.orderNumber+=1,Wt(),this.coldStartTs=pe(),this.orderNumber%2===0?(this.bufferedMessages1.length=0,this.bufferedMessages1.push(Fe(this.timestamp())),this.bufferedMessages1.push(Ae(this.session.getTabId()))):(this.bufferedMessages2.length=0,this.bufferedMessages2.push(Fe(this.timestamp())),this.bufferedMessages2.push(Ae(this.session.getTabId()))),this.stop(!1),this.activityState=Z.ColdStart,e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata}),i||(this.debug.log("continuing session on new tab",this.session.getTabId()),this.send(bt(this.session.getTabId()))),this.observer.observe(),this.ticker.start()};this.coldInterval=setInterval(()=>{r()},30*s),r()}async setupConditionalStart(e){var p,y;this.conditionsManager=new Xi(this,e);const n=await fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:pe(),doNotRecord:!0,bufferDiff:0,userID:this.session.getInfo().userID,token:void 0,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:dn(),width:window.screen.width,height:window.screen.height})}),{token:s,userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:h,projectID:c}=await n.json();this.session.assign({projectID:c}),this.session.setUserInfo({userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:h});const u={sessionToken:s,userUUID:"",sessionID:""};this.startCallbacks.forEach(S=>S(u)),await((p=this.conditionsManager)==null?void 0:p.fetchConditions(c,s)),await this.featureFlags.reloadFlags(s),await this.tagWatcher.fetchTags(this.options.ingestPoint,s),(y=this.conditionsManager)==null||y.processFlags(this.featureFlags.flags)}offlineRecording(e={},n){this.onSessionSent=n,this.singleBuffer=!0;const s=this.checkSessionToken(e.forceNew);Wt(),this.coldStartTs=pe();const i=this.localStorage.getItem(hn);if(i){const o=JSON.parse(i);this.bufferedMessages1=Array.isArray(o)?o:this.bufferedMessages1,this.localStorage.removeItem(hn)}this.bufferedMessages1.push(Fe(this.timestamp())),this.bufferedMessages1.push(Ae(this.session.getTabId())),this.activityState=Z.ColdStart,e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata});const r={sessionToken:"",userUUID:"",sessionID:""};return this.startCallbacks.forEach(o=>o(r)),s||this.send(bt(this.session.getTabId())),this.observer.observe(),this.ticker.start(),{saveBuffer:this.saveBuffer,getBuffer:this.getBuffer,setBuffer:this.setBuffer}}saveBuffer(){this.localStorage.setItem(hn,JSON.stringify(this.bufferedMessages1))}getBuffer(){return this.bufferedMessages1}setBuffer(e){this.bufferedMessages1=e}async uploadOfflineRecording(){var p,y;this.stop(!1);const e=pe();(p=this.worker)==null||p.postMessage({type:"start",pageNo:this.session.incPageNo(),ingestPoint:this.options.ingestPoint,timestamp:this.coldStartTs,url:document.URL,connAttemptCount:this.options.connAttemptCount,connAttemptGap:this.options.connAttemptGap,tabId:this.session.getTabId()});const n=await fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:e,doNotRecord:!1,bufferDiff:e-this.coldStartTs,userID:this.session.getInfo().userID,token:void 0,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:dn()})}),{token:s,userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:h,beaconSizeLimit:c,projectID:u}=await n.json();for((y=this.worker)==null||y.postMessage({type:"auth",token:s,beaconSizeLimit:c}),this.session.assign({projectID:u}),this.session.setUserInfo({userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:h});this.bufferedMessages1.length>0;)await this.flushBuffer(this.bufferedMessages1);this.postToWorker([["q_end"]]),this.clearBuffers()}async _start(e={},n=!1,s){const i=this.activityState===Z.ColdStart;if(i&&this.coldInterval&&clearInterval(this.coldInterval),!this.worker){const a="No worker found: perhaps, CSP is not set.";return this.signalError(a,[]),Promise.resolve(_e(a))}if(this.activityState===Z.Active||this.activityState===Z.Starting)return Promise.resolve(_e("OpenReplay: trying to call `start()` on the instance that has been started already."));this.activityState=Z.Starting,i||Wt(),e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata});const r=pe();this.worker.postMessage({type:"start",pageNo:this.session.incPageNo(),ingestPoint:this.options.ingestPoint,timestamp:i?this.coldStartTs:r,url:document.URL,connAttemptCount:this.options.connAttemptCount,connAttemptGap:this.options.connAttemptGap,tabId:this.session.getTabId()});const o=this.session.getSessionToken(),l=this.checkSessionToken(e.forceNew);this.sessionStorage.removeItem(this.options.session_reset_key),this.debug.log("OpenReplay: starting session; need new session id?",l,"session token: ",o);try{const a=await window.fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:r,doNotRecord:!1,bufferDiff:r-this.coldStartTs,userID:this.session.getInfo().userID,token:l?void 0:o,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:dn(),condition:s,assistOnly:e.assistOnly??this.socketMode,width:window.screen.width,height:window.screen.height})});if(a.status!==200){const C=await a.text(),L=C===Ye?Ye:`Server error: ${a.status}. ${C}`;return _e(L)}if(!this.worker){const C="no worker found after start request (this should not happen in real world)";return this.signalError(C,[]),_e(C)}const{token:h,userUUID:c,projectID:u,beaconSizeLimit:p,compressionThreshold:y,delay:S,sessionID:v,startTimestamp:E,userBrowser:F,userCity:P,userCountry:A,userDevice:k,userOS:N,userState:O,canvasEnabled:D,canvasQuality:I,canvasFPS:T,assistOnly:B}=await a.json();if(typeof h!="string"||typeof c!="string"||typeof E!="number"&&typeof E<"u"||typeof v!="string"||typeof S!="number"||typeof p!="number"&&typeof p<"u"){const C=`Incorrect server response: ${JSON.stringify(a)}`;return this.signalError(C,[]),_e(C)}this.delay=S,this.session.setSessionToken(h),this.session.setUserInfo({userBrowser:F,userCity:P,userCountry:A,userDevice:k,userOS:N,userState:O}),this.session.assign({sessionID:v,timestamp:E||r,projectID:u}),B?(this.socketMode=!0,this.worker.postMessage("stop")):this.worker.postMessage({type:"auth",token:h,beaconSizeLimit:p}),!l&&h===o&&(this.debug.log("continuing session on new tab",this.session.getTabId()),this.send(bt(this.session.getTabId()))),Object.entries(this.session.getInfo().metadata).forEach(([C,L])=>this.send(xs(C,L))),this.localStorage.setItem(this.options.local_uuid_key,c),this.compressionThreshold=y;const G={sessionToken:h,userUUID:c,sessionID:v};if(this.startCallbacks.forEach(C=>C(G)),this.featureFlags.reloadFlags(),await this.tagWatcher.fetchTags(this.options.ingestPoint,h),this.activityState=Z.Active,D&&!this.options.canvas.disableCanvas&&(this.canvasRecorder=this.canvasRecorder??new uo(this,{fps:T,quality:I,isDebug:this.options.canvas.__save_canvas_locally,fixedScaling:this.options.canvas.fixedCanvasScaling,useAnimationFrame:this.options.canvas.useAnimationFrame}),this.canvasRecorder.startTracking()),i){const C=this.bufferedMessages1.length>this.bufferedMessages2.length?this.bufferedMessages1:this.bufferedMessages2;for(;C.length>0;)await this.flushBuffer(C);this.clearBuffers(),this.commit()}else this.insideIframe&&this.rootId?this.observer.crossdomainObserve(this.rootId,this.frameOderNumber):this.observer.observe(),this.ticker.start();this.uxtManager=this.uxtManager?this.uxtManager:new lo(this,$s);let j;const $=this.localStorage.getItem($s);if($&&(j=parseInt($,10)),location!=null&&location.search){const C=new URLSearchParams(location.search);if(C.has("oruxt")){const L=C.get("oruxt");j=L?parseInt(L,10):void 0}}return j&&(this.uxtManager.isActive?this.onUxtCb.forEach(C=>C(j)):this.uxtManager.getTest(j,h,!!$).then(C=>{C&&this.onUxtCb.forEach(L=>L(C))})),To(G)}catch(a){if(this.stop(),this.session.reset(),a===Ye)return this.signalError(Ye,[]),_e(Ye);this._debug("session_start",a);const h=a instanceof Error?a.message:a.toString();return this.signalError(h,[]),_e(h)}}addOnUxtCb(e){this.onUxtCb.push(e)}getUxtId(){var e;return(e=this.uxtManager)==null?void 0:e.getTestId()}async waitStart(){return new Promise(e=>{const n=()=>{this.canStart?e(!0):setTimeout(n,25)};n()})}async waitStarted(){return new Promise(e=>{const n=()=>{this.activityState===Z.Active?e(!0):setTimeout(n,25)};n()})}async start(...e){return this.activityState===Z.Active||this.activityState===Z.Starting?Promise.resolve(_e("OpenReplay: trying to call `start()` on the instance that has been started already.")):document.hidden?new Promise(n=>{const s=async()=>{document.hidden||(await this.waitStart(),document.removeEventListener("visibilitychange",s),n(this._start(...e)))};document.addEventListener("visibilitychange",s)}):(await this.waitStart(),this._start(...e))}forceFlushBatch(){var e;(e=this.worker)==null||e.postMessage("forceFlushBatch")}getTabId(){return this.session.getTabId()}clearBuffers(){this.bufferedMessages1.length=0,this.bufferedMessages2.length=0}trackWs(e){const n=e;return(s,i,r="down")=>{typeof s!="string"||typeof i!="string"||i.length>5*1024*1024||s.length>255||this.send(Ar("websocket",n,i,this.timestamp(),r,s))}}stop(e=!0){var n;if(this.activityState!==Z.NotActive)try{this.attributeSender.clear(),this.sanitizer.clear(),this.observer.disconnect(),this.nodes.clear(),this.ticker.stop(),this.stopCallbacks.forEach(s=>s()),this.debug.log("OpenReplay tracking stopped."),this.tagWatcher.clear(),this.worker&&e&&this.worker.postMessage("stop"),(n=this.canvasRecorder)==null||n.clear()}finally{this.activityState=Z.NotActive}}};function _o(t){const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(e===void 0)return;const n=()=>t.send(Ir(Math.round(e.downlink*1e3),e.type||"unknown"));n(),e.addEventListener("change",n)}const qs=be&&"InstallTrigger"in window?t=>t.message+`
653
- `+t.stack:t=>t.stack||t.message;function un(t){return t===void 0?"undefined":t===null?"null":t instanceof Error?qs(t):Array.isArray(t)?`Array(${t.length})`:String(t)}function No(t){return typeof t!="number"?"NaN":t.toString()}function Oo(t){return typeof t!="number"?"NaN":Math.floor(t).toString()}function Vs(t){if(t===void 0)return"undefined";if(t===null)return"null";if(t instanceof Error)return qs(t);if(Array.isArray(t)){const e=t.length,n=t.slice(0,10).map(un).join(", ");return`Array(${e})[${n}]`}if(typeof t=="object"){const e=[];let n=0;for(const s in t){if(++n===10)break;const i=t[s];e.push(s+": "+un(i))}return"{"+e.join(", ")+"}"}return t.toString()}function Ro(t){return typeof t[0]=="string"&&t.unshift(t.shift().replace(/%(o|s|f|d|i)/g,(e,n)=>{const s=t.shift();if(s===void 0)return e;switch(n){case"o":return Vs(s);case"s":return un(s);case"f":return No(s);case"d":case"i":return Oo(s);default:return e}})),t.map(Vs).join(" ")}const Gs=["log","info","warn","error","debug","assert"];function Fo(t,e){const n=Object.assign({consoleMethods:Gs,consoleThrottling:30},e);if(!Array.isArray(n.consoleMethods)||n.consoleMethods.length===0)return;const s=t.safe((a,h)=>t.send(vr(a,Ro(h))));let i=0;const r=()=>{i=0};t.attachStartCallback(r),t.ticker.attach(r,33,!1);const o=(a,h)=>{const c={apply:function(u,p,y){Reflect.apply(u,h,y),i=i+1,!(i>n.consoleThrottling)&&s(u.name,y)}};n.consoleMethods.forEach(u=>{if(Gs.indexOf(u)===-1){t.debug.error(`OpenReplay: unsupported console method "${u}"`);return}const p=h.console[u];a[u]=new Proxy(p,c)})},l=t.safe(a=>o(a.console,a));l(window),t.observer.attachContextCallback(l)}var Ks={exports:{}},fn={exports:{}},Js;function Ao(){return Js||(Js=1,function(t,e){(function(n,s){t.exports=s()})(Le,function(){function n(v){return!isNaN(parseFloat(v))&&isFinite(v)}function s(v){return v.charAt(0).toUpperCase()+v.substring(1)}function i(v){return function(){return this[v]}}var r=["isConstructor","isEval","isNative","isToplevel"],o=["columnNumber","lineNumber"],l=["fileName","functionName","source"],a=["args"],h=["evalOrigin"],c=r.concat(o,l,a,h);function u(v){if(v)for(var E=0;E<c.length;E++)v[c[E]]!==void 0&&this["set"+s(c[E])](v[c[E]])}u.prototype={getArgs:function(){return this.args},setArgs:function(v){if(Object.prototype.toString.call(v)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=v},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(v){if(v instanceof u)this.evalOrigin=v;else if(v instanceof Object)this.evalOrigin=new u(v);else throw new TypeError("Eval Origin must be an Object or StackFrame")},toString:function(){var v=this.getFileName()||"",E=this.getLineNumber()||"",F=this.getColumnNumber()||"",P=this.getFunctionName()||"";return this.getIsEval()?v?"[eval] ("+v+":"+E+":"+F+")":"[eval]:"+E+":"+F:P?P+" ("+v+":"+E+":"+F+")":v+":"+E+":"+F}},u.fromString=function(E){var F=E.indexOf("("),P=E.lastIndexOf(")"),A=E.substring(0,F),k=E.substring(F+1,P).split(","),N=E.substring(P+1);if(N.indexOf("@")===0)var O=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(N,""),D=O[1],I=O[2],T=O[3];return new u({functionName:A,args:k||void 0,fileName:D,lineNumber:I||void 0,columnNumber:T||void 0})};for(var p=0;p<r.length;p++)u.prototype["get"+s(r[p])]=i(r[p]),u.prototype["set"+s(r[p])]=function(v){return function(E){this[v]=!!E}}(r[p]);for(var y=0;y<o.length;y++)u.prototype["get"+s(o[y])]=i(o[y]),u.prototype["set"+s(o[y])]=function(v){return function(E){if(!n(E))throw new TypeError(v+" must be a Number");this[v]=Number(E)}}(o[y]);for(var S=0;S<l.length;S++)u.prototype["get"+s(l[S])]=i(l[S]),u.prototype["set"+s(l[S])]=function(v){return function(E){this[v]=String(E)}}(l[S]);return u})}(fn)),fn.exports}(function(t,e){(function(n,s){t.exports=s(Ao())})(Le,function(s){var i=/(^|@)\S+:\d+/,r=/^\s*at .*(\S+:\d+|\(native\))/m,o=/^(eval@)?(\[native code])?$/;return{parse:function(a){if(typeof a.stacktrace<"u"||typeof a["opera#sourceloc"]<"u")return this.parseOpera(a);if(a.stack&&a.stack.match(r))return this.parseV8OrIE(a);if(a.stack)return this.parseFFOrSafari(a);throw new Error("Cannot parse given Error object")},extractLocation:function(a){if(a.indexOf(":")===-1)return[a];var h=/(.+?)(?::(\d+))?(?::(\d+))?$/,c=h.exec(a.replace(/[()]/g,""));return[c[1],c[2]||void 0,c[3]||void 0]},parseV8OrIE:function(a){var h=a.stack.split(`
654
- `).filter(function(c){return!!c.match(r)},this);return h.map(function(c){c.indexOf("(eval ")>-1&&(c=c.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var u=c.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),p=u.match(/ (\(.+\)$)/);u=p?u.replace(p[0],""):u;var y=this.extractLocation(p?p[1]:u),S=p&&u||void 0,v=["eval","<anonymous>"].indexOf(y[0])>-1?void 0:y[0];return new s({functionName:S,fileName:v,lineNumber:y[1],columnNumber:y[2],source:c})},this)},parseFFOrSafari:function(a){var h=a.stack.split(`
655
- `).filter(function(c){return!c.match(o)},this);return h.map(function(c){if(c.indexOf(" > eval")>-1&&(c=c.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),c.indexOf("@")===-1&&c.indexOf(":")===-1)return new s({functionName:c});var u=/((.*".+"[^@]*)?[^@]*)(?:@)/,p=c.match(u),y=p&&p[1]?p[1]:void 0,S=this.extractLocation(c.replace(u,""));return new s({functionName:y,fileName:S[0],lineNumber:S[1],columnNumber:S[2],source:c})},this)},parseOpera:function(a){return!a.stacktrace||a.message.indexOf(`
656
+ We appreciate your time and valuable input.`),r=z("div","end_button_or",Ls,"Submitting Feedback"),o=co();r.appendChild(o),(d=this.test)!=null&&d.reqMic||(c=this.test)!=null&&c.reqCamera?this.userRecorder.sendToAPI().then(()=>{r.removeChild(o),r.textContent="End Session",e=!1}).catch(u=>{console.error(u),r.removeChild(o),r.textContent="End Session",e=!1}):(r.removeChild(o),r.textContent="End Session",e=!1),this.taskSection&&this.container.removeChild(this.taskSection),this.descriptionSection&&this.container.removeChild(this.descriptionSection),this.stopButton&&this.stopButtonContainer&&this.container.removeChild(this.stopButtonContainer),r.onclick=()=>{e||(window.close(),document.body.removeChild(this.bg))},n.append(s,i,r),this.endSection=n,this.container.append(n)}}function Us(t){return!!t&&t.nodeType!=null}function sn(t){return t.namespaceURI==="http://www.w3.org/2000/svg"}function ke(t){return t.nodeType===Node.ELEMENT_NODE}function fo(t){return t.nodeType===Node.COMMENT_NODE}function rn(t){return t.nodeType===Node.TEXT_NODE}function wt(t){return t.nodeType===Node.DOCUMENT_NODE}function St(t){return t.nodeType===Node.DOCUMENT_NODE||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Q(t,e){return t.localName===e}class po{constructor(e,n){this.app=e,this.options=n,this.snapshots={},this.intervals=[],this.restartTracking=()=>{this.clear(),this.app.nodes.scanTree(this.captureCanvas)},this.captureCanvas=s=>{const i=this.app.nodes.getID(s);if(!i||!Q(s,"canvas")||this.app.sanitizer.isObscured(i)||this.app.sanitizer.isHidden(i)||!Q(s,"canvas")||this.snapshots[i])return;new IntersectionObserver(l=>{l.forEach(a=>{a.isIntersecting&&(a.target?this.snapshots[i]&&this.snapshots[i].createdAt?this.snapshots[i].paused=!1:this.recordCanvas(a.target,i):this.snapshots[i]&&(this.snapshots[i].paused=!0))})}).observe(s)},this.recordCanvas=(s,i)=>{const r=this.app.timestamp();this.snapshots[i]={images:[],createdAt:r,paused:!1,dummy:document.createElement("canvas")};const o=jr(i.toString(),r);this.app.send(o);const l=d=>{go(d,this.options.quality,this.snapshots[i].dummy,this.options.fixedScaling,this.fileExt,c=>{c&&(this.snapshots[i].images.push({id:this.app.timestamp(),data:c}),this.snapshots[i].images.length>9&&(this.sendSnaps(this.snapshots[i].images,i,this.snapshots[i].createdAt),this.snapshots[i].images=[]))})},a=setInterval(()=>{const d=this.app.nodes.getID(s),c=d?this.app.nodes.getNode(d):void 0;!c||!Q(c,"canvas")||c!==s?(this.app.debug.log("Canvas element not in sync"),clearInterval(a)):this.snapshots[i].paused||(this.options.useAnimationFrame?requestAnimationFrame(()=>{l(c)}):l(c))},this.interval);this.intervals.push(a)},this.fileExt=n.fileExt??"webp",this.interval=1e3/n.fps}startTracking(){setTimeout(()=>{this.app.nodes.scanTree(this.captureCanvas),this.app.nodes.attachNodeCallback(e=>{this.captureCanvas(e)})},500)}sendSnaps(e,n,s){if(Object.keys(this.snapshots).length===0)return;const i=new FormData;e.forEach(r=>{const o=r.data;o&&(i.append("snapshot",o,`${s}_${n}_${r.id}.${this.fileExt}`),this.options.isDebug&&mo(o,`${s}_${n}_${r.id}.${this.fileExt}`))}),fetch(this.app.options.ingestPoint+"/v1/web/images",{method:"POST",headers:{Authorization:`Bearer ${this.app.session.getSessionToken()??""}`},body:i}).then(()=>!0).catch(r=>{this.app.debug.error("error saving canvas",r)})}clear(){this.intervals.forEach(e=>clearInterval(e)),this.snapshots={}}}const Hs={low:.35,medium:.55,high:.8};function go(t,e="medium",n,s=!1,i,r){const o=`image/${i}`;if(s){const l=window.devicePixelRatio||1;n.width=t.width/l,n.height=t.height/l;const a=n.getContext("2d");if(!a)return"";a.clearRect(0,0,n.width,n.height),a.drawImage(t,0,0,n.width,n.height),n.toBlob(r,o,Hs[e])}else t.toBlob(r,o,Hs[e])}function mo(t,e){const n=URL.createObjectURL(t),s=document.createElement("a");s.href=n,s.download=e,s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}const Je={Verbose:5,Log:4,Warnings:3,Errors:2,Silent:0};class bo{constructor(e=Je.Silent){this.shouldLog=n=>this.level>=n,this.log=(...n)=>{this.shouldLog(Je.Log)&&console.log(...n)},this.warn=(...n)=>{this.shouldLog(Je.Warnings)&&console.warn(...n)},this.error=(...n)=>{this.shouldLog(Je.Errors)&&console.error(...n)},this.level=e}}class vo{constructor(e){this.node_id=e,this.nodes=[],this.totalNodeAmount=0,this.nodeCallbacks=[],this.elementListeners=new Map,this.nextNodeId=0,this.scanTree=n=>{this.nodes.forEach(s=>n(s))}}syntheticMode(e){const i=99999999*e;if(i>9007199254740900)throw new Error("Placeholder id overflow");this.nextNodeId=i}attachNodeCallback(e){this.nodeCallbacks.push(e)}attachNodeListener(e,n,s,i=!0){const r=this.getID(e);if(r===void 0)return;ys(e,n,s,i);let o=this.elementListeners.get(r);o===void 0&&(o=[],this.elementListeners.set(r,o)),o.push([n,s,i])}registerNode(e){let n=e[this.node_id];const s=n===void 0;return s&&(n=this.nextNodeId,this.totalNodeAmount++,this.nextNodeId++,this.nodes[n]=e,e[this.node_id]=n),[n,s]}unregisterNode(e){const n=e[this.node_id];if(n!==void 0){e[this.node_id]=void 0,delete e[this.node_id],delete this.nodes[n];const s=this.elementListeners.get(n);s!==void 0&&(this.elementListeners.delete(n),s.forEach(i=>ws(e,i[0],i[1],i[2]))),this.totalNodeAmount--}return n}cleanTree(){for(let e=0;e<this.nodes.length;e++){const n=this.nodes[e];n&&!document.contains(n)&&this.unregisterNode(n)}}callNodeCallbacks(e,n){this.nodeCallbacks.forEach(s=>s(e,n))}getID(e){if(e)return e[this.node_id]}getNode(e){return this.nodes[e]}getNodeCount(){return this.totalNodeAmount}clear(){for(let e=0;e<this.nodes.length;e++){const n=this.nodes[e];n&&this.unregisterNode(n)}this.nextNodeId=0,this.nodes.length=0}}function on(t){if(fo(t))return!0;if(rn(t))return!1;if(!ke(t))return!0;const e=t.tagName.toUpperCase();if(e==="LINK"){const n=t.getAttribute("rel"),s=t.getAttribute("as");return!(n!=null&&n.includes("stylesheet")||s==="style"||s==="font")}return e==="SCRIPT"||e==="NOSCRIPT"||e==="META"||e==="TITLE"||e==="BASE"}function an(t){return St(t)?!0:!on(t)}var ve;(function(t){t[t.New=0]="New",t[t.Removed=1]="Removed",t[t.Changed=2]="Changed"})(ve||(ve={}));class cn{constructor(e,n=!1){this.app=e,this.isTopContext=n,this.commited=[],this.recents=new Map,this.indexes=[],this.attributesMap=new Map,this.textSet=new Set,this.observer=vs(this.app.safe(s=>{for(const i of s){const r=i.target,o=i.type;if(!an(r))continue;if(o==="childList"){for(let a=0;a<i.removedNodes.length;a++)an(i.removedNodes[a])&&this.bindNode(i.removedNodes[a]);for(let a=0;a<i.addedNodes.length;a++)this.bindTree(i.addedNodes[a]);continue}const l=this.app.nodes.getID(r);if(l!==void 0){if(this.recents.has(l)||this.recents.set(l,ve.Changed),o==="attributes"){const a=i.attributeName;if(a===null)continue;let d=this.attributesMap.get(l);d===void 0&&this.attributesMap.set(l,d=new Set),d.add(a);continue}if(o==="characterData"){this.textSet.add(l);continue}}}this.commitNodes()}))}clear(){this.commited.length=0,this.recents.clear(),this.indexes.length=1,this.attributesMap.clear(),this.textSet.clear()}sendNodeAttribute(e,n,s,i){if(sn(n)){s.substr(0,6)==="xlink:"&&(s=s.substr(6)),i===null?this.app.send(xs(e,s)):s==="href"?(i.length>1e5&&(i=""),this.app.send(Kt(e,s,i,this.app.getBaseHref()))):this.app.attributeSender.sendSetAttribute(e,s,i);return}if(!(s==="src"||s==="srcset"||s==="integrity"||s==="crossorigin"||s==="autocomplete"||s.substr(0,2)==="on")&&!(s==="value"&&Q(n,"input")&&n.type!=="button"&&n.type!=="reset"&&n.type!=="submit")){if(i===null){this.app.send(xs(e,s));return}if(s==="style"||s==="href"&&Q(n,"link")){this.app.send(Kt(e,s,i,this.app.getBaseHref()));return}(s==="href"||i.length>1e5)&&(i=""),this.app.attributeSender.sendSetAttribute(e,s,i)}}sendNodeData(e,n,s){if(Q(n,"style")){this.app.send(Or(e,s,this.app.getBaseHref()));return}s=this.app.sanitizer.sanitize(e,s),this.app.send(mr(e,s))}bindNode(e){const[n,s]=this.app.nodes.registerNode(e);s?this.recents.set(n,ve.New):this.recents.get(n)!==ve.New&&this.recents.set(n,ve.Removed)}bindTree(e){if(!an(e))return;this.bindNode(e);const n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT+NodeFilter.SHOW_TEXT,{acceptNode:s=>(this.app.nodes.getID(s)!==void 0&&this.app.debug.error("! Node is already bound",s),on(s)||this.app.nodes.getID(s)!==void 0?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT)},!1);for(;n.nextNode();)this.bindNode(n.currentNode)}unbindTree(e){const n=this.app.nodes.unregisterNode(e);if(n!==void 0&&this.recents.get(n)===ve.Removed){this.app.send(gr(n));const s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT+NodeFilter.SHOW_TEXT,{acceptNode:l=>on(l)||this.app.nodes.getID(l)===void 0?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},!1);let i=0;const r=this.app.nodes.getNodeCount();for(;s.nextNode();)i+=1,this.app.nodes.unregisterNode(s.currentNode);const o=Math.floor(i/r*100);o>30&&this.app.send(Br(o))}}_commitNode(e,n){if(St(n))return!0;const s=n.parentNode;let i;if(!Q(n,"html")||!this.isTopContext){if(s===null)return this.unbindTree(n),!1;if(i=this.app.nodes.getID(s),i===void 0)return this.unbindTree(n),!1;if(!this.commitNode(i))return this.unbindTree(n),!1;if(this.app.sanitizer.handleNode(e,i,n),this.app.sanitizer.isHidden(i))return!1}let r=n.previousSibling;for(;r!==null;){const c=this.app.nodes.getID(r);if(c!==void 0){this.commitNode(c),this.indexes[e]=this.indexes[c]+1;break}r=r.previousSibling}r===null&&(this.indexes[e]=0);const o=this.recents.get(e),l=o===ve.New,a=this.indexes[e];if(a===void 0)throw"commitNode: missing node index";if(l){if(ke(n)){let c=n;if(i!==void 0){if(this.app.sanitizer.isHidden(e)){const u=c.clientWidth,p=c.clientHeight;c=n.cloneNode(),c.style.width=`${u}px`,c.style.height=`${p}px`}this.app.send(ur(e,i,a,c.tagName,sn(n)))}for(let u=0;u<c.attributes.length;u++){const p=c.attributes[u];this.sendNodeAttribute(e,c,p.nodeName,p.value)}}else rn(n)&&(this.app.send(fr(e,i,a)),this.sendNodeData(e,s,n.data));return!0}o===ve.Removed&&i!==void 0&&this.app.send(pr(e,i,a));const d=this.attributesMap.get(e);if(d!==void 0){if(!ke(n))throw"commitNode: node is not an element";for(const c of d)this.sendNodeAttribute(e,n,c,n.getAttribute(c))}if(this.textSet.has(e)){if(!rn(n))throw"commitNode: node is not a text";this.sendNodeData(e,s,n.data)}return!0}commitNode(e){const n=this.app.nodes.getNode(e);if(n===void 0)return!1;const s=this.commited[e];return s!==void 0?s:this.commited[e]=this._commitNode(e,n)}commitNodes(e=!1){let n;this.recents.forEach((s,i)=>{this.commitNode(i),s===ve.New&&(n=this.app.nodes.getNode(i))&&this.app.nodes.callNodeCallbacks(n,e)}),this.clear()}observeRoot(e,n,s=e){this.observer.observe(e,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1}),this.bindTree(s),n(this.app.nodes.getID(e)),this.commitNodes(!0)}disconnect(){this.observer.disconnect(),this.clear()}}class $s extends cn{observe(e){const n=e.contentDocument,s=this.app.nodes.getID(e);!n||s===void 0||this.observeRoot(n,i=>{if(i===void 0){this.app.debug.log("OpenReplay: Iframe document not bound");return}this.app.send(Xt(s,i))})}syntheticObserve(e,n){this.observeRoot(n,s=>{if(s===void 0){this.app.debug.log("OpenReplay: Iframe document not bound");return}this.app.send(Xt(e,s))})}}class yo extends cn{observe(e){const n=e.shadowRoot,s=this.app.nodes.getID(e);!n||s===void 0||this.observeRoot(n,i=>{if(i===void 0){this.app.debug.error("OpenReplay: Shadow Root was not bound");return}this.app.send(Xt(s,i))})}}class wo{constructor(){this.states=new Map}calcOffset(e){let n=0,s=0;if(e.parent&&([n,s]=this.calcOffset(e.parent)),!e.offset){const{left:o,top:l}=e.iFrame.getBoundingClientRect();e.offset=[o,l]}const[i,r]=e.offset;return[n+i,s+r]}getDocumentOffset(e){const n=this.states.get(e);return n?this.calcOffset(n):[0,0]}observe(e){var l;const n=e.contentDocument;if(!n)return;const s=e.ownerDocument,i=this.states.get(s),r={offset:null,iFrame:e,parent:i||null,clear:()=>{var a;s.removeEventListener("scroll",o),(a=s.defaultView)==null||a.removeEventListener("resize",o)}},o=()=>{r.offset=null};s.addEventListener("scroll",o),(l=s.defaultView)==null||l.addEventListener("resize",o),this.states.set(n,r)}clear(){this.states.forEach(e=>e.clear()),this.states.clear()}}const ln=be?Element.prototype.attachShadow:()=>new ShadowRoot;class So extends cn{constructor(e,n){super(e,!0),this.iframeOffsets=new wo,this.contextCallbacks=[],this.contextsSet=new Set,this.iframeObservers=[],this.shadowRootObservers=[],this.options=Object.assign({captureIFrames:!0},n),this.app.nodes.attachNodeCallback(s=>{Q(s,"iframe")&&(this.options.captureIFrames&&!Re(s,"obscured")||Re(s,"capture"))&&this.handleIframe(s)}),this.app.nodes.attachNodeCallback(s=>{ke(s)&&s.shadowRoot!==null&&this.handleShadowRoot(s.shadowRoot)})}attachContextCallback(e){this.contextCallbacks.push(e)}getDocumentOffset(e){return this.iframeOffsets.getDocumentOffset(e)}handleIframe(e){let n=null;const s=this.app.safe(()=>setTimeout(()=>{if(this.app.nodes.getID(e)===void 0||!sr(e))return;const r=e.contentWindow,o=e.contentDocument;if(o&&o!==n){const l=new $s(this.app);this.iframeObservers.push(l),l.observe(e),n=o,this.iframeOffsets.observe(e)}r&&r===r.window&&!this.contextsSet.has(r)&&(this.contextsSet.add(r),this.contextCallbacks.forEach(l=>l(r)))},100));e.addEventListener("load",s),s()}handleShadowRoot(e){const n=new yo(this.app);this.shadowRootObservers.push(n),n.observe(e.host)}observe(){const e=this;Element.prototype.attachShadow=function(){const n=ln.apply(this,arguments);return e.handleShadowRoot(n),n},this.app.nodes.clear(),this.observeRoot(window.document,()=>{this.app.send(hr()),this.app.nodes.callNodeCallbacks(document,!0)},window.document.documentElement)}crossdomainObserve(e,n){const s=this;Element.prototype.attachShadow=function(){const r=ln.apply(this,arguments);return s.handleShadowRoot(r),r},this.app.nodes.clear(),this.app.nodes.syntheticMode(n);const i=new $s(this.app);this.iframeObservers.push(i),i.syntheticObserve(e,window.document)}disconnect(){this.iframeOffsets.clear(),Element.prototype.attachShadow=ln,this.iframeObservers.forEach(e=>e.disconnect()),this.iframeObservers=[],this.shadowRootObservers.forEach(e=>e.disconnect()),this.shadowRootObservers=[],super.disconnect()}}var xt;(function(t){t[t.Plain=0]="Plain",t[t.Obscured=1]="Obscured",t[t.Hidden=2]="Hidden"})(xt||(xt={}));const xo=t=>t.trim().replace(/[^\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/g,"█");class ko{constructor(e,n){this.app=e,this.obscured=new Set,this.hidden=new Set,this.options=Object.assign({obscureTextEmails:!0,obscureTextNumbers:!1},n)}handleNode(e,n,s){if((this.obscured.has(n)||ke(s)&&(Re(s,"masked")||Re(s,"obscured")))&&this.obscured.add(e),(this.hidden.has(n)||ke(s)&&(Re(s,"htmlmasked")||Re(s,"hidden")))&&this.hidden.add(e),this.options.domSanitizer!==void 0&&ke(s)){const i=this.options.domSanitizer(s);i===xt.Obscured&&this.obscured.add(e),i===xt.Hidden&&this.hidden.add(e)}}sanitize(e,n){return this.obscured.has(e)?xo(n):(this.options.obscureTextNumbers&&(n=n.replace(/\d/g,"0")),this.options.obscureTextEmails&&(n=n.replace(/^\w+([+.-]\w+)*@\w+([.-]\w+)*\.\w{2,3}$/g,s=>{const[i,r]=s.split("@"),[o,l]=r.split(".");return`${Wt(i)}@${Wt(o)}.${Wt(l)}`})),n)}isObscured(e){return this.obscured.has(e)}isHidden(e){return this.hidden.has(e)}getInnerTextSecure(e){const n=this.app.nodes.getID(e);return n?this.sanitize(n,e.innerText):""}clear(){this.obscured.clear(),this.hidden.clear()}}class To{constructor(e,n){this.app=e,this.options=n,this.metadata={},this.userID=null,this.callbacks=[],this.timestamp=0,this.createTabId()}attachUpdateCallback(e){this.callbacks.push(e)}handleUpdate(e){e.userID==null&&delete e.userID,e.sessionID==null&&delete e.sessionID,this.callbacks.forEach(n=>n(e))}assign(e){e.userID!==void 0&&(this.userID=e.userID),e.metadata!==void 0&&Object.entries(e.metadata).forEach(([n,s])=>this.metadata[n]=s),e.sessionID!==void 0&&(this.sessionID=e.sessionID),e.timestamp!==void 0&&(this.timestamp=e.timestamp),e.projectID!==void 0&&(this.projectID=e.projectID),this.handleUpdate(e)}setMetadata(e,n){this.metadata[e]=n,this.handleUpdate({metadata:{[e]:n}})}setUserID(e){this.userID=e,this.handleUpdate({userID:e})}setUserInfo(e){this.userInfo=e}getPageNumber(){const e=this.app.sessionStorage.getItem(this.options.session_pageno_key);if(e!=null)return parseInt(e)}incPageNo(){let e=this.getPageNumber();return e===void 0?e=0:e++,this.app.sessionStorage.setItem(this.options.session_pageno_key,e.toString()),e}getSessionToken(){return this.app.sessionStorage.getItem(this.options.session_token_key)||void 0}setSessionToken(e){this.app.sessionStorage.setItem(this.options.session_token_key,e)}applySessionHash(e){const n=decodeURI(e).split("&");let s=e,i="100500";n.length==2&&([i,s]=n),!(!i||!s)&&(this.app.sessionStorage.setItem(this.options.session_token_key,s),this.app.sessionStorage.setItem(this.options.session_pageno_key,i))}getSessionHash(){const e=this.getPageNumber(),n=this.getSessionToken();if(!(e===void 0||n===void 0))return encodeURI(String(e)+"&"+n)}getTabId(){return this.tabId||this.createTabId(),this.tabId}regenerateTabId(){const e=ir(12);this.app.sessionStorage.setItem(this.options.session_tabid_key,e),this.tabId=e}createTabId(){const e=this.app.sessionStorage.getItem(this.options.session_tabid_key);e?this.tabId=e:this.regenerateTabId()}getInfo(){return{sessionID:this.sessionID,metadata:this.metadata,userID:this.userID,timestamp:this.timestamp,projectID:this.projectID}}reset(){this.app.sessionStorage.removeItem(this.options.session_token_key),this.metadata={},this.userID=null,this.sessionID=void 0,this.timestamp=0}}function Eo(t,e){let n=0;return()=>{n++>=e&&(n=0,t())}}class Io{constructor(e){this.app=e,this.timer=null,this.callbacks=[]}attach(e,n=0,s=!0,i){i&&(e=e.bind(i)),s&&(e=this.app.safe(e)),this.callbacks.unshift(n?Eo(e,n):e)-1}start(){this.timer===null&&(this.timer=setInterval(()=>this.callbacks.forEach(e=>{e&&e()}),30))}stop(){this.timer!==null&&(clearInterval(this.timer),this.timer=null)}}const Ye="canceled",qs="or_uxt_active",dn="or_buffer_1",_e=t=>({reason:t,success:!1}),Co=t=>({...t,success:!0});var Z;(function(t){t[t.NotActive=0]="NotActive",t[t.Starting=1]="Starting",t[t.Active=2]="Active",t[t.ColdStart=3]="ColdStart"})(Z||(Z={}));const Ws="https://api.openreplay.com/ingest";function hn(){const t=new Date().getTimezoneOffset()*-1,e=t>=0?"+":"-",n=Math.floor(Math.abs(t)/60),s=Math.abs(t)%60;return`UTC${e}${String(n).padStart(2,"0")}:${String(s).padStart(2,"0")}`}const _o=t=>new Promise(e=>setTimeout(e,t)),le={ask:"never-gonna-give-you-up",resp:"never-gonna-let-you-down",reg:"never-gonna-run-around-and-desert-you",iframeSignal:"never-gonna-make-you-cry",iframeId:"never-gonna-say-goodbye",iframeBatch:"never-gonna-tell-a-lie-and-hurt-you"};let No=class{constructor(e,n,s,i,r){this.signalError=i,this.insideIframe=r,this.messages=[],this.bufferedMessages1=[],this.bufferedMessages2=[],this.startCallbacks=[],this.stopCallbacks=[],this.commitCallbacks=[],this.activityState=Z.NotActive,this.version="14.0.4",this.socketMode=!1,this.compressionThreshold=24*1e3,this.bc=null,this.canvasRecorder=null,this.conditionsManager=null,this.canStart=!1,this.rootId=null,this.pageFrames=[],this.frameOderNumber=0,this.initialHostName=location.hostname,this.startTimeout=null,this.coldStartCommitN=0,this.delay=0,this.coldInterval=null,this.orderNumber=0,this.coldStartTs=0,this.singleBuffer=!1,this.onSessionSent=()=>{},this.restartCanvasTracking=()=>{var a;(a=this.canvasRecorder)==null||a.restartTracking()},this.flushBuffer=async a=>new Promise(d=>{let c=!1;const u=[a.shift()];for(;!c;){const p=a[0];!p||p[0]===0?c=!0:u.push(a.shift())}this.postToWorker(u),d(null)}),this.onUxtCb=[],this.contextId=Math.random().toString(36).slice(2),this.projectKey=e,Object.keys(s).findIndex(a=>["fixedCanvasScaling","disableCanvas"].includes(a))!==-1&&(console.warn('Openreplay: canvas options are moving to separate key "canvas" in next update. Please update your configuration.'),s={...s,canvas:{__save_canvas_locally:s.__save_canvas_locally,fixedCanvasScaling:s.fixedCanvasScaling,disableCanvas:s.disableCanvas}}),this.networkOptions=s.network;const o={revID:"",node_id:"__openreplay_id",session_token_key:"__openreplay_token",session_pageno_key:"__openreplay_pageno",session_reset_key:"__openreplay_reset",session_tabid_key:"__openreplay_tabid",local_uuid_key:"__openreplay_uuid",ingestPoint:Ws,resourceBaseHref:null,__is_snippet:!1,__debug_report_edp:null,__debug__:Je.Silent,__save_canvas_locally:!1,localStorage:null,sessionStorage:null,disableStringDict:!1,forceSingleTab:!1,assistSocketHost:"",fixedCanvasScaling:!1,disableCanvas:!1,captureIFrames:!0,obscureTextEmails:!0,obscureTextNumbers:!1,crossdomain:{parentDomain:"*"},canvas:{disableCanvas:!1,fixedCanvasScaling:!1,__save_canvas_locally:!1,useAnimationFrame:!1}};if(this.options=Ss(o,s),!this.insideIframe&&!this.options.forceSingleTab&&globalThis&&"BroadcastChannel"in globalThis){const a=location.hostname.split(".").slice(-2).join("_");this.bc=new BroadcastChannel(`rick_${a}`)}this.revID=this.options.revID,this.localStorage=this.options.localStorage??window.localStorage,this.sessionStorage=this.options.sessionStorage??window.sessionStorage,this.sanitizer=new ko(this,s),this.nodes=new vo(this.options.node_id),this.observer=new So(this,s),this.ticker=new Io(this),this.ticker.attach(()=>this.commit()),this.debug=new bo(this.options.__debug__),this.session=new To(this,this.options),this.attributeSender=new Yi(this,!!this.options.disableStringDict),this.featureFlags=new er(this),this.tagWatcher=new $r(this.sessionStorage,this.debug.error,a=>{this.send(zr(a))}),this.session.attachUpdateCallback(({userID:a,metadata:d})=>{a!=null&&this.send(Er(a)),d!=null&&Object.entries(d).forEach(([c,u])=>this.send(ks(c,u)))}),n!=null&&this.session.applySessionHash(n),this.initWorker();const l=this.session.getTabId();if(this.insideIframe){const a=c=>{const{data:u}=c;u.line===le.iframeId&&(this.rootId=u.id,this.session.setSessionToken(u.token),this.frameOderNumber=u.frameOrderNumber,this.debug.log("starting iframe tracking",u),this.allowAppStart())};window.addEventListener("message",a),this.attachStopCallback(()=>{window.removeEventListener("message",a)});const d=this.initialHostName;window.parent.postMessage({line:le.iframeSignal,source:l,context:this.contextId,domain:d},"*")}else{let a=0;const d=c=>{const{data:u}=c;if(u.line===le.iframeSignal){const p=u.domain,v=Array.from(document.querySelectorAll("iframe"));this.pageFrames=v,(async()=>{let y=0;for(;y<10;){const T=this.checkNodeId(v,p);if(T){this.waitStarted().then(()=>{var D;a++;const A=this.session.getSessionToken(),B={line:le.iframeId,context:this.contextId,domain:p,id:T,token:A,frameOrderNumber:a};this.debug.log("iframe_data",B),(D=c.source)==null||D.postMessage(B,"*")}).catch(console.error),y=10;break}y++,await _o(100)}})()}if(u.line===le.iframeBatch){const v=u.messages.map(S=>{if(S[0]===20){let y=S;return this.pageFrames.forEach(T=>{if(T.dataset.domain===c.data.domain){const[A,B,D]=S,{left:k,top:N}=T.getBoundingClientRect();y=[A,B+k,D+N]}}),y}if(S[0]===68){let y=S;return this.pageFrames.forEach(T=>{if(T.dataset.domain===c.data.domain){const[A,B,D,k,N,O,L]=S,{left:I,top:E,width:P,height:V}=T.getBoundingClientRect(),j=document.documentElement.scrollWidth,q=document.documentElement.scrollHeight,C=O/100*P+I,F=L/100*V+E,G=C/j,K=F/q;y=[A,B,D,k,N,Math.round(G*1e3)/10,Math.round(K*1e3)/10]}}),y}return S});this.messages.push(...v)}};window.addEventListener("message",d),this.attachStopCallback(()=>{window.removeEventListener("message",d)})}this.bc!==null&&(this.bc.postMessage({line:le.ask,source:l,context:this.contextId}),this.startTimeout=setTimeout(()=>{this.allowAppStart()},500),this.bc.onmessage=a=>{if(a.data.context!==this.contextId){if(a.data.line===le.resp){const d=a.data.token;this.session.setSessionToken(d),this.allowAppStart()}if(a.data.line===le.reg){const d=a.data.token;this.session.regenerateTabId(),this.session.setSessionToken(d),this.allowAppStart()}if(a.data.line===le.ask){const d=this.session.getSessionToken();d&&this.bc&&this.bc.postMessage({line:a.data.source===l?le.reg:le.resp,token:d,source:l,context:this.contextId})}}})}allowAppStart(){this.canStart=!0,this.startTimeout&&(clearTimeout(this.startTimeout),this.startTimeout=null)}checkNodeId(e,n){for(const s of e)if(s.dataset.domain===n)return s[this.options.node_id];return null}initWorker(){try{this.worker=new Worker(URL.createObjectURL(new Blob(['"use strict";class t{constructor(t,s,i,e=10,n=250,h,r){this.onUnauthorised=s,this.onFailure=i,this.MAX_ATTEMPTS_COUNT=e,this.ATTEMPT_TIMEOUT=n,this.onCompress=h,this.pageNo=r,this.attemptsCount=0,this.busy=!1,this.queue=[],this.token=null,this.lastBatchNum=0,this.ingestURL=t+"/v1/web/i",this.isCompressing=void 0!==h}getQueueStatus(){return 0===this.queue.length&&!this.busy}authorise(t){this.token=t,this.busy||this.sendNext()}push(t){if(this.busy||!this.token)this.queue.push(t);else if(this.busy=!0,this.isCompressing&&this.onCompress)this.onCompress(t);else{const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}}sendNext(){const t=this.queue.shift();if(t)if(this.busy=!0,this.isCompressing&&this.onCompress)this.onCompress(t);else{const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}else this.busy=!1}retry(t,s,i){this.attemptsCount>=this.MAX_ATTEMPTS_COUNT?this.onFailure(`Failed to send batch after ${this.attemptsCount} attempts.`):(this.attemptsCount++,setTimeout((()=>this.sendBatch(t,s,i)),this.ATTEMPT_TIMEOUT*this.attemptsCount))}sendBatch(t,s,i){const e=i?.toString().replace(/^([^_]+)_([^_]+).*/,"$1_$2_$3");this.busy=!0;const n={Authorization:`Bearer ${this.token}`};s&&(n["Content-Encoding"]="gzip"),null!==this.token?fetch(`${this.ingestURL}?batch=${this.pageNo??"noPageNum"}_${e??"noBatchNum"}`,{body:t,method:"POST",headers:n,keepalive:t.length<65536}).then((e=>{if(401===e.status)return this.busy=!1,void this.onUnauthorised();e.status>=400?this.retry(t,s,`${i??"noBatchNum"}_network:${e.status}`):(this.attemptsCount=0,this.sendNext())})).catch((e=>{console.warn("OpenReplay:",e),this.retry(t,s,`${i??"noBatchNum"}_reject:${e.message}`)})):setTimeout((()=>{this.sendBatch(t,s,`${i??"noBatchNum"}_newToken`)}),500)}sendCompressed(t){const s=++this.lastBatchNum;this.sendBatch(t,!0,s)}sendUncompressed(t){const s=++this.lastBatchNum;this.sendBatch(t,!1,s)}clean(){this.sendNext(),setTimeout((()=>{this.token=null,this.queue.length=0}),10)}}const s="function"==typeof TextEncoder?new TextEncoder:{encode(t){const s=t.length,i=new Uint8Array(3*s);let e=-1;for(let n=0,h=0,r=0;r!==s;){if(n=t.charCodeAt(r),r+=1,n>=55296&&n<=56319){if(r===s){i[e+=1]=239,i[e+=1]=191,i[e+=1]=189;break}if(h=t.charCodeAt(r),!(h>=56320&&h<=57343)){i[e+=1]=239,i[e+=1]=191,i[e+=1]=189;continue}if(n=1024*(n-55296)+h-56320+65536,r+=1,n>65535){i[e+=1]=240|n>>>18,i[e+=1]=128|n>>>12&63,i[e+=1]=128|n>>>6&63,i[e+=1]=128|63&n;continue}}n<=127?i[e+=1]=0|n:n<=2047?(i[e+=1]=192|n>>>6,i[e+=1]=128|63&n):(i[e+=1]=224|n>>>12,i[e+=1]=128|n>>>6&63,i[e+=1]=128|63&n)}return i.subarray(0,e+1)}};class i{constructor(t){this.size=t,this.offset=0,this.checkpointOffset=0,this.data=new Uint8Array(t)}getCurrentOffset(){return this.offset}checkpoint(){this.checkpointOffset=this.offset}get isEmpty(){return 0===this.offset}skip(t){return this.offset+=t,this.offset<=this.size}set(t,s){this.data.set(t,s)}boolean(t){return this.data[this.offset++]=+t,this.offset<=this.size}uint(t){for((t<0||t>Number.MAX_SAFE_INTEGER)&&(t=0);t>=128;)this.data[this.offset++]=t%256|128,t=Math.floor(t/128);return this.data[this.offset++]=t,this.offset<=this.size}int(t){return t=Math.round(t),this.uint(t>=0?2*t:-2*t-1)}string(t){const i=s.encode(t),e=i.byteLength;return!(!this.uint(e)||this.offset+e>this.size)&&(this.data.set(i,this.offset),this.offset+=e,!0)}reset(){this.offset=0,this.checkpointOffset=0}flush(){const t=this.data.slice(0,this.checkpointOffset);return this.reset(),t}}class e extends i{encode(t){switch(t[0]){case 0:case 11:case 114:case 115:return this.uint(t[1]);case 4:case 44:case 47:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3]);case 5:case 20:case 38:case 70:case 75:case 76:case 77:case 82:return this.uint(t[1])&&this.uint(t[2]);case 6:return this.int(t[1])&&this.int(t[2]);case 7:return!0;case 8:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.string(t[4])&&this.boolean(t[5]);case 9:case 10:case 24:case 51:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3]);case 12:case 61:case 71:return this.uint(t[1])&&this.string(t[2])&&this.string(t[3]);case 13:case 14:case 17:case 50:case 54:return this.uint(t[1])&&this.string(t[2]);case 16:return this.uint(t[1])&&this.int(t[2])&&this.int(t[3]);case 18:return this.uint(t[1])&&this.string(t[2])&&this.int(t[3]);case 19:return this.uint(t[1])&&this.boolean(t[2]);case 21:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.string(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8]);case 22:case 27:case 30:case 41:case 45:case 46:case 63:case 64:case 79:return this.string(t[1])&&this.string(t[2]);case 23:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8])&&this.uint(t[9]);case 28:case 29:case 42:case 117:case 118:return this.string(t[1]);case 37:return this.uint(t[1])&&this.string(t[2])&&this.uint(t[3]);case 39:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.uint(t[7]);case 40:return this.string(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4]);case 48:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.int(t[5]);case 49:return this.int(t[1])&&this.int(t[2])&&this.uint(t[3])&&this.uint(t[4]);case 53:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.string(t[7])&&this.string(t[8]);case 55:return this.boolean(t[1]);case 57:case 60:return this.uint(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4]);case 58:case 120:return this.int(t[1]);case 59:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.string(t[5])&&this.string(t[6])&&this.string(t[7]);case 67:case 73:return this.uint(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.string(t[4]);case 68:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])&&this.uint(t[6]);case 69:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3])&&this.string(t[4]);case 78:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4]);case 81:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.int(t[4])&&this.string(t[5]);case 83:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.string(t[5])&&this.uint(t[6])&&this.uint(t[7])&&this.uint(t[8])&&this.uint(t[9]);case 84:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.uint(t[4])&&this.string(t[5])&&this.string(t[6]);case 112:return this.uint(t[1])&&this.string(t[2])&&this.boolean(t[3])&&this.string(t[4])&&this.int(t[5])&&this.int(t[6]);case 113:return this.uint(t[1])&&this.uint(t[2])&&this.string(t[3]);case 116:return this.uint(t[1])&&this.uint(t[2])&&this.uint(t[3])&&this.uint(t[4])&&this.uint(t[5])&&this.uint(t[6])&&this.string(t[7])&&this.string(t[8])&&this.uint(t[9])&&this.boolean(t[10]);case 119:return this.string(t[1])&&this.uint(t[2]);case 121:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.uint(t[4]);case 122:return this.string(t[1])&&this.string(t[2])&&this.uint(t[3])&&this.string(t[4]);case 123:return this.string(t[1])&&this.string(t[2])&&this.string(t[3])&&this.string(t[4])&&this.uint(t[5])}}}class n{constructor(t,s,i,n,h,r){this.pageNo=t,this.timestamp=s,this.url=i,this.onBatch=n,this.tabId=h,this.onOfflineEnd=r,this.nextIndex=0,this.beaconSize=2e5,this.encoder=new e(this.beaconSize),this.sizeBuffer=new Uint8Array(3),this.isEmpty=!0,this.beaconSizeLimit=1e6,this.prepare()}writeType(t){return this.encoder.uint(t[0])}writeFields(t){return this.encoder.encode(t)}writeSizeAt(t,s){for(let s=0;s<3;s++)this.sizeBuffer[s]=t>>8*s;this.encoder.set(this.sizeBuffer,s)}prepare(){if(!this.encoder.isEmpty)return;const t=[81,1,this.pageNo,this.nextIndex,this.timestamp,this.url],s=[118,this.tabId];this.writeType(t),this.writeFields(t),this.writeWithSize(s),this.isEmpty=!0}writeWithSize(t){const s=this.encoder;if(!this.writeType(t)||!s.skip(3))return!1;const i=s.getCurrentOffset(),e=this.writeFields(t);if(e){const e=s.getCurrentOffset()-i;if(e>16777215)return console.warn("OpenReplay: max message size overflow."),!1;this.writeSizeAt(e,i-3),s.checkpoint(),this.isEmpty=this.isEmpty&&0===t[0],this.nextIndex++}return e}setBeaconSizeLimit(t){this.beaconSizeLimit=t}writeMessage(t){if("q_end"===t[0])return this.finaliseBatch(),this.onOfflineEnd();0===t[0]&&(this.timestamp=t[1]),122===t[0]&&(this.url=t[1]),this.writeWithSize(t)||(this.finaliseBatch(),this.writeWithSize(t)||(this.encoder=new e(this.beaconSizeLimit),this.prepare(),this.writeWithSize(t)?this.finaliseBatch():console.warn("OpenReplay: beacon size overflow. Skipping large message.",t,this),this.encoder=new e(this.beaconSize),this.prepare()))}finaliseBatch(){if(this.isEmpty)return;const t=this.encoder.flush();this.onBatch(t),this.prepare()}clean(){this.encoder.reset()}}var h;!function(t){t[t.NotActive=0]="NotActive",t[t.Starting=1]="Starting",t[t.Stopping=2]="Stopping",t[t.Active=3]="Active",t[t.Stopped=4]="Stopped"}(h||(h={}));let r=null,a=null,u=h.NotActive;function o(){a&&a.finaliseBatch()}function c(){return new Promise((t=>{u=h.Stopping,null!==l&&(clearInterval(l),l=null),a&&(a.clean(),a=null),r&&(r.clean(),setTimeout((()=>{r=null}),20)),setTimeout((()=>{u=h.NotActive,t(null)}),100)}))}function g(){u!==h.Stopped&&(postMessage("a_stop"),c().then((()=>{postMessage("a_start")})))}let p,l=null;self.onmessage=({data:s})=>{if(null!=s){if("stop"===s)return o(),void c().then((()=>{u=h.Stopped}));if("forceFlushBatch"!==s){if(!Array.isArray(s)){if("compressed"===s.type){if(!r)return console.debug("OR WebWorker: sender not initialised. Compressed batch."),void g();s.batch&&r.sendCompressed(s.batch)}if("uncompressed"===s.type){if(!r)return console.debug("OR WebWorker: sender not initialised. Uncompressed batch."),void g();s.batch&&r.sendUncompressed(s.batch)}return"start"===s.type?(u=h.Starting,r=new t(s.ingestPoint,(()=>{g()}),(t=>{!function(t){postMessage({type:"failure",reason:t}),c()}(t)}),s.connAttemptCount,s.connAttemptGap,(t=>{postMessage({type:"compress",batch:t},[t.buffer])}),s.pageNo),a=new n(s.pageNo,s.timestamp,s.url,(t=>{r&&r.push(t)}),s.tabId,(()=>postMessage({type:"queue_empty"}))),null===l&&(l=setInterval(o,1e4)),u=h.Active):"auth"===s.type?r?a?(r.authorise(s.token),void(s.beaconSizeLimit&&a.setBeaconSizeLimit(s.beaconSizeLimit))):(console.debug("OR WebWorker: writer not initialised. Received auth."),void g()):(console.debug("OR WebWorker: sender not initialised. Received auth."),void g()):void 0}if(a){const t=a;s.forEach((s=>{55===s[0]&&(s[1]?p=setTimeout((()=>g()),18e5):clearTimeout(p)),t.writeMessage(s)}))}else postMessage("not_init"),g()}else o()}else o()};'],{type:"text/javascript"}))),this.worker.onerror=n=>{this._debug("webworker_error",n)},this.worker.onmessage=({data:n})=>{this.handleWorkerMsg(n)};const e=()=>{this.worker&&this.worker.postMessage(null)};this.attachEventListener(window,"beforeunload",e,!1),this.attachEventListener(document.body,"mouseleave",e,!1,!1),this.attachEventListener(document,"visibilitychange",e,!1)}catch(e){this._debug("worker_start",e)}}handleWorkerMsg(e){var n;if(e==="a_stop")this.stop(!1);else if(e==="a_start")this.start({},!0);else if(e==="not_init")this.debug.warn("OR WebWorker: writer not initialised. Restarting tracker");else if(e.type==="failure")this.stop(!1),this.debug.error("worker_failed",e.reason),this._debug("worker_failed",e.reason);else if(e.type==="compress"){const s=e.batch;s.byteLength>this.compressionThreshold?Ki(e.batch,{mtime:0},(r,o)=>{var l,a;r?(this.debug.error("Openreplay compression error:",r),(l=this.worker)==null||l.postMessage({type:"uncompressed",batch:s})):(a=this.worker)==null||a.postMessage({type:"compressed",batch:o})}):(n=this.worker)==null||n.postMessage({type:"uncompressed",batch:s})}else e.type==="queue_empty"&&this.onSessionSent()}_debug(e,n){this.options.__debug_report_edp!==null&&fetch(this.options.__debug_report_edp,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:e,error:`${n}`})}),this.debug.error("OpenReplay error: ",e,n)}send(e,n=!1){var s;this.activityState!==Z.NotActive&&(this.activityState===Z.ColdStart?(this.bufferedMessages1.push(e),this.singleBuffer||this.bufferedMessages2.push(e),(s=this.conditionsManager)==null||s.processMessage(e)):this.messages.push(e),this.activityState===Z.Active&&n&&this.commit())}_nCommit(){if(this.socketMode){this.messages.unshift(De(this.session.getTabId())),this.messages.unshift(Ae(this.timestamp())),this.commitCallbacks.forEach(e=>e(this.messages)),this.messages.length=0;return}if(!(this.worker===void 0||!this.messages.length)){if(this.insideIframe){window.parent.postMessage({line:le.iframeBatch,messages:this.messages,domain:this.initialHostName},"*"),this.commitCallbacks.forEach(e=>e(this.messages)),this.messages.length=0;return}try{cr(()=>{var e;this.messages.unshift(De(this.session.getTabId())),this.messages.unshift(Ae(this.timestamp())),(e=this.worker)==null||e.postMessage(this.messages),this.commitCallbacks.forEach(n=>n(this.messages)),this.messages.length=0})}catch(e){this._debug("worker_commit",e),this.stop(!0),setTimeout(()=>{this.start()},500)}}}_cStartCommit(){this.coldStartCommitN+=1,this.coldStartCommitN===2&&(this.bufferedMessages1.push(Ae(this.timestamp())),this.bufferedMessages1.push(De(this.session.getTabId())),this.bufferedMessages2.push(Ae(this.timestamp())),this.bufferedMessages2.push(De(this.session.getTabId())),this.coldStartCommitN=0)}commit(){this.activityState===Z.ColdStart?this._cStartCommit():this._nCommit()}postToWorker(e){var n;(n=this.worker)==null||n.postMessage(e),this.commitCallbacks.forEach(s=>s(e)),e.length=0}timestamp(){return pe()+this.delay}safe(e){const n=this;return function(...s){try{e.apply(this,s)}catch(i){n._debug("safe_fn_call",i)}}}attachCommitCallback(e){this.commitCallbacks.push(e)}attachStartCallback(e,n=!1){n&&(e=this.safe(e)),this.startCallbacks.push(e)}attachStopCallback(e,n=!1){n&&(e=this.safe(e)),this.stopCallbacks.push(e)}attachEventListener(e,n,s,i=!0,r=!0){i&&(s=this.safe(s));const o=()=>e?ys(e,n,s,r):null,l=()=>e?ws(e,n,s,r):null;this.attachStartCallback(o,i),this.attachStopCallback(l,i)}checkRequiredVersion(e){const n=e.split(/[.-]/),s=this.version.split(/[.-]/);for(let i=0;i<3;i++){if(isNaN(Number(s[i]))||isNaN(Number(n[i])))return!1;if(Number(s[i])>Number(n[i]))return!0;if(Number(s[i])<Number(n[i]))return!1}return!0}getTrackerInfo(){return{userUUID:this.localStorage.getItem(this.options.local_uuid_key),projectKey:this.projectKey,revID:this.revID,trackerVersion:this.version,isSnippet:this.options.__is_snippet}}getSessionInfo(){return{...this.session.getInfo(),...this.getTrackerInfo()}}getSessionToken(){return this.session.getSessionToken()}getSessionID(){return this.session.getInfo().sessionID||void 0}getSessionURL(e){const{projectID:n,sessionID:s,timestamp:i}=this.session.getInfo();if(!n||!s){this.debug.error("OpenReplay error: Unable to build session URL");return}const r=this.options.ingestPoint,a=(/api\.openreplay\.com/.test(r)?"https://app.openreplay.com/ingest":r).replace(/ingest$/,`${n}/session/${s}`);if(e!=null&&e.withCurrentTime){const d=pe()-i;return`${a}?jumpto=${d}`}return a}getHost(){return new URL(this.options.ingestPoint).host}getProjectKey(){return this.projectKey}getBaseHref(){var e,n;return typeof this.options.resourceBaseHref=="string"?this.options.resourceBaseHref:(this.options.resourceBaseHref,document.baseURI?document.baseURI:((n=(e=document.head)==null?void 0:e.getElementsByTagName("base")[0])==null?void 0:n.getAttribute("href"))||location.origin+location.pathname)}resolveResourceURL(e){const n=new URL(this.getBaseHref());return n.pathname+="/"+new URL(e).pathname,n.pathname.replace(/\/+/g,"/"),n.toString()}isServiceURL(e){return e.startsWith(this.options.ingestPoint)}active(){return this.activityState===Z.Active}resetNextPageSession(e){e?this.sessionStorage.setItem(this.options.session_reset_key,"t"):this.sessionStorage.removeItem(this.options.session_reset_key)}checkSessionToken(e){const n=this.sessionStorage.getItem(this.options.session_reset_key)!==null,s=e||n,i=this.session.getSessionToken();return s||!i}async coldStart(e={},n){this.singleBuffer=!1;const s=1e3,i=this.checkSessionToken(e.forceNew);n&&await this.setupConditionalStart(e);const r=()=>{this.orderNumber+=1,qt(),this.coldStartTs=pe(),this.orderNumber%2===0?(this.bufferedMessages1.length=0,this.bufferedMessages1.push(Ae(this.timestamp())),this.bufferedMessages1.push(De(this.session.getTabId()))):(this.bufferedMessages2.length=0,this.bufferedMessages2.push(Ae(this.timestamp())),this.bufferedMessages2.push(De(this.session.getTabId()))),this.stop(!1),this.activityState=Z.ColdStart,e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata}),i||(this.debug.log("continuing session on new tab",this.session.getTabId()),this.send(bt(this.session.getTabId()))),this.observer.observe(),this.ticker.start()};this.coldInterval=setInterval(()=>{r()},30*s),r()}async setupConditionalStart(e){var p,v;this.conditionsManager=new Qi(this,e);const n=await fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:pe(),doNotRecord:!0,bufferDiff:0,userID:this.session.getInfo().userID,token:void 0,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:hn(),width:window.screen.width,height:window.screen.height})}),{token:s,userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:d,projectID:c}=await n.json();this.session.assign({projectID:c}),this.session.setUserInfo({userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:d});const u={sessionToken:s,userUUID:"",sessionID:""};this.startCallbacks.forEach(S=>S(u)),await((p=this.conditionsManager)==null?void 0:p.fetchConditions(c,s)),await this.featureFlags.reloadFlags(s),await this.tagWatcher.fetchTags(this.options.ingestPoint,s),(v=this.conditionsManager)==null||v.processFlags(this.featureFlags.flags)}offlineRecording(e={},n){this.onSessionSent=n,this.singleBuffer=!0;const s=this.checkSessionToken(e.forceNew);qt(),this.coldStartTs=pe();const i=this.localStorage.getItem(dn);if(i){const o=JSON.parse(i);this.bufferedMessages1=Array.isArray(o)?o:this.bufferedMessages1,this.localStorage.removeItem(dn)}this.bufferedMessages1.push(Ae(this.timestamp())),this.bufferedMessages1.push(De(this.session.getTabId())),this.activityState=Z.ColdStart,e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata});const r={sessionToken:"",userUUID:"",sessionID:""};return this.startCallbacks.forEach(o=>o(r)),s||this.send(bt(this.session.getTabId())),this.observer.observe(),this.ticker.start(),{saveBuffer:this.saveBuffer,getBuffer:this.getBuffer,setBuffer:this.setBuffer}}saveBuffer(){this.localStorage.setItem(dn,JSON.stringify(this.bufferedMessages1))}getBuffer(){return this.bufferedMessages1}setBuffer(e){this.bufferedMessages1=e}async uploadOfflineRecording(){var p,v;this.stop(!1);const e=pe();(p=this.worker)==null||p.postMessage({type:"start",pageNo:this.session.incPageNo(),ingestPoint:this.options.ingestPoint,timestamp:this.coldStartTs,url:document.URL,connAttemptCount:this.options.connAttemptCount,connAttemptGap:this.options.connAttemptGap,tabId:this.session.getTabId()});const n=await fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:e,doNotRecord:!1,bufferDiff:e-this.coldStartTs,userID:this.session.getInfo().userID,token:void 0,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:hn()})}),{token:s,userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:d,beaconSizeLimit:c,projectID:u}=await n.json();for((v=this.worker)==null||v.postMessage({type:"auth",token:s,beaconSizeLimit:c}),this.session.assign({projectID:u}),this.session.setUserInfo({userBrowser:i,userCity:r,userCountry:o,userDevice:l,userOS:a,userState:d});this.bufferedMessages1.length>0;)await this.flushBuffer(this.bufferedMessages1);this.postToWorker([["q_end"]]),this.clearBuffers()}async _start(e={},n=!1,s){const i=this.activityState===Z.ColdStart;if(i&&this.coldInterval&&clearInterval(this.coldInterval),!this.worker){const a="No worker found: perhaps, CSP is not set.";return this.signalError(a,[]),Promise.resolve(_e(a))}if(this.activityState===Z.Active||this.activityState===Z.Starting)return Promise.resolve(_e("OpenReplay: trying to call `start()` on the instance that has been started already."));this.activityState=Z.Starting,i||qt(),e.sessionHash&&this.session.applySessionHash(e.sessionHash),e.forceNew&&this.session.reset(),this.session.assign({userID:e.userID,metadata:e.metadata});const r=pe();this.worker.postMessage({type:"start",pageNo:this.session.incPageNo(),ingestPoint:this.options.ingestPoint,timestamp:i?this.coldStartTs:r,url:document.URL,connAttemptCount:this.options.connAttemptCount,connAttemptGap:this.options.connAttemptGap,tabId:this.session.getTabId()});const o=this.session.getSessionToken(),l=this.checkSessionToken(e.forceNew);this.sessionStorage.removeItem(this.options.session_reset_key),this.debug.log("OpenReplay: starting session; need new session id?",l,"session token: ",o);try{const a=await window.fetch(this.options.ingestPoint+"/v1/web/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...this.getTrackerInfo(),timestamp:r,doNotRecord:!1,bufferDiff:r-this.coldStartTs,userID:this.session.getInfo().userID,token:l?void 0:o,deviceMemory:Zt,jsHeapSizeLimit:en,timezone:hn(),condition:s,assistOnly:e.assistOnly??this.socketMode,width:window.screen.width,height:window.screen.height})});if(a.status!==200){const C=await a.text(),F=C===Ye?Ye:`Server error: ${a.status}. ${C}`;return _e(F)}if(!this.worker){const C="no worker found after start request (this should not happen in real world)";return this.signalError(C,[]),_e(C)}const{token:d,userUUID:c,projectID:u,beaconSizeLimit:p,compressionThreshold:v,delay:S,sessionID:y,startTimestamp:T,userBrowser:A,userCity:B,userCountry:D,userDevice:k,userOS:N,userState:O,canvasEnabled:L,canvasQuality:I,canvasFPS:E,assistOnly:P}=await a.json();if(typeof d!="string"||typeof c!="string"||typeof T!="number"&&typeof T<"u"||typeof y!="string"||typeof S!="number"||typeof p!="number"&&typeof p<"u"){const C=`Incorrect server response: ${JSON.stringify(a)}`;return this.signalError(C,[]),_e(C)}this.delay=S,this.session.setSessionToken(d),this.session.setUserInfo({userBrowser:A,userCity:B,userCountry:D,userDevice:k,userOS:N,userState:O}),this.session.assign({sessionID:y,timestamp:T||r,projectID:u}),P?(this.socketMode=!0,this.worker.postMessage("stop")):this.worker.postMessage({type:"auth",token:d,beaconSizeLimit:p}),!l&&d===o&&(this.debug.log("continuing session on new tab",this.session.getTabId()),this.send(bt(this.session.getTabId()))),Object.entries(this.session.getInfo().metadata).forEach(([C,F])=>this.send(ks(C,F))),this.localStorage.setItem(this.options.local_uuid_key,c),this.compressionThreshold=v;const V={sessionToken:d,userUUID:c,sessionID:y};if(this.startCallbacks.forEach(C=>C(V)),this.featureFlags.reloadFlags(),await this.tagWatcher.fetchTags(this.options.ingestPoint,d),this.activityState=Z.Active,L&&!this.options.canvas.disableCanvas&&(this.canvasRecorder=this.canvasRecorder??new po(this,{fps:E,quality:I,isDebug:this.options.canvas.__save_canvas_locally,fixedScaling:this.options.canvas.fixedCanvasScaling,useAnimationFrame:this.options.canvas.useAnimationFrame}),this.canvasRecorder.startTracking()),i){const C=this.bufferedMessages1.length>this.bufferedMessages2.length?this.bufferedMessages1:this.bufferedMessages2;for(;C.length>0;)await this.flushBuffer(C);this.clearBuffers(),this.commit()}else this.insideIframe&&this.rootId?this.observer.crossdomainObserve(this.rootId,this.frameOderNumber):this.observer.observe(),this.ticker.start();this.uxtManager=this.uxtManager?this.uxtManager:new uo(this,qs);let j;const q=this.localStorage.getItem(qs);if(q&&(j=parseInt(q,10)),location!=null&&location.search){const C=new URLSearchParams(location.search);if(C.has("oruxt")){const F=C.get("oruxt");j=F?parseInt(F,10):void 0}}return j&&(this.uxtManager.isActive?this.onUxtCb.forEach(C=>C(j)):this.uxtManager.getTest(j,d,!!q).then(C=>{C&&this.onUxtCb.forEach(F=>F(C))})),Co(V)}catch(a){if(this.stop(),this.session.reset(),a===Ye)return this.signalError(Ye,[]),_e(Ye);this._debug("session_start",a);const d=a instanceof Error?a.message:a.toString();return this.signalError(d,[]),_e(d)}}addOnUxtCb(e){this.onUxtCb.push(e)}getUxtId(){var e;return(e=this.uxtManager)==null?void 0:e.getTestId()}async waitStart(){return new Promise(e=>{const n=()=>{this.canStart?e(!0):setTimeout(n,25)};n()})}async waitStarted(){return new Promise(e=>{const n=()=>{this.activityState===Z.Active?e(!0):setTimeout(n,25)};n()})}async start(...e){return this.activityState===Z.Active||this.activityState===Z.Starting?Promise.resolve(_e("OpenReplay: trying to call `start()` on the instance that has been started already.")):document.hidden?new Promise(n=>{const s=async()=>{document.hidden||(await this.waitStart(),document.removeEventListener("visibilitychange",s),n(this._start(...e)))};document.addEventListener("visibilitychange",s)}):(await this.waitStart(),this._start(...e))}forceFlushBatch(){var e;(e=this.worker)==null||e.postMessage("forceFlushBatch")}getTabId(){return this.session.getTabId()}clearBuffers(){this.bufferedMessages1.length=0,this.bufferedMessages2.length=0}trackWs(e){const n=e;return(s,i,r="down")=>{typeof s!="string"||typeof i!="string"||i.length>5*1024*1024||s.length>255||this.send(Fr("websocket",n,i,this.timestamp(),r,s))}}stop(e=!0){var n;if(this.activityState!==Z.NotActive)try{this.attributeSender.clear(),this.sanitizer.clear(),this.observer.disconnect(),this.nodes.clear(),this.ticker.stop(),this.stopCallbacks.forEach(s=>s()),this.debug.log("OpenReplay tracking stopped."),this.tagWatcher.clear(),this.worker&&e&&this.worker.postMessage("stop"),(n=this.canvasRecorder)==null||n.clear()}finally{this.activityState=Z.NotActive}}};function Oo(t){const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(e===void 0)return;const n=()=>t.send(_r(Math.round(e.downlink*1e3),e.type||"unknown"));n(),e.addEventListener("change",n)}const Gs=be&&"InstallTrigger"in window?t=>t.message+`
657
+ `+t.stack:t=>t.stack||t.message;function un(t){return t===void 0?"undefined":t===null?"null":t instanceof Error?Gs(t):Array.isArray(t)?`Array(${t.length})`:String(t)}function Ro(t){return typeof t!="number"?"NaN":t.toString()}function Ao(t){return typeof t!="number"?"NaN":Math.floor(t).toString()}function Vs(t){if(t===void 0)return"undefined";if(t===null)return"null";if(t instanceof Error)return Gs(t);if(Array.isArray(t)){const e=t.length,n=t.slice(0,10).map(un).join(", ");return`Array(${e})[${n}]`}if(typeof t=="object"){const e=[];let n=0;for(const s in t){if(++n===10)break;const i=t[s];e.push(s+": "+un(i))}return"{"+e.join(", ")+"}"}return t.toString()}function Do(t){return typeof t[0]=="string"&&t.unshift(t.shift().replace(/%(o|s|f|d|i)/g,(e,n)=>{const s=t.shift();if(s===void 0)return e;switch(n){case"o":return Vs(s);case"s":return un(s);case"f":return Ro(s);case"d":case"i":return Ao(s);default:return e}})),t.map(Vs).join(" ")}const Ks=["log","info","warn","error","debug","assert"];function Lo(t,e){const n=Object.assign({consoleMethods:Ks,consoleThrottling:30},e);if(!Array.isArray(n.consoleMethods)||n.consoleMethods.length===0)return;const s=t.safe((a,d)=>t.send(Sr(a,Do(d))));let i=0;const r=()=>{i=0};t.attachStartCallback(r),t.ticker.attach(r,33,!1);const o=(a,d)=>{const c={apply:function(u,p,v){Reflect.apply(u,d,v),i=i+1,!(i>n.consoleThrottling)&&s(u.name,v)}};n.consoleMethods.forEach(u=>{if(Ks.indexOf(u)===-1){t.debug.error(`OpenReplay: unsupported console method "${u}"`);return}const p=d.console[u];a[u]=new Proxy(p,c)})},l=t.safe(a=>o(a.console,a));l(window),t.observer.attachContextCallback(l)}var Xs={exports:{}},fn={exports:{}},Js;function Fo(){return Js||(Js=1,function(t,e){(function(n,s){t.exports=s()})(Fe,function(){function n(y){return!isNaN(parseFloat(y))&&isFinite(y)}function s(y){return y.charAt(0).toUpperCase()+y.substring(1)}function i(y){return function(){return this[y]}}var r=["isConstructor","isEval","isNative","isToplevel"],o=["columnNumber","lineNumber"],l=["fileName","functionName","source"],a=["args"],d=["evalOrigin"],c=r.concat(o,l,a,d);function u(y){if(y)for(var T=0;T<c.length;T++)y[c[T]]!==void 0&&this["set"+s(c[T])](y[c[T]])}u.prototype={getArgs:function(){return this.args},setArgs:function(y){if(Object.prototype.toString.call(y)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=y},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(y){if(y instanceof u)this.evalOrigin=y;else if(y instanceof Object)this.evalOrigin=new u(y);else throw new TypeError("Eval Origin must be an Object or StackFrame")},toString:function(){var y=this.getFileName()||"",T=this.getLineNumber()||"",A=this.getColumnNumber()||"",B=this.getFunctionName()||"";return this.getIsEval()?y?"[eval] ("+y+":"+T+":"+A+")":"[eval]:"+T+":"+A:B?B+" ("+y+":"+T+":"+A+")":y+":"+T+":"+A}},u.fromString=function(T){var A=T.indexOf("("),B=T.lastIndexOf(")"),D=T.substring(0,A),k=T.substring(A+1,B).split(","),N=T.substring(B+1);if(N.indexOf("@")===0)var O=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(N,""),L=O[1],I=O[2],E=O[3];return new u({functionName:D,args:k||void 0,fileName:L,lineNumber:I||void 0,columnNumber:E||void 0})};for(var p=0;p<r.length;p++)u.prototype["get"+s(r[p])]=i(r[p]),u.prototype["set"+s(r[p])]=function(y){return function(T){this[y]=!!T}}(r[p]);for(var v=0;v<o.length;v++)u.prototype["get"+s(o[v])]=i(o[v]),u.prototype["set"+s(o[v])]=function(y){return function(T){if(!n(T))throw new TypeError(y+" must be a Number");this[y]=Number(T)}}(o[v]);for(var S=0;S<l.length;S++)u.prototype["get"+s(l[S])]=i(l[S]),u.prototype["set"+s(l[S])]=function(y){return function(T){this[y]=String(T)}}(l[S]);return u})}(fn)),fn.exports}(function(t,e){(function(n,s){t.exports=s(Fo())})(Fe,function(s){var i=/(^|@)\S+:\d+/,r=/^\s*at .*(\S+:\d+|\(native\))/m,o=/^(eval@)?(\[native code])?$/;return{parse:function(a){if(typeof a.stacktrace<"u"||typeof a["opera#sourceloc"]<"u")return this.parseOpera(a);if(a.stack&&a.stack.match(r))return this.parseV8OrIE(a);if(a.stack)return this.parseFFOrSafari(a);throw new Error("Cannot parse given Error object")},extractLocation:function(a){if(a.indexOf(":")===-1)return[a];var d=/(.+?)(?::(\d+))?(?::(\d+))?$/,c=d.exec(a.replace(/[()]/g,""));return[c[1],c[2]||void 0,c[3]||void 0]},parseV8OrIE:function(a){var d=a.stack.split(`
658
+ `).filter(function(c){return!!c.match(r)},this);return d.map(function(c){c.indexOf("(eval ")>-1&&(c=c.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var u=c.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),p=u.match(/ (\(.+\)$)/);u=p?u.replace(p[0],""):u;var v=this.extractLocation(p?p[1]:u),S=p&&u||void 0,y=["eval","<anonymous>"].indexOf(v[0])>-1?void 0:v[0];return new s({functionName:S,fileName:y,lineNumber:v[1],columnNumber:v[2],source:c})},this)},parseFFOrSafari:function(a){var d=a.stack.split(`
659
+ `).filter(function(c){return!c.match(o)},this);return d.map(function(c){if(c.indexOf(" > eval")>-1&&(c=c.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),c.indexOf("@")===-1&&c.indexOf(":")===-1)return new s({functionName:c});var u=/((.*".+"[^@]*)?[^@]*)(?:@)/,p=c.match(u),v=p&&p[1]?p[1]:void 0,S=this.extractLocation(c.replace(u,""));return new s({functionName:v,fileName:S[0],lineNumber:S[1],columnNumber:S[2],source:c})},this)},parseOpera:function(a){return!a.stacktrace||a.message.indexOf(`
656
660
  `)>-1&&a.message.split(`
657
661
  `).length>a.stacktrace.split(`
658
- `).length?this.parseOpera9(a):a.stack?this.parseOpera11(a):this.parseOpera10(a)},parseOpera9:function(a){for(var h=/Line (\d+).*script (?:in )?(\S+)/i,c=a.message.split(`
659
- `),u=[],p=2,y=c.length;p<y;p+=2){var S=h.exec(c[p]);S&&u.push(new s({fileName:S[2],lineNumber:S[1],source:c[p]}))}return u},parseOpera10:function(a){for(var h=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,c=a.stacktrace.split(`
660
- `),u=[],p=0,y=c.length;p<y;p+=2){var S=h.exec(c[p]);S&&u.push(new s({functionName:S[3]||void 0,fileName:S[2],lineNumber:S[1],source:c[p]}))}return u},parseOpera11:function(a){var h=a.stack.split(`
661
- `).filter(function(c){return!!c.match(i)&&!c.match(/^Error created at/)},this);return h.map(function(c){var u=c.split("@"),p=this.extractLocation(u.pop()),y=u.shift()||"",S=y.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0,v;y.match(/\(([^)]*)\)/)&&(v=y.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var E=v===void 0||v==="[arguments not available]"?void 0:v.split(",");return new s({functionName:S,args:E,fileName:p[0],lineNumber:p[1],columnNumber:p[2],source:c})},this)}}})})(Ks);var Do=Ks.exports;const Lo=Gn(Do);function Xs(t){return[{columnNumber:t.colno,lineNumber:t.lineno,fileName:t.filename,functionName:"",source:""}]}function kt(t,e,n={}){let s=e;try{s=Lo.parse(t)}catch{}return Yt(t.name,t.message,JSON.stringify(s),JSON.stringify(n))}function Ys(t,e=window,n={}){if(t instanceof ErrorEvent){if(t.error instanceof Error)return kt(t.error,Xs(t),n);{let[s,i]=t.message.split(":");return i||(s="Error",i=t.message),Yt(s,i,JSON.stringify(Xs(t)),JSON.stringify(n))}}else if("PromiseRejectionEvent"in e&&t instanceof e.PromiseRejectionEvent){if(t.reason instanceof Error)return kt(t.reason,[],n);{let s;try{s=JSON.stringify(t.reason)}catch{s=String(t.reason)}return Yt("Unhandled Promise Rejection",s,"[]",JSON.stringify(n))}}return null}function Mo(t,e){const n=Object.assign({captureExceptions:!0},e);function s(i){function r(o){const l=Ys(o,i);l!=null&&t.send(l)}t.attachEventListener(i,"unhandledrejection",r),t.attachEventListener(i,"error",r)}n.captureExceptions&&(t.observer.attachContextCallback(s),s(window))}function Qs(t,e=document.location){return t=t.trim(),t.startsWith("//")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")?t:t.startsWith("/")?e.origin+t:e.origin+e.pathname+t}function Bo(t){return Zi&&(t.startsWith("data:image/svg+xml")||t.match(/.svg$|/i))}const Po="https://static.openreplay.com/tracker/placeholder.jpeg";function jo(t){function e(l,a){t.attributeSender.sendSetAttribute(l,"src",Po);const{width:h,height:c}=a.getBoundingClientRect();a.hasAttribute("width")||t.attributeSender.sendSetAttribute(l,"width",String(h)),a.hasAttribute("height")||t.attributeSender.sendSetAttribute(l,"height",String(c))}const n=function(l,a){const{srcset:h}=a;if(!h)return;const c=h.split(h.match(/,\s+/)?/,\s+/:",").map(u=>Qs(u)).join(", ");t.attributeSender.sendSetAttribute(l,"srcset",c)},s=function(l,a){a.src.length>er&&e(l,a),t.send(Kt(l,"src",a.src,t.getBaseHref()))},i=t.safe(function(l){const a=Qs(l.src||"");ps(a)&&t.send(Ns(t.timestamp(),0,0,0,0,0,a,"img",0,!1))}),r=t.safe(function(l){const a=t.nodes.getID(l);a!==void 0&&l.complete&&(l.naturalHeight===0&&l.naturalWidth===0&&!Bo(l.src)?i(l):t.sanitizer.isHidden(a)||t.sanitizer.isObscured(a)?e(a,l):(s(a,l),n(a,l)))}),o=bs(t.safe(l=>{for(const a of l)if(a.type==="attributes"){const h=a.target,c=t.nodes.getID(h);if(c===void 0)return;a.attributeName==="src"&&s(c,h),a.attributeName==="srcset"&&n(c,h)}}));t.attachStopCallback(()=>{o.disconnect()}),t.nodes.attachNodeCallback(l=>{Q(l,"img")&&(t.nodes.attachNodeListener(l,"error",()=>i(l)),t.nodes.attachNodeListener(l,"load",()=>r(l)),r(l),o.observe(l,{attributes:!0,attributeFilter:["src","srcset"]}))})}const zo=["text","password","email","search","number","range","date","tel","time"];function Uo(t){return Q(t,"textarea")?!0:Q(t,"input")?zo.includes(t.type):!1}function Ho(t){if(!Q(t,"input"))return!1;const e=t.type;return e==="checkbox"||e==="radio"}const $o=be&&"labels"in HTMLInputElement.prototype?t=>{let e=t;for(;(e=e.parentNode)!==null;)if(Q(e,"label"))return e;const n=t.labels;if(n!==null&&n.length===1)return n[0]}:t=>{let e=t;for(;(e=e.parentNode)!==null;)if(Q(e,"label"))return e;const n=t.id;if(n){const s=t.ownerDocument.querySelectorAll('label[for="'+n+'"]');if(s!==null&&s.length===1)return s[0]}};function Zs(t){let e=Vt(t);if(e===null){const n=$o(t);e=n&&n.innerText||t.placeholder||t.name||t.id||t.className||t.type}return fs(e).slice(0,100)}const $e={Plain:0,Obscured:1,Hidden:2};function Wo(t,e){const n=Object.assign({obscureInputNumbers:!0,obscureInputEmails:!0,defaultInputMode:$e.Obscured,obscureInputDates:!1},e);function s(c,u){let p=u.value,y=n.defaultInputMode;u.type==="password"||t.sanitizer.isHidden(c)?y=$e.Hidden:(t.sanitizer.isObscured(c)||y===$e.Plain&&(n.obscureInputNumbers&&u.type!=="date"&&/\d\d\d\d/.test(p)||n.obscureInputDates&&u.type==="date"||n.obscureInputEmails&&(u.type==="email"||~p.indexOf("@"))))&&(y=$e.Obscured);let S=0;switch(y){case $e.Hidden:S=-1,p="";break;case $e.Obscured:S=p.length,p="";break}return{value:p,mask:S}}function i(c,u){const{value:p,mask:y}=s(c,u);t.send(mr(c,p,y))}const r=new Map,o=new Map;t.attachStopCallback(()=>{r.clear(),o.clear()});function l(c,u){r.get(c)!==u.value&&(r.set(c,u.value),i(c,u))}function a(c,u){o.get(c)!==u&&(o.set(c,u),t.send(br(c,u)))}t.ticker.attach(()=>{r.forEach((c,u)=>{const p=t.nodes.getNode(u);if(!p)return r.delete(u);l(u,p)}),o.forEach((c,u)=>{const p=t.nodes.getNode(u);if(!p)return o.delete(u);a(u,p.checked)})},3);function h(c,u,p,y){const{value:S,mask:v}=s(c,u),E=Zs(u);t.send(Dr(c,S,v!==0,E,p,y))}t.nodes.attachNodeCallback(t.safe(c=>{const u=t.nodes.getID(c);if(u!==void 0){if(Q(c,"select")&&(i(u,c),t.nodes.attachNodeListener(c,"change",()=>i(u,c))),Uo(c)){l(u,c);let p=0,y=0,S=0;const v=()=>{p=pe()},E=()=>{y===0&&p!==0&&(y=pe()-p)},F=()=>{p!==0&&(S=pe()-p),h(u,c,y,S),y=0,S=0,p=0};t.nodes.attachNodeListener(c,"focus",v),t.nodes.attachNodeListener(c,"input",E),t.nodes.attachNodeListener(c,"change",F);return}if(Ho(c)){a(u,c.checked),t.nodes.attachNodeListener(c,"change",()=>a(u,c.checked));return}}}))}let he,pn,ei;function qo(t,e){if(ei=new Date,t.nodeType!==Node.ELEMENT_NODE)throw new Error("Can't generate CSS selector for non-element node type.");if(t.tagName.toLowerCase()==="html")return"html";const n={root:document.body,idName:i=>!0,className:i=>!0,tagName:i=>!0,attr:(i,r)=>!1,seedMinLength:1,optimizedMinLength:2,threshold:1e3,maxNumberOfTries:1e4,timeoutMs:void 0};he={...n,...e},pn=Vo(he.root,n);let s=Et(t,"all",()=>Et(t,"two",()=>Et(t,"one",()=>Et(t,"none"))));if(s){const i=oi(ai(s,t));return i.length>0&&(s=i[0]),Tt(s)}else throw new Error("Selector was not found.")}function Vo(t,e){return t.nodeType===Node.DOCUMENT_NODE?t:t===e.root?t.ownerDocument:t}function Et(t,e,n){let s=null,i=[],r=t,o=0;for(;r;){const l=new Date().getTime()-ei.getTime();if(he.timeoutMs!==void 0&&l>he.timeoutMs)throw new Error(`Timeout: Can't find a unique selector after ${l}ms`);let a=Ct(Go(r))||Ct(...Ko(r))||Ct(...Jo(r))||Ct(Xo(r))||[ii()];const h=Yo(r);if(e=="all")h&&(a=a.concat(a.filter(gn).map(c=>It(c,h))));else if(e=="two")a=a.slice(0,1),h&&(a=a.concat(a.filter(gn).map(c=>It(c,h))));else if(e=="one"){const[c]=a=a.slice(0,1);h&&gn(c)&&(a=[It(c,h)])}else e=="none"&&(a=[ii()],h&&(a=[It(a[0],h)]));for(let c of a)c.level=o;if(i.push(a),i.length>=he.seedMinLength&&(s=ti(i,n),s))break;r=r.parentElement,o++}return s||(s=ti(i,n)),!s&&n?n():s}function ti(t,e){const n=oi(ri(t));if(n.length>he.threshold)return e?e():null;for(let s of n)if(si(s))return s;return null}function Tt(t){let e=t[0],n=e.name;for(let s=1;s<t.length;s++){const i=t[s].level||0;e.level===i-1?n=`${t[s].name} > ${n}`:n=`${t[s].name} ${n}`,e=t[s]}return n}function ni(t){return t.map(e=>e.penalty).reduce((e,n)=>e+n,0)}function si(t){const e=Tt(t);switch(pn.querySelectorAll(e).length){case 0:throw new Error(`Can't select any node with this selector: ${e}`);case 1:return!0;default:return!1}}function Go(t){const e=t.getAttribute("id");return e&&he.idName(e)?{name:"#"+CSS.escape(e),penalty:0}:null}function Ko(t){return Array.from(t.attributes).filter(n=>he.attr(n.name,n.value)).map(n=>({name:`[${CSS.escape(n.name)}="${CSS.escape(n.value)}"]`,penalty:.5}))}function Jo(t){return Array.from(t.classList).filter(he.className).map(n=>({name:"."+CSS.escape(n),penalty:1}))}function Xo(t){const e=t.tagName.toLowerCase();return he.tagName(e)?{name:e,penalty:2}:null}function ii(){return{name:"*",penalty:3}}function Yo(t){const e=t.parentNode;if(!e)return null;let n=e.firstChild;if(!n)return null;let s=0;for(;n&&(n.nodeType===Node.ELEMENT_NODE&&s++,n!==t);)n=n.nextSibling;return s}function It(t,e){return{name:t.name+`:nth-child(${e})`,penalty:t.penalty+1}}function gn(t){return t.name!=="html"&&!t.name.startsWith("#")}function Ct(...t){const e=t.filter(Qo);return e.length>0?e:null}function Qo(t){return t!=null}function*ri(t,e=[]){if(t.length>0)for(let n of t[0])yield*ri(t.slice(1,t.length),e.concat(n));else yield e}function oi(t){return[...t].sort((e,n)=>ni(e)-ni(n))}function*ai(t,e,n={counter:0,visited:new Map}){if(t.length>2&&t.length>he.optimizedMinLength)for(let s=1;s<t.length-1;s++){if(n.counter>he.maxNumberOfTries)return;n.counter+=1;const i=[...t];i.splice(s,1);const r=Tt(i);if(n.visited.has(r))return;si(i)&&Zo(i,e)&&(yield i,n.visited.set(r,!0),yield*ai(i,e,n))}}function Zo(t,e){return pn.querySelector(Tt(t))===e}function ea(t,e,n){return qo(t,{root:e.body,seedMinLength:3,optimizedMinLength:(n==null?void 0:n.minSelectorDepth)||2,threshold:(n==null?void 0:n.nthThreshold)||1e3,maxNumberOfTries:(n==null?void 0:n.maxOptimiseTries)||1e4})}function mn(t){const e=t.tagName.toUpperCase();return e==="BUTTON"||e==="A"||e==="LI"||e==="SELECT"||e==="TR"||e==="TH"||t.onclick!=null||t.getAttribute("role")==="button"}function ci(t,e){return t instanceof Element?ta(t,e):null}function ta(t,e){let n=t;for(;n!==null&&n!==e.documentElement;){if(Re(n,"masked"))return null;n=n.parentElement}if(sn(t)){let s=t.ownerSVGElement;for(;s!==null;)t=s,s=s.ownerSVGElement}for(n=t;n!==null&&n!==e.documentElement;){const s=n.tagName.toUpperCase();if(s==="LABEL")return null;if(s==="INPUT"||mn(n)||Vt(n)!==null)return n;n=n.parentElement}return t===e.documentElement?null:t}function na(t,e){const{disableClickmaps:n=!1}=e||{};function s(k){const N=Vt(k);if(N!==null)return N;if(Q(k,"input"))return Zs(k);if(mn(k)){let O="";return k instanceof HTMLElement&&(O=t.sanitizer.getInnerTextSecure(k)),O=O||k.id||k.className,fs(O).slice(0,100)}return""}let i=-1,r=-1,o=!1,l=null,a=0,h={},c=0,u=0,p=0,y=0,S;const v=.008,E=225;function F(){const k=y/E;if(!c){c=k;return}const N=(k-c)/E;p>4&&N>v&&t.send(Lr(pe())),y=0,p=0,c=k}t.attachStartCallback(()=>{S=setInterval(()=>F(),E)}),t.attachStopCallback(()=>{i=-1,r=-1,o=!1,l=null,h={},S&&clearInterval(S)});const P=()=>{o&&(t.send(yr(i,r)),o=!1)},A=(k,N=!1)=>{function O(I,T,B){return h[I]=h[I]||ea(T,k,B)}const D=N?t.attachEventListener.bind(t):t.nodes.attachNodeListener.bind(t.nodes);D(k.documentElement,"mouseover",I=>{const T=ci(I.target,k);T!==l&&(l=T,a=performance.now())}),D(k,"mousemove",I=>{const[T,B]=t.observer.getDocumentOffset(k);i=I.clientX+T,r=I.clientY+B,o=!0;const G=Math.sign(I.movementX);y+=Math.abs(I.movementX)+Math.abs(I.movementY),G!==u&&(u=G,p++)},!1),D(k,"click",I=>{const T=ci(I.target,k);if(!I.clientX&&!I.clientY||T===null)return;const B=t.nodes.getID(T);if(B!==void 0){const G=I.pageX,j=I.pageY,$=k.documentElement.scrollWidth,C=k.documentElement.scrollHeight,L=li(G/$),V=li(j/C);P(),t.send(Rr(B,l===T?Math.round(performance.now()-a):0,s(T),mn(T)&&!n?O(B,T,e):"",L,V),!0)}l=null})};t.nodes.attachNodeCallback(k=>{wt(k)&&A(k)}),A(document,!0),t.ticker.attach(P,(e==null?void 0:e.trackingOffset)||7)}function li(t){return Math.round(t*1e4)}function sa(t){const e=[],n=document.getElementsByTagName("*"),s=/url\(("[^"]*"|'[^']*'|[^)]*)\)/i;for(let i=0;i<n.length;i++){const r=n[i];let o="";if(Q(r,"img")&&(o=r.currentSrc||r.src),!o){const S=getComputedStyle(r).getPropertyValue("background-image");if(S){const v=s.exec(S);v!==null&&(o=v[1],(o.startsWith('"')||o.startsWith("'"))&&(o=o.substr(1,o.length-2)))}}if(!o)continue;const l=o.substr(0,10)==="data:image"?0:t[o];if(l===void 0)continue;const a=r.getBoundingClientRect(),h=Math.max(a.top,0),c=Math.max(a.left,0),u=Math.min(a.bottom,window.innerHeight||document.documentElement&&document.documentElement.clientHeight||0),p=Math.min(a.right,window.innerWidth||document.documentElement&&document.documentElement.clientWidth||0);if(u<=h||p<=c)continue;const y=(u-h)*(p-c);e.push({time:l,area:y})}return e}function ia(t,e){let n=Math.max(document.documentElement&&document.documentElement.clientWidth||0,window.innerWidth||0)*Math.max(document.documentElement&&document.documentElement.clientHeight||0,window.innerHeight||0)/10,s=n*t;for(let i=0;i<e.length;i++){const{time:r,area:o}=e[i];n+=o,s+=o*(r>t?r:t)}return n===0?0:s/n}function ra(t,e){const n=Object.assign({captureResourceTimings:!0,capturePageLoadTimings:!0,capturePageRenderTimings:!0,excludedResourceUrls:[]},e);if("PerformanceObserver"in window||(n.captureResourceTimings=!1),!n.captureResourceTimings)return;let s={};function i(h){var u;if(h.duration<0||!ps(h.name)||t.isServiceURL(h.name))return;s!==null&&(s[h.name]=h.startTime+h.duration);let c=!1;(u=n.excludedResourceUrls)==null||u.forEach(p=>{if(h.name.startsWith(p)){c=!0;return}}),!c&&t.send(Ns(h.startTime+ze(),h.duration,h.responseStart&&h.startTime?h.responseStart-h.startTime:0,h.transferSize>h.encodedBodySize?h.transferSize-h.encodedBodySize:0,h.encodedBodySize||0,h.decodedBodySize||0,h.name,h.initiatorType,h.transferSize,h.responseStatus&&h.responseStatus===304||h.transferSize===0))}const r=new PerformanceObserver(h=>h.getEntries().forEach(i));let o;t.attachStartCallback(function({sessionID:h}){h!==o&&(performance.getEntriesByType("resource").forEach(i),o=h),r.observe({entryTypes:["resource"]})}),t.attachStopCallback(function(){r.disconnect()});let l=0,a=0;if(n.capturePageLoadTimings){let h=!1;t.ticker.attach(()=>{if(!h&&((l===0||a===0)&&performance.getEntriesByType("paint").forEach(c=>{const{name:u,startTime:p}=c;switch(u){case"first-paint":l=p;break;case"first-contentful-paint":a=p;break}}),performance.timing.loadEventEnd||performance.now()>3e4)){h=!0;const{navigationStart:c,requestStart:u,responseStart:p,responseEnd:y,domContentLoadedEventStart:S,domContentLoadedEventEnd:v,loadEventStart:E,loadEventEnd:F}=performance.timing;t.send(wr(u-c||0,p-c||0,y-c||0,S-c||0,v-c||0,E-c||0,F-c||0,l,a))}},30)}if(n.capturePageRenderTimings){let h=0,c=0,u=0,p=null,y=!1;t.ticker.attach(()=>{if(y)return;const S=performance.now();if(s!==null&&(h=Math.max.apply(null,Object.keys(s).map(v=>s[v])),S-h>1e3&&(p=sa(s),s=null)),u!==null&&(S-u>50&&(c=S),u=S-c>5e3?null:S),p!==null&&u===null||S>3e4){y=!0,s=null;const v=p===null?0:ia(a||l,p),{domContentLoadedEventEnd:E,navigationStart:F}=performance.timing,P=u===null?Math.max(c,a,E-F||0):0;t.send(Sr(v,a>h?a:h,P))}})}}function bn(t){const e=t.defaultView;return[e&&e.scrollX||t.documentElement&&t.documentElement.scrollLeft||t.body&&t.body.scrollLeft||0,e&&e.scrollY||t.documentElement&&t.documentElement.scrollTop||t.body&&t.body.scrollTop||0]}function oa(t,e){let n=!1;const s=new Map;function i(l){zs(l)&&(ke(l)&&s.set(l,[l.scrollLeft,l.scrollTop]),wt(l)&&s.set(l,bn(l)))}const r=t.safe(()=>{e||t.send(cr(...bn(document)))}),o=t.safe((l,a)=>{const h=t.nodes.getID(a);h!==void 0&&t.send(gr(h,l[0],l[1]))});t.attachStartCallback(r),t.attachStopCallback(()=>{n=!1,s.clear()}),t.nodes.attachNodeCallback((l,a)=>{a&&(ke(l)&&l.scrollLeft+l.scrollTop>0?s.set(l,[l.scrollLeft,l.scrollTop]):wt(l)&&s.set(l,bn(l))),St(l)&&t.nodes.attachNodeListener(l,"scroll",h=>{i(h.target)})}),t.attachEventListener(document,"scroll",l=>{const a=l.target;if(a===document){n=!0;return}i(a)}),t.ticker.attach(()=>{n&&(r(),n=!1),s.forEach(o),s.clear()},5,!1)}function aa(t){let e,n,s,i,r=document.referrer;const o=t.safe(()=>{const{URL:h}=document;h!==e&&(e=h,t.send(jr(e,r,i,document.title)),i=0,r=e)}),l=t.safe(()=>{const{innerWidth:h,innerHeight:c}=window;(h!==n||c!==s)&&(n=h,s=c,t.send(ar(n,s)))}),a=document.hidden===void 0?Function.prototype:t.safe(()=>t.send(Cr(document.hidden)));t.attachStartCallback(()=>{e=null,i=ze(),n=s=-1,o(),l(),a()}),document.hidden!==void 0&&t.attachEventListener(document,"visibilitychange",a,!1,!1),t.ticker.attach(o,1,!1),t.ticker.attach(l,5,!1)}function hi(t){return St(t)&&!!t.adoptedStyleSheets}let ca=15;function di(){return ca++}const _t=new Map;function la(t){if(t===null||!hi(document))return;const e=new Map,n=new Map,s=o=>setTimeout(()=>{let l=t.nodes.getID(o);if(o===document&&(l=0),l===void 0)return;let a=n.get(l);a||(a=[]);const h=[],c=o.adoptedStyleSheets;if(c&&Symbol.iterator in c)for(const u of c){let p=e.get(u);const y=!p;if(p||(p=di(),e.set(u,p)),a.includes(p)||t.send(Cs(p,l)),y){const S=u.cssRules;for(let v=0;v<S.length;v++)t.send(Xt(p,S[v].cssText,v,t.getBaseHref()))}h.push(p)}if(Symbol.iterator in a)for(const u of a)h.includes(u)||t.send(Fr(u,l));n.set(l,h)},20);function i(o){const l=Object.getOwnPropertyDescriptor(o,"adoptedStyleSheets");l&&Object.defineProperty(o,"adoptedStyleSheets",{...l,set:function(a){const h=l.set.call(this,a);return s(this),h}})}const r=o=>{if(o.__openreplay_adpss_patched__)return;o.__openreplay_adpss_patched__=!0,i(o.Document.prototype),i(o.ShadowRoot.prototype);const{replace:l,replaceSync:a}=o.CSSStyleSheet.prototype;o.CSSStyleSheet.prototype.replace=function(h){return l.call(this,h).then(c=>{const u=e.get(this);return u&&t.send(Ts(u,h,t.getBaseHref())),c})},o.CSSStyleSheet.prototype.replaceSync=function(h){const c=e.get(this);return c&&t.send(Ts(c,h,t.getBaseHref())),a.call(this,h)}};r(window),t.observer.attachContextCallback(t.safe(r)),t.attachStopCallback(()=>{e.clear(),n.clear()}),t.attachStartCallback(()=>{s(document)}),t.nodes.attachNodeCallback(o=>{hi(o)&&s(o)})}function ha(t){if(t===null)return;if(!window.CSSStyleSheet){t.send(Nr("no_stylesheet_prototype_in_window",""));return}const e=t.safe((i,r,o)=>{const l=_t.get(i);l&&(typeof o=="string"?t.send(Xt(l,o,r,t.getBaseHref())):t.send(Is(l,r)))}),n=t.safe(i=>{let r=i;for(;r.parentRule;)r=r.parentRule;const o=r.parentStyleSheet;if(!o){t.debug.warn("No parent StyleSheet found for",r,i);return}const l=_t.get(o);if(!l){t.debug.warn("No sheedID found for",o,_t);return}const a=r.cssText,h=o.cssRules,c=Array.from(h).indexOf(r);c>=0?(t.send(Xt(l,a,c,t.getBaseHref())),t.send(Is(l,c+1))):t.debug.warn("Rule index not found in",o,r)}),s=t.safe(i=>{const{insertRule:r,deleteRule:o}=i.CSSStyleSheet.prototype,{insertRule:l,deleteRule:a}=i.CSSGroupingRule.prototype;i.CSSStyleSheet.prototype.insertRule=function(h,c=0){return e(this,c,h),r.call(this,h,c)},i.CSSStyleSheet.prototype.deleteRule=function(h){return e(this,h),o.call(this,h)},i.CSSGroupingRule.prototype.insertRule=function(h,c=0){const u=l.call(this,h,c);return n(this),u},i.CSSGroupingRule.prototype.deleteRule=function(h=0){const c=a.call(this,h);return n(this),c}});s(window),t.observer.attachContextCallback(s),t.nodes.attachNodeCallback(i=>{if(!Q(i,"style")||!i.sheet||i.textContent!==null&&i.textContent.trim().length>0)return;const r=t.nodes.getID(i);if(!r)return;const o=i.sheet,l=di();_t.set(o,l),t.send(Cs(l,r));const a=o.cssRules;for(let h=0;h<a.length;h++)e(o,h,a[h].cssText)})}function da(t){function e(s){const i=t.nodes.getID(s);i!==void 0&&t.send(Es(i))}let n=!1;t.nodes.attachNodeCallback(s=>{Q(s,"body")&&(t.nodes.attachNodeListener(s,"focus",i=>{zs(i.target)&&(e(i.target),n=!1)}),t.nodes.attachNodeListener(s,"blur",i=>{i.relatedTarget===null&&(n=!0,setTimeout(()=>{n&&t.send(Es(-1))},0))}))}),t.attachStartCallback(()=>{let s=document.activeElement;for(;s&&Q(s,"iframe")&&s.contentDocument;)s=s.contentDocument.activeElement;s&&s!==s.ownerDocument.body&&e(s)},!0)}function ua(t){if(!window.FontFace)return;const e=new Map,n=s=>{class i extends s.FontFace{constructor(...o){if(typeof o[1]=="string"){let l="";o[2]&&t.safe(()=>{l=JSON.stringify(o[2])});const a=[o[0],o[1],l],h=e.get(s.document)||[];h.push(a),e.set(s.document,h);const c=s===window?0:t.nodes.getID(s.document);if(c===void 0)return;t.active()&&t.send(ks(c,...a))}super(...o)}}s.FontFace=i};t.observer.attachContextCallback(n),n(window),t.nodes.attachNodeCallback(t.safe(s=>{if(!wt(s))return;const i=e.get(s);if(!i)return;const r=s.defaultView===window?0:t.nodes.getID(s);r!==void 0&&i.forEach(o=>{t.send(ks(r,...o))})}))}function fa(t,e,n,s,i){t.debug.log("Openreplay: attaching axios spy to instance",e);function r(p){t.debug.log("Openreplay: capturing axios response data",p);const{headers:y,data:S,method:v,url:E,baseURL:F}=p.config,{data:P,headers:A,status:k,response:N}=p,{data:O,headers:D,status:I}=N||{},T=n.ignoreHeaders,B=Array.isArray(T)?U=>T.includes(U):()=>T;function G(U,b){B(b[0])||(U[b[0]]=b[1])}let j={},$={};y.toJSON?j=y.toJSON():y instanceof Headers?y.forEach((U,b)=>G(j,[b,U])):Array.isArray(y)?y.forEach(U=>G(j,U)):typeof y=="object"&&Object.entries(y).forEach(U=>G(j,U));const C=D||A;C.toJSON?$=C.toJSON():C instanceof Headers?C.forEach((U,b)=>G($,[b,U])):Array.isArray(C)?C.forEach(U=>G($,U)):typeof C=="object"&&Object.entries(C).forEach(([U,b])=>{B(U)||($[U]=b)});const L=s({url:E,method:v||"",status:k||I||0,request:{headers:j,body:S},response:{headers:$,body:O||P}});if(!L){t.debug.log("Openreplay: empty request/response info, skipping");return}const V=p.config.__openreplay_timing,K=performance.now()-V;t.debug.log("Openreplay: final req object",L),t.send(mt("xhr",String(v),String(L.url),i(L.request),i(L.response),L.status,V+ze(),K,0))}function o(p){if(t.debug.log("Openreplay: capturing API request",p),p.__openreplay_timing=performance.now(),n.sessionTokenHeader){const y=typeof n.sessionTokenHeader=="string"?n.sessionTokenHeader:"X-OpenReplay-Session-Token",S=t.getSessionToken();S&&p.headers.set(y,S)}return p}function l(p){return n.failuresOnly||r(p),p}function a(p){return t.debug.log("Openreplay: capturing API request error",p),pa(p)&&p.response?r(p.response):p instanceof Error&&t.send(kt(p,[])),Promise.reject(p)}function h(p){t.debug.log("Openreplay: failed API request, skipping",p)}const c=e.interceptors.request.use(o,h,{synchronous:!0}),u=e.interceptors.response.use(l,a,{synchronous:!0});t.attachStopCallback(()=>{var p,y,S,v;(y=(p=e.interceptors.request).eject)==null||y.call(p,c),(v=(S=e.interceptors.response).eject)==null||v.call(S,u)})}function pa(t){return ga(t)&&t.isAxiosError===!0}function ga(t){return t!==null&&typeof t=="object"}var ve;(function(t){t[t.UNSENT=0]="UNSENT",t[t.OPENED=1]="OPENED",t[t.HEADERS_RECEIVED=2]="HEADERS_RECEIVED",t[t.LOADING=3]="LOADING",t[t.DONE=4]="DONE"})(ve||(ve={}));class yn{constructor(e=[],n,s){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.id="",this.name="",this.method="",this.url="",this.status=0,this.statusText="",this.cancelState=0,this.readyState=0,this.header={},this.responseType="",this.requestHeader={},this.responseSize=0,this.responseSizeText="",this.startTime=0,this.endTime=0,this.duration=0,this.getData={},this.requestData=null}getMessage(){const{reqHs:e,resHs:n}=this.writeHeaders(),s={headers:e,body:this.method==="GET"?JSON.stringify(this.getData):this.requestData},i={headers:n,body:this.response},r=this.sanitize({url:this.url,method:this.method,status:this.status,request:s,response:i});if(r)return mt(this.requestType,r.method,r.url,JSON.stringify(r.request),JSON.stringify(r.response),r.status,this.startTime+ze(),this.duration,this.responseSize)}writeHeaders(){const e={};Object.entries(this.requestHeader).forEach(([s,i])=>{this.isHeaderIgnored(s)||(e[s]=i)}),this.setSessionTokenHeader((s,i)=>{e[s]=i});const n={};return Object.entries(this.header).forEach(([s,i])=>{this.isHeaderIgnored(s)||(n[s]=i)}),{reqHs:e,resHs:n}}isHeaderIgnored(e){return Array.isArray(this.ignoredHeaders)?this.ignoredHeaders.map(n=>n.toLowerCase()).includes(e.toLowerCase()):this.ignoredHeaders}}const Qe=(t,e)=>{let n="";switch(t){case"":case"text":case"json":typeof e=="string"?n=e:wn(e)||Array.isArray(e)?n=JSON.stringify(e):typeof e<"u"&&(n=Object.prototype.toString.call(e));break;case"blob":case"document":case"arraybuffer":default:typeof e<"u"&&(n=Object.prototype.toString.call(e));break}return n},vn=t=>{if(!t)return null;let e;if(typeof t=="string"){(t[0]==="{"||t[0]==="[")&&(e=t);const n=t.split("&");n.length===1?e=t:e=n.join(",")}else if(ba(t)){const n=[];for(const[s,i]of t)n.push(`${s}=${typeof i=="string"?i:"[object Object]"}`);e=n.join(",")}else t instanceof Blob||t instanceof ReadableStream||t instanceof ArrayBuffer?e="byte data":wn(t)?e=t:e=`can't parse body ${typeof t}`;return e},ma=(t,e={})=>{wn(e)||(e={});let n=t?t.split("?"):[];if(n.shift(),n.length>0){n=n.join("?").split("&");for(const s of n){const i=s.split("=");try{e[i[0]]=decodeURIComponent(i[1])}catch{e[i[0]]=i[1]}}}return e};function wn(t){return t!==null&&typeof t=="object"}function ba(t){return t==null||ArrayBuffer.isView(t)?!1:typeof Symbol<"u"&&typeof t[Symbol.iterator]=="function"}function Nt(t){return t<=0?"":t>=1e3*1e3?(t/1e3/1e3).toFixed(1)+" MB":t>=1e3?(t/1e3).toFixed(1)+" KB":`${t}B`}const Sn=t=>(t.startsWith("//")&&(t=`${new URL(window.location.href).protocol}${t}`),t.startsWith("http")?new URL(t):new URL(t,window.location.href));class ya{constructor(e,n){this.resp=e,this.item=n,this.mockReader()}set(e,n,s){return Reflect.set(e,n,s)}get(e,n){const s=Reflect.get(e,n);switch(n){case"arrayBuffer":case"blob":case"formData":case"json":case"text":return()=>(this.item.responseType=n.toLowerCase(),s.apply(e).then(i=>(this.item.response=Qe(this.item.responseType,i),i)))}return typeof s=="function"?s.bind(e):s}mockReader(){let e;if(!this.resp.body||typeof this.resp.body.getReader!="function")return;const n=this.resp.body.getReader;this.resp.body.getReader=()=>{const s=n.apply(this.resp.body);if(this.item.readyState===ve.DONE)return s;const i=s.read,r=s.cancel;return this.item.responseType="arraybuffer",s.read=()=>i.apply(s).then(o=>{if(!e)e=new Uint8Array(o.value);else{const l=new Uint8Array(e.length+o.value.length);l.set(e),l.set(o.value,e.length),e=l}return this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.readyState=o.done?4:3,this.item.statusText=o.done?String(this.item.status):"Loading",this.item.responseSize=e.length,this.item.responseSizeText=Nt(this.item.responseSize),o.done&&(this.item.response=Qe(this.item.responseType,e)),o}),s.cancel=(...o)=>(this.item.cancelState=2,this.item.statusText="Cancel",this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.response=Qe(this.item.responseType,e),r.apply(s,o)),s}}}class va{constructor(e,n,s,i,r,o){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.sendMessage=i,this.isServiceUrl=r,this.tokenUrlMatcher=o}apply(e,n,s){const i=s[0],r=s[1];if(!i||typeof i!="string"&&!(i!=null&&i.url)||(i instanceof URL||typeof i=="string"?this.isServiceUrl(String(i)):this.isServiceUrl(String(i.url))))return e.apply(window,s);const l=new yn(this.ignoredHeaders,this.setSessionTokenHeader,this.sanitize);return this.beforeFetch(l,i,r),this.setSessionTokenHeader((a,h)=>{if(!(this.tokenUrlMatcher!==void 0&&!this.tokenUrlMatcher(l.url))){if(s[1]===void 0&&s[0]instanceof Request)return s[0].headers.append(a,h);s[1]||(s[1]={}),s[1].headers===void 0&&(s[1]={...s[1],headers:{}}),s[1].headers instanceof Headers?s[1].headers.append(a,h):Array.isArray(s[1].headers)?s[1].headers.push([a,h]):s[1].headers[a]=h}}),e.apply(window,s).then(this.afterFetch(l)).catch(a=>{throw l.endTime=performance.now(),l.duration=l.endTime-(l.startTime||l.endTime),a})}beforeFetch(e,n,s){let i,r="GET",o={};if(typeof n=="string"?(r=(s==null?void 0:s.method)||"GET",i=Sn(n),o=(s==null?void 0:s.headers)||{}):(r=n.method||"GET",i=Sn(n.url),o=n.headers),e.method=r,e.requestType="fetch",e.requestHeader=o,e.url=i.toString(),e.name=(i.pathname.split("/").pop()||"")+i.search,e.status=0,e.statusText="Pending",e.readyState=1,e.startTime||(e.startTime=performance.now()),Object.prototype.toString.call(o)==="[object Headers]"){e.requestHeader={};for(const[l,a]of o)e.requestHeader[l]=a}else e.requestHeader=o;if(i.search&&i.searchParams){e.getData={};for(const[l,a]of i.searchParams)e.getData[l]=a}s!=null&&s.body&&(e.requestData=vn(s.body))}afterFetch(e){return n=>{e.endTime=performance.now(),e.duration=e.endTime-(e.startTime||e.endTime),e.status=n.status,e.statusText=String(n.status);let s=!1;e.header={};for(const[i,r]of n.headers)e.header[i]=r,s=r.toLowerCase().indexOf("chunked")>-1?!0:s;return s?e.readyState=3:(e.readyState=4,this.handleResponseBody(n.clone(),e).then(i=>{e.responseSize=typeof i=="string"?i.length:i.byteLength,e.responseSizeText=Nt(e.responseSize),e.response=Qe(e.responseType,i);const r=e.getMessage();r&&this.sendMessage(r)}).catch(i=>{if(i.name!=="AbortError")throw i})),new Proxy(n,new ya(n,e))}}handleResponseBody(e,n){const s=e.headers.get("content-type");return s&&s.includes("application/json")?(n.responseType="json",e.text()):s&&(s.includes("text/html")||s.includes("text/plain"))?(n.responseType="text",e.text()):(n.responseType="arraybuffer",e.arrayBuffer())}}class wa{static create(e,n,s,i,r,o){return new Proxy(fetch,new va(e,n,s,i,r,o))}}class Sa{constructor(e,n,s,i,r,o,l){this.ignoredHeaders=n,this.setSessionTokenHeader=s,this.sanitize=i,this.sendMessage=r,this.isServiceUrl=o,this.tokenUrlMatcher=l,this.XMLReq=e,this.XMLReq.onreadystatechange=()=>{this.onReadyStateChange()},this.XMLReq.onabort=()=>{this.onAbort()},this.XMLReq.ontimeout=()=>{this.onTimeout()},this.item=new yn(n,s,i),this.item.requestType="xhr"}get(e,n){switch(n){case"open":return this.getOpen(e);case"send":return this.setSessionTokenHeader((i,r)=>{this.tokenUrlMatcher!==void 0&&!this.tokenUrlMatcher(this.item.url)||e.setRequestHeader(i,r)}),this.getSend(e);case"setRequestHeader":return this.getSetRequestHeader(e);default:const s=Reflect.get(e,n);return typeof s=="function"?s.bind(e):s}}set(e,n,s){switch(n){case"onreadystatechange":return this.setOnReadyStateChange(e,n,s);case"onabort":return this.setOnAbort(e,n,s);case"ontimeout":return this.setOnTimeout(e,n,s)}return Reflect.set(e,n,s)}onReadyStateChange(){if(!(this.item.url&&this.isServiceUrl(this.item.url))&&(this.item.readyState=this.XMLReq.readyState,this.item.responseType=this.XMLReq.responseType,this.item.endTime=performance.now(),this.item.duration=this.item.endTime-this.item.startTime,this.updateItemByReadyState(),setTimeout(()=>{this.item.response=Qe(this.item.responseType,this.item.response)},0),this.XMLReq.readyState===ve.DONE)){const e=this.item.getMessage();e&&this.sendMessage(e)}}onAbort(){this.item.cancelState=1,this.item.statusText="Abort";const e=this.item.getMessage();e&&this.sendMessage(e)}onTimeout(){this.item.cancelState=3,this.item.statusText="Timeout";const e=this.item.getMessage();e&&this.sendMessage(e)}getOpen(e){const n=Reflect.get(e,"open");return(...s)=>{var o,l;const i=s[0],r=s[1];return this.item.method=i?i.toUpperCase():"GET",this.item.url=((o=r.toString)==null?void 0:o.call(r))||"",this.item.name=((l=this.item.url)==null?void 0:l.replace(new RegExp("/*$"),"").split("/").pop())??"",this.item.getData=ma(this.item.url,{}),n.apply(e,s)}}getSend(e){const n=Reflect.get(e,"send");return(...s)=>{const i=s[0];return this.item.requestData=vn(i),n.apply(e,s)}}getSetRequestHeader(e){const n=Reflect.get(e,"setRequestHeader");return(...s)=>(this.item.requestHeader||(this.item.requestHeader={}),this.item.requestHeader[s[0]]=s[1],n.apply(e,s))}setOnReadyStateChange(e,n,s){return Reflect.set(e,n,(...i)=>{this.onReadyStateChange(),s==null||s.apply(e,i)})}setOnAbort(e,n,s){return Reflect.set(e,n,(...i)=>{this.onAbort(),s.apply(e,i)})}setOnTimeout(e,n,s){return Reflect.set(e,n,(...i)=>{this.onTimeout(),s.apply(e,i)})}updateItemByReadyState(){switch(this.XMLReq.readyState){case ve.UNSENT:case ve.OPENED:this.item.status=ve.UNSENT,this.item.statusText="Pending",this.item.startTime||(this.item.startTime=performance.now());break;case ve.HEADERS_RECEIVED:this.item.status=this.XMLReq.status,this.item.statusText="Loading",this.item.header={};const e=this.XMLReq.getAllResponseHeaders()||"",n=e.split(`
662
- `);for(let s=0;s<n.length;s++){const i=n[s];if(!i)continue;const r=i.split(": "),o=r[0];this.item.header[o]=r.slice(1).join(": ")}break;case ve.LOADING:this.item.status=this.XMLReq.status,this.item.statusText="Loading",this.XMLReq.response&&this.XMLReq.response.length&&(this.item.responseSize=this.XMLReq.response.length,this.item.responseSizeText=Nt(this.item.responseSize));break;case ve.DONE:this.item.status=this.XMLReq.status||this.item.status||0,this.item.statusText=String(this.item.status),this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.response=this.XMLReq.response,this.XMLReq.response&&this.XMLReq.response.length&&(this.item.responseSize=this.XMLReq.response.length,this.item.responseSizeText=Nt(this.item.responseSize));break;default:this.item.status=this.XMLReq.status,this.item.statusText="Unknown";break}}}class xa{static create(e,n,s,i,r,o){return new Proxy(XMLHttpRequest,{construct(l){const a=new l;return new Proxy(a,new Sa(a,e,n,s,i,r,o))}})}}const ka=t=>t instanceof Blob?t.type:t instanceof FormData?"multipart/form-data":t instanceof URLSearchParams?"application/x-www-form-urlencoded;charset=UTF-8":"text/plain;charset=UTF-8";class Ea{constructor(e,n,s,i,r){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.sendMessage=i,this.isServiceUrl=r}apply(e,n,s){const i=s[0],r=s[1],o=new yn(this.ignoredHeaders,this.setSessionTokenHeader,this.sanitize);if(this.isServiceUrl(i))return e.apply(n,s);const l=Sn(i);if(o.method="POST",o.url=i,o.name=(l.pathname.split("/").pop()||"")+l.search,o.requestType="beacon",o.requestHeader={"Content-Type":ka(r)},o.status=0,o.statusText="Pending",l.search&&l.searchParams){o.getData={};for(const[c,u]of l.searchParams)o.getData[c]=u}o.requestData=vn(r),o.startTime||(o.startTime=performance.now());const a=e.apply(n,s);a?(o.endTime=performance.now(),o.duration=o.endTime-(o.startTime||o.endTime),o.status=0,o.statusText="Sent",o.readyState=4):(o.status=500,o.statusText="Unknown");const h=o.getMessage();return h&&this.sendMessage(h),a}}class We{static hasSendBeacon(){return!!We.origSendBeacon}static create(e,n,s,i,r){if(We.hasSendBeacon())return new Proxy(We.origSendBeacon,new Ea(e,n,s,i,r))}}We.origSendBeacon=(mi=window==null?void 0:window.navigator)==null?void 0:mi.sendBeacon;const ui=t=>console.warn(`Openreplay: Can't find ${t} in global context.
663
- If you're using serverside rendering in your app, make sure that tracker is loaded dynamically, otherwise ${t} won't be tracked.`);function Ta(t,e,n,s,i,r,o){var l;t.XMLHttpRequest?t.XMLHttpRequest=xa.create(e,n,s,i,r,o):ui("XMLHttpRequest"),t.fetch?t.fetch=wa.create(e,n,s,i,r,o):ui("fetch"),(l=t==null?void 0:t.navigator)!=null&&l.sendBeacon&&(t.navigator.sendBeacon=We.create(e,n,s,i,r))}function xn(t){return t.__or_req_data__||(t.__or_req_data__={body:void 0,headers:{}}),t.__or_req_data__}function fi(t){return typeof t=="string"?t.toUpperCase():"GET"}function Ia(t,e={}){const n=Object.assign({failuresOnly:!1,ignoreHeaders:["cookie","set-cookie","authorization"],capturePayload:!1,sessionTokenHeader:!1,captureInIframes:!0,axiosInstances:void 0,useProxy:!0},e);n.useProxy===!1&&t.debug.warn("Network module is migrating to proxy api, to gradually migrate and test it set useProxy to true");const s=n.ignoreHeaders,i=Array.isArray(s)?c=>s.includes(c):()=>s,r=n.sessionTokenHeader===!0?"X-OpenReplay-SessionToken":n.sessionTokenHeader;function o(c){if(r){const u=t.getSessionToken();u&&t.safe(c)(r,u)}}function l(c){if(n.capturePayload||(delete c.request.body,delete c.response.body),n.sanitizer){const u=c.response.body;if(typeof u=="string")try{c.response.body=JSON.parse(u)}catch{}return n.sanitizer(c)}return c}function a(c){if(c&&typeof c.body!="string")try{c.body=JSON.stringify(c.body)}catch{c.body="<unable to stringify>",t.notify.warn("Openreplay fetch couldn't stringify body:",c.body)}return JSON.stringify(c)}const h=c=>{if(n.useProxy)return Ta(c,n.ignoreHeaders,o,l,A=>t.send(A),A=>t.isServiceURL(A),n.tokenUrlMatcher);const u=c.fetch.bind(c),p=(A,k={})=>{if(!(typeof A=="string"||A instanceof URL)||t.isServiceURL(String(A)))return u(A,k);o(function(O,D){k.headers===void 0&&(k.headers={}),k.headers instanceof Headers?k.headers.append(O,D):Array.isArray(k.headers)?k.headers.push([O,D]):k.headers[O]=D});const N=performance.now();return u(A,k).then(O=>{const D=performance.now()-N;if(n.failuresOnly&&O.status<400)return O;const I=O.clone();return I.text().then(T=>{const B={},G={};if(s!==!0){const C=([L,V])=>{i(L)||(B[L]=V)};k.headers instanceof Headers?k.headers.forEach((L,V)=>C([V,L])):Array.isArray(k.headers)?k.headers.forEach(C):typeof k.headers=="object"&&Object.entries(k.headers).forEach(C),I.headers.forEach((L,V)=>{i(V)||(G[V]=L)})}const j=fi(k.method),$=l({url:String(A),method:j,status:I.status,request:{headers:B,body:k.body||null},response:{headers:G,body:T}});$&&t.send(mt("fetch",j,String($.url),a($.request),a($.response),I.status,N+ze(),D,0))}).catch(T=>t.debug.error("Could not process Fetch response:",T)),O})};c.fetch=p;const y=c.XMLHttpRequest.prototype.open,S=c.XMLHttpRequest.prototype.setRequestHeader,v=c.XMLHttpRequest.prototype.send;function E(A,k){const N=this;o((D,I)=>N.setRequestHeader(D,I));let O=0;return N.addEventListener("loadstart",D=>{O=D.timeStamp}),N.addEventListener("load",t.safe(D=>{const{headers:I,body:T}=xn(N),B=O>0?D.timeStamp-O:0,j=(N.getAllResponseHeaders()||"").trim().split(/[\r\n]+/),$={};j.forEach(function(V){const K=V.split(": "),U=K.shift();i(U)||($[U]=K.join(": "))});const C=fi(A),L=l({url:String(k),method:C,status:N.status,request:{headers:I,body:T||null},response:{headers:$,body:N.response}});L&&t.send(mt("xhr",C,String(L.url),a(L.request),a(L.response),N.status,O+ze(),B,0))})),y.apply(this,arguments)}function F(A){const k=xn(this);return k.body=A,v.apply(this,arguments)}function P(A,k){if(!i(A)){const N=xn(this);N.headers[A]=k}return S.apply(this,arguments)}n.axiosInstances||(c.XMLHttpRequest.prototype.open=E,c.XMLHttpRequest.prototype.send=F,c.XMLHttpRequest.prototype.setRequestHeader=P)};h(window),n.axiosInstances&&n.axiosInstances.forEach(c=>{fa(t,c,n,l,a)}),n.captureInIframes&&t.observer.attachContextCallback(t.safe(h))}function Ca(t){t.attachEventListener(document,"selectionchange",()=>{const e=document.getSelection();if(e!==null&&!e.isCollapsed){const n=t.nodes.getID(e.anchorNode),s=t.nodes.getID(e.focusNode),i=e.toString().replace(/\s+/g," ");n&&s&&t.send(_s(n,s,i))}else t.send(_s(-1,-1,""))})}function _a(t){function e(){document.hidden||(t.debug.log("Openreplay: tab change to"+t.session.getTabId()),t.send(bt(t.session.getTabId())))}t.attachEventListener(window,"focus",e,!1,!1)}const Ot="/installation/javascript-sdk";function Na(t){if(t==null)return console.error(`OpenReplay: invalid options argument type. Please, check documentation on ${gt}${Ot}`),!1;if(typeof t.projectKey!="string")if(typeof t.projectKey!="number"){if(typeof t.projectID!="number")return console.error(`OpenReplay: projectKey is missing or wrong type (string is expected). Please, check ${gt}${Ot} for more information.`),!1;t.projectKey=t.projectID.toString(),Ce("`projectID` option","`projectKey` option",Ot)}else console.warn("OpenReplay: projectKey is expected to have a string type."),t.projectKey=t.projectKey.toString();return t.sessionToken!=null&&Ce("`sessionToken` option","`sessionHash` start() option","/"),!0}class Oa{constructor(e){var l;if(this.options=e,this.app=null,this.crossdomainMode=!1,this.checkDoNotTrack=()=>this.options.respectDoNotTrack&&(navigator.doNotTrack=="1"||window.doNotTrack=="1"),this.signalStartIssue=(a,h)=>{const c=this.checkDoNotTrack(),u=new XMLHttpRequest,p=this.options.ingestPoint||Ws;u.open("POST",p+"/v1/web/not-started"),u.send(JSON.stringify({trackerVersion:"14.0.4",projectKey:this.options.projectKey,doNotTrack:c,reason:h.length?`missing api: ${h.join(",")}`:a}))},this.restartCanvasTracking=()=>{this.app!==null&&this.app.restartCanvasTracking()},this.handleError=(a,h={})=>{if(this.app!==null){if(a instanceof Error){const c=kt(a,[],h);this.app.send(c)}else if(a instanceof ErrorEvent||"PromiseRejectionEvent"in window&&a instanceof PromiseRejectionEvent){const c=Ys(a,void 0,h);c!=null&&this.app.send(c)}}},this.crossdomainMode=!!(sr()&&((l=e.crossdomain)!=null&&l.enabled)),!be||!Na(e))return;if(window.__OPENREPLAY__){console.error("OpenReplay: one tracker instance has been initialised already");return}if(!e.__DISABLE_SECURE_MODE&&location.protocol!=="https:"){console.error("OpenReplay: Your website must be publicly accessible and running on SSL in order for OpenReplay to properly capture and replay the user session. You can disable this check by setting `__DISABLE_SECURE_MODE` option to `true` if you are testing in localhost. Keep in mind, that asset files on a local machine are not available to the outside world. This might affect tracking if you use css files.");return}const n=this.checkDoNotTrack(),s=[],i=["Map","Set","MutationObserver","performance","timing","startsWith","Blob","Worker"];if(n)s.push("doNotTrack");else for(const a of i)if(a==="timing"){if("performance"in window&&!(a in performance)){s.push(a);break}}else if(a==="startsWith"){if(!(a in String.prototype)){s.push(a);break}}else if(!(a in window)){s.push(a);break}if(s.length>0){const a=s.join(",");console.error(`OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${a}`),this.signalStartIssue("missing_api",s);return}const r=new Co(e.projectKey,e.sessionToken,e,this.signalStartIssue,this.crossdomainMode);this.app=r,this.crossdomainMode||(aa(r),_o(r),zr(r,e),_a(r)),na(r,e.mouse),oa(r,this.crossdomainMode),ha(r),la(r),Fo(r,e),Mo(r,e),jo(r),Wo(r,e),ra(r,e),da(r),ua(r),Ia(r,e.network),Ca(r),window.__OPENREPLAY__=this,e.flags&&e.flags.onFlagsLoad&&this.onFlagsLoad(e.flags.onFlagsLoad);const o=window.open;(e.autoResetOnWindowOpen||e.resetTabOnWindowOpen)&&(r.attachStartCallback(()=>{const a=r.getTabId(),h=r.sessionStorage??window.sessionStorage;window.open=function(...c){return e.autoResetOnWindowOpen&&r.resetNextPageSession(!0),e.resetTabOnWindowOpen&&h.removeItem(e.session_tabid_key||"__openreplay_tabid"),r.resetNextPageSession(!1),h.setItem(e.session_tabid_key||"__openreplay_tabid",a),o.call(window,...c)}}),r.attachStopCallback(()=>{window.open=o}))}isFlagEnabled(e){return this.featureFlags.isFlagEnabled(e)}onFlagsLoad(e){var n;(n=this.app)==null||n.featureFlags.onFlagsLoad(e)}clearPersistFlags(){var e;(e=this.app)==null||e.featureFlags.clearPersistFlags()}reloadFlags(){var e;return(e=this.app)==null?void 0:e.featureFlags.reloadFlags()}getFeatureFlag(e){var n;return(n=this.app)==null?void 0:n.featureFlags.getFeatureFlag(e)}getAllFeatureFlags(){var e;return(e=this.app)==null?void 0:e.featureFlags.flags}use(e){return e(this.app,this.options)}isActive(){return this.app===null?!1:this.app.active()}trackWs(e){if(this.app!==null)return this.app.trackWs(e)}start(e){return this.browserEnvCheck()?this.app===null?Promise.reject("Browser doesn't support required api, or doNotTrack is active."):this.app.start(e):Promise.reject("Trying to start not in browser.")}browserEnvCheck(){return be?!0:(console.error(`OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \`tracker.start()\` line. Check documentation on ${gt}${Ot}`),!1)}coldStart(e,n){if(this.browserEnvCheck()){if(this.app===null)return Promise.reject("Tracker not initialized");this.app.coldStart(e,n)}else return Promise.reject("Trying to start not in browser.")}startOfflineRecording(e,n){return this.browserEnvCheck()?this.app===null?Promise.reject("Tracker not initialized"):this.app.offlineRecording(e,n):Promise.reject("Trying to start not in browser.")}uploadOfflineRecording(){if(this.app!==null)return this.app.uploadOfflineRecording()}stop(){if(this.app!==null)return this.app.stop(),this.app.session.getSessionHash()}forceFlushBatch(){this.app!==null&&this.app.forceFlushBatch()}getSessionToken(){return this.app===null?null:this.app.getSessionToken()}getSessionInfo(){return this.app===null?null:this.app.session.getInfo()}getSessionID(){return this.app===null?null:this.app.getSessionID()}getTabId(){return this.app===null?null:this.app.getTabId()}getUxId(){return this.app===null?null:this.app.getUxtId()}sessionID(){return Ce("'sessionID' method","'getSessionID' method","/"),this.getSessionID()}getSessionURL(e){if(this.app!==null)return this.app.getSessionURL(e)}setUserID(e){typeof e=="string"&&this.app!==null&&this.app.session.setUserID(e)}userID(e){Ce("'userID' method","'setUserID' method","/"),this.setUserID(e)}setUserAnonymousID(e){typeof e=="string"&&this.app!==null&&this.app.send(Er(e))}userAnonymousID(e){Ce("'userAnonymousID' method","'setUserAnonymousID' method","/"),this.setUserAnonymousID(e)}setMetadata(e,n){typeof e=="string"&&typeof n=="string"&&this.app!==null&&this.app.session.setMetadata(e,n)}metadata(e,n){Ce("'metadata' method","'setMetadata' method","/"),this.setMetadata(e,n)}event(e,n=null,s=!1){if(typeof e=="string"&&this.app!==null){if(s)return this.issue(e,n);try{n=JSON.stringify(n)}catch{return}this.app.send(xr(e,n))}}issue(e,n=null){if(typeof e=="string"&&this.app!==null){try{n=JSON.stringify(n)}catch{return}this.app.send(Or(e,n))}}}const Ra=`
664
- /* Общие стили */
662
+ `).length?this.parseOpera9(a):a.stack?this.parseOpera11(a):this.parseOpera10(a)},parseOpera9:function(a){for(var d=/Line (\d+).*script (?:in )?(\S+)/i,c=a.message.split(`
663
+ `),u=[],p=2,v=c.length;p<v;p+=2){var S=d.exec(c[p]);S&&u.push(new s({fileName:S[2],lineNumber:S[1],source:c[p]}))}return u},parseOpera10:function(a){for(var d=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,c=a.stacktrace.split(`
664
+ `),u=[],p=0,v=c.length;p<v;p+=2){var S=d.exec(c[p]);S&&u.push(new s({functionName:S[3]||void 0,fileName:S[2],lineNumber:S[1],source:c[p]}))}return u},parseOpera11:function(a){var d=a.stack.split(`
665
+ `).filter(function(c){return!!c.match(i)&&!c.match(/^Error created at/)},this);return d.map(function(c){var u=c.split("@"),p=this.extractLocation(u.pop()),v=u.shift()||"",S=v.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0,y;v.match(/\(([^)]*)\)/)&&(y=v.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var T=y===void 0||y==="[arguments not available]"?void 0:y.split(",");return new s({functionName:S,args:T,fileName:p[0],lineNumber:p[1],columnNumber:p[2],source:c})},this)}}})})(Xs);var Mo=Xs.exports;const Po=Kn(Mo);function Ys(t){return[{columnNumber:t.colno,lineNumber:t.lineno,fileName:t.filename,functionName:"",source:""}]}function kt(t,e,n={}){let s=e;try{s=Po.parse(t)}catch{}return Yt(t.name,t.message,JSON.stringify(s),JSON.stringify(n))}function Qs(t,e=window,n={}){if(t instanceof ErrorEvent){if(t.error instanceof Error)return kt(t.error,Ys(t),n);{let[s,i]=t.message.split(":");return i||(s="Error",i=t.message),Yt(s,i,JSON.stringify(Ys(t)),JSON.stringify(n))}}else if("PromiseRejectionEvent"in e&&t instanceof e.PromiseRejectionEvent){if(t.reason instanceof Error)return kt(t.reason,[],n);{let s;try{s=JSON.stringify(t.reason)}catch{s=String(t.reason)}return Yt("Unhandled Promise Rejection",s,"[]",JSON.stringify(n))}}return null}function Bo(t,e){const n=Object.assign({captureExceptions:!0},e);function s(i){function r(o){const l=Qs(o,i);l!=null&&t.send(l)}t.attachEventListener(i,"unhandledrejection",r),t.attachEventListener(i,"error",r)}n.captureExceptions&&(t.observer.attachContextCallback(s),s(window))}function Zs(t,e=document.location){return t=t.trim(),t.startsWith("//")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")?t:t.startsWith("/")?e.origin+t:e.origin+e.pathname+t}function jo(t){return tr&&(t.startsWith("data:image/svg+xml")||t.match(/.svg$|/i))}const zo="https://static.openreplay.com/tracker/placeholder.jpeg";function Uo(t){function e(l,a){t.attributeSender.sendSetAttribute(l,"src",zo);const{width:d,height:c}=a.getBoundingClientRect();a.hasAttribute("width")||t.attributeSender.sendSetAttribute(l,"width",String(d)),a.hasAttribute("height")||t.attributeSender.sendSetAttribute(l,"height",String(c))}const n=function(l,a){const{srcset:d}=a;if(!d)return;const c=d.split(d.match(/,\s+/)?/,\s+/:",").map(u=>Zs(u)).join(", ");t.attributeSender.sendSetAttribute(l,"srcset",c)},s=function(l,a){a.src.length>nr&&e(l,a),t.send(Kt(l,"src",a.src,t.getBaseHref()))},i=t.safe(function(l){const a=Zs(l.src||"");gs(a)&&t.send(Os(t.timestamp(),0,0,0,0,0,a,"img",0,!1))}),r=t.safe(function(l){const a=t.nodes.getID(l);a!==void 0&&l.complete&&(l.naturalHeight===0&&l.naturalWidth===0&&!jo(l.src)?i(l):t.sanitizer.isHidden(a)||t.sanitizer.isObscured(a)?e(a,l):(s(a,l),n(a,l)))}),o=vs(t.safe(l=>{for(const a of l)if(a.type==="attributes"){const d=a.target,c=t.nodes.getID(d);if(c===void 0)return;a.attributeName==="src"&&s(c,d),a.attributeName==="srcset"&&n(c,d)}}));t.attachStopCallback(()=>{o.disconnect()}),t.nodes.attachNodeCallback(l=>{Q(l,"img")&&(t.nodes.attachNodeListener(l,"error",()=>i(l)),t.nodes.attachNodeListener(l,"load",()=>r(l)),r(l),o.observe(l,{attributes:!0,attributeFilter:["src","srcset"]}))})}const Ho=["text","password","email","search","number","range","date","tel","time"];function $o(t){return Q(t,"textarea")?!0:Q(t,"input")?Ho.includes(t.type):!1}function qo(t){if(!Q(t,"input"))return!1;const e=t.type;return e==="checkbox"||e==="radio"}const Wo=be&&"labels"in HTMLInputElement.prototype?t=>{let e=t;for(;(e=e.parentNode)!==null;)if(Q(e,"label"))return e;const n=t.labels;if(n!==null&&n.length===1)return n[0]}:t=>{let e=t;for(;(e=e.parentNode)!==null;)if(Q(e,"label"))return e;const n=t.id;if(n){const s=t.ownerDocument.querySelectorAll('label[for="'+n+'"]');if(s!==null&&s.length===1)return s[0]}};function ei(t){let e=Gt(t);if(e===null){const n=Wo(t);e=n&&n.innerText||t.placeholder||t.name||t.id||t.className||t.type}return ps(e).slice(0,100)}const $e={Plain:0,Obscured:1,Hidden:2};function Go(t,e){const n=Object.assign({obscureInputNumbers:!0,obscureInputEmails:!0,defaultInputMode:$e.Obscured,obscureInputDates:!1},e);function s(c,u){let p=u.value,v=n.defaultInputMode;u.type==="password"||t.sanitizer.isHidden(c)?v=$e.Hidden:(t.sanitizer.isObscured(c)||v===$e.Plain&&(n.obscureInputNumbers&&u.type!=="date"&&/\d\d\d\d/.test(p)||n.obscureInputDates&&u.type==="date"||n.obscureInputEmails&&(u.type==="email"||~p.indexOf("@"))))&&(v=$e.Obscured);let S=0;switch(v){case $e.Hidden:S=-1,p="";break;case $e.Obscured:S=p.length,p="";break}return{value:p,mask:S}}function i(c,u){const{value:p,mask:v}=s(c,u);t.send(vr(c,p,v))}const r=new Map,o=new Map;t.attachStopCallback(()=>{r.clear(),o.clear()});function l(c,u){r.get(c)!==u.value&&(r.set(c,u.value),i(c,u))}function a(c,u){o.get(c)!==u&&(o.set(c,u),t.send(yr(c,u)))}t.ticker.attach(()=>{r.forEach((c,u)=>{const p=t.nodes.getNode(u);if(!p)return r.delete(u);l(u,p)}),o.forEach((c,u)=>{const p=t.nodes.getNode(u);if(!p)return o.delete(u);a(u,p.checked)})},3);function d(c,u,p,v){const{value:S,mask:y}=s(c,u),T=ei(u);t.send(Mr(c,S,y!==0,T,p,v))}t.nodes.attachNodeCallback(t.safe(c=>{const u=t.nodes.getID(c);if(u!==void 0){if(Q(c,"select")&&(i(u,c),t.nodes.attachNodeListener(c,"change",()=>i(u,c))),$o(c)){l(u,c);let p=0,v=0,S=0;const y=()=>{p=pe()},T=()=>{v===0&&p!==0&&(v=pe()-p)},A=()=>{p!==0&&(S=pe()-p),d(u,c,v,S),v=0,S=0,p=0};t.nodes.attachNodeListener(c,"focus",y),t.nodes.attachNodeListener(c,"input",T),t.nodes.attachNodeListener(c,"change",A);return}if(qo(c)){a(u,c.checked),t.nodes.attachNodeListener(c,"change",()=>a(u,c.checked));return}}}))}let de,pn,ti;function Vo(t,e){if(ti=new Date,t.nodeType!==Node.ELEMENT_NODE)throw new Error("Can't generate CSS selector for non-element node type.");if(t.tagName.toLowerCase()==="html")return"html";const n={root:document.body,idName:i=>!0,className:i=>!0,tagName:i=>!0,attr:(i,r)=>!1,seedMinLength:1,optimizedMinLength:2,threshold:1e3,maxNumberOfTries:1e4,timeoutMs:void 0};de={...n,...e},pn=Ko(de.root,n);let s=Tt(t,"all",()=>Tt(t,"two",()=>Tt(t,"one",()=>Tt(t,"none"))));if(s){const i=ai(ci(s,t));return i.length>0&&(s=i[0]),Et(s)}else throw new Error("Selector was not found.")}function Ko(t,e){return t.nodeType===Node.DOCUMENT_NODE?t:t===e.root?t.ownerDocument:t}function Tt(t,e,n){let s=null,i=[],r=t,o=0;for(;r;){const l=new Date().getTime()-ti.getTime();if(de.timeoutMs!==void 0&&l>de.timeoutMs)throw new Error(`Timeout: Can't find a unique selector after ${l}ms`);let a=Ct(Xo(r))||Ct(...Jo(r))||Ct(...Yo(r))||Ct(Qo(r))||[ri()];const d=Zo(r);if(e=="all")d&&(a=a.concat(a.filter(gn).map(c=>It(c,d))));else if(e=="two")a=a.slice(0,1),d&&(a=a.concat(a.filter(gn).map(c=>It(c,d))));else if(e=="one"){const[c]=a=a.slice(0,1);d&&gn(c)&&(a=[It(c,d)])}else e=="none"&&(a=[ri()],d&&(a=[It(a[0],d)]));for(let c of a)c.level=o;if(i.push(a),i.length>=de.seedMinLength&&(s=ni(i,n),s))break;r=r.parentElement,o++}return s||(s=ni(i,n)),!s&&n?n():s}function ni(t,e){const n=ai(oi(t));if(n.length>de.threshold)return e?e():null;for(let s of n)if(ii(s))return s;return null}function Et(t){let e=t[0],n=e.name;for(let s=1;s<t.length;s++){const i=t[s].level||0;e.level===i-1?n=`${t[s].name} > ${n}`:n=`${t[s].name} ${n}`,e=t[s]}return n}function si(t){return t.map(e=>e.penalty).reduce((e,n)=>e+n,0)}function ii(t){const e=Et(t);switch(pn.querySelectorAll(e).length){case 0:throw new Error(`Can't select any node with this selector: ${e}`);case 1:return!0;default:return!1}}function Xo(t){const e=t.getAttribute("id");return e&&de.idName(e)?{name:"#"+CSS.escape(e),penalty:0}:null}function Jo(t){return Array.from(t.attributes).filter(n=>de.attr(n.name,n.value)).map(n=>({name:`[${CSS.escape(n.name)}="${CSS.escape(n.value)}"]`,penalty:.5}))}function Yo(t){return Array.from(t.classList).filter(de.className).map(n=>({name:"."+CSS.escape(n),penalty:1}))}function Qo(t){const e=t.tagName.toLowerCase();return de.tagName(e)?{name:e,penalty:2}:null}function ri(){return{name:"*",penalty:3}}function Zo(t){const e=t.parentNode;if(!e)return null;let n=e.firstChild;if(!n)return null;let s=0;for(;n&&(n.nodeType===Node.ELEMENT_NODE&&s++,n!==t);)n=n.nextSibling;return s}function It(t,e){return{name:t.name+`:nth-child(${e})`,penalty:t.penalty+1}}function gn(t){return t.name!=="html"&&!t.name.startsWith("#")}function Ct(...t){const e=t.filter(ea);return e.length>0?e:null}function ea(t){return t!=null}function*oi(t,e=[]){if(t.length>0)for(let n of t[0])yield*oi(t.slice(1,t.length),e.concat(n));else yield e}function ai(t){return[...t].sort((e,n)=>si(e)-si(n))}function*ci(t,e,n={counter:0,visited:new Map}){if(t.length>2&&t.length>de.optimizedMinLength)for(let s=1;s<t.length-1;s++){if(n.counter>de.maxNumberOfTries)return;n.counter+=1;const i=[...t];i.splice(s,1);const r=Et(i);if(n.visited.has(r))return;ii(i)&&ta(i,e)&&(yield i,n.visited.set(r,!0),yield*ci(i,e,n))}}function ta(t,e){return pn.querySelector(Et(t))===e}function na(t,e,n){return Vo(t,{root:e.body,seedMinLength:3,optimizedMinLength:(n==null?void 0:n.minSelectorDepth)||2,threshold:(n==null?void 0:n.nthThreshold)||1e3,maxNumberOfTries:(n==null?void 0:n.maxOptimiseTries)||1e4})}function mn(t){const e=t.tagName.toUpperCase();return e==="BUTTON"||e==="A"||e==="LI"||e==="SELECT"||e==="TR"||e==="TH"||t.onclick!=null||t.getAttribute("role")==="button"}function li(t,e){return t instanceof Element?sa(t,e):null}function sa(t,e){let n=t;for(;n!==null&&n!==e.documentElement;){if(Re(n,"masked"))return null;n=n.parentElement}if(sn(t)){let s=t.ownerSVGElement;for(;s!==null;)t=s,s=s.ownerSVGElement}for(n=t;n!==null&&n!==e.documentElement;){const s=n.tagName.toUpperCase();if(s==="LABEL")return null;if(s==="INPUT"||mn(n)||Gt(n)!==null)return n;n=n.parentElement}return t===e.documentElement?null:t}function ia(t,e){const{disableClickmaps:n=!1}=e||{};function s(k){const N=Gt(k);if(N!==null)return N;if(Q(k,"input"))return ei(k);if(mn(k)){let O="";return k instanceof HTMLElement&&(O=t.sanitizer.getInnerTextSecure(k)),O=O||k.id||k.className,ps(O).slice(0,100)}return""}let i=-1,r=-1,o=!1,l=null,a=0,d={},c=0,u=0,p=0,v=0,S;const y=.008,T=225;function A(){const k=v/T;if(!c){c=k;return}const N=(k-c)/T;p>4&&N>y&&t.send(Pr(pe())),v=0,p=0,c=k}t.attachStartCallback(()=>{S=setInterval(()=>A(),T)}),t.attachStopCallback(()=>{i=-1,r=-1,o=!1,l=null,d={},S&&clearInterval(S)});const B=()=>{o&&(t.send(wr(i,r)),o=!1)},D=(k,N=!1)=>{function O(I,E,P){return d[I]=d[I]||na(E,k,P)}const L=N?t.attachEventListener.bind(t):t.nodes.attachNodeListener.bind(t.nodes);L(k.documentElement,"mouseover",I=>{const E=li(I.target,k);E!==l&&(l=E,a=performance.now())}),L(k,"mousemove",I=>{const[E,P]=t.observer.getDocumentOffset(k);i=I.clientX+E,r=I.clientY+P,o=!0;const V=Math.sign(I.movementX);v+=Math.abs(I.movementX)+Math.abs(I.movementY),V!==u&&(u=V,p++)},!1),L(k,"click",I=>{const E=li(I.target,k);if(!I.clientX&&!I.clientY||E===null)return;const P=t.nodes.getID(E);if(P!==void 0){const V=I.pageX,j=I.pageY,q=k.documentElement.scrollWidth,C=k.documentElement.scrollHeight,F=di(V/q),G=di(j/C);B(),t.send(Dr(P,l===E?Math.round(performance.now()-a):0,s(E),mn(E)&&!n?O(P,E,e):"",F,G),!0)}l=null})};t.nodes.attachNodeCallback(k=>{wt(k)&&D(k)}),D(document,!0),t.ticker.attach(B,(e==null?void 0:e.trackingOffset)||7)}function di(t){return Math.round(t*1e4)}function ra(t){const e=[],n=document.getElementsByTagName("*"),s=/url\(("[^"]*"|'[^']*'|[^)]*)\)/i;for(let i=0;i<n.length;i++){const r=n[i];let o="";if(Q(r,"img")&&(o=r.currentSrc||r.src),!o){const S=getComputedStyle(r).getPropertyValue("background-image");if(S){const y=s.exec(S);y!==null&&(o=y[1],(o.startsWith('"')||o.startsWith("'"))&&(o=o.substr(1,o.length-2)))}}if(!o)continue;const l=o.substr(0,10)==="data:image"?0:t[o];if(l===void 0)continue;const a=r.getBoundingClientRect(),d=Math.max(a.top,0),c=Math.max(a.left,0),u=Math.min(a.bottom,window.innerHeight||document.documentElement&&document.documentElement.clientHeight||0),p=Math.min(a.right,window.innerWidth||document.documentElement&&document.documentElement.clientWidth||0);if(u<=d||p<=c)continue;const v=(u-d)*(p-c);e.push({time:l,area:v})}return e}function oa(t,e){let n=Math.max(document.documentElement&&document.documentElement.clientWidth||0,window.innerWidth||0)*Math.max(document.documentElement&&document.documentElement.clientHeight||0,window.innerHeight||0)/10,s=n*t;for(let i=0;i<e.length;i++){const{time:r,area:o}=e[i];n+=o,s+=o*(r>t?r:t)}return n===0?0:s/n}function aa(t,e){const n=Object.assign({captureResourceTimings:!0,capturePageLoadTimings:!0,capturePageRenderTimings:!0,excludedResourceUrls:[]},e);if("PerformanceObserver"in window||(n.captureResourceTimings=!1),!n.captureResourceTimings)return;let s={};function i(d){var u;if(d.duration<0||!gs(d.name)||t.isServiceURL(d.name))return;s!==null&&(s[d.name]=d.startTime+d.duration);let c=!1;(u=n.excludedResourceUrls)==null||u.forEach(p=>{if(d.name.startsWith(p)){c=!0;return}}),!c&&t.send(Os(d.startTime+ze(),d.duration,d.responseStart&&d.startTime?d.responseStart-d.startTime:0,d.transferSize>d.encodedBodySize?d.transferSize-d.encodedBodySize:0,d.encodedBodySize||0,d.decodedBodySize||0,d.name,d.initiatorType,d.transferSize,d.responseStatus&&d.responseStatus===304||d.transferSize===0))}const r=new PerformanceObserver(d=>d.getEntries().forEach(i));let o;t.attachStartCallback(function({sessionID:d}){d!==o&&(performance.getEntriesByType("resource").forEach(i),o=d),r.observe({entryTypes:["resource"]})}),t.attachStopCallback(function(){r.disconnect()});let l=0,a=0;if(n.capturePageLoadTimings){let d=!1;t.ticker.attach(()=>{if(!d&&((l===0||a===0)&&performance.getEntriesByType("paint").forEach(c=>{const{name:u,startTime:p}=c;switch(u){case"first-paint":l=p;break;case"first-contentful-paint":a=p;break}}),performance.timing.loadEventEnd||performance.now()>3e4)){d=!0;const{navigationStart:c,requestStart:u,responseStart:p,responseEnd:v,domContentLoadedEventStart:S,domContentLoadedEventEnd:y,loadEventStart:T,loadEventEnd:A}=performance.timing;t.send(xr(u-c||0,p-c||0,v-c||0,S-c||0,y-c||0,T-c||0,A-c||0,l,a))}},30)}if(n.capturePageRenderTimings){let d=0,c=0,u=0,p=null,v=!1;t.ticker.attach(()=>{if(v)return;const S=performance.now();if(s!==null&&(d=Math.max.apply(null,Object.keys(s).map(y=>s[y])),S-d>1e3&&(p=ra(s),s=null)),u!==null&&(S-u>50&&(c=S),u=S-c>5e3?null:S),p!==null&&u===null||S>3e4){v=!0,s=null;const y=p===null?0:oa(a||l,p),{domContentLoadedEventEnd:T,navigationStart:A}=performance.timing,B=u===null?Math.max(c,a,T-A||0):0;t.send(kr(y,a>d?a:d,B))}})}}function bn(t){const e=t.defaultView;return[e&&e.scrollX||t.documentElement&&t.documentElement.scrollLeft||t.body&&t.body.scrollLeft||0,e&&e.scrollY||t.documentElement&&t.documentElement.scrollTop||t.body&&t.body.scrollTop||0]}function ca(t,e){let n=!1;const s=new Map;function i(l){Us(l)&&(ke(l)&&s.set(l,[l.scrollLeft,l.scrollTop]),wt(l)&&s.set(l,bn(l)))}const r=t.safe(()=>{e||t.send(dr(...bn(document)))}),o=t.safe((l,a)=>{const d=t.nodes.getID(a);d!==void 0&&t.send(br(d,l[0],l[1]))});t.attachStartCallback(r),t.attachStopCallback(()=>{n=!1,s.clear()}),t.nodes.attachNodeCallback((l,a)=>{a&&(ke(l)&&l.scrollLeft+l.scrollTop>0?s.set(l,[l.scrollLeft,l.scrollTop]):wt(l)&&s.set(l,bn(l))),St(l)&&t.nodes.attachNodeListener(l,"scroll",d=>{i(d.target)})}),t.attachEventListener(document,"scroll",l=>{const a=l.target;if(a===document){n=!0;return}i(a)}),t.ticker.attach(()=>{n&&(r(),n=!1),s.forEach(o),s.clear()},5,!1)}function la(t){let e,n,s,i,r=document.referrer;const o=t.safe(()=>{const{URL:d}=document;d!==e&&(e=d,t.send(Ur(e,r,i,document.title)),i=0,r=e)}),l=t.safe(()=>{const{innerWidth:d,innerHeight:c}=window;(d!==n||c!==s)&&(n=d,s=c,t.send(lr(n,s)))}),a=document.hidden===void 0?Function.prototype:t.safe(()=>t.send(Nr(document.hidden)));t.attachStartCallback(()=>{e=null,i=ze(),n=s=-1,o(),l(),a()}),document.hidden!==void 0&&t.attachEventListener(document,"visibilitychange",a,!1,!1),t.ticker.attach(o,1,!1),t.ticker.attach(l,5,!1)}function hi(t){return St(t)&&!!t.adoptedStyleSheets}let da=15;function ui(){return da++}const _t=new Map;function ha(t){if(t===null||!hi(document))return;const e=new Map,n=new Map,s=o=>setTimeout(()=>{let l=t.nodes.getID(o);if(o===document&&(l=0),l===void 0)return;let a=n.get(l);a||(a=[]);const d=[],c=o.adoptedStyleSheets;if(c&&Symbol.iterator in c)for(const u of c){let p=e.get(u);const v=!p;if(p||(p=ui(),e.set(u,p)),a.includes(p)||t.send(_s(p,l)),v){const S=u.cssRules;for(let y=0;y<S.length;y++)t.send(Jt(p,S[y].cssText,y,t.getBaseHref()))}d.push(p)}if(Symbol.iterator in a)for(const u of a)d.includes(u)||t.send(Lr(u,l));n.set(l,d)},20);function i(o){const l=Object.getOwnPropertyDescriptor(o,"adoptedStyleSheets");l&&Object.defineProperty(o,"adoptedStyleSheets",{...l,set:function(a){const d=l.set.call(this,a);return s(this),d}})}const r=o=>{if(o.__openreplay_adpss_patched__)return;o.__openreplay_adpss_patched__=!0,i(o.Document.prototype),i(o.ShadowRoot.prototype);const{replace:l,replaceSync:a}=o.CSSStyleSheet.prototype;o.CSSStyleSheet.prototype.replace=function(d){return l.call(this,d).then(c=>{const u=e.get(this);return u&&t.send(Is(u,d,t.getBaseHref())),c})},o.CSSStyleSheet.prototype.replaceSync=function(d){const c=e.get(this);return c&&t.send(Is(c,d,t.getBaseHref())),a.call(this,d)}};r(window),t.observer.attachContextCallback(t.safe(r)),t.attachStopCallback(()=>{e.clear(),n.clear()}),t.attachStartCallback(()=>{s(document)}),t.nodes.attachNodeCallback(o=>{hi(o)&&s(o)})}function ua(t){if(t===null)return;if(!window.CSSStyleSheet){t.send(Rr("no_stylesheet_prototype_in_window",""));return}const e=t.safe((i,r,o)=>{const l=_t.get(i);l&&(typeof o=="string"?t.send(Jt(l,o,r,t.getBaseHref())):t.send(Cs(l,r)))}),n=t.safe(i=>{let r=i;for(;r.parentRule;)r=r.parentRule;const o=r.parentStyleSheet;if(!o){t.debug.warn("No parent StyleSheet found for",r,i);return}const l=_t.get(o);if(!l){t.debug.warn("No sheedID found for",o,_t);return}const a=r.cssText,d=o.cssRules,c=Array.from(d).indexOf(r);c>=0?(t.send(Jt(l,a,c,t.getBaseHref())),t.send(Cs(l,c+1))):t.debug.warn("Rule index not found in",o,r)}),s=t.safe(i=>{const{insertRule:r,deleteRule:o}=i.CSSStyleSheet.prototype,{insertRule:l,deleteRule:a}=i.CSSGroupingRule.prototype;i.CSSStyleSheet.prototype.insertRule=function(d,c=0){return e(this,c,d),r.call(this,d,c)},i.CSSStyleSheet.prototype.deleteRule=function(d){return e(this,d),o.call(this,d)},i.CSSGroupingRule.prototype.insertRule=function(d,c=0){const u=l.call(this,d,c);return n(this),u},i.CSSGroupingRule.prototype.deleteRule=function(d=0){const c=a.call(this,d);return n(this),c}});s(window),t.observer.attachContextCallback(s),t.nodes.attachNodeCallback(i=>{if(!Q(i,"style")||!i.sheet||i.textContent!==null&&i.textContent.trim().length>0)return;const r=t.nodes.getID(i);if(!r)return;const o=i.sheet,l=ui();_t.set(o,l),t.send(_s(l,r));const a=o.cssRules;for(let d=0;d<a.length;d++)e(o,d,a[d].cssText)})}function fa(t){function e(s){const i=t.nodes.getID(s);i!==void 0&&t.send(Es(i))}let n=!1;t.nodes.attachNodeCallback(s=>{Q(s,"body")&&(t.nodes.attachNodeListener(s,"focus",i=>{Us(i.target)&&(e(i.target),n=!1)}),t.nodes.attachNodeListener(s,"blur",i=>{i.relatedTarget===null&&(n=!0,setTimeout(()=>{n&&t.send(Es(-1))},0))}))}),t.attachStartCallback(()=>{let s=document.activeElement;for(;s&&Q(s,"iframe")&&s.contentDocument;)s=s.contentDocument.activeElement;s&&s!==s.ownerDocument.body&&e(s)},!0)}function pa(t){if(!window.FontFace)return;const e=new Map,n=s=>{class i extends s.FontFace{constructor(...o){if(typeof o[1]=="string"){let l="";o[2]&&t.safe(()=>{l=JSON.stringify(o[2])});const a=[o[0],o[1],l],d=e.get(s.document)||[];d.push(a),e.set(s.document,d);const c=s===window?0:t.nodes.getID(s.document);if(c===void 0)return;t.active()&&t.send(Ts(c,...a))}super(...o)}}s.FontFace=i};t.observer.attachContextCallback(n),n(window),t.nodes.attachNodeCallback(t.safe(s=>{if(!wt(s))return;const i=e.get(s);if(!i)return;const r=s.defaultView===window?0:t.nodes.getID(s);r!==void 0&&i.forEach(o=>{t.send(Ts(r,...o))})}))}function ga(t,e,n,s,i){t.debug.log("Openreplay: attaching axios spy to instance",e);function r(p){t.debug.log("Openreplay: capturing axios response data",p);const{headers:v,data:S,method:y,url:T,baseURL:A}=p.config,{data:B,headers:D,status:k,response:N}=p,{data:O,headers:L,status:I}=N||{},E=n.ignoreHeaders,P=Array.isArray(E)?U=>E.includes(U):()=>E;function V(U,b){P(b[0])||(U[b[0]]=b[1])}let j={},q={};v.toJSON?j=v.toJSON():v instanceof Headers?v.forEach((U,b)=>V(j,[b,U])):Array.isArray(v)?v.forEach(U=>V(j,U)):typeof v=="object"&&Object.entries(v).forEach(U=>V(j,U));const C=L||D;C.toJSON?q=C.toJSON():C instanceof Headers?C.forEach((U,b)=>V(q,[b,U])):Array.isArray(C)?C.forEach(U=>V(q,U)):typeof C=="object"&&Object.entries(C).forEach(([U,b])=>{P(U)||(q[U]=b)});const F=s({url:T,method:y||"",status:k||I||0,request:{headers:j,body:S},response:{headers:q,body:O||B}});if(!F){t.debug.log("Openreplay: empty request/response info, skipping");return}const G=p.config.__openreplay_timing,K=performance.now()-G;t.debug.log("Openreplay: final req object",F),t.send(mt("xhr",String(y),String(F.url),i(F.request),i(F.response),F.status,G+ze(),K,0))}function o(p){if(t.debug.log("Openreplay: capturing API request",p),p.__openreplay_timing=performance.now(),n.sessionTokenHeader){const v=typeof n.sessionTokenHeader=="string"?n.sessionTokenHeader:"X-OpenReplay-Session-Token",S=t.getSessionToken();S&&p.headers.set(v,S)}return p}function l(p){return n.failuresOnly||r(p),p}function a(p){return t.debug.log("Openreplay: capturing API request error",p),ma(p)&&p.response?r(p.response):p instanceof Error&&t.send(kt(p,[])),Promise.reject(p)}function d(p){t.debug.log("Openreplay: failed API request, skipping",p)}const c=e.interceptors.request.use(o,d,{synchronous:!0}),u=e.interceptors.response.use(l,a,{synchronous:!0});t.attachStopCallback(()=>{var p,v,S,y;(v=(p=e.interceptors.request).eject)==null||v.call(p,c),(y=(S=e.interceptors.response).eject)==null||y.call(S,u)})}function ma(t){return ba(t)&&t.isAxiosError===!0}function ba(t){return t!==null&&typeof t=="object"}var ye;(function(t){t[t.UNSENT=0]="UNSENT",t[t.OPENED=1]="OPENED",t[t.HEADERS_RECEIVED=2]="HEADERS_RECEIVED",t[t.LOADING=3]="LOADING",t[t.DONE=4]="DONE"})(ye||(ye={}));class vn{constructor(e=[],n,s){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.id="",this.name="",this.method="",this.url="",this.status=0,this.statusText="",this.cancelState=0,this.readyState=0,this.header={},this.responseType="",this.requestHeader={},this.responseSize=0,this.responseSizeText="",this.startTime=0,this.endTime=0,this.duration=0,this.getData={},this.requestData=null}getMessage(){const{reqHs:e,resHs:n}=this.writeHeaders(),s={headers:e,body:this.method==="GET"?JSON.stringify(this.getData):this.requestData},i={headers:n,body:this.response},r=this.sanitize({url:this.url,method:this.method,status:this.status,request:s,response:i});if(r)return mt(this.requestType,r.method,r.url,JSON.stringify(r.request),JSON.stringify(r.response),r.status,this.startTime+ze(),this.duration,this.responseSize)}writeHeaders(){const e={};Object.entries(this.requestHeader).forEach(([s,i])=>{this.isHeaderIgnored(s)||(e[s]=i)}),this.setSessionTokenHeader((s,i)=>{e[s]=i});const n={};return Object.entries(this.header).forEach(([s,i])=>{this.isHeaderIgnored(s)||(n[s]=i)}),{reqHs:e,resHs:n}}isHeaderIgnored(e){return Array.isArray(this.ignoredHeaders)?this.ignoredHeaders.map(n=>n.toLowerCase()).includes(e.toLowerCase()):this.ignoredHeaders}}const Qe=(t,e)=>{let n="";switch(t){case"":case"text":case"json":typeof e=="string"?n=e:wn(e)||Array.isArray(e)?n=JSON.stringify(e):typeof e<"u"&&(n=Object.prototype.toString.call(e));break;case"blob":case"document":case"arraybuffer":default:typeof e<"u"&&(n=Object.prototype.toString.call(e));break}return n},yn=t=>{if(!t)return null;let e;if(typeof t=="string"){(t[0]==="{"||t[0]==="[")&&(e=t);const n=t.split("&");n.length===1?e=t:e=n.join(",")}else if(ya(t)){const n=[];for(const[s,i]of t)n.push(`${s}=${typeof i=="string"?i:"[object Object]"}`);e=n.join(",")}else t instanceof Blob||t instanceof ReadableStream||t instanceof ArrayBuffer?e="byte data":wn(t)?e=t:e=`can't parse body ${typeof t}`;return e},va=(t,e={})=>{wn(e)||(e={});let n=t?t.split("?"):[];if(n.shift(),n.length>0){n=n.join("?").split("&");for(const s of n){const i=s.split("=");try{e[i[0]]=decodeURIComponent(i[1])}catch{e[i[0]]=i[1]}}}return e};function wn(t){return t!==null&&typeof t=="object"}function ya(t){return t==null||ArrayBuffer.isView(t)?!1:typeof Symbol<"u"&&typeof t[Symbol.iterator]=="function"}function Nt(t){return t<=0?"":t>=1e3*1e3?(t/1e3/1e3).toFixed(1)+" MB":t>=1e3?(t/1e3).toFixed(1)+" KB":`${t}B`}const Sn=t=>(t.startsWith("//")&&(t=`${new URL(window.location.href).protocol}${t}`),t.startsWith("http")?new URL(t):new URL(t,window.location.href));class wa{constructor(e,n){this.resp=e,this.item=n,this.mockReader()}set(e,n,s){return Reflect.set(e,n,s)}get(e,n){const s=Reflect.get(e,n);switch(n){case"arrayBuffer":case"blob":case"formData":case"json":case"text":return()=>(this.item.responseType=n.toLowerCase(),s.apply(e).then(i=>(this.item.response=Qe(this.item.responseType,i),i)))}return typeof s=="function"?s.bind(e):s}mockReader(){let e;if(!this.resp.body||typeof this.resp.body.getReader!="function")return;const n=this.resp.body.getReader;this.resp.body.getReader=()=>{const s=n.apply(this.resp.body);if(this.item.readyState===ye.DONE)return s;const i=s.read,r=s.cancel;return this.item.responseType="arraybuffer",s.read=()=>i.apply(s).then(o=>{if(!e)e=new Uint8Array(o.value);else{const l=new Uint8Array(e.length+o.value.length);l.set(e),l.set(o.value,e.length),e=l}return this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.readyState=o.done?4:3,this.item.statusText=o.done?String(this.item.status):"Loading",this.item.responseSize=e.length,this.item.responseSizeText=Nt(this.item.responseSize),o.done&&(this.item.response=Qe(this.item.responseType,e)),o}),s.cancel=(...o)=>(this.item.cancelState=2,this.item.statusText="Cancel",this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.response=Qe(this.item.responseType,e),r.apply(s,o)),s}}}class Sa{constructor(e,n,s,i,r,o){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.sendMessage=i,this.isServiceUrl=r,this.tokenUrlMatcher=o}apply(e,n,s){const i=s[0],r=s[1];if(!i||typeof i!="string"&&!(i!=null&&i.url)||(i instanceof URL||typeof i=="string"?this.isServiceUrl(String(i)):this.isServiceUrl(String(i.url))))return e.apply(window,s);const l=new vn(this.ignoredHeaders,this.setSessionTokenHeader,this.sanitize);return this.beforeFetch(l,i,r),this.setSessionTokenHeader((a,d)=>{if(!(this.tokenUrlMatcher!==void 0&&!this.tokenUrlMatcher(l.url))){if(s[1]===void 0&&s[0]instanceof Request)return s[0].headers.append(a,d);s[1]||(s[1]={}),s[1].headers===void 0&&(s[1]={...s[1],headers:{}}),s[1].headers instanceof Headers?s[1].headers.append(a,d):Array.isArray(s[1].headers)?s[1].headers.push([a,d]):s[1].headers[a]=d}}),e.apply(window,s).then(this.afterFetch(l)).catch(a=>{throw l.endTime=performance.now(),l.duration=l.endTime-(l.startTime||l.endTime),a})}beforeFetch(e,n,s){let i,r="GET",o={};if(typeof n=="string"?(r=(s==null?void 0:s.method)||"GET",i=Sn(n),o=(s==null?void 0:s.headers)||{}):(r=n.method||"GET",i=Sn(n.url),o=n.headers),e.method=r,e.requestType="fetch",e.requestHeader=o,e.url=i.toString(),e.name=(i.pathname.split("/").pop()||"")+i.search,e.status=0,e.statusText="Pending",e.readyState=1,e.startTime||(e.startTime=performance.now()),Object.prototype.toString.call(o)==="[object Headers]"){e.requestHeader={};for(const[l,a]of o)e.requestHeader[l]=a}else e.requestHeader=o;if(i.search&&i.searchParams){e.getData={};for(const[l,a]of i.searchParams)e.getData[l]=a}s!=null&&s.body&&(e.requestData=yn(s.body))}afterFetch(e){return n=>{e.endTime=performance.now(),e.duration=e.endTime-(e.startTime||e.endTime),e.status=n.status,e.statusText=String(n.status);let s=!1;e.header={};for(const[i,r]of n.headers)e.header[i]=r,s=r.toLowerCase().indexOf("chunked")>-1?!0:s;return s?e.readyState=3:(e.readyState=4,this.handleResponseBody(n.clone(),e).then(i=>{e.responseSize=typeof i=="string"?i.length:i.byteLength,e.responseSizeText=Nt(e.responseSize),e.response=Qe(e.responseType,i);const r=e.getMessage();r&&this.sendMessage(r)}).catch(i=>{if(i.name!=="AbortError")throw i})),new Proxy(n,new wa(n,e))}}handleResponseBody(e,n){const s=e.headers.get("content-type");return s&&s.includes("application/json")?(n.responseType="json",e.text()):s&&(s.includes("text/html")||s.includes("text/plain"))?(n.responseType="text",e.text()):(n.responseType="arraybuffer",e.arrayBuffer())}}class xa{static create(e,n,s,i,r,o){return new Proxy(fetch,new Sa(e,n,s,i,r,o))}}class ka{constructor(e,n,s,i,r,o,l){this.ignoredHeaders=n,this.setSessionTokenHeader=s,this.sanitize=i,this.sendMessage=r,this.isServiceUrl=o,this.tokenUrlMatcher=l,this.XMLReq=e,this.XMLReq.onreadystatechange=()=>{this.onReadyStateChange()},this.XMLReq.onabort=()=>{this.onAbort()},this.XMLReq.ontimeout=()=>{this.onTimeout()},this.item=new vn(n,s,i),this.item.requestType="xhr"}get(e,n){switch(n){case"open":return this.getOpen(e);case"send":return this.setSessionTokenHeader((i,r)=>{this.tokenUrlMatcher!==void 0&&!this.tokenUrlMatcher(this.item.url)||e.setRequestHeader(i,r)}),this.getSend(e);case"setRequestHeader":return this.getSetRequestHeader(e);default:const s=Reflect.get(e,n);return typeof s=="function"?s.bind(e):s}}set(e,n,s){switch(n){case"onreadystatechange":return this.setOnReadyStateChange(e,n,s);case"onabort":return this.setOnAbort(e,n,s);case"ontimeout":return this.setOnTimeout(e,n,s)}return Reflect.set(e,n,s)}onReadyStateChange(){if(!(this.item.url&&this.isServiceUrl(this.item.url))&&(this.item.readyState=this.XMLReq.readyState,this.item.responseType=this.XMLReq.responseType,this.item.endTime=performance.now(),this.item.duration=this.item.endTime-this.item.startTime,this.updateItemByReadyState(),setTimeout(()=>{this.item.response=Qe(this.item.responseType,this.item.response)},0),this.XMLReq.readyState===ye.DONE)){const e=this.item.getMessage();e&&this.sendMessage(e)}}onAbort(){this.item.cancelState=1,this.item.statusText="Abort";const e=this.item.getMessage();e&&this.sendMessage(e)}onTimeout(){this.item.cancelState=3,this.item.statusText="Timeout";const e=this.item.getMessage();e&&this.sendMessage(e)}getOpen(e){const n=Reflect.get(e,"open");return(...s)=>{var o,l;const i=s[0],r=s[1];return this.item.method=i?i.toUpperCase():"GET",this.item.url=((o=r.toString)==null?void 0:o.call(r))||"",this.item.name=((l=this.item.url)==null?void 0:l.replace(new RegExp("/*$"),"").split("/").pop())??"",this.item.getData=va(this.item.url,{}),n.apply(e,s)}}getSend(e){const n=Reflect.get(e,"send");return(...s)=>{const i=s[0];return this.item.requestData=yn(i),n.apply(e,s)}}getSetRequestHeader(e){const n=Reflect.get(e,"setRequestHeader");return(...s)=>(this.item.requestHeader||(this.item.requestHeader={}),this.item.requestHeader[s[0]]=s[1],n.apply(e,s))}setOnReadyStateChange(e,n,s){return Reflect.set(e,n,(...i)=>{this.onReadyStateChange(),s==null||s.apply(e,i)})}setOnAbort(e,n,s){return Reflect.set(e,n,(...i)=>{this.onAbort(),s.apply(e,i)})}setOnTimeout(e,n,s){return Reflect.set(e,n,(...i)=>{this.onTimeout(),s.apply(e,i)})}updateItemByReadyState(){switch(this.XMLReq.readyState){case ye.UNSENT:case ye.OPENED:this.item.status=ye.UNSENT,this.item.statusText="Pending",this.item.startTime||(this.item.startTime=performance.now());break;case ye.HEADERS_RECEIVED:this.item.status=this.XMLReq.status,this.item.statusText="Loading",this.item.header={};const e=this.XMLReq.getAllResponseHeaders()||"",n=e.split(`
666
+ `);for(let s=0;s<n.length;s++){const i=n[s];if(!i)continue;const r=i.split(": "),o=r[0];this.item.header[o]=r.slice(1).join(": ")}break;case ye.LOADING:this.item.status=this.XMLReq.status,this.item.statusText="Loading",this.XMLReq.response&&this.XMLReq.response.length&&(this.item.responseSize=this.XMLReq.response.length,this.item.responseSizeText=Nt(this.item.responseSize));break;case ye.DONE:this.item.status=this.XMLReq.status||this.item.status||0,this.item.statusText=String(this.item.status),this.item.endTime=performance.now(),this.item.duration=this.item.endTime-(this.item.startTime||this.item.endTime),this.item.response=this.XMLReq.response,this.XMLReq.response&&this.XMLReq.response.length&&(this.item.responseSize=this.XMLReq.response.length,this.item.responseSizeText=Nt(this.item.responseSize));break;default:this.item.status=this.XMLReq.status,this.item.statusText="Unknown";break}}}class Ta{static create(e,n,s,i,r,o){return new Proxy(XMLHttpRequest,{construct(l){const a=new l;return new Proxy(a,new ka(a,e,n,s,i,r,o))}})}}const Ea=t=>t instanceof Blob?t.type:t instanceof FormData?"multipart/form-data":t instanceof URLSearchParams?"application/x-www-form-urlencoded;charset=UTF-8":"text/plain;charset=UTF-8";class Ia{constructor(e,n,s,i,r){this.ignoredHeaders=e,this.setSessionTokenHeader=n,this.sanitize=s,this.sendMessage=i,this.isServiceUrl=r}apply(e,n,s){const i=s[0],r=s[1],o=new vn(this.ignoredHeaders,this.setSessionTokenHeader,this.sanitize);if(this.isServiceUrl(i))return e.apply(n,s);const l=Sn(i);if(o.method="POST",o.url=i,o.name=(l.pathname.split("/").pop()||"")+l.search,o.requestType="beacon",o.requestHeader={"Content-Type":Ea(r)},o.status=0,o.statusText="Pending",l.search&&l.searchParams){o.getData={};for(const[c,u]of l.searchParams)o.getData[c]=u}o.requestData=yn(r),o.startTime||(o.startTime=performance.now());const a=e.apply(n,s);a?(o.endTime=performance.now(),o.duration=o.endTime-(o.startTime||o.endTime),o.status=0,o.statusText="Sent",o.readyState=4):(o.status=500,o.statusText="Unknown");const d=o.getMessage();return d&&this.sendMessage(d),a}}class qe{static hasSendBeacon(){return!!qe.origSendBeacon}static create(e,n,s,i,r){if(qe.hasSendBeacon())return new Proxy(qe.origSendBeacon,new Ia(e,n,s,i,r))}}qe.origSendBeacon=(bi=window==null?void 0:window.navigator)==null?void 0:bi.sendBeacon;const fi=t=>console.warn(`Openreplay: Can't find ${t} in global context.
667
+ If you're using serverside rendering in your app, make sure that tracker is loaded dynamically, otherwise ${t} won't be tracked.`);function Ca(t,e,n,s,i,r,o){var l;t.XMLHttpRequest?t.XMLHttpRequest=Ta.create(e,n,s,i,r,o):fi("XMLHttpRequest"),t.fetch?t.fetch=xa.create(e,n,s,i,r,o):fi("fetch"),(l=t==null?void 0:t.navigator)!=null&&l.sendBeacon&&(t.navigator.sendBeacon=qe.create(e,n,s,i,r))}function xn(t){return t.__or_req_data__||(t.__or_req_data__={body:void 0,headers:{}}),t.__or_req_data__}function pi(t){return typeof t=="string"?t.toUpperCase():"GET"}function _a(t,e={}){const n=Object.assign({failuresOnly:!1,ignoreHeaders:["cookie","set-cookie","authorization"],capturePayload:!1,sessionTokenHeader:!1,captureInIframes:!0,axiosInstances:void 0,useProxy:!0},e);n.useProxy===!1&&t.debug.warn("Network module is migrating to proxy api, to gradually migrate and test it set useProxy to true");const s=n.ignoreHeaders,i=Array.isArray(s)?c=>s.includes(c):()=>s,r=n.sessionTokenHeader===!0?"X-OpenReplay-SessionToken":n.sessionTokenHeader;function o(c){if(r){const u=t.getSessionToken();u&&t.safe(c)(r,u)}}function l(c){if(n.capturePayload||(delete c.request.body,delete c.response.body),n.sanitizer){const u=c.response.body;if(typeof u=="string")try{c.response.body=JSON.parse(u)}catch{}return n.sanitizer(c)}return c}function a(c){if(c&&typeof c.body!="string")try{c.body=JSON.stringify(c.body)}catch{c.body="<unable to stringify>",t.notify.warn("Openreplay fetch couldn't stringify body:",c.body)}return JSON.stringify(c)}const d=c=>{if(n.useProxy)return Ca(c,n.ignoreHeaders,o,l,D=>t.send(D),D=>t.isServiceURL(D),n.tokenUrlMatcher);const u=c.fetch.bind(c),p=(D,k={})=>{if(!(typeof D=="string"||D instanceof URL)||t.isServiceURL(String(D)))return u(D,k);o(function(O,L){k.headers===void 0&&(k.headers={}),k.headers instanceof Headers?k.headers.append(O,L):Array.isArray(k.headers)?k.headers.push([O,L]):k.headers[O]=L});const N=performance.now();return u(D,k).then(O=>{const L=performance.now()-N;if(n.failuresOnly&&O.status<400)return O;const I=O.clone();return I.text().then(E=>{const P={},V={};if(s!==!0){const C=([F,G])=>{i(F)||(P[F]=G)};k.headers instanceof Headers?k.headers.forEach((F,G)=>C([G,F])):Array.isArray(k.headers)?k.headers.forEach(C):typeof k.headers=="object"&&Object.entries(k.headers).forEach(C),I.headers.forEach((F,G)=>{i(G)||(V[G]=F)})}const j=pi(k.method),q=l({url:String(D),method:j,status:I.status,request:{headers:P,body:k.body||null},response:{headers:V,body:E}});q&&t.send(mt("fetch",j,String(q.url),a(q.request),a(q.response),I.status,N+ze(),L,0))}).catch(E=>t.debug.error("Could not process Fetch response:",E)),O})};c.fetch=p;const v=c.XMLHttpRequest.prototype.open,S=c.XMLHttpRequest.prototype.setRequestHeader,y=c.XMLHttpRequest.prototype.send;function T(D,k){const N=this;o((L,I)=>N.setRequestHeader(L,I));let O=0;return N.addEventListener("loadstart",L=>{O=L.timeStamp}),N.addEventListener("load",t.safe(L=>{const{headers:I,body:E}=xn(N),P=O>0?L.timeStamp-O:0,j=(N.getAllResponseHeaders()||"").trim().split(/[\r\n]+/),q={};j.forEach(function(G){const K=G.split(": "),U=K.shift();i(U)||(q[U]=K.join(": "))});const C=pi(D),F=l({url:String(k),method:C,status:N.status,request:{headers:I,body:E||null},response:{headers:q,body:N.response}});F&&t.send(mt("xhr",C,String(F.url),a(F.request),a(F.response),N.status,O+ze(),P,0))})),v.apply(this,arguments)}function A(D){const k=xn(this);return k.body=D,y.apply(this,arguments)}function B(D,k){if(!i(D)){const N=xn(this);N.headers[D]=k}return S.apply(this,arguments)}n.axiosInstances||(c.XMLHttpRequest.prototype.open=T,c.XMLHttpRequest.prototype.send=A,c.XMLHttpRequest.prototype.setRequestHeader=B)};d(window),n.axiosInstances&&n.axiosInstances.forEach(c=>{ga(t,c,n,l,a)}),n.captureInIframes&&t.observer.attachContextCallback(t.safe(d))}function Na(t){t.attachEventListener(document,"selectionchange",()=>{const e=document.getSelection();if(e!==null&&!e.isCollapsed){const n=t.nodes.getID(e.anchorNode),s=t.nodes.getID(e.focusNode),i=e.toString().replace(/\s+/g," ");n&&s&&t.send(Ns(n,s,i))}else t.send(Ns(-1,-1,""))})}function Oa(t){function e(){document.hidden||(t.debug.log("Openreplay: tab change to"+t.session.getTabId()),t.send(bt(t.session.getTabId())))}t.attachEventListener(window,"focus",e,!1,!1)}const Ot="/installation/javascript-sdk";function Ra(t){if(t==null)return console.error(`OpenReplay: invalid options argument type. Please, check documentation on ${gt}${Ot}`),!1;if(typeof t.projectKey!="string")if(typeof t.projectKey!="number"){if(typeof t.projectID!="number")return console.error(`OpenReplay: projectKey is missing or wrong type (string is expected). Please, check ${gt}${Ot} for more information.`),!1;t.projectKey=t.projectID.toString(),Ce("`projectID` option","`projectKey` option",Ot)}else console.warn("OpenReplay: projectKey is expected to have a string type."),t.projectKey=t.projectKey.toString();return t.sessionToken!=null&&Ce("`sessionToken` option","`sessionHash` start() option","/"),!0}class Aa{constructor(e){var l;if(this.options=e,this.app=null,this.crossdomainMode=!1,this.checkDoNotTrack=()=>this.options.respectDoNotTrack&&(navigator.doNotTrack=="1"||window.doNotTrack=="1"),this.signalStartIssue=(a,d)=>{const c=this.checkDoNotTrack(),u=new XMLHttpRequest,p=this.options.ingestPoint||Ws;u.open("POST",p+"/v1/web/not-started"),u.send(JSON.stringify({trackerVersion:"14.0.4",projectKey:this.options.projectKey,doNotTrack:c,reason:d.length?`missing api: ${d.join(",")}`:a}))},this.restartCanvasTracking=()=>{this.app!==null&&this.app.restartCanvasTracking()},this.handleError=(a,d={})=>{if(this.app!==null){if(a instanceof Error){const c=kt(a,[],d);this.app.send(c)}else if(a instanceof ErrorEvent||"PromiseRejectionEvent"in window&&a instanceof PromiseRejectionEvent){const c=Qs(a,void 0,d);c!=null&&this.app.send(c)}}},this.crossdomainMode=!!(rr()&&((l=e.crossdomain)!=null&&l.enabled)),!be||!Ra(e))return;if(window.__OPENREPLAY__){console.error("OpenReplay: one tracker instance has been initialised already");return}if(!e.__DISABLE_SECURE_MODE&&location.protocol!=="https:"){console.error("OpenReplay: Your website must be publicly accessible and running on SSL in order for OpenReplay to properly capture and replay the user session. You can disable this check by setting `__DISABLE_SECURE_MODE` option to `true` if you are testing in localhost. Keep in mind, that asset files on a local machine are not available to the outside world. This might affect tracking if you use css files.");return}const n=this.checkDoNotTrack(),s=[],i=["Map","Set","MutationObserver","performance","timing","startsWith","Blob","Worker"];if(n)s.push("doNotTrack");else for(const a of i)if(a==="timing"){if("performance"in window&&!(a in performance)){s.push(a);break}}else if(a==="startsWith"){if(!(a in String.prototype)){s.push(a);break}}else if(!(a in window)){s.push(a);break}if(s.length>0){const a=s.join(",");console.error(`OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${a}`),this.signalStartIssue("missing_api",s);return}const r=new No(e.projectKey,e.sessionToken,e,this.signalStartIssue,this.crossdomainMode);this.app=r,this.crossdomainMode||(la(r),Oo(r),Hr(r,e),Oa(r)),ia(r,e.mouse),ca(r,this.crossdomainMode),ua(r),ha(r),Lo(r,e),Bo(r,e),Uo(r),Go(r,e),aa(r,e),fa(r),pa(r),_a(r,e.network),Na(r),window.__OPENREPLAY__=this,e.flags&&e.flags.onFlagsLoad&&this.onFlagsLoad(e.flags.onFlagsLoad);const o=window.open;(e.autoResetOnWindowOpen||e.resetTabOnWindowOpen)&&(r.attachStartCallback(()=>{const a=r.getTabId(),d=r.sessionStorage??window.sessionStorage;window.open=function(...c){return e.autoResetOnWindowOpen&&r.resetNextPageSession(!0),e.resetTabOnWindowOpen&&d.removeItem(e.session_tabid_key||"__openreplay_tabid"),r.resetNextPageSession(!1),d.setItem(e.session_tabid_key||"__openreplay_tabid",a),o.call(window,...c)}}),r.attachStopCallback(()=>{window.open=o}))}isFlagEnabled(e){return this.featureFlags.isFlagEnabled(e)}onFlagsLoad(e){var n;(n=this.app)==null||n.featureFlags.onFlagsLoad(e)}clearPersistFlags(){var e;(e=this.app)==null||e.featureFlags.clearPersistFlags()}reloadFlags(){var e;return(e=this.app)==null?void 0:e.featureFlags.reloadFlags()}getFeatureFlag(e){var n;return(n=this.app)==null?void 0:n.featureFlags.getFeatureFlag(e)}getAllFeatureFlags(){var e;return(e=this.app)==null?void 0:e.featureFlags.flags}use(e){return e(this.app,this.options)}isActive(){return this.app===null?!1:this.app.active()}trackWs(e){if(this.app!==null)return this.app.trackWs(e)}start(e){return this.browserEnvCheck()?this.app===null?Promise.reject("Browser doesn't support required api, or doNotTrack is active."):this.app.start(e):Promise.reject("Trying to start not in browser.")}browserEnvCheck(){return be?!0:(console.error(`OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \`tracker.start()\` line. Check documentation on ${gt}${Ot}`),!1)}coldStart(e,n){if(this.browserEnvCheck()){if(this.app===null)return Promise.reject("Tracker not initialized");this.app.coldStart(e,n)}else return Promise.reject("Trying to start not in browser.")}startOfflineRecording(e,n){return this.browserEnvCheck()?this.app===null?Promise.reject("Tracker not initialized"):this.app.offlineRecording(e,n):Promise.reject("Trying to start not in browser.")}uploadOfflineRecording(){if(this.app!==null)return this.app.uploadOfflineRecording()}stop(){if(this.app!==null)return this.app.stop(),this.app.session.getSessionHash()}forceFlushBatch(){this.app!==null&&this.app.forceFlushBatch()}getSessionToken(){return this.app===null?null:this.app.getSessionToken()}getSessionInfo(){return this.app===null?null:this.app.session.getInfo()}getSessionID(){return this.app===null?null:this.app.getSessionID()}getTabId(){return this.app===null?null:this.app.getTabId()}getUxId(){return this.app===null?null:this.app.getUxtId()}sessionID(){return Ce("'sessionID' method","'getSessionID' method","/"),this.getSessionID()}getSessionURL(e){if(this.app!==null)return this.app.getSessionURL(e)}setUserID(e){typeof e=="string"&&this.app!==null&&this.app.session.setUserID(e)}userID(e){Ce("'userID' method","'setUserID' method","/"),this.setUserID(e)}setUserAnonymousID(e){typeof e=="string"&&this.app!==null&&this.app.send(Ir(e))}userAnonymousID(e){Ce("'userAnonymousID' method","'setUserAnonymousID' method","/"),this.setUserAnonymousID(e)}setMetadata(e,n){typeof e=="string"&&typeof n=="string"&&this.app!==null&&this.app.session.setMetadata(e,n)}metadata(e,n){Ce("'metadata' method","'setMetadata' method","/"),this.setMetadata(e,n)}event(e,n=null,s=!1){if(typeof e=="string"&&this.app!==null){if(s)return this.issue(e,n);try{n=JSON.stringify(n)}catch{return}this.app.send(Tr(e,n))}}issue(e,n=null){if(typeof e=="string"&&this.app!==null){try{n=JSON.stringify(n)}catch{return}this.app.send(Ar(e,n))}}}const Da=`
668
+ /* ===================== 1) Переменные и шрифты ===================== */
669
+ :root {
670
+ --wineater-corp-color: #0044FF;
671
+ --wineater-color: #7B2BEB;
672
+ }
673
+
674
+ /* Подключение шрифта Bricolage Grotesque (variable) */
675
+ @import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&display=swap');
676
+
677
+ /* ===================== 2) Базовые и глобальные стили ===================== */
678
+ * {
679
+ box-sizing: border-box;
680
+ }
681
+ body {
682
+ margin: 0;
683
+ padding: 0;
684
+ }
685
+ .hidden {
686
+ display: none;
687
+ }
688
+
689
+ /* ===================== 3) Контейнер виджета и layout ===================== */
665
690
  #wine-widget-container {
666
- display: flex;
667
- gap: 24px;
668
- font-family: 'Poppins', sans-serif;
669
- background-color: #f8f9fa;
670
- padding: 24px;
671
- padding-right: 48px;
672
- border-radius: 16px;
673
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
674
- box-sizing: border-box;
675
- z-index: 10000;
676
- max-width: 1200px;
677
- min-width: 1024px;
678
- min-height: 500px;
679
- margin: 40px auto;
691
+ display: flex;
692
+ gap: 24px;
693
+ font-family: 'Bricolage Grotesque', sans-serif;
694
+ padding: 24px 24px 0px;
695
+ border-radius: 16px;
696
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
697
+ max-width: 1024px;
698
+ min-width: 1024px;
699
+ min-height: 500px;
700
+ margin: 40px auto;
701
+ position: relative;
702
+ box-sizing: border-box;
680
703
  }
681
704
 
682
705
  .wine-widget-wrapper {
683
- width: 100%;
684
- }
685
- /* Левая часть */
686
- #wine-widget-left {
687
- flex: 0 0 40%;
706
+ width: 100%;
688
707
  }
689
708
 
690
- /* Правая часть */
691
709
  #wine-widget-right {
692
- display: block;
693
- position: relative;
694
- width: 100%;
710
+ position: relative;
711
+ min-height: 300px;
695
712
  }
696
713
 
714
+ /* Placeholder для вин (две колонки) */
697
715
  #wine-placeholder {
698
- flex: 0 0 60%;
699
- display: grid;
700
- grid-template-columns: repeat(2, 1fr);
701
- gap: 24px;
702
- min-height: 300px;
703
- min-width: 800px;
716
+ display: grid;
717
+ grid-template-columns: repeat(4, 1fr);
718
+ /* 4 колонки равной ширины */
719
+
720
+ gap: 0; /* если собираетесь делать собственные границы вместо отступов */
721
+ /* или gap: 24px, если нужны просто промежутки между карточками без линий. */
722
+
723
+ /* Дополнительные стили можно оставить/удалить по вкусу: */
724
+ align-items: stretch;
725
+ justify-content: ;
726
+ margin-bottom: 0; /* уберём промежуток, если вы хотите нарисовать свою линию */
727
+ }
728
+
729
+ #wine-placeholder:hover {
730
+ // cursor: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//cursor.svg'), pointer;
704
731
  }
705
732
 
706
- /* Заголовок */
733
+ /* ===================== 4) Шапка (заголовок, подзаголовок) ===================== */
707
734
  #wine-widget-header h1 {
708
- font-size: 24px;
709
- font-weight: bold;
710
- margin: 0;
711
- color: #333;
712
- text-align: center;
735
+ font-family: "Bricolage Grotesque", serif;
736
+ font-weight: 600;
737
+ font-size: 32px;
738
+ margin: 0 auto;
739
+ line-height: 1.3;
740
+ color: #333;
741
+ text-align: center;
713
742
  }
714
743
 
715
744
  #wine-widget-header p {
716
- font-size: 16px;
717
- color: #666;
718
- margin-top: 8px;
719
- text-align: center;
720
- padding: 0 15%;
745
+ font-size: 16px;
746
+ color: #666;
747
+ margin-top: 8px;
748
+ text-align: center;
749
+ padding: 0 15%;
721
750
  }
722
751
 
723
- /* Поле ввода */
724
- #wine-widget-search {
725
- display: flex;
726
- gap: 12px;
727
- align-items: center;
728
- margin: 12px 0;
752
+ /* ===================== 5) Иконки и цветные подписи (meal, mood...) ===================== */
753
+ .icon {
754
+ display: inline-block;
755
+ width: 1.2em;
756
+ height: 1.2em;
757
+ vertical-align: middle;
758
+ margin: 0 4px 0 2px;
759
+ background-repeat: no-repeat;
760
+ background-size: contain;
729
761
  }
730
- #wine-search-input::placeholder {
731
- opacity: 1;
732
- color: #7B2BEB; /* Фиолетовый цвет для текста placeholder */
733
- font-style: normal;
734
- transition: color 0.3s ease, opacity 0.3s ease-in-out;
762
+
763
+ .icon-meal {
764
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//meal1.svg');
765
+ }
766
+ .icon-meal:hover {
767
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//meal3.svg');
768
+ }
769
+ .icon-mood {
770
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//mood.svg');
771
+ }
772
+ .icon-budget {
773
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//budget.svg');
774
+ }
775
+ .icon-occasion {
776
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//ocasion.svg');
735
777
  }
736
778
 
737
- /* При активном фокусе инпута */
738
- #wine-search-input:focus::placeholder {
739
- opacity: 0.5; /* Полупрозрачный эффект */
740
- color: linear-gradient(90deg, #7B2BEB, #0044FF); /* Более светлый фиолетовый */
741
- font-style: normal;
779
+ /* Подпись к иконкам */
780
+ .icon-label {
781
+ color: var(--wineater-color);
782
+ font-weight: 500;
783
+ }
784
+
785
+ /* ===================== 6) Поисковая строка (input + кнопка) ===================== */
786
+ #wine-widget-search {
787
+ position: relative;
788
+ margin: 20px auto;
789
+ display: flex;
790
+ justify-content: center;
791
+ }
792
+
793
+ .search-icon {
794
+ position: absolute;
795
+ left: 12px;
796
+ top: 50%;
797
+ transform: translateY(-50%);
798
+ width: 24px;
799
+ height: 24px;
800
+ background-image: url('https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media//search.svg?x=1');
801
+ background-repeat: no-repeat;
802
+ background-size: contain;
803
+ z-index: 2;
742
804
  }
743
805
 
744
806
  #wine-search-input {
745
- flex: 1;
746
- padding: 12px 16px;
747
- border: 1px solid #ccc;
748
- border-radius: 8px;
749
- font-size: 16px;
750
- background-color: #fff;
751
- transition: border 0.2s ease;
807
+ width: 100%;
808
+ padding: 12px 60px 12px 40px; /* место под иконку и кнопку */
809
+ font-size: 16px;
810
+ border: 2px solid #D5D9EE;
811
+ border-radius: 10px;
812
+ outline: none;
813
+ transition: border 0.2s ease;
814
+ background-color: #fff;
815
+ }
816
+
817
+ #wine-search-input::placeholder {
818
+ color: var(--wineater-color);
819
+ opacity: 1;
820
+ transition: color 0.3s ease, opacity 0.3s ease-in-out;
752
821
  }
753
822
 
754
823
  #wine-search-input:focus {
755
- border-color: #7B2BEB;
756
- outline: none;
824
+ border-color: var(--wineater-color);
825
+ }
826
+ #wine-search-input:focus::placeholder {
827
+ opacity: 0.5;
757
828
  }
758
829
 
830
+ /* Кнопка поиска */
759
831
  #wine-search-button {
760
- padding: 12px 20px;
761
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
762
- color: white;
763
- border: none;
764
- border-radius: 8px;
765
- cursor: pointer;
766
- font-size: 16px;
767
- transition: all 0.2s ease;
832
+ position: absolute;
833
+ right: 6px;
834
+ top: 50%;
835
+ transform: translateY(-50%);
836
+ background-color: var(--wineater-color);
837
+ color: #fff;
838
+ border: none;
839
+ border-radius: 6px;
840
+ padding: 8px 16px;
841
+ font-size: 16px;
842
+ cursor: pointer;
843
+ transition: opacity 0.2s ease;
768
844
  }
769
-
770
845
  #wine-search-button:hover {
771
- transform: scale(1.05);
772
- box-shadow: 0 4px 12px rgba(123, 43, 235, 0.2);
846
+ opacity: 0.8;
773
847
  }
774
848
 
775
- /* Группы фильтров */
849
+ /* ===================== 7) Фильтр-группы ===================== */
776
850
  .filter-group {
777
- margin-bottom: 16px;
778
- display: flex;
779
- flex-direction: column;
851
+ margin-bottom: 16px;
852
+ display: flex;
853
+ flex-direction: column;
780
854
  }
781
855
 
782
856
  .filter-label {
783
- font-size: 16px;
784
- font-weight: bold;
785
- color: #333;
786
- margin-bottom: 8px;
857
+ font-size: 16px;
858
+ font-weight: bold;
859
+ color: #333;
860
+ margin-bottom: 8px;
787
861
  }
788
862
 
789
863
  .filter-buttons {
790
- display: flex;
791
- gap: 8px;
864
+ display: flex;
865
+ gap: 8px;
792
866
  }
793
867
 
794
868
  .filter-buttons button {
795
- padding: 10px 16px;
796
- border: 1px solid #ccc;
797
- border-radius: 8px;
798
- background: white;
799
- cursor: pointer;
800
- transition: all 0.2s ease;
801
- font-size: 14px;
802
- }
803
-
804
- .filter-buttons button.selected {
805
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
806
- color: white;
807
- border: none;
869
+ padding: 10px 16px;
870
+ border: 1px solid #ccc;
871
+ border-radius: 8px;
872
+ background: white;
873
+ cursor: pointer;
874
+ font-size: 14px;
875
+ transition: all 0.2s ease;
808
876
  }
809
-
810
877
  .filter-buttons button:hover {
811
- transform: scale(1.05);
812
- box-shadow: 0 4px 8px rgba(123, 43, 235, 0.15);
878
+ transform: scale(1.05);
879
+ box-shadow: 0 4px 8px rgba(123, 43, 235, 0.15);
813
880
  }
814
-
815
- /* Карточка рекомендации */
816
-
817
- .bar-widget #wine-placeholder {
818
- min-height: 0;
881
+ .filter-buttons button.selected {
882
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
883
+ color: white;
884
+ border: none;
819
885
  }
820
886
 
887
+ /* ===================== 8) Карточки рекомендаций (tiles) ===================== */
821
888
  .wine-recommendation-tile {
822
- display: flex;
823
- padding: 16px;
824
- border-radius: 16px;
825
- background-color: white;
826
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
827
- border: 1px solid #ddd;
828
- opacity: 0;
829
- transition: opacity 0.3s ease, transform 0.3s ease;
830
- gap: 16px;
831
- cursor: pointer;
889
+ display: flex;
890
+ flex-direction: column;
891
+ align-items: center; /* всё по центру */
892
+ text-align: center;
893
+ box-sizing: border-box;
894
+ padding: 16px 8px;
895
+ border-right: 2px solid #f6f7fd; /* убираем вертикальные линии (border-right) */
896
+ opacity: 0;
897
+ transform: translateY(20px); /* чтобы анимация была заметна */
898
+ transition: opacity 0.3s ease, transform 0.3s ease;
832
899
  }
833
-
834
- .wine-recommendation-tile img {
835
- width: 100%;
836
- height: auto;
837
- border-radius: 8px;
838
- margin-bottom: 8px;
900
+ .wine-recommendation-tile:last-child {
901
+ border-right: none;
839
902
  }
840
903
 
841
- .wine-recommendation-tile:hover {
842
- transform: scale(1.05);
843
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
904
+ .tile-top {
905
+ display: flex;
906
+ flex-direction: column;
907
+ align-items: center;
908
+ justify-content: flex-start;
909
+ /* justify-content: space-between; – не надо, т.к. элементы обычно идут последовательно */
844
910
  }
845
911
 
846
- #loading-indicator {
847
- position: absolute;
848
- top: 50%;
849
- left: 50%;
850
- transform: translate(-50%, -50%);
851
- z-index: 10000;
852
- text-align: center;
853
- }
854
912
 
855
- #loading-indicator.hidden {
856
- display: none;
913
+ /* Картинка */
914
+ .wine-image {
915
+ width: 180px; /* или 200px, на ваш вкус */
916
+ height: auto;
917
+ object-fit: contain; /* чтобы не обрезалось, если нужно */
918
+ margin: 0 auto 16px; /* отступ снизу */
919
+ display: block;
857
920
  }
858
921
 
859
- #loading-indicator img {
860
- width: 100px;
861
- height: 100px;
862
- animation: spin 1s linear infinite;
922
+ /* Детальный блок */
923
+ .tile-details {
924
+ /* Можно дополнительные отступы или нет */
925
+ display: flex;
926
+ flex-direction: column;
927
+ align-items: center;
928
+ /* т.к. заголовок и таблица по центру */
863
929
  }
864
930
 
865
- @keyframes spin {
866
- from {
867
- transform: rotate(0deg);
868
- }
869
- to {
870
- transform: rotate(360deg);
871
- }
931
+ /* Заголовок вина */
932
+ .wine-title {
933
+ font-size: 20px; /* крупнее */
934
+ font-weight: 700;
935
+ margin: 0 0 8px;
936
+ min-height: 3rem;
937
+ line-height: 1.2;
938
+ text-align: center;
939
+ color: #000;
872
940
  }
873
941
 
874
-
875
- .wine-recommendation-tile:hover {
876
- transform: scale(1.03);
877
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
942
+ .wine-params {
943
+ font-size: 14px;
944
+ color: #666;
945
+ white-space: normal;
946
+ text-align: center;
878
947
  }
879
948
 
880
- /* Стиль для Somm Selection */
881
- .somm-selection {
882
- position: relative;
883
- border: 2px solid #FFD700;
884
- background: linear-gradient(white, #FFF8DC);
885
- box-shadow: 0 4px 12px rgba(255, 215, 0, 0.4);
949
+ .param-chips-container {
950
+ display: flex;
951
+ flex-wrap: wrap; /* чтобы чипсы переносились на новую строку при нехватке места */
952
+ gap: 8px; /* небольшой промежуток между чипсами */
953
+ justify-content: center; /* по центру горизонтали (если нужно) */
954
+ margin-bottom: 12px; /* отступ от нижнего блока */
886
955
  }
887
956
 
888
- .somm-selection-badge {
889
- position: absolute;
890
- top: -10px;
891
- left: 10px;
892
- background: linear-gradient(90deg, #FFD700, #FFB800);
893
- color: #FFF;
894
- font-size: 12px;
895
- font-weight: bold;
896
- padding: 4px 8px;
897
- border-radius: 4px;
898
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
957
+ .wine-chip {
958
+ display: inline-block;
959
+ background: #fff; /* белый фон */
960
+ font-size: 14px;
961
+ font-weight: bold;
962
+ padding: 4px 8px;
963
+ border: 2px solid #ccc; /* по умолчанию можно сделать серую границу */
964
+ border-radius: 24px;
965
+ white-space: nowrap;
966
+ color: #333;
967
+ white-space: normal;
968
+ word-break: normal;
969
+ overflow-wrap: normal;
970
+ max-width: 250px;
899
971
  }
972
+
900
973
 
901
- /* Изображение */
902
- .wine-recommendation-tile img {
903
- width: 120px;
904
- height: 120px;
905
- object-fit: cover;
906
- border-radius: 8px;
907
- }
908
974
 
909
- /* Детали карточки */
910
- .tile-details {
911
- text-align: left;
975
+ .param-table {
976
+ display: grid;
977
+ /* Две колонки, каждая 50% */
978
+ grid-template-columns: 50% 50%;
979
+ width: 100%;
980
+ /* Если нужно, чтобы таблица занимала всю ширину карточки */
981
+
982
+ border-collapse: collapse;
983
+ /* (не все свойства table работают с grid, но можно оставить) */
984
+
985
+ text-align: left; /* Выравниваем по левой стороне */
986
+ margin-bottom: 12px; /* Отступ снизу, если нужно */
912
987
  }
913
988
 
914
- .tile-details strong {
915
- font-size: 16px;
916
- margin-bottom: 4px;
917
- font-weight: bold;
918
- display: block;
919
- }
989
+ /* Каждая ячейка */
990
+ .param-table .cell {
991
+ padding: 8px;
992
+ /* Горизонтальная линия */
993
+ box-sizing: border-box;
994
+ border-bottom: 1px solid #ddd;
920
995
 
921
- .tile-details p {
922
- font-size: 14px;
923
- margin: 4px 0;
924
996
  }
925
997
 
926
- .tile-details a {
927
- font-size: 12px;
928
- color: #0044FF;
929
- text-decoration: underline;
930
- display: block;
931
- font-weight: bold;
932
- margin-top: 16px;
998
+ /* Вертикальная граница между левым и правым столбцом —
999
+ т.е. у всех ячеек, идущих в левой колонке */
1000
+ .param-table .cell:nth-child(2n+1) {
1001
+ border-right: 1px solid #ddd;
933
1002
  }
934
1003
 
935
- .tile-details a:hover {
936
- text-decoration: none;
937
- color: #002699;
1004
+ .param-table .cell:nth-last-child(-n + 2) {
1005
+ border-bottom: none;
938
1006
  }
939
1007
 
940
1008
 
941
- /* Описание карточки */
942
- .wine-description-widget {
943
- margin-top: 12px;
944
- padding: 8px 12px;
945
- font-size: 14px;
946
- color: #fff;
947
- border-radius: 8px;
948
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
949
- text-align: center;
1009
+ /* Нижняя строка (цена + кнопка) */
1010
+ .bottom-row {
1011
+ margin-top: auto; /* прижимает .bottom-row к низу
1012
+ display: flex;
1013
+ align-items: center;
1014
+ gap: 12px; /* промежуток между ценой и кнопкой */
1015
+ justify-content: center;
1016
+ /* если хотите, чтобы они были по центру;
1017
+ если нужно справа или растянуть, используйте space-between */
950
1018
  }
951
1019
 
952
- #powered-by-widget {
953
- margin-top: 20px;
954
- display: flex;
955
- align-items: center;
956
- justify-content: center;
957
- background-color: #FAFAFA;
958
- padding: 12px 24px;
959
- border-top: 1px solid rgba(0, 0, 0, 0.08);
960
- border-radius: 12px;
961
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1020
+ /* Цена */
1021
+ .wine-price {
1022
+ font-size: 16px;
1023
+ font-weight: 400;
1024
+ margin-bottom: 8px;
1025
+ color: #333;
962
1026
  }
963
1027
 
964
- #powered-by-widget {
965
- display: flex;
966
- align-items: center;
967
- justify-content: center;
968
- margin-top: 20px;
969
- padding: 12px;
970
- border: 1px solid transparent;
971
- border-radius: 8px;
972
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
973
- text-align: center;
1028
+ .buy-btn {
1029
+ margin: 16px auto 0; /* центрируем и отступ сверху */
1030
+ background-color: transparent;
1031
+ color: var(--wineater-color);
1032
+ border: 2px solid var(--wineater-color);
1033
+ border-radius: 6px;
1034
+ padding: 8px 16px;
1035
+ font-size: 14px;
1036
+ font-weight: 500;
1037
+ cursor: pointer;
1038
+ transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
974
1039
  }
975
1040
 
976
- #powered-by-widget a {
977
- text-decoration: none;
978
- display: flex;
979
- align-items: center;
980
- gap: 8px;
981
- color: #7B2BEB;
982
- font-size: 12px;
983
- transition: opacity 0.2s ease;
1041
+ .buy-btn:hover {
1042
+ box-shadow: 0 4px 8px rgba(123, 43, 235, 0.25);
1043
+ background-color: var(--wineater-color);
1044
+ color: #fff;
984
1045
  }
985
1046
 
986
- #powered-by-widget a:hover {
987
- opacity: 0.8;
1047
+ /* Аналогично для .more-info-btn (если хотите стилизовать её тоже как кнопку) */
1048
+ .more-info-btn {
1049
+ display: inline-block;
1050
+ background-color: var(--wineater-color);
1051
+ color: #fff;
1052
+ border-radius: 24px;
1053
+ padding: 8px 16px;
1054
+ font-size: 14px;
1055
+ font-weight: 500;
1056
+ text-decoration: none; /* убрать подчеркивание */
1057
+ margin-top: 8px;
1058
+ margin-right: 8px;
1059
+ transition: transform 0.2s, box-shadow 0.2s;
988
1060
  }
989
-
990
- #powered-by-widget img {
991
- height: 16px;
992
- width: auto;
1061
+ .more-info-btn:hover {
1062
+ transform: scale(1.05);
1063
+ box-shadow: 0 4px 8px rgba(123, 43, 235, 0.25);
993
1064
  }
994
1065
 
995
- /* Адаптивность для мобильных устройств */
996
- @media screen and (max-width: 768px) {
997
- #wine-widget-container {
998
- flex-direction: column;
999
- padding: 16px;
1000
- }
1001
1066
 
1002
- #wine-widget-left {
1003
- width: 100%;
1004
- }
1067
+ /* ===================== 9) Стиль для Somm Selection ===================== */
1068
+ .somm-selection {
1069
+ position: relative;
1070
+ // border: 2px solid #FFD700;
1071
+ // background: linear-gradient(white, #FFF8DC);
1072
+ // box-shadow: 0 4px 12px rgba(255, 215, 0, 0.4);
1073
+ }
1074
+ .somm-selection-badge {
1075
+ position: absolute;
1076
+ top: -10px;
1077
+ left: 10px;
1078
+ /* Вместо ярко-жёлтого градиента – мягкий пастельный */
1079
+ color: #FFD700; /* более мягкий жёлто-коричневый цвет текста */
1080
+ border: 2px solid #FFD700;
1081
+ font-size: 12px;
1082
+ font-weight: 300;
1083
+ padding: 4px 8px;
1084
+ border-radius: 5px;
1005
1085
 
1006
- #wine-widget-right {
1007
- grid-template-columns: 1fr;
1008
- }
1086
+ /* Уменьшаем или убираем тень */
1087
+ }
1009
1088
 
1010
- .wine-recommendation-tile img {
1011
- max-width: 100px;
1012
- }
1089
+ /* ===================== 10) Лоадер и индикатор загрузки ===================== */
1090
+ #loading-indicator {
1091
+ position: absolute;
1092
+ top: 50%;
1093
+ left: 50%;
1094
+ transform: translate(-50%, -50%);
1095
+ z-index: 10000;
1096
+ text-align: center;
1097
+ }
1098
+ #loading-indicator.hidden {
1099
+ display: none;
1100
+ }
1101
+ #loading-indicator img {
1102
+ width: 100px;
1103
+ height: 100px;
1104
+ animation: spin 1s linear infinite;
1013
1105
  }
1014
1106
 
1015
- /* --- Стили для бар-версии --- */
1107
+ /* ===================== 11) keyframes анимации ===================== */
1108
+ @keyframes spin {
1109
+ from { transform: rotate(0deg); }
1110
+ to { transform: rotate(360deg); }
1111
+ }
1016
1112
 
1017
- /* Сетка для блюд бара */
1113
+ /* ===================== 12) Бар-версия (при необходимости) ===================== */
1114
+ /* Грид блюд бара */
1018
1115
  .dish-grid {
1019
- display: grid;
1020
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
1021
- gap: 12px;
1022
- margin: 16px 0;
1116
+ display: grid;
1117
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
1118
+ gap: 12px;
1119
+ margin: 16px 0;
1023
1120
  }
1024
1121
 
1025
- /* Отдельная плитка блюда */
1122
+ /* Плитка блюда */
1026
1123
  .dish-tile {
1027
- display: flex;
1028
- justify-content: center;
1029
- align-items: center;
1030
- padding: 16px;
1031
- font-size: 14px;
1032
- font-weight: 500;
1033
- border: 1px solid #ccc;
1034
- border-radius: 8px;
1035
- background-color: #fff;
1036
- cursor: pointer;
1037
- user-select: none;
1038
- transition: all 0.2s ease;
1124
+ display: flex;
1125
+ justify-content: center;
1126
+ align-items: center;
1127
+ padding: 16px;
1128
+ font-size: 14px;
1129
+ font-weight: 500;
1130
+ border: 1px solid #ccc;
1131
+ border-radius: 8px;
1132
+ background-color: #fff;
1133
+ cursor: pointer;
1134
+ transition: all 0.2s ease;
1039
1135
  }
1040
-
1041
1136
  .dish-tile:hover {
1042
- transform: scale(1.05);
1043
- box-shadow: 0 4px 8px rgba(123, 43, 235, 0.15);
1137
+ transform: scale(1.05);
1138
+ box-shadow: 0 4px 8px rgba(123, 43, 235, 0.15);
1044
1139
  }
1045
-
1046
1140
  .dish-tile.selected {
1047
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
1048
- color: #fff;
1141
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
1142
+ color: #fff;
1049
1143
  }
1050
1144
 
1051
- /* Кнопка "Отправить" для бар-версии */
1052
-
1145
+ /* Кнопки для бара */
1053
1146
  #bar-controls {
1054
1147
  display: flex;
1055
- align-items: stretch; /* или center, если нужно выравнивать */
1148
+ align-items: stretch;
1056
1149
  gap: 8px;
1057
1150
  margin-top: 16px;
1058
1151
  }
1059
-
1060
- /* Задаем одной высотой и одинаковыми отступами */
1061
1152
  #bar-controls input,
1062
1153
  #bar-controls button {
1063
- height: 44px; /* или 48px, как вам нравится */
1064
- line-height: 44px; /* чтобы текст по вертикали выровнялся */
1065
- box-sizing: border-box; /* подстраховка, чтобы высота учитывала бордер */
1154
+ height: 44px;
1155
+ box-sizing: border-box;
1066
1156
  }
1067
-
1068
- /* Чтобы кнопка и инпут смотрелись схоже по высоте */
1069
1157
  #bar-notes-input {
1070
1158
  flex: 1;
1071
- padding: 0 12px; /* уберите или уменьшите вертикальные padding’и */
1159
+ padding: 0 12px;
1072
1160
  border: 1px solid #ccc;
1073
1161
  border-radius: 6px;
1074
1162
  font-size: 14px;
1075
1163
  outline: none;
1076
1164
  }
1077
-
1078
- /* Кнопки – чуть меняем паддинги, чтобы не «лезли» за высоту */
1079
1165
  #bar-send-button,
1080
1166
  #bar-reset-button {
1081
- padding: 0 20px; /* а по вертикали пусть высота сама регулируется через height */
1167
+ padding: 0 20px;
1082
1168
  border-radius: 6px;
1083
- background: linear-gradient(90deg, #7B2BEB, #0044FF);
1169
+ background: linear-gradient(90deg, var(--wineater-color), var(--wineater-corp-color));
1084
1170
  font-size: 14px;
1085
1171
  cursor: pointer;
1086
1172
  white-space: nowrap;
1087
1173
  color: white;
1088
1174
  border: none;
1175
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
1089
1176
  }
1090
-
1091
- /* При желании hover-эффект сохранить: */
1092
1177
  #bar-send-button:hover,
1093
1178
  #bar-reset-button:hover {
1094
1179
  transform: scale(1.05);
1095
1180
  box-shadow: 0 4px 8px rgba(123, 43, 235, 0.15);
1096
1181
  }
1097
1182
 
1098
- /* Адаптивность для мобильных устройств */
1099
- @media screen and (max-width: 768px) {
1100
- #wine-widget-container {
1101
- flex-direction: column;
1102
- padding: 16px;
1103
- min-width: 100vw;
1104
- }
1183
+ /* ===================== 13) Блок Powered by ===================== */
1184
+ #powered-by-widget {
1185
+ border-top:2px solid #f6f7fd; /* разделительная линия сверху */
1186
+ font-family: 'Bricolage Grotesque', sans-serif;
1187
+ font-weight: 200;
1188
+ display: flex;
1189
+ align-items: center;
1190
+ justify-content: center;
1191
+ padding: 12px 24px;
1192
+ }
1193
+ #powered-by-widget a {
1194
+ text-decoration: none;
1195
+ display: flex;
1196
+ align-items: center;
1197
+ gap: 8px;
1198
+ color: #a8a8a8;
1199
+ font-size: 12px;
1200
+ line-height: 16px;
1201
+ transition: opacity 0.2s ease;
1202
+ }
1203
+ #powered-by-widget a:hover {
1204
+ opacity: 0.8;
1205
+ }
1206
+ #powered-by-widget img {
1207
+ height: 16px;
1208
+ width: auto;
1209
+ color: #a8a8a8;
1210
+ }
1105
1211
 
1106
- #wine-placeholder {
1212
+ /* ===================== 14) Адаптивная верстка (Media Queries) ===================== */
1213
+ @media screen and (max-width: 768px) {
1214
+ #wine-widget-container {
1215
+ flex-direction: column;
1216
+ padding: 16px;
1217
+ min-width: 100vw;
1218
+ }
1219
+ #wine-placeholder {
1107
1220
  display: flex;
1108
- gap: 8px;
1221
+ gap: 8px;
1109
1222
  overflow-x: auto;
1110
1223
  scroll-snap-type: x mandatory;
1111
1224
  padding: 8px 0;
1112
1225
  width: calc(100vw - 32px);
1113
1226
  min-width: calc(100vw - 32px);
1114
- }
1115
-
1116
- #wine-widget-header p {
1117
- display: none;
1118
- }
1119
-
1120
- .wine-recommendation-tile {
1121
- width: 200px;
1122
- text-align: center;
1123
- }
1124
-
1125
- .tile-details {
1126
- text-align: center;
1127
- }
1128
-
1129
- .wine-recommendation-tile {
1227
+ }
1228
+ #wine-widget-header p {
1229
+ display: none; /* скрываем подзаголовок на мобильных, если не нужен */
1230
+ }
1231
+ .wine-recommendation-tile {
1130
1232
  flex: 0 0 auto;
1131
1233
  scroll-snap-align: center;
1132
1234
  width: 240px;
1133
- display: block;
1134
- }
1235
+ text-align: center;
1236
+ }
1237
+ .tile-details {
1238
+ text-align: center;
1239
+ }
1135
1240
  }
1136
1241
 
1137
-
1138
- .hidden {
1139
- display: none;
1140
- }
1141
- `,pi=document.createElement("style");pi.textContent=Ra,document.head.appendChild(pi);const Fa=["climats","telckel","biobio","weinpoint","vinigrandi","ampely","test"],Aa="HeUw6IXuhvz6tRuXdPEGEbj3SGQ3Q2YtEc1Z8jd41Kg9LtyPb4Epu0to31SYIadG";class Rt{constructor(e){var n;this.baseURL="https://wineater-backend.vercel.app/",this.store=Fa.find(s=>window.location.href.includes(s)),this.token=((n=window==null?void 0:window.wineaterData)==null?void 0:n.CLIENT_TOKEN)||Aa}async getStoreConfig(e){console.log(e);try{const n=await fetch(`${this.baseURL}stores/store`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:e})});if(console.log(n),!n.ok)throw new Error(`HTTP error! Status: ${n.status}`);return await n.json()}catch(n){throw console.error("Error fetching store configuration:",n),n}}async getWineRecommendations(e){console.log(window.location.href);try{const n=await fetch(`${this.baseURL}dish/recommendations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:e,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),s=await n.json();if(!n.ok)throw new Error(`API call failed with status ${n.status}: ${s.message||"No additional error information"}`);return s}catch(n){throw console.error("Fetching wine recommendations failed:",n.message),new Error(`Error in getWineRecommendations: ${n.message}`)}}async getWineRecommendationsSearch(e){console.log(window.location.href);try{const n=await fetch(`${this.baseURL}dish/recommendations/search`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:e,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),s=await n.json();if(!n.ok)throw new Error(`API call failed with status ${n.status}: ${s.message||"No additional error information"}`);return s}catch(n){throw console.error("Fetching wine recommendations failed:",n.message),new Error(`Error in getWineRecommendations: ${n.message}`)}}async getPossibleDishesWithMeta(e,n){try{const s=await fetch(`${this.baseURL}dish/possible_dishes`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},body:JSON.stringify({title:e,description:n})}),i=await s.json();if(console.log(i),!s.ok)throw new Error(`API call failed with status ${s.status}: ${i.message||"No additional error information"}`);return i}catch(s){throw console.error("Error fetching possible dishes:",s),s}}async getInstantRecommendations(){console.log("Fetching instant recommendations...");try{const e=await fetch(`${this.baseURL}dish/recommendations/instant`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:this.store})}),n=await e.json();if(!e.ok)throw new Error(`API call failed with status ${e.status}: ${n.message||"No additional error information"}`);return console.log("Instant recommendations:",n),n}catch(e){throw console.error("Fetching instant recommendations failed:",e.message),new Error(`Error in getInstantRecommendations: ${e.message}`)}}}class Da{constructor(){this.api=new Rt,this.language="en",this.translations={fr:{welcomeMessage:"Quel plat allez-vous déguster ? Décrivez-le-moi et je vous proposerai le vin qui l'accompagnera parfaitement.",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton1:"Trouvez l'accord parfait",chatButton2:"Associez le vin",chatButton3:"Obtenez des conseils",chatTitle:"Accord Mets & Vins 🍷",chatSubtitle:"Décrivez votre plat et obtenez une recommandation en 30 secondes",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",poweredBy:"Propulsé par",price:"Prix",region:"Région",type:"Type",reason:"Suggestion",moreInfo:"Plus d'infos",winePairingIntro:"Pour ce vin, voici quelques suggestions de plats :",askForDinner:"Que voulez-vous manger ce soir?",clearChatButton:"Effacer le chat",widgetTitle:"TROUVEZ VOTRE VIN PARFAIT",widgetSubtitle:"Partagez tout ce que vous avez en tête—votre repas, humeur, budget ou occasion—et notre sommelier IA vous recommandera le vin parfait en quelques secondes",searchPlaceholder:"Entrez un mot-clé ou une description",wineDetails:{reason:"Raison",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos",sommSelection:"Sélection Somm",code:"Code"},searchButton:"Rechercher",priceRange:"Gamme de prix",wineColor:"Couleur du vin",intensity:"Intensité",red:"Rouge",white:"Blanc",rose:"Rosé",light:"Léger",medium:"Moyen",full:"Puissant",barTitle:"Sélection du bar",barSubtitle:"Choisissez vos plats ci-dessous et cliquez sur «Envoyer»",barSendButton:"Envoyer",barResetButton:"Réinitialiser",barName:"Nom du bar",barNotesPlaceholder:"Entrez vos souhaits ici...",placeholderSuggestions:["Vin pour les pâtes","Parfait avec du poisson","Recommandé pour une soirée"]},es:{welcomeMessage:"¿Qué vas a comer? Cuéntame tu plato y te recomendaré el maridaje perfecto.",noResultsFound:"No se encontraron resultados.",somethingWentWrong:"Lo sentimos, algo salió mal.",chatButton1:"Encuentra tu maridaje",chatButton2:"Combina vino ya",chatButton3:"Recibe asesoría ahora",chatTitle:"Maridaje de Vinos 🍷",chatSubtitle:"Describe tu comida y obtén una recomendación en 30 segundos",inputPlaceholder:"ej., Ensalada de atún",sendButton:"Combinar",poweredBy:"Desarrollado por",price:"Precio",region:"Región",type:"Tipo",reason:"Sugerencia",moreInfo:"Más info",winePairingIntro:"Para este vino, aquí tienes algunas sugerencias de platos:",askForDinner:"¿Qué te gustaría cenar?",clearChatButton:"Limpiar el chat",widgetTitle:"ENCUENTRA TU VINO PERFECTO",widgetSubtitle:"Comparte cualquier cosa que tengas en mente—tu comida, estado de ánimo, presupuesto o evento—y nuestro sommelier de IA te recomendará el vino perfecto en segundos",searchPlaceholder:"Escribe una palabra clave o descripción",wineDetails:{reason:"Razón",price:"Precio",region:"Región",type:"Tipo",code:"Código",moreInfo:"Más información",sommSelection:"Selección Somm"},searchButton:"Buscar",priceRange:"Rango de precios",wineColor:"Color del vino",intensity:"Intensidad",red:"Tinto",white:"Blanco",rose:"Rosado",light:"Ligero",medium:"Medio",full:"Intenso",barTitle:"Platos de Bar",barSubtitle:"Selecciona de la lista y presiona «Enviar»",barSendButton:"Enviar",barResetButton:"Reiniciar",barName:"Nombre del bar",barNotesPlaceholder:"Agrega tus comentarios aquí...",placeholderSuggestions:["Vino para pasta","Perfecto con pescado","Recomendado para una fiesta"]},en:{welcomeMessage:"What are you planning to eat? Share your dish and I'll recommend the perfect wine pairing for your meal.",noResultsFound:"No results found.",somethingWentWrong:"Sorry, something went wrong.",chatButton1:"Find Your Pairing",chatButton2:"Pair Wine Now",chatButton3:"Get Wine Advice",chatTitle:"Wine Pairing Assistant 🍷",chatSubtitle:"Describe your meal and get a recommendation in 30 seconds",inputPlaceholder:"e.g., Tuna salad",sendButton:"Match",poweredBy:"Powered by",price:"Price",region:"Region",type:"Type",reason:"Suggestion",moreInfo:"More info",winePairingIntro:"For this wine, here are some suggested dishes:",askForDinner:"What would you like to have for dinner?",clearChatButton:"Clear Chat",widgetTitle:"FIND YOUR PERFECT WINE",widgetSubtitle:"Share anything on your mind—your meal, mood, budget, or occasion—and our AI sommelier will recommend the perfect wine in seconds",searchPlaceholder:"Enter a keyword or description",wineDetails:{price:"Price",region:"Region",type:"Type",moreInfo:"More info",reason:"Reason",sommSelection:"Somm Selection",code:"Code"},searchButton:"Search",priceRange:"Price Range",wineColor:"Wine Color",intensity:"Intensity",red:"Red",white:"White",rose:"Rosé",light:"Light",medium:"Medium",full:"Full",barTitle:"Bar Dishes",barSubtitle:"Select dishes below and click ‘Send’",barSendButton:"Send",barResetButton:"Reset",barName:"Bar Name",barNotesPlaceholder:"Add your wishes here...",placeholderSuggestions:["Wine for pasta","Perfect with fish","Recommended for a party"]},de:{welcomeMessage:"Was möchten Sie essen? Beschreiben Sie Ihr Gericht und ich empfehle Ihnen den perfekten Wein dazu.",noResultsFound:"Keine Ergebnisse gefunden.",somethingWentWrong:"Entschuldigung, etwas ist schief gelaufen.",chatButton1:"Finde Dein Pairing",chatButton2:"Wein jetzt wählen",chatButton3:"Erhalte Weinberatung",chatTitle:"Wein & Speisen 🍷",chatSubtitle:"Beschreiben Sie Ihr Gericht und erhalten Sie in 30 Sekunden eine Empfehlung",inputPlaceholder:"z.B., Thunfischsalat",sendButton:"Kombinieren",poweredBy:"Unterstützt von",price:"Preis",region:"Region",type:"Typ",reason:"Anregung",moreInfo:"Mehr Info",winePairingIntro:"Für diesen Wein gibt es folgende Essensvorschläge:",askForDinner:"Was möchten Sie zum Abendessen essen?",clearChatButton:"Chat löschen",widgetTitle:"FINDEN SIE IHREN PERFEKTEN WEIN",widgetSubtitle:"Teilen Sie alles, was Ihnen in den Sinn kommt—Ihre Mahlzeit, Stimmung, Ihr Budget oder Anlass—und unser KI-Sommelier empfiehlt Ihnen in Sekunden den perfekten Wein",placeholderSuggestions:["Wein für Pasta","Perfekt zu Fisch","Empfohlen für eine Party"],searchPlaceholder:"Geben Sie ein Stichwort oder eine Beschreibung ein",wineDetails:{price:"Preis",region:"Region",type:"Typ",moreInfo:"Mehr Infos",sommSelection:"Somm-Auswahl",reason:"Grund",code:"Code"},searchButton:"Suche",priceRange:"Preisspanne",wineColor:"Weinfarbe",intensity:"Intensität",red:"Rot",white:"Weiß",rose:"Rosé",light:"Leicht",medium:"Mittel",full:"Voll",barTitle:"Bar-Auswahl",barSubtitle:"Wählen Sie Ihre Gerichte und klicken Sie auf „Senden“",barSendButton:"Senden",barResetButton:"Zurücksetzen",barName:"Name der Bar"}}}async fetchConfig(e){try{const n=await this.api.getStoreConfig(e);this.language=n.lang}catch{this.language="en"}}translate(e){const n=e.split(".");let s=this.translations[this.language];for(const i of n)if(s&&typeof s=="object"&&i in s)s=s[i];else return e;return s}}const W=new Da,kn={barName:"LENEZ",dishGroups:[{groupTitle:"Entradas",dishes:["Pimientos rojo asado y aceite de oliva con ajo confitado","Ensalada de arúgula y parmesano","Tomate hierloom aliñado","Aceitunas LENEZ","Papatinaz","Croquetas | hongos de temporada | jamón serrano","Carpaccio Cesar","Torreznos","Calamares fritos"]},{groupTitle:"Bocadillos",dishes:["Brioche de pollo frito, col y salsa macha","Baguette de calamares rebozados en salsa brava","Hogaza de cola de res en recado negro y cebollas encurtidas"]},{groupTitle:"Embutidos",dishes:["Jamón Ibérico de bellota","Lomo ibérico","Chorizo ibérico","Plato mixto iberico"]},{groupTitle:"Quesos",dishes:["Selección de quesos (D’Affinois, Brie Ermitage, Manchego semi curado, Roquefort)"]},{groupTitle:"Postres",dishes:["Ate con queso manchego semi curado","Gelato de nata con balsámico","Gelato de ron con pasas y “El candado”, Valdespino PX","Gelato Dua Lipa","Créme Brûlée al Orange"]}]};class La{constructor(){var e;this.widgetType=((e=window==null?void 0:window.wineaterData)==null?void 0:e.WIDGET_TYPE)||"store",this.api=new Rt,this.selectedFilters={price:null,color:null,intensity:null},this.widgetType==="bar"?(this.barName=kn.barName,this.barDishes=kn.dishes):(this.barName="",this.barDishes=[]),this.initializeWidget(),this.initializeSearchAnimation(),this.widgetType==="store"&&this.loadInstantRecommendations()}initializeWidget(){const e=document.getElementById("wineater-widget-conteiner");if(this.widgetType==="store"){const n=`
1242
+ /* Пример более узких экранов (i.e. <480px) можно добавить при необходимости */
1243
+ `,kn=document.createElement("link");kn.rel="stylesheet",kn.href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,200..800&display=swap",document.head.appendChild(kn);const gi=document.createElement("style");document.documentElement.style.setProperty("--wineater-corp-color",((vi=window==null?void 0:window.wineaterData)==null?void 0:vi.COLOR)||"#0044FF"),gi.textContent=Da,document.head.appendChild(gi);const La=["climats","telckel","biobio","weinpoint","vinigrandi","ampely","test"],Fa="HeUw6IXuhvz6tRuXdPEGEbj3SGQ3Q2YtEc1Z8jd41Kg9LtyPb4Epu0to31SYIadG";class Rt{constructor(e){var n;this.baseURL="https://wineater-backend.vercel.app/",this.store=La.find(s=>window.location.href.includes(s)),this.token=((n=window==null?void 0:window.wineaterData)==null?void 0:n.CLIENT_TOKEN)||Fa}async getStoreConfig(e){console.log(e);try{const n=await fetch(`${this.baseURL}stores/store`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:e})});if(console.log(n),!n.ok)throw new Error(`HTTP error! Status: ${n.status}`);return await n.json()}catch(n){throw console.error("Error fetching store configuration:",n),n}}async getWineRecommendations(e){console.log(window.location.href);try{const n=await fetch(`${this.baseURL}dish/recommendations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:e,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),s=await n.json();if(!n.ok)throw new Error(`API call failed with status ${n.status}: ${s.message||"No additional error information"}`);return s}catch(n){throw console.error("Fetching wine recommendations failed:",n.message),new Error(`Error in getWineRecommendations: ${n.message}`)}}async getWineRecommendationsSearch(e){console.log(window.location.href);try{const n=await fetch(`${this.baseURL}dish/recommendations/search`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({text:e,store:this.store?this.store.toString().charAt(0).toUpperCase()+this.store.slice(1):void 0})}),s=await n.json();if(!n.ok)throw new Error(`API call failed with status ${n.status}: ${s.message||"No additional error information"}`);return s}catch(n){throw console.error("Fetching wine recommendations failed:",n.message),new Error(`Error in getWineRecommendations: ${n.message}`)}}async getPossibleDishesWithMeta(e,n){try{const s=await fetch(`${this.baseURL}dish/possible_dishes`,{method:"POST",headers:{Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},body:JSON.stringify({title:e,description:n})}),i=await s.json();if(console.log(i),!s.ok)throw new Error(`API call failed with status ${s.status}: ${i.message||"No additional error information"}`);return i}catch(s){throw console.error("Error fetching possible dishes:",s),s}}async getInstantRecommendations(){console.log("Fetching instant recommendations...");try{const e=await fetch(`${this.baseURL}dish/recommendations/instant`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify({store:this.store})}),n=await e.json();if(!e.ok)throw new Error(`API call failed with status ${e.status}: ${n.message||"No additional error information"}`);return console.log("Instant recommendations:",n),n}catch(e){throw console.error("Fetching instant recommendations failed:",e.message),new Error(`Error in getInstantRecommendations: ${e.message}`)}}}class Ma{constructor(){this.api=new Rt,this.language="en",this.translations={fr:{lang:"fr",welcomeMessage:"Quel plat allez-vous déguster ? Décrivez-le-moi et je vous proposerai le vin qui l'accompagnera parfaitement.",noResultsFound:"Aucun résultat trouvé.",somethingWentWrong:"Désolé, quelque chose a mal tourné.",chatButton1:"Trouvez l'accord parfait",chatButton2:"Associez le vin",chatButton3:"Obtenez des conseils",chatTitle:"Accord Mets & Vins 🍷",chatSubtitle:"Décrivez votre plat et obtenez une recommandation en 30 secondes",inputPlaceholder:"ex., Salade de thon",sendButton:"Accorder",poweredBy:"Propulsé par",price:"Prix",region:"Région",type:"Type",reason:"Suggestion",moreInfo:"Plus d'infos",winePairingIntro:"Pour ce vin, voici quelques suggestions de plats :",askForDinner:"Que voulez-vous manger ce soir?",clearChatButton:"Effacer le chat",widgetTitle:"TROUVEZ VOTRE VIN PARFAIT",widgetSubtitle:"Partagez tout ce que vous avez en tête—votre repas, humeur, budget ou occasion—et notre sommelier IA vous recommandera le vin parfait en quelques secondes",searchPlaceholder:"Entrez un mot-clé ou une description",wineDetails:{reason:"Raison",price:"Prix",region:"Région",type:"Type",moreInfo:"Plus d'infos",sommSelection:"Sélection Somm",code:"Code"},searchButton:"Rechercher",priceRange:"Gamme de prix",wineColor:"Couleur du vin",intensity:"Intensité",red:"Rouge",white:"Blanc",rose:"Rosé",light:"Léger",medium:"Moyen",full:"Puissant",barTitle:"Sélection du bar",barSubtitle:"Choisissez vos plats ci-dessous et cliquez sur «Envoyer»",barSendButton:"Envoyer",barResetButton:"Réinitialiser",barName:"Nom du bar",barNotesPlaceholder:"Entrez vos souhaits ici...",placeholderSuggestions:["Vin pour les pâtes","Parfait avec du poisson","Recommandé pour une soirée"],headerLine1:"Partagez tout ce qui vous passe par la tête —",headerLine2:"— et obtenez des recommandations de vin parfait en quelques secondes",headerMeal:"repas",headerMood:"humeur",headerBudget:"budget",headerOccasion:"occasion",headerOr:"ou"},es:{lang:"es",welcomeMessage:"¿Qué vas a comer? Cuéntame tu plato y te recomendaré el maridaje perfecto.",noResultsFound:"No se encontraron resultados.",somethingWentWrong:"Lo sentimos, algo salió mal.",chatButton1:"Encuentra tu maridaje",chatButton2:"Combina vino ya",chatButton3:"Recibe asesoría ahora",chatTitle:"Maridaje de Vinos 🍷",chatSubtitle:"Describe tu comida y obtén una recomendación en 30 segundos",inputPlaceholder:"ej., Ensalada de atún",sendButton:"Combinar",poweredBy:"Desarrollado por",price:"Precio",region:"Región",type:"Tipo",reason:"Sugerencia",moreInfo:"Más info",winePairingIntro:"Para este vino, aquí tienes algunas sugerencias de platos:",askForDinner:"¿Qué te gustaría cenar?",clearChatButton:"Limpiar el chat",widgetTitle:"ENCUENTRA TU VINO PERFECTO",widgetSubtitle:"Comparte cualquier cosa que tengas en mente—tu comida, estado de ánimo, presupuesto o evento—y nuestro sommelier de IA te recomendará el vino perfecto en segundos",searchPlaceholder:"Escribe una palabra clave o descripción",wineDetails:{reason:"Razón",price:"Precio",region:"Región",type:"Tipo",code:"Código",moreInfo:"Más información",sommSelection:"Selección Somm"},searchButton:"Buscar",priceRange:"Rango de precios",wineColor:"Color del vino",intensity:"Intensidad",red:"Tinto",white:"Blanco",rose:"Rosado",light:"Ligero",medium:"Medio",full:"Intenso",barTitle:"Platos de Bar",barSubtitle:"Selecciona de la lista y presiona «Enviar»",barSendButton:"Enviar",barResetButton:"Reiniciar",barName:"Nombre del bar",barNotesPlaceholder:"Agrega tus comentarios aquí...",placeholderSuggestions:["Vino para pasta","Perfecto con pescado","Recomendado para una fiesta"],headerLine1:"Comparte cualquier cosa que tengas en mente —",headerLine2:"— y obtén recomendaciones del vino perfecto en cuestión de segundos",headerMeal:"comida",headerMood:"estado de ánimo",headerBudget:"presupuesto",headerOccasion:"ocasión",headerOr:"o"},en:{lang:"en",welcomeMessage:"What are you planning to eat? Share your dish and I'll recommend the perfect wine pairing for your meal.",noResultsFound:"No results found.",somethingWentWrong:"Sorry, something went wrong.",chatButton1:"Find Your Pairing",chatButton2:"Pair Wine Now",chatButton3:"Get Wine Advice",chatTitle:"Wine Pairing Assistant 🍷",chatSubtitle:"Describe your meal and get a recommendation in 30 seconds",inputPlaceholder:"e.g., Tuna salad",sendButton:"Match",poweredBy:"Powered by",price:"Price",region:"Region",type:"Type",reason:"Suggestion",moreInfo:"More info",winePairingIntro:"For this wine, here are some suggested dishes:",askForDinner:"What would you like to have for dinner?",clearChatButton:"Clear Chat",widgetTitle:"FIND YOUR PERFECT WINE",widgetSubtitle:"Share anything on your mind—your meal, mood, budget, or occasion—and our AI sommelier will recommend the perfect wine in seconds",searchPlaceholder:"Enter a keyword or description",wineDetails:{price:"Price",region:"Region",type:"Type",moreInfo:"More info",reason:"Reason",sommSelection:"Somm Selection",code:"Code"},searchButton:"Search",priceRange:"Price Range",wineColor:"Wine Color",intensity:"Intensity",red:"Red",white:"White",rose:"Rosé",light:"Light",medium:"Medium",full:"Full",barTitle:"Bar Dishes",barSubtitle:"Select dishes below and click ‘Send’",barSendButton:"Send",barResetButton:"Reset",barName:"Bar Name",barNotesPlaceholder:"Add your wishes here...",placeholderSuggestions:["Wine for pasta","Perfect with fish","Recommended for a party"],headerLine1:"Share anything on your mind —",headerLine2:"— and get recommendations of the perfect wine in seconds",headerMeal:"meal",headerMood:"mood",headerBudget:"budget",headerOccasion:"occasion",headerOr:"or"},de:{lang:"de",welcomeMessage:"Was möchten Sie essen? Beschreiben Sie Ihr Gericht und ich empfehle Ihnen den perfekten Wein dazu.",noResultsFound:"Keine Ergebnisse gefunden.",somethingWentWrong:"Entschuldigung, etwas ist schief gelaufen.",chatButton1:"Finde Dein Pairing",chatButton2:"Wein jetzt wählen",chatButton3:"Erhalte Weinberatung",chatTitle:"Wein & Speisen 🍷",chatSubtitle:"Beschreiben Sie Ihr Gericht und erhalten Sie in 30 Sekunden eine Empfehlung",inputPlaceholder:"z.B., Thunfischsalat",sendButton:"Kombinieren",poweredBy:"Unterstützt von",price:"Preis",region:"Region",type:"Typ",reason:"Anregung",moreInfo:"Mehr Info",winePairingIntro:"Für diesen Wein gibt es folgende Essensvorschläge:",askForDinner:"Was möchten Sie zum Abendessen essen?",clearChatButton:"Chat löschen",widgetTitle:"FINDEN SIE IHREN PERFEKTEN WEIN",widgetSubtitle:"Teilen Sie alles, was Ihnen in den Sinn kommt—Ihre Mahlzeit, Stimmung, Ihr Budget oder Anlass—und unser KI-Sommelier empfiehlt Ihnen in Sekunden den perfekten Wein",placeholderSuggestions:["Wein für Pasta","Perfekt zu Fisch","Empfohlen für eine Party"],searchPlaceholder:"Geben Sie ein Stichwort oder eine Beschreibung ein",wineDetails:{price:"Preis",region:"Region",type:"Typ",moreInfo:"Mehr Infos",sommSelection:"Somm-Auswahl",reason:"Grund",code:"Code"},searchButton:"Suche",priceRange:"Preisspanne",wineColor:"Weinfarbe",intensity:"Intensität",red:"Rot",white:"Weiß",rose:"Rosé",light:"Leicht",medium:"Mittel",full:"Voll",barTitle:"Bar-Auswahl",barSubtitle:"Wählen Sie Ihre Gerichte und klicken Sie auf „Senden“",barSendButton:"Senden",barResetButton:"Zurücksetzen",barName:"Name der Bar",headerLine1:"Teilen Sie alles, was Ihnen durch den Kopf geht —",headerLine2:"— und erhalten Sie in Sekundenschnelle Empfehlungen für den perfekten Wein",headerMeal:"Mahlzeit",headerMood:"Stimmung",headerBudget:"Budget",headerOccasion:"Anlass",headerOr:"oder"},ru:{lang:"ru",welcomeMessage:"Что вы планируете поесть? Напишите ваше блюдо, и я подберу идеальное вино к нему.",noResultsFound:"Результаты не найдены.",somethingWentWrong:"Извините, что-то пошло не так.",chatButton1:"Найти сочетание",chatButton2:"Подобрать вино",chatButton3:"Получить совет",chatTitle:"Ассистент по подбору вина 🍷",chatSubtitle:"Опишите ваше блюдо и получите рекомендацию за 30 секунд",inputPlaceholder:"например, Тунец с салатом",sendButton:"Подобрать",poweredBy:"Powered by",price:"Цена",region:"Регион",type:"Тип",reason:"Рекомендация",moreInfo:"Подробнее",winePairingIntro:"К этому вину подходят следующие блюда:",askForDinner:"Что бы вы хотели на ужин?",clearChatButton:"Очистить чат",widgetTitle:"НАЙДИТЕ ИДЕАЛЬНОЕ ВИНО",widgetSubtitle:"Поделитесь вашими предпочтениями — блюдом, настроением, бюджетом или случаем — и наш AI-сомелье подберёт идеальное вино за секунды",searchPlaceholder:"Введите ключевое слово или описание",wineDetails:{price:"Цена",region:"Регион",type:"Тип",moreInfo:"Подробнее",reason:"Причина",sommSelection:"Выбор сомелье",code:"Код"},searchButton:"Поиск",priceRange:"Диапазон цен",wineColor:"Цвет вина",intensity:"Интенсивность",red:"Красное",white:"Белое",rose:"Розовое",light:"Лёгкое",medium:"Среднее",full:"Полное",barTitle:"Закуски к вину",barSubtitle:"Выберите блюда ниже и нажмите ‘Отправить’",barSendButton:"Отправить",barResetButton:"Сбросить",barName:"Название бара",barNotesPlaceholder:"Добавьте ваши пожелания здесь...",placeholderSuggestions:["Вино для пасты","Идеально к рыбе","Рекомендуем для вечеринки"],headerLine1:"Поделитесь любыми вашими мыслями —",headerLine2:"— и получите рекомендации по идеальному вину за считанные секунды",headerMeal:"блюдо",headerMood:"настроение",headerBudget:"бюджет",headerOccasion:"случай",headerOr:"или"}}}async fetchConfig(e){try{const n=await this.api.getStoreConfig(e);this.language=n.lang}catch{this.language="en"}}translate(e){const n=e.split(".");let s=this.translations[this.language];for(const i of n)if(s&&typeof s=="object"&&i in s)s=s[i];else return e;return s}}const H=new Ma,Tn={barName:"LENEZ",dishGroups:[{groupTitle:"Entradas",dishes:["Pimientos rojo asado y aceite de oliva con ajo confitado","Ensalada de arúgula y parmesano","Tomate hierloom aliñado","Aceitunas LENEZ","Papatinaz","Croquetas | hongos de temporada | jamón serrano","Carpaccio Cesar","Torreznos","Calamares fritos"]},{groupTitle:"Bocadillos",dishes:["Brioche de pollo frito, col y salsa macha","Baguette de calamares rebozados en salsa brava","Hogaza de cola de res en recado negro y cebollas encurtidas"]},{groupTitle:"Embutidos",dishes:["Jamón Ibérico de bellota","Lomo ibérico","Chorizo ibérico","Plato mixto iberico"]},{groupTitle:"Quesos",dishes:["Selección de quesos (D’Affinois, Brie Ermitage, Manchego semi curado, Roquefort)"]},{groupTitle:"Postres",dishes:["Ate con queso manchego semi curado","Gelato de nata con balsámico","Gelato de ron con pasas y “El candado”, Valdespino PX","Gelato Dua Lipa","Créme Brûlée al Orange"]}]};class Pa{constructor(){var e,n,s,i;this.widgetType=((e=window==null?void 0:window.wineaterData)==null?void 0:e.WIDGET_TYPE)||"store",this.widgetWrapper=((n=window==null?void 0:window.wineaterData)==null?void 0:n.WIDGET_WRAPPER)||"wineater-widget-conteiner",this.titleText=(s=window==null?void 0:window.wineaterData)==null?void 0:s.TITLE_TEXT,this.subtitleText=(i=window==null?void 0:window.wineaterData)==null?void 0:i.SUBTITLE_TEXT,this.api=new Rt,this.selectedFilters={price:null,color:null,intensity:null},this.widgetType==="bar"?(this.barName=Tn.barName,this.barDishes=Tn.dishes):(this.barName="",this.barDishes=[]),this.initializeWidget(),this.initializeSearchAnimation(),this.widgetType==="store"&&this.loadInstantRecommendations()}initializeWidget(){const e=document.getElementById(this.widgetWrapper);if(this.widgetType==="store"){const n=`
1142
1244
  <div id="wine-widget-container">
1143
1245
  <div class="wine-widget-wrapper">
1144
1246
  <div id="wine-widget-header">
1145
- <h1>${W.translate("widgetTitle")}</h1>
1146
- <p>${W.translate("widgetSubtitle")}</p>
1147
- </div>
1148
- <div id="wine-widget-search">
1149
- <input type="text" id="wine-search-input" placeholder="${W.translate("searchPlaceholder")}">
1150
- <button id="wine-search-button">${W.translate("searchButton")}</button>
1151
- </div>
1247
+ <h1 class="wine-widget-big-title">
1248
+ ${H.translate("headerLine1")}
1249
+ <span class="icon icon-meal"></span>
1250
+ <span class="icon-label">${H.translate("headerMeal")}</span>,
1251
+ <span class="icon icon-mood"></span>
1252
+ <span class="icon-label">${H.translate("headerMood")}</span>
1253
+ </br>
1254
+ <!-- <span class="icon icon-budget"></span> -->
1255
+ <!-- <span class="icon-label">${H.translate("headerBudget")}</span>, -->
1256
+ ${H.translate("headerOr")}
1257
+ <span class="icon icon-occasion"></span>
1258
+ <span class="icon-label">${H.translate("headerOccasion")}</span>
1259
+ ${H.translate("headerLine2")}
1260
+ </h1>
1261
+ </div>
1262
+
1263
+ <div id="wine-widget-search">
1264
+ <!-- Иконка поиска слева -->
1265
+ <span class="search-icon"></span>
1266
+
1267
+ <!-- Поле ввода -->
1268
+ <input
1269
+ type="text"
1270
+ id="wine-search-input"
1271
+ placeholder="${H.translate("searchPlaceholder")}">
1272
+
1273
+ <!-- Кнопка -->
1274
+ <button id="wine-search-button">
1275
+ ${H.translate("searchButton")}
1276
+ </button>
1277
+ </div>
1152
1278
  <div id="wine-widget-right">
1153
1279
  <div id="loading-indicator" class="hidden">
1154
1280
  <div id="typing-indicator" class="typing-indicator">
@@ -1159,8 +1285,9 @@ width: 100%;
1159
1285
  </div>
1160
1286
  <div id="powered-by-widget">
1161
1287
  <a href="https://wineater.com" target="_blank">
1162
- <span>${W.translate("poweredBy")}</span>
1163
- <img src="https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/logo.svg" alt="Wineater Logo">
1288
+ <span>${H.translate("poweredBy")}</span>
1289
+ <img src="${H.translate("lang")==="ru"?"https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/divino_logo.svg?x=5":"https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/logo_medium_gray.svg"}" alt="Wineater Logo">
1290
+ <span>${H.translate("AI sommelier")}</span>
1164
1291
  </a>
1165
1292
  </div>
1166
1293
  </div>
@@ -1168,7 +1295,7 @@ width: 100%;
1168
1295
  `;e.insertAdjacentHTML("beforeend",n),this.addEventListenersStoreVersion()}else{const n=`
1169
1296
  <div id="wine-widget-container" class="bar-widget">
1170
1297
  <div id="wine-widget-right">
1171
- ${kn.dishGroups.map(s=>`
1298
+ ${Tn.dishGroups.map(s=>`
1172
1299
  <!-- Обёртка группы -->
1173
1300
  <div class="dish-group">
1174
1301
  <!-- Заголовок группы, если нужен -->
@@ -1196,55 +1323,76 @@ width: 100%;
1196
1323
  <input
1197
1324
  type="text"
1198
1325
  id="bar-notes-input"
1199
- placeholder="${W.translate("barNotesPlaceholder")}"
1326
+ placeholder="${H.translate("barNotesPlaceholder")}"
1200
1327
  />
1201
1328
  <button id="bar-send-button">
1202
- ${W.translate("barSendButton")}
1329
+ ${H.translate("barSendButton")}
1203
1330
  </button>
1204
1331
  <button id="bar-reset-button" class="hidden">
1205
- ${W.translate("barResetButton")}
1332
+ ${H.translate("barResetButton")}
1206
1333
  </button>
1207
1334
  </div>
1208
1335
 
1209
1336
  </div>
1210
1337
  </div>
1211
- `;e.insertAdjacentHTML("beforeend",n),this.addEventListenersBarVersion()}this.initializeSearchAnimation()}addEventListenersStoreVersion(){document.getElementById("wine-search-button").addEventListener("click",()=>this.handleSearch()),this.setupFilterButtons("price-buttons","price"),this.setupFilterButtons("color-buttons","color"),this.setupFilterButtons("intensity-buttons","intensity"),document.getElementById("wine-search-input").addEventListener("keydown",e=>{e.key==="Enter"&&this.handleSearch()})}setupFilterButtons(e,n){const s=document.querySelectorAll(`#${e} button`);s.forEach(i=>{i.addEventListener("click",r=>{s.forEach(o=>o.classList.remove("selected")),r.target.classList.add("selected"),this.selectedFilters[n]=r.target.dataset.value,this.handleSearch()})})}async handleSearch(){const e="wine for dish:"+document.getElementById("wine-search-input").value.trim()+";",n=this.selectedFilters,s=[];n.price&&s.push(`price: ${n.price||"any"};`),n.color&&s.push(`color: ${n.color||"any"}; `),n.intensity&&s.push(`intensity: ${n.intensity||"any"}; `);const i=s.length>0?`${e} ${s.join(", ")}`:e;console.log("Searching for:",i),console.log("Applied filters:",n),this.animateCardDisappearance();try{const r=await this.api.getWineRecommendationsSearch(i);r&&r.length>0?(console.log("Recommendations:",r),this.displayResults(r,!0)):(console.log("No recommendations found."),this.displayNoResultsMessage())}catch(r){console.error("Error fetching wine recommendations:",r.message),this.displayErrorMessage()}}displayResults(e,n=!1){const s=document.getElementById("wine-placeholder");this.hideLoadingIndicator(),s.innerHTML="",e.forEach((i,r)=>{r===e.length-1&&this.widgetType==="store"&&(i.isSommSelection=!0),console.log(i);const o=`
1212
- <div class="wine-recommendation-tile ${i.isSommSelection?"somm-selection":""}">
1213
- ${i.isSommSelection?`<div class="somm-selection-badge">${W.translate("wineDetails.sommSelection")}</div>`:""}
1214
- ${i.image||i.Image?`<img src="${i.image||i.Image}" alt="${i.title||i.Title}" />`:""}
1215
- <div class="tile-details">
1216
- <strong>${i.title||i.Title}</strong>
1217
- <p>${W.translate("wineDetails.price")}: ${i.price||i.Price}</p>
1218
- <p>${W.translate("wineDetails.region")}: ${i.region||i.Region}</p>
1219
- <p>${W.translate("wineDetails.type")}: ${i.type||i.Type}</p>
1220
- ${this.widgetType==="bar"?`<p>${W.translate("wineDetails.reason")}: ${i.pairing_recommendation||"N/A"}</p>`:""}
1221
- ${this.widgetType==="bar"?`<p>${W.translate("wineDetails.code")}: ${i.url||"N/A"}</p>`:`<a href="${i.Url}" target="_blank">${W.translate("wineDetails.moreInfo")}</a>`}
1222
- </div>
1223
- </div>
1224
- `;s.insertAdjacentHTML("beforeend",o);const l=s.children[r];setTimeout(()=>{l.style.opacity="1",l.style.transform="translateY(0)"},n?r*200:0)})}animateCardDisappearance(){const e=document.querySelectorAll(".wine-recommendation-tile");e.forEach((n,s)=>{setTimeout(()=>{n.style.opacity="0",n.style.transform="translateY(-20px)"},s*100)}),setTimeout(()=>{document.getElementById("wine-placeholder").innerHTML="",this.showLoadingIndicator()},e.length*100+300)}showLoadingIndicator(){document.getElementById("loading-indicator").classList.remove("hidden")}hideLoadingIndicator(){document.getElementById("loading-indicator").classList.add("hidden")}displayNoResultsMessage(){const e=document.getElementById("wine-placeholder");e.innerHTML=`
1338
+ `;e.insertAdjacentHTML("beforeend",n),this.addEventListenersBarVersion()}this.initializeSearchAnimation()}addEventListenersStoreVersion(){document.getElementById("wine-search-button").addEventListener("click",()=>this.handleSearch()),this.setupFilterButtons("price-buttons","price"),this.setupFilterButtons("color-buttons","color"),this.setupFilterButtons("intensity-buttons","intensity"),document.getElementById("wine-search-input").addEventListener("keydown",e=>{e.key==="Enter"&&this.handleSearch()})}setupFilterButtons(e,n){const s=document.querySelectorAll(`#${e} button`);s.forEach(i=>{i.addEventListener("click",r=>{s.forEach(o=>o.classList.remove("selected")),r.target.classList.add("selected"),this.selectedFilters[n]=r.target.dataset.value,this.handleSearch()})})}async handleSearch(){const e="wine for dish:"+document.getElementById("wine-search-input").value.trim()+";",n=this.selectedFilters,s=[];n.price&&s.push(`price: ${n.price||"any"};`),n.color&&s.push(`color: ${n.color||"any"}; `),n.intensity&&s.push(`intensity: ${n.intensity||"any"}; `);const i=s.length>0?`${e} ${s.join(", ")}`:e;console.log("Searching for:",i),console.log("Applied filters:",n),this.animateCardDisappearance();try{const r=await this.api.getWineRecommendationsSearch(i);r&&r.length>0?(console.log("Recommendations:",r),this.displayResults(r,!0)):(console.log("No recommendations found."),this.displayNoResultsMessage())}catch(r){console.error("Error fetching wine recommendations:",r.message),this.displayErrorMessage()}}displayResults(e,n=!1){const s=document.getElementById("wine-placeholder");this.hideLoadingIndicator(),s.innerHTML="",e.forEach((i,r)=>{const o=[];(i.type||i.Type)&&o.push(i.type||i.Type),(i.country||i.Country)&&o.push(i.country||i.Country),(i.region||i.Region)&&o.push(i.region||i.Region),(i.grape||i.Grape)&&o.push(i.grape||i.Grape);const l=[];(i.type||i.Type)&&l.push(i.type||i.Type),(i.country||i.Country)&&l.push(i.country||i.Country),(i.region||i.Region)&&l.push(i.region||i.Region),(i.grape||i.Grape)&&l.push(i.grape||i.Grape);const a=l.slice(0,3).join(" • "),d=l.slice(3).join(" • "),c=`
1339
+ <div class="wine-recommendation-tile ${i.isSommSelection?"somm-selection":""}">
1340
+ ${i.isSommSelection?`<div class="somm-selection-badge">
1341
+ ${H.translate("wineDetails.sommSelection")}
1342
+ </div>`:""}
1343
+
1344
+ <div class="tile-top">
1345
+ <!-- Большое изображение по центру -->
1346
+ ${i.image||i.Image?`<img src="${i.image||i.Image}"
1347
+ alt="${i.title||i.Title}"
1348
+ class="wine-image" />`:""}
1349
+
1350
+ <!-- Цена над названием -->
1351
+ <div class="wine-price">
1352
+ ${i.price||i.Price}
1353
+ </div>
1354
+
1355
+ <!-- Название вина (больше шрифт) -->
1356
+ <h2 class="wine-title">
1357
+ ${i.title||i.Title}
1358
+ </h2>
1359
+ </div>
1360
+
1361
+ <!-- Параметры через точки -->
1362
+ ${a?`<div class="wine-params">${a}</div>`:""}
1363
+ ${d?`<div class="wine-params">${d}</div>`:""}
1364
+
1365
+ <!-- Кнопка Buy, видна только при наведении -->
1366
+ <div class="bottom-row">
1367
+ <button class="buy-btn">
1368
+ ${H.translate("Buy")||"Buy"}
1369
+ </button>
1370
+ </div>
1371
+ </div>
1372
+ `;s.insertAdjacentHTML("beforeend",c);const u=s.children[r];setTimeout(()=>{u.style.opacity="1",u.style.transform="translateY(0)"},n?r*200:0)})}animateCardDisappearance(){const e=document.querySelectorAll(".wine-recommendation-tile");e.forEach((n,s)=>{setTimeout(()=>{n.style.opacity="0",n.style.transform="translateY(-20px)"},s*100)}),setTimeout(()=>{document.getElementById("wine-placeholder").innerHTML="",this.showLoadingIndicator()},e.length*100+300)}showLoadingIndicator(){document.getElementById("loading-indicator").classList.remove("hidden")}hideLoadingIndicator(){document.getElementById("loading-indicator").classList.add("hidden")}displayNoResultsMessage(){const e=document.getElementById("wine-placeholder");e.innerHTML=`
1225
1373
  <div class="no-results">
1226
- <p>${W.translate("noResultsMessage")||"No recommendations found for your query."}</p>
1374
+ <p>${H.translate("noResultsMessage")||"No recommendations found for your query."}</p>
1227
1375
  </div>
1228
1376
  `}displayErrorMessage(){const e=document.getElementById("wine-placeholder");e.innerHTML=`
1229
1377
  <div class="error-message">
1230
- <p>${W.translate("errorMessage")||"Something went wrong. Please try again later."}</p>
1378
+ <p>${H.translate("errorMessage")||"Something went wrong. Please try again later."}</p>
1231
1379
  </div>
1232
- `}async loadInstantRecommendations(){this.showLoadingIndicator();try{const e=await this.api.getInstantRecommendations();this.displayResults(e)}catch(e){console.error("Error loading instant recommendations:",e.message)}}addEventListenersBarVersion(){const e=document.querySelectorAll(".dish-tile");e.forEach(l=>{l.addEventListener("click",()=>{l.classList.toggle("selected")})});const n=document.querySelectorAll(".dish-group"),s=document.getElementById("bar-send-button"),i=document.getElementById("bar-reset-button"),r=document.getElementById("bar-notes-input"),o=document.getElementById("wine-placeholder");!s||!i||!r||!o||(s.addEventListener("click",async()=>{n.forEach(u=>u.classList.add("hidden")),this.showLoadingIndicator();const l=[];document.querySelectorAll(".dish-tile.selected").forEach(u=>{l.push(u.dataset.dish)});const a=r.value.trim(),h=[];l.length>0&&h.push(`Dishes: ${l.join(", ")}`),a&&h.push(`Notes: ${a}`);const c=h.join("; ");console.log("Final query =>",c);try{const u=await this.api.getWineRecommendationsSearch(c);u&&u.length>0?this.displayResults(u,!0):this.displayNoResultsMessage(),i.classList.remove("hidden")}catch(u){console.error("Error while fetching bar recommendations:",u),this.displayErrorMessage()}finally{this.hideLoadingIndicator()}}),i.addEventListener("click",()=>{n.forEach(l=>l.classList.remove("hidden")),e.forEach(l=>l.classList.remove("selected")),o.innerHTML="",i.classList.add("hidden"),r.value=""}))}initializeSearchAnimation(){const e=document.getElementById("wine-search-input"),n=W.translate("placeholderSuggestions");let s=0,i=0,r=!0,o=!1;const l=()=>{o||(r?(e.placeholder=n[s].substring(0,i++),i>n[s].length?(r=!1,setTimeout(l,2e3)):setTimeout(l,100)):(e.placeholder=n[s].substring(0,i--),i<0?(r=!0,s=(s+1)%n.length,setTimeout(l,500)):setTimeout(l,50)))};l(),e.addEventListener("focus",()=>{e.placeholder="",o=!0}),e.addEventListener("blur",()=>{o=!1,i=0,r=!0,l()})}}class Ma{constructor(){var n;this.api=new Rt;const e=((n=window==null?void 0:window.wineaterData)==null?void 0:n.FIRST_MESSAGE_TEXT)||W.translate("welcomeMessage");this.displayFirstMessage(e)}initialize(){document.getElementById("send-button").addEventListener("click",()=>this.handleUserInput()),document.getElementById("user-input").addEventListener("keypress",s=>{s.key==="Enter"&&this.handleUserInput()})}displayFirstMessage(e,n="api"){const s=document.getElementById("message-container"),i=document.createElement("div");i.className=`message ${n}`,i.textContent=e,s.appendChild(i),s.scrollTop=s.scrollHeight}async handleUserInput(){const e=document.getElementById("user-input"),n=e.value.trim();if(n){this.displayMessage(n,"user"),e.value="",this.showTypingIndicator();try{Ri(n);const s=await this.api.getWineRecommendations(n);this.hideTypingIndicator(),s&&s.length?this.displayResults(s):this.displayMessage("No results found.","api")}catch{this.hideTypingIndicator(),this.displayMessage(W.translate("somethingWentWrong"),"api")}}}showTypingIndicator(){document.getElementById("typing-indicator").classList.add("visible")}hideTypingIndicator(){document.getElementById("typing-indicator").classList.remove("visible")}displayMessage(e,n){const s=document.getElementById("message-container"),i=document.createElement("div");i.textContent=e,i.className="message "+n,s.appendChild(i),s.scrollTop=s.scrollHeight}sendAnalytics(e){console.log(e),Ai(e)}displayResults(e){console.log(e);const n=document.getElementById("message-container");Fi(e.map(s=>s.Title)),e.forEach(s=>{const i=document.createElement("div");i.className="wine-recommendation";const r=document.createElement("div");r.className="wine-item",i.appendChild(r);const o=document.createElement("img");o.src=s.Image,r.appendChild(o),console.log(r,"wine div");const l=document.createElement("div");l.innerHTML=`
1380
+ `}async loadInstantRecommendations(){this.showLoadingIndicator();try{const e=await this.api.getInstantRecommendations();this.displayResults(e)}catch(e){console.error("Error loading instant recommendations:",e.message)}}addEventListenersBarVersion(){const e=document.querySelectorAll(".dish-tile");e.forEach(l=>{l.addEventListener("click",()=>{l.classList.toggle("selected")})});const n=document.querySelectorAll(".dish-group"),s=document.getElementById("bar-send-button"),i=document.getElementById("bar-reset-button"),r=document.getElementById("bar-notes-input"),o=document.getElementById("wine-placeholder");!s||!i||!r||!o||(s.addEventListener("click",async()=>{n.forEach(u=>u.classList.add("hidden")),this.showLoadingIndicator();const l=[];document.querySelectorAll(".dish-tile.selected").forEach(u=>{l.push(u.dataset.dish)});const a=r.value.trim(),d=[];l.length>0&&d.push(`Dishes: ${l.join(", ")}`),a&&d.push(`Notes: ${a}`);const c=d.join("; ");console.log("Final query =>",c);try{const u=await this.api.getWineRecommendationsSearch(c);u&&u.length>0?this.displayResults(u,!0):this.displayNoResultsMessage(),i.classList.remove("hidden")}catch(u){console.error("Error while fetching bar recommendations:",u),this.displayErrorMessage()}finally{this.hideLoadingIndicator()}}),i.addEventListener("click",()=>{n.forEach(l=>l.classList.remove("hidden")),e.forEach(l=>l.classList.remove("selected")),o.innerHTML="",i.classList.add("hidden"),r.value=""}))}initializeSearchAnimation(){const e=document.getElementById("wine-search-input"),n=H.translate("placeholderSuggestions");let s=0,i=0,r=!0,o=!1;const l=()=>{o||(r?(e.placeholder=n[s].substring(0,i++),i>n[s].length?(r=!1,setTimeout(l,2e3)):setTimeout(l,100)):(e.placeholder=n[s].substring(0,i--),i<0?(r=!0,s=(s+1)%n.length,setTimeout(l,500)):setTimeout(l,50)))};l(),e.addEventListener("focus",()=>{e.placeholder="",o=!0}),e.addEventListener("blur",()=>{o=!1,i=0,r=!0,l()})}}class Ba{constructor(){var n;this.api=new Rt;const e=((n=window==null?void 0:window.wineaterData)==null?void 0:n.FIRST_MESSAGE_TEXT)||H.translate("welcomeMessage");this.displayFirstMessage(e)}initialize(){document.getElementById("send-button").addEventListener("click",()=>this.handleUserInput()),document.getElementById("user-input").addEventListener("keypress",s=>{s.key==="Enter"&&this.handleUserInput()})}displayFirstMessage(e,n="api"){const s=document.getElementById("message-container"),i=document.createElement("div");i.className=`message ${n}`,i.textContent=e,s.appendChild(i),s.scrollTop=s.scrollHeight}async handleUserInput(){const e=document.getElementById("user-input"),n=e.value.trim();if(n){this.displayMessage(n,"user"),e.value="",this.showTypingIndicator();try{Di(n);const s=await this.api.getWineRecommendations(n);this.hideTypingIndicator(),s&&s.length?this.displayResults(s):this.displayMessage("No results found.","api")}catch{this.hideTypingIndicator(),this.displayMessage(H.translate("somethingWentWrong"),"api")}}}showTypingIndicator(){document.getElementById("typing-indicator").classList.add("visible")}hideTypingIndicator(){document.getElementById("typing-indicator").classList.remove("visible")}displayMessage(e,n){const s=document.getElementById("message-container"),i=document.createElement("div");i.textContent=e,i.className="message "+n,s.appendChild(i),s.scrollTop=s.scrollHeight}sendAnalytics(e){console.log(e),Fi(e)}displayResults(e){console.log(e);const n=document.getElementById("message-container");Li(e.map(s=>s.Title)),e.forEach(s=>{const i=document.createElement("div");i.className="wine-recommendation";const r=document.createElement("div");r.className="wine-item",i.appendChild(r);const o=document.createElement("img");o.src=s.Image,r.appendChild(o),console.log(r,"wine div");const l=document.createElement("div");l.innerHTML=`
1233
1381
  <strong>${s.Title}</strong><br>
1234
- ${W.translate("price")}: ${s.Price}<br>
1235
- ${W.translate("region")}: ${s.Region}<br>
1236
- ${W.translate("type")}: ${s.Type}<br>
1237
- <a href="${s.Url}" target="_blank">${W.translate("moreInfo")}</a>
1238
- `,l.querySelector("a").addEventListener("click",c=>{c.preventDefault(),this.sendAnalytics(s.Title),window.open(s.Url,"_blank")}),r.appendChild(l);const h=document.createElement("div");h.className="wine-description",h.innerHTML=s.Reason,i.appendChild(h),console.log(i),n.appendChild(i)}),n.scrollTop=n.scrollHeight}}const Ba=3;let Ft=null;function Pa(){const t=document.getElementById("chat-window"),e=document.getElementById("chat-icon");t.classList.contains("visible")?(Vn(),ja(),e.style.display="flex"):(Ft&&(clearTimeout(Ft),Ft=null),Oi(),t.classList.add("visible"),e.style.display="none")}function ja(){console.log("ghbdtn"),Vn(),document.getElementById("chat-window").classList.remove("visible");let e=parseInt(se("chatCloseCount"))||0;e+=1,e>=Ba?(console.log(e),rt("disableAutoOpen","true",1),_i("chatCloseCount")):(console.log(e),rt("chatCloseCount",e,1))}document.addEventListener("DOMContentLoaded",()=>{setupCloseButton(),setupOutsideClick()});function za(t){Ft=t}new Rt;const At={PRODUCT_PAGES:/producto\/[^\/]+\/$/},gi={FESTIVAL_PAGES:/festival/,TASTING_PAGES:/tasting/},Ua={FESTIVAL_PAGES:((bi=window.wineaterData)==null?void 0:bi.FESTIVAL_PAGES)||gi.FESTIVAL_PAGES,TASTING_PAGES:((yi=window.wineaterData)==null?void 0:yi.TASTING_PAGES)||gi.TASTING_PAGES},Ha={PRODUCT_PAGES:((vi=window.wineaterData)==null?void 0:vi.PRODUCT_PAGES)||At.PRODUCT_PAGES,CART_PAGE:((wi=window.wineaterData)==null?void 0:wi.CART_PAGE)||(At==null?void 0:At.CART_PAGE)};async function $a(){const t=window.location.href;for(const[e,n]of Object.entries(Ua))if(n.test(t))return!1;for(const[e,n]of Object.entries(Ha))if(n.test(t))try{console.log(dishes);const s=setTimeout(()=>{openChatWindow()},15e3);return za(s),!0}catch(s){return console.error("Error fetching dishes:",s),!1}return!1}const Wa="HeUw6IXuhvz6tRuXdPEGEbj3SGQ3Q2YtEc1Z8jd41Kg9LtyPb4Epu0to31SYIadG";class qa{constructor(){var e,n;this.stores=["climats","telckel","biobio","weinpoint","vinigrandi","ampely","test"],this.tracker=new Oa({projectKey:"PA8j9fAi49i6g2QnvpNs",__DISABLE_SECURE_MODE:!0}),this.position=((e=window==null?void 0:window.wineaterData)==null?void 0:e.POSITION)||"right-center",this.type=((n=window==null?void 0:window.wineaterData)==null?void 0:n.TYPE)||"chatbot",this.store=this.detectStore()}detectStore(){return this.stores.find(e=>window.location.href.includes(e))||null}async initFlagsmith(){try{await Kn.init({environmentID:"5RfiDoiqb4dHrNdQvzbkfM",cacheFlags:!1,enableAnalytics:!0,identity:se("uniqueUserID")})}catch(e){console.error("Flagsmith initialization failed:",e)}}async initTranslator(){const e=this.store?this.store.charAt(0).toUpperCase()+this.store.slice(1):"Test";await W.fetchConfig(e||"Test")}initCookies(){var e;rt("chatbotToken",((e=window.wineaterData)==null?void 0:e.CLIENT_TOKEN)||Wa,365),Ni()}async initializeChatbotOrWidget(){this.type==="widget"?new La:(this.createChatbotUI(),this.setupChatListeners(),this.setupChatButtonListener(),Va(this.position),new Ma().initialize())}createChatbotUI(){var i;const e=Kn.getValue("chat-btn-txt"),s=`
1382
+ ${H.translate("price")}: ${s.Price}<br>
1383
+ ${H.translate("region")}: ${s.Region}<br>
1384
+ ${H.translate("type")}: ${s.Type}<br>
1385
+ <a href="${s.Url}" target="_blank">${H.translate("moreInfo")}</a>
1386
+ `,l.querySelector("a").addEventListener("click",c=>{c.preventDefault(),this.sendAnalytics(s.Title),window.open(s.Url,"_blank")}),r.appendChild(l);const d=document.createElement("div");d.className="wine-description",d.innerHTML=s.Reason,i.appendChild(d),console.log(i),n.appendChild(i)}),n.scrollTop=n.scrollHeight}}const ja=3;let At=null;function za(){const t=document.getElementById("chat-window"),e=document.getElementById("chat-icon");t.classList.contains("visible")?(Vn(),Ua(),e.style.display="flex"):(At&&(clearTimeout(At),At=null),Ai(),t.classList.add("visible"),e.style.display="none")}function Ua(){console.log("ghbdtn"),Vn(),document.getElementById("chat-window").classList.remove("visible");let e=parseInt(se("chatCloseCount"))||0;e+=1,e>=ja?(console.log(e),rt("disableAutoOpen","true",1),Oi("chatCloseCount")):(console.log(e),rt("chatCloseCount",e,1))}document.addEventListener("DOMContentLoaded",()=>{setupCloseButton(),setupOutsideClick()});function Ha(t){At=t}new Rt;const Dt={PRODUCT_PAGES:/producto\/[^\/]+\/$/},mi={FESTIVAL_PAGES:/festival/,TASTING_PAGES:/tasting/},$a={FESTIVAL_PAGES:((yi=window.wineaterData)==null?void 0:yi.FESTIVAL_PAGES)||mi.FESTIVAL_PAGES,TASTING_PAGES:((wi=window.wineaterData)==null?void 0:wi.TASTING_PAGES)||mi.TASTING_PAGES},qa={PRODUCT_PAGES:((Si=window.wineaterData)==null?void 0:Si.PRODUCT_PAGES)||Dt.PRODUCT_PAGES,CART_PAGE:((xi=window.wineaterData)==null?void 0:xi.CART_PAGE)||(Dt==null?void 0:Dt.CART_PAGE)};async function Wa(){const t=window.location.href;for(const[e,n]of Object.entries($a))if(n.test(t))return!1;for(const[e,n]of Object.entries(qa))if(n.test(t))try{console.log(dishes);const s=setTimeout(()=>{openChatWindow()},15e3);return Ha(s),!0}catch(s){return console.error("Error fetching dishes:",s),!1}return!1}const Ga="HeUw6IXuhvz6tRuXdPEGEbj3SGQ3Q2YtEc1Z8jd41Kg9LtyPb4Epu0to31SYIadG";class Va{constructor(){var e,n;this.stores=["climats","telckel","biobio","weinpoint","vinigrandi","ampely","test"],this.tracker=new Aa({projectKey:"PA8j9fAi49i6g2QnvpNs",__DISABLE_SECURE_MODE:!0}),this.position=((e=window==null?void 0:window.wineaterData)==null?void 0:e.POSITION)||"right-center",this.type=((n=window==null?void 0:window.wineaterData)==null?void 0:n.TYPE)||"chatbot",this.store=this.detectStore()}detectStore(){return this.stores.find(e=>window.location.href.includes(e))||null}async initFlagsmith(){try{await Xn.init({environmentID:"5RfiDoiqb4dHrNdQvzbkfM",cacheFlags:!1,enableAnalytics:!0,identity:se("uniqueUserID")})}catch(e){console.error("Flagsmith initialization failed:",e)}}async initTranslator(){const e=this.store?this.store.charAt(0).toUpperCase()+this.store.slice(1):"Test";await H.fetchConfig(e||"Test")}initCookies(){var e;rt("chatbotToken",((e=window.wineaterData)==null?void 0:e.CLIENT_TOKEN)||Ga,365),Ri()}async initializeChatbotOrWidget(){this.type==="widget"?new Pa:(this.createChatbotUI(),this.setupChatListeners(),this.setupChatButtonListener(),Ka(this.position),new Ba().initialize())}createChatbotUI(){var i;const e=Xn.getValue("chat-btn-txt"),s=`
1239
1387
  <div id="chatbot-container">
1240
1388
  <div id="chat-icon">
1241
1389
  <img src="https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/chat-icon.svg" alt="Chat Icon">
1242
- <span>${((i=window==null?void 0:window.wineaterData)==null?void 0:i.BUTTON_TEXT)||W.translate(`chatButton${e}`)}</span>
1390
+ <span>${((i=window==null?void 0:window.wineaterData)==null?void 0:i.BUTTON_TEXT)||H.translate(`chatButton${e}`)}</span>
1243
1391
  </div>
1244
1392
  <div id="chat-window" class="hidden">
1245
1393
  <div id="chat-header">
1246
1394
  <div id="chat-title">
1247
- <h1>${W.translate("chatTitle")}</h1>
1395
+ <h1>${H.translate("chatTitle")}</h1>
1248
1396
  </div>
1249
1397
  <div id="close-btn">&times;</div>
1250
1398
  </div>
@@ -1253,14 +1401,14 @@ width: 100%;
1253
1401
  <span></span><span></span><span></span>
1254
1402
  </div>
1255
1403
  <div id="input-container">
1256
- <input type="text" id="user-input" placeholder="${W.translate("inputPlaceholder")}">
1257
- <button id="send-button">${W.translate("sendButton")}</button>
1404
+ <input type="text" id="user-input" placeholder="${H.translate("inputPlaceholder")}">
1405
+ <button id="send-button">${H.translate("sendButton")}</button>
1258
1406
  </div>
1259
1407
  <div id="powered-by">
1260
1408
  <a href="https://wineater.com" target="_blank">
1261
- <span>${W.translate("poweredBy")}</span>
1409
+ <span>${H.translate("poweredBy")}</span>
1262
1410
  <img src="https://czvgkhagwvmknscoerfy.supabase.co/storage/v1/object/public/static-media/logo.svg" alt="Wineater Logo" id="chatbot-logo">
1263
1411
  </a>
1264
1412
  </div>
1265
1413
  </div>
1266
- `;document.body.insertAdjacentHTML("beforeend",s)}setupChatListeners(){document.getElementById("close-btn").addEventListener("click",Pa),window.addEventListener("click",n=>{const s=document.getElementById("chat-window"),i=document.getElementById("chat-icon");!s.contains(n.target)&&!i.contains(n.target)&&(s.classList.remove("visible"),i.style.display="flex")})}autoOpenChatIfNeeded(){se("disableAutoOpen")||$a()}setupChatButtonListener(){const e=document.getElementById("chat-icon"),n=document.getElementById("chat-window");if(!e||!n){console.error("Chat icon or chat window element not found!");return}e.addEventListener("click",()=>{n.classList.contains("visible")?(n.classList.remove("visible"),e.style.display="flex"):(n.classList.add("visible"),e.style.display="none")})}async initialize(){this.tracker.start(),await this.initFlagsmith(),await this.initTranslator(),this.initCookies(),await this.initializeChatbotOrWidget(),this.autoOpenChatIfNeeded()}}function Va(t="right-center"){const e=document.getElementById("chat-icon");e&&(e.className=`chat-icon-${t}`)}document.addEventListener("DOMContentLoaded",()=>{new qa().initialize()})});
1414
+ `;document.body.insertAdjacentHTML("beforeend",s)}setupChatListeners(){document.getElementById("close-btn").addEventListener("click",za),window.addEventListener("click",n=>{const s=document.getElementById("chat-window"),i=document.getElementById("chat-icon");!s.contains(n.target)&&!i.contains(n.target)&&(s.classList.remove("visible"),i.style.display="flex")})}autoOpenChatIfNeeded(){se("disableAutoOpen")||Wa()}setupChatButtonListener(){const e=document.getElementById("chat-icon"),n=document.getElementById("chat-window");if(!e||!n){console.error("Chat icon or chat window element not found!");return}e.addEventListener("click",()=>{n.classList.contains("visible")?(n.classList.remove("visible"),e.style.display="flex"):(n.classList.add("visible"),e.style.display="none")})}async initialize(){this.tracker.start(),await this.initFlagsmith(),await this.initTranslator(),this.initCookies(),await this.initializeChatbotOrWidget(),this.autoOpenChatIfNeeded()}}function Ka(t="right-center"){const e=document.getElementById("chat-icon");e&&(e.className=`chat-icon-${t}`)}document.addEventListener("DOMContentLoaded",()=>{new Va().initialize()})});