@sprig-technologies/sprig-browser 2.39.3 → 2.39.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-D7GY8Q1p.cjs");require("./replay.cjs");const r=require("./metricsReporter-CXdAqZlB.cjs");exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig,exports.DismissReason=r.DismissReason,exports.SprigEvent=r.SprigEvent;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-DGzfRh0z.cjs");require("./replay.cjs");const r=require("./metricsReporter-DOjBAl52.cjs");exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig,exports.DismissReason=r.DismissReason,exports.SprigEvent=r.SprigEvent;
package/dist/index.d.ts CHANGED
@@ -1691,6 +1691,7 @@ interface AppProductConfig {
1691
1691
  placement?: FeedbackPlacement;
1692
1692
  }
1693
1693
  interface Config extends MobileReplayConfig {
1694
+ addResponseGroupMeta?: () => Promise<JSONObject>;
1694
1695
  allResponses: unknown[];
1695
1696
  answers?: Answer[];
1696
1697
  apiURL: string;
@@ -1711,6 +1712,7 @@ interface Config extends MobileReplayConfig {
1711
1712
  customMetadata?: Record<string, unknown>;
1712
1713
  customStyles?: string;
1713
1714
  dismissOnPageChange: boolean;
1715
+ enableCspTrustedTypes?: boolean;
1714
1716
  forceBrandedLogo?: boolean;
1715
1717
  endCard?: {
1716
1718
  headline: string;
@@ -1789,6 +1791,7 @@ interface Config extends MobileReplayConfig {
1789
1791
  startingQuestionIdx?: number | null;
1790
1792
  styleNonce?: string;
1791
1793
  studyType?: StudyType;
1794
+ surveyVisitorAttributes: Record<string, unknown>;
1792
1795
  surveyId: number;
1793
1796
  tabTitle: string;
1794
1797
  trackPageViewUrl?: string;
@@ -1806,6 +1809,11 @@ interface Config extends MobileReplayConfig {
1806
1809
  externalUserId?: string;
1807
1810
  };
1808
1811
  }
1812
+ type JSONPrimitive = string | number | boolean | null;
1813
+ type JSONValue = JSONPrimitive | JSONValue[] | {
1814
+ [key: string]: JSONValue;
1815
+ };
1816
+ type JSONObject = Record<string, JSONValue>;
1809
1817
 
1810
1818
  interface Experiment {
1811
1819
  id: string;
@@ -2108,6 +2116,14 @@ declare global {
2108
2116
  // common types
2109
2117
  /** @example "123e4567-e89b-12d3-a456-426614174000" */
2110
2118
  type UUID = string;
2119
+
2120
+ interface Document {
2121
+ write(...text: Array<string | TrustedHTML>): void;
2122
+ }
2123
+
2124
+ interface Element {
2125
+ innerHTML: string | TrustedHTML;
2126
+ }
2111
2127
  }
2112
2128
 
2113
2129
  declare class SprigAPI {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { S as i, c as o, s as p } from "./core-fXpU4mUJ.js";
1
+ import { S as i, c as o, s as p } from "./core-BAdMqSxY.js";
2
2
  import "./replay.js";
3
- import { D as t, S as m } from "./metricsReporter-1Oozsgva.js";
3
+ import { D as t, S as m } from "./metricsReporter-Chz3rKxD.js";
4
4
  export {
5
5
  t as DismissReason,
6
6
  i as SprigAPI,
@@ -217,7 +217,7 @@ const J = (e) => e._config && e._config.installationMethod ? e._config.installat
217
217
  U = !0, A = e;
218
218
  };
219
219
  function ce(e = {}) {
220
- const t = { "Content-Type": "application/json", "userleap-platform": "web", "x-ul-sdk-version": "2.39.3", "x-ul-installation-method": J(e), "sprig-modules": B() };
220
+ const t = { "Content-Type": "application/json", "userleap-platform": "web", "x-ul-sdk-version": "2.39.4", "x-ul-installation-method": J(e), "sprig-modules": B() };
221
221
  if (e.envId && (t["x-ul-environment-id"] = e.envId), e.token && (t.Authorization = "Bearer " + e.token), e.userId && (t["x-ul-user-id"] = e.userId), e.visitorId && (t["x-ul-visitor-id"] = e.visitorId), e.partnerAnonymousId && (t["x-ul-anonymous-id"] = e.partnerAnonymousId), e.mobileHeadersJSON) {
222
222
  const s = JSON.parse(e.mobileHeadersJSON);
223
223
  Object.assign(t, s);
@@ -1 +1 @@
1
- "use strict";var Y=Object.defineProperty;var j=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var l=(e,t,r)=>j(e,typeof t!="symbol"?t+"":t,r);var U=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(U||{}),A=(e=>(e.ReplayCapture="replay.capture",e.ReplayPaused="replay.paused",e.ReplayResumed="replay.resumed",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",e.SurveyCloseRequested="survey.closeRequested",e.SurveyClosed="survey.closed",e.SurveyDimensions="survey.dimensions",e.SurveyFadingOut="survey.fadingOut",e.SurveyHeight="survey.height",e.SurveyPresented="survey.presented",e.SurveyLifeCycle="survey.lifeCycle",e.SurveyWidth="survey.width",e.SurveyWillClose="survey.willClose",e.SurveyWillPresent="survey.will.present",e.CloseSurveyOnOverlayClick="close.survey.overlayClick",e.VisitorIDUpdated="visitor.id.updated",e.QuestionAnswered="question.answered",e))(A||{});let m;const F=new Uint8Array(16);function H(){if(!m&&(m=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!m))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(F)}const o=[];for(let e=0;e<256;++e)o.push((e+256).toString(16).slice(1));const w={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},b=new class{constructor(){l(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(e){this.breadcrumbs.push(e),this.breadcrumbs.length>300&&this.breadcrumbs.shift()}debug(e,t="debug"){this.addBreadcrumb({category:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"debug"})}error(e,t={}){this.addBreadcrumb({category:"error",data:t,level:"error",message:e,timestamp:this.getTimeStamp(),type:"error"})}http(e,t){this.addBreadcrumb({category:"xhr",data:t,message:e,timestamp:this.getTimeStamp(),type:"http"})}info(e,t={}){this.addBreadcrumb({category:"info",data:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"info"})}navigation(e,t){this.addBreadcrumb({category:"navigation",data:t,message:e,timestamp:this.getTimeStamp(),type:"navigation"})}};var q=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning"}},C=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=C.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,r){this.emit(e,t,r)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){const r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t)}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const s=new q(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=C;D.defaultMaxListeners=10;const B=new D,S=async e=>{await new Promise(t=>{setTimeout(t,e)})};class x{constructor(t){l(this,"storage");l(this,"tempStorage",{});l(this,"isStorageAvailable");try{this.storage=window[t];const r="__storage_test__";this.storage.setItem(r,r),this.storage.removeItem(r),this.isStorageAvailable=!0}catch{this.isStorageAvailable=!1}}setItem(t,r){this.isStorageAvailable&&this.storage?this.storage.setItem(t,r):this.tempStorage[t]=r}setItemObject(t,r){try{this.setItem(t,JSON.stringify(r))}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to save to local storage",s))}}getItem(t){return this.isStorageAvailable&&this.storage?this.storage.getItem(t):this.tempStorage[t]}getItemObject(t){const r=this.getItem(t);if(r)try{return JSON.parse(r)}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to parse local storage",s))}return{}}removeItem(t){this.isStorageAvailable&&this.storage?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable&&this.storage?this.storage.clear():this.tempStorage={}}}const J=new x("sessionStorage"),$=new x("localStorage");class K{constructor(t){l(this,"payload");l(this,"promise");l(this,"reject",()=>{});l(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const E={replay:null},G=()=>{const e=[];return E.replay&&e.push("replay"),e.join(",")},z=10;let T=!1,M="",g=!1,P=!1,y=[];const Q=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",N=(e="")=>{T=!0,M=e},R=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new K(t);return y.push(r),r.promise}},v=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:n=!1,...i}=t,d={url:e,options:i,retries:r,shouldDropOnRateLimit:s};if(g&&!n)return R(d);const u={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${M}`),u;try{const c=await fetch(e,i);if(c.status===429){if(!g&&!s||n){g=!0;const a=c.headers.has("ratelimit-reset")?Number(c.headers.get("ratelimit-reset")):z;return await S(1e3*a),v(e,{...i,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}return R(d)}if(g=!1,y.length&&(y.map(a=>{const h=a.payload;v(h.url,{...h.options,retries:h.retries,shouldDropOnRateLimit:h.shouldDropOnRateLimit}).then(W=>{a.resolveRequest(W)})}),y=[]),c.ok){if(c.status===249)return N(),u;const a=await c.text();try{return a&&a!=="OK"&&(c.json=JSON.parse(a)),c}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${a}`)}}}return c}catch(c){const a=r+1;return a>5||P?{ok:!1,reportError:!1,error:c}:(await S(1e3*Math.pow(2,r)),v(e,{...i,retries:a}))}},I=Object.freeze({contains:(e,t)=>t.includes(e),notContains:(e,t)=>!t.includes(e),exactly:(e,t)=>t===e,notExactly:(e,t)=>t!==e,startsWith:(e,t)=>t.startsWith(e),endsWith:(e,t)=>t.endsWith(e),regex:(e,t)=>new RegExp(e).test(t),legacy:(e,t)=>new RegExp(e,"i").test(t)});function k(e,t){const{matchType:r,pattern:s}=e,n=r?I[r]:I.legacy;let i=!1;try{i=n(s,t)}catch(d){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;d instanceof Error&&(console.warn(u,d),d.stack=JSON.stringify(e),window.UserLeap.reportError(u,d))}return i}let V=!0,f=!1;const X=["sdk_event_queue_latency_seconds","sdk_replay_add_event_batch_seconds","sdk_replay_cleanup_seconds","sdk_replay_compression_seconds","sdk_replay_get_events_between_seconds","sdk_replay_snapshot_seconds","sdk_mutations_nodes_added","sdk_mutations_nodes_removed","sdk_mutations_attributes_changed","sdk_mutations_character_data","sdk_dom_nodes_count","sdk_page_html_characters"];let L,p={};class Z{constructor(t){l(this,"_values",[]);l(this,"_isWebMetric");this.name=t,this._isWebMetric=X.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&L&&L(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=p[this.name];if(r)return r.find(s=>this.valueExceedsThreshold(t,s))}valueExceedsThreshold(t,r){return r.type==="max"?t>r.value:r.type==="min"&&t<r.value}}const _={},O=e=>{const t=new Z(e);return _[e]=t,t};exports.DismissReason=U,exports.EVENTS={FEEDBACK_BUTTON_LOADED:"feedback.button.loaded",SDK_READY:"sdk.ready",SURVEY_APPEARED:"survey.appeared",SURVEY_CLOSED:"survey.closed",SURVEY_DIMENSIONS:"survey.dimensions",SURVEY_FADING_OUT:"survey.fadingOut",SURVEY_HEIGHT:"survey.height",SURVEY_WIDTH:"survey.width",SURVEY_PRESENTED:"survey.presented",SURVEY_LIFE_CYCLE:"survey.lifeCycle",SURVEY_WILL_CLOSE:"survey.willClose",SURVEY_WILL_PRESENT:"survey.will.present",QUESTION_ANSWERED:"question.answered",REPLAY_CAPTURE:"replay.capture",CLOSE_SURVEY_ON_OVERLAY_CLICK:"close.survey.overlayClick",VISITOR_ID_UPDATED:"visitor.id.updated",DATA:{DISMISS_REASONS:{API:"api",CLOSED:"close.click",COMPLETE:"survey.completed",PAGE_CHANGE:"page.change",OVERRIDE:"override"},SURVEY_ID:"survey.id"}},exports.PerformanceMetrics=_,exports.SprigEvent=A,exports.breadcrumbsLogger=b,exports.checkUrlMatch=k,exports.checkUrlStillMatching=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return!!r&&k(r,window.location.href)},exports.cspViolationHandler=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(P=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},exports.delay=S,exports.disableThresholdChecking=()=>f=!0,exports.eventEmitter=B,exports.getHttpHeaders=function(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.39.3","x-ul-installation-method":Q(e),"sprig-modules":G()};if(e.envId&&(t["x-ul-environment-id"]=e.envId),e.token&&(t.Authorization="Bearer "+e.token),e.userId&&(t["x-ul-user-id"]=e.userId),e.visitorId&&(t["x-ul-visitor-id"]=e.visitorId),e.partnerAnonymousId&&(t["x-ul-anonymous-id"]=e.partnerAnonymousId),e.mobileHeadersJSON){const r=JSON.parse(e.mobileHeadersJSON);Object.assign(t,r)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t},exports.groupCards=(e,t)=>{const r=[e[t]],s=e[t].groupId;return s?e.slice(t).reduce((n,i)=>(i.groupId===s&&n.push(i),n),[]):r},exports.initPerformanceReporting=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{(async r=>{const s=Object.values(_).map(n=>({name:n.name,values:n.collect()}));if(s.some(n=>n.values.length))try{await r(JSON.stringify(s))}catch(n){n instanceof Error&&b.error("MetricsErr",{error:{message:n.message,name:n.name}})}})(t)},1e3*e):V=!1},exports.isLongFormSurvey=e=>e==="longFormSurvey",exports.killNetworkRequests=N,exports.localStorageHelper=$,exports.modules=E,exports.registerMetric=O,exports.registerReplay=e=>{E.replay=e},exports.registerThresholds=(e,t)=>{p={},f=!1,e==null||e.forEach(r=>{var s;r.metric in p||(p[r.metric]=[]),(s=p[r.metric])==null||s.push(r)}),L=t},exports.reportAndRegister=(e,t)=>{let r=_[e];return r||(r=O(e)),r.report(t)},exports.sessionStorageHelper=J,exports.shouldDirectEmbed=({"userleap-platform":e})=>{var t;return((t=window.UserLeap)==null?void 0:t.forceDirectEmbed)||e!=="web"},exports.sprigFetch=v,exports.v4=function(e,t,r){if(w.randomUUID&&!e)return w.randomUUID();const s=(e=e||{}).random||(e.rng||H)();return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(n,i=0){return o[n[i+0]]+o[n[i+1]]+o[n[i+2]]+o[n[i+3]]+"-"+o[n[i+4]]+o[n[i+5]]+"-"+o[n[i+6]]+o[n[i+7]]+"-"+o[n[i+8]]+o[n[i+9]]+"-"+o[n[i+10]]+o[n[i+11]]+o[n[i+12]]+o[n[i+13]]+o[n[i+14]]+o[n[i+15]]}(s)};
1
+ "use strict";var Y=Object.defineProperty;var j=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var l=(e,t,r)=>j(e,typeof t!="symbol"?t+"":t,r);var U=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(U||{}),A=(e=>(e.ReplayCapture="replay.capture",e.ReplayPaused="replay.paused",e.ReplayResumed="replay.resumed",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",e.SurveyCloseRequested="survey.closeRequested",e.SurveyClosed="survey.closed",e.SurveyDimensions="survey.dimensions",e.SurveyFadingOut="survey.fadingOut",e.SurveyHeight="survey.height",e.SurveyPresented="survey.presented",e.SurveyLifeCycle="survey.lifeCycle",e.SurveyWidth="survey.width",e.SurveyWillClose="survey.willClose",e.SurveyWillPresent="survey.will.present",e.CloseSurveyOnOverlayClick="close.survey.overlayClick",e.VisitorIDUpdated="visitor.id.updated",e.QuestionAnswered="question.answered",e))(A||{});let m;const F=new Uint8Array(16);function H(){if(!m&&(m=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!m))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(F)}const o=[];for(let e=0;e<256;++e)o.push((e+256).toString(16).slice(1));const w={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},b=new class{constructor(){l(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(e){this.breadcrumbs.push(e),this.breadcrumbs.length>300&&this.breadcrumbs.shift()}debug(e,t="debug"){this.addBreadcrumb({category:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"debug"})}error(e,t={}){this.addBreadcrumb({category:"error",data:t,level:"error",message:e,timestamp:this.getTimeStamp(),type:"error"})}http(e,t){this.addBreadcrumb({category:"xhr",data:t,message:e,timestamp:this.getTimeStamp(),type:"http"})}info(e,t={}){this.addBreadcrumb({category:"info",data:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"info"})}navigation(e,t){this.addBreadcrumb({category:"navigation",data:t,message:e,timestamp:this.getTimeStamp(),type:"navigation"})}};var q=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning"}},C=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=C.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,r){this.emit(e,t,r)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){const r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t)}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const s=new q(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=C;D.defaultMaxListeners=10;const B=new D,S=async e=>{await new Promise(t=>{setTimeout(t,e)})};class x{constructor(t){l(this,"storage");l(this,"tempStorage",{});l(this,"isStorageAvailable");try{this.storage=window[t];const r="__storage_test__";this.storage.setItem(r,r),this.storage.removeItem(r),this.isStorageAvailable=!0}catch{this.isStorageAvailable=!1}}setItem(t,r){this.isStorageAvailable&&this.storage?this.storage.setItem(t,r):this.tempStorage[t]=r}setItemObject(t,r){try{this.setItem(t,JSON.stringify(r))}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to save to local storage",s))}}getItem(t){return this.isStorageAvailable&&this.storage?this.storage.getItem(t):this.tempStorage[t]}getItemObject(t){const r=this.getItem(t);if(r)try{return JSON.parse(r)}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to parse local storage",s))}return{}}removeItem(t){this.isStorageAvailable&&this.storage?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable&&this.storage?this.storage.clear():this.tempStorage={}}}const J=new x("sessionStorage"),$=new x("localStorage");class K{constructor(t){l(this,"payload");l(this,"promise");l(this,"reject",()=>{});l(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const E={replay:null},G=()=>{const e=[];return E.replay&&e.push("replay"),e.join(",")},z=10;let T=!1,M="",g=!1,P=!1,y=[];const Q=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",N=(e="")=>{T=!0,M=e},R=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new K(t);return y.push(r),r.promise}},v=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:n=!1,...i}=t,d={url:e,options:i,retries:r,shouldDropOnRateLimit:s};if(g&&!n)return R(d);const u={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${M}`),u;try{const c=await fetch(e,i);if(c.status===429){if(!g&&!s||n){g=!0;const a=c.headers.has("ratelimit-reset")?Number(c.headers.get("ratelimit-reset")):z;return await S(1e3*a),v(e,{...i,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}return R(d)}if(g=!1,y.length&&(y.map(a=>{const h=a.payload;v(h.url,{...h.options,retries:h.retries,shouldDropOnRateLimit:h.shouldDropOnRateLimit}).then(W=>{a.resolveRequest(W)})}),y=[]),c.ok){if(c.status===249)return N(),u;const a=await c.text();try{return a&&a!=="OK"&&(c.json=JSON.parse(a)),c}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${a}`)}}}return c}catch(c){const a=r+1;return a>5||P?{ok:!1,reportError:!1,error:c}:(await S(1e3*Math.pow(2,r)),v(e,{...i,retries:a}))}},I=Object.freeze({contains:(e,t)=>t.includes(e),notContains:(e,t)=>!t.includes(e),exactly:(e,t)=>t===e,notExactly:(e,t)=>t!==e,startsWith:(e,t)=>t.startsWith(e),endsWith:(e,t)=>t.endsWith(e),regex:(e,t)=>new RegExp(e).test(t),legacy:(e,t)=>new RegExp(e,"i").test(t)});function k(e,t){const{matchType:r,pattern:s}=e,n=r?I[r]:I.legacy;let i=!1;try{i=n(s,t)}catch(d){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;d instanceof Error&&(console.warn(u,d),d.stack=JSON.stringify(e),window.UserLeap.reportError(u,d))}return i}let V=!0,f=!1;const X=["sdk_event_queue_latency_seconds","sdk_replay_add_event_batch_seconds","sdk_replay_cleanup_seconds","sdk_replay_compression_seconds","sdk_replay_get_events_between_seconds","sdk_replay_snapshot_seconds","sdk_mutations_nodes_added","sdk_mutations_nodes_removed","sdk_mutations_attributes_changed","sdk_mutations_character_data","sdk_dom_nodes_count","sdk_page_html_characters"];let L,p={};class Z{constructor(t){l(this,"_values",[]);l(this,"_isWebMetric");this.name=t,this._isWebMetric=X.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&L&&L(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=p[this.name];if(r)return r.find(s=>this.valueExceedsThreshold(t,s))}valueExceedsThreshold(t,r){return r.type==="max"?t>r.value:r.type==="min"&&t<r.value}}const _={},O=e=>{const t=new Z(e);return _[e]=t,t};exports.DismissReason=U,exports.EVENTS={FEEDBACK_BUTTON_LOADED:"feedback.button.loaded",SDK_READY:"sdk.ready",SURVEY_APPEARED:"survey.appeared",SURVEY_CLOSED:"survey.closed",SURVEY_DIMENSIONS:"survey.dimensions",SURVEY_FADING_OUT:"survey.fadingOut",SURVEY_HEIGHT:"survey.height",SURVEY_WIDTH:"survey.width",SURVEY_PRESENTED:"survey.presented",SURVEY_LIFE_CYCLE:"survey.lifeCycle",SURVEY_WILL_CLOSE:"survey.willClose",SURVEY_WILL_PRESENT:"survey.will.present",QUESTION_ANSWERED:"question.answered",REPLAY_CAPTURE:"replay.capture",CLOSE_SURVEY_ON_OVERLAY_CLICK:"close.survey.overlayClick",VISITOR_ID_UPDATED:"visitor.id.updated",DATA:{DISMISS_REASONS:{API:"api",CLOSED:"close.click",COMPLETE:"survey.completed",PAGE_CHANGE:"page.change",OVERRIDE:"override"},SURVEY_ID:"survey.id"}},exports.PerformanceMetrics=_,exports.SprigEvent=A,exports.breadcrumbsLogger=b,exports.checkUrlMatch=k,exports.checkUrlStillMatching=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return!!r&&k(r,window.location.href)},exports.cspViolationHandler=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(P=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},exports.delay=S,exports.disableThresholdChecking=()=>f=!0,exports.eventEmitter=B,exports.getHttpHeaders=function(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.39.4","x-ul-installation-method":Q(e),"sprig-modules":G()};if(e.envId&&(t["x-ul-environment-id"]=e.envId),e.token&&(t.Authorization="Bearer "+e.token),e.userId&&(t["x-ul-user-id"]=e.userId),e.visitorId&&(t["x-ul-visitor-id"]=e.visitorId),e.partnerAnonymousId&&(t["x-ul-anonymous-id"]=e.partnerAnonymousId),e.mobileHeadersJSON){const r=JSON.parse(e.mobileHeadersJSON);Object.assign(t,r)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t},exports.groupCards=(e,t)=>{const r=[e[t]],s=e[t].groupId;return s?e.slice(t).reduce((n,i)=>(i.groupId===s&&n.push(i),n),[]):r},exports.initPerformanceReporting=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{(async r=>{const s=Object.values(_).map(n=>({name:n.name,values:n.collect()}));if(s.some(n=>n.values.length))try{await r(JSON.stringify(s))}catch(n){n instanceof Error&&b.error("MetricsErr",{error:{message:n.message,name:n.name}})}})(t)},1e3*e):V=!1},exports.isLongFormSurvey=e=>e==="longFormSurvey",exports.killNetworkRequests=N,exports.localStorageHelper=$,exports.modules=E,exports.registerMetric=O,exports.registerReplay=e=>{E.replay=e},exports.registerThresholds=(e,t)=>{p={},f=!1,e==null||e.forEach(r=>{var s;r.metric in p||(p[r.metric]=[]),(s=p[r.metric])==null||s.push(r)}),L=t},exports.reportAndRegister=(e,t)=>{let r=_[e];return r||(r=O(e)),r.report(t)},exports.sessionStorageHelper=J,exports.shouldDirectEmbed=({"userleap-platform":e})=>{var t;return((t=window.UserLeap)==null?void 0:t.forceDirectEmbed)||e!=="web"},exports.sprigFetch=v,exports.v4=function(e,t,r){if(w.randomUUID&&!e)return w.randomUUID();const s=(e=e||{}).random||(e.rng||H)();return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(n,i=0){return o[n[i+0]]+o[n[i+1]]+o[n[i+2]]+o[n[i+3]]+"-"+o[n[i+4]]+o[n[i+5]]+"-"+o[n[i+6]]+o[n[i+7]]+"-"+o[n[i+8]]+o[n[i+9]]+"-"+o[n[i+10]]+o[n[i+11]]+o[n[i+12]]+o[n[i+13]]+o[n[i+14]]+o[n[i+15]]}(s)};
package/dist/replay.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var et=Object.defineProperty;var tt=(e,t,n)=>t in e?et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var N=(e,t,n)=>tt(e,typeof t!="symbol"?t+"":t,n);const o=require("./metricsReporter-CXdAqZlB.cjs");var L=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(L||{}),k=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(k||{});const Z=(e,t)=>t.some(n=>e instanceof n);let ye,fe;const ee=new WeakMap,q=new WeakMap,$=new WeakMap;let te={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return ee.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return x(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&(t==="done"||t==="store")||t in e};function Ee(e){te=e(te)}function nt(e){return(fe||(fe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(ne(this),t),x(this.request)}:function(...t){return x(e.apply(ne(this),t))}}function rt(e){return typeof e=="function"?nt(e):(e instanceof IDBTransaction&&function(t){if(ee.has(t))return;const n=new Promise((r,a)=>{const s=()=>{a(t.error||new DOMException("AbortError","AbortError"))};t.oncomplete=()=>{r()},t.onerror=s,t.onabort=s});ee.set(t,n)}(e),Z(e,ye||(ye=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,te):e)}function x(e){if(e instanceof IDBRequest)return function(n){const r=new Promise((a,s)=>{n.onsuccess=()=>{a(x(n.result))},n.onerror=()=>{s(n.error)}});return $.set(r,n),r}(e);if(q.has(e))return q.get(e);const t=rt(e);return t!==e&&(q.set(e,t),$.set(t,e)),t}const ne=e=>$.get(e);function re(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),x(n).then(()=>{})}const at=["get","getKey","getAll","getAllKeys","count"],st=["put","add","delete","clear"],z=new Map;function he(e,t){if(!(e instanceof IDBDatabase)||t in e||typeof t!="string")return;if(z.get(t))return z.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,a=st.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!a&&!at.includes(n))return;const s=async function(i,...c){const d=this.transaction(i,a?"readwrite":"readonly");let u=d.store;return r&&(u=u.index(c.shift())),(await Promise.all([u[n](...c),a&&d.done]))[0]};return z.set(t,s),s}Ee(e=>({...e,get:(t,n,r)=>he(t,n)||e.get(t,n,r),has:(t,n)=>!!he(t,n)||e.has(t,n)}));const ot=["continue","continuePrimaryKey","advance"],Ie={},ae=new WeakMap,Re=new WeakMap,it={get(e,t){if(!ot.includes(t))return e[t];let n=Ie[t];return n||(n=Ie[t]=function(...r){ae.set(this,Re.get(this)[t](...r))}),n}};async function*dt(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const n=new Proxy(t,it);for(Re.set(n,t),$.set(n,ne(t));t;)yield n,t=await(ae.get(n)||t.continue()),ae.delete(n)}function ve(e,t){return t===Symbol.asyncIterator&&Z(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&Z(e,[IDBIndex,IDBObjectStore])}Ee(e=>({...e,get:(t,n,r)=>ve(t,n)?dt:e.get(t,n,r),has:(t,n)=>ve(t,n)||e.has(t,n)}));const ct="sprigReplayIframeLoaded",ut="sprigReplayIframeSettings",lt="sprigReplayIframeTakeFullSnapshot",pt="sprigReplayTeardown",pe=[],Ce=new class{constructor(e){N(this,"awaitingResolvers",[]);N(this,"activeCount",0);this.capacity=e}async acquire(){if(!(this.activeCount<this.capacity))return new Promise(e=>{this.awaitingResolvers.push(e)});this.activeCount++}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}(2),Pe=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:a,responseGroupUuid:s,replayDuration:i,eventDigest:c},d=!1)=>{var w;if(!d&&!n&&!r)return void o.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:n,etags:r});o.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const u=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(w=window==null?void 0:window.navigator)==null?void 0:w.userAgent}),headers:a,shouldRetryRequest:!0});return o.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),u},gt=e=>{if(e instanceof Attr)return null;let t=1;for(let n=e.previousSibling;n;n=n.previousSibling)n.nodeName===e.nodeName&&++t;return t},ke=e=>{if(e===null)return"";const t=[];if(e instanceof Document)return"/";for(let n=e;n&&!(n instanceof Document)&&n!==null;n=n instanceof Attr?n.ownerElement:n.parentElement){const r=t[t.length]={name:void 0,position:null};switch(n.nodeType){case Node.TEXT_NODE:r.name="text()";break;case Node.ATTRIBUTE_NODE:r.name="@"+n.nodeName;break;case Node.PROCESSING_INSTRUCTION_NODE:r.name="processing-instruction()";break;case Node.COMMENT_NODE:r.name="comment()";break;case Node.ELEMENT_NODE:r.name=n.nodeName}r.position=gt(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},ge=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),R={capture:!0,passive:!0},mt=["a","button","input","option","li","link"],wt=["Escape","Enter","Backspace","F5","Tab"];let j=!1,S=null,V=null;const be=e=>{var n;if(((n=e.tagName)==null?void 0:n.toLowerCase())==="html")return{element:"html"};const t={};return t.element=(r=>{if(!r.tagName)return"No tagName";const a=r.getAttribute("type");return a?`${a} ${r.tagName.toLowerCase()}`:r.tagName.toLowerCase()})(e),t},yt=e=>{var r;if(!e)return{};const t={...be(e)},n=e.parentElement;if(n&&mt.includes((r=n.tagName)==null?void 0:r.toLowerCase())){const a=be(n);Object.assign(t,a)}return t},Te=(e,t)=>{var a,s;let n=t.target;var r;t.target===((a=window.document)==null?void 0:a.body)&&window.Sprig.pointerDownTarget&&(n=window.Sprig.pointerDownTarget),r={x:t.x,y:t.y,type:e,elementAttributes:yt(n),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...n instanceof HTMLElement||n instanceof SVGElement||n instanceof MathMLElement?{rect:n==null?void 0:n.getBoundingClientRect(),xPath:ke(n)}:{}},(s=r==null?void 0:r.elementAttributes)!=null&&s.text&&(r.elementAttributes.text=ge(r.elementAttributes.text)),S==null||S("Sprig_Click",r)},Ue=e=>{var t;wt.includes(e.key)&&(t={key:e.key},S==null||S("Sprig_Keystroke",t))},ft=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&(e={url:window.location.href,currentPageTitle:document.title},S==null||S("Sprig_Refresh",e))},ht=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&((e={curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title}).currentPageTitle&&(e.currentPageTitle=ge(e.currentPageTitle)),S==null||S("Sprig_BackForward",e))},Le=((e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}})(e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),V==null||V({xPath:ke(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},750),xe=(Se="left_click",e=>Te(Se,e));var Se;const Be=e=>{e.button===2&&Te("right_click",e)},Me=e=>{window.Sprig&&(window.Sprig.pointerDownTarget=e.target)},g={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},Ae=()=>window.indexedDB&&window.IDBKeyRange&&window.CompressionStream,h=(()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t})(),se=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},C=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording"),K=()=>!!o.sessionStorageHelper.getItem("sprig.isReplayPaused");window.addEventListener("beforeunload",()=>{o.breadcrumbsLogger.info("BeforeUnload",{sessionId:h}),o.sessionStorageHelper.setItem("sprig.sessionId",h)});const T=(e,t)=>{var n,r;if(!C()&&g.isRecording&&!K())try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(a){O("Error recording custom event",a)}},It=async e=>{const{x:t,xPath:n,y:r}=e,a=g.scrollEventUuids[n];if(a)return b(async()=>{var c,d,u,w;const s=await l.openDB(),i=await s.get("events",a);if(i!=null&&i.event){const p=JSON.parse(i.event),f=t>((d=(c=p.data)==null?void 0:c.payload)==null?void 0:d.x),m=r>((w=(u=p.data)==null?void 0:u.payload)==null?void 0:w.y);if(!f&&!m)return null;f&&(p.data.payload.x=t),m&&(p.data.payload.y=r),p.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(p),await s.put("events",i)}else T("Sprig_Scroll",e)},"Error updating scroll event");T("Sprig_Scroll",e)},_e=()=>{g.stopRecording&&(g.stopRecording(),g.stopRecording=void 0),g.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{g[e]&&(clearInterval(g[e]),g[e]=void 0)}),j&&(window.removeEventListener("click",xe,R),window.removeEventListener("pointerdown",Me,R),window.removeEventListener("mousedown",Be,R),window.removeEventListener("keydown",Ue,R),window.removeEventListener("scroll",Le,R),j=!1),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:pt},{targetOrigin:e.origin})})},vt=["did not allow mutations","called in an invalid security context"],bt=(e,t,{reportError:n=!0,extraInfo:r={}})=>{if(!C()&&t instanceof Error){if(se(),t.name==="VersionError")return o.breadcrumbsLogger.error("VersionErr",{message:e}),void l.deleteDB();(a=>{if(!a)return!0;for(const s of vt)if(a.toLowerCase().includes(s))return!1;return!0})(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),l.clearAll())}},O=(e,t,{reportError:n}={reportError:!0})=>{_e(),o.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),bt(e,t,{reportError:n})},b=async(e,t)=>{try{return await e()}catch(n){O(t,n)}},oe=()=>{g.isRecording&&(b(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot"),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:lt},{targetOrigin:e.origin})}))};let Q=0;(async()=>Ae()&&Promise.allSettled([re("replayStorage"),re("sprig.replay")]))();const l=new class{constructor(){N(this,"wrapTransactionWithCounter",e=>{var r,a;const t=(a=(r=window.Sprig)==null?void 0:r._config)==null?void 0:a.outstandingTransactionLimit,n=t===void 0?100:t;if(n&&Q>n){const s="Too many outstanding transactions";O(s,new Error(s),{reportError:!1})}Q++,e.done.finally(()=>{Q--})});N(this,"getTransaction",async e=>{const t=(await this.openDB()).transaction(e,"readwrite");return this.wrapTransactionWithCounter(t),t})}openDB(){return function(e,t,{blocked:n,upgrade:r,blocking:a,terminated:s}={}){const i=indexedDB.open(e,t),c=x(i);return r&&(i.onupgradeneeded=d=>{r(x(i.result),d.oldVersion,d.newVersion,x(i.transaction),d)}),n&&(i.onblocked=d=>n(d.oldVersion,d.newVersion,d)),c.then(d=>{s&&(d.onclose=()=>s()),a&&(d.onversionchange=u=>a(u.oldVersion,u.newVersion,u))}).catch(()=>{}),c}("sprigReplay",1,{upgrade:(e,t,n)=>{if(n===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!e.objectStoreNames.contains("events")){const r=e.createObjectStore("events",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!e.objectStoreNames.contains("chunkUploads")){const r=e.createObjectStore("chunkUploads",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+status]",["sessionId","status"]),r.createIndex("[uploadId+status]",["uploadId","status"]),r.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!e.objectStoreNames.contains("pendingCaptures")){const r=e.createObjectStore("pendingCaptures",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}async deleteDB(){try{await re("sprigReplay")}catch{}}async bulkAdd(e,t){const n=await this.getTransaction(e);return Promise.all([...t.map(r=>n.store.add(r)),n.done])}async clearAll(){const e=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return this.wrapTransactionWithCounter(e),Promise.all([e.objectStore("events").clear(),e.objectStore("chunkUploads").clear(),e.objectStore("pendingCaptures").clear()])}async deleteBySessionId(e,t){const n=IDBKeyRange.only(t),r=await this.getTransaction(e),a=r.store.index("sessionId");for await(const s of a.iterate(n))await s.delete();await r.done}async updatePartial(e,t,n){const r=await this.getTransaction(e),a=await r.store.get(t);a&&await r.store.put({...a,...n}),await r.done}async deleteRowsBefore(e,t,n=()=>!0){const r=IDBKeyRange.upperBound(t,!0),a=await this.getTransaction(e),s=a.store.index("timestamp");for await(const i of s.iterate(r))n(i.value)&&await i.delete();await a.done}async getEventsBetween(e,t=Date.now()){if(e>=t)return Promise.resolve([]);const n=IDBKeyRange.bound([h,e],[h,t],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",n)}async updateEventsExpiredAt(e,t,n=30){const r=new Date,a=r.setMinutes(r.getMinutes()+(n??30)),s=await this.getTransaction("events"),i=s.store.index("[sessionId+timestamp]"),c=IDBKeyRange.bound([h,e],[h,t],!1,!0);for await(const d of i.iterate(c))await d.update({...d.value,expiredAt:a});await s.done}async deleteChunkUploads(e,t){const n=IDBKeyRange.only([t,e]),r=await this.getTransaction("chunkUploads");let s=await r.store.index("[uploadId+status]").openCursor(n);for(;s;)s.delete(),s=await s.continue();await r.done}async getChunkUploadsByStatus({sessionId:e,status:t,uploadId:n}){const r=(await this.openDB()).transaction("chunkUploads","readonly");this.wrapTransactionWithCounter(r);const a=n?r.store.index("[uploadId+status]"):r.store.index("[sessionId+status]"),s=n?IDBKeyRange.only([n,t]):IDBKeyRange.only([e,t]);return a.getAll(s)}async getPendingCaptures(e={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",h)).filter(n=>!e.beforePresent||n.targetTimestamp<Date.now()).filter(n=>!e.isBeforeType||n.captureParams.replayParams.replayDurationType==="before").filter(n=>!e.isHeatmap||(n.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(e){const t=await this.getTransaction("pendingCaptures"),n=t.store.index("sessionId");for await(const r of n.iterate(h)){const a=r.value;a.captureParams.responseGroupId===e&&await r.update({...a,canUpload:!0})}await t.done}async markPendingHeatmapsReady(e){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const t=Date.now(),n=await this.getTransaction("pendingCaptures"),r=n.store.index("sessionId");for await(const a of r.iterate(h)){const s=a.value;!s.captureParams.isHeatmap||e&&!e.includes(s.uuid)||await a.update({...s,targetTimestamp:t,captureParams:{...s.captureParams,triggerTimestamp:t,replayParams:{...s.captureParams.replayParams,replayDurationSeconds:Math.floor((t-s.timestamp)/1e3)}}})}await n.done}},U=[];let F,He,M=[],_=!1,A=0,G=!1,Ne=!1;const me=[];let J,Oe,W,Fe,X=!1;const H=()=>G&&!_&&Date.now()<=J,St=({apiUrl:e,config:t,triggerSnapshot:n,forceInit:r=!1})=>{G&&!r||(o.sessionStorageHelper.isStorageAvailable?(M=[],me.splice(0),U.splice(0),A=0,W=n,He=e,F={responseGroupUuid:t.responseGroupUuid,surveyId:t.surveyId,userAgent:t.userAgent,sdkVersion:t.sdkVersion},Oe=t.maxDurationSeconds,Ct(),G||(Fe=window.setInterval(Rt,500)),G=!0):_=!0)},Dt=[k.Drag,k.Input,k.MediaInteraction,k.MouseInteraction,k.MouseMove,k.Scroll,k.Selection,k.TouchMove],Et=e=>e.type===L.Custom||e.type===L.IncrementalSnapshot&&Dt.includes(e.data.source),we=e=>e.some(Et),Rt=async()=>{if(!H())return void window.clearInterval(Fe);if(Ve(),!we(U))return;const e=U[0].timestamp;Date.now()-e>35e3&&(W==null||W())},Ve=async()=>{if(M.length||X)return;X=!0;const e=await kt();if(!e)return void(_=!0);me.splice(0,e.length).forEach(t=>t(e.shift())),e.forEach(t=>M.push(t)),X=!1},Ct=()=>{const e=o.sessionStorageHelper.getItem("sprig.alwayson.info");if(e){o.breadcrumbsLogger.info("Read stored session state",e);const t=JSON.parse(e);_=t.disabled,F=t.metadata,M=t.uploadUrls,A=t.currentIndex,J=t.expirationTimestamp,t.pendingEventTimestamp&&(o.breadcrumbsLogger.info(`Uploading with pending timestamp: ${t.pendingEventTimestamp}`),Pt(t.pendingEventTimestamp))}else J=1e3*Oe+Date.now()},Pt=async e=>{const t=Date.now(),n=(await l.getEventsBetween(e,t)).map(a=>JSON.parse(a.event));if(!we(n))return;je(n);const r=await $e();r&&await We(r,n)},Ge=async(e,t)=>{try{const n=await e();if(!n.ok)throw new Error(`Error ${t}`);return n}catch{_=!0}},We=async(e,t)=>{if(!H()||!e)return;const n=await(async r=>{const a=new TextEncoder,s=new CompressionStream("gzip"),i=s.writable.getWriter(),c=a.encode(JSON.stringify(r));return i.write(c),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())})(t);o.breadcrumbsLogger.info("Uploading always-on events with presigned url"),await Ge(()=>o.sprigFetch(e,{body:n,method:"PUT"}),"uploading always-on with presigned url")},kt=async()=>{if(!H())return;const{surveyId:e,responseGroupUuid:t}=F,n={responseGroupUuid:t,surveyId:e,index:A+1};o.breadcrumbsLogger.info("Fetching always-on upload urls",n);const r=await Ge(()=>o.sprigFetch(`${He}/sdk/1/replayUrls`,{method:"POST",body:JSON.stringify(n),headers:o.getHttpHeaders(window.UserLeap)}),"fetching always-on signed urls");if(!r)return;const a=r.json.signedUrls;return o.breadcrumbsLogger.info("Fetched more always-on upload urls",{body:n,urls:a}),a},$e=async()=>{if(M.length)return M.shift();const e=new Promise(t=>{me.push(t)});return Ve(),e},je=e=>{var a,s,i;const t=e.length?e[e.length-1].timestamp:Date.now(),n=A,r=((s=(a=window.UserLeap)==null?void 0:a.config)==null?void 0:s.customMetadata)??((i=window.__cfg)==null?void 0:i.customMetadata);A++,e.push({timestamp:t,type:L.Custom,data:{tag:"Sprig_Meta",payload:{...F,index:n,visitorId:window.UserLeap.visitorId??"",timestamp:t,customMetadata:r}}})},Tt=(e,t)=>{H()&&!Ne&&(e||U.length)&&(e&&U.length&&(async()=>{const n=U.splice(0);if(!we(n))return;o.breadcrumbsLogger.info("Capturing always-on event array to upload"),je(n);const r=await $e();r&&await We(r,n)})(),U.push(t))};window.addEventListener("beforeunload",async()=>{Ne=!0,H()&&(o.breadcrumbsLogger.info("Always On handle page unload"),(()=>{let e;U.length&&(e=U[0].timestamp);const t={disabled:_,metadata:F,uploadUrls:M,currentIndex:A,pendingEventTimestamp:e,expirationTimestamp:J};o.breadcrumbsLogger.info("Storing session state on unload",t),o.sessionStorageHelper.setItem("sprig.alwayson.info",JSON.stringify(t))})())});const Ke=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const a=performance.now()-n;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(a/1e3)}return r},Je=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let a=o.PerformanceMetrics[t];a||(a=o.registerMetric(t)),a.report(r/1e3)}};let qe=5e3,ie=6e4,de=0,B,ce=!1,ue=[];const Ut=e=>{var t,n,r,a;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(a=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:a.xPath;if(!s)return;g.scrollEventUuids[s]=e.uuid}ue.push(e),ce||Lt()},Lt=()=>{ce=!0,setTimeout(async()=>{if(C()||K())return;const e=ue;ue=[],ce=!1,Je(async()=>{await(async t=>{const n=t.map(r=>({...r,sessionId:r.sessionId??h}));if(n.length!==0)return b(()=>l.bulkAdd("events",n),"Error storing replay events")})(e)},"sdk_replay_add_event_batch_seconds")},500)},xt=(e,t,n)=>{g.cleanupInterval=window.setInterval(()=>{const r=Date.now();Ke(()=>b(async()=>{C()||await Promise.all([l.deleteRowsBefore("events",r-1e3*e,a=>a.expiredAt===void 0||a.expiredAt<r-1e3*e),l.deleteRowsBefore("chunkUploads",r-1e3*t),l.deleteRowsBefore("pendingCaptures",r-1e3*n,a=>!a.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.breadcrumbsLogger.debug("CleanupComplete")},3e4)},Bt=()=>{g.pendingCheckInterval=window.setInterval(async()=>{b(async()=>{await le()},"Error initiating pending captures")},5e3)};let Y=!1;const le=async(e=!1)=>{if(!Y)try{Y=!0;const t=parseInt(B??"0");if(t===0)return;const n=await l.getPendingCaptures({beforePresent:!0,isBeforeType:e}),r=await l.openDB();await Promise.all(n.map(async a=>(await r.delete("pendingCaptures",a.uuid),Xe(a.captureParams,a.canUpload)))),B=(t-n.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B)}finally{Y=!1}},Mt=async(e,t,n,r,a)=>{const s=Math.min(e+a,n),i=await Ke(()=>l.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(i!=null&&i.length))return o.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:r,events:[]};if(!r){o.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return i==null||i.forEach((d,u)=>{if(!d.isValidStart)return;const w=d.timestamp<=t;(c<0||w)&&(c=u)}),c<0?(o.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:r,events:[]}):{validStartFound:!0,events:i==null?void 0:i.slice(c)}}return{validStartFound:r,events:i}},ze=e=>Promise.all(e.map(async t=>{const n=await(async r=>Ce.execute(async()=>{var i;o.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:r.chunkIndex,surveyId:r.surveyId});const a=await o.sprigFetch(r.uploadUrl,{body:r.data,method:"PUT"});o.breadcrumbsLogger.http("UploadChunkEnd",{url:r.uploadUrl,method:"PUT",status_code:a.status,reason:a.statusText??"OK",chunkIndex:r.chunkIndex,surveyId:r.surveyId});const s=(i=a.headers)==null?void 0:i.get("ETag");if(!s)throw new Error(`Upload response did not include etag for upload ${r.uploadId}, part ${r.chunkIndex}`);return s}))(t);return await l.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),Qe=async e=>{const t=await l.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length))return void o.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});const n=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);n.sort((s,i)=>s.chunkIndex-i.chunkIndex);const r=n.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),a=n[0];await Pe({apiUrl:a.apiUrl,surveyId:a.surveyId,uploadId:e,responseGroupUuid:a.responseGroupId,etags:r,headers:a.completeUploadHeaders,replayDuration:a.replayDuration}),await l.deleteChunkUploads("UploadComplete",e)},At=()=>{b(async()=>{const e=await l.getChunkUploadsByStatus({sessionId:h,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await ze(e);t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return Qe(n)}))},"Error uploading unfinished chunks")},_t=async(e,t)=>{const n=t??Date.now();return(async(r,a)=>{const s=new TextEncoder;let i=null;const c=new CompressionStream("gzip"),d=c.writable.getWriter();let u=!1,w=!1,[p,f]=[0,0],m=[];for(let P=r-35e3;P<a;P+=ie){if({validStartFound:w,events:m}=await Mt(P,r,a,w,ie),!(m!=null&&m.length)){o.breadcrumbsLogger.debug("NoEventsFound");continue}p===0&&(p=m[0].timestamp),f=m[m.length-1].timestamp;const y=m.map(E=>E.event);y.push(`{"timestamp":${a}}`);const I=`${u?",":"["}${y}`,v=s.encode(I);Je(()=>{d.write(v)},"sdk_replay_compression_seconds"),u=!0}if(f-p<qe)return o.breadcrumbsLogger.debug("ReplayTooShort"),null;const D=s.encode("]");return d.write(D),d.close(),i=new Uint8Array(await new Response(c.readable).arrayBuffer()),i})(n-e,n)},De=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:a,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,d=await _t(1e3*i.replayDurationSeconds,c);if(!(d!=null&&d.length))return void o.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});const u=((p,f,m)=>{const D=p.length,P=1024*f*1024,y=Math.ceil(D/m),I=Math.max(P,y),v=[];let E=0;for(;E<D;)v.push(p.slice(E,E+I)),E+=I;return v})(d,i.minimumChunkSizeMb,i.signedUrls.length),w=await Promise.all(u.map(async(p,f)=>{const m=o.v4(),D={apiUrl:a,chunkIndex:f+1,completeUploadHeaders:s,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:u.length,data:p,uploadId:i.uploadId,uploadUrl:i.signedUrls[f].url,uuid:m,visitorId:r};return await(await l.openDB()).add("chunkUploads",{...D,sessionId:D.sessionId??h}),D}));await(async(p,f)=>{await ze(f),await Promise.all(p.map(m=>Qe(m)))})([i.uploadId],w)},Xe=async(e,t)=>{if(C())return o.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:n,isStandalone:r,replayParams:a,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),b(async()=>{a.replayDurationType==="before"?await De(e):await l.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};b(async()=>{if(a.replayDurationType==="after"||a.replayDurationType==="beforeAndAfter")return!r&&!n&&o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c),void await Ze(e);if(r||n||t)await De(e),n&&Ht();else{const d=35+a.replayDurationSeconds,u=s-1e3*d,w=s;await l.updateEventsExpiredAt(u,w,a.expirationTimeLimitMinutes),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ht=async()=>{parseInt(B??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(_e(),Ye(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},Ye=async()=>C()?o.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([l.deleteBySessionId("events",h),l.deleteBySessionId("pendingCaptures",h)]).catch(e=>{O("Error clearing user replay data",e)}),Ze=async e=>{if(C())return;const{isHeatmap:t,surveyId:n}=e,r=await l.getPendingCaptures(),a=r==null?void 0:r.filter(d=>d.captureParams.surveyId===n);if(a!=null&&a.length)return void o.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:n});t&&(oe(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),de=Date.now(),g.inactivityInterval||(g.inactivityInterval=window.setInterval(()=>{var d;d=de,Date.now()-d>=3e4&&b(()=>l.markPendingHeatmapsReady(),"Error in heatmap inactivity")},1e3)));const s={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(s.replayParams.replayDurationSeconds*=2),s.replayParams.replayDurationType="before";const i=e.triggerTimestamp+1e3*e.replayParams.replayDurationSeconds;s.triggerTimestamp=i,B=(parseInt(B??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B),await(await l.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:s,sessionId:h,targetTimestamp:i,timestamp:Date.now(),uuid:o.v4()})},Nt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:e=>{T("Sprig_TrackEvent",e)},RecordPageView:e=>{e.description&&(e.description=ge(e.description)),T("Sprig_PageView",e)},RecordSurveyShown:e=>{T("Sprig_ShowSurvey",e)},_completeSessionReplay:async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const a=window.UserLeap._API_URL,s=await Pe({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:a,headers:r},!0);return!(s!=null&&s.error)},checkPendingHeatmapsUrl:()=>C()?o.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):b(async()=>{const e=(await l.getPendingCaptures({isHeatmap:!0})).map(t=>({eventId:t.captureParams.eventId,uuid:t.uuid})).filter(({eventId:t})=>!o.checkUrlStillMatching(t)).map(({uuid:t})=>t);return o.breadcrumbsLogger.info("PendingHeatmapsToComplete",{count:e.length}),e.length&&(await l.markPendingHeatmapsReady(e),o.breadcrumbsLogger.info("MarkedPendingHeatmapsReady")),e.length},"Error marking pending heatmaps ready"),clearUserReplayData:Ye,disableRecording:O,initializeReplay:async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:n,teardownAfter:r=!1,apiUrl:a,alwaysOnConfig:s})=>{if(s&&St({apiUrl:a,config:s,triggerSnapshot:()=>{oe()}}),B=o.sessionStorageHelper.getItem("sprig.pendingCount"),g.isRecording)return;if(r&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),C())return o.breadcrumbsLogger.debug("ReplayDisabled");if(await(async()=>{var d;if(!Ae())return!0;if((d=window.navigator.storage)!=null&&d.estimate)try{const{quota:u=0,usage:w=0}=await window.navigator.storage.estimate(),p=(u-w)/1024**3;return o.breadcrumbsLogger.info("Storage",{availableGb:p}),p<.5}catch{return!0}return!1})())return o.breadcrumbsLogger.debug("IDBNotSupported"),se();try{const d=await l.openDB();o.breadcrumbsLogger.info("DBVersion",{version:d.version})}catch(d){return o.breadcrumbsLogger.error("ReplayOpenErr",{name:d.name}),d.name==="VersionError"&&l.deleteDB(),se()}b(async()=>{await le(!0)},"Error uploading ready pending captures");const i=H()?30:0,c=Math.max(e??0,i);if(!c)return o.breadcrumbsLogger.debug("MissingDuration");o.breadcrumbsLogger.debug("ReplayInit"),await b(async()=>{var d;n!=null&&n.minDuration&&(qe=n.minDuration),n!=null&&n.batchDuration&&(ie=n.batchDuration),d=t,Ce.setLimit(d),At(),xt(c+35,1800,c+35),Bt();const u=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record.min.js";if(!window.rrwebRecord){const{record:y}=await import(u);window.rrwebRecord=y}const w=window.rrwebRecord;if(!w)return o.breadcrumbsLogger.error("RecordScriptFailed");let p=!0,f=0;const m={checkoutEveryNms:3e4,sampling:{input:"last",scroll:250,media:800},...n,mutationQueueEnabled:n==null?void 0:n.enableMutationQueue};var D,P;g.stopRecording=w({emit:(y,I)=>{if(y.type===L.Custom&&(de=Date.now()),C()||K())return;if(I&&y.type===L.Meta)f=performance.now();else if(I&&f&&y.type===L.FullSnapshot){const E=performance.now()-f;o.reportAndRegister("sdk_replay_snapshot_seconds",E/1e3)}const v=p||!!I&&y.type===L.Meta;p=!1,Tt(v,y),Ut({uuid:o.v4(),event:JSON.stringify(y),isValidStart:v,timestamp:Date.now()})},...m}),g.isRecording=!!g.stopRecording,g.isRecording&&(((y,I)=>{window.addEventListener("message",v=>{var E;v.data.type===ct&&(pe.push({source:v.source,origin:v.origin}),(E=v.source)==null||E.postMessage({type:ut,settings:y,replayLibraryUrl:I},{targetOrigin:v.origin}))})})(m,u),o.eventEmitter.on("survey.complete",y=>{var I;I={id:y,userAgent:window.navigator.userAgent},T("Sprig_SubmitSurvey",I)}),D=T,P=It,j||(S=D,V=P,window.addEventListener("click",xe,R),window.addEventListener("pointerdown",Me,R),window.addEventListener("mousedown",Be,R),window.addEventListener("keydown",Ue,R),window.addEventListener("scroll",Le,R),j=!0,ft(),ht()))},"Error initializing replay")},isReplayPaused:K,isReplayRecording:()=>g.isRecording,recordFullSnapshot:oe,recordReplayPaused:()=>{T("Sprig_ReplayPaused",{timestamp:Date.now()}),o.sessionStorageHelper.setItem("sprig.isReplayPaused","true")},recordReplayResumed:()=>{o.sessionStorageHelper.removeItem("sprig.isReplayPaused"),T("Sprig_ReplayResumed",{timestamp:Date.now()})},scheduleCapture:Ze,scheduleOrCaptureReplay:Xe,tryReplayAction:b,uploadReadyPendingCaptures:le},Symbol.toStringTag,{value:"Module"}));o.registerReplay(Nt);
1
+ "use strict";var et=Object.defineProperty;var tt=(e,t,n)=>t in e?et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var N=(e,t,n)=>tt(e,typeof t!="symbol"?t+"":t,n);const o=require("./metricsReporter-DOjBAl52.cjs");var L=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(L||{}),k=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(k||{});const Z=(e,t)=>t.some(n=>e instanceof n);let ye,fe;const ee=new WeakMap,q=new WeakMap,$=new WeakMap;let te={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return ee.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return x(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&(t==="done"||t==="store")||t in e};function Ee(e){te=e(te)}function nt(e){return(fe||(fe=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(ne(this),t),x(this.request)}:function(...t){return x(e.apply(ne(this),t))}}function rt(e){return typeof e=="function"?nt(e):(e instanceof IDBTransaction&&function(t){if(ee.has(t))return;const n=new Promise((r,a)=>{const s=()=>{a(t.error||new DOMException("AbortError","AbortError"))};t.oncomplete=()=>{r()},t.onerror=s,t.onabort=s});ee.set(t,n)}(e),Z(e,ye||(ye=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,te):e)}function x(e){if(e instanceof IDBRequest)return function(n){const r=new Promise((a,s)=>{n.onsuccess=()=>{a(x(n.result))},n.onerror=()=>{s(n.error)}});return $.set(r,n),r}(e);if(q.has(e))return q.get(e);const t=rt(e);return t!==e&&(q.set(e,t),$.set(t,e)),t}const ne=e=>$.get(e);function re(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),x(n).then(()=>{})}const at=["get","getKey","getAll","getAllKeys","count"],st=["put","add","delete","clear"],z=new Map;function he(e,t){if(!(e instanceof IDBDatabase)||t in e||typeof t!="string")return;if(z.get(t))return z.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,a=st.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!a&&!at.includes(n))return;const s=async function(i,...c){const d=this.transaction(i,a?"readwrite":"readonly");let u=d.store;return r&&(u=u.index(c.shift())),(await Promise.all([u[n](...c),a&&d.done]))[0]};return z.set(t,s),s}Ee(e=>({...e,get:(t,n,r)=>he(t,n)||e.get(t,n,r),has:(t,n)=>!!he(t,n)||e.has(t,n)}));const ot=["continue","continuePrimaryKey","advance"],Ie={},ae=new WeakMap,Re=new WeakMap,it={get(e,t){if(!ot.includes(t))return e[t];let n=Ie[t];return n||(n=Ie[t]=function(...r){ae.set(this,Re.get(this)[t](...r))}),n}};async function*dt(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const n=new Proxy(t,it);for(Re.set(n,t),$.set(n,ne(t));t;)yield n,t=await(ae.get(n)||t.continue()),ae.delete(n)}function ve(e,t){return t===Symbol.asyncIterator&&Z(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&Z(e,[IDBIndex,IDBObjectStore])}Ee(e=>({...e,get:(t,n,r)=>ve(t,n)?dt:e.get(t,n,r),has:(t,n)=>ve(t,n)||e.has(t,n)}));const ct="sprigReplayIframeLoaded",ut="sprigReplayIframeSettings",lt="sprigReplayIframeTakeFullSnapshot",pt="sprigReplayTeardown",pe=[],Ce=new class{constructor(e){N(this,"awaitingResolvers",[]);N(this,"activeCount",0);this.capacity=e}async acquire(){if(!(this.activeCount<this.capacity))return new Promise(e=>{this.awaitingResolvers.push(e)});this.activeCount++}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}(2),Pe=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:a,responseGroupUuid:s,replayDuration:i,eventDigest:c},d=!1)=>{var w;if(!d&&!n&&!r)return void o.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:n,etags:r});o.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const u=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(w=window==null?void 0:window.navigator)==null?void 0:w.userAgent}),headers:a,shouldRetryRequest:!0});return o.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),u},gt=e=>{if(e instanceof Attr)return null;let t=1;for(let n=e.previousSibling;n;n=n.previousSibling)n.nodeName===e.nodeName&&++t;return t},ke=e=>{if(e===null)return"";const t=[];if(e instanceof Document)return"/";for(let n=e;n&&!(n instanceof Document)&&n!==null;n=n instanceof Attr?n.ownerElement:n.parentElement){const r=t[t.length]={name:void 0,position:null};switch(n.nodeType){case Node.TEXT_NODE:r.name="text()";break;case Node.ATTRIBUTE_NODE:r.name="@"+n.nodeName;break;case Node.PROCESSING_INSTRUCTION_NODE:r.name="processing-instruction()";break;case Node.COMMENT_NODE:r.name="comment()";break;case Node.ELEMENT_NODE:r.name=n.nodeName}r.position=gt(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},ge=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),R={capture:!0,passive:!0},mt=["a","button","input","option","li","link"],wt=["Escape","Enter","Backspace","F5","Tab"];let j=!1,S=null,V=null;const be=e=>{var n;if(((n=e.tagName)==null?void 0:n.toLowerCase())==="html")return{element:"html"};const t={};return t.element=(r=>{if(!r.tagName)return"No tagName";const a=r.getAttribute("type");return a?`${a} ${r.tagName.toLowerCase()}`:r.tagName.toLowerCase()})(e),t},yt=e=>{var r;if(!e)return{};const t={...be(e)},n=e.parentElement;if(n&&mt.includes((r=n.tagName)==null?void 0:r.toLowerCase())){const a=be(n);Object.assign(t,a)}return t},Te=(e,t)=>{var a,s;let n=t.target;var r;t.target===((a=window.document)==null?void 0:a.body)&&window.Sprig.pointerDownTarget&&(n=window.Sprig.pointerDownTarget),r={x:t.x,y:t.y,type:e,elementAttributes:yt(n),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...n instanceof HTMLElement||n instanceof SVGElement||n instanceof MathMLElement?{rect:n==null?void 0:n.getBoundingClientRect(),xPath:ke(n)}:{}},(s=r==null?void 0:r.elementAttributes)!=null&&s.text&&(r.elementAttributes.text=ge(r.elementAttributes.text)),S==null||S("Sprig_Click",r)},Ue=e=>{var t;wt.includes(e.key)&&(t={key:e.key},S==null||S("Sprig_Keystroke",t))},ft=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&(e={url:window.location.href,currentPageTitle:document.title},S==null||S("Sprig_Refresh",e))},ht=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&((e={curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title}).currentPageTitle&&(e.currentPageTitle=ge(e.currentPageTitle)),S==null||S("Sprig_BackForward",e))},Le=((e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}})(e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),V==null||V({xPath:ke(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},750),xe=(Se="left_click",e=>Te(Se,e));var Se;const Be=e=>{e.button===2&&Te("right_click",e)},Me=e=>{window.Sprig&&(window.Sprig.pointerDownTarget=e.target)},g={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},Ae=()=>window.indexedDB&&window.IDBKeyRange&&window.CompressionStream,h=(()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t})(),se=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},C=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording"),K=()=>!!o.sessionStorageHelper.getItem("sprig.isReplayPaused");window.addEventListener("beforeunload",()=>{o.breadcrumbsLogger.info("BeforeUnload",{sessionId:h}),o.sessionStorageHelper.setItem("sprig.sessionId",h)});const T=(e,t)=>{var n,r;if(!C()&&g.isRecording&&!K())try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(a){O("Error recording custom event",a)}},It=async e=>{const{x:t,xPath:n,y:r}=e,a=g.scrollEventUuids[n];if(a)return b(async()=>{var c,d,u,w;const s=await l.openDB(),i=await s.get("events",a);if(i!=null&&i.event){const p=JSON.parse(i.event),f=t>((d=(c=p.data)==null?void 0:c.payload)==null?void 0:d.x),m=r>((w=(u=p.data)==null?void 0:u.payload)==null?void 0:w.y);if(!f&&!m)return null;f&&(p.data.payload.x=t),m&&(p.data.payload.y=r),p.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(p),await s.put("events",i)}else T("Sprig_Scroll",e)},"Error updating scroll event");T("Sprig_Scroll",e)},_e=()=>{g.stopRecording&&(g.stopRecording(),g.stopRecording=void 0),g.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{g[e]&&(clearInterval(g[e]),g[e]=void 0)}),j&&(window.removeEventListener("click",xe,R),window.removeEventListener("pointerdown",Me,R),window.removeEventListener("mousedown",Be,R),window.removeEventListener("keydown",Ue,R),window.removeEventListener("scroll",Le,R),j=!1),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:pt},{targetOrigin:e.origin})})},vt=["did not allow mutations","called in an invalid security context"],bt=(e,t,{reportError:n=!0,extraInfo:r={}})=>{if(!C()&&t instanceof Error){if(se(),t.name==="VersionError")return o.breadcrumbsLogger.error("VersionErr",{message:e}),void l.deleteDB();(a=>{if(!a)return!0;for(const s of vt)if(a.toLowerCase().includes(s))return!1;return!0})(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),l.clearAll())}},O=(e,t,{reportError:n}={reportError:!0})=>{_e(),o.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),bt(e,t,{reportError:n})},b=async(e,t)=>{try{return await e()}catch(n){O(t,n)}},oe=()=>{g.isRecording&&(b(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot"),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:lt},{targetOrigin:e.origin})}))};let Q=0;(async()=>Ae()&&Promise.allSettled([re("replayStorage"),re("sprig.replay")]))();const l=new class{constructor(){N(this,"wrapTransactionWithCounter",e=>{var r,a;const t=(a=(r=window.Sprig)==null?void 0:r._config)==null?void 0:a.outstandingTransactionLimit,n=t===void 0?100:t;if(n&&Q>n){const s="Too many outstanding transactions";O(s,new Error(s),{reportError:!1})}Q++,e.done.finally(()=>{Q--})});N(this,"getTransaction",async e=>{const t=(await this.openDB()).transaction(e,"readwrite");return this.wrapTransactionWithCounter(t),t})}openDB(){return function(e,t,{blocked:n,upgrade:r,blocking:a,terminated:s}={}){const i=indexedDB.open(e,t),c=x(i);return r&&(i.onupgradeneeded=d=>{r(x(i.result),d.oldVersion,d.newVersion,x(i.transaction),d)}),n&&(i.onblocked=d=>n(d.oldVersion,d.newVersion,d)),c.then(d=>{s&&(d.onclose=()=>s()),a&&(d.onversionchange=u=>a(u.oldVersion,u.newVersion,u))}).catch(()=>{}),c}("sprigReplay",1,{upgrade:(e,t,n)=>{if(n===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!e.objectStoreNames.contains("events")){const r=e.createObjectStore("events",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!e.objectStoreNames.contains("chunkUploads")){const r=e.createObjectStore("chunkUploads",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+status]",["sessionId","status"]),r.createIndex("[uploadId+status]",["uploadId","status"]),r.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!e.objectStoreNames.contains("pendingCaptures")){const r=e.createObjectStore("pendingCaptures",{keyPath:"uuid"});r.createIndex("sessionId","sessionId"),r.createIndex("timestamp","timestamp"),r.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}async deleteDB(){try{await re("sprigReplay")}catch{}}async bulkAdd(e,t){const n=await this.getTransaction(e);return Promise.all([...t.map(r=>n.store.add(r)),n.done])}async clearAll(){const e=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return this.wrapTransactionWithCounter(e),Promise.all([e.objectStore("events").clear(),e.objectStore("chunkUploads").clear(),e.objectStore("pendingCaptures").clear()])}async deleteBySessionId(e,t){const n=IDBKeyRange.only(t),r=await this.getTransaction(e),a=r.store.index("sessionId");for await(const s of a.iterate(n))await s.delete();await r.done}async updatePartial(e,t,n){const r=await this.getTransaction(e),a=await r.store.get(t);a&&await r.store.put({...a,...n}),await r.done}async deleteRowsBefore(e,t,n=()=>!0){const r=IDBKeyRange.upperBound(t,!0),a=await this.getTransaction(e),s=a.store.index("timestamp");for await(const i of s.iterate(r))n(i.value)&&await i.delete();await a.done}async getEventsBetween(e,t=Date.now()){if(e>=t)return Promise.resolve([]);const n=IDBKeyRange.bound([h,e],[h,t],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",n)}async updateEventsExpiredAt(e,t,n=30){const r=new Date,a=r.setMinutes(r.getMinutes()+(n??30)),s=await this.getTransaction("events"),i=s.store.index("[sessionId+timestamp]"),c=IDBKeyRange.bound([h,e],[h,t],!1,!0);for await(const d of i.iterate(c))await d.update({...d.value,expiredAt:a});await s.done}async deleteChunkUploads(e,t){const n=IDBKeyRange.only([t,e]),r=await this.getTransaction("chunkUploads");let s=await r.store.index("[uploadId+status]").openCursor(n);for(;s;)s.delete(),s=await s.continue();await r.done}async getChunkUploadsByStatus({sessionId:e,status:t,uploadId:n}){const r=(await this.openDB()).transaction("chunkUploads","readonly");this.wrapTransactionWithCounter(r);const a=n?r.store.index("[uploadId+status]"):r.store.index("[sessionId+status]"),s=n?IDBKeyRange.only([n,t]):IDBKeyRange.only([e,t]);return a.getAll(s)}async getPendingCaptures(e={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",h)).filter(n=>!e.beforePresent||n.targetTimestamp<Date.now()).filter(n=>!e.isBeforeType||n.captureParams.replayParams.replayDurationType==="before").filter(n=>!e.isHeatmap||(n.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(e){const t=await this.getTransaction("pendingCaptures"),n=t.store.index("sessionId");for await(const r of n.iterate(h)){const a=r.value;a.captureParams.responseGroupId===e&&await r.update({...a,canUpload:!0})}await t.done}async markPendingHeatmapsReady(e){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const t=Date.now(),n=await this.getTransaction("pendingCaptures"),r=n.store.index("sessionId");for await(const a of r.iterate(h)){const s=a.value;!s.captureParams.isHeatmap||e&&!e.includes(s.uuid)||await a.update({...s,targetTimestamp:t,captureParams:{...s.captureParams,triggerTimestamp:t,replayParams:{...s.captureParams.replayParams,replayDurationSeconds:Math.floor((t-s.timestamp)/1e3)}}})}await n.done}},U=[];let F,He,M=[],_=!1,A=0,G=!1,Ne=!1;const me=[];let J,Oe,W,Fe,X=!1;const H=()=>G&&!_&&Date.now()<=J,St=({apiUrl:e,config:t,triggerSnapshot:n,forceInit:r=!1})=>{G&&!r||(o.sessionStorageHelper.isStorageAvailable?(M=[],me.splice(0),U.splice(0),A=0,W=n,He=e,F={responseGroupUuid:t.responseGroupUuid,surveyId:t.surveyId,userAgent:t.userAgent,sdkVersion:t.sdkVersion},Oe=t.maxDurationSeconds,Ct(),G||(Fe=window.setInterval(Rt,500)),G=!0):_=!0)},Dt=[k.Drag,k.Input,k.MediaInteraction,k.MouseInteraction,k.MouseMove,k.Scroll,k.Selection,k.TouchMove],Et=e=>e.type===L.Custom||e.type===L.IncrementalSnapshot&&Dt.includes(e.data.source),we=e=>e.some(Et),Rt=async()=>{if(!H())return void window.clearInterval(Fe);if(Ve(),!we(U))return;const e=U[0].timestamp;Date.now()-e>35e3&&(W==null||W())},Ve=async()=>{if(M.length||X)return;X=!0;const e=await kt();if(!e)return void(_=!0);me.splice(0,e.length).forEach(t=>t(e.shift())),e.forEach(t=>M.push(t)),X=!1},Ct=()=>{const e=o.sessionStorageHelper.getItem("sprig.alwayson.info");if(e){o.breadcrumbsLogger.info("Read stored session state",e);const t=JSON.parse(e);_=t.disabled,F=t.metadata,M=t.uploadUrls,A=t.currentIndex,J=t.expirationTimestamp,t.pendingEventTimestamp&&(o.breadcrumbsLogger.info(`Uploading with pending timestamp: ${t.pendingEventTimestamp}`),Pt(t.pendingEventTimestamp))}else J=1e3*Oe+Date.now()},Pt=async e=>{const t=Date.now(),n=(await l.getEventsBetween(e,t)).map(a=>JSON.parse(a.event));if(!we(n))return;je(n);const r=await $e();r&&await We(r,n)},Ge=async(e,t)=>{try{const n=await e();if(!n.ok)throw new Error(`Error ${t}`);return n}catch{_=!0}},We=async(e,t)=>{if(!H()||!e)return;const n=await(async r=>{const a=new TextEncoder,s=new CompressionStream("gzip"),i=s.writable.getWriter(),c=a.encode(JSON.stringify(r));return i.write(c),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())})(t);o.breadcrumbsLogger.info("Uploading always-on events with presigned url"),await Ge(()=>o.sprigFetch(e,{body:n,method:"PUT"}),"uploading always-on with presigned url")},kt=async()=>{if(!H())return;const{surveyId:e,responseGroupUuid:t}=F,n={responseGroupUuid:t,surveyId:e,index:A+1};o.breadcrumbsLogger.info("Fetching always-on upload urls",n);const r=await Ge(()=>o.sprigFetch(`${He}/sdk/1/replayUrls`,{method:"POST",body:JSON.stringify(n),headers:o.getHttpHeaders(window.UserLeap)}),"fetching always-on signed urls");if(!r)return;const a=r.json.signedUrls;return o.breadcrumbsLogger.info("Fetched more always-on upload urls",{body:n,urls:a}),a},$e=async()=>{if(M.length)return M.shift();const e=new Promise(t=>{me.push(t)});return Ve(),e},je=e=>{var a,s,i;const t=e.length?e[e.length-1].timestamp:Date.now(),n=A,r=((s=(a=window.UserLeap)==null?void 0:a.config)==null?void 0:s.customMetadata)??((i=window.__cfg)==null?void 0:i.customMetadata);A++,e.push({timestamp:t,type:L.Custom,data:{tag:"Sprig_Meta",payload:{...F,index:n,visitorId:window.UserLeap.visitorId??"",timestamp:t,customMetadata:r}}})},Tt=(e,t)=>{H()&&!Ne&&(e||U.length)&&(e&&U.length&&(async()=>{const n=U.splice(0);if(!we(n))return;o.breadcrumbsLogger.info("Capturing always-on event array to upload"),je(n);const r=await $e();r&&await We(r,n)})(),U.push(t))};window.addEventListener("beforeunload",async()=>{Ne=!0,H()&&(o.breadcrumbsLogger.info("Always On handle page unload"),(()=>{let e;U.length&&(e=U[0].timestamp);const t={disabled:_,metadata:F,uploadUrls:M,currentIndex:A,pendingEventTimestamp:e,expirationTimestamp:J};o.breadcrumbsLogger.info("Storing session state on unload",t),o.sessionStorageHelper.setItem("sprig.alwayson.info",JSON.stringify(t))})())});const Ke=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const a=performance.now()-n;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(a/1e3)}return r},Je=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let a=o.PerformanceMetrics[t];a||(a=o.registerMetric(t)),a.report(r/1e3)}};let qe=5e3,ie=6e4,de=0,B,ce=!1,ue=[];const Ut=e=>{var t,n,r,a;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(a=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:a.xPath;if(!s)return;g.scrollEventUuids[s]=e.uuid}ue.push(e),ce||Lt()},Lt=()=>{ce=!0,setTimeout(async()=>{if(C()||K())return;const e=ue;ue=[],ce=!1,Je(async()=>{await(async t=>{const n=t.map(r=>({...r,sessionId:r.sessionId??h}));if(n.length!==0)return b(()=>l.bulkAdd("events",n),"Error storing replay events")})(e)},"sdk_replay_add_event_batch_seconds")},500)},xt=(e,t,n)=>{g.cleanupInterval=window.setInterval(()=>{const r=Date.now();Ke(()=>b(async()=>{C()||await Promise.all([l.deleteRowsBefore("events",r-1e3*e,a=>a.expiredAt===void 0||a.expiredAt<r-1e3*e),l.deleteRowsBefore("chunkUploads",r-1e3*t),l.deleteRowsBefore("pendingCaptures",r-1e3*n,a=>!a.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.breadcrumbsLogger.debug("CleanupComplete")},3e4)},Bt=()=>{g.pendingCheckInterval=window.setInterval(async()=>{b(async()=>{await le()},"Error initiating pending captures")},5e3)};let Y=!1;const le=async(e=!1)=>{if(!Y)try{Y=!0;const t=parseInt(B??"0");if(t===0)return;const n=await l.getPendingCaptures({beforePresent:!0,isBeforeType:e}),r=await l.openDB();await Promise.all(n.map(async a=>(await r.delete("pendingCaptures",a.uuid),Xe(a.captureParams,a.canUpload)))),B=(t-n.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B)}finally{Y=!1}},Mt=async(e,t,n,r,a)=>{const s=Math.min(e+a,n),i=await Ke(()=>l.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(i!=null&&i.length))return o.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:r,events:[]};if(!r){o.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return i==null||i.forEach((d,u)=>{if(!d.isValidStart)return;const w=d.timestamp<=t;(c<0||w)&&(c=u)}),c<0?(o.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:r,events:[]}):{validStartFound:!0,events:i==null?void 0:i.slice(c)}}return{validStartFound:r,events:i}},ze=e=>Promise.all(e.map(async t=>{const n=await(async r=>Ce.execute(async()=>{var i;o.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:r.chunkIndex,surveyId:r.surveyId});const a=await o.sprigFetch(r.uploadUrl,{body:r.data,method:"PUT"});o.breadcrumbsLogger.http("UploadChunkEnd",{url:r.uploadUrl,method:"PUT",status_code:a.status,reason:a.statusText??"OK",chunkIndex:r.chunkIndex,surveyId:r.surveyId});const s=(i=a.headers)==null?void 0:i.get("ETag");if(!s)throw new Error(`Upload response did not include etag for upload ${r.uploadId}, part ${r.chunkIndex}`);return s}))(t);return await l.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),Qe=async e=>{const t=await l.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length))return void o.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});const n=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);n.sort((s,i)=>s.chunkIndex-i.chunkIndex);const r=n.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),a=n[0];await Pe({apiUrl:a.apiUrl,surveyId:a.surveyId,uploadId:e,responseGroupUuid:a.responseGroupId,etags:r,headers:a.completeUploadHeaders,replayDuration:a.replayDuration}),await l.deleteChunkUploads("UploadComplete",e)},At=()=>{b(async()=>{const e=await l.getChunkUploadsByStatus({sessionId:h,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await ze(e);t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return Qe(n)}))},"Error uploading unfinished chunks")},_t=async(e,t)=>{const n=t??Date.now();return(async(r,a)=>{const s=new TextEncoder;let i=null;const c=new CompressionStream("gzip"),d=c.writable.getWriter();let u=!1,w=!1,[p,f]=[0,0],m=[];for(let P=r-35e3;P<a;P+=ie){if({validStartFound:w,events:m}=await Mt(P,r,a,w,ie),!(m!=null&&m.length)){o.breadcrumbsLogger.debug("NoEventsFound");continue}p===0&&(p=m[0].timestamp),f=m[m.length-1].timestamp;const y=m.map(E=>E.event);y.push(`{"timestamp":${a}}`);const I=`${u?",":"["}${y}`,v=s.encode(I);Je(()=>{d.write(v)},"sdk_replay_compression_seconds"),u=!0}if(f-p<qe)return o.breadcrumbsLogger.debug("ReplayTooShort"),null;const D=s.encode("]");return d.write(D),d.close(),i=new Uint8Array(await new Response(c.readable).arrayBuffer()),i})(n-e,n)},De=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:a,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,d=await _t(1e3*i.replayDurationSeconds,c);if(!(d!=null&&d.length))return void o.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});const u=((p,f,m)=>{const D=p.length,P=1024*f*1024,y=Math.ceil(D/m),I=Math.max(P,y),v=[];let E=0;for(;E<D;)v.push(p.slice(E,E+I)),E+=I;return v})(d,i.minimumChunkSizeMb,i.signedUrls.length),w=await Promise.all(u.map(async(p,f)=>{const m=o.v4(),D={apiUrl:a,chunkIndex:f+1,completeUploadHeaders:s,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:u.length,data:p,uploadId:i.uploadId,uploadUrl:i.signedUrls[f].url,uuid:m,visitorId:r};return await(await l.openDB()).add("chunkUploads",{...D,sessionId:D.sessionId??h}),D}));await(async(p,f)=>{await ze(f),await Promise.all(p.map(m=>Qe(m)))})([i.uploadId],w)},Xe=async(e,t)=>{if(C())return o.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:n,isStandalone:r,replayParams:a,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),b(async()=>{a.replayDurationType==="before"?await De(e):await l.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};b(async()=>{if(a.replayDurationType==="after"||a.replayDurationType==="beforeAndAfter")return!r&&!n&&o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c),void await Ze(e);if(r||n||t)await De(e),n&&Ht();else{const d=35+a.replayDurationSeconds,u=s-1e3*d,w=s;await l.updateEventsExpiredAt(u,w,a.expirationTimeLimitMinutes),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ht=async()=>{parseInt(B??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(_e(),Ye(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},Ye=async()=>C()?o.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([l.deleteBySessionId("events",h),l.deleteBySessionId("pendingCaptures",h)]).catch(e=>{O("Error clearing user replay data",e)}),Ze=async e=>{if(C())return;const{isHeatmap:t,surveyId:n}=e,r=await l.getPendingCaptures(),a=r==null?void 0:r.filter(d=>d.captureParams.surveyId===n);if(a!=null&&a.length)return void o.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:n});t&&(oe(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),de=Date.now(),g.inactivityInterval||(g.inactivityInterval=window.setInterval(()=>{var d;d=de,Date.now()-d>=3e4&&b(()=>l.markPendingHeatmapsReady(),"Error in heatmap inactivity")},1e3)));const s={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(s.replayParams.replayDurationSeconds*=2),s.replayParams.replayDurationType="before";const i=e.triggerTimestamp+1e3*e.replayParams.replayDurationSeconds;s.triggerTimestamp=i,B=(parseInt(B??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B),await(await l.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:s,sessionId:h,targetTimestamp:i,timestamp:Date.now(),uuid:o.v4()})},Nt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:e=>{T("Sprig_TrackEvent",e)},RecordPageView:e=>{e.description&&(e.description=ge(e.description)),T("Sprig_PageView",e)},RecordSurveyShown:e=>{T("Sprig_ShowSurvey",e)},_completeSessionReplay:async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const a=window.UserLeap._API_URL,s=await Pe({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:a,headers:r},!0);return!(s!=null&&s.error)},checkPendingHeatmapsUrl:()=>C()?o.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):b(async()=>{const e=(await l.getPendingCaptures({isHeatmap:!0})).map(t=>({eventId:t.captureParams.eventId,uuid:t.uuid})).filter(({eventId:t})=>!o.checkUrlStillMatching(t)).map(({uuid:t})=>t);return o.breadcrumbsLogger.info("PendingHeatmapsToComplete",{count:e.length}),e.length&&(await l.markPendingHeatmapsReady(e),o.breadcrumbsLogger.info("MarkedPendingHeatmapsReady")),e.length},"Error marking pending heatmaps ready"),clearUserReplayData:Ye,disableRecording:O,initializeReplay:async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:n,teardownAfter:r=!1,apiUrl:a,alwaysOnConfig:s})=>{if(s&&St({apiUrl:a,config:s,triggerSnapshot:()=>{oe()}}),B=o.sessionStorageHelper.getItem("sprig.pendingCount"),g.isRecording)return;if(r&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),C())return o.breadcrumbsLogger.debug("ReplayDisabled");if(await(async()=>{var d;if(!Ae())return!0;if((d=window.navigator.storage)!=null&&d.estimate)try{const{quota:u=0,usage:w=0}=await window.navigator.storage.estimate(),p=(u-w)/1024**3;return o.breadcrumbsLogger.info("Storage",{availableGb:p}),p<.5}catch{return!0}return!1})())return o.breadcrumbsLogger.debug("IDBNotSupported"),se();try{const d=await l.openDB();o.breadcrumbsLogger.info("DBVersion",{version:d.version})}catch(d){return o.breadcrumbsLogger.error("ReplayOpenErr",{name:d.name}),d.name==="VersionError"&&l.deleteDB(),se()}b(async()=>{await le(!0)},"Error uploading ready pending captures");const i=H()?30:0,c=Math.max(e??0,i);if(!c)return o.breadcrumbsLogger.debug("MissingDuration");o.breadcrumbsLogger.debug("ReplayInit"),await b(async()=>{var d;n!=null&&n.minDuration&&(qe=n.minDuration),n!=null&&n.batchDuration&&(ie=n.batchDuration),d=t,Ce.setLimit(d),At(),xt(c+35,1800,c+35),Bt();const u=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record.min.js";if(!window.rrwebRecord){const{record:y}=await import(u);window.rrwebRecord=y}const w=window.rrwebRecord;if(!w)return o.breadcrumbsLogger.error("RecordScriptFailed");let p=!0,f=0;const m={checkoutEveryNms:3e4,sampling:{input:"last",scroll:250,media:800},...n,mutationQueueEnabled:n==null?void 0:n.enableMutationQueue};var D,P;g.stopRecording=w({emit:(y,I)=>{if(y.type===L.Custom&&(de=Date.now()),C()||K())return;if(I&&y.type===L.Meta)f=performance.now();else if(I&&f&&y.type===L.FullSnapshot){const E=performance.now()-f;o.reportAndRegister("sdk_replay_snapshot_seconds",E/1e3)}const v=p||!!I&&y.type===L.Meta;p=!1,Tt(v,y),Ut({uuid:o.v4(),event:JSON.stringify(y),isValidStart:v,timestamp:Date.now()})},...m}),g.isRecording=!!g.stopRecording,g.isRecording&&(((y,I)=>{window.addEventListener("message",v=>{var E;v.data.type===ct&&(pe.push({source:v.source,origin:v.origin}),(E=v.source)==null||E.postMessage({type:ut,settings:y,replayLibraryUrl:I},{targetOrigin:v.origin}))})})(m,u),o.eventEmitter.on("survey.complete",y=>{var I;I={id:y,userAgent:window.navigator.userAgent},T("Sprig_SubmitSurvey",I)}),D=T,P=It,j||(S=D,V=P,window.addEventListener("click",xe,R),window.addEventListener("pointerdown",Me,R),window.addEventListener("mousedown",Be,R),window.addEventListener("keydown",Ue,R),window.addEventListener("scroll",Le,R),j=!0,ft(),ht()))},"Error initializing replay")},isReplayPaused:K,isReplayRecording:()=>g.isRecording,recordFullSnapshot:oe,recordReplayPaused:()=>{T("Sprig_ReplayPaused",{timestamp:Date.now()}),o.sessionStorageHelper.setItem("sprig.isReplayPaused","true")},recordReplayResumed:()=>{o.sessionStorageHelper.removeItem("sprig.isReplayPaused"),T("Sprig_ReplayResumed",{timestamp:Date.now()})},scheduleCapture:Ze,scheduleOrCaptureReplay:Xe,tryReplayAction:b,uploadReadyPendingCaptures:le},Symbol.toStringTag,{value:"Module"}));o.registerReplay(Nt);
package/dist/replay.js CHANGED
@@ -1,7 +1,7 @@
1
1
  var it = Object.defineProperty;
2
2
  var dt = (e, t, n) => t in e ? it(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var F = (e, t, n) => dt(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { b as d, s as Q, a as m, v as X, c as ct, g as ut, P as ke, r as Ue, d as lt, e as V, S as Z, f as pt } from "./metricsReporter-1Oozsgva.js";
4
+ import { b as d, s as Q, a as m, v as X, c as ct, g as ut, P as ke, r as Ue, d as lt, e as V, S as Z, f as pt } from "./metricsReporter-Chz3rKxD.js";
5
5
  var B = ((e) => (e[e.DomContentLoaded = 0] = "DomContentLoaded", e[e.Load = 1] = "Load", e[e.FullSnapshot = 2] = "FullSnapshot", e[e.IncrementalSnapshot = 3] = "IncrementalSnapshot", e[e.Meta = 4] = "Meta", e[e.Custom = 5] = "Custom", e[e.Plugin = 6] = "Plugin", e))(B || {}), k = ((e) => (e[e.Mutation = 0] = "Mutation", e[e.MouseMove = 1] = "MouseMove", e[e.MouseInteraction = 2] = "MouseInteraction", e[e.Scroll = 3] = "Scroll", e[e.ViewportResize = 4] = "ViewportResize", e[e.Input = 5] = "Input", e[e.TouchMove = 6] = "TouchMove", e[e.MediaInteraction = 7] = "MediaInteraction", e[e.StyleSheetRule = 8] = "StyleSheetRule", e[e.CanvasMutation = 9] = "CanvasMutation", e[e.Font = 10] = "Font", e[e.Log = 11] = "Log", e[e.Drag = 12] = "Drag", e[e.StyleDeclaration = 13] = "StyleDeclaration", e[e.Selection = 14] = "Selection", e[e.AdoptedStyleSheet = 15] = "AdoptedStyleSheet", e[e.CustomElement = 16] = "CustomElement", e))(k || {});
6
6
  const re = (e, t) => t.some((n) => e instanceof n);
7
7
  let Se, De;
@@ -0,0 +1 @@
1
+ "use strict";const N=require("./core-DGzfRh0z.cjs"),I=require("./metricsReporter-DOjBAl52.cjs");var le,g,Ot,J,Ye,Pt,Ae,Mt,ae={},Nt=[],Or=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ke=Array.isArray;function z(e,t){for(var r in t)e[r]=t[r];return e}function Vt(e){var t=e.parentNode;t&&t.removeChild(e)}function P(e,t,r){var n,o,i,a={};for(i in t)i=="key"?n=t[i]:i=="ref"?o=t[i]:a[i]=t[i];if(arguments.length>2&&(a.children=arguments.length>3?le.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)a[i]===void 0&&(a[i]=e.defaultProps[i]);return ie(e,a,n,o,null)}function ie(e,t,r,n,o){var i={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:o??++Ot,__i:-1,__u:0};return o==null&&g.vnode!=null&&g.vnode(i),i}function Dt(){return{current:null}}function V(e){return e.children}function D(e,t){this.props=e,this.context=t}function te(e,t){if(t==null)return e.__?te(e.__,e.__i+1):null;for(var r;t<e.__k.length;t++)if((r=e.__k[t])!=null&&r.__e!=null)return r.__e;return typeof e.type=="function"?te(e):null}function qt(e){var t,r;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((r=e.__k[t])!=null&&r.__e!=null){e.__e=e.__c.base=r.__e;break}return qt(e)}}function He(e){(!e.__d&&(e.__d=!0)&&J.push(e)&&!xe.__r++||Ye!==g.debounceRendering)&&((Ye=g.debounceRendering)||Pt)(xe)}function xe(){var e,t,r,n,o,i,a,s,l;for(J.sort(Ae);e=J.shift();)e.__d&&(t=J.length,n=void 0,i=(o=(r=e).__v).__e,s=[],l=[],(a=r.__P)&&((n=z({},o)).__v=o.__v+1,g.vnode&&g.vnode(n),Ne(a,n,o,r.__n,a.ownerSVGElement!==void 0,32&o.__u?[i]:null,s,i??te(o),!!(32&o.__u),l),n.__.__k[n.__i]=n,Bt(s,n,l),n.__e!=i&&qt(n)),J.length>t&&J.sort(Ae));xe.__r=0}function zt(e,t,r,n,o,i,a,s,l,u,d){var c,f,p,m,b,y=n&&n.__k||Nt,k=t.length;for(r.__d=l,function(_,C,U){var w,v,h,R,E,j=C.length,A=U.length,H=A,T=0;for(_.__k=[],w=0;w<j;w++)(v=_.__k[w]=(v=C[w])==null||typeof v=="boolean"||typeof v=="function"?null:typeof v=="string"||typeof v=="number"||typeof v=="bigint"||v.constructor==String?ie(null,v,null,null,v):ke(v)?ie(V,{children:v},null,null,null):v.constructor===void 0&&v.__b>0?ie(v.type,v.props,v.key,v.ref?v.ref:null,v.__v):v)!=null?(v.__=_,v.__b=_.__b+1,E=Pr(v,U,R=w+T,H),v.__i=E,h=null,E!==-1&&(H--,(h=U[E])&&(h.__u|=131072)),h==null||h.__v===null?(E==-1&&T--,typeof v.type!="function"&&(v.__u|=65536)):E!==R&&(E===R+1?T++:E>R?H>j-R?T+=E-R:T--:T=E<R&&E==R-1?E-R:0,E!==w+T&&(v.__u|=65536))):(h=U[w])&&h.key==null&&h.__e&&(h.__e==_.__d&&(_.__d=te(h)),Oe(h,h,!1),U[w]=null,H--);if(H)for(w=0;w<A;w++)(h=U[w])!=null&&!(131072&h.__u)&&(h.__e==_.__d&&(_.__d=te(h)),Oe(h,h))}(r,t,y),l=r.__d,c=0;c<k;c++)(p=r.__k[c])!=null&&typeof p!="boolean"&&typeof p!="function"&&(f=p.__i===-1?ae:y[p.__i]||ae,p.__i=c,Ne(e,p,f,o,i,a,s,l,u,d),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Ve(f.ref,null,p),d.push(p.ref,p.__c||m,p)),b==null&&m!=null&&(b=m),65536&p.__u||f.__k===p.__k?l=Ft(p,l,e):typeof p.type=="function"&&p.__d!==void 0?l=p.__d:m&&(l=m.nextSibling),p.__d=void 0,p.__u&=-196609);r.__d=l,r.__e=b}function Ft(e,t,r){var n,o;if(typeof e.type=="function"){for(n=e.__k,o=0;n&&o<n.length;o++)n[o]&&(n[o].__=e,t=Ft(n[o],t,r));return t}return e.__e!=t&&(r.insertBefore(e.__e,t||null),t=e.__e),t&&t.nextSibling}function F(e,t){return t=t||[],e==null||typeof e=="boolean"||(ke(e)?e.some(function(r){F(r,t)}):t.push(e)),t}function Pr(e,t,r,n){var o=e.key,i=e.type,a=r-1,s=r+1,l=t[r];if(l===null||l&&o==l.key&&i===l.type)return r;if(n>(l==null||131072&l.__u?0:1))for(;a>=0||s<t.length;){if(a>=0){if((l=t[a])&&!(131072&l.__u)&&o==l.key&&i===l.type)return a;a--}if(s<t.length){if((l=t[s])&&!(131072&l.__u)&&o==l.key&&i===l.type)return s;s++}}return-1}function Xe(e,t,r){t[0]==="-"?e.setProperty(t,r??""):e[t]=r==null?"":typeof r!="number"||Or.test(t)?r:r+"px"}function he(e,t,r,n,o){var i;e:if(t==="style")if(typeof r=="string")e.style.cssText=r;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)r&&t in r||Xe(e.style,t,"");if(r)for(t in r)n&&r[t]===n[t]||Xe(e.style,t,r[t])}else if(t[0]==="o"&&t[1]==="n")i=t!==(t=t.replace(/(PointerCapture)$|Capture$/,"$1")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=r,r?n?r.u=n.u:(r.u=Date.now(),e.addEventListener(t,i?tt:et,i)):e.removeEventListener(t,i?tt:et,i);else{if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!=="width"&&t!=="height"&&t!=="href"&&t!=="list"&&t!=="form"&&t!=="tabIndex"&&t!=="download"&&t!=="rowSpan"&&t!=="colSpan"&&t!=="role"&&t in e)try{e[t]=r??"";break e}catch{}typeof r=="function"||(r==null||r===!1&&t[4]!=="-"?e.removeAttribute(t):e.setAttribute(t,r))}}function et(e){var t=this.l[e.type+!1];if(e.t){if(e.t<=t.u)return}else e.t=Date.now();return t(g.event?g.event(e):e)}function tt(e){return this.l[e.type+!0](g.event?g.event(e):e)}function Ne(e,t,r,n,o,i,a,s,l,u){var d,c,f,p,m,b,y,k,_,C,U,w,v,h,R,E=t.type;if(t.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),i=[s=t.__e=r.__e]),(d=g.__b)&&d(t);e:if(typeof E=="function")try{if(k=t.props,_=(d=E.contextType)&&n[d.__c],C=d?_?_.props.value:d.__:n,r.__c?y=(c=t.__c=r.__c).__=c.__E:("prototype"in E&&E.prototype.render?t.__c=c=new E(k,C):(t.__c=c=new D(k,C),c.constructor=E,c.render=Nr),_&&_.sub(c),c.props=k,c.state||(c.state={}),c.context=C,c.__n=n,f=c.__d=!0,c.__h=[],c._sb=[]),c.__s==null&&(c.__s=c.state),E.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=z({},c.__s)),z(c.__s,E.getDerivedStateFromProps(k,c.__s))),p=c.props,m=c.state,c.__v=t,f)E.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(E.getDerivedStateFromProps==null&&k!==p&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(k,C),!c.__e&&(c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(k,c.__s,C)===!1||t.__v===r.__v)){for(t.__v!==r.__v&&(c.props=k,c.state=c.__s,c.__d=!1),t.__e=r.__e,t.__k=r.__k,t.__k.forEach(function(j){j&&(j.__=t)}),U=0;U<c._sb.length;U++)c.__h.push(c._sb[U]);c._sb=[],c.__h.length&&a.push(c);break e}c.componentWillUpdate!=null&&c.componentWillUpdate(k,c.__s,C),c.componentDidUpdate!=null&&c.__h.push(function(){c.componentDidUpdate(p,m,b)})}if(c.context=C,c.props=k,c.__P=e,c.__e=!1,w=g.__r,v=0,"prototype"in E&&E.prototype.render){for(c.state=c.__s,c.__d=!1,w&&w(t),d=c.render(c.props,c.state,c.context),h=0;h<c._sb.length;h++)c.__h.push(c._sb[h]);c._sb=[]}else do c.__d=!1,w&&w(t),d=c.render(c.props,c.state,c.context),c.state=c.__s;while(c.__d&&++v<25);c.state=c.__s,c.getChildContext!=null&&(n=z(z({},n),c.getChildContext())),f||c.getSnapshotBeforeUpdate==null||(b=c.getSnapshotBeforeUpdate(p,m)),zt(e,ke(R=d!=null&&d.type===V&&d.key==null?d.props.children:d)?R:[R],t,r,n,o,i,a,s,l,u),c.base=t.__e,t.__u&=-161,c.__h.length&&a.push(c),y&&(c.__E=c.__=null)}catch(j){t.__v=null,l||i!=null?(t.__e=s,t.__u|=l?160:32,i[i.indexOf(s)]=null):(t.__e=r.__e,t.__k=r.__k),g.__e(j,t,r)}else i==null&&t.__v===r.__v?(t.__k=r.__k,t.__e=r.__e):t.__e=Mr(r.__e,t,r,n,o,i,a,l,u);(d=g.diffed)&&d(t)}function Bt(e,t,r){t.__d=void 0;for(var n=0;n<r.length;n++)Ve(r[n],r[++n],r[++n]);g.__c&&g.__c(t,e),e.some(function(o){try{e=o.__h,o.__h=[],e.some(function(i){i.call(o)})}catch(i){g.__e(i,o.__v)}})}function Mr(e,t,r,n,o,i,a,s,l){var u,d,c,f,p,m,b,y=r.props,k=t.props,_=t.type;if(_==="svg"&&(o=!0),i!=null){for(u=0;u<i.length;u++)if((p=i[u])&&"setAttribute"in p==!!_&&(_?p.localName===_:p.nodeType===3)){e=p,i[u]=null;break}}if(e==null){if(_===null)return document.createTextNode(k);e=o?document.createElementNS("http://www.w3.org/2000/svg",_):document.createElement(_,k.is&&k),i=null,s=!1}if(_===null)y===k||s&&e.data===k||(e.data=k);else{if(i=i&&le.call(e.childNodes),y=r.props||ae,!s&&i!=null)for(y={},u=0;u<e.attributes.length;u++)y[(p=e.attributes[u]).name]=p.value;for(u in y)p=y[u],u=="children"||(u=="dangerouslySetInnerHTML"?c=p:u==="key"||u in k||he(e,u,null,p,o));for(u in k)p=k[u],u=="children"?f=p:u=="dangerouslySetInnerHTML"?d=p:u=="value"?m=p:u=="checked"?b=p:u==="key"||s&&typeof p!="function"||y[u]===p||he(e,u,p,y[u],o);if(d)s||c&&(d.__html===c.__html||d.__html===e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(c&&(e.innerHTML=""),zt(e,ke(f)?f:[f],t,r,n,o&&_!=="foreignObject",i,a,i?i[0]:r.__k&&te(r,0),s,l),i!=null)for(u=i.length;u--;)i[u]!=null&&Vt(i[u]);s||(u="value",m!==void 0&&(m!==e[u]||_==="progress"&&!m||_==="option"&&m!==y[u])&&he(e,u,m,y[u],!1),u="checked",b!==void 0&&b!==e[u]&&he(e,u,b,y[u],!1))}return e}function Ve(e,t,r){try{typeof e=="function"?e(t):e.current=t}catch(n){g.__e(n,r)}}function Oe(e,t,r){var n,o;if(g.unmount&&g.unmount(e),(n=e.ref)&&(n.current&&n.current!==e.__e||Ve(n,null,t)),(n=e.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(i){g.__e(i,t)}n.base=n.__P=null,e.__c=void 0}if(n=e.__k)for(o=0;o<n.length;o++)n[o]&&Oe(n[o],t,r||typeof e.type!="function");r||e.__e==null||Vt(e.__e),e.__=e.__e=e.__d=void 0}function Nr(e,t,r){return this.constructor(e,r)}function re(e,t,r){var n,o,i,a;g.__&&g.__(e,t),o=(n=typeof r=="function")?null:r&&r.__k||t.__k,i=[],a=[],Ne(t,e=(!n&&r||t).__k=P(V,null,[e]),o||ae,ae,t.ownerSVGElement!==void 0,!n&&r?[r]:o?null:t.firstChild?le.call(t.childNodes):null,i,!n&&r?r:o?o.__e:t.firstChild,n,a),Bt(i,e,a)}function $t(e,t){re(e,t,$t)}function Vr(e,t,r){var n,o,i,a,s=z({},e.props);for(i in e.type&&e.type.defaultProps&&(a=e.type.defaultProps),t)i=="key"?n=t[i]:i=="ref"?o=t[i]:s[i]=t[i]===void 0&&a!==void 0?a[i]:t[i];return arguments.length>2&&(s.children=arguments.length>3?le.call(arguments,2):r),ie(e.type,s,n||e.key,o||e.ref,null)}function De(e,t){var r={__c:t="__cC"+Mt++,__:e,Consumer:function(n,o){return n.children(o)},Provider:function(n){var o,i;return this.getChildContext||(o=[],(i={})[t]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(a){this.props.value!==a.value&&o.some(function(s){s.__e=!0,He(s)})},this.sub=function(a){o.push(a);var s=a.componentWillUnmount;a.componentWillUnmount=function(){o.splice(o.indexOf(a),1),s&&s.call(a)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}le=Nt.slice,g={__e:function(e,t,r,n){for(var o,i,a;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&i.getDerivedStateFromError!=null&&(o.setState(i.getDerivedStateFromError(e)),a=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(e,n||{}),a=o.__d),a)return o.__E=o}catch(s){e=s}throw e}},Ot=0,D.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=z({},this.state),typeof e=="function"&&(e=e(z({},r),this.props)),e&&z(r,e),e!=null&&this.__v&&(t&&this._sb.push(t),He(this))},D.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),He(this))},D.prototype.render=V,J=[],Pt=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ae=function(e,t){return e.__v.__b-t.__v.__b},xe.__r=0,Mt=0;var Dr=0;function x(e,t,r,n,o,i){var a,s,l={};for(s in t)s=="ref"?a=t[s]:l[s]=t[s];var u={type:e,props:l,key:r,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:--Dr,__i:-1,__u:0,__source:o,__self:i};if(typeof e=="function"&&(a=e.defaultProps))for(s in a)l[s]===void 0&&(l[s]=a[s]);return g.vnode&&g.vnode(u),u}var B,L,Ee,rt,ne=0,Wt=[],me=[],nt=g.__b,ot=g.__r,it=g.diffed,at=g.__c,st=g.unmount;function K(e,t){g.__h&&g.__h(L,e,ne||t),ne=0;var r=L.__H||(L.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:me}),r.__[e]}function W(e){return ne=1,qe(Qt,e)}function qe(e,t,r){var n=K(B++,2);if(n.t=e,!n.__c&&(n.__=[r?r(t):Qt(void 0,t),function(s){var l=n.__N?n.__N[0]:n.__[0],u=n.t(l,s);l!==u&&(n.__N=[u,n.__[1]],n.__c.setState({}))}],n.__c=L,!L.u)){var o=function(s,l,u){if(!n.__c.__H)return!0;var d=n.__c.__H.__.filter(function(f){return f.__c});if(d.every(function(f){return!f.__N}))return!i||i.call(this,s,l,u);var c=!1;return d.forEach(function(f){if(f.__N){var p=f.__[0];f.__=f.__N,f.__N=void 0,p!==f.__[0]&&(c=!0)}}),!(!c&&n.__c.props===s)&&(!i||i.call(this,s,l,u))};L.u=!0;var i=L.shouldComponentUpdate,a=L.componentWillUpdate;L.componentWillUpdate=function(s,l,u){if(this.__e){var d=i;i=void 0,o(s,l,u),i=d}a&&a.call(this,s,l,u)},L.shouldComponentUpdate=o}return n.__N||n.__}function M(e,t){var r=K(B++,3);!g.__s&&Be(r.__H,t)&&(r.__=e,r.i=t,L.__H.__h.push(r))}function ce(e,t){var r=K(B++,4);!g.__s&&Be(r.__H,t)&&(r.__=e,r.i=t,L.__h.push(r))}function Z(e){return ne=5,Y(function(){return{current:e}},[])}function Zt(e,t,r){ne=6,ce(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function Y(e,t){var r=K(B++,7);return Be(r.__H,t)?(r.__V=e(),r.i=t,r.__h=e,r.__V):r.__}function se(e,t){return ne=8,Y(function(){return e},t)}function ze(e){var t=L.context[e.__c],r=K(B++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(L)),t.props.value):e.__}function Fe(e,t){g.useDebugValue&&g.useDebugValue(t?t(e):e)}function Gt(){var e=K(B++,11);if(!e.__){for(var t=L.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var r=t.__m||(t.__m=[0,0]);e.__="P"+r[0]+"-"+r[1]++}return e.__}function qr(){for(var e;e=Wt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ge),e.__H.__h.forEach(Pe),e.__H.__h=[]}catch(t){e.__H.__h=[],g.__e(t,e.__v)}}g.__b=function(e){L=null,nt&&nt(e)},g.__r=function(e){ot&&ot(e),B=0;var t=(L=e.__c).__H;t&&(Ee===L?(t.__h=[],L.__h=[],t.__.forEach(function(r){r.__N&&(r.__=r.__N),r.__V=me,r.__N=r.i=void 0})):(t.__h.forEach(ge),t.__h.forEach(Pe),t.__h=[],B=0)),Ee=L},g.diffed=function(e){it&&it(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Wt.push(t)!==1&&rt===g.requestAnimationFrame||((rt=g.requestAnimationFrame)||zr)(qr)),t.__H.__.forEach(function(r){r.i&&(r.__H=r.i),r.__V!==me&&(r.__=r.__V),r.i=void 0,r.__V=me})),Ee=L=null},g.__c=function(e,t){t.some(function(r){try{r.__h.forEach(ge),r.__h=r.__h.filter(function(n){return!n.__||Pe(n)})}catch(n){t.some(function(o){o.__h&&(o.__h=[])}),t=[],g.__e(n,r.__v)}}),at&&at(e,t)},g.unmount=function(e){st&&st(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{ge(n)}catch(o){t=o}}),r.__H=void 0,t&&g.__e(t,r.__v))};var lt=typeof requestAnimationFrame=="function";function zr(e){var t,r=function(){clearTimeout(n),lt&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(r,100);lt&&(t=requestAnimationFrame(r))}function ge(e){var t=L,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),L=t}function Pe(e){var t=L;e.__c=e.__(),L=t}function Be(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function Qt(e,t){return typeof t=="function"?t(e):t}function Jt(e,t){for(var r in t)e[r]=t[r];return e}function Me(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function ye(e){this.props=e}function Kt(e,t){function r(o){var i=this.props.ref,a=i==o.ref;return!a&&i&&(i.call?i(null):i.current=null),t?!t(this.props,o)||!a:Me(this.props,o)}function n(o){return this.shouldComponentUpdate=r,P(e,o)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(ye.prototype=new D).isPureReactComponent=!0,ye.prototype.shouldComponentUpdate=function(e,t){return Me(this.props,e)||Me(this.state,t)};var ct=g.__b;g.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),ct&&ct(e)};var Fr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function $e(e){function t(r){var n=Jt({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=Fr,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ut=function(e,t){return e==null?null:F(F(e).map(t))},Yt={map:ut,forEach:ut,count:function(e){return e?F(e).length:0},only:function(e){var t=F(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:F},Br=g.__e;g.__e=function(e,t,r,n){if(e.then){for(var o,i=t;i=i.__;)if((o=i.__c)&&o.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),o.__c(e,t)}Br(e,t,r,n)};var dt=g.unmount;function Xt(e,t,r){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=Jt({},e)).__c!=null&&(e.__c.__P===r&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return Xt(n,t,r)})),e}function er(e,t,r){return e&&r&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return er(n,t,r)}),e.__c&&e.__c.__P===t&&(e.__e&&r.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=r)),e}function ee(){this.__u=0,this.t=null,this.__b=null}function tr(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function we(e){var t,r,n;function o(i){if(t||(t=e()).then(function(a){r=a.default||a},function(a){n=a}),n)throw n;if(!r)throw t;return P(r,i)}return o.displayName="Lazy",o.__f=!0,o}function X(){this.u=null,this.o=null}g.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),dt&&dt(e)},(ee.prototype=new D).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var o=tr(n.__v),i=!1,a=function(){i||(i=!0,r.__R=null,o?o(s):s())};r.__R=a;var s=function(){if(!--n.__u){if(n.state.__a){var l=n.state.__a;n.__v.__k[0]=er(l,l.__c.__P,l.__c.__O)}var u;for(n.setState({__a:n.__b=null});u=n.t.pop();)u.forceUpdate()}};n.__u++||32&t.__u||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(a,a)},ee.prototype.componentWillUnmount=function(){this.t=[]},ee.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=Xt(this.__b,r,n.__O=n.__P)}this.__b=null}var o=t.__a&&P(V,null,e.fallback);return o&&(o.__u&=-33),[P(V,null,t.__a?null:e.children),o]};var pt=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]<r[0])break;e.u=r=r[2]}};function $r(e){return this.getChildContext=function(){return e.context},e.children}function Wr(e){var t=this,r=e.i;t.componentWillUnmount=function(){re(null,t.l),t.l=null,t.i=null},t.i&&t.i!==r&&t.componentWillUnmount(),t.l||(t.i=r,t.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),t.i.appendChild(n)},insertBefore:function(n,o){this.childNodes.push(n),t.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),t.i.removeChild(n)}}),re(P($r,{context:t.context},e.__v),t.l)}function rr(e,t){var r=P(Wr,{__v:e,i:t});return r.containerInfo=t,r}(X.prototype=new D).__a=function(e){var t=this,r=tr(t.__v),n=t.o.get(e);return n[0]++,function(o){var i=function(){t.props.revealOrder?(n.push(o),pt(t,e,n)):o()};r?r(i):i()}},X.prototype.render=function(e){this.u=null,this.o=new Map;var t=F(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},X.prototype.componentDidUpdate=X.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){pt(e,r,t)})};var nr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Zr=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Gr=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Qr=/[A-Z0-9]/g,Jr=typeof document<"u",Kr=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};function or(e,t,r){return t.__k==null&&(t.textContent=""),re(e,t),typeof r=="function"&&r(),e?e.__c:null}function ir(e,t,r){return $t(e,t),typeof r=="function"&&r(),e?e.__c:null}D.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(D.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var ft=g.event;function Yr(){}function Xr(){return this.cancelBubble}function en(){return this.defaultPrevented}g.event=function(e){return ft&&(e=ft(e)),e.persist=Yr,e.isPropagationStopped=Xr,e.isDefaultPrevented=en,e.nativeEvent=e};var We,tn={enumerable:!1,configurable:!0,get:function(){return this.class}},_t=g.vnode;g.vnode=function(e){typeof e.type=="string"&&function(t){var r=t.props,n=t.type,o={};for(var i in r){var a=r[i];if(!(i==="value"&&"defaultValue"in r&&a==null||Jr&&i==="children"&&n==="noscript"||i==="class"||i==="className")){var s=i.toLowerCase();i==="defaultValue"&&"value"in r&&r.value==null?i="value":i==="download"&&a===!0?a="":s==="ondoubleclick"?i="ondblclick":s!=="onchange"||n!=="input"&&n!=="textarea"||Kr(r.type)?s==="onfocus"?i="onfocusin":s==="onblur"?i="onfocusout":Gr.test(i)?i=s:n.indexOf("-")===-1&&Zr.test(i)?i=i.replace(Qr,"-$&").toLowerCase():a===null&&(a=void 0):s=i="oninput",s==="oninput"&&o[i=s]&&(i="oninputCapture"),o[i]=a}}n=="select"&&o.multiple&&Array.isArray(o.value)&&(o.value=F(r.children).forEach(function(l){l.props.selected=o.value.indexOf(l.props.value)!=-1})),n=="select"&&o.defaultValue!=null&&(o.value=F(r.children).forEach(function(l){l.props.selected=o.multiple?o.defaultValue.indexOf(l.props.value)!=-1:o.defaultValue==l.props.value})),r.class&&!r.className?(o.class=r.class,Object.defineProperty(o,"className",tn)):(r.className&&!r.class||r.class&&r.className)&&(o.class=o.className=r.className),t.props=o}(e),e.$$typeof=nr,_t&&_t(e)};var ht=g.__r;g.__r=function(e){ht&&ht(e),We=e.__c};var mt=g.diffed;g.diffed=function(e){mt&&mt(e);var t=e.props,r=e.__e;r!=null&&e.type==="textarea"&&"value"in t&&t.value!==r.value&&(r.value=t.value==null?"":t.value),We=null};var ar={ReactCurrentDispatcher:{current:{readContext:function(e){return We.__n[e.__c].props.value}}}};function sr(e){return P.bind(null,e)}function ue(e){return!!e&&e.$$typeof===nr}function lr(e){return ue(e)&&e.type===V}function cr(e){return ue(e)?Vr.apply(null,arguments):e}function Ze(e){return!!e.__k&&(re(null,e),!0)}function ur(e){return e&&(e.base||e.nodeType===1&&e)||null}var dr=function(e,t){return e(t)},pr=function(e,t){return e(t)},fr=V;function Ge(e){e()}function _r(e){return e}function hr(){return[!1,Ge]}var mr=ce,gr=ue;function vr(e,t){var r=t(),n=W({h:{__:r,v:t}}),o=n[0].h,i=n[1];return ce(function(){o.__=r,o.v=t,Ie(o)&&i({h:o})},[e,r,t]),M(function(){return Ie(o)&&i({h:o}),e(function(){Ie(o)&&i({h:o})})},[e]),r}function Ie(e){var t,r,n=e.v,o=e.__;try{var i=n();return!((t=o)===(r=i)&&(t!==0||1/t==1/r)||t!=t&&r!=r)}catch{return!0}}var br={useState:W,useId:Gt,useReducer:qe,useEffect:M,useLayoutEffect:ce,useInsertionEffect:mr,useTransition:hr,useDeferredValue:_r,useSyncExternalStore:vr,startTransition:Ge,useRef:Z,useImperativeHandle:Zt,useMemo:Y,useCallback:se,useContext:ze,useDebugValue:Fe,version:"17.0.2",Children:Yt,render:or,hydrate:ir,unmountComponentAtNode:Ze,createPortal:rr,createElement:P,createContext:De,createFactory:sr,cloneElement:cr,createRef:Dt,Fragment:V,isValidElement:ue,isElement:gr,isFragment:lr,findDOMNode:ur,Component:D,PureComponent:ye,memo:Kt,forwardRef:$e,flushSync:pr,unstable_batchedUpdates:dr,StrictMode:fr,Suspense:ee,SuspenseList:X,lazy:we,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ar};const rn=Object.freeze(Object.defineProperty({__proto__:null,Children:Yt,Component:D,Fragment:V,PureComponent:ye,StrictMode:fr,Suspense:ee,SuspenseList:X,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:ar,cloneElement:cr,createContext:De,createElement:P,createFactory:sr,createPortal:rr,createRef:Dt,default:br,findDOMNode:ur,flushSync:pr,forwardRef:$e,hydrate:ir,isElement:gr,isFragment:lr,isValidElement:ue,lazy:we,memo:Kt,render:or,startTransition:Ge,unmountComponentAtNode:Ze,unstable_batchedUpdates:dr,useCallback:se,useContext:ze,useDebugValue:Fe,useDeferredValue:_r,useEffect:M,useErrorBoundary:function(e){var t=K(B++,10),r=W();return t.__=e,L.componentDidCatch||(L.componentDidCatch=function(n,o){t.__&&t.__(n,o),r[1](n)}),[r[0],function(){r[1](void 0)}]},useId:Gt,useImperativeHandle:Zt,useInsertionEffect:mr,useLayoutEffect:ce,useMemo:Y,useReducer:qe,useRef:Z,useState:W,useSyncExternalStore:vr,useTransition:hr,version:"17.0.2"},Symbol.toStringTag,{value:"Module"})),xr=e=>P("svg",{fill:"none",height:24,viewBox:"0 0 24 24",width:24,xmlns:"http://www.w3.org/2000/svg",...e},P("path",{d:"M17 10L12 15L7 10",stroke:"#0B2330",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5})),yr=e=>P("svg",{fill:"none",height:10,viewBox:"0 0 10 10",width:10,xmlns:"http://www.w3.org/2000/svg",...e},P("path",{d:"M9.15377 1.30774L4.07685 8.23082L1.30762 5.00005",stroke:"white",strokeLinecap:"round",strokeWidth:2})),nn=({visible:e})=>x("div",{className:"sprig-check-background",style:{opacity:e?1:0},children:x(yr,{className:"sprig-check"})}),gt="250ms",on=$e(({animate:e,children:t,header:r,isOpen:n,onClick:o,showHeaderCheck:i},a)=>{const s=Z(null),[l,u]=W(0),[d,c]=W("none"),[f,p]=W(!0);return M(()=>{var b;const m=(b=s.current)==null?void 0:b.getBoundingClientRect();u(n&&m?m.height:0)},[n]),M(()=>{!l&&n||!f||p(!1),c(e&&!f?`height ${gt} ease`:"none")},[e,f,l,n]),x("div",{className:"sprig-accordion",ref:a,children:[x("button",{className:"sprig-accordion-header-container",onClick:o,type:"button",children:[x("div",{className:"sprig-header-label-container",children:[x("span",{className:"sprig-header-label",children:r}),x(nn,{visible:i})]}),x(xr,{className:"sprig-caret",style:{transitionDuration:e?gt:"0",transform:n?"rotate(-180deg)":"none"}})]}),x("div",{className:"sprig-accordion-body",style:{transition:d,height:l},children:x("div",{ref:s,children:t})})]})}),Qe=({style:e,stroke:t="black"})=>x("svg",{fill:"none",height:"10",style:e,viewBox:"0 0 12 10",width:"12",xmlns:"http://www.w3.org/2000/svg",children:[x("path",{d:"M1.47839 5.2085L10.9384 5.2085",stroke:t,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.35"}),x("path",{d:"M7.0686 1.15845L10.9386 5.20845L7.0686 9.25845",stroke:t,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.35"})]}),ve=(...e)=>e.filter(Boolean).join(" "),kr=(e,t,r)=>{const n=t?"--mobile":"--desktop";return`${e+n} ${e+(r?`${n}_${r}`:"")} ${e}`},an=(e,t)=>`${e} ${e}__${t}`,vt=e=>{let t;const r=new Set,n=(a,s)=>{const l=typeof a=="function"?a(t):a;if(!Object.is(l,t)){const u=t;t=s??typeof l!="object"?l:Object.assign({},t,l),r.forEach(d=>d(t,u))}},o=()=>t,i={setState:n,getState:o,subscribe:a=>(r.add(a),()=>r.delete(a)),destroy:()=>r.clear()};return t=e(n,o,i),i};function sn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ln(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}),r}var bt={exports:{}},Re={};const wr=ln(rn);var xt,yt,kt,wt,Ct={exports:{}},je={};function cn(){return yt||(yt=1,Ct.exports=function(){if(xt)return je;xt=1;var e=wr,t=typeof Object.is=="function"?Object.is:function(l,u){return l===u&&(l!==0||1/l==1/u)||l!=l&&u!=u},r=e.useState,n=e.useEffect,o=e.useLayoutEffect,i=e.useDebugValue;function a(l){var u=l.getSnapshot;l=l.value;try{var d=u();return!t(l,d)}catch{return!0}}var s=typeof window>"u"||window.document===void 0||window.document.createElement===void 0?function(l,u){return u()}:function(l,u){var d=u(),c=r({inst:{value:d,getSnapshot:u}}),f=c[0].inst,p=c[1];return o(function(){f.value=d,f.getSnapshot=u,a(f)&&p({inst:f})},[l,d,u]),n(function(){return a(f)&&p({inst:f}),l(function(){a(f)&&p({inst:f})})},[l]),i(d),d};return je.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:s,je}()),Ct.exports}var un=(wt||(wt=1,bt.exports=function(){if(kt)return Re;kt=1;var e=wr,t=cn(),r=typeof Object.is=="function"?Object.is:function(l,u){return l===u&&(l!==0||1/l==1/u)||l!=l&&u!=u},n=t.useSyncExternalStore,o=e.useRef,i=e.useEffect,a=e.useMemo,s=e.useDebugValue;return Re.useSyncExternalStoreWithSelector=function(l,u,d,c,f){var p=o(null);if(p.current===null){var m={hasValue:!1,value:null};p.current=m}else m=p.current;p=a(function(){function y(w){if(!C){if(C=!0,k=w,w=c(w),f!==void 0&&m.hasValue){var v=m.value;if(f(v,w))return _=v}return _=w}if(v=_,r(k,w))return v;var h=c(w);return f!==void 0&&f(v,h)?v:(k=w,_=h)}var k,_,C=!1,U=d===void 0?null:d;return[function(){return y(u())},U===null?void 0:function(){return y(U())}]},[u,d,c,f]);var b=n(l,p[0],p[1]);return i(function(){m.hasValue=!0,m.value=b},[b]),s(b),b},Re}()),bt.exports);const dn=sn(un),{useSyncExternalStoreWithSelector:pn}=dn,St=e=>{const t=typeof e=="function"?(n=>n?vt(n):vt)(e):e,r=(n,o)=>function(i,a=i.getState,s){const l=pn(i.subscribe,i.getState,i.getServerState||i.getState,a,s);return Fe(l),l}(t,n,o);return Object.assign(r,t),r},Cr=e=>e?St(e):St;var Sr=(e=>(e.RIGHT="right",e.LEFT="left",e))(Sr||{});const fn=1,_n=2,Je={eq:(e,t)=>e==t,neq(e,t){return!this.eq(e,t)},gt:(e,t)=>e>t,gte:(e,t)=>e>=t,lt:(e,t)=>e<t,lte:(e,t)=>e<=t,list_exact:(e,t)=>!(!Array.isArray(e)||!Array.isArray(t))&&e.slice().sort().join(",")===t.slice().sort().join(","),list_all:(e,t)=>!(!Array.isArray(e)||!Array.isArray(t))&&!t.some(r=>e.indexOf(r)===-1),list_alo(e,t){if(!Array.isArray(t))return!1;const r=Array.isArray(e)?e:[e],n=new Set(r);return t.some(o=>n.has(o))},list_dni(e,t){if(!Array.isArray(t))return!1;const r=Array.isArray(e)?e:[e],n=new Set(r);return t.every(o=>!n.has(o))},contains(e,t){const r=e.toLowerCase(),n=t.toLowerCase();return r.includes(n)},notcontains(e,t){return!this.contains(e,t)}},hn=(e,t,r)=>{switch(t){case"videovoice":return!!(e&&e.value);case"open":return!!r;case"multipleselect":return!!(r&&Object.keys(r).length);case"recordedtask":return(r==null?void 0:r.taskStatus)==="completed";case"texturlprompt":return!e.value;case"consentlegal":case"nps":case"likert":return r!==null;case"multiplechoice":return r!==void 0;case"matrix":return!!(r&&Object.values(r).every(n=>n!==null));default:return!0}},Er=(e,t)=>{if(t==="matrix"){const r=Object.keys(e).length,n=Object.values(e).filter(o=>o!==null).length;return n>0&&n<r}return!1},Ir=({cards:e,index:t,hasEndCard:r,allResponses:n,uploadProgress:o={}})=>{if(t>=e.length||t<0)return null;let i=t+1;const a=e[t].props.routingOptions||[];for(let u=0;u<a.length;u++){const{group:d,target:c}=a[u];if(!(d!=null&&d.length))continue;const f=d[0];if(f.questionIndex===void 0||f.questionIndex>n.length)continue;let p=Et({comparator:f.comparator,response:n[f.questionIndex],type:e[f.questionIndex].type,value:f.value});for(let m=1;m<d.length;m+=2){const b=d[m],y=d[m+1],k=Et({comparator:y.comparator,response:n[y.questionIndex],type:e[y.questionIndex].type,value:y.value});b===fn?p&&(p=k):b===_n&&(p||(p=k))}if(p){i=c===-1&&r?e.length-1:c;break}}const s=e.findIndex(u=>u.type==="uploading");let l;return l=s>0?r?e.length-3:e.length-2:e.length-1,t>=l||i===-1||i!==null&&i>l?s>0&&Object.values(o).some(d=>d.isSubmitted&&!d.isComplete)?s:r?e.length-1:null:i===-1?null:i},Et=({comparator:e,response:t,type:r,value:n})=>{if(e==="answered")switch(r){case"texturlprompt":return t===void 0;case"consentlegal":return t&&t.submitted===!0;case"recordedtask":return"taskStatus"in t&&t.taskStatus==="completed";case"likert":case"nps":return Number.isInteger(t);case"rankorder":case"matrix":return Object.values(t).every(o=>o!==null);case"maxdiff":return!(t===null||!Array.isArray(t))&&t.every(o=>{if(!Array.isArray(o))return!1;const i=o.some(s=>s.selected==="left"),a=o.some(s=>s.selected==="right");return i&&a});case"multiplechoice":return!!t;case"multipleselect":return(t==null?void 0:t.length)>0;case"open":return t&&t.length>0;case"videovoice":return!!(t!=null&&t.mediaRecordingUid);default:return!1}if(e==="given_up")return r!=="recordedtask"||"taskStatus"in t&&t.taskStatus==="given.up";if(e==="partial")return r==="matrix"&&Er(t,r);if(e==="skipped")switch(r){case"texturlprompt":return t==null?void 0:t.skipped;case"consentlegal":case"likert":case"nps":case"videovoice":return t===null;case"recordedtask":return"taskStatus"in t&&t.taskStatus==="abandoned";case"open":case"multipleselect":return t===null||(t==null?void 0:t.length)===0;case"multiplechoice":return t==null;case"matrix":return t===null||Object.values(t).every(o=>o===null);case"maxdiff":return t===null||!Array.isArray(t)||t.some(o=>{if(!Array.isArray(o))return!0;const i=o.some(s=>s.selected==="left"),a=o.some(s=>s.selected==="right");return!(i&&a)});case"rankorder":return t===null||Object.values(t).some(o=>o===null);default:return!1}return Je[e](t,n)},mn=e=>{var n,o,i;switch(e.type){case"multipleselect":return e&&e.props&&e.props.options?e.props.options.length>13?e.props.options.map(a=>[a.value]):(t=e.props.options.map(a=>a.value),r=!e.props.properties.required,t.reduce((a,s)=>a.concat(a.map(l=>[...l,s])),[[]]).filter(a=>r||a.length>0)):null;case"multiplechoice":{if(!e||!e.props||!e.props.options)return null;const a=e.props.options.map(s=>s.value);return e.props.properties.required||a.push(void 0),a}case"matrix":{if(!((n=e==null?void 0:e.props)!=null&&n.options))return null;const a=e.props.properties.matrixColumn,s=e.props.options,l=s.reduce((d,c)=>(d[c.id]=null,d),{}),u=[{...l,[s[0].id]:a[0].value},s.reduce((d,c)=>(d[c.id]=a[0].value,d),{})];return e.props.properties.required||u.push(l),u}case"likert":{const a=Number((i=(o=e.props)==null?void 0:o.properties)==null?void 0:i.range)||5;return[...Array.from(Array(a).keys()).map(l=>l+1),...e.props.properties.required?[]:[null]]}case"nps":return[0,1,2,3,4,5,6,7,8,9,10,...e.props.properties.required?[]:[null]];case"videovoice":case"open":return["1",...e.props.properties.required?[]:[""]];case"recordedtask":{const a=[{taskStatus:"completed"},{taskStatus:"given.up"}];return e.props.properties.required||a.push({taskStatus:"abandoned"}),a}case"texturlprompt":return[void 0,...e.props.properties.required?[]:[{skipped:!0}]];case"consentlegal":return[1,...e.props.properties.required?[]:[null]];default:return[1]}var t,r},gn=e=>e in Je,vn=e=>typeof e=="object"&&e!==null&&"taskStatus"in e,bn=(e,t=[])=>t.reduce((r,n)=>{const{group:o,target:i}=n;if(!(o!=null&&o.length))return[...r];const a=o.filter(s=>!!Number(s)||typeof s=="object"&&s.questionIndex===e).map(s=>{const{comparator:l,value:u}=s;return{comparator:l,target:i,value:u}});return[...r,...a]},[]),Le=new Set(["thanks","uploading"]),G=Cr()((e,t)=>({addResponseGroupMeta:void 0,allResponses:[],answers:void 0,apiURL:"",avatars:{agentAvatar:{"1x":"","2x":""},respondentAvatar:{"1x":"","2x":""}},border:"#000000",cards:[],close:async(r=N.APP_ID)=>{const n=t(),{fadeout:o,remove:i,trackHistory:a,studyType:s}=n;await o(r),Ue(n)||a({event:"closed"}),I.breadcrumbsLogger.info("SurveyClosing",{surveyId:n.surveyId}),N.ConflictingWidgets.enable(),i({initiator:I.DismissReason.Closed,studyType:s})},configureExitOnOverlayClick:()=>{},customMetadata:{},destroy:async r=>{const{eventEmitFn:n,fadeout:o,remove:i,studyType:a,surveyId:s}=t();n("survey.complete",s),await o(r),N.ConflictingWidgets.enable(),i({initiator:I.DismissReason.Complete,studyType:a})},enableCspTrustedTypes:!1,endCard:{headline:""},envId:"",eventEmitFn:I.eventEmitter.emit.bind(I.eventEmitter),fadeout:async r=>{const{eventEmitFn:n,headers:o,viewDocument:i}=t();return I.shouldDirectEmbed(o)?Promise.resolve():(n(I.SprigEvent.SurveyFadingOut),new Promise(a=>{const s=i.getElementById(r);s?(s.addEventListener("transitionend",()=>{a()}),s.classList.remove("ul-app--visible")):a()}))},forceBrandedLogo:!1,frame:document.createElement("iframe"),handleClickEmbedButton:r=>{const{cards:n,eventEmitFn:o,index:i}=t();o(r,{qid:n[i].name,props:n[i].props}),e(()=>({hasViewedEmbed:!0}))},handleUploadUpdate:({mediaRecordingUid:r,isComplete:n,progressPct:o,isSubmitted:i})=>{var p,m,b;const{cards:a,destroy:s,index:l,uploadProgress:u}=t(),d=n||((p=u[r])==null?void 0:p.isComplete),c={...u,[r]:{progressPct:d?100:o||((m=u[r])==null?void 0:m.progressPct),isComplete:d,isSubmitted:i||((b=u[r])==null?void 0:b.isSubmitted)}};if(e({uploadProgress:c}),a[l].type!=="uploading")return;const f=Object.entries(u).every(([y,k])=>!k.isSubmitted||k.isComplete||r==y&&n);if(f&&l>=a.length-1)return s(N.APP_ID);e({index:f?l+1:l,uploadingCardViewed:!0})},hasViewedEmbed:!1,headers:{Authorization:"","Content-Type":"","userleap-platform":"web","x-ul-environment-id":"","x-ul-installation-method":"web-snippet","x-ul-sdk-version":"","x-ul-visitor-id":""},index:0,isConversationalUI:!1,isPreview:!1,layout:"default",marketingUrl:"https://sprig.com",meta:{ch:0,cw:0,l:"",mode:null,p:"",sh:0,sw:0},mode:void 0,next:r=>{const{allResponses:n,cards:o,eventEmitFn:i,index:a,responseGroupUid:s,submit:l,trackHistory:u,uploadProgress:d,viewedCardCount:c}=t();e({minScrollableHeight:void 0});const f=Array.isArray(r.data)?r.data:[r.data],p=Date.now(),m=[...o],b={response:[],responseGroupUid:s,questionIndex:a};let y=null;const k=n.slice(0);f.forEach((U,w)=>{const v=m[a+w],{type:h,...R}=U,E={...R,answeredAt:p};E.questionId=Math.floor(E.questionId);const j=E.value;(H=>H&&!Le.has(H.type))(v)&&(v.value=j,v.secondaryValue=E.secondaryValue||null),b.response.push(E);let A=j;h!=="multipleselect"&&h!=="multiplechoice"||j===null||(A=h==="multiplechoice"?Object.values(j).find(H=>H!==!1):j,h==="multipleselect"&&(A=m[a+w].props.options.reduce((H,T)=>(j[T.id]&&H.push(T.value),H),[]))),k[a+w]=A,y=Ir({cards:m,index:a+w,hasEndCard:!!r.endCard,uploadProgress:d,allResponses:k})}),e({allResponses:k}),(y===null||Le.has(m[y].type))&&(b.completedAt=p);const _=l(b);if(y===null)return void r.completeSurvey();y&&!Le.has(m[y].type)&&_.finally(()=>{u({event:"seen",index:y})});const C=m[y];m[y]&&i&&i("survey.question",{qid:C.name,props:C.props}),e({cards:m,hasViewedEmbed:!1,index:y,viewedCardCount:c+1})},pendingRemoveIframeReason:null,previewKey:null,previewMode:void 0,recorder:()=>{},recorderEventEmitter:I.eventEmitter,resolveTrackedPromise:()=>{const{removeIframeIfReady:r}=t();e(n=>({unresolvedRequestCount:n.unresolvedRequestCount-1})),r()},responseGroupUid:"",remove:({initiator:r,studyType:n})=>{const{eventEmitFn:o,removeIframeIfReady:i,surveyId:a}=t();e({pendingRemoveIframeReason:r,studyType:n}),o(I.SprigEvent.SurveyCloseRequested,{name:I.SprigEvent.SurveyCloseRequested,initiator:r,studyType:n,"survey.id":a}),i()},removeIframeIfReady:()=>{const{eventEmitFn:r,pendingRemoveIframeReason:n,unresolvedRequestCount:o,studyType:i,surveyId:a}=t();n&&o===0&&(r(I.SprigEvent.SurveyWillClose,{name:I.SprigEvent.SurveyWillClose,initiator:n,studyType:i,"survey.id":a}),e({pendingRemoveIframeReason:null,studyType:i}))},seen:async()=>{const{trackHistory:r}=t();return r({event:"seen",isNew:!0})},slugName:null,showStripes:!1,showSurveyBrand:!1,startingQuestionIdx:null,styleNonce:"",submit:async({completedAt:r,questionIndex:n,response:o,responseGroupUid:i})=>{const a=t();if(!i||Ue(a))return;const s={responseGroupUid:i,meta:a.meta,customMetadata:a.customMetadata,responses:o,completedAt:r,previewKey:a.previewKey};if(typeof a.addResponseGroupMeta=="function")try{const u=await a.addResponseGroupMeta();typeof u=="object"&&u!==null?s.meta={...s.meta,...u}:I.breadcrumbsLogger.error("addResponseGroupMeta must return an object")}catch(u){I.breadcrumbsLogger.error("addResponseGroupMeta promise failed",u)}const l=await a.trackPromise(I.sprigFetch(`${a.apiURL}/sdk/1/environments/${a.envId}/visitors/${a.userId}/responses/submit`,{body:JSON.stringify(s),headers:a.headers,method:"POST"}));l.ok?o.forEach((u,d)=>{a.eventEmitFn(I.SprigEvent.QuestionAnswered,{...u,questionIndex:n?n+d:void 0,"survey.id":a.surveyId})}):l.reportError&&(console.warn("[Sprig] (ERR-427) Failed to submit response",l.error),await a.trackPromise(It(a,"submitResponse",l.error)))},surveyId:0,surveyVisitorAttributes:{},tabTitle:"",trackHistory:async({event:r,index:n,isNew:o=!1})=>{const i=t();if(Ue(i))return;const{cards:a,index:s}=i;let l=n??s,u=a[l];for(;u;){const d={sid:i.surveyId,qid:Math.floor(u.name),action:r,vid:i.userId,eid:i.envId,isNew:o,responseGroupUid:i.responseGroupUid,previewKey:i.previewKey},c=await i.trackPromise(I.sprigFetch(`${i.apiURL}/sdk/1/visitors/${i.userId}/surveys/${i.surveyId}/history`,{method:"POST",headers:i.headers,body:JSON.stringify(d)}));!c.ok&&c.reportError&&(console.warn("[Sprig] (ERR-428) Failed to track survey event",c.error),await i.trackPromise(It(i,"trackHistory",c.error)));const f=a[l+1];if(!u.groupId||!(f!=null&&f.groupId)||f.groupId!==u.groupId)break;l++,u=f,o=!1}},trackPromise:async r=>{const{resolveTrackedPromise:n}=t();return e(o=>({unresolvedRequestCount:o.unresolvedRequestCount+1})),r.then(o=>(n(),o)).catch(o=>{throw n(),o})},unresolvedRequestCount:0,update:()=>{const{cards:r,index:n,headers:o,eventEmitFn:i,frame:a,useMobileStyling:s,surveyId:l,viewDocument:u}=t(),d=o["userleap-platform"]==="web",c=I.shouldDirectEmbed(o),f=r[n],p=f.type==="matrix"&&!(f.props.properties.displayMatrixAsAccordion||s);e({minScrollableHeight:void 0}),setTimeout(()=>{var k,_,C;!c&&!s&&((k=a==null?void 0:a.setWidth)==null||k.call(a,N.DEFAULT_WIDTH_PX));const[m,b,y]=N.calculateFrameDimensions(u,d&&!s,c);c?(i(I.SprigEvent.SurveyHeight,{name:I.SprigEvent.SurveyHeight,contentFrameHeight:m,"survey.id":l}),i(I.SprigEvent.SurveyWidth,{name:I.SprigEvent.SurveyWidth,contentFrameWidth:b,"survey.id":l})):((_=a.setHeight)==null||_.call(a,m),e({minScrollableHeight:y}),!s&&p&&((C=a.setWidth)==null||C.call(a,b)))},100)},uploadingCardViewed:!1,uploadProgress:{},useDesktopPrototype:void 0,useMobileStyling:!1,userId:"",viewDocument:window.document,viewedCardCount:0,focusedQuestionId:null,setFocusedQuestionId:r=>e({focusedQuestionId:r})})),Ue=e=>!e.userId||e.meta&&e.meta.mode==="test"||e.isPreview||e.previewMode,It=async(e,t,r)=>{const{mode:n,userId:o,envId:i,apiURL:a,headers:s,viewDocument:l}=e,u=l.documentElement,d={mode:n,screenWidth:window.screen.width,screenHeight:window.screen.height,clientWidth:u.clientWidth,clientHeight:u.clientHeight,location:window.location.href,language:window.navigator.language},c={action:t,err:{message:`${r==null?void 0:r.name} - ${r==null?void 0:r.message}`,stack:r==null?void 0:r.stack},meta:d,vid:o,envId:i};(await I.sprigFetch(`${a}/sdk/1/errors`,{method:"POST",headers:Object.assign({"x-ul-error":window.btoa(`userleap-${Date.now()}-error`)},s),body:JSON.stringify(c)})).ok||console.warn("[Sprig] (ERR-444) Failed to report error to API",r)},Rr=({logoOnly:e=!1,style:t={}})=>x("svg",{alt:(e?"Powered by ":"")+"Sprig",fill:"none",height:"15",style:{display:"block",...t},viewBox:e?"79 0 31 15":"0 0 112 15",width:e?"35":"112",xmlns:"http://www.w3.org/2000/svg",children:[!e&&x("path",{d:"M0.648926 12.0181V2.8584H4.21631C6.0127 2.8584 7.25684 4.06445 7.25684 5.86084V5.87354C7.25684 7.66357 6.0127 8.88867 4.21631 8.88867H2.0708V12.0181H0.648926ZM3.86084 4.05811H2.0708V7.69531H3.86084C5.09229 7.69531 5.80957 7.02881 5.80957 5.87988V5.86719C5.80957 4.72461 5.09229 4.05811 3.86084 4.05811ZM11.6621 12.1514C9.63721 12.1514 8.39941 10.7993 8.39941 8.57764V8.56494C8.39941 6.34961 9.64355 4.99121 11.6621 4.99121C13.6743 4.99121 14.9185 6.34326 14.9185 8.56494V8.57764C14.9185 10.7993 13.6807 12.1514 11.6621 12.1514ZM11.6621 11.0024C12.8428 11.0024 13.5156 10.1011 13.5156 8.57764V8.56494C13.5156 7.03516 12.8428 6.14014 11.6621 6.14014C10.4751 6.14014 9.80859 7.03516 9.80859 8.56494V8.57764C9.80859 10.1074 10.4751 11.0024 11.6621 11.0024ZM17.6226 12.0181L15.7183 5.12451H17.1021L18.3398 10.4438H18.4414L19.8633 5.12451H21.1709L22.5928 10.4438H22.7007L23.9321 5.12451H25.2969L23.3989 12.0181H21.9834L20.5552 6.87646H20.4473L19.0254 12.0181H17.6226ZM29.334 12.1514C27.3154 12.1514 26.0967 10.7739 26.0967 8.59033V8.58398C26.0967 6.43213 27.3408 4.99121 29.2642 4.99121C31.1875 4.99121 32.3682 6.38135 32.3682 8.45068V8.93311H27.4805C27.5059 10.2534 28.2295 11.0215 29.3657 11.0215C30.248 11.0215 30.7749 10.5835 30.9399 10.228L30.9653 10.1772L32.292 10.1709L32.2793 10.228C32.0508 11.1357 31.0986 12.1514 29.334 12.1514ZM29.2705 6.12109C28.3311 6.12109 27.6201 6.76221 27.4995 7.94922H31.0034C30.8955 6.71777 30.2036 6.12109 29.2705 6.12109ZM34.0059 12.0181V5.12451H35.3833V6.16553H35.4849C35.7324 5.43555 36.3735 5.00391 37.2939 5.00391C37.5161 5.00391 37.7573 5.03564 37.897 5.06738V6.33691C37.6494 6.28613 37.4146 6.25439 37.1543 6.25439C36.1006 6.25439 35.3833 6.90186 35.3833 7.89844V12.0181H34.0059ZM41.9277 12.1514C39.9092 12.1514 38.6904 10.7739 38.6904 8.59033V8.58398C38.6904 6.43213 39.9346 4.99121 41.8579 4.99121C43.7812 4.99121 44.9619 6.38135 44.9619 8.45068V8.93311H40.0742C40.0996 10.2534 40.8232 11.0215 41.9595 11.0215C42.8418 11.0215 43.3687 10.5835 43.5337 10.228L43.5591 10.1772L44.8857 10.1709L44.873 10.228C44.6445 11.1357 43.6924 12.1514 41.9277 12.1514ZM41.8643 6.12109C40.9248 6.12109 40.2139 6.76221 40.0933 7.94922H43.5972C43.4893 6.71777 42.7974 6.12109 41.8643 6.12109ZM49.1133 12.1323C47.3804 12.1323 46.2568 10.7422 46.2568 8.57764V8.56494C46.2568 6.38135 47.3613 5.00391 49.1133 5.00391C50.0591 5.00391 50.8652 5.47363 51.2334 6.21631H51.3413V2.42041H52.7124V12.0181H51.3413V10.9326H51.2334C50.8335 11.688 50.0781 12.1323 49.1133 12.1323ZM49.5068 10.958C50.6558 10.958 51.3604 10.0503 51.3604 8.57764V8.56494C51.3604 7.09229 50.6494 6.18457 49.5068 6.18457C48.3516 6.18457 47.6597 7.08594 47.6597 8.56494V8.57764C47.6597 10.0566 48.3516 10.958 49.5068 10.958ZM61.98 12.1323C61.0151 12.1323 60.2598 11.688 59.8599 10.9326H59.7583V12.0181H58.3809V2.42041H59.7583V6.21631H59.8599C60.228 5.47363 61.0342 5.00391 61.98 5.00391C63.7319 5.00391 64.8364 6.38135 64.8364 8.56494V8.57764C64.8364 10.7422 63.7192 12.1323 61.98 12.1323ZM61.5928 10.958C62.7417 10.958 63.4336 10.0566 63.4336 8.57764V8.56494C63.4336 7.08594 62.7417 6.18457 61.5928 6.18457C60.4438 6.18457 59.7329 7.09229 59.7329 8.56494V8.57764C59.7329 10.0503 60.4438 10.958 61.5928 10.958ZM66.8867 14.4429C66.7153 14.4429 66.5122 14.4302 66.3345 14.4111V13.3257C66.4678 13.3447 66.6392 13.3511 66.7979 13.3511C67.439 13.3511 67.8262 13.0781 68.0293 12.3799L68.1309 12.0244L65.6299 5.12451H67.1152L68.8418 10.6343H68.9624L70.6826 5.12451H72.1299L69.5654 12.2847C68.9814 13.9287 68.2832 14.4429 66.8867 14.4429Z",fill:"black",fillOpacity:"0.7"}),x("path",{d:"M81.1088 6.63629C79.6878 6.32154 78.9672 5.76865 78.9672 4.99369C78.9672 4.19299 79.736 3.5886 80.7556 3.5886C81.8066 3.5886 82.5995 4.25285 82.5995 5.13336V5.20352H84.0518V5.13336C84.0518 3.52424 82.6405 2.30774 80.7693 2.30774C79.8676 2.30774 79.0414 2.58451 78.4433 3.08655C78.1463 3.33144 77.9077 3.63818 77.7448 3.98479C77.5818 4.33141 77.4984 4.70934 77.5005 5.09153C77.4946 5.44197 77.5675 5.78934 77.714 6.10857C77.8605 6.42779 78.0769 6.71092 78.3475 6.93752C78.8512 7.37584 79.5659 7.70024 80.4709 7.90299C81.9949 8.23898 82.7676 8.81054 82.7676 9.60094C82.7676 10.4576 81.9258 11.1032 80.813 11.1032C79.6571 11.1032 78.7854 10.3856 78.7854 9.43424V9.36408H77.3318V9.43424C77.3318 11.1167 78.8219 12.3847 80.7973 12.3847C81.7421 12.3847 82.6093 12.0983 83.2393 11.5769C83.5519 11.3237 83.8034 11.0048 83.9753 10.6433C84.1472 10.2818 84.2352 9.88702 84.2329 9.48766C84.2329 8.05875 83.1833 7.09907 81.1088 6.63629Z",fill:"black",fillOpacity:"0.7"}),x("path",{d:"M89.2394 4.68276C88.6963 4.67605 88.1596 4.79915 87.6751 5.04156C87.1905 5.28397 86.7725 5.63851 86.4566 6.07497V4.85204H85.0747V14.8479H86.4566V11.0356C86.7725 11.472 87.1906 11.8265 87.6751 12.0688C88.1596 12.3111 88.6963 12.434 89.2394 12.4272C91.3836 12.4272 93 10.7627 93 8.55495C93 6.34723 91.3836 4.68276 89.2394 4.68276ZM91.5608 8.84202C91.5057 9.41605 91.2512 9.95356 90.8406 10.3633C90.4299 10.773 89.8883 11.0296 89.3078 11.0896C88.5363 11.1669 87.8177 10.9461 87.2841 10.4692C86.7505 9.99222 86.4566 9.3106 86.4566 8.55495C86.4566 7.10159 87.5538 6.00546 89.0087 6.00546C89.7619 6.00546 90.4421 6.29124 90.9171 6.81002C91.407 7.34232 91.6357 8.06385 91.5608 8.84202Z",fill:"black",fillOpacity:"0.7"}),x("path",{d:"M109.95 4.85407V6.06349C109.298 5.18298 108.292 4.68286 107.153 4.68286C105.017 4.68286 103.406 6.31709 103.406 8.48426C103.406 10.6514 105.017 12.285 107.153 12.285C108.296 12.285 109.303 11.79 109.95 10.9185V11.1046C109.95 12.6101 108.993 13.5826 107.513 13.5826C106.513 13.5826 105.68 13.1494 105.284 12.424L105.264 12.3867H103.838L103.871 12.48C104.112 13.1892 104.583 13.8001 105.211 14.2179C105.841 14.6324 106.637 14.8512 107.513 14.8512C108.637 14.8512 109.594 14.4972 110.28 13.8285C110.967 13.1597 111.332 12.2194 111.332 11.1213V4.85407H109.95ZM109.175 10.3502C108.588 10.905 107.752 11.138 106.879 10.9887C106.361 10.8984 105.886 10.6475 105.523 10.2725C105.16 9.89751 104.927 9.41787 104.859 8.90328C104.736 8.03757 104.999 7.21756 105.581 6.655C106.069 6.19093 106.723 5.93643 107.401 5.94699C107.565 5.94713 107.729 5.96026 107.891 5.98625C108.946 6.15489 109.781 7.01609 109.921 8.0852C110.039 8.96507 109.766 9.78958 109.175 10.3502Z",fill:"black",fillOpacity:"0.7"}),x("path",{d:"M101.89 2.12378C101.63 2.06766 101.358 2.11486 101.133 2.25518C100.908 2.39551 100.747 2.61769 100.687 2.87371C100.626 3.12973 100.67 3.39902 100.809 3.62339C100.947 3.84775 101.17 4.00917 101.428 4.07275C101.503 4.08936 101.58 4.09778 101.657 4.09786C101.906 4.09824 102.146 4.0083 102.331 3.84518C102.517 3.68206 102.636 3.45714 102.664 3.21327C102.693 2.9694 102.63 2.72361 102.487 2.5227C102.344 2.32179 102.132 2.17981 101.89 2.12378Z",fill:"black",fillOpacity:"0.7"}),x("path",{d:"M100.967 10.934H99.7755C98.9285 10.934 98.4196 10.3644 98.4196 9.40982C98.4196 8.4791 98.8757 7.36945 99.8054 6.01778L99.8178 5.99976V5.61807L95.8571 5.06453C95.8585 4.90331 95.8162 4.74466 95.7346 4.60501C95.653 4.46536 95.5352 4.34979 95.3932 4.27027C95.0381 4.07718 94.6498 4.07717 94.3279 4.26383C94.1667 4.35799 94.035 4.4945 93.9476 4.65816C93.8602 4.82182 93.8205 5.00623 93.8328 5.19087C93.8452 5.37552 93.9092 5.55315 94.0176 5.70402C94.1261 5.85489 94.2748 5.97309 94.4472 6.04546L93.2151 12.258H94.5833L95.7196 6.35891L97.8593 6.7155C97.284 7.73439 96.9921 8.68442 96.9921 9.53919C96.9921 11.1168 97.9577 12.1498 99.5187 12.2496V12.258H102.346V4.87723H100.967V10.934Z",fill:"black",fillOpacity:"0.7"})]}),jr=({forceBrandedLogo:e,marketingUrlLink:t})=>x("div",{className:e?"yellow-footer-logo":"",style:{marginTop:"4px",marginBottom:"4px"},children:x("a",{href:t,rel:"noreferrer",target:"_blank",children:x("div",{style:{display:"flex"},children:[x(Rr,{logoOnly:!1}),e&&x(Qe,{style:{display:"block",margin:"auto 0 auto 4px",transform:"rotateY(0deg) rotate(-45deg)"}})]})})}),Lr=({marketingUrlLink:e})=>x("a",{dir:"ltr",href:e,rel:"noreferrer",target:"_blank",children:x("div",{className:"thank-you-card-link",children:[x("div",{className:"sprig-box-logo",children:x(Rr,{logoOnly:!0,style:{margin:"auto"}})}),x("div",{children:x("p",{children:["Capture insights about your own product",x(Qe,{style:{display:"inline-flex",marginInlineStart:"4px",verticalAlign:"middle"}})]})})]})}),Ur=({marketingUrl:e,slugName:t,surveyId:r,forceBrandedLogo:n})=>`${e}?utm_source=survey_branding&utm_medium=website&utm_campaign=${t}&utm_content=${r}${n?"&utm_term=poweredby_pill":""}`,xn=()=>{var k;const{border:e,cards:t,forceBrandedLogo:r,headers:n,index:o,marketingUrl:i,showSurveyBrand:a,slugName:s,surveyId:l,viewedCardCount:u}=G(_=>({border:_.border,cards:_.cards,forceBrandedLogo:_.forceBrandedLogo,headers:_.headers,index:_.index,marketingUrl:_.marketingUrl,showSurveyBrand:_.showSurveyBrand,slugName:_.slugName,surveyId:_.surveyId,viewedCardCount:_.viewedCardCount})),d=Z(null),c=t.filter(_=>_.type!=="uploading"&&_.type!=="thanks"),f=((_,C)=>{const U=new Set(["thanks","uploading"]);if(C>=_.length||C<0||U.has(_[C].type))return 0;const w=_.filter(h=>!U.has(h.type));if(C===w.length-1)return 1;const v={[w.length-1]:1,[-1]:0};for(let h=w.length-2;h>=C;h--){const R=w[h],E=bn(h,R.props.routingOptions);if(E.length===0){v[h]=v[h+1]+1;continue}let j=0,A=mn(R);if(A===null)return w.length-1-C;for(let H=0;H<E.length&&A.length!==0;H++){const{comparator:T,target:Ce,value:de}=E[H],pe=A.filter(O=>{const $=hn({value:O},R.type,O),fe=Er(O,R.type);return!($&&T==="answered"||fe&&T==="partial"||!$&&!fe&&T==="skipped"||T==="given_up"&&vn(O)&&O.taskStatus==="given.up"||$&&R.type==="open"&&(T==="contains"||T==="notcontains")||$&&gn(T)&&Je[T](O,de))});if(pe.length<A.length){const O=parseInt(String(Ce),10);if(O!==-1&&O<=h||O>=w.length)return w.length-1-C;j=Math.max(v[O]+1,j)}A=pe}A.length>0&&(j=Math.max(v[h+1]+1,j)),v[h]=j}return v[C]})(t,o),p=u+1,m=p/(p+f),b=Ur({marketingUrl:i,slugName:s,surveyId:l,forceBrandedLogo:r});M(()=>{d.current&&(d.current.style.width=100*m+"%")},[m]);const y=((k=t[o])==null?void 0:k.type)==="thanks";return x("footer",{className:"ul-footer "+(n["userleap-platform"]==="link"?"ul-footer__link":""),children:y&&r?x(Lr,{marketingUrlLink:b}):x(V,{children:[c.length>1&&x("div",{className:"ul-progress-bar-container ul-progress-bar-container__footer",children:x("div",{className:"ul-progress-bar-current",ref:d,style:{border:`1px solid ${e||"#000"}`}})}),a?x(jr,{forceBrandedLogo:r,marketingUrlLink:b}):null]})})},yn=/<piped-value\b([^>]*)>.*?<\/piped-value>/gis,Rt=["questionHtml","captionHtml","footerHtml","richTextBody"],Tr=e=>!!e.props&&typeof e.props=="object"&&"properties"in e.props,Te=e=>!!e.props&&typeof e.props=="object"&&"options"in e.props&&Array.isArray(e.props.options),jt=e=>["string","number"].includes(typeof e),Lt=e=>e.length===0?"":e.length===1?e[0]:e.join(", "),kn=e=>{var r,n;const t=(o=>o!=null&&typeof o=="object"&&"value"in o)(e)?e.value:void 0;if(t!=null){if(e.type==="multipleselect"&&Te(e)&&(o=>!!o&&typeof o=="object"&&!Array.isArray(o))(t)){const o=e.secondaryValue??null,i=e.props.options.filter(a=>t[String(a.id)]===!0).map(a=>{var s;return a.label+((s=o==null?void 0:o[String(a.id)])!=null&&s.userText?`: ${o[String(a.id)].userText}`:"")});return i.length?Lt(i):"No options selected"}if(e.type==="multiplechoice"&&typeof t=="object"&&t!==null){const o=e.secondaryValue??null,i=Object.keys(t)[0];if(i){const a=e.props.options.find(s=>String(s.id)===i);return(a==null?void 0:a.label)+((r=o==null?void 0:o[i])!=null&&r.userText?`: ${(n=o==null?void 0:o[i])==null?void 0:n.userText}`:"")}}if(e.type==="matrix"&&Te(e)&&(o=>{if(!Tr(o))return!1;const i=o.props.properties;return!!i&&typeof i=="object"&&"matrixColumn"in i})(e)){const o=e.props.options,i=e.props.properties.matrixColumn,a=[];for(const[s,l]of Object.entries(t)){const u=o.find(m=>String(m.id)===s),d=(u==null?void 0:u.label)??s,c=jt(l)?String(l):JSON.stringify(l),f=i.find(m=>m.value===c),p=(f==null?void 0:f.label)??c;a.push(`${d}: ${p}`)}return a.join("; ")}if(e.type==="rankorder"&&Te(e)){const o=e.props.options.reduce((a,s)=>(a[String(s.id)]=s.label,a),{}),i=[];for(const[a,s]of Object.entries(t)){const l=o[a];l&&(i[s-1]=l)}return Lt(i)}if(jt(t)){const o=String(t).replaceAll(/[\u200B-\u200D\uFEFF]/g,"").trim();return o===""?void 0:o}try{return JSON.stringify(t)}catch{return String(t)}}},Ut=(e,t)=>{const r=new RegExp(`${t}="([^"]*)"`,"i").exec(e);return(r==null?void 0:r[1])??null},wn=(e,t)=>{if(e==null)return e;let r=!1;const n=e.replace(yn,(o,i)=>{r=!0;const a=Ut(i,"answer-id"),s=Ut(i,"fallback-text")??"";if(!a)return s;const l=a.startsWith("attr-")?a:Number(a);if(Object.hasOwn(t,l)){const u=t[l];return String(u)}return s});return r?n:e},Ar=(e,t)=>{const r={};if(t)for(const[n,o]of Object.entries(t))typeof o=="string"?r[`attr-${n}`]=o:o!=null&&(r[`attr-${n}`]=JSON.stringify(o));for(const n of e){const o=kn(n);o!==void 0&&(r[n.name]=o)}return r},Cn=()=>{const{border:e,cards:t,index:r,focusedQuestionId:n,isConversationalUI:o}=G(s=>({border:s.border,cards:s.cards,index:s.index,focusedQuestionId:s.focusedQuestionId,isConversationalUI:s.isConversationalUI})),{totalQuestions:i,fraction:a}=Y(()=>{var d;const s=t.filter(c=>c.type!=="uploading"&&c.type!=="thanks"),l=s.length;if(l<=1)return{totalQuestions:l,fraction:0};if(((d=t[r])==null?void 0:d.type)==="thanks")return{totalQuestions:l,fraction:1};let u=0;return u=o?r+1:s.findIndex(c=>c.name===n),{totalQuestions:l,fraction:u/(l+1)}},[t,r,n,o]);return i<=1?null:x("div",{className:"ul-progress-bar-container ul-progress-bar-container__header",children:x("div",{className:"ul-progress-bar-current",style:{width:100*a+"%",border:`1px solid ${e??"#000"}`}})})},Sn=we(()=>Promise.resolve().then(()=>require("./conversational-ui-loLw6bPe.cjs"))),En=we(async()=>({default:(await Promise.resolve().then(()=>require("./index-DmjRxajT.cjs"))).PageCard})),In=()=>{const{answers:e,border:t,cards:r,close:n,configureExitOnOverlayClick:o,destroy:i,endCard:a,eventEmitFn:s,fontFamily:l,headers:u,isConversationalUI:d,index:c,minScrollableHeight:f,next:p,previewMode:m,productConfig:b,seen:y,showStripes:k,studyType:_,surveyId:C,surveyVisitorAttributes:U,update:w,useMobileStyling:v,viewDocument:h}=G(S=>({answers:S.answers,border:S.border,cards:S.cards,close:S.close,configureExitOnOverlayClick:S.configureExitOnOverlayClick,destroy:S.destroy,endCard:S.endCard,eventEmitFn:S.eventEmitFn,fontFamily:S.fontFamily,headers:S.headers,index:S.index,isConversationalUI:S.isConversationalUI,previewMode:S.previewMode,productConfig:S.productConfig,minScrollableHeight:S.minScrollableHeight,next:S.next,seen:S.seen,showStripes:S.showStripes,studyType:S.studyType,surveyId:S.surveyId,surveyVisitorAttributes:S.surveyVisitorAttributes,update:S.update,useMobileStyling:S.useMobileStyling,viewDocument:S.viewDocument})),R=Z(null),E=Z(!1),j=Z(!1),A=u["userleap-platform"],{props:H,type:T,name:Ce}=r[c];M(()=>{if(window.Sprig)return window.Sprig.trackHistory=S=>G.getState().trackHistory(S),()=>{window.Sprig.trackHistory=void 0}},[]),M(()=>{R.current&&(R.current.classList.contains("ul-app--visible")||R.current.classList.add("ul-app--visible"),!E.current&&s&&(E.current=!0,s(I.SprigEvent.SurveyAppeared,{name:I.SprigEvent.SurveyAppeared,"survey.id":C})))},[s,C]),M(()=>{const S=()=>{h.visibilityState==="visible"&&(y(),h.removeEventListener("visibilitychange",S))};return h.addEventListener("visibilitychange",S),S(),()=>{h.removeEventListener("visibilitychange",S)}},[y,h]);const de=se(async()=>{if(!h)return;const S=h.getElementById("conversational-ui-styles");if(!d&&S)return S.remove(),void(j.current=!1);if(d&&!S){const q=await Promise.resolve().then(()=>require("./conversational-styles-DLzzNPKy.cjs"));N.setSurveyStyles({document:h,elementId:"conversational-ui-styles",styleString:q.default}),requestAnimationFrame(()=>{w()}),j.current=!0}},[d,h,w]);M(()=>{w()},[c,w]),M(()=>{o(()=>n())},[n,o]),M(()=>{de()},[de,h]);const pe=Y(()=>I.groupCards(r,c),[r,c]),O=Ar(r,U),$=se(S=>{p({data:S,completeSurvey:()=>i(N.APP_ID),endCard:a}),N.resetScrollPosition(h)},[p,i,a,h]);if(e){for(const S of e)if(S.questionId===Ce){let q;if(T==="multiplechoice"){const Q=H.options.find(({value:Se})=>Se===S.value);if(!Q)break;q={[Q.id]:Q.value}}else q=S.value;$({value:q,type:T,questionId:S.questionId});break}}const fe=!v&&((b==null?void 0:b.framePosition)==="center"||(b==null?void 0:b.desktopDisplay)==="center-modal"||((b==null?void 0:b.placement)||"").includes("center"));return d&&!j.current&&I.isLongFormSurvey(_)?null:x("div",{className:ve("ul-app",I.shouldDirectEmbed(u)?"ul-app--visible":"ul-app--overlay"),dir:"auto",id:N.APP_ID,onClick:S=>{var Ke;const q=window.sprigAPI,Q=S.target;if(!q||!Q)return;const Se=[Q,Q.parentElement];for(const _e of Se)if(((Ke=_e==null?void 0:_e.tagName)==null?void 0:Ke.toLowerCase())==="a"){S.preventDefault();try{const oe=new URL(_e.href);oe.protocol!=="http:"&&oe.protocol!=="https:"||(q==null||q.openUrl(oe.toString()))}catch(oe){console.error(oe)}return}},ref:R,style:{"--theme":t,...l?{fontFamily:l.replace(";","")}:{},...fe?{position:"relative"}:{}},children:x("div",{className:"ul-app__container",children:x("div",{className:ve(kr("ul-card__container",v,_)),style:{..._!=="feedbackButton"||(b==null?void 0:b.desktopDisplay)==="center-modal"?{borderColor:t}:{},...(b==null?void 0:b.desktopDisplay)==="slider"?{margin:"0px"}:{}},children:x("div",{className:"sprig-container",style:{minHeight:f},children:[k&&x("div",{className:"ul-header__container",dir:"ltr",children:x("div",{className:"ul-header",children:"For development purposes only"})}),m&&x("div",{className:"ul-header__container",dir:"ltr",children:x("div",{className:"ul-header",children:"Preview Mode: Response will not be recorded."})}),I.isLongFormSurvey(_)&&x(Cn,{}),x("div",{className:ve(an("ul-card-main-content",A)),children:x(ee,d?{fallback:null,children:x(Sn,{cards:r,next:$,previousResponses:O})}:{fallback:null,children:x(En,{cards:pe,next:$,previousResponses:O})})}),!I.isLongFormSurvey(_)&&x(xn,{})]})})})})},Hr=()=>MediaRecorder.isTypeSupported("video/webm")?"video/webm":"video/mp4",Tt=e=>{const t={audioBitsPerSecond:128e3,videoBitsPerSecond:25e5,mimeType:Hr()};return new MediaRecorder(e,t)},At=(e,t,r)=>{r[t]=[],e.ondataavailable=function(n){r[t].push(n.data)},e.currentMediaRecordingUid=t,e.start()};function Ht(e,t,r,n,o,i){if(e&&e.state!=="inactive"){const{"begin.callback":a}=n,s=e.currentMediaRecordingUid;if(!s)return;a&&a(s),e.onstop=()=>async function(l,u,d,c,f,p,m){const b=G.getState().viewDocument,{"upload.callback":y,"progress.callback":k}=c,_={mediaType:d,updatedAt:new Date().toISOString(),mediaRecordingUid:f,...c["passthrough.data"]},C=await(async(h,R)=>{var j;const E=await fetch(R,{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)});if(E.ok){const A=await E.json();return(j=A==null?void 0:A.upload)==null?void 0:j.url}return null})(_,l);if(!C)return void(y&&y(null,{message:"failed to get upload url"}));const U=new Blob(m,{type:Hr()});if(!b.defaultView)return;const w=new b.defaultView.File([U],`recording video ${Date.now()}`),v=p.createUpload({endpoint:C,file:w,chunkSize:5120});v.on("error",h=>{y&&y(null,h)}),v.on("progress",h=>{k&&k(f,h)}),v.on("success",()=>{y&&y(f,!0)})}(t,0,r,n,s,o,i),e.stop()}}const Rn={state:{chunks:{}},stopRecording(e){const{uploadApiEndpoint:t,avRecorder:r,screenRecorder:n,UpChunk:o}=this.state,i=this.state.avStream&&this.state.avStream.getVideoTracks().length>0?"video":"audio";this.state.chunks&&t&&o&&(r!=null&&r.currentMediaRecordingUid&&Ht(r,t,i,e,o,this.state.chunks[r==null?void 0:r.currentMediaRecordingUid]),n!=null&&n.currentMediaRecordingUid&&Ht(n,t,"screen",e,o,this.state.chunks[n==null?void 0:n.currentMediaRecordingUid]))},handleCancelledStream(e){const t=e.getVideoTracks(),r=e.getAudioTracks();let n=t.length&&t[0];n=n||r.length&&r[0],n&&n.addEventListener("ended",()=>{[this.state.avRecorder,this.state.screenRecorder].map(o=>{o&&(o.state==="recording"&&o.stop(),o.stream.getTracks().map(i=>{i.readyState==="live"&&i.stop()}))}),Object.assign(this.state,{avStream:null,captureStream:null,avRecorder:null,screenRecorder:null})})},taskDurationMillisecond(){return this.state.startTime?new Date().getTime()-this.state.startTime.getTime():0},setUpChunk(e){this.state.UpChunk=e},configure(e,t){Object.assign(this.state,t),this.state.uploadApiEndpoint=`${t.apiURL}/2/environments/integrations/upload`,this.state.chunks={},e.on("permission.status",this.permissionStatusCallback.bind(this)),e.on("av.permission",async r=>{this.avPermissionCallback(r)}),e.on("begin.recording",this.beginRecordingCallback.bind(this)),e.on("start.task",this.startTaskCallback.bind(this)),e.on("screen.permission",async r=>{this.screenPermissionCallback(r)}),e.on("finish.task",async r=>{this.finishTaskCallback(r)})},async avPermissionCallback(e){var n,o,i;const{"stream.ready":t,"permission.descriptors":r}=e;try{(n=this.state.avStream)!=null&&n.active&&(this.state.avStream.getTracks().map(a=>a.readyState==="live"&&a.stop()),((o=this.state.captureStream)==null?void 0:o.getAudioTracks().length)===1&&this.state.captureStream.removeTrack(this.state.captureStream.getAudioTracks()[0])),this.state.avStream=await navigator.mediaDevices.getUserMedia({video:r.includes("camera"),audio:!0}),((i=this.state.captureStream)==null?void 0:i.getAudioTracks().length)===0&&this.state.captureStream.addTrack(this.state.avStream.getAudioTracks()[0]),this.handleCancelledStream(this.state.avStream)}catch(a){return console.warn("Error: failed to get permissions: "+a),void(t&&t(null,null))}t&&t(this.state.avStream,this.state.captureStream)},async screenPermissionCallback(e){const{"screen.permission.requested":t,"stream.ready.callback":r}=e;t==null||t(!0);try{this.state.captureStream=await navigator.mediaDevices.getDisplayMedia({video:!0,cursor:"always",displaySurface:"browser",preferCurrentTab:!0})}catch(n){return t==null||t(!1),console.warn("Error: failed to get permissions: "+n),void(r&&r(null,null))}t==null||t(!1),this.state.avStream&&this.state.avStream.getAudioTracks().length>0&&this.state.captureStream.addTrack(this.state.avStream.getAudioTracks()[0]),this.handleCancelledStream(this.state.captureStream),r&&r(this.state.avStream||null,this.state.captureStream)},beginRecordingCallback(e){const{"recording.media.types":t,"start.recording.callback":r=()=>{}}=e;if(!t)return;const n=[];if(t.includes("video")&&this.state.avStream){this.state.avRecorder=Tt(this.state.avStream);const o=I.v4();At(this.state.avRecorder,o,this.state.chunks),n.push(o)}if(t.includes("screen")&&this.state.captureStream){this.state.screenRecorder=Tt(this.state.captureStream);const o=I.v4();At(this.state.screenRecorder,o,this.state.chunks),n.push(o)}n&&r&&r(n)},async finishTaskCallback(e){const{"current.index":t,"task.response":r,"task.complete.callback":n}=e;await this.stopRecording(e),n&&n(this.taskDurationMillisecond()),this.state.cards&&this.state.hasEndCard!==void 0&&this.lookAheadAndStopStream(t,r,this.state.cards,this.state.hasEndCard)},startTaskCallback(){this.state.startTime=new Date},permissionStatusCallback(e){var n;const{"permission.status.callback":t}=e,r=this.state.avStream;t&&t(r,!!r&&(r==null?void 0:r.getVideoTracks().length)>0,!!((n=this.state.captureStream)!=null&&n.active),this.state.captureStream)},lookAheadAndStopStream(e,t,r,n){const{avRecorder:o,screenRecorder:i}=this.state,{allResponses:a}=G.getState(),s=Ir({cards:r,index:e,hasEndCard:n,allResponses:a});s!==null&&r[s].type==="recordedtask"||[o,i].map(l=>{l&&(l.state==="recording"&&l.stop(),l.stream.getTracks().map(u=>{u.readyState==="live"&&u.stop()}))})}},be=Object.create(Rn);Object.freeze(be);const jn=({mode:e=null,viewWindow:t,viewDocument:r,trackPageViewUrl:n})=>{const o=r.documentElement;let i;try{i=t.parent.location.href}catch{i=t.location.href}return{mode:e,sw:t.screen.width,sh:t.screen.height,cw:o.clientWidth,ch:o.clientHeight,p:n??i,l:t.navigator.language}},Ln={configure:function(e,t=!0){var _;const{answers:r,apiURL:n,endCard:o,eventEmitFn:i,fontFamilyURL:a,frame:s,previewKey:l,viewDocument:u,viewWindow:d}=e,c=I.shouldDirectEmbed(e.headers)?e.frame:u.body,f=e.UpChunk||window.UpChunk,p=I.eventEmitter,m=((C,U)=>{const w=[...C],v=new Set(["videovoice","recordedtask"]);return C.some(h=>v.has(h.type))&&w.push({name:-2,props:{routingOptions:[]},type:"uploading"}),U&&w.push({name:-1,props:{routingOptions:[]},type:"thanks"}),w})(e.cards,!!o);be.configure(p,{cards:m,hasEndCard:!!o,apiURL:n,UpChunk:f});const b=e.layout==="conversational";G.setState({addResponseGroupMeta:e.addResponseGroupMeta,apiURL:n,answers:r,avatars:e.avatars,border:e.border,index:e.startingQuestionIdx||0,isConversationalUI:b,cards:m,configureExitOnOverlayClick:e.configureExitOnOverlayClick,customMetadata:e.customMetadata,enableCspTrustedTypes:e.enableCspTrustedTypes,endCard:e.endCard,envId:e.envId,eventEmitFn:i,fontFamily:e.fontFamily,forceBrandedLogo:e.forceBrandedLogo,frame:s,headers:e.headers,hasViewedEmbed:!1,isPreview:e.isPreview,layout:e.layout,marketingUrl:"https://sprig.com",meta:jn({mode:e.mode,viewWindow:d,viewDocument:u,trackPageViewUrl:e.trackPageViewUrl}),mode:e.mode,previewKey:l,previewMode:e.previewMode,productConfig:e.productConfig,recorder:be,recorderEventEmitter:p,responseGroupUid:e.responseGroupUid,showStripes:e.showStripes,showSurveyBrand:e.showSurveyBrand,slugName:e.slugName,startingQuestionIdx:e.startingQuestionIdx,styleNonce:e.styleNonce,studyType:e.studyType,surveyId:e.surveyId,surveyVisitorAttributes:e.surveyVisitorAttributes,tabTitle:e.tabTitle,uploadingCardViewed:!1,uploadProgress:{},useMobileStyling:e.useMobileStyling,useDesktopPrototype:e.useDesktopPrototype,userId:e.userId,viewDocument:e.viewDocument,visitorAttributes:e.visitorAttributes,viewedCardCount:e.startingQuestionIdx||0});const{head:y}=u;if(N.setSurveyStyles({document:u,elementId:"sprig-style",styleString:`html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ol,ul{padding-inline-start:1em}.ul-loading-spinner-container{font-size:1.8rem;flex-grow:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.ul-loading-spinner{display:inline-block;position:relative;width:6rem;height:6rem}.ul-loading-spinner div{box-sizing:border-box;display:block;position:absolute;width:80%;height:80%;margin:5px;border:5px solid #152e3e;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:#152e3e transparent transparent transparent}.ul-loading-spinner .first{animation-delay:-.45s}.ul-loading-spinner .second{animation-delay:-.3s}.ul-loading-spinner .third{animation-delay:-.15s}@keyframes lds-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-in-transition{animation:fadeIn .4s ease-in}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.ul-card{flex:1 1 auto;border-radius:2px;display:flex;flex-direction:column;font-size:17px;line-height:19px;text-align:start;min-width:200px;justify-content:center;animation:enable-transitions 0s .3s forwards;min-height:0}@keyframes enable-transitions{to{transition:opacity .2s ease-in-out}}.ul-focus-transitions-active .ul-card,.ul-card--with-transitions{transition:opacity .2s ease-in-out}.ul-card__container--desktop{border:2px solid #fff;box-shadow:0 0 15px #00000026;margin:15px}.ul-card__container--mobile{border-width:0;box-shadow:0 0 5px #00000040;margin-top:5px}.ul-card__container--desktop_longFormSurvey,.ul-card__container--mobile_longFormSurvey{margin:0}.sprig-container{display:flex;flex-direction:column;width:100%;height:fit-content;flex:1 1 auto;min-height:0;justify-content:center}.ul-card__container{background:#fff;border-radius:6px;display:flex;flex-direction:column;flex-grow:1;flex:1 1 auto;font-size:17px;line-height:23px;padding:0;min-height:0;position:relative;text-align:center;word-break:normal;overflow:auto}.ul-card__container--desktop_feedbackButton{box-shadow:unset}.ul-card-vertical__button-wrapper{flex-direction:column;align-items:center}.ul-card__button-wrapper{margin-top:4px;display:flex;gap:16px;justify-content:center;align-self:stretch}.sprig-question-footer-container{align-items:center;width:100%;height:fit-content;display:flex;flex-direction:column;padding:12px 20px 0}.long-form-question-footer-container{position:fixed;bottom:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;overflow:visible;z-index:1000;pointer-events:none;padding:32px}.long-form-question-footer-container--mobile{background-color:#fff;border-top:1px solid #e6e6e6;padding:16px 24px}.long-form-question-footer-container-center{justify-content:center}.long-form-question-footer-container .long-form-question-footer-container-logo{width:auto;pointer-events:auto}.long-form-question-footer-container-center .long-form-question-footer-container-logo{margin-left:0}.long-form-question-footer-container .long-form-question-footer-container-actions{display:flex;gap:8px;pointer-events:auto}.long-form-question-footer-container .long-form-question-footer-container-actions .long-form-button{display:flex;justify-content:center;align-items:center;gap:8px;padding:12px;border-radius:8px;height:40px;width:40px}.long-form-question-footer-container .long-form-question-footer-container-actions .long-form-button .long-form-button-text-container{display:flex;align-items:center}.ul-rich-text-body{min-height:2em}.ul-rich-text-body,.ul-rich-text-body p{margin-top:10px;margin-bottom:10px}.ul-rich-text-body li{margin:5px 0}.ul-rich-text-body p,.ul-rich-text-body li{font-size:15px;line-height:130.35%;letter-spacing:.02em;color:#343442;text-align:start;white-space:pre-line}.ul-rich-text-body:last-child,.ul-rich-text-body li:last-child{margin-bottom:15px}.ul-card-main-content__link,.ul-card-main-content__email,.ul-card-main-content__web,.ul-card-main-content__android,.ul-card-main-content__ios{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;z-index:2;height:fit-content}.sprig-border-bottom{border-bottom:1px solid rgba(0,0,0,.1)}.sprig-border-top{border-top:1px solid rgba(0,0,0,.1)}.question-header-container{z-index:1}.sprig-header-container{padding:16px}.question-header-button-container{display:grid;grid-template-columns:97fr 3fr;align-items:center;justify-content:space-between;width:100%;height:fit-content}.ul-card--thanks-content .question-header-button-container{justify-content:center}.sprig-question-body{padding:0 20px;min-height:0;flex-shrink:1;overflow:auto;position:relative;align-self:stretch;width:100%}.sprig-stretch{align-self:stretch}.ul-question{color:#343442;display:block;font-size:17px;line-height:125%;font-weight:500;cursor:default;text-align:start}.ul-question ol,.ul-question ul,.ul-caption ol,.ul-caption ul{margin-left:1em}.ul-caption{flex:1 0 auto;font-size:14px;line-height:130.35%;letter-spacing:.02em;color:#6c6c6e;text-align:start;margin-top:4px}.ul-card__choices{margin:5px 0 0;flex:1 0}.choice--mobile{border:2px solid #e6e6e6}.choice--desktop{border:1px solid #e6e6e6}.choice{align-items:flex-start;color:#262136;cursor:pointer;display:flex;justify-content:flex-start;flex-direction:column;box-sizing:border-box;border-radius:3px;margin-bottom:7px;font-size:15px;line-height:20px;padding:10px 20px 10px 15px;background-color:#00000003}.choice--desktop:hover,.choice--desktop:active,.choice--mobile:active{background-color:#0000000d}.choice-label-container{align-items:center;display:flex;flex-direction:row;flex:0 0 fit-content;gap:15px;height:fit-content;justify-content:flex-start;width:100%}.choice-text-entry-container{width:100%;height:fit-content;flex:0 1 fit-content;overflow:hidden}.choice .choice-text-input--mobile{max-height:63px}.choice .choice-text-input--desktop{max-height:150px}.choice .choice-text-input{box-sizing:border-box;background-color:transparent;color:#343442;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;min-height:20px;max-height:60px;padding:0;margin-top:8px;resize:none;width:100%;font-size:14px;line-height:20px;outline:none;border:none;overflow-wrap:break-word}.choice .choice-text-input::placeholder{color:#6c6c6e80}.ul-thanks-check{text-align:center;margin-bottom:20px}.ul-card--thanks-content{padding:20px 0 10px}.ul-card--thanks .ul-question{padding-top:0;text-align:center}.ul-card--thanks .ul-caption{padding-top:0;text-align:center;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-lines:no-limit}.ul-card--uploading .ul-question{padding-top:15px;text-align:center}.ul-card--uploading .ul-caption{padding-top:5px;text-align:center;overflow-wrap:break-word}.select-checkbox{height:16px;width:16px;display:flex;box-sizing:border-box;background-color:"transparent";align-items:center;justify-content:center;border-radius:4px;border:1px solid #b0b5b7;flex-shrink:0}.select-radio{height:16px;width:16px;border-radius:16px;border:1px solid #323232;display:flex;box-sizing:border-box;box-shadow:inset 2px 2px #0000001a;background-color:"transparent";align-items:center;justify-content:center}.footer{width:100%;margin-top:12px;font-size:12px;line-height:12px;color:#000000b3}[class^=CenteredSurveyLayout] .ul-header__container,[class^=QuestionConceptTestLayout] .ul-header__container,.ul-websurvey-frame .ul-card__container,.ul-websurvey-frame-mobile .ul-card__container{margin-bottom:unset}[class^=CenteredSurveyLayout] .ul-card__container,[class^=QuestionConceptTestLayout] .ul-card__container,.ul-websurvey-frame .ul-card__container,.ul-websurvey-frame-mobile .ul-card__container{align-self:center;box-shadow:unset;border-radius:unset;border:none!important;position:unset;width:100%}@media only screen and (min-height: 600px) and (width: 600px){.ul-card{position:relative;top:-20px}}.ul-vertical-centered-container{display:flex;flex-direction:column;align-items:center;align-self:stretch}.sprig-accordion{width:100%;margin-bottom:8px}.sprig-accordion-body{width:100%;overflow:hidden}.sprig-accordion-header-container{background:transparent;border:none;display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;cursor:pointer;margin:8px 0 0;padding:0;font-family:inherit}.sprig-header-label-container{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;flex:1 1 0}.sprig-header-label{color:#343442;font-size:15px;font-weight:590;line-height:21px;text-align:start;overflow:hidden}.sprig-check-background{flex:0 0 16px;height:16px;width:16px;border-radius:8px;margin-right:8px;background-color:#efefee;display:flex;align-items:center;justify-content:center}.sprig-check{height:9px;width:9px;margin-left:-1px}.sprig-check path{stroke:#506067;stroke-width:1.5}.sprig-caret{height:20px;width:20px;transition-property:transform}.sprig-caret path{stroke:#000}.ul-card-longform__submit-button-container{display:flex;justify-content:flex-end}.ul-card-longform__submit-button-container .ul-card-longform__submit-button{display:flex;flex-direction:row;align-items:center;white-space:nowrap;gap:4px;border-radius:8px;color:#fff;cursor:pointer}.ul-card-longform__submit-button-container .ul-card-longform__submit-button:disabled{opacity:.5;cursor:not-allowed}.ul-card-list-container--longform{display:flex;flex-direction:column;gap:2rem;width:100%;align-items:center;padding-block-start:calc(40vh - 100px);padding-block-end:calc(50vh - 100px);height:auto}.ul-card-list-container--longform:has(.ul-card-scroll-wrapper:nth-child(2)){gap:1rem;padding-block-start:40px}@media (min-height: 1200px){.ul-card-list-container--longform{padding-block-start:calc(50vh - 100px)}}@media (max-width: 600px){.ul-websurvey-frame-mobile.long-form-survey>.ul-websurvey-sidebar-mobile{padding-top:0}.ul-card-list-container--longform .ul-card-scroll-wrapper:last-child{padding-bottom:80px}.ul-card-list-container--longform:has(.ul-card-scroll-wrapper:nth-child(2)){padding-block-start:80px}}.ul-card-scroll-wrapper{width:100%;max-width:100vw;position:relative;display:flex;justify-content:center}.ul-card--unfocused{opacity:.3;transition:opacity .3s ease-in-out}.ul-consent-legal__name-input--mobile{border:2px solid #e6e6e6}.ul-consent-legal__name-input--desktop{border:1px solid #e6e6e6}.ul-consent-legal__name-input{background:#00000003;box-sizing:border-box;color:#343442;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;padding:10px 20px 10px 15px;border-radius:3px;font-size:15px;line-height:20px;margin-bottom:7px;width:100%}.ul-consent-legal__name-input::placeholder{color:#6c6c6e80}.ul-consent-legal__name-input:focus{outline:none;background:#fff}.ul-consent-legal__name-input--desktop:hover:not(:focus){background-color:#0000000d}.ul-card__consent-legal .choice{font-size:15px;padding:10px 15px;background-color:#00000003}.ul-card__consent-legal .choice--desktop:hover,.ul-card__consent-legal .choice--desktop:active,.ul-card__consent-legal .choice--mobile:active{background-color:#0000000d}.ul-card--likert__numbers{align-items:center;border-radius:5px;display:flex;flex-direction:row;flex:1 0;justify-content:center;margin:5px 0 0}.ul-card--likert__numbers>button{padding:unset}.likert-number--mobile{border:2px solid #e6e6e6}.likert-number--mobile:not(:first-child){margin-inline-start:-2px}.likert-number--desktop{border:1px solid #e6e6e6}.likert-number--desktop:not(:first-child){margin-inline-start:-1px}.likert-number{align-items:center;cursor:pointer;display:flex;justify-content:center;flex:1 0;background-color:#00000003;font-size:18px;line-height:24px;height:67px}.likert-number:first-child{border-start-start-radius:5px;border-end-start-radius:5px}.likert-number:last-child{border-start-end-radius:5px;border-end-end-radius:5px}.likert-number:active,.likert-number--desktop:hover{background-color:#0000000d;font-weight:500}.likert-star--mobile:not(:first-child){margin-inline-start:-2px}.likert-star--desktop:not(:first-child){margin-inline-start:-1px}.likert-star{align-items:center;cursor:pointer;display:flex;justify-content:space-between;flex:1 0;color:transparent;font-size:18px;line-height:24px;height:67px;background:unset;border:unset}.likert-smiley--mobile:not(:first-child){margin-inline-start:-2px}.likert-smiley--desktop:not(:first-child){margin-inline-start:-1px}.likert-smiley{align-items:center;cursor:pointer;display:flex;justify-content:space-between;flex:1 0;color:transparent;line-height:24px;height:67px;background:unset;border:unset}.likert-smiley>svg{margin:0 auto}.likert-smiley circle:not(:first-child){fill-opacity:1}.ul-card--likert__labels{align-items:center;color:#262136;display:flex;flex-direction:row;flex:1 0;font-weight:500;font-size:13px;line-height:15px;justify-content:space-between;margin:7px 0 10px}.ul-card--likert__labels>span:last-child{margin-left:auto;flex:1 1 auto;min-width:0;text-align:right}.ul-card--matrix_grid{display:grid;grid-template-columns:max-content repeat(var(--numColumns),minmax(107px,1fr));grid-template-rows:repeat(var(--numRows),min-content);margin:0 auto;row-gap:4px;width:max-content}.ul-card--matrix_grid_longform{width:100%}.ul-matrix-row-options{display:grid;grid-column:2/-1;grid-template-columns:subgrid}.ul-matrix-column-label{font-size:15px;max-width:150px;padding:10px 12px;text-align:center}.ul-card--matrix_container{margin-bottom:16px;overflow:auto}.ul-card--matrix_question_container{display:flex;flex-direction:column}.ul-matrix-scroll-gradient{-webkit-mask-image:linear-gradient(90deg,#000 90%,transparent);mask-image:linear-gradient(90deg,#000 90%,transparent)}.ul-matrix-scroll-gradient:dir(rtl){-webkit-mask-image:linear-gradient(270deg,#000,90%,transparent);mask-image:linear-gradient(270deg,#000,90%,transparent)}.ul-matrix-scroll-gradient:dir(rtl)+.ul-matrix-scroll-arrow{rotate:180deg}.ul-matrix-scroll-arrow{align-self:flex-end;background:none;border:none;color:#000;padding:0;position:absolute;top:45%}.ul-matrix-scroll-arrow:hover{cursor:pointer}.ul-matrix-option-wrapper{align-items:center;background:#f9f9f8;display:flex;justify-content:center;padding:10px 12px}.ul-matrix-last-option{border-start-end-radius:4px;border-end-end-radius:4px}.ul-matrix-row-label{align-items:center;background:#f9f9f8;border-end-start-radius:4px;border-start-start-radius:4px;display:flex;font-size:15px;left:0;right:0;max-width:200px;min-width:100px;padding:10px 12px;position:sticky}.ul-matrix-option-selected{border:6px solid var(--border);box-shadow:none}.ul-card__matrix{max-width:100%}.select-label{cursor:pointer;flex:1;overflow-wrap:anywhere;text-align:start}.ul-card--nps__numbers{align-items:center;border-radius:5px;display:flex;flex-direction:row;flex:1 0;justify-content:center;margin:5px 0 0}.nps-number--mobile{border:2px solid #e6e6e6}.nps-number--mobile:not(:first-child){margin-inline-start:-2px}.nps-number--desktop{border:1px solid #e6e6e6}.nps-number--desktop:not(:first-child){margin-inline-start:-1px}.nps-number{align-items:center;cursor:pointer;display:flex;justify-content:center;flex:1 0;background-color:#00000003;font-size:18px;line-height:24px;height:67px;padding:unset}.nps-number:first-child{border-start-start-radius:5px;border-end-start-radius:5px}.nps-number:last-child{border-start-end-radius:5px;border-end-end-radius:5px}.nps-number:active,.nps-number--desktop:hover{background-color:#0000000d;font-weight:500}.ul-card--nps__labels{align-items:center;color:#262136;display:flex;flex-direction:row;flex:1 0;font-weight:500;font-size:13px;line-height:15px;justify-content:space-between;margin:7px 0 10px}.ul-card-rank__labels{font-size:14px;font-style:normal;font-weight:600;line-height:150%;text-align:left}.ul-card-rank__list{list-style-type:none;padding-inline-start:0;margin:4px 0}.ul-card-rank__option{display:flex;align-items:center;padding:8px;gap:8px;align-self:stretch;border:1px solid #e2e3e1;border-radius:8px;margin-bottom:4px;background:#fff}.ul-card-rank__option:last-child{margin-bottom:0}.ul-card-rank__drag-btn{display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0;width:25px;height:25px;margin-left:auto;color:#0b2330;cursor:grab;background:transparent;border:0}.ul-card-rank__drag-btn:active,.ul-card-rank__option:active{cursor:grabbing}.ul-card-rank__option svg{display:block}.ul-card-rank__option.is-dragging{opacity:1;box-shadow:0 8px 25px #00000026,0 3px 10px #0000001a;z-index:1000;background:#fff;border-color:#0b2330;transition:none}.ul-card-rank__option.is-drop-target{background:#0b23301a;border-radius:8px;border-color:#0b23301a}.ul-card-rank__option.is-drop-target select,.ul-card-rank__option.is-drop-target span,.ul-card-rank__option.is-drop-target button{visibility:hidden}.ul-card-rank__option span{font-size:14px;font-weight:400;pointer-events:none}.ul-card-rank__select{appearance:none;-webkit-appearance:none;-moz-appearance:none;box-sizing:border-box;height:25px;min-height:25px;border:1px solid #E2E3E1;border-radius:4px;font-size:14px;line-height:1.4;padding:2px 28px 2px 8px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='13' viewBox='0 0 12 13' fill='none'><path d='M9.75 5L6 8.75L2.25 5' stroke='%230B2330' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 8px center;background-size:12px 12px;background-color:#fff;cursor:pointer;pointer-events:auto}.ul-card-rank__select.ul-card-rank__select--placeholder{color:#b0b5b7}.ul-card-text{margin-top:2px;margin-bottom:3px;display:flex;flex-direction:column;justify-content:center;padding:0;width:100%}.ul-card-text__container{align-items:center;box-sizing:border-box;border-radius:3px;display:flex;justify-content:center;margin-bottom:12px;flex:1 0 100%}.ul-card-text__input--mobile{border:2px solid #e6e6e6;max-height:63px}.ul-card-text__input--desktop{border:1px solid #e6e6e6;max-height:150px}.ul-card-text__input{background:#00000003;box-sizing:border-box;color:#343442;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;min-height:63px;overflow:auto;padding:12px;resize:none;width:100%;border-radius:3px;font-size:15px;line-height:20px;overflow-wrap:break-word}.ul-card-text__input::placeholder{color:#6c6c6e80}.ul-card-text__input:focus{outline:none;background:#fff}.ul-card-text__input--desktop:hover:not(:focus){background-color:#0000000d}.ul-card__text-url-prompt-button{text-decoration:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:-webkit-fill-available}#ul-card-video__player_recorder{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.ul-card-record__task{flex:1 0 auto;margin-top:2px;margin-bottom:3px;align-items:center;display:flex;flex-wrap:wrap;justify-content:center;padding:0}#ul-record-task-upload-progress,#ul-record-task-video-preview{width:100%;height:150px}.ul-permission-graphics-container{width:100%;height:150px;background-color:#0000000d;text-align:center;flex-direction:column;margin-left:auto;margin-right:auto;border-radius:5px;display:flex;align-items:center;font-size:15px;color:#000000b3}.ul-av-permission-denied-paragraph{margin:auto 15px;font-size:12px}.ul-av-permission-denied-headline{font-size:14px;color:#262136;text-decoration:underline;font-size:12px}.ul-permission-body{color:#000;margin:5px auto 5px 5px;line-height:135%;text-align:center}.ul-select-tab-container{width:240px;height:46px;background:#fff;border-radius:5px;text-align:start;align-items:center;display:flex;padding:0 5px;margin-top:20px;margin-bottom:auto}.ul-select-tab-text{color:#4b575d;margin:5px;line-height:135%;text-align:center}button.ul-task-skip-button{color:#000;background-color:#fff}#ul-task-detail-container{margin-top:0;margin-bottom:0;overflow:auto}#ul-task-detail-container.ul-rich-text-body p,#ul-task-detail-container.ul-rich-text-body li,#ul-task-detail-container.ul-rich-text-body{color:#4c4c4c}#ul-task-detail-container :first-child{margin-top:0}#ul-task-detail-container :last-child{margin-bottom:20px}.ul-horizontal-button-container{width:100%;display:flex;flex-direction:row}.ul-skip-button-below{margin-top:5px}.ul-horizontal-button-container-center{justify-content:center}.ul-vertical-button-container-center{display:flex;flex-direction:column;align-items:center}.ul-horizontal-button-container-left{justify-content:flex-start}.ul_recorded-task-inset-spacing{margin-top:5px;margin-bottom:24px}.ul_permission_svg_container{justify-content:center}.ul-card-text__button{background-color:var(--theme);border-radius:3px;border:none;color:#fff;cursor:pointer;font-size:15px;font-weight:500;line-height:18px;padding:10.5px 21px}.ul-card-text__button:disabled,.ul-card-text__button.sprig-button-disabled{background-color:#0000001a;color:#0003}.ul-card-text__button:disabled>svg path,.ul-card-text__button.sprig-button-disabled>svg path{stroke:#0003}.ul-card-text__button.ul-button-inactive{background-color:#fff!important;color:#5d696f!important}.ul-card-skip__button{color:#00000080;background:none;border:none;font-size:15px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;cursor:pointer}.ul-card-button-group{align-items:center;display:flex;gap:15px;justify-content:center;flex-direction:column}.select-button{align-items:center;background-color:transparent;border-radius:8px;border:1px solid #0b2330;box-shadow:0 0 0 2px #c8cccc;cursor:pointer;display:flex;font-size:15px;justify-content:space-between;margin-bottom:8px;padding:4px 8px 4px 16px;width:100%}.select-button:hover{background-color:#f3f3f3}.select-button:active{background-color:#eee}.select-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-button.select-button-placeholder{color:#b0b5b7}.select-button svg{flex-shrink:0}.select-list{position:relative;height:fit-content;padding:4px 0;z-index:100;background-color:#fff;border:1px solid #E2E3E1;box-shadow:0 16px 24px #0b23300d,0 4px 12px #0b233008;border-radius:8px;overflow-y:scroll;width:100%}.select-option{align-items:center;cursor:pointer;display:flex;font-size:15px;gap:16px;line-height:20px;padding:8px 16px}.select-option:hover{background-color:#f3f3f3}.ul-card--maxdiff__question-inner-container{display:grid;grid-template-columns:1fr 2.5fr 1fr;grid-template-rows:repeat(3,minmax(40px,auto));grid-gap:6px;align-items:center}@media (max-width: 600px){.ul-card-maxdiff__labels-row{column-gap:30%}}.ul-card-maxdiff__label{font-weight:600;text-align:center;margin:auto;flex:1;padding:8px;overflow:auto;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.ul-card-maxdiff__label-spacer{flex:6}.ul-card-maxdiff .ul-question{text-align:center}.ul-card-maxdiff__option-row{display:flex;justify-content:space-between;margin-bottom:8px;padding:0 24px}.ul-card-maxdiff__option-label{flex:6;align-self:center;padding:12px;text-align:center;max-width:100%;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}.ul-card-maxdiff__option-control.smiley{display:flex;justify-content:center;align-items:center;min-width:86px;flex:1;padding:12px;border-radius:none;border:none;background:none;cursor:pointer}.ul-card-maxdiff__option-control .choice-label-container{justify-content:center}.ul-card-maxdiff p.ul-caption{text-align:center}.ul-card-maxdiff .question-header-button-container{display:flex;justify-content:center}.ul-card-maxdiff__option-selected{border-radius:100px}.ul-card-maxdiff__option-selected.good{background:#90ee90}.ul-card-maxdiff__option-selected.bad{background:#f08080}.ul-card-maxdiff__option-btn{width:42px;height:42px;justify-content:center;align-items:center}html,body{cursor:default;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;height:100%;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-webkit-touch-callout:none}b{font-weight:500}form{margin-block-end:0;margin-block-start:0}#ul-app{opacity:0;width:100%;flex-grow:2;display:flex}#ul-app.ul-app--overlay{position:absolute;bottom:0;transition:opacity .1s ease-out;transition-delay:.1s}#ul-app.ul-app--visible{opacity:1;bottom:0}.ul-app__container{width:100%;display:flex;flex-direction:column;max-height:100vh}.ul-header__container{margin-bottom:15px}.ul-header{align-items:center;background:repeating-linear-gradient(120deg,#ebebeb,#ebebeb 24px,#fff 24px,#fff 48px);border-bottom:2px solid #ebebeb;display:flex;font-size:14px;font-weight:500;height:40px;justify-content:center;width:100%}.ul-footer{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;margin-top:auto;flex-grow:0;width:100%;min-height:10px;height:fit-content;flex-shrink:0}.ul-footer>.yellow-footer-logo{background:#fad133;border:1px solid #f9c600;border-radius:14px;padding:6px 12px}.ul-footer>.yellow-footer-logo:hover{background:#f9c600}.ul-footer .thank-you-card-link{background:#00000003;border:1px solid #e6e6e6;border-radius:8px;cursor:pointer;display:inline-flex;font-size:14px;gap:12px;margin-bottom:15px;padding:12px;text-align:initial;width:280px}.ul-footer .thank-you-card-link:hover{background:#00000008}.ul-footer>a{color:inherit}.ul-footer-bubble{display:inline-block;margin:0 3px;width:7px;height:7px;border-radius:3px;border:1px solid transparent}.sprig-box-logo{background:#f9c600;border-radius:5px;display:flex;padding:4px}.close-container{display:flex;justify-content:flex-end;width:100%;height:0}.close-btn{cursor:pointer;height:16px;margin-inline-end:-10px;position:relative;top:-10px;width:16px;z-index:1;align-self:flex-start;justify-self:end;flex-shrink:0}.ul-app__container{transition:opacity .3s ease-out}.ul-center-horizontally{text-align:center}.ul-progress-bar-container{width:100%;height:2px;background-color:#0000001a;border-radius:2px}.ul-progress-bar-container__footer{max-width:250px;margin:16px 0}.ul-progress-bar-container__header{position:fixed;top:80px;max-width:unset;margin:0;z-index:3}.ul-progress-bar-current{transition:width 1s ease;width:0%;height:0;border-radius:2px}.prototype-button{align-self:stretch;background:#00000003;border:1.5px solid #e6e6e6;border-radius:4px 0 0 4px;flex:none;flex-grow:0;height:fit-content;line-height:16.5px;margin:0 20px;padding:20px 0;font-size:14px;font-family:inherit;text-decoration:underline}.prototype-button:hover{cursor:pointer}`}),e.customStyles&&N.setSurveyStyles({document:u,elementId:"ul-custom-style",styleString:e.customStyles,nonce:e.styleNonce}),e.fontFamily&&a&&parent){const C=u.createElement("link");C.rel="stylesheet",C.href=a,y.appendChild(C)}if(!f&&e.cards.some(C=>C.type==="recordedtask")){const C=u.createElement("script");C.src=e.upchunkLibraryURL??"https://cdn.sprig.com/userleap-web-upchunk-v2.2.2.js",C.onload=()=>{be.setUpChunk(d.UpChunk)},C.onerror=()=>{console.warn("[Sprig] - recording functionality not configured due to UpChunk library load failure")},y.appendChild(C)}const k=i||((_=s.eventEmitter)==null?void 0:_.emit);k==null||k("verify.view.version",{"view.version":"2.39.4"}),c&&t&&(re(x(In,{}),c),I.eventEmitter.once(I.SprigEvent.SurveyClosed,()=>{Ze(c)}))}},Un=Object.freeze(Object.defineProperty({__proto__:null,default:Ln},Symbol.toStringTag,{value:"Module"}));exports.Accordion=on,exports.Arrow=Qe,exports.F=Y,exports.F$1=De,exports.MaxDiffChoice=Sr,exports.SprigBrandLogo=jr,exports.SvgCaret=xr,exports.SvgCheckmark=yr,exports.T=se,exports.ThankYouLink=Lr,exports._=Z,exports.buildMarketingUrl=Ur,exports.buildReadableResponseMap=Ar,exports.cc=ve,exports.create=Cr,exports.g=V,exports.getButtonText=e=>(e==null?void 0:e.buttonText)||"Next",exports.getClasses=kr,exports.getSkipButtonText=e=>(e==null?void 0:e.skipButtonText)||"Skip",exports.h=W,exports.p=M,exports.pipeReadableResponsesIntoCards=(e,t)=>e.map(r=>{if(!Tr(r)||r.props.properties===void 0||r.props.properties===null)return r;const n=r.props.properties;if(n===null||typeof n!="object"||!Rt.some(a=>a in n))return r;let o=!1;const i={};for(const a of Rt){const s=n[a];if(s!==void 0){const l=wn(s,t);i[a]=l,l!==s&&(o=!0)}}return o?{...r,props:{...r.props,properties:{...n,...i}}}:r}),exports.q=ze,exports.u=x,exports.useConfig=G,exports.view=Un,exports.wn=br;