@sprig-technologies/sprig-browser 2.33.3 → 2.34.2

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.
@@ -0,0 +1,12 @@
1
+ "use strict";var ct=Object.defineProperty;var ut=(r,t,o)=>t in r?ct(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o;var M=(r,t,o)=>ut(r,typeof t!="symbol"?t+"":t,o);const i=require("./metricsReporter-Dy3EDEs8.cjs"),Ce=()=>{try{return window.parent.Intercom}catch{return null}},He=[Object.freeze(Object.defineProperty({__proto__:null,disable:()=>{const r=Ce();r&&(r.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),r.ul_wasVisible&&r("update",{hide_default_launcher:!0}))},enable:()=>{const r=Ce();r&&(r.ul_wasVisible&&r("update",{hide_default_launcher:!1}),delete r.ul_wasVisible)}},Symbol.toStringTag,{value:"Module"}))];class We{static disable(){He.forEach(t=>t.disable())}static enable(){He.forEach(t=>t.enable())}}const Te="ul-view-sdk-script",wt=["ios","android"],P="visitors",C="environments";async function x(r,t){var n,s,d;const{shouldDropOnRateLimit:o,...a}=t;a.headers=Object.assign(i.getHttpHeaders(window.UserLeap),a.headers);const e=await i.sprigFetch(r,{...a,shouldDropOnRateLimit:o});if(e.ok){const p=(n=e.headers)==null?void 0:n.get("Authorization"),u=p?p.split(" "):void 0,l=u&&u.length===2?u[1]:void 0,c=(s=e.headers)==null?void 0:s.get("x-ul-visitor-id");if(window.UserLeap.userId&&c===window.UserLeap.visitorId){const g=i.localStorageHelper.getItemObject("sprig.anon.env.vid.map");g&&g[window.UserLeap.envId]===c&&(delete g[window.UserLeap.envId],i.localStorageHelper.setItemObject("sprig.anon.env.vid.map",g))}l&&c&&(c!==window.UserLeap.visitorId||window.UserLeap.token!==l)&&(k("token",l),k("vid",c),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:c}),window.UserLeap.token=l,window.UserLeap.visitorId=c)}return(d=e.json)!=null&&d.logMessage&&console.warn(`[Sprig] ${e.json.logMessage}`),e}function k(r,t){const o=i.localStorageHelper.getItemObject("userleap.ids");let a=o[window.UserLeap.envId];a?a[r]=t:a={[r]:t},o[window.UserLeap.envId]=a,i.localStorageHelper.setItemObject("userleap.ids",o)}function Le(){return window.previewMode?"0":window.UserLeap.visitorId??""}function _(r,t,o){const a=[window.UserLeap._API_URL,"sdk",r];return t&&t.forEach(e=>{a.push(e),e===C?a.push(window.UserLeap.envId):e===P&&a.push(Le())}),o&&a.push(o),a.join("/")}const z=async(r,t,o)=>{var xe,Ae,Oe;const{context:a,delay:e,forceBrandedLogo:n,endCard:s,isFeedback:d=!1,heatmap:p,locale:u,previewMode:l,productConfig:c,questions:g,responseGroupUid:m,surveyId:w,uuid:E,vid:y,sessionReplay:v,studyType:S}=r,h=i.getHttpHeaders(window.UserLeap),I=J(h),O=ae(h);if(v)if(I)i.eventEmitter.emit(i.SprigEvent.ReplayCapture,{responseGroupUid:m,hasQuestions:!!(g!=null&&g.length),surveyId:w,uploadId:v.uploadId,replayType:v.replayDurationType??"before",seconds:v.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:i.v4(),mediaType:"screen",questionId:1,responseGroupUid:m,surveyId:w,updatedAt:new Date().toISOString(),visitorId:window.UserLeap.visitorId,isReplay:!0}});else{if(!i.modules.replay)return window.UserLeap.reportError("displayQuestions",new Error("Replay module not registered")),{success:!1,message:"Replay module not registered",surveyState:"no survey"};i.modules.replay.scheduleOrCaptureReplay({responseGroupId:m,surveyId:w,visitorId:y,replayParams:v,completeUploadHeaders:h,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:g.length===0})}if(p){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:L,replayParams:N,responseGroupUid:pe,surveyId:ce}=p;await i.modules.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0,apiUrl:window.UserLeap._API_URL,replaySettings:o}),i.modules.replay.tryReplayAction(()=>{var Pe;return(Pe=i.modules.replay)==null?void 0:Pe.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:h,eventId:L,isHeatmap:!0,replayParams:N,responseGroupId:pe,surveyId:ce,triggerTimestamp:Date.now(),visitorId:y})},"Error in scheduling/capturing replay")}if(y==null||!(g!=null&&g.length))return i.breadcrumbsLogger.info("CannotDisplaySurvey",{vid:y}),{success:!1,message:"[Sprig] no survey found",surveyState:"no survey"};if(window.UserLeap.container){i.breadcrumbsLogger.info("AlreadyDisplayingSurvey");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(y!==window.UserLeap.visitorId&&E!==window.UserLeap.visitorId&&!window.previewMode){const L="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(L)),{success:!1,message:L,surveyState:"no survey"}}i.breadcrumbsLogger.info("ShowingSurvey",{surveyId:w}),(xe=i.modules.replay)==null||xe.RecordSurveyShown({id:w,userAgent:window.navigator.userAgent}),We.disable(),i.eventEmitter.emit(i.SprigEvent.SurveyWillPresent,{name:i.SprigEvent.SurveyWillPresent,"survey.id":w});let b,R,U,H,T=document.createElement("div");const ke=L=>{const{"view.version":N}=L;N!==h["x-ul-sdk-version"]&&$e(),i.eventEmitter.removeListener("verify.view.version",ke)};i.eventEmitter.on("verify.view.version",ke),window.UserLeap.useMobileStyling=O,i.shouldDirectEmbed(h)?(b="ul-direct-embeded-frame",R=document.head,U=window,H=!1,(()=>{const L=i.getHttpHeaders(window.UserLeap),N=J(L),pe=window.UserLeap.forceDirectEmbed,ce=L["userleap-platform"]==="web";return N||pe&&ce})()&&(ze(w,d),T.id=b,window.UserLeap.container.appendChild(T),Ge(),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":w}))):{frameId:b,contentWinDocHead:R,contentWindow:U,hasOverlay:H,iframe:T}=mt({productConfig:c,useMobileStyling:O,surveyId:w,isFeedback:d}),window.UserLeap.frameId=b;const F={apiURL:window.UserLeap._API_URL,cards:g,configureExitOnOverlayClick:L=>{i.eventEmitter.once(i.SprigEvent.CloseSurveyOnOverlayClick,L)},context:a,endCard:s,envId:window.UserLeap.envId,eventEmitFn:i.eventEmitter.emit.bind(i.eventEmitter),fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:n,frame:T,headers:h,locale:u,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:i.localStorageHelper.getItem("sprig.previewKey"),previewMode:l,productConfig:{framePosition:c==null?void 0:c.framePosition,desktopDisplay:c==null?void 0:c.desktopDisplay,placement:c==null?void 0:c.placement},responseGroupUid:m,startingQuestionIdx:(Ae=window.UserLeap.config)==null?void 0:Ae.startingQuestionIdx,studyType:S,styleNonce:window.UserLeap.styleNonce,surveyId:w,tabTitle:document.title,trackPageViewUrl:t,ulEvents:i.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:O,userId:E,viewDocument:U==null?void 0:U.document,viewWindow:U,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},...window.UserLeap._config};(Oe=window.UserLeap._config)!=null&&Oe.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const pt=(d?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??c.customStyles;F.customStyles=pt,U&&(U.__cfg=F);const de=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:F.path,Re=document.getElementById(Te);Re&&Re.remove();const le=function(){const L=document.createElement("script");return window.UserLeap.nonce&&L.setAttribute("nonce",window.UserLeap.nonce),L.id=Te,L}(),_e=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(F.installationMethod==="web-npm"||F.installationMethod==="web-npm-bundled"){const{default:L}=await Promise.resolve().then(()=>require("./view-DJLfkjCB.cjs"));L.configure(F),H&&window.UserLeap.container&&_e()}else de&&(le.src=de,H&&le.addEventListener("load",()=>{window.UserLeap.container&&_e()}),U==null||U.addEventListener("error",L=>{L.target instanceof HTMLScriptElement&&L.target.src===de&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));R==null||R.appendChild(le);const De={success:!0,surveyState:"ready",surveyId:w,responseGroupUid:m};return window.UserLeap.isMobileSDK&&e&&(De.delay=e),De};function ae(r){var o;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const t=((o=window.UserLeap.windowDimensions)==null?void 0:o.width)??document.body.clientWidth;return J(r)||t>10&&t<500}function J(r){return wt.includes(r["userleap-platform"])}const Ue="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 ue="0px",ze=(r,t,o)=>{window.UserLeap.container=document.createElement("div"),window.UserLeap.container.className="ul-container"+(t?" ul-container-feedback":""),r&&(window.UserLeap.container.dataset.studyId=r.toString());const a=Qe();o&&a&&!window.UserLeap.useMobileStyling?a.appendChild(window.UserLeap.container):document.body.appendChild(window.UserLeap.container)},$e=(r,t)=>{var a;vt();const o=window.UserLeap.container;if(o)try{(a=o.parentNode)==null||a.removeChild(o),window.UserLeap.container=null,k("trackStartUrl",null),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"dismissed"}),i.eventEmitter.emit(i.SprigEvent.SurveyClosed,{name:i.SprigEvent.SurveyClosed,initiator:r,"survey.id":parseInt(o.dataset.studyId),...t&&{studyType:t}})}catch(e){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${r} `+o),e instanceof Error&&window.UserLeap.reportError("dismissActiveSurvey",e)}},Ge=()=>{i.eventEmitter.once(i.SprigEvent.SurveyWillClose,({initiator:r,studyType:t})=>{i.eventEmitter.removeAllListeners(i.SprigEvent.CloseSurveyOnOverlayClick),$e(r,t)})},gt=(r,t,o,a)=>{var l,c;const e={position:"fixed",bottom:"0px",right:ue,border:0,backgroundColor:"rgba(0,0,0,0)",zIndex:2147483646,transition:"height 0.2s ease-in-out",maxWidth:"100%"},n=Object.assign({},t,window.UserLeap),{desktopDisplay:s}=t||{},d=s==="center-modal";let p;d&&(n.framePosition="center");let u=!1;if(o)(l=window.UserLeap.windowDimensions)!=null&&l.width?e.width=`${window.UserLeap.windowDimensions.width}px`:e.width="100%",(c=window.UserLeap.windowDimensions)!=null&&c.height?e.maxHeight=window.UserLeap.windowDimensions.height-20+"px":window.UserLeap.maxHeight?e.maxHeight=window.UserLeap.maxHeight:e.maxHeight=document.body.clientHeight-20+"px",["light","dark"].includes(n.overlayStyleMobile)&&(u=!0);else{e.width="360px",e.maxHeight=window.UserLeap.maxHeight||"66vh";const g=()=>{u=!0,p={margin:"auto",position:"static"}};if(a)d?g():p={position:"relative",height:"300px"};else switch(n.framePosition){case"bottomLeft":p={left:ue};break;case"topLeft":p={left:ue,top:0};break;case"topRight":p={top:0};break;case"center":g()}}return u&&((g,m)=>{const w={position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646},E=m?g.overlayStyleMobile:g.overlayStyle;w["background-color"]=E==="light"?"rgba(255,255,255, 0.95)":"rgba(0,0,0,0.9)",m||(w.margin="auto"),window.UserLeap.container&&Object.assign(window.UserLeap.container.style,w)})(n,o),Object.assign(r.style,e,p),u},mt=({productConfig:r,useMobileStyling:t,surveyId:o,isFeedback:a})=>{var g,m;const e=Ue,n=a&&r.desktopDisplay==="slider";ze(o,a,n),yt();const s=document.createElement("iframe");s.id=e,s.setAttribute("title","Sprig User Feedback Dialog");const d=gt(s,r,t,a);Ge();let p=!1;s.setHeight=w=>{parseInt(s.style.height)==w&&p||(p=!0,s.style.height=`${w}px`,i.eventEmitter.emit(i.SprigEvent.SurveyHeight,{name:i.SprigEvent.SurveyHeight,contentFrameHeight:w,"survey.id":o}))};let u=!1;s.setWidth=w=>{parseInt(s.style.width)==w&&u||(u=!0,s.style.width=`${w}px`,i.eventEmitter.emit(i.SprigEvent.SurveyWidth,{name:i.SprigEvent.SurveyWidth,contentFrameWidth:w,"survey.id":o}))},(g=window.UserLeap.container)==null||g.appendChild(s),r&&(t?r.exitOnOverlayClickMobile:r.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":o});const l=(m=s.contentWindow)==null?void 0:m.document;if(l&&(l.open("text/html","replace"),l.write("<!doctype html><head></head><body></body></html>"),l.close(),!t)){const w=l.body;w.style.display="flex",w.style.alignItems="center"}const c=l==null?void 0:l.head;return{frameId:e,contentWinDocHead:c,contentWindow:s.contentWindow,hasOverlay:d,iframe:s}},Ke={[i.SprigEvent.SurveyFadingOut]:()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},yt=()=>{Object.entries(Ke).forEach(([r,t])=>{i.eventEmitter.on(r,t)})},vt=()=>{Object.entries(Ke).forEach(([r,t])=>{i.eventEmitter.off(r,t)})},D=r=>!!r&&r.nodeType===Node.ELEMENT_NODE,Me=r=>r instanceof HTMLElement||r instanceof SVGElement,Q=({document:r,elementId:t,styleString:o,nonce:a})=>{const e=r.getElementById(t);if(e)return void(e.textContent=o);const n=r.createElement("style");a&&(n.nonce=a),n.textContent=o,n.id=t,r.head.appendChild(n)},ft=(r,t)=>{const o=t.querySelector(".sprig-question-body");if(!D(o))return r;const a=o.scrollHeight;return a<100?r:r-(a-100)},qe=(r,t)=>{const o=t.querySelector(r);if(!D(o))return 0;const a=getComputedStyle(o);return parseFloat(a.paddingLeft)+parseFloat(a.paddingRight)+(parseFloat(a.marginLeft)+parseFloat(a.marginRight))+(parseFloat(a.borderLeftWidth)+parseFloat(a.borderRightWidth))},Je=(r,t,o)=>{const a=r.querySelector(".ul-card__container"),e=r.querySelector(".ul-app");let n=600,s=360,d=0;if(D(a)&&D(e)){const p=a.querySelector(".ul-card--matrix_grid"),u=!p&&t&&o;try{u&&(e.style.width="360px"),n=a.clientHeight,n+=(g=>{const m=g.querySelector(".sprig-question-body"),w=g.querySelector(".ul-card"),E=g.querySelector(".ul-card-main-content"),y=g.querySelector(".ul-footer"),v=g.querySelector(".sprig-container");let S=0;return D(w)&&(S+=w.scrollHeight-w.clientHeight),D(E)&&(S+=E.scrollHeight-E.clientHeight),D(m)&&(S+=m.scrollHeight-m.clientHeight),D(y)&&D(v)&&v.clientHeight===0&&(S+=y.clientHeight),S})(r);const l=getComputedStyle(a);d=n;const c=parseFloat(l.marginTop)+parseFloat(l.marginBottom);n+=c+(parseFloat(l.borderTopWidth)+parseFloat(l.borderBottomWidth)),p&&(s=p.scrollWidth,s+=qe(".ul-card__container",r),s+=qe(".sprig-question-body",r))}finally{u&&e.style.removeProperty("width")}}return[n+1,s,ft(d,r)]},Qe=()=>f,V=()=>document.getElementById("sprig-feedback-container"),ye=()=>document.getElementById("sprig-feedback-loading-animation"),Ye=()=>!!document.getElementById(Ue);let je=!1,f=null,A=null,Ee=!1,$=null,q=null;const ht=["bottom-left","bottom-right","center-left","center-right"],Z=()=>{var t;const r=window.UserLeap.container;return((t=r==null?void 0:r.parentElement)==null?void 0:t.id)==="sprig-feedback-loading-container"},Xe=()=>document.getElementById("sprig-feedback-error-container"),Ze=()=>{if(!f)return 0;const r=f==null?void 0:f.clientWidth,t=window.getComputedStyle(f);return r+parseInt(t.borderRightWidth||"0")+parseInt(t.borderLeftWidth||"0")},ee=r=>{const t=V();t&&(q!=null&&q.endsWith("right")?t.style.right=`${r}px`:q!=null&&q.endsWith("left")&&(t.style.left=`${r}px`))},we=()=>{if(f&&(Z()||Xe())){i.eventEmitter.off(i.SprigEvent.SurveyAppeared,W),ve();const r=Ze();return ee(-r),!0}return!1},W=()=>{if(!f||!A)return;const r=ye();r&&r.remove(),f.style.height="auto",f.style.width="auto",A.disabled=!1,Ee=!1},ve=()=>{if(f&&!ye()){const r=(()=>{if(ye())return;const t=document.createElement("div");return t.className="ul-loading-spinner-container",t.id="sprig-feedback-loading-animation",t.role="progressbar",t.setAttribute("aria-live","polite"),t.setAttribute("aria-busy","true"),t.setAttribute("aria-label","Processing..."),t.innerHTML=`
2
+ <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
+ `,t})();r&&(f.style.height="300px",f.style.width="360px",f.appendChild(r))}},Fe=()=>{f&&A&&(ee(0),A.disabled=!0,Ee=!0)},et=async(r,t,o)=>{const{buttonTheme:a,customStyles:e,eventId:n,placement:s,desktopDisplay:d,feedbackLabel:p,surveyUuid:u,surveyId:l}=r;window.UserLeap.feedbackCustomStyles=void 0;let c=V();if(c){if(!t&&n===$)return;c.remove(),i.eventEmitter.off(i.EVENTS.SURVEY_FADING_OUT,we)}$=n,Q({document,elementId:"sprig-feedback-style",styleString:'.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}',nonce:window.UserLeap.styleNonce}),Q({document,elementId:"ul-custom-style",styleString:e??"",nonce:window.UserLeap.styleNonce}),je=d==="center-modal",q=s;const[g,m]=s.split("-");(v=>{if(V()||!ht.includes(v))return;const[S,h]=v.split("-"),I=document.createElement("div");I.id="sprig-feedback-container",I.classList.add(`sprig-feedback-container-${h}`,`sprig-feedback-container-${S}`),document.body.appendChild(I)})(s),c=V(),A=document.createElement("button");const w=document.createElement("div");w.className="sprig-feedback-button-label",w.innerText=p,A.appendChild(w),A.id="sprig-feedback-button",A.classList.add(`sprig-feedback-button-${m}`,`sprig-feedback-button-${g}`,`sprig-feedback-button-${a}`,"fade-in-transition"),i.eventEmitter.on(i.EVENTS.SURVEY_FADING_OUT,we),A.addEventListener("click",async()=>{const v=document.getElementById("sprig-feedback-error-container");if(Ye()||Xe()){if(we()){i.eventEmitter.emit(i.SprigEvent.SurveyCloseRequested,{name:i.SprigEvent.SurveyCloseRequested,initiator:i.DismissReason.FeedbackClosed,studyType:"feedbackButton","survey.id":l}),i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:i.DismissReason.FeedbackClosed,studyType:"feedbackButton","survey.id":l});const h=V();v&&h&&(h.remove(),$=null,f=null)}return}if(ae(i.getHttpHeaders(window.UserLeap))||Ee||Fe(),t)return f&&f.classList.add("sprig-feedback-loading-container-previews"),await z(t),void W();const S=await(async h=>{const I=await x(_("1",[P],"startFeedbackStudy"),{body:JSON.stringify({surveyUuid:h}),method:"POST"});return I.ok?I.json:null})(u);if(S)i.eventEmitter.once(i.SprigEvent.SurveyAppeared,W),z({...S,studyType:"feedbackButton"},o);else if(f){const h=St();f.appendChild(h),W(),f.style.height="300px",f.style.width="360px"}}),c==null||c.appendChild(A),i.eventEmitter.emit(i.SprigEvent.FeedbackButtonLoaded,{name:i.SprigEvent.FeedbackButtonLoaded,"survey.id":l});const{useMobileStyling:E,_config:{border:y}}=window.UserLeap;if(je||E)ee(0);else{const v=document.createElement("div");v.id="sprig-feedback-loading-container",v.className=`sprig-feedback-loading-container sprig-feedback-loading-container-${m}`,v.style.setProperty("--feedback-border",y),f=v,ve(),c==null||c.appendChild(v);const S=Ze();ee(-S)}window.UserLeap._config.isOnQuestionsTab&&t&&!Z()&&f&&(Fe(),ve(),f&&f.classList.add("sprig-feedback-loading-container-previews"),z(t),W())},St=()=>{const r=document.createElement("div");r.id="sprig-feedback-error-container",r.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",r.appendChild(t),r},fe=new class{constructor(){M(this,"_ldData",{})}getAllLaunchDarklyVariations(){return this._ldData}setLDFlagsVariations(r){try{return!(!r||typeof r!="object"||Array.isArray(r))&&(Object.keys(this._ldData).forEach(t=>{delete this._ldData[t]}),Object.keys(r).forEach(t=>this._ldData[`!launch_darkly_${t}`]=(r[t]??0)+1),!0)}catch(t){return t instanceof Error&&window.UserLeap.reportError("setAllLDFlagsVariations",t),console.warn("[Sprig] An issue had occured when setting LaunchDarkly flags and variations."),!1}}};Object.freeze(fe);const X=new class{constructor(){M(this,"_optimizelyData",{})}setOptimizelyExperiment(r,t=!0){if(!r||typeof r!="object")return!1;const{experiments:o}=r;try{return t&&Object.keys(this._optimizelyData).map(a=>{delete this._optimizelyData[a]}),o&&o.map(a=>{const{id:e,variation:n}=a,s=this.transformExperimentId(e);n&&typeof n=="string"&&(this._optimizelyData[s]=n)}),!0}catch(a){return a instanceof Error&&window.UserLeap.reportError("setOptimizelyExperiment",a),!1}}getAllOptimizelyExperiments(){return this._optimizelyData}getOptimizelyVariationName(r){return this._optimizelyData[this.transformExperimentId(r)]}transformExperimentId(r){return"!optimizely_experiments_"+r}getAndSetWebOptimizelyExperiments(){var r;try{if(window&&window.optimizely&&typeof window.optimizely.get=="function"){const t=(r=window.optimizely.get("state"))==null?void 0:r.getExperimentStates({isActive:!0});if(t){const o=Object.keys(t).map(a=>{var e,n;return(e=t[a].variation)!=null&&e.name?{id:a,variation:(n=t[a].variation)==null?void 0:n.name}:{id:a,variation:"Original"}});return this.setOptimizelyExperiment({experiments:o},!1),!0}return!1}return!1}catch(t){return t instanceof Error&&window.UserLeap.reportError("getAndSetWebOptimizely",t),!1}}};Object.freeze(X);class bt{constructor(t,o){M(this,"paused");M(this,"queue");M(this,"ul");this.ul=t,this.paused=!1,this.queue=[],this.flush(o)}flush(t){const o=t.length;if(o)for(let a=0;a<o;a++)this.push(t[a])}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 o=Array.prototype.slice.call(t,1),a=t[0],e=this.ul[a];e instanceof Function?e.apply(this.ul,o):a&&console.warn("[Sprig] (ERR-100) No valid UserLeap action called",a)}}perform(t){if(this.paused){let o=()=>{};const a=new Promise(function(e){o=function(){e(t())}});return this.queue.push(o),a}return t()}empty(){this.queue.length=0}}let tt,rt;const he=r=>{let t=0,o=r.firstElementChild;for(;o;)t+=he(o),o.shadowRoot&&(t+=he(o.shadowRoot)),o=o.nextElementSibling,t++;return t},Ve=()=>{tt.report(he(document.body)),rt.report(document.documentElement.innerHTML.length)},Se=(r,t)=>{const o=performance.now();document.hidden?setTimeout(()=>Se(r,t),r):setTimeout(()=>{const a=performance.now()-o;t.report(a/1e3),setTimeout(()=>Se(r,t),r)},0)};let te,re,ie,ne,Ne,j={};const Y=(r,t=1)=>{const{name:o}=r;j[o]=(j[o]||0)+t},it=r=>{let t=1;return r.childNodes.forEach(o=>{t+=it(o)}),t},Be=r=>{let t=0;return r.forEach(o=>{t+=it(o)}),t},Lt=r=>{switch(r.type){case"childList":return Y(te,Be(r.addedNodes)),void Y(re,Be(r.removedNodes));case"attributes":return void Y(ie);case"characterData":return void Y(ne)}},Ut=r=>r.forEach(Lt),Et=()=>{te.report(j[te.name]||0),re.report(j[re.name]||0),ie.report(j[ie.name]||0),ne.report(j[ne.name]||0),j={}},It=(r=1e3)=>{te=i.registerMetric("sdk_mutations_nodes_added"),re=i.registerMetric("sdk_mutations_nodes_removed"),ie=i.registerMetric("sdk_mutations_attributes_changed"),ne=i.registerMetric("sdk_mutations_character_data"),Ne=new MutationObserver(Ut),Ne.observe(document,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),setInterval(Et,r)},kt=({isWeb:r,reportingIntervalSeconds:t,thresholds:o,postMetrics:a})=>{i.registerThresholds(o,(e,n)=>{var s,d;if((s=i.modules.replay)!=null&&s.isReplayRecording()){const p=`Value: ${e} on ${n.metric} violated threshold of ${n.type} ${n.value}`;(d=i.modules.replay)==null||d.disableRecording("Threshold violated",new Error(p),{reportError:!1}),window.UserLeap.reportError("Sdk Performance Metric threshold violated",new Error("Sdk Performance Metric threshold violated"),{metricName:n.metric,type:n.type,value:n.value},{metricName:n.metric}),i.disableThresholdChecking()}}),i.initPerformanceReporting({reportingIntervalSeconds:t,postMetrics:a}),r&&(((e=1e3)=>{const n=i.registerMetric("sdk_event_queue_latency_seconds");Se(e,n)})(),((e=1e4)=>{tt=i.registerMetric("sdk_dom_nodes_count"),rt=i.registerMetric("sdk_page_html_characters"),Ve(),setInterval(Ve,e)})(),It())},Rt="test",_t=["popState","pushState","replaceState"];let Ie,G;const oe={},B="!email",nt="pageUrl";let ge=window.location.href;function K(r){var d,p;const{pageUrlEvents:t,interactiveEvents:o,dismissOnPageChange:a,platform:e}=window.UserLeap._config;if(e&&e!=="web")return;ge!==window.location.href&&i.breadcrumbsLogger.navigation("LocationChange",{from:ge,to:window.location.href}),ge=window.location.href;const n=at().trackStartUrl,s=n?String(n):null;t&&lt(window.location.href),o&&(st(),Dt()),Qe()&&(()=>{if(Z())return;const u=V();u&&(i.checkUrlStillMatching($)||(u.remove(),$=null,f=null))})(),i.sessionStorageHelper.getItem("sprig.isCapturingHeatmap")&&((p=(d=i.modules.replay)==null?void 0:d.checkPendingHeatmapsUrl())==null||p.then(u=>{var l;u&&((l=i.modules.replay)==null||l.uploadReadyPendingCaptures(!0))})),!Z()&&a&&s&&s!==window.location.href&&r&&_t.includes(r.type)&&window.UserLeap("dismissActiveSurvey",i.DismissReason.PageChange)}const ot={capture:!0},Dt=()=>{const r=window.UserLeap._config.interactiveEvents.filter(o=>i.checkUrlMatch(o,window.location.href)).map(o=>{const{name:a,properties:e}=o,{selector:n,innerText:s}=e;return n?d=>{if(Me(d.target))try{d.target.closest(n)&&window.UserLeap("track",a)}catch{}return!1}:d=>(Me(d.target)&&d.target.innerText===s&&window.UserLeap("track",a),!1)}),t=o=>r.forEach(a=>a(o));window.UserLeap._config.interactiveEventsHandler=t,window.addEventListener("click",t,ot)},st=()=>{window.UserLeap._config.interactiveEventsHandler&&window.removeEventListener("click",window.UserLeap._config.interactiveEventsHandler,ot),delete window.UserLeap._config.interactiveEventsHandler};function at(){const r=i.localStorageHelper.getItemObject("userleap.ids");return r&&r[window.UserLeap.envId]||{}}function dt(){if(window.previewMode)return;const r=i.localStorageHelper.getItemObject("sprig.anon.env.vid.map")||{},t=r[window.UserLeap.envId];window.UserLeap.visitorId=t||i.v4(),i.breadcrumbsLogger.info("NewVid",{vid:window.UserLeap.visitorId}),k("vid",window.UserLeap.visitorId),t||(r[window.UserLeap.envId]=window.UserLeap.visitorId,i.localStorageHelper.setItemObject("sprig.anon.env.vid.map",r)),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId})}function lt(r,t,o,a){var e,n;try{if(r.endsWith("mock_snippet.html"))return;i.breadcrumbsLogger.info("PageView",{url:r});const s=(e=document==null?void 0:document.querySelector('meta[name="description"]'))==null?void 0:e.getAttribute("content");(n=i.modules.replay)==null||n.RecordPageView({...s&&{description:s},url:r,referrer:document.referrer,pageTitle:document.title});const d=window.UserLeap._config.pageUrlEvents;let p=!1;if(d&&d.length)for(let l=0;l<d.length&&(p=i.checkUrlMatch(d[l],r),!p);l++);if(!p)return;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig trackPageView",r);const u={url:r};a&&(u.trackPageView=!0),window.UserLeap._queue.push(["track",nt,t,u,o])}catch(s){s instanceof Error&&(s.stack=r,window.UserLeap.reportError("trackPageView",s)),console.warn("[Sprig] (ERR-428) Failed to track page view",s)}}function xt(){const r="Backbone"in window&&window.Backbone&&window.Backbone.history?window.Backbone.history:window.history;"pushState"in r&&(r.pushState=(t=>function(...o){const a=t.apply(this,o),e=new Event("pushState");return window.dispatchEvent(e),K(e),a})(r.pushState)),"replaceState"in r&&(r.replaceState=(t=>function(...o){const a=t.apply(this,o),e=new Event("replaceState");return window.dispatchEvent(e),K(e),a})(r.replaceState)),["hashchange","popstate"].forEach(t=>window.addEventListener(t,K,!0))}async function me(r,t){const o=Le();r&&!t&&(window.UserLeap._config.mode=Rt);const a=ae(i.getHttpHeaders(window.UserLeap)),e=await x(function(n){const s=new URL(_("1",[C],"questions"));return Object.entries(n||{}).forEach(([d,p])=>{p&&s.searchParams.append(d,String(p))}),s.toString()}({desktopDisplay:window.UserLeap._config.desktopDisplay,isMobile:a,previewLanguage:window.UserLeap._config.previewLanguage,surveyid:r==null?void 0:r.surveyId,surveytemplateid:r==null?void 0:r.surveyTemplateId,vid:o}),{shouldDropOnRateLimit:!0});if(!e.ok)return e.reportError&&e.error&&(console.warn("[Sprig] (ERR-414) Failed to request questions from the server",e.error),window.UserLeap.reportError("getQuestions",e.error)),{success:!1,surveyState:"no survey"};if(e.json.delay&&await i.delay(e.json.delay),!e.json.isFeedback)return z(e.json,G,Ie);{const{feedbackLabel:n,productConfig:s,surveyUuid:d,feedbackCustomStyles:p}=e.json,{buttonTheme:u,placement:l,desktopDisplay:c}=s;et({customStyles:p,buttonTheme:u,desktopDisplay:c,eventId:0,feedbackLabel:n,placement:l,surveyUuid:d,surveyId:r==null?void 0:r.surveyId},e.json)}}function At(r){if(!r)return;window.UserLeap._config=r,r.mute&&window.UserLeap._queue.pause();const{interactiveEvents:t,pageUrlEvents:o,dismissOnPageChange:a}=r;t&&function(e){let n=e.length;for(;n;){const s=Math.floor(Math.random()*n);n-=1;const d=e[n];e[n]=e[s],e[s]=d}}(t),(t||o||a)&&(xt(),K())}const Ot=function(r){if(!window.UserLeap)return;const t=async(e={})=>{var v,S,h,I,O;const{userId:n,anonymousId:s,metadata:d={},properties:p,showSurveyCallback:u}=e;let{eventName:l}=e;if(window.UserLeap.debugMode&&l!==nt&&console.info("[DEBUG] Sprig track",e),r.mode==="test")return;const c=i.localStorageHelper.getItem("sprig.previewKey")??void 0;if(r.requireUserIdForTracking&&!window.UserLeap.userId&&!n){const b="[Sprig] - Skipping tracking without userId";return console.warn(b),{success:!1,message:b,surveyState:"no survey"}}if(!l||l.trim().length===0){l=l?String(l):"";const b="[Sprig] - Invalid event name "+l;return console.warn(b),{success:!1,message:b,surveyState:"no survey"}}const g=G??window.location.href;d.url||(d.url=g),k("trackStartUrl",g),(S=(v=window.UserLeap)==null?void 0:v._config)!=null&&S.optimizelyEnabled&&(J(i.getHttpHeaders(window.UserLeap))||X.getAndSetWebOptimizelyExperiments(),d.optimizelyExperiments=Object.assign({},X.getAllOptimizelyExperiments())),(I=(h=window.UserLeap)==null?void 0:h._config)!=null&&I.launchDarklyEnabled&&(d.launchDarklyFlags=fe.getAllLaunchDarklyVariations()),n&&(window.UserLeap.userId=n),s&&(window.UserLeap.partnerAnonymousId=s),p&&(d.eventProperties=p),(O=i.modules.replay)==null||O.RecordEvent({name:l,url:d.url}),i.breadcrumbsLogger.info("TrackEvent",{eventName:l});const m=window.UserLeap.delayingSurvey||Ye()?await x(_("1",[P],"events/batch"),{body:JSON.stringify({events:[{event:l,metadata:d}],previewKey:c}),method:"POST",shouldDropOnRateLimit:!0}):await x(_("1",[P],"events"),{body:JSON.stringify({event:l,metadata:d,previewKey:c}),method:"POST",shouldDropOnRateLimit:!0});if(!m.ok){const b="[Sprig] (ERR-421) Failed to track event";return m.reportError&&(console.warn(b,m.error),m.error&&window.UserLeap.reportError("track",m.error)),{success:!1,message:b,error:m.error,surveyState:"no survey"}}n&&k("uid",n),s&&k("aid",s);const w=m.json;w.invalidPreviewKey&&i.localStorageHelper.removeItem("sprig.previewKey");const E=d.trackPageView?d.url:void 0;return w!=null&&w.feedbackButton&&et(w.feedbackButton,void 0,E),await async function(b,R){var H,T;let U=!0;return!(R&&((H=b==null?void 0:b.json)!=null&&H.surveyId)&&(window.UserLeap.delayingSurvey=!0,U=await R(b.json.surveyId),window.UserLeap.delayingSurvey=!1,!U))&&((T=b==null?void 0:b.json)!=null&&T.delay&&!window.UserLeap.isMobileSDK&&(window.UserLeap.delayingSurvey=!0,await i.delay(b.json.delay),window.UserLeap.delayingSurvey=!1),U)}(m,u)?function(b){if(!window.UserLeap._config.dismissOnPageChange)return!0;const R=new URL(b),U=new URL(G??window.location.href);return R.hostname===U.hostname&&R.pathname===U.pathname}(g)?z(w,E,Ie):{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"}},o=(e,n)=>{var d;const s=(d=e==null?void 0:e.querySelector(`[id="${Ue}"]`))==null?void 0:d.contentDocument;s&&Q({document:s,elementId:"ul-custom-style",styleString:n})},a={displaySurvey:async e=>(console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."),window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),me({surveyId:e},!0)),_previewSurvey(e){window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),me({surveyTemplateId:e},!1)},_reviewSurvey(e){window.UserLeap("dismissActiveSurvey",i.DismissReason.Override),me({surveyId:e},!1)},previewSurvey(e){a._previewSurvey(e)},reviewSurvey(e){a._reviewSurvey(e)},mute(){window.UserLeap._queue.pause()},unmute(){window.UserLeap._queue.unpause()},setVisitorToken(){console.warn("[Sprig] setVisitorToken is deprecated.")},dismissActiveSurvey(e=i.DismissReason.API){window.UserLeap.container&&(e===i.DismissReason.Closed&&window.Sprig.trackHistory&&window.Sprig.trackHistory({event:"closed"}),i.eventEmitter.emit(i.SprigEvent.SurveyCloseRequested,{name:i.SprigEvent.SurveyCloseRequested,initiator:e,"survey.id":parseInt(window.UserLeap.container.dataset.studyId)}),i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:e,"survey.id":parseInt(window.UserLeap.container.dataset.studyId)}))},async setAttribute(e,n){if(!e||!n&&n!==0&&n!==!1){const s="[Sprig] - Disregarding empty attribute / value provided";return console.warn(s),{success:!1,message:s}}return this.setAttributes({[e]:n})},async setAttributes(e){if(e==null||Object.keys(e).length===0){const n="[Sprig] - Disregarding empty attributes provided";return console.warn(n),{success:!1,message:n}}return this.identifyAndSetAttributes({attributes:e})},async identifyAndSetAttributes(e){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig identifyAndSetAttributes",e),r.mode==="test")return;if(e===null||typeof e!="object"||!(e.userId||e.anonymousId||e.attributes)){const l="[Sprig] - Disregarding empty payload provided";return console.warn(l),{success:!1,message:l}}const{userId:n,anonymousId:s,attributes:d}=e;if(r.requireUserIdForTracking&&!window.UserLeap.userId&&!n){const l="[Sprig] - Skipping tracking without userId";return console.warn(l),{success:!1,message:l}}if(d){d.email&&!d[B]&&(d[B]=d.email,delete d.email);const l=Object.keys(d);for(const c of l)d[c]===oe[c]&&delete d[c]}if(!(d&&Object.keys(d).length!==0||n&&window.UserLeap.userId!==n||s&&window.UserLeap.partnerAnonymousId!==s))return{success:!0};const p={};let u;return n&&(p.userId=window.UserLeap.userId=n),s&&(p.partnerAnonymousId=window.UserLeap.partnerAnonymousId=s),d&&Object.keys(d).length>0?(u=await x(_("1",[C,P],"attributes"),{body:JSON.stringify(d),method:"PUT"}),u.ok?Object.assign(oe,d):u.reportError&&(console.warn("[Sprig] (ERR-432) identifyAndSetAttributes failed",u.error),u.error&&window.UserLeap.reportError("identifyAndSetAttributes",u.error))):u=await x(_("1",[C,P]),{body:JSON.stringify(p),method:"PUT"}),d&&d[B]&&(window.UserLeap.email=d[B]),u.ok&&(n&&k("uid",n),s&&k("aid",s)),{success:!!u.ok}},async removeAttributes(e){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig removeAttributes",e),r.mode==="test")return;if(e==null||e.length===0){const s="[Sprig] - Disregarding empty attributes provided";return console.warn(s),{success:!1,message:s}}if(r.requireUserIdForTracking&&!window.UserLeap.userId){const s="[Sprig] - Skipping tracking without userId";return console.warn(s),{success:!1,message:s}}const n=await x(_("1",[C,P],"attributes"),{body:JSON.stringify({delete:e}),method:"DELETE"});return!n.ok&&n.reportError&&(console.warn("[Sprig] (ERR-433) Remove attributes failed",n.error),n.error&&window.UserLeap.reportError("removeAttributes",n.error)),{success:!!n.ok}},async addSurveyListener(e){i.eventEmitter.on(i.SprigEvent.SurveyLifeCycle,e)},async removeSurveyListener(e){i.eventEmitter.removeListener(i.SprigEvent.SurveyLifeCycle,e)},async addListener(e,n){i.eventEmitter.on(e,n)},async removeListener(e,n){i.eventEmitter.removeListener(e,n)},async removeAllListeners(){i.eventEmitter.removeAllListeners()},setPreviewKey(e){e&&typeof e=="string"&&i.localStorageHelper.isStorageAvailable&&e&&i.localStorageHelper.setItem("sprig.previewKey",e)},async setUserId(e){var d;if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setUserId",e),e==null){const p=`[Sprig] - Invalid userId ${e}`;return console.warn(p),{success:!1,message:p}}if(r.mode==="test"||e===window.UserLeap.userId)return;window.UserLeap.userId=e;const n=window.UserLeap.visitorId,s=await x(_("1",[C,P]),{body:JSON.stringify({userId:e}),method:"PUT"});s.ok?(n!==window.UserLeap.visitorId&&((d=i.modules.replay)==null||d.clearUserReplayData()),k("uid",e)):s.reportError&&(console.warn("[Sprig] (ERR-420) Failed to set user id",s.error),s.error&&window.UserLeap.reportError("setUserId",s.error))},async setPartnerAnonymousId(e){if(window.UserLeap.debugMode&&console.info("[DEBUG] Sprig setPartnerAnonymousId",e),e==null){const n=`[Sprig] - Invalid partnerAnonymousId ${e}`;return console.warn(n),{success:!1,message:n}}return window.UserLeap.partnerAnonymousId=e,k("aid",e),{success:!0}},track:async(e,n,s={},d=void 0)=>t({eventName:e,properties:n,metadata:s,showSurveyCallback:d}),identifyAndTrack:async e=>await t(e),trackPageView(e,n=void 0,s=void 0,d=!0){G=e,lt(e,n,s,d)},applyFeedbackStyles({button:e="",view:n=""}){window.UserLeap.feedbackCustomStyles=n,document.getElementById("sprig-feedback-style")&&Q({document,elementId:"ul-custom-style",styleString:e,nonce:window.UserLeap.styleNonce}),o(document.querySelector(".ul-container-feedback"),n)},applyStyles(e){window.UserLeap.customStyles=e,o(window.UserLeap.container,e)},setWindowDimensions(e,n){var g,m;const s=typeof e=="string"?parseInt(e,10):e,d=typeof n=="string"?parseInt(n,10):n;isNaN(s)||isNaN(d)||(window.UserLeap.windowDimensions={width:s,height:d});const p=i.getHttpHeaders(window.UserLeap),u=ae(p),l=p["userleap-platform"]==="web";if(!window.UserLeap.frameId)return;const c=document.getElementById(window.UserLeap.frameId);c&&(window.UserLeap.useMobileStyling&&((g=window.UserLeap.windowDimensions)!=null&&g.width&&(c.style.width=`${window.UserLeap.windowDimensions.width}px`),(m=window.UserLeap.windowDimensions)!=null&&m.height&&(c.style.maxHeight=window.UserLeap.windowDimensions.height-20+"px"),c.contentDocument&&(c.style.height=String(Je(c.contentDocument,l&&!u,i.shouldDirectEmbed(p))[0])+"px")),i.eventEmitter.emit(i.SprigEvent.SurveyDimensions,{name:i.SprigEvent.SurveyDimensions,contentFrameWidth:c.clientWidth,contentFrameHeight:c.clientHeight,"survey.id":parseInt(window.UserLeap.container.dataset.studyId)}))},logoutUser(){var e;window.UserLeap.debugMode&&console.info("[DEBUG] Sprig logout"),i.breadcrumbsLogger.info("LogOut",{vid:window.UserLeap.visitorId,userId:window.UserLeap.userId}),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"),window.UserLeap._queue.isPaused()&&window.UserLeap._queue.empty(),dt(),(e=i.modules.replay)==null||e.clearUserReplayData(),window.UserLeap._queue.unpause()},teardown(){["hashchange","popstate"].forEach(e=>window.removeEventListener(e,K,!0)),window.UserLeap._config.interactiveEvents&&st(),window.UserLeap("dismissActiveSurvey",i.DismissReason.API),delete window.UserLeap,delete window.Sprig,delete window._Sprig},integrateOptimizely(e,n=!0){var s,d;if((d=(s=window.UserLeap)==null?void 0:s._config)!=null&&d.optimizelyEnabled)try{const p=typeof e=="string"?JSON.parse(e):e;X.setOptimizelyExperiment(p,n)}catch(p){console.warn("[Sprig] Error with integrating Optimizely data"),p instanceof Error&&window.UserLeap.reportError("integrateOptimizely",p)}else console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.")},integrateOptimizelyClient(e){var n,s;if(!((s=(n=window.UserLeap)==null?void 0:n._config)!=null&&s.optimizelyEnabled))return void console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");e.notificationCenter.addNotificationListener("ACTIVATE:experiment, user_id,attributes, variation, event",({experiment:d,variation:p})=>{const u={experiments:[{id:d.id,variation:p.key}]};window.UserLeap("integrateOptimizely",u,!1)})},importLaunchDarklyData(e){var n,s;(s=(n=window.UserLeap)==null?void 0:n._config)!=null&&s.launchDarklyEnabled?fe.setLDFlagsVariations(e):console.warn("[SPRIG] LaunchDarkly integration is currently not enabled for your product.")},setVisitorAttribute:(e,n)=>(console.warn("[Sprig] setVisitorAttribute is deprecated. Please use setAttribute"),a.setAttribute(e,n)),setEmail:async e=>a.setAttribute(B,e),setVisitorEmail:async e=>(console.warn("[Sprig] setVisitorEmail is deprecated. Please use setEmail"),a.setEmail(e)),_generateVideoUploadUrl:async e=>async function(n){var d;if(!n)return;const s=`${window.UserLeap._API_URL}/2/environments/integrations/upload`;try{const p=await fetch(s,{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(p.ok){const u=await p.json();return(d=u==null?void 0:u.upload)==null?void 0:d.url}return null}catch(p){console.warn("[Sprig] Error with generating video upload url"),p instanceof Error&&window.UserLeap.reportError("generateVideoUploadUrl",p)}}(e),_reportMetric(e,n){i.reportAndRegister(e,n)},_completeSessionReplay:async({surveyId:e,responseGroupUuid:n,eventDigest:s})=>{var d;return i.modules.replay?(d=i.modules.replay)==null?void 0:d._completeSessionReplay({surveyId:e,responseGroupUuid:n,eventDigest:s,headers:i.getHttpHeaders(window.UserLeap)}):(window.UserLeap.reportError("_completeSessionReplay",new Error("Replay module not registered")),!1)},pauseReplayRecording(){var e,n,s,d;(n=(e=i.modules.replay)==null?void 0:e.isReplayPaused)!=null&&n.call(e)||((d=(s=i.modules.replay)==null?void 0:s.recordReplayPaused)==null||d.call(s))},resumeReplayRecording(){var e,n,s,d,p,u;(n=(e=i.modules.replay)==null?void 0:e.isReplayPaused)!=null&&n.call(e)&&((d=(s=i.modules.replay)==null?void 0:s.recordReplayResumed)==null||d.call(s),(u=(p=i.modules.replay)==null?void 0:p.recordFullSnapshot)==null||u.call(p))}};Object.assign(window.UserLeap,a)};async function Pt(r,t,o={},a={}){const e=window.__cfg&&window.__cfg.mode,n=Le(),s=window.UserLeap.envId,d=window.document.documentElement,p={mode:e,screenWidth:window.screen.width,screenHeight:window.screen.height,clientWidth:d.clientWidth,clientHeight:d.clientHeight,location:G??window.location.href,language:window.navigator.language,...o},u={action:r,breadcrumbs:i.breadcrumbsLogger.breadcrumbs,err:{message:`${t==null?void 0:t.name} - ${t==null?void 0:t.message}`,stack:t==null?void 0:t.stack},meta:p,vid:n,envId:s,...a};(await x(_("1",null,"errors"),{method:"POST",headers:{"x-ul-error":window.btoa(`userleap-${Date.now()}-error`)},body:JSON.stringify(u),shouldDropOnRateLimit:!0})).ok||console.warn("[Sprig] (ERR-444) Failed to report error to API",t)}function Ct(r={}){var a;(a=window.SprigLoggerCallback)==null||a.call(window,"Initializing Sprig");const t=new URLSearchParams(window.location.search).get("sprigPreviewKey")??"";async function o(){var c,g,m,w,E;if(window.UserLeap.loaded)return;if((c=window.SprigLoggerCallback)==null||c.call(window,"Loading Sprig"),window.UserLeap.reportError=Pt,window.UserLeap.loaded=!0,window.UserLeap._config=Object.assign({},r,window.UserLeap.config),window.UserLeap.delayingSurvey=!1,window.UserLeap._config&&typeof window.UserLeap._config=="object")for(const y in window.UserLeap._config)window.UserLeap[y]=window.UserLeap._config[y];if(window.Sprig.outstandingTransactionLimit!==void 0&&(r.outstandingTransactionLimit=window.Sprig.outstandingTransactionLimit),!window.UserLeap.envId){if(!window.UserLeap.appId)throw new Error("Missing Environment id");window.UserLeap.envId=window.UserLeap.appId}window.UserLeap.debugMode&&console.info("[DEBUG] Sprig debug mode enabled");const e=at(),n=window.UserLeap.sampleRate;let s=e.sampled;if(n){if(s===null&&(s=Math.random()<n,k("sampled",s)),!s)return}else s!==null&&k("sampled",null);window.UserLeap._API_URL||(window.UserLeap._API_URL="https://api.sprig.com");const d=[...window.UserLeap._queue];window.UserLeap._queue=new bt(window.UserLeap,[]),window.UserLeap._queue.pause();for(let y=0;y<d.length;y++)window.UserLeap._queue.push(d[y]);const p=e.token;p?(window.UserLeap.token=p,window.UserLeap.visitorId=e.vid??null,window.UserLeap.userId=e.uid??null,window.UserLeap.partnerAnonymousId=e.aid??null):dt();const u=J(i.getHttpHeaders(window.UserLeap));(g=window.SprigLoggerCallback)==null||g.call(window,"Sprig fetching config");const l=await async function(y){var I,O;const v=i.getHttpHeaders(window.UserLeap);document.addEventListener("securitypolicyviolation",i.cspViolationHandler);const S=await i.sprigFetch(_("1",[C],"config"),{headers:v});if(document.removeEventListener("securitypolicyviolation",i.cspViolationHandler),!S.ok)return(I=window.SprigLoggerCallback)==null||I.call(window,"Sprig config fetch failed"),S.reportError&&(console.warn("[Sprig] (ERR-422) Failed to load configuration",S.error),S.error&&window.UserLeap.reportError("applyRemoteConfig",S.error)),i.killNetworkRequests("Disabled: failed to fetch configuration"),y;const h=S.json;return h!=null&&h.disabled?((O=window.SprigLoggerCallback)==null||O.call(window,"Sprig config fetch disabled"),i.killNetworkRequests(`Disabled: ${h.disabled}`),{disabled:h.disabled}):Object.assign({},h,y)}(r);if((m=window.SprigLoggerCallback)==null||m.call(window,"Sprig fetched config"),kt({isWeb:!u,reportingIntervalSeconds:l.metricsReportingEnabled||l.mobileMetricsReportingEnabled?l.metricsReportingIntervalSeconds:0,thresholds:l.metricThresholds,postMetrics:async y=>{var v;await x(_("1",[C],"metrics"),{body:y,method:"POST",headers:{"x-ul-replay-enabled":`${!!((v=i.modules.replay)!=null&&v.isReplayRecording())}`},shouldDropOnRateLimit:!0})}}),!u){const y=l.alwaysOnReplay?{userAgent:window.navigator.userAgent,surveyId:l.alwaysOnReplay.surveyId,responseGroupUuid:l.alwaysOnReplay.responseGroupUuid,sdkVersion:"2.34.2",maxDurationSeconds:l.alwaysOnReplay.maxDurationSeconds}:void 0;await((w=i.modules.replay)==null?void 0:w.initializeReplay({maxReplayDurationSeconds:l.maxReplayDurationSeconds,maxInflightRequests:window.UserLeap.maxInflightReplayRequests??2,replaySettings:l.replaySettings,apiUrl:window.UserLeap._API_URL,alwaysOnConfig:y})),Ie=l.replaySettings}Ot(l),await At(l),window.UserLeap._queue.unpause(),(E=window.SprigLoggerCallback)==null||E.call(window,"SdkReady"),i.eventEmitter.emit(i.SprigEvent.SDKReady,{mobileMetricsReportingEnabled:!!l.mobileMetricsReportingEnabled,metricsReportingInterval:l.metricsReportingIntervalSeconds||0,metricsThresholds:l.metricThresholds||[],maxMobileReplayDurationSeconds:l.maxMobileReplayDurationSeconds,mobileReplaySettings:l.mobileReplaySettings}),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:window.UserLeap.visitorId}),i.eventEmitter.on(i.SprigEvent.VisitorIDUpdated,()=>{for(const y in oe)delete oe[y]})}window.UserLeap.UPDATES=i.EVENTS,window.UserLeap("setPreviewKey",t),document.readyState==="complete"?o():window.attachEvent?window.attachEvent("onload",o):window.addEventListener("load",()=>{o()},!1)}class se{constructor(){M(this,"UPDATES",i.EVENTS)}displaySurvey(t){window.Sprig("displaySurvey",t)}mute(){window.Sprig("mute")}unmute(){window.Sprig("unmute")}dismissActiveSurvey(){window.Sprig("dismissActiveSurvey")}setAttribute(t,o){window.Sprig("setAttribute",t,o)}setAttributes(t){window.Sprig("setAttributes",t)}identifyAndSetAttributes(t){window.Sprig("identifyAndSetAttributes",t)}removeAttributes(t){window.Sprig("removeAttributes",t)}addListener(t,o){window.Sprig("addListener",t,o)}removeListener(t,o){window.Sprig("removeListener",t,o)}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,o={},a={}){window.Sprig("track",t,o,a)}identifyAndTrack(t){window.Sprig("identifyAndTrack",t)}trackPageView(t,o,a){window.Sprig("trackPageView",t,o,a)}applyStyles(t){window.Sprig("applyStyles",t)}setWindowDimensions(t,o){window.Sprig("setWindowDimensions",t,o)}logoutUser(){window.Sprig("logoutUser")}teardown(){window.Sprig("teardown")}pauseReplayRecording(){window.Sprig("pauseReplayRecording")}resumeReplayRecording(){window.Sprig("resumeReplayRecording")}}const be={configure:r=>{if(!r.envId&&!r.environmentId)throw new Error("Initialization Error: Sprig configure requires an environmentId");if(r.envId||(r.envId=r.environmentId??""),r.installationMethod="web-npm",window.Sprig)return window.Sprig;window.Sprig=function(){window.Sprig._queue.push(arguments)},Object.getOwnPropertyNames(se.prototype).map(o=>{o!=="constructor"&&(window.Sprig[o]=se.prototype[o])});const t=window.Sprig;return t.appId=r.envId,t._queue=[],window.UserLeap=t,Ct(r),window.Sprig}},Ht={sprig:be,SprigAPI:se,configure:be.configure};exports.APP_ID="ul-app",exports.ConflictingWidgets=We,exports.DEFAULT_BORDER_COLOR="#e6e6e6",exports.DEFAULT_WIDTH_PX=360,exports.EMBED_MOBILE_MAX_WIDTH=1030,exports.ERROR_BORDER_COLOR="#bd282a",exports.SprigAPI=se,exports.calculateFrameDimensions=Je,exports.core=Ht,exports.isHTMLElement=D,exports.resetScrollPosition=r=>{const t=r.querySelector(".ul-card__container");t&&(t.scrollTop=0)},exports.setSurveyStyles=Q,exports.sprig=be;
package/dist/core.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./metricsReporter-DNdFkQ0C.cjs"),e=require("./core-nhbrlHf1.cjs");exports.DismissReason=i.DismissReason,exports.SprigEvent=i.SprigEvent,exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./metricsReporter-Dy3EDEs8.cjs"),e=require("./core-B84vH8bq.cjs");exports.DismissReason=i.DismissReason,exports.SprigEvent=i.SprigEvent,exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig;
package/dist/core.d.ts CHANGED
@@ -1020,7 +1020,7 @@ declare const BOOLEAN_OPERATOR: {
1020
1020
  };
