@frigade/react 1.32.12 → 1.32.13

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.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import st,{createContext as oa,useEffect as $o,useState as ve}from"react";import{ThemeProvider as ra}from"styled-components";import nt,{useContext as ea,useEffect as so,useState as Mo}from"react";import{useCallback as tt,useContext as Is,useEffect as Es}from"react";import bo,{useMemo as Cs}from"react";var Xo="1.32.12 ";var fe="https://api.frigade.com/v1/public/",ye="NOT_STARTED_STEP",Q="COMPLETED_FLOW",Kt="ABORTED_FLOW",et="STARTED_FLOW",Ee="NOT_STARTED_FLOW",Fe="COMPLETED_STEP",Yt="STARTED_STEP";function Ae(){let{publicApiKey:e,userId:t}=bo.useContext(V);return{config:Cs(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Xo,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function ut(){let{shouldGracefullyDegrade:e}=bo.useContext(V);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),qt();let i;try{i=await fetch(t,o)}catch(r){return qt(r)}return i?i.ok?i:qt(i.statusText):qt()}}function qt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function ft(){let{publicApiKey:e,shouldGracefullyDegrade:t}=bo.useContext(V);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}import{useContext as ks,useState as Jo}from"react";import{useContext as ys,useEffect as bs,useState as Ts}from"react";import ws from"swr";import{useContext as Ss}from"react";function ke(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=Ss(V);function i(p,d=!1){return e[p]??d}function r(p,d){t(l=>({...l,[p]:d}))}function n(p){t(d=>{let{[p]:l,...h}=d;return{...h}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Fs="unknown";function be(){let{config:e}=Ae(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=ys(V),{resetOpenFlowState:n}=ke(),[s,p]=Ts(!1),d={data:i.map(P=>({flowId:P.id,flowState:Q,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=P=>fetch(P,e).then(c=>{if(c.ok)return c.json();throw new Error("Failed to fetch user flow states")}).catch(c=>(console.log(`Error fetching ${P}: ${c}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:h,isLoading:m,mutate:u,error:w}=ws(t&&i&&o?`${fe}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),x=h==null?void 0:h.data;bs(()=>{!s&&!m&&x&&p(!0)},[x,s,m]);async function S(P){if(x){let c=x.find(f=>f.flowId===P);c&&c.flowState!==Q&&(c.flowState=Q),await u(Promise.resolve({...h,data:x}),{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function y(P,c,f){if(x){let T=x.find(v=>v.flowId===P);T&&(T.stepStates[c]=f,T.flowState=et),await u(Promise.resolve({...h,data:x}),{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function I(P,c,f){if(x){let T=x.find(v=>v.flowId===P);T&&(T.lastStepId=c,T.stepStates[c]=f,T.flowState=et),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function k(P){if(x){let c=x.find(f=>f.flowId===P);c&&c.flowState!==Ee&&(c.flowState=Ee,c.lastStepId=Fs,Object.keys(c.stepStates).forEach(f=>{c.stepStates[f].actionType=ye,c.stepStates[f].createdAt=new Date().toISOString()}),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1}),n(P))}}async function E(P,c){if(x){let f=x.find(T=>T.flowId===P);f&&f.stepStates[c]!==ye&&(f.stepStates[c]=ye),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:x,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:k,optimisticallyMarkStepCompleted:y,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:I,error:w}}function At(){let{config:e}=Ae(),{userFlowStatesData:t,mutateUserFlowState:o}=be(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=ks(V),[p,d]=Jo(new Set),[l,h]=Jo(new Set),m=ut();function u(S){let y=JSON.stringify(S);if(p.has(y))return null;p.add(y),d(p),l.add(S),h(l);let I=n==null?void 0:n.find(k=>k.flowSlug===S.flowSlug&&k.stepId===S.stepId&&k.actionType===S.actionType&&k.createdAt===S.createdAt);return m(`${fe}flowResponses`,{...e,method:"POST",body:y}).then(k=>{k.status!==200&&k.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),r([...i,S])):I||s(E=>[...E??[],S])})}async function w(S){S.foreignUserId&&(S.actionType===et||S.actionType===Ee?await u(S):S.actionType===Q?await u(S):S.actionType===Yt?await u(S):S.actionType===Fe?await u(S):S.actionType===Kt?await u(S):S.actionType===ye&&await u(S))}function x(){let S=[];return t==null||t.forEach(y=>{if(y&&y.stepStates&&Object.keys(y.stepStates).length!==0)for(let I in y.stepStates){let k=y.stepStates[I];S.push({foreignUserId:y.foreignUserId,flowSlug:y.flowId,stepId:k.stepId,actionType:k.actionType,data:{},createdAt:new Date(k.createdAt),blocked:k.blocked,hidden:k.hidden})}}),[...S,...n]}return{addResponse:w,setFlowResponses:s,getFlowResponses:x}}import As from"swr";var Ps=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Qo=e=>{let t=Ps.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=vs(i,"'","");n.startsWith("flow_")&&(o=n)}),o},vs=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function K(){let{config:e}=Ae(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:h}=Is(V),m={data:[]},{verifySDKInitiated:u}=ft(),{addResponse:w,getFlowResponses:x}=At(),S=g=>fetch(g,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${g} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),h(!0),m)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),h(!0),m)),{userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:k,optimisticallyMarkFlowNotStarted:E,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:f}=be(),{data:T,error:v,isLoading:$}=As(r?`${fe}flows`:null,S,{keepPreviousData:!0});Es(()=>{if(v){console.error(v);return}T&&T.data&&(T.data=o(T.data))},[T,v]);function U(g){let b=t.find(C=>C.slug===g);return!b&&t.length>0&&!I&&!$&&console.log(`Flow with slug ${g} not found`),b.active===!1?null:b}function _(g){var N;if(!U(g))return[];let b=U(g).data;return b?(b=A(b),(((N=JSON.parse(b))==null?void 0:N.data)??[]).map(Z=>{let Et=$e(Z);return{handleSecondaryButtonClick:()=>{Z.skippable===!0&&M(g,Z.id,{skipped:!0})},...Z,complete:B(g,Z.id)===Fe||Et>=1,blocked:re(g,Z.id),hidden:Me(g,Z.id),handlePrimaryButtonClick:()=>{(!Z.completionCriteria&&(Z.autoMarkCompleted||Z.autoMarkCompleted===void 0)||Z.completionCriteria&&Z.autoMarkCompleted===!0)&&M(g,Z.id)},progress:Et}}).filter(Z=>Z.hidden!==!0)):[]}function A(g){return g.replace(/\${(.*?)}/g,(b,C)=>n[C]!==void 0?String(n[C]):"")}function W(g){if(!U(g))return[];let b=U(g).data;return b?(b=A(b),JSON.parse(b)??{}):[]}function O(g,b){s(C=>({...C,[g]:b}))}function q(g){!I&&!$&&g&&JSON.stringify(n)!=JSON.stringify({...n,...g})&&Object.keys(g).forEach(b=>{O(b,g[b])})}let z=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:Yt,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await f(g,b,N),w(N))},[i,y]),G=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:ye,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await c(g,b),w(N))},[i,y]),M=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:Fe,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await P(g,b,N),w(N))},[i,y]),J=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Ee,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await E(g),pe(C)&&w(C)},[i,y]),j=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:et,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&w(C)},[i,y]),Y=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Q,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&(await k(g),w(C))},[i,y]),Ve=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Kt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&(await k(g),w(C))},[i,y]);function pe(g){var b;if(!y&&g.actionType===ye)return!1;if(y){let C=y.find(N=>N.flowId===g.flowSlug);if(g.actionType===ye&&(!(C!=null&&C.stepStates[g.stepId])||C.stepStates[g.stepId].actionType===ye)||C&&((b=C.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType)return!1}return!0}function B(g,b){let C=ie(g,b);return I?null:C?C.actionType:ye}function re(g,b){let C=ie(g,b);return C?C.blocked:!1}function Me(g,b){let C=ie(g,b);return C?C.hidden:!1}function ie(g,b){if(I)return null;let C=y==null?void 0:y.find(N=>N.flowId===g);return!C||!C.stepStates[b]?null:C.stepStates[b]??null}function me(g){var C;if(I||!y)return null;if(Re(g)===Ee)return _(g)[0]??null;let b=(C=y.find(N=>N.flowId===g))==null?void 0:C.lastStepId;return b?_(g).find(N=>N.id===b):null}function qe(g){let b=me(g);if(!b)return 0;let C=_(g).findIndex(N=>N.id===b.id)??0;return B(g,b.id)===Fe&&C<_(g).length-1?C+1:C}function $e(g){if(!g.completionCriteria)return;let b=Qo(g.completionCriteria);if(b===null)return;let C=we(b),N=H(b);return N===0?void 0:C/N}function Re(g){let b=y==null?void 0:y.find(C=>C.flowId===g);return b?b.flowState:null}function we(g){let b=_(g);return b.length===0?0:b.filter(N=>B(g,N.id)===Fe).length}function H(g){return _(g).length}function Se(g){return JSON.parse(t.find(b=>b.slug===g).data)}function mt(g){if(I)return!0;if(g!=null&&g.targetingLogic&&y){let b=y.find(C=>C.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&i&&i.startsWith("guest_"))}function yo(g){return!mt(U(g))}return{getFlow:U,getFlowData:Se,isLoading:I||$,getStepStatus:B,getFlowSteps:_,getCurrentStepIndex:qe,markStepStarted:z,markStepCompleted:M,markFlowNotStarted:J,markFlowStarted:j,markFlowCompleted:Y,markFlowAborted:Ve,markStepNotStarted:G,getFlowStatus:Re,getNumberOfStepsCompleted:we,getNumberOfSteps:H,targetingLogicShouldHideFlow:mt,setCustomVariable:O,updateCustomVariables:q,customVariables:n,getStepOptionalProgress:$e,getFlowMetadata:W,isStepBlocked:re,isStepHidden:Me,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:yo}}import{useCallback as Zo,useContext as Bs,useEffect as Ls}from"react";var gt="guest_";function To(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=Bs(V),{config:n}=Ae(),{mutateUserFlowState:s}=be(),p=ut(),{verifySDKInitiated:d}=ft();Ls(()=>{if(e&&!t){if(e.startsWith(gt))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${fe}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(m,"true"))}},[e,r,t]);let l=Zo(async m=>{d();let u={foreignId:e,properties:m};await p(`${fe}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(w=>({...w,...m})),s()},[e,n,r,s]),h=Zo(async(m,u)=>{d();let x={foreignId:e,events:[{event:m,properties:u}]};await p(`${fe}users`,{...n,method:"POST",body:JSON.stringify(x)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:h}}import{v4 as ta}from"uuid";import Be,{useEffect as Jl,useState as Ql}from"react";import Ue,{useEffect as Us}from"react";import Jt from"styled-components";import Os from"react";import Ns from"styled-components";var Ro="fr-",Bt="cfr-";function a(e,t){let o=`${Ro}${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+" "+Bt+e}return o}function F(e){if(!e.className||e.className.indexOf(Bt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Ro)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function wo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ot(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${wo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function xe(...e){return e.filter(Boolean).join(" ")}function er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ds=Ns.div`
2
+ import st,{createContext as oa,useEffect as $o,useState as ve}from"react";import{ThemeProvider as ra}from"styled-components";import nt,{useContext as ea,useEffect as so,useState as Mo}from"react";import{useCallback as tt,useContext as Is,useEffect as Es}from"react";import bo,{useMemo as Cs}from"react";var Xo="1.32.13 ";var fe="https://api.frigade.com/v1/public/",ye="NOT_STARTED_STEP",Q="COMPLETED_FLOW",Kt="ABORTED_FLOW",et="STARTED_FLOW",Ee="NOT_STARTED_FLOW",Fe="COMPLETED_STEP",Yt="STARTED_STEP";function Ae(){let{publicApiKey:e,userId:t}=bo.useContext(V);return{config:Cs(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Xo,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function ut(){let{shouldGracefullyDegrade:e}=bo.useContext(V);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),qt();let i;try{i=await fetch(t,o)}catch(r){return qt(r)}return i?i.ok?i:qt(i.statusText):qt()}}function qt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function ft(){let{publicApiKey:e,shouldGracefullyDegrade:t}=bo.useContext(V);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}import{useContext as ks,useState as Jo}from"react";import{useContext as ys,useEffect as bs,useState as Ts}from"react";import ws from"swr";import{useContext as Ss}from"react";function ke(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=Ss(V);function i(p,d=!1){return e[p]??d}function r(p,d){t(l=>({...l,[p]:d}))}function n(p){t(d=>{let{[p]:l,...h}=d;return{...h}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Fs="unknown";function be(){let{config:e}=Ae(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=ys(V),{resetOpenFlowState:n}=ke(),[s,p]=Ts(!1),d={data:i.map(P=>({flowId:P.id,flowState:Q,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=P=>fetch(P,e).then(c=>{if(c.ok)return c.json();throw new Error("Failed to fetch user flow states")}).catch(c=>(console.log(`Error fetching ${P}: ${c}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:h,isLoading:m,mutate:u,error:w}=ws(t&&i&&o?`${fe}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),x=h==null?void 0:h.data;bs(()=>{!s&&!m&&x&&p(!0)},[x,s,m]);async function S(P){if(x){let c=x.find(f=>f.flowId===P);c&&c.flowState!==Q&&(c.flowState=Q),await u(Promise.resolve({...h,data:x}),{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function y(P,c,f){if(x){let T=x.find(v=>v.flowId===P);T&&(T.stepStates[c]=f,T.flowState=et),await u(Promise.resolve({...h,data:x}),{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function I(P,c,f){if(x){let T=x.find(v=>v.flowId===P);T&&(T.lastStepId=c,T.stepStates[c]=f,T.flowState=et),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}async function k(P){if(x){let c=x.find(f=>f.flowId===P);c&&c.flowState!==Ee&&(c.flowState=Ee,c.lastStepId=Fs,Object.keys(c.stepStates).forEach(f=>{c.stepStates[f].actionType=ye,c.stepStates[f].createdAt=new Date().toISOString()}),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1}),n(P))}}async function E(P,c){if(x){let f=x.find(T=>T.flowId===P);f&&f.stepStates[c]!==ye&&(f.stepStates[c]=ye),await u({...h,data:x},{optimisticData:{...h,data:x},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:x,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:k,optimisticallyMarkStepCompleted:y,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:I,error:w}}function At(){let{config:e}=Ae(),{userFlowStatesData:t,mutateUserFlowState:o}=be(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=ks(V),[p,d]=Jo(new Set),[l,h]=Jo(new Set),m=ut();function u(S){let y=JSON.stringify(S);if(p.has(y))return null;p.add(y),d(p),l.add(S),h(l);let I=n==null?void 0:n.find(k=>k.flowSlug===S.flowSlug&&k.stepId===S.stepId&&k.actionType===S.actionType&&k.createdAt===S.createdAt);return m(`${fe}flowResponses`,{...e,method:"POST",body:y}).then(k=>{k.status!==200&&k.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),r([...i,S])):I||s(E=>[...E??[],S])})}async function w(S){S.foreignUserId&&(S.actionType===et||S.actionType===Ee?await u(S):S.actionType===Q?await u(S):S.actionType===Yt?await u(S):S.actionType===Fe?await u(S):S.actionType===Kt?await u(S):S.actionType===ye&&await u(S))}function x(){let S=[];return t==null||t.forEach(y=>{if(y&&y.stepStates&&Object.keys(y.stepStates).length!==0)for(let I in y.stepStates){let k=y.stepStates[I];S.push({foreignUserId:y.foreignUserId,flowSlug:y.flowId,stepId:k.stepId,actionType:k.actionType,data:{},createdAt:new Date(k.createdAt),blocked:k.blocked,hidden:k.hidden})}}),[...S,...n]}return{addResponse:w,setFlowResponses:s,getFlowResponses:x}}import As from"swr";var Ps=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Qo=e=>{let t=Ps.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=vs(i,"'","");n.startsWith("flow_")&&(o=n)}),o},vs=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function K(){let{config:e}=Ae(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:h}=Is(V),m={data:[]},{verifySDKInitiated:u}=ft(),{addResponse:w,getFlowResponses:x}=At(),S=g=>fetch(g,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${g} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),h(!0),m)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),h(!0),m)),{userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:k,optimisticallyMarkFlowNotStarted:E,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:f}=be(),{data:T,error:v,isLoading:$}=As(r?`${fe}flows`:null,S,{keepPreviousData:!0});Es(()=>{if(v){console.error(v);return}T&&T.data&&(T.data=o(T.data))},[T,v]);function U(g){let b=t.find(C=>C.slug===g);return!b&&t.length>0&&!I&&!$?(console.log(`Flow with slug ${g} not found`),null):b.active===!1?null:b}function _(g){var N;if(!U(g))return[];let b=U(g).data;return b?(b=A(b),(((N=JSON.parse(b))==null?void 0:N.data)??[]).map(Z=>{let Et=$e(Z);return{handleSecondaryButtonClick:()=>{Z.skippable===!0&&M(g,Z.id,{skipped:!0})},...Z,complete:B(g,Z.id)===Fe||Et>=1,blocked:re(g,Z.id),hidden:Me(g,Z.id),handlePrimaryButtonClick:()=>{(!Z.completionCriteria&&(Z.autoMarkCompleted||Z.autoMarkCompleted===void 0)||Z.completionCriteria&&Z.autoMarkCompleted===!0)&&M(g,Z.id)},progress:Et}}).filter(Z=>Z.hidden!==!0)):[]}function A(g){return g.replace(/\${(.*?)}/g,(b,C)=>n[C]!==void 0?String(n[C]):"")}function W(g){if(!U(g))return[];let b=U(g).data;return b?(b=A(b),JSON.parse(b)??{}):[]}function O(g,b){s(C=>({...C,[g]:b}))}function q(g){!I&&!$&&g&&JSON.stringify(n)!=JSON.stringify({...n,...g})&&Object.keys(g).forEach(b=>{O(b,g[b])})}let z=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:Yt,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await f(g,b,N),w(N))},[i,y]),G=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:ye,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await c(g,b),w(N))},[i,y]),M=tt(async(g,b,C)=>{u();let N={foreignUserId:i,flowSlug:g,stepId:b,actionType:Fe,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};pe(N)&&(await P(g,b,N),w(N))},[i,y]),J=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Ee,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await E(g),pe(C)&&w(C)},[i,y]),j=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:et,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&w(C)},[i,y]),Y=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Q,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&(await k(g),w(C))},[i,y]),Ve=tt(async(g,b)=>{u();let C={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Kt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(C)&&(await k(g),w(C))},[i,y]);function pe(g){var b;if(!y&&g.actionType===ye)return!1;if(y){let C=y.find(N=>N.flowId===g.flowSlug);if(g.actionType===ye&&(!(C!=null&&C.stepStates[g.stepId])||C.stepStates[g.stepId].actionType===ye)||C&&((b=C.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType)return!1}return!0}function B(g,b){let C=ie(g,b);return I?null:C?C.actionType:ye}function re(g,b){let C=ie(g,b);return C?C.blocked:!1}function Me(g,b){let C=ie(g,b);return C?C.hidden:!1}function ie(g,b){if(I)return null;let C=y==null?void 0:y.find(N=>N.flowId===g);return!C||!C.stepStates[b]?null:C.stepStates[b]??null}function me(g){var C;if(I||!y)return null;if(Re(g)===Ee)return _(g)[0]??null;let b=(C=y.find(N=>N.flowId===g))==null?void 0:C.lastStepId;return b?_(g).find(N=>N.id===b):null}function qe(g){let b=me(g);if(!b)return 0;let C=_(g).findIndex(N=>N.id===b.id)??0;return B(g,b.id)===Fe&&C<_(g).length-1?C+1:C}function $e(g){if(!g.completionCriteria)return;let b=Qo(g.completionCriteria);if(b===null)return;let C=we(b),N=H(b);return N===0?void 0:C/N}function Re(g){let b=y==null?void 0:y.find(C=>C.flowId===g);return b?b.flowState:null}function we(g){let b=_(g);return b.length===0?0:b.filter(N=>B(g,N.id)===Fe).length}function H(g){return _(g).length}function Se(g){return JSON.parse(t.find(b=>b.slug===g).data)}function mt(g){if(I)return!0;if(g!=null&&g.targetingLogic&&y){let b=y.find(C=>C.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&i&&i.startsWith("guest_"))}function yo(g){return!mt(U(g))}return{getFlow:U,getFlowData:Se,isLoading:I||$,getStepStatus:B,getFlowSteps:_,getCurrentStepIndex:qe,markStepStarted:z,markStepCompleted:M,markFlowNotStarted:J,markFlowStarted:j,markFlowCompleted:Y,markFlowAborted:Ve,markStepNotStarted:G,getFlowStatus:Re,getNumberOfStepsCompleted:we,getNumberOfSteps:H,targetingLogicShouldHideFlow:mt,setCustomVariable:O,updateCustomVariables:q,customVariables:n,getStepOptionalProgress:$e,getFlowMetadata:W,isStepBlocked:re,isStepHidden:Me,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:yo}}import{useCallback as Zo,useContext as Bs,useEffect as Ls}from"react";var gt="guest_";function To(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=Bs(V),{config:n}=Ae(),{mutateUserFlowState:s}=be(),p=ut(),{verifySDKInitiated:d}=ft();Ls(()=>{if(e&&!t){if(e.startsWith(gt))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${fe}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(m,"true"))}},[e,r,t]);let l=Zo(async m=>{d();let u={foreignId:e,properties:m};await p(`${fe}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(w=>({...w,...m})),s()},[e,n,r,s]),h=Zo(async(m,u)=>{d();let x={foreignId:e,events:[{event:m,properties:u}]};await p(`${fe}users`,{...n,method:"POST",body:JSON.stringify(x)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:h}}import{v4 as ta}from"uuid";import Be,{useEffect as Jl,useState as Ql}from"react";import Ue,{useEffect as Us}from"react";import Jt from"styled-components";import Os from"react";import Ns from"styled-components";var Ro="fr-",Bt="cfr-";function a(e,t){let o=`${Ro}${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+" "+Bt+e}return o}function F(e){if(!e.className||e.className.indexOf(Bt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Ro)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function wo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ot(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${wo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function xe(...e){return e.filter(Boolean).join(" ")}function er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ds=Ns.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;