@sprig-technologies/sprig-browser 2.31.3 → 2.31.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var at=Object.defineProperty;var dt=(e,t,n)=>t in e?at(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>(dt(e,typeof t!="symbol"?t+"":t,n),n);const i=require("./metricsReporter-D-24kpOB.cjs"),lt='.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}',Ce="360px",ct="ul-app",pt="#e6e6e6",ut="#bd282a",wt=500,gt=1030,Me=()=>{try{return window.parent.Intercom}catch{return null}},ft=()=>{const e=Me();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},mt=()=>{const e=Me();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},yt=Object.freeze(Object.defineProperty({__proto__:null,disable:mt,enable:ft},Symbol.toStringTag,{value:"Module"})),_e=[yt];class Fe{static disable(){_e.forEach(t=>t.disable())}static enable(){_e.forEach(t=>t.enable())}}const Re="ul-view-sdk-script",vt=["ios","android"],D="visitors",O="environments";async function k(e,t){var o,a,d;const{shouldDropOnRateLimit:n,...s}=t;s.headers=Object.assign(i.getHttpHeaders(window.UserLeap),s.headers);const r=await i.sprigFetch(e,{...s,shouldDropOnRateLimit:n});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),i.eventEmitter.emit(i.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(e,t){const n=i.localStorageHelper.getItem("userleap.ids");let s={};if(n)try{s=JSON.parse(n)}catch(o){o instanceof Error&&(o.stack=n,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[e]=t:r={[e]:t},s[window.UserLeap.envId]=r;try{i.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 ge(){return window.previewMode?"0":window.UserLeap.visitorId??""}function E(e,t,n){const s=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{s.push(r),r===O?s.push(window.UserLeap.envId):r===D&&s.push(ge())}),n&&s.push(n),s.join("/")}const V=async(e,t)=>{var Ue,Ee,Ie;const{context:n,delay:s,forceBrandedLogo:r,endCard:o,isFeedback:a=!1,heatmap:d,locale:c,previewMode:p,productConfig:l,questions:u,responseGroupUid:m,surveyId:w,uuid:f,vid:L,sessionReplay:A,studyType:$}=e,v=i.getHttpHeaders(window.UserLeap),R=te(v),x=fe(v);if(i.info(`Attempting to display survey: ${w}`),A)if(i.info("Survey has replay attached"),R)i.eventEmitter.emit(i.SprigEvent.ReplayCapture,{responseGroupUid:m,hasQuestions:!!(u!=null&&u.length),surveyId:w,uploadId:A.uploadId,replayType:A.replayDurationType??"before",seconds:A.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:i.v4(),mediaType:"screen",questionId:1,responseGroupUid:m,surveyId:w,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!i.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};i.modules.replay.scheduleOrCaptureReplay({responseGroupId:m,surveyId:w,visitorId:L,replayParams:A,completeUploadHeaders:v,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:u.length===0})}if(d){if(!i.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:y,replayParams:oe,responseGroupUid:ot,surveyId:st}=d;await i.modules.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),i.modules.replay.tryReplayAction(()=>{var ke;return(ke=i.modules.replay)==null?void 0:ke.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:v,eventId:y,isHeatmap:!0,replayParams:oe,responseGroupId:ot,surveyId:st,triggerTimestamp:Date.now(),visitorId:L})},"Error in scheduling/capturing replay")}if(L==null||!(u!=null&&u.length))return i.info(`Not displaying survey: vid: ${L} / questions: ${u}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){i.info("Already displaying a survey");const y="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(y),{success:!1,message:y,surveyState:"no survey"}}if(L!==window.UserLeap.visitorId&&f!==window.UserLeap.visitorId&&!window.previewMode){const y="Attempted to display survey to a different visitor";return i.info(y),window.UserLeap.reportError("DisplaySurvey",new Error(y)),{success:!1,message:y,surveyState:"no survey"}}i.info(`Showing survey: ${w}`),(Ue=i.modules.replay)==null||Ue.RecordSurveyShown({id:w,userAgent:window.navigator.userAgent}),Fe.disable(),i.eventEmitter.emit(i.SprigEvent.SurveyWillPresent,{name:i.SprigEvent.SurveyWillPresent,"survey.id":w});let I,b=document.createElement("div"),h,U,q;const he=y=>{const{"view.version":oe}=y;oe!==v["x-ul-sdk-version"]&&Ne(),i.eventEmitter.removeListener("verify.view.version",he)};i.eventEmitter.on("verify.view.version",he),window.UserLeap.useMobileStyling=x,i.shouldDirectEmbed(v)?(I="ul-direct-embeded-frame",h=document.head,U=window,q=!1,R&&(He(w,a),b.id=I,window.UserLeap.container.appendChild(b),Be(),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":w}))):{frameId:I,contentWinDocHead:h,contentWindow:U,hasOverlay:q,iframe:b}=Ut({productConfig:l,useMobileStyling:x,surveyId:w,isFeedback:a}),window.UserLeap.frameId=I;const rt=y=>{i.eventEmitter.once(i.SprigEvent.CloseSurveyOnOverlayClick,y)},M={apiURL:window.UserLeap._API_URL,cards:u,configureExitOnOverlayClick:rt,context:n,endCard:o,envId:window.UserLeap.envId,eventEmitFn:i.eventEmitter.emit.bind(i.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:r,frame:b,headers:v,locale:c,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:i.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:m,startingQuestionIdx:(Ee=window.UserLeap.config)==null?void 0:Ee.startingQuestionIdx,studyType:$,styleNonce:window.UserLeap.styleNonce,surveyId:w,tabTitle:document.title,trackPageViewUrl:t,ulEvents:i.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:x,userId:f,viewDocument:U==null?void 0:U.document,viewWindow:U,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(Ie=window.UserLeap._config)!=null&&Ie.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const it=(a?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??l.customStyles;M.customStyles=it,U&&(U.__cfg=M);function nt(){const y=document.createElement("script");return window.UserLeap.nonce&&y.setAttribute("nonce",window.UserLeap.nonce),y.id=Re,y}const ie=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:M.path,Se=document.getElementById(Re);Se&&Se.remove();const ne=nt(),Le=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(M.installationMethod==="web-npm"||M.installationMethod==="web-npm-bundled"){const{default:y}=await Promise.resolve().then(()=>require("./view-BDFXZqzu.cjs"));y.configure(M),q&&window.UserLeap.container&&Le()}else ie&&(ne.src=ie,q&&ne.addEventListener("load",()=>{window.UserLeap.container&&Le()}),U==null||U.addEventListener("error",y=>{y.target instanceof HTMLScriptElement&&y.target.src===ie&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));h==null||h.appendChild(ne);const be={success:!0,surveyState:"ready",surveyId:w,responseGroupUid:m};return window.UserLeap.isMobileSDK&&s&&(be.delay=s),be};function fe(e){var n;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const t=((n=window.UserLeap.windowDimensions)==null?void 0:n.width)??document.body.clientWidth;return te(e)||t>10&&t<wt}function te(e){return vt.includes(e["userleap-platform"])}const me="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 ht="rgba(255,255,255, 0.95)",St="rgba(0,0,0,0.9)",se="0px",He=(e,t,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${t?" ul-container-feedback":""}`,window.UserLeap.container.dataset.studyId=e.toString();const s=je();n&&s&&!window.UserLeap.useMobileStyling?s.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ne=(e,t)=>{var s;It();const n=window.UserLeap.container;if(n)try{(s=n.parentNode)==null||s.removeChild(n),window.UserLeap.container=null,S("trackStartUrl",null),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),i.eventEmitter.emit(i.SprigEvent.SurveyClosed,{name:i.SprigEvent.SurveyClosed,initiator:e,"survey.id":parseInt(n.dataset.studyId),...t&&{studyType:t}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+n),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Be=()=>{i.eventEmitter.once(i.SprigEvent.SurveyWillClose,({initiator:e,studyType:t})=>{i.eventEmitter.removeAllListeners(i.SprigEvent.CloseSurveyOnOverlayClick),Ne(e,t)})},Lt=(e,t)=>{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=t?e.overlayStyleMobile:e.overlayStyle;s["background-color"]=r==="light"?ht:St,t||(s.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,s)},bt=(e,t,n,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({},t,window.UserLeap),{desktopDisplay:a}=t||{},d=a==="center-modal";d&&(o.framePosition="center");let c,p=!1;if(n)(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=Ce,r.maxHeight=window.UserLeap.maxHeight||"66vh";const m=()=>{p=!0,c={margin:"auto",position:"static"}};if(s)d?m():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":m();break}}return p&&Lt(o,n),Object.assign(e.style,r,c),p},Ut=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:s})=>{var m,w;const r=me,o=s&&e.desktopDisplay==="slider";He(n,s,o),Et();const a=document.createElement("iframe");a.id=r,a.setAttribute("title","Sprig User Feedback Dialog");const d=bt(a,e,t,s);Be();let c=!1;a.setHeight=f=>{(parseInt(a.style.height)!=f||!c)&&(c=!0,a.style.height=`${f}px`,i.eventEmitter.emit(i.SprigEvent.SurveyHeight,{name:i.SprigEvent.SurveyHeight,contentFrameHeight:f,"survey.id":n}))};let p=!1;a.setWidth=f=>{(parseInt(a.style.width)!=f||!p)&&(p=!0,a.style.width=`${f}px`,i.eventEmitter.emit(i.SprigEvent.SurveyWidth,{name:i.SprigEvent.SurveyWidth,contentFrameWidth:f,"survey.id":n}))},(m=window.UserLeap.container)==null||m.appendChild(a),e&&(t?e.exitOnOverlayClickMobile:e.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{i.eventEmitter.emit(i.SprigEvent.CloseSurveyOnOverlayClick)}),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":n});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(),!t)){const f=l.body;f.style.display="flex",f.style.alignItems="center"}const u=l==null?void 0:l.head;return{frameId:r,contentWinDocHead:u,contentWindow:a.contentWindow,hasOverlay:d,iframe:a}},Ve={[i.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Et=()=>{Object.entries(Ve).forEach(([e,t])=>{i.eventEmitter.on(e,t)})},It=()=>{Object.entries(Ve).forEach(([e,t])=>{i.eventEmitter.off(e,t)})},kt=1,Ae=e=>e instanceof HTMLElement||e instanceof SVGElement,j=({document:e,elementId:t,styleString:n,nonce:s})=>{const r=e.getElementById(t);if(r){r.textContent=n;return}const o=e.createElement("style");s&&(o.nonce=s),o.textContent=n,o.id=t,e.head.appendChild(o)},We=e=>{const t=e.querySelector(".ul-card__container");let n=600,s=360;if(t){n=t.scrollHeight;const r=getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),d=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=o+a+d;const c=t.querySelector(".ul-card--matrix_grid");s=c?c.scrollWidth:t.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[n+kt,s]},_t=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},je=()=>g,H=()=>document.getElementById("sprig-feedback-container"),ye=()=>document.getElementById("sprig-feedback-loading-animation"),Rt=()=>{if(ye())return;const e=document.createElement("div");return e.className="ul-loading-spinner-container",e.id="sprig-feedback-loading-animation",e.role="progressbar",e.setAttribute("aria-live","polite"),e.setAttribute("aria-busy","true"),e.setAttribute("aria-label","Processing..."),e.innerHTML=`
1
+ "use strict";var at=Object.defineProperty;var dt=(e,t,n)=>t in e?at(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>(dt(e,typeof t!="symbol"?t+"":t,n),n);const i=require("./metricsReporter-uYHd0jkA.cjs"),lt='.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}',Ce="360px",ct="ul-app",pt="#e6e6e6",ut="#bd282a",wt=500,gt=1030,Me=()=>{try{return window.parent.Intercom}catch{return null}},ft=()=>{const e=Me();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},mt=()=>{const e=Me();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},yt=Object.freeze(Object.defineProperty({__proto__:null,disable:mt,enable:ft},Symbol.toStringTag,{value:"Module"})),_e=[yt];class Fe{static disable(){_e.forEach(t=>t.disable())}static enable(){_e.forEach(t=>t.enable())}}const Re="ul-view-sdk-script",vt=["ios","android"],D="visitors",O="environments";async function k(e,t){var o,a,d;const{shouldDropOnRateLimit:n,...s}=t;s.headers=Object.assign(i.getHttpHeaders(window.UserLeap),s.headers);const r=await i.sprigFetch(e,{...s,shouldDropOnRateLimit:n});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),i.eventEmitter.emit(i.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(e,t){const n=i.localStorageHelper.getItem("userleap.ids");let s={};if(n)try{s=JSON.parse(n)}catch(o){o instanceof Error&&(o.stack=n,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[e]=t:r={[e]:t},s[window.UserLeap.envId]=r;try{i.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 ge(){return window.previewMode?"0":window.UserLeap.visitorId??""}function E(e,t,n){const s=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{s.push(r),r===O?s.push(window.UserLeap.envId):r===D&&s.push(ge())}),n&&s.push(n),s.join("/")}const V=async(e,t)=>{var Ue,Ee,Ie;const{context:n,delay:s,forceBrandedLogo:r,endCard:o,isFeedback:a=!1,heatmap:d,locale:c,previewMode:p,productConfig:l,questions:u,responseGroupUid:m,surveyId:w,uuid:f,vid:L,sessionReplay:A,studyType:$}=e,v=i.getHttpHeaders(window.UserLeap),R=te(v),x=fe(v);if(i.info(`Attempting to display survey: ${w}`),A)if(i.info("Survey has replay attached"),R)i.eventEmitter.emit(i.SprigEvent.ReplayCapture,{responseGroupUid:m,hasQuestions:!!(u!=null&&u.length),surveyId:w,uploadId:A.uploadId,replayType:A.replayDurationType??"before",seconds:A.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:i.v4(),mediaType:"screen",questionId:1,responseGroupUid:m,surveyId:w,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!i.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};i.modules.replay.scheduleOrCaptureReplay({responseGroupId:m,surveyId:w,visitorId:L,replayParams:A,completeUploadHeaders:v,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:u.length===0})}if(d){if(!i.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:y,replayParams:oe,responseGroupUid:ot,surveyId:st}=d;await i.modules.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),i.modules.replay.tryReplayAction(()=>{var ke;return(ke=i.modules.replay)==null?void 0:ke.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:v,eventId:y,isHeatmap:!0,replayParams:oe,responseGroupId:ot,surveyId:st,triggerTimestamp:Date.now(),visitorId:L})},"Error in scheduling/capturing replay")}if(L==null||!(u!=null&&u.length))return i.info(`Not displaying survey: vid: ${L} / questions: ${u}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){i.info("Already displaying a survey");const y="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(y),{success:!1,message:y,surveyState:"no survey"}}if(L!==window.UserLeap.visitorId&&f!==window.UserLeap.visitorId&&!window.previewMode){const y="Attempted to display survey to a different visitor";return i.info(y),window.UserLeap.reportError("DisplaySurvey",new Error(y)),{success:!1,message:y,surveyState:"no survey"}}i.info(`Showing survey: ${w}`),(Ue=i.modules.replay)==null||Ue.RecordSurveyShown({id:w,userAgent:window.navigator.userAgent}),Fe.disable(),i.eventEmitter.emit(i.SprigEvent.SurveyWillPresent,{name:i.SprigEvent.SurveyWillPresent,"survey.id":w});let I,b=document.createElement("div"),h,U,q;const he=y=>{const{"view.version":oe}=y;oe!==v["x-ul-sdk-version"]&&Ne(),i.eventEmitter.removeListener("verify.view.version",he)};i.eventEmitter.on("verify.view.version",he),window.UserLeap.useMobileStyling=x,i.shouldDirectEmbed(v)?(I="ul-direct-embeded-frame",h=document.head,U=window,q=!1,R&&(He(w,a),b.id=I,window.UserLeap.container.appendChild(b),Be(),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":w}))):{frameId:I,contentWinDocHead:h,contentWindow:U,hasOverlay:q,iframe:b}=Ut({productConfig:l,useMobileStyling:x,surveyId:w,isFeedback:a}),window.UserLeap.frameId=I;const rt=y=>{i.eventEmitter.once(i.SprigEvent.CloseSurveyOnOverlayClick,y)},M={apiURL:window.UserLeap._API_URL,cards:u,configureExitOnOverlayClick:rt,context:n,endCard:o,envId:window.UserLeap.envId,eventEmitFn:i.eventEmitter.emit.bind(i.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:r,frame:b,headers:v,locale:c,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:i.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:m,startingQuestionIdx:(Ee=window.UserLeap.config)==null?void 0:Ee.startingQuestionIdx,studyType:$,styleNonce:window.UserLeap.styleNonce,surveyId:w,tabTitle:document.title,trackPageViewUrl:t,ulEvents:i.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:x,userId:f,viewDocument:U==null?void 0:U.document,viewWindow:U,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(Ie=window.UserLeap._config)!=null&&Ie.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const it=(a?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??l.customStyles;M.customStyles=it,U&&(U.__cfg=M);function nt(){const y=document.createElement("script");return window.UserLeap.nonce&&y.setAttribute("nonce",window.UserLeap.nonce),y.id=Re,y}const ie=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:M.path,Se=document.getElementById(Re);Se&&Se.remove();const ne=nt(),Le=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(M.installationMethod==="web-npm"||M.installationMethod==="web-npm-bundled"){const{default:y}=await Promise.resolve().then(()=>require("./view-BiH5ieN8.cjs"));y.configure(M),q&&window.UserLeap.container&&Le()}else ie&&(ne.src=ie,q&&ne.addEventListener("load",()=>{window.UserLeap.container&&Le()}),U==null||U.addEventListener("error",y=>{y.target instanceof HTMLScriptElement&&y.target.src===ie&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));h==null||h.appendChild(ne);const be={success:!0,surveyState:"ready",surveyId:w,responseGroupUid:m};return window.UserLeap.isMobileSDK&&s&&(be.delay=s),be};function fe(e){var n;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const t=((n=window.UserLeap.windowDimensions)==null?void 0:n.width)??document.body.clientWidth;return te(e)||t>10&&t<wt}function te(e){return vt.includes(e["userleap-platform"])}const me="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 ht="rgba(255,255,255, 0.95)",St="rgba(0,0,0,0.9)",se="0px",He=(e,t,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${t?" ul-container-feedback":""}`,e&&(window.UserLeap.container.dataset.studyId=e.toString());const s=je();n&&s&&!window.UserLeap.useMobileStyling?s.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ne=(e,t)=>{var s;It();const n=window.UserLeap.container;if(n)try{(s=n.parentNode)==null||s.removeChild(n),window.UserLeap.container=null,S("trackStartUrl",null),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),i.eventEmitter.emit(i.SprigEvent.SurveyClosed,{name:i.SprigEvent.SurveyClosed,initiator:e,"survey.id":parseInt(n.dataset.studyId),...t&&{studyType:t}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+n),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Be=()=>{i.eventEmitter.once(i.SprigEvent.SurveyWillClose,({initiator:e,studyType:t})=>{i.eventEmitter.removeAllListeners(i.SprigEvent.CloseSurveyOnOverlayClick),Ne(e,t)})},Lt=(e,t)=>{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=t?e.overlayStyleMobile:e.overlayStyle;s["background-color"]=r==="light"?ht:St,t||(s.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,s)},bt=(e,t,n,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({},t,window.UserLeap),{desktopDisplay:a}=t||{},d=a==="center-modal";d&&(o.framePosition="center");let c,p=!1;if(n)(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=Ce,r.maxHeight=window.UserLeap.maxHeight||"66vh";const m=()=>{p=!0,c={margin:"auto",position:"static"}};if(s)d?m():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":m();break}}return p&&Lt(o,n),Object.assign(e.style,r,c),p},Ut=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:s})=>{var m,w;const r=me,o=s&&e.desktopDisplay==="slider";He(n,s,o),Et();const a=document.createElement("iframe");a.id=r,a.setAttribute("title","Sprig User Feedback Dialog");const d=bt(a,e,t,s);Be();let c=!1;a.setHeight=f=>{(parseInt(a.style.height)!=f||!c)&&(c=!0,a.style.height=`${f}px`,i.eventEmitter.emit(i.SprigEvent.SurveyHeight,{name:i.SprigEvent.SurveyHeight,contentFrameHeight:f,"survey.id":n}))};let p=!1;a.setWidth=f=>{(parseInt(a.style.width)!=f||!p)&&(p=!0,a.style.width=`${f}px`,i.eventEmitter.emit(i.SprigEvent.SurveyWidth,{name:i.SprigEvent.SurveyWidth,contentFrameWidth:f,"survey.id":n}))},(m=window.UserLeap.container)==null||m.appendChild(a),e&&(t?e.exitOnOverlayClickMobile:e.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{i.eventEmitter.emit(i.SprigEvent.CloseSurveyOnOverlayClick)}),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":n});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(),!t)){const f=l.body;f.style.display="flex",f.style.alignItems="center"}const u=l==null?void 0:l.head;return{frameId:r,contentWinDocHead:u,contentWindow:a.contentWindow,hasOverlay:d,iframe:a}},Ve={[i.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Et=()=>{Object.entries(Ve).forEach(([e,t])=>{i.eventEmitter.on(e,t)})},It=()=>{Object.entries(Ve).forEach(([e,t])=>{i.eventEmitter.off(e,t)})},kt=1,Ae=e=>e instanceof HTMLElement||e instanceof SVGElement,j=({document:e,elementId:t,styleString:n,nonce:s})=>{const r=e.getElementById(t);if(r){r.textContent=n;return}const o=e.createElement("style");s&&(o.nonce=s),o.textContent=n,o.id=t,e.head.appendChild(o)},We=e=>{const t=e.querySelector(".ul-card__container");let n=600,s=360;if(t){n=t.scrollHeight;const r=getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),d=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=o+a+d;const c=t.querySelector(".ul-card--matrix_grid");s=c?c.scrollWidth:t.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[n+kt,s]},_t=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},je=()=>g,H=()=>document.getElementById("sprig-feedback-container"),ye=()=>document.getElementById("sprig-feedback-loading-animation"),Rt=()=>{if(ye())return;const e=document.createElement("div");return e.className="ul-loading-spinner-container",e.id="sprig-feedback-loading-animation",e.role="progressbar",e.setAttribute("aria-live","polite"),e.setAttribute("aria-busy","true"),e.setAttribute("aria-label","Processing..."),e.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
- var Lt=Object.defineProperty,Ut=(e,t,n)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q=(e,t,n)=>(Ut(e,typeof t!="symbol"?t+"":t,n),n);import{h as C,s as Fe,d as u,S as w,l as R,i as _,v as Me,m as U,j as St,E as $,D as M,c as It,r as j,k as kt,n as Et,o as _t,p as xt,q as je,t as Ne,u as Rt,a as At,x as me,b as Dt,y as ze}from"./metricsReporter-5CQW74cF.js";const Ot='.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}',We="360px",Pt="ul-app",Ct="#e6e6e6",Tt="#bd282a",Ft=500,Mt=1030,Be=()=>{try{return window.parent.Intercom}catch{return null}},jt=()=>{const e=Be();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},Nt=()=>{const e=Be();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},zt=Object.freeze(Object.defineProperty({__proto__:null,disable:Nt,enable:jt},Symbol.toStringTag,{value:"Module"})),qe=[zt];class $e{static disable(){qe.forEach(t=>t.disable())}static enable(){qe.forEach(t=>t.enable())}}const Ve="ul-view-sdk-script",Wt=["ios","android"],T="visitors",F="environments";async function A(e,t){var n,o,r;const{shouldDropOnRateLimit:i,...s}=t;s.headers=Object.assign(C(window.UserLeap),s.headers);const a=await Fe(e,{...s,shouldDropOnRateLimit:i});if(a.ok){const c=(n=a.headers)==null?void 0:n.get("Authorization"),l=c?c.split(" "):void 0,d=l&&l.length===2?l[1]:void 0,p=(o=a.headers)==null?void 0:o.get("x-ul-visitor-id");d&&p&&(p!==window.UserLeap.visitorId||window.UserLeap.token!==d)&&(E("token",d),E("vid",p),u.emit(w.VisitorIDUpdated,{visitorId:p}),window.UserLeap.token=d,window.UserLeap.visitorId=p)}return(r=a.json)!=null&&r.logMessage&&console.warn(`[Sprig] ${a.json.logMessage}`),a}function E(e,t){const n=R.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[e]=t:r={[e]:t},o[window.UserLeap.envId]=r;try{R.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 x(e,t,n){const o=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{o.push(r),r===F?o.push(window.UserLeap.envId):r===T&&o.push(ve())}),n&&o.push(n),o.join("/")}const V=async(e,t)=>{var n,o,r;const{context:i,delay:s,forceBrandedLogo:a,endCard:c,isFeedback:l=!1,heatmap:d,locale:p,previewMode:g,productConfig:v,questions:y,responseGroupUid:h,surveyId:S,uuid:k,vid:b,sessionReplay:I,studyType:O}=e,L=C(window.UserLeap),Ae=re(L),ue=fe(L);if(_(`Attempting to display survey: ${S}`),I)if(_("Survey has replay attached"),Ae)u.emit(w.ReplayCapture,{responseGroupUid:h,hasQuestions:!!(y!=null&&y.length),surveyId:S,uploadId:I.uploadId,replayType:I.replayDurationType??"before",seconds:I.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:Me(),mediaType:"screen",questionId:1,responseGroupUid:h,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:h,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:f,replayParams:ye,responseGroupUid:ht,surveyId:bt}=d;await U.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),U.replay.tryReplayAction(()=>{var Te;return(Te=U.replay)==null?void 0:Te.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:L,eventId:f,isHeatmap:!0,replayParams:ye,responseGroupId:ht,surveyId:bt,triggerTimestamp:Date.now(),visitorId:b})},"Error in scheduling/capturing replay")}if(b==null||!(y!=null&&y.length))return _(`Not displaying survey: vid: ${b} / questions: ${y}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){_("Already displaying a survey");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(b!==window.UserLeap.visitorId&&k!==window.UserLeap.visitorId&&!window.previewMode){const f="Attempted to display survey to a different visitor";return _(f),window.UserLeap.reportError("DisplaySurvey",new Error(f)),{success:!1,message:f,surveyState:"no survey"}}_(`Showing survey: ${S}`),(n=U.replay)==null||n.RecordSurveyShown({id:S,userAgent:window.navigator.userAgent}),$e.disable(),u.emit(w.SurveyWillPresent,{name:w.SurveyWillPresent,"survey.id":S});let X,Z=document.createElement("div"),ee,P,te;const De=f=>{const{"view.version":ye}=f;ye!==L["x-ul-sdk-version"]&&Ge(),u.removeListener("verify.view.version",De)};u.on("verify.view.version",De),window.UserLeap.useMobileStyling=ue,St(L)?(X="ul-direct-embeded-frame",ee=document.head,P=window,te=!1,Ae&&(He(S,l),Z.id=X,window.UserLeap.container.appendChild(Z),Ke(),u.emit(w.SurveyLifeCycle,{state:"presented"}),u.emit(w.SurveyPresented,{name:w.SurveyPresented,"survey.id":S}))):{frameId:X,contentWinDocHead:ee,contentWindow:P,hasOverlay:te,iframe:Z}=Ht({productConfig:v,useMobileStyling:ue,surveyId:S,isFeedback:l}),window.UserLeap.frameId=X;const mt=f=>{u.once(w.CloseSurveyOnOverlayClick,f)},W={apiURL:window.UserLeap._API_URL,cards:y,configureExitOnOverlayClick:mt,context:i,endCard:c,envId:window.UserLeap.envId,eventEmitFn:u.emit.bind(u),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:Z,headers:L,locale:p,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:R.getItem("sprig.previewKey"),previewMode:g,productConfig:{framePosition:v?.framePosition,desktopDisplay:v?.desktopDisplay,placement:v?.placement},responseGroupUid:h,startingQuestionIdx:(o=window.UserLeap.config)==null?void 0:o.startingQuestionIdx,studyType:O,styleNonce:window.UserLeap.styleNonce,surveyId:S,tabTitle:document.title,trackPageViewUrl:t,ulEvents:$,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:ue,userId:k,viewDocument:P?.document,viewWindow:P,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 vt=(l?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??v.customStyles;W.customStyles=vt,P&&(P.__cfg=W);function ft(){const f=document.createElement("script");return window.UserLeap.nonce&&f.setAttribute("nonce",window.UserLeap.nonce),f.id=Ve,f}const we=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:W.path,Oe=document.getElementById(Ve);Oe&&Oe.remove();const ge=ft(),Pe=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(W.installationMethod==="web-npm"||W.installationMethod==="web-npm-bundled"){const{default:f}=await import("./view-Bn47QoHP.js");f.configure(W),te&&window.UserLeap.container&&Pe()}else we&&(ge.src=we,te&&ge.addEventListener("load",()=>{window.UserLeap.container&&Pe()}),P?.addEventListener("error",f=>{f.target instanceof HTMLScriptElement&&f.target.src===we&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));ee?.appendChild(ge);const Ce={success:!0,surveyState:"ready",surveyId:S,responseGroupUid:h};return window.UserLeap.isMobileSDK&&s&&(Ce.delay=s),Ce};function fe(e){var t;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const n=((t=window.UserLeap.windowDimensions)==null?void 0:t.width)??document.body.clientWidth;return re(e)||n>10&&n<Ft}function re(e){return Wt.includes(e["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)",qt="rgba(0,0,0,0.9)",be="0px",He=(e,t,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${t?" ul-container-feedback":""}`,window.UserLeap.container.dataset.studyId=e.toString();const o=Xe();n&&o&&!window.UserLeap.useMobileStyling?o.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ge=(e,t)=>{var n;Kt();const o=window.UserLeap.container;if(o)try{(n=o.parentNode)==null||n.removeChild(o),window.UserLeap.container=null,E("trackStartUrl",null),u.emit(w.SurveyLifeCycle,{state:"dismissed"}),u.emit(w.SurveyClosed,{name:w.SurveyClosed,initiator:e,"survey.id":parseInt(o.dataset.studyId),...t&&{studyType:t}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+o),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Ke=()=>{u.once(w.SurveyWillClose,({initiator:e,studyType:t})=>{u.removeAllListeners(w.CloseSurveyOnOverlayClick),Ge(e,t)})},$t=(e,t)=>{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=t?e.overlayStyleMobile:e.overlayStyle;n["background-color"]=o==="light"?Bt:qt,t||(n.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,n)},Vt=(e,t,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({},t,window.UserLeap),{desktopDisplay:c}=t||{},l=c==="center-modal";l&&(a.framePosition="center");let d,p=!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)&&(p=!0);else{s.width=We,s.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{p=!0,d={margin:"auto",position:"static"}};if(o)l?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 p&&$t(a,n),Object.assign(e.style,s,d),p},Ht=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:o})=>{var r,i;const s=he,a=o&&e.desktopDisplay==="slider";He(n,o,a),Gt();const c=document.createElement("iframe");c.id=s,c.setAttribute("title","Sprig User Feedback Dialog");const l=Vt(c,e,t,o);Ke();let d=!1;c.setHeight=y=>{(parseInt(c.style.height)!=y||!d)&&(d=!0,c.style.height=`${y}px`,u.emit(w.SurveyHeight,{name:w.SurveyHeight,contentFrameHeight:y,"survey.id":n}))};let p=!1;c.setWidth=y=>{(parseInt(c.style.width)!=y||!p)&&(p=!0,c.style.width=`${y}px`,u.emit(w.SurveyWidth,{name:w.SurveyWidth,contentFrameWidth:y,"survey.id":n}))},(r=window.UserLeap.container)==null||r.appendChild(c),e&&(t?e.exitOnOverlayClickMobile:e.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{u.emit(w.CloseSurveyOnOverlayClick)}),u.emit(w.SurveyLifeCycle,{state:"presented"}),u.emit(w.SurveyPresented,{name:w.SurveyPresented,"survey.id":n});const g=(i=c.contentWindow)==null?void 0:i.document;if(g&&(g.open("text/html","replace"),g.write("<!doctype html><head></head><body></body></html>"),g.close(),!t)){const y=g.body;y.style.display="flex",y.style.alignItems="center"}const v=g?.head;return{frameId:s,contentWinDocHead:v,contentWindow:c.contentWindow,hasOverlay:l,iframe:c}},Je={[w.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Gt=()=>{Object.entries(Je).forEach(([e,t])=>{u.on(e,t)})},Kt=()=>{Object.entries(Je).forEach(([e,t])=>{u.off(e,t)})},Jt=1,Qe=e=>e instanceof HTMLElement||e instanceof SVGElement,H=({document:e,elementId:t,styleString:n,nonce:o})=>{const r=e.getElementById(t);if(r){r.textContent=n;return}const i=e.createElement("style");o&&(i.nonce=o),i.textContent=n,i.id=t,e.head.appendChild(i)},Ye=e=>{const t=e.querySelector(".ul-card__container");let n=600,o=360;if(t){n=t.scrollHeight;const r=getComputedStyle(t),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 c=t.querySelector(".ul-card--matrix_grid");o=c?c.scrollWidth:t.scrollWidth;const l=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),d=parseFloat(r.marginLeft)+parseFloat(r.marginRight),p=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);o+=d+p+l}return[n+Jt,o]},Qt=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},Xe=()=>m,B=()=>document.getElementById("sprig-feedback-container"),Le=()=>document.getElementById("sprig-feedback-loading-animation"),Yt=()=>{if(Le())return;const e=document.createElement("div");return e.className="ul-loading-spinner-container",e.id="sprig-feedback-loading-animation",e.role="progressbar",e.setAttribute("aria-live","polite"),e.setAttribute("aria-busy","true"),e.setAttribute("aria-label","Processing..."),e.innerHTML=`
1
+ var Lt=Object.defineProperty,Ut=(e,t,n)=>t in e?Lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q=(e,t,n)=>(Ut(e,typeof t!="symbol"?t+"":t,n),n);import{h as C,s as Fe,d as u,S as w,l as R,i as _,v as Me,m as U,j as St,E as $,D as M,c as It,r as j,k as kt,n as Et,o as _t,p as xt,q as je,t as Ne,u as Rt,a as At,x as me,b as Dt,y as ze}from"./metricsReporter-rnL9hFho.js";const Ot='.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}',We="360px",Pt="ul-app",Ct="#e6e6e6",Tt="#bd282a",Ft=500,Mt=1030,Be=()=>{try{return window.parent.Intercom}catch{return null}},jt=()=>{const e=Be();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},Nt=()=>{const e=Be();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},zt=Object.freeze(Object.defineProperty({__proto__:null,disable:Nt,enable:jt},Symbol.toStringTag,{value:"Module"})),qe=[zt];class $e{static disable(){qe.forEach(t=>t.disable())}static enable(){qe.forEach(t=>t.enable())}}const Ve="ul-view-sdk-script",Wt=["ios","android"],T="visitors",F="environments";async function A(e,t){var n,o,r;const{shouldDropOnRateLimit:i,...s}=t;s.headers=Object.assign(C(window.UserLeap),s.headers);const a=await Fe(e,{...s,shouldDropOnRateLimit:i});if(a.ok){const c=(n=a.headers)==null?void 0:n.get("Authorization"),l=c?c.split(" "):void 0,d=l&&l.length===2?l[1]:void 0,p=(o=a.headers)==null?void 0:o.get("x-ul-visitor-id");d&&p&&(p!==window.UserLeap.visitorId||window.UserLeap.token!==d)&&(E("token",d),E("vid",p),u.emit(w.VisitorIDUpdated,{visitorId:p}),window.UserLeap.token=d,window.UserLeap.visitorId=p)}return(r=a.json)!=null&&r.logMessage&&console.warn(`[Sprig] ${a.json.logMessage}`),a}function E(e,t){const n=R.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[e]=t:r={[e]:t},o[window.UserLeap.envId]=r;try{R.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 x(e,t,n){const o=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{o.push(r),r===F?o.push(window.UserLeap.envId):r===T&&o.push(ve())}),n&&o.push(n),o.join("/")}const V=async(e,t)=>{var n,o,r;const{context:i,delay:s,forceBrandedLogo:a,endCard:c,isFeedback:l=!1,heatmap:d,locale:p,previewMode:g,productConfig:v,questions:y,responseGroupUid:h,surveyId:S,uuid:k,vid:b,sessionReplay:I,studyType:O}=e,L=C(window.UserLeap),Ae=re(L),ue=fe(L);if(_(`Attempting to display survey: ${S}`),I)if(_("Survey has replay attached"),Ae)u.emit(w.ReplayCapture,{responseGroupUid:h,hasQuestions:!!(y!=null&&y.length),surveyId:S,uploadId:I.uploadId,replayType:I.replayDurationType??"before",seconds:I.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:Me(),mediaType:"screen",questionId:1,responseGroupUid:h,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:h,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:f,replayParams:ye,responseGroupUid:ht,surveyId:bt}=d;await U.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),U.replay.tryReplayAction(()=>{var Te;return(Te=U.replay)==null?void 0:Te.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:L,eventId:f,isHeatmap:!0,replayParams:ye,responseGroupId:ht,surveyId:bt,triggerTimestamp:Date.now(),visitorId:b})},"Error in scheduling/capturing replay")}if(b==null||!(y!=null&&y.length))return _(`Not displaying survey: vid: ${b} / questions: ${y}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){_("Already displaying a survey");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(b!==window.UserLeap.visitorId&&k!==window.UserLeap.visitorId&&!window.previewMode){const f="Attempted to display survey to a different visitor";return _(f),window.UserLeap.reportError("DisplaySurvey",new Error(f)),{success:!1,message:f,surveyState:"no survey"}}_(`Showing survey: ${S}`),(n=U.replay)==null||n.RecordSurveyShown({id:S,userAgent:window.navigator.userAgent}),$e.disable(),u.emit(w.SurveyWillPresent,{name:w.SurveyWillPresent,"survey.id":S});let X,Z=document.createElement("div"),ee,P,te;const De=f=>{const{"view.version":ye}=f;ye!==L["x-ul-sdk-version"]&&Ge(),u.removeListener("verify.view.version",De)};u.on("verify.view.version",De),window.UserLeap.useMobileStyling=ue,St(L)?(X="ul-direct-embeded-frame",ee=document.head,P=window,te=!1,Ae&&(He(S,l),Z.id=X,window.UserLeap.container.appendChild(Z),Ke(),u.emit(w.SurveyLifeCycle,{state:"presented"}),u.emit(w.SurveyPresented,{name:w.SurveyPresented,"survey.id":S}))):{frameId:X,contentWinDocHead:ee,contentWindow:P,hasOverlay:te,iframe:Z}=Ht({productConfig:v,useMobileStyling:ue,surveyId:S,isFeedback:l}),window.UserLeap.frameId=X;const mt=f=>{u.once(w.CloseSurveyOnOverlayClick,f)},W={apiURL:window.UserLeap._API_URL,cards:y,configureExitOnOverlayClick:mt,context:i,endCard:c,envId:window.UserLeap.envId,eventEmitFn:u.emit.bind(u),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:Z,headers:L,locale:p,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:R.getItem("sprig.previewKey"),previewMode:g,productConfig:{framePosition:v?.framePosition,desktopDisplay:v?.desktopDisplay,placement:v?.placement},responseGroupUid:h,startingQuestionIdx:(o=window.UserLeap.config)==null?void 0:o.startingQuestionIdx,studyType:O,styleNonce:window.UserLeap.styleNonce,surveyId:S,tabTitle:document.title,trackPageViewUrl:t,ulEvents:$,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:ue,userId:k,viewDocument:P?.document,viewWindow:P,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 vt=(l?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??v.customStyles;W.customStyles=vt,P&&(P.__cfg=W);function ft(){const f=document.createElement("script");return window.UserLeap.nonce&&f.setAttribute("nonce",window.UserLeap.nonce),f.id=Ve,f}const we=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:W.path,Oe=document.getElementById(Ve);Oe&&Oe.remove();const ge=ft(),Pe=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(W.installationMethod==="web-npm"||W.installationMethod==="web-npm-bundled"){const{default:f}=await import("./view-EbP48pkj.js");f.configure(W),te&&window.UserLeap.container&&Pe()}else we&&(ge.src=we,te&&ge.addEventListener("load",()=>{window.UserLeap.container&&Pe()}),P?.addEventListener("error",f=>{f.target instanceof HTMLScriptElement&&f.target.src===we&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));ee?.appendChild(ge);const Ce={success:!0,surveyState:"ready",surveyId:S,responseGroupUid:h};return window.UserLeap.isMobileSDK&&s&&(Ce.delay=s),Ce};function fe(e){var t;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const n=((t=window.UserLeap.windowDimensions)==null?void 0:t.width)??document.body.clientWidth;return re(e)||n>10&&n<Ft}function re(e){return Wt.includes(e["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)",qt="rgba(0,0,0,0.9)",be="0px",He=(e,t,n)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container${t?" ul-container-feedback":""}`,e&&(window.UserLeap.container.dataset.studyId=e.toString());const o=Xe();n&&o&&!window.UserLeap.useMobileStyling?o.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Ge=(e,t)=>{var n;Kt();const o=window.UserLeap.container;if(o)try{(n=o.parentNode)==null||n.removeChild(o),window.UserLeap.container=null,E("trackStartUrl",null),u.emit(w.SurveyLifeCycle,{state:"dismissed"}),u.emit(w.SurveyClosed,{name:w.SurveyClosed,initiator:e,"survey.id":parseInt(o.dataset.studyId),...t&&{studyType:t}})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+o),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},Ke=()=>{u.once(w.SurveyWillClose,({initiator:e,studyType:t})=>{u.removeAllListeners(w.CloseSurveyOnOverlayClick),Ge(e,t)})},$t=(e,t)=>{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=t?e.overlayStyleMobile:e.overlayStyle;n["background-color"]=o==="light"?Bt:qt,t||(n.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,n)},Vt=(e,t,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({},t,window.UserLeap),{desktopDisplay:c}=t||{},l=c==="center-modal";l&&(a.framePosition="center");let d,p=!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)&&(p=!0);else{s.width=We,s.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{p=!0,d={margin:"auto",position:"static"}};if(o)l?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 p&&$t(a,n),Object.assign(e.style,s,d),p},Ht=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:o})=>{var r,i;const s=he,a=o&&e.desktopDisplay==="slider";He(n,o,a),Gt();const c=document.createElement("iframe");c.id=s,c.setAttribute("title","Sprig User Feedback Dialog");const l=Vt(c,e,t,o);Ke();let d=!1;c.setHeight=y=>{(parseInt(c.style.height)!=y||!d)&&(d=!0,c.style.height=`${y}px`,u.emit(w.SurveyHeight,{name:w.SurveyHeight,contentFrameHeight:y,"survey.id":n}))};let p=!1;c.setWidth=y=>{(parseInt(c.style.width)!=y||!p)&&(p=!0,c.style.width=`${y}px`,u.emit(w.SurveyWidth,{name:w.SurveyWidth,contentFrameWidth:y,"survey.id":n}))},(r=window.UserLeap.container)==null||r.appendChild(c),e&&(t?e.exitOnOverlayClickMobile:e.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{u.emit(w.CloseSurveyOnOverlayClick)}),u.emit(w.SurveyLifeCycle,{state:"presented"}),u.emit(w.SurveyPresented,{name:w.SurveyPresented,"survey.id":n});const g=(i=c.contentWindow)==null?void 0:i.document;if(g&&(g.open("text/html","replace"),g.write("<!doctype html><head></head><body></body></html>"),g.close(),!t)){const y=g.body;y.style.display="flex",y.style.alignItems="center"}const v=g?.head;return{frameId:s,contentWinDocHead:v,contentWindow:c.contentWindow,hasOverlay:l,iframe:c}},Je={[w.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Gt=()=>{Object.entries(Je).forEach(([e,t])=>{u.on(e,t)})},Kt=()=>{Object.entries(Je).forEach(([e,t])=>{u.off(e,t)})},Jt=1,Qe=e=>e instanceof HTMLElement||e instanceof SVGElement,H=({document:e,elementId:t,styleString:n,nonce:o})=>{const r=e.getElementById(t);if(r){r.textContent=n;return}const i=e.createElement("style");o&&(i.nonce=o),i.textContent=n,i.id=t,e.head.appendChild(i)},Ye=e=>{const t=e.querySelector(".ul-card__container");let n=600,o=360;if(t){n=t.scrollHeight;const r=getComputedStyle(t),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 c=t.querySelector(".ul-card--matrix_grid");o=c?c.scrollWidth:t.scrollWidth;const l=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),d=parseFloat(r.marginLeft)+parseFloat(r.marginRight),p=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);o+=d+p+l}return[n+Jt,o]},Qt=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},Xe=()=>m,B=()=>document.getElementById("sprig-feedback-container"),Le=()=>document.getElementById("sprig-feedback-loading-animation"),Yt=()=>{if(Le())return;const e=document.createElement("div");return e.className="ul-loading-spinner-container",e.id="sprig-feedback-loading-animation",e.role="progressbar",e.setAttribute("aria-live","polite"),e.setAttribute("aria-busy","true"),e.setAttribute("aria-label","Processing..."),e.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-D-24kpOB.cjs"),e=require("./core-uZksLjLE.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-uYHd0jkA.cjs"),e=require("./core-CKpFNc0j.cjs");exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;
package/dist/core.js CHANGED
@@ -1 +1 @@
1
- import{D as s,S as a}from"./metricsReporter-5CQW74cF.js";import{S as r,c as i,s as o}from"./core-DlBGQngD.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-rnL9hFho.js";import{S as r,c as i,s as o}from"./core-GW2LwzDs.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-uZksLjLE.cjs");require("./replay.cjs");const r=require("./metricsReporter-D-24kpOB.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-CKpFNc0j.cjs");require("./replay.cjs");const r=require("./metricsReporter-uYHd0jkA.cjs");exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{S as s,c as a,s as i}from"./core-DlBGQngD.js";import"./replay.js";import{D as r,S as o}from"./metricsReporter-5CQW74cF.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-GW2LwzDs.js";import"./replay.js";import{D as r,S as o}from"./metricsReporter-rnL9hFho.js";export{r as DismissReason,s as SprigAPI,o as SprigEvent,a as default,i as sprig};
@@ -1,2 +1,2 @@
1
- var J=Object.defineProperty,K=(e,t,s)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,a=(e,t,s)=>(K(e,typeof t!="symbol"?t+"":t,s),s),k=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(k||{}),A=(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))(A||{});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 _;const G=new Uint8Array(16);function z(){if(!_&&(_=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!_))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return _(G)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function Q(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 X=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),D={randomUUID:X};function Z(e,t,s){if(D.randomUUID&&!t&&!e)return D.randomUUID();e=e||{};const r=e.random||(e.rng||z)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,Q(r)}var ee=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"}},U=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=U.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 ee(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)}},C=U;C.defaultMaxListeners=10;const te=new C,w=async e=>{await new Promise(t=>{setTimeout(t,e)})},se=({"userleap-platform":e})=>e!=="web";class x{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,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 re=new x("sessionStorage"),ne=new x("localStorage");class ie{constructor(t){a(this,"payload"),a(this,"promise"),a(this,"reject",()=>{}),a(this,"resolve",()=>{}),this.payload=t,this.promise=new Promise((s,r)=>{this.reject=r,this.resolve=s})}resolveRequest(t){this.resolve(t)}}const I={replay:null},oe=e=>{I.replay=e},ae=()=>{const e=[];return I.replay&&e.push("replay"),e.join(",")},le={RATELIMIT_RESET_DEFAULT:10};let T=!1,P="",g=!1,M=!1,E=[];const ce=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ue=e=>{var t;(t=e?.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(M=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},N=(e="")=>{T=!0,P=e};function de(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.3","x-ul-installation-method":ce(e),"sprig-modules":ae()};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 V=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const s=new ie(t);return E.push(s),s.promise}},p=async(e,t)=>{const{retries:s=0,shouldDropOnRateLimit:r=!1,shouldRetryRequest:v=!1,...l}=t,c={url:e,options:l,retries:s,shouldDropOnRateLimit:r};if(g&&!v)return V(c);const h={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${P}`),h;try{const o=await fetch(e,l);if(o.status===429)if(!g&&!r||v){g=!0;const i=o.headers.has("ratelimit-reset")?Number(o.headers.get("ratelimit-reset")):le.RATELIMIT_RESET_DEFAULT;return await w(i*1e3),p(e,{...l,shouldDropOnRateLimit:r,shouldRetryRequest:!0})}else return V(c);if(g=!1,E.length&&(E.map(i=>{const y=i.payload;p(y.url,{...y.options,retries:y.retries,shouldDropOnRateLimit:y.shouldDropOnRateLimit}).then(H=>{i.resolveRequest(H)})}),E=[]),o.ok){if(o.status===249)return N(),h;const i=await o.text();try{return i&&i!=="OK"&&(o.json=JSON.parse(i)),o}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${i}`)}}}return o}catch(o){const i=s+1;return i>5||M?{ok:!1,reportError:!1,error:o}:(await w(Math.pow(2,s)*1e3),p(e,{...l,retries:i}))}},u={Error:1,Warn:2,Info:3,Debug:4};let b=1e3,f=u.Debug,d=[];const he=e=>{const t=Object.entries(u).find(s=>s[1]===e);return t?.[0]??""},pe=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),me=(e,t)=>`${pe(t)}:${e}`,ve=()=>{d=d.filter(e=>e.level<=f)},ye=()=>{d.length>b&&d.shift()},S=(e,t)=>{e>f||(d.push({level:e,line:me(t,new Date)}),ye())},W=e=>{S(u.Debug,e)},_e=e=>{S(u.Info,e)},Y=e=>{S(u.Warn,e)},ge=e=>{S(u.Error,e)},Ee=()=>d.map(e=>e.line),fe=()=>new TextEncoder().encode(Ee().join(`
1
+ var J=Object.defineProperty,K=(e,t,s)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,a=(e,t,s)=>(K(e,typeof t!="symbol"?t+"":t,s),s),k=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(k||{}),A=(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))(A||{});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 _;const G=new Uint8Array(16);function z(){if(!_&&(_=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!_))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return _(G)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function Q(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 X=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),D={randomUUID:X};function Z(e,t,s){if(D.randomUUID&&!t&&!e)return D.randomUUID();e=e||{};const r=e.random||(e.rng||z)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,Q(r)}var ee=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"}},U=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=U.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 ee(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)}},C=U;C.defaultMaxListeners=10;const te=new C,w=async e=>{await new Promise(t=>{setTimeout(t,e)})},se=({"userleap-platform":e})=>e!=="web";class x{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,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 re=new x("sessionStorage"),ne=new x("localStorage");class ie{constructor(t){a(this,"payload"),a(this,"promise"),a(this,"reject",()=>{}),a(this,"resolve",()=>{}),this.payload=t,this.promise=new Promise((s,r)=>{this.reject=r,this.resolve=s})}resolveRequest(t){this.resolve(t)}}const I={replay:null},oe=e=>{I.replay=e},ae=()=>{const e=[];return I.replay&&e.push("replay"),e.join(",")},le={RATELIMIT_RESET_DEFAULT:10};let T=!1,P="",g=!1,M=!1,E=[];const ce=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ue=e=>{var t;(t=e?.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(M=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},N=(e="")=>{T=!0,P=e};function de(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.4","x-ul-installation-method":ce(e),"sprig-modules":ae()};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 V=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const s=new ie(t);return E.push(s),s.promise}},p=async(e,t)=>{const{retries:s=0,shouldDropOnRateLimit:r=!1,shouldRetryRequest:v=!1,...l}=t,c={url:e,options:l,retries:s,shouldDropOnRateLimit:r};if(g&&!v)return V(c);const h={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${P}`),h;try{const o=await fetch(e,l);if(o.status===429)if(!g&&!r||v){g=!0;const i=o.headers.has("ratelimit-reset")?Number(o.headers.get("ratelimit-reset")):le.RATELIMIT_RESET_DEFAULT;return await w(i*1e3),p(e,{...l,shouldDropOnRateLimit:r,shouldRetryRequest:!0})}else return V(c);if(g=!1,E.length&&(E.map(i=>{const y=i.payload;p(y.url,{...y.options,retries:y.retries,shouldDropOnRateLimit:y.shouldDropOnRateLimit}).then(H=>{i.resolveRequest(H)})}),E=[]),o.ok){if(o.status===249)return N(),h;const i=await o.text();try{return i&&i!=="OK"&&(o.json=JSON.parse(i)),o}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${i}`)}}}return o}catch(o){const i=s+1;return i>5||M?{ok:!1,reportError:!1,error:o}:(await w(Math.pow(2,s)*1e3),p(e,{...l,retries:i}))}},u={Error:1,Warn:2,Info:3,Debug:4};let b=1e3,f=u.Debug,d=[];const he=e=>{const t=Object.entries(u).find(s=>s[1]===e);return t?.[0]??""},pe=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),me=(e,t)=>`${pe(t)}:${e}`,ve=()=>{d=d.filter(e=>e.level<=f)},ye=()=>{d.length>b&&d.shift()},S=(e,t)=>{e>f||(d.push({level:e,line:me(t,new Date)}),ye())},W=e=>{S(u.Debug,e)},_e=e=>{S(u.Info,e)},Y=e=>{S(u.Warn,e)},ge=e=>{S(u.Error,e)},Ee=()=>d.map(e=>e.line),fe=()=>new TextEncoder().encode(Ee().join(`
2
2
  `)),Se=async e=>{if(!e)return;const t=fe();return p(e,{body:t,method:"PUT"})},Le=(e,t)=>{e!==void 0&&(b=e),t!==void 0&&(f=t),W(`Initializing logger with limit of ${b} lines and ${he(f)} level`),ve()},j=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 $(e,t){const{matchType:s,pattern:r}=e,v=s?j[s]:j.legacy;let l=!1;try{l=v(r,t)}catch(c){const h=`[Sprig] (ERR-445) Failed to check url match with pattern ${r}`;c instanceof Error&&(console.warn(h,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(h,c))}return l}const we=e=>{const{pageUrlEvents:t}=window.UserLeap._config,s=t?.find(r=>r.id===e);return s?$(s,window.location.href):!1};let F=!0,R=!1;const Ie=()=>F=!1,be=()=>R=!0,Re=["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 m={},O;class Oe{constructor(t){a(this,"_values",[]),a(this,"_isWebMetric"),this.name=t,this._isWebMetric=Re.includes(this.name)}report(t){if(F&&this._values.push({time:Date.now(),value:t}),R||!this._isWebMetric)return;const s=this.findExceededThreshold(t);s&&O&&O(t,s)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const s=m[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 ke=(e,t)=>{m={},R=!1,e?.forEach(s=>{var r;s.metric in m||(m[s.metric]=[]),(r=m[s.metric])==null||r.push(s)}),O=t},L={},q=e=>{const t=new Oe(e);return L[e]=t,t},Ae=(e,t)=>{let s=L[e];return s||(s=q(e)),s.report(t)},De=async e=>{const t=Object.values(L).map(s=>({name:s.name,values:s.collect()}));if(t.some(s=>s.values.length))try{await e(JSON.stringify(t))}catch(s){Y(`Error posting metrics: ${s}`)}},Ue=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{De(t)},e*1e3):Ie()};export{k as D,B as E,L as P,A as S,re as a,Ae as b,we as c,te as d,ge as e,W as f,oe as g,de as h,_e as i,se as j,ke as k,ne as l,I as m,Ue as n,be as o,Le as p,ue as q,q as r,p as s,N as t,Se as u,Z as v,Y as w,$ as x,w as y};
@@ -1,2 +1,2 @@
1
- "use strict";var B=Object.defineProperty;var J=(e,t,r)=>t in e?B(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t,r)=>(J(e,typeof t!="symbol"?t+"":t,r),r);var O=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(O||{}),U=(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))(U||{});const K={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 g;const G=new Uint8Array(16);function Q(){if(!g&&(g=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!g))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return g(G)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function z(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 X=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),A={randomUUID:X};function Z(e,t,r){if(A.randomUUID&&!t&&!e)return A.randomUUID();e=e||{};const s=e.random||(e.rng||Q)();return s[6]=s[6]&15|64,s[8]=s[8]&63|128,z(s)}var ee=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"}},x=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=x.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 ee(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=x;D.defaultMaxListeners=10;const te=new D,R=async e=>{await new Promise(t=>{setTimeout(t,e)})},re=({"userleap-platform":e})=>e!=="web";class M{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 se=new M("sessionStorage"),ne=new M("localStorage");class ie{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 k={replay:null},oe=e=>{k.replay=e},ae=()=>{const e=[];return k.replay&&e.push("replay"),e.join(",")},le={RATELIMIT_RESET_DEFAULT:10};let P=!1,V="",_=!1,H=!1,L=[];const ce=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ue=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(H=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},W=(e="")=>{P=!0,V=e};function de(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.3","x-ul-installation-method":ce(e),"sprig-modules":ae()};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 T=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new ie(t);return L.push(r),r.promise}},f=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:y=!1,...l}=t,c={url:e,options:l,retries:r,shouldDropOnRateLimit:s};if(_&&!y)return T(c);const p={ok:!1,reportError:!1};if(P)return console.info(`UserLeap - ${V}`),p;try{const i=await fetch(e,l);if(i.status===429)if(!_&&!s||y){_=!0;const u=i.headers.has("ratelimit-reset")?Number(i.headers.get("ratelimit-reset")):le.RATELIMIT_RESET_DEFAULT;return await R(u*1e3),f(e,{...l,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}else return T(c);if(_=!1,L.length&&(L.map(o=>{const u=o.payload;f(u.url,{...u.options,retries:u.retries,shouldDropOnRateLimit:u.shouldDropOnRateLimit}).then($=>{o.resolveRequest($)})}),L=[]),i.ok){if(i.status===249)return W(),p;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||H?{ok:!1,reportError:!1,error:i}:(await R(Math.pow(2,r)*1e3),f(e,{...l,retries:o}))}},h={Error:1,Warn:2,Info:3,Debug:4};let b=1e3,v=h.Debug,d=[];const he=e=>{const t=Object.entries(h).find(r=>r[1]===e);return(t==null?void 0:t[0])??""},pe=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),me=(e,t)=>`${pe(t)}:${e}`,fe=()=>{d=d.filter(e=>e.level<=v)},ye=()=>{d.length>b&&d.shift()},E=(e,t)=>{e>v||(d.push({level:e,line:me(t,new Date)}),ye())},Y=e=>{E(h.Debug,e)},ge=e=>{E(h.Info,e)},q=e=>{E(h.Warn,e)},_e=e=>{E(h.Error,e)},Le=()=>d.map(e=>e.line),ve=()=>new TextEncoder().encode(Le().join(`
1
+ "use strict";var B=Object.defineProperty;var J=(e,t,r)=>t in e?B(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var a=(e,t,r)=>(J(e,typeof t!="symbol"?t+"":t,r),r);var O=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(O||{}),U=(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))(U||{});const K={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 g;const G=new Uint8Array(16);function Q(){if(!g&&(g=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!g))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return g(G)}const n=[];for(let e=0;e<256;++e)n.push((e+256).toString(16).slice(1));function z(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 X=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),A={randomUUID:X};function Z(e,t,r){if(A.randomUUID&&!t&&!e)return A.randomUUID();e=e||{};const s=e.random||(e.rng||Q)();return s[6]=s[6]&15|64,s[8]=s[8]&63|128,z(s)}var ee=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"}},x=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=x.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 ee(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=x;D.defaultMaxListeners=10;const te=new D,R=async e=>{await new Promise(t=>{setTimeout(t,e)})},re=({"userleap-platform":e})=>e!=="web";class M{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 se=new M("sessionStorage"),ne=new M("localStorage");class ie{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 k={replay:null},oe=e=>{k.replay=e},ae=()=>{const e=[];return k.replay&&e.push("replay"),e.join(",")},le={RATELIMIT_RESET_DEFAULT:10};let P=!1,V="",_=!1,H=!1,L=[];const ce=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",ue=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(H=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},W=(e="")=>{P=!0,V=e};function de(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.31.4","x-ul-installation-method":ce(e),"sprig-modules":ae()};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 T=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new ie(t);return L.push(r),r.promise}},f=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:y=!1,...l}=t,c={url:e,options:l,retries:r,shouldDropOnRateLimit:s};if(_&&!y)return T(c);const p={ok:!1,reportError:!1};if(P)return console.info(`UserLeap - ${V}`),p;try{const i=await fetch(e,l);if(i.status===429)if(!_&&!s||y){_=!0;const u=i.headers.has("ratelimit-reset")?Number(i.headers.get("ratelimit-reset")):le.RATELIMIT_RESET_DEFAULT;return await R(u*1e3),f(e,{...l,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}else return T(c);if(_=!1,L.length&&(L.map(o=>{const u=o.payload;f(u.url,{...u.options,retries:u.retries,shouldDropOnRateLimit:u.shouldDropOnRateLimit}).then($=>{o.resolveRequest($)})}),L=[]),i.ok){if(i.status===249)return W(),p;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||H?{ok:!1,reportError:!1,error:i}:(await R(Math.pow(2,r)*1e3),f(e,{...l,retries:o}))}},h={Error:1,Warn:2,Info:3,Debug:4};let b=1e3,v=h.Debug,d=[];const he=e=>{const t=Object.entries(h).find(r=>r[1]===e);return(t==null?void 0:t[0])??""},pe=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),me=(e,t)=>`${pe(t)}:${e}`,fe=()=>{d=d.filter(e=>e.level<=v)},ye=()=>{d.length>b&&d.shift()},E=(e,t)=>{e>v||(d.push({level:e,line:me(t,new Date)}),ye())},Y=e=>{E(h.Debug,e)},ge=e=>{E(h.Info,e)},q=e=>{E(h.Warn,e)},_e=e=>{E(h.Error,e)},Le=()=>d.map(e=>e.line),ve=()=>new TextEncoder().encode(Le().join(`
2
2
  `)),Ee=async e=>{if(!e)return;const t=ve();return f(e,{body:t,method:"PUT"})},we=(e,t)=>{e!==void 0&&(b=e),t!==void 0&&(v=t),Y(`Initializing logger with limit of ${b} lines and ${he(v)} level`),fe()},C=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 N(e,t){const{matchType:r,pattern:s}=e,y=r?C[r]:C.legacy;let l=!1;try{l=y(s,t)}catch(c){const p=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;c instanceof Error&&(console.warn(p,c),c.stack=JSON.stringify(e),window.UserLeap.reportError(p,c))}return l}const Re=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return r?N(r,window.location.href):!1};let j=!0,S=!1;const be=()=>j=!1,Ie=()=>S=!0,ke=["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 m={},I;class Se{constructor(t){a(this,"_values",[]);a(this,"_isWebMetric");this.name=t,this._isWebMetric=ke.includes(this.name)}report(t){if(j&&this._values.push({time:Date.now(),value:t}),S||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&I&&I(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=m[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 Ae=(e,t)=>{m={},S=!1,e==null||e.forEach(r=>{var s;r.metric in m||(m[r.metric]=[]),(s=m[r.metric])==null||s.push(r)}),I=t},w={},F=e=>{const t=new Se(e);return w[e]=t,t},Te=(e,t)=>{let r=w[e];return r||(r=F(e)),r.report(t)},Ce=async e=>{const t=Object.values(w).map(r=>({name:r.name,values:r.collect()}));if(t.some(r=>r.values.length))try{await e(JSON.stringify(t))}catch(r){q(`Error posting metrics: ${r}`)}},Oe=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{Ce(t)},e*1e3):be()};exports.DismissReason=O;exports.EVENTS=K;exports.PerformanceMetrics=w;exports.SprigEvent=U;exports.checkUrlMatch=N;exports.checkUrlStillMatching=Re;exports.configureLogger=we;exports.cspViolationHandler=ue;exports.debug=Y;exports.delay=R;exports.disableThresholdChecking=Ie;exports.error=_e;exports.eventEmitter=te;exports.getHttpHeaders=de;exports.info=ge;exports.initPerformanceReporting=Oe;exports.killNetworkRequests=W;exports.localStorageHelper=ne;exports.modules=k;exports.registerMetric=F;exports.registerReplay=oe;exports.registerThresholds=Ae;exports.reportAndRegister=Te;exports.sessionStorageHelper=se;exports.shouldDirectEmbed=re;exports.sprigFetch=f;exports.uploadLogfile=Ee;exports.v4=Z;exports.warn=q;
package/dist/replay.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var Ee=Object.defineProperty;var Re=(e,t,n)=>t in e?Ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>(Re(e,typeof t!="symbol"?t+"":t,n),n);const o=require("./metricsReporter-D-24kpOB.cjs");var k=(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))(k||{});class Pe{constructor(t){A(this,"awaitingResolvers",[]);A(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 se=new Pe(2),xe=e=>se.setLimit(e),Be=async e=>se.execute(async()=>{var r;o.info(`Beginning upload of chunk ${e.chunkIndex} for survey: ${e.surveyId}`);const t=await o.sprigFetch(e.uploadUrl,{body:e.data,method:"PUT"});o.info(`Completed upload of chunk ${e.chunkIndex} for survey: ${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}),oe=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:a,responseGroupUuid:s,replayDuration:i,eventDigest:c},l=!1)=>{var p;if(!l&&!n&&!r){o.info(`Cannot mark upload complete: isMobile: ${l} / uploadId: ${n} / etags: ${r}`);return}o.info(`Marking upload complete for survey: ${t}`);const d=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(p=window==null?void 0:window.navigator)==null?void 0:p.userAgent}),headers:a,shouldRetryRequest:!0});return o.info(`Done marking upload complete for survey: ${t}`),d},N=(e,t)=>t.some(n=>e instanceof n);let q,Q;function Te(){return q||(q=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Ae(){return Q||(Q=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const _=new WeakMap,$=new WeakMap,B=new WeakMap;function $e(e){const t=new Promise((n,r)=>{const a=()=>{n(D(e.result))},s=()=>{r(e.error)};e.onsuccess=a,e.onerror=s});return B.set(t,e),t}function Ue(e){if(_.has(e))return;const t=new Promise((n,r)=>{const a=()=>{n()},s=()=>{r(e.error||new DOMException("AbortError","AbortError"))};e.oncomplete=a,e.onerror=s,e.onabort=s});_.set(e,t)}let L={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 ie(e){L=e(L)}function Ne(e){return Ae().includes(e)?function(...t){return e.apply(M(this),t),D(this.request)}:function(...t){return D(e.apply(M(this),t))}}function _e(e){return typeof e=="function"?Ne(e):(e instanceof IDBTransaction&&Ue(e),N(e,Te())?new Proxy(e,L):e)}function D(e){if(e instanceof IDBRequest)return $e(e);if($.has(e))return $.get(e);const t=_e(e);return t!==e&&($.set(e,t),B.set(t,e)),t}const M=e=>B.get(e);function Le(e,t,{blocked:n,upgrade:r,blocking:a,terminated:s}={}){const i=indexedDB.open(e,t),c=D(i);return r&&(i.onupgradeneeded=l=>{r(D(i.result),l.oldVersion,l.newVersion,D(i.transaction),l)}),n&&(i.onblocked=l=>n(l.oldVersion,l.newVersion,l)),c.then(l=>{s&&(l.onclose=()=>s()),a&&(l.onversionchange=d=>a(d.oldVersion,d.newVersion,d))}).catch(()=>{}),c}function G(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),D(n).then(()=>{})}const Me=["get","getKey","getAll","getAllKeys","count"],Oe=["put","add","delete","clear"],U=new Map;function X(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,a=Oe.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(a||Me.includes(n)))return;const s=async function(i,...c){const l=this.transaction(i,a?"readwrite":"readonly");let d=l.store;return r&&(d=d.index(c.shift())),(await Promise.all([d[n](...c),a&&l.done]))[0]};return U.set(t,s),s}ie(e=>({...e,get:(t,n,r)=>X(t,n)||e.get(t,n,r),has:(t,n)=>!!X(t,n)||e.has(t,n)}));const He=["continue","continuePrimaryKey","advance"],Y={},O=new WeakMap,ce=new WeakMap,Fe={get(e,t){if(!He.includes(t))return e[t];let n=Y[t];return n||(n=Y[t]=function(...r){O.set(this,ce.get(this)[t](...r))}),n}};async function*je(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const n=new Proxy(t,Fe);for(ce.set(n,t),B.set(n,M(t));t;)yield n,t=await(O.get(n)||t.continue()),O.delete(n)}function Z(e,t){return t===Symbol.asyncIterator&&N(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&N(e,[IDBIndex,IDBObjectStore])}ie(e=>({...e,get(t,n,r){return Z(t,n)?je:e.get(t,n,r)},has(t,n){return Z(t,n)||e.has(t,n)}}));const Ke=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},le=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=Ke(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},S={capture:!0,passive:!0},Ve=["a","button","input","option","li","link"],Ge=["Escape","Enter","Backspace","F5","Tab"];let P=!1;const We=["label","type","role","title","placeholder","errormessage","valuetext","href"],ee="aria-",ze=e=>{if(!e.tagName)return"No tagName";const t=e.getAttribute("type");return t?`${t} ${e.tagName.toLowerCase()}`:e.tagName.toLowerCase()},te=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=ze(e);for(const a of e.attributes){let s=a.name;const i=a.value;s.startsWith(ee)&&(s=s.substring(ee.length)),We.includes(s)&&(n[s]=i)}return n},Je=e=>{var a;if(!e)return{};const n={...te(e)},r=e.parentElement;if(r&&Ve.includes((a=r.tagName)==null?void 0:a.toLowerCase())){const s=te(r);Object.assign(n,s)}return n},de=(e,t)=>{var n;lt({x:t.x,y:t.y,type:e,elementAttributes:Je(t.target),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...t.target instanceof HTMLElement?{rect:(n=t.target)==null?void 0:n.getBoundingClientRect(),xPath:le(t.target)}:{}})},qe=e=>t=>de(e,t),ue=e=>{Ge.includes(e.key)&&gt({key:e.key})},Qe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&mt({url:window.location.href,currentPageTitle:document.title})},Xe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&ft({curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title})},Ye=(e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}},Ze=e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),wt({xPath:le(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},pe=Ye(Ze,750),me=qe("left_click"),fe=e=>{e.button===2&&de("right_click",e)},et=()=>{P||(window.addEventListener("click",me,S),window.addEventListener("mousedown",fe,S),window.addEventListener("keydown",ue,S),window.addEventListener("scroll",pe,S),P=!0,Qe(),Xe())},tt=()=>{P&&(window.removeEventListener("click",me,S),window.removeEventListener("mousedown",fe,S),window.removeEventListener("keydown",ue,S),window.removeEventListener("scroll",pe,S),P=!1)},nt=3e4,m={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},rt=.5,at=async()=>{var e;if(!window.indexedDB||!window.IDBKeyRange)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 o.warn(`Storage: ${r}GB`),r<rt}catch{return!0}return!1},st=()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.info(`Found saved session id: ${e}`),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.info(`Generating new uuid: ${t}`),t},w=st(),H=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},b=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording");window.addEventListener("beforeunload",()=>{o.info(`Before page unload saving session id: ${w}`),o.sessionStorageHelper.setItem("sprig.sessionId",w)});const ot=()=>b()?o.info("ReolayDisabledPendingHeatmap"):h(async()=>{const e=(await u.getPendingCaptures({isHeatmap:!0})).map(n=>({eventId:n.captureParams.eventId,uuid:n.uuid})),t=[];e.forEach(({eventId:n,uuid:r})=>{o.checkUrlStillMatching(n)||t.push(r)}),t.length&&await u.markPendingHeatmapsReady(t)},"Error marking pending heatmaps ready"),it=e=>{Date.now()-e>=nt&&h(()=>u.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),I=(e,t)=>{var n,r;if(m.isRecording)try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(a){T("Error recording custom event",a)}},ct=e=>{e.description&&(e.description=W(e.description)),I("Sprig_PageView",e)},lt=e=>{var t;(t=e==null?void 0:e.elementAttributes)!=null&&t.text&&(e.elementAttributes.text=W(e.elementAttributes.text)),I("Sprig_Click",e)},dt=e=>{I("Sprig_TrackEvent",e)},ut=e=>{I("Sprig_ShowSurvey",e)},pt=e=>{I("Sprig_SubmitSurvey",e)},mt=e=>{I("Sprig_Refresh",e)},ft=e=>{e.currentPageTitle&&(e.currentPageTitle=W(e.currentPageTitle)),I("Sprig_BackForward",e)},gt=e=>{I("Sprig_Keystroke",e)},wt=async e=>{const{x:t,xPath:n,y:r}=e,a=m.scrollEventUuids[n];if(a)return h(async()=>{var c,l,d,p;const s=await u.openDB(),i=await s.get("events",a);if(i!=null&&i.event){const f=JSON.parse(i.event),y=t>((l=(c=f.data)==null?void 0:c.payload)==null?void 0:l.x),g=r>((p=(d=f.data)==null?void 0:d.payload)==null?void 0:p.y);if(!(y||g))return null;y&&(f.data.payload.x=t),g&&(f.data.payload.y=r),f.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(f),await s.put("events",i)}else I("Sprig_Scroll",e)},"Error updating scroll event");I("Sprig_Scroll",e)},yt=()=>m.isRecording,ge=()=>{m.stopRecording&&(m.stopRecording(),m.stopRecording=void 0),m.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{m[e]&&(clearInterval(m[e]),m[e]=void 0)}),tt()},ht=["did not allow mutations","called in an invalid security context"],It=e=>{if(!e)return!0;for(const t of ht)if(e.toLowerCase().includes(t))return!1;return!0},vt=(e,t,{reportError:n=!0,extraInfo:r})=>{b()||t instanceof Error&&(H(),It(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),u.clearAll()))},bt=async(e,t,{reportError:n}={reportError:!0})=>{let r={};try{const{quota:a=0,usage:s=0}=await window.navigator.storage.estimate();r={availableSpaceInMB:(a-s)/2**20,quota:a,usage:s}}catch{r.availableSpaceInMB=null}vt(e,t,{reportError:n,extraInfo:r})},T=(e,t,{reportError:n}={reportError:!0})=>(ge(),o.error(`${e} - ${t.message} - ${t.name}`),bt(e,t,{reportError:n})),h=async(e,t)=>{try{await e()}catch(n){T(t,n)}},St=()=>{m.isRecording&&h(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot")},Dt=async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const a=window.UserLeap._API_URL,s=await oe({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:a,headers:r},!0);return!(s!=null&&s.error)},ne=30,Ct=1;G("replayStorage").catch(console.error);G("sprig.replay").catch(console.error);class kt{openDB(){return Le("sprigReplay",Ct,{upgrade:(t,n,r)=>{if(r===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!t.objectStoreNames.contains("events")){const a=t.createObjectStore("events",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!t.objectStoreNames.contains("chunkUploads")){const a=t.createObjectStore("chunkUploads",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+status]",["sessionId","status"]),a.createIndex("[uploadId+status]",["uploadId","status"]),a.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!t.objectStoreNames.contains("pendingCaptures")){const a=t.createObjectStore("pendingCaptures",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}deleteDB(){return G("sprigReplay").catch(console.error)}async bulkAdd(t,n){const r=(await this.openDB()).transaction(t,"readwrite");return Promise.all([...n.map(a=>r.store.add(a)),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),a=(await this.openDB()).transaction(t,"readwrite");let i=await a.store.index("sessionId").openCursor(r);for(;i;)i.delete(),i=await i.continue();await a.done}async updatePartial(t,n,r){const s=(await this.openDB()).transaction(t,"readwrite"),i=await s.store.get(n);i&&await s.store.put({...i,...r}),await s.done}async deleteRowsBefore(t,n,r=()=>!0){const a=IDBKeyRange.upperBound(n,!0),s=(await this.openDB()).transaction(t,"readwrite");let c=await s.store.index("timestamp").openCursor(a);for(;c;)r(c.value)&&c.delete(),c=await c.continue();await s.done}async getEventsBetween(t,n=Date.now()){if(t>=n)return Promise.resolve([]);const r=IDBKeyRange.bound([w,t],[w,n],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(t,n,r=ne){const a=new Date,s=a.setMinutes(a.getMinutes()+(r??ne)),i=(await this.openDB()).transaction("events","readwrite"),c=i.store.index("[sessionId+timestamp]"),l=IDBKeyRange.bound([w,t],[w,n],!1,!0);let d=await c.openCursor(l);for(;d;)d.update({...d.value,expiredAt:s}),d=await d.continue();await i.done}async deleteChunkUploads(t,n){const r=IDBKeyRange.only([n,t]),a=(await this.openDB()).transaction("chunkUploads","readwrite");let i=await a.store.index("[uploadId+status]").openCursor(r);for(;i;)i.delete(),i=await i.continue();await a.done}async getChunkUploadsByStatus({sessionId:t,status:n,uploadId:r}){const s=(await this.openDB()).transaction("chunkUploads","readonly"),i=r?s.store.index("[uploadId+status]"):s.store.index("[sessionId+status]"),c=r?IDBKeyRange.only([r,n]):IDBKeyRange.only([t,n]);return i.getAll(c)}async getPendingCaptures(t={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",w)).filter(a=>!t.beforePresent||a.targetTimestamp<Date.now()).filter(a=>!t.isHeatmap||(a.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(t){const n=(await this.openDB()).transaction("pendingCaptures","readwrite");let a=await n.store.index("sessionId").openCursor(w);for(;a;){const s=a.value;s.captureParams.responseGroupId===t&&a.update({...s,canUpload:!0}),a=await a.continue()}await n.done}async markPendingHeatmapsReady(t){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const r=Date.now(),a=(await this.openDB()).transaction("pendingCaptures","readwrite");let i=await a.store.index("sessionId").openCursor(w);for(;i;){const c=i.value;c.captureParams.isHeatmap&&(!t||t.includes(c.uuid))&&i.update({...c,targetTimestamp:r,captureParams:{...c.captureParams,triggerTimestamp:r,replayParams:{...c.captureParams.replayParams,replayDurationSeconds:Math.floor((r-c.timestamp)/1e3)}}}),i=await i.continue()}await a.done}}const u=new kt,Et=async(e,t,n)=>new Promise((r,a)=>{const s=e.createElement("script");s.src=t,s.onload=r,s.onerror=a,n&&(s.nonce=n),e.head.appendChild(s)}),we=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const a=performance.now()-n;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(a/1e3)}return r},ye=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let a=o.PerformanceMetrics[t];a||(a=o.registerMetric(t)),a.report(r/1e3)}};let F=5e3,R=6e4,j=0;const Rt=5,he=30,x=he+Rt;let C,K=!1,V=[];const Pt=async({viewDocument:e,maxReplayDurationSeconds:t,replayNonce:n,maxInflightRequests:r=2,replaySettings:a,teardownAfter:s=!1})=>{if(C=o.sessionStorageHelper.getItem("sprig.pendingCount"),!m.isRecording){if(s&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),b())return o.info("ReplayDisabled");if(await at())return o.error("IDBNotSupported"),H();try{await u.openDB()}catch(i){return o.error(`ReplayError-${i.message}-${i.name}`),i.name==="VersionError"&&u.deleteDB(),H()}if(!t)return o.info("MissingReplaySeconds");o.info("ReplayInit"),await h(async()=>{if(a!=null&&a.minDuration&&(F=a.minDuration),a!=null&&a.batchDuration&&(R=a.batchDuration),xe(r),_t(),At(t+x,30*60,t+x),$t(),!window.rrwebRecord){const d=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record-2.0.0-alpha.6.min.js";await Et(e,d,n)}const i=window.rrwebRecord;if(!i)return o.warn("RecordScriptFailed");let c=!0,l=0;m.stopRecording=i({checkoutEveryNms:he*1e3,sampling:{input:"last",scroll:250,media:800},emit:(d,p)=>{if(d.type===k.Custom&&(j=Date.now()),b())return;if(p&&d.type===k.Meta)l=performance.now();else if(p&&l&&d.type===k.FullSnapshot){const y=performance.now()-l;o.reportAndRegister("sdk_replay_snapshot_seconds",y/1e3)}const f=c||!!p&&d.type===k.Meta;c=!1,xt({uuid:o.v4(),event:JSON.stringify(d),isValidStart:f,timestamp:Date.now()})},...a}),m.isRecording=!!m.stopRecording,m.isRecording&&(o.eventEmitter.on("survey.complete",d=>{pt({id:d,userAgent:window.navigator.userAgent})}),et())},"Error initializing replay")}},xt=e=>{var t,n,r,a;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(a=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:a.xPath;if(!s)return;m.scrollEventUuids[s]=e.uuid}V.push(e),K||Tt()},Bt=async e=>{const t=e.map(n=>({...n,sessionId:n.sessionId??w}));if(t.length!==0)return h(()=>u.bulkAdd("events",t),"Error storing replay events")},Tt=()=>{K=!0,setTimeout(async()=>{if(b())return;const e=V;V=[],K=!1,ye(async()=>{await Bt(e)},"sdk_replay_add_event_batch_seconds")},500)},At=(e,t,n)=>{m.cleanupInterval=window.setInterval(()=>{const r=Date.now();b()||(o.debug(`CleanUp Secs - Events: ${e}, Chunks: ${t}, Captures: ${n}`),we(()=>h(async()=>{await Promise.all([u.deleteRowsBefore("events",r-e*1e3,a=>a.expiredAt===void 0||a.expiredAt<r-e*1e3),u.deleteRowsBefore("chunkUploads",r-t*1e3),u.deleteRowsBefore("pendingCaptures",r-n*1e3,a=>!a.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.info("Cleanup complete"))},3e4)},$t=()=>{m.pendingCheckInterval=window.setInterval(async()=>{h(async()=>{const e=parseInt(C??"0");if(e===0)return;const t=await u.getPendingCaptures({beforePresent:!0}),n=await u.openDB();await Promise.all(t.map(async r=>(await n.delete("pendingCaptures",r.uuid),be(r.captureParams,r.canUpload)))),C=(e-t.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",C)},"Error initiating pending captures")},5e3)},Ut=async(e,t,n,r,a)=>{const s=Math.min(e+a,n),i=`from: ${new Date(e).toLocaleTimeString()} to ${new Date(s).toLocaleTimeString()}`;o.info(`Getting event batch ${i}`);const c=await we(()=>u.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(c!=null&&c.length))return o.info(`No events found ${i}`),{validStartFound:r,events:[]};if(!r){o.info(`Searching for valid start in ${c.length} events ${i}`);let l=-1;if(c==null||c.forEach((p,f)=>{if(!p.isValidStart)return;const y=p.timestamp<=t;(l<0||y)&&(l=f)}),l<0)return o.info(`No valid start found in ${c.length} events ${i}`),{validStartFound:r,events:[]};const d=c[l].timestamp;return o.info(`Found valid start at: ${new Date(d).toLocaleTimeString()} in events ${i}`),{validStartFound:!0,events:c==null?void 0:c.slice(l)}}return{validStartFound:r,events:c}},Nt=(e,t,n)=>{const r=e.length,a=t*1024*1024,s=Math.ceil(r/n),i=Math.max(a,s);o.info(`Total file bytes: ${r} / target chunk size: ${i}`);const c=[];let l=0;for(;l<r;)c.push(e.slice(l,l+i)),l+=i;return c},Ie=e=>Promise.all(e.map(async t=>{const n=await Be(t);return await u.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),ve=async e=>{o.info(`Marking upload complete if finished: ${e}`);const t=await u.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length)){o.info(`No finished chunks found for upload: ${e}`);return}const n=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);n.sort((s,i)=>s.chunkIndex-i.chunkIndex);const r=n.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),a=n[0];await oe({apiUrl:a.apiUrl,surveyId:a.surveyId,uploadId:e,responseGroupUuid:a.responseGroupId,etags:r,headers:a.completeUploadHeaders,replayDuration:a.replayDuration}),o.info(`Cleaning up chunks for ${e}`),await u.deleteChunkUploads("UploadComplete",e),o.info(`Done cleaning up chunks for ${e}`)},_t=()=>{h(async()=>{const e=await u.getChunkUploadsByStatus({sessionId:w,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await Ie(e);o.info(`Finished uploading unfinished chunks for ${t}`),t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return ve(n)}))},"Error uploading unfinished chunks")},Lt=async(e,t)=>{await Ie(t),o.info(`Done uploading chunks for uploads: ${e.join(",")}`),await Promise.all(e.map(n=>ve(n)))},Mt=e=>{let t=0;e.forEach(a=>{t+=a.length});const n=new Uint8Array(t);let r=0;return e.forEach(a=>{n.set(a,r),r+=a.length}),n},re=async(e,t,n)=>{const r=new TextEncoder;let a=null,s=null,i=null,c=!1,l=!1,[d,p]=[0,0];const f=e-x*1e3,y=[];let g=[];o.info(`Getting events between ${new Date(e).toLocaleTimeString()} and ${new Date(t).toLocaleTimeString()}`),o.info(`Using batch duration: ${R}ms`);for(let E=f;E<t;E+=R){if({validStartFound:l,events:g}=await Ut(E,e,t,l,R),!(g!=null&&g.length)){o.info("No events found");continue}d===0&&(d=g[0].timestamp),p=g[g.length-1].timestamp,o.info(`Last event time in batch: ${new Date(p).toLocaleTimeString()}`);const z=g.map(ke=>ke.event);z.push(`{"timestamp":${t}}`);const Ce=`${c?",":"["}${z}`,J=r.encode(Ce);n&&s===null&&(o.debug("Attempting compression"),i=new window.CompressionStream("gzip"),s=i.writable.getWriter()),ye(()=>{n&&s?s.write(J):y.push(J)},"sdk_replay_compression_seconds"),c=!0}if(p-d<F)return o.info(`Replay duration is shorter than minimum of ${F}ms / Start:${d} / End:${p}`),null;const v=r.encode("]");return o.debug("Writing final close brace"),s&&i?(s.write(v),s.close(),a=new Uint8Array(await new Response(i.readable).arrayBuffer())):(y.push(v),a=Mt(y)),o.info("Finished generating file data"),a},Ot=async(e,t)=>{const n=window.CompressionStream!==void 0;let r=null;const a=t??Date.now(),s=a-e;try{r=await re(s,a,n)}catch(i){i instanceof Error&&window.UserLeap.reportError("Error compressing replay",i),n&&h(async()=>{await re(s,a,!1)},"fileData fallback failed")}return r},ae=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:a,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,l=await Ot(i.replayDurationSeconds*1e3,c);if(l!=null&&l.length)o.info(`Found file data for survey: ${t}`);else{o.info(`File data is empty for survey: ${t}`);return}const d=Nt(l,i.minimumChunkSizeMb,i.signedUrls.length);o.info(`Got ${d.length} chunks for survey: ${t}`);const p=await Promise.all(d.map(async(f,y)=>{const g=o.v4(),v={apiUrl:a,chunkIndex:y+1,completeUploadHeaders:s,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:d.length,data:f,uploadId:i.uploadId,uploadUrl:i.signedUrls[y].url,uuid:g,visitorId:r};return o.info(`Recording chunk upload: ${JSON.stringify({index:v.chunkIndex,surveyId:v.surveyId,uploadId:v.uploadId,size:f.length,id:g},null,2)}`),await(await u.openDB()).add("chunkUploads",{...v,sessionId:v.sessionId??w}),o.info(`Done creating chunk upload: ${g}`),v}));o.info(`All chunk records created. Beginning upload for survey: ${t}`),await Lt([i.uploadId],p)},be=async(e,t)=>{if(o.info(`Attempting replay capture: ${JSON.stringify({isStandalone:e.isStandalone,duration:e.replayParams.replayDurationSeconds,type:e.replayParams.replayDurationType,responseGroupId:e.responseGroupId,surveyId:e.surveyId,triggerTimestamp:e.triggerTimestamp,visitorId:e.visitorId},null,2)}`),b())return o.info(`Replay recording is disabled: ${e.surveyId}`);o.info(`Replay recording enabled: ${e.surveyId}`);const{isHeatmap:n,isStandalone:r,replayParams:a,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),h(async()=>{a.replayDurationType==="before"?await ae(e):await u.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};h(async()=>{if(a.replayDurationType==="after"||a.replayDurationType==="beforeAndAfter"){!r&&!n&&(o.info("Attaching QuestionAnswered listener for non-standalone replay"),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)),o.info(`Scheduling capture for replay of type: ${a.replayDurationType}`),await De(e);return}if(r||n||t)o.info(`Proceeding to capture replay for survey: ${e.surveyId} / standalone? ${r} / canUpload? ${t}`),await ae(e),n&&Ht();else{const d=x+a.replayDurationSeconds,p=s-d*1e3,f=s;o.info(`Setting expiry minutes to ${a.expirationTimeLimitMinutes} for events from ${new Date(p).toLocaleTimeString()} to ${new Date(f).toLocaleTimeString()}`),await u.updateEventsExpiredAt(p,f,a.expirationTimeLimitMinutes),o.info("Attaching QuestionAnswered listener"),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ht=async()=>{parseInt(C??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(ge(),Se(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},Se=async()=>b()?o.debug("Not clearing user data, replay is disabled"):Promise.all([u.deleteBySessionId("events",w),u.deleteBySessionId("pendingCaptures",w)]).catch(e=>{T("Error clearing user replay data",e)}),De=async e=>{if(b())return;o.info(`Scheduling replay capture: ${JSON.stringify(e)}`);const{isHeatmap:t,surveyId:n}=e,r=await u.getPendingCaptures(),a=r==null?void 0:r.filter(l=>l.captureParams.surveyId===n);if(a!=null&&a.length){o.info(`Pending capture exists for survey: ${n}`);return}t&&(St(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),j=Date.now(),m.inactivityInterval||(m.inactivityInterval=window.setInterval(()=>{it(j)},1e3)));const s={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(s.replayParams.replayDurationSeconds*=2),s.replayParams.replayDurationType="before";const i=e.triggerTimestamp+e.replayParams.replayDurationSeconds*1e3;s.triggerTimestamp=i,C=(parseInt(C??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",C),await(await u.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:s,sessionId:w,targetTimestamp:i,timestamp:Date.now(),uuid:o.v4()})},Ft=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:dt,RecordPageView:ct,RecordSurveyShown:ut,_completeSessionReplay:Dt,checkPendingHeatmapsUrl:ot,clearUserReplayData:Se,disableRecording:T,initializeReplay:Pt,isReplayRecording:yt,scheduleCapture:De,scheduleOrCaptureReplay:be,tryReplayAction:h},Symbol.toStringTag,{value:"Module"}));o.registerReplay(Ft);
1
+ "use strict";var Ee=Object.defineProperty;var Re=(e,t,n)=>t in e?Ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>(Re(e,typeof t!="symbol"?t+"":t,n),n);const o=require("./metricsReporter-uYHd0jkA.cjs");var k=(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))(k||{});class Pe{constructor(t){A(this,"awaitingResolvers",[]);A(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 se=new Pe(2),xe=e=>se.setLimit(e),Be=async e=>se.execute(async()=>{var r;o.info(`Beginning upload of chunk ${e.chunkIndex} for survey: ${e.surveyId}`);const t=await o.sprigFetch(e.uploadUrl,{body:e.data,method:"PUT"});o.info(`Completed upload of chunk ${e.chunkIndex} for survey: ${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}),oe=async({apiUrl:e,surveyId:t,uploadId:n,etags:r,headers:a,responseGroupUuid:s,replayDuration:i,eventDigest:c},l=!1)=>{var p;if(!l&&!n&&!r){o.info(`Cannot mark upload complete: isMobile: ${l} / uploadId: ${n} / etags: ${r}`);return}o.info(`Marking upload complete for survey: ${t}`);const d=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(p=window==null?void 0:window.navigator)==null?void 0:p.userAgent}),headers:a,shouldRetryRequest:!0});return o.info(`Done marking upload complete for survey: ${t}`),d},N=(e,t)=>t.some(n=>e instanceof n);let q,Q;function Te(){return q||(q=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Ae(){return Q||(Q=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const _=new WeakMap,$=new WeakMap,B=new WeakMap;function $e(e){const t=new Promise((n,r)=>{const a=()=>{n(D(e.result))},s=()=>{r(e.error)};e.onsuccess=a,e.onerror=s});return B.set(t,e),t}function Ue(e){if(_.has(e))return;const t=new Promise((n,r)=>{const a=()=>{n()},s=()=>{r(e.error||new DOMException("AbortError","AbortError"))};e.oncomplete=a,e.onerror=s,e.onabort=s});_.set(e,t)}let L={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 ie(e){L=e(L)}function Ne(e){return Ae().includes(e)?function(...t){return e.apply(M(this),t),D(this.request)}:function(...t){return D(e.apply(M(this),t))}}function _e(e){return typeof e=="function"?Ne(e):(e instanceof IDBTransaction&&Ue(e),N(e,Te())?new Proxy(e,L):e)}function D(e){if(e instanceof IDBRequest)return $e(e);if($.has(e))return $.get(e);const t=_e(e);return t!==e&&($.set(e,t),B.set(t,e)),t}const M=e=>B.get(e);function Le(e,t,{blocked:n,upgrade:r,blocking:a,terminated:s}={}){const i=indexedDB.open(e,t),c=D(i);return r&&(i.onupgradeneeded=l=>{r(D(i.result),l.oldVersion,l.newVersion,D(i.transaction),l)}),n&&(i.onblocked=l=>n(l.oldVersion,l.newVersion,l)),c.then(l=>{s&&(l.onclose=()=>s()),a&&(l.onversionchange=d=>a(d.oldVersion,d.newVersion,d))}).catch(()=>{}),c}function G(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&(n.onblocked=r=>t(r.oldVersion,r)),D(n).then(()=>{})}const Me=["get","getKey","getAll","getAllKeys","count"],Oe=["put","add","delete","clear"],U=new Map;function X(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,a=Oe.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(a||Me.includes(n)))return;const s=async function(i,...c){const l=this.transaction(i,a?"readwrite":"readonly");let d=l.store;return r&&(d=d.index(c.shift())),(await Promise.all([d[n](...c),a&&l.done]))[0]};return U.set(t,s),s}ie(e=>({...e,get:(t,n,r)=>X(t,n)||e.get(t,n,r),has:(t,n)=>!!X(t,n)||e.has(t,n)}));const He=["continue","continuePrimaryKey","advance"],Y={},O=new WeakMap,ce=new WeakMap,Fe={get(e,t){if(!He.includes(t))return e[t];let n=Y[t];return n||(n=Y[t]=function(...r){O.set(this,ce.get(this)[t](...r))}),n}};async function*je(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const n=new Proxy(t,Fe);for(ce.set(n,t),B.set(n,M(t));t;)yield n,t=await(O.get(n)||t.continue()),O.delete(n)}function Z(e,t){return t===Symbol.asyncIterator&&N(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&N(e,[IDBIndex,IDBObjectStore])}ie(e=>({...e,get(t,n,r){return Z(t,n)?je:e.get(t,n,r)},has(t,n){return Z(t,n)||e.has(t,n)}}));const Ke=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},le=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=Ke(n)}return"/"+t.reverse().map(n=>n.position!==null?`/${n.name}[${n.position}]`:`/${n.name}`).join("")},S={capture:!0,passive:!0},Ve=["a","button","input","option","li","link"],Ge=["Escape","Enter","Backspace","F5","Tab"];let P=!1;const We=["label","type","role","title","placeholder","errormessage","valuetext","href"],ee="aria-",ze=e=>{if(!e.tagName)return"No tagName";const t=e.getAttribute("type");return t?`${t} ${e.tagName.toLowerCase()}`:e.tagName.toLowerCase()},te=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=ze(e);for(const a of e.attributes){let s=a.name;const i=a.value;s.startsWith(ee)&&(s=s.substring(ee.length)),We.includes(s)&&(n[s]=i)}return n},Je=e=>{var a;if(!e)return{};const n={...te(e)},r=e.parentElement;if(r&&Ve.includes((a=r.tagName)==null?void 0:a.toLowerCase())){const s=te(r);Object.assign(n,s)}return n},de=(e,t)=>{var n;lt({x:t.x,y:t.y,type:e,elementAttributes:Je(t.target),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...t.target instanceof HTMLElement?{rect:(n=t.target)==null?void 0:n.getBoundingClientRect(),xPath:le(t.target)}:{}})},qe=e=>t=>de(e,t),ue=e=>{Ge.includes(e.key)&&gt({key:e.key})},Qe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&mt({url:window.location.href,currentPageTitle:document.title})},Xe=()=>{window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&ft({curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title})},Ye=(e,t)=>{let n;return r=>{clearTimeout(n),n=window.setTimeout(()=>e(r),t)}},Ze=e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),wt({xPath:le(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},pe=Ye(Ze,750),me=qe("left_click"),fe=e=>{e.button===2&&de("right_click",e)},et=()=>{P||(window.addEventListener("click",me,S),window.addEventListener("mousedown",fe,S),window.addEventListener("keydown",ue,S),window.addEventListener("scroll",pe,S),P=!0,Qe(),Xe())},tt=()=>{P&&(window.removeEventListener("click",me,S),window.removeEventListener("mousedown",fe,S),window.removeEventListener("keydown",ue,S),window.removeEventListener("scroll",pe,S),P=!1)},nt=3e4,m={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},rt=.5,at=async()=>{var e;if(!window.indexedDB||!window.IDBKeyRange)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 o.warn(`Storage: ${r}GB`),r<rt}catch{return!0}return!1},st=()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.info(`Found saved session id: ${e}`),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.info(`Generating new uuid: ${t}`),t},w=st(),H=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},b=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording");window.addEventListener("beforeunload",()=>{o.info(`Before page unload saving session id: ${w}`),o.sessionStorageHelper.setItem("sprig.sessionId",w)});const ot=()=>b()?o.info("ReolayDisabledPendingHeatmap"):h(async()=>{const e=(await u.getPendingCaptures({isHeatmap:!0})).map(n=>({eventId:n.captureParams.eventId,uuid:n.uuid})),t=[];e.forEach(({eventId:n,uuid:r})=>{o.checkUrlStillMatching(n)||t.push(r)}),t.length&&await u.markPendingHeatmapsReady(t)},"Error marking pending heatmaps ready"),it=e=>{Date.now()-e>=nt&&h(()=>u.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),I=(e,t)=>{var n,r;if(m.isRecording)try{(r=(n=window.rrwebRecord)==null?void 0:n.addCustomEvent)==null||r.call(n,e,t)}catch(a){T("Error recording custom event",a)}},ct=e=>{e.description&&(e.description=W(e.description)),I("Sprig_PageView",e)},lt=e=>{var t;(t=e==null?void 0:e.elementAttributes)!=null&&t.text&&(e.elementAttributes.text=W(e.elementAttributes.text)),I("Sprig_Click",e)},dt=e=>{I("Sprig_TrackEvent",e)},ut=e=>{I("Sprig_ShowSurvey",e)},pt=e=>{I("Sprig_SubmitSurvey",e)},mt=e=>{I("Sprig_Refresh",e)},ft=e=>{e.currentPageTitle&&(e.currentPageTitle=W(e.currentPageTitle)),I("Sprig_BackForward",e)},gt=e=>{I("Sprig_Keystroke",e)},wt=async e=>{const{x:t,xPath:n,y:r}=e,a=m.scrollEventUuids[n];if(a)return h(async()=>{var c,l,d,p;const s=await u.openDB(),i=await s.get("events",a);if(i!=null&&i.event){const f=JSON.parse(i.event),y=t>((l=(c=f.data)==null?void 0:c.payload)==null?void 0:l.x),g=r>((p=(d=f.data)==null?void 0:d.payload)==null?void 0:p.y);if(!(y||g))return null;y&&(f.data.payload.x=t),g&&(f.data.payload.y=r),f.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(f),await s.put("events",i)}else I("Sprig_Scroll",e)},"Error updating scroll event");I("Sprig_Scroll",e)},yt=()=>m.isRecording,ge=()=>{m.stopRecording&&(m.stopRecording(),m.stopRecording=void 0),m.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{m[e]&&(clearInterval(m[e]),m[e]=void 0)}),tt()},ht=["did not allow mutations","called in an invalid security context"],It=e=>{if(!e)return!0;for(const t of ht)if(e.toLowerCase().includes(t))return!1;return!0},vt=(e,t,{reportError:n=!0,extraInfo:r})=>{b()||t instanceof Error&&(H(),It(t==null?void 0:t.message)&&(n&&window.UserLeap.reportError(e,t,r),u.clearAll()))},bt=async(e,t,{reportError:n}={reportError:!0})=>{let r={};try{const{quota:a=0,usage:s=0}=await window.navigator.storage.estimate();r={availableSpaceInMB:(a-s)/2**20,quota:a,usage:s}}catch{r.availableSpaceInMB=null}vt(e,t,{reportError:n,extraInfo:r})},T=(e,t,{reportError:n}={reportError:!0})=>(ge(),o.error(`${e} - ${t.message} - ${t.name}`),bt(e,t,{reportError:n})),h=async(e,t)=>{try{await e()}catch(n){T(t,n)}},St=()=>{m.isRecording&&h(()=>{var e,t;return(t=(e=window.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot")},Dt=async({surveyId:e,responseGroupUuid:t,eventDigest:n,headers:r})=>{if(!e||!t)return!1;const a=window.UserLeap._API_URL,s=await oe({surveyId:e,responseGroupUuid:t,eventDigest:n,apiUrl:a,headers:r},!0);return!(s!=null&&s.error)},ne=30,Ct=1;G("replayStorage").catch(console.error);G("sprig.replay").catch(console.error);class kt{openDB(){return Le("sprigReplay",Ct,{upgrade:(t,n,r)=>{if(r===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!t.objectStoreNames.contains("events")){const a=t.createObjectStore("events",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!t.objectStoreNames.contains("chunkUploads")){const a=t.createObjectStore("chunkUploads",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+status]",["sessionId","status"]),a.createIndex("[uploadId+status]",["uploadId","status"]),a.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!t.objectStoreNames.contains("pendingCaptures")){const a=t.createObjectStore("pendingCaptures",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}deleteDB(){return G("sprigReplay").catch(console.error)}async bulkAdd(t,n){const r=(await this.openDB()).transaction(t,"readwrite");return Promise.all([...n.map(a=>r.store.add(a)),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),a=(await this.openDB()).transaction(t,"readwrite");let i=await a.store.index("sessionId").openCursor(r);for(;i;)i.delete(),i=await i.continue();await a.done}async updatePartial(t,n,r){const s=(await this.openDB()).transaction(t,"readwrite"),i=await s.store.get(n);i&&await s.store.put({...i,...r}),await s.done}async deleteRowsBefore(t,n,r=()=>!0){const a=IDBKeyRange.upperBound(n,!0),s=(await this.openDB()).transaction(t,"readwrite");let c=await s.store.index("timestamp").openCursor(a);for(;c;)r(c.value)&&c.delete(),c=await c.continue();await s.done}async getEventsBetween(t,n=Date.now()){if(t>=n)return Promise.resolve([]);const r=IDBKeyRange.bound([w,t],[w,n],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(t,n,r=ne){const a=new Date,s=a.setMinutes(a.getMinutes()+(r??ne)),i=(await this.openDB()).transaction("events","readwrite"),c=i.store.index("[sessionId+timestamp]"),l=IDBKeyRange.bound([w,t],[w,n],!1,!0);let d=await c.openCursor(l);for(;d;)d.update({...d.value,expiredAt:s}),d=await d.continue();await i.done}async deleteChunkUploads(t,n){const r=IDBKeyRange.only([n,t]),a=(await this.openDB()).transaction("chunkUploads","readwrite");let i=await a.store.index("[uploadId+status]").openCursor(r);for(;i;)i.delete(),i=await i.continue();await a.done}async getChunkUploadsByStatus({sessionId:t,status:n,uploadId:r}){const s=(await this.openDB()).transaction("chunkUploads","readonly"),i=r?s.store.index("[uploadId+status]"):s.store.index("[sessionId+status]"),c=r?IDBKeyRange.only([r,n]):IDBKeyRange.only([t,n]);return i.getAll(c)}async getPendingCaptures(t={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",w)).filter(a=>!t.beforePresent||a.targetTimestamp<Date.now()).filter(a=>!t.isHeatmap||(a.captureParams.isHeatmap??!1))}async markPendingCaptureToCanUpload(t){const n=(await this.openDB()).transaction("pendingCaptures","readwrite");let a=await n.store.index("sessionId").openCursor(w);for(;a;){const s=a.value;s.captureParams.responseGroupId===t&&a.update({...s,canUpload:!0}),a=await a.continue()}await n.done}async markPendingHeatmapsReady(t){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const r=Date.now(),a=(await this.openDB()).transaction("pendingCaptures","readwrite");let i=await a.store.index("sessionId").openCursor(w);for(;i;){const c=i.value;c.captureParams.isHeatmap&&(!t||t.includes(c.uuid))&&i.update({...c,targetTimestamp:r,captureParams:{...c.captureParams,triggerTimestamp:r,replayParams:{...c.captureParams.replayParams,replayDurationSeconds:Math.floor((r-c.timestamp)/1e3)}}}),i=await i.continue()}await a.done}}const u=new kt,Et=async(e,t,n)=>new Promise((r,a)=>{const s=e.createElement("script");s.src=t,s.onload=r,s.onerror=a,n&&(s.nonce=n),e.head.appendChild(s)}),we=async(e,t)=>{const n=performance.now();let r;try{r=await e()}finally{const a=performance.now()-n;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(a/1e3)}return r},ye=(e,t)=>{const n=performance.now();try{e()}finally{const r=performance.now()-n;let a=o.PerformanceMetrics[t];a||(a=o.registerMetric(t)),a.report(r/1e3)}};let F=5e3,R=6e4,j=0;const Rt=5,he=30,x=he+Rt;let C,K=!1,V=[];const Pt=async({viewDocument:e,maxReplayDurationSeconds:t,replayNonce:n,maxInflightRequests:r=2,replaySettings:a,teardownAfter:s=!1})=>{if(C=o.sessionStorageHelper.getItem("sprig.pendingCount"),!m.isRecording){if(s&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),b())return o.info("ReplayDisabled");if(await at())return o.error("IDBNotSupported"),H();try{await u.openDB()}catch(i){return o.error(`ReplayError-${i.message}-${i.name}`),i.name==="VersionError"&&u.deleteDB(),H()}if(!t)return o.info("MissingReplaySeconds");o.info("ReplayInit"),await h(async()=>{if(a!=null&&a.minDuration&&(F=a.minDuration),a!=null&&a.batchDuration&&(R=a.batchDuration),xe(r),_t(),At(t+x,30*60,t+x),$t(),!window.rrwebRecord){const d=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record-2.0.0-alpha.6.min.js";await Et(e,d,n)}const i=window.rrwebRecord;if(!i)return o.warn("RecordScriptFailed");let c=!0,l=0;m.stopRecording=i({checkoutEveryNms:he*1e3,sampling:{input:"last",scroll:250,media:800},emit:(d,p)=>{if(d.type===k.Custom&&(j=Date.now()),b())return;if(p&&d.type===k.Meta)l=performance.now();else if(p&&l&&d.type===k.FullSnapshot){const y=performance.now()-l;o.reportAndRegister("sdk_replay_snapshot_seconds",y/1e3)}const f=c||!!p&&d.type===k.Meta;c=!1,xt({uuid:o.v4(),event:JSON.stringify(d),isValidStart:f,timestamp:Date.now()})},...a}),m.isRecording=!!m.stopRecording,m.isRecording&&(o.eventEmitter.on("survey.complete",d=>{pt({id:d,userAgent:window.navigator.userAgent})}),et())},"Error initializing replay")}},xt=e=>{var t,n,r,a;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(a=(r=(n=JSON.parse(e.event))==null?void 0:n.data)==null?void 0:r.payload)==null?void 0:a.xPath;if(!s)return;m.scrollEventUuids[s]=e.uuid}V.push(e),K||Tt()},Bt=async e=>{const t=e.map(n=>({...n,sessionId:n.sessionId??w}));if(t.length!==0)return h(()=>u.bulkAdd("events",t),"Error storing replay events")},Tt=()=>{K=!0,setTimeout(async()=>{if(b())return;const e=V;V=[],K=!1,ye(async()=>{await Bt(e)},"sdk_replay_add_event_batch_seconds")},500)},At=(e,t,n)=>{m.cleanupInterval=window.setInterval(()=>{const r=Date.now();b()||(o.debug(`CleanUp Secs - Events: ${e}, Chunks: ${t}, Captures: ${n}`),we(()=>h(async()=>{await Promise.all([u.deleteRowsBefore("events",r-e*1e3,a=>a.expiredAt===void 0||a.expiredAt<r-e*1e3),u.deleteRowsBefore("chunkUploads",r-t*1e3),u.deleteRowsBefore("pendingCaptures",r-n*1e3,a=>!a.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.info("Cleanup complete"))},3e4)},$t=()=>{m.pendingCheckInterval=window.setInterval(async()=>{h(async()=>{const e=parseInt(C??"0");if(e===0)return;const t=await u.getPendingCaptures({beforePresent:!0}),n=await u.openDB();await Promise.all(t.map(async r=>(await n.delete("pendingCaptures",r.uuid),be(r.captureParams,r.canUpload)))),C=(e-t.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",C)},"Error initiating pending captures")},5e3)},Ut=async(e,t,n,r,a)=>{const s=Math.min(e+a,n),i=`from: ${new Date(e).toLocaleTimeString()} to ${new Date(s).toLocaleTimeString()}`;o.info(`Getting event batch ${i}`);const c=await we(()=>u.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(c!=null&&c.length))return o.info(`No events found ${i}`),{validStartFound:r,events:[]};if(!r){o.info(`Searching for valid start in ${c.length} events ${i}`);let l=-1;if(c==null||c.forEach((p,f)=>{if(!p.isValidStart)return;const y=p.timestamp<=t;(l<0||y)&&(l=f)}),l<0)return o.info(`No valid start found in ${c.length} events ${i}`),{validStartFound:r,events:[]};const d=c[l].timestamp;return o.info(`Found valid start at: ${new Date(d).toLocaleTimeString()} in events ${i}`),{validStartFound:!0,events:c==null?void 0:c.slice(l)}}return{validStartFound:r,events:c}},Nt=(e,t,n)=>{const r=e.length,a=t*1024*1024,s=Math.ceil(r/n),i=Math.max(a,s);o.info(`Total file bytes: ${r} / target chunk size: ${i}`);const c=[];let l=0;for(;l<r;)c.push(e.slice(l,l+i)),l+=i;return c},Ie=e=>Promise.all(e.map(async t=>{const n=await Be(t);return await u.updatePartial("chunkUploads",t.uuid,{data:null,etag:n,status:"UploadComplete"}),t.uploadId})),ve=async e=>{o.info(`Marking upload complete if finished: ${e}`);const t=await u.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length)){o.info(`No finished chunks found for upload: ${e}`);return}const n=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);n.sort((s,i)=>s.chunkIndex-i.chunkIndex);const r=n.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),a=n[0];await oe({apiUrl:a.apiUrl,surveyId:a.surveyId,uploadId:e,responseGroupUuid:a.responseGroupId,etags:r,headers:a.completeUploadHeaders,replayDuration:a.replayDuration}),o.info(`Cleaning up chunks for ${e}`),await u.deleteChunkUploads("UploadComplete",e),o.info(`Done cleaning up chunks for ${e}`)},_t=()=>{h(async()=>{const e=await u.getChunkUploadsByStatus({sessionId:w,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await Ie(e);o.info(`Finished uploading unfinished chunks for ${t}`),t!=null&&t.length&&await Promise.all(t.map(n=>{if(n)return ve(n)}))},"Error uploading unfinished chunks")},Lt=async(e,t)=>{await Ie(t),o.info(`Done uploading chunks for uploads: ${e.join(",")}`),await Promise.all(e.map(n=>ve(n)))},Mt=e=>{let t=0;e.forEach(a=>{t+=a.length});const n=new Uint8Array(t);let r=0;return e.forEach(a=>{n.set(a,r),r+=a.length}),n},re=async(e,t,n)=>{const r=new TextEncoder;let a=null,s=null,i=null,c=!1,l=!1,[d,p]=[0,0];const f=e-x*1e3,y=[];let g=[];o.info(`Getting events between ${new Date(e).toLocaleTimeString()} and ${new Date(t).toLocaleTimeString()}`),o.info(`Using batch duration: ${R}ms`);for(let E=f;E<t;E+=R){if({validStartFound:l,events:g}=await Ut(E,e,t,l,R),!(g!=null&&g.length)){o.info("No events found");continue}d===0&&(d=g[0].timestamp),p=g[g.length-1].timestamp,o.info(`Last event time in batch: ${new Date(p).toLocaleTimeString()}`);const z=g.map(ke=>ke.event);z.push(`{"timestamp":${t}}`);const Ce=`${c?",":"["}${z}`,J=r.encode(Ce);n&&s===null&&(o.debug("Attempting compression"),i=new window.CompressionStream("gzip"),s=i.writable.getWriter()),ye(()=>{n&&s?s.write(J):y.push(J)},"sdk_replay_compression_seconds"),c=!0}if(p-d<F)return o.info(`Replay duration is shorter than minimum of ${F}ms / Start:${d} / End:${p}`),null;const v=r.encode("]");return o.debug("Writing final close brace"),s&&i?(s.write(v),s.close(),a=new Uint8Array(await new Response(i.readable).arrayBuffer())):(y.push(v),a=Mt(y)),o.info("Finished generating file data"),a},Ot=async(e,t)=>{const n=window.CompressionStream!==void 0;let r=null;const a=t??Date.now(),s=a-e;try{r=await re(s,a,n)}catch(i){i instanceof Error&&window.UserLeap.reportError("Error compressing replay",i),n&&h(async()=>{await re(s,a,!1)},"fileData fallback failed")}return r},ae=async e=>{const{surveyId:t,responseGroupId:n,visitorId:r,apiUrl:a,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,l=await Ot(i.replayDurationSeconds*1e3,c);if(l!=null&&l.length)o.info(`Found file data for survey: ${t}`);else{o.info(`File data is empty for survey: ${t}`);return}const d=Nt(l,i.minimumChunkSizeMb,i.signedUrls.length);o.info(`Got ${d.length} chunks for survey: ${t}`);const p=await Promise.all(d.map(async(f,y)=>{const g=o.v4(),v={apiUrl:a,chunkIndex:y+1,completeUploadHeaders:s,etag:null,responseGroupId:n,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:d.length,data:f,uploadId:i.uploadId,uploadUrl:i.signedUrls[y].url,uuid:g,visitorId:r};return o.info(`Recording chunk upload: ${JSON.stringify({index:v.chunkIndex,surveyId:v.surveyId,uploadId:v.uploadId,size:f.length,id:g},null,2)}`),await(await u.openDB()).add("chunkUploads",{...v,sessionId:v.sessionId??w}),o.info(`Done creating chunk upload: ${g}`),v}));o.info(`All chunk records created. Beginning upload for survey: ${t}`),await Lt([i.uploadId],p)},be=async(e,t)=>{if(o.info(`Attempting replay capture: ${JSON.stringify({isStandalone:e.isStandalone,duration:e.replayParams.replayDurationSeconds,type:e.replayParams.replayDurationType,responseGroupId:e.responseGroupId,surveyId:e.surveyId,triggerTimestamp:e.triggerTimestamp,visitorId:e.visitorId},null,2)}`),b())return o.info(`Replay recording is disabled: ${e.surveyId}`);o.info(`Replay recording enabled: ${e.surveyId}`);const{isHeatmap:n,isStandalone:r,replayParams:a,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),h(async()=>{a.replayDurationType==="before"?await ae(e):await u.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};h(async()=>{if(a.replayDurationType==="after"||a.replayDurationType==="beforeAndAfter"){!r&&!n&&(o.info("Attaching QuestionAnswered listener for non-standalone replay"),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)),o.info(`Scheduling capture for replay of type: ${a.replayDurationType}`),await De(e);return}if(r||n||t)o.info(`Proceeding to capture replay for survey: ${e.surveyId} / standalone? ${r} / canUpload? ${t}`),await ae(e),n&&Ht();else{const d=x+a.replayDurationSeconds,p=s-d*1e3,f=s;o.info(`Setting expiry minutes to ${a.expirationTimeLimitMinutes} for events from ${new Date(p).toLocaleTimeString()} to ${new Date(f).toLocaleTimeString()}`),await u.updateEventsExpiredAt(p,f,a.expirationTimeLimitMinutes),o.info("Attaching QuestionAnswered listener"),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ht=async()=>{parseInt(C??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(ge(),Se(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},Se=async()=>b()?o.debug("Not clearing user data, replay is disabled"):Promise.all([u.deleteBySessionId("events",w),u.deleteBySessionId("pendingCaptures",w)]).catch(e=>{T("Error clearing user replay data",e)}),De=async e=>{if(b())return;o.info(`Scheduling replay capture: ${JSON.stringify(e)}`);const{isHeatmap:t,surveyId:n}=e,r=await u.getPendingCaptures(),a=r==null?void 0:r.filter(l=>l.captureParams.surveyId===n);if(a!=null&&a.length){o.info(`Pending capture exists for survey: ${n}`);return}t&&(St(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),j=Date.now(),m.inactivityInterval||(m.inactivityInterval=window.setInterval(()=>{it(j)},1e3)));const s={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(s.replayParams.replayDurationSeconds*=2),s.replayParams.replayDurationType="before";const i=e.triggerTimestamp+e.replayParams.replayDurationSeconds*1e3;s.triggerTimestamp=i,C=(parseInt(C??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",C),await(await u.openDB()).add("pendingCaptures",{canUpload:!1,captureParams:s,sessionId:w,targetTimestamp:i,timestamp:Date.now(),uuid:o.v4()})},Ft=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:dt,RecordPageView:ct,RecordSurveyShown:ut,_completeSessionReplay:Dt,checkPendingHeatmapsUrl:ot,clearUserReplayData:Se,disableRecording:T,initializeReplay:Pt,isReplayRecording:yt,scheduleCapture:De,scheduleOrCaptureReplay:be,tryReplayAction:h},Symbol.toStringTag,{value:"Module"}));o.registerReplay(Ft);