@sprig-technologies/sprig-browser 2.42.1 → 2.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ "use strict";var wt=Object.defineProperty;var St=(r,e,s)=>e in r?wt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[e]=s;var F=(r,e,s)=>St(r,typeof e!="symbol"?e+"":e,s);const i=require("./metricsReporter-BGIzo9eh.cjs"),qe=()=>{try{return window.parent.Intercom}catch{return null}},Ve=[Object.freeze(Object.defineProperty({__proto__:null,disable:()=>{const r=qe();r&&(r.ul_wasVisible=!!document.querySelector("iframe.intercom-launcher-frame"),r.ul_wasVisible&&r("update",{hide_default_launcher:!0}))},enable:()=>{const r=qe();r&&(r.ul_wasVisible&&r("update",{hide_default_launcher:!1}),delete r.ul_wasVisible)}},Symbol.toStringTag,{value:"Module"}))];class Xe{static disable(){Ve.forEach(e=>e.disable())}static enable(){Ve.forEach(e=>e.enable())}}const We="ul-view-sdk-script",Lt=new Set(["ios","android"]),O="visitors",C="environments";async function _(r,e){var o,l,a;const{shouldDropOnRateLimit:s,...n}=e;n.headers=Object.assign(i.getHttpHeaders(window.UserLeap),n.headers);const t=await i.sprigFetch(r,{...n,shouldDropOnRateLimit:s});if(t.ok){const d=(o=t.headers)==null?void 0:o.get("Authorization"),c=d?d.split(" "):void 0,p=c&&c.length===2?c[1]:void 0,g=(l=t.headers)==null?void 0:l.get("x-ul-visitor-id");if(window.UserLeap.userId&&g===window.UserLeap.visitorId){const y=i.localStorageHelper.getItemObject("sprig.anon.env.vid.map");y&&y[window.UserLeap.envId]===g&&(delete y[window.UserLeap.envId],i.localStorageHelper.setItemObject("sprig.anon.env.vid.map",y))}p&&g&&(g!==window.UserLeap.visitorId||window.UserLeap.token!==p)&&(I("token",p),I("vid",g),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:g}),window.UserLeap.token=p,window.UserLeap.visitorId=g)}return(a=t.json)!=null&&a.logMessage&&console.warn(`[Sprig] ${t.json.logMessage}`),t}function I(r,e){const s=i.localStorageHelper.getItemObject("userleap.ids");let n=s[window.UserLeap.envId];n?n[r]=e:n={[r]:e},s[window.UserLeap.envId]=n,i.localStorageHelper.setItemObject("userleap.ids",s)}function ke(){return window.previewMode?"0":window.UserLeap.visitorId??""}function R(r,e,s){const n=[window.UserLeap._API_URL,"sdk",r];return e&&e.forEach(t=>{n.push(t),t===C?n.push(window.UserLeap.envId):t===O&&n.push(ke())}),s&&n.push(s),n.join("/")}const G=async(r,e,s)=>{var Pe,He,Me,Fe;const{context:n,delay:t,avatars:o,experimentFlags:l,forceBrandedLogo:a,endCard:d,isFeedback:c=!1,heatmap:p,locale:g,layout:y,previewMode:b,productConfig:u,questions:h,responseGroupUid:v,surveyId:m,uuid:U,vid:w,sessionReplay:T,studyType:P,surveyVisitorAttributes:L}=r,E=i.getHttpHeaders(window.UserLeap),A=Y(E),V=ce(E);if(T)if(A)i.eventEmitter.emit(i.SprigEvent.ReplayCapture,{responseGroupUid:v,hasQuestions:!!(h!=null&&h.length),surveyId:m,uploadId:T.uploadId,replayType:T.replayDurationType??"before",seconds:T.replayDurationSeconds,generateVideoUploadUrlPayload:{mediaRecordingUid:i.v4(),mediaType:"screen",questionId:1,responseGroupUid:v,surveyId:m,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:v,surveyId:m,visitorId:w,replayParams:T,completeUploadHeaders:E,apiUrl:window.UserLeap._API_URL,triggerTimestamp:Date.now(),isStandalone:h.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:S,replayParams:M,responseGroupUid:he,surveyId:ye}=p;await i.modules.replay.initializeReplay({maxReplayDurationSeconds:300,maxInflightRequests:window.UserLeap.maxInflightReplayRequests,teardownAfter:!0,apiUrl:window.UserLeap._API_URL,replaySettings:s}),i.modules.replay.tryReplayAction(()=>{var je;return(je=i.modules.replay)==null?void 0:je.scheduleCapture({apiUrl:window.UserLeap._API_URL,completeUploadHeaders:E,eventId:S,isHeatmap:!0,replayParams:M,responseGroupId:he,surveyId:ye,triggerTimestamp:Date.now(),visitorId:w})},"Error in scheduling/capturing replay")}if(w==null||!(h!=null&&h.length))return i.breadcrumbsLogger.info("CannotDisplaySurvey",{vid:w}),{success:!1,message:"[Sprig] no survey found",surveyState:window.UserLeap.container?"previous survey ready":"no survey"};if(window.UserLeap.container){i.breadcrumbsLogger.info("AlreadyDisplayingSurvey");const S="[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";return console.warn(S),{success:!1,message:S,surveyState:"previous survey ready"}}if(w!==window.UserLeap.visitorId&&U!==window.UserLeap.visitorId&&!window.previewMode){const S="Attempted to display survey to a different visitor";return window.UserLeap.reportError("DisplaySurvey",new Error(S)),{success:!1,message:S,surveyState:"no survey"}}i.breadcrumbsLogger.info("ShowingSurvey",{surveyId:m}),(Pe=i.modules.replay)==null||Pe.RecordSurveyShown({id:m,userAgent:window.navigator.userAgent}),Xe.disable(),i.eventEmitter.emit(i.SprigEvent.SurveyWillPresent,{name:i.SprigEvent.SurveyWillPresent,"survey.id":m,layout:y});let H,N,k,ee,te=document.createElement("div");const xe=S=>{const{"view.version":M}=S;M!==E["x-ul-sdk-version"]&&et(),i.eventEmitter.removeListener("verify.view.version",xe)};i.eventEmitter.on("verify.view.version",xe),window.UserLeap.useMobileStyling=V,i.shouldDirectEmbed(E)?(H="ul-direct-embeded-frame",N=document.head,k=window,ee=!1,(()=>{const S=i.getHttpHeaders(window.UserLeap),M=Y(S),he=window.UserLeap.forceDirectEmbed,ye=S["userleap-platform"]==="web";return M||he&&ye})()&&(Ze(m,c),te.id=H,window.UserLeap.container.appendChild(te),tt(),i.eventEmitter.emit(i.SprigEvent.SurveyLifeCycle,{state:"presented"}),i.eventEmitter.emit(i.SprigEvent.SurveyPresented,{name:i.SprigEvent.SurveyPresented,"survey.id":m}))):{frameId:H,contentWinDocHead:N,contentWindow:k,hasOverlay:ee,iframe:te}=Et({productConfig:u,useMobileStyling:V,surveyId:m,isFeedback:c,enableCspTrustedTypes:(He=window.UserLeap._config)==null?void 0:He.enableCspTrustedTypes}),window.UserLeap.frameId=H;const W={apiURL:window.UserLeap._API_URL,avatars:o,cards:h,configureExitOnOverlayClick:S=>{i.eventEmitter.once(i.SprigEvent.CloseSurveyOnOverlayClick,S)},context:n,endCard:d,envId:window.UserLeap.envId,eventEmitFn:i.eventEmitter.emit.bind(i.eventEmitter),experimentFlags:l,fontFamily:window.UserLeap.fontFamily,fontFamilyURL:window.UserLeap.fontFamilyURL,forceBrandedLogo:a,frame:te,headers:E,layout:y,locale:g,mobileSDKVersion:window.UserLeap.mobileSDKVersion,previewKey:i.sessionStorageHelper.getItem("sprig.previewKey"),previewMode:b||!!window.previewMode,productConfig:{framePosition:u==null?void 0:u.framePosition,desktopDisplay:u==null?void 0:u.desktopDisplay,placement:u==null?void 0:u.placement},responseGroupUid:v,startingQuestionIdx:(Me=window.UserLeap.config)==null?void 0:Me.startingQuestionIdx,studyType:P,styleNonce:window.UserLeap.styleNonce,surveyId:m,tabTitle:document.title,trackPageViewUrl:e,ulEvents:i.EVENTS,upchunkLibraryURL:window.UserLeap.upchunkLibraryURL,useMobileStyling:V,userId:U,viewDocument:k==null?void 0:k.document,viewWindow:k,visitorAttributes:{externalUserId:window.UserLeap.userId,email:window.UserLeap.email},surveyVisitorAttributes:L||{},...window.UserLeap._config};(Fe=window.UserLeap._config)!=null&&Fe.startingQuestionIdx&&(window.UserLeap._config={...window.UserLeap._config,startingQuestionIdx:null});const ft=(c?window.UserLeap.feedbackCustomStyles:window.UserLeap.customStyles)??u.customStyles;W.customStyles=ft,k&&(k.__cfg=W);const ue=window.UserLeap.viewSDKURL?window.UserLeap.viewSDKURL:W.path,Ae=document.getElementById(We);Ae&&Ae.remove();const me=function(){const S=document.createElement("script");return window.UserLeap.isMobileSDK||S.setAttribute("type","module"),window.UserLeap.nonce&&S.setAttribute("nonce",window.UserLeap.nonce),S.id=We,S}(),Oe=()=>{window.UserLeap.container&&Object.assign(window.UserLeap.container.style,{display:"flex"})};if(W.installationMethod==="web-npm"||W.installationMethod==="web-npm-bundled"){const{default:S}=await Promise.resolve().then(()=>require("./view-5xam8eBF.cjs")).then(M=>M.view);S.configure(W),ee&&window.UserLeap.container&&Oe()}else ue&&(me.src=`${ue}${window.UserLeap.isMobileSDK?"":`?t=${Date.now()}`}`,ee&&me.addEventListener("load",()=>{window.UserLeap.container&&Oe()}),k==null||k.addEventListener("error",S=>{S.target instanceof HTMLScriptElement&&S.target.src===ue&&window.UserLeap.reportError("loadFrameScript",new Error("Frame script failed to load"))},{capture:!0,once:!0}));N==null||N.appendChild(me);const Ce={success:!0,surveyState:"ready",surveyId:m,responseGroupUid:v};return window.UserLeap.isMobileSDK&&t&&(Ce.delay=t),Ce};function ce(r){var s;if(window.UserLeap.useMobileStyling!==void 0)return window.UserLeap.useMobileStyling;const e=((s=window.UserLeap.windowDimensions)==null?void 0:s.width)??document.body.clientWidth;return Y(r)||e>10&&e<500}function Y(r){return Lt.has(r["userleap-platform"])}const ze=new WeakMap,Ut=(r,e)=>{try{return(n=>{var l,a;const t=ze.get(n);if(t)return t;if(!((l=n.trustedTypes)!=null&&l.createPolicy))throw new Error("Trusted types not supported");const o=(a=n.trustedTypes)==null?void 0:a.createPolicy("sprig-sdk",{createHTML:d=>d,createScript:d=>d,createScriptURL:d=>d});return ze.set(n,o),o})(e).createHTML(r)}catch(s){return console.warn("Could not create TrustedHTML object",s),r}},ge=(r,e,s=window)=>{var n;return e&&((n=s.trustedTypes)!=null&&n.createPolicy)?Ut(r,s):r},Re="ul-frame";globalThis.UserLeap&&globalThis.Sprig&&(globalThis.Sprig._gtm?globalThis.Sprig=globalThis.UserLeap:globalThis.UserLeap=globalThis.Sprig),globalThis.UserLeap||(globalThis.UserLeap=globalThis.Sprig),globalThis.Sprig||(globalThis.Sprig=globalThis.UserLeap);const be="0px",Ze=(r,e,s)=>{globalThis.UserLeap.container=document.createElement("div"),globalThis.UserLeap.container.className="ul-container"+(e?" ul-container-feedback":""),r&&(globalThis.UserLeap.container.dataset.studyId=r.toString());const n=st();s&&n&&!globalThis.UserLeap.useMobileStyling?n.appendChild(globalThis.UserLeap.container):document.body.appendChild(globalThis.UserLeap.container)},et=(r,e)=>{var n;kt();const s=globalThis.UserLeap.container;if(s)try{(n=s.parentNode)==null||n.removeChild(s),globalThis.UserLeap.container=null,I("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(s.dataset.studyId),...e&&{studyType:e}})}catch(t){console.warn(`[Sprig] (ERR-412) Error removing UserLeap container by ${r} `+s),t instanceof Error&&globalThis.UserLeap.reportError("dismissActiveSurvey",t)}},tt=()=>{i.eventEmitter.once(i.SprigEvent.SurveyWillClose,({initiator:r,studyType:e})=>{i.eventEmitter.removeAllListeners(i.SprigEvent.CloseSurveyOnOverlayClick),et(r,e)})},Tt=(r,e,s,n)=>{var p,g;const t={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%"},o=Object.assign({},e,globalThis.UserLeap),{desktopDisplay:l}=e||{},a=l==="center-modal";let d;a&&(o.framePosition="center");let c=!1;if(s)(p=globalThis.UserLeap.windowDimensions)!=null&&p.width?t.width=`${globalThis.UserLeap.windowDimensions.width}px`:t.width="100%",(g=globalThis.UserLeap.windowDimensions)!=null&&g.height?t.maxHeight=globalThis.UserLeap.windowDimensions.height-20+"px":globalThis.UserLeap.maxHeight?t.maxHeight=globalThis.UserLeap.maxHeight:t.maxHeight=document.body.clientHeight-20+"px",["light","dark"].includes(o.overlayStyleMobile)&&(c=!0);else{t.width="360px",t.maxHeight=globalThis.UserLeap.maxHeight||"66vh";const y=()=>{c=!0,d={margin:"auto",position:"static"}};if(n)a?y():d={position:"relative",height:"300px"};else switch(o.framePosition){case"bottomLeft":d={left:be};break;case"topLeft":d={left:be,top:0};break;case"topRight":d={top:0};break;case"center":y()}}return c&&((y,b)=>{const u={position:"fixed",overflow:"auto",top:"0px",left:"0px",display:"none",height:"100%",width:"100%",transition:"background-color 0.3s ease-out",zIndex:2147483646},h=b?y.overlayStyleMobile:y.overlayStyle;u["background-color"]=h==="light"?"rgba(255,255,255, 0.95)":"rgba(0,0,0,0.9)",b||(u.margin="auto"),globalThis.UserLeap.container&&Object.assign(globalThis.UserLeap.container.style,u)})(o,s),Object.assign(r.style,t,d),c},Et=({productConfig:r,useMobileStyling:e,surveyId:s,isFeedback:n,enableCspTrustedTypes:t})=>{var b,u;const o=Re,l=n&&r.desktopDisplay==="slider";Ze(s,n,l),It();const a=document.createElement("iframe");a.id=o,a.setAttribute("title","Sprig User Feedback Dialog");const d=Tt(a,r,e,n);tt();let c=!1;a.setHeight=h=>{parseInt(a.style.height)==h&&c||(c=!0,a.style.height=`${h}px`,i.eventEmitter.emit(i.SprigEvent.SurveyHeight,{name:i.SprigEvent.SurveyHeight,contentFrameHeight:h,"survey.id":s}))};let p=!1;a.setWidth=h=>{parseInt(a.style.width)==h&&p||(p=!0,a.style.width=`${h}px`,i.eventEmitter.emit(i.SprigEvent.SurveyWidth,{name:i.SprigEvent.SurveyWidth,contentFrameWidth:h,"survey.id":s}))},(b=globalThis.UserLeap.container)==null||b.appendChild(a),r&&(e?r.exitOnOverlayClickMobile:r.exitOnOverlayClick)&&globalThis.UserLeap.container&&(globalThis.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":s});const g=(u=a.contentWindow)==null?void 0:u.document;if(g&&(g.open("text/html","replace"),g.write(ge("<!doctype html><head></head><body></body></html>",t,a.contentWindow)),g.close(),!e)){const h=g.body;h.style.display="flex",h.style.alignItems="center"}const y=g==null?void 0:g.head;return{frameId:o,contentWinDocHead:y,contentWindow:a.contentWindow,hasOverlay:d,iframe:a}},rt={[i.SprigEvent.SurveyFadingOut]:()=>{globalThis.UserLeap.container&&Object.assign(globalThis.UserLeap.container.style,{"background-color":"rgba(0,0,0,0)"})}},It=()=>{Object.entries(rt).forEach(([r,e])=>{i.eventEmitter.on(r,e)})},kt=()=>{Object.entries(rt).forEach(([r,e])=>{i.eventEmitter.off(r,e)})},x=r=>!!r&&r.nodeType===Node.ELEMENT_NODE,Ne=r=>r instanceof HTMLElement||r instanceof SVGElement,X=({document:r,elementId:e,styleString:s,nonce:n})=>{const t=r.getElementById(e);if(t)return void(t.textContent=s);const o=r.createElement("style");n&&(o.nonce=n),o.textContent=s,o.id=e,r.head.appendChild(o)},Be=(r,e)=>{const s=e.querySelector(r);if(!x(s))return 0;const n=getComputedStyle(s);return parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)+(parseFloat(n.marginLeft)+parseFloat(n.marginRight))+(parseFloat(n.borderLeftWidth)+parseFloat(n.borderRightWidth))},it=(r,e,s)=>{const n=r.querySelector(".ul-card__container"),t=r.querySelector(".ul-app");let o=600,l=360;if(x(n)&&x(t)){const a=n.querySelector(".ul-card--matrix_grid"),d=!a&&e&&s;try{d&&(t.style.width="360px"),o=n.scrollHeight,o+=(g=>{const y=g.querySelector(".sprig-question-body"),b=g.querySelector(".ul-card"),u=g.querySelector(".ul-card-main-content"),h=g.querySelector(".ul-footer"),v=g.querySelector(".sprig-container");let m=0;return x(b)&&(m+=b.scrollHeight-b.clientHeight),x(u)&&(m+=u.scrollHeight-u.clientHeight),x(y)&&(m+=y.scrollHeight-y.clientHeight),x(h)&&x(v)&&v.clientHeight===0&&(m+=h.clientHeight),m})(r);const c=getComputedStyle(n),p=parseFloat(c.marginTop)+parseFloat(c.marginBottom);o+=p+(parseFloat(c.borderTopWidth)+parseFloat(c.borderBottomWidth)),a&&(l=a.scrollWidth,l+=Be(".ul-card__container",r),l+=Be(".sprig-question-body",r))}finally{d&&t.style.removeProperty("width")}}return[o+2,l]},st=()=>f,z=()=>document.getElementById("sprig-feedback-container"),Se=()=>document.getElementById("sprig-feedback-loading-animation"),ot=()=>!!document.getElementById(Re);let $e=!1,f=null,D=null,_e=!1,K=null,j=null;const Rt=["bottom-left","bottom-right","center-left","center-right"],se=()=>{var e;const r=window.UserLeap.container;return((e=r==null?void 0:r.parentElement)==null?void 0:e.id)==="sprig-feedback-loading-container"},nt=()=>document.getElementById("sprig-feedback-error-container"),at=()=>{if(!f)return 0;const r=f==null?void 0:f.clientWidth,e=window.getComputedStyle(f);return r+parseInt(e.borderRightWidth||"0")+parseInt(e.borderLeftWidth||"0")},oe=r=>{const e=z();e&&(j!=null&&j.endsWith("right")?e.style.right=`${r}px`:j!=null&&j.endsWith("left")&&(e.style.left=`${r}px`))},ve=()=>{if(f&&(se()||nt())){i.eventEmitter.off(i.SprigEvent.SurveyAppeared,$),Le();const r=at();return oe(-r),!0}return!1},$=()=>{if(!f||!D)return;const r=Se();r&&r.remove(),f.style.height="auto",f.style.width="auto",D.disabled=!1,_e=!1},Le=()=>{if(f&&!Se()){const r=(()=>{var s;if(Se())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=ge(`
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
+ `,(s=window.UserLeap._config)==null?void 0:s.enableCspTrustedTypes),e})();r&&(f.style.height="300px",f.style.width="360px",f.appendChild(r))}},Ge=()=>{f&&D&&(oe(0),D.disabled=!0,_e=!0)},lt=async(r,e,s)=>{const{buttonTheme:n,customStyles:t,eventId:o,placement:l,desktopDisplay:a,feedbackLabel:d,surveyUuid:c,surveyId:p}=r;window.UserLeap.feedbackCustomStyles=void 0;let g=z();if(g){if(!e&&o===K)return;g.remove(),i.eventEmitter.off(i.EVENTS.SURVEY_FADING_OUT,ve)}K=o,X({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}),X({document,elementId:"ul-custom-style",styleString:t??"",nonce:window.UserLeap.styleNonce}),$e=a==="center-modal",j=l;const[y,b]=l.split("-");(m=>{if(z()||!Rt.includes(m))return;const[U,w]=m.split("-"),T=document.createElement("div");T.id="sprig-feedback-container",T.classList.add(`sprig-feedback-container-${w}`,`sprig-feedback-container-${U}`),document.body.appendChild(T)})(l),g=z(),D=document.createElement("button");const u=document.createElement("div");u.className="sprig-feedback-button-label",u.innerText=d,D.appendChild(u),D.id="sprig-feedback-button",D.classList.add(`sprig-feedback-button-${b}`,`sprig-feedback-button-${y}`,`sprig-feedback-button-${n}`,"fade-in-transition"),i.eventEmitter.on(i.EVENTS.SURVEY_FADING_OUT,ve),D.addEventListener("click",async()=>{const m=document.getElementById("sprig-feedback-error-container");if(ot()||nt()){if(ve()){i.eventEmitter.emit(i.SprigEvent.SurveyCloseRequested,{name:i.SprigEvent.SurveyCloseRequested,initiator:i.DismissReason.FeedbackClosed,studyType:"feedbackButton","survey.id":p}),i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:i.DismissReason.FeedbackClosed,studyType:"feedbackButton","survey.id":p});const w=z();m&&w&&(w.remove(),K=null,f=null)}return}if(ce(i.getHttpHeaders(window.UserLeap))||_e||Ge(),e)return f&&f.classList.add("sprig-feedback-loading-container-previews"),await G(e),void $();const U=await(async w=>{const T=await _(R("1",[O],"startFeedbackStudy"),{body:JSON.stringify({surveyUuid:w}),method:"POST"});return T.ok?T.json:null})(c);if(U)i.eventEmitter.once(i.SprigEvent.SurveyAppeared,$),G({...U,studyType:"feedbackButton"},s);else if(f){const w=_t();f.appendChild(w),$(),f.style.height="300px",f.style.width="360px"}}),g==null||g.appendChild(D),i.eventEmitter.emit(i.SprigEvent.FeedbackButtonLoaded,{name:i.SprigEvent.FeedbackButtonLoaded,"survey.id":p});const{useMobileStyling:h,_config:{border:v}}=window.UserLeap;if($e||h)oe(0);else{const m=document.createElement("div");m.id="sprig-feedback-loading-container",m.className=`sprig-feedback-loading-container sprig-feedback-loading-container-${b}`,m.style.setProperty("--feedback-border",v),f=m,Le(),g==null||g.appendChild(m);const U=at();oe(-U)}window.UserLeap._config.isOnQuestionsTab&&e&&!se()&&f&&(Ge(),Le(),f&&f.classList.add("sprig-feedback-loading-container-previews"),G(e),$())},_t=()=>{var s;const r=document.createElement("div");r.id="sprig-feedback-error-container",r.innerHTML=ge(`<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>`,(s=window.UserLeap._config)==null?void 0:s.enableCspTrustedTypes);const e=document.createElement("h3");return e.className="sprig-feedback-error-text",e.innerText="There was an error while loading the survey",r.appendChild(e),r},Ue=new class{constructor(){F(this,"_ldData",{})}getAllLaunchDarklyVariations(){return this._ldData}setLDFlagsVariations(r){try{return!(!r||typeof r!="object"||Array.isArray(r))&&(Object.keys(this._ldData).forEach(e=>{delete this._ldData[e]}),Object.keys(r).forEach(e=>this._ldData[`!launch_darkly_${e}`]=(r[e]??0)+1),!0)}catch(e){return e instanceof Error&&window.UserLeap.reportError("setAllLDFlagsVariations",e),console.warn("[Sprig] An issue had occured when setting LaunchDarkly flags and variations."),!1}}};Object.freeze(Ue);const ie=new class{constructor(){F(this,"_optimizelyData",{})}setOptimizelyExperiment(r,e=!0){if(!r||typeof r!="object")return!1;const{experiments:s}=r;try{return e&&Object.keys(this._optimizelyData).map(n=>{delete this._optimizelyData[n]}),s&&s.map(n=>{const{id:t,variation:o}=n,l=this.transformExperimentId(t);o&&typeof o=="string"&&(this._optimizelyData[l]=o)}),!0}catch(n){return n instanceof Error&&window.UserLeap.reportError("setOptimizelyExperiment",n),!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 e=(r=window.optimizely.get("state"))==null?void 0:r.getExperimentStates({isActive:!0});if(e){const s=Object.keys(e).map(n=>{var t,o;return(t=e[n].variation)!=null&&t.name?{id:n,variation:(o=e[n].variation)==null?void 0:o.name}:{id:n,variation:"Original"}});return this.setOptimizelyExperiment({experiments:s},!1),!0}return!1}return!1}catch(e){return e instanceof Error&&window.UserLeap.reportError("getAndSetWebOptimizely",e),!1}}};Object.freeze(ie);class Dt{constructor(e,s){F(this,"paused");F(this,"queue");F(this,"ul");this.ul=e,this.paused=!1,this.queue=[],this.flush(s)}flush(e){const s=e.length;if(s)for(let n=0;n<s;n++)this.push(e[n])}isPaused(){return this.paused}pause(){this.paused=!0}unpause(){this.paused=!1;const e=this.queue.slice();this.empty(),this.flush(e)}push(e){if(this.paused)this.queue.push(e);else if(e instanceof Function)e();else{const s=Array.prototype.slice.call(e,1),n=e[0],t=this.ul[n];t instanceof Function?t.apply(this.ul,s):n&&console.warn("[Sprig] (ERR-100) No valid UserLeap action called",n)}}perform(e){if(this.paused){let s=()=>{};const n=new Promise(function(t){s=function(){t(e())}});return this.queue.push(s),n}return e()}empty(){this.queue.length=0}}let dt,pt;const Te=r=>{let e=0,s=r.firstElementChild;for(;s;)e+=Te(s),s.shadowRoot&&(e+=Te(s.shadowRoot)),s=s.nextElementSibling,e++;return e},Ke=()=>{dt.report(Te(document.body)),pt.report(document.documentElement.innerHTML.toString().length)},Ee=(r,e)=>{const s=performance.now();document.hidden?setTimeout(()=>Ee(r,e),r):setTimeout(()=>{const n=performance.now()-s;e.report(n/1e3),setTimeout(()=>Ee(r,e),r)},0)};let ne,ae,le,de,Je,q={};const re=(r,e=1)=>{const{name:s}=r;q[s]=(q[s]||0)+e},ct=r=>{let e=1;return r.childNodes.forEach(s=>{e+=ct(s)}),e},Qe=r=>{let e=0;return r.forEach(s=>{e+=ct(s)}),e},xt=r=>{switch(r.type){case"childList":return re(ne,Qe(r.addedNodes)),void re(ae,Qe(r.removedNodes));case"attributes":return void re(le);case"characterData":return void re(de)}},At=r=>r.forEach(xt),Ot=()=>{ne.report(q[ne.name]||0),ae.report(q[ae.name]||0),le.report(q[le.name]||0),de.report(q[de.name]||0),q={}},Ct=(r=1e3)=>{ne=i.registerMetric("sdk_mutations_nodes_added"),ae=i.registerMetric("sdk_mutations_nodes_removed"),le=i.registerMetric("sdk_mutations_attributes_changed"),de=i.registerMetric("sdk_mutations_character_data"),Je=new MutationObserver(At),Je.observe(document,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),setInterval(Ot,r)},Pt=({isWeb:r,reportingIntervalSeconds:e,thresholds:s,postMetrics:n})=>{i.registerThresholds(s,(t,o)=>{var l,a;if((l=i.modules.replay)!=null&&l.isReplayRecording()){const d=`Value: ${t} on ${o.metric} violated threshold of ${o.type} ${o.value}`;(a=i.modules.replay)==null||a.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:e,postMetrics:n}),r&&(((t=1e3)=>{const o=i.registerMetric("sdk_event_queue_latency_seconds");Ee(t,o)})(),((t=1e4)=>{dt=i.registerMetric("sdk_dom_nodes_count"),pt=i.registerMetric("sdk_page_html_characters"),Ke(),setInterval(Ke,t)})(),Ct())},Ht="test",Mt=["popState","pushState","replaceState"];let De,J;const pe={},B="!email",gt="pageUrl";var Ye;let fe=((Ye=globalThis.location)==null?void 0:Ye.href)||"";function Q(r){var a,d;const{pageUrlEvents:e,interactiveEvents:s,dismissOnPageChange:n,platform:t}=globalThis.UserLeap._config;if(t&&t!=="web")return;fe!==globalThis.location.href&&i.breadcrumbsLogger.navigation("LocationChange",{from:fe,to:globalThis.location.href}),fe=globalThis.location.href;const o=ht().trackStartUrl,l=o?String(o):null;e&&bt(globalThis.location.href),s&&(mt(),Ft()),st()&&(()=>{if(se())return;const c=z();c&&(i.checkUrlStillMatching(K)||(c.remove(),K=null,f=null))})(),i.sessionStorageHelper.getItem("sprig.isCapturingHeatmap")&&((d=(a=i.modules.replay)==null?void 0:a.checkPendingHeatmapsUrl())==null||d.then(c=>{var p;c&&((p=i.modules.replay)==null||p.uploadReadyPendingCaptures(!0))})),!se()&&n&&l&&l!==globalThis.location.href&&r&&Mt.includes(r.type)&&globalThis.UserLeap("dismissActiveSurvey",i.DismissReason.PageChange)}const ut={capture:!0},Ft=()=>{const r=globalThis.UserLeap._config.interactiveEvents.filter(s=>i.checkUrlMatch(s,globalThis.location.href)).map(s=>{const{name:n,properties:t}=s,{selector:o,innerText:l}=t;return o?a=>{if(Ne(a.target))try{a.target.closest(o)&&globalThis.UserLeap("track",n)}catch{}return!1}:a=>(Ne(a.target)&&a.target.innerText===l&&globalThis.UserLeap("track",n),!1)}),e=s=>r.forEach(n=>n(s));globalThis.UserLeap._config.interactiveEventsHandler=e,globalThis.addEventListener("click",e,ut)},mt=()=>{globalThis.UserLeap._config.interactiveEventsHandler&&globalThis.removeEventListener("click",globalThis.UserLeap._config.interactiveEventsHandler,ut),delete globalThis.UserLeap._config.interactiveEventsHandler};function ht(){const r=i.localStorageHelper.getItemObject("userleap.ids");return(r==null?void 0:r[globalThis.UserLeap.envId])||{}}function yt(){if(globalThis.previewMode)return;const r=i.localStorageHelper.getItemObject("sprig.anon.env.vid.map")||{},e=r[globalThis.UserLeap.envId];globalThis.UserLeap.visitorId=e||i.v4(),i.breadcrumbsLogger.info("NewVid",{vid:globalThis.UserLeap.visitorId}),I("vid",globalThis.UserLeap.visitorId),e||(r[globalThis.UserLeap.envId]=globalThis.UserLeap.visitorId,i.localStorageHelper.setItemObject("sprig.anon.env.vid.map",r)),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:globalThis.UserLeap.visitorId})}function bt(r,e,s,n){var t,o;try{if(r.endsWith("mock_snippet.html"))return;i.breadcrumbsLogger.info("PageView",{url:r});const l=(t=document==null?void 0:document.querySelector('meta[name="description"]'))==null?void 0:t.getAttribute("content");(o=i.modules.replay)==null||o.RecordPageView({...l&&{description:l},url:r,referrer:document.referrer,pageTitle:document.title});const a=globalThis.UserLeap._config.pageUrlEvents;let d=!1;if(a&&a.length)for(let p=0;p<a.length&&(d=i.checkUrlMatch(a[p],r),!d);p++);if(!d)return;globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig trackPageView",r);const c={url:r};n&&(c.trackPageView=!0),globalThis.UserLeap._queue.push(["track",gt,e,c,s])}catch(l){l instanceof Error&&(l.stack=r,globalThis.UserLeap.reportError("trackPageView",l)),console.warn("[Sprig] (ERR-428) Failed to track page view",l)}}function jt(){var e;const r=((e=globalThis.Backbone)==null?void 0:e.history)||globalThis.history;"pushState"in r&&(r.pushState=(s=>function(...n){const t=s.apply(this,n),o=new Event("pushState");return globalThis.dispatchEvent(o),Q(o),t})(r.pushState)),"replaceState"in r&&(r.replaceState=(s=>function(...n){const t=s.apply(this,n),o=new Event("replaceState");return globalThis.dispatchEvent(o),Q(o),t})(r.replaceState)),["hashchange","popstate"].forEach(s=>globalThis.addEventListener(s,Q,!0))}async function we(r,e){const s=ke();r&&!e&&(globalThis.UserLeap._config.mode=Ht);const n=ce(i.getHttpHeaders(globalThis.UserLeap)),t=await _(function(o){const l=new URL(R("1",[C],"questions"));return Object.entries(o||{}).forEach(([a,d])=>{d&&l.searchParams.append(a,String(d))}),l.toString()}({desktopDisplay:globalThis.UserLeap._config.desktopDisplay,isMobile:n,previewLanguage:globalThis.UserLeap._config.previewLanguage,surveyid:r==null?void 0:r.surveyId,surveytemplateid:r==null?void 0:r.surveyTemplateId,vid:s}),{shouldDropOnRateLimit:!0});if(!t.ok)return t.reportError&&t.error&&(console.warn("[Sprig] (ERR-414) Failed to request questions from the server",t.error),globalThis.UserLeap.reportError("getQuestions",t.error)),{success:!1,surveyState:"no survey"};if(t.json.delay&&await i.delay(t.json.delay),!t.json.isFeedback)return G(t.json,J,De);{const{feedbackLabel:o,productConfig:l,surveyUuid:a,feedbackCustomStyles:d}=t.json,{buttonTheme:c,placement:p,desktopDisplay:g}=l;lt({customStyles:d,buttonTheme:c,desktopDisplay:g,eventId:0,feedbackLabel:o,placement:p,surveyUuid:a,surveyId:r==null?void 0:r.surveyId},t.json)}}function qt(r){if(!r)return;globalThis.UserLeap._config=r,r.mute&&globalThis.UserLeap._queue.pause();const{interactiveEvents:e,pageUrlEvents:s,dismissOnPageChange:n}=r;e&&function(t){let o=t.length;for(;o;){const l=Math.floor(Math.random()*o);o-=1;const a=t[o];t[o]=t[l],t[l]=a}}(e),(e||s||n)&&(jt(),Q())}const Vt=function(r){if(!globalThis.UserLeap)return;const e=async(t={})=>{var m,U,w,T,P;const{userId:o,anonymousId:l,metadata:a={},properties:d,showSurveyCallback:c}=t;let{eventName:p}=t;if(globalThis.UserLeap.debugMode&&p!==gt&&console.info("[DEBUG] Sprig track",t),r.mode==="test")return;const g=i.sessionStorageHelper.getItem("sprig.previewKey")??void 0;if(r.requireUserIdForTracking&&!globalThis.UserLeap.userId&&!o){const L="[Sprig] - Skipping tracking without userId";return console.warn(L),{success:!1,message:L,surveyState:"no survey"}}if(!p||p.trim().length===0){p=p?String(p):"";const L="[Sprig] - Invalid event name "+p;return console.warn(L),{success:!1,message:L,surveyState:"no survey"}}const y=J??globalThis.location.href;a.url||(a.url=y),I("trackStartUrl",y),(U=(m=globalThis.UserLeap)==null?void 0:m._config)!=null&&U.optimizelyEnabled&&(Y(i.getHttpHeaders(globalThis.UserLeap))||ie.getAndSetWebOptimizelyExperiments(),a.optimizelyExperiments=Object.assign({},ie.getAllOptimizelyExperiments())),(T=(w=globalThis.UserLeap)==null?void 0:w._config)!=null&&T.launchDarklyEnabled&&(a.launchDarklyFlags=Ue.getAllLaunchDarklyVariations()),o&&(globalThis.UserLeap.userId=o),l&&(globalThis.UserLeap.partnerAnonymousId=l),d&&(a.eventProperties=d),(P=i.modules.replay)==null||P.RecordEvent({name:p,url:a.url}),i.breadcrumbsLogger.info("TrackEvent",{eventName:p});const b=globalThis.UserLeap.delayingSurvey||ot()?await _(R("1",[O],"events/batch"),{body:JSON.stringify({events:[{event:p,metadata:a}],previewKey:g}),method:"POST",shouldDropOnRateLimit:!0}):await _(R("1",[O],"events"),{body:JSON.stringify({event:p,metadata:a,previewKey:g}),method:"POST",shouldDropOnRateLimit:!0});if(!b.ok){const L="[Sprig] (ERR-421) Failed to track event";return b.reportError&&(console.warn(L,b.error),b.error&&globalThis.UserLeap.reportError("track",b.error)),{success:!1,message:L,error:b.error,surveyState:"no survey"}}o&&I("uid",o),l&&I("aid",l);const u=b.json;u.invalidPreviewKey&&i.sessionStorageHelper.removeItem("sprig.previewKey");const h=a.trackPageView?a.url:void 0;return u!=null&&u.feedbackButton&&lt(u.feedbackButton,void 0,h),await async function(L,E){var V,H;let A=!0;return!(E&&((V=L==null?void 0:L.json)!=null&&V.surveyId)&&(globalThis.UserLeap.delayingSurvey=!0,A=await E(L.json.surveyId),globalThis.UserLeap.delayingSurvey=!1,!A))&&((H=L==null?void 0:L.json)!=null&&H.delay&&!globalThis.UserLeap.isMobileSDK&&(globalThis.UserLeap.delayingSurvey=!0,await i.delay(L.json.delay),globalThis.UserLeap.delayingSurvey=!1),A)}(b,c)?function(L){if(!globalThis.UserLeap._config.dismissOnPageChange)return!0;const E=new URL(L),A=new URL(J??globalThis.location.href);return E.hostname===A.hostname&&E.pathname===A.pathname}(y)?G(u,h,De):{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"}},s=(t,o)=>{var a;const l=(a=t==null?void 0:t.querySelector(`[id="${Re}"]`))==null?void 0:a.contentDocument;l&&X({document:l,elementId:"ul-custom-style",styleString:o})},n={displaySurvey:async t=>(console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."),globalThis.UserLeap("dismissActiveSurvey",i.DismissReason.Override),we({surveyId:t},!0)),_previewSurvey(t){globalThis.UserLeap("dismissActiveSurvey",i.DismissReason.Override),we({surveyTemplateId:t},!1)},_reviewSurvey(t){globalThis.UserLeap("dismissActiveSurvey",i.DismissReason.Override),we({surveyId:t},!1)},previewSurvey(t){n._previewSurvey(t)},reviewSurvey(t){n._reviewSurvey(t)},mute(){globalThis.UserLeap._queue.pause()},unmute(){globalThis.UserLeap._queue.unpause()},setVisitorToken(){console.warn("[Sprig] setVisitorToken is deprecated.")},dismissActiveSurvey(t=i.DismissReason.API){globalThis.UserLeap.container&&(t===i.DismissReason.Closed&&globalThis.Sprig.trackHistory&&globalThis.Sprig.trackHistory({event:"closed"}),i.eventEmitter.emit(i.SprigEvent.SurveyCloseRequested,{name:i.SprigEvent.SurveyCloseRequested,initiator:t,"survey.id":parseInt(globalThis.UserLeap.container.dataset.studyId)}),i.eventEmitter.emit(i.SprigEvent.SurveyWillClose,{name:i.SprigEvent.SurveyWillClose,initiator:t,"survey.id":parseInt(globalThis.UserLeap.container.dataset.studyId)}))},async setAttribute(t,o){if(!t||!o&&o!==0&&o!==!1){const l="[Sprig] - Disregarding empty attribute / value provided";return console.warn(l),{success:!1,message:l}}return this.setAttributes({[t]:o})},async setAttributes(t){if(t==null||Object.keys(t).length===0){const o="[Sprig] - Disregarding empty attributes provided";return console.warn(o),{success:!1,message:o}}return this.identifyAndSetAttributes({attributes:t})},async identifyAndSetAttributes(t){if(globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig identifyAndSetAttributes",t),r.mode==="test")return;if(t===null||typeof t!="object"||!(t.userId||t.anonymousId||t.attributes)){const p="[Sprig] - Disregarding empty payload provided";return console.warn(p),{success:!1,message:p}}const{userId:o,anonymousId:l,attributes:a}=t;if(r.requireUserIdForTracking&&!globalThis.UserLeap.userId&&!o){const p="[Sprig] - Skipping tracking without userId";return console.warn(p),{success:!1,message:p}}if(a){a.email&&!a[B]&&(a[B]=a.email,delete a.email);const p=Object.keys(a);for(const g of p)a[g]===pe[g]&&delete a[g]}if(!(a&&Object.keys(a).length!==0||o&&globalThis.UserLeap.userId!==o||l&&globalThis.UserLeap.partnerAnonymousId!==l))return{success:!0};const d={};let c;return o&&(d.userId=globalThis.UserLeap.userId=o),l&&(d.partnerAnonymousId=globalThis.UserLeap.partnerAnonymousId=l),a&&Object.keys(a).length>0?(c=await _(R("1",[C,O],"attributes"),{body:JSON.stringify(a),method:"PUT"}),c.ok?Object.assign(pe,a):c.reportError&&(console.warn("[Sprig] (ERR-432) identifyAndSetAttributes failed",c.error),c.error&&globalThis.UserLeap.reportError("identifyAndSetAttributes",c.error))):c=await _(R("1",[C,O]),{body:JSON.stringify(d),method:"PUT"}),a&&a[B]&&(globalThis.UserLeap.email=a[B]),c.ok&&(o&&I("uid",o),l&&I("aid",l)),{success:!!c.ok}},async removeAttributes(t){if(globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig removeAttributes",t),r.mode==="test")return;if(t==null||t.length===0){const l="[Sprig] - Disregarding empty attributes provided";return console.warn(l),{success:!1,message:l}}if(r.requireUserIdForTracking&&!globalThis.UserLeap.userId){const l="[Sprig] - Skipping tracking without userId";return console.warn(l),{success:!1,message:l}}const o=await _(R("1",[C,O],"attributes"),{body:JSON.stringify({delete:t}),method:"DELETE"});return!o.ok&&o.reportError&&(console.warn("[Sprig] (ERR-433) Remove attributes failed",o.error),o.error&&globalThis.UserLeap.reportError("removeAttributes",o.error)),{success:!!o.ok}},async addSurveyListener(t){i.eventEmitter.on(i.SprigEvent.SurveyLifeCycle,t)},async removeSurveyListener(t){i.eventEmitter.removeListener(i.SprigEvent.SurveyLifeCycle,t)},async addListener(t,o){i.eventEmitter.on(t,o)},async removeListener(t,o){i.eventEmitter.removeListener(t,o)},async removeAllListeners(){i.eventEmitter.removeAllListeners()},setPreviewKey(t){t&&typeof t=="string"&&i.sessionStorageHelper.isStorageAvailable&&t&&i.sessionStorageHelper.setItem("sprig.previewKey",t)},async setUserId(t){var a;if(globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig setUserId",t),t==null){const d=`[Sprig] - Invalid userId ${t}`;return console.warn(d),{success:!1,message:d}}if(r.mode==="test"||t===globalThis.UserLeap.userId)return;globalThis.UserLeap.userId=t;const o=globalThis.UserLeap.visitorId,l=await _(R("1",[C,O]),{body:JSON.stringify({userId:t}),method:"PUT"});l.ok?(o!==globalThis.UserLeap.visitorId&&((a=i.modules.replay)==null||a.clearUserReplayData()),I("uid",t)):l.reportError&&(console.warn("[Sprig] (ERR-420) Failed to set user id",l.error),l.error&&globalThis.UserLeap.reportError("setUserId",l.error))},async setPartnerAnonymousId(t){if(globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig setPartnerAnonymousId",t),t==null){const o=`[Sprig] - Invalid partnerAnonymousId ${t}`;return console.warn(o),{success:!1,message:o}}return globalThis.UserLeap.partnerAnonymousId=t,I("aid",t),{success:!0}},track:async(t,o,l={},a=void 0)=>e({eventName:t,properties:o,metadata:l,showSurveyCallback:a}),identifyAndTrack:async t=>await e(t),trackPageView(t,o=void 0,l=void 0,a=!0){J=t,bt(t,o,l,a)},applyFeedbackStyles({button:t="",view:o=""}){globalThis.UserLeap.feedbackCustomStyles=o,document.getElementById("sprig-feedback-style")&&X({document,elementId:"ul-custom-style",styleString:t,nonce:globalThis.UserLeap.styleNonce}),s(document.querySelector(".ul-container-feedback"),o)},applyStyles(t){globalThis.UserLeap.customStyles=t,s(globalThis.UserLeap.container,t)},setWindowDimensions(t,o){var y,b;const l=typeof t=="string"?parseInt(t,10):t,a=typeof o=="string"?parseInt(o,10):o;isNaN(l)||isNaN(a)||(globalThis.UserLeap.windowDimensions={width:l,height:a});const d=i.getHttpHeaders(globalThis.UserLeap),c=ce(d),p=d["userleap-platform"]==="web";if(!globalThis.UserLeap.frameId)return;const g=document.getElementById(globalThis.UserLeap.frameId);g&&(globalThis.UserLeap.useMobileStyling&&((y=globalThis.UserLeap.windowDimensions)!=null&&y.width&&(g.style.width=`${globalThis.UserLeap.windowDimensions.width}px`),(b=globalThis.UserLeap.windowDimensions)!=null&&b.height&&(g.style.maxHeight=globalThis.UserLeap.windowDimensions.height-20+"px"),g.contentDocument&&(g.style.height=String(it(g.contentDocument,p&&!c,i.shouldDirectEmbed(d))[0])+"px")),i.eventEmitter.emit(i.SprigEvent.SurveyDimensions,{name:i.SprigEvent.SurveyDimensions,contentFrameWidth:g.clientWidth,contentFrameHeight:g.clientHeight,"survey.id":parseInt(globalThis.UserLeap.container.dataset.studyId)}))},logoutUser(){var t;globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig logout"),i.breadcrumbsLogger.info("LogOut",{vid:globalThis.UserLeap.visitorId,userId:globalThis.UserLeap.userId}),globalThis.UserLeap.visitorId=null,globalThis.UserLeap.userId=null,globalThis.UserLeap.partnerAnonymousId=null,globalThis.UserLeap.token=null,globalThis.UserLeap.email=null,i.localStorageHelper.removeItem("userleap.ids"),globalThis.UserLeap._queue.isPaused()&&globalThis.UserLeap._queue.empty(),yt(),(t=i.modules.replay)==null||t.clearUserReplayData(),globalThis.UserLeap._queue.unpause()},teardown(){["hashchange","popstate"].forEach(t=>globalThis.removeEventListener(t,Q,!0)),globalThis.UserLeap._config.interactiveEvents&&mt(),globalThis.UserLeap("dismissActiveSurvey",i.DismissReason.API),delete globalThis.UserLeap,delete globalThis.Sprig,delete globalThis._Sprig},integrateOptimizely(t,o=!0){var l,a;if((a=(l=globalThis.UserLeap)==null?void 0:l._config)!=null&&a.optimizelyEnabled)try{const d=typeof t=="string"?JSON.parse(t):t;ie.setOptimizelyExperiment(d,o)}catch(d){console.warn("[Sprig] Error with integrating Optimizely data"),d instanceof Error&&globalThis.UserLeap.reportError("integrateOptimizely",d)}else console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.")},integrateOptimizelyClient(t){var o,l;if(!((l=(o=globalThis.UserLeap)==null?void 0:o._config)!=null&&l.optimizelyEnabled))return void console.warn("[SPRIG] Optimizely integration is currently not enabled for your product.");t.notificationCenter.addNotificationListener("ACTIVATE:experiment, user_id,attributes, variation, event",({experiment:a,variation:d})=>{const c={experiments:[{id:a.id,variation:d.key}]};globalThis.UserLeap("integrateOptimizely",c,!1)})},importLaunchDarklyData(t){var o,l;(l=(o=globalThis.UserLeap)==null?void 0:o._config)!=null&&l.launchDarklyEnabled?Ue.setLDFlagsVariations(t):console.warn("[SPRIG] LaunchDarkly integration is currently not enabled for your product.")},setVisitorAttribute:(t,o)=>(console.warn("[Sprig] setVisitorAttribute is deprecated. Please use setAttribute"),n.setAttribute(t,o)),setEmail:async t=>n.setAttribute(B,t),setVisitorEmail:async t=>(console.warn("[Sprig] setVisitorEmail is deprecated. Please use setEmail"),n.setEmail(t)),_generateVideoUploadUrl:async t=>async function(o){var a;if(!o)return;const l=`${globalThis.UserLeap._API_URL}/2/environments/integrations/upload`;try{const d=await fetch(l,{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(d.ok){const c=await d.json();return(a=c==null?void 0:c.upload)==null?void 0:a.url}return null}catch(d){console.warn("[Sprig] Error with generating video upload url"),d instanceof Error&&globalThis.UserLeap.reportError("generateVideoUploadUrl",d)}}(t),_reportMetric(t,o){i.reportAndRegister(t,o)},_completeSessionReplay:async({surveyId:t,responseGroupUuid:o,eventDigest:l})=>{var a;return i.modules.replay?(a=i.modules.replay)==null?void 0:a._completeSessionReplay({surveyId:t,responseGroupUuid:o,eventDigest:l,headers:i.getHttpHeaders(globalThis.UserLeap)}):(globalThis.UserLeap.reportError("_completeSessionReplay",new Error("Replay module not registered")),!1)},pauseReplayRecording(){var t,o,l,a;(o=(t=i.modules.replay)==null?void 0:t.isReplayPaused)!=null&&o.call(t)||((a=(l=i.modules.replay)==null?void 0:l.recordReplayPaused)==null||a.call(l))},resumeReplayRecording(){var t,o,l,a,d,c;(o=(t=i.modules.replay)==null?void 0:t.isReplayPaused)!=null&&o.call(t)&&((a=(l=i.modules.replay)==null?void 0:l.recordReplayResumed)==null||a.call(l),(c=(d=i.modules.replay)==null?void 0:d.recordFullSnapshot)==null||c.call(d))}};Object.assign(globalThis.UserLeap,n)};async function Wt(r,e,s={},n={}){var p;const t=(p=globalThis.__cfg)==null?void 0:p.mode,o=ke(),l=globalThis.UserLeap.envId,a=globalThis.document.documentElement,d={mode:t,screenWidth:globalThis.screen.width,screenHeight:globalThis.screen.height,clientWidth:a.clientWidth,clientHeight:a.clientHeight,location:J??globalThis.location.href,language:globalThis.navigator.language,...s},c={action:r,breadcrumbs:i.breadcrumbsLogger.breadcrumbs,err:{message:`${e==null?void 0:e.name} - ${e==null?void 0:e.message}`,stack:e==null?void 0:e.stack},meta:d,vid:o,envId:l,...n};(await _(R("1",null,"errors"),{method:"POST",headers:{"x-ul-error":globalThis.btoa(`userleap-${Date.now()}-error`)},body:JSON.stringify(c),shouldDropOnRateLimit:!0})).ok||console.warn("[Sprig] (ERR-444) Failed to report error to API",e)}function zt(r={}){var n;(n=globalThis.SprigLoggerCallback)==null||n.call(globalThis,"Initializing Sprig");const e=new URLSearchParams(globalThis.location.search).get("sprigPreviewKey")??"";async function s(){var g,y,b,u,h;if(globalThis.UserLeap.loaded)return;if((g=globalThis.SprigLoggerCallback)==null||g.call(globalThis,"Loading Sprig"),globalThis.UserLeap.reportError=Wt,globalThis.UserLeap.loaded=!0,globalThis.UserLeap._config=Object.assign({},r,globalThis.UserLeap.config),globalThis.UserLeap.delayingSurvey=!1,globalThis.UserLeap._config&&typeof globalThis.UserLeap._config=="object")for(const v in globalThis.UserLeap._config)globalThis.UserLeap[v]=globalThis.UserLeap._config[v];if(globalThis.Sprig.outstandingTransactionLimit!==void 0&&(r.outstandingTransactionLimit=globalThis.Sprig.outstandingTransactionLimit),!globalThis.UserLeap.envId){if(!globalThis.UserLeap.appId)throw new Error("Missing Environment id");globalThis.UserLeap.envId=globalThis.UserLeap.appId}globalThis.UserLeap.debugMode&&console.info("[DEBUG] Sprig debug mode enabled");const t=ht(),o=globalThis.UserLeap.sampleRate;let l=t.sampled;if(o){if(l===null&&(l=Math.random()<o,I("sampled",l)),!l)return}else l!==null&&I("sampled",null);globalThis.UserLeap._API_URL||(globalThis.UserLeap._API_URL="https://api.sprig.com");const a=[...globalThis.UserLeap._queue];globalThis.UserLeap._queue=new Dt(globalThis.UserLeap,[]),globalThis.UserLeap._queue.pause();for(let v=0;v<a.length;v++)globalThis.UserLeap._queue.push(a[v]);const d=t.token;d?(globalThis.UserLeap.token=d,globalThis.UserLeap.visitorId=t.vid??null,globalThis.UserLeap.userId=t.uid??null,globalThis.UserLeap.partnerAnonymousId=t.aid??null):yt();const c=Y(i.getHttpHeaders(globalThis.UserLeap));(y=globalThis.SprigLoggerCallback)==null||y.call(globalThis,"Sprig fetching config");const p=await async function(v){var T,P;const m=i.getHttpHeaders(globalThis.UserLeap);document.addEventListener("securitypolicyviolation",i.cspViolationHandler);const U=await i.sprigFetch(R("1",[C],"config"),{headers:m});if(document.removeEventListener("securitypolicyviolation",i.cspViolationHandler),!U.ok)return(T=globalThis.SprigLoggerCallback)==null||T.call(globalThis,"Sprig config fetch failed"),U.reportError&&(console.warn("[Sprig] (ERR-422) Failed to load configuration",U.error),U.error&&globalThis.UserLeap.reportError("applyRemoteConfig",U.error)),i.killNetworkRequests("Disabled: failed to fetch configuration"),v;const w=U.json;return w!=null&&w.disabled?((P=globalThis.SprigLoggerCallback)==null||P.call(globalThis,"Sprig config fetch disabled"),i.killNetworkRequests(`Disabled: ${w.disabled}`),{disabled:w.disabled}):Object.assign({},w,v)}(r);if((b=globalThis.SprigLoggerCallback)==null||b.call(globalThis,"Sprig fetched config"),Pt({isWeb:!c,reportingIntervalSeconds:p.metricsReportingEnabled||p.mobileMetricsReportingEnabled?p.metricsReportingIntervalSeconds:0,thresholds:p.metricThresholds,postMetrics:async v=>{var m;await _(R("1",[C],"metrics"),{body:v,method:"POST",headers:{"x-ul-replay-enabled":`${!!((m=i.modules.replay)!=null&&m.isReplayRecording())}`},shouldDropOnRateLimit:!0})}}),!c){const v=p.alwaysOnReplay?{userAgent:globalThis.navigator.userAgent,surveyId:p.alwaysOnReplay.surveyId,responseGroupUuid:p.alwaysOnReplay.responseGroupUuid,sdkVersion:"2.44.0",maxDurationSeconds:p.alwaysOnReplay.maxDurationSeconds}:void 0;await((u=i.modules.replay)==null?void 0:u.initializeReplay({maxReplayDurationSeconds:p.maxReplayDurationSeconds,maxInflightRequests:globalThis.UserLeap.maxInflightReplayRequests??2,replaySettings:p.replaySettings,apiUrl:globalThis.UserLeap._API_URL,alwaysOnConfig:v})),De=p.replaySettings}Vt(p),await qt(p),globalThis.UserLeap._queue.unpause(),(h=globalThis.SprigLoggerCallback)==null||h.call(globalThis,"SdkReady"),i.eventEmitter.emit(i.SprigEvent.SDKReady,{mobileMetricsReportingEnabled:!!p.mobileMetricsReportingEnabled,metricsReportingInterval:p.metricsReportingIntervalSeconds||0,metricsThresholds:p.metricThresholds||[],maxMobileReplayDurationSeconds:p.maxMobileReplayDurationSeconds,mobileReplaySettings:p.mobileReplaySettings}),i.eventEmitter.emit(i.SprigEvent.VisitorIDUpdated,{visitorId:globalThis.UserLeap.visitorId}),i.eventEmitter.on(i.SprigEvent.VisitorIDUpdated,()=>{for(const v in pe)delete pe[v]})}globalThis.UserLeap.UPDATES=i.EVENTS,globalThis.UserLeap("setPreviewKey",e),document.readyState==="complete"?s():globalThis.attachEvent?globalThis.attachEvent("onload",s):globalThis.addEventListener("load",()=>{s()},!1)}class Z{constructor(){F(this,"UPDATES",i.EVENTS)}displaySurvey(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"displaySurvey",e)}mute(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"mute")}unmute(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"unmute")}dismissActiveSurvey(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"dismissActiveSurvey")}setAttribute(e,s){var n;(n=globalThis.Sprig)==null||n.call(globalThis,"setAttribute",e,s)}setAttributes(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"setAttributes",e)}identifyAndSetAttributes(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"identifyAndSetAttributes",e)}removeAttributes(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"removeAttributes",e)}addListener(e,s){var n;(n=globalThis.Sprig)==null||n.call(globalThis,"addListener",e,s)}removeListener(e,s){var n;(n=globalThis.Sprig)==null||n.call(globalThis,"removeListener",e,s)}removeAllListeners(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"removeAllListeners")}setEmail(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"setAttribute","!email",e)}setUserId(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"setUserId",e)}setPartnerAnonymousId(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"setPartnerAnonymousId",e)}track(e,s={},n={}){var t;(t=globalThis.Sprig)==null||t.call(globalThis,"track",e,s,n)}identifyAndTrack(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"identifyAndTrack",e)}trackPageView(e,s,n){var t;(t=globalThis.Sprig)==null||t.call(globalThis,"trackPageView",e,s,n)}applyStyles(e){var s;(s=globalThis.Sprig)==null||s.call(globalThis,"applyStyles",e)}setWindowDimensions(e,s){var n;(n=globalThis.Sprig)==null||n.call(globalThis,"setWindowDimensions",e,s)}logoutUser(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"logoutUser")}teardown(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"teardown")}pauseReplayRecording(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"pauseReplayRecording")}resumeReplayRecording(){var e;(e=globalThis.Sprig)==null||e.call(globalThis,"resumeReplayRecording")}}const Ie={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",globalThis.Sprig)return globalThis.Sprig;globalThis.Sprig=function(){var s;(s=globalThis.Sprig)==null||s._queue.push(arguments)},Object.getOwnPropertyNames(Z.prototype).map(s=>{s!=="constructor"&&(globalThis.Sprig[s]=Z.prototype[s])});const e=globalThis.Sprig;return e.appId=r.envId,e._queue=[],globalThis.UserLeap=e,zt(r),globalThis.Sprig}},vt=new Z,Nt={sprig:Ie,SprigAPI:Z,configure:Ie.configure,Sprig:vt};exports.APP_ID="ul-app",exports.ConflictingWidgets=Xe,exports.DEFAULT_BORDER_COLOR="#e6e6e6",exports.DEFAULT_WIDTH_PX=360,exports.EMBED_MOBILE_MAX_WIDTH=1030,exports.ERROR_BORDER_COLOR="#bd282a",exports.Sprig=vt,exports.SprigAPI=Z,exports.calculateFrameDimensions=it,exports.core=Nt,exports.getHtml=ge,exports.isHTMLElement=x,exports.resetScrollPosition=r=>{const e=r.querySelector(".ul-card__container");e&&(e.scrollTop=0)},exports.setSurveyStyles=X,exports.sprig=Ie;
package/dist/core.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./metricsReporter-Dy6jXbOf.cjs"),e=require("./core-C7eAp3i8.cjs");exports.DismissReason=i.DismissReason,exports.SprigEvent=i.SprigEvent,exports.Sprig=e.Sprig,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-BGIzo9eh.cjs"),e=require("./core-CgFFOhiH.cjs");exports.DismissReason=i.DismissReason,exports.SprigEvent=i.SprigEvent,exports.Sprig=e.Sprig,exports.SprigAPI=e.SprigAPI,exports.default=e.core,exports.sprig=e.sprig;
package/dist/core.d.ts CHANGED
@@ -1061,7 +1061,7 @@ declare const BOOLEAN_OPERATOR: {
1061
1061
  };
1062
1062
  type BooleanOperator = (typeof BOOLEAN_OPERATOR)[keyof typeof BOOLEAN_OPERATOR];
1063
1063
 
1064
- type CardType = "aidynamicfollowup" | "consentlegal" | "likert" | "matrix" | "maxdiff" | "multiplechoice" | "multipleselect" | "nps" | "open" | "rankorder" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1064
+ type CardType = "aidynamicfollowup" | "aidynamicstandalone" | "consentlegal" | "likert" | "matrix" | "maxdiff" | "multiplechoice" | "multipleselect" | "nps" | "open" | "rankorder" | "recordedtask" | "texturlprompt" | "thanks" | "uploading" | "videovoice";
1065
1065
  type ConceptUrl = string | null;
1066
1066
  type GroupType = "page";
1067
1067
  interface BaseCard {
@@ -1262,16 +1262,21 @@ interface OpenTextCard extends BaseCard {
1262
1262
  }
1263
1263
  /**
1264
1264
  * DynamicQuestionCard loading:
1265
- * - `true` — DQ network request inflight
1266
- * - `false` - successful DQ network request
1265
+ * - `inFlight` — DQ network request inflight
1266
+ * - `success` - successful DQ network request
1267
1267
  * - `undefined` - network call not yet triggered
1268
- * - `null` - unsuccessful DQ network call
1268
+ * - `failure` - unsuccessful DQ network call
1269
1269
  */
1270
+ declare enum DynamicQuestionLoadingStates {
1271
+ failure = "failure",
1272
+ success = "success",
1273
+ inFlight = "inFlight"
1274
+ }
1270
1275
  interface DynamicQuestionCard extends BaseCard {
1271
1276
  props: OpenTextCard["props"] & {
1272
- loading?: boolean | null;
1277
+ loading?: DynamicQuestionLoadingStates;
1273
1278
  };
1274
- type: "aidynamicfollowup";
1279
+ type: "aidynamicfollowup" | "aidynamicstandalone";
1275
1280
  }
1276
1281
  interface MultipleChoiceOption {
1277
1282
  createdAt: string;
@@ -1775,7 +1780,10 @@ interface Config extends MobileReplayConfig {
1775
1780
  outcome: string;
1776
1781
  };
1777
1782
  };
1778
- createDynamicQuestion: (s: {
1783
+ createDynamicStandaloneQuestion: (s: {
1784
+ questionId: number;
1785
+ }) => void;
1786
+ createDynamicFollowupQuestion: (s: {
1779
1787
  parentQuestionId: number;
1780
1788
  parentResponseConfig?: Config["allResponsesRaw"];
1781
1789
  }) => void;
@@ -1793,6 +1801,7 @@ interface Config extends MobileReplayConfig {
1793
1801
  environmentId?: string;
1794
1802
  exitOnOverlayClick?: boolean;
1795
1803
  exitOnOverlayClickMobile?: boolean;
1804
+ experimentFlags?: Record<string, boolean>;
1796
1805
  eventEmitFn: SprigEventEmitter["emit"];
1797
1806
  fontFamily?: string;
1798
1807
  fontFamilyURL: undefined;
package/dist/core.js CHANGED
@@ -1,5 +1,5 @@
1
- import { D as r, S as i } from "./metricsReporter-DqmmYkn-.js";
2
- import { S as e, a as o, c as S, s as g } from "./core-D9RfS2Z8.js";
1
+ import { D as r, S as i } from "./metricsReporter-Bg5aC8mO.js";
2
+ import { S as e, a as o, c as S, s as g } from "./core-CWHAsU-S.js";
3
3
  export {
4
4
  r as DismissReason,
5
5
  e as Sprig,