@sprig-technologies/sprig-browser 2.31.6 → 2.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var Ut=Object.defineProperty,St=(t,e,n)=>e in t?Ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,q=(t,e,n)=>(St(t,typeof e!="symbol"?e+"":e,n),n);import{g as C,s as Me,e as p,S as u,l as x,v as je,m as U,b as P,h as It,E as V,D as M,c as kt,r as j,i as Et,j as _t,k as xt,n as ze,o as We,a as Dt,p as ye,d as At,q as Be}from"./metricsReporter-DKI8BwWD.js";const Rt='.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}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}',Ne="360px",Ot="ul-app",Pt="#e6e6e6",Ct="#bd282a",Tt=500,Ft=1030,qe=()=>{try{return window.parent.Intercom}catch{return null}},Mt=()=>{const t=qe();t&&(t.ul_wasVisible&&t("update",{hide_default_launcher:!1}),delete t.ul_wasVisible)},jt=()=>{const t=qe();t&&(t.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),t.ul_wasVisible&&t("update",{hide_default_launcher:!0}))},zt=Object.freeze(Object.defineProperty({__proto__:null,disable:jt,enable:Mt},Symbol.toStringTag,{value:"Module"})),Ve=[zt];class He{static disable(){Ve.forEach(e=>e.disable())}static enable(){Ve.forEach(e=>e.enable())}}const $e="ul-view-sdk-script",Wt=["ios","android"],T="visitors",F="environments";async function D(t,e){var n,o,r;const{shouldDropOnRateLimit:i,...s}=e;s.headers=Object.assign(C(window.UserLeap),s.headers);const a=await Me(t,{...s,shouldDropOnRateLimit:i});if(a.ok){const l=(n=a.headers)==null?void 0:n.get("Authorization"),c=l?l.split(" "):void 0,d=c&&c.length===2?c[1]:void 0,w=(o=a.headers)==null?void 0:o.get("x-ul-visitor-id");d&&w&&(w!==window.UserLeap.visitorId||window.UserLeap.token!==d)&&(E("token",d),E("vid",w),p.emit(u.VisitorIDUpdated,{visitorId:w}),window.UserLeap.token=d,window.UserLeap.visitorId=w)}return(r=a.json)!=null&&r.logMessage&&console.warn(`[Sprig] ${a.json.logMessage}`),a}function E(t,e){const n=x.getItem("userleap.ids");let o={};if(n)try{o=JSON.parse(n)}catch(i){i instanceof Error&&(i.stack=n,window.UserLeap.reportError("Failed to parse local storage credentials",i)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",i)}let r=o[window.UserLeap.envId];r?r[t]=e:r={[t]:e},o[window.UserLeap.envId]=r;try{x.setItem("userleap.ids",JSON.stringify(o))}catch(i){i instanceof Error&&console.warn(`[Sprig] (ERR-426) Unable to write to Local Storage:: ${i.message}`)}}function ve(){return window.previewMode?"0":window.UserLeap.visitorId??""}function _(t,e,n){const o=[window.UserLeap._API_URL,"sdk",t];return e&&e.forEach(r=>{o.push(r),r===F?o.push(window.UserLeap.envId):r===T&&o.push(ve())}),n&&o.push(n),o.join("/")}const H=async(t,e)=>{var n,o,r;const{context:i,delay:s,forceBrandedLogo:a,endCard:l,isFeedback:c=!1,heatmap:d,locale:w,previewMode:g,productConfig:h,questions:y,responseGroupUid:f,surveyId:S,uuid:k,vid:b,sessionReplay:I,studyType:R}=t,L=C(window.UserLeap),Re=re(L),ue=fe(L);if(I)if(Re)p.emit(u.ReplayCapture,{responseGroupUid:f,hasQuestions:!!(y!=null&&y.length),surveyId:S,uploadId:I.uploadId,replayType:I.replayDurationType??"before",seconds:I.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:je(),mediaType:"screen",questionId:1,responseGroupUid:f,surveyId:S,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!U.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};U.replay.scheduleOrCaptureReplay({responseGroupId:f,surveyId:S,visitorId:b,replayParams:I,completeUploadHeaders:L,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:y.length===0})}if(d){if(!U.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};const{eventId:v,replayParams:me,responseGroupUid:bt,surveyId:Lt}=d;await U.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),U.replay.tryReplayAction(()=>{var Fe;return(Fe=U.replay)==null?void 0:Fe.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:L,eventId:v,isHeatmap:!0,replayParams:me,responseGroupId:bt,surveyId:Lt,triggerTimestamp:Date.now(),visitorId:b})},"Error in scheduling/capturing replay")}if(b==null||!(y!=null&&y.length))return P.info("CannotDisplaySurvey",{vid:b}),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){P.info("AlreadyDisplayingSurvey");const v="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(v),{success:!1,message:v,surveyState:"no survey"}}if(b!==window.UserLeap.visitorId&&k!==window.UserLeap.visitorId&&!window.previewMode){const v="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(v)),{success:!1,message:v,surveyState:"no survey"}}P.info("ShowingSurvey",{surveyId:S}),(n=U.replay)==null||n.RecordSurveyShown({id:S,userAgent:window.navigator.userAgent}),He.disable(),p.emit(u.SurveyWillPresent,{name:u.SurveyWillPresent,"survey.id":S});let X,Z=document.createElement("div"),ee,O,te;const Oe=v=>{const{"view.version":me}=v;me!==L["x-ul-sdk-version"]&&Ke(),p.removeListener("verify.view.version",Oe)};p.on("verify.view.version",Oe),window.UserLeap.useMobileStyling=ue,It(L)?(X="ul-direct-embeded-frame",ee=document.head,O=window,te=!1,Re&&(Ge(S,c),Z.id=X,window.UserLeap.container.appendChild(Z),Je(),p.emit(u.SurveyLifeCycle,{state:"presented"}),p.emit(u.SurveyPresented,{name:u.SurveyPresented,"survey.id":S}))):{frameId:X,contentWinDocHead:ee,contentWindow:O,hasOverlay:te,iframe:Z}=Ht({productConfig:h,useMobileStyling:ue,surveyId:S,isFeedback:c}),window.UserLeap.frameId=X;const vt=v=>{p.once(u.CloseSurveyOnOverlayClick,v)},B={apiURL:window.UserLeap._API_URL,cards:y,configureExitOnOverlayClick:vt,context:i,endCard:l,envId:window.UserLeap.envId,eventEmitFn:p.emit.bind(p),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:Z,headers:L,locale:w,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:x.getItem("sprig.previewKey"),previewMode:g,productConfig:{framePosition:h?.framePosition,desktopDisplay:h?.desktopDisplay,placement:h?.placement},responseGroupUid:f,startingQuestionIdx:(o=window.UserLeap.config)==null?void 0:o.startingQuestionIdx,studyType:R,styleNonce:window.UserLeap.styleNonce,surveyId:S,tabTitle:document.title,trackPageViewUrl:e,ulEvents:V,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:ue,userId:k,viewDocument:O?.document,viewWindow:O,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(r=window.UserLeap._config)!=null&&r.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const ft=(c?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??h.customStyles;B.customStyles=ft,O&&(O.__cfg=B);function ht(){const v=document.createElement("script");return window.UserLeap.nonce&&v.setAttribute("nonce",window.UserLeap.nonce),v.id=$e,v}const we=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:B.path,Pe=document.getElementById($e);Pe&&Pe.remove();const ge=ht(),Ce=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(B.installationMethod==="web-npm"||B.installationMethod==="web-npm-bundled"){const{default:v}=await import("./view-Cabe-ObF.js");v.configure(B),te&&window.UserLeap.container&&Ce()}else we&&(ge.src=we,te&&ge.addEventListener("load",()=>{window.UserLeap.container&&Ce()}),O?.addEventListener("error",v=>{v.target instanceof HTMLScriptElement&&v.target.src===we&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));ee?.appendChild(ge);const Te={success:!0,surveyState:"ready",surveyId:S,responseGroupUid:f};return window.UserLeap.isMobileSDK&&s&&(Te.delay=s),Te};function fe(t){var e;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const n=((e=window.UserLeap.windowDimensions)==null?void 0:e.width)??document.body.clientWidth;return re(t)||n>10&&n<Tt}function re(t){return Wt.includes(t["userleap-platform"])}const he="ul-frame";window.UserLeap&&window.Sprig&&(window.Sprig._gtm?window.Sprig=window.UserLeap:window.UserLeap=window.Sprig),window.UserLeap||(window.UserLeap=window.Sprig),window.Sprig||(window.Sprig=window.UserLeap);const Bt="rgba(255,255,255, 0.95)",Nt="rgba(0,0,0,0.9)",be="0px",Ge=(t,e,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${e?" ul-container-feedback":""}`,t&&(window.UserLeap.container.dataset.studyId=t.toString());const o=Ze();n&&o&&!window.UserLeap.useMobileStyling?o.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ke=(t,e)=>{var n;Gt();const o=window.UserLeap.container;if(o)try{(n=o.parentNode)==null||n.removeChild(o),window.UserLeap.container=null,E("trackStartUrl",null),p.emit(u.SurveyLifeCycle,{state:"dismissed"}),p.emit(u.SurveyClosed,{name:u.SurveyClosed,initiator:t,"survey.id":parseInt(o.dataset.studyId),...e&&{studyType:e}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${t} `+o),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Je=()=>{p.once(u.SurveyWillClose,({initiator:t,studyType:e})=>{p.removeAllListeners(u.CloseSurveyOnOverlayClick),Ke(t,e)})},qt=(t,e)=>{const n={position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646},o=e?t.overlayStyleMobile:t.overlayStyle;n["background-color"]=o==="light"?Bt:Nt,e||(n.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,n)},Vt=(t,e,n,o)=>{var r,i;const s={position:"fixed",bottom:"0px",right:be,border:0,backgroundColor:"rgba(0,0,0,0)",zIndex:2147483646,transition:"width 0.2s ease-in-out, height 0.2s ease-in-out",maxWidth:"100%"},a=Object.assign({},e,window.UserLeap),{desktopDisplay:l}=e||{},c=l==="center-modal";c&&(a.framePosition="center");let d,w=!1;if(n)(r=window.UserLeap.windowDimensions)!=null&&r.width?s.width=`${window.UserLeap.windowDimensions.width}px`:s.width="100%",(i=window.UserLeap.windowDimensions)!=null&&i.height?s.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`:window.UserLeap.maxHeight?s.maxHeight=window.UserLeap.maxHeight:s.maxHeight=`${document.body.clientHeight-20}px`,["light","dark"].includes(a.overlayStyleMobile)&&(w=!0);else{s.width=Ne,s.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{w=!0,d={margin:"auto",position:"static"}};if(o)c?g():d={position:"relative",height:"300px"};else switch(a.framePosition){case"bottomLeft":d={left:be};break;case"topLeft":d={left:be,top:0};break;case"topRight":d={top:0};break;case"center":g();break}}return w&&qt(a,n),Object.assign(t.style,s,d),w},Ht=({productConfig:t,useMobileStyling:e,surveyId:n,isFeedback:o})=>{var r,i;const s=he,a=o&&t.desktopDisplay==="slider";Ge(n,o,a),$t();const l=document.createElement("iframe");l.id=s,l.setAttribute("title","Sprig User Feedback Dialog");const c=Vt(l,t,e,o);Je();let d=!1;l.setHeight=y=>{(parseInt(l.style.height)!=y||!d)&&(d=!0,l.style.height=`${y}px`,p.emit(u.SurveyHeight,{name:u.SurveyHeight,contentFrameHeight:y,"survey.id":n}))};let w=!1;l.setWidth=y=>{(parseInt(l.style.width)!=y||!w)&&(w=!0,l.style.width=`${y}px`,p.emit(u.SurveyWidth,{name:u.SurveyWidth,contentFrameWidth:y,"survey.id":n}))},(r=window.UserLeap.container)==null||r.appendChild(l),t&&(e?t.exitOnOverlayClickMobile:t.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{p.emit(u.CloseSurveyOnOverlayClick)}),p.emit(u.SurveyLifeCycle,{state:"presented"}),p.emit(u.SurveyPresented,{name:u.SurveyPresented,"survey.id":n});const g=(i=l.contentWindow)==null?void 0:i.document;if(g&&(g.open("text/html","replace"),g.write("<!doctype html><head></head><body></body></html>"),g.close(),!e)){const y=g.body;y.style.display="flex",y.style.alignItems="center"}const h=g?.head;return{frameId:s,contentWinDocHead:h,contentWindow:l.contentWindow,hasOverlay:c,iframe:l}},Qe={[u.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},$t=()=>{Object.entries(Qe).forEach(([t,e])=>{p.on(t,e)})},Gt=()=>{Object.entries(Qe).forEach(([t,e])=>{p.off(t,e)})},Kt=1,Ye=t=>t instanceof HTMLElement||t instanceof SVGElement,$=({document:t,elementId:e,styleString:n,nonce:o})=>{const r=t.getElementById(e);if(r){r.textContent=n;return}const i=t.createElement("style");o&&(i.nonce=o),i.textContent=n,i.id=e,t.head.appendChild(i)},Xe=t=>{const e=t.querySelector(".ul-card__container");let n=600,o=360;if(e){n=e.scrollHeight;const r=getComputedStyle(e),i=parseFloat(r.marginTop)+parseFloat(r.marginBottom),s=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),a=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=i+s+a;const l=e.querySelector(".ul-card--matrix_grid");o=l?l.scrollWidth:e.scrollWidth;const c=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),d=parseFloat(r.marginLeft)+parseFloat(r.marginRight),w=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);o+=d+w+c}return[n+Kt,o]},Jt=t=>{const e=t.querySelector(".ul-card__container");e&&(e.scrollTop=0)},Ze=()=>m,N=()=>document.getElementById("sprig-feedback-container"),Le=()=>document.getElementById("sprig-feedback-loading-animation"),Qt=()=>{if(Le())return;const t=document.createElement("div");return t.className="ul-loading-spinner-container",t.id="sprig-feedback-loading-animation",t.role="progressbar",t.setAttribute("aria-live","polite"),t.setAttribute("aria-busy","true"),t.setAttribute("aria-label","Processing..."),t.innerHTML=`
1
+ var Ut=Object.defineProperty,St=(t,e,n)=>e in t?Ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,q=(t,e,n)=>(St(t,typeof e!="symbol"?e+"":e,n),n);import{g as C,s as Me,e as p,S as u,l as x,v as je,m as U,b as P,h as It,E as V,D as M,c as kt,r as j,i as Et,j as _t,k as xt,n as ze,o as We,a as Dt,p as ye,d as At,q as Be}from"./metricsReporter-pb5Px0rg.js";const Rt='.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}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}',Ne="360px",Ot="ul-app",Pt="#e6e6e6",Ct="#bd282a",Tt=500,Ft=1030,qe=()=>{try{return window.parent.Intercom}catch{return null}},Mt=()=>{const t=qe();t&&(t.ul_wasVisible&&t("update",{hide_default_launcher:!1}),delete t.ul_wasVisible)},jt=()=>{const t=qe();t&&(t.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),t.ul_wasVisible&&t("update",{hide_default_launcher:!0}))},zt=Object.freeze(Object.defineProperty({__proto__:null,disable:jt,enable:Mt},Symbol.toStringTag,{value:"Module"})),Ve=[zt];class He{static disable(){Ve.forEach(e=>e.disable())}static enable(){Ve.forEach(e=>e.enable())}}const $e="ul-view-sdk-script",Wt=["ios","android"],T="visitors",F="environments";async function D(t,e){var n,o,r;const{shouldDropOnRateLimit:i,...s}=e;s.headers=Object.assign(C(window.UserLeap),s.headers);const a=await Me(t,{...s,shouldDropOnRateLimit:i});if(a.ok){const l=(n=a.headers)==null?void 0:n.get("Authorization"),c=l?l.split(" "):void 0,d=c&&c.length===2?c[1]:void 0,w=(o=a.headers)==null?void 0:o.get("x-ul-visitor-id");d&&w&&(w!==window.UserLeap.visitorId||window.UserLeap.token!==d)&&(E("token",d),E("vid",w),p.emit(u.VisitorIDUpdated,{visitorId:w}),window.UserLeap.token=d,window.UserLeap.visitorId=w)}return(r=a.json)!=null&&r.logMessage&&console.warn(`[Sprig] ${a.json.logMessage}`),a}function E(t,e){const n=x.getItem("userleap.ids");let o={};if(n)try{o=JSON.parse(n)}catch(i){i instanceof Error&&(i.stack=n,window.UserLeap.reportError("Failed to parse local storage credentials",i)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",i)}let r=o[window.UserLeap.envId];r?r[t]=e:r={[t]:e},o[window.UserLeap.envId]=r;try{x.setItem("userleap.ids",JSON.stringify(o))}catch(i){i instanceof Error&&console.warn(`[Sprig] (ERR-426) Unable to write to Local Storage:: ${i.message}`)}}function ve(){return window.previewMode?"0":window.UserLeap.visitorId??""}function _(t,e,n){const o=[window.UserLeap._API_URL,"sdk",t];return e&&e.forEach(r=>{o.push(r),r===F?o.push(window.UserLeap.envId):r===T&&o.push(ve())}),n&&o.push(n),o.join("/")}const H=async(t,e)=>{var n,o,r;const{context:i,delay:s,forceBrandedLogo:a,endCard:l,isFeedback:c=!1,heatmap:d,locale:w,previewMode:g,productConfig:h,questions:y,responseGroupUid:f,surveyId:S,uuid:k,vid:b,sessionReplay:I,studyType:R}=t,L=C(window.UserLeap),Re=re(L),ue=fe(L);if(I)if(Re)p.emit(u.ReplayCapture,{responseGroupUid:f,hasQuestions:!!(y!=null&&y.length),surveyId:S,uploadId:I.uploadId,replayType:I.replayDurationType??"before",seconds:I.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:je(),mediaType:"screen",questionId:1,responseGroupUid:f,surveyId:S,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!U.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};U.replay.scheduleOrCaptureReplay({responseGroupId:f,surveyId:S,visitorId:b,replayParams:I,completeUploadHeaders:L,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:y.length===0})}if(d){if(!U.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};const{eventId:v,replayParams:me,responseGroupUid:bt,surveyId:Lt}=d;await U.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),U.replay.tryReplayAction(()=>{var Fe;return(Fe=U.replay)==null?void 0:Fe.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:L,eventId:v,isHeatmap:!0,replayParams:me,responseGroupId:bt,surveyId:Lt,triggerTimestamp:Date.now(),visitorId:b})},"Error in scheduling/capturing replay")}if(b==null||!(y!=null&&y.length))return P.info("CannotDisplaySurvey",{vid:b}),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){P.info("AlreadyDisplayingSurvey");const v="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(v),{success:!1,message:v,surveyState:"no survey"}}if(b!==window.UserLeap.visitorId&&k!==window.UserLeap.visitorId&&!window.previewMode){const v="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(v)),{success:!1,message:v,surveyState:"no survey"}}P.info("ShowingSurvey",{surveyId:S}),(n=U.replay)==null||n.RecordSurveyShown({id:S,userAgent:window.navigator.userAgent}),He.disable(),p.emit(u.SurveyWillPresent,{name:u.SurveyWillPresent,"survey.id":S});let X,Z=document.createElement("div"),ee,O,te;const Oe=v=>{const{"view.version":me}=v;me!==L["x-ul-sdk-version"]&&Ke(),p.removeListener("verify.view.version",Oe)};p.on("verify.view.version",Oe),window.UserLeap.useMobileStyling=ue,It(L)?(X="ul-direct-embeded-frame",ee=document.head,O=window,te=!1,Re&&(Ge(S,c),Z.id=X,window.UserLeap.container.appendChild(Z),Je(),p.emit(u.SurveyLifeCycle,{state:"presented"}),p.emit(u.SurveyPresented,{name:u.SurveyPresented,"survey.id":S}))):{frameId:X,contentWinDocHead:ee,contentWindow:O,hasOverlay:te,iframe:Z}=Ht({productConfig:h,useMobileStyling:ue,surveyId:S,isFeedback:c}),window.UserLeap.frameId=X;const vt=v=>{p.once(u.CloseSurveyOnOverlayClick,v)},B={apiURL:window.UserLeap._API_URL,cards:y,configureExitOnOverlayClick:vt,context:i,endCard:l,envId:window.UserLeap.envId,eventEmitFn:p.emit.bind(p),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:Z,headers:L,locale:w,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:x.getItem("sprig.previewKey"),previewMode:g,productConfig:{framePosition:h?.framePosition,desktopDisplay:h?.desktopDisplay,placement:h?.placement},responseGroupUid:f,startingQuestionIdx:(o=window.UserLeap.config)==null?void 0:o.startingQuestionIdx,studyType:R,styleNonce:window.UserLeap.styleNonce,surveyId:S,tabTitle:document.title,trackPageViewUrl:e,ulEvents:V,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:ue,userId:k,viewDocument:O?.document,viewWindow:O,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(r=window.UserLeap._config)!=null&&r.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const ft=(c?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??h.customStyles;B.customStyles=ft,O&&(O.__cfg=B);function ht(){const v=document.createElement("script");return window.UserLeap.nonce&&v.setAttribute("nonce",window.UserLeap.nonce),v.id=$e,v}const we=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:B.path,Pe=document.getElementById($e);Pe&&Pe.remove();const ge=ht(),Ce=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(B.installationMethod==="web-npm"||B.installationMethod==="web-npm-bundled"){const{default:v}=await import("./view-DtwxhY6m.js");v.configure(B),te&&window.UserLeap.container&&Ce()}else we&&(ge.src=we,te&&ge.addEventListener("load",()=>{window.UserLeap.container&&Ce()}),O?.addEventListener("error",v=>{v.target instanceof HTMLScriptElement&&v.target.src===we&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));ee?.appendChild(ge);const Te={success:!0,surveyState:"ready",surveyId:S,responseGroupUid:f};return window.UserLeap.isMobileSDK&&s&&(Te.delay=s),Te};function fe(t){var e;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const n=((e=window.UserLeap.windowDimensions)==null?void 0:e.width)??document.body.clientWidth;return re(t)||n>10&&n<Tt}function re(t){return Wt.includes(t["userleap-platform"])}const he="ul-frame";window.UserLeap&&window.Sprig&&(window.Sprig._gtm?window.Sprig=window.UserLeap:window.UserLeap=window.Sprig),window.UserLeap||(window.UserLeap=window.Sprig),window.Sprig||(window.Sprig=window.UserLeap);const Bt="rgba(255,255,255, 0.95)",Nt="rgba(0,0,0,0.9)",be="0px",Ge=(t,e,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${e?" ul-container-feedback":""}`,t&&(window.UserLeap.container.dataset.studyId=t.toString());const o=Ze();n&&o&&!window.UserLeap.useMobileStyling?o.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ke=(t,e)=>{var n;Gt();const o=window.UserLeap.container;if(o)try{(n=o.parentNode)==null||n.removeChild(o),window.UserLeap.container=null,E("trackStartUrl",null),p.emit(u.SurveyLifeCycle,{state:"dismissed"}),p.emit(u.SurveyClosed,{name:u.SurveyClosed,initiator:t,"survey.id":parseInt(o.dataset.studyId),...e&&{studyType:e}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${t} `+o),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Je=()=>{p.once(u.SurveyWillClose,({initiator:t,studyType:e})=>{p.removeAllListeners(u.CloseSurveyOnOverlayClick),Ke(t,e)})},qt=(t,e)=>{const n={position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646},o=e?t.overlayStyleMobile:t.overlayStyle;n["background-color"]=o==="light"?Bt:Nt,e||(n.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,n)},Vt=(t,e,n,o)=>{var r,i;const s={position:"fixed",bottom:"0px",right:be,border:0,backgroundColor:"rgba(0,0,0,0)",zIndex:2147483646,transition:"width 0.2s ease-in-out, height 0.2s ease-in-out",maxWidth:"100%"},a=Object.assign({},e,window.UserLeap),{desktopDisplay:l}=e||{},c=l==="center-modal";c&&(a.framePosition="center");let d,w=!1;if(n)(r=window.UserLeap.windowDimensions)!=null&&r.width?s.width=`${window.UserLeap.windowDimensions.width}px`:s.width="100%",(i=window.UserLeap.windowDimensions)!=null&&i.height?s.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`:window.UserLeap.maxHeight?s.maxHeight=window.UserLeap.maxHeight:s.maxHeight=`${document.body.clientHeight-20}px`,["light","dark"].includes(a.overlayStyleMobile)&&(w=!0);else{s.width=Ne,s.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{w=!0,d={margin:"auto",position:"static"}};if(o)c?g():d={position:"relative",height:"300px"};else switch(a.framePosition){case"bottomLeft":d={left:be};break;case"topLeft":d={left:be,top:0};break;case"topRight":d={top:0};break;case"center":g();break}}return w&&qt(a,n),Object.assign(t.style,s,d),w},Ht=({productConfig:t,useMobileStyling:e,surveyId:n,isFeedback:o})=>{var r,i;const s=he,a=o&&t.desktopDisplay==="slider";Ge(n,o,a),$t();const l=document.createElement("iframe");l.id=s,l.setAttribute("title","Sprig User Feedback Dialog");const c=Vt(l,t,e,o);Je();let d=!1;l.setHeight=y=>{(parseInt(l.style.height)!=y||!d)&&(d=!0,l.style.height=`${y}px`,p.emit(u.SurveyHeight,{name:u.SurveyHeight,contentFrameHeight:y,"survey.id":n}))};let w=!1;l.setWidth=y=>{(parseInt(l.style.width)!=y||!w)&&(w=!0,l.style.width=`${y}px`,p.emit(u.SurveyWidth,{name:u.SurveyWidth,contentFrameWidth:y,"survey.id":n}))},(r=window.UserLeap.container)==null||r.appendChild(l),t&&(e?t.exitOnOverlayClickMobile:t.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{p.emit(u.CloseSurveyOnOverlayClick)}),p.emit(u.SurveyLifeCycle,{state:"presented"}),p.emit(u.SurveyPresented,{name:u.SurveyPresented,"survey.id":n});const g=(i=l.contentWindow)==null?void 0:i.document;if(g&&(g.open("text/html","replace"),g.write("<!doctype html><head></head><body></body></html>"),g.close(),!e)){const y=g.body;y.style.display="flex",y.style.alignItems="center"}const h=g?.head;return{frameId:s,contentWinDocHead:h,contentWindow:l.contentWindow,hasOverlay:c,iframe:l}},Qe={[u.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},$t=()=>{Object.entries(Qe).forEach(([t,e])=>{p.on(t,e)})},Gt=()=>{Object.entries(Qe).forEach(([t,e])=>{p.off(t,e)})},Kt=1,Ye=t=>t instanceof HTMLElement||t instanceof SVGElement,$=({document:t,elementId:e,styleString:n,nonce:o})=>{const r=t.getElementById(e);if(r){r.textContent=n;return}const i=t.createElement("style");o&&(i.nonce=o),i.textContent=n,i.id=e,t.head.appendChild(i)},Xe=t=>{const e=t.querySelector(".ul-card__container");let n=600,o=360;if(e){n=e.scrollHeight;const r=getComputedStyle(e),i=parseFloat(r.marginTop)+parseFloat(r.marginBottom),s=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),a=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=i+s+a;const l=e.querySelector(".ul-card--matrix_grid");o=l?l.scrollWidth:e.scrollWidth;const c=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),d=parseFloat(r.marginLeft)+parseFloat(r.marginRight),w=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);o+=d+w+c}return[n+Kt,o]},Jt=t=>{const e=t.querySelector(".ul-card__container");e&&(e.scrollTop=0)},Ze=()=>m,N=()=>document.getElementById("sprig-feedback-container"),Le=()=>document.getElementById("sprig-feedback-loading-animation"),Qt=()=>{if(Le())return;const t=document.createElement("div");return t.className="ul-loading-spinner-container",t.id="sprig-feedback-loading-animation",t.role="progressbar",t.setAttribute("aria-live","polite"),t.setAttribute("aria-busy","true"),t.setAttribute("aria-label","Processing..."),t.innerHTML=`
2
2
  <div class="ul-loading-spinner">
3
3
  <div class="first"></div>
4
4
  <div class="second"></div>
@@ -1,4 +1,4 @@
1
- "use strict";var dt=Object.defineProperty;var lt=(t,e,i)=>e in t?dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var F=(t,e,i)=>(lt(t,typeof e!="symbol"?e+"":e,i),i);const n=require("./metricsReporter-Bv4AKHDN.cjs"),ct='.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}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}',Me="360px",pt="ul-app",ut="#e6e6e6",wt="#bd282a",gt=500,mt=1030,Fe=()=>{try{return window.parent.Intercom}catch{return null}},ft=()=>{const t=Fe();t&&(t.ul_wasVisible&&t("update",{hide_default_launcher:!1}),delete t.ul_wasVisible)},yt=()=>{const t=Fe();t&&(t.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),t.ul_wasVisible&&t("update",{hide_default_launcher:!0}))},vt=Object.freeze(Object.defineProperty({__proto__:null,disable:yt,enable:ft},Symbol.toStringTag,{value:"Module"})),Re=[vt];class He{static disable(){Re.forEach(e=>e.disable())}static enable(){Re.forEach(e=>e.enable())}}const Ae="ul-view-sdk-script",ht=["ios","android"],D="visitors",O="environments";async function k(t,e){var o,a,d;const{shouldDropOnRateLimit:i,...s}=e;s.headers=Object.assign(n.getHttpHeaders(window.UserLeap),s.headers);const r=await n.sprigFetch(t,{...s,shouldDropOnRateLimit:i});if(r.ok){const c=(o=r.headers)==null?void 0:o.get("Authorization"),p=c?c.split(" "):void 0,l=p&&p.length===2?p[1]:void 0,u=(a=r.headers)==null?void 0:a.get("x-ul-visitor-id");l&&u&&(u!==window.UserLeap.visitorId||window.UserLeap.token!==l)&&(S("token",l),S("vid",u),n.eventEmitter.emit(n.SprigEvent.VisitorIDUpdated,{visitorId:u}),window.UserLeap.token=l,window.UserLeap.visitorId=u)}return(d=r.json)!=null&&d.logMessage&&console.warn(`[Sprig] ${r.json.logMessage}`),r}function S(t,e){const i=n.localStorageHelper.getItem("userleap.ids");let s={};if(i)try{s=JSON.parse(i)}catch(o){o instanceof Error&&(o.stack=i,window.UserLeap.reportError("Failed to parse local storage credentials",o)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",o)}let r=s[window.UserLeap.envId];r?r[t]=e:r={[t]:e},s[window.UserLeap.envId]=r;try{n.localStorageHelper.setItem("userleap.ids",JSON.stringify(s))}catch(o){o instanceof Error&&console.warn(`[Sprig] (ERR-426) Unable to write to Local Storage:: ${o.message}`)}}function me(){return window.previewMode?"0":window.UserLeap.visitorId??""}function E(t,e,i){const s=[window.UserLeap._API_URL,"sdk",t];return e&&e.forEach(r=>{s.push(r),r===O?s.push(window.UserLeap.envId):r===D&&s.push(me())}),i&&s.push(i),s.join("/")}const B=async(t,e)=>{var Ee,Ie,ke;const{context:i,delay:s,forceBrandedLogo:r,endCard:o,isFeedback:a=!1,heatmap:d,locale:c,previewMode:p,productConfig:l,questions:u,responseGroupUid:y,surveyId:w,uuid:m,vid:L,sessionReplay:A,studyType:q}=t,v=n.getHttpHeaders(window.UserLeap),R=te(v),x=fe(v);if(A)if(R)n.eventEmitter.emit(n.SprigEvent.ReplayCapture,{responseGroupUid:y,hasQuestions:!!(u!=null&&u.length),surveyId:w,uploadId:A.uploadId,replayType:A.replayDurationType??"before",seconds:A.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:n.v4(),mediaType:"screen",questionId:1,responseGroupUid:y,surveyId:w,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!n.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};n.modules.replay.scheduleOrCaptureReplay({responseGroupId:y,surveyId:w,visitorId:L,replayParams:A,completeUploadHeaders:v,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:u.length===0})}if(d){if(!n.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};const{eventId:f,replayParams:oe,responseGroupUid:st,surveyId:at}=d;await n.modules.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),n.modules.replay.tryReplayAction(()=>{var _e;return(_e=n.modules.replay)==null?void 0:_e.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:v,eventId:f,isHeatmap:!0,replayParams:oe,responseGroupId:st,surveyId:at,triggerTimestamp:Date.now(),visitorId:L})},"Error in scheduling/capturing replay")}if(L==null||!(u!=null&&u.length))return n.breadcrumbsLogger.info("CannotDisplaySurvey",{vid:L}),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){n.breadcrumbsLogger.info("AlreadyDisplayingSurvey");const f="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(f),{success:!1,message:f,surveyState:"no survey"}}if(L!==window.UserLeap.visitorId&&m!==window.UserLeap.visitorId&&!window.previewMode){const f="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(f)),{success:!1,message:f,surveyState:"no survey"}}n.breadcrumbsLogger.info("ShowingSurvey",{surveyId:w}),(Ee=n.modules.replay)==null||Ee.RecordSurveyShown({id:w,userAgent:window.navigator.userAgent}),He.disable(),n.eventEmitter.emit(n.SprigEvent.SurveyWillPresent,{name:n.SprigEvent.SurveyWillPresent,"survey.id":w});let I,b=document.createElement("div"),h,U,$;const Se=f=>{const{"view.version":oe}=f;oe!==v["x-ul-sdk-version"]&&Ne(),n.eventEmitter.removeListener("verify.view.version",Se)};n.eventEmitter.on("verify.view.version",Se),window.UserLeap.useMobileStyling=x,n.shouldDirectEmbed(v)?(I="ul-direct-embeded-frame",h=document.head,U=window,$=!1,R&&(Ve(w,a),b.id=I,window.UserLeap.container.appendChild(b),Be(),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"presented"}),n.eventEmitter.emit(n.SprigEvent.SurveyPresented,{name:n.SprigEvent.SurveyPresented,"survey.id":w}))):{frameId:I,contentWinDocHead:h,contentWindow:U,hasOverlay:$,iframe:b}=Et({productConfig:l,useMobileStyling:x,surveyId:w,isFeedback:a}),window.UserLeap.frameId=I;const it=f=>{n.eventEmitter.once(n.SprigEvent.CloseSurveyOnOverlayClick,f)},M={apiURL:window.UserLeap._API_URL,cards:u,configureExitOnOverlayClick:it,context:i,endCard:o,envId:window.UserLeap.envId,eventEmitFn:n.eventEmitter.emit.bind(n.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:r,frame:b,headers:v,locale:c,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:n.localStorageHelper.getItem("sprig.previewKey"),previewMode:p,productConfig:{framePosition:l==null?void 0:l.framePosition,desktopDisplay:l==null?void 0:l.desktopDisplay,placement:l==null?void 0:l.placement},responseGroupUid:y,startingQuestionIdx:(Ie=window.UserLeap.config)==null?void 0:Ie.startingQuestionIdx,studyType:q,styleNonce:window.UserLeap.styleNonce,surveyId:w,tabTitle:document.title,trackPageViewUrl:e,ulEvents:n.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:x,userId:m,viewDocument:U==null?void 0:U.document,viewWindow:U,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(ke=window.UserLeap._config)!=null&&ke.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const nt=(a?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??l.customStyles;M.customStyles=nt,U&&(U.__cfg=M);function ot(){const f=document.createElement("script");return window.UserLeap.nonce&&f.setAttribute("nonce",window.UserLeap.nonce),f.id=Ae,f}const ie=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:M.path,Le=document.getElementById(Ae);Le&&Le.remove();const ne=ot(),be=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(M.installationMethod==="web-npm"||M.installationMethod==="web-npm-bundled"){const{default:f}=await Promise.resolve().then(()=>require("./view-BXXr8-Xk.cjs"));f.configure(M),$&&window.UserLeap.container&&be()}else ie&&(ne.src=ie,$&&ne.addEventListener("load",()=>{window.UserLeap.container&&be()}),U==null||U.addEventListener("error",f=>{f.target instanceof HTMLScriptElement&&f.target.src===ie&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));h==null||h.appendChild(ne);const Ue={success:!0,surveyState:"ready",surveyId:w,responseGroupUid:y};return window.UserLeap.isMobileSDK&&s&&(Ue.delay=s),Ue};function fe(t){var i;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const e=((i=window.UserLeap.windowDimensions)==null?void 0:i.width)??document.body.clientWidth;return te(t)||e>10&&e<gt}function te(t){return ht.includes(t["userleap-platform"])}const ye="ul-frame";window.UserLeap&&window.Sprig&&(window.Sprig._gtm?window.Sprig=window.UserLeap:window.UserLeap=window.Sprig);window.UserLeap||(window.UserLeap=window.Sprig);window.Sprig||(window.Sprig=window.UserLeap);const St="rgba(255,255,255, 0.95)",Lt="rgba(0,0,0,0.9)",se="0px",Ve=(t,e,i)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${e?" ul-container-feedback":""}`,t&&(window.UserLeap.container.dataset.studyId=t.toString());const s=je();i&&s&&!window.UserLeap.useMobileStyling?s.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ne=(t,e)=>{var s;kt();const i=window.UserLeap.container;if(i)try{(s=i.parentNode)==null||s.removeChild(i),window.UserLeap.container=null,S("trackStartUrl",null),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),n.eventEmitter.emit(n.SprigEvent.SurveyClosed,{name:n.SprigEvent.SurveyClosed,initiator:t,"survey.id":parseInt(i.dataset.studyId),...e&&{studyType:e}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${t} `+i),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Be=()=>{n.eventEmitter.once(n.SprigEvent.SurveyWillClose,({initiator:t,studyType:e})=>{n.eventEmitter.removeAllListeners(n.SprigEvent.CloseSurveyOnOverlayClick),Ne(t,e)})},bt=(t,e)=>{const s={...{position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646}},r=e?t.overlayStyleMobile:t.overlayStyle;s["background-color"]=r==="light"?St:Lt,e||(s.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,s)},Ut=(t,e,i,s)=>{var l,u;const r={position:"fixed",bottom:"0px",right:se,border:0,backgroundColor:"rgba(0,0,0,0)",zIndex:2147483646,transition:"width 0.2s ease-in-out, height 0.2s ease-in-out",maxWidth:"100%"},o=Object.assign({},e,window.UserLeap),{desktopDisplay:a}=e||{},d=a==="center-modal";d&&(o.framePosition="center");let c,p=!1;if(i)(l=window.UserLeap.windowDimensions)!=null&&l.width?r.width=`${window.UserLeap.windowDimensions.width}px`:r.width="100%",(u=window.UserLeap.windowDimensions)!=null&&u.height?r.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`:window.UserLeap.maxHeight?r.maxHeight=window.UserLeap.maxHeight:r.maxHeight=`${document.body.clientHeight-20}px`,["light","dark"].includes(o.overlayStyleMobile)&&(p=!0);else{r.width=Me,r.maxHeight=window.UserLeap.maxHeight||"66vh";const y=()=>{p=!0,c={margin:"auto",position:"static"}};if(s)d?y():c={position:"relative",height:"300px"};else switch(o.framePosition){case"bottomLeft":c={left:se};break;case"topLeft":c={left:se,top:0};break;case"topRight":c={top:0};break;case"center":y();break}}return p&&bt(o,i),Object.assign(t.style,r,c),p},Et=({productConfig:t,useMobileStyling:e,surveyId:i,isFeedback:s})=>{var y,w;const r=ye,o=s&&t.desktopDisplay==="slider";Ve(i,s,o),It();const a=document.createElement("iframe");a.id=r,a.setAttribute("title","Sprig User Feedback Dialog");const d=Ut(a,t,e,s);Be();let c=!1;a.setHeight=m=>{(parseInt(a.style.height)!=m||!c)&&(c=!0,a.style.height=`${m}px`,n.eventEmitter.emit(n.SprigEvent.SurveyHeight,{name:n.SprigEvent.SurveyHeight,contentFrameHeight:m,"survey.id":i}))};let p=!1;a.setWidth=m=>{(parseInt(a.style.width)!=m||!p)&&(p=!0,a.style.width=`${m}px`,n.eventEmitter.emit(n.SprigEvent.SurveyWidth,{name:n.SprigEvent.SurveyWidth,contentFrameWidth:m,"survey.id":i}))},(y=window.UserLeap.container)==null||y.appendChild(a),t&&(e?t.exitOnOverlayClickMobile:t.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{n.eventEmitter.emit(n.SprigEvent.CloseSurveyOnOverlayClick)}),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"presented"}),n.eventEmitter.emit(n.SprigEvent.SurveyPresented,{name:n.SprigEvent.SurveyPresented,"survey.id":i});const l=(w=a.contentWindow)==null?void 0:w.document;if(l&&(l.open("text/html","replace"),l.write("<!doctype html><head></head><body></body></html>"),l.close(),!e)){const m=l.body;m.style.display="flex",m.style.alignItems="center"}const u=l==null?void 0:l.head;return{frameId:r,contentWinDocHead:u,contentWindow:a.contentWindow,hasOverlay:d,iframe:a}},We={[n.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},It=()=>{Object.entries(We).forEach(([t,e])=>{n.eventEmitter.on(t,e)})},kt=()=>{Object.entries(We).forEach(([t,e])=>{n.eventEmitter.off(t,e)})},_t=1,De=t=>t instanceof HTMLElement||t instanceof SVGElement,z=({document:t,elementId:e,styleString:i,nonce:s})=>{const r=t.getElementById(e);if(r){r.textContent=i;return}const o=t.createElement("style");s&&(o.nonce=s),o.textContent=i,o.id=e,t.head.appendChild(o)},ze=t=>{const e=t.querySelector(".ul-card__container");let i=600,s=360;if(e){i=e.scrollHeight;const r=getComputedStyle(e),o=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),d=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);i+=o+a+d;const c=e.querySelector(".ul-card--matrix_grid");s=c?c.scrollWidth:e.scrollWidth;const p=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),l=parseFloat(r.marginLeft)+parseFloat(r.marginRight),u=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);s+=l+u+p}return[i+_t,s]},Rt=t=>{const e=t.querySelector(".ul-card__container");e&&(e.scrollTop=0)},je=()=>g,H=()=>document.getElementById("sprig-feedback-container"),ve=()=>document.getElementById("sprig-feedback-loading-animation"),At=()=>{if(ve())return;const t=document.createElement("div");return t.className="ul-loading-spinner-container",t.id="sprig-feedback-loading-animation",t.role="progressbar",t.setAttribute("aria-live","polite"),t.setAttribute("aria-busy","true"),t.setAttribute("aria-label","Processing..."),t.innerHTML=`
1
+ "use strict";var dt=Object.defineProperty;var lt=(t,e,i)=>e in t?dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var F=(t,e,i)=>(lt(t,typeof e!="symbol"?e+"":e,i),i);const n=require("./metricsReporter-ikJ_RTTQ.cjs"),ct='.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}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}',Me="360px",pt="ul-app",ut="#e6e6e6",wt="#bd282a",gt=500,mt=1030,Fe=()=>{try{return window.parent.Intercom}catch{return null}},ft=()=>{const t=Fe();t&&(t.ul_wasVisible&&t("update",{hide_default_launcher:!1}),delete t.ul_wasVisible)},yt=()=>{const t=Fe();t&&(t.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),t.ul_wasVisible&&t("update",{hide_default_launcher:!0}))},vt=Object.freeze(Object.defineProperty({__proto__:null,disable:yt,enable:ft},Symbol.toStringTag,{value:"Module"})),Re=[vt];class He{static disable(){Re.forEach(e=>e.disable())}static enable(){Re.forEach(e=>e.enable())}}const Ae="ul-view-sdk-script",ht=["ios","android"],D="visitors",O="environments";async function k(t,e){var o,a,d;const{shouldDropOnRateLimit:i,...s}=e;s.headers=Object.assign(n.getHttpHeaders(window.UserLeap),s.headers);const r=await n.sprigFetch(t,{...s,shouldDropOnRateLimit:i});if(r.ok){const c=(o=r.headers)==null?void 0:o.get("Authorization"),p=c?c.split(" "):void 0,l=p&&p.length===2?p[1]:void 0,u=(a=r.headers)==null?void 0:a.get("x-ul-visitor-id");l&&u&&(u!==window.UserLeap.visitorId||window.UserLeap.token!==l)&&(S("token",l),S("vid",u),n.eventEmitter.emit(n.SprigEvent.VisitorIDUpdated,{visitorId:u}),window.UserLeap.token=l,window.UserLeap.visitorId=u)}return(d=r.json)!=null&&d.logMessage&&console.warn(`[Sprig] ${r.json.logMessage}`),r}function S(t,e){const i=n.localStorageHelper.getItem("userleap.ids");let s={};if(i)try{s=JSON.parse(i)}catch(o){o instanceof Error&&(o.stack=i,window.UserLeap.reportError("Failed to parse local storage credentials",o)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",o)}let r=s[window.UserLeap.envId];r?r[t]=e:r={[t]:e},s[window.UserLeap.envId]=r;try{n.localStorageHelper.setItem("userleap.ids",JSON.stringify(s))}catch(o){o instanceof Error&&console.warn(`[Sprig] (ERR-426) Unable to write to Local Storage:: ${o.message}`)}}function me(){return window.previewMode?"0":window.UserLeap.visitorId??""}function E(t,e,i){const s=[window.UserLeap._API_URL,"sdk",t];return e&&e.forEach(r=>{s.push(r),r===O?s.push(window.UserLeap.envId):r===D&&s.push(me())}),i&&s.push(i),s.join("/")}const B=async(t,e)=>{var Ee,Ie,ke;const{context:i,delay:s,forceBrandedLogo:r,endCard:o,isFeedback:a=!1,heatmap:d,locale:c,previewMode:p,productConfig:l,questions:u,responseGroupUid:y,surveyId:w,uuid:m,vid:L,sessionReplay:A,studyType:q}=t,v=n.getHttpHeaders(window.UserLeap),R=te(v),x=fe(v);if(A)if(R)n.eventEmitter.emit(n.SprigEvent.ReplayCapture,{responseGroupUid:y,hasQuestions:!!(u!=null&&u.length),surveyId:w,uploadId:A.uploadId,replayType:A.replayDurationType??"before",seconds:A.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:n.v4(),mediaType:"screen",questionId:1,responseGroupUid:y,surveyId:w,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!n.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};n.modules.replay.scheduleOrCaptureReplay({responseGroupId:y,surveyId:w,visitorId:L,replayParams:A,completeUploadHeaders:v,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:u.length===0})}if(d){if(!n.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};const{eventId:f,replayParams:oe,responseGroupUid:st,surveyId:at}=d;await n.modules.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),n.modules.replay.tryReplayAction(()=>{var _e;return(_e=n.modules.replay)==null?void 0:_e.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:v,eventId:f,isHeatmap:!0,replayParams:oe,responseGroupId:st,surveyId:at,triggerTimestamp:Date.now(),visitorId:L})},"Error in scheduling/capturing replay")}if(L==null||!(u!=null&&u.length))return n.breadcrumbsLogger.info("CannotDisplaySurvey",{vid:L}),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){n.breadcrumbsLogger.info("AlreadyDisplayingSurvey");const f="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(f),{success:!1,message:f,surveyState:"no survey"}}if(L!==window.UserLeap.visitorId&&m!==window.UserLeap.visitorId&&!window.previewMode){const f="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(f)),{success:!1,message:f,surveyState:"no survey"}}n.breadcrumbsLogger.info("ShowingSurvey",{surveyId:w}),(Ee=n.modules.replay)==null||Ee.RecordSurveyShown({id:w,userAgent:window.navigator.userAgent}),He.disable(),n.eventEmitter.emit(n.SprigEvent.SurveyWillPresent,{name:n.SprigEvent.SurveyWillPresent,"survey.id":w});let I,b=document.createElement("div"),h,U,$;const Se=f=>{const{"view.version":oe}=f;oe!==v["x-ul-sdk-version"]&&Ne(),n.eventEmitter.removeListener("verify.view.version",Se)};n.eventEmitter.on("verify.view.version",Se),window.UserLeap.useMobileStyling=x,n.shouldDirectEmbed(v)?(I="ul-direct-embeded-frame",h=document.head,U=window,$=!1,R&&(Ve(w,a),b.id=I,window.UserLeap.container.appendChild(b),Be(),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"presented"}),n.eventEmitter.emit(n.SprigEvent.SurveyPresented,{name:n.SprigEvent.SurveyPresented,"survey.id":w}))):{frameId:I,contentWinDocHead:h,contentWindow:U,hasOverlay:$,iframe:b}=Et({productConfig:l,useMobileStyling:x,surveyId:w,isFeedback:a}),window.UserLeap.frameId=I;const it=f=>{n.eventEmitter.once(n.SprigEvent.CloseSurveyOnOverlayClick,f)},M={apiURL:window.UserLeap._API_URL,cards:u,configureExitOnOverlayClick:it,context:i,endCard:o,envId:window.UserLeap.envId,eventEmitFn:n.eventEmitter.emit.bind(n.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:r,frame:b,headers:v,locale:c,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:n.localStorageHelper.getItem("sprig.previewKey"),previewMode:p,productConfig:{framePosition:l==null?void 0:l.framePosition,desktopDisplay:l==null?void 0:l.desktopDisplay,placement:l==null?void 0:l.placement},responseGroupUid:y,startingQuestionIdx:(Ie=window.UserLeap.config)==null?void 0:Ie.startingQuestionIdx,studyType:q,styleNonce:window.UserLeap.styleNonce,surveyId:w,tabTitle:document.title,trackPageViewUrl:e,ulEvents:n.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:x,userId:m,viewDocument:U==null?void 0:U.document,viewWindow:U,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(ke=window.UserLeap._config)!=null&&ke.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const nt=(a?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??l.customStyles;M.customStyles=nt,U&&(U.__cfg=M);function ot(){const f=document.createElement("script");return window.UserLeap.nonce&&f.setAttribute("nonce",window.UserLeap.nonce),f.id=Ae,f}const ie=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:M.path,Le=document.getElementById(Ae);Le&&Le.remove();const ne=ot(),be=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(M.installationMethod==="web-npm"||M.installationMethod==="web-npm-bundled"){const{default:f}=await Promise.resolve().then(()=>require("./view-C7NBKswM.cjs"));f.configure(M),$&&window.UserLeap.container&&be()}else ie&&(ne.src=ie,$&&ne.addEventListener("load",()=>{window.UserLeap.container&&be()}),U==null||U.addEventListener("error",f=>{f.target instanceof HTMLScriptElement&&f.target.src===ie&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));h==null||h.appendChild(ne);const Ue={success:!0,surveyState:"ready",surveyId:w,responseGroupUid:y};return window.UserLeap.isMobileSDK&&s&&(Ue.delay=s),Ue};function fe(t){var i;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const e=((i=window.UserLeap.windowDimensions)==null?void 0:i.width)??document.body.clientWidth;return te(t)||e>10&&e<gt}function te(t){return ht.includes(t["userleap-platform"])}const ye="ul-frame";window.UserLeap&&window.Sprig&&(window.Sprig._gtm?window.Sprig=window.UserLeap:window.UserLeap=window.Sprig);window.UserLeap||(window.UserLeap=window.Sprig);window.Sprig||(window.Sprig=window.UserLeap);const St="rgba(255,255,255, 0.95)",Lt="rgba(0,0,0,0.9)",se="0px",Ve=(t,e,i)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${e?" ul-container-feedback":""}`,t&&(window.UserLeap.container.dataset.studyId=t.toString());const s=je();i&&s&&!window.UserLeap.useMobileStyling?s.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ne=(t,e)=>{var s;kt();const i=window.UserLeap.container;if(i)try{(s=i.parentNode)==null||s.removeChild(i),window.UserLeap.container=null,S("trackStartUrl",null),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),n.eventEmitter.emit(n.SprigEvent.SurveyClosed,{name:n.SprigEvent.SurveyClosed,initiator:t,"survey.id":parseInt(i.dataset.studyId),...e&&{studyType:e}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${t} `+i),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Be=()=>{n.eventEmitter.once(n.SprigEvent.SurveyWillClose,({initiator:t,studyType:e})=>{n.eventEmitter.removeAllListeners(n.SprigEvent.CloseSurveyOnOverlayClick),Ne(t,e)})},bt=(t,e)=>{const s={...{position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646}},r=e?t.overlayStyleMobile:t.overlayStyle;s["background-color"]=r==="light"?St:Lt,e||(s.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,s)},Ut=(t,e,i,s)=>{var l,u;const r={position:"fixed",bottom:"0px",right:se,border:0,backgroundColor:"rgba(0,0,0,0)",zIndex:2147483646,transition:"width 0.2s ease-in-out, height 0.2s ease-in-out",maxWidth:"100%"},o=Object.assign({},e,window.UserLeap),{desktopDisplay:a}=e||{},d=a==="center-modal";d&&(o.framePosition="center");let c,p=!1;if(i)(l=window.UserLeap.windowDimensions)!=null&&l.width?r.width=`${window.UserLeap.windowDimensions.width}px`:r.width="100%",(u=window.UserLeap.windowDimensions)!=null&&u.height?r.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`:window.UserLeap.maxHeight?r.maxHeight=window.UserLeap.maxHeight:r.maxHeight=`${document.body.clientHeight-20}px`,["light","dark"].includes(o.overlayStyleMobile)&&(p=!0);else{r.width=Me,r.maxHeight=window.UserLeap.maxHeight||"66vh";const y=()=>{p=!0,c={margin:"auto",position:"static"}};if(s)d?y():c={position:"relative",height:"300px"};else switch(o.framePosition){case"bottomLeft":c={left:se};break;case"topLeft":c={left:se,top:0};break;case"topRight":c={top:0};break;case"center":y();break}}return p&&bt(o,i),Object.assign(t.style,r,c),p},Et=({productConfig:t,useMobileStyling:e,surveyId:i,isFeedback:s})=>{var y,w;const r=ye,o=s&&t.desktopDisplay==="slider";Ve(i,s,o),It();const a=document.createElement("iframe");a.id=r,a.setAttribute("title","Sprig User Feedback Dialog");const d=Ut(a,t,e,s);Be();let c=!1;a.setHeight=m=>{(parseInt(a.style.height)!=m||!c)&&(c=!0,a.style.height=`${m}px`,n.eventEmitter.emit(n.SprigEvent.SurveyHeight,{name:n.SprigEvent.SurveyHeight,contentFrameHeight:m,"survey.id":i}))};let p=!1;a.setWidth=m=>{(parseInt(a.style.width)!=m||!p)&&(p=!0,a.style.width=`${m}px`,n.eventEmitter.emit(n.SprigEvent.SurveyWidth,{name:n.SprigEvent.SurveyWidth,contentFrameWidth:m,"survey.id":i}))},(y=window.UserLeap.container)==null||y.appendChild(a),t&&(e?t.exitOnOverlayClickMobile:t.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{n.eventEmitter.emit(n.SprigEvent.CloseSurveyOnOverlayClick)}),n.eventEmitter.emit(n.SprigEvent.SurveyLifeCycle,{state:"presented"}),n.eventEmitter.emit(n.SprigEvent.SurveyPresented,{name:n.SprigEvent.SurveyPresented,"survey.id":i});const l=(w=a.contentWindow)==null?void 0:w.document;if(l&&(l.open("text/html","replace"),l.write("<!doctype html><head></head><body></body></html>"),l.close(),!e)){const m=l.body;m.style.display="flex",m.style.alignItems="center"}const u=l==null?void 0:l.head;return{frameId:r,contentWinDocHead:u,contentWindow:a.contentWindow,hasOverlay:d,iframe:a}},We={[n.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},It=()=>{Object.entries(We).forEach(([t,e])=>{n.eventEmitter.on(t,e)})},kt=()=>{Object.entries(We).forEach(([t,e])=>{n.eventEmitter.off(t,e)})},_t=1,De=t=>t instanceof HTMLElement||t instanceof SVGElement,z=({document:t,elementId:e,styleString:i,nonce:s})=>{const r=t.getElementById(e);if(r){r.textContent=i;return}const o=t.createElement("style");s&&(o.nonce=s),o.textContent=i,o.id=e,t.head.appendChild(o)},ze=t=>{const e=t.querySelector(".ul-card__container");let i=600,s=360;if(e){i=e.scrollHeight;const r=getComputedStyle(e),o=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),d=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);i+=o+a+d;const c=e.querySelector(".ul-card--matrix_grid");s=c?c.scrollWidth:e.scrollWidth;const p=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),l=parseFloat(r.marginLeft)+parseFloat(r.marginRight),u=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);s+=l+u+p}return[i+_t,s]},Rt=t=>{const e=t.querySelector(".ul-card__container");e&&(e.scrollTop=0)},je=()=>g,H=()=>document.getElementById("sprig-feedback-container"),ve=()=>document.getElementById("sprig-feedback-loading-animation"),At=()=>{if(ve())return;const t=document.createElement("div");return t.className="ul-loading-spinner-container",t.id="sprig-feedback-loading-animation",t.role="progressbar",t.setAttribute("aria-live","polite"),t.setAttribute("aria-busy","true"),t.setAttribute("aria-label","Processing..."),t.innerHTML=`
2
2
  <div class="ul-loading-spinner">
3
3
  <div class="first"></div>
4
4
  <div class="second"></div>
package/dist/core.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./metricsReporter-Bv4AKHDN.cjs"),e=require("./core-D5rViL33.cjs");exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./metricsReporter-ikJ_RTTQ.cjs"),e=require("./core-JazVRZuc.cjs");exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;
package/dist/core.d.ts CHANGED
@@ -1257,6 +1257,7 @@ interface MatrixCard extends BaseCard {
1257
1257
  buttonText?: string;
1258
1258
  captionText: string;
1259
1259
  conceptUrl: ConceptUrl;
1260
+ displayMatrixAsAccordion?: boolean;
1260
1261
  matrixColumn: {
1261
1262
  label: string;
1262
1263
  value: string;
package/dist/core.js CHANGED
@@ -1 +1 @@
1
- import{D as s,S as a}from"./metricsReporter-DKI8BwWD.js";import{S as r,c as i,s as o}from"./core-CkasK3Wg.js";export{s as DismissReason,r as SprigAPI,a as SprigEvent,i as default,o as sprig};
1
+ import{D as s,S as a}from"./metricsReporter-pb5Px0rg.js";import{S as r,c as i,s as o}from"./core-B6K_G_tP.js";export{s as DismissReason,r as SprigAPI,a as SprigEvent,i as default,o as sprig};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-D5rViL33.cjs");require("./replay.cjs");const r=require("./metricsReporter-Bv4AKHDN.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-JazVRZuc.cjs");require("./replay.cjs");const r=require("./metricsReporter-ikJ_RTTQ.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
@@ -1257,6 +1257,7 @@ interface MatrixCard extends BaseCard {
1257
1257
  buttonText?: string;
1258
1258
  captionText: string;
1259
1259
  conceptUrl: ConceptUrl;
1260
+ displayMatrixAsAccordion?: boolean;
1260
1261
  matrixColumn: {
1261
1262
  label: string;
1262
1263
  value: string;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{S as s,c as a,s as i}from"./core-CkasK3Wg.js";import"./replay.js";import{D as r,S as o}from"./metricsReporter-DKI8BwWD.js";export{r as DismissReason,s as SprigAPI,o as SprigEvent,a as default,i as sprig};
1
+ import{S as s,c as a,s as i}from"./core-B6K_G_tP.js";import"./replay.js";import{D as r,S as o}from"./metricsReporter-pb5Px0rg.js";export{r as DismissReason,s as SprigAPI,o as SprigEvent,a as default,i as sprig};
@@ -1 +1 @@
1
- "use strict";var Y=Object.defineProperty;var B=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t,r)=>(B(e,typeof t!="symbol"?t+"":t,r),r);var S=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(S||{}),k=(e=>(e.ReplayCapture="replay.capture",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",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))(k||{});const q={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"}};let p;const N=new Uint8Array(16);function F(){if(!p&&(p=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!p))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return p(N)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function j(e,t=0){return n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]}const $=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),R={randomUUID:$};function J(e,t,r){if(R.randomUUID&&!t&&!e)return R.randomUUID();e=e||{};const s=e.random||(e.rng||F)();return s[6]=s[6]&15|64,s[8]=s[8]&63|128,j(s)}const K=300;class G{constructor(){a(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(t){this.breadcrumbs.push(t),this.breadcrumbs.length>K&&this.breadcrumbs.shift()}debug(t,r="debug"){this.addBreadcrumb({category:r,level:"info",message:t,timestamp:this.getTimeStamp(),type:"debug"})}error(t,r={}){this.addBreadcrumb({category:"error",data:r,level:"error",message:t,timestamp:this.getTimeStamp(),type:"error"})}http(t,r){this.addBreadcrumb({category:"xhr",data:r,message:t,timestamp:this.getTimeStamp(),type:"http"})}info(t,r={}){this.addBreadcrumb({category:"info",data:r,level:"info",message:t,timestamp:this.getTimeStamp(),type:"info"})}navigation(t,r){this.addBreadcrumb({category:"navigation",data:r,message:t,timestamp:this.getTimeStamp(),type:"navigation"})}}const A=new G;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"}},T=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=T.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)}},C=T;C.defaultMaxListeners=10;const z=new C,v=async e=>{await new Promise(t=>{setTimeout(t,e)})},X=({"userleap-platform":e})=>e!=="web";class O{constructor(t){a(this,"storage");a(this,"tempStorage",{});a(this,"isStorageAvailable");this.storage=window[t],this.isStorageAvailable=this.checkIfStorageAvailable()}checkIfStorageAvailable(){try{const t="__storage_test__";return this.storage.setItem(t,t),this.storage.removeItem(t),!0}catch{return!1}}setItem(t,r){this.isStorageAvailable?this.storage.setItem(t,r):this.tempStorage[t]=r}getItem(t){return this.isStorageAvailable?this.storage.getItem(t):this.tempStorage[t]}removeItem(t){this.isStorageAvailable?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable?this.storage.clear():this.tempStorage={}}}const Z=new O("sessionStorage"),ee=new O("localStorage");class te{constructor(t){a(this,"payload");a(this,"promise");a(this,"reject",()=>{});a(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const L={replay:null},re=e=>{L.replay=e},se=()=>{const e=[];return L.replay&&e.push("replay"),e.join(",")},ne={RATELIMIT_RESET_DEFAULT:10};let U=!1,x="",y=!1,M=!1,g=[];const ie=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",oe=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(M=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},D=(e="")=>{U=!0,x=e};function ae(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.6","x-ul-installation-method":ie(e),"sprig-modules":se()};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}const w=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new te(t);return g.push(r),r.promise}},_=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:m=!1,...l}=t,c={url:e,options:l,retries:r,shouldDropOnRateLimit:s};if(y&&!m)return w(c);const u={ok:!1,reportError:!1};if(U)return console.info(`UserLeap - ${x}`),u;try{const i=await fetch(e,l);if(i.status===429)if(!y&&!s||m){y=!0;const d=i.headers.has("ratelimit-reset")?Number(i.headers.get("ratelimit-reset")):ne.RATELIMIT_RESET_DEFAULT;return await v(d*1e3),_(e,{...l,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}else return w(c);if(y=!1,g.length&&(g.map(o=>{const d=o.payload;_(d.url,{...d.options,retries:d.retries,shouldDropOnRateLimit:d.shouldDropOnRateLimit}).then(W=>{o.resolveRequest(W)})}),g=[]),i.ok){if(i.status===249)return D(),u;const o=await i.text();try{return o&&o!=="OK"&&(i.json=JSON.parse(o)),i}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${o}`)}}}return i}catch(i){const o=r+1;return o>5||M?{ok:!1,reportError:!1,error:i}:(await v(Math.pow(2,r)*1e3),_(e,{...l,retries:o}))}},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 P(e,t){const{matchType:r,pattern:s}=e,m=r?I[r]:I.legacy;let l=!1;try{l=m(s,t)}catch(c){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;c instanceof Error&&(console.warn(u,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(u,c))}return l}const le=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return r?P(r,window.location.href):!1};let V=!0,b=!1;const ce=()=>V=!1,de=()=>b=!0,ue=["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 h={},E;class he{constructor(t){a(this,"_values",[]);a(this,"_isWebMetric");this.name=t,this._isWebMetric=ue.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),b||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&E&&E(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=h[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:!1}}const me=(e,t)=>{h={},b=!1,e==null||e.forEach(r=>{var s;r.metric in h||(h[r.metric]=[]),(s=h[r.metric])==null||s.push(r)}),E=t},f={},H=e=>{const t=new he(e);return f[e]=t,t},pe=(e,t)=>{let r=f[e];return r||(r=H(e)),r.report(t)},ye=async e=>{const t=Object.values(f).map(r=>({name:r.name,values:r.collect()}));if(t.some(r=>r.values.length))try{await e(JSON.stringify(t))}catch(r){r instanceof Error&&A.error("MetricsErr",{error:{message:r.message,name:r.name}})}},ge=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{ye(t)},e*1e3):ce()};exports.DismissReason=S;exports.EVENTS=q;exports.PerformanceMetrics=f;exports.SprigEvent=k;exports.breadcrumbsLogger=A;exports.checkUrlMatch=P;exports.checkUrlStillMatching=le;exports.cspViolationHandler=oe;exports.delay=v;exports.disableThresholdChecking=de;exports.eventEmitter=z;exports.getHttpHeaders=ae;exports.initPerformanceReporting=ge;exports.killNetworkRequests=D;exports.localStorageHelper=ee;exports.modules=L;exports.registerMetric=H;exports.registerReplay=re;exports.registerThresholds=me;exports.reportAndRegister=pe;exports.sessionStorageHelper=Z;exports.shouldDirectEmbed=X;exports.sprigFetch=_;exports.v4=J;
1
+ "use strict";var Y=Object.defineProperty;var B=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t,r)=>(B(e,typeof t!="symbol"?t+"":t,r),r);var S=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(S||{}),k=(e=>(e.ReplayCapture="replay.capture",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",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))(k||{});const q={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"}};let p;const N=new Uint8Array(16);function F(){if(!p&&(p=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!p))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return p(N)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function j(e,t=0){return n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]}const $=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),R={randomUUID:$};function J(e,t,r){if(R.randomUUID&&!t&&!e)return R.randomUUID();e=e||{};const s=e.random||(e.rng||F)();return s[6]=s[6]&15|64,s[8]=s[8]&63|128,j(s)}const K=300;class G{constructor(){a(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(t){this.breadcrumbs.push(t),this.breadcrumbs.length>K&&this.breadcrumbs.shift()}debug(t,r="debug"){this.addBreadcrumb({category:r,level:"info",message:t,timestamp:this.getTimeStamp(),type:"debug"})}error(t,r={}){this.addBreadcrumb({category:"error",data:r,level:"error",message:t,timestamp:this.getTimeStamp(),type:"error"})}http(t,r){this.addBreadcrumb({category:"xhr",data:r,message:t,timestamp:this.getTimeStamp(),type:"http"})}info(t,r={}){this.addBreadcrumb({category:"info",data:r,level:"info",message:t,timestamp:this.getTimeStamp(),type:"info"})}navigation(t,r){this.addBreadcrumb({category:"navigation",data:r,message:t,timestamp:this.getTimeStamp(),type:"navigation"})}}const A=new G;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"}},T=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=T.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)}},C=T;C.defaultMaxListeners=10;const z=new C,v=async e=>{await new Promise(t=>{setTimeout(t,e)})},X=({"userleap-platform":e})=>e!=="web";class O{constructor(t){a(this,"storage");a(this,"tempStorage",{});a(this,"isStorageAvailable");this.storage=window[t],this.isStorageAvailable=this.checkIfStorageAvailable()}checkIfStorageAvailable(){try{const t="__storage_test__";return this.storage.setItem(t,t),this.storage.removeItem(t),!0}catch{return!1}}setItem(t,r){this.isStorageAvailable?this.storage.setItem(t,r):this.tempStorage[t]=r}getItem(t){return this.isStorageAvailable?this.storage.getItem(t):this.tempStorage[t]}removeItem(t){this.isStorageAvailable?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable?this.storage.clear():this.tempStorage={}}}const Z=new O("sessionStorage"),ee=new O("localStorage");class te{constructor(t){a(this,"payload");a(this,"promise");a(this,"reject",()=>{});a(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const L={replay:null},re=e=>{L.replay=e},se=()=>{const e=[];return L.replay&&e.push("replay"),e.join(",")},ne={RATELIMIT_RESET_DEFAULT:10};let U=!1,x="",y=!1,M=!1,g=[];const ie=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",oe=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(M=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},D=(e="")=>{U=!0,x=e};function ae(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.32.0","x-ul-installation-method":ie(e),"sprig-modules":se()};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}const w=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new te(t);return g.push(r),r.promise}},_=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:m=!1,...l}=t,c={url:e,options:l,retries:r,shouldDropOnRateLimit:s};if(y&&!m)return w(c);const u={ok:!1,reportError:!1};if(U)return console.info(`UserLeap - ${x}`),u;try{const i=await fetch(e,l);if(i.status===429)if(!y&&!s||m){y=!0;const d=i.headers.has("ratelimit-reset")?Number(i.headers.get("ratelimit-reset")):ne.RATELIMIT_RESET_DEFAULT;return await v(d*1e3),_(e,{...l,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}else return w(c);if(y=!1,g.length&&(g.map(o=>{const d=o.payload;_(d.url,{...d.options,retries:d.retries,shouldDropOnRateLimit:d.shouldDropOnRateLimit}).then(W=>{o.resolveRequest(W)})}),g=[]),i.ok){if(i.status===249)return D(),u;const o=await i.text();try{return o&&o!=="OK"&&(i.json=JSON.parse(o)),i}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${o}`)}}}return i}catch(i){const o=r+1;return o>5||M?{ok:!1,reportError:!1,error:i}:(await v(Math.pow(2,r)*1e3),_(e,{...l,retries:o}))}},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 P(e,t){const{matchType:r,pattern:s}=e,m=r?I[r]:I.legacy;let l=!1;try{l=m(s,t)}catch(c){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;c instanceof Error&&(console.warn(u,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(u,c))}return l}const le=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return r?P(r,window.location.href):!1};let V=!0,b=!1;const ce=()=>V=!1,de=()=>b=!0,ue=["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 h={},E;class he{constructor(t){a(this,"_values",[]);a(this,"_isWebMetric");this.name=t,this._isWebMetric=ue.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),b||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&E&&E(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=h[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:!1}}const me=(e,t)=>{h={},b=!1,e==null||e.forEach(r=>{var s;r.metric in h||(h[r.metric]=[]),(s=h[r.metric])==null||s.push(r)}),E=t},f={},H=e=>{const t=new he(e);return f[e]=t,t},pe=(e,t)=>{let r=f[e];return r||(r=H(e)),r.report(t)},ye=async e=>{const t=Object.values(f).map(r=>({name:r.name,values:r.collect()}));if(t.some(r=>r.values.length))try{await e(JSON.stringify(t))}catch(r){r instanceof Error&&A.error("MetricsErr",{error:{message:r.message,name:r.name}})}},ge=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{ye(t)},e*1e3):ce()};exports.DismissReason=S;exports.EVENTS=q;exports.PerformanceMetrics=f;exports.SprigEvent=k;exports.breadcrumbsLogger=A;exports.checkUrlMatch=P;exports.checkUrlStillMatching=le;exports.cspViolationHandler=oe;exports.delay=v;exports.disableThresholdChecking=de;exports.eventEmitter=z;exports.getHttpHeaders=ae;exports.initPerformanceReporting=ge;exports.killNetworkRequests=D;exports.localStorageHelper=ee;exports.modules=L;exports.registerMetric=H;exports.registerReplay=re;exports.registerThresholds=me;exports.reportAndRegister=pe;exports.sessionStorageHelper=Z;exports.shouldDirectEmbed=X;exports.sprigFetch=_;exports.v4=J;
@@ -1 +1 @@
1
- var Y=Object.defineProperty,j=(e,t,s)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,o=(e,t,s)=>(j(e,typeof t!="symbol"?t+"":t,s),s),b=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(b||{}),w=(e=>(e.ReplayCapture="replay.capture",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",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))(w||{});const B={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"}};let m;const F=new Uint8Array(16);function q(){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 n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function H(e,t=0){return n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]}const $=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),I={randomUUID:$};function J(e,t,s){if(I.randomUUID&&!t&&!e)return I.randomUUID();e=e||{};const r=e.random||(e.rng||q)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,H(r)}const K=300;class G{constructor(){o(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(t){this.breadcrumbs.push(t),this.breadcrumbs.length>K&&this.breadcrumbs.shift()}debug(t,s="debug"){this.addBreadcrumb({category:s,level:"info",message:t,timestamp:this.getTimeStamp(),type:"debug"})}error(t,s={}){this.addBreadcrumb({category:"error",data:s,level:"error",message:t,timestamp:this.getTimeStamp(),type:"error"})}http(t,s){this.addBreadcrumb({category:"xhr",data:s,message:t,timestamp:this.getTimeStamp(),type:"http"})}info(t,s={}){this.addBreadcrumb({category:"info",data:s,level:"info",message:t,timestamp:this.getTimeStamp(),type:"info"})}navigation(t,s){this.addBreadcrumb({category:"navigation",data:s,message:t,timestamp:this.getTimeStamp(),type:"navigation"})}}const R=new G;var z=class extends Error{constructor(e,t,s){super(`Possible EventEmitter memory leak detected. ${s} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=s,this.name="MaxListenersExceededWarning"}},O=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=O.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,s){this.emit(e,t,s)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const s=e.indexOf(t);return s>-1&&e.splice(s,1),[]}_wrapOnceListener(e,t){const s=(...r)=>(this.removeListener(e,s),t.apply(this,r));return Object.defineProperty(s,"name",{value:t.name}),s}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const s=this._getListeners(e);return s.forEach(r=>{r.apply(this,t)}),s.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const s=this._getListeners(e).concat(t);if(this.events.set(e,s),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const r=new z(this,e,this.listenerCount(e));console.warn(r)}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 s=this._getListeners(e);if(s.length>0){const r=[t].concat(s);this.events.set(e,r)}else this.events.set(e,s.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const s=this._getListeners(e);return s.length>0&&(this._removeListener(s,t),this.events.set(e,s),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)}},k=O;k.defaultMaxListeners=10;const Q=new k,E=async e=>{await new Promise(t=>{setTimeout(t,e)})},X=({"userleap-platform":e})=>e!=="web";class A{constructor(t){o(this,"storage"),o(this,"tempStorage",{}),o(this,"isStorageAvailable"),this.storage=window[t],this.isStorageAvailable=this.checkIfStorageAvailable()}checkIfStorageAvailable(){try{const t="__storage_test__";return this.storage.setItem(t,t),this.storage.removeItem(t),!0}catch{return!1}}setItem(t,s){this.isStorageAvailable?this.storage.setItem(t,s):this.tempStorage[t]=s}getItem(t){return this.isStorageAvailable?this.storage.getItem(t):this.tempStorage[t]}removeItem(t){this.isStorageAvailable?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable?this.storage.clear():this.tempStorage={}}}const Z=new A("sessionStorage"),ee=new A("localStorage");class te{constructor(t){o(this,"payload"),o(this,"promise"),o(this,"reject",()=>{}),o(this,"resolve",()=>{}),this.payload=t,this.promise=new Promise((s,r)=>{this.reject=r,this.resolve=s})}resolveRequest(t){this.resolve(t)}}const S={replay:null},se=e=>{S.replay=e},re=()=>{const e=[];return S.replay&&e.push("replay"),e.join(",")},ne={RATELIMIT_RESET_DEFAULT:10};let D=!1,U="",v=!1,C=!1,y=[];const ie=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ae=e=>{var t;(t=e?.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(C=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},x=(e="")=>{D=!0,U=e};function oe(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.6","x-ul-installation-method":ie(e),"sprig-modules":re()};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 s=JSON.parse(e.mobileHeadersJSON);Object.assign(t,s)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t}const T=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const s=new te(t);return y.push(s),s.promise}},g=async(e,t)=>{const{retries:s=0,shouldDropOnRateLimit:r=!1,shouldRetryRequest:h=!1,...l}=t,c={url:e,options:l,retries:s,shouldDropOnRateLimit:r};if(v&&!h)return T(c);const u={ok:!1,reportError:!1};if(D)return console.info(`UserLeap - ${U}`),u;try{const a=await fetch(e,l);if(a.status===429)if(!v&&!r||h){v=!0;const i=a.headers.has("ratelimit-reset")?Number(a.headers.get("ratelimit-reset")):ne.RATELIMIT_RESET_DEFAULT;return await E(i*1e3),g(e,{...l,shouldDropOnRateLimit:r,shouldRetryRequest:!0})}else return T(c);if(v=!1,y.length&&(y.map(i=>{const p=i.payload;g(p.url,{...p.options,retries:p.retries,shouldDropOnRateLimit:p.shouldDropOnRateLimit}).then(W=>{i.resolveRequest(W)})}),y=[]),a.ok){if(a.status===249)return x(),u;const i=await a.text();try{return i&&i!=="OK"&&(a.json=JSON.parse(i)),a}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${i}`)}}}return a}catch(a){const i=s+1;return i>5||C?{ok:!1,reportError:!1,error:a}:(await E(Math.pow(2,s)*1e3),g(e,{...l,retries:i}))}},P=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 M(e,t){const{matchType:s,pattern:r}=e,h=s?P[s]:P.legacy;let l=!1;try{l=h(r,t)}catch(c){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${r}`;c instanceof Error&&(console.warn(u,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(u,c))}return l}const le=e=>{const{pageUrlEvents:t}=window.UserLeap._config,s=t?.find(r=>r.id===e);return s?M(s,window.location.href):!1};let N=!0,f=!1;const ce=()=>N=!1,ue=()=>f=!0,de=["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 d={},L;class he{constructor(t){o(this,"_values",[]),o(this,"_isWebMetric"),this.name=t,this._isWebMetric=de.includes(this.name)}report(t){if(N&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const s=this.findExceededThreshold(t);s&&L&&L(t,s)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const s=d[this.name];if(s)return s.find(r=>this.valueExceedsThreshold(t,r))}valueExceedsThreshold(t,s){return s.type==="max"?t>s.value:s.type==="min"?t<s.value:!1}}const pe=(e,t)=>{d={},f=!1,e?.forEach(s=>{var r;s.metric in d||(d[s.metric]=[]),(r=d[s.metric])==null||r.push(s)}),L=t},_={},V=e=>{const t=new he(e);return _[e]=t,t},me=(e,t)=>{let s=_[e];return s||(s=V(e)),s.report(t)},ve=async e=>{const t=Object.values(_).map(s=>({name:s.name,values:s.collect()}));if(t.some(s=>s.values.length))try{await e(JSON.stringify(t))}catch(s){s instanceof Error&&R.error("MetricsErr",{error:{message:s.message,name:s.name}})}},ye=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{ve(t)},e*1e3):ce()};export{b as D,B as E,_ as P,w as S,Z as a,R as b,le as c,me as d,Q as e,se as f,oe as g,X as h,pe as i,ye as j,ue as k,ee as l,S as m,ae as n,x as o,M as p,E as q,V as r,g as s,J as v};
1
+ var Y=Object.defineProperty,j=(e,t,s)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,o=(e,t,s)=>(j(e,typeof t!="symbol"?t+"":t,s),s),b=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(b||{}),w=(e=>(e.ReplayCapture="replay.capture",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",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))(w||{});const B={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"}};let m;const F=new Uint8Array(16);function q(){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 n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function H(e,t=0){return n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+"-"+n[e[t+4]]+n[e[t+5]]+"-"+n[e[t+6]]+n[e[t+7]]+"-"+n[e[t+8]]+n[e[t+9]]+"-"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]}const $=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),I={randomUUID:$};function J(e,t,s){if(I.randomUUID&&!t&&!e)return I.randomUUID();e=e||{};const r=e.random||(e.rng||q)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,H(r)}const K=300;class G{constructor(){o(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(t){this.breadcrumbs.push(t),this.breadcrumbs.length>K&&this.breadcrumbs.shift()}debug(t,s="debug"){this.addBreadcrumb({category:s,level:"info",message:t,timestamp:this.getTimeStamp(),type:"debug"})}error(t,s={}){this.addBreadcrumb({category:"error",data:s,level:"error",message:t,timestamp:this.getTimeStamp(),type:"error"})}http(t,s){this.addBreadcrumb({category:"xhr",data:s,message:t,timestamp:this.getTimeStamp(),type:"http"})}info(t,s={}){this.addBreadcrumb({category:"info",data:s,level:"info",message:t,timestamp:this.getTimeStamp(),type:"info"})}navigation(t,s){this.addBreadcrumb({category:"navigation",data:s,message:t,timestamp:this.getTimeStamp(),type:"navigation"})}}const R=new G;var z=class extends Error{constructor(e,t,s){super(`Possible EventEmitter memory leak detected. ${s} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=s,this.name="MaxListenersExceededWarning"}},O=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=O.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,s){this.emit(e,t,s)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const s=e.indexOf(t);return s>-1&&e.splice(s,1),[]}_wrapOnceListener(e,t){const s=(...r)=>(this.removeListener(e,s),t.apply(this,r));return Object.defineProperty(s,"name",{value:t.name}),s}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const s=this._getListeners(e);return s.forEach(r=>{r.apply(this,t)}),s.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const s=this._getListeners(e).concat(t);if(this.events.set(e,s),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const r=new z(this,e,this.listenerCount(e));console.warn(r)}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 s=this._getListeners(e);if(s.length>0){const r=[t].concat(s);this.events.set(e,r)}else this.events.set(e,s.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const s=this._getListeners(e);return s.length>0&&(this._removeListener(s,t),this.events.set(e,s),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)}},k=O;k.defaultMaxListeners=10;const Q=new k,E=async e=>{await new Promise(t=>{setTimeout(t,e)})},X=({"userleap-platform":e})=>e!=="web";class A{constructor(t){o(this,"storage"),o(this,"tempStorage",{}),o(this,"isStorageAvailable"),this.storage=window[t],this.isStorageAvailable=this.checkIfStorageAvailable()}checkIfStorageAvailable(){try{const t="__storage_test__";return this.storage.setItem(t,t),this.storage.removeItem(t),!0}catch{return!1}}setItem(t,s){this.isStorageAvailable?this.storage.setItem(t,s):this.tempStorage[t]=s}getItem(t){return this.isStorageAvailable?this.storage.getItem(t):this.tempStorage[t]}removeItem(t){this.isStorageAvailable?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable?this.storage.clear():this.tempStorage={}}}const Z=new A("sessionStorage"),ee=new A("localStorage");class te{constructor(t){o(this,"payload"),o(this,"promise"),o(this,"reject",()=>{}),o(this,"resolve",()=>{}),this.payload=t,this.promise=new Promise((s,r)=>{this.reject=r,this.resolve=s})}resolveRequest(t){this.resolve(t)}}const S={replay:null},se=e=>{S.replay=e},re=()=>{const e=[];return S.replay&&e.push("replay"),e.join(",")},ne={RATELIMIT_RESET_DEFAULT:10};let D=!1,U="",v=!1,C=!1,y=[];const ie=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ae=e=>{var t;(t=e?.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(C=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},x=(e="")=>{D=!0,U=e};function oe(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.32.0","x-ul-installation-method":ie(e),"sprig-modules":re()};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 s=JSON.parse(e.mobileHeadersJSON);Object.assign(t,s)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t}const T=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const s=new te(t);return y.push(s),s.promise}},g=async(e,t)=>{const{retries:s=0,shouldDropOnRateLimit:r=!1,shouldRetryRequest:h=!1,...l}=t,c={url:e,options:l,retries:s,shouldDropOnRateLimit:r};if(v&&!h)return T(c);const u={ok:!1,reportError:!1};if(D)return console.info(`UserLeap - ${U}`),u;try{const a=await fetch(e,l);if(a.status===429)if(!v&&!r||h){v=!0;const i=a.headers.has("ratelimit-reset")?Number(a.headers.get("ratelimit-reset")):ne.RATELIMIT_RESET_DEFAULT;return await E(i*1e3),g(e,{...l,shouldDropOnRateLimit:r,shouldRetryRequest:!0})}else return T(c);if(v=!1,y.length&&(y.map(i=>{const p=i.payload;g(p.url,{...p.options,retries:p.retries,shouldDropOnRateLimit:p.shouldDropOnRateLimit}).then(W=>{i.resolveRequest(W)})}),y=[]),a.ok){if(a.status===249)return x(),u;const i=await a.text();try{return i&&i!=="OK"&&(a.json=JSON.parse(i)),a}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${i}`)}}}return a}catch(a){const i=s+1;return i>5||C?{ok:!1,reportError:!1,error:a}:(await E(Math.pow(2,s)*1e3),g(e,{...l,retries:i}))}},P=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 M(e,t){const{matchType:s,pattern:r}=e,h=s?P[s]:P.legacy;let l=!1;try{l=h(r,t)}catch(c){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${r}`;c instanceof Error&&(console.warn(u,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(u,c))}return l}const le=e=>{const{pageUrlEvents:t}=window.UserLeap._config,s=t?.find(r=>r.id===e);return s?M(s,window.location.href):!1};let N=!0,f=!1;const ce=()=>N=!1,ue=()=>f=!0,de=["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 d={},L;class he{constructor(t){o(this,"_values",[]),o(this,"_isWebMetric"),this.name=t,this._isWebMetric=de.includes(this.name)}report(t){if(N&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const s=this.findExceededThreshold(t);s&&L&&L(t,s)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const s=d[this.name];if(s)return s.find(r=>this.valueExceedsThreshold(t,r))}valueExceedsThreshold(t,s){return s.type==="max"?t>s.value:s.type==="min"?t<s.value:!1}}const pe=(e,t)=>{d={},f=!1,e?.forEach(s=>{var r;s.metric in d||(d[s.metric]=[]),(r=d[s.metric])==null||r.push(s)}),L=t},_={},V=e=>{const t=new he(e);return _[e]=t,t},me=(e,t)=>{let s=_[e];return s||(s=V(e)),s.report(t)},ve=async e=>{const t=Object.values(_).map(s=>({name:s.name,values:s.collect()}));if(t.some(s=>s.values.length))try{await e(JSON.stringify(t))}catch(s){s instanceof Error&&R.error("MetricsErr",{error:{message:s.message,name:s.name}})}},ye=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{ve(t)},e*1e3):ce()};export{b as D,B as E,_ as P,w as S,Z as a,R as b,le as c,me as d,Q as e,se as f,oe as g,X as h,pe as i,ye as j,ue as k,ee as l,S as m,ae as n,x as o,M as p,E as q,V as r,g as s,J as v};
package/dist/replay.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var Se=Object.defineProperty;var Ee=(e,t,n)=>t in e?Se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var T=(e,t,n)=>(Ee(e,typeof t!="symbol"?t+"":t,n),n);const i=require("./metricsReporter-Bv4AKHDN.cjs");var v=(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))(v||{});class ve{constructor(t){T(this,"awaitingResolvers",[]);T(this,"activeCount",0);this.capacity=t}async acquire(){if(this.activeCount<this.capacity){this.activeCount++;return}return new Promise(t=>{this.awaitingResolvers.push(t)})}release(){const t=this.awaitingResolvers.shift();t&&this.activeCount<=this.capacity?t():this.activeCount--}async execute(t){try{return await this.acquire(),await t()}finally{this.release()}}setLimit(t){this.capacity=t}}const te=new ve(2),Re=e=>te.setLimit(e),ke=async e=>te.execute(async()=>{var r;i.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:e.chunkIndex,surveyId:e.surveyId});const t=await i.sprigFetch(e.uploadUrl,{body:e.data,method:"PUT"});i.breadcrumbsLogger.http("UploadChunkEnd",{url:e.uploadUrl,method:"PUT",status_code:t.status,reason:t.statusText??"OK",chunkIndex:e.chunkIndex,surveyId:e.surveyId});const n=(r=t.headers)==null?void 0:r.get("ETag");if(!n)throw new Error(`Upload response did not include etag for upload ${e.uploadId}, part ${e.chunkIndex}`);return n}),ne=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:s,responseGroupUuid:a,replayDuration:o,eventDigest:c},d=!1)=>{var m;if(!d&&!n&&!r){i.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:n,etags:r});return}i.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const u=await i.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:a,surveyId:t,replayDuration:o,eventDigest:c,userAgent:(m=window==null?void 0:window.navigator)==null?void 0:m.userAgent}),headers:s,shouldRetryRequest:!0});return i.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),u},L=(e,t)=>t.some(n=>e instanceof n);let G,z;function Pe(){return G||(G=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Be(){return z||(z=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const _=new WeakMap,A=new WeakMap,B=new WeakMap;function xe(e){const t=new Promise((n,r)=>{const s=()=>{n(D(e.result))},a=()=>{r(e.error)};e.onsuccess=s,e.onerror=a});return B.set(t,e),t}function Te(e){if(_.has(e))return;const t=new Promise((n,r)=>{const s=()=>{n()},a=()=>{r(e.error||new DOMException("AbortError","AbortError"))};e.oncomplete=s,e.onerror=a,e.onabort=a});_.set(e,t)}let N={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return _.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return D(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function re(e){N=e(N)}function Ae(e){return Be().includes(e)?function(...t){return e.apply(M(this),t),D(this.request)}:function(...t){return D(e.apply(M(this),t))}}function Ue(e){return typeof e=="function"?Ae(e):(e instanceof IDBTransaction&&Te(e),L(e,Pe())?new Proxy(e,N):e)}function D(e){if(e instanceof IDBRequest)return xe(e);if(A.has(e))return A.get(e);const t=Ue(e);return t!==e&&(A.set(e,t),B.set(t,e)),t}const M=e=>B.get(e);function Le(e,t,{blocked:n,upgrade:r,blocking:s,terminated:a}={}){const o=indexedDB.open(e,t),c=D(o);return r&&(o.onupgradeneeded=d=>{r(D(o.result),d.oldVersion,d.newVersion,D(o.transaction),d)}),n&&(o.onblocked=d=>n(d.oldVersion,d.newVersion,d)),c.then(d=>{a&&(d.onclose=()=>a()),s&&(d.onversionchange=u=>s(u.oldVersion,u.newVersion,u))}).catch(()=>{}),c}function j(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),D(n).then(()=>{})}const _e=["get","getKey","getAll","getAllKeys","count"],Ne=["put","add","delete","clear"],U=new Map;function q(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(U.get(t))return U.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,s=Ne.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(s||_e.includes(n)))return;const a=async function(o,...c){const d=this.transaction(o,s?"readwrite":"readonly");let u=d.store;return r&&(u=u.index(c.shift())),(await Promise.all([u[n](...c),s&&d.done]))[0]};return U.set(t,a),a}re(e=>({...e,get:(t,n,r)=>q(t,n)||e.get(t,n,r),has:(t,n)=>!!q(t,n)||e.has(t,n)}));const Me=["continue","continuePrimaryKey","advance"],J={},O=new WeakMap,se=new WeakMap,Oe={get(e,t){if(!Me.includes(t))return e[t];let n=J[t];return n||(n=J[t]=function(...r){O.set(this,se.get(this)[t](...r))}),n}};async function*He(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const n=new Proxy(t,Oe);for(se.set(n,t),B.set(n,M(t));t;)yield n,t=await(O.get(n)||t.continue()),O.delete(n)}function X(e,t){return t===Symbol.asyncIterator&&L(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&L(e,[IDBIndex,IDBObjectStore])}re(e=>({...e,get(t,n,r){return X(t,n)?He:e.get(t,n,r)},has(t,n){return X(t,n)||e.has(t,n)}}));const Fe=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},ae=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;break}r.position=Fe(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},I={capture:!0,passive:!0},Ve=["a","button","input","option","li","link"],Ke=["Escape","Enter","Backspace","F5","Tab"];let k=!1;const je=["label","type","role","title","placeholder","errormessage","valuetext","href"],Y="aria-",We=e=>{if(!e.tagName)return"No tagName";const t=e.getAttribute("type");return t?`${t} ${e.tagName.toLowerCase()}`:e.tagName.toLowerCase()},Q=e=>{var r;if(((r=e.tagName)==null?void 0:r.toLowerCase())==="html")return{element:"html"};const t=e.textContent,n=t?{text:t}:{};n.element=We(e);for(const s of e.attributes){let a=s.name;const o=s.value;a.startsWith(Y)&&(a=a.substring(Y.length)),je.includes(a)&&(n[a]=o)}return n},$e=e=>{var s;if(!e)return{};const n={...Q(e)},r=e.parentElement;if(r&&Ve.includes((s=r.tagName)==null?void 0:s.toLowerCase())){const a=Q(r);Object.assign(n,a)}return n},oe=(e,t)=>{var n;ot({x:t.x,y:t.y,type:e,elementAttributes:$e(t.target),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...t.target instanceof HTMLElement?{rect:(n=t.target)==null?void 0:n.getBoundingClientRect(),xPath:ae(t.target)}:{}})},Ge=e=>t=>oe(e,t),ie=e=>{Ke.includes(e.key)&&pt({key:e.key})},ze=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&ut({url:window.location.href,currentPageTitle:document.title})},qe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&lt({curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title})},Je=(e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}},Xe=e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),gt({xPath:ae(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},ce=Je(Xe,750),de=Ge("left_click"),ue=e=>{e.button===2&&oe("right_click",e)},Ye=()=>{k||(window.addEventListener("click",de,I),window.addEventListener("mousedown",ue,I),window.addEventListener("keydown",ie,I),window.addEventListener("scroll",ce,I),k=!0,ze(),qe())},Qe=()=>{k&&(window.removeEventListener("click",de,I),window.removeEventListener("mousedown",ue,I),window.removeEventListener("keydown",ie,I),window.removeEventListener("scroll",ce,I),k=!1)},Ze=3e4,p={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},et=.5,tt=async()=>{var e;if(!window.indexedDB||!window.IDBKeyRange||!window.CompressionStream)return!0;if((e=window.navigator.storage)!=null&&e.estimate)try{const{quota:t=0,usage:n=0}=await window.navigator.storage.estimate(),r=(t-n)/1024**3;return i.breadcrumbsLogger.info("Storage",{availableGb:r}),r<et}catch{return!0}return!1},nt=()=>{const e=i.sessionStorageHelper.getItem("sprig.sessionId");if(e)return i.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),i.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=i.v4();return i.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t},f=nt(),R=()=>{i.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},y=()=>!!i.sessionStorageHelper.getItem("sprig.disableReplayRecording");window.addEventListener("beforeunload",()=>{i.breadcrumbsLogger.info("BeforeUnload",{sessionId:f}),i.sessionStorageHelper.setItem("sprig.sessionId",f)});const rt=()=>y()?i.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):w(async()=>{const e=(await l.getPendingCaptures({isHeatmap:!0})).map(n=>({eventId:n.captureParams.eventId,uuid:n.uuid})),t=[];e.forEach(({eventId:n,uuid:r})=>{i.checkUrlStillMatching(n)||t.push(r)}),t.length&&await l.markPendingHeatmapsReady(t)},"Error marking pending heatmaps ready"),st=e=>{Date.now()-e>=Ze&&w(()=>l.markPendingHeatmapsReady(),"Error in heatmap inactivity")},W=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),h=(e,t)=>{var n,r;if(!(y()||!p.isRecording))try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(s){x("Error recording custom event",s)}},at=e=>{e.description&&(e.description=W(e.description)),h("Sprig_PageView",e)},ot=e=>{var t;(t=e==null?void 0:e.elementAttributes)!=null&&t.text&&(e.elementAttributes.text=W(e.elementAttributes.text)),h("Sprig_Click",e)},it=e=>{h("Sprig_TrackEvent",e)},ct=e=>{h("Sprig_ShowSurvey",e)},dt=e=>{h("Sprig_SubmitSurvey",e)},ut=e=>{h("Sprig_Refresh",e)},lt=e=>{e.currentPageTitle&&(e.currentPageTitle=W(e.currentPageTitle)),h("Sprig_BackForward",e)},pt=e=>{h("Sprig_Keystroke",e)},gt=async e=>{const{x:t,xPath:n,y:r}=e,s=p.scrollEventUuids[n];if(s)return w(async()=>{var c,d,u,m;const a=await l.openDB(),o=await a.get("events",s);if(o!=null&&o.event){const g=JSON.parse(o.event),S=t>((d=(c=g.data)==null?void 0:c.payload)==null?void 0:d.x),b=r>((m=(u=g.data)==null?void 0:u.payload)==null?void 0:m.y);if(!(S||b))return null;S&&(g.data.payload.x=t),b&&(g.data.payload.y=r),g.data.payload.elementAttributes=e.elementAttributes,o.event=JSON.stringify(g),await a.put("events",o)}else h("Sprig_Scroll",e)},"Error updating scroll event");h("Sprig_Scroll",e)},mt=()=>p.isRecording,le=()=>{p.stopRecording&&(p.stopRecording(),p.stopRecording=void 0),p.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{p[e]&&(clearInterval(p[e]),p[e]=void 0)}),Qe()},ft=["did not allow mutations","called in an invalid security context"],wt=e=>{if(!e)return!0;for(const t of ft)if(e.toLowerCase().includes(t))return!1;return!0},yt=(e,t,{reportError:n=!0,extraInfo:r={}})=>{if(!y()&&t instanceof Error){if(R(),t.name==="VersionError")return i.breadcrumbsLogger.error("VersionErr",{message:e}),l.deleteDB();wt(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),l.clearAll())}},x=(e,t,{reportError:n}={reportError:!0})=>{le(),i.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),yt(e,t,{reportError:n})},w=async(e,t)=>{try{await e()}catch(n){x(t,n)}},ht=()=>{p.isRecording&&w(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot")},bt=async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const s=window.UserLeap._API_URL,a=await ne({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:s,headers:r},!0);return!(a!=null&&a.error)},Z=30,It=1;j("replayStorage").catch(console.error);j("sprig.replay").catch(console.error);class Dt{openDB(){return Le("sprigReplay",It,{upgrade:(t,n,r)=>{if(r===0&&i.sessionStorageHelper.setItem("sprig.pendingCount","0"),!t.objectStoreNames.contains("events")){const s=t.createObjectStore("events",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!t.objectStoreNames.contains("chunkUploads")){const s=t.createObjectStore("chunkUploads",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+status]",["sessionId","status"]),s.createIndex("[uploadId+status]",["uploadId","status"]),s.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!t.objectStoreNames.contains("pendingCaptures")){const s=t.createObjectStore("pendingCaptures",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}deleteDB(){return j("sprigReplay").catch(console.error)}async bulkAdd(t,n){const r=(await this.openDB()).transaction(t,"readwrite");return Promise.all([...n.map(s=>r.store.add(s)),r.done])}async clearAll(){const t=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return Promise.all([t.objectStore("events").clear(),t.objectStore("chunkUploads").clear(),t.objectStore("pendingCaptures").clear()])}async deleteBySessionId(t,n){const r=IDBKeyRange.only(n),s=(await this.openDB()).transaction(t,"readwrite"),a=s.store.index("sessionId");for await(const o of a.iterate(r))await o.delete();await s.done}async updatePartial(t,n,r){const a=(await this.openDB()).transaction(t,"readwrite"),o=await a.store.get(n);o&&await a.store.put({...o,...r}),await a.done}async deleteRowsBefore(t,n,r=()=>!0){const s=IDBKeyRange.upperBound(n,!0),a=(await this.openDB()).transaction(t,"readwrite"),o=a.store.index("timestamp");for await(const c of o.iterate(s))r(c.value)&&await c.delete();await a.done}async getEventsBetween(t,n=Date.now()){if(t>=n)return Promise.resolve([]);const r=IDBKeyRange.bound([f,t],[f,n],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(t,n,r=Z){const s=new Date,a=s.setMinutes(s.getMinutes()+(r??Z)),o=(await this.openDB()).transaction("events","readwrite"),c=o.store.index("[sessionId+timestamp]"),d=IDBKeyRange.bound([f,t],[f,n],!1,!0);for await(const u of c.iterate(d))await u.update({...u.value,expiredAt:a});await o.done}async deleteChunkUploads(t,n){const r=IDBKeyRange.only([n,t]),s=(await this.openDB()).transaction("chunkUploads","readwrite");let o=await s.store.index("[uploadId+status]").openCursor(r);for(;o;)o.delete(),o=await o.continue();await s.done}async getChunkUploadsByStatus({sessionId:t,status:n,uploadId:r}){const a=(await this.openDB()).transaction("chunkUploads","readonly"),o=r?a.store.index("[uploadId+status]"):a.store.index("[sessionId+status]"),c=r?IDBKeyRange.only([r,n]):IDBKeyRange.only([t,n]);return o.getAll(c)}async getPendingCaptures(t={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",f)).filter(s=>!t.beforePresent||s.targetTimestamp<Date.now()).filter(s=>!t.isHeatmap||(s.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(t){const n=(await this.openDB()).transaction("pendingCaptures","readwrite"),r=n.store.index("sessionId");for await(const s of r.iterate(f)){const a=s.value;a.captureParams.responseGroupId===t&&await s.update({...a,canUpload:!0})}await n.done}async markPendingHeatmapsReady(t){if(parseInt(i.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const r=Date.now(),s=(await this.openDB()).transaction("pendingCaptures","readwrite"),a=s.store.index("sessionId");for await(const o of a.iterate(f)){const c=o.value;c.captureParams.isHeatmap&&(!t||t.includes(c.uuid))&&await o.update({...c,targetTimestamp:r,captureParams:{...c.captureParams,triggerTimestamp:r,replayParams:{...c.captureParams.replayParams,replayDurationSeconds:Math.floor((r-c.timestamp)/1e3)}}})}await s.done}}const l=new Dt,pe=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const s=performance.now()-n;let a=i.PerformanceMetrics[t];a||(a=i.registerMetric(t)),a.report(s/1e3)}return r},ge=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let s=i.PerformanceMetrics[t];s||(s=i.registerMetric(t)),s.report(r/1e3)}};var Ct={VITE_NPM_BUNDLE:"",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};let me=5e3,H=6e4,F=0;const St=5,fe=30,P=fe+St;let C,V=!1,K=[];const Et=async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:n,teardownAfter:r=!1})=>{if(C=i.sessionStorageHelper.getItem("sprig.pendingCount"),!p.isRecording){if(r&&i.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),y())return i.breadcrumbsLogger.debug("ReplayDisabled");if(await tt())return i.breadcrumbsLogger.debug("IDBNotSupported"),R();try{const s=await l.openDB();i.breadcrumbsLogger.info("DBVersion",{version:s.version})}catch(s){return i.breadcrumbsLogger.error("ReplayOpenErr",{name:s.name}),s.name==="VersionError"&&l.deleteDB(),R()}if(!e)return i.breadcrumbsLogger.debug("MissingDuration");i.breadcrumbsLogger.debug("ReplayInit"),await w(async()=>{if(n!=null&&n.minDuration&&(me=n.minDuration),n!=null&&n.batchDuration&&(H=n.batchDuration),Re(t),At(),Pt(e+P,30*60,e+P),Bt(),!window.rrwebRecord)try{const{record:c}=await import(window.UserLeap.replayLibraryURL??`${Ct.VITE_CDN}/dependencies/record-2.0.0-alpha.17.min.js`);window.rrwebRecord=c}catch{return R(),i.breadcrumbsLogger.error("LoadRecordFailed")}const s=window.rrwebRecord;if(!s)return i.breadcrumbsLogger.error("RecordScriptFailed");let a=!0,o=0;p.stopRecording=s({checkoutEveryNms:fe*1e3,sampling:{input:"last",scroll:250,media:800},emit:(c,d)=>{if(c.type===v.Custom&&(F=Date.now()),y())return;if(d&&c.type===v.Meta)o=performance.now();else if(d&&o&&c.type===v.FullSnapshot){const m=performance.now()-o;i.reportAndRegister("sdk_replay_snapshot_seconds",m/1e3)}const u=a||!!d&&c.type===v.Meta;a=!1,vt({uuid:i.v4(),event:JSON.stringify(c),isValidStart:u,timestamp:Date.now()})},...n}),p.isRecording=!!p.stopRecording,p.isRecording&&(i.eventEmitter.on("survey.complete",c=>{dt({id:c,userAgent:window.navigator.userAgent})}),Ye())},"Error initializing replay")}},vt=e=>{var t,n,r,s;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const a=(s=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:s.xPath;if(!a)return;p.scrollEventUuids[a]=e.uuid}K.push(e),V||kt()},Rt=async e=>{const t=e.map(n=>({...n,sessionId:n.sessionId??f}));if(t.length!==0)return w(()=>l.bulkAdd("events",t),"Error storing replay events")},kt=()=>{V=!0,setTimeout(async()=>{if(y())return;const e=K;K=[],V=!1,ge(async()=>{await Rt(e)},"sdk_replay_add_event_batch_seconds")},500)},Pt=(e,t,n)=>{p.cleanupInterval=window.setInterval(()=>{const r=Date.now();pe(()=>w(async()=>{y()||await Promise.all([l.deleteRowsBefore("events",r-e*1e3,s=>s.expiredAt===void 0||s.expiredAt<r-e*1e3),l.deleteRowsBefore("chunkUploads",r-t*1e3),l.deleteRowsBefore("pendingCaptures",r-n*1e3,s=>!s.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),i.breadcrumbsLogger.debug("CleanupComplete")},3e4)},Bt=()=>{p.pendingCheckInterval=window.setInterval(async()=>{w(async()=>{const e=parseInt(C??"0");if(e===0)return;const t=await l.getPendingCaptures({beforePresent:!0}),n=await l.openDB();await Promise.all(t.map(async r=>(await n.delete("pendingCaptures",r.uuid),he(r.captureParams,r.canUpload)))),C=(e-t.length).toString(),i.sessionStorageHelper.setItem("sprig.pendingCount",C)},"Error initiating pending captures")},5e3)},xt=async(e,t,n,r,s)=>{const a=Math.min(e+s,n),o=await pe(()=>l.getEventsBetween(e,a),"sdk_replay_get_events_between_seconds");if(!(o!=null&&o.length))return i.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:r,events:[]};if(!r){i.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return o==null||o.forEach((d,u)=>{if(!d.isValidStart)return;const m=d.timestamp<=t;(c<0||m)&&(c=u)}),c<0?(i.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:r,events:[]}):{validStartFound:!0,events:o==null?void 0:o.slice(c)}}return{validStartFound:r,events:o}},Tt=(e,t,n)=>{const r=e.length,s=t*1024*1024,a=Math.ceil(r/n),o=Math.max(s,a),c=[];let d=0;for(;d<r;)c.push(e.slice(d,d+o)),d+=o;return c},we=e=>Promise.all(e.map(async t=>{const n=await ke(t);return await l.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),ye=async e=>{const t=await l.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length)){i.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});return}const n=t.reduce((a,o)=>(a.find(c=>c.chunkIndex===o.chunkIndex)||a.push(o),a),[]);n.sort((a,o)=>a.chunkIndex-o.chunkIndex);const r=n.map(a=>({ETag:a.etag,PartNumber:a.chunkIndex})).filter(a=>a.ETag!==null),s=n[0];await ne({apiUrl:s.apiUrl,surveyId:s.surveyId,uploadId:e,responseGroupUuid:s.responseGroupId,etags:r,headers:s.completeUploadHeaders,replayDuration:s.replayDuration}),await l.deleteChunkUploads("UploadComplete",e)},At=()=>{w(async()=>{const e=await l.getChunkUploadsByStatus({sessionId:f,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await we(e);t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return ye(n)}))},"Error uploading unfinished chunks")},Ut=async(e,t)=>{await we(t),await Promise.all(e.map(n=>ye(n)))},Lt=async(e,t)=>{const n=new TextEncoder;let r=null;const s=new CompressionStream("gzip"),a=s.writable.getWriter();let o=!1,c=!1,[d,u]=[0,0];const m=e-P*1e3;let g=[];for(let b=m;b<t;b+=H){if({validStartFound:c,events:g}=await xt(b,e,t,c,H),!(g!=null&&g.length)){i.breadcrumbsLogger.debug("NoEventsFound");continue}d===0&&(d=g[0].timestamp),u=g[g.length-1].timestamp;const E=g.map(Ce=>Ce.event);E.push(`{"timestamp":${t}}`);const $=`${o?",":"["}${E}`,De=n.encode($);ge(()=>{a.write(De)},"sdk_replay_compression_seconds"),o=!0}if(u-d<me)return i.breadcrumbsLogger.debug("ReplayTooShort"),null;const S=n.encode("]");return a.write(S),a.close(),r=new Uint8Array(await new Response(s.readable).arrayBuffer()),r},_t=async(e,t)=>{const n=t??Date.now(),r=n-e;return Lt(r,n)},ee=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:s,completeUploadHeaders:a,replayParams:o,triggerTimestamp:c}=e,d=await _t(o.replayDurationSeconds*1e3,c);if(!(d!=null&&d.length)){i.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});return}const u=Tt(d,o.minimumChunkSizeMb,o.signedUrls.length),m=await Promise.all(u.map(async(g,S)=>{const b=i.v4(),E={apiUrl:s,chunkIndex:S+1,completeUploadHeaders:a,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:u.length,data:g,uploadId:o.uploadId,uploadUrl:o.signedUrls[S].url,uuid:b,visitorId:r};return await(await l.openDB()).add("chunkUploads",{...E,sessionId:E.sessionId??f}),E}));await Ut([o.uploadId],m)},he=async(e,t)=>{if(y())return i.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:n,isStandalone:r,replayParams:s,triggerTimestamp:a,responseGroupId:o}=e,c=async()=>{setTimeout(()=>i.eventEmitter.removeListener(i.SprigEvent.QuestionAnswered,c),0),w(async()=>{s.replayDurationType==="before"?await ee(e):await l.markPendingCaptureToCanUpload(o)},"Error in schedule/capture callback")};w(async()=>{if(s.replayDurationType==="after"||s.replayDurationType==="beforeAndAfter"){!r&&!n&&i.eventEmitter.on(i.SprigEvent.QuestionAnswered,c),await Ie(e);return}if(r||n||t)await ee(e),n&&Nt();else{const u=P+s.replayDurationSeconds,m=a-u*1e3,g=a;await l.updateEventsExpiredAt(m,g,s.expirationTimeLimitMinutes),i.eventEmitter.on(i.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Nt=async()=>{parseInt(C??"0")||i.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),i.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(le(),be(),i.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},be=async()=>y()?i.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([l.deleteBySessionId("events",f),l.deleteBySessionId("pendingCaptures",f)]).catch(e=>{x("Error clearing user replay data",e)}),Ie=async e=>{if(y())return;const{isHeatmap:t,surveyId:n}=e,r=await l.getPendingCaptures(),s=r==null?void 0:r.filter(d=>d.captureParams.surveyId===n);if(s!=null&&s.length){i.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:n});return}t&&(ht(),i.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),F=Date.now(),p.inactivityInterval||(p.inactivityInterval=window.setInterval(()=>{st(F)},1e3)));const a={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(a.replayParams.replayDurationSeconds*=2),a.replayParams.replayDurationType="before";const o=e.triggerTimestamp+e.replayParams.replayDurationSeconds*1e3;a.triggerTimestamp=o,C=(parseInt(C??"0")+1).toString(),i.sessionStorageHelper.setItem("sprig.pendingCount",C),await(await l.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:a,sessionId:f,targetTimestamp:o,timestamp:Date.now(),uuid:i.v4()})},Mt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:it,RecordPageView:at,RecordSurveyShown:ct,_completeSessionReplay:bt,checkPendingHeatmapsUrl:rt,clearUserReplayData:be,disableRecording:x,initializeReplay:Et,isReplayRecording:mt,scheduleCapture:Ie,scheduleOrCaptureReplay:he,tryReplayAction:w},Symbol.toStringTag,{value:"Module"}));i.registerReplay(Mt);
1
+ "use strict";var Se=Object.defineProperty;var Ee=(e,t,n)=>t in e?Se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var T=(e,t,n)=>(Ee(e,typeof t!="symbol"?t+"":t,n),n);const i=require("./metricsReporter-ikJ_RTTQ.cjs");var v=(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))(v||{});class ve{constructor(t){T(this,"awaitingResolvers",[]);T(this,"activeCount",0);this.capacity=t}async acquire(){if(this.activeCount<this.capacity){this.activeCount++;return}return new Promise(t=>{this.awaitingResolvers.push(t)})}release(){const t=this.awaitingResolvers.shift();t&&this.activeCount<=this.capacity?t():this.activeCount--}async execute(t){try{return await this.acquire(),await t()}finally{this.release()}}setLimit(t){this.capacity=t}}const te=new ve(2),Re=e=>te.setLimit(e),ke=async e=>te.execute(async()=>{var r;i.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:e.chunkIndex,surveyId:e.surveyId});const t=await i.sprigFetch(e.uploadUrl,{body:e.data,method:"PUT"});i.breadcrumbsLogger.http("UploadChunkEnd",{url:e.uploadUrl,method:"PUT",status_code:t.status,reason:t.statusText??"OK",chunkIndex:e.chunkIndex,surveyId:e.surveyId});const n=(r=t.headers)==null?void 0:r.get("ETag");if(!n)throw new Error(`Upload response did not include etag for upload ${e.uploadId}, part ${e.chunkIndex}`);return n}),ne=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:s,responseGroupUuid:a,replayDuration:o,eventDigest:c},d=!1)=>{var m;if(!d&&!n&&!r){i.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:n,etags:r});return}i.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const u=await i.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:a,surveyId:t,replayDuration:o,eventDigest:c,userAgent:(m=window==null?void 0:window.navigator)==null?void 0:m.userAgent}),headers:s,shouldRetryRequest:!0});return i.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),u},L=(e,t)=>t.some(n=>e instanceof n);let G,z;function Pe(){return G||(G=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Be(){return z||(z=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const _=new WeakMap,A=new WeakMap,B=new WeakMap;function xe(e){const t=new Promise((n,r)=>{const s=()=>{n(D(e.result))},a=()=>{r(e.error)};e.onsuccess=s,e.onerror=a});return B.set(t,e),t}function Te(e){if(_.has(e))return;const t=new Promise((n,r)=>{const s=()=>{n()},a=()=>{r(e.error||new DOMException("AbortError","AbortError"))};e.oncomplete=s,e.onerror=a,e.onabort=a});_.set(e,t)}let N={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return _.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return D(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function re(e){N=e(N)}function Ae(e){return Be().includes(e)?function(...t){return e.apply(M(this),t),D(this.request)}:function(...t){return D(e.apply(M(this),t))}}function Ue(e){return typeof e=="function"?Ae(e):(e instanceof IDBTransaction&&Te(e),L(e,Pe())?new Proxy(e,N):e)}function D(e){if(e instanceof IDBRequest)return xe(e);if(A.has(e))return A.get(e);const t=Ue(e);return t!==e&&(A.set(e,t),B.set(t,e)),t}const M=e=>B.get(e);function Le(e,t,{blocked:n,upgrade:r,blocking:s,terminated:a}={}){const o=indexedDB.open(e,t),c=D(o);return r&&(o.onupgradeneeded=d=>{r(D(o.result),d.oldVersion,d.newVersion,D(o.transaction),d)}),n&&(o.onblocked=d=>n(d.oldVersion,d.newVersion,d)),c.then(d=>{a&&(d.onclose=()=>a()),s&&(d.onversionchange=u=>s(u.oldVersion,u.newVersion,u))}).catch(()=>{}),c}function j(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),D(n).then(()=>{})}const _e=["get","getKey","getAll","getAllKeys","count"],Ne=["put","add","delete","clear"],U=new Map;function q(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(U.get(t))return U.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,s=Ne.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(s||_e.includes(n)))return;const a=async function(o,...c){const d=this.transaction(o,s?"readwrite":"readonly");let u=d.store;return r&&(u=u.index(c.shift())),(await Promise.all([u[n](...c),s&&d.done]))[0]};return U.set(t,a),a}re(e=>({...e,get:(t,n,r)=>q(t,n)||e.get(t,n,r),has:(t,n)=>!!q(t,n)||e.has(t,n)}));const Me=["continue","continuePrimaryKey","advance"],J={},O=new WeakMap,se=new WeakMap,Oe={get(e,t){if(!Me.includes(t))return e[t];let n=J[t];return n||(n=J[t]=function(...r){O.set(this,se.get(this)[t](...r))}),n}};async function*He(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const n=new Proxy(t,Oe);for(se.set(n,t),B.set(n,M(t));t;)yield n,t=await(O.get(n)||t.continue()),O.delete(n)}function X(e,t){return t===Symbol.asyncIterator&&L(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&L(e,[IDBIndex,IDBObjectStore])}re(e=>({...e,get(t,n,r){return X(t,n)?He:e.get(t,n,r)},has(t,n){return X(t,n)||e.has(t,n)}}));const Fe=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},ae=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;break}r.position=Fe(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},I={capture:!0,passive:!0},Ve=["a","button","input","option","li","link"],Ke=["Escape","Enter","Backspace","F5","Tab"];let k=!1;const je=["label","type","role","title","placeholder","errormessage","valuetext","href"],Y="aria-",We=e=>{if(!e.tagName)return"No tagName";const t=e.getAttribute("type");return t?`${t} ${e.tagName.toLowerCase()}`:e.tagName.toLowerCase()},Q=e=>{var r;if(((r=e.tagName)==null?void 0:r.toLowerCase())==="html")return{element:"html"};const t=e.textContent,n=t?{text:t}:{};n.element=We(e);for(const s of e.attributes){let a=s.name;const o=s.value;a.startsWith(Y)&&(a=a.substring(Y.length)),je.includes(a)&&(n[a]=o)}return n},$e=e=>{var s;if(!e)return{};const n={...Q(e)},r=e.parentElement;if(r&&Ve.includes((s=r.tagName)==null?void 0:s.toLowerCase())){const a=Q(r);Object.assign(n,a)}return n},oe=(e,t)=>{var n;ot({x:t.x,y:t.y,type:e,elementAttributes:$e(t.target),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...t.target instanceof HTMLElement?{rect:(n=t.target)==null?void 0:n.getBoundingClientRect(),xPath:ae(t.target)}:{}})},Ge=e=>t=>oe(e,t),ie=e=>{Ke.includes(e.key)&&pt({key:e.key})},ze=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&ut({url:window.location.href,currentPageTitle:document.title})},qe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&lt({curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title})},Je=(e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}},Xe=e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),gt({xPath:ae(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},ce=Je(Xe,750),de=Ge("left_click"),ue=e=>{e.button===2&&oe("right_click",e)},Ye=()=>{k||(window.addEventListener("click",de,I),window.addEventListener("mousedown",ue,I),window.addEventListener("keydown",ie,I),window.addEventListener("scroll",ce,I),k=!0,ze(),qe())},Qe=()=>{k&&(window.removeEventListener("click",de,I),window.removeEventListener("mousedown",ue,I),window.removeEventListener("keydown",ie,I),window.removeEventListener("scroll",ce,I),k=!1)},Ze=3e4,p={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},et=.5,tt=async()=>{var e;if(!window.indexedDB||!window.IDBKeyRange||!window.CompressionStream)return!0;if((e=window.navigator.storage)!=null&&e.estimate)try{const{quota:t=0,usage:n=0}=await window.navigator.storage.estimate(),r=(t-n)/1024**3;return i.breadcrumbsLogger.info("Storage",{availableGb:r}),r<et}catch{return!0}return!1},nt=()=>{const e=i.sessionStorageHelper.getItem("sprig.sessionId");if(e)return i.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),i.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=i.v4();return i.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t},f=nt(),R=()=>{i.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},y=()=>!!i.sessionStorageHelper.getItem("sprig.disableReplayRecording");window.addEventListener("beforeunload",()=>{i.breadcrumbsLogger.info("BeforeUnload",{sessionId:f}),i.sessionStorageHelper.setItem("sprig.sessionId",f)});const rt=()=>y()?i.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):w(async()=>{const e=(await l.getPendingCaptures({isHeatmap:!0})).map(n=>({eventId:n.captureParams.eventId,uuid:n.uuid})),t=[];e.forEach(({eventId:n,uuid:r})=>{i.checkUrlStillMatching(n)||t.push(r)}),t.length&&await l.markPendingHeatmapsReady(t)},"Error marking pending heatmaps ready"),st=e=>{Date.now()-e>=Ze&&w(()=>l.markPendingHeatmapsReady(),"Error in heatmap inactivity")},W=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),h=(e,t)=>{var n,r;if(!(y()||!p.isRecording))try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(s){x("Error recording custom event",s)}},at=e=>{e.description&&(e.description=W(e.description)),h("Sprig_PageView",e)},ot=e=>{var t;(t=e==null?void 0:e.elementAttributes)!=null&&t.text&&(e.elementAttributes.text=W(e.elementAttributes.text)),h("Sprig_Click",e)},it=e=>{h("Sprig_TrackEvent",e)},ct=e=>{h("Sprig_ShowSurvey",e)},dt=e=>{h("Sprig_SubmitSurvey",e)},ut=e=>{h("Sprig_Refresh",e)},lt=e=>{e.currentPageTitle&&(e.currentPageTitle=W(e.currentPageTitle)),h("Sprig_BackForward",e)},pt=e=>{h("Sprig_Keystroke",e)},gt=async e=>{const{x:t,xPath:n,y:r}=e,s=p.scrollEventUuids[n];if(s)return w(async()=>{var c,d,u,m;const a=await l.openDB(),o=await a.get("events",s);if(o!=null&&o.event){const g=JSON.parse(o.event),S=t>((d=(c=g.data)==null?void 0:c.payload)==null?void 0:d.x),b=r>((m=(u=g.data)==null?void 0:u.payload)==null?void 0:m.y);if(!(S||b))return null;S&&(g.data.payload.x=t),b&&(g.data.payload.y=r),g.data.payload.elementAttributes=e.elementAttributes,o.event=JSON.stringify(g),await a.put("events",o)}else h("Sprig_Scroll",e)},"Error updating scroll event");h("Sprig_Scroll",e)},mt=()=>p.isRecording,le=()=>{p.stopRecording&&(p.stopRecording(),p.stopRecording=void 0),p.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{p[e]&&(clearInterval(p[e]),p[e]=void 0)}),Qe()},ft=["did not allow mutations","called in an invalid security context"],wt=e=>{if(!e)return!0;for(const t of ft)if(e.toLowerCase().includes(t))return!1;return!0},yt=(e,t,{reportError:n=!0,extraInfo:r={}})=>{if(!y()&&t instanceof Error){if(R(),t.name==="VersionError")return i.breadcrumbsLogger.error("VersionErr",{message:e}),l.deleteDB();wt(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),l.clearAll())}},x=(e,t,{reportError:n}={reportError:!0})=>{le(),i.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),yt(e,t,{reportError:n})},w=async(e,t)=>{try{await e()}catch(n){x(t,n)}},ht=()=>{p.isRecording&&w(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot")},bt=async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const s=window.UserLeap._API_URL,a=await ne({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:s,headers:r},!0);return!(a!=null&&a.error)},Z=30,It=1;j("replayStorage").catch(console.error);j("sprig.replay").catch(console.error);class Dt{openDB(){return Le("sprigReplay",It,{upgrade:(t,n,r)=>{if(r===0&&i.sessionStorageHelper.setItem("sprig.pendingCount","0"),!t.objectStoreNames.contains("events")){const s=t.createObjectStore("events",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!t.objectStoreNames.contains("chunkUploads")){const s=t.createObjectStore("chunkUploads",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+status]",["sessionId","status"]),s.createIndex("[uploadId+status]",["uploadId","status"]),s.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!t.objectStoreNames.contains("pendingCaptures")){const s=t.createObjectStore("pendingCaptures",{keyPath:"uuid"});s.createIndex("sessionId","sessionId"),s.createIndex("timestamp","timestamp"),s.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}deleteDB(){return j("sprigReplay").catch(console.error)}async bulkAdd(t,n){const r=(await this.openDB()).transaction(t,"readwrite");return Promise.all([...n.map(s=>r.store.add(s)),r.done])}async clearAll(){const t=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return Promise.all([t.objectStore("events").clear(),t.objectStore("chunkUploads").clear(),t.objectStore("pendingCaptures").clear()])}async deleteBySessionId(t,n){const r=IDBKeyRange.only(n),s=(await this.openDB()).transaction(t,"readwrite"),a=s.store.index("sessionId");for await(const o of a.iterate(r))await o.delete();await s.done}async updatePartial(t,n,r){const a=(await this.openDB()).transaction(t,"readwrite"),o=await a.store.get(n);o&&await a.store.put({...o,...r}),await a.done}async deleteRowsBefore(t,n,r=()=>!0){const s=IDBKeyRange.upperBound(n,!0),a=(await this.openDB()).transaction(t,"readwrite"),o=a.store.index("timestamp");for await(const c of o.iterate(s))r(c.value)&&await c.delete();await a.done}async getEventsBetween(t,n=Date.now()){if(t>=n)return Promise.resolve([]);const r=IDBKeyRange.bound([f,t],[f,n],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(t,n,r=Z){const s=new Date,a=s.setMinutes(s.getMinutes()+(r??Z)),o=(await this.openDB()).transaction("events","readwrite"),c=o.store.index("[sessionId+timestamp]"),d=IDBKeyRange.bound([f,t],[f,n],!1,!0);for await(const u of c.iterate(d))await u.update({...u.value,expiredAt:a});await o.done}async deleteChunkUploads(t,n){const r=IDBKeyRange.only([n,t]),s=(await this.openDB()).transaction("chunkUploads","readwrite");let o=await s.store.index("[uploadId+status]").openCursor(r);for(;o;)o.delete(),o=await o.continue();await s.done}async getChunkUploadsByStatus({sessionId:t,status:n,uploadId:r}){const a=(await this.openDB()).transaction("chunkUploads","readonly"),o=r?a.store.index("[uploadId+status]"):a.store.index("[sessionId+status]"),c=r?IDBKeyRange.only([r,n]):IDBKeyRange.only([t,n]);return o.getAll(c)}async getPendingCaptures(t={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",f)).filter(s=>!t.beforePresent||s.targetTimestamp<Date.now()).filter(s=>!t.isHeatmap||(s.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(t){const n=(await this.openDB()).transaction("pendingCaptures","readwrite"),r=n.store.index("sessionId");for await(const s of r.iterate(f)){const a=s.value;a.captureParams.responseGroupId===t&&await s.update({...a,canUpload:!0})}await n.done}async markPendingHeatmapsReady(t){if(parseInt(i.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const r=Date.now(),s=(await this.openDB()).transaction("pendingCaptures","readwrite"),a=s.store.index("sessionId");for await(const o of a.iterate(f)){const c=o.value;c.captureParams.isHeatmap&&(!t||t.includes(c.uuid))&&await o.update({...c,targetTimestamp:r,captureParams:{...c.captureParams,triggerTimestamp:r,replayParams:{...c.captureParams.replayParams,replayDurationSeconds:Math.floor((r-c.timestamp)/1e3)}}})}await s.done}}const l=new Dt,pe=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const s=performance.now()-n;let a=i.PerformanceMetrics[t];a||(a=i.registerMetric(t)),a.report(s/1e3)}return r},ge=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let s=i.PerformanceMetrics[t];s||(s=i.registerMetric(t)),s.report(r/1e3)}};var Ct={VITE_NPM_BUNDLE:"",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};let me=5e3,H=6e4,F=0;const St=5,fe=30,P=fe+St;let C,V=!1,K=[];const Et=async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:n,teardownAfter:r=!1})=>{if(C=i.sessionStorageHelper.getItem("sprig.pendingCount"),!p.isRecording){if(r&&i.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),y())return i.breadcrumbsLogger.debug("ReplayDisabled");if(await tt())return i.breadcrumbsLogger.debug("IDBNotSupported"),R();try{const s=await l.openDB();i.breadcrumbsLogger.info("DBVersion",{version:s.version})}catch(s){return i.breadcrumbsLogger.error("ReplayOpenErr",{name:s.name}),s.name==="VersionError"&&l.deleteDB(),R()}if(!e)return i.breadcrumbsLogger.debug("MissingDuration");i.breadcrumbsLogger.debug("ReplayInit"),await w(async()=>{if(n!=null&&n.minDuration&&(me=n.minDuration),n!=null&&n.batchDuration&&(H=n.batchDuration),Re(t),At(),Pt(e+P,30*60,e+P),Bt(),!window.rrwebRecord)try{const{record:c}=await import(window.UserLeap.replayLibraryURL??`${Ct.VITE_CDN}/dependencies/record-2.0.0-alpha.17.min.js`);window.rrwebRecord=c}catch{return R(),i.breadcrumbsLogger.error("LoadRecordFailed")}const s=window.rrwebRecord;if(!s)return i.breadcrumbsLogger.error("RecordScriptFailed");let a=!0,o=0;p.stopRecording=s({checkoutEveryNms:fe*1e3,sampling:{input:"last",scroll:250,media:800},emit:(c,d)=>{if(c.type===v.Custom&&(F=Date.now()),y())return;if(d&&c.type===v.Meta)o=performance.now();else if(d&&o&&c.type===v.FullSnapshot){const m=performance.now()-o;i.reportAndRegister("sdk_replay_snapshot_seconds",m/1e3)}const u=a||!!d&&c.type===v.Meta;a=!1,vt({uuid:i.v4(),event:JSON.stringify(c),isValidStart:u,timestamp:Date.now()})},...n}),p.isRecording=!!p.stopRecording,p.isRecording&&(i.eventEmitter.on("survey.complete",c=>{dt({id:c,userAgent:window.navigator.userAgent})}),Ye())},"Error initializing replay")}},vt=e=>{var t,n,r,s;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const a=(s=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:s.xPath;if(!a)return;p.scrollEventUuids[a]=e.uuid}K.push(e),V||kt()},Rt=async e=>{const t=e.map(n=>({...n,sessionId:n.sessionId??f}));if(t.length!==0)return w(()=>l.bulkAdd("events",t),"Error storing replay events")},kt=()=>{V=!0,setTimeout(async()=>{if(y())return;const e=K;K=[],V=!1,ge(async()=>{await Rt(e)},"sdk_replay_add_event_batch_seconds")},500)},Pt=(e,t,n)=>{p.cleanupInterval=window.setInterval(()=>{const r=Date.now();pe(()=>w(async()=>{y()||await Promise.all([l.deleteRowsBefore("events",r-e*1e3,s=>s.expiredAt===void 0||s.expiredAt<r-e*1e3),l.deleteRowsBefore("chunkUploads",r-t*1e3),l.deleteRowsBefore("pendingCaptures",r-n*1e3,s=>!s.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),i.breadcrumbsLogger.debug("CleanupComplete")},3e4)},Bt=()=>{p.pendingCheckInterval=window.setInterval(async()=>{w(async()=>{const e=parseInt(C??"0");if(e===0)return;const t=await l.getPendingCaptures({beforePresent:!0}),n=await l.openDB();await Promise.all(t.map(async r=>(await n.delete("pendingCaptures",r.uuid),he(r.captureParams,r.canUpload)))),C=(e-t.length).toString(),i.sessionStorageHelper.setItem("sprig.pendingCount",C)},"Error initiating pending captures")},5e3)},xt=async(e,t,n,r,s)=>{const a=Math.min(e+s,n),o=await pe(()=>l.getEventsBetween(e,a),"sdk_replay_get_events_between_seconds");if(!(o!=null&&o.length))return i.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:r,events:[]};if(!r){i.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return o==null||o.forEach((d,u)=>{if(!d.isValidStart)return;const m=d.timestamp<=t;(c<0||m)&&(c=u)}),c<0?(i.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:r,events:[]}):{validStartFound:!0,events:o==null?void 0:o.slice(c)}}return{validStartFound:r,events:o}},Tt=(e,t,n)=>{const r=e.length,s=t*1024*1024,a=Math.ceil(r/n),o=Math.max(s,a),c=[];let d=0;for(;d<r;)c.push(e.slice(d,d+o)),d+=o;return c},we=e=>Promise.all(e.map(async t=>{const n=await ke(t);return await l.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),ye=async e=>{const t=await l.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length)){i.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});return}const n=t.reduce((a,o)=>(a.find(c=>c.chunkIndex===o.chunkIndex)||a.push(o),a),[]);n.sort((a,o)=>a.chunkIndex-o.chunkIndex);const r=n.map(a=>({ETag:a.etag,PartNumber:a.chunkIndex})).filter(a=>a.ETag!==null),s=n[0];await ne({apiUrl:s.apiUrl,surveyId:s.surveyId,uploadId:e,responseGroupUuid:s.responseGroupId,etags:r,headers:s.completeUploadHeaders,replayDuration:s.replayDuration}),await l.deleteChunkUploads("UploadComplete",e)},At=()=>{w(async()=>{const e=await l.getChunkUploadsByStatus({sessionId:f,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await we(e);t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return ye(n)}))},"Error uploading unfinished chunks")},Ut=async(e,t)=>{await we(t),await Promise.all(e.map(n=>ye(n)))},Lt=async(e,t)=>{const n=new TextEncoder;let r=null;const s=new CompressionStream("gzip"),a=s.writable.getWriter();let o=!1,c=!1,[d,u]=[0,0];const m=e-P*1e3;let g=[];for(let b=m;b<t;b+=H){if({validStartFound:c,events:g}=await xt(b,e,t,c,H),!(g!=null&&g.length)){i.breadcrumbsLogger.debug("NoEventsFound");continue}d===0&&(d=g[0].timestamp),u=g[g.length-1].timestamp;const E=g.map(Ce=>Ce.event);E.push(`{"timestamp":${t}}`);const $=`${o?",":"["}${E}`,De=n.encode($);ge(()=>{a.write(De)},"sdk_replay_compression_seconds"),o=!0}if(u-d<me)return i.breadcrumbsLogger.debug("ReplayTooShort"),null;const S=n.encode("]");return a.write(S),a.close(),r=new Uint8Array(await new Response(s.readable).arrayBuffer()),r},_t=async(e,t)=>{const n=t??Date.now(),r=n-e;return Lt(r,n)},ee=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:s,completeUploadHeaders:a,replayParams:o,triggerTimestamp:c}=e,d=await _t(o.replayDurationSeconds*1e3,c);if(!(d!=null&&d.length)){i.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});return}const u=Tt(d,o.minimumChunkSizeMb,o.signedUrls.length),m=await Promise.all(u.map(async(g,S)=>{const b=i.v4(),E={apiUrl:s,chunkIndex:S+1,completeUploadHeaders:a,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:u.length,data:g,uploadId:o.uploadId,uploadUrl:o.signedUrls[S].url,uuid:b,visitorId:r};return await(await l.openDB()).add("chunkUploads",{...E,sessionId:E.sessionId??f}),E}));await Ut([o.uploadId],m)},he=async(e,t)=>{if(y())return i.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:n,isStandalone:r,replayParams:s,triggerTimestamp:a,responseGroupId:o}=e,c=async()=>{setTimeout(()=>i.eventEmitter.removeListener(i.SprigEvent.QuestionAnswered,c),0),w(async()=>{s.replayDurationType==="before"?await ee(e):await l.markPendingCaptureToCanUpload(o)},"Error in schedule/capture callback")};w(async()=>{if(s.replayDurationType==="after"||s.replayDurationType==="beforeAndAfter"){!r&&!n&&i.eventEmitter.on(i.SprigEvent.QuestionAnswered,c),await Ie(e);return}if(r||n||t)await ee(e),n&&Nt();else{const u=P+s.replayDurationSeconds,m=a-u*1e3,g=a;await l.updateEventsExpiredAt(m,g,s.expirationTimeLimitMinutes),i.eventEmitter.on(i.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Nt=async()=>{parseInt(C??"0")||i.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),i.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(le(),be(),i.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},be=async()=>y()?i.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([l.deleteBySessionId("events",f),l.deleteBySessionId("pendingCaptures",f)]).catch(e=>{x("Error clearing user replay data",e)}),Ie=async e=>{if(y())return;const{isHeatmap:t,surveyId:n}=e,r=await l.getPendingCaptures(),s=r==null?void 0:r.filter(d=>d.captureParams.surveyId===n);if(s!=null&&s.length){i.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:n});return}t&&(ht(),i.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),F=Date.now(),p.inactivityInterval||(p.inactivityInterval=window.setInterval(()=>{st(F)},1e3)));const a={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(a.replayParams.replayDurationSeconds*=2),a.replayParams.replayDurationType="before";const o=e.triggerTimestamp+e.replayParams.replayDurationSeconds*1e3;a.triggerTimestamp=o,C=(parseInt(C??"0")+1).toString(),i.sessionStorageHelper.setItem("sprig.pendingCount",C),await(await l.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:a,sessionId:f,targetTimestamp:o,timestamp:Date.now(),uuid:i.v4()})},Mt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:it,RecordPageView:at,RecordSurveyShown:ct,_completeSessionReplay:bt,checkPendingHeatmapsUrl:rt,clearUserReplayData:be,disableRecording:x,initializeReplay:Et,isReplayRecording:mt,scheduleCapture:Ie,scheduleOrCaptureReplay:he,tryReplayAction:w},Symbol.toStringTag,{value:"Module"}));i.registerReplay(Mt);