1021
1021
  type BooleanOperator = (typeof BOOLEAN_OPERATOR)[keyof typeof BOOLEAN_OPERATOR];
1022
1022
 
1023
- type CardType = "consentlegal" | "likert" | "matrix" | "multiplechoice" | "multipleselect" | "nps" | "open" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1023
+ type CardType = "consentlegal" | "likert" | "matrix" | "multiplechoice" | "multipleselect" | "nps" | "open" | "rankorder" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1024
1024
  type ConceptUrl = string | null;
1025
1025
  interface BaseCard {
1026
1026
  name: number;
@@ -1028,8 +1028,10 @@ interface BaseCard {
1028
1028
  updatedAt: string;
1029
1029
  value?: unknown;
1030
1030
  type: CardType;
1031
+ groupId?: number;
1031
1032
  }
1032
1033
  type Comparator = "answered" | "contains" | "notcontains" | "list_dni" | "eq" | "given_up" | "gt" | "gte" | "lt" | "lte" | "list_all" | "list_alo" | "list_exact" | "neq" | "partial" | "skipped";
1034
+ type Randomize = "none" | "all";
1033
1035
  type DefaultComparator = Extract<Comparator, "answered" | "skipped">;
1034
1036
  type RoutingOption<C extends Comparator = DefaultComparator> = OldRoutingOption<C> | GroupRoutingOption;
1035
1037
  type OldRoutingOption<C extends Comparator = DefaultComparator> = {
@@ -1052,7 +1054,12 @@ type RoutingGroupOption = {
1052
1054
  type RoutingOptions<C extends Comparator = DefaultComparator> = RoutingOption<C | DefaultComparator>[] | null;
1053
1055
  /** @example <p>Body</p> */
1054
1056
  type RichTextBody = string;
1055
- type PromptActionType = "CONTINUE" | "EXTERNAL";
1057
+ declare enum PromptActionTypeEnum {
1058
+ CONTINUE = "CONTINUE",
1059
+ EXTERNAL = "EXTERNAL",
1060
+ NO_BUTTON = "NO_BUTTON"
1061
+ }
1062
+ type PromptActionType = keyof typeof PromptActionTypeEnum;
1056
1063
  interface TextUrlPromptCard extends BaseCard {
1057
1064
  props: {
1058
1065
  message: string;
@@ -1235,7 +1242,7 @@ interface CommonMultipleChoiceProps {
1235
1242
  * Text when multiple items are selected, such as "2 items selected" / "3 items selected"
1236
1243
  */
1237
1244
  dropdownMultiselectedText?: string;
1238
- randomize: "none" | "all";
1245
+ randomize: Randomize;
1239
1246
  required: boolean;
1240
1247
  };
1241
1248
  }
@@ -1264,7 +1271,7 @@ interface MatrixCard extends BaseCard {
1264
1271
  label: string;
1265
1272
  value: string;
1266
1273
  }[];
1267
- randomize: "none" | "all";
1274
+ randomize: Randomize;
1268
1275
  required: boolean;
1269
1276
  };
1270
1277
  };
@@ -1272,26 +1279,49 @@ interface MatrixCard extends BaseCard {
1272
1279
  }
1273
1280
  interface NPSCard extends BaseCard {
1274
1281
  props: {
1275
- labels: {
1276
- left: string;
1277
- right: string;
1278
- };
1282
+ labels: Labels;
1279
1283
  message: string;
1280
1284
  options: [];
1281
1285
  properties: {
1282
1286
  buttonText?: string;
1283
1287
  captionText: string;
1284
1288
  conceptUrl: null;
1285
- labels: {
1286
- left: string;
1287
- right: string;
1288
- };
1289
+ labels: Labels;
1289
1290
  required: boolean;
1290
1291
  };
1291
1292
  routingOptions: RoutingOptions<"eq" | "gt" | "gte" | "lt" | "lte" | "neq">;
1292
1293
  };
1293
1294
  type: "nps";
1294
1295
  }
1296
+ interface RankOrderOption {
1297
+ createdAt: string;
1298
+ deletedAt: null;
1299
+ id: number;
1300
+ label: string;
1301
+ order: number;
1302
+ productId: number;
1303
+ surveyId: number;
1304
+ surveyQuestionId: number;
1305
+ updatedAt: string;
1306
+ value: string;
1307
+ }
1308
+ interface RankOderType extends BaseCard {
1309
+ props: {
1310
+ labels: Labels;
1311
+ message: string;
1312
+ options: RankOrderOption[];
1313
+ properties: {
1314
+ captionText: string;
1315
+ buttonText?: string;
1316
+ conceptUrl: ConceptUrl;
1317
+ labels: Labels;
1318
+ required: boolean;
1319
+ randomize: Randomize;
1320
+ };
1321
+ routingOptions: RoutingOptions<"eq" | "gt" | "gte" | "lt" | "lte" | "neq">;
1322
+ };
1323
+ type: "rankorder";
1324
+ }
1295
1325
  interface VideoVoiceCard extends BaseCard {
1296
1326
  props: {
1297
1327
  message: string;
@@ -1311,7 +1341,7 @@ interface VideoVoiceCard extends BaseCard {
1311
1341
  };
1312
1342
  type: "videovoice";
1313
1343
  }
1314
- type Card = TextUrlPromptCard | ConsentLegalCard | RecordedTaskCard | LikertCard | OpenTextCard | MatrixCard | MultipleChoiceSingleSelectCard | MultipleChoiceMultiSelectCard | NPSCard | VideoVoiceCard;
1344
+ type Card = TextUrlPromptCard | ConsentLegalCard | RecordedTaskCard | LikertCard | OpenTextCard | MatrixCard | MultipleChoiceSingleSelectCard | MultipleChoiceMultiSelectCard | NPSCard | RankOderType | VideoVoiceCard;
1315
1345
 
1316
1346
  type InteractiveMatchType = "exactly" | "legacy";
1317
1347
  type PageUrlMatchType = "contains" | "exactly" | "legacy" | "notContains" | "regex" | "startsWith";
@@ -1340,9 +1370,11 @@ declare enum DismissReason {
1340
1370
  API = "api",// JS called Sprig('dismissActiveSurvey')
1341
1371
  Override = "override"
1342
1372
  }
1343
- type StudyType = "feedbackButton" | "inProductSurvey";
1373
+ type StudyType = "feedbackButton" | "inProductSurvey" | "longFormSurvey";
1344
1374
  declare enum SprigEvent {
1345
1375
  ReplayCapture = "replay.capture",
1376
+ ReplayPaused = "replay.paused",
1377
+ ReplayResumed = "replay.resumed",
1346
1378
  FeedbackButtonLoaded = "feedback.button.loaded",
1347
1379
  SDKReady = "sdk.ready",
1348
1380
  SurveyAppeared = "survey.appeared",
@@ -1539,6 +1571,8 @@ type SprigEventMap = {
1539
1571
  surveyId: number;
1540
1572
  }
1541
1573
  ];
1574
+ [SprigEvent.ReplayPaused]: [];
1575
+ [SprigEvent.ReplayResumed]: [];
1542
1576
  "av.permission": [
1543
1577
  {
1544
1578
  "stream.ready": (avStream: MediaStream | null, captureStream?: MediaStream | null) => void;
@@ -1672,6 +1706,7 @@ interface Config extends MobileReplayConfig {
1672
1706
  mode?: string;
1673
1707
  mute?: boolean;
1674
1708
  optimizelyEnabled?: boolean;
1709
+ outstandingTransactionLimit?: number | null;
1675
1710
  overlayStyle: "light";
1676
1711
  overlayStyleMobile: "none";
1677
1712
  pageUrlEvents: PageUrlEvent[];
@@ -1749,6 +1784,12 @@ type EventDigest = {
1749
1784
  timestamp: number;
1750
1785
  surveyId: string;
1751
1786
  type: "Sprig_SubmitSurvey";
1787
+ } | {
1788
+ timestamp: number;
1789
+ type: "Sprig_ReplayPaused";
1790
+ } | {
1791
+ timestamp: number;
1792
+ type: "Sprig_ReplayResumed";
1752
1793
  };
1753
1794
 
1754
1795
  declare namespace optimizely {
@@ -1899,6 +1940,8 @@ declare namespace sprigConfig {
1899
1940
  ) => void;
1900
1941
  trackHistory?: ({ event: string }) => void;
1901
1942
  unmute: () => void;
1943
+ pauseReplayRecording: () => void;
1944
+ resumeReplayRecording: () => void;
1902
1945
  }
1903
1946
 
1904
1947
  type SprigCommand = keyof SprigAPIActions;
@@ -1934,6 +1977,7 @@ declare namespace sprigConfig {
1934
1977
  locale?: string;
1935
1978
  maxHeight?: number | string;
1936
1979
  maxInflightReplayRequests?: number;
1980
+ outstandingTransactionLimit?: number | null;
1937
1981
  mobileHeadersJSON?: string;
1938
1982
  nonce?: string;
1939
1983
  partnerAnonymousId: string | null;
@@ -2020,12 +2064,17 @@ declare class SprigAPI {
2020
2064
  SURVEY_WILL_PRESENT: SprigEvent;
2021
2065
  QUESTION_ANSWERED: SprigEvent;
2022
2066
  REPLAY_CAPTURE: SprigEvent;
2023
- CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent;
2067
+ CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent; /**
2068
+ * Tracks a page view with the provided URL and additional event properties.
2069
+ */
2024
2070
  VISITOR_ID_UPDATED: SprigEvent;
2025
2071
  DATA: {
2026
2072
  DISMISS_REASONS: {
2027
2073
  API: DismissReason;
2028
2074
  CLOSED: DismissReason;
2075
+ /**
2076
+ * Apply a css string representing the customized styles
2077
+ */
2029
2078
  COMPLETE: DismissReason;
2030
2079
  PAGE_CHANGE: DismissReason;
2031
2080
  OVERRIDE: DismissReason;
@@ -2127,6 +2176,14 @@ declare class SprigAPI {
2127
2176
  * Clears Sprig from window
2128
2177
  */
2129
2178
  teardown(): void;
2179
+ /**
2180
+ * Pause replay recording
2181
+ */
2182
+ pauseReplayRecording(): void;
2183
+ /**
2184
+ * Resume replay recording
2185
+ */
2186
+ resumeReplayRecording(): void;
2130
2187
  }
2131
2188
  type NpmConfig = {
2132
2189
  envId?: string;
package/dist/core.js CHANGED
@@ -1,5 +1,5 @@
1
- import { D as r, S as e } from "./metricsReporter-qetrFwEv.js";
2
- import { S as o, c as p, s as t } from "./core-DLrmR9wp.js";
1
+ import { D as r, S as e } from "./metricsReporter-BzXI6BiM.js";
2
+ import { S as o, c as p, s as t } from "./core-9nFfVPj6.js";
3
3
  export {
4
4
  r as DismissReason,
5
5
  o as SprigAPI,
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-nhbrlHf1.cjs");require("./replay.cjs");const r=require("./metricsReporter-DNdFkQ0C.cjs");exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig,exports.DismissReason=r.DismissReason,exports.SprigEvent=r.SprigEvent;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-B84vH8bq.cjs");require("./replay.cjs");const r=require("./metricsReporter-Dy3EDEs8.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
@@ -1020,7 +1020,7 @@ declare const BOOLEAN_OPERATOR: {
1020
1020
  };
1021
1021
  type BooleanOperator = (typeof BOOLEAN_OPERATOR)[keyof typeof BOOLEAN_OPERATOR];
1022
1022
 
1023
- type CardType = "consentlegal" | "likert" | "matrix" | "multiplechoice" | "multipleselect" | "nps" | "open" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1023
+ type CardType = "consentlegal" | "likert" | "matrix" | "multiplechoice" | "multipleselect" | "nps" | "open" | "rankorder" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1024
1024
  type ConceptUrl = string | null;
1025
1025
  interface BaseCard {
1026
1026
  name: number;
@@ -1028,8 +1028,10 @@ interface BaseCard {
1028
1028
  updatedAt: string;
1029
1029
  value?: unknown;
1030
1030
  type: CardType;
1031
+ groupId?: number;
1031
1032
  }
1032
1033
  type Comparator = "answered" | "contains" | "notcontains" | "list_dni" | "eq" | "given_up" | "gt" | "gte" | "lt" | "lte" | "list_all" | "list_alo" | "list_exact" | "neq" | "partial" | "skipped";
1034
+ type Randomize = "none" | "all";
1033
1035
  type DefaultComparator = Extract<Comparator, "answered" | "skipped">;
1034
1036
  type RoutingOption<C extends Comparator = DefaultComparator> = OldRoutingOption<C> | GroupRoutingOption;
1035
1037
  type OldRoutingOption<C extends Comparator = DefaultComparator> = {
@@ -1052,7 +1054,12 @@ type RoutingGroupOption = {
1052
1054
  type RoutingOptions<C extends Comparator = DefaultComparator> = RoutingOption<C | DefaultComparator>[] | null;
1053
1055
  /** @example <p>Body</p> */
1054
1056
  type RichTextBody = string;
1055
- type PromptActionType = "CONTINUE" | "EXTERNAL";
1057
+ declare enum PromptActionTypeEnum {
1058
+ CONTINUE = "CONTINUE",
1059
+ EXTERNAL = "EXTERNAL",
1060
+ NO_BUTTON = "NO_BUTTON"
1061
+ }
1062
+ type PromptActionType = keyof typeof PromptActionTypeEnum;
1056
1063
  interface TextUrlPromptCard extends BaseCard {
1057
1064
  props: {
1058
1065
  message: string;
@@ -1235,7 +1242,7 @@ interface CommonMultipleChoiceProps {
1235
1242
  * Text when multiple items are selected, such as "2 items selected" / "3 items selected"
1236
1243
  */
1237
1244
  dropdownMultiselectedText?: string;
1238
- randomize: "none" | "all";
1245
+ randomize: Randomize;
1239
1246
  required: boolean;
1240
1247
  };
1241
1248
  }
@@ -1264,7 +1271,7 @@ interface MatrixCard extends BaseCard {
1264
1271
  label: string;
1265
1272
  value: string;
1266
1273
  }[];
1267
- randomize: "none" | "all";
1274
+ randomize: Randomize;
1268
1275
  required: boolean;
1269
1276
  };
1270
1277
  };
@@ -1272,26 +1279,49 @@ interface MatrixCard extends BaseCard {
1272
1279
  }
1273
1280
  interface NPSCard extends BaseCard {
1274
1281
  props: {
1275
- labels: {
1276
- left: string;
1277
- right: string;
1278
- };
1282
+ labels: Labels;
1279
1283
  message: string;
1280
1284
  options: [];
1281
1285
  properties: {
1282
1286
  buttonText?: string;
1283
1287
  captionText: string;
1284
1288
  conceptUrl: null;
1285
- labels: {
1286
- left: string;
1287
- right: string;
1288
- };
1289
+ labels: Labels;
1289
1290
  required: boolean;
1290
1291
  };
1291
1292
  routingOptions: RoutingOptions<"eq" | "gt" | "gte" | "lt" | "lte" | "neq">;
1292
1293
  };
1293
1294
  type: "nps";
1294
1295
  }
1296
+ interface RankOrderOption {
1297
+ createdAt: string;
1298
+ deletedAt: null;
1299
+ id: number;
1300
+ label: string;
1301
+ order: number;
1302
+ productId: number;
1303
+ surveyId: number;
1304
+ surveyQuestionId: number;
1305
+ updatedAt: string;
1306
+ value: string;
1307
+ }
1308
+ interface RankOderType extends BaseCard {
1309
+ props: {
1310
+ labels: Labels;
1311
+ message: string;
1312
+ options: RankOrderOption[];
1313
+ properties: {
1314
+ captionText: string;
1315
+ buttonText?: string;
1316
+ conceptUrl: ConceptUrl;
1317
+ labels: Labels;
1318
+ required: boolean;
1319
+ randomize: Randomize;
1320
+ };
1321
+ routingOptions: RoutingOptions<"eq" | "gt" | "gte" | "lt" | "lte" | "neq">;
1322
+ };
1323
+ type: "rankorder";
1324
+ }
1295
1325
  interface VideoVoiceCard extends BaseCard {
1296
1326
  props: {
1297
1327
  message: string;
@@ -1311,7 +1341,7 @@ interface VideoVoiceCard extends BaseCard {
1311
1341
  };
1312
1342
  type: "videovoice";
1313
1343
  }
1314
- type Card = TextUrlPromptCard | ConsentLegalCard | RecordedTaskCard | LikertCard | OpenTextCard | MatrixCard | MultipleChoiceSingleSelectCard | MultipleChoiceMultiSelectCard | NPSCard | VideoVoiceCard;
1344
+ type Card = TextUrlPromptCard | ConsentLegalCard | RecordedTaskCard | LikertCard | OpenTextCard | MatrixCard | MultipleChoiceSingleSelectCard | MultipleChoiceMultiSelectCard | NPSCard | RankOderType | VideoVoiceCard;
1315
1345
 
1316
1346
  type InteractiveMatchType = "exactly" | "legacy";
1317
1347
  type PageUrlMatchType = "contains" | "exactly" | "legacy" | "notContains" | "regex" | "startsWith";
@@ -1340,9 +1370,11 @@ declare enum DismissReason {
1340
1370
  API = "api",// JS called Sprig('dismissActiveSurvey')
1341
1371
  Override = "override"
1342
1372
  }
1343
- type StudyType = "feedbackButton" | "inProductSurvey";
1373
+ type StudyType = "feedbackButton" | "inProductSurvey" | "longFormSurvey";
1344
1374
  declare enum SprigEvent {
1345
1375
  ReplayCapture = "replay.capture",
1376
+ ReplayPaused = "replay.paused",
1377
+ ReplayResumed = "replay.resumed",
1346
1378
  FeedbackButtonLoaded = "feedback.button.loaded",
1347
1379
  SDKReady = "sdk.ready",
1348
1380
  SurveyAppeared = "survey.appeared",
@@ -1539,6 +1571,8 @@ type SprigEventMap = {
1539
1571
  surveyId: number;
1540
1572
  }
1541
1573
  ];
1574
+ [SprigEvent.ReplayPaused]: [];
1575
+ [SprigEvent.ReplayResumed]: [];
1542
1576
  "av.permission": [
1543
1577
  {
1544
1578
  "stream.ready": (avStream: MediaStream | null, captureStream?: MediaStream | null) => void;
@@ -1672,6 +1706,7 @@ interface Config extends MobileReplayConfig {
1672
1706
  mode?: string;
1673
1707
  mute?: boolean;
1674
1708
  optimizelyEnabled?: boolean;
1709
+ outstandingTransactionLimit?: number | null;
1675
1710
  overlayStyle: "light";
1676
1711
  overlayStyleMobile: "none";
1677
1712
  pageUrlEvents: PageUrlEvent[];
@@ -1749,6 +1784,12 @@ type EventDigest = {
1749
1784
  timestamp: number;
1750
1785
  surveyId: string;
1751
1786
  type: "Sprig_SubmitSurvey";
1787
+ } | {
1788
+ timestamp: number;
1789
+ type: "Sprig_ReplayPaused";
1790
+ } | {
1791
+ timestamp: number;
1792
+ type: "Sprig_ReplayResumed";
1752
1793
  };
1753
1794
 
1754
1795
  declare namespace optimizely {
@@ -1899,6 +1940,8 @@ declare namespace sprigConfig {
1899
1940
  ) => void;
1900
1941
  trackHistory?: ({ event: string }) => void;
1901
1942
  unmute: () => void;
1943
+ pauseReplayRecording: () => void;
1944
+ resumeReplayRecording: () => void;
1902
1945
  }
1903
1946
 
1904
1947
  type SprigCommand = keyof SprigAPIActions;
@@ -1934,6 +1977,7 @@ declare namespace sprigConfig {
1934
1977
  locale?: string;
1935
1978
  maxHeight?: number | string;
1936
1979
  maxInflightReplayRequests?: number;
1980
+ outstandingTransactionLimit?: number | null;
1937
1981
  mobileHeadersJSON?: string;
1938
1982
  nonce?: string;
1939
1983
  partnerAnonymousId: string | null;
@@ -2020,12 +2064,17 @@ declare class SprigAPI {
2020
2064
  SURVEY_WILL_PRESENT: SprigEvent;
2021
2065
  QUESTION_ANSWERED: SprigEvent;
2022
2066
  REPLAY_CAPTURE: SprigEvent;
2023
- CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent;
2067
+ CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent; /**
2068
+ * Tracks a page view with the provided URL and additional event properties.
2069
+ */
2024
2070
  VISITOR_ID_UPDATED: SprigEvent;
2025
2071
  DATA: {
2026
2072
  DISMISS_REASONS: {
2027
2073
  API: DismissReason;
2028
2074
  CLOSED: DismissReason;
2075
+ /**
2076
+ * Apply a css string representing the customized styles
2077
+ */
2029
2078
  COMPLETE: DismissReason;
2030
2079
  PAGE_CHANGE: DismissReason;
2031
2080
  OVERRIDE: DismissReason;
@@ -2127,6 +2176,14 @@ declare class SprigAPI {
2127
2176
  * Clears Sprig from window
2128
2177
  */
2129
2178
  teardown(): void;
2179
+ /**
2180
+ * Pause replay recording
2181
+ */
2182
+ pauseReplayRecording(): void;
2183
+ /**
2184
+ * Resume replay recording
2185
+ */
2186
+ resumeReplayRecording(): void;
2130
2187
  }
2131
2188
  type NpmConfig = {
2132
2189
  envId?: string;
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { S as i, c as o, s as p } from "./core-DLrmR9wp.js";
1
+ import { S as i, c as o, s as p } from "./core-9nFfVPj6.js";
2
2
  import "./replay.js";
3
- import { D as t, S as m } from "./metricsReporter-qetrFwEv.js";
3
+ import { D as t, S as m } from "./metricsReporter-BzXI6BiM.js";
4
4
  export {
5
5
  t as DismissReason,
6
6
  i as SprigAPI,