@sprig-technologies/sprig-browser 2.30.3 → 2.30.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core-IYeRexvz.js +12 -0
- package/dist/core-pJaEAG0Z.cjs +12 -0
- package/dist/core.cjs +1 -1
- package/dist/core.d.ts +2 -2
- package/dist/core.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/metricsReporter-ChJRb1ed.js +2 -0
- package/dist/metricsReporter-DwcQeyB8.cjs +2 -0
- package/dist/replay.cjs +1 -1
- package/dist/replay.js +1 -1
- package/dist/{view-Jfb4S82A.cjs → view-C-j1BBYA.cjs} +2 -2
- package/dist/{view-CJBVxA0k.js → view-CVyjVx3W.js} +2 -2
- package/package.json +1 -1
- package/dist/core-ChUnpqXT.js +0 -12
- package/dist/core-DL58LekA.cjs +0 -12
- package/dist/metricsReporter-DNUikwDb.js +0 -2
- package/dist/metricsReporter-dYIN7Y-U.cjs +0 -2
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var ft=Object.defineProperty,ht=(e,t,n)=>t in e?ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,W=(e,t,n)=>(ht(e,typeof t!="symbol"?t+"":t,n),n);import{h as F,s as Ce,f as w,S as g,l as I,i as _,v as Te,m as U,j as bt,E as V,D as M,c as Lt,r as j,k as Ut,n as St,o as kt,p as It,q as Fe,t as Me,u as Et,a as _t,x as me,b as xt,y as je}from"./metricsReporter-ChJRb1ed.js";const At='.ul-loading-spinner-container{font-size:1.8rem;flex-grow:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.ul-loading-spinner{display:inline-block;position:relative;width:6rem;height:6rem}.ul-loading-spinner div{box-sizing:border-box;display:block;position:absolute;width:80%;height:80%;margin:5px;border:5px solid #152e3e;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:#152e3e transparent transparent transparent}.ul-loading-spinner .first{animation-delay:-.45s}.ul-loading-spinner .second{animation-delay:-.3s}.ul-loading-spinner .third{animation-delay:-.15s}@keyframes lds-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-in-transition{animation:fadeIn .4s ease-in}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}',Ne="360px",Dt="ul-app",Rt="#e6e6e6",Ot="#bd282a",Pt=500,Ct=1030,ze=()=>{try{return window.parent.Intercom}catch{return null}},Tt=()=>{const e=ze();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},Ft=()=>{const e=ze();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},Mt=Object.freeze(Object.defineProperty({__proto__:null,disable:Ft,enable:Tt},Symbol.toStringTag,{value:"Module"})),Be=[Mt];class qe{static disable(){Be.forEach(t=>t.disable())}static enable(){Be.forEach(t=>t.enable())}}const We="ul-view-sdk-script",jt=["ios","android"],C="visitors",T="environments";async function R(e,t){var n,o,r;const{shouldDropOnRateLimit:i,...a}=t;a.headers=Object.assign(F(window.UserLeap),a.headers);const s=await Ce(e,{...a,shouldDropOnRateLimit:i});if(s.ok){const d=(n=s.headers)==null?void 0:n.get("Authorization"),p=d?d.split(" "):void 0,l=p&&p.length===2?p[1]:void 0,c=(o=s.headers)==null?void 0:o.get("x-ul-visitor-id");l&&c&&(c!==window.UserLeap.visitorId||window.UserLeap.token!==l)&&(E("token",l),E("vid",c),w.emit(g.VisitorIDUpdated,{visitorId:c}),window.UserLeap.token=l,window.UserLeap.visitorId=c)}return(r=s.json)!=null&&r.logMessage&&console.warn(`[Sprig] ${s.json.logMessage}`),s}function E(e,t){const n=I.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{I.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 ye(){return window.previewMode?"0":window.UserLeap.visitorId??""}function D(e,t,n){const o=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{o.push(r),r===T?o.push(window.UserLeap.envId):r===C&&o.push(ye())}),n&&o.push(n),o.join("/")}const $=async(e,t)=>{var n,o,r;const{context:i,forceBrandedLogo:a,endCard:s,isFeedback:d=!1,heatmap:p,locale:l,previewMode:c,productConfig:u,questions:f,responseGroupUid:y,surveyId:m,uuid:x,vid:b,sessionReplay:h,studyType:A}=e,S=F(window.UserLeap),k=fe(S),pe=ve(S);if(_(`Attempting to display survey: ${m}`),h)if(_("Survey has replay attached"),k)w.emit(g.ReplayCapture,{responseGroupUid:y,hasQuestions:!!(f!=null&&f.length),surveyId:m,uploadId:h.uploadId,replayType:h.replayDurationType??"before",seconds:h.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:Te(),mediaType:"screen",questionId:1,responseGroupUid:y,surveyId:m,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:y,surveyId:m,visitorId:b,replayParams:h,completeUploadHeaders:S,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:f.length===0})}if(p){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:L,replayParams:ge,responseGroupUid:yt,surveyId:vt}=p;await U.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),U.replay.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:S,eventId:L,isHeatmap:!0,replayParams:ge,responseGroupId:yt,surveyId:vt,triggerTimestamp:Date.now(),visitorId:b})}if(b==null||!(f!=null&&f.length))return _(`Not displaying survey: vid: ${b} / questions: ${f}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){_("Already displaying a survey");const L="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(L),{success:!1,message:L,surveyState:"no survey"}}if(b!==window.UserLeap.visitorId&&x!==window.UserLeap.visitorId&&!window.previewMode){const L="Attempted to display survey to a different visitor";return _(L),window.UserLeap.reportError("DisplaySurvey",new Error(L)),{success:!1,message:L,surveyState:"no survey"}}_(`Showing survey: ${m}`),(n=U.replay)==null||n.RecordSurveyShown({id:m,userAgent:window.navigator.userAgent}),qe.disable(),w.emit(g.SurveyWillPresent,{name:g.SurveyWillPresent,"survey.id":m});let Y,X=document.createElement("div"),Z,P,ee;const Re=L=>{const{"view.version":ge}=L;ge!==S["x-ul-sdk-version"]&&$e(),w.removeListener("verify.view.version",Re)};w.on("verify.view.version",Re),window.UserLeap.useMobileStyling=pe,bt(S)?(Y="ul-direct-embeded-frame",Z=document.head,P=window,ee=!1,k&&(Ve(d),X.id=Y,window.UserLeap.container.appendChild(X),He(),w.emit(g.SurveyLifeCycle,{state:"presented"}),w.emit(g.SurveyPresented,{name:g.SurveyPresented,"survey.id":m}))):{frameId:Y,contentWinDocHead:Z,contentWindow:P,hasOverlay:ee,iframe:X}=Wt({productConfig:u,useMobileStyling:pe,surveyId:m,isFeedback:d}),window.UserLeap.frameId=Y;const wt=L=>{w.once(g.CloseSurveyOnOverlayClick,L)},B={apiURL:window.UserLeap._API_URL,cards:f,configureExitOnOverlayClick:wt,context:i,endCard:s,envId:window.UserLeap.envId,eventEmitFn:w.emit.bind(w),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:X,headers:S,locale:l,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:I.getItem("sprig.previewKey"),previewMode:c,productConfig:{framePosition:u?.framePosition,desktopDisplay:u?.desktopDisplay,placement:u?.placement},responseGroupUid:y,startingQuestionIdx:(o=window.UserLeap.config)==null?void 0:o.startingQuestionIdx,studyType:A,styleNonce:window.UserLeap.styleNonce,surveyId:m,tabTitle:document.title,trackPageViewUrl:t,ulEvents:V,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:pe,userId:x,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 gt=(d?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??u.customStyles;B.customStyles=gt,P&&(P.__cfg=B);function mt(){const L=document.createElement("script");return window.UserLeap.nonce&&L.setAttribute("nonce",window.UserLeap.nonce),L.id=We,L}const ue=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:B.path,Oe=document.getElementById(We);Oe&&Oe.remove();const we=mt(),Pe=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(B.installationMethod==="web-npm"||B.installationMethod==="web-npm-bundled"){const{default:L}=await import("./view-CVyjVx3W.js");L.configure(B),ee&&window.UserLeap.container&&Pe()}else ue&&(we.src=ue,ee&&we.addEventListener("load",()=>{window.UserLeap.container&&Pe()}),P?.addEventListener("error",L=>{L.target instanceof HTMLScriptElement&&L.target.src===ue&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));return Z?.appendChild(we),{success:!0,surveyState:"ready",surveyId:m,responseGroupUid:y}};function ve(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 fe(e)||n>10&&n<Pt}function fe(e){return jt.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 Nt="rgba(255,255,255, 0.95)",zt="rgba(0,0,0,0.9)",be="0px",Ve=(e,t)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container ${e&&"ul-container-feedback"}`;const n=Qe();t&&n&&!window.UserLeap.useMobileStyling?n.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},$e=(e,t)=>{var n;$t();const o=window.UserLeap.container;if(o)try{(n=o.parentNode)==null||n.removeChild(o),window.UserLeap.container=null,E("trackStartUrl",null),w.emit(g.SurveyLifeCycle,{state:"dismissed"}),w.emit(g.SurveyClosed,{name:g.SurveyClosed,initiator:e,studyType:t})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+o),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},He=()=>{w.once(g.SurveyWillClose,({initiator:e,studyType:t})=>{w.removeAllListeners(g.CloseSurveyOnOverlayClick),$e(e,t)})},Bt=(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"?Nt:zt,t||(n.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,n)},qt=(e,t,n,o)=>{var r,i;const a={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%"},s=Object.assign({},t,window.UserLeap),{desktopDisplay:d}=t||{},p=d==="center-modal";p&&(s.framePosition="center");let l,c=!1;if(n)(r=window.UserLeap.windowDimensions)!=null&&r.width?a.width=`${window.UserLeap.windowDimensions.width}px`:a.width="100%",(i=window.UserLeap.windowDimensions)!=null&&i.height?a.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`:window.UserLeap.maxHeight?a.maxHeight=window.UserLeap.maxHeight:a.maxHeight=`${document.body.clientHeight-20}px`,["light","dark"].includes(s.overlayStyleMobile)&&(c=!0);else{a.width=Ne,a.maxHeight=window.UserLeap.maxHeight||"66vh";const u=()=>{c=!0,l={margin:"auto",position:"static"}};if(o)p?u():l={position:"relative",height:"300px"};else switch(s.framePosition){case"bottomLeft":l={left:be};break;case"topLeft":l={left:be,top:0};break;case"topRight":l={top:0};break;case"center":u();break}}return c&&Bt(s,n),Object.assign(e.style,a,l),c},Wt=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:o})=>{var r,i;const a=he,s=o&&e.desktopDisplay==="slider";Ve(o,s),Vt();const d=document.createElement("iframe");d.id=a,d.setAttribute("title","Sprig User Feedback Dialog");const p=qt(d,e,t,o);He();let l=!1;d.setHeight=y=>{(parseInt(d.style.height)!=y||!l)&&(l=!0,d.style.height=`${y}px`,w.emit(g.SurveyHeight,{name:g.SurveyHeight,contentFrameHeight:y}))};let c=!1;d.setWidth=y=>{(parseInt(d.style.width)!=y||!c)&&(c=!0,d.style.width=`${y}px`,w.emit(g.SurveyWidth,{name:g.SurveyWidth,contentFrameWidth:y}))},(r=window.UserLeap.container)==null||r.appendChild(d),e&&(t?e.exitOnOverlayClickMobile:e.exitOnOverlayClick)&&window.UserLeap.container&&(window.UserLeap.container.onclick=()=>{w.emit(g.CloseSurveyOnOverlayClick)}),w.emit(g.SurveyLifeCycle,{state:"presented"}),w.emit(g.SurveyPresented,{name:g.SurveyPresented,"survey.id":n});const u=(i=d.contentWindow)==null?void 0:i.document;if(u&&(u.open("text/html","replace"),u.write("<!doctype html><head></head><body></body></html>"),u.close(),!t)){const y=u.body;y.style.display="flex",y.style.alignItems="center"}const f=u?.head;return{frameId:a,contentWinDocHead:f,contentWindow:d.contentWindow,hasOverlay:p,iframe:d}},Ge={[g.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Vt=()=>{Object.entries(Ge).forEach(([e,t])=>{w.on(e,t)})},$t=()=>{Object.entries(Ge).forEach(([e,t])=>{w.off(e,t)})},Ht=1,Je=e=>e instanceof HTMLElement||e instanceof SVGElement,te=(e,t,n)=>{const o="ul-custom-style",r=e.getElementById(o);if(r){r.textContent=t;return}const i=e.createElement("style");n&&(i.nonce=n),i.textContent=t,i.id=o,e.head.appendChild(i)},Ke=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),a=parseFloat(r.borderTopWidth)+parseFloat(r.borderBottomWidth),s=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=i+a+s;const d=t.querySelector(".ul-card--matrix_grid");o=d?d.scrollWidth:t.scrollWidth;const p=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),l=parseFloat(r.marginLeft)+parseFloat(r.marginRight),c=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);o+=l+c+p}return[n+Ht,o]},Gt=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},Qe=()=>v,q=()=>document.getElementById("sprig-feedback-container"),Le=()=>document.getElementById("sprig-feedback-loading-animation"),Jt=()=>{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
|
+
<div class="ul-loading-spinner">
|
|
3
|
+
<div class="first"></div>
|
|
4
|
+
<div class="second"></div>
|
|
5
|
+
<div class="third"></div>
|
|
6
|
+
<div class="fourth"></div>
|
|
7
|
+
</div>
|
|
8
|
+
`,e},Ye=()=>!!document.getElementById(he);let Xe=!1,v=null,O=null,Ue=!1,H=null,G=null;const Kt=["bottom-left","bottom-right","center-left","center-right"],Qt=e=>{if(q()||!Kt.includes(e))return;const[t,n]=e.split("-"),o=document.createElement("div");o.id="sprig-feedback-container",o.classList.add(`sprig-feedback-container-${n}`,`sprig-feedback-container-${t}`),document.body.appendChild(o)},re=()=>{var e;const t=window.UserLeap.container;return((e=t?.parentElement)==null?void 0:e.id)==="sprig-feedback-loading-container"},Ze=()=>document.getElementById("sprig-feedback-error-container"),et=()=>{if(!v)return 0;const e=v?.clientWidth,t=window.getComputedStyle(v),n=parseInt(t.borderRightWidth||"0"),o=parseInt(t.borderLeftWidth||"0");return e+n+o},ne=e=>{const t=q();t&&(G!=null&&G.endsWith("right")?t.style.right=`${e}px`:G!=null&&G.endsWith("left")&&(t.style.left=`${e}px`))},Se=()=>{if(v&&(re()||Ze())){w.off(g.SurveyAppeared,J),ke();const e=et();return ne(-e),!0}return!1},J=()=>{if(!v||!O)return;const e=Le();e&&e.remove(),v.style.height="auto",v.style.width="auto",O.disabled=!1,Ue=!1},ke=()=>{if(v&&!Le()){const e=Jt();e&&(v.style.height="300px",v.style.width="360px",v.appendChild(e))}},tt=()=>{!v||!O||(ne(0),O.disabled=!0,Ue=!0)},Yt=async e=>{const t=await R(D("1",[C],"startFeedbackStudy"),{body:JSON.stringify({surveyUuid:e}),method:"POST"});return t.ok?t.json:null},rt=async(e,t,n)=>{const{buttonTheme:o,customStyles:r,eventId:i,placement:a,desktopDisplay:s,feedbackLabel:d,surveyUuid:p,surveyId:l}=e;window.UserLeap.feedbackCustomStyles=void 0;let c=q();if(c){if(!t&&i===H)return;c.remove(),w.off(V.SURVEY_FADING_OUT,Se)}if(H=i,!document.getElementById("sprig-feedback-style")){const{head:b}=document,h=document.createElement("style");h.id="sprig-feedback-style",h.textContent=At,h.nonce=window.UserLeap.styleNonce,b.appendChild(h)}te(document,r??"",window.UserLeap.styleNonce),Xe=s==="center-modal",G=a;const[u,f]=a.split("-");Qt(a),c=q(),O=document.createElement("button");const y=document.createElement("div");y.className="sprig-feedback-button-label",y.innerText=d,O.appendChild(y),O.id="sprig-feedback-button",O.classList.add(`sprig-feedback-button-${f}`,`sprig-feedback-button-${u}`,`sprig-feedback-button-${o}`,"fade-in-transition"),w.on(V.SURVEY_FADING_OUT,Se),O.addEventListener("click",async()=>{const b=document.getElementById("sprig-feedback-error-container");if(Ye()||Ze()){if(Se()){w.emit(g.SurveyWillClose,{name:g.SurveyWillClose,initiator:M.FeedbackClosed,studyType:"feedbackButton"});const S=q();b&&S&&(S.remove(),H=null,v=null)}return}const h=F(window.UserLeap);if(!ve(h)&&!Ue&&tt(),t){v&&v.classList.add("sprig-feedback-loading-container-previews"),await $(t),J();return}const A=await Yt(p);if(A)w.once(g.SurveyAppeared,J),$({...A,studyType:"feedbackButton"},n);else if(v){const S=Zt();v.appendChild(S),J(),v.style.height="300px",v.style.width="360px"}}),c?.appendChild(O),w.emit(g.FeedbackButtonLoaded,{name:g.FeedbackButtonLoaded,"survey.id":l});const{useMobileStyling:m,_config:{border:x}}=window.UserLeap;if(!Xe&&!m){const b=document.createElement("div");b.id="sprig-feedback-loading-container",b.className=`sprig-feedback-loading-container sprig-feedback-loading-container-${f}`,b.style.setProperty("--feedback-border",x),v=b,ke(),c?.appendChild(b);const h=et();ne(-h)}else ne(0);window.UserLeap._config.isOnQuestionsTab&&t&&!re()&&v&&(tt(),ke(),v&&v.classList.add("sprig-feedback-loading-container-previews"),$(t),J())},Xt=()=>{if(re())return;const e=q();e&&(Lt(H)||(e.remove(),H=null,v=null))},Zt=()=>{const e=document.createElement("div");e.id="sprig-feedback-error-container",e.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none">
|
|
9
|
+
<circle cx="20" cy="20" r="14.5" stroke="#B0B5B7" stroke-width="3"/>
|
|
10
|
+
<path d="M20 12L20 21.6" stroke="#B0B5B7" stroke-width="3" stroke-linecap="round"/>
|
|
11
|
+
<circle cx="19.9984" cy="27.6" r="1.6" fill="#B0B5B7"/>
|
|
12
|
+
</svg>`;const t=document.createElement("h3");return t.className="sprig-feedback-error-text",t.innerText="There was an error while loading the survey",e.appendChild(t),e},er="!launch_darkly_";class tr{constructor(){W(this,"_ldData",{})}getAllLaunchDarklyVariations(){return this._ldData}setLDFlagsVariations(t){try{return!t||typeof t!="object"||Array.isArray(t)?!1:(Object.keys(this._ldData).forEach(n=>{delete this._ldData[n]}),Object.keys(t).forEach(n=>this._ldData[`${er}${n}`]=(t[n]??0)+1),!0)}catch(n){return n instanceof Error&&window.UserLeap.reportError("setAllLDFlagsVariations",n),console.warn("[Sprig] An issue had occured when setting LaunchDarkly flags and variations."),!1}}}const Ie=new tr;Object.freeze(Ie);const rr="!optimizely_experiments_";class nr{constructor(){W(this,"_optimizelyData",{})}setOptimizelyExperiment(t,n=!0){if(!t||typeof t!="object")return!1;const{experiments:o}=t;try{return n&&Object.keys(this._optimizelyData).map(r=>{delete this._optimizelyData[r]}),o&&o.map(r=>{const{id:i,variation:a}=r,s=this.transformExperimentId(i);a&&typeof a=="string"&&(this._optimizelyData[s]=a)}),!0}catch(r){return r instanceof Error&&window.UserLeap.reportError("setOptimizelyExperiment",r),!1}}getAllOptimizelyExperiments(){return this._optimizelyData}getOptimizelyVariationName(t){return this._optimizelyData[this.transformExperimentId(t)]}transformExperimentId(t){return rr+t}getAndSetWebOptimizelyExperiments(){var t;try{if(window&&window.optimizely&&typeof window.optimizely.get=="function"){const n=(t=window.optimizely.get("state"))==null?void 0:t.getExperimentStates({isActive:!0});if(n){const o=Object.keys(n).map(r=>{var i,a;return(i=n[r].variation)!=null&&i.name?{id:r,variation:(a=n[r].variation)==null?void 0:a.name}:{id:r,variation:"Original"}});return this.setOptimizelyExperiment({experiments:o},!1),!0}return!1}return!1}catch(n){return n instanceof Error&&window.UserLeap.reportError("getAndSetWebOptimizely",n),!1}}}const ie=new nr;Object.freeze(ie);class ir{constructor(t,n){W(this,"paused"),W(this,"queue"),W(this,"ul"),this.ul=t,this.paused=!1,this.queue=[],this.flush(n)}flush(t){const n=t.length;if(n)for(let o=0;o<n;o++)this.push(t[o])}isPaused(){return this.paused}pause(){this.paused=!0}unpause(){this.paused=!1;const t=this.queue.slice();this.empty(),this.flush(t)}push(t){if(this.paused)this.queue.push(t);else if(t instanceof Function)t();else{const n=Array.prototype.slice.call(t,1),o=t[0],r=this.ul[o];r instanceof Function?r.apply(this.ul,n):o&&console.warn("[Sprig] (ERR-100) No valid UserLeap action called",o)}}perform(t){if(this.paused){let n=()=>{};const o=new Promise(function(r){n=function(){r(t())}});return this.queue.push(n),o}else return t()}empty(){this.queue.length=0}}let nt,it;const Ee=e=>{let t=0,n=e.firstElementChild;for(;n;)t+=Ee(n),n.shadowRoot&&(t+=Ee(n.shadowRoot)),n=n.nextElementSibling,t++;return t},or=()=>document.documentElement.innerHTML.length,ot=()=>{nt.report(Ee(document.body)),it.report(or())},sr=(e=10*1e3)=>{nt=j("sdk_dom_nodes_count"),it=j("sdk_page_html_characters"),ot(),setInterval(ot,e)},_e=(e,t)=>{const n=performance.now();document.hidden?setTimeout(()=>_e(e,t),e):setTimeout(()=>{const o=performance.now()-n;t.report(o/1e3),setTimeout(()=>_e(e,t),e)},0)},ar=(e=1e3)=>{const t=j("sdk_event_queue_latency_seconds");_e(e,t)};let oe,se,ae,de,N={},st;const le=(e,t=1)=>{const{name:n}=e;N[n]=(N[n]||0)+t},at=e=>{let t=1;return e.childNodes.forEach(n=>{t+=at(n)}),t},dt=e=>{let t=0;return e.forEach(n=>{t+=at(n)}),t},dr=e=>{switch(e.type){case"childList":le(oe,dt(e.addedNodes)),le(se,dt(e.removedNodes));return;case"attributes":le(ae);return;case"characterData":le(de);return}},lr=e=>e.forEach(dr),cr=()=>{st=new MutationObserver(lr),st.observe(document,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0})},pr=()=>{oe.report(N[oe.name]||0),se.report(N[se.name]||0),ae.report(N[ae.name]||0),de.report(N[de.name]||0),N={}},ur=(e=1*1e3)=>{oe=j("sdk_mutations_nodes_added"),se=j("sdk_mutations_nodes_removed"),ae=j("sdk_mutations_attributes_changed"),de=j("sdk_mutations_character_data"),cr(),setInterval(pr,e)},wr=({webMetricsEnabled:e,reportingIntervalSeconds:t,thresholds:n,postMetrics:o})=>{Ut(n,(r,i)=>{var a,s;if((a=U.replay)!=null&&a.isReplayRecording()){const d=`Value: ${r} on ${i.metric} violated threshold of ${i.type} ${i.value}`;(s=U.replay)==null||s.disableRecording("Threshold violated",new Error(d),{reportError:!1}),window.UserLeap.reportError("Sdk Performance Metric threshold violated",new Error("Sdk Performance Metric threshold violated"),{metricName:i.metric,type:i.type,value:i.value},{metricName:i.metric}),kt()}}),St({reportingIntervalSeconds:t,postMetrics:o}),e&&(ar(),sr(),ur())},gr={test:"test"},mr=["popState","pushState","replaceState"],K="!email",xe="pageUrl";function yr(e,t){const{pageUrlEvents:n,interactiveEvents:o,dismissOnPageChange:r}=window.UserLeap._config;if(!r)return!0;const i=[];n&&n.length&&i.push(...n),o&&o.length&&i.push(...o);const a=e&&i.find(s=>s.id===e);return a?me(a,window.location.href):t===window.location.href}function Q(e){var t;const{pageUrlEvents:n,interactiveEvents:o,dismissOnPageChange:r,platform:i}=window.UserLeap._config;if(i&&i!=="web")return;const a=z("trackStartUrl"),s=a?String(a):null;n&&ut(window.location.href),o&&(ct(),vr()),Qe()&&Xt(),_t.getItem("sprig.isCapturingHeatmap")&&((t=U.replay)==null||t.checkPendingHeatmapsUrl()),!re()&&r&&s&&s!==window.location.href&&e&&mr.includes(e.type)&&window.UserLeap("dismissActiveSurvey",M.PageChange)}const lt={capture:!0},vr=()=>{const e=window.UserLeap._config.interactiveEvents.filter(n=>me(n,window.location.href)).map(n=>{const{name:o,properties:r}=n,{selector:i,innerText:a}=r;return i?s=>{if(Je(s.target))try{s.target.closest(i)&&window.UserLeap("track",o)}catch{}return!1}:s=>(Je(s.target)&&s.target.innerText===a&&window.UserLeap("track",o),!1)}),t=n=>e.forEach(o=>o(n));window.UserLeap._config.interactiveEventsHandler=t,window.addEventListener("click",t,lt)},ct=()=>{window.UserLeap._config.interactiveEventsHandler&&window.removeEventListener("click",window.UserLeap._config.interactiveEventsHandler,lt),delete window.UserLeap._config.interactiveEventsHandler};function fr(){["hashchange","popstate"].forEach(e=>window.addEventListener(e,Q,!0))}function hr(){["hashchange","popstate"].forEach(e=>window.removeEventListener(e,Q,!0)),window.UserLeap._config.interactiveEvents&&ct()}function br(e){const t=new URL(D("1",[T],"questions"));return Object.entries(e||{}).forEach(([n,o])=>{o&&t.searchParams.append(n,String(o))}),t.toString()}function z(e){const t=I.getItem("userleap.ids");if(t)try{const n=JSON.parse(t)[window.UserLeap.envId];return n&&n[e]||null}catch(n){n instanceof Error&&(n.stack=t,window.UserLeap.reportError("Failed to parse local storage credentials",n)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",n)}return null}function pt(){window.previewMode||(window.UserLeap.visitorId=Te(),_(`Generating new vid: ${window.UserLeap.visitorId}`),E("vid",window.UserLeap.visitorId),w.emit(g.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId}))}function ut(e,t,n,o){var r,i,a;if(e.endsWith("mock_snippet.html"))return;_(`Tracking page view: ${e}`);const s=window.UserLeap._config.pageUrlEvents;let d=!1;if(s&&s.length)for(let m=0;m<s.length&&(d=me(s[m],e),!d);m++);if(!d)return;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig trackPageView",e);const p=10,l=1;let c=[];const u={viewedAt:Date.now(),location:e},f={url:e};o&&(f.trackPageView=!0);const y=I.getItem("userleap.pageviews");try{if(c=y?JSON.parse(y):[],Array.isArray(c)||(c=[]),c.length>0){const m=c[c.length-1],x=(Date.now()-m.viewedAt)/1e3;if(m.location!=e&&x>l){const b=(r=document?.querySelector('meta[name="description"]'))==null?void 0:r.getAttribute("content");(i=U.replay)==null||i.RecordPageView({...b&&{description:b},url:e,referrer:document.referrer,pageTitle:document.title})}(m.location!=e&&x>l||x>p)&&(window.UserLeap._queue.push(["track",xe,t,f,n]),c.push(u))}else window.UserLeap._queue.push(["track",xe,t,f,n]),c.push(u),(a=U.replay)==null||a.RecordPageView({url:e});c.length>5&&c.splice(0,c.length-5),I.setItem("userleap.pageviews",JSON.stringify(c))}catch(m){m instanceof Error&&window.UserLeap.reportError("trackPageView",m,{pageViewsStorage:y}),console.warn("[Sprig] (ERR-425) Failed to update page views in local storage")}}function Lr(){const e="Backbone"in window&&window.Backbone&&window.Backbone.history?window.Backbone.history:window.history;"pushState"in e&&(e.pushState=(t=>function(...n){const o=t.apply(this,n),r=new Event("pushState");return window.dispatchEvent(r),Q(r),o})(e.pushState)),"replaceState"in e&&(e.replaceState=(t=>function(...n){const o=t.apply(this,n),r=new Event("replaceState");return window.dispatchEvent(r),Q(r),o})(e.replaceState)),fr()}async function Ae(e,t){const n=ye();e&&!t&&(window.UserLeap._config.mode=gr.test);const o=F(window.UserLeap),r=ve(o),i=await R(br({desktopDisplay:window.UserLeap._config.desktopDisplay,isMobile:r,previewLanguage:window.UserLeap._config.previewLanguage,surveyid:e?.surveyId,surveytemplateid:e?.surveyTemplateId,vid:n}),{shouldDropOnRateLimit:!0});if(!i.ok)return i.reportError&&i.error&&(console.warn("[Sprig] (ERR-414) Failed to request questions from the server",i.error),window.UserLeap.reportError("getQuestions",i.error)),{success:!1,surveyState:"no survey"};if(i.json.delay&&await je(i.json.delay),i.json.isFeedback){const{feedbackLabel:a,productConfig:s,surveyUuid:d,feedbackCustomStyles:p}=i.json,{buttonTheme:l,placement:c,desktopDisplay:u}=s,f={customStyles:p,buttonTheme:l,desktopDisplay:u,eventId:0,feedbackLabel:a,placement:c,surveyUuid:d,surveyId:e?.surveyId};rt(f,i.json)}else return $(i.json)}function Ur(e){let t=e.length;for(;t;){const n=Math.floor(Math.random()*t);t-=1;const o=e[t];e[t]=e[n],e[n]=o}}function Sr(e){if(!e)return;window.UserLeap._config=e,e.mute&&window.UserLeap._queue.pause();const{interactiveEvents:t,pageUrlEvents:n,dismissOnPageChange:o}=e;t&&Ur(t),(t||n||o)&&(Lr(),Q())}async function kr(e,t){var n,o;let r=!0;return t&&(n=e?.json)!=null&&n.surveyId&&(window.UserLeap.delayingSurvey=!0,r=await t(e.json.surveyId),window.UserLeap.delayingSurvey=!1,!r)?!1:((o=e?.json)!=null&&o.delay&&(window.UserLeap.delayingSurvey=!0,await je(e.json.delay),window.UserLeap.delayingSurvey=!1),r)}const Ir=function(e){if(!window.UserLeap)return;const t=async(r={})=>{var i,a,s,d,p;const{userId:l,anonymousId:c,metadata:u={},properties:f,showSurveyCallback:y}=r;let{eventName:m}=r;if(window.UserLeap.debugMode&&m!==xe&&console.info("[DEBUG] Sprig track",r),e.mode==="test")return;const x=I.getItem("sprig.previewKey")??void 0;if(e.requireUserIdForTracking&&!window.UserLeap.userId&&!l){const k="[Sprig] - Skipping tracking without userId";return console.warn(k),{success:!1,message:k,surveyState:"no survey"}}if(!m||m.trim().length===0){m=m?String(m):"";const k="[Sprig] - Invalid event name "+m;return console.warn(k),{success:!1,message:k,surveyState:"no survey"}}const b=window.location.href;if(u.url||(u.url=b),E("trackStartUrl",b),(a=(i=window.UserLeap)==null?void 0:i._config)!=null&&a.optimizelyEnabled){const k=F(window.UserLeap);fe(k)||ie.getAndSetWebOptimizelyExperiments(),u.optimizelyExperiments=Object.assign({},ie.getAllOptimizelyExperiments())}(d=(s=window.UserLeap)==null?void 0:s._config)!=null&&d.launchDarklyEnabled&&(u.launchDarklyFlags=Ie.getAllLaunchDarklyVariations()),l&&(window.UserLeap.userId=l),c&&(window.UserLeap.partnerAnonymousId=c),f&&(u.eventProperties=f),(p=U.replay)==null||p.RecordEvent({name:m,url:u.url}),_(`Tracking event: ${m}`);const h=window.UserLeap.delayingSurvey||Ye()?await R(D("1",[C],"events/batch"),{body:JSON.stringify({events:[{event:m,metadata:u}],previewKey:x}),method:"POST",shouldDropOnRateLimit:!0}):await R(D("1",[C],"events"),{body:JSON.stringify({event:m,metadata:u,previewKey:x}),method:"POST",shouldDropOnRateLimit:!0});if(!h.ok){const k="[Sprig] (ERR-421) Failed to track event";return h.reportError&&(console.warn(k,h.error),h.error&&window.UserLeap.reportError("track",h.error)),{success:!1,message:k,error:h.error,surveyState:"no survey"}}l&&E("uid",l),c&&E("aid",c);const A=h.json;A.invalidPreviewKey&&I.removeItem("sprig.previewKey");const S=u.trackPageView?u.url:void 0;return A!=null&&A.feedbackButton&&rt(A.feedbackButton,void 0,S),await kr(h,y)?yr(A.eventId,b)?$(A,S):{success:!1,message:"Study should not be displayed after page navigation",surveyState:"no survey"}:{success:!1,message:"[Sprig] Callback returned false, aborting rendering of survey",surveyState:"no survey"}},n=(r,i)=>{var a;const s=(a=r?.querySelector(`[id="${he}"]`))==null?void 0:a.contentDocument;s&&te(s,i)},o={async displaySurvey(r){return console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."),window.UserLeap("dismissActiveSurvey",M.Override),Ae({surveyId:r},!0)},_previewSurvey(r){window.UserLeap("dismissActiveSurvey",M.Override),Ae({surveyTemplateId:r},!1)},_reviewSurvey(r){window.UserLeap("dismissActiveSurvey",M.Override),Ae({surveyId:r},!1)},previewSurvey(r){o._previewSurvey(r)},reviewSurvey(r){o._reviewSurvey(r)},mute(){window.UserLeap._queue.pause()},unmute(){window.UserLeap._queue.unpause()},setVisitorToken(){console.warn("[Sprig] setVisitorToken is deprecated.")},dismissActiveSurvey(r=M.API){w.emit(g.SurveyWillClose,{name:g.SurveyWillClose,initiator:r})},async setAttribute(r,i){if(!r||!i&&i!==0&&i!==!1){const a="[Sprig] - Disregarding empty attribute / value provided";return console.warn(a),{success:!1,message:a}}return this.setAttributes({[r]:i})},async setAttributes(r){if(r==null||Object.keys(r).length===0){const i="[Sprig] - Disregarding empty attributes provided";return console.warn(i),{success:!1,message:i}}return this.identifyAndSetAttributes({attributes:r})},async identifyAndSetAttributes(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig identifyAndSetAttributes",r),e.mode==="test")return;if(r===null||typeof r!="object"||!(r.userId||r.anonymousId||r.attributes)){const l="[Sprig] - Disregarding empty payload provided";return console.warn(l),{success:!1,message:l}}const{userId:i,anonymousId:a,attributes:s}=r;if(e.requireUserIdForTracking&&!window.UserLeap.userId&&!i){const l="[Sprig] - Skipping tracking without userId";return console.warn(l),{success:!1,message:l}}if(!s&&(!i||window.UserLeap.userId===i)&&(!a||window.UserLeap.partnerAnonymousId===a))return{success:!0};const d={};i&&(d.userId=window.UserLeap.userId=i),a&&(d.partnerAnonymousId=window.UserLeap.partnerAnonymousId=a);let p;return s?(s.email&&!Object.prototype.hasOwnProperty.call(s,K)&&(s[K]=s.email,delete s.email),_(`Setting attributes: ${JSON.stringify(s)}`),p=await R(D("1",[T,C],"attributes"),{body:JSON.stringify(s),method:"PUT"}),!p.ok&&p.reportError&&(console.warn("[Sprig] (ERR-432) identifyAndSetAttributes failed",p.error),p.error&&window.UserLeap.reportError("identifyAndSetAttributes",p.error))):p=await R(D("1",[T,C]),{body:JSON.stringify(d),method:"PUT"}),s&&s[K]&&(window.UserLeap.email=s[K]),p.ok&&(i&&E("uid",i),a&&E("aid",a)),{success:!!p.ok}},async removeAttributes(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig removeAttributes",r),e.mode==="test")return;if(r==null||r.length===0){const a="[Sprig] - Disregarding empty attributes provided";return console.warn(a),{success:!1,message:a}}if(e.requireUserIdForTracking&&!window.UserLeap.userId){const a="[Sprig] - Skipping tracking without userId";return console.warn(a),{success:!1,message:a}}const i=await R(D("1",[T,C],"attributes"),{body:JSON.stringify({delete:r}),method:"DELETE"});return!i.ok&&i.reportError&&(console.warn("[Sprig] (ERR-433) Remove attributes failed",i.error),i.error&&window.UserLeap.reportError("removeAttributes",i.error)),{success:!!i.ok}},async addSurveyListener(r){w.on(g.SurveyLifeCycle,r)},async removeSurveyListener(r){w.removeListener(g.SurveyLifeCycle,r)},async addListener(r,i){w.on(r,i)},async removeListener(r,i){w.removeListener(r,i)},async removeAllListeners(){w.removeAllListeners()},setPreviewKey(r){!r||typeof r!="string"||I.isStorageAvailable&&r&&I.setItem("sprig.previewKey",r)},async setUserId(r){var i;if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setUserId",r),r==null){const d=`[Sprig] - Invalid userId ${r}`;return console.warn(d),{success:!1,message:d}}if(e.mode==="test"||r===window.UserLeap.userId)return;window.UserLeap.userId=r;const a=window.UserLeap.visitorId,s=await R(D("1",[T,C]),{body:JSON.stringify({userId:r}),method:"PUT"});if(!s.ok){s.reportError&&(console.warn("[Sprig] (ERR-420) Failed to set user id",s.error),s.error&&window.UserLeap.reportError("setUserId",s.error));return}a!==window.UserLeap.visitorId&&((i=U.replay)==null||i.clearUserReplayData()),E("uid",r)},async setPartnerAnonymousId(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setPartnerAnonymousId",r),r==null){const i=`[Sprig] - Invalid partnerAnonymousId ${r}`;return console.warn(i),{success:!1,message:i}}return window.UserLeap.partnerAnonymousId=r,E("aid",r),{success:!0}},async track(r,i,a={},s=void 0){return t({eventName:r,properties:i,metadata:a,showSurveyCallback:s})},async identifyAndTrack(r){return await t(r)},trackPageView(r,i=void 0,a=void 0,s=!0){ut(r,i,a,s)},applyFeedbackStyles({button:r="",view:i=""}){window.UserLeap.feedbackCustomStyles=i,document.getElementById("sprig-feedback-style")&&te(document,r,window.UserLeap.styleNonce),n(document.querySelector(".ul-container-feedback"),i)},applyStyles(r){window.UserLeap.customStyles=r,n(window.UserLeap.container,r)},setWindowDimensions(r,i){var a,s;const d=typeof r=="string"?parseInt(r,10):r,p=typeof i=="string"?parseInt(i,10):i;if(!isNaN(d)&&!isNaN(p)&&(window.UserLeap.windowDimensions={width:d,height:p}),!window.UserLeap.frameId)return;const l=document.getElementById(window.UserLeap.frameId);l&&(window.UserLeap.useMobileStyling&&((a=window.UserLeap.windowDimensions)!=null&&a.width&&(l.style.width=`${window.UserLeap.windowDimensions.width}px`),(s=window.UserLeap.windowDimensions)!=null&&s.height&&(l.style.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`),l.contentDocument&&(l.style.height=String(Ke(l.contentDocument)[0])+"px")),w.emit(g.SurveyDimensions,{name:g.SurveyDimensions,contentFrameWidth:l.clientWidth,contentFrameHeight:l.clientHeight}))},logoutUser(){var r;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig logout"),_(`Logging out user: ${window.UserLeap.userId} / vid: ${window.UserLeap.visitorId}`),window.UserLeap.visitorId=null,window.UserLeap.userId=null,window.UserLeap.partnerAnonymousId=null,window.UserLeap.token=null,window.UserLeap.email=null,I.removeItem("userleap.ids"),I.removeItem("userleap.pageviews"),window.UserLeap._queue.isPaused()&&window.UserLeap._queue.empty(),pt(),(r=U.replay)==null||r.clearUserReplayData(),window.UserLeap._queue.unpause()},teardown(){hr(),window.UserLeap("dismissActiveSurvey",M.API),delete window.UserLeap,delete window.Sprig,delete window._Sprig},integrateOptimizely(r,i=!0){var a,s;if(!((s=(a=window.UserLeap)==null?void 0:a._config)!=null&&s.optimizelyEnabled)){console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");return}try{const d=typeof r=="string"?JSON.parse(r):r;ie.setOptimizelyExperiment(d,i)}catch(d){console.warn("[Sprig] Error with integrating Optimizely data"),d instanceof Error&&window.UserLeap.reportError("integrateOptimizely",d)}},integrateOptimizelyClient(r){var i,a;if(!((a=(i=window.UserLeap)==null?void 0:i._config)!=null&&a.optimizelyEnabled)){console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");return}const s=({experiment:d,variation:p})=>{const l={experiments:[{id:d.id,variation:p.key}]};window.UserLeap("integrateOptimizely",l,!1)};r.notificationCenter.addNotificationListener("ACTIVATE:experiment, user_id,attributes, variation, event",s)},importLaunchDarklyData(r){var i,a;if(!((a=(i=window.UserLeap)==null?void 0:i._config)!=null&&a.launchDarklyEnabled)){console.warn("[SPRIG] LaunchDarkly integration is currently not enabled for your product.");return}Ie.setLDFlagsVariations(r)},setVisitorAttribute(r,i){return console.warn("[Sprig] setVisitorAttribute is deprecated. Please use setAttribute"),o.setAttribute(r,i)},async setEmail(r){return o.setAttribute(K,r)},async setVisitorEmail(r){return console.warn("[Sprig] setVisitorEmail is deprecated. Please use setEmail"),o.setEmail(r)},async _generateVideoUploadUrl(r){return Ar(r)},_reportMetric(r,i){xt(r,i)},async _completeSessionReplay({surveyId:r,responseGroupUuid:i,eventDigest:a}){var s;return U.replay?(s=U.replay)==null?void 0:s._completeSessionReplay({surveyId:r,responseGroupUuid:i,eventDigest:a,headers:F(window.UserLeap)}):(window.UserLeap.reportError("_completeSessionReplay",new Error("Replay module not registered")),!1)}};Object.assign(window.UserLeap,o)};async function Er(e){const t=F(window.UserLeap);document.addEventListener("securitypolicyviolation",Fe);const n=await Ce(D("1",[T],"config"),{headers:t});if(document.removeEventListener("securitypolicyviolation",Fe),!n.ok)return n.reportError&&(console.warn("[Sprig] (ERR-422) Failed to load configuration",n.error),n.error&&window.UserLeap.reportError("applyRemoteConfig",n.error)),Me("Disabled: failed to fetch configuration"),e;const o=n.json;return o!=null&&o.disabled?(Me(`Disabled: ${o.disabled}`),{disabled:o.disabled}):Object.assign({},o,e)}const _r=e=>typeof e=="object"&&e&&"inner"in e&&!!e.inner&&typeof e.inner=="object";async function xr(e,t,n={},o={}){var r,i;const a=window.__cfg&&window.__cfg.mode,s=ye(),d=window.UserLeap.envId,p=window.document.documentElement,l=_r(t)?{inner:{message:(r=t.inner)==null?void 0:r.message,stack:(i=t.inner)==null?void 0:i.stack}}:{},c={mode:a,screenWidth:window.screen.width,screenHeight:window.screen.height,clientWidth:p.clientWidth,clientHeight:p.clientHeight,location:window.location.href,language:window.navigator.language,...n,...l},u={action:e,err:{message:t.message,stack:t.stack},meta:c,vid:s,envId:d,...o},f=await R(D("1",null,"errors"),{method:"POST",headers:{"x-ul-error":window.btoa(`userleap-${Date.now()}-error`)},body:JSON.stringify(u),shouldDropOnRateLimit:!0});if(!f.ok)console.warn("[Sprig] (ERR-444) Failed to report error to API",t);else{const{presignedUrl:y}=f.json;Et(y)}}async function Ar(e){var t;if(!e)return;const n=`${window.UserLeap._API_URL}/2/environments/integrations/upload`;try{const o=await fetch(n,{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(o.ok){const r=await o.json();return(t=r?.upload)==null?void 0:t.url}else return null}catch(o){console.warn("[Sprig] Error with generating video upload url"),o instanceof Error&&window.UserLeap.reportError("generateVideoUploadUrl",o)}}function Dr(e={}){const t=new URLSearchParams(window.location.search).get("sprigPreviewKey")??"";window.UserLeap.UPDATES=V,window.UserLeap("setPreviewKey",t);async function n(){var o;if(window.UserLeap.loaded)return;if(_("Loading sprig on page load"),window.UserLeap.reportError=xr,window.UserLeap.loaded=!0,window.UserLeap._config=Object.assign({},e,window.UserLeap.config),window.UserLeap.delayingSurvey=!1,window.UserLeap._config&&typeof window.UserLeap._config=="object")for(const d in window.UserLeap._config)window.UserLeap[d]=window.UserLeap._config[d];if(!window.UserLeap.envId)if(window.UserLeap.appId)window.UserLeap.envId=window.UserLeap.appId;else throw new Error("Missing Environment id");window.UserLeap.debugMode&&console.info("[DEBUG] Sprig debug mode enabled");const r=window.UserLeap.sampleRate;if(r){let d=z("sampled");if(d===null&&(d=Math.random()<r,E("sampled",d)),!d)return}else z("sampled")!==null&&E("sampled",null);window.UserLeap._API_URL||(window.UserLeap._API_URL="https://api.sprig.com");const i=[...window.UserLeap._queue];window.UserLeap._queue=new ir(window.UserLeap,[]),window.UserLeap._queue.pause();for(let d=0;d<i.length;d++)window.UserLeap._queue.push(i[d]);const a=z("token");a?(window.UserLeap.token=a,window.UserLeap.visitorId=z("vid"),window.UserLeap.userId=z("uid"),window.UserLeap.partnerAnonymousId=z("aid")):(I.removeItem("userleap.ids"),pt());const s=await Er(e);wr({webMetricsEnabled:s.metricsReportingEnabled,reportingIntervalSeconds:s.metricsReportingEnabled||s.mobileMetricsReportingEnabled?s.metricsReportingIntervalSeconds:0,thresholds:s.metricThresholds,postMetrics:async d=>{var p;await R(D("1",[T],"metrics"),{body:d,method:"POST",headers:{"x-ul-replay-enabled":`${!!((p=U.replay)!=null&&p.isReplayRecording())}`},shouldDropOnRateLimit:!0})}}),(o=U.replay)==null||o.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:s.maxReplayDurationSeconds,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests??2,replaySettings:s.replaySettings}),It(s.logBufferLimit,s.logLevel),Ir(s),await Sr(s),window.UserLeap._queue.unpause(),w.emit(g.SDKReady,{mobileMetricsReportingEnabled:!!s.mobileMetricsReportingEnabled,metricsReportingInterval:s.metricsReportingIntervalSeconds||0,metricsThresholds:s.metricThresholds||[],maxMobileReplayDurationSeconds:s.maxMobileReplayDurationSeconds,mobileReplaySettings:s.mobileReplaySettings}),w.emit(g.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId})}document.readyState==="complete"?n():window.attachEvent?window.attachEvent("onload",n):window.addEventListener("load",()=>{n()},!1)}class ce{constructor(){this.UPDATES=V}displaySurvey(t){window.Sprig("displaySurvey",t)}mute(){window.Sprig("mute")}unmute(){window.Sprig("unmute")}dismissActiveSurvey(){window.Sprig("dismissActiveSurvey")}setAttribute(t,n){window.Sprig("setAttribute",t,n)}setAttributes(t){window.Sprig("setAttributes",t)}identifyAndSetAttributes(t){window.Sprig("identifyAndSetAttributes",t)}removeAttributes(t){window.Sprig("removeAttributes",t)}addListener(t,n){window.Sprig("addListener",t,n)}removeListener(t,n){window.Sprig("removeListener",t,n)}removeAllListeners(){window.Sprig("removeAllListeners")}setEmail(t){window.Sprig("setAttribute","!email",t)}setUserId(t){window.Sprig("setUserId",t)}setPartnerAnonymousId(t){window.Sprig("setPartnerAnonymousId",t)}track(t,n={},o={}){window.Sprig("track",t,n,o)}identifyAndTrack(t){window.Sprig("identifyAndTrack",t)}trackPageView(t,n,o){window.Sprig("trackPageView",t,n,o)}applyStyles(t){window.Sprig("applyStyles",t)}setWindowDimensions(t,n){window.Sprig("setWindowDimensions",t,n)}logoutUser(){window.Sprig("logoutUser")}teardown(){window.Sprig("teardown")}}const De={configure:e=>{if(!e.envId&&!e.environmentId)throw new Error("Initialization Error: Sprig configure requires an environmentId");if(e.envId||(e.envId=e.environmentId??""),e.installationMethod="web-npm",window.Sprig)return window.Sprig;window.Sprig=function(){window.Sprig._queue.push(arguments)},Object.getOwnPropertyNames(ce.prototype).map(n=>{n!=="constructor"&&(window.Sprig[n]=ce.prototype[n])});const t=window.Sprig;return t.appId=e.envId,t._queue=[],window.UserLeap=t,Dr(e),window.Sprig}},Rr={sprig:De,SprigAPI:ce,configure:De.configure};export{Dt as A,qe as C,Ne as D,Ct as E,ce as S,Ke as a,Ot as b,Rr as c,Rt as d,te as o,Gt as r,De as s};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";var nt=Object.defineProperty;var ot=(e,t,n)=>t in e?nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>(ot(e,typeof t!="symbol"?t+"":t,n),n);const i=require("./metricsReporter-DwcQeyB8.cjs"),st='.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}',Te="360px",at="ul-app",dt="#e6e6e6",lt="#bd282a",ct=500,pt=1030,Pe=()=>{try{return window.parent.Intercom}catch{return null}},ut=()=>{const e=Pe();e&&(e.ul_wasVisible&&e("update",{hide_default_launcher:!1}),delete e.ul_wasVisible)},wt=()=>{const e=Pe();e&&(e.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),e.ul_wasVisible&&e("update",{hide_default_launcher:!0}))},gt=Object.freeze(Object.defineProperty({__proto__:null,disable:wt,enable:ut},Symbol.toStringTag,{value:"Module"})),Ie=[gt];class Ce{static disable(){Ie.forEach(t=>t.disable())}static enable(){Ie.forEach(t=>t.enable())}}const ke="ul-view-sdk-script",ft=["ios","android"],O="visitors",x="environments";async function _(e,t){var o,a,l;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 d=(o=r.headers)==null?void 0:o.get("Authorization"),p=d?d.split(" "):void 0,c=p&&p.length===2?p[1]:void 0,u=(a=r.headers)==null?void 0:a.get("x-ul-visitor-id");c&&u&&(u!==window.UserLeap.visitorId||window.UserLeap.token!==c)&&(U("token",c),U("vid",u),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:u}),window.UserLeap.token=c,window.UserLeap.visitorId=u)}return(l=r.json)!=null&&l.logMessage&&console.warn(`[Sprig] ${r.json.logMessage}`),r}function U(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 we(){return window.previewMode?"0":window.UserLeap.visitorId??""}function I(e,t,n){const s=[window.UserLeap._API_URL,"sdk",e];return t&&t.forEach(r=>{s.push(r),r===x?s.push(window.UserLeap.envId):r===O&&s.push(we())}),n&&s.push(n),s.join("/")}const W=async(e,t)=>{var be,Ee,Ue;const{context:n,forceBrandedLogo:s,endCard:r,isFeedback:o=!1,heatmap:a,locale:l,previewMode:d,productConfig:p,questions:c,responseGroupUid:u,surveyId:g,uuid:m,vid:w,sessionReplay:y,studyType:A}=e,b=i.getHttpHeaders(window.UserLeap),S=fe(b),L=ge(b);if(i.info(`Attempting to display survey: ${g}`),y)if(i.info("Survey has replay attached"),S)i.eventEmitter.emit(i.SprigEvent.ReplayCapture,{responseGroupUid:u,hasQuestions:!!(c!=null&&c.length),surveyId:g,uploadId:y.uploadId,replayType:y.replayDurationType??"before",seconds:y.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:i.v4(),mediaType:"screen",questionId:1,responseGroupUid:u,surveyId:g,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:u,surveyId:g,visitorId:w,replayParams:y,completeUploadHeaders:b,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:c.length===0})}if(a){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:h,replayParams:ie,responseGroupUid:rt,surveyId:it}=a;await i.modules.replay.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:300,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0}),i.modules.replay.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:b,eventId:h,isHeatmap:!0,replayParams:ie,responseGroupId:rt,surveyId:it,triggerTimestamp:Date.now(),visitorId:w})}if(w==null||!(c!=null&&c.length))return i.info(`Not displaying survey: vid: ${w} / questions: ${c}`),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){i.info("Already displaying a survey");const h="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(h),{success:!1,message:h,surveyState:"no survey"}}if(w!==window.UserLeap.visitorId&&m!==window.UserLeap.visitorId&&!window.previewMode){const h="Attempted to display survey to a different visitor";return i.info(h),window.UserLeap.reportError("DisplaySurvey",new Error(h)),{success:!1,message:h,surveyState:"no survey"}}i.info(`Showing survey: ${g}`),(be=i.modules.replay)==null||be.RecordSurveyShown({id:g,userAgent:window.navigator.userAgent}),Ce.disable(),i.eventEmitter.emit(i.SprigEvent.SurveyWillPresent,{name:i.SprigEvent.SurveyWillPresent,"survey.id":g});let D,k=document.createElement("div"),E,v,N;const he=h=>{const{"view.version":ie}=h;ie!==b["x-ul-sdk-version"]&&Fe(),i.eventEmitter.removeListener("verify.view.version",he)};i.eventEmitter.on("verify.view.version",he),window.UserLeap.useMobileStyling=L,i.shouldDirectEmbed(b)?(D="ul-direct-embeded-frame",E=document.head,v=window,N=!1,S&&(Me(o),k.id=D,window.UserLeap.container.appendChild(k),He(),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":g}))):{frameId:D,contentWinDocHead:E,contentWindow:v,hasOverlay:N,iframe:k}=St({productConfig:p,useMobileStyling:L,surveyId:g,isFeedback:o}),window.UserLeap.frameId=D;const Ze=h=>{i.eventEmitter.once(i.SprigEvent.CloseSurveyOnOverlayClick,h)},M={apiURL:window.UserLeap._API_URL,cards:c,configureExitOnOverlayClick:Ze,context:n,endCard:r,envId:window.UserLeap.envId,eventEmitFn:i.eventEmitter.emit.bind(i.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:s,frame:k,headers:b,locale:l,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:i.localStorageHelper.getItem("sprig.previewKey"),previewMode:d,productConfig:{framePosition:p==null?void 0:p.framePosition,desktopDisplay:p==null?void 0:p.desktopDisplay,placement:p==null?void 0:p.placement},responseGroupUid:u,startingQuestionIdx:(Ee=window.UserLeap.config)==null?void 0:Ee.startingQuestionIdx,studyType:A,styleNonce:window.UserLeap.styleNonce,surveyId:g,tabTitle:document.title,trackPageViewUrl:t,ulEvents:i.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:L,userId:m,viewDocument:v==null?void 0:v.document,viewWindow:v,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(Ue=window.UserLeap._config)!=null&&Ue.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const et=(o?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??p.customStyles;M.customStyles=et,v&&(v.__cfg=M);function tt(){const h=document.createElement("script");return window.UserLeap.nonce&&h.setAttribute("nonce",window.UserLeap.nonce),h.id=ke,h}const te=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:M.path,Se=document.getElementById(ke);Se&&Se.remove();const re=tt(),Le=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(M.installationMethod==="web-npm"||M.installationMethod==="web-npm-bundled"){const{default:h}=await Promise.resolve().then(()=>require("./view-C-j1BBYA.cjs"));h.configure(M),N&&window.UserLeap.container&&Le()}else te&&(re.src=te,N&&re.addEventListener("load",()=>{window.UserLeap.container&&Le()}),v==null||v.addEventListener("error",h=>{h.target instanceof HTMLScriptElement&&h.target.src===te&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));return E==null||E.appendChild(re),{success:!0,surveyState:"ready",surveyId:g,responseGroupUid:u}};function ge(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 fe(e)||t>10&&t<ct}function fe(e){return ft.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 mt="rgba(255,255,255, 0.95)",yt="rgba(0,0,0,0.9)",ne="0px",Me=(e,t)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className=`ul-container ${e&&"ul-container-feedback"}`;const n=Be();t&&n&&!window.UserLeap.useMobileStyling?n.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},Fe=(e,t)=>{var s;bt();const n=window.UserLeap.container;if(n)try{(s=n.parentNode)==null||s.removeChild(n),window.UserLeap.container=null,U("trackStartUrl",null),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),i.eventEmitter.emit(i.SprigEvent.SurveyClosed,{name:i.SprigEvent.SurveyClosed,initiator:e,studyType:t})}catch(r){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${e} `+n),r instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",r)}},He=()=>{i.eventEmitter.once(i.SprigEvent.SurveyWillClose,({initiator:e,studyType:t})=>{i.eventEmitter.removeAllListeners(i.SprigEvent.CloseSurveyOnOverlayClick),Fe(e,t)})},vt=(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"?mt:yt,t||(s.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,s)},ht=(e,t,n,s)=>{var c,u;const r={position:"fixed",bottom:"0px",right:ne,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||{},l=a==="center-modal";l&&(o.framePosition="center");let d,p=!1;if(n)(c=window.UserLeap.windowDimensions)!=null&&c.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=Te,r.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{p=!0,d={margin:"auto",position:"static"}};if(s)l?g():d={position:"relative",height:"300px"};else switch(o.framePosition){case"bottomLeft":d={left:ne};break;case"topLeft":d={left:ne,top:0};break;case"topRight":d={top:0};break;case"center":g();break}}return p&&vt(o,n),Object.assign(e.style,r,d),p},St=({productConfig:e,useMobileStyling:t,surveyId:n,isFeedback:s})=>{var g,m;const r=me,o=s&&e.desktopDisplay==="slider";Me(s,o),Lt();const a=document.createElement("iframe");a.id=r,a.setAttribute("title","Sprig User Feedback Dialog");const l=ht(a,e,t,s);He();let d=!1;a.setHeight=w=>{(parseInt(a.style.height)!=w||!d)&&(d=!0,a.style.height=`${w}px`,i.eventEmitter.emit(i.SprigEvent.SurveyHeight,{name:i.SprigEvent.SurveyHeight,contentFrameHeight:w}))};let p=!1;a.setWidth=w=>{(parseInt(a.style.width)!=w||!p)&&(p=!0,a.style.width=`${w}px`,i.eventEmitter.emit(i.SprigEvent.SurveyWidth,{name:i.SprigEvent.SurveyWidth,contentFrameWidth:w}))},(g=window.UserLeap.container)==null||g.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 c=(m=a.contentWindow)==null?void 0:m.document;if(c&&(c.open("text/html","replace"),c.write("<!doctype html><head></head><body></body></html>"),c.close(),!t)){const w=c.body;w.style.display="flex",w.style.alignItems="center"}const u=c==null?void 0:c.head;return{frameId:r,contentWinDocHead:u,contentWindow:a.contentWindow,hasOverlay:l,iframe:a}},Ne={[i.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},Lt=()=>{Object.entries(Ne).forEach(([e,t])=>{i.eventEmitter.on(e,t)})},bt=()=>{Object.entries(Ne).forEach(([e,t])=>{i.eventEmitter.off(e,t)})},Et=1,_e=e=>e instanceof HTMLElement||e instanceof SVGElement,G=(e,t,n)=>{const s="ul-custom-style",r=e.getElementById(s);if(r){r.textContent=t;return}const o=e.createElement("style");n&&(o.nonce=n),o.textContent=t,o.id=s,e.head.appendChild(o)},Ve=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),l=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom);n+=o+a+l;const d=t.querySelector(".ul-card--matrix_grid");s=d?d.scrollWidth:t.scrollWidth;const p=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight),c=parseFloat(r.marginLeft)+parseFloat(r.marginRight),u=parseFloat(r.borderLeftWidth)+parseFloat(r.borderRightWidth);s+=c+u+p}return[n+Et,s]},Ut=e=>{const t=e.querySelector(".ul-card__container");t&&(t.scrollTop=0)},Be=()=>f,H=()=>document.getElementById("sprig-feedback-container"),ye=()=>document.getElementById("sprig-feedback-loading-animation"),It=()=>{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
|
+
<div class="ul-loading-spinner">
|
|
3
|
+
<div class="first"></div>
|
|
4
|
+
<div class="second"></div>
|
|
5
|
+
<div class="third"></div>
|
|
6
|
+
<div class="fourth"></div>
|
|
7
|
+
</div>
|
|
8
|
+
`,e},We=()=>!!document.getElementById(me);let Re=!1,f=null,R=null,ve=!1,j=null,T=null;const kt=["bottom-left","bottom-right","center-left","center-right"],_t=e=>{if(H()||!kt.includes(e))return;const[t,n]=e.split("-"),s=document.createElement("div");s.id="sprig-feedback-container",s.classList.add(`sprig-feedback-container-${n}`,`sprig-feedback-container-${t}`),document.body.appendChild(s)},ee=()=>{var t;const e=window.UserLeap.container;return((t=e==null?void 0:e.parentElement)==null?void 0:t.id)==="sprig-feedback-loading-container"},je=()=>document.getElementById("sprig-feedback-error-container"),ze=()=>{if(!f)return 0;const e=f==null?void 0:f.clientWidth,t=window.getComputedStyle(f),n=parseInt(t.borderRightWidth||"0"),s=parseInt(t.borderLeftWidth||"0");return e+n+s},K=e=>{const t=H();t&&(T!=null&&T.endsWith("right")?t.style.right=`${e}px`:T!=null&&T.endsWith("left")&&(t.style.left=`${e}px`))},oe=()=>{if(f&&(ee()||je())){i.eventEmitter.off(i.SprigEvent.SurveyAppeared,B),ae();const e=ze();return K(-e),!0}return!1},B=()=>{if(!f||!R)return;const e=ye();e&&e.remove(),f.style.height="auto",f.style.width="auto",R.disabled=!1,ve=!1},ae=()=>{if(!f)return;if(!ye()){const t=It();t&&(f.style.height="300px",f.style.width="360px",f.appendChild(t))}},Ae=()=>{!f||!R||(K(0),R.disabled=!0,ve=!0)},Rt=async e=>{const t=await _(I("1",[O],"startFeedbackStudy"),{body:JSON.stringify({surveyUuid:e}),method:"POST"});return t.ok?t.json:null},$e=async(e,t,n)=>{const{buttonTheme:s,customStyles:r,eventId:o,placement:a,desktopDisplay:l,feedbackLabel:d,surveyUuid:p,surveyId:c}=e;window.UserLeap.feedbackCustomStyles=void 0;let u=H();if(u){if(!t&&o===j)return;u.remove(),i.eventEmitter.off(i.EVENTS.SURVEY_FADING_OUT,oe)}if(j=o,!document.getElementById("sprig-feedback-style")){const{head:S}=document,L=document.createElement("style");L.id="sprig-feedback-style",L.textContent=st,L.nonce=window.UserLeap.styleNonce,S.appendChild(L)}G(document,r??"",window.UserLeap.styleNonce),Re=l==="center-modal",T=a;const[m,w]=a.split("-");_t(a),u=H(),R=document.createElement("button");const y=document.createElement("div");y.className="sprig-feedback-button-label",y.innerText=d,R.appendChild(y),R.id="sprig-feedback-button",R.classList.add(`sprig-feedback-button-${w}`,`sprig-feedback-button-${m}`,`sprig-feedback-button-${s}`,"fade-in-transition"),i.eventEmitter.on(i.EVENTS.SURVEY_FADING_OUT,oe),R.addEventListener("click",async()=>{const S=document.getElementById("sprig-feedback-error-container");if(We()||je()){if(oe()){i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:i.DismissReason.FeedbackClosed,studyType:"feedbackButton"});const E=H();S&&E&&(E.remove(),j=null,f=null)}return}const L=i.getHttpHeaders(window.UserLeap);if(!ge(L)&&!ve&&Ae(),t){f&&f.classList.add("sprig-feedback-loading-container-previews"),await W(t),B();return}const k=await Rt(p);if(k)i.eventEmitter.once(i.SprigEvent.SurveyAppeared,B),W({...k,studyType:"feedbackButton"},n);else if(f){const E=Dt();f.appendChild(E),B(),f.style.height="300px",f.style.width="360px"}}),u==null||u.appendChild(R),i.eventEmitter.emit(i.SprigEvent.FeedbackButtonLoaded,{name:i.SprigEvent.FeedbackButtonLoaded,"survey.id":c});const{useMobileStyling:A,_config:{border:b}}=window.UserLeap;if(!Re&&!A){const S=document.createElement("div");S.id="sprig-feedback-loading-container",S.className=`sprig-feedback-loading-container sprig-feedback-loading-container-${w}`,S.style.setProperty("--feedback-border",b),f=S,ae(),u==null||u.appendChild(S);const L=ze();K(-L)}else K(0);window.UserLeap._config.isOnQuestionsTab&&t&&!ee()&&f&&(Ae(),ae(),f&&f.classList.add("sprig-feedback-loading-container-previews"),W(t),B())},At=()=>{if(ee())return;const e=H();if(!e)return;i.checkUrlStillMatching(j)||(e.remove(),j=null,f=null)},Dt=()=>{const e=document.createElement("div");e.id="sprig-feedback-error-container",e.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none">
|
|
9
|
+
<circle cx="20" cy="20" r="14.5" stroke="#B0B5B7" stroke-width="3"/>
|
|
10
|
+
<path d="M20 12L20 21.6" stroke="#B0B5B7" stroke-width="3" stroke-linecap="round"/>
|
|
11
|
+
<circle cx="19.9984" cy="27.6" r="1.6" fill="#B0B5B7"/>
|
|
12
|
+
</svg>`;const t=document.createElement("h3");return t.className="sprig-feedback-error-text",t.innerText="There was an error while loading the survey",e.appendChild(t),e},Ot="!launch_darkly_";class xt{constructor(){F(this,"_ldData",{})}getAllLaunchDarklyVariations(){return this._ldData}setLDFlagsVariations(t){try{return!t||typeof t!="object"||Array.isArray(t)?!1:(Object.keys(this._ldData).forEach(n=>{delete this._ldData[n]}),Object.keys(t).forEach(n=>this._ldData[`${Ot}${n}`]=(t[n]??0)+1),!0)}catch(n){return n instanceof Error&&window.UserLeap.reportError("setAllLDFlagsVariations",n),console.warn("[Sprig] An issue had occured when setting LaunchDarkly flags and variations."),!1}}}const de=new xt;Object.freeze(de);const Tt="!optimizely_experiments_";class Pt{constructor(){F(this,"_optimizelyData",{})}setOptimizelyExperiment(t,n=!0){if(!t||typeof t!="object")return!1;const{experiments:s}=t;try{return n&&Object.keys(this._optimizelyData).map(r=>{delete this._optimizelyData[r]}),s&&s.map(r=>{const{id:o,variation:a}=r,l=this.transformExperimentId(o);a&&typeof a=="string"&&(this._optimizelyData[l]=a)}),!0}catch(r){return r instanceof Error&&window.UserLeap.reportError("setOptimizelyExperiment",r),!1}}getAllOptimizelyExperiments(){return this._optimizelyData}getOptimizelyVariationName(t){return this._optimizelyData[this.transformExperimentId(t)]}transformExperimentId(t){return Tt+t}getAndSetWebOptimizelyExperiments(){var t;try{if(window&&window.optimizely&&typeof window.optimizely.get=="function"){const n=(t=window.optimizely.get("state"))==null?void 0:t.getExperimentStates({isActive:!0});if(n){const s=Object.keys(n).map(r=>{var o,a;return(o=n[r].variation)!=null&&o.name?{id:r,variation:(a=n[r].variation)==null?void 0:a.name}:{id:r,variation:"Original"}});return this.setOptimizelyExperiment({experiments:s},!1),!0}return!1}return!1}catch(n){return n instanceof Error&&window.UserLeap.reportError("getAndSetWebOptimizely",n),!1}}}const q=new Pt;Object.freeze(q);class Ct{constructor(t,n){F(this,"paused");F(this,"queue");F(this,"ul");this.ul=t,this.paused=!1,this.queue=[],this.flush(n)}flush(t){const n=t.length;if(n)for(let s=0;s<n;s++)this.push(t[s])}isPaused(){return this.paused}pause(){this.paused=!0}unpause(){this.paused=!1;const t=this.queue.slice();this.empty(),this.flush(t)}push(t){if(this.paused)this.queue.push(t);else if(t instanceof Function)t();else{const n=Array.prototype.slice.call(t,1),s=t[0],r=this.ul[s];r instanceof Function?r.apply(this.ul,n):s&&console.warn("[Sprig] (ERR-100) No valid UserLeap action called",s)}}perform(t){if(this.paused){let n=()=>{};const s=new Promise(function(r){n=function(){r(t())}});return this.queue.push(n),s}else return t()}empty(){this.queue.length=0}}let qe,Ge;const le=e=>{let t=0,n=e.firstElementChild;for(;n;)t+=le(n),n.shadowRoot&&(t+=le(n.shadowRoot)),n=n.nextElementSibling,t++;return t},Mt=()=>document.documentElement.innerHTML.length,De=()=>{qe.report(le(document.body)),Ge.report(Mt())},Ft=(e=10*1e3)=>{qe=i.registerMetric("sdk_dom_nodes_count"),Ge=i.registerMetric("sdk_page_html_characters"),De(),setInterval(De,e)},ce=(e,t)=>{const n=performance.now();document.hidden?setTimeout(()=>ce(e,t),e):setTimeout(()=>{const s=performance.now()-n;t.report(s/1e3),setTimeout(()=>ce(e,t),e)},0)},Ht=(e=1e3)=>{const t=i.registerMetric("sdk_event_queue_latency_seconds");ce(e,t)};let J,Q,Y,X,C={},Oe;const $=(e,t=1)=>{const{name:n}=e;C[n]=(C[n]||0)+t},Ke=e=>{let t=1;return e.childNodes.forEach(n=>{t+=Ke(n)}),t},xe=e=>{let t=0;return e.forEach(n=>{t+=Ke(n)}),t},Nt=e=>{switch(e.type){case"childList":$(J,xe(e.addedNodes)),$(Q,xe(e.removedNodes));return;case"attributes":$(Y);return;case"characterData":$(X);return}},Vt=e=>e.forEach(Nt),Bt=()=>{Oe=new MutationObserver(Vt),Oe.observe(document,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0})},Wt=()=>{J.report(C[J.name]||0),Q.report(C[Q.name]||0),Y.report(C[Y.name]||0),X.report(C[X.name]||0),C={}},jt=(e=1*1e3)=>{J=i.registerMetric("sdk_mutations_nodes_added"),Q=i.registerMetric("sdk_mutations_nodes_removed"),Y=i.registerMetric("sdk_mutations_attributes_changed"),X=i.registerMetric("sdk_mutations_character_data"),Bt(),setInterval(Wt,e)},zt=({webMetricsEnabled:e,reportingIntervalSeconds:t,thresholds:n,postMetrics:s})=>{i.registerThresholds(n,(r,o)=>{var a,l;if((a=i.modules.replay)!=null&&a.isReplayRecording()){const d=`Value: ${r} on ${o.metric} violated threshold of ${o.type} ${o.value}`;(l=i.modules.replay)==null||l.disableRecording("Threshold violated",new Error(d),{reportError:!1}),window.UserLeap.reportError("Sdk Performance Metric threshold violated",new Error("Sdk Performance Metric threshold violated"),{metricName:o.metric,type:o.type,value:o.value},{metricName:o.metric}),i.disableThresholdChecking()}}),i.initPerformanceReporting({reportingIntervalSeconds:t,postMetrics:s}),e&&(Ht(),Ft(),jt())},$t={test:"test"},qt=["popState","pushState","replaceState"],V="!email",pe="pageUrl";function Gt(e,t){const{pageUrlEvents:n,interactiveEvents:s,dismissOnPageChange:r}=window.UserLeap._config;if(!r)return!0;const o=[];n&&n.length&&o.push(...n),s&&s.length&&o.push(...s);const a=e&&o.find(l=>l.id===e);return a?i.checkUrlMatch(a,window.location.href):t===window.location.href}function z(e){var l;const{pageUrlEvents:t,interactiveEvents:n,dismissOnPageChange:s,platform:r}=window.UserLeap._config;if(r&&r!=="web")return;const o=P("trackStartUrl"),a=o?String(o):null;t&&Xe(window.location.href),n&&(Qe(),Kt()),Be()&&At(),i.sessionStorageHelper.getItem("sprig.isCapturingHeatmap")&&((l=i.modules.replay)==null||l.checkPendingHeatmapsUrl()),!ee()&&s&&a&&a!==window.location.href&&e&&qt.includes(e.type)&&window.UserLeap("dismissActiveSurvey",i.DismissReason.PageChange)}const Je={capture:!0},Kt=()=>{const t=window.UserLeap._config.interactiveEvents.filter(s=>i.checkUrlMatch(s,window.location.href)).map(s=>{const{name:r,properties:o}=s,{selector:a,innerText:l}=o;return a?d=>{if(_e(d.target))try{d.target.closest(a)&&window.UserLeap("track",r)}catch{}return!1}:d=>(_e(d.target)&&d.target.innerText===l&&window.UserLeap("track",r),!1)}),n=s=>t.forEach(r=>r(s));window.UserLeap._config.interactiveEventsHandler=n,window.addEventListener("click",n,Je)},Qe=()=>{window.UserLeap._config.interactiveEventsHandler&&window.removeEventListener("click",window.UserLeap._config.interactiveEventsHandler,Je),delete window.UserLeap._config.interactiveEventsHandler};function Jt(){["hashchange","popstate"].forEach(e=>window.addEventListener(e,z,!0))}function Qt(){["hashchange","popstate"].forEach(e=>window.removeEventListener(e,z,!0)),window.UserLeap._config.interactiveEvents&&Qe()}function Yt(e){const t=new URL(I("1",[x],"questions"));return Object.entries(e||{}).forEach(([n,s])=>{s&&t.searchParams.append(n,String(s))}),t.toString()}function P(e){const t=i.localStorageHelper.getItem("userleap.ids");if(t)try{const s=JSON.parse(t)[window.UserLeap.envId];return s&&s[e]||null}catch(n){n instanceof Error&&(n.stack=t,window.UserLeap.reportError("Failed to parse local storage credentials",n)),console.warn("[Sprig] (ERR-427) Failed to lookup saved ids",n)}return null}function Ye(){window.previewMode||(window.UserLeap.visitorId=i.v4(),i.info(`Generating new vid: ${window.UserLeap.visitorId}`),U("vid",window.UserLeap.visitorId),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId}))}function Xe(e,t,n,s){var g,m,w;if(e.endsWith("mock_snippet.html"))return;i.info(`Tracking page view: ${e}`);const r=window.UserLeap._config.pageUrlEvents;let o=!1;if(r&&r.length)for(let y=0;y<r.length&&(o=i.checkUrlMatch(r[y],e),!o);y++);if(!o)return;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig trackPageView",e);const a=10,l=1;let d=[];const p={viewedAt:Date.now(),location:e},c={url:e};s&&(c.trackPageView=!0);const u=i.localStorageHelper.getItem("userleap.pageviews");try{if(d=u?JSON.parse(u):[],Array.isArray(d)||(d=[]),d.length>0){const y=d[d.length-1],A=(Date.now()-y.viewedAt)/1e3;if(y.location!=e&&A>l){const b=(g=document==null?void 0:document.querySelector('meta[name="description"]'))==null?void 0:g.getAttribute("content");(m=i.modules.replay)==null||m.RecordPageView({...b&&{description:b},url:e,referrer:document.referrer,pageTitle:document.title})}(y.location!=e&&A>l||A>a)&&(window.UserLeap._queue.push(["track",pe,t,c,n]),d.push(p))}else window.UserLeap._queue.push(["track",pe,t,c,n]),d.push(p),(w=i.modules.replay)==null||w.RecordPageView({url:e});d.length>5&&d.splice(0,d.length-5),i.localStorageHelper.setItem("userleap.pageviews",JSON.stringify(d))}catch(y){y instanceof Error&&window.UserLeap.reportError("trackPageView",y,{pageViewsStorage:u}),console.warn("[Sprig] (ERR-425) Failed to update page views in local storage")}}function Xt(){const e="Backbone"in window&&window.Backbone&&window.Backbone.history?window.Backbone.history:window.history;"pushState"in e&&(e.pushState=(t=>function(...s){const r=t.apply(this,s),o=new Event("pushState");return window.dispatchEvent(o),z(o),r})(e.pushState)),"replaceState"in e&&(e.replaceState=(t=>function(...s){const r=t.apply(this,s),o=new Event("replaceState");return window.dispatchEvent(o),z(o),r})(e.replaceState)),Jt()}async function se(e,t){const n=we();e&&!t&&(window.UserLeap._config.mode=$t.test);const s=i.getHttpHeaders(window.UserLeap),r=ge(s),o=await _(Yt({desktopDisplay:window.UserLeap._config.desktopDisplay,isMobile:r,previewLanguage:window.UserLeap._config.previewLanguage,surveyid:e==null?void 0:e.surveyId,surveytemplateid:e==null?void 0:e.surveyTemplateId,vid:n}),{shouldDropOnRateLimit:!0});if(!o.ok)return o.reportError&&o.error&&(console.warn("[Sprig] (ERR-414) Failed to request questions from the server",o.error),window.UserLeap.reportError("getQuestions",o.error)),{success:!1,surveyState:"no survey"};if(o.json.delay&&await i.delay(o.json.delay),o.json.isFeedback){const{feedbackLabel:a,productConfig:l,surveyUuid:d,feedbackCustomStyles:p}=o.json,{buttonTheme:c,placement:u,desktopDisplay:g}=l,m={customStyles:p,buttonTheme:c,desktopDisplay:g,eventId:0,feedbackLabel:a,placement:u,surveyUuid:d,surveyId:e==null?void 0:e.surveyId};$e(m,o.json)}else return W(o.json)}function Zt(e){let t=e.length;for(;t;){const n=Math.floor(Math.random()*t);t-=1;const s=e[t];e[t]=e[n],e[n]=s}}function er(e){if(!e)return;window.UserLeap._config=e,e.mute&&window.UserLeap._queue.pause();const{interactiveEvents:t,pageUrlEvents:n,dismissOnPageChange:s}=e;t&&Zt(t),(t||n||s)&&(Xt(),z())}async function tr(e,t){var s,r;let n=!0;return t&&((s=e==null?void 0:e.json)!=null&&s.surveyId)&&(window.UserLeap.delayingSurvey=!0,n=await t(e.json.surveyId),window.UserLeap.delayingSurvey=!1,!n)?!1:((r=e==null?void 0:e.json)!=null&&r.delay&&(window.UserLeap.delayingSurvey=!0,await i.delay(e.json.delay),window.UserLeap.delayingSurvey=!1),n)}const rr=function(e){if(!window.UserLeap)return;const t=async(r={})=>{var S,L,D,k,E;const{userId:o,anonymousId:a,metadata:l={},properties:d,showSurveyCallback:p}=r;let{eventName:c}=r;if(window.UserLeap.debugMode&&c!==pe&&console.info("[DEBUG] Sprig track",r),e.mode==="test")return;const u=i.localStorageHelper.getItem("sprig.previewKey")??void 0;if(e.requireUserIdForTracking&&!window.UserLeap.userId&&!o){const v="[Sprig] - Skipping tracking without userId";return console.warn(v),{success:!1,message:v,surveyState:"no survey"}}if(!c||c.trim().length===0){c=c?String(c):"";const v="[Sprig] - Invalid event name "+c;return console.warn(v),{success:!1,message:v,surveyState:"no survey"}}const g=window.location.href;if(l.url||(l.url=g),U("trackStartUrl",g),(L=(S=window.UserLeap)==null?void 0:S._config)!=null&&L.optimizelyEnabled){const v=i.getHttpHeaders(window.UserLeap);fe(v)||q.getAndSetWebOptimizelyExperiments(),l.optimizelyExperiments=Object.assign({},q.getAllOptimizelyExperiments())}(k=(D=window.UserLeap)==null?void 0:D._config)!=null&&k.launchDarklyEnabled&&(l.launchDarklyFlags=de.getAllLaunchDarklyVariations()),o&&(window.UserLeap.userId=o),a&&(window.UserLeap.partnerAnonymousId=a),d&&(l.eventProperties=d),(E=i.modules.replay)==null||E.RecordEvent({name:c,url:l.url}),i.info(`Tracking event: ${c}`);const m=window.UserLeap.delayingSurvey||We()?await _(I("1",[O],"events/batch"),{body:JSON.stringify({events:[{event:c,metadata:l}],previewKey:u}),method:"POST",shouldDropOnRateLimit:!0}):await _(I("1",[O],"events"),{body:JSON.stringify({event:c,metadata:l,previewKey:u}),method:"POST",shouldDropOnRateLimit:!0});if(!m.ok){const v="[Sprig] (ERR-421) Failed to track event";return m.reportError&&(console.warn(v,m.error),m.error&&window.UserLeap.reportError("track",m.error)),{success:!1,message:v,error:m.error,surveyState:"no survey"}}o&&U("uid",o),a&&U("aid",a);const w=m.json;w.invalidPreviewKey&&i.localStorageHelper.removeItem("sprig.previewKey");const y=l.trackPageView?l.url:void 0;return!!(w!=null&&w.feedbackButton)&&$e(w.feedbackButton,void 0,y),await tr(m,p)?Gt(w.eventId,g)?W(w,y):{success:!1,message:"Study should not be displayed after page navigation",surveyState:"no survey"}:{success:!1,message:"[Sprig] Callback returned false, aborting rendering of survey",surveyState:"no survey"}},n=(r,o)=>{var l;const a=(l=r==null?void 0:r.querySelector(`[id="${me}"]`))==null?void 0:l.contentDocument;a&&G(a,o)},s={async displaySurvey(r){return console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."),window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),se({surveyId:r},!0)},_previewSurvey(r){window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),se({surveyTemplateId:r},!1)},_reviewSurvey(r){window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),se({surveyId:r},!1)},previewSurvey(r){s._previewSurvey(r)},reviewSurvey(r){s._reviewSurvey(r)},mute(){window.UserLeap._queue.pause()},unmute(){window.UserLeap._queue.unpause()},setVisitorToken(){console.warn("[Sprig] setVisitorToken is deprecated.")},dismissActiveSurvey(r=i.DismissReason.API){i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:r})},async setAttribute(r,o){if(!r||!o&&o!==0&&o!==!1){const a="[Sprig] - Disregarding empty attribute / value provided";return console.warn(a),{success:!1,message:a}}return this.setAttributes({[r]:o})},async setAttributes(r){if(r==null||Object.keys(r).length===0){const o="[Sprig] - Disregarding empty attributes provided";return console.warn(o),{success:!1,message:o}}return this.identifyAndSetAttributes({attributes:r})},async identifyAndSetAttributes(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig identifyAndSetAttributes",r),e.mode==="test")return;if(r===null||typeof r!="object"||!(r.userId||r.anonymousId||r.attributes)){const c="[Sprig] - Disregarding empty payload provided";return console.warn(c),{success:!1,message:c}}const{userId:o,anonymousId:a,attributes:l}=r;if(e.requireUserIdForTracking&&!window.UserLeap.userId&&!o){const c="[Sprig] - Skipping tracking without userId";return console.warn(c),{success:!1,message:c}}if(!l&&(!o||window.UserLeap.userId===o)&&(!a||window.UserLeap.partnerAnonymousId===a))return{success:!0};const d={};o&&(d.userId=window.UserLeap.userId=o),a&&(d.partnerAnonymousId=window.UserLeap.partnerAnonymousId=a);let p;return l?(l.email&&!Object.prototype.hasOwnProperty.call(l,V)&&(l[V]=l.email,delete l.email),i.info(`Setting attributes: ${JSON.stringify(l)}`),p=await _(I("1",[x,O],"attributes"),{body:JSON.stringify(l),method:"PUT"}),!p.ok&&p.reportError&&(console.warn("[Sprig] (ERR-432) identifyAndSetAttributes failed",p.error),p.error&&window.UserLeap.reportError("identifyAndSetAttributes",p.error))):p=await _(I("1",[x,O]),{body:JSON.stringify(d),method:"PUT"}),l&&l[V]&&(window.UserLeap.email=l[V]),p.ok&&(o&&U("uid",o),a&&U("aid",a)),{success:!!p.ok}},async removeAttributes(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig removeAttributes",r),e.mode==="test")return;if(r==null||r.length===0){const a="[Sprig] - Disregarding empty attributes provided";return console.warn(a),{success:!1,message:a}}if(e.requireUserIdForTracking&&!window.UserLeap.userId){const a="[Sprig] - Skipping tracking without userId";return console.warn(a),{success:!1,message:a}}const o=await _(I("1",[x,O],"attributes"),{body:JSON.stringify({delete:r}),method:"DELETE"});return!o.ok&&o.reportError&&(console.warn("[Sprig] (ERR-433) Remove attributes failed",o.error),o.error&&window.UserLeap.reportError("removeAttributes",o.error)),{success:!!o.ok}},async addSurveyListener(r){i.eventEmitter.on(i.SprigEvent.SurveyLifeCycle,r)},async removeSurveyListener(r){i.eventEmitter.removeListener(i.SprigEvent.SurveyLifeCycle,r)},async addListener(r,o){i.eventEmitter.on(r,o)},async removeListener(r,o){i.eventEmitter.removeListener(r,o)},async removeAllListeners(){i.eventEmitter.removeAllListeners()},setPreviewKey(r){!r||typeof r!="string"||i.localStorageHelper.isStorageAvailable&&r&&i.localStorageHelper.setItem("sprig.previewKey",r)},async setUserId(r){var l;if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setUserId",r),r==null){const d=`[Sprig] - Invalid userId ${r}`;return console.warn(d),{success:!1,message:d}}if(e.mode==="test"||r===window.UserLeap.userId)return;window.UserLeap.userId=r;const o=window.UserLeap.visitorId,a=await _(I("1",[x,O]),{body:JSON.stringify({userId:r}),method:"PUT"});if(!a.ok){a.reportError&&(console.warn("[Sprig] (ERR-420) Failed to set user id",a.error),a.error&&window.UserLeap.reportError("setUserId",a.error));return}o!==window.UserLeap.visitorId&&((l=i.modules.replay)==null||l.clearUserReplayData()),U("uid",r)},async setPartnerAnonymousId(r){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setPartnerAnonymousId",r),r==null){const o=`[Sprig] - Invalid partnerAnonymousId ${r}`;return console.warn(o),{success:!1,message:o}}return window.UserLeap.partnerAnonymousId=r,U("aid",r),{success:!0}},async track(r,o,a={},l=void 0){return t({eventName:r,properties:o,metadata:a,showSurveyCallback:l})},async identifyAndTrack(r){return await t(r)},trackPageView(r,o=void 0,a=void 0,l=!0){Xe(r,o,a,l)},applyFeedbackStyles({button:r="",view:o=""}){window.UserLeap.feedbackCustomStyles=o,document.getElementById("sprig-feedback-style")&&G(document,r,window.UserLeap.styleNonce),n(document.querySelector(".ul-container-feedback"),o)},applyStyles(r){window.UserLeap.customStyles=r,n(window.UserLeap.container,r)},setWindowDimensions(r,o){var p,c;const a=typeof r=="string"?parseInt(r,10):r,l=typeof o=="string"?parseInt(o,10):o;if(!isNaN(a)&&!isNaN(l)&&(window.UserLeap.windowDimensions={width:a,height:l}),!window.UserLeap.frameId)return;const d=document.getElementById(window.UserLeap.frameId);d&&(window.UserLeap.useMobileStyling&&((p=window.UserLeap.windowDimensions)!=null&&p.width&&(d.style.width=`${window.UserLeap.windowDimensions.width}px`),(c=window.UserLeap.windowDimensions)!=null&&c.height&&(d.style.maxHeight=`${window.UserLeap.windowDimensions.height-20}px`),d.contentDocument&&(d.style.height=String(Ve(d.contentDocument)[0])+"px")),i.eventEmitter.emit(i.SprigEvent.SurveyDimensions,{name:i.SprigEvent.SurveyDimensions,contentFrameWidth:d.clientWidth,contentFrameHeight:d.clientHeight}))},logoutUser(){var r;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig logout"),i.info(`Logging out user: ${window.UserLeap.userId} / vid: ${window.UserLeap.visitorId}`),window.UserLeap.visitorId=null,window.UserLeap.userId=null,window.UserLeap.partnerAnonymousId=null,window.UserLeap.token=null,window.UserLeap.email=null,i.localStorageHelper.removeItem("userleap.ids"),i.localStorageHelper.removeItem("userleap.pageviews"),window.UserLeap._queue.isPaused()&&window.UserLeap._queue.empty(),Ye(),(r=i.modules.replay)==null||r.clearUserReplayData(),window.UserLeap._queue.unpause()},teardown(){Qt(),window.UserLeap("dismissActiveSurvey",i.DismissReason.API),delete window.UserLeap,delete window.Sprig,delete window._Sprig},integrateOptimizely(r,o=!0){var a,l;if(!((l=(a=window.UserLeap)==null?void 0:a._config)!=null&&l.optimizelyEnabled)){console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");return}try{const d=typeof r=="string"?JSON.parse(r):r;q.setOptimizelyExperiment(d,o)}catch(d){console.warn("[Sprig] Error with integrating Optimizely data"),d instanceof Error&&window.UserLeap.reportError("integrateOptimizely",d)}},integrateOptimizelyClient(r){var a,l;if(!((l=(a=window.UserLeap)==null?void 0:a._config)!=null&&l.optimizelyEnabled)){console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");return}const o=({experiment:d,variation:p})=>{const c={experiments:[{id:d.id,variation:p.key}]};window.UserLeap("integrateOptimizely",c,!1)};r.notificationCenter.addNotificationListener("ACTIVATE:experiment, user_id,attributes, variation, event",o)},importLaunchDarklyData(r){var o,a;if(!((a=(o=window.UserLeap)==null?void 0:o._config)!=null&&a.launchDarklyEnabled)){console.warn("[SPRIG] LaunchDarkly integration is currently not enabled for your product.");return}de.setLDFlagsVariations(r)},setVisitorAttribute(r,o){return console.warn("[Sprig] setVisitorAttribute is deprecated. Please use setAttribute"),s.setAttribute(r,o)},async setEmail(r){return s.setAttribute(V,r)},async setVisitorEmail(r){return console.warn("[Sprig] setVisitorEmail is deprecated. Please use setEmail"),s.setEmail(r)},async _generateVideoUploadUrl(r){return sr(r)},_reportMetric(r,o){i.reportAndRegister(r,o)},async _completeSessionReplay({surveyId:r,responseGroupUuid:o,eventDigest:a}){var l;return i.modules.replay?(l=i.modules.replay)==null?void 0:l._completeSessionReplay({surveyId:r,responseGroupUuid:o,eventDigest:a,headers:i.getHttpHeaders(window.UserLeap)}):(window.UserLeap.reportError("_completeSessionReplay",new Error("Replay module not registered")),!1)}};Object.assign(window.UserLeap,s)};async function ir(e){const t=i.getHttpHeaders(window.UserLeap);document.addEventListener("securitypolicyviolation",i.cspViolationHandler);const n=await i.sprigFetch(I("1",[x],"config"),{headers:t});if(document.removeEventListener("securitypolicyviolation",i.cspViolationHandler),!n.ok)return n.reportError&&(console.warn("[Sprig] (ERR-422) Failed to load configuration",n.error),n.error&&window.UserLeap.reportError("applyRemoteConfig",n.error)),i.killNetworkRequests("Disabled: failed to fetch configuration"),e;const s=n.json;return s!=null&&s.disabled?(i.killNetworkRequests(`Disabled: ${s.disabled}`),{disabled:s.disabled}):Object.assign({},s,e)}const nr=e=>typeof e=="object"&&e&&"inner"in e&&!!e.inner&&typeof e.inner=="object";async function or(e,t,n={},s={}){var g,m;const r=window.__cfg&&window.__cfg.mode,o=we(),a=window.UserLeap.envId,l=window.document.documentElement,d=nr(t)?{inner:{message:(g=t.inner)==null?void 0:g.message,stack:(m=t.inner)==null?void 0:m.stack}}:{},p={mode:r,screenWidth:window.screen.width,screenHeight:window.screen.height,clientWidth:l.clientWidth,clientHeight:l.clientHeight,location:window.location.href,language:window.navigator.language,...n,...d},c={action:e,err:{message:t.message,stack:t.stack},meta:p,vid:o,envId:a,...s},u=await _(I("1",null,"errors"),{method:"POST",headers:{"x-ul-error":window.btoa(`userleap-${Date.now()}-error`)},body:JSON.stringify(c),shouldDropOnRateLimit:!0});if(!u.ok)console.warn("[Sprig] (ERR-444) Failed to report error to API",t);else{const{presignedUrl:w}=u.json;i.uploadLogfile(w)}}async function sr(e){var n;if(!e)return;const t=`${window.UserLeap._API_URL}/2/environments/integrations/upload`;try{const s=await fetch(t,{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(s.ok){const r=await s.json();return(n=r==null?void 0:r.upload)==null?void 0:n.url}else return null}catch(s){console.warn("[Sprig] Error with generating video upload url"),s instanceof Error&&window.UserLeap.reportError("generateVideoUploadUrl",s)}}function ar(e={}){const t=new URLSearchParams(window.location.search).get("sprigPreviewKey")??"";window.UserLeap.UPDATES=i.EVENTS,window.UserLeap("setPreviewKey",t);async function n(){var l;if(window.UserLeap.loaded)return;if(i.info("Loading sprig on page load"),window.UserLeap.reportError=or,window.UserLeap.loaded=!0,window.UserLeap._config=Object.assign({},e,window.UserLeap.config),window.UserLeap.delayingSurvey=!1,window.UserLeap._config&&typeof window.UserLeap._config=="object")for(const d in window.UserLeap._config)window.UserLeap[d]=window.UserLeap._config[d];if(!window.UserLeap.envId)if(window.UserLeap.appId)window.UserLeap.envId=window.UserLeap.appId;else throw new Error("Missing Environment id");window.UserLeap.debugMode&&console.info("[DEBUG] Sprig debug mode enabled");const s=window.UserLeap.sampleRate;if(s){let d=P("sampled");if(d===null&&(d=Math.random()<s,U("sampled",d)),!d)return}else P("sampled")!==null&&U("sampled",null);window.UserLeap._API_URL||(window.UserLeap._API_URL="https://api.sprig.com");const r=[...window.UserLeap._queue];window.UserLeap._queue=new Ct(window.UserLeap,[]),window.UserLeap._queue.pause();for(let d=0;d<r.length;d++)window.UserLeap._queue.push(r[d]);const o=P("token");o?(window.UserLeap.token=o,window.UserLeap.visitorId=P("vid"),window.UserLeap.userId=P("uid"),window.UserLeap.partnerAnonymousId=P("aid")):(i.localStorageHelper.removeItem("userleap.ids"),Ye());const a=await ir(e);zt({webMetricsEnabled:a.metricsReportingEnabled,reportingIntervalSeconds:a.metricsReportingEnabled||a.mobileMetricsReportingEnabled?a.metricsReportingIntervalSeconds:0,thresholds:a.metricThresholds,postMetrics:async d=>{var p;await _(I("1",[x],"metrics"),{body:d,method:"POST",headers:{"x-ul-replay-enabled":`${!!((p=i.modules.replay)!=null&&p.isReplayRecording())}`},shouldDropOnRateLimit:!0})}}),(l=i.modules.replay)==null||l.initializeReplay({viewDocument:window.document,maxReplayDurationSeconds:a.maxReplayDurationSeconds,replayNonce:window.UserLeap.replayNonce,maxInflightRequests:window.UserLeap.maxInflightReplayRequests??2,replaySettings:a.replaySettings}),i.configureLogger(a.logBufferLimit,a.logLevel),rr(a),await er(a),window.UserLeap._queue.unpause(),i.eventEmitter.emit(i.SprigEvent.SDKReady,{mobileMetricsReportingEnabled:!!a.mobileMetricsReportingEnabled,metricsReportingInterval:a.metricsReportingIntervalSeconds||0,metricsThresholds:a.metricThresholds||[],maxMobileReplayDurationSeconds:a.maxMobileReplayDurationSeconds,mobileReplaySettings:a.mobileReplaySettings}),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId})}document.readyState==="complete"?n():window.attachEvent?window.attachEvent("onload",n):window.addEventListener("load",()=>{n()},!1)}class Z{constructor(){this.UPDATES=i.EVENTS}displaySurvey(t){window.Sprig("displaySurvey",t)}mute(){window.Sprig("mute")}unmute(){window.Sprig("unmute")}dismissActiveSurvey(){window.Sprig("dismissActiveSurvey")}setAttribute(t,n){window.Sprig("setAttribute",t,n)}setAttributes(t){window.Sprig("setAttributes",t)}identifyAndSetAttributes(t){window.Sprig("identifyAndSetAttributes",t)}removeAttributes(t){window.Sprig("removeAttributes",t)}addListener(t,n){window.Sprig("addListener",t,n)}removeListener(t,n){window.Sprig("removeListener",t,n)}removeAllListeners(){window.Sprig("removeAllListeners")}setEmail(t){window.Sprig("setAttribute","!email",t)}setUserId(t){window.Sprig("setUserId",t)}setPartnerAnonymousId(t){window.Sprig("setPartnerAnonymousId",t)}track(t,n={},s={}){window.Sprig("track",t,n,s)}identifyAndTrack(t){window.Sprig("identifyAndTrack",t)}trackPageView(t,n,s){window.Sprig("trackPageView",t,n,s)}applyStyles(t){window.Sprig("applyStyles",t)}setWindowDimensions(t,n){window.Sprig("setWindowDimensions",t,n)}logoutUser(){window.Sprig("logoutUser")}teardown(){window.Sprig("teardown")}}const ue={configure:e=>{if(!e.envId&&!e.environmentId)throw new Error("Initialization Error: Sprig configure requires an environmentId");if(e.envId||(e.envId=e.environmentId??""),e.installationMethod="web-npm",window.Sprig)return window.Sprig;window.Sprig=function(){window.Sprig._queue.push(arguments)},Object.getOwnPropertyNames(Z.prototype).map(n=>{n!=="constructor"&&(window.Sprig[n]=Z.prototype[n])});const t=window.Sprig;return t.appId=e.envId,t._queue=[],window.UserLeap=t,ar(e),window.Sprig}},dr={sprig:ue,SprigAPI:Z,configure:ue.configure};exports.APP_ID=at;exports.ConflictingWidgets=Ce;exports.DEFAULT_BORDER_COLOR=dt;exports.DEFAULT_WIDTH=Te;exports.EMBED_MOBILE_MAX_WIDTH=pt;exports.ERROR_BORDER_COLOR=lt;exports.SprigAPI=Z;exports.calculateFrameDimensions=Ve;exports.core=dr;exports.overrideStyles=G;exports.resetScrollPosition=Ut;exports.sprig=ue;
|
package/dist/core.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./metricsReporter-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./metricsReporter-DwcQeyB8.cjs"),e=require("./core-pJaEAG0Z.cjs");exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;
|
package/dist/core.d.ts
CHANGED
|
@@ -2194,7 +2194,7 @@ declare const EVENTS: {
|
|
|
2194
2194
|
};
|
|
2195
2195
|
};
|
|
2196
2196
|
|
|
2197
|
-
type Metric = "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";
|
|
2197
|
+
type Metric = "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";
|
|
2198
2198
|
type ThresholdType = "max" | "min";
|
|
2199
2199
|
interface MetricThreshold {
|
|
2200
2200
|
metric: Metric;
|
|
@@ -2743,7 +2743,7 @@ declare namespace sprigConfig {
|
|
|
2743
2743
|
partnerAnonymousId: string | null;
|
|
2744
2744
|
replayLibraryURL?: string;
|
|
2745
2745
|
replayNonce?: string;
|
|
2746
|
-
reportError: (name: string, err: Error, extraInfo?: object) => void;
|
|
2746
|
+
reportError: (name: string, err: Error, extraInfo?: object, bodyInfo?: object) => void;
|
|
2747
2747
|
sampleRate?: number;
|
|
2748
2748
|
token: string | null;
|
|
2749
2749
|
upchunkLibraryURL?: string;
|
package/dist/core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as s,S as a}from"./metricsReporter-
|
|
1
|
+
import{D as s,S as a}from"./metricsReporter-ChJRb1ed.js";import{S as r,c as i,s as o}from"./core-IYeRexvz.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-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-pJaEAG0Z.cjs");require("./replay.cjs");const r=require("./metricsReporter-DwcQeyB8.cjs");exports.SprigAPI=e.SprigAPI;exports.default=e.core;exports.sprig=e.sprig;exports.DismissReason=r.DismissReason;exports.SprigEvent=r.SprigEvent;
|
package/dist/index.d.ts
CHANGED
|
@@ -2194,7 +2194,7 @@ declare const EVENTS: {
|
|
|
2194
2194
|
};
|
|
2195
2195
|
};
|
|
2196
2196
|
|
|
2197
|
-
type Metric = "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";
|
|
2197
|
+
type Metric = "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";
|
|
2198
2198
|
type ThresholdType = "max" | "min";
|
|
2199
2199
|
interface MetricThreshold {
|
|
2200
2200
|
metric: Metric;
|
|
@@ -2743,7 +2743,7 @@ declare namespace sprigConfig {
|
|
|
2743
2743
|
partnerAnonymousId: string | null;
|
|
2744
2744
|
replayLibraryURL?: string;
|
|
2745
2745
|
replayNonce?: string;
|
|
2746
|
-
reportError: (name: string, err: Error, extraInfo?: object) => void;
|
|
2746
|
+
reportError: (name: string, err: Error, extraInfo?: object, bodyInfo?: object) => void;
|
|
2747
2747
|
sampleRate?: number;
|
|
2748
2748
|
token: string | null;
|
|
2749
2749
|
upchunkLibraryURL?: string;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as s,c as a,s as i}from"./core-
|
|
1
|
+
import{S as s,c as a,s as i}from"./core-IYeRexvz.js";import"./replay.js";import{D as r,S as o}from"./metricsReporter-ChJRb1ed.js";export{r as DismissReason,s as SprigAPI,o as SprigEvent,a as default,i as sprig};
|
|
@@ -0,0 +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=e=>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.30.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
|
+
`)),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,W as d,ge as e,te 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};
|
|
@@ -0,0 +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=e=>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.30.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
|
+
`)),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,4 +1,4 @@
|
|
|
1
|
-
"use strict";var is=Object.defineProperty;var as=(t,e,n)=>e in t?is(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ie=(t,e,n)=>(as(t,typeof e!="symbol"?e+"":e,n),n);const b=require("./metricsReporter-
|
|
1
|
+
"use strict";var is=Object.defineProperty;var as=(t,e,n)=>e in t?is(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ie=(t,e,n)=>(as(t,typeof e!="symbol"?e+"":e,n),n);const b=require("./metricsReporter-DwcQeyB8.cjs");var ht=(t=>(t[t.DomContentLoaded=0]="DomContentLoaded",t[t.Load=1]="Load",t[t.FullSnapshot=2]="FullSnapshot",t[t.IncrementalSnapshot=3]="IncrementalSnapshot",t[t.Meta=4]="Meta",t[t.Custom=5]="Custom",t[t.Plugin=6]="Plugin",t))(ht||{});class os{constructor(e){Ie(this,"awaitingResolvers",[]);Ie(this,"activeCount",0);this.capacity=e}async acquire(){if(this.activeCount<this.capacity){this.activeCount++;return}return new Promise(e=>{this.awaitingResolvers.push(e)})}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}const er=new os(2),ls=t=>er.setLimit(t),cs=async t=>er.execute(async()=>{var r;b.info(`Beginning upload of chunk ${t.chunkIndex} for survey: ${t.surveyId}`);const e=await b.sprigFetch(t.uploadUrl,{body:t.data,method:"PUT"});b.info(`Completed upload of chunk ${t.chunkIndex} for survey: ${t.surveyId}`);const n=(r=e.headers)==null?void 0:r.get("ETag");if(!n)throw new Error(`Upload response did not include etag for upload ${t.uploadId}, part ${t.chunkIndex}`);return n}),tr=async({apiUrl:t,surveyId:e,uploadId:n,etags:r,headers:s,responseGroupUuid:i,replayDuration:a,eventDigest:o},l=!1)=>{var c;if(!l&&!n&&!r){b.info(`Cannot mark upload complete: isMobile: ${l} / uploadId: ${n} / etags: ${r}`);return}b.info(`Marking upload complete for survey: ${e}`);const d=await b.sprigFetch(`${t}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:i,surveyId:e,replayDuration:a,eventDigest:o,userAgent:(c=window==null?void 0:window.navigator)==null?void 0:c.userAgent}),headers:s,shouldRetryRequest:!0});return b.info(`Done marking upload complete for survey: ${e}`),d},O=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,j=Object.keys,F=Array.isArray;function V(t,e){return typeof e!="object"||j(e).forEach(function(n){t[n]=e[n]}),t}typeof Promise>"u"||O.Promise||(O.Promise=Promise);const Ye=Object.getPrototypeOf,us={}.hasOwnProperty;function W(t,e){return us.call(t,e)}function Be(t,e){typeof e=="function"&&(e=e(Ye(t))),(typeof Reflect>"u"?j:Reflect.ownKeys)(e).forEach(n=>{re(t,n,e[n])})}const nr=Object.defineProperty;function re(t,e,n,r){nr(t,e,V(n&&W(n,"get")&&typeof n.get=="function"?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function Re(t){return{from:function(e){return t.prototype=Object.create(e.prototype),re(t.prototype,"constructor",t),{extend:Be.bind(null,t.prototype)}}}}const ds=Object.getOwnPropertyDescriptor;function wn(t,e){let n;return ds(t,e)||(n=Ye(t))&&wn(n,e)}const hs=[].slice;function kt(t,e,n){return hs.call(t,e,n)}function rr(t,e){return e(t)}function Le(t){if(!t)throw new Error("Assertion Failed")}function sr(t){O.setImmediate?setImmediate(t):setTimeout(t,0)}function ir(t,e){return t.reduce((n,r,s)=>{var i=e(r,s);return i&&(n[i[0]]=i[1]),n},{})}function se(t,e){if(typeof e=="string"&&W(t,e))return t[e];if(!e)return t;if(typeof e!="string"){for(var n=[],r=0,s=e.length;r<s;++r){var i=se(t,e[r]);n.push(i)}return n}var a=e.indexOf(".");if(a!==-1){var o=t[e.substr(0,a)];return o==null?void 0:se(o,e.substr(a+1))}}function Y(t,e,n){if(t&&e!==void 0&&(!("isFrozen"in Object)||!Object.isFrozen(t)))if(typeof e!="string"&&"length"in e){Le(typeof n!="string"&&"length"in n);for(var r=0,s=e.length;r<s;++r)Y(t,e[r],n[r])}else{var i=e.indexOf(".");if(i!==-1){var a=e.substr(0,i),o=e.substr(i+1);if(o==="")n===void 0?F(t)&&!isNaN(parseInt(a))?t.splice(a,1):delete t[a]:t[a]=n;else{var l=t[a];l&&W(t,a)||(l=t[a]={}),Y(l,o,n)}}else n===void 0?F(t)&&!isNaN(parseInt(e))?t.splice(e,1):delete t[e]:t[e]=n}}function ar(t){var e={};for(var n in t)W(t,n)&&(e[n]=t[n]);return e}const fs=[].concat;function or(t){return fs.apply([],t)}const lr="BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(or([8,16,32,64].map(t=>["Int","Uint","Float"].map(e=>e+t+"Array")))).filter(t=>O[t]),ps=lr.map(t=>O[t]);ir(lr,t=>[t,!0]);let le=null;function nt(t){le=typeof WeakMap<"u"&&new WeakMap;const e=qt(t);return le=null,e}function qt(t){if(!t||typeof t!="object")return t;let e=le&&le.get(t);if(e)return e;if(F(t)){e=[],le&&le.set(t,e);for(var n=0,r=t.length;n<r;++n)e.push(qt(t[n]))}else if(ps.indexOf(t.constructor)>=0)e=t;else{const i=Ye(t);for(var s in e=i===Object.prototype?{}:Object.create(i),le&&le.set(t,e),t)W(t,s)&&(e[s]=qt(t[s]))}return e}const{toString:ms}={};function Ht(t){return ms.call(t).slice(8,-1)}const Vt=typeof Symbol<"u"?Symbol.iterator:"@@iterator",ys=typeof Vt=="symbol"?function(t){var e;return t!=null&&(e=t[Vt])&&e.apply(t)}:function(){return null},De={};function te(t){var e,n,r,s;if(arguments.length===1){if(F(t))return t.slice();if(this===De&&typeof t=="string")return[t];if(s=ys(t)){for(n=[];!(r=s.next()).done;)n.push(r.value);return n}if(t==null)return[t];if(typeof(e=t.length)=="number"){for(n=new Array(e);e--;)n[e]=t[e];return n}return[t]}for(e=arguments.length,n=new Array(e);e--;)n[e]=arguments[e];return n}const _n=typeof Symbol<"u"?t=>t[Symbol.toStringTag]==="AsyncFunction":()=>!1;var X=typeof location<"u"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function cr(t,e){X=t,ur=e}var ur=()=>!0;const gs=!new Error("").stack;function xe(){if(gs)try{throw xe.arguments,new Error}catch(t){return t}return new Error}function zt(t,e){var n=t.stack;return n?(e=e||0,n.indexOf(t.name)===0&&(e+=(t.name+t.message).split(`
|
|
2
2
|
`).length),n.split(`
|
|
3
3
|
`).slice(e).filter(ur).map(r=>`
|
|
4
4
|
`+r).join("")):""}var dr=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],kn=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"].concat(dr),vs={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function Oe(t,e){this._e=xe(),this.name=t,this.message=e}function hr(t,e){return t+". Errors: "+Object.keys(e).map(n=>e[n].toString()).filter((n,r,s)=>s.indexOf(n)===r).join(`
|
package/dist/replay.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ms=Object.defineProperty,ys=(t,e,n)=>e in t?ms(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Fe=(t,e,n)=>(ys(t,typeof e!="symbol"?e+"":e,n),n);import{i as P,s as Fn,P as Un,r as qn,a as H,v as Ue,c as gs,e as Ln,d as ot,w as Hn,b as vs,f as lt,S as Mt,g as bs}from"./metricsReporter-
|
|
1
|
+
var ms=Object.defineProperty,ys=(t,e,n)=>e in t?ms(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Fe=(t,e,n)=>(ys(t,typeof e!="symbol"?e+"":e,n),n);import{i as P,s as Fn,P as Un,r as qn,a as H,v as Ue,c as gs,e as Ln,d as ot,w as Hn,b as vs,f as lt,S as Mt,g as bs}from"./metricsReporter-ChJRb1ed.js";var ut=(t=>(t[t.DomContentLoaded=0]="DomContentLoaded",t[t.Load=1]="Load",t[t.FullSnapshot=2]="FullSnapshot",t[t.IncrementalSnapshot=3]="IncrementalSnapshot",t[t.Meta=4]="Meta",t[t.Custom=5]="Custom",t[t.Plugin=6]="Plugin",t))(ut||{});class ws{constructor(e){Fe(this,"awaitingResolvers",[]),Fe(this,"activeCount",0),this.capacity=e}async acquire(){if(this.activeCount<this.capacity){this.activeCount++;return}return new Promise(e=>{this.awaitingResolvers.push(e)})}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}const Wn=new ws(2),_s=t=>Wn.setLimit(t),ks=async t=>Wn.execute(async()=>{var e;P(`Beginning upload of chunk ${t.chunkIndex} for survey: ${t.surveyId}`);const n=await Fn(t.uploadUrl,{body:t.data,method:"PUT"});P(`Completed upload of chunk ${t.chunkIndex} for survey: ${t.surveyId}`);const r=(e=n.headers)==null?void 0:e.get("ETag");if(!r)throw new Error(`Upload response did not include etag for upload ${t.uploadId}, part ${t.chunkIndex}`);return r}),Vn=async({apiUrl:t,surveyId:e,uploadId:n,etags:r,headers:s,responseGroupUuid:a,replayDuration:i,eventDigest:o},l=!1)=>{var u;if(!l&&!n&&!r){P(`Cannot mark upload complete: isMobile: ${l} / uploadId: ${n} / etags: ${r}`);return}P(`Marking upload complete for survey: ${e}`);const d=await Fn(`${t}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:r,uploadId:n,responseGroupUuid:a,surveyId:e,replayDuration:i,eventDigest:o,userAgent:(u=window?.navigator)==null?void 0:u.userAgent}),headers:s,shouldRetryRequest:!0});return P(`Done marking upload complete for survey: ${e}`),d},K=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,B=Object.keys,F=Array.isArray;function W(t,e){return typeof e!="object"||B(e).forEach(function(n){t[n]=e[n]}),t}typeof Promise>"u"||K.Promise||(K.Promise=Promise);const qe=Object.getPrototypeOf,xs={}.hasOwnProperty;function z(t,e){return xs.call(t,e)}function Ae(t,e){typeof e=="function"&&(e=e(qe(t))),(typeof Reflect>"u"?B:Reflect.ownKeys)(e).forEach(n=>{ee(t,n,e[n])})}const Gn=Object.defineProperty;function ee(t,e,n,r){Gn(t,e,W(n&&z(n,"get")&&typeof n.get=="function"?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function De(t){return{from:function(e){return t.prototype=Object.create(e.prototype),ee(t.prototype,"constructor",t),{extend:Ae.bind(null,t.prototype)}}}}const Es=Object.getOwnPropertyDescriptor;function Ft(t,e){let n;return Es(t,e)||(n=qe(t))&&Ft(n,e)}const Ss=[].slice;function ct(t,e,n){return Ss.call(t,e,n)}function zn(t,e){return e(t)}function Le(t){if(!t)throw new Error("Assertion Failed")}function Yn(t){K.setImmediate?setImmediate(t):setTimeout(t,0)}function Jn(t,e){return t.reduce((n,r,s)=>{var a=e(r,s);return a&&(n[a[0]]=a[1]),n},{})}function te(t,e){if(typeof e=="string"&&z(t,e))return t[e];if(!e)return t;if(typeof e!="string"){for(var n=[],r=0,s=e.length;r<s;++r){var a=te(t,e[r]);n.push(a)}return n}var i=e.indexOf(".");if(i!==-1){var o=t[e.substr(0,i)];return o==null?void 0:te(o,e.substr(i+1))}}function J(t,e,n){if(t&&e!==void 0&&(!("isFrozen"in Object)||!Object.isFrozen(t)))if(typeof e!="string"&&"length"in e){Le(typeof n!="string"&&"length"in n);for(var r=0,s=e.length;r<s;++r)J(t,e[r],n[r])}else{var a=e.indexOf(".");if(a!==-1){var i=e.substr(0,a),o=e.substr(a+1);if(o==="")n===void 0?F(t)&&!isNaN(parseInt(i))?t.splice(i,1):delete t[i]:t[i]=n;else{var l=t[i];l&&z(t,i)||(l=t[i]={}),J(l,o,n)}}else n===void 0?F(t)&&!isNaN(parseInt(e))?t.splice(e,1):delete t[e]:t[e]=n}}function Qn(t){var e={};for(var n in t)z(t,n)&&(e[n]=t[n]);return e}const Is=[].concat;function Xn(t){return Is.apply([],t)}const Zn="BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(Xn([8,16,32,64].map(t=>["Int","Uint","Float"].map(e=>e+t+"Array")))).filter(t=>K[t]),Ps=Zn.map(t=>K[t]);Jn(Zn,t=>[t,!0]);let le=null;function He(t){le=typeof WeakMap<"u"&&new WeakMap;const e=Ut(t);return le=null,e}function Ut(t){if(!t||typeof t!="object")return t;let e=le&&le.get(t);if(e)return e;if(F(t)){e=[],le&&le.set(t,e);for(var n=0,r=t.length;n<r;++n)e.push(Ut(t[n]))}else if(Ps.indexOf(t.constructor)>=0)e=t;else{const a=qe(t);for(var s in e=a===Object.prototype?{}:Object.create(a),le&&le.set(t,e),t)z(t,s)&&(e[s]=Ut(t[s]))}return e}const{toString:Cs}={};function qt(t){return Cs.call(t).slice(8,-1)}const Lt=typeof Symbol<"u"?Symbol.iterator:"@@iterator",As=typeof Lt=="symbol"?function(t){var e;return t!=null&&(e=t[Lt])&&e.apply(t)}:function(){return null},Te={};function ne(t){var e,n,r,s;if(arguments.length===1){if(F(t))return t.slice();if(this===Te&&typeof t=="string")return[t];if(s=As(t)){for(n=[];!(r=s.next()).done;)n.push(r.value);return n}if(t==null)return[t];if(typeof(e=t.length)=="number"){for(n=new Array(e);e--;)n[e]=t[e];return n}return[t]}for(e=arguments.length,n=new Array(e);e--;)n[e]=arguments[e];return n}const Ht=typeof Symbol<"u"?t=>t[Symbol.toStringTag]==="AsyncFunction":()=>!1;var X=typeof location<"u"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function er(t,e){X=t,tr=e}var tr=()=>!0;const Ds=!new Error("").stack;function ge(){if(Ds)try{throw ge.arguments,new Error}catch(t){return t}return new Error}function Wt(t,e){var n=t.stack;return n?(e=e||0,n.indexOf(t.name)===0&&(e+=(t.name+t.message).split(`
|
|
2
2
|
`).length),n.split(`
|
|
3
3
|
`).slice(e).filter(tr).map(r=>`
|
|
4
4
|
`+r).join("")):""}var nr=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],Vt=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"].concat(nr),Ts={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function Oe(t,e){this._e=ge(),this.name=t,this.message=e}function rr(t,e){return t+". Errors: "+Object.keys(e).map(n=>e[n].toString()).filter((n,r,s)=>s.indexOf(n)===r).join(`
|