@sprig-technologies/sprig-browser 2.44.0 → 2.45.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.
- package/dist/{conversational-ui-Cai2CXxq.js → conversational-ui-BfsT6E2d.js} +281 -285
- package/dist/{conversational-ui-uecC--rF.cjs → conversational-ui-CeWXVRdC.cjs} +1 -1
- package/dist/conversational-v2-styles-BuQiqTAN.js +4 -0
- package/dist/conversational-v2-styles-C-AtgFtc.cjs +1 -0
- package/dist/{core-CgFFOhiH.cjs → core-DSREyRo8.cjs} +2 -2
- package/dist/{core-CWHAsU-S.js → core-YTxB8B8q.js} +3 -3
- package/dist/core.cjs +1 -1
- package/dist/core.d.ts +22 -8
- package/dist/core.js +2 -2
- package/dist/index-BH1V9tx5.js +760 -0
- package/dist/index-Cuw5vpuY.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +22 -8
- package/dist/index.js +2 -2
- package/dist/{metricsReporter-Bg5aC8mO.js → metricsReporter-0HbKrvkx.js} +1 -1
- package/dist/{metricsReporter-BGIzo9eh.cjs → metricsReporter-CIbUupJP.cjs} +1 -1
- package/dist/replay.cjs +1 -1
- package/dist/replay.js +1 -1
- package/dist/{videoPlayer-ChSRlzGk.js → videoPlayer-HNloD0SJ.js} +184 -184
- package/dist/{videoPlayer-B4YqaVpY.cjs → videoPlayer-ocnoABDk.cjs} +4 -4
- package/dist/view-BxTV1_m-.cjs +1 -0
- package/dist/{view-MpYHLeMt.js → view-CDrJuRMn.js} +689 -680
- package/package.json +1 -1
- package/dist/conversational-v2-styles-BTm-8rVB.cjs +0 -1
- package/dist/conversational-v2-styles-Bj3dBWvf.js +0 -4
- package/dist/index-CbagEkvN.js +0 -754
- package/dist/index-D2nvY-Yh.cjs +0 -1
- package/dist/view-5xam8eBF.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./view-BxTV1_m-.cjs"),J=require("./metricsReporter-CIbUupJP.cjs"),ne=require("./core-DSREyRo8.cjs"),c=require("./videoPlayer-ocnoABDk.cjs"),Me=({className:n,message:i,next:d,properties:t,questionId:r,type:o})=>{const{useMobileStyling:h,border:y,isLongFormSurvey:p,focusedQuestionId:b}=e.useConfig(g=>({useMobileStyling:g.useMobileStyling,border:g.border,isLongFormSurvey:J.isLongFormSurvey(g.studyType),focusedQuestionId:g.focusedQuestionId})),[a,v]=e.h(!1),[u,w]=e.h(""),[l,f]=e.h(!1),m=p&&b===r,_=t==null?void 0:t.collectName,C=(t==null?void 0:t.nameLabelText)||"Full Name",R=(t==null?void 0:t.consentText)||"I agree to the stated conditions",L=(t==null?void 0:t.submitButtonText)||"Submit",O=!!u.trim(),q=a&&(!_||O),A=(g,x=!1)=>{g.preventDefault(),g.stopPropagation();let D=null;if(!x){if(!q)return void f(!0);D={submitted:!0},_&&(D.name=u)}d({value:D,questionId:r,type:o},q)};return e.u("div",{className:e.cc(n,p&&!m&&"ul-card--unfocused","ul-card__consent-legal","fade-in-transition"),children:[e.u(c.Header,{isRequired:p&&(t==null?void 0:t.required),message:i,properties:{questionHtml:t.questionHtml}}),t!=null&&t.richTextBody?e.u(c.QuestionBodyWrapper,{children:e.u(c.Html,{className:"ul-rich-text-body",html:t.richTextBody,id:"ul-card__consent-legal-body-container"})}):null,e.u(c.MobileEmbedView,{embeddedType:"pdf",properties:t,children:e.u(c.QuestionBodyFooterContainer,{children:[e.u("div",{className:"sprig-stretch",children:[e.u(c.Option,{allowTextEntry:!1,border:y,error:l&&!a,id:"consent",isRadio:!1,isSelected:a,label:R,onUserInputChanged:({selected:g})=>{g!==a&&v(!a)},useMobileStyling:h}),_&&e.u("input",{"aria-label":C,"aria-placeholder":C,className:e.cc(e.getClasses("ul-consent-legal__name-input",h)),"data-gramm":"false",maxLength:250,name:"name",onBlur:g=>{g.currentTarget.style.borderColor=l&&!O?ne.ERROR_BORDER_COLOR:ne.DEFAULT_BORDER_COLOR},onFocus:g=>{g.currentTarget.style.borderColor=l&&!O?ne.ERROR_BORDER_COLOR:y},onInput:g=>{g.preventDefault(),g.stopPropagation(),w(g.currentTarget.value)},placeholder:C,style:l&&!O?{borderColor:ne.ERROR_BORDER_COLOR}:{},tabIndex:0,value:u})]}),e.u("div",{className:"ul-card__button-wrapper ul-card-vertical__button-wrapper",children:[e.u(c.Button,{className:q?"":"sprig-button-disabled",onClick:A,children:L}),t.required===!1&&!p&&e.u("button",{className:"ul-card-skip__button",onClick:g=>A(g,!0),children:e.getSkipButtonText(t)})]})]})})]},r)},ue=n=>i=>{i.pointerType!=="touch"&&n()},Ee=({activeValue:n,border:i,icon:d,isPressed:t,onSubmit:r,range:o,scaleLabelType:h,selectedValue:y,setSelectedValue:p,setActiveValue:b,setIsPressed:a,useMobileStyling:v,value:u,viewDocument:w})=>{const{isLongFormSurvey:l,enableCspTrustedTypes:f}=e.useConfig(x=>({isLongFormSurvey:J.isLongFormSurvey(x.studyType),enableCspTrustedTypes:x.enableCspTrustedTypes})),m=`option-${u}`,_=h==="number",C=h==="star",R=h==="smiley",L=_&&u===n||u===y,[O,q]=(()=>{const x=C&&y!==null&&u<=y;return C&&u<=n||R&&u===n||x||u===n||u===y?[i,t||x||u===y?1:.3]:["",1]})(),A=e.F(()=>{const x=y===u,D={borderColor:L&&!v||x?O:"",fillOpacity:L?"":q,zIndex:L?3:"auto",color:x?"#fff":""};return _?{...D,backgroundColor:x?O:""}:{...D,color:C||R||x?O:""}},[L,O,q,y,u,_,C,R,v]),g=e.F(()=>ne.getHtml((({icon:x,scaleLabelType:D,value:M,selectedValue:H})=>{if(D==="smiley"&&M===H){let N=0;return x.replace(/black/g,()=>++N==1?"black":"white")}return x})({icon:d,scaleLabelType:h,value:u,selectedValue:y}),f),[f,d,h,y,u]);return e.u("button",{"aria-label":_?void 0:String(u),className:(()=>{switch(h){case"star":return e.cc(e.getClasses("likert-star",v),e.getClasses(`likert-star-${u}`,v));case"smiley":return e.cc(e.getClasses("likert-smiley",v),e.getClasses(`likert-smiley-${u}`,v));default:return u===o?e.cc(e.getClasses("likert-number",v),e.getClasses(`likert-number-${u}`,v),e.getClasses("likert-last-option",v)):e.cc(e.getClasses("likert-number",v),e.getClasses(`likert-number-${u}`,v))}})(),dangerouslySetInnerHTML:{__html:g},id:m,onClick:x=>{l&&(x.preventDefault(),x.stopPropagation(),p(u)),r()},onKeyDown:x=>{var H,N;const D=w.querySelectorAll(`.likert-${h??"number"}`),M=u-1;x.key==="ArrowRight"?(H=D[M+1])==null||H.focus():x.key==="ArrowLeft"?(N=D[M-1])==null||N.focus():x.key!=="Enter"&&x.key!==" "||(l&&(x.preventDefault(),x.stopPropagation(),p(u)),r())},onPointerCancel:ue(()=>a(!1)),onPointerDown:ue(()=>{a(!0),b(u)}),onPointerEnter:ue(()=>b(u)),onPointerLeave:ue(()=>{b(-1),a(!1)}),onPointerUp:ue(()=>a(!1)),style:A,tabIndex:0})},Fe=({className:n,labels:i,message:d,next:t,properties:r,questionId:o,type:h})=>{const{border:y,useMobileStyling:p,viewDocument:b,isLongFormSurvey:a,focusedQuestionId:v}=e.useConfig(M=>({border:M.border,useMobileStyling:M.useMobileStyling,viewDocument:M.viewDocument,isLongFormSurvey:J.isLongFormSurvey(M.studyType),focusedQuestionId:M.focusedQuestionId})),[u,w]=e.h(-1),[l,f]=e.h(!1),[m,_]=e.h(null);e.p(()=>{w(-1),f(!1),_(null)},[o]);const C=a&&v===o,R=i&&i.left,L=i&&i.right;let O;const{range:q,scaleLabelType:A,ratingIcons:g}=r;q&&(O=Number(q));const x=O||5,D=M=>{var H,N;switch(A){case"star":return(H=g[0])==null?void 0:H.svg;case"smiley":return(N=g[M])==null?void 0:N.svg;default:return String(M+1)}};return e.u("form",{className:e.cc(n,"ul-card--likert","fade-in-transition",a&&!C&&"ul-card--unfocused"),children:[e.u(c.Header,{isRequired:a&&(r==null?void 0:r.required),message:d,properties:r}),e.u(c.MobileEmbedView,{properties:r,children:e.u(e.g,{children:[e.u(c.QuestionBodyWrapper,{children:[e.u("div",{"aria-label":`Rating (1 - ${x})`,className:"ul-card--likert__numbers",role:"radiogroup",children:[...Array(x)].map((M,H)=>{const N=H+1;return e.u(Ee,{activeValue:u,border:y,icon:D(H),isPressed:l,onSubmit:()=>t({value:N,questionId:o,type:h},!0),range:x,scaleLabelType:A,selectedValue:m,setActiveValue:w,setIsPressed:f,setSelectedValue:_,useMobileStyling:p,value:N,viewDocument:b},H)})}),e.u("div",{className:"ul-card--likert__labels",children:[e.u("span",{children:R}),e.u("span",{children:L})]})]}),!r.required&&!a&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-vertical-centered-container",children:e.u(c.Button,{onClick:M=>{M.preventDefault(),M.stopPropagation(),t({value:null,questionId:o,type:h},!0)},children:e.getButtonText(r)})})})]})})]},o)},Qe=({columns:n,onSelect:i,options:d,selectedOptions:t})=>{const r=e._([]),{border:o,useMobileStyling:h,cards:y,index:p}=e.useConfig(l=>({border:l.border,useMobileStyling:l.useMobileStyling,cards:l.cards,index:l.index})),b=d.findIndex(l=>t[l.id]===null),[a,v]=e.h(b),u=e.T((l,f)=>{var C;i(l,f);const m=a+1,_=d[m];if(_&&t[_.id]===null){v(m);const R=y[p];(R==null?void 0:R.groupId)!=null||((C=r.current[m])==null||C.scrollIntoView({block:"nearest",behavior:"smooth"}))}},[i,d,t,a,y,p]),w=e.T((l,f)=>{const m=a===l;return e.u(e.Accordion,{animate:!0,header:f.label,isOpen:m,onClick:()=>{var _;return v(m&&!((_=window.UserLeap)!=null&&_.isMobileSDK)?-1:l)},ref:_=>{_&&(r.current[l]=_)},showHeaderCheck:t[f.id]!==null,children:e.u("div",{style:{paddingTop:"12px"},children:n.map(_=>e.u(c.Option,{allowTextEntry:!1,ariaLabel:`${f.label}-${_.label}`,border:o,error:!1,id:`${f.id}-${_.value}`,isRadio:!0,isSelected:t[f.id]===_.value,label:_.label,onUserInputChanged:()=>u(f.id,_.value),useMobileStyling:h},_.label))})},f.id)},[o,n,a,u,t,h]);return e.u("div",{children:d.map((l,f)=>w(f,l))})},Oe=({columns:n,onSelect:i,options:d,selectedOptions:t})=>{const{border:r,useMobileStyling:o,isLongFormSurvey:h}=e.useConfig(l=>({border:l.border,useMobileStyling:l.useMobileStyling,isLongFormSurvey:J.isLongFormSurvey(l.studyType)})),y=d.length,p=n.length,b=e._(null),[a,v]=e.h(!1),[u,w]=e.h(!1);return e.p(()=>{const l=b.current,f=new ResizeObserver(m=>{window.requestAnimationFrame(()=>{l&&(v(Math.round(m[0].contentRect.width)<l.scrollWidth),w(Math.round(m[0].contentRect.width)<l.scrollWidth))})});return l&&f.observe(l),()=>{l&&f.unobserve(l)}},[]),e.u("div",{className:"ul-card--matrix_question_container",children:[e.u("div",{className:e.cc("ul-card--matrix_container",a&&"ul-matrix-scroll-gradient"),onScroll:()=>{(()=>{const l=b.current;l&&v(l.clientWidth+Math.abs(l.scrollLeft)<l.scrollWidth)})()},ref:b,children:e.u("div",{className:e.cc(h&&"ul-card--matrix_grid_longform","ul-card--matrix_grid"),style:`--numColumns: ${p}; --numRows: ${y+1};`,children:[e.u("div",{})," ",n.map(l=>e.u("div",{className:"ul-matrix-column-label",children:l.label},l.label)),d.map(l=>e.u(e.g,{children:[e.u("div",{"aria-label":l.label,className:"ul-matrix-row-label",children:l.label},l.label),e.u("div",{className:"ul-matrix-row-options",role:"radiogroup",children:n.map((f,m)=>{const _=m===p-1;return e.u("div",{className:e.cc("ul-matrix-option-wrapper",_&&"ul-matrix-last-option"),children:e.u(c.Option,{allowTextEntry:!1,ariaLabel:`${l.label}-${f.label}`,border:r,choiceStyle:{background:"transparent",border:"none",marginBottom:"0",padding:"0"},error:!1,id:`${l.id}-${f.value}`,isRadio:!0,isSelected:t[l.id]===f.value,onUserInputChanged:()=>i(l.id,f.value),useMobileStyling:o})},f.value)})})]}))]})}),(a||u)&&e.u("button",{className:u&&!a?"ul-matrix-scroll-arrow left":"ul-matrix-scroll-arrow",onClick:u&&!a?l=>{l.preventDefault();const f=b.current;if(f){const m=getComputedStyle(f).direction==="rtl";f.scrollTo({left:m?f.scrollWidth-f.clientWidth:0,behavior:"smooth"})}}:l=>{l.preventDefault();const f=b.current;if(f){const m=getComputedStyle(f).direction==="rtl";f.scrollTo({left:m?f.clientWidth-f.scrollWidth:f.scrollWidth,behavior:"smooth"})}},children:u&&!a?e.u(Ue,{}):e.u(Ae,{})})]})},Ue=()=>e.u("svg",{fill:"currentColor",height:"32",transform:"matrix(-1,0,0,1,0,0)",version:"1.1",viewBox:"0 0 256 256",width:"32",xmlns:"http://www.w3.org/2000/svg",children:e.u("path",{d:"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"})}),Ae=()=>e.u("svg",{fill:"currentColor",height:"32",viewBox:"0 0 256 256",width:"32",xmlns:"http://www.w3.org/2000/svg",children:e.u("path",{d:"M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"})}),He=({className:n,message:i,next:d,options:t,properties:r,questionId:o,type:h,showIndividualSubmit:y=!1,onSubmitButtonClick:p})=>{const{useMobileStyling:b,isLongFormSurvey:a,focusedQuestionId:v,setFocusedQuestionId:u}=e.useConfig(g=>({useMobileStyling:g.useMobileStyling,isLongFormSurvey:J.isLongFormSurvey(g.studyType),focusedQuestionId:g.focusedQuestionId,setFocusedQuestionId:g.setFocusedQuestionId})),w=r.matrixColumn,l=r.required,f=a&&v===o,m=g=>Object.values(g).every(x=>x==null),_=g=>l&&m(g),C=g=>{if(g.preventDefault(),g.stopPropagation(),d({value:L,questionId:o,type:h},!0),p){const x=!m(L);p(x)}},R=t.reduce((g,x)=>(g[x.id]=null,g),{}),[L,O]=e.h(R),q=(g,x)=>{a&&d({value:{...L,[g]:x},questionId:o,type:h},!_({...L,[g]:x})),O(D=>({...D,[g]:x}))},A=r.displayMatrixAsAccordion||b;return e.u("form",{className:e.cc(n,!a&&"ul-card__matrix","fade-in-transition",a&&!f&&"ul-card--unfocused"),id:"text-form",onClick:()=>{f&&u(o)},onSubmit:C,children:[e.u(c.Header,{isRequired:a&&(r==null?void 0:r.required),message:i,properties:r}),e.u(c.MobileEmbedView,{properties:r,children:[e.u(c.QuestionBodyWrapper,{children:[A?e.u(Qe,{columns:w,onSelect:q,options:t,selectedOptions:L}):e.u(Oe,{columns:w,onSelect:q,options:t,selectedOptions:L}),y&&e.u(c.LongformSubmitButton,{handleSubmit:C,isSubmitDisabled:_(L)})]}),!a&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-card__button-wrapper",children:e.u(c.Button,{disabled:_(L),children:e.getButtonText(r)})})})]})]},o)},Ie=({className:n,message:i,onSubmit:d,options:t=[],properties:r,questionId:o,type:h,showIndividualSubmit:y=!1,onSubmitButtonClick:p})=>{const{border:b,useMobileStyling:a,isLongFormSurvey:v,focusedQuestionId:u,setFocusedQuestionId:w}=e.useConfig(T=>({border:T.border,useMobileStyling:T.useMobileStyling,isLongFormSurvey:J.isLongFormSurvey(T.studyType),focusedQuestionId:T.focusedQuestionId,setFocusedQuestionId:T.setFocusedQuestionId})),l=v&&u===o,f=t.reduce((T,U)=>(T[U.id]={isSelected:!1},T),{}),[m,_]=e.h(f),C=h==="multiplechoice",R=r.required,L=t.find(T=>{var U;return(U=T.optionProperties)==null?void 0:U.noneOfTheAbove}),O=T=>Object.entries(T).some(([U,G])=>{var B;const s=t.find(E=>`${E.id}`===U),S=G.userText===void 0||G.userText.trim()==="";return((B=s==null?void 0:s.optionProperties)==null?void 0:B.allowsTextEntry)&&S&&G.isSelected}),q=T=>Object.values(T).filter(U=>U.isSelected).length,A=T=>{const{minSelect:U=0,maxSelect:G=1/0,maxSelectMode:s}=r,S=q(T);switch(s){case e.MaxSelectModes.Maximum:return S<=G;case e.MaxSelectModes.Range:return S===0||S>=U;default:return!0}},g=r.minSelect&&r.minSelect>0&&r.maxSelectMode===e.MaxSelectModes.Range&&q(m)<r.minSelect&&(R||q(m)>0),x=T=>O(T)||R&&!q(T)||!A(T),D=T=>A(T)&&!O(T)&&q(T)>0,M=Object.entries(m).some(([T,U])=>{var G,s;return U.isSelected&&((s=(G=t.find(S=>`${S.id}`===T))==null?void 0:G.optionProperties)==null?void 0:s.allowsTextEntry)}),H=y&&(!C||M),N=T=>{$(T.id,T.selected,T.userText,T.noneOfTheAbove),T.selected&&v&&!C&&!l&&w(o)},F=T=>{var U;return(r==null?void 0:r.maxSelectMode)!==e.MaxSelectModes.Unlimited&&q(m)===(r==null?void 0:r.maxSelect)&&!((U=m[T])!=null&&U.isSelected)},k=T=>{if(T.preventDefault(),T.stopPropagation(),d(m,!0),p){const U=D(m);p(U)}},$=(T,U,G,s)=>{const S=Object.assign({},m);if((C||s)&&U)for(const P of Object.values(S))P.isSelected=!1,delete P.userText;else L&&!s&&m[L.id].isSelected&&(S[L.id].isSelected=!1);S[T]={isSelected:U,userText:G};const B=C&&Object.entries(S).some(([P,j])=>{var Z,X;return j.isSelected&&((X=(Z=t.find(te=>`${te.id}`===P))==null?void 0:Z.optionProperties)==null?void 0:X.allowsTextEntry)}),E=!x(S);if(v&&(d(S,E),C&&!B&&E&&p)){const P=D(S);p(P)}_(S)};return e.u("form",{className:e.cc(n,"ul-card--multiple","fade-in-transition",v&&!l&&"ul-card--unfocused"),id:"text-form",onClick:h==="multipleselect"?()=>{v&&u!==o&&h==="multipleselect"&&w(o)}:void 0,onSubmit:k,children:[e.u(c.Header,{isRequired:v&&(r==null?void 0:r.required),message:i,properties:r}),e.u(c.MobileEmbedView,{properties:r,children:e.u(e.g,{children:[e.u(c.QuestionBodyWrapper,{children:[r.isDropdown?e.u(c.Select,{disabledOptions:t.filter(T=>F(T.id)),dropdownFooter:g?e.u("div",{className:"ul-card__min-select-counter",style:{marginLeft:"16px"},children:[q(m),"/",r.minSelect]}):void 0,isMultiSelect:!C,multiselectText:r.dropdownMultiselectedText??"choices selected",onChange:T=>{const U={...m};for(const G of t)T.includes(G)?U[G.id].isSelected=!0:U[G.id].isSelected=!1;v&&d(U,!x(U)),_(U)},options:t,placeholderText:r.dropdownPlaceholderText??(C?"Select choice":"Select choice(s)"),value:t.filter(T=>m[T.id].isSelected)}):e.u("div",{className:e.cc(e.getClasses("ul-card__choices",a)),role:C?"radiogroup":"group",children:[t.map(({id:T,label:U,value:G,optionProperties:s})=>{var P,j;const S=`${T}`,{allowsTextEntry:B,noneOfTheAbove:E}={allowsTextEntry:!1,noneOfTheAbove:!1,...s};return e.u(c.Option,{allowTextEntry:B,border:b,disabled:F(S),error:O(m),id:S,isRadio:C,isSelected:!!((P=m[S])!=null&&P.isSelected),label:U,noneOfTheAbove:E,onUserInputChanged:N,promptText:(s==null?void 0:s.otherOptionPlaceholder)||"Please specify",text:(j=m[T])==null?void 0:j.userText,useMobileStyling:a,value:G},S)}),!!g&&e.u("div",{className:"ul-card__min-select-counter",children:[q(m),"/",r.minSelect]})]}),H&&e.u(c.LongformSubmitButton,{handleSubmit:k,isSubmitDisabled:x(m)})]}),!v&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-card__button-wrapper",children:e.u(c.Button,{disabled:x(m),onClick:k,children:e.getButtonText(r)})})})]})})]},o)},$e=n=>{const{questionId:i,type:d,next:t,options:r}=n,{setFocusedQuestionId:o}=e.useConfig(h=>({setFocusedQuestionId:h.setFocusedQuestionId}));return e.u(Ie,{...n,onSubmit:(h,y)=>{var w;const p=Object.entries(h).find(([,l])=>l.isSelected)||[void 0,void 0],[b,a]=p,v=r.find(l=>`${l.id}`===b);!((w=v==null?void 0:v.optionProperties)!=null&&w.allowsTextEntry)||a!=null&&a.userText&&a.userText.trim()!==""||o(i);const u=a!=null&&a.userText?{[b]:{userText:a.userText}}:null;t({value:v&&b?{[b]:v.value}:{},secondaryValue:u,questionId:i,type:d},y)}})},Ve=n=>{const{questionId:i,type:d,next:t}=n;return e.u(Ie,{...n,onSubmit:(r,o)=>{const h=Object.entries(r).reduce((p,[b,a])=>(p[b]=a.isSelected,p),{}),y=Object.entries(r).reduce((p,[b,a])=>{if(!a.userText)return p;const v=p||{};return v[b]={userText:a.userText},v},null);t({value:h,secondaryValue:y,questionId:i,type:d},o)}})},Ge=({className:n,labels:i,message:d,properties:t,next:r,questionId:o,type:h})=>{const[y,p]=e.h(null),{border:b,useMobileStyling:a,viewDocument:v,isLongFormSurvey:u,focusedQuestionId:w}=e.useConfig(_=>({border:_.border,useMobileStyling:_.useMobileStyling,viewDocument:_.viewDocument,isLongFormSurvey:J.isLongFormSurvey(_.studyType),focusedQuestionId:_.focusedQuestionId})),l=u&&w===o,f=i&&i.left,m=i&&i.right;return e.u("form",{className:e.cc(n,"ul-card--nps","fade-in-transition",u&&!l&&"ul-card--unfocused"),children:[e.u(c.Header,{isRequired:u&&(t==null?void 0:t.required),message:d,properties:t}),e.u(c.MobileEmbedView,{properties:t,children:[e.u(c.QuestionBodyWrapper,{children:[e.u("div",{className:"ul-card--nps__numbers",children:[...Array(11)].map((_,C)=>e.u("button",{className:e.cc(e.getClasses("nps-number",a),e.getClasses(`nps-number-${C}`,a)),id:`option-${C}`,onClick:R=>{u&&(R.preventDefault(),R.stopPropagation(),p(C)),r({value:C,questionId:o,type:h},!0)},onKeyDown:R=>{var O,q;const L=v.querySelectorAll("button.nps-number");R.key==="ArrowRight"?(O=L[C+1])==null||O.focus():R.key==="ArrowLeft"?(q=L[C-1])==null||q.focus():R.key!=="Enter"&&R.key!==" "||(u&&(R.preventDefault(),R.stopPropagation(),p(C)),r({value:C,questionId:o,type:h},!0))},onPointerDown:R=>{R.currentTarget.style.zIndex="2",R.currentTarget.style.borderColor=b},onPointerLeave:R=>{R.currentTarget.style.zIndex="auto",R.currentTarget.style.borderColor=ne.DEFAULT_BORDER_COLOR},style:y===C?{backgroundColor:b,color:"#fff"}:void 0,tabIndex:0,children:C},C))}),e.u("div",{className:"ul-card--nps__labels",children:[e.u("span",{children:f}),e.u("span",{children:m})]})]}),!t.required&&!u&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-vertical-centered-container",children:e.u(c.Button,{onClick:_=>{_.preventDefault(),_.stopPropagation(),r({value:null,questionId:o,type:h},!0)},children:e.getButtonText(t)})})})]})]},o)},We=n=>{const{className:i,message:d,next:t,properties:r,questionId:o,type:h,showIndividualSubmit:y=!1,onSubmitButtonClick:p}=n,b=h==="aidynamicfollowup"||h==="aidynamicstandalone",a=b?n.loading:void 0,{border:v,useMobileStyling:u,update:w,isLongFormSurvey:l,focusedQuestionId:f,setFocusedQuestionId:m,isPreview:_}=e.useConfig(N=>({border:N.border,useMobileStyling:N.useMobileStyling,update:N.update,isLongFormSurvey:J.isLongFormSurvey(N.studyType),focusedQuestionId:N.focusedQuestionId,setFocusedQuestionId:N.setFocusedQuestionId,isPreview:N.isPreview})),[C,R]=e.h(""),L=e._(null),O=l&&f===o;e.p(()=>{var N,F;l&&!_&&(O?(N=L.current)==null||N.focus():(F=L.current)==null||F.blur())},[l,O,_]);const q=C.trim(),A=r.required===!0&&!q,g=c.useAutoSize(L,()=>w()),x=N=>{N.preventDefault(),N.stopPropagation();const F=q.length>0,k=!r.required||F;t({value:C,questionId:o,type:h},k),p&&p(F)},D=r&&r.openTextPlaceholder?r.openTextPlaceholder:"";if((a===e.DynamicQuestionLoadingStates.failure||a===void 0)&&b)return e.u(e.g,{});const M=a===e.DynamicQuestionLoadingStates.inFlight,H=M?"Preparing your next question":d;return e.u("form",{className:e.cc(i,"ul-card-text","fade-in-transition",l&&!O&&"ul-card--unfocused"),id:"text-form",onClick:()=>{l&&f!==o&&m(o)},children:[e.u(c.Header,{isRequired:l&&(r==null?void 0:r.required),message:H,properties:r}),e.u(c.MobileEmbedView,{properties:r,children:e.u("div",{className:"ul-card-text",children:e.u(c.QuestionBodyWrapper,{children:[e.u("div",{className:"ul-card-text__container",children:e.u("textarea",{"aria-describedby":"ul-caption","aria-labelledby":"ul-question","aria-multiline":"true","aria-placeholder":D,className:e.cc(M&&"ul-card-text__input__loading",e.getClasses("ul-card-text__input",u)),"data-gramm":"false",disabled:M,maxLength:5e3,name:"text",onBlur:N=>{N.currentTarget.style.borderColor=ne.DEFAULT_BORDER_COLOR},onChange:N=>{const{value:F}=N.currentTarget;if(g(),N.preventDefault(),N.stopPropagation(),R(F),l){const k=F.trim().length>0;t({value:F,questionId:o,type:h},k)}},onFocus:N=>{N.currentTarget.style.borderColor=v,m(o)},placeholder:D,ref:L,role:"textbox",tabIndex:0})}),r.footerHtml&&e.u(c.Html,{className:"footer",html:r.footerHtml}),y&&e.u(c.LongformSubmitButton,{handleSubmit:x,isSubmitDisabled:A}),e.u(c.QuestionBodyFooterContainer,{children:!l&&e.u(c.Button,{disabled:A||M,onClick:x,children:e.getButtonText(r)})})]})})})]},o)},ge=1,Re=2,we=3,de=n=>n.type==="av_permission",Ce=n=>n.type==="screen_permission",Ne=(n,i)=>n===void 0?ge:n?((d,t)=>!(de(t)?t.permissionDescriptors:[]).includes("camera")||d.getVideoTracks().length>0)(n,i)?we:ge:Re,Se={avStream:null,currentPage:null,mediaRecordingUids:null,nextQuestion:()=>{},passthroughData:void 0,recordingMediaTypes:void 0,screenPermissionRequested:!1,type:void 0},re=e.create(n=>({...Se,reset:()=>{n(Se)},updatePage:i=>{n(i)}}));function he({currentPage:n,pages:i}){const{avStream:d,recordingMediaTypes:t,updatePage:r}=re.getState(),{recorderEventEmitter:o}=e.useConfig.getState();o.emit("av.permission",{"permission.descriptors":n.permissionDescriptors,"stream.ready":(h,y)=>{if(d===h)return;let p=n;if(h&&!n.permissionDescriptors.includes("camera")){const b=i.indexOf(n),a=y!=null&&y.active?b+2:b+1;y!=null&&y.active&&t&&o.emit("begin.recording",{"recording.media.types":t,"start.recording.callback":v=>r({mediaRecordingUids:v})}),p=i[a]}r({currentPage:p,avStream:h})}})}function be({status:n}){const{nextQuestion:i,passthroughData:d,mediaRecordingUids:t,reset:r}=re.getState(),{recorderEventEmitter:o,handleUploadUpdate:h,index:y}=e.useConfig.getState(),p={value:{taskStatus:n},type:"recordedtask",questionId:(d==null?void 0:d.questionId)||1};d&&o.emit("finish.task",{"begin.callback":b=>{h({mediaRecordingUid:b,isSubmitted:!0,progressPct:0,isComplete:!1})},"progress.callback":(b,a)=>{h({mediaRecordingUid:b,progressPct:a.detail,isSubmitted:!1,isComplete:!1})},"upload.callback":b=>{b&&h({mediaRecordingUid:b,isComplete:!0,isSubmitted:!0,progressPct:100})},"passthrough.data":d,"current.index":y,"task.response":p,"task.complete.callback":b=>{p.value.taskDurationMillisecond=b,t&&(p.value.mediaRecordingUids=t),r(),i(p)}})}function ve({pages:n,setIsRequestingPermission:i}){const{recorderEventEmitter:d,eventEmitFn:t}=e.useConfig.getState(),{updatePage:r,currentPage:o,recordingMediaTypes:h,screenPermissionRequested:y}=re.getState();if(!o)return;const p=n.indexOf(o);switch(o.type){case"av_permission":{const b=y?p+2:p+1;return y&&h&&d.emit("begin.recording",{"recording.media.types":h,"start.recording.callback":a=>{r({mediaRecordingUids:a})}}),void r({currentPage:n[b]})}case"screen_permission":return void d.emit("screen.permission",{"screen.permission.requested":i,"stream.ready.callback":(b,a)=>{const v=a?n[p+1]:o;a&&h&&d.emit("begin.recording",{"recording.media.types":h,"start.recording.callback":u=>{r({captureStream:a,mediaRecordingUids:u})}}),r({currentPage:v,screenPermissionRequested:!0,captureStream:a})}});case"start_task":return t("recorded.task.start"),d.emit("recorded.task.start"),d.emit("start.task"),void r({currentPage:n[p+1],screenPermissionRequested:!0});case"complete_task":return}}const Le="ul-permission-graphics-container",De="ul-permission-body",qe=e.cc(Le,"ul_recorded-task-inset-spacing"),ce=e.cc("ul-horizontal-button-container","ul-horizontal-button-container-left"),Be=({richTextBody:n})=>e.u(c.Html,{className:"ul-rich-text-body",html:n,id:"ul-task-detail-container"}),pe=({required:n,skipButtonText:i,bottom:d=!1})=>n?null:e.u(c.Button,{className:e.cc(d&&"ul-skip-button-below","ul-button-inactive"),onClick:be.bind(null,{status:"abandoned"}),children:i||"Skip"}),ye=n=>{const{avStream:i,captureStream:d,recordingMediaTypes:t,updatePage:r}=re.getState(),o=(t==null?void 0:t.includes("audio"))||(t==null?void 0:t.includes("video"));e.p(()=>{const h=setInterval(()=>{o&&i&&!i.active?r({avStream:null,currentPage:n[0]}):d&&d.active||r({captureStream:void 0,currentPage:n[o?1:0]})},1e3);return()=>clearInterval(h)},[i,d,o,n,t,r])},je=({content:n,pages:i,required:d})=>{const{buttonText:t,skipButtonText:r,taskDetail:o}=n;return ye(i),e.u("div",{className:"ul-task-page",children:[o&&e.u(Be,{richTextBody:o}),e.u("div",{className:ce,children:[e.u(c.Button,{onClick:ve.bind(null,{pages:i}),children:t}),e.u(pe,{required:d,skipButtonText:r})]})]},"start-task")},Ze=({content:n,pages:i,properties:d})=>{const{buttonText:t,skipButtonText:r}=n;return ye(i),e.u("div",{className:"ul-task-page",children:[n.taskDetail&&e.u(Be,{richTextBody:n.taskDetail}),e.u(c.MobileEmbedView,{properties:d,children:e.u("div",{className:ce,children:[e.u(c.Button,{className:"ul-complete-task-button",onClick:be.bind(null,{status:"completed"}),children:t}),e.u(c.Button,{className:e.cc("ul-button-inactive"),onClick:be.bind(null,{status:"given.up"}),children:r})]})})]},"complete-task")},ze=({content:n,pages:i,required:d})=>{const{buttonText:t,skipButtonText:r}=n,[o]=e.useConfig(p=>[p.tabTitle]),[h,y]=e.h(!1);return e.u("div",{children:[e.u("div",{className:qe,children:[e.u("p",{style:{marginTop:"auto"},children:n.selectTabText}),e.u("div",{className:"ul-select-tab-container",children:e.u("p",{className:De,children:o})})]}),e.u("div",{className:d?"":ce,children:[e.u(c.Button,{disabled:h,onClick:ve.bind(null,{pages:i,setIsRequestingPermission:y}),children:t}),e.u(pe,{required:d,skipButtonText:r})]})]})},Ye=({content:n})=>e.u(c.Html,{className:e.cc(Le,"ul_permission_svg_container","ul_recorded-task-inset-spacing","ul-center-horizontally"),html:n.svg},"ul-permission-request-graphic"),Ke=({content:n,pages:i,required:d})=>{const{permissionDeniedHeadline:t,permissionDeniedBody:r,skipButtonText:o,tryAgainButtonText:h}=n,y=de(i[0])?i[0]:null;return e.p(()=>{const p=setInterval(()=>{y!==null&&he({currentPage:y,pages:i})},1e3);return()=>clearInterval(p)},[y,i]),y?e.u("div",{children:[e.u("div",{className:qe,children:e.u("p",{className:"ul-av-permission-denied-paragraph",children:[e.u("span",{className:"ul-av-permission-denied-headline",children:t}),e.u("span",{className:De,children:r})]})}),e.u("div",{className:ce,children:[e.u(c.Button,{onClick:he.bind(null,{currentPage:y,pages:i}),children:h}),e.u(pe,{required:d,skipButtonText:o})]})]}):null},Xe=({stream:n})=>e.u("video",{autoPlay:!0,className:e.cc("ul_recorded-task-inset-spacing"),id:"ul-record-task-video-preview",muted:!0,ref:i=>{i&&(i.srcObject=n||null)}}),Je=({content:n,pages:i,required:d})=>{const{skipButtonText:t}=n,{avStream:r}=re.getState();return ye(i),e.u("div",{children:[e.u(Xe,{stream:r}),e.u("div",{className:"ul-vertical-button-container-center",children:[e.u(c.Button,{onClick:ve.bind(null,{pages:i}),children:n.buttonText}),e.u(pe,{bottom:!0,required:d,skipButtonText:t})]})]})},et=({properties:n})=>{const{pages:i,required:d}=n,{avStream:t,currentPage:r}=re.getState();if(r===void 0)return null;switch(r==null?void 0:r.type){case"av_permission":{const o=Ne(t,r);return o===ge?e.u(Ye,{content:r}):o===Re?e.u(Ke,{content:r,pages:i,required:d}):e.u(Je,{content:r,pages:i,required:d})}case"screen_permission":return e.u(ze,{content:r,pages:i,required:d});case"start_task":return e.u(je,{content:r,pages:i,required:d});case"complete_task":return e.u(Ze,{content:r,pages:i,properties:n});default:return null}},tt=({className:n,properties:i,next:d,questionId:t})=>{const r=e.useConfig(),{surveyId:o,responseGroupUid:h,userId:y,update:p}=r,b=re(),{screenPermissionRequested:a}=b,v=re(m=>m.avStream);let u=re(m=>m.currentPage);u||(u=function({pages:m,userId:_,responseGroupUid:C,surveyId:R,questionId:L,next:O}){const{updatePage:q}=re.getState(),{eventEmitFn:A,recorderEventEmitter:g}=e.useConfig.getState(),x={questionId:L,surveyId:R,visitorId:_,responseGroupUid:C};let D=0;g.emit("recorded.task.permission.screen"),A("recorded.task.permission.screen"),g.emit("permission.status",{"permission.status.callback":(H,N,F,k)=>{const $=m[D],{type:T}=$,U=["screen"];if(de($)){const{permissionDescriptors:G}=$,s=G==null?void 0:G.includes("microphone"),S=G==null?void 0:G.includes("camera");s&&U.push("audio"),S&&U.push("video"),(H!=null&&H.active&&!S||H!=null&&H.active&&N)&&D++}Ce(m[D])&&F&&(D++,g.emit("begin.recording",{"recording.media.types":U,"start.recording.callback":G=>q({mediaRecordingUids:G})})),q({currentPage:m[D],avStream:H,screenPermissionRequested:F,nextQuestion:O,type:T,passthroughData:x,recordingMediaTypes:U,captureStream:k})}});const M=m[D];return M.type==="av_permission"&&he({currentPage:M,pages:m}),M}({questionId:t,surveyId:o,next:m=>{d(m,!0)},pages:i.pages,responseGroupUid:h,userId:y}));let w=u.headline,l=u.captionText;const f=Ne(v,u);return Ce(u)&&a&&(w=u.permissionDeniedHeadline,l=u.permissionDeniedCaptionText),de(u)&&f===we&&(w=u.permissionGrantedHeadline,l=u.permissionGrantedCaptionText),e.p(()=>{p()},[p]),e.u("div",{className:e.cc(n,"ul-center-horizontally","fade-in-transition"),children:[e.u(c.Header,{isRequired:i==null?void 0:i.required,message:w,properties:{captionText:l}}),e.u(c.QuestionBodyWrapper,{children:e.u(et,{properties:i})})]})},rt=({richTextBody:n,plaintextBody:i})=>n?e.u(c.Html,{className:"ul-rich-text-body",html:n,id:"ul-card__text-url-body-container"}):i?e.u("div",{className:"ul-rich-text-body",id:"ul-card__text-url-body-container",children:(i?i.split(/\n\s*\n/g):[]).map((d,t)=>e.u("p",{children:d},t))}):null,nt=({className:n,message:i,next:d,properties:t,questionId:r,type:o})=>{const{visitorAttributes:h,isLongFormSurvey:y}=e.useConfig(v=>({visitorAttributes:v.visitorAttributes,isLongFormSurvey:J.isLongFormSurvey(v.studyType)})),p=(v,u=!1)=>{d({value:u?{skipped:!0}:void 0,questionId:r,type:o},!0)},b=c.getAttributedUrl(t&&t.buttonUrl,h),a=y&&t.promptActionType===e.PromptActionTypeEnum.NO_BUTTON;return e.u("div",{className:e.cc(n,"ul-card__text-url-prompt","fade-in-transition"),children:[e.u(c.Header,{isRequired:y&&(t==null?void 0:t.required),message:i,properties:{questionHtml:t.questionHtml}}),e.u(c.QuestionBodyWrapper,{children:e.u(rt,{plaintextBody:t==null?void 0:t.body,richTextBody:t==null?void 0:t.richTextBody})}),e.u(c.MobileEmbedView,{properties:t,children:!a&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-card-button-group",children:[e.u("a",{className:"ul-card-text__button ul-card__text-url-prompt-button",href:b,id:"ul-card-text__button",onClick:p,onKeyPress:v=>{v.key!=="Enter"&&v.key!==" "||d({value:void 0,questionId:r,type:o},!0)},rel:"noreferrer",role:b?"link":"button",tabIndex:0,target:"_blank",children:e.getButtonText(t)}),t.required===!1&&e.u("button",{className:"ul-card-skip__button",onClick:v=>p(0,!0),children:e.getSkipButtonText(t)})]})})})]},r)},it=({className:n,questionId:i})=>{const{border:d,destroy:t,endCard:r,forceBrandedLogo:o,update:h}=e.useConfig(b=>({border:b.border,destroy:b.destroy,endCard:b.endCard,forceBrandedLogo:b.forceBrandedLogo,update:b.update}));e.p(()=>{setTimeout(()=>{t(ne.APP_ID)},o?4e3:2e3)},[t,o]);const y=r&&r.subheader?e.u("p",{className:"ul-caption",children:r.subheader}):null,p=r&&r.headline?r.headline:"";return e.p(()=>{h()},[h]),e.u("div",{className:e.cc(n,"ul-card--thanks","fade-in-transition"),children:e.u("div",{children:e.u("div",{className:"ul-card--thanks-content",children:[e.u("div",{className:"ul-thanks-check",children:e.u("svg",{"aria-labelledby":"title",fill:"none",height:"99",viewBox:"0 0 81 99",width:"81",xmlns:"http://www.w3.org/2000/svg",children:[e.u("path",{clipRule:"evenodd",d:"M40.5 77C60.9345 77 77.5 60.4345 77.5 40C77.5 19.5655 60.9345 3 40.5 3C20.0655 3 3.5 19.5655 3.5 40C3.5 60.4345 20.0655 77 40.5 77ZM80.5 40C80.5 62.0914 62.5914 80 40.5 80C18.4086 80 0.5 62.0914 0.5 40C0.5 17.9086 18.4086 0 40.5 0C62.5914 0 80.5 17.9086 80.5 40Z",fill:d,fillRule:"evenodd"}),e.u("path",{clipRule:"evenodd",d:"M55.025 22.9046C55.6299 23.4705 55.6616 24.4198 55.0956 25.0247C54.8724 25.2634 54.6109 25.5285 54.3157 25.8277C52.2547 27.9168 48.5549 31.667 44.8135 39.6658C43.2818 42.9406 42.0864 45.8386 41.0823 48.2729C40.6539 49.3116 40.2603 50.2659 39.8902 51.129C39.287 52.5359 38.7248 53.7508 38.1744 54.625C37.8997 55.0613 37.5806 55.4905 37.2017 55.8245C36.8201 56.1607 36.2613 56.5 35.5457 56.5C34.6742 56.5 34.0892 55.9692 33.7774 55.6083C33.4502 55.2296 33.1752 54.7511 32.9396 54.301C32.7305 53.9013 32.5088 53.4367 32.2797 52.9565C32.2429 52.8794 32.2059 52.8019 32.1688 52.7243C31.8942 52.1499 31.5959 51.534 31.2537 50.8868C29.8886 48.305 27.8539 45.2878 24.2343 43.1382C23.522 42.7152 23.2875 41.7949 23.7105 41.0826C24.1335 40.3703 25.0539 40.1358 25.7662 40.5588C30.0556 43.1062 32.4149 46.6647 33.9058 49.4845C34.2776 50.1876 34.5973 50.8487 34.8753 51.4302C34.9147 51.5124 34.9529 51.5926 34.9902 51.6707C35.2222 52.1567 35.4164 52.5637 35.5978 52.9102C35.6151 52.9434 35.6321 52.9754 35.6485 53.0061C36.0565 52.3531 36.5341 51.3434 37.133 49.9468C37.4781 49.1418 37.8572 48.2229 38.2761 47.2074C39.2886 44.7532 40.5339 41.7347 42.0961 38.3948C46.0591 29.9221 50.0641 25.8648 52.1535 23.7482C52.4423 23.4556 52.6944 23.2002 52.9048 22.9753C53.4708 22.3703 54.42 22.3387 55.025 22.9046ZM35.1994 53.5892C35.1994 53.5892 35.2 53.5888 35.2012 53.5879C35.2 53.5889 35.1994 53.5893 35.1994 53.5892ZM36.0666 53.6682C36.0732 53.674 36.0765 53.6775 36.0765 53.6777C36.0765 53.678 36.0732 53.6751 36.0666 53.6682Z",fill:d,fillRule:"evenodd"}),e.u("path",{d:"M69.5 97C69.5 98.1046 56.2924 99 40 99C23.7076 99 10.5 98.1046 10.5 97C10.5 95.8954 23.7076 95 40 95C56.2924 95 69.5 95.8954 69.5 97Z",fill:"black",fillOpacity:"0.2"})]})}),e.u(c.Header,{message:p}),y]})})},i)},se="ul-card-video__player_recorder",xe="ul-video-btn",me=0,_e=1,st=({className:n,message:i,next:d,properties:t,questionId:r,type:o})=>{const{apiURL:h,envId:y,handleUploadUpdate:p,headers:b,responseGroupUid:a,surveyId:v,update:u,viewDocument:w,visitorId:l}=e.useConfig(k=>({apiURL:k.apiURL,envId:k.envId,handleUploadUpdate:k.handleUploadUpdate,headers:k.headers,responseGroupUid:k.responseGroupUid,surveyId:k.surveyId,update:k.update,viewDocument:k.viewDocument,visitorId:k.userId})),[f,m]=e.h(!1),[_,C]=e.h(null),[R,L]=e.h(null),[O,q]=e.h(me),[A,g]=e.h(null),[x,D]=e.h(null),M=t&&t.videoUrl,H=e.T(k=>{k&&g(k)},[g]);e.p(()=>{const k=new ResizeObserver(()=>{setTimeout(u,0)});return x&&k.observe(x),A&&k.observe(A),()=>{k.disconnect()}},[u,x,A]);const N=(k,$)=>{k===c.RECORDER.UPLOAD_STARTED?(C($[c.RECORDER.UPLOAD_ID]),L($[c.RECORDER.MEDIA_RECORDING_UID]),m(!0)):k===c.RECORDER.DELETE?(C(null),L(null),m(!1)):k===c.RECORDER.UPLOAD_PROGRESS?isNaN($[c.RECORDER.UPLOAD_PROGRESS_PCT])?p({mediaRecordingUid:$[c.RECORDER.MEDIA_RECORDING_UID],isComplete:!0}):p({mediaRecordingUid:$[c.RECORDER.MEDIA_RECORDING_UID],progressPct:$[c.RECORDER.UPLOAD_PROGRESS_PCT]}):k===c.RECORDER.UPLOAD_FINISHED&&p({mediaRecordingUid:$[c.RECORDER.MEDIA_RECORDING_UID],isComplete:!0})},F=k=>{k.preventDefault(),k.stopPropagation(),document.getElementById(se)&&c.stopRecording(se),_&&R?(p({mediaRecordingUid:R,isSubmitted:!0}),d({value:{mediaRecordingUid:R},questionId:r,type:o},!0)):d({value:null,questionId:r,type:o},!0)};return e.u("form",{className:e.cc(n,"ul-card--video","fade-in-transition"),id:"ul-video-interview-form",children:[e.u(c.Header,{isRequired:t==null?void 0:t.required,message:i,properties:t}),e.u(c.QuestionBodyWrapper,{children:[e.u("div",{id:"ul-question-player-container",ref:H,style:{display:O===me?"":"none"},children:[e.u("div",{id:se,ref:k=>{if(k&&k.children.length===0&&!t.hideRecordedPrompt){D(k);const $=c.videoPlayer(se,{src:M,type:"application/x-mpegURL"},void 0,t.mediaType===c.RECORDER.MEDIA_TYPE_AUDIO,h,w);k.appendChild($)}}}),e.u(c.MobileEmbedView,{properties:t,children:e.u("button",{className:`${xe} ul-record-response-btn`,onClick:k=>{k.preventDefault(),k.stopPropagation(),document.getElementById(se)&&c.pauseQuestionPlayer(se),q(_e)}})})]}),e.u("div",{style:{display:O===_e?"block":"none"},children:[e.u("button",{className:`${xe} ul-back-question-btn`,onClick:k=>{k.preventDefault(),k.stopPropagation(),q(me)},style:{display:t.hideRecordedPrompt?"none":"block"}}),e.u("div",{id:"ul-recorder-player-container",ref:k=>{if(k&&k.children.length===0){D(k);const $=c.videoRecorderPlayer(se,{surveyId:v,responseGroupUid:a,questionId:r,visitorId:l,envId:y},h,N,void 0,{...b,"x-ul-video-recorder-origin":"sdk"},t.mediaType===c.RECORDER.MEDIA_TYPE_AUDIO,w);k.appendChild($)}}})]})]}),e.u(c.QuestionBodyFooterContainer,{children:[e.u(c.Button,{disabled:!f,onClick:F,children:e.getButtonText(t)}),e.u("button",{className:"ul-card-text__button ul-button-inactive ul-card-skip__button",id:"ul-card-video__skip_button",onClick:F,style:{display:t.required?"none":"block",...f?{display:"none"}:{}},children:e.getSkipButtonText(t)})]})]})},ot=({className:n})=>{const{uploadProgress:i}=e.useConfig(o=>({uploadProgress:o.uploadProgress}));let d,t;Object.values(i).filter(o=>o.isSubmitted).length>1?(d="Your responses are processing",t="Please keep this tab open until your responses are fully processed."):(d="Your response is processing",t="Please keep this tab open until your response is fully processed.");const r=Math.round(Math.min(99,...Object.values(i).filter(o=>o.isSubmitted).map(o=>o.progressPct||0)));return e.u("div",{className:e.cc(n,"ul-card--uploading","fade-in-transition"),children:[e.u("div",{"aria-busy":"true","aria-label":"Processing...","aria-live":"polite",className:"ul-loading-spinner-container",role:"progressbar",children:e.u("div",{className:"ul-loading-spinner",children:[e.u("div",{className:"first"}),e.u("div",{className:"second"}),e.u("div",{className:"third"}),e.u("div",{className:"fourth"})]})}),e.u(c.Header,{message:`${d} (${r}% complete)`}),e.u("p",{className:"ul-caption",children:t})]})},Pe=e.F$1(void 0),lt=({value:n,children:i})=>e.u(Pe.Provider,{value:n,children:i}),at=({isRightLabel:n,isLeftLabel:i})=>n?e.MaxDiffChoice.RIGHT:i?e.MaxDiffChoice.LEFT:null,ut="Best",dt="Worst",ct=({className:n,labels:i,message:d,properties:t,options:r,questionId:o,type:h,next:y})=>{var L,O,q,A;const[p,b]=e.h(r.map((g,x)=>({...g,label:g.label===""?`Item ${x+1}`:g.label,isRightLabel:!1,isLeftLabel:!1}))),a=(()=>{const g=e.q(Pe);if(g===void 0)throw new Error("usePreviousResponses must be used within a PreviousResponsesProvider");return g})(),v={padding:"24px",display:"flex",cursor:"pointer",width:"auto"},[u,w]=e.h(!1);e.p(()=>{const g=p.findIndex($=>$.isRightLabel),x=p.findIndex($=>$.isLeftLabel),D=g!==-1&&x!==-1;w(D);const M=!t.required||t.required&&D,H=p.map($=>({id:$.id,option:$.label,selected:at($)})),N=Math.floor(o),F=Object.keys(a).filter($=>$.startsWith(N.toString())).map(Number).sort(($,T)=>$-T).at(-1),k=[];if(typeof F=="number"){const $=a[F],T=JSON.parse($);k.push(...T)}k.push(H),setTimeout(()=>{y({value:k,questionId:o,type:h},M,D),w(!1)},D?500:0)},[p]);const{border:l,useMobileStyling:f,enableCspTrustedTypes:m}=e.useConfig(g=>({border:g.border,useMobileStyling:g.useMobileStyling,enableCspTrustedTypes:g.enableCspTrustedTypes})),_=(g,x)=>()=>{u||b(D=>((M,H,N)=>M.map(F=>F.id===H?{...F,isRightLabel:N===e.MaxDiffChoice.RIGHT,isLeftLabel:N===e.MaxDiffChoice.LEFT}:N===e.MaxDiffChoice.RIGHT&&F.isRightLabel||N===e.MaxDiffChoice.LEFT&&F.isLeftLabel?{...F,isRightLabel:!1,isLeftLabel:!1}:F))(D,g,x))},C=(L=t.ratingIcons)==null?void 0:L[0].svg,R=(O=t.ratingIcons)==null?void 0:O[1].svg;return e.u("form",{className:e.cc(n,"ul-card-maxdiff","fade-in-transition"),children:[e.u(c.Header,{isRequired:t==null?void 0:t.required,message:d,properties:t}),e.u(c.QuestionBodyWrapper,{children:e.u("div",{className:"ul-card--maxdiff__question-inner-container",children:[e.u("div",{className:"ul-card-maxdiff__label",children:(i==null?void 0:i.left)||((q=t==null?void 0:t.labels)==null?void 0:q.left)||ut}),e.u("div",{children:" "}),e.u("div",{className:"ul-card-maxdiff__label",children:(i==null?void 0:i.right)||((A=t==null?void 0:t.labels)==null?void 0:A.right)||dt}),p.map(({id:g,label:x,isLeftLabel:D,isRightLabel:M})=>e.u(e.g,{children:[e.u("div",{className:"ul-card-maxdiff__option-control "+(R?"smiley":""),children:R?e.u(ke,{ariaPressed:D,className:D?"ul-card-maxdiff__option-btn ul-card-maxdiff__option-selected good":"ul-card-maxdiff__option-btn",enableCspTrustedTypes:m,html:R,id:`smiley-good-${g}`,onClick:_(g,e.MaxDiffChoice.LEFT)}):e.u(c.Option,{allowTextEntry:!1,ariaLabel:`bestLabel-${x}`,border:l,choiceStyle:v,error:!1,id:`${g}`,isRadio:!0,isSelected:D,onUserInputChanged:_(g,e.MaxDiffChoice.LEFT),useMobileStyling:f})}),e.u("div",{className:"ul-card-maxdiff__option-label",children:x}),e.u("div",{className:"ul-card-maxdiff__option-control "+(C?"smiley":""),children:C?e.u(ke,{ariaPressed:M,className:M?"ul-card-maxdiff__option-btn ul-card-maxdiff__option-selected bad":"ul-card-maxdiff__option-btn",enableCspTrustedTypes:m,html:C,id:`smiley-bad-${g}`,onClick:_(g,e.MaxDiffChoice.RIGHT)}):e.u(c.Option,{allowTextEntry:!1,ariaLabel:`worstLabel-${x}`,border:l,choiceStyle:v,error:!1,id:`${g}`,isRadio:!0,isSelected:M,onUserInputChanged:_(g,e.MaxDiffChoice.RIGHT),useMobileStyling:f})})]}))]})})]},o)},ke=({enableCspTrustedTypes:n,ariaPressed:i,className:d,html:t,id:r,onClick:o})=>{const h=e.F(()=>ne.getHtml(t,n),[n,t]);return e.u("span",{"aria-pressed":i,className:d,dangerouslySetInnerHTML:{__html:h},id:r,onClick:o,tabIndex:0,type:"button"})},pt=({className:n,labels:i,message:d,next:t,properties:r,questionId:o,type:h,onSubmitButtonClick:y,options:p,showIndividualSubmit:b=!1})=>{const a=e._(null),v=e._(0),u=e._(0),w=e._(null),l=e._(!1),f=e._([]),[m,_]=e.h(()=>(r==null?void 0:r.required)===!0),[C,R]=e.h(!1),[L,O]=e.h(()=>p.map(I=>({...I,rank:null}))),q=e.F(()=>Array.from({length:p.length},(I,V)=>V+1),[p.length]),{isLongFormSurvey:A,focusedQuestionId:g,setFocusedQuestionId:x,useMobileStyling:D,isPreview:M,headers:H}=e.useConfig(I=>({useMobileStyling:I.useMobileStyling,isLongFormSurvey:J.isLongFormSurvey(I.studyType),focusedQuestionId:I.focusedQuestionId,setFocusedQuestionId:I.setFocusedQuestionId,isPreview:I.isPreview,headers:I.headers})),N=(H==null?void 0:H["userleap-platform"])==="android",F=D&&!M&&!N,k=!F&&!N,$=A&&g===o,T=I=>{I.preventDefault(),P(L),y&&y(C)},U=(I,V)=>{O(W=>{const Q=parseInt(V),z=W.map(Y=>({...Y}));z.some(Y=>Y.rank==null)&&z.forEach((Y,oe)=>Y.rank=oe+1);const ee=z.findIndex(Y=>Y.id===I);if(ee===-1)return W;const K=z[ee].rank;return Q<K?z.forEach(Y=>{Y.id!==I&&Y.rank>=Q&&Y.rank<K&&(Y.rank=Y.rank+1)}):Q>K&&z.forEach(Y=>{Y.id!==I&&Y.rank>K&&Y.rank<=Q&&(Y.rank=Y.rank-1)}),z[ee].rank=Q,z.sort((Y,oe)=>Y.rank-oe.rank),j(z),z})},G=(I,V)=>{for(let W=0;W<f.current.length;W++){const Q=f.current[W];if(!Q||Q===w.current)continue;const z=Q.getBoundingClientRect();if(I>=z.left&&I<=z.right&&V>=z.top&&V<=z.bottom)return{element:Q,index:W}}return null},s=I=>V=>{if(!F)return;V.preventDefault(),V.stopPropagation(),l.current=!0,a.current=I;const W=V.touches[0];v.current=W.clientY,u.current=W.clientY;const Q=V.currentTarget.closest(".ul-card-rank__option");Q&&(w.current=Q,Q.classList.add("is-dragging"))},S=I=>{if(!F||!l.current||a.current===null)return;I.preventDefault(),I.stopPropagation();const V=I.touches[0];u.current=V.clientY;const W=u.current-v.current;w.current&&(w.current.style.transform=`translateY(${W}px)`,w.current.style.zIndex="1000"),f.current.forEach(z=>{z&&z!==w.current&&z.classList.remove("is-drop-target")});const Q=G(V.clientX,V.clientY);Q&&Q.element.classList.add("is-drop-target")},B=I=>{if(!F||!l.current||a.current===null)return;I.preventDefault(),I.stopPropagation();const V=I.changedTouches[0],W=G(V.clientX,V.clientY);w.current&&(w.current.style.transform="",w.current.style.zIndex="",w.current.classList.remove("is-dragging")),f.current.forEach(Q=>{Q&&Q.classList.remove("is-drop-target")}),W&&W.index!==a.current&&E(a.current,W.index),a.current=null,w.current=null,l.current=!1},E=(I,V)=>{O(W=>{const Q=W.map(ee=>({...ee})),[z]=Q.splice(I,1);return Q.splice(V,0,z),Q.forEach((ee,K)=>{ee.rank=K+1}),j(Q),Q})},P=I=>{const V={};I.reduce((W,Q)=>(W[Q.id]=Q.rank,W),V),t({value:V,questionId:o,type:h},!0)},j=I=>{_(!1),R(!0),A&&P(I)},{left:Z,right:X}=i,te=p.length,le=I=>{I.preventDefault(),I.currentTarget.classList.add("is-drop-target")},ae=I=>{I.currentTarget.classList.remove("is-drop-target")},ie=I=>{a.current=null,I.currentTarget.classList.remove("is-dragging")};return e.u("form",{className:e.cc(n,"ul-card-rank","fade-in-transition",A&&!$&&"ul-card--unfocused"),onClick:A&&!$?()=>{x(o)}:void 0,onSubmit:T,children:[e.u(c.Header,{isRequired:r==null?void 0:r.required,message:d,properties:r}),e.u(c.MobileEmbedView,{properties:r,children:N?e.u(e.g,{children:[e.u(c.QuestionBodyWrapper,{children:[e.u("div",{className:"ul-card--rank__question-inner-container",children:[e.u("div",{className:"ul-card-rank__labels",children:e.u("span",{children:["1 - ",Z]})}),e.u("ol",{className:"ul-card-rank__list",children:L.map(({id:I,label:V,rank:W})=>e.u("li",{className:"ul-card-rank__option",children:[e.u("select",{"aria-label":`Rank for ${V}`,className:e.cc("ul-card-rank__select",W==null&&"ul-card-rank__select--placeholder"),name:`rank[${I}]`,onChange:Q=>U(I,Q.currentTarget.value),value:W??"",children:[W==null&&e.u("option",{className:"ul-card-rank__select-option",disabled:!0,value:"",children:"-"}),q.map(Q=>e.u("option",{className:"ul-card-rank__select-option",value:Q,children:Q},`${Q}-${o}`))]}),e.u("span",{children:V})]},I))}),e.u("div",{className:"ul-card-rank__labels",children:e.u("span",{children:[te," - ",X]})})]}),b&&e.u(c.LongformSubmitButton,{handleSubmit:T,isSubmitDisabled:m})]}),!A&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-card__button-wrapper",children:e.u(c.Button,{disabled:m,children:e.getButtonText(r)})})})]}):e.u(e.g,{children:[e.u(c.QuestionBodyWrapper,{children:[e.u("div",{className:"ul-card--rank__question-inner-container",children:[e.u("div",{className:"ul-card-rank__labels",children:e.u("span",{children:["1 - ",Z]})}),e.u("ol",{className:"ul-card-rank__list",onDragOver:N?void 0:I=>{I.preventDefault(),I.dataTransfer&&(I.dataTransfer.dropEffect="move")},children:L.map(({id:I,label:V,rank:W},Q)=>{return e.u("li",{className:"ul-card-rank__option",draggable:!!k||void 0,onDragEnd:k?ie:void 0,onDragEnter:k?le:void 0,onDragLeave:k?ae:void 0,onDragStart:k?(ee=Q,K=>{a.current=ee,K.dataTransfer&&(K.dataTransfer.effectAllowed="move",K.dataTransfer.setData("text/plain",String(ee)),K.currentTarget.classList.add("is-dragging"))}):void 0,onDrop:k?(z=Q,K=>{var oe,fe;K.preventDefault(),K.currentTarget.classList.remove("is-drop-target");const Y=a.current;a.current=null,(fe=(oe=K.currentTarget.closest(".ul-card-rank__list"))==null?void 0:oe.querySelector(".is-dragging"))==null||fe.classList.remove("is-dragging"),Y!=null&&Y!==z&&E(Y,z)}):void 0,ref:K=>f.current[Q]=K,children:[e.u("select",{"aria-label":`Rank for ${V}`,className:e.cc("ul-card-rank__select",W==null&&"ul-card-rank__select--placeholder"),name:`rank[${I}]`,onChange:K=>U(I,K.currentTarget.value),value:W??"",children:[W==null&&e.u("option",{className:"ul-card-rank__select-option",disabled:!0,value:"",children:"-"}),q.map(K=>e.u("option",{className:"ul-card-rank__select-option",value:K,children:K},`${K}-${o}`))]}),e.u("span",{children:V}),!N&&e.u("button",{"aria-label":`Drag ${V} to reorder`,className:"ul-card-rank__drag-btn",onTouchEnd:F?B:void 0,onTouchMove:F?S:void 0,onTouchStart:F?s(Q):void 0,title:"Drag to reorder",type:"button",children:e.u("svg",{fill:"none",height:"17",viewBox:"0 0 16 17",width:"16",xmlns:"http://www.w3.org/2000/svg",children:e.u("path",{d:"M5.75 11.625C6.37132 11.625 6.875 12.1287 6.875 12.75C6.875 13.3713 6.37132 13.875 5.75 13.875C5.12868 13.875 4.625 13.3713 4.625 12.75C4.625 12.1287 5.12868 11.625 5.75 11.625ZM10.25 11.625C10.8713 11.625 11.375 12.1287 11.375 12.75C11.375 13.3713 10.8713 13.875 10.25 13.875C9.62868 13.875 9.125 13.3713 9.125 12.75C9.125 12.1287 9.62868 11.625 10.25 11.625ZM5.75 7.375C6.37132 7.375 6.875 7.87868 6.875 8.5C6.875 9.12132 6.37132 9.625 5.75 9.625C5.12868 9.625 4.625 9.12132 4.625 8.5C4.625 7.87868 5.12868 7.375 5.75 7.375ZM10.25 7.375C10.8713 7.375 11.375 7.87868 11.375 8.5C11.375 9.12132 10.8713 9.625 10.25 9.625C9.62868 9.625 9.125 9.12132 9.125 8.5C9.125 7.87868 9.62868 7.375 10.25 7.375ZM5.75 3.125C6.37132 3.125 6.875 3.62868 6.875 4.25C6.875 4.87132 6.37132 5.375 5.75 5.375C5.12868 5.375 4.625 4.87132 4.625 4.25C4.625 3.62868 5.12868 3.125 5.75 3.125ZM10.25 3.125C10.8713 3.125 11.375 3.62868 11.375 4.25C11.375 4.87132 10.8713 5.375 10.25 5.375C9.62868 5.375 9.125 4.87132 9.125 4.25C9.125 3.62868 9.62868 3.125 10.25 3.125Z",fill:"currentColor"})})})]},I);var z,ee})}),e.u("div",{className:"ul-card-rank__labels",children:e.u("span",{children:[te," - ",X]})})]}),b&&e.u(c.LongformSubmitButton,{handleSubmit:T,isSubmitDisabled:m})]}),!A&&e.u(c.QuestionBodyFooterContainer,{children:e.u("div",{className:"ul-card__button-wrapper",children:e.u(c.Button,{disabled:m,children:e.getButtonText(r)})})})]})})]},o)},mt=new Set(["aidynamicfollowup","aidynamicstandalone","open","matrix","multipleselect","multiplechoice","rankorder"]),Te=({cardInstance:n,moveToNextQuestion:i,showIndividualSubmit:d,submitQuestion:t,updateCardValues:r,allResponsesArray:o})=>{const{isLongFormSurvey:h,createDynamicFollowupQuestion:y,cards:p,surveyVisitorAttributes:b}=e.useConfig(C=>({isLongFormSurvey:J.isLongFormSurvey(C.studyType),createDynamicFollowupQuestion:C.createDynamicFollowupQuestion,cards:C.cards,surveyVisitorAttributes:C.surveyVisitorAttributes}));if(!n)return null;const{name:a,type:v,props:u,childId:w}=n,l=d&&mt.has(v),f=u==null?void 0:u.displayLogic;if(f!=null&&f.length&&!e.someDisplayLogicOptionMatches({displayLogic:f,allResponses:o,cards:p,surveyVisitorAttributes:b??{}}))return null;const m={className:"ul-card",next:(C,R,L=!0)=>t(C,R&&L),questionId:a,type:v,showIndividualSubmit:d,...l?{next:(C,R)=>{r(C.questionId,C,R??!0)},onSubmitButtonClick:(C=!1)=>{w?C?(i(a),y({parentQuestionId:a})):i(w):i(a)}}:{}},_=(()=>{switch(v){case"consentlegal":return e.u(Me,{...m,...u});case"likert":return e.u(Fe,{...m,...u});case"matrix":return e.u(He,{...m,...u});case"maxdiff":return e.u(ct,{...m,...u});case"multiplechoice":return e.u($e,{...m,...u});case"multipleselect":return e.u(Ve,{...m,...u});case"nps":return e.u(Ge,{...m,...u});case"open":case"aidynamicfollowup":case"aidynamicstandalone":return e.u(We,{...m,type:n.type,...u});case"rankorder":return e.u(pt,{...m,...u});case"recordedtask":return e.u(tt,{...m,...u});case"texturlprompt":return e.u(nt,{...m,...u});case"thanks":return e.u(it,{...m,...u});case"uploading":return e.u(ot,{...m,...u});case"videovoice":return e.u(st,{...m,...u});default:return null}})();return _?h?e.u("div",{className:"ul-card-scroll-wrapper",children:_},a):_:null},gt=({isSubmitDisabled:n=!1,onSubmit:i,buttonText:d})=>{var w;const{cards:t,forceBrandedLogo:r,index:o,marketingUrl:h,showSurveyBrand:y,slugName:p,surveyId:b,useMobileStyling:a}=e.useConfig(l=>({cards:l.cards,forceBrandedLogo:l.forceBrandedLogo,index:l.index,marketingUrl:l.marketingUrl,showSurveyBrand:l.showSurveyBrand,slugName:l.slugName,surveyId:l.surveyId,useMobileStyling:l.useMobileStyling})),v=((w=t[o])==null?void 0:w.type)==="thanks",u=e.buildMarketingUrl({marketingUrl:h,slugName:p,surveyId:b,forceBrandedLogo:r});return e.u("footer",{className:e.cc("long-form-question-footer-container",a&&"long-form-question-footer-container--mobile",v&&"long-form-question-footer-container-center"),children:[v&&r?e.u(e.ThankYouLink,{marketingUrlLink:u}):e.u("div",{className:"long-form-question-footer-container-logo",children:y?e.u(e.SprigBrandLogo,{forceBrandedLogo:r,marketingUrlLink:u}):null}),!v&&e.u("div",{className:e.cc("ul-card__button-wrapper","ul-card-vertical__button-wrapper","long-form-question-footer-container-actions"),children:e.u(c.Button,{className:e.cc("long-form-button",n&&"sprig-button-disabled"),disabled:n,onClick:i,children:e.u("span",{className:"long-form-button-text-container",children:d??e.u(e.Arrow,{stroke:"white"})})})})]})};exports.PageCard=({cards:n,next:i,previousResponses:d})=>{var G;const t=e._(null),[r,o]=e.h({}),[h,y]=e.h({}),{isLongFormSurvey:p,focusedQuestionId:b,setFocusedQuestionId:a,createDynamicFollowupQuestion:v,allResponses:u,cardIndexByName:w,surveyVisitorAttributes:l,cards:f,createDynamicStandaloneQuestion:m}=e.useConfig(s=>({isLongFormSurvey:J.isLongFormSurvey(s.studyType),focusedQuestionId:s.focusedQuestionId,setFocusedQuestionId:s.setFocusedQuestionId,createDynamicFollowupQuestion:s.createDynamicFollowupQuestion,allResponses:s.allResponses,cardIndexByName:s.cardIndexByName,surveyVisitorAttributes:s.surveyVisitorAttributes,cards:s.cards,createDynamicStandaloneQuestion:s.createDynamicStandaloneQuestion})),_=e.F(()=>({...d,...e.buildReadableResponseMap(n.map(s=>{var S,B;return{...s,value:((S=r[s.name])==null?void 0:S.value)??null,secondaryValue:((B=r[s.name])==null?void 0:B.secondaryValue)??null}}))}),[d,r,n]);c.useSetAllResponsesRaw(_);const C=e.pipeReadableResponsesIntoCards(n,_),R=e.F(()=>e.buildResponsesArrayForDisplayLogic({storeAllResponses:u,cards:n,cardValues:r,cardIndexByName:w}),[u,n,r,w]),L=e.F(()=>{const s=new Set;return n.forEach(S=>{var E;const B=(E=S.props)==null?void 0:E.displayLogic;if(!B||B.length===0)return void s.add(S.name);e.someDisplayLogicOptionMatches({displayLogic:B,allResponses:R,cards:f,surveyVisitorAttributes:l??{}})&&s.add(S.name)}),s},[n,R,l,f]);e.p(()=>{n.some(s=>{if(s.type==="aidynamicstandalone"&&s.props&&L.has(s.name)){if(s.props.loading===e.DynamicQuestionLoadingStates.inFlight)return!0;if(s.props.loading===void 0)return m({questionId:s.name}),!0}return!1})},[n,m,L]);const O=e._(null);e.p(()=>{const s=L,S=O.current;if(S!==null)for(const B of S)s.has(B)||(o(E=>{const P={...E};return delete P[B],P}),y(E=>{const P={...E};return delete P[B],P}));O.current=new Set(s)},[L]);const q=e._(null),A=e._(!1),g=e._(null),x=e.T(s=>{var P,j;A.current=!0;const S=n.findIndex(Z=>Z.name===s);if(!p||s===null||S===-1)return void(A.current=!1);const B=(P=q.current)==null?void 0:P.querySelectorAll(".ul-card-scroll-wrapper")[S],E=(j=q.current)==null?void 0:j.closest(".ul-card-main-content");if(B&&E){if(B&&E){const Z=B.getBoundingClientRect(),X=E.getBoundingClientRect(),te=Z.top-X.top+E.scrollTop,le=te+Z.height/2,ae=window.innerHeight-157;let ie;Z.height>=ae?ie=te:ie=le-E.clientHeight/2;const I=E.clientHeight,V=E.scrollHeight-I,W=Math.max(0,Math.min(ie,V));E.scrollTo({top:W,behavior:"smooth"}),setTimeout(()=>{A.current=!1},500)}}else A.current=!1},[p,n]);function D(s,S){return s.filter(B=>L.has(B.name)).map(B=>{const E=S[B.name],P=C.find(j=>j.name===B.name);return{...E,questionText:P?e.getProcessedQuestionText(P):void 0}})}e.p(()=>{b!==null&&n.findIndex(s=>s.name===b)!==-1||a(n[0].name)},[n,b,a]);const M=s=>{if(!p)return;let S=n.findIndex(B=>B.name===s)+1;for(;S<n.length&&!L.has(n[S].name);)S++;S<n.length?a(n[S].name):a(s)};e.p(()=>{p&&b!==null&&(g.current!==b?x(b):g.current=null)},[b,p,x]);const H=e.T(()=>{var X,te;if(A.current)return;const s=(X=q.current)==null?void 0:X.closest(".ul-card-main-content");if(!s)return;const S=(te=q.current)==null?void 0:te.querySelectorAll(".ul-card-scroll-wrapper");if(!S||S.length===0)return;const B=s.getBoundingClientRect(),E=B.top+B.height/2;let P=0,j=1/0;S.forEach((le,ae)=>{const ie=le.getBoundingClientRect(),I=ie.top+ie.height/2,V=Math.abs(E-I);V<j&&(j=V,P=ae)});const Z=n[P];g.current=Z.name,a(Z.name)},[n,a]);e.p(()=>{var S;if(!p)return;const s=((S=q.current)==null?void 0:S.closest(".ul-card__container"))||null;return s&&s.addEventListener("scroll",H,{passive:!0}),()=>{s&&s.removeEventListener("scroll",H)}},[H,p]);const N=e.F(()=>n.every(s=>{var S;return!L.has(s.name)||!(!(s!=null&&s.props)||!("properties"in s.props)||((S=s.props.properties)==null?void 0:S.required)!==!1)||h[s.name]}),[h,n,L]),F=async(s,S,B)=>{return y(P=>({...P,[s]:B})),await(E=P=>({...P,[s]:S}),new Promise(P=>{o(j=>{const Z=E(j);return P(Z),Z})}));var E};e.p(()=>{var E;if(!p)return;const s=t.current,S=(E=n==null?void 0:n[0])==null?void 0:E.groupId;t.current=S;const B={};if(n.forEach(P=>{var j,Z;e.appCardHasPropertiesWithRequired(P)&&(P.props.properties.required||(B[P.name]={value:((j=r[P.name])==null?void 0:j.value)??null,secondaryValue:((Z=r[P.name])==null?void 0:Z.secondaryValue)??null,questionId:P.name,type:P.type}))}),s==null||s!==S)o(B),y({});else{o(j=>({...j,...B}));const P=n.reduce((j,Z)=>{var X;return Z.type==="aidynamicfollowup"&&((X=Z.props)==null?void 0:X.loading)===null&&(j[Z.name]=!0),j},{});y(j=>({...j,...P}))}},[n,p]);const k=async(s,S)=>{const B=C.find(E=>E.name===s.questionId);if(p){const E=await F(s.questionId,s,S),P=$(s.type),j=T(s.type);if(P&&(e.triggerFollowUpQuestionGeneration({displayCard:B,response:s,createDynamicFollowupQuestion:v}),M(s.questionId)),j&&S){const Z=D(n,E);i(Z)}}else{const E={...s,questionText:B?e.getProcessedQuestionText(B):void 0};e.triggerFollowUpQuestionGeneration({displayCard:B,response:s,createDynamicFollowupQuestion:v}),i([E])}},$=s=>new Set(["nps","likert","multiplechoice"]).has(s),T=s=>new Set(["videovoice","consentlegal","texturlprompt","maxdiff"]).has(s),U=((G=n[0])==null?void 0:G.type)==="thanks";return p?e.u("div",{className:"ul-card-list-container--longform","data-testid":"ui-container",ref:q,children:[e.u(lt,{value:d,children:C.map((s,S)=>e.u(Te,{allResponsesArray:R,cardInstance:s,moveToNextQuestion:M,showIndividualSubmit:n.length>1&&S<n.length-1,submitQuestion:k,updateCardValues:F},(s==null?void 0:s.name)||S))}),!U&&e.u(gt,{isSubmitDisabled:!N,onSubmit:function(){const s=D(n,r);if((C==null?void 0:C.length)===1&&(s==null?void 0:s.length)===1){const S=C[0],B=s[0];e.triggerFollowUpQuestionGeneration({displayCard:S,response:B,createDynamicFollowupQuestion:v})}i(s)}})]}):e.u(e.g,{children:[e.u("div",{"data-testid":"ui-container",style:{display:"none"}}),C.map((s,S)=>e.u(Te,{allResponsesArray:R,cardInstance:s,moveToNextQuestion:M,showIndividualSubmit:!1,submitQuestion:k,updateCardValues:F},(s==null?void 0:s.name)||S))]})};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./core-DSREyRo8.cjs");require("./replay.cjs");const r=require("./metricsReporter-CIbUupJP.cjs");exports.Sprig=e.Sprig,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
|
@@ -1041,7 +1041,7 @@ type RecordedTaskResponse = {
|
|
|
1041
1041
|
type LikertResponse = number | null;
|
|
1042
1042
|
type OpenTextResponse = string;
|
|
1043
1043
|
type AiDynamicFollowUpResponse = string;
|
|
1044
|
-
type
|
|
1044
|
+
type MultiChoiceResponse = string | undefined;
|
|
1045
1045
|
type MultiSelectResponse = string[];
|
|
1046
1046
|
type MatrixResponse = {
|
|
1047
1047
|
[rowId: number]: string | null;
|
|
@@ -1053,7 +1053,7 @@ type RankOrderResponse = {
|
|
|
1053
1053
|
type VideoVoiceResponse = {
|
|
1054
1054
|
mediaRecordingUid: string;
|
|
1055
1055
|
};
|
|
1056
|
-
type CardResponse = TextUrlPromptResponse | ConsentLegalResponse | RecordedTaskResponse | LikertResponse | OpenTextResponse | AiDynamicFollowUpResponse |
|
|
1056
|
+
type CardResponse = TextUrlPromptResponse | ConsentLegalResponse | RecordedTaskResponse | LikertResponse | OpenTextResponse | AiDynamicFollowUpResponse | MultiChoiceResponse | MultiSelectResponse | MatrixResponse | NpsResponse | RankOrderResponse | MaxDiffResponseType | VideoVoiceResponse;
|
|
1057
1057
|
|
|
1058
1058
|
declare const BOOLEAN_OPERATOR: {
|
|
1059
1059
|
readonly And: 1;
|
|
@@ -1086,17 +1086,31 @@ type OldRoutingOption<C extends Comparator = DefaultComparator> = {
|
|
|
1086
1086
|
/** @example '', 'option_2', ['option_1'] */
|
|
1087
1087
|
value: number | string | string[];
|
|
1088
1088
|
};
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1089
|
+
/**
|
|
1090
|
+
* One element in array-shaped routing `value` payloads (e.g. `list_alo`, `list_exact`),
|
|
1091
|
+
* where the wire may include placeholders.
|
|
1092
|
+
*/
|
|
1093
|
+
type RoutingListValueEntry = string | undefined | null;
|
|
1094
|
+
/** Values compared in routing / display rules */
|
|
1095
|
+
type RoutingValue = number | string | RoutingListValueEntry[];
|
|
1093
1096
|
type RoutingGroupOption = {
|
|
1094
1097
|
comparator: Comparator;
|
|
1095
|
-
|
|
1096
|
-
|
|
1098
|
+
displayLabel?: string;
|
|
1099
|
+
/** Omitted on malformed or discovery-only payloads; evaluator treats missing as non-matching. */
|
|
1100
|
+
questionIndex?: number | string;
|
|
1101
|
+
value: RoutingValue | {
|
|
1097
1102
|
skipped: true;
|
|
1098
1103
|
} | null | undefined;
|
|
1099
1104
|
};
|
|
1105
|
+
/**
|
|
1106
|
+
* One slot in a complex `group`: a condition, AND/OR (1 | 2 on the wire), or a nested sub-expression.
|
|
1107
|
+
* Nested arrays evaluate recursively and become a single boolean operand in the parent list.
|
|
1108
|
+
*/
|
|
1109
|
+
type RoutingGroupSegment = RoutingGroupOption | BooleanOperator | RoutingGroupSegment[];
|
|
1110
|
+
type GroupRoutingOption = {
|
|
1111
|
+
group: RoutingGroupSegment[];
|
|
1112
|
+
target: number;
|
|
1113
|
+
};
|
|
1100
1114
|
type RoutingOptions<C extends Comparator = DefaultComparator> = RoutingOption<C | DefaultComparator>[] | null;
|
|
1101
1115
|
/** @example <p>Body</p> */
|
|
1102
1116
|
type RichTextBody = string;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as i, a as p, c as o, s as e } from "./core-
|
|
1
|
+
import { S as i, a as p, c as o, s as e } from "./core-YTxB8B8q.js";
|
|
2
2
|
import "./replay.js";
|
|
3
|
-
import { D as S, S as g } from "./metricsReporter-
|
|
3
|
+
import { D as S, S as g } from "./metricsReporter-0HbKrvkx.js";
|
|
4
4
|
export {
|
|
5
5
|
S as DismissReason,
|
|
6
6
|
i as Sprig,
|
|
@@ -217,7 +217,7 @@ const J = (e) => e._config && e._config.installationMethod ? e._config.installat
|
|
|
217
217
|
U = !0, A = e;
|
|
218
218
|
};
|
|
219
219
|
function ce(e = {}) {
|
|
220
|
-
const t = { "Content-Type": "application/json", "userleap-platform": "web", "x-ul-sdk-version": "2.
|
|
220
|
+
const t = { "Content-Type": "application/json", "userleap-platform": "web", "x-ul-sdk-version": "2.45.0", "x-ul-installation-method": J(e), "sprig-modules": B() };
|
|
221
221
|
if (e.envId && (t["x-ul-environment-id"] = e.envId), e.token && (t.Authorization = "Bearer " + e.token), e.userId && (t["x-ul-user-id"] = e.userId), e.visitorId && (t["x-ul-visitor-id"] = e.visitorId), e.partnerAnonymousId && (t["x-ul-anonymous-id"] = e.partnerAnonymousId), e.mobileHeadersJSON) {
|
|
222
222
|
const s = JSON.parse(e.mobileHeadersJSON);
|
|
223
223
|
Object.assign(t, s);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Y=Object.defineProperty;var j=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var l=(e,t,r)=>j(e,typeof t!="symbol"?t+"":t,r);var U=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(U||{}),A=(e=>(e.ReplayCapture="replay.capture",e.ReplayPaused="replay.paused",e.ReplayResumed="replay.resumed",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",e.SurveyCloseRequested="survey.closeRequested",e.SurveyClosed="survey.closed",e.SurveyDimensions="survey.dimensions",e.SurveyFadingOut="survey.fadingOut",e.SurveyHeight="survey.height",e.SurveyPresented="survey.presented",e.SurveyLifeCycle="survey.lifeCycle",e.SurveyWidth="survey.width",e.SurveyWillClose="survey.willClose",e.SurveyWillPresent="survey.will.present",e.CloseSurveyOnOverlayClick="close.survey.overlayClick",e.VisitorIDUpdated="visitor.id.updated",e.QuestionAnswered="question.answered",e))(A||{});let m;const F=new Uint8Array(16);function H(){if(!m&&(m=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!m))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(F)}const o=[];for(let e=0;e<256;++e)o.push((e+256).toString(16).slice(1));const w={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},b=new class{constructor(){l(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(e){this.breadcrumbs.push(e),this.breadcrumbs.length>300&&this.breadcrumbs.shift()}debug(e,t="debug"){this.addBreadcrumb({category:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"debug"})}error(e,t={}){this.addBreadcrumb({category:"error",data:t,level:"error",message:e,timestamp:this.getTimeStamp(),type:"error"})}http(e,t){this.addBreadcrumb({category:"xhr",data:t,message:e,timestamp:this.getTimeStamp(),type:"http"})}info(e,t={}){this.addBreadcrumb({category:"info",data:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"info"})}navigation(e,t){this.addBreadcrumb({category:"navigation",data:t,message:e,timestamp:this.getTimeStamp(),type:"navigation"})}};var q=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning"}},C=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=C.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,r){this.emit(e,t,r)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){const r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t)}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const s=new q(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=C;D.defaultMaxListeners=10;const B=new D,S=async e=>{await new Promise(t=>{setTimeout(t,e)})};class x{constructor(t){l(this,"storage");l(this,"tempStorage",{});l(this,"isStorageAvailable");try{this.storage=window[t];const r="__storage_test__";this.storage.setItem(r,r),this.storage.removeItem(r),this.isStorageAvailable=!0}catch{this.isStorageAvailable=!1}}setItem(t,r){this.isStorageAvailable&&this.storage?this.storage.setItem(t,r):this.tempStorage[t]=r}setItemObject(t,r){try{this.setItem(t,JSON.stringify(r))}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to save to local storage",s))}}getItem(t){return this.isStorageAvailable&&this.storage?this.storage.getItem(t):this.tempStorage[t]}getItemObject(t){const r=this.getItem(t);if(r)try{return JSON.parse(r)}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to parse local storage",s))}return{}}removeItem(t){this.isStorageAvailable&&this.storage?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable&&this.storage?this.storage.clear():this.tempStorage={}}}const J=new x("sessionStorage"),$=new x("localStorage");class K{constructor(t){l(this,"payload");l(this,"promise");l(this,"reject",()=>{});l(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const E={replay:null},G=()=>{const e=[];return E.replay&&e.push("replay"),e.join(",")},z=10;let T=!1,M="",g=!1,P=!1,y=[];const Q=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",N=(e="")=>{T=!0,M=e},R=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new K(t);return y.push(r),r.promise}},v=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:n=!1,...i}=t,d={url:e,options:i,retries:r,shouldDropOnRateLimit:s};if(g&&!n)return R(d);const u={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${M}`),u;try{const c=await fetch(e,i);if(c.status===429){if(!g&&!s||n){g=!0;const a=c.headers.has("ratelimit-reset")?Number(c.headers.get("ratelimit-reset")):z;return await S(1e3*a),v(e,{...i,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}return R(d)}if(g=!1,y.length&&(y.map(a=>{const h=a.payload;v(h.url,{...h.options,retries:h.retries,shouldDropOnRateLimit:h.shouldDropOnRateLimit}).then(W=>{a.resolveRequest(W)})}),y=[]),c.ok){if(c.status===249)return N(),u;const a=await c.text();try{return a&&a!=="OK"&&(c.json=JSON.parse(a)),c}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${a}`)}}}return c}catch(c){const a=r+1;return a>5||P?{ok:!1,reportError:!1,error:c}:(await S(1e3*Math.pow(2,r)),v(e,{...i,retries:a}))}},I=Object.freeze({contains:(e,t)=>t.includes(e),notContains:(e,t)=>!t.includes(e),exactly:(e,t)=>t===e,notExactly:(e,t)=>t!==e,startsWith:(e,t)=>t.startsWith(e),endsWith:(e,t)=>t.endsWith(e),regex:(e,t)=>new RegExp(e).test(t),legacy:(e,t)=>new RegExp(e,"i").test(t)});function k(e,t){const{matchType:r,pattern:s}=e,n=r?I[r]:I.legacy;let i=!1;try{i=n(s,t)}catch(d){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;d instanceof Error&&(console.warn(u,d),d.stack=JSON.stringify(e),window.UserLeap.reportError(u,d))}return i}let V=!0,f=!1;const X=["sdk_event_queue_latency_seconds","sdk_replay_add_event_batch_seconds","sdk_replay_cleanup_seconds","sdk_replay_compression_seconds","sdk_replay_get_events_between_seconds","sdk_replay_snapshot_seconds","sdk_mutations_nodes_added","sdk_mutations_nodes_removed","sdk_mutations_attributes_changed","sdk_mutations_character_data","sdk_dom_nodes_count","sdk_page_html_characters"];let L,p={};class Z{constructor(t){l(this,"_values",[]);l(this,"_isWebMetric");this.name=t,this._isWebMetric=X.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&L&&L(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=p[this.name];if(r)return r.find(s=>this.valueExceedsThreshold(t,s))}valueExceedsThreshold(t,r){return r.type==="max"?t>r.value:r.type==="min"&&t<r.value}}const _={},O=e=>{const t=new Z(e);return _[e]=t,t};exports.DismissReason=U,exports.EVENTS={FEEDBACK_BUTTON_LOADED:"feedback.button.loaded",SDK_READY:"sdk.ready",SURVEY_APPEARED:"survey.appeared",SURVEY_CLOSED:"survey.closed",SURVEY_DIMENSIONS:"survey.dimensions",SURVEY_FADING_OUT:"survey.fadingOut",SURVEY_HEIGHT:"survey.height",SURVEY_WIDTH:"survey.width",SURVEY_PRESENTED:"survey.presented",SURVEY_LIFE_CYCLE:"survey.lifeCycle",SURVEY_WILL_CLOSE:"survey.willClose",SURVEY_WILL_PRESENT:"survey.will.present",QUESTION_ANSWERED:"question.answered",REPLAY_CAPTURE:"replay.capture",CLOSE_SURVEY_ON_OVERLAY_CLICK:"close.survey.overlayClick",VISITOR_ID_UPDATED:"visitor.id.updated",DATA:{DISMISS_REASONS:{API:"api",CLOSED:"close.click",COMPLETE:"survey.completed",PAGE_CHANGE:"page.change",OVERRIDE:"override"},SURVEY_ID:"survey.id"}},exports.PerformanceMetrics=_,exports.SprigEvent=A,exports.breadcrumbsLogger=b,exports.checkUrlMatch=k,exports.checkUrlStillMatching=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return!!r&&k(r,window.location.href)},exports.cspViolationHandler=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(P=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},exports.delay=S,exports.disableThresholdChecking=()=>f=!0,exports.eventEmitter=B,exports.getHttpHeaders=function(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.44.0","x-ul-installation-method":Q(e),"sprig-modules":G()};if(e.envId&&(t["x-ul-environment-id"]=e.envId),e.token&&(t.Authorization="Bearer "+e.token),e.userId&&(t["x-ul-user-id"]=e.userId),e.visitorId&&(t["x-ul-visitor-id"]=e.visitorId),e.partnerAnonymousId&&(t["x-ul-anonymous-id"]=e.partnerAnonymousId),e.mobileHeadersJSON){const r=JSON.parse(e.mobileHeadersJSON);Object.assign(t,r)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t},exports.groupCards=(e,t)=>{const r=[e[t]],s=e[t].groupId;return s?e.slice(t).reduce((n,i)=>(i.groupId===s&&n.push(i),n),[]):r},exports.initPerformanceReporting=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{(async r=>{const s=Object.values(_).map(n=>({name:n.name,values:n.collect()}));if(s.some(n=>n.values.length))try{await r(JSON.stringify(s))}catch(n){n instanceof Error&&b.error("MetricsErr",{error:{message:n.message,name:n.name}})}})(t)},1e3*e):V=!1},exports.isLongFormSurvey=e=>e==="longFormSurvey",exports.killNetworkRequests=N,exports.localStorageHelper=$,exports.modules=E,exports.registerMetric=O,exports.registerReplay=e=>{E.replay=e},exports.registerThresholds=(e,t)=>{p={},f=!1,e==null||e.forEach(r=>{var s;r.metric in p||(p[r.metric]=[]),(s=p[r.metric])==null||s.push(r)}),L=t},exports.reportAndRegister=(e,t)=>{let r=_[e];return r||(r=O(e)),r.report(t)},exports.sessionStorageHelper=J,exports.shouldDirectEmbed=({"userleap-platform":e})=>{var t;return((t=window.UserLeap)==null?void 0:t.forceDirectEmbed)||e!=="web"},exports.sprigFetch=v,exports.v4=function(e,t,r){if(w.randomUUID&&!e)return w.randomUUID();const s=(e=e||{}).random||(e.rng||H)();return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(n,i=0){return o[n[i+0]]+o[n[i+1]]+o[n[i+2]]+o[n[i+3]]+"-"+o[n[i+4]]+o[n[i+5]]+"-"+o[n[i+6]]+o[n[i+7]]+"-"+o[n[i+8]]+o[n[i+9]]+"-"+o[n[i+10]]+o[n[i+11]]+o[n[i+12]]+o[n[i+13]]+o[n[i+14]]+o[n[i+15]]}(s)};
|
|
1
|
+
"use strict";var Y=Object.defineProperty;var j=(e,t,r)=>t in e?Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var l=(e,t,r)=>j(e,typeof t!="symbol"?t+"":t,r);var U=(e=>(e.Closed="close.click",e.Complete="survey.completed",e.FeedbackClosed="feedback.closed",e.PageChange="page.change",e.API="api",e.Override="override",e))(U||{}),A=(e=>(e.ReplayCapture="replay.capture",e.ReplayPaused="replay.paused",e.ReplayResumed="replay.resumed",e.FeedbackButtonLoaded="feedback.button.loaded",e.SDKReady="sdk.ready",e.SurveyAppeared="survey.appeared",e.SurveyCloseRequested="survey.closeRequested",e.SurveyClosed="survey.closed",e.SurveyDimensions="survey.dimensions",e.SurveyFadingOut="survey.fadingOut",e.SurveyHeight="survey.height",e.SurveyPresented="survey.presented",e.SurveyLifeCycle="survey.lifeCycle",e.SurveyWidth="survey.width",e.SurveyWillClose="survey.willClose",e.SurveyWillPresent="survey.will.present",e.CloseSurveyOnOverlayClick="close.survey.overlayClick",e.VisitorIDUpdated="visitor.id.updated",e.QuestionAnswered="question.answered",e))(A||{});let m;const F=new Uint8Array(16);function H(){if(!m&&(m=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!m))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(F)}const o=[];for(let e=0;e<256;++e)o.push((e+256).toString(16).slice(1));const w={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},b=new class{constructor(){l(this,"breadcrumbs",[])}getTimeStamp(){return new Date().toISOString()}addBreadcrumb(e){this.breadcrumbs.push(e),this.breadcrumbs.length>300&&this.breadcrumbs.shift()}debug(e,t="debug"){this.addBreadcrumb({category:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"debug"})}error(e,t={}){this.addBreadcrumb({category:"error",data:t,level:"error",message:e,timestamp:this.getTimeStamp(),type:"error"})}http(e,t){this.addBreadcrumb({category:"xhr",data:t,message:e,timestamp:this.getTimeStamp(),type:"http"})}info(e,t={}){this.addBreadcrumb({category:"info",data:t,level:"info",message:e,timestamp:this.getTimeStamp(),type:"info"})}navigation(e,t){this.addBreadcrumb({category:"navigation",data:t,message:e,timestamp:this.getTimeStamp(),type:"navigation"})}};var q=class extends Error{constructor(e,t,r){super(`Possible EventEmitter memory leak detected. ${r} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=r,this.name="MaxListenersExceededWarning"}},C=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=C.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,r){this.emit(e,t,r)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){const r=e.indexOf(t);return r>-1&&e.splice(r,1),[]}_wrapOnceListener(e,t){const r=(...s)=>(this.removeListener(e,r),t.apply(this,s));return Object.defineProperty(r,"name",{value:t.name}),r}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){const r=this._getListeners(e);return r.forEach(s=>{s.apply(this,t)}),r.length>0}addListener(e,t){this._emitInternalEvent("newListener",e,t);const r=this._getListeners(e).concat(t);if(this.events.set(e,r),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;const s=new q(this,e,this.listenerCount(e));console.warn(s)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){const r=this._getListeners(e);if(r.length>0){const s=[t].concat(r);this.events.set(e,s)}else this.events.set(e,r.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){const r=this._getListeners(e);return r.length>0&&(this._removeListener(r,t),this.events.set(e,r),this._emitInternalEvent("removeListener",e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},D=C;D.defaultMaxListeners=10;const B=new D,S=async e=>{await new Promise(t=>{setTimeout(t,e)})};class x{constructor(t){l(this,"storage");l(this,"tempStorage",{});l(this,"isStorageAvailable");try{this.storage=window[t];const r="__storage_test__";this.storage.setItem(r,r),this.storage.removeItem(r),this.isStorageAvailable=!0}catch{this.isStorageAvailable=!1}}setItem(t,r){this.isStorageAvailable&&this.storage?this.storage.setItem(t,r):this.tempStorage[t]=r}setItemObject(t,r){try{this.setItem(t,JSON.stringify(r))}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to save to local storage",s))}}getItem(t){return this.isStorageAvailable&&this.storage?this.storage.getItem(t):this.tempStorage[t]}getItemObject(t){const r=this.getItem(t);if(r)try{return JSON.parse(r)}catch(s){s instanceof Error&&(s.stack=t+": "+r,window.UserLeap.reportError("Failed to parse local storage",s))}return{}}removeItem(t){this.isStorageAvailable&&this.storage?this.storage.removeItem(t):delete this.tempStorage[t]}clear(){this.isStorageAvailable&&this.storage?this.storage.clear():this.tempStorage={}}}const J=new x("sessionStorage"),$=new x("localStorage");class K{constructor(t){l(this,"payload");l(this,"promise");l(this,"reject",()=>{});l(this,"resolve",()=>{});this.payload=t,this.promise=new Promise((r,s)=>{this.reject=s,this.resolve=r})}resolveRequest(t){this.resolve(t)}}const E={replay:null},G=()=>{const e=[];return E.replay&&e.push("replay"),e.join(",")},z=10;let T=!1,M="",g=!1,P=!1,y=[];const Q=e=>e._config&&e._config.installationMethod?e._config.installationMethod:e._gtm?"web-gtm":e._segment?"web-segment":"web-snippet",N=(e="")=>{T=!0,M=e},R=async({shouldDropOnRateLimit:e,...t})=>{if(e)return{status:429};{const r=new K(t);return y.push(r),r.promise}},v=async(e,t)=>{const{retries:r=0,shouldDropOnRateLimit:s=!1,shouldRetryRequest:n=!1,...i}=t,d={url:e,options:i,retries:r,shouldDropOnRateLimit:s};if(g&&!n)return R(d);const u={ok:!1,reportError:!1};if(T)return console.info(`UserLeap - ${M}`),u;try{const c=await fetch(e,i);if(c.status===429){if(!g&&!s||n){g=!0;const a=c.headers.has("ratelimit-reset")?Number(c.headers.get("ratelimit-reset")):z;return await S(1e3*a),v(e,{...i,shouldDropOnRateLimit:s,shouldRetryRequest:!0})}return R(d)}if(g=!1,y.length&&(y.map(a=>{const h=a.payload;v(h.url,{...h.options,retries:h.retries,shouldDropOnRateLimit:h.shouldDropOnRateLimit}).then(W=>{a.resolveRequest(W)})}),y=[]),c.ok){if(c.status===249)return N(),u;const a=await c.text();try{return a&&a!=="OK"&&(c.json=JSON.parse(a)),c}catch{return{ok:!1,reportError:!1,error:new Error(`failed parsing response json for ${e} - ${a}`)}}}return c}catch(c){const a=r+1;return a>5||P?{ok:!1,reportError:!1,error:c}:(await S(1e3*Math.pow(2,r)),v(e,{...i,retries:a}))}},I=Object.freeze({contains:(e,t)=>t.includes(e),notContains:(e,t)=>!t.includes(e),exactly:(e,t)=>t===e,notExactly:(e,t)=>t!==e,startsWith:(e,t)=>t.startsWith(e),endsWith:(e,t)=>t.endsWith(e),regex:(e,t)=>new RegExp(e).test(t),legacy:(e,t)=>new RegExp(e,"i").test(t)});function k(e,t){const{matchType:r,pattern:s}=e,n=r?I[r]:I.legacy;let i=!1;try{i=n(s,t)}catch(d){const u=`[Sprig] (ERR-445) Failed to check url match with pattern ${s}`;d instanceof Error&&(console.warn(u,d),d.stack=JSON.stringify(e),window.UserLeap.reportError(u,d))}return i}let V=!0,f=!1;const X=["sdk_event_queue_latency_seconds","sdk_replay_add_event_batch_seconds","sdk_replay_cleanup_seconds","sdk_replay_compression_seconds","sdk_replay_get_events_between_seconds","sdk_replay_snapshot_seconds","sdk_mutations_nodes_added","sdk_mutations_nodes_removed","sdk_mutations_attributes_changed","sdk_mutations_character_data","sdk_dom_nodes_count","sdk_page_html_characters"];let L,p={};class Z{constructor(t){l(this,"_values",[]);l(this,"_isWebMetric");this.name=t,this._isWebMetric=X.includes(this.name)}report(t){if(V&&this._values.push({time:Date.now(),value:t}),f||!this._isWebMetric)return;const r=this.findExceededThreshold(t);r&&L&&L(t,r)}collect(){const t=this._values;return this._values=[],t}findExceededThreshold(t){const r=p[this.name];if(r)return r.find(s=>this.valueExceedsThreshold(t,s))}valueExceedsThreshold(t,r){return r.type==="max"?t>r.value:r.type==="min"&&t<r.value}}const _={},O=e=>{const t=new Z(e);return _[e]=t,t};exports.DismissReason=U,exports.EVENTS={FEEDBACK_BUTTON_LOADED:"feedback.button.loaded",SDK_READY:"sdk.ready",SURVEY_APPEARED:"survey.appeared",SURVEY_CLOSED:"survey.closed",SURVEY_DIMENSIONS:"survey.dimensions",SURVEY_FADING_OUT:"survey.fadingOut",SURVEY_HEIGHT:"survey.height",SURVEY_WIDTH:"survey.width",SURVEY_PRESENTED:"survey.presented",SURVEY_LIFE_CYCLE:"survey.lifeCycle",SURVEY_WILL_CLOSE:"survey.willClose",SURVEY_WILL_PRESENT:"survey.will.present",QUESTION_ANSWERED:"question.answered",REPLAY_CAPTURE:"replay.capture",CLOSE_SURVEY_ON_OVERLAY_CLICK:"close.survey.overlayClick",VISITOR_ID_UPDATED:"visitor.id.updated",DATA:{DISMISS_REASONS:{API:"api",CLOSED:"close.click",COMPLETE:"survey.completed",PAGE_CHANGE:"page.change",OVERRIDE:"override"},SURVEY_ID:"survey.id"}},exports.PerformanceMetrics=_,exports.SprigEvent=A,exports.breadcrumbsLogger=b,exports.checkUrlMatch=k,exports.checkUrlStillMatching=e=>{const{pageUrlEvents:t}=window.UserLeap._config,r=t==null?void 0:t.find(s=>s.id===e);return!!r&&k(r,window.location.href)},exports.cspViolationHandler=e=>{var t;(t=e==null?void 0:e.blockedURI)!=null&&t.includes(window.UserLeap._API_URL)&&(P=!0,console.warn(`[Sprig] ${e.blockedURI} is blocked by Content-Security-Policy`))},exports.delay=S,exports.disableThresholdChecking=()=>f=!0,exports.eventEmitter=B,exports.getHttpHeaders=function(e={}){const t={"Content-Type":"application/json","userleap-platform":"web","x-ul-sdk-version":"2.45.0","x-ul-installation-method":Q(e),"sprig-modules":G()};if(e.envId&&(t["x-ul-environment-id"]=e.envId),e.token&&(t.Authorization="Bearer "+e.token),e.userId&&(t["x-ul-user-id"]=e.userId),e.visitorId&&(t["x-ul-visitor-id"]=e.visitorId),e.partnerAnonymousId&&(t["x-ul-anonymous-id"]=e.partnerAnonymousId),e.mobileHeadersJSON){const r=JSON.parse(e.mobileHeadersJSON);Object.assign(t,r)}return e.locale&&(t["accept-language"]=e.locale),window.previewMode&&(t["x-ul-preview-mode"]="1"),t},exports.groupCards=(e,t)=>{const r=[e[t]],s=e[t].groupId;return s?e.slice(t).reduce((n,i)=>(i.groupId===s&&n.push(i),n),[]):r},exports.initPerformanceReporting=({reportingIntervalSeconds:e,postMetrics:t})=>{e?setInterval(()=>{(async r=>{const s=Object.values(_).map(n=>({name:n.name,values:n.collect()}));if(s.some(n=>n.values.length))try{await r(JSON.stringify(s))}catch(n){n instanceof Error&&b.error("MetricsErr",{error:{message:n.message,name:n.name}})}})(t)},1e3*e):V=!1},exports.isLongFormSurvey=e=>e==="longFormSurvey",exports.killNetworkRequests=N,exports.localStorageHelper=$,exports.modules=E,exports.registerMetric=O,exports.registerReplay=e=>{E.replay=e},exports.registerThresholds=(e,t)=>{p={},f=!1,e==null||e.forEach(r=>{var s;r.metric in p||(p[r.metric]=[]),(s=p[r.metric])==null||s.push(r)}),L=t},exports.reportAndRegister=(e,t)=>{let r=_[e];return r||(r=O(e)),r.report(t)},exports.sessionStorageHelper=J,exports.shouldDirectEmbed=({"userleap-platform":e})=>{var t;return((t=window.UserLeap)==null?void 0:t.forceDirectEmbed)||e!=="web"},exports.sprigFetch=v,exports.v4=function(e,t,r){if(w.randomUUID&&!e)return w.randomUUID();const s=(e=e||{}).random||(e.rng||H)();return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(n,i=0){return o[n[i+0]]+o[n[i+1]]+o[n[i+2]]+o[n[i+3]]+"-"+o[n[i+4]]+o[n[i+5]]+"-"+o[n[i+6]]+o[n[i+7]]+"-"+o[n[i+8]]+o[n[i+9]]+"-"+o[n[i+10]]+o[n[i+11]]+o[n[i+12]]+o[n[i+13]]+o[n[i+14]]+o[n[i+15]]}(s)};
|
package/dist/replay.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var rt=Object.defineProperty;var at=(e,t,r)=>t in e?rt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var N=(e,t,r)=>at(e,typeof t!="symbol"?t+"":t,r);const o=require("./metricsReporter-BGIzo9eh.cjs"),nt=require("./debounce-DsC7462b.cjs");var L=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(L||{}),P=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(P||{});const Z=(e,t)=>t.some(r=>e instanceof r);let we,he;const ee=new WeakMap,q=new WeakMap,$=new WeakMap;let te={get(e,t,r){if(e instanceof IDBTransaction){if(t==="done")return ee.get(e);if(t==="store")return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return x(e[t])},set:(e,t,r)=>(e[t]=r,!0),has:(e,t)=>e instanceof IDBTransaction&&(t==="done"||t==="store")||t in e};function Re(e){te=e(te)}function st(e){return(he||(he=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(re(this),t),x(this.request)}:function(...t){return x(e.apply(re(this),t))}}function ot(e){return typeof e=="function"?st(e):(e instanceof IDBTransaction&&function(t){if(ee.has(t))return;const r=new Promise((a,n)=>{const s=()=>{n(t.error||new DOMException("AbortError","AbortError"))};t.oncomplete=()=>{a()},t.onerror=s,t.onabort=s});ee.set(t,r)}(e),Z(e,we||(we=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,te):e)}function x(e){if(e instanceof IDBRequest)return function(r){const a=new Promise((n,s)=>{r.onsuccess=()=>{n(x(r.result))},r.onerror=()=>{s(r.error)}});return $.set(a,r),a}(e);if(q.has(e))return q.get(e);const t=ot(e);return t!==e&&(q.set(e,t),$.set(t,e)),t}const re=e=>$.get(e);function ae(e,{blocked:t}={}){const r=indexedDB.deleteDatabase(e);return t&&(r.onblocked=a=>t(a.oldVersion,a)),x(r).then(()=>{})}const it=["get","getKey","getAll","getAllKeys","count"],dt=["put","add","delete","clear"],z=new Map;function fe(e,t){if(!(e instanceof IDBDatabase)||t in e||typeof t!="string")return;if(z.get(t))return z.get(t);const r=t.replace(/FromIndex$/,""),a=t!==r,n=dt.includes(r);if(!(r in(a?IDBIndex:IDBObjectStore).prototype)||!n&&!it.includes(r))return;const s=async function(i,...c){const d=this.transaction(i,n?"readwrite":"readonly");let l=d.store;return a&&(l=l.index(c.shift())),(await Promise.all([l[r](...c),n&&d.done]))[0]};return z.set(t,s),s}Re(e=>({...e,get:(t,r,a)=>fe(t,r)||e.get(t,r,a),has:(t,r)=>!!fe(t,r)||e.has(t,r)}));const ct=["continue","continuePrimaryKey","advance"],be={},ne=new WeakMap,Ce=new WeakMap,lt={get(e,t){if(!ct.includes(t))return e[t];let r=be[t];return r||(r=be[t]=function(...a){ne.set(this,Ce.get(this)[t](...a))}),r}};async function*ut(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const r=new Proxy(t,lt);for(Ce.set(r,t),$.set(r,re(t));t;)yield r,t=await(ne.get(r)||t.continue()),ne.delete(r)}function Ie(e,t){return t===Symbol.asyncIterator&&Z(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&Z(e,[IDBIndex,IDBObjectStore])}Re(e=>({...e,get:(t,r,a)=>Ie(t,r)?ut:e.get(t,r,a),has:(t,r)=>Ie(t,r)||e.has(t,r)}));const pt="sprigReplayIframeLoaded",gt="sprigReplayIframeSettings",mt="sprigReplayIframeTakeFullSnapshot",yt="sprigReplayTeardown",pe=[],Pe=new class{constructor(e){N(this,"awaitingResolvers",[]);N(this,"activeCount",0);this.capacity=e}async acquire(){if(!(this.activeCount<this.capacity))return new Promise(e=>{this.awaitingResolvers.push(e)});this.activeCount++}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}(2),ke=async({apiUrl:e,surveyId:t,uploadId:r,etags:a,headers:n,responseGroupUuid:s,replayDuration:i,eventDigest:c},d=!1)=>{var y;if(!d&&!r&&!a)return void o.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:r,etags:a});o.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const l=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:a,uploadId:r,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(y=window==null?void 0:window.navigator)==null?void 0:y.userAgent}),headers:n,shouldRetryRequest:!0});return o.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),l},wt=e=>{if(e instanceof Attr)return null;let t=1;for(let r=e.previousSibling;r;r=r.previousSibling)r.nodeName===e.nodeName&&++t;return t},Ue=e=>{if(e===null)return"";const t=[];if(e instanceof Document)return"/";for(let r=e;r&&!(r instanceof Document)&&r!==null;r=r instanceof Attr?r.ownerElement:r.parentElement){const a=t[t.length]={name:void 0,position:null};switch(r.nodeType){case Node.TEXT_NODE:a.name="text()";break;case Node.ATTRIBUTE_NODE:a.name="@"+r.nodeName;break;case Node.PROCESSING_INSTRUCTION_NODE:a.name="processing-instruction()";break;case Node.COMMENT_NODE:a.name="comment()";break;case Node.ELEMENT_NODE:a.name=r.nodeName}a.position=wt(r)}return"/"+t.reverse().map(r=>r.position!==null?`/${r.name}[${r.position}]`:`/${r.name}`).join("")},ge=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),T={capture:!0,passive:!0},ht=["a","button","input","option","li","link"],ft=["Escape","Enter","Backspace","F5","Tab"];let K=!1,S=null,j=null;const ve=e=>{var r;if(((r=e.tagName)==null?void 0:r.toLowerCase())==="html")return{element:"html"};const t={};return t.element=(a=>{if(!a.tagName)return"No tagName";const n=a.getAttribute("type");return n?`${n} ${a.tagName.toLowerCase()}`:a.tagName.toLowerCase()})(e),t},bt=e=>{var a;if(!e)return{};const t={...ve(e)},r=e.parentElement;if(r&&ht.includes((a=r.tagName)==null?void 0:a.toLowerCase())){const n=ve(r);Object.assign(t,n)}return t},Le=(e,t)=>{var n,s;let r=t.target;var a;t.target===((n=window.document)==null?void 0:n.body)&&window.Sprig.pointerDownTarget&&(r=window.Sprig.pointerDownTarget),a={x:t.x,y:t.y,type:e,elementAttributes:bt(r),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...r instanceof HTMLElement||r instanceof SVGElement||r instanceof MathMLElement?{rect:r==null?void 0:r.getBoundingClientRect(),xPath:Ue(r)}:{}},(s=a==null?void 0:a.elementAttributes)!=null&&s.text&&(a.elementAttributes.text=ge(a.elementAttributes.text)),S==null||S("Sprig_Click",a)},xe=e=>{var t;ft.includes(e.key)&&(t={key:e.key},S==null||S("Sprig_Keystroke",t))},It=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&(e={url:window.location.href,currentPageTitle:document.title},S==null||S("Sprig_Refresh",e))},vt=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&((e={curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title}).currentPageTitle&&(e.currentPageTitle=ge(e.currentPageTitle)),S==null||S("Sprig_BackForward",e))},Be=nt.debounce(e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),j==null||j({xPath:Ue(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},750),Me=(Se="left_click",e=>Le(Se,e));var Se;const Ae=e=>{e.button===2&&Le("right_click",e)},_e=e=>{window.Sprig&&(window.Sprig.pointerDownTarget=e.target)},g={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},He=()=>globalThis.indexedDB&&globalThis.IDBKeyRange&&globalThis.CompressionStream,f=(()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t})(),se=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},R=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording"),V=()=>!!o.sessionStorageHelper.getItem("sprig.isReplayPaused");var Ee;(Ee=globalThis.addEventListener)==null||Ee.call(globalThis,"beforeunload",()=>{o.breadcrumbsLogger.info("BeforeUnload",{sessionId:f}),o.sessionStorageHelper.setItem("sprig.sessionId",f)});const k=(e,t)=>{var r,a;if(!R()&&g.isRecording&&!V())try{(a=(r=globalThis.rrwebRecord)==null?void 0:r.addCustomEvent)==null||a.call(r,e,t)}catch(n){O("Error recording custom event",n)}},St=async e=>{const{x:t,xPath:r,y:a}=e,n=g.scrollEventUuids[r];if(n)return v(async()=>{var c,d,l,y;const s=await u.openDB(),i=await s.get("events",n);if(i!=null&&i.event){const p=JSON.parse(i.event),h=t>((d=(c=p.data)==null?void 0:c.payload)==null?void 0:d.x),m=a>((y=(l=p.data)==null?void 0:l.payload)==null?void 0:y.y);if(!h&&!m)return null;h&&(p.data.payload.x=t),m&&(p.data.payload.y=a),p.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(p),await s.put("events",i)}else k("Sprig_Scroll",e)},"Error updating scroll event");k("Sprig_Scroll",e)},Ne=()=>{g.stopRecording&&(g.stopRecording(),g.stopRecording=void 0),g.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{g[e]&&(clearInterval(g[e]),g[e]=void 0)}),K&&(window.removeEventListener("click",Me,T),window.removeEventListener("pointerdown",_e,T),window.removeEventListener("mousedown",Ae,T),window.removeEventListener("keydown",xe,T),window.removeEventListener("scroll",Be,T),K=!1),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:yt},{targetOrigin:e.origin})})},Dt=["did not allow mutations","called in an invalid security context"],Et=(e,t,{reportError:r=!0,extraInfo:a={}})=>{if(!R()&&t instanceof Error){if(se(),t.name==="VersionError")return o.breadcrumbsLogger.error("VersionErr",{message:e}),void u.deleteDB();(n=>{if(!n)return!0;for(const s of Dt)if(n.toLowerCase().includes(s))return!1;return!0})(t==null?void 0:t.message)&&(r&&globalThis.UserLeap.reportError(e,t,a),u.clearAll())}},O=(e,t,{reportError:r}={reportError:!0})=>{Ne(),o.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),Et(e,t,{reportError:r})},v=async(e,t)=>{try{return await e()}catch(r){O(t,r)}},oe=()=>{g.isRecording&&(v(()=>{var e,t;return(t=(e=globalThis.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot"),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:mt},{targetOrigin:e.origin})}))};let Q=0;(async()=>He()&&Promise.allSettled([ae("replayStorage"),ae("sprig.replay")]))();const u=new class{constructor(){N(this,"wrapTransactionWithCounter",e=>{var a,n;const t=(n=(a=window.Sprig)==null?void 0:a._config)==null?void 0:n.outstandingTransactionLimit,r=t===void 0?100:t;if(r&&Q>r){const s="Too many outstanding transactions";O(s,new Error(s),{reportError:!1})}Q++,e.done.finally(()=>{Q--})});N(this,"getTransaction",async e=>{const t=(await this.openDB()).transaction(e,"readwrite");return this.wrapTransactionWithCounter(t),t})}openDB(){return function(e,t,{blocked:r,upgrade:a,blocking:n,terminated:s}={}){const i=indexedDB.open(e,t),c=x(i);return a&&(i.onupgradeneeded=d=>{a(x(i.result),d.oldVersion,d.newVersion,x(i.transaction),d)}),r&&(i.onblocked=d=>r(d.oldVersion,d.newVersion,d)),c.then(d=>{s&&(d.onclose=()=>s()),n&&(d.onversionchange=l=>n(l.oldVersion,l.newVersion,l))}).catch(()=>{}),c}("sprigReplay",1,{upgrade:(e,t,r)=>{if(r===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!e.objectStoreNames.contains("events")){const a=e.createObjectStore("events",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!e.objectStoreNames.contains("chunkUploads")){const a=e.createObjectStore("chunkUploads",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+status]",["sessionId","status"]),a.createIndex("[uploadId+status]",["uploadId","status"]),a.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!e.objectStoreNames.contains("pendingCaptures")){const a=e.createObjectStore("pendingCaptures",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}async deleteDB(){try{await ae("sprigReplay")}catch{}}async bulkAdd(e,t){const r=await this.getTransaction(e);return Promise.all([...t.map(a=>r.store.add(a)),r.done])}async clearAll(){const e=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return this.wrapTransactionWithCounter(e),Promise.all([e.objectStore("events").clear(),e.objectStore("chunkUploads").clear(),e.objectStore("pendingCaptures").clear()])}async deleteBySessionId(e,t){const r=IDBKeyRange.only(t),a=await this.getTransaction(e),n=a.store.index("sessionId");for await(const s of n.iterate(r))await s.delete();await a.done}async updatePartial(e,t,r){const a=await this.getTransaction(e),n=await a.store.get(t);n&&await a.store.put({...n,...r}),await a.done}async deleteRowsBefore(e,t,r=()=>!0){const a=IDBKeyRange.upperBound(t,!0),n=await this.getTransaction(e),s=n.store.index("timestamp");for await(const i of s.iterate(a))r(i.value)&&await i.delete();await n.done}async getEventsBetween(e,t=Date.now()){if(e>=t)return Promise.resolve([]);const r=IDBKeyRange.bound([f,e],[f,t],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(e,t,r=30){const a=new Date,n=a.setMinutes(a.getMinutes()+(r??30)),s=await this.getTransaction("events"),i=s.store.index("[sessionId+timestamp]"),c=IDBKeyRange.bound([f,e],[f,t],!1,!0);for await(const d of i.iterate(c))await d.update({...d.value,expiredAt:n});await s.done}async deleteChunkUploads(e,t){const r=IDBKeyRange.only([t,e]),a=await this.getTransaction("chunkUploads");let s=await a.store.index("[uploadId+status]").openCursor(r);for(;s;)s.delete(),s=await s.continue();await a.done}async getChunkUploadsByStatus({sessionId:e,status:t,uploadId:r}){const a=(await this.openDB()).transaction("chunkUploads","readonly");this.wrapTransactionWithCounter(a);const n=r?a.store.index("[uploadId+status]"):a.store.index("[sessionId+status]"),s=r?IDBKeyRange.only([r,t]):IDBKeyRange.only([e,t]);return n.getAll(s)}async getPendingCaptures(e={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",f)).filter(r=>!e.beforePresent||r.targetTimestamp<Date.now()).filter(r=>!e.isBeforeType||r.captureParams.replayParams.replayDurationType==="before").filter(r=>!e.isHeatmap||(r.captureParams.isHeatmap??!1))}async tryAddPendingCaptureForSurvey(e){const{surveyId:t,record:r}=e,a=(await this.openDB()).transaction("pendingCaptures","readwrite");this.wrapTransactionWithCounter(a);const n=a.store.index("sessionId"),s=await n.getAll(f),i=!!r.captureParams.isHeatmap;return s.some(c=>c.captureParams.surveyId===t&&!!c.captureParams.isHeatmap===i)?(await a.done,{added:!1}):(await a.store.add(r),await a.done,{added:!0})}async markPendingCaptureToCanUpload(e){const t=await this.getTransaction("pendingCaptures"),r=t.store.index("sessionId");for await(const a of r.iterate(f)){const n=a.value;n.captureParams.responseGroupId===e&&await a.update({...n,canUpload:!0})}await t.done}async markPendingHeatmapsReady(e){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const t=Date.now(),r=await this.getTransaction("pendingCaptures"),a=r.store.index("sessionId");for await(const n of a.iterate(f)){const s=n.value;!s.captureParams.isHeatmap||e&&!e.includes(s.uuid)||await n.update({...s,targetTimestamp:t,captureParams:{...s.captureParams,triggerTimestamp:t,replayParams:{...s.captureParams.replayParams,replayDurationSeconds:Math.floor((t-s.timestamp)/1e3)}}})}await r.done}},U=[];let F,Oe,M=[],_=!1,A=0,W=!1,Fe=!1;const me=[];let J,je,G,We,X=!1;const H=()=>W&&!_&&Date.now()<=J,Tt=({apiUrl:e,config:t,triggerSnapshot:r,forceInit:a=!1})=>{W&&!a||(o.sessionStorageHelper.isStorageAvailable?(M=[],me.splice(0),U.splice(0),A=0,G=r,Oe=e,F={responseGroupUuid:t.responseGroupUuid,surveyId:t.surveyId,userAgent:t.userAgent,sdkVersion:t.sdkVersion},je=t.maxDurationSeconds,kt(),W||(We=globalThis.setInterval(Pt,500)),W=!0):_=!0)},Rt=[P.Drag,P.Input,P.MediaInteraction,P.MouseInteraction,P.MouseMove,P.Scroll,P.Selection,P.TouchMove],Ct=e=>e.type===L.Custom||e.type===L.IncrementalSnapshot&&Rt.includes(e.data.source),ye=e=>e.some(Ct),Pt=async()=>{if(!H())return void globalThis.clearInterval(We);if(Ge(),!ye(U))return;const e=U[0].timestamp;Date.now()-e>35e3&&(G==null||G())},Ge=async()=>{if(M.length||X)return;X=!0;const e=await Lt();if(!e)return void(_=!0);me.splice(0,e.length).forEach(t=>t(e.shift())),e.forEach(t=>M.push(t)),X=!1},kt=()=>{const e=o.sessionStorageHelper.getItem("sprig.alwayson.info");if(e){o.breadcrumbsLogger.info("Read stored session state",e);const t=JSON.parse(e);_=t.disabled,F=t.metadata,M=t.uploadUrls,A=t.currentIndex,J=t.expirationTimestamp,t.pendingEventTimestamp&&(o.breadcrumbsLogger.info(`Uploading with pending timestamp: ${t.pendingEventTimestamp}`),Ut(t.pendingEventTimestamp))}else J=1e3*je+Date.now()},Ut=async e=>{const t=Date.now(),r=(await u.getEventsBetween(e,t)).map(n=>JSON.parse(n.event));if(!ye(r))return;Je(r);const a=await Ve();a&&await Ke(a,r)},$e=async(e,t)=>{try{const r=await e();if(!r.ok)throw new Error(`Error ${t}`);return r}catch{_=!0}},Ke=async(e,t)=>{if(!H()||!e)return;const r=await(async a=>{const n=new TextEncoder,s=new CompressionStream("gzip"),i=s.writable.getWriter(),c=n.encode(JSON.stringify(a));return i.write(c),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())})(t);o.breadcrumbsLogger.info("Uploading always-on events with presigned url"),await $e(()=>o.sprigFetch(e,{body:r,method:"PUT"}),"uploading always-on with presigned url")},Lt=async()=>{if(!H())return;const{surveyId:e,responseGroupUuid:t}=F,r={responseGroupUuid:t,surveyId:e,index:A+1};o.breadcrumbsLogger.info("Fetching always-on upload urls",r);const a=await $e(()=>o.sprigFetch(`${Oe}/sdk/1/replayUrls`,{method:"POST",body:JSON.stringify(r),headers:o.getHttpHeaders(globalThis.UserLeap)}),"fetching always-on signed urls");if(!a)return;const n=a.json.signedUrls;return o.breadcrumbsLogger.info("Fetched more always-on upload urls",{body:r,urls:n}),n},Ve=async()=>{if(M.length)return M.shift();const e=new Promise(t=>{me.push(t)});return Ge(),e},Je=e=>{var n,s,i;const t=e.length?e[e.length-1].timestamp:Date.now(),r=A,a=((s=(n=globalThis.UserLeap)==null?void 0:n.config)==null?void 0:s.customMetadata)??((i=globalThis.__cfg)==null?void 0:i.customMetadata);A++,e.push({timestamp:t,type:L.Custom,data:{tag:"Sprig_Meta",payload:{...F,index:r,visitorId:globalThis.UserLeap.visitorId??"",timestamp:t,customMetadata:a}}})},xt=(e,t)=>{H()&&!Fe&&(e||U.length)&&(e&&U.length&&(async()=>{const r=U.splice(0);if(!ye(r))return;o.breadcrumbsLogger.info("Capturing always-on event array to upload"),Je(r);const a=await Ve();a&&await Ke(a,r)})(),U.push(t))};var Te;(Te=globalThis.addEventListener)==null||Te.call(globalThis,"beforeunload",async()=>{Fe=!0,H()&&(o.breadcrumbsLogger.info("Always On handle page unload"),(()=>{let e;U.length&&(e=U[0].timestamp);const t={disabled:_,metadata:F,uploadUrls:M,currentIndex:A,pendingEventTimestamp:e,expirationTimestamp:J};o.breadcrumbsLogger.info("Storing session state on unload",t),o.sessionStorageHelper.setItem("sprig.alwayson.info",JSON.stringify(t))})())});const qe=async(e,t)=>{const r=performance.now();let a;try{a=await e()}finally{const n=performance.now()-r;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(n/1e3)}return a},ze=(e,t)=>{const r=performance.now();try{e()}finally{const a=performance.now()-r;let n=o.PerformanceMetrics[t];n||(n=o.registerMetric(t)),n.report(a/1e3)}};let Qe=5e3,ie=6e4,de=0,B,ce=!1,le=[];const Bt=e=>{var t,r,a,n;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(n=(a=(r=JSON.parse(e.event))==null?void 0:r.data)==null?void 0:a.payload)==null?void 0:n.xPath;if(!s)return;g.scrollEventUuids[s]=e.uuid}le.push(e),ce||Mt()},Mt=()=>{ce=!0,setTimeout(async()=>{if(R()||V())return;const e=le;le=[],ce=!1,ze(async()=>{await(async t=>{const r=t.map(a=>({...a,sessionId:a.sessionId??f}));if(r.length!==0)return v(()=>u.bulkAdd("events",r),"Error storing replay events")})(e)},"sdk_replay_add_event_batch_seconds")},500)},At=(e,t,r)=>{g.cleanupInterval=window.setInterval(()=>{const a=Date.now();qe(()=>v(async()=>{R()||await Promise.all([u.deleteRowsBefore("events",a-1e3*e,n=>n.expiredAt===void 0||n.expiredAt<a-1e3*e),u.deleteRowsBefore("chunkUploads",a-1e3*t),u.deleteRowsBefore("pendingCaptures",a-1e3*r,n=>!n.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.breadcrumbsLogger.debug("CleanupComplete")},3e4)},_t=()=>{g.pendingCheckInterval=window.setInterval(async()=>{v(async()=>{await ue()},"Error initiating pending captures")},5e3)};let Y=!1;const ue=async(e=!1)=>{if(!Y)try{Y=!0;const t=parseInt(B??"0");if(t===0)return;const r=await u.getPendingCaptures({beforePresent:!0,isBeforeType:e}),a=await u.openDB();await Promise.all(r.map(async n=>(await a.delete("pendingCaptures",n.uuid),Ze(n.captureParams,n.canUpload)))),B=(t-r.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B)}finally{Y=!1}},Ht=async(e,t,r,a,n)=>{const s=Math.min(e+n,r),i=await qe(()=>u.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(i!=null&&i.length))return o.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:a,events:[]};if(!a){o.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return i==null||i.forEach((d,l)=>{if(!d.isValidStart)return;const y=d.timestamp<=t;(c<0||y)&&(c=l)}),c<0?(o.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:a,events:[]}):{validStartFound:!0,events:i==null?void 0:i.slice(c)}}return{validStartFound:a,events:i}},Xe=e=>Promise.all(e.map(async t=>{const r=await(async a=>Pe.execute(async()=>{var i;o.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:a.chunkIndex,surveyId:a.surveyId});const n=await o.sprigFetch(a.uploadUrl,{body:a.data,method:"PUT"});o.breadcrumbsLogger.http("UploadChunkEnd",{url:a.uploadUrl,method:"PUT",status_code:n.status,reason:n.statusText??"OK",chunkIndex:a.chunkIndex,surveyId:a.surveyId});const s=(i=n.headers)==null?void 0:i.get("ETag");if(!s)throw new Error(`Upload response did not include etag for upload ${a.uploadId}, part ${a.chunkIndex}`);return s}))(t);return await u.updatePartial("chunkUploads",t.uuid,{data:null,etag:r,status:"UploadComplete"}),t.uploadId})),Ye=async e=>{const t=await u.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length))return void o.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});const r=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);r.sort((s,i)=>s.chunkIndex-i.chunkIndex);const a=r.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),n=r[0];await ke({apiUrl:n.apiUrl,surveyId:n.surveyId,uploadId:e,responseGroupUuid:n.responseGroupId,etags:a,headers:n.completeUploadHeaders,replayDuration:n.replayDuration}),await u.deleteChunkUploads("UploadComplete",e)},Nt=()=>{v(async()=>{const e=await u.getChunkUploadsByStatus({sessionId:f,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await Xe(e);t!=null&&t.length&&await Promise.all(t.map(r=>{if(r)return Ye(r)}))},"Error uploading unfinished chunks")},Ot=async(e,t)=>{const r=t??Date.now();return(async(a,n)=>{const s=new TextEncoder;let i=null;const c=new CompressionStream("gzip"),d=c.writable.getWriter();let l=!1,y=!1,[p,h]=[0,0],m=[];for(let C=a-35e3;C<n;C+=ie){if({validStartFound:y,events:m}=await Ht(C,a,n,y,ie),!(m!=null&&m.length)){o.breadcrumbsLogger.debug("NoEventsFound");continue}p===0&&(p=m[0].timestamp),h=m[m.length-1].timestamp;const w=m.map(E=>E.event);w.push(`{"timestamp":${n}}`);const b=`${l?",":"["}${w}`,I=s.encode(b);ze(()=>{d.write(I)},"sdk_replay_compression_seconds"),l=!0}if(h-p<Qe)return o.breadcrumbsLogger.debug("ReplayTooShort"),null;const D=s.encode("]");return d.write(D),d.close(),i=new Uint8Array(await new Response(c.readable).arrayBuffer()),i})(r-e,r)},De=async e=>{const{surveyId:t,responseGroupId:r,visitorId:a,apiUrl:n,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,d=await Ot(1e3*i.replayDurationSeconds,c);if(!(d!=null&&d.length))return void o.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});const l=((p,h,m)=>{const D=p.length,C=1024*h*1024,w=Math.ceil(D/m),b=Math.max(C,w),I=[];let E=0;for(;E<D;)I.push(p.slice(E,E+b)),E+=b;return I})(d,i.minimumChunkSizeMb,i.signedUrls.length),y=await Promise.all(l.map(async(p,h)=>{const m=o.v4(),D={apiUrl:n,chunkIndex:h+1,completeUploadHeaders:s,etag:null,responseGroupId:r,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:l.length,data:p,uploadId:i.uploadId,uploadUrl:i.signedUrls[h].url,uuid:m,visitorId:a};return await(await u.openDB()).add("chunkUploads",{...D,sessionId:D.sessionId??f}),D}));await(async(p,h)=>{await Xe(h),await Promise.all(p.map(m=>Ye(m)))})([i.uploadId],y)},Ze=async(e,t)=>{if(R())return o.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:r,isStandalone:a,replayParams:n,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),v(async()=>{n.replayDurationType==="before"?await De(e):await u.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};v(async()=>{if(n.replayDurationType==="after"||n.replayDurationType==="beforeAndAfter")return!a&&!r&&o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c),void await tt(e);if(a||r||t)await De(e),r&&Ft();else{const d=35+n.replayDurationSeconds,l=s-1e3*d,y=s;await u.updateEventsExpiredAt(l,y,n.expirationTimeLimitMinutes),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ft=async()=>{parseInt(B??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(Ne(),et(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},et=async()=>R()?o.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([u.deleteBySessionId("events",f),u.deleteBySessionId("pendingCaptures",f)]).catch(e=>{O("Error clearing user replay data",e)}),tt=async e=>{if(R())return;const{isHeatmap:t,surveyId:r}=e,a={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(a.replayParams.replayDurationSeconds*=2),a.replayParams.replayDurationType="before";const n=e.triggerTimestamp+1e3*e.replayParams.replayDurationSeconds;a.triggerTimestamp=n;const s={canUpload:!1,captureParams:a,sessionId:f,targetTimestamp:n,timestamp:Date.now(),uuid:o.v4()},{added:i}=await u.tryAddPendingCaptureForSurvey({surveyId:r,record:s});i?(B=(parseInt(B??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B),t&&(oe(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),de=Date.now(),g.inactivityInterval||(g.inactivityInterval=window.setInterval(()=>{var c;c=de,Date.now()-c>=3e4&&v(()=>u.markPendingHeatmapsReady(),"Error in heatmap inactivity")},1e3)))):o.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:r})},jt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:e=>{k("Sprig_TrackEvent",e)},RecordPageView:e=>{e.description&&(e.description=ge(e.description)),k("Sprig_PageView",e)},RecordSurveyShown:e=>{k("Sprig_ShowSurvey",e)},_completeSessionReplay:async({surveyId:e,responseGroupUuid:t,eventDigest:r,headers:a})=>{if(!e||!t)return!1;const n=globalThis.UserLeap._API_URL,s=await ke({surveyId:e,responseGroupUuid:t,eventDigest:r,apiUrl:n,headers:a},!0);return!(s!=null&&s.error)},checkPendingHeatmapsUrl:()=>R()?o.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):v(async()=>{const e=(await u.getPendingCaptures({isHeatmap:!0})).map(t=>({eventId:t.captureParams.eventId,uuid:t.uuid})).filter(({eventId:t})=>!o.checkUrlStillMatching(t)).map(({uuid:t})=>t);return o.breadcrumbsLogger.info("PendingHeatmapsToComplete",{count:e.length}),e.length&&(await u.markPendingHeatmapsReady(e),o.breadcrumbsLogger.info("MarkedPendingHeatmapsReady")),e.length},"Error marking pending heatmaps ready"),clearUserReplayData:et,disableRecording:O,initializeReplay:async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:r,teardownAfter:a=!1,apiUrl:n,alwaysOnConfig:s})=>{if(s&&Tt({apiUrl:n,config:s,triggerSnapshot:()=>{oe()}}),B=o.sessionStorageHelper.getItem("sprig.pendingCount"),g.isRecording)return;if(a&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),R())return o.breadcrumbsLogger.debug("ReplayDisabled");if(await(async()=>{var d;if(!He())return!0;if((d=globalThis.navigator.storage)!=null&&d.estimate)try{const{quota:l=0,usage:y=0}=await globalThis.navigator.storage.estimate(),p=(l-y)/1024**3;return o.breadcrumbsLogger.info("Storage",{availableGb:p}),p<.5}catch{return!0}return!1})())return o.breadcrumbsLogger.debug("IDBNotSupported"),se();try{const d=await u.openDB();o.breadcrumbsLogger.info("DBVersion",{version:d.version})}catch(d){return o.breadcrumbsLogger.error("ReplayOpenErr",{name:d.name}),d.name==="VersionError"&&u.deleteDB(),se()}v(async()=>{await ue(!0)},"Error uploading ready pending captures");const i=H()?30:0,c=Math.max(e??0,i);if(!c)return o.breadcrumbsLogger.debug("MissingDuration");o.breadcrumbsLogger.debug("ReplayInit"),await v(async()=>{var d;r!=null&&r.minDuration&&(Qe=r.minDuration),r!=null&&r.batchDuration&&(ie=r.batchDuration),d=t,Pe.setLimit(d),Nt(),At(c+35,1800,c+35),_t();const l=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record.min.js";if(!window.rrwebRecord){const{record:w}=await import(l);window.rrwebRecord=w}const y=window.rrwebRecord;if(!y)return o.breadcrumbsLogger.error("RecordScriptFailed");let p=!0,h=0;const m={checkoutEveryNms:3e4,sampling:{input:"last",scroll:250,media:800},...r,mutationQueueEnabled:r==null?void 0:r.enableMutationQueue};var D,C;g.stopRecording=y({emit:(w,b)=>{if(w.type===L.Custom&&(de=Date.now()),R()||V())return;if(b&&w.type===L.Meta)h=performance.now();else if(b&&h&&w.type===L.FullSnapshot){const E=performance.now()-h;o.reportAndRegister("sdk_replay_snapshot_seconds",E/1e3)}const I=p||!!b&&w.type===L.Meta;p=!1,xt(I,w),Bt({uuid:o.v4(),event:JSON.stringify(w),isValidStart:I,timestamp:Date.now()})},...m}),g.isRecording=!!g.stopRecording,g.isRecording&&(((w,b)=>{window.addEventListener("message",I=>{var E;I.data.type===pt&&(pe.push({source:I.source,origin:I.origin}),(E=I.source)==null||E.postMessage({type:gt,settings:w,replayLibraryUrl:b},{targetOrigin:I.origin}))})})(m,l),o.eventEmitter.on("survey.complete",w=>{var b;b={id:w,userAgent:window.navigator.userAgent},k("Sprig_SubmitSurvey",b)}),D=k,C=St,K||(S=D,j=C,window.addEventListener("click",Me,T),window.addEventListener("pointerdown",_e,T),window.addEventListener("mousedown",Ae,T),window.addEventListener("keydown",xe,T),window.addEventListener("scroll",Be,T),K=!0,It(),vt()))},"Error initializing replay")},isReplayPaused:V,isReplayRecording:()=>g.isRecording,recordFullSnapshot:oe,recordReplayPaused:()=>{k("Sprig_ReplayPaused",{timestamp:Date.now()}),o.sessionStorageHelper.setItem("sprig.isReplayPaused","true")},recordReplayResumed:()=>{o.sessionStorageHelper.removeItem("sprig.isReplayPaused"),k("Sprig_ReplayResumed",{timestamp:Date.now()})},scheduleCapture:tt,scheduleOrCaptureReplay:Ze,tryReplayAction:v,uploadReadyPendingCaptures:ue},Symbol.toStringTag,{value:"Module"}));o.registerReplay(jt);
|
|
1
|
+
"use strict";var rt=Object.defineProperty;var at=(e,t,r)=>t in e?rt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var N=(e,t,r)=>at(e,typeof t!="symbol"?t+"":t,r);const o=require("./metricsReporter-CIbUupJP.cjs"),nt=require("./debounce-DsC7462b.cjs");var L=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(L||{}),P=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(P||{});const Z=(e,t)=>t.some(r=>e instanceof r);let we,he;const ee=new WeakMap,q=new WeakMap,$=new WeakMap;let te={get(e,t,r){if(e instanceof IDBTransaction){if(t==="done")return ee.get(e);if(t==="store")return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return x(e[t])},set:(e,t,r)=>(e[t]=r,!0),has:(e,t)=>e instanceof IDBTransaction&&(t==="done"||t==="store")||t in e};function Re(e){te=e(te)}function st(e){return(he||(he=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(re(this),t),x(this.request)}:function(...t){return x(e.apply(re(this),t))}}function ot(e){return typeof e=="function"?st(e):(e instanceof IDBTransaction&&function(t){if(ee.has(t))return;const r=new Promise((a,n)=>{const s=()=>{n(t.error||new DOMException("AbortError","AbortError"))};t.oncomplete=()=>{a()},t.onerror=s,t.onabort=s});ee.set(t,r)}(e),Z(e,we||(we=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,te):e)}function x(e){if(e instanceof IDBRequest)return function(r){const a=new Promise((n,s)=>{r.onsuccess=()=>{n(x(r.result))},r.onerror=()=>{s(r.error)}});return $.set(a,r),a}(e);if(q.has(e))return q.get(e);const t=ot(e);return t!==e&&(q.set(e,t),$.set(t,e)),t}const re=e=>$.get(e);function ae(e,{blocked:t}={}){const r=indexedDB.deleteDatabase(e);return t&&(r.onblocked=a=>t(a.oldVersion,a)),x(r).then(()=>{})}const it=["get","getKey","getAll","getAllKeys","count"],dt=["put","add","delete","clear"],z=new Map;function fe(e,t){if(!(e instanceof IDBDatabase)||t in e||typeof t!="string")return;if(z.get(t))return z.get(t);const r=t.replace(/FromIndex$/,""),a=t!==r,n=dt.includes(r);if(!(r in(a?IDBIndex:IDBObjectStore).prototype)||!n&&!it.includes(r))return;const s=async function(i,...c){const d=this.transaction(i,n?"readwrite":"readonly");let l=d.store;return a&&(l=l.index(c.shift())),(await Promise.all([l[r](...c),n&&d.done]))[0]};return z.set(t,s),s}Re(e=>({...e,get:(t,r,a)=>fe(t,r)||e.get(t,r,a),has:(t,r)=>!!fe(t,r)||e.has(t,r)}));const ct=["continue","continuePrimaryKey","advance"],be={},ne=new WeakMap,Ce=new WeakMap,lt={get(e,t){if(!ct.includes(t))return e[t];let r=be[t];return r||(r=be[t]=function(...a){ne.set(this,Ce.get(this)[t](...a))}),r}};async function*ut(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const r=new Proxy(t,lt);for(Ce.set(r,t),$.set(r,re(t));t;)yield r,t=await(ne.get(r)||t.continue()),ne.delete(r)}function Ie(e,t){return t===Symbol.asyncIterator&&Z(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&Z(e,[IDBIndex,IDBObjectStore])}Re(e=>({...e,get:(t,r,a)=>Ie(t,r)?ut:e.get(t,r,a),has:(t,r)=>Ie(t,r)||e.has(t,r)}));const pt="sprigReplayIframeLoaded",gt="sprigReplayIframeSettings",mt="sprigReplayIframeTakeFullSnapshot",yt="sprigReplayTeardown",pe=[],Pe=new class{constructor(e){N(this,"awaitingResolvers",[]);N(this,"activeCount",0);this.capacity=e}async acquire(){if(!(this.activeCount<this.capacity))return new Promise(e=>{this.awaitingResolvers.push(e)});this.activeCount++}release(){const e=this.awaitingResolvers.shift();e&&this.activeCount<=this.capacity?e():this.activeCount--}async execute(e){try{return await this.acquire(),await e()}finally{this.release()}}setLimit(e){this.capacity=e}}(2),ke=async({apiUrl:e,surveyId:t,uploadId:r,etags:a,headers:n,responseGroupUuid:s,replayDuration:i,eventDigest:c},d=!1)=>{var y;if(!d&&!r&&!a)return void o.breadcrumbsLogger.error("UploadErr",{isMobile:d,uploadId:r,etags:a});o.breadcrumbsLogger.info("MarkUploadComplete",{surveyId:t});const l=await o.sprigFetch(`${e}/sdk/1/completeSessionReplay`,{method:"POST",body:JSON.stringify({etags:a,uploadId:r,responseGroupUuid:s,surveyId:t,replayDuration:i,eventDigest:c,userAgent:(y=window==null?void 0:window.navigator)==null?void 0:y.userAgent}),headers:n,shouldRetryRequest:!0});return o.breadcrumbsLogger.info("MarkUploadDone",{surveyId:t}),l},wt=e=>{if(e instanceof Attr)return null;let t=1;for(let r=e.previousSibling;r;r=r.previousSibling)r.nodeName===e.nodeName&&++t;return t},Ue=e=>{if(e===null)return"";const t=[];if(e instanceof Document)return"/";for(let r=e;r&&!(r instanceof Document)&&r!==null;r=r instanceof Attr?r.ownerElement:r.parentElement){const a=t[t.length]={name:void 0,position:null};switch(r.nodeType){case Node.TEXT_NODE:a.name="text()";break;case Node.ATTRIBUTE_NODE:a.name="@"+r.nodeName;break;case Node.PROCESSING_INSTRUCTION_NODE:a.name="processing-instruction()";break;case Node.COMMENT_NODE:a.name="comment()";break;case Node.ELEMENT_NODE:a.name=r.nodeName}a.position=wt(r)}return"/"+t.reverse().map(r=>r.position!==null?`/${r.name}[${r.position}]`:`/${r.name}`).join("")},ge=e=>e&&e.trim().substring(0,500).replace(/\s\s+/g," ").replace(/\r?\n|\r/g," ").substring(0,250),T={capture:!0,passive:!0},ht=["a","button","input","option","li","link"],ft=["Escape","Enter","Backspace","F5","Tab"];let K=!1,S=null,j=null;const ve=e=>{var r;if(((r=e.tagName)==null?void 0:r.toLowerCase())==="html")return{element:"html"};const t={};return t.element=(a=>{if(!a.tagName)return"No tagName";const n=a.getAttribute("type");return n?`${n} ${a.tagName.toLowerCase()}`:a.tagName.toLowerCase()})(e),t},bt=e=>{var a;if(!e)return{};const t={...ve(e)},r=e.parentElement;if(r&&ht.includes((a=r.tagName)==null?void 0:a.toLowerCase())){const n=ve(r);Object.assign(t,n)}return t},Le=(e,t)=>{var n,s;let r=t.target;var a;t.target===((n=window.document)==null?void 0:n.body)&&window.Sprig.pointerDownTarget&&(r=window.Sprig.pointerDownTarget),a={x:t.x,y:t.y,type:e,elementAttributes:bt(r),windowHeight:window.innerHeight,windowWidth:window.innerWidth,...r instanceof HTMLElement||r instanceof SVGElement||r instanceof MathMLElement?{rect:r==null?void 0:r.getBoundingClientRect(),xPath:Ue(r)}:{}},(s=a==null?void 0:a.elementAttributes)!=null&&s.text&&(a.elementAttributes.text=ge(a.elementAttributes.text)),S==null||S("Sprig_Click",a)},xe=e=>{var t;ft.includes(e.key)&&(t={key:e.key},S==null||S("Sprig_Keystroke",t))},It=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("reload")&&(e={url:window.location.href,currentPageTitle:document.title},S==null||S("Sprig_Refresh",e))},vt=()=>{var e;window.performance.getEntriesByType("navigation").map(t=>t.type).includes("back_forward")&&((e={curUrl:window.location.href,fromUrl:document.referrer,currentPageTitle:document.title}).currentPageTitle&&(e.currentPageTitle=ge(e.currentPageTitle)),S==null||S("Sprig_BackForward",e))},Be=nt.debounce(e=>{if(!(e.target instanceof HTMLElement||e.target instanceof Document))return;let t=e.target;"scrollTop"in t||(t=t.documentElement),j==null||j({xPath:Ue(t),x:t.scrollLeft,y:t.scrollTop,elementAttributes:{targetScrollWidth:t.scrollWidth,targetClientWidth:t.clientWidth,targetScrollHeight:t.scrollHeight,targetClientHeight:t.clientHeight}})},750),Me=(Se="left_click",e=>Le(Se,e));var Se;const Ae=e=>{e.button===2&&Le("right_click",e)},_e=e=>{window.Sprig&&(window.Sprig.pointerDownTarget=e.target)},g={isRecording:!1,scrollEventUuids:{},stopRecording:()=>{}},He=()=>globalThis.indexedDB&&globalThis.IDBKeyRange&&globalThis.CompressionStream,f=(()=>{const e=o.sessionStorageHelper.getItem("sprig.sessionId");if(e)return o.breadcrumbsLogger.info("SessionIDFound",{savedSessionId:e}),o.sessionStorageHelper.removeItem("sprig.sessionId"),e;const t=o.v4();return o.breadcrumbsLogger.info("GeneratedSessionID",{uuid:t}),t})(),se=()=>{o.sessionStorageHelper.setItem("sprig.disableReplayRecording","disabled")},R=()=>!!o.sessionStorageHelper.getItem("sprig.disableReplayRecording"),V=()=>!!o.sessionStorageHelper.getItem("sprig.isReplayPaused");var Ee;(Ee=globalThis.addEventListener)==null||Ee.call(globalThis,"beforeunload",()=>{o.breadcrumbsLogger.info("BeforeUnload",{sessionId:f}),o.sessionStorageHelper.setItem("sprig.sessionId",f)});const k=(e,t)=>{var r,a;if(!R()&&g.isRecording&&!V())try{(a=(r=globalThis.rrwebRecord)==null?void 0:r.addCustomEvent)==null||a.call(r,e,t)}catch(n){O("Error recording custom event",n)}},St=async e=>{const{x:t,xPath:r,y:a}=e,n=g.scrollEventUuids[r];if(n)return v(async()=>{var c,d,l,y;const s=await u.openDB(),i=await s.get("events",n);if(i!=null&&i.event){const p=JSON.parse(i.event),h=t>((d=(c=p.data)==null?void 0:c.payload)==null?void 0:d.x),m=a>((y=(l=p.data)==null?void 0:l.payload)==null?void 0:y.y);if(!h&&!m)return null;h&&(p.data.payload.x=t),m&&(p.data.payload.y=a),p.data.payload.elementAttributes=e.elementAttributes,i.event=JSON.stringify(p),await s.put("events",i)}else k("Sprig_Scroll",e)},"Error updating scroll event");k("Sprig_Scroll",e)},Ne=()=>{g.stopRecording&&(g.stopRecording(),g.stopRecording=void 0),g.isRecording=!1,["cleanupInterval","inactivityInterval","pendingCheckInterval"].forEach(e=>{g[e]&&(clearInterval(g[e]),g[e]=void 0)}),K&&(window.removeEventListener("click",Me,T),window.removeEventListener("pointerdown",_e,T),window.removeEventListener("mousedown",Ae,T),window.removeEventListener("keydown",xe,T),window.removeEventListener("scroll",Be,T),K=!1),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:yt},{targetOrigin:e.origin})})},Dt=["did not allow mutations","called in an invalid security context"],Et=(e,t,{reportError:r=!0,extraInfo:a={}})=>{if(!R()&&t instanceof Error){if(se(),t.name==="VersionError")return o.breadcrumbsLogger.error("VersionErr",{message:e}),void u.deleteDB();(n=>{if(!n)return!0;for(const s of Dt)if(n.toLowerCase().includes(s))return!1;return!0})(t==null?void 0:t.message)&&(r&&globalThis.UserLeap.reportError(e,t,a),u.clearAll())}},O=(e,t,{reportError:r}={reportError:!0})=>{Ne(),o.breadcrumbsLogger.error("ReplayErr",{code:t.code,name:t.name}),Et(e,t,{reportError:r})},v=async(e,t)=>{try{return await e()}catch(r){O(t,r)}},oe=()=>{g.isRecording&&(v(()=>{var e,t;return(t=(e=globalThis.rrwebRecord)==null?void 0:e.takeFullSnapshot)==null?void 0:t.call(e,!0)},"Error recording full snapshot"),pe.forEach(e=>{var t;(t=e.source)==null||t.postMessage({type:mt},{targetOrigin:e.origin})}))};let Q=0;(async()=>He()&&Promise.allSettled([ae("replayStorage"),ae("sprig.replay")]))();const u=new class{constructor(){N(this,"wrapTransactionWithCounter",e=>{var a,n;const t=(n=(a=window.Sprig)==null?void 0:a._config)==null?void 0:n.outstandingTransactionLimit,r=t===void 0?100:t;if(r&&Q>r){const s="Too many outstanding transactions";O(s,new Error(s),{reportError:!1})}Q++,e.done.finally(()=>{Q--})});N(this,"getTransaction",async e=>{const t=(await this.openDB()).transaction(e,"readwrite");return this.wrapTransactionWithCounter(t),t})}openDB(){return function(e,t,{blocked:r,upgrade:a,blocking:n,terminated:s}={}){const i=indexedDB.open(e,t),c=x(i);return a&&(i.onupgradeneeded=d=>{a(x(i.result),d.oldVersion,d.newVersion,x(i.transaction),d)}),r&&(i.onblocked=d=>r(d.oldVersion,d.newVersion,d)),c.then(d=>{s&&(d.onclose=()=>s()),n&&(d.onversionchange=l=>n(l.oldVersion,l.newVersion,l))}).catch(()=>{}),c}("sprigReplay",1,{upgrade:(e,t,r)=>{if(r===0&&o.sessionStorageHelper.setItem("sprig.pendingCount","0"),!e.objectStoreNames.contains("events")){const a=e.createObjectStore("events",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+timestamp]",["sessionId","timestamp"])}if(!e.objectStoreNames.contains("chunkUploads")){const a=e.createObjectStore("chunkUploads",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+status]",["sessionId","status"]),a.createIndex("[uploadId+status]",["uploadId","status"]),a.createIndex("[sessionId+status+uploadId]",["sessionId","status","uploadId"])}if(!e.objectStoreNames.contains("pendingCaptures")){const a=e.createObjectStore("pendingCaptures",{keyPath:"uuid"});a.createIndex("sessionId","sessionId"),a.createIndex("timestamp","timestamp"),a.createIndex("[sessionId+targetTimestamp]",["sessionId","targetTimestamp"])}}})}async deleteDB(){try{await ae("sprigReplay")}catch{}}async bulkAdd(e,t){const r=await this.getTransaction(e);return Promise.all([...t.map(a=>r.store.add(a)),r.done])}async clearAll(){const e=(await this.openDB()).transaction(["events","chunkUploads","pendingCaptures"],"readwrite");return this.wrapTransactionWithCounter(e),Promise.all([e.objectStore("events").clear(),e.objectStore("chunkUploads").clear(),e.objectStore("pendingCaptures").clear()])}async deleteBySessionId(e,t){const r=IDBKeyRange.only(t),a=await this.getTransaction(e),n=a.store.index("sessionId");for await(const s of n.iterate(r))await s.delete();await a.done}async updatePartial(e,t,r){const a=await this.getTransaction(e),n=await a.store.get(t);n&&await a.store.put({...n,...r}),await a.done}async deleteRowsBefore(e,t,r=()=>!0){const a=IDBKeyRange.upperBound(t,!0),n=await this.getTransaction(e),s=n.store.index("timestamp");for await(const i of s.iterate(a))r(i.value)&&await i.delete();await n.done}async getEventsBetween(e,t=Date.now()){if(e>=t)return Promise.resolve([]);const r=IDBKeyRange.bound([f,e],[f,t],!1,!0);return(await this.openDB()).getAllFromIndex("events","[sessionId+timestamp]",r)}async updateEventsExpiredAt(e,t,r=30){const a=new Date,n=a.setMinutes(a.getMinutes()+(r??30)),s=await this.getTransaction("events"),i=s.store.index("[sessionId+timestamp]"),c=IDBKeyRange.bound([f,e],[f,t],!1,!0);for await(const d of i.iterate(c))await d.update({...d.value,expiredAt:n});await s.done}async deleteChunkUploads(e,t){const r=IDBKeyRange.only([t,e]),a=await this.getTransaction("chunkUploads");let s=await a.store.index("[uploadId+status]").openCursor(r);for(;s;)s.delete(),s=await s.continue();await a.done}async getChunkUploadsByStatus({sessionId:e,status:t,uploadId:r}){const a=(await this.openDB()).transaction("chunkUploads","readonly");this.wrapTransactionWithCounter(a);const n=r?a.store.index("[uploadId+status]"):a.store.index("[sessionId+status]"),s=r?IDBKeyRange.only([r,t]):IDBKeyRange.only([e,t]);return n.getAll(s)}async getPendingCaptures(e={}){return(await(await this.openDB()).getAllFromIndex("pendingCaptures","sessionId",f)).filter(r=>!e.beforePresent||r.targetTimestamp<Date.now()).filter(r=>!e.isBeforeType||r.captureParams.replayParams.replayDurationType==="before").filter(r=>!e.isHeatmap||(r.captureParams.isHeatmap??!1))}async tryAddPendingCaptureForSurvey(e){const{surveyId:t,record:r}=e,a=(await this.openDB()).transaction("pendingCaptures","readwrite");this.wrapTransactionWithCounter(a);const n=a.store.index("sessionId"),s=await n.getAll(f),i=!!r.captureParams.isHeatmap;return s.some(c=>c.captureParams.surveyId===t&&!!c.captureParams.isHeatmap===i)?(await a.done,{added:!1}):(await a.store.add(r),await a.done,{added:!0})}async markPendingCaptureToCanUpload(e){const t=await this.getTransaction("pendingCaptures"),r=t.store.index("sessionId");for await(const a of r.iterate(f)){const n=a.value;n.captureParams.responseGroupId===e&&await a.update({...n,canUpload:!0})}await t.done}async markPendingHeatmapsReady(e){if(parseInt(o.sessionStorageHelper.getItem("sprig.pendingCount")??"0")===0)return null;const t=Date.now(),r=await this.getTransaction("pendingCaptures"),a=r.store.index("sessionId");for await(const n of a.iterate(f)){const s=n.value;!s.captureParams.isHeatmap||e&&!e.includes(s.uuid)||await n.update({...s,targetTimestamp:t,captureParams:{...s.captureParams,triggerTimestamp:t,replayParams:{...s.captureParams.replayParams,replayDurationSeconds:Math.floor((t-s.timestamp)/1e3)}}})}await r.done}},U=[];let F,Oe,M=[],_=!1,A=0,W=!1,Fe=!1;const me=[];let J,je,G,We,X=!1;const H=()=>W&&!_&&Date.now()<=J,Tt=({apiUrl:e,config:t,triggerSnapshot:r,forceInit:a=!1})=>{W&&!a||(o.sessionStorageHelper.isStorageAvailable?(M=[],me.splice(0),U.splice(0),A=0,G=r,Oe=e,F={responseGroupUuid:t.responseGroupUuid,surveyId:t.surveyId,userAgent:t.userAgent,sdkVersion:t.sdkVersion},je=t.maxDurationSeconds,kt(),W||(We=globalThis.setInterval(Pt,500)),W=!0):_=!0)},Rt=[P.Drag,P.Input,P.MediaInteraction,P.MouseInteraction,P.MouseMove,P.Scroll,P.Selection,P.TouchMove],Ct=e=>e.type===L.Custom||e.type===L.IncrementalSnapshot&&Rt.includes(e.data.source),ye=e=>e.some(Ct),Pt=async()=>{if(!H())return void globalThis.clearInterval(We);if(Ge(),!ye(U))return;const e=U[0].timestamp;Date.now()-e>35e3&&(G==null||G())},Ge=async()=>{if(M.length||X)return;X=!0;const e=await Lt();if(!e)return void(_=!0);me.splice(0,e.length).forEach(t=>t(e.shift())),e.forEach(t=>M.push(t)),X=!1},kt=()=>{const e=o.sessionStorageHelper.getItem("sprig.alwayson.info");if(e){o.breadcrumbsLogger.info("Read stored session state",e);const t=JSON.parse(e);_=t.disabled,F=t.metadata,M=t.uploadUrls,A=t.currentIndex,J=t.expirationTimestamp,t.pendingEventTimestamp&&(o.breadcrumbsLogger.info(`Uploading with pending timestamp: ${t.pendingEventTimestamp}`),Ut(t.pendingEventTimestamp))}else J=1e3*je+Date.now()},Ut=async e=>{const t=Date.now(),r=(await u.getEventsBetween(e,t)).map(n=>JSON.parse(n.event));if(!ye(r))return;Je(r);const a=await Ve();a&&await Ke(a,r)},$e=async(e,t)=>{try{const r=await e();if(!r.ok)throw new Error(`Error ${t}`);return r}catch{_=!0}},Ke=async(e,t)=>{if(!H()||!e)return;const r=await(async a=>{const n=new TextEncoder,s=new CompressionStream("gzip"),i=s.writable.getWriter(),c=n.encode(JSON.stringify(a));return i.write(c),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())})(t);o.breadcrumbsLogger.info("Uploading always-on events with presigned url"),await $e(()=>o.sprigFetch(e,{body:r,method:"PUT"}),"uploading always-on with presigned url")},Lt=async()=>{if(!H())return;const{surveyId:e,responseGroupUuid:t}=F,r={responseGroupUuid:t,surveyId:e,index:A+1};o.breadcrumbsLogger.info("Fetching always-on upload urls",r);const a=await $e(()=>o.sprigFetch(`${Oe}/sdk/1/replayUrls`,{method:"POST",body:JSON.stringify(r),headers:o.getHttpHeaders(globalThis.UserLeap)}),"fetching always-on signed urls");if(!a)return;const n=a.json.signedUrls;return o.breadcrumbsLogger.info("Fetched more always-on upload urls",{body:r,urls:n}),n},Ve=async()=>{if(M.length)return M.shift();const e=new Promise(t=>{me.push(t)});return Ge(),e},Je=e=>{var n,s,i;const t=e.length?e[e.length-1].timestamp:Date.now(),r=A,a=((s=(n=globalThis.UserLeap)==null?void 0:n.config)==null?void 0:s.customMetadata)??((i=globalThis.__cfg)==null?void 0:i.customMetadata);A++,e.push({timestamp:t,type:L.Custom,data:{tag:"Sprig_Meta",payload:{...F,index:r,visitorId:globalThis.UserLeap.visitorId??"",timestamp:t,customMetadata:a}}})},xt=(e,t)=>{H()&&!Fe&&(e||U.length)&&(e&&U.length&&(async()=>{const r=U.splice(0);if(!ye(r))return;o.breadcrumbsLogger.info("Capturing always-on event array to upload"),Je(r);const a=await Ve();a&&await Ke(a,r)})(),U.push(t))};var Te;(Te=globalThis.addEventListener)==null||Te.call(globalThis,"beforeunload",async()=>{Fe=!0,H()&&(o.breadcrumbsLogger.info("Always On handle page unload"),(()=>{let e;U.length&&(e=U[0].timestamp);const t={disabled:_,metadata:F,uploadUrls:M,currentIndex:A,pendingEventTimestamp:e,expirationTimestamp:J};o.breadcrumbsLogger.info("Storing session state on unload",t),o.sessionStorageHelper.setItem("sprig.alwayson.info",JSON.stringify(t))})())});const qe=async(e,t)=>{const r=performance.now();let a;try{a=await e()}finally{const n=performance.now()-r;let s=o.PerformanceMetrics[t];s||(s=o.registerMetric(t)),s.report(n/1e3)}return a},ze=(e,t)=>{const r=performance.now();try{e()}finally{const a=performance.now()-r;let n=o.PerformanceMetrics[t];n||(n=o.registerMetric(t)),n.report(a/1e3)}};let Qe=5e3,ie=6e4,de=0,B,ce=!1,le=[];const Bt=e=>{var t,r,a,n;if((t=e.event)!=null&&t.includes("Sprig_Scroll")){const s=(n=(a=(r=JSON.parse(e.event))==null?void 0:r.data)==null?void 0:a.payload)==null?void 0:n.xPath;if(!s)return;g.scrollEventUuids[s]=e.uuid}le.push(e),ce||Mt()},Mt=()=>{ce=!0,setTimeout(async()=>{if(R()||V())return;const e=le;le=[],ce=!1,ze(async()=>{await(async t=>{const r=t.map(a=>({...a,sessionId:a.sessionId??f}));if(r.length!==0)return v(()=>u.bulkAdd("events",r),"Error storing replay events")})(e)},"sdk_replay_add_event_batch_seconds")},500)},At=(e,t,r)=>{g.cleanupInterval=window.setInterval(()=>{const a=Date.now();qe(()=>v(async()=>{R()||await Promise.all([u.deleteRowsBefore("events",a-1e3*e,n=>n.expiredAt===void 0||n.expiredAt<a-1e3*e),u.deleteRowsBefore("chunkUploads",a-1e3*t),u.deleteRowsBefore("pendingCaptures",a-1e3*r,n=>!n.canUpload)])},"Error deleting table rows"),"sdk_replay_cleanup_seconds"),o.breadcrumbsLogger.debug("CleanupComplete")},3e4)},_t=()=>{g.pendingCheckInterval=window.setInterval(async()=>{v(async()=>{await ue()},"Error initiating pending captures")},5e3)};let Y=!1;const ue=async(e=!1)=>{if(!Y)try{Y=!0;const t=parseInt(B??"0");if(t===0)return;const r=await u.getPendingCaptures({beforePresent:!0,isBeforeType:e}),a=await u.openDB();await Promise.all(r.map(async n=>(await a.delete("pendingCaptures",n.uuid),Ze(n.captureParams,n.canUpload)))),B=(t-r.length).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B)}finally{Y=!1}},Ht=async(e,t,r,a,n)=>{const s=Math.min(e+n,r),i=await qe(()=>u.getEventsBetween(e,s),"sdk_replay_get_events_between_seconds");if(!(i!=null&&i.length))return o.breadcrumbsLogger.debug("NoEventsFound"),{validStartFound:a,events:[]};if(!a){o.breadcrumbsLogger.debug("ValidStartSearch");let c=-1;return i==null||i.forEach((d,l)=>{if(!d.isValidStart)return;const y=d.timestamp<=t;(c<0||y)&&(c=l)}),c<0?(o.breadcrumbsLogger.debug("ValidStartNotFound"),{validStartFound:a,events:[]}):{validStartFound:!0,events:i==null?void 0:i.slice(c)}}return{validStartFound:a,events:i}},Xe=e=>Promise.all(e.map(async t=>{const r=await(async a=>Pe.execute(async()=>{var i;o.breadcrumbsLogger.info("UploadChunkStart",{chunkIndex:a.chunkIndex,surveyId:a.surveyId});const n=await o.sprigFetch(a.uploadUrl,{body:a.data,method:"PUT"});o.breadcrumbsLogger.http("UploadChunkEnd",{url:a.uploadUrl,method:"PUT",status_code:n.status,reason:n.statusText??"OK",chunkIndex:a.chunkIndex,surveyId:a.surveyId});const s=(i=n.headers)==null?void 0:i.get("ETag");if(!s)throw new Error(`Upload response did not include etag for upload ${a.uploadId}, part ${a.chunkIndex}`);return s}))(t);return await u.updatePartial("chunkUploads",t.uuid,{data:null,etag:r,status:"UploadComplete"}),t.uploadId})),Ye=async e=>{const t=await u.getChunkUploadsByStatus({status:"UploadComplete",uploadId:e});if(!(t!=null&&t.length))return void o.breadcrumbsLogger.info("NoChunksForUpload",{uploadId:e});const r=t.reduce((s,i)=>(s.find(c=>c.chunkIndex===i.chunkIndex)||s.push(i),s),[]);r.sort((s,i)=>s.chunkIndex-i.chunkIndex);const a=r.map(s=>({ETag:s.etag,PartNumber:s.chunkIndex})).filter(s=>s.ETag!==null),n=r[0];await ke({apiUrl:n.apiUrl,surveyId:n.surveyId,uploadId:e,responseGroupUuid:n.responseGroupId,etags:a,headers:n.completeUploadHeaders,replayDuration:n.replayDuration}),await u.deleteChunkUploads("UploadComplete",e)},Nt=()=>{v(async()=>{const e=await u.getChunkUploadsByStatus({sessionId:f,status:"ReadyForUpload"});if(!(e!=null&&e.length))return;const t=await Xe(e);t!=null&&t.length&&await Promise.all(t.map(r=>{if(r)return Ye(r)}))},"Error uploading unfinished chunks")},Ot=async(e,t)=>{const r=t??Date.now();return(async(a,n)=>{const s=new TextEncoder;let i=null;const c=new CompressionStream("gzip"),d=c.writable.getWriter();let l=!1,y=!1,[p,h]=[0,0],m=[];for(let C=a-35e3;C<n;C+=ie){if({validStartFound:y,events:m}=await Ht(C,a,n,y,ie),!(m!=null&&m.length)){o.breadcrumbsLogger.debug("NoEventsFound");continue}p===0&&(p=m[0].timestamp),h=m[m.length-1].timestamp;const w=m.map(E=>E.event);w.push(`{"timestamp":${n}}`);const b=`${l?",":"["}${w}`,I=s.encode(b);ze(()=>{d.write(I)},"sdk_replay_compression_seconds"),l=!0}if(h-p<Qe)return o.breadcrumbsLogger.debug("ReplayTooShort"),null;const D=s.encode("]");return d.write(D),d.close(),i=new Uint8Array(await new Response(c.readable).arrayBuffer()),i})(r-e,r)},De=async e=>{const{surveyId:t,responseGroupId:r,visitorId:a,apiUrl:n,completeUploadHeaders:s,replayParams:i,triggerTimestamp:c}=e,d=await Ot(1e3*i.replayDurationSeconds,c);if(!(d!=null&&d.length))return void o.breadcrumbsLogger.info("FileDataEmpty",{surveyId:t});const l=((p,h,m)=>{const D=p.length,C=1024*h*1024,w=Math.ceil(D/m),b=Math.max(C,w),I=[];let E=0;for(;E<D;)I.push(p.slice(E,E+b)),E+=b;return I})(d,i.minimumChunkSizeMb,i.signedUrls.length),y=await Promise.all(l.map(async(p,h)=>{const m=o.v4(),D={apiUrl:n,chunkIndex:h+1,completeUploadHeaders:s,etag:null,responseGroupId:r,status:"ReadyForUpload",surveyId:t,timestamp:c,totalChunks:l.length,data:p,uploadId:i.uploadId,uploadUrl:i.signedUrls[h].url,uuid:m,visitorId:a};return await(await u.openDB()).add("chunkUploads",{...D,sessionId:D.sessionId??f}),D}));await(async(p,h)=>{await Xe(h),await Promise.all(p.map(m=>Ye(m)))})([i.uploadId],y)},Ze=async(e,t)=>{if(R())return o.breadcrumbsLogger.debug("ReplayDisabled-ScheduleOrCapture");const{isHeatmap:r,isStandalone:a,replayParams:n,triggerTimestamp:s,responseGroupId:i}=e,c=async()=>{setTimeout(()=>o.eventEmitter.removeListener(o.SprigEvent.QuestionAnswered,c),0),v(async()=>{n.replayDurationType==="before"?await De(e):await u.markPendingCaptureToCanUpload(i)},"Error in schedule/capture callback")};v(async()=>{if(n.replayDurationType==="after"||n.replayDurationType==="beforeAndAfter")return!a&&!r&&o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c),void await tt(e);if(a||r||t)await De(e),r&&Ft();else{const d=35+n.replayDurationSeconds,l=s-1e3*d,y=s;await u.updateEventsExpiredAt(l,y,n.expirationTimeLimitMinutes),o.eventEmitter.on(o.SprigEvent.QuestionAnswered,c)}},"Error in scheduling/capturing replay")},Ft=async()=>{parseInt(B??"0")||o.sessionStorageHelper.removeItem("sprig.isCapturingHeatmap"),o.sessionStorageHelper.getItem("sprig.teardownAfterCapture")&&(Ne(),et(),o.sessionStorageHelper.removeItem("sprig.teardownAfterCapture"))},et=async()=>R()?o.breadcrumbsLogger.debug("ReplayDisabled-ClearData"):Promise.all([u.deleteBySessionId("events",f),u.deleteBySessionId("pendingCaptures",f)]).catch(e=>{O("Error clearing user replay data",e)}),tt=async e=>{if(R())return;const{isHeatmap:t,surveyId:r}=e,a={...e,replayParams:{...e.replayParams}};e.replayParams.replayDurationType==="beforeAndAfter"&&(a.replayParams.replayDurationSeconds*=2),a.replayParams.replayDurationType="before";const n=e.triggerTimestamp+1e3*e.replayParams.replayDurationSeconds;a.triggerTimestamp=n;const s={canUpload:!1,captureParams:a,sessionId:f,targetTimestamp:n,timestamp:Date.now(),uuid:o.v4()},{added:i}=await u.tryAddPendingCaptureForSurvey({surveyId:r,record:s});i?(B=(parseInt(B??"0")+1).toString(),o.sessionStorageHelper.setItem("sprig.pendingCount",B),t&&(oe(),o.sessionStorageHelper.setItem("sprig.isCapturingHeatmap","true"),de=Date.now(),g.inactivityInterval||(g.inactivityInterval=window.setInterval(()=>{var c;c=de,Date.now()-c>=3e4&&v(()=>u.markPendingHeatmapsReady(),"Error in heatmap inactivity")},1e3)))):o.breadcrumbsLogger.info("PendingCaptureExists",{surveyId:r})},jt=Object.freeze(Object.defineProperty({__proto__:null,RecordEvent:e=>{k("Sprig_TrackEvent",e)},RecordPageView:e=>{e.description&&(e.description=ge(e.description)),k("Sprig_PageView",e)},RecordSurveyShown:e=>{k("Sprig_ShowSurvey",e)},_completeSessionReplay:async({surveyId:e,responseGroupUuid:t,eventDigest:r,headers:a})=>{if(!e||!t)return!1;const n=globalThis.UserLeap._API_URL,s=await ke({surveyId:e,responseGroupUuid:t,eventDigest:r,apiUrl:n,headers:a},!0);return!(s!=null&&s.error)},checkPendingHeatmapsUrl:()=>R()?o.breadcrumbsLogger.debug("ReplayDisabled-PendingHeatmaps"):v(async()=>{const e=(await u.getPendingCaptures({isHeatmap:!0})).map(t=>({eventId:t.captureParams.eventId,uuid:t.uuid})).filter(({eventId:t})=>!o.checkUrlStillMatching(t)).map(({uuid:t})=>t);return o.breadcrumbsLogger.info("PendingHeatmapsToComplete",{count:e.length}),e.length&&(await u.markPendingHeatmapsReady(e),o.breadcrumbsLogger.info("MarkedPendingHeatmapsReady")),e.length},"Error marking pending heatmaps ready"),clearUserReplayData:et,disableRecording:O,initializeReplay:async({maxReplayDurationSeconds:e,maxInflightRequests:t=2,replaySettings:r,teardownAfter:a=!1,apiUrl:n,alwaysOnConfig:s})=>{if(s&&Tt({apiUrl:n,config:s,triggerSnapshot:()=>{oe()}}),B=o.sessionStorageHelper.getItem("sprig.pendingCount"),g.isRecording)return;if(a&&o.sessionStorageHelper.setItem("sprig.teardownAfterCapture","true"),R())return o.breadcrumbsLogger.debug("ReplayDisabled");if(await(async()=>{var d;if(!He())return!0;if((d=globalThis.navigator.storage)!=null&&d.estimate)try{const{quota:l=0,usage:y=0}=await globalThis.navigator.storage.estimate(),p=(l-y)/1024**3;return o.breadcrumbsLogger.info("Storage",{availableGb:p}),p<.5}catch{return!0}return!1})())return o.breadcrumbsLogger.debug("IDBNotSupported"),se();try{const d=await u.openDB();o.breadcrumbsLogger.info("DBVersion",{version:d.version})}catch(d){return o.breadcrumbsLogger.error("ReplayOpenErr",{name:d.name}),d.name==="VersionError"&&u.deleteDB(),se()}v(async()=>{await ue(!0)},"Error uploading ready pending captures");const i=H()?30:0,c=Math.max(e??0,i);if(!c)return o.breadcrumbsLogger.debug("MissingDuration");o.breadcrumbsLogger.debug("ReplayInit"),await v(async()=>{var d;r!=null&&r.minDuration&&(Qe=r.minDuration),r!=null&&r.batchDuration&&(ie=r.batchDuration),d=t,Pe.setLimit(d),Nt(),At(c+35,1800,c+35),_t();const l=window.UserLeap.replayLibraryURL??"https://cdn.sprig.com/dependencies/record.min.js";if(!window.rrwebRecord){const{record:w}=await import(l);window.rrwebRecord=w}const y=window.rrwebRecord;if(!y)return o.breadcrumbsLogger.error("RecordScriptFailed");let p=!0,h=0;const m={checkoutEveryNms:3e4,sampling:{input:"last",scroll:250,media:800},...r,mutationQueueEnabled:r==null?void 0:r.enableMutationQueue};var D,C;g.stopRecording=y({emit:(w,b)=>{if(w.type===L.Custom&&(de=Date.now()),R()||V())return;if(b&&w.type===L.Meta)h=performance.now();else if(b&&h&&w.type===L.FullSnapshot){const E=performance.now()-h;o.reportAndRegister("sdk_replay_snapshot_seconds",E/1e3)}const I=p||!!b&&w.type===L.Meta;p=!1,xt(I,w),Bt({uuid:o.v4(),event:JSON.stringify(w),isValidStart:I,timestamp:Date.now()})},...m}),g.isRecording=!!g.stopRecording,g.isRecording&&(((w,b)=>{window.addEventListener("message",I=>{var E;I.data.type===pt&&(pe.push({source:I.source,origin:I.origin}),(E=I.source)==null||E.postMessage({type:gt,settings:w,replayLibraryUrl:b},{targetOrigin:I.origin}))})})(m,l),o.eventEmitter.on("survey.complete",w=>{var b;b={id:w,userAgent:window.navigator.userAgent},k("Sprig_SubmitSurvey",b)}),D=k,C=St,K||(S=D,j=C,window.addEventListener("click",Me,T),window.addEventListener("pointerdown",_e,T),window.addEventListener("mousedown",Ae,T),window.addEventListener("keydown",xe,T),window.addEventListener("scroll",Be,T),K=!0,It(),vt()))},"Error initializing replay")},isReplayPaused:V,isReplayRecording:()=>g.isRecording,recordFullSnapshot:oe,recordReplayPaused:()=>{k("Sprig_ReplayPaused",{timestamp:Date.now()}),o.sessionStorageHelper.setItem("sprig.isReplayPaused","true")},recordReplayResumed:()=>{o.sessionStorageHelper.removeItem("sprig.isReplayPaused"),k("Sprig_ReplayResumed",{timestamp:Date.now()})},scheduleCapture:tt,scheduleOrCaptureReplay:Ze,tryReplayAction:v,uploadReadyPendingCaptures:ue},Symbol.toStringTag,{value:"Module"}));o.registerReplay(jt);
|
package/dist/replay.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var lt = Object.defineProperty;
|
|
2
2
|
var ct = (e, t, a) => t in e ? lt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
|
|
3
3
|
var F = (e, t, a) => ct(e, typeof t != "symbol" ? t + "" : t, a);
|
|
4
|
-
import { b as l, s as Q, a as m, v as X, c as ut, g as pt, P as xe, r as Be, d as gt, e as V, S as Y, f as mt } from "./metricsReporter-
|
|
4
|
+
import { b as l, s as Q, a as m, v as X, c as ut, g as pt, P as xe, r as Be, d as gt, e as V, S as Y, f as mt } from "./metricsReporter-0HbKrvkx.js";
|
|
5
5
|
import { d as yt } from "./debounce-CMb8f7wh.js";
|
|
6
6
|
var B = ((e) => (e[e.DomContentLoaded = 0] = "DomContentLoaded", e[e.Load = 1] = "Load", e[e.FullSnapshot = 2] = "FullSnapshot", e[e.IncrementalSnapshot = 3] = "IncrementalSnapshot", e[e.Meta = 4] = "Meta", e[e.Custom = 5] = "Custom", e[e.Plugin = 6] = "Plugin", e))(B || {}), k = ((e) => (e[e.Mutation = 0] = "Mutation", e[e.MouseMove = 1] = "MouseMove", e[e.MouseInteraction = 2] = "MouseInteraction", e[e.Scroll = 3] = "Scroll", e[e.ViewportResize = 4] = "ViewportResize", e[e.Input = 5] = "Input", e[e.TouchMove = 6] = "TouchMove", e[e.MediaInteraction = 7] = "MediaInteraction", e[e.StyleSheetRule = 8] = "StyleSheetRule", e[e.CanvasMutation = 9] = "CanvasMutation", e[e.Font = 10] = "Font", e[e.Log = 11] = "Log", e[e.Drag = 12] = "Drag", e[e.StyleDeclaration = 13] = "StyleDeclaration", e[e.Selection = 14] = "Selection", e[e.AdoptedStyleSheet = 15] = "AdoptedStyleSheet", e[e.CustomElement = 16] = "CustomElement", e))(k || {});
|
|
7
7
|
const re = (e, t) => t.some((a) => e instanceof a);
|