@frigade/react 1.35.26 → 1.35.27

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/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var aa=Object.create;var Uo=Object.defineProperty;var pa=Object.getOwnPropertyDescriptor;var da=Object.getOwnPropertyNames;var ca=Object.getPrototypeOf,ma=Object.prototype.hasOwnProperty;var ua=(e,t)=>{for(var o in t)Uo(e,o,{get:t[o],enumerable:!0})},Rr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of da(t))!ma.call(e,r)&&r!==o&&Uo(e,r,{get:()=>t[r],enumerable:!(i=pa(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?aa(ca(e)):{},Rr(t||!e||!e.__esModule?Uo(o,"default",{value:e,enumerable:!0}):o,e)),fa=e=>Rr(Uo({},"__esModule",{value:!0}),e);var fd={};ua(fd,{Box:()=>io,Button:()=>sa,CheckBox:()=>lt,FlowType:()=>_o,FormLabel:()=>xt,FormTextField:()=>Zo,FrigadeAnnouncement:()=>ra,FrigadeBanner:()=>Wl,FrigadeChecklist:()=>ur,FrigadeDefaultAppearance:()=>st,FrigadeEmbeddedTip:()=>Ll,FrigadeForm:()=>Ir,FrigadeGuide:()=>cl,FrigadeHeroChecklist:()=>Zs,FrigadeNPSSurvey:()=>ql,FrigadeProgressBadge:()=>pl,FrigadeProvider:()=>Tn,FrigadeSupportWidget:()=>El,FrigadeTour:()=>Cl,ProgressBar:()=>Ve,ProgressRing:()=>$t,Text:()=>xr,tokens:()=>lr,useFlowOpens:()=>Ne,useFlowResponses:()=>Xt,useFlows:()=>Q,useOrganization:()=>ir,useUser:()=>Qt,useUserFlowStates:()=>He});module.exports=fa(fd);var Z=f(require("react")),Sn=require("styled-components");var xe=f(require("react"));var Je=require("react");var Lt=f(require("react"));var ei="1.35.26 ";var Xe="NOT_STARTED_STEP",J="COMPLETED_FLOW",zo="ABORTED_FLOW",Dt="STARTED_FLOW",Ke="NOT_STARTED_FLOW",et="COMPLETED_STEP",Wo="STARTED_STEP";function rt(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(Y);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ei,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var ga="frigade-last-call-at-",xa="frigade-last-call-data-";function Kt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(Y);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Gt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Gt();let r=ga+o,n=xa+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Gt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Gt(p)}return s?s.ok?s:Gt(s.statusText):Gt()}}function Gt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function qt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(Y);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var Co=require("react");var Yt=require("react");var oi=f(require("swr"));var ti=require("react");function Ne(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,ti.useContext)(Y);function n(d,x=!1){return e[d]??x}function s(d,x){t(k=>({...k,[d]:x}))}function p(d){t(x=>{let{[d]:k,...w}=x;return{...w}})}function c(d){r.includes(d)||i(x=>[...x,d])}function l(d){return r.includes(d)}function h(d){return Object.entries(e).some(([x,k])=>k&&x!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var ri=f(require("swr/immutable")),ha="unknown";function He(){let{config:e,apiUrl:t}=rt(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Yt.useContext)(Y),{resetOpenFlowState:c}=Ne(),[l,h]=(0,Yt.useState)(!1),d={data:n.map(T=>({flowId:T.id,flowState:J,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=T=>fetch(T,e).then(A=>{if(A.ok)return A.json();throw new Error("Failed to fetch user flow states")}).catch(A=>(console.log(`Error fetching ${T}: ${A}. Will gracefully degrade and hide Frigade`),s(!0),d)),k=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:w,isLoading:S,mutate:g,error:E}=p?(0,ri.default)(k,x):(0,oi.default)(k,x,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=w==null?void 0:w.data;(0,Yt.useEffect)(()=>{!l&&!S&&F&&h(!0)},[F,l,S]);async function C(T){if(F&&!p){let A=F.find(D=>D.flowId===T);A&&A.flowState!==J&&(A.flowState=J),await g(Promise.resolve({...w,data:F}),{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function N(T,A,D){if(F){let O=F.find(I=>I.flowId===T);O&&(O.stepStates[A]=D,O.flowState=Dt),await g(Promise.resolve({...w,data:F}),{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function b(T,A,D){if(F){let O=F.find(I=>I.flowId===T);O&&(O.lastStepId=A,O.stepStates[A]=D,O.flowState=Dt),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function m(T){if(F){let A=F.find(D=>D.flowId===T);A&&A.flowState!==Ke&&(A.flowState=Ke,A.lastStepId=ha,Object.keys(A.stepStates).forEach(D=>{A.stepStates[D].actionType=Xe,A.stepStates[D].createdAt=new Date().toISOString()}),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1}),c(T))}}async function v(T,A){if(F){let D=F.find(O=>O.flowId===T);D&&D.stepStates[A]!==Xe&&(D.stepStates[A]=Xe),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!l,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:C,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:N,optimisticallyMarkStepNotStarted:v,optimisticallyMarkStepStarted:b,error:E}}function Xt(){let{config:e,apiUrl:t}=rt(),{userFlowStatesData:o,mutateUserFlowState:i}=He(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,Co.useContext)(Y),[c,l]=(0,Co.useState)(new Set),[h,d]=(0,Co.useState)(new Set),x=Kt();function k(g){let E=JSON.stringify(g);if(c.has(E))return null;c.add(E),l(c),h.add(g),d(h);let F=s==null?void 0:s.find(C=>C.flowSlug===g.flowSlug&&C.stepId===g.stepId&&C.actionType===g.actionType&&C.createdAt===g.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:E}).then(C=>{C.status!==200&&C.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...r,g])):F||p(N=>[...N??[],g])})}async function w(g){g.foreignUserId&&(g.actionType===Dt||g.actionType===Ke?await k(g):g.actionType===J?await k(g):g.actionType===Wo?await k(g):g.actionType===et?await k(g):g.actionType===zo?await k(g):g.actionType===Xe&&await k(g))}function S(){let g=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let F in E.stepStates){let C=E.stepStates[F];g.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:C.stepId,actionType:C.actionType,data:{},createdAt:new Date(C.createdAt),blocked:C.blocked,hidden:C.hidden})}}),[...g,...s]}return{addResponse:w,setFlowResponses:p,getFlowResponses:S}}var ni=f(require("swr"));var Ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ii=e=>{let t=Ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ya(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ya=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Cr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var _o=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(_o||{});function Q(){let{config:e,apiUrl:t}=rt(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:x}=(0,Je.useContext)(Y),k={data:[]},{verifySDKInitiated:w}=qt(),{addResponse:S,getFlowResponses:g}=Xt(),E=u=>fetch(u,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${u} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),k)).catch(y=>(console.log(`Error fetching ${u}: ${y}. Will gracefully degrade and hide Frigade`),d(!0),k)),{mutateUserFlowState:F,userFlowStatesData:C,isLoadingUserFlowStateData:N,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:A}=He(),{data:D,error:O,isLoading:I}=(0,ni.default)(n?`${t}flows${x?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,Je.useEffect)(()=>{if(O){console.error(O);return}D&&D.data&&i(D.data)},[D,O]);function M(u){if(I)return null;let y=o.find(B=>B.slug===u);return!y&&o.length>0&&!N&&!I?(console.log(`Flow with id ${u} not found`),null):(y==null?void 0:y.active)===!1?null:y}function U(u){var H;if(!M(u))return[];let y=M(u).data;return y?(y=G(y),(((H=Cr(y))==null?void 0:H.data)??[]).map(ge=>{let ho=Ie(ge);return{handleSecondaryButtonClick:()=>{ge.skippable===!0&&pe(u,ge.id,{skipped:!0})},...ge,complete:be(u,ge.id)===et||ho>=1,blocked:Me(u,ge.id),hidden:$(u,ge.id),handlePrimaryButtonClick:()=>{(!ge.completionCriteria&&(ge.autoMarkCompleted||ge.autoMarkCompleted===void 0)||ge.completionCriteria&&ge.autoMarkCompleted===!0)&&pe(u,ge.id)},progress:ho}}).filter(ge=>ge.hidden!==!0)):[]}function G(u){return u.replaceAll(/\${(.*?)}/g,(y,B)=>s[B]===void 0?"":String(s[B]).replace(/[\u00A0-\u9999<>\&]/g,function(H){return"&#"+H.charCodeAt(0)+";"}).replaceAll(/[\\]/g,"\\\\").replaceAll(/[\"]/g,'\\"').replaceAll(/[\/]/g,"\\/").replaceAll(/[\b]/g,"\\b").replaceAll(/[\f]/g,"\\f").replaceAll(/[\n]/g,"\\n").replaceAll(/[\r]/g,"\\r").replaceAll(/[\t]/g,"\\t"))}function V(u){if(!M(u))return[];let y=M(u).data;return y?(y=G(y),JSON.parse(y)??{}):[]}function K(u,y){p(B=>({...B,[u]:y}))}function De(u){!N&&!I&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(y=>{K(y,u[y])})}let Se=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Wo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await A(u,y,H),S(H))},[r,C]),q=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Xe,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await T(u,y),S(H))},[r,C]),pe=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:et,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await v(u,y,H),S(H))},[r,C]),R=(0,Je.useCallback)(async(u,y)=>{if(!w()||ee(u)===Ke)return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Ke,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),ne(B)&&S(B)},[r,C]),$e=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Dt,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&S(B)},[r,C]),me=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:J,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&(await b(u),S(B))},[r,C]),Ee=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:zo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&(await b(u),S(B))},[r,C]);function ne(u){var y;if(!C&&u.actionType===Xe)return!1;if(C){let B=C.find(H=>H.flowId===u.flowSlug);if(u.actionType===Xe&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Xe)||B&&((y=B.stepStates[u.stepId])==null?void 0:y.actionType)===u.actionType||B&&B.flowState===J&&u.actionType===J)return!1}return!0}function be(u,y){let B=W(u,y);return N?null:B?B.actionType:Xe}function Me(u,y){let B=W(u,y);return B?B.blocked:!1}function $(u,y){let B=W(u,y);return B?B.hidden:!1}function W(u,y){if(N)return null;let B=C==null?void 0:C.find(H=>H.flowId===u);return!B||!B.stepStates[y]?null:B.stepStates[y]??null}function Ae(u){var B;if(N||!C)return null;if(ee(u)===Ke)return U(u)[0]??null;let y=(B=C.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return y?U(u).find(H=>H.id===y):null}function _(u){let y=Ae(u);if(!y)return 0;let B=U(u).findIndex(H=>H.id===y.id)??0;return be(u,y.id)===et&&B<U(u).length-1?B+1:B}function Ie(u){if(!u.completionCriteria)return;let y=ii(u.completionCriteria);if(y===null)return;let B=Pe(y),H=Re(y);return H===0?void 0:B/H}function ee(u){let y=C==null?void 0:C.find(B=>B.flowId===u);return y?y.flowState:null}function Pe(u){let y=U(u);return y.length===0?0:y.filter(H=>be(u,H.id)===et).length}function Re(u){return U(u).length}function jt(u){let y=o.find(B=>B.slug===u);return y?Cr(y.data):null}function Nt(u){if(x)return!1;if(N)return!0;if(u!=null&&u.targetingLogic&&C){let y=C.find(B=>B.flowId===u.slug);if(y)return y.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&r&&r.startsWith("guest_"))}function Vt(u){return!Nt(M(u))}function Ot(){r&&F()}return{getFlow:M,getFlowData:jt,isLoading:N||I,getStepStatus:be,getFlowSteps:U,getCurrentStepIndex:_,markStepStarted:Se,markStepCompleted:pe,markFlowNotStarted:R,markFlowStarted:$e,markFlowCompleted:me,markFlowAborted:Ee,markStepNotStarted:q,getFlowStatus:ee,getNumberOfStepsCompleted:Pe,getNumberOfSteps:Re,targetingLogicShouldHideFlow:Nt,setCustomVariable:K,updateCustomVariables:De,customVariables:s,getStepOptionalProgress:Ie,getFlowMetadata:V,isStepBlocked:Me,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:Vt,refresh:Ot}}var wt=require("react");var Jt="guest_";function Qt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,wt.useContext)(Y),{config:n,apiUrl:s}=rt(),{mutateUserFlowState:p}=He(),c=Kt(),{verifySDKInitiated:l}=qt();function h(w){return`frigade-user-registered-${w}`}(0,wt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Jt))return;let w=h(e);localStorage.getItem(w)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(w,"true"))}},[e,r,t]);let d=(0,wt.useCallback)(async w=>{if(!l())return;let S={foreignId:e,properties:w};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(S)}),i(g=>({...g,...w})),p()},[e,n,r,p]),x=(0,wt.useCallback)(async(w,S)=>{if(!l())return;let E={foreignId:e,events:[{event:w,properties:S}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),p()},[e,n,p]),k=(0,wt.useCallback)(async(w,S)=>{if(l())if(S){let g=h(w);localStorage.setItem(g,"true"),o(w);let E={foreignId:w,properties:S};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),i(F=>({...F,...S})),p()}else o(w)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:k,addPropertiesToUser:d,trackEventForUser:x}}var dn=require("uuid");var _e=f(require("react"));var we=f(require("react")),bo=f(require("styled-components"));var li=f(require("react")),ai=f(require("styled-components"));var si="fr-",yo="cfr-";function a(e,t){let o=`${si}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+yo+e}return o}function P(e){if(!e.className||e.className.indexOf(yo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(si)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function yr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function je(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${yr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ve(...e){return e.filter(Boolean).join(" ")}function So(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Sa=ai.default.div`
2
+ var aa=Object.create;var Uo=Object.defineProperty;var pa=Object.getOwnPropertyDescriptor;var da=Object.getOwnPropertyNames;var ca=Object.getPrototypeOf,ma=Object.prototype.hasOwnProperty;var ua=(e,t)=>{for(var o in t)Uo(e,o,{get:t[o],enumerable:!0})},Rr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of da(t))!ma.call(e,r)&&r!==o&&Uo(e,r,{get:()=>t[r],enumerable:!(i=pa(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?aa(ca(e)):{},Rr(t||!e||!e.__esModule?Uo(o,"default",{value:e,enumerable:!0}):o,e)),fa=e=>Rr(Uo({},"__esModule",{value:!0}),e);var fd={};ua(fd,{Box:()=>io,Button:()=>sa,CheckBox:()=>lt,FlowType:()=>_o,FormLabel:()=>xt,FormTextField:()=>Zo,FrigadeAnnouncement:()=>ra,FrigadeBanner:()=>Wl,FrigadeChecklist:()=>ur,FrigadeDefaultAppearance:()=>st,FrigadeEmbeddedTip:()=>Ll,FrigadeForm:()=>Ir,FrigadeGuide:()=>cl,FrigadeHeroChecklist:()=>Zs,FrigadeNPSSurvey:()=>ql,FrigadeProgressBadge:()=>pl,FrigadeProvider:()=>Tn,FrigadeSupportWidget:()=>El,FrigadeTour:()=>Cl,ProgressBar:()=>Ve,ProgressRing:()=>$t,Text:()=>xr,tokens:()=>lr,useFlowOpens:()=>Ne,useFlowResponses:()=>Xt,useFlows:()=>Q,useOrganization:()=>ir,useUser:()=>Qt,useUserFlowStates:()=>He});module.exports=fa(fd);var Z=f(require("react")),Sn=require("styled-components");var xe=f(require("react"));var Je=require("react");var Lt=f(require("react"));var ei="1.35.27 ";var Xe="NOT_STARTED_STEP",J="COMPLETED_FLOW",zo="ABORTED_FLOW",Dt="STARTED_FLOW",Ke="NOT_STARTED_FLOW",et="COMPLETED_STEP",Wo="STARTED_STEP";function rt(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(Y);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ei,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var ga="frigade-last-call-at-",xa="frigade-last-call-data-";function Kt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(Y);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Gt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Gt();let r=ga+o,n=xa+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Gt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Gt(p)}return s?s.ok?s:Gt(s.statusText):Gt()}}function Gt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function qt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(Y);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var Co=require("react");var Yt=require("react");var oi=f(require("swr"));var ti=require("react");function Ne(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,ti.useContext)(Y);function n(d,x=!1){return e[d]??x}function s(d,x){t(k=>({...k,[d]:x}))}function p(d){t(x=>{let{[d]:k,...w}=x;return{...w}})}function c(d){r.includes(d)||i(x=>[...x,d])}function l(d){return r.includes(d)}function h(d){return Object.entries(e).some(([x,k])=>k&&x!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var ri=f(require("swr/immutable")),ha="unknown";function He(){let{config:e,apiUrl:t}=rt(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Yt.useContext)(Y),{resetOpenFlowState:c}=Ne(),[l,h]=(0,Yt.useState)(!1),d={data:n.map(T=>({flowId:T.id,flowState:J,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=T=>fetch(T,e).then(A=>{if(A.ok)return A.json();throw new Error("Failed to fetch user flow states")}).catch(A=>(console.log(`Error fetching ${T}: ${A}. Will gracefully degrade and hide Frigade`),s(!0),d)),k=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:w,isLoading:S,mutate:g,error:E}=p?(0,ri.default)(k,x):(0,oi.default)(k,x,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=w==null?void 0:w.data;(0,Yt.useEffect)(()=>{!l&&!S&&F&&h(!0)},[F,l,S]);async function C(T){if(F&&!p){let A=F.find(D=>D.flowId===T);A&&A.flowState!==J&&(A.flowState=J),await g(Promise.resolve({...w,data:F}),{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function N(T,A,D){if(F){let O=F.find(I=>I.flowId===T);O&&(O.stepStates[A]=D,O.flowState=Dt),await g(Promise.resolve({...w,data:F}),{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function b(T,A,D){if(F){let O=F.find(I=>I.flowId===T);O&&(O.lastStepId=A,O.stepStates[A]=D,O.flowState=Dt),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}async function m(T){if(F){let A=F.find(D=>D.flowId===T);A&&A.flowState!==Ke&&(A.flowState=Ke,A.lastStepId=ha,Object.keys(A.stepStates).forEach(D=>{A.stepStates[D].actionType=Xe,A.stepStates[D].createdAt=new Date().toISOString()}),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1}),c(T))}}async function v(T,A){if(F){let D=F.find(O=>O.flowId===T);D&&D.stepStates[A]!==Xe&&(D.stepStates[A]=Xe),await g({...w,data:F},{optimisticData:{...w,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!l,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:C,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:N,optimisticallyMarkStepNotStarted:v,optimisticallyMarkStepStarted:b,error:E}}function Xt(){let{config:e,apiUrl:t}=rt(),{userFlowStatesData:o,mutateUserFlowState:i}=He(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,Co.useContext)(Y),[c,l]=(0,Co.useState)(new Set),[h,d]=(0,Co.useState)(new Set),x=Kt();function k(g){let E=JSON.stringify(g);if(c.has(E))return null;c.add(E),l(c),h.add(g),d(h);let F=s==null?void 0:s.find(C=>C.flowSlug===g.flowSlug&&C.stepId===g.stepId&&C.actionType===g.actionType&&C.createdAt===g.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:E}).then(C=>{C.status!==200&&C.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...r,g])):F||p(N=>[...N??[],g])})}async function w(g){g.foreignUserId&&(g.actionType===Dt||g.actionType===Ke?await k(g):g.actionType===J?await k(g):g.actionType===Wo?await k(g):g.actionType===et?await k(g):g.actionType===zo?await k(g):g.actionType===Xe&&await k(g))}function S(){let g=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let F in E.stepStates){let C=E.stepStates[F];g.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:C.stepId,actionType:C.actionType,data:{},createdAt:new Date(C.createdAt),blocked:C.blocked,hidden:C.hidden})}}),[...g,...s]}return{addResponse:w,setFlowResponses:p,getFlowResponses:S}}var ni=f(require("swr"));var Ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ii=e=>{let t=Ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ya(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ya=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Cr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var _o=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(_o||{});function Q(){let{config:e,apiUrl:t}=rt(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:x}=(0,Je.useContext)(Y),k={data:[]},{verifySDKInitiated:w}=qt(),{addResponse:S,getFlowResponses:g}=Xt(),E=u=>fetch(u,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${u} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),k)).catch(y=>(console.log(`Error fetching ${u}: ${y}. Will gracefully degrade and hide Frigade`),d(!0),k)),{mutateUserFlowState:F,userFlowStatesData:C,isLoadingUserFlowStateData:N,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:A}=He(),{data:D,error:O,isLoading:I}=(0,ni.default)(n?`${t}flows${x?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,Je.useEffect)(()=>{if(O){console.error(O);return}D&&D.data&&i(D.data)},[D,O]);function M(u){if(I)return null;let y=o.find(B=>B.slug===u);return!y&&o.length>0&&!N&&!I?(console.log(`Flow with id ${u} not found`),null):(y==null?void 0:y.active)===!1?null:y}function U(u){var H;if(!M(u))return[];let y=M(u).data;return y?(y=G(y),(((H=Cr(y))==null?void 0:H.data)??[]).map(ge=>{let ho=Ie(ge);return{handleSecondaryButtonClick:()=>{ge.skippable===!0&&pe(u,ge.id,{skipped:!0})},...ge,complete:be(u,ge.id)===et||ho>=1,blocked:Me(u,ge.id),hidden:$(u,ge.id),handlePrimaryButtonClick:()=>{(!ge.completionCriteria&&(ge.autoMarkCompleted||ge.autoMarkCompleted===void 0)||ge.completionCriteria&&ge.autoMarkCompleted===!0)&&pe(u,ge.id)},progress:ho}}).filter(ge=>ge.hidden!==!0)):[]}function G(u){return u.replaceAll(/\${(.*?)}/g,(y,B)=>s[B]===void 0?"":String(s[B]).replace(/[\u00A0-\u9999<>\&]/g,function(H){return"&#"+H.charCodeAt(0)+";"}).replaceAll(/[\\]/g,"\\\\").replaceAll(/[\"]/g,'\\"').replaceAll(/[\/]/g,"\\/").replaceAll(/[\b]/g,"\\b").replaceAll(/[\f]/g,"\\f").replaceAll(/[\n]/g,"\\n").replaceAll(/[\r]/g,"\\r").replaceAll(/[\t]/g,"\\t"))}function V(u){if(!M(u))return[];let y=M(u).data;return y?(y=G(y),JSON.parse(y)??{}):[]}function K(u,y){p(B=>({...B,[u]:y}))}function De(u){!N&&!I&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(y=>{K(y,u[y])})}let Se=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Wo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await A(u,y,H),S(H))},[r,C]),q=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Xe,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await T(u,y),S(H))},[r,C]),pe=(0,Je.useCallback)(async(u,y,B)=>{if(!w())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:et,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await v(u,y,H),S(H))},[r,C]),R=(0,Je.useCallback)(async(u,y)=>{if(!w()||ee(u)===Ke)return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Ke,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),ne(B)&&S(B)},[r,C]),$e=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Dt,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&S(B)},[r,C]),me=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:J,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&(await b(u),S(B))},[r,C]),Ee=(0,Je.useCallback)(async(u,y)=>{if(!w())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:zo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};ne(B)&&(await b(u),S(B))},[r,C]);function ne(u){var y;if(!C&&u.actionType===Xe)return!1;if(C){let B=C.find(H=>H.flowId===u.flowSlug);if(u.actionType===Xe&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Xe)||B&&((y=B.stepStates[u.stepId])==null?void 0:y.actionType)===u.actionType||B&&B.flowState===J&&u.actionType===J)return!1}return!0}function be(u,y){let B=W(u,y);return N?null:B?B.actionType:Xe}function Me(u,y){let B=W(u,y);return B?B.blocked:!1}function $(u,y){let B=W(u,y);return B?B.hidden:!1}function W(u,y){if(N)return null;let B=C==null?void 0:C.find(H=>H.flowId===u);return!B||!B.stepStates[y]?null:B.stepStates[y]??null}function Ae(u){var B;if(N||!C)return null;if(ee(u)===Ke)return U(u)[0]??null;let y=(B=C.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return y?U(u).find(H=>H.id===y):null}function _(u){let y=Ae(u);if(!y)return 0;let B=U(u).findIndex(H=>H.id===y.id)??0;return be(u,y.id)===et&&B<U(u).length-1?B+1:B}function Ie(u){if(!u.completionCriteria)return;let y=ii(u.completionCriteria);if(y===null)return;let B=Pe(y),H=Re(y);return H===0?void 0:B/H}function ee(u){let y=C==null?void 0:C.find(B=>B.flowId===u);return y?y.flowState:null}function Pe(u){let y=U(u);return y.length===0?0:y.filter(H=>be(u,H.id)===et).length}function Re(u){return U(u).length}function jt(u){let y=o.find(B=>B.slug===u);return y?Cr(y.data):null}function Nt(u){if(x)return!1;if(N)return!0;if(u!=null&&u.targetingLogic&&C){let y=C.find(B=>B.flowId===u.slug);if(y)return y.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&r&&r.startsWith("guest_"))}function Vt(u){return!Nt(M(u))}function Ot(){r&&F()}return{getFlow:M,getFlowData:jt,isLoading:N||I,getStepStatus:be,getFlowSteps:U,getCurrentStepIndex:_,markStepStarted:Se,markStepCompleted:pe,markFlowNotStarted:R,markFlowStarted:$e,markFlowCompleted:me,markFlowAborted:Ee,markStepNotStarted:q,getFlowStatus:ee,getNumberOfStepsCompleted:Pe,getNumberOfSteps:Re,targetingLogicShouldHideFlow:Nt,setCustomVariable:K,updateCustomVariables:De,customVariables:s,getStepOptionalProgress:Ie,getFlowMetadata:V,isStepBlocked:Me,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:Vt,refresh:Ot}}var wt=require("react");var Jt="guest_";function Qt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,wt.useContext)(Y),{config:n,apiUrl:s}=rt(),{mutateUserFlowState:p}=He(),c=Kt(),{verifySDKInitiated:l}=qt();function h(w){return`frigade-user-registered-${w}`}(0,wt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Jt))return;let w=h(e);localStorage.getItem(w)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(w,"true"))}},[e,r,t]);let d=(0,wt.useCallback)(async w=>{if(!l())return;let S={foreignId:e,properties:w};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(S)}),i(g=>({...g,...w})),p()},[e,n,r,p]),x=(0,wt.useCallback)(async(w,S)=>{if(!l())return;let E={foreignId:e,events:[{event:w,properties:S}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),p()},[e,n,p]),k=(0,wt.useCallback)(async(w,S)=>{if(l())if(S){let g=h(w);localStorage.setItem(g,"true"),o(w);let E={foreignId:w,properties:S};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),i(F=>({...F,...S})),p()}else o(w)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:k,addPropertiesToUser:d,trackEventForUser:x}}var dn=require("uuid");var _e=f(require("react"));var we=f(require("react")),bo=f(require("styled-components"));var li=f(require("react")),ai=f(require("styled-components"));var si="fr-",yo="cfr-";function a(e,t){let o=`${si}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+yo+e}return o}function P(e){if(!e.className||e.className.indexOf(yo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(si)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function yr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function je(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${yr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ve(...e){return e.filter(Boolean).join(" ")}function So(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Sa=ai.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -456,21 +456,20 @@ var aa=Object.create;var Uo=Object.defineProperty;var pa=Object.getOwnPropertyDe
456
456
  width: 24px;
457
457
  height: 24px;
458
458
  border: 3px solid rgba(255, 255, 255, 0.25);
459
- border-bottom-color: #FFF;
459
+ border-bottom-color: #fff;
460
460
  border-radius: 50%;
461
461
  display: inline-block;
462
462
  box-sizing: border-box;
463
463
  animation: rotation 0.75s linear infinite;
464
- }
465
464
 
466
- @keyframes rotation {
467
- 0% {
468
- transform: rotate(0deg);
469
- }
470
- 100% {
471
- transform: rotate(360deg);
465
+ @keyframes rotation {
466
+ 0% {
467
+ transform: rotate(0deg);
468
+ }
469
+ 100% {
470
+ transform: rotate(360deg);
471
+ }
472
472
  }
473
- }
474
473
  `;var ip=Ar.default.button`
475
474
  justify-content: center;
476
475
  align-content: center;