@frigade/react 1.32.33 → 1.32.34

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 mt,{createContext as ya,useEffect as Go,useState as Ae}from"react";import{ThemeProvider as ba}from"styled-components";import ct,{useContext as Ca,useEffect as yo,useState as jo}from"react";import{useCallback as lt,useContext as Vs,useEffect as Ks}from"react";import Io,{useMemo as Ds}from"react";var sr="1.32.33 ";var Se="https://api.frigade.com/v1/public/",Ee="NOT_STARTED_STEP",Z="COMPLETED_FLOW",oo="ABORTED_FLOW",st="STARTED_FLOW",Ie="NOT_STARTED_FLOW",Ne="COMPLETED_STEP",ro="STARTED_STEP";function Oe(){let{publicApiKey:e,userId:t}=Io.useContext(K);return{config:Ds(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":sr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function yt(){let{shouldGracefullyDegrade:e}=Io.useContext(K);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),to();let n;try{n=await fetch(t,o)}catch(r){return to(r)}return n?n.ok?n:to(n.statusText):to()}}function to(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function bt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Io.useContext(K);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 Hs,useState as lr}from"react";import{useContext as Ms,useEffect as Us,useState as _s}from"react";import Ws from"swr";import{useContext as $s}from"react";function Fe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:n,completedFlowsToKeepOpenDuringSession:r}=$s(K);function i(c,m=!1){return e[c]??m}function s(c,m){t(b=>({...b,[c]:m}))}function p(c){t(m=>{let{[c]:b,...w}=m;return{...w}})}function d(c){r.includes(c)||n(m=>[...m,c])}function l(c){return r.includes(c)}function u(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:i,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:u,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:l}}var zs="unknown";function Be(){let{config:e}=Oe(),{publicApiKey:t,userId:o,flows:n,setShouldGracefullyDegrade:r}=Ms(K),{resetOpenFlowState:i}=Fe(),[s,p]=_s(!1),d={data:n.map(k=>({flowId:k.id,flowState:Z,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=k=>fetch(k,e).then(g=>{if(g.ok)return g.json();throw new Error("Failed to fetch user flow states")}).catch(g=>(console.log(`Error fetching ${k}: ${g}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:u,isLoading:c,mutate:m,error:b}=Ws(t&&n&&o?`${Se}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=u==null?void 0:u.data;Us(()=>{!s&&!c&&w&&p(!0)},[w,s,c]);async function S(k){if(w){let g=w.find(x=>x.flowId===k);g&&g.flowState!==Z&&(g.flowState=Z),await m(Promise.resolve({...u,data:w}),{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function f(k,g,x){if(w){let C=w.find(v=>v.flowId===k);C&&(C.stepStates[g]=x,C.flowState=st),await m(Promise.resolve({...u,data:w}),{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function P(k,g,x){if(w){let C=w.find(v=>v.flowId===k);C&&(C.lastStepId=g,C.stepStates[g]=x,C.flowState=st),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function T(k){if(w){let g=w.find(x=>x.flowId===k);g&&g.flowState!==Ie&&(g.flowState=Ie,g.lastStepId=zs,Object.keys(g.stepStates).forEach(x=>{g.stepStates[x].actionType=Ee,g.stepStates[x].createdAt=new Date().toISOString()}),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1}),i(k))}}async function B(k,g){if(w){let x=w.find(C=>C.flowId===k);x&&x.stepStates[g]!==Ee&&(x.stepStates[g]=Ee),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!s,mutateUserFlowState:m,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:T,optimisticallyMarkStepCompleted:f,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:P,error:b}}function _t(){let{config:e}=Oe(),{userFlowStatesData:t,mutateUserFlowState:o}=Be(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:i,setFlowResponses:s}=Hs(K),[p,d]=lr(new Set),[l,u]=lr(new Set),c=yt();function m(S){let f=JSON.stringify(S);if(p.has(f))return null;p.add(f),d(p),l.add(S),u(l);let P=i==null?void 0:i.find(T=>T.flowSlug===S.flowSlug&&T.stepId===S.stepId&&T.actionType===S.actionType&&T.createdAt===S.createdAt);return c(`${Se}flowResponses`,{...e,method:"POST",body:f}).then(T=>{T.status!==200&&T.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),r([...n,S])):P||s(B=>[...B??[],S])})}async function b(S){S.foreignUserId&&(S.actionType===st||S.actionType===Ie?await m(S):S.actionType===Z?await m(S):S.actionType===ro?await m(S):S.actionType===Ne?await m(S):S.actionType===oo?await m(S):S.actionType===Ee&&await m(S))}function w(){let S=[];return t==null||t.forEach(f=>{if(f&&f.stepStates&&Object.keys(f.stepStates).length!==0)for(let P in f.stepStates){let T=f.stepStates[P];S.push({foreignUserId:f.foreignUserId,flowSlug:f.flowId,stepId:T.stepId,actionType:T.actionType,data:{},createdAt:new Date(T.createdAt),blocked:T.blocked,hidden:T.hidden})}}),[...S,...i]}return{addResponse:b,setFlowResponses:s,getFlowResponses:w}}import qs from"swr";var js=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ar=e=>{let t=js.exec(e);if(t===null)return null;let o=null;return t.forEach((n,r)=>{let i=Gs(n,"'","");i.startsWith("flow_")&&(o=i)}),o},Gs=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function X(){let{config:e}=Oe(),{flows:t,setFlows:o,userId:n,publicApiKey:r,customVariables:i,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:u}=Vs(K),c={data:[]},{verifySDKInitiated:m}=bt(),{addResponse:b,getFlowResponses:w}=_t(),S=h=>fetch(h,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${h} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),u(!0),c)).catch(y=>(console.log(`Error fetching ${h}: ${y}. Will gracefully degrade and hide Frigade`),u(!0),c)),{userFlowStatesData:f,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:T,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:g,optimisticallyMarkStepStarted:x}=Be(),{data:C,error:v,isLoading:M}=qs(r?`${Se}flows`:null,S,{keepPreviousData:!0});Ks(()=>{if(v){console.error(v);return}C&&C.data&&(C.data=o(C.data))},[C,v]);function $(h){if(M)return null;let y=t.find(E=>E.slug===h);return!y&&t.length>0&&!P&&!M?(console.log(`Flow with slug ${h} not found`),null):(y==null?void 0:y.active)===!1?null:y}function U(h){var j;if(!$(h))return[];let y=$(h).data;return y?(y=A(y),(((j=JSON.parse(y))==null?void 0:j.data)??[]).map(le=>{let z=Te(le);return{handleSecondaryButtonClick:()=>{le.skippable===!0&&W(h,le.id,{skipped:!0})},...le,complete:N(h,le.id)===Ne||z>=1,blocked:V(h,le.id),hidden:we(h,le.id),handlePrimaryButtonClick:()=>{(!le.completionCriteria&&(le.autoMarkCompleted||le.autoMarkCompleted===void 0)||le.completionCriteria&&le.autoMarkCompleted===!0)&&W(h,le.id)},progress:z}}).filter(le=>le.hidden!==!0)):[]}function A(h){return h.replace(/\${(.*?)}/g,(y,E)=>i[E]!==void 0?String(i[E]):"")}function H(h){if(!$(h))return[];let y=$(h).data;return y?(y=A(y),JSON.parse(y)??{}):[]}function I(h,y){s(E=>({...E,[h]:y}))}function _(h){!P&&!M&&h&&JSON.stringify(i)!=JSON.stringify({...i,...h})&&Object.keys(h).forEach(y=>{I(y,h[y])})}let te=lt(async(h,y,E)=>{m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:ro,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await x(h,y,j),b(j))},[n,f]),q=lt(async(h,y,E)=>{m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:Ee,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await g(h,y),b(j))},[n,f]),W=lt(async(h,y,E)=>{console.log("markStepCompleted",h,y,E),m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:Ne,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await k(h,y,j),b(j))},[n,f]),be=lt(async(h,y)=>{if(m(),ce(h)===Ie)return;let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:Ie,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await B(h),oe(E)&&b(E)},[n,f]),me=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:st,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&b(E)},[n,f]),G=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:Z,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&(await T(h),b(E))},[n,f]),L=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:oo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&(await T(h),b(E))},[n,f]);function oe(h){var y;if(!f&&h.actionType===Ee)return!1;if(f){let E=f.find(j=>j.flowId===h.flowSlug);if(h.actionType===Ee&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ee)||E&&((y=E.stepStates[h.stepId])==null?void 0:y.actionType)===h.actionType)return!1}return!0}function N(h,y){let E=ve(h,y);return P?null:E?E.actionType:Ee}function V(h,y){let E=ve(h,y);return E?E.blocked:!1}function we(h,y){let E=ve(h,y);return E?E.hidden:!1}function ve(h,y){if(P)return null;let E=f==null?void 0:f.find(j=>j.flowId===h);return!E||!E.stepStates[y]?null:E.stepStates[y]??null}function St(h){var E;if(P||!f)return null;if(ce(h)===Ie)return U(h)[0]??null;let y=(E=f.find(j=>j.flowId===h))==null?void 0:E.lastStepId;return y?U(h).find(j=>j.id===y):null}function rt(h){let y=St(h);if(!y)return 0;let E=U(h).findIndex(j=>j.id===y.id)??0;return N(h,y.id)===Ne&&E<U(h).length-1?E+1:E}function Te(h){if(!h.completionCriteria)return;let y=ar(h.completionCriteria);if(y===null)return;let E=ze(y),j=He(y);return j===0?void 0:E/j}function ce(h){let y=f==null?void 0:f.find(E=>E.flowId===h);return y?y.flowState:null}function ze(h){let y=U(h);return y.length===0?0:y.filter(j=>N(h,j.id)===Ne).length}function He(h){return U(h).length}function Y(h){return JSON.parse(t.find(y=>y.slug===h).data)}function fe(h){if(P)return!0;if(h!=null&&h.targetingLogic&&f){let y=f.find(E=>E.flowId===h.slug);if(y)return y.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&n&&n.startsWith("guest_"))}function it(h){return!fe($(h))}return{getFlow:$,getFlowData:Y,isLoading:P||M,getStepStatus:N,getFlowSteps:U,getCurrentStepIndex:rt,markStepStarted:te,markStepCompleted:W,markFlowNotStarted:be,markFlowStarted:me,markFlowCompleted:G,markFlowAborted:L,markStepNotStarted:q,getFlowStatus:ce,getNumberOfStepsCompleted:ze,getNumberOfSteps:He,targetingLogicShouldHideFlow:fe,setCustomVariable:I,updateCustomVariables:_,customVariables:i,getStepOptionalProgress:Te,getFlowMetadata:H,isStepBlocked:V,isStepHidden:we,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:it}}import{useCallback as pr,useContext as Ys,useEffect as Xs}from"react";var wt="guest_";function No(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:n,shouldGracefullyDegrade:r}=Ys(K),{config:i}=Oe(),{mutateUserFlowState:s}=Be(),p=yt(),{verifySDKInitiated:d}=bt();Xs(()=>{if(e&&!t){if(e.startsWith(wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Se}users`,{...i,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let l=pr(async c=>{d();let m={foreignId:e,properties:c};await p(`${Se}users`,{...i,method:"POST",body:JSON.stringify(m)}),n(b=>({...b,...c})),s()},[e,i,r,s]),u=pr(async(c,m)=>{d();let w={foreignId:e,events:[{event:c,properties:m}]};await p(`${Se}users`,{...i,method:"POST",body:JSON.stringify(w)}),s()},[e,i,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:u}}import{v4 as Sa}from"uuid";import $e,{useEffect as fa,useState as ga}from"react";import je,{useEffect as tl}from"react";import no from"styled-components";import Js from"react";import Qs from"styled-components";var dr="fr-",Wt="cfr-";function a(e,t){let o=`${dr}${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+" "+Wt+e}return o}function F(e){if(!e.className||e.className.indexOf(Wt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(dr)?"":`:not(${o.map(n=>`.${n}`).join(", ")})`}function Lo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function at(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Lo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ge(...e){return e.filter(Boolean).join(" ")}function cr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Zs=Qs.div`
2
+ import mt,{createContext as ya,useEffect as Go,useState as Ae}from"react";import{ThemeProvider as ba}from"styled-components";import ct,{useContext as Ca,useEffect as yo,useState as jo}from"react";import{useCallback as lt,useContext as Vs,useEffect as Ks}from"react";import Io,{useMemo as Ds}from"react";var sr="1.32.34 ";var Se="https://api.frigade.com/v1/public/",Ee="NOT_STARTED_STEP",Z="COMPLETED_FLOW",oo="ABORTED_FLOW",st="STARTED_FLOW",Ie="NOT_STARTED_FLOW",Ne="COMPLETED_STEP",ro="STARTED_STEP";function Oe(){let{publicApiKey:e,userId:t}=Io.useContext(K);return{config:Ds(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":sr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function yt(){let{shouldGracefullyDegrade:e}=Io.useContext(K);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),to();let n;try{n=await fetch(t,o)}catch(r){return to(r)}return n?n.ok?n:to(n.statusText):to()}}function to(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function bt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Io.useContext(K);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 Hs,useState as lr}from"react";import{useContext as Ms,useEffect as Us,useState as _s}from"react";import Ws from"swr";import{useContext as $s}from"react";function Fe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:n,completedFlowsToKeepOpenDuringSession:r}=$s(K);function i(c,m=!1){return e[c]??m}function s(c,m){t(b=>({...b,[c]:m}))}function p(c){t(m=>{let{[c]:b,...w}=m;return{...w}})}function d(c){r.includes(c)||n(m=>[...m,c])}function l(c){return r.includes(c)}function u(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:i,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:u,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:l}}var zs="unknown";function Be(){let{config:e}=Oe(),{publicApiKey:t,userId:o,flows:n,setShouldGracefullyDegrade:r}=Ms(K),{resetOpenFlowState:i}=Fe(),[s,p]=_s(!1),d={data:n.map(k=>({flowId:k.id,flowState:Z,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=k=>fetch(k,e).then(g=>{if(g.ok)return g.json();throw new Error("Failed to fetch user flow states")}).catch(g=>(console.log(`Error fetching ${k}: ${g}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:u,isLoading:c,mutate:m,error:b}=Ws(t&&n&&o?`${Se}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=u==null?void 0:u.data;Us(()=>{!s&&!c&&w&&p(!0)},[w,s,c]);async function S(k){if(w){let g=w.find(x=>x.flowId===k);g&&g.flowState!==Z&&(g.flowState=Z),await m(Promise.resolve({...u,data:w}),{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function f(k,g,x){if(w){let C=w.find(v=>v.flowId===k);C&&(C.stepStates[g]=x,C.flowState=st),await m(Promise.resolve({...u,data:w}),{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function P(k,g,x){if(w){let C=w.find(v=>v.flowId===k);C&&(C.lastStepId=g,C.stepStates[g]=x,C.flowState=st),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}async function T(k){if(w){let g=w.find(x=>x.flowId===k);g&&g.flowState!==Ie&&(g.flowState=Ie,g.lastStepId=zs,Object.keys(g.stepStates).forEach(x=>{g.stepStates[x].actionType=Ee,g.stepStates[x].createdAt=new Date().toISOString()}),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1}),i(k))}}async function B(k,g){if(w){let x=w.find(C=>C.flowId===k);x&&x.stepStates[g]!==Ee&&(x.stepStates[g]=Ee),await m({...u,data:w},{optimisticData:{...u,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!s,mutateUserFlowState:m,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:T,optimisticallyMarkStepCompleted:f,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:P,error:b}}function _t(){let{config:e}=Oe(),{userFlowStatesData:t,mutateUserFlowState:o}=Be(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:i,setFlowResponses:s}=Hs(K),[p,d]=lr(new Set),[l,u]=lr(new Set),c=yt();function m(S){let f=JSON.stringify(S);if(p.has(f))return null;p.add(f),d(p),l.add(S),u(l);let P=i==null?void 0:i.find(T=>T.flowSlug===S.flowSlug&&T.stepId===S.stepId&&T.actionType===S.actionType&&T.createdAt===S.createdAt);return c(`${Se}flowResponses`,{...e,method:"POST",body:f}).then(T=>{T.status!==200&&T.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),r([...n,S])):P||s(B=>[...B??[],S])})}async function b(S){S.foreignUserId&&(S.actionType===st||S.actionType===Ie?await m(S):S.actionType===Z?await m(S):S.actionType===ro?await m(S):S.actionType===Ne?await m(S):S.actionType===oo?await m(S):S.actionType===Ee&&await m(S))}function w(){let S=[];return t==null||t.forEach(f=>{if(f&&f.stepStates&&Object.keys(f.stepStates).length!==0)for(let P in f.stepStates){let T=f.stepStates[P];S.push({foreignUserId:f.foreignUserId,flowSlug:f.flowId,stepId:T.stepId,actionType:T.actionType,data:{},createdAt:new Date(T.createdAt),blocked:T.blocked,hidden:T.hidden})}}),[...S,...i]}return{addResponse:b,setFlowResponses:s,getFlowResponses:w}}import qs from"swr";var js=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ar=e=>{let t=js.exec(e);if(t===null)return null;let o=null;return t.forEach((n,r)=>{let i=Gs(n,"'","");i.startsWith("flow_")&&(o=i)}),o},Gs=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function X(){let{config:e}=Oe(),{flows:t,setFlows:o,userId:n,publicApiKey:r,customVariables:i,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:u}=Vs(K),c={data:[]},{verifySDKInitiated:m}=bt(),{addResponse:b,getFlowResponses:w}=_t(),S=h=>fetch(h,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${h} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),u(!0),c)).catch(y=>(console.log(`Error fetching ${h}: ${y}. Will gracefully degrade and hide Frigade`),u(!0),c)),{userFlowStatesData:f,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:T,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:g,optimisticallyMarkStepStarted:x}=Be(),{data:C,error:v,isLoading:M}=qs(r?`${Se}flows`:null,S,{keepPreviousData:!0});Ks(()=>{if(v){console.error(v);return}C&&C.data&&(C.data=o(C.data))},[C,v]);function $(h){if(M)return null;let y=t.find(E=>E.slug===h);return!y&&t.length>0&&!P&&!M?(console.log(`Flow with slug ${h} not found`),null):(y==null?void 0:y.active)===!1?null:y}function U(h){var j;if(!$(h))return[];let y=$(h).data;return y?(y=A(y),(((j=JSON.parse(y))==null?void 0:j.data)??[]).map(le=>{let z=Te(le);return{handleSecondaryButtonClick:()=>{le.skippable===!0&&W(h,le.id,{skipped:!0})},...le,complete:N(h,le.id)===Ne||z>=1,blocked:V(h,le.id),hidden:we(h,le.id),handlePrimaryButtonClick:()=>{(!le.completionCriteria&&(le.autoMarkCompleted||le.autoMarkCompleted===void 0)||le.completionCriteria&&le.autoMarkCompleted===!0)&&W(h,le.id)},progress:z}}).filter(le=>le.hidden!==!0)):[]}function A(h){return h.replace(/\${(.*?)}/g,(y,E)=>i[E]!==void 0?String(i[E]):"")}function H(h){if(!$(h))return[];let y=$(h).data;return y?(y=A(y),JSON.parse(y)??{}):[]}function I(h,y){s(E=>({...E,[h]:y}))}function _(h){!P&&!M&&h&&JSON.stringify(i)!=JSON.stringify({...i,...h})&&Object.keys(h).forEach(y=>{I(y,h[y])})}let te=lt(async(h,y,E)=>{m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:ro,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await x(h,y,j),b(j))},[n,f]),q=lt(async(h,y,E)=>{m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:Ee,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await g(h,y),b(j))},[n,f]),W=lt(async(h,y,E)=>{console.log("markStepCompleted",h,y,E),m();let j={foreignUserId:n,flowSlug:h,stepId:y,actionType:Ne,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};oe(j)&&(await k(h,y,j),b(j))},[n,f]),be=lt(async(h,y)=>{if(m(),ce(h)===Ie)return;let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:Ie,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await B(h),oe(E)&&b(E)},[n,f]),me=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:st,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&b(E)},[n,f]),G=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:Z,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&(await T(h),b(E))},[n,f]),L=lt(async(h,y)=>{m();let E={foreignUserId:n,flowSlug:h,stepId:"unknown",actionType:oo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};oe(E)&&(await T(h),b(E))},[n,f]);function oe(h){var y;if(!f&&h.actionType===Ee)return!1;if(f){let E=f.find(j=>j.flowId===h.flowSlug);if(h.actionType===Ee&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ee)||E&&((y=E.stepStates[h.stepId])==null?void 0:y.actionType)===h.actionType)return!1}return!0}function N(h,y){let E=ve(h,y);return P?null:E?E.actionType:Ee}function V(h,y){let E=ve(h,y);return E?E.blocked:!1}function we(h,y){let E=ve(h,y);return E?E.hidden:!1}function ve(h,y){if(P)return null;let E=f==null?void 0:f.find(j=>j.flowId===h);return!E||!E.stepStates[y]?null:E.stepStates[y]??null}function St(h){var E;if(P||!f)return null;if(ce(h)===Ie)return U(h)[0]??null;let y=(E=f.find(j=>j.flowId===h))==null?void 0:E.lastStepId;return y?U(h).find(j=>j.id===y):null}function rt(h){let y=St(h);if(!y)return 0;let E=U(h).findIndex(j=>j.id===y.id)??0;return N(h,y.id)===Ne&&E<U(h).length-1?E+1:E}function Te(h){if(!h.completionCriteria)return;let y=ar(h.completionCriteria);if(y===null)return;let E=ze(y),j=He(y);return j===0?void 0:E/j}function ce(h){let y=f==null?void 0:f.find(E=>E.flowId===h);return y?y.flowState:null}function ze(h){let y=U(h);return y.length===0?0:y.filter(j=>N(h,j.id)===Ne).length}function He(h){return U(h).length}function Y(h){return JSON.parse(t.find(y=>y.slug===h).data)}function fe(h){if(P)return!0;if(h!=null&&h.targetingLogic&&f){let y=f.find(E=>E.flowId===h.slug);if(y)return y.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&n&&n.startsWith("guest_"))}function it(h){return!fe($(h))}return{getFlow:$,getFlowData:Y,isLoading:P||M,getStepStatus:N,getFlowSteps:U,getCurrentStepIndex:rt,markStepStarted:te,markStepCompleted:W,markFlowNotStarted:be,markFlowStarted:me,markFlowCompleted:G,markFlowAborted:L,markStepNotStarted:q,getFlowStatus:ce,getNumberOfStepsCompleted:ze,getNumberOfSteps:He,targetingLogicShouldHideFlow:fe,setCustomVariable:I,updateCustomVariables:_,customVariables:i,getStepOptionalProgress:Te,getFlowMetadata:H,isStepBlocked:V,isStepHidden:we,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:it}}import{useCallback as pr,useContext as Ys,useEffect as Xs}from"react";var wt="guest_";function No(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:n,shouldGracefullyDegrade:r}=Ys(K),{config:i}=Oe(),{mutateUserFlowState:s}=Be(),p=yt(),{verifySDKInitiated:d}=bt();Xs(()=>{if(e&&!t){if(e.startsWith(wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Se}users`,{...i,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let l=pr(async c=>{d();let m={foreignId:e,properties:c};await p(`${Se}users`,{...i,method:"POST",body:JSON.stringify(m)}),n(b=>({...b,...c})),s()},[e,i,r,s]),u=pr(async(c,m)=>{d();let w={foreignId:e,events:[{event:c,properties:m}]};await p(`${Se}users`,{...i,method:"POST",body:JSON.stringify(w)}),s()},[e,i,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:u}}import{v4 as Sa}from"uuid";import $e,{useEffect as fa,useState as ga}from"react";import je,{useEffect as tl}from"react";import no from"styled-components";import Js from"react";import Qs from"styled-components";var dr="fr-",Wt="cfr-";function a(e,t){let o=`${dr}${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+" "+Wt+e}return o}function F(e){if(!e.className||e.className.indexOf(Wt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(dr)?"":`:not(${o.map(n=>`.${n}`).join(", ")})`}function Lo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function at(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Lo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ge(...e){return e.filter(Boolean).join(" ")}function cr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Zs=Qs.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -54,6 +54,7 @@ import mt,{createContext as ya,useEffect as Go,useState as Ae}from"react";import
54
54
  left: 50%;
55
55
  top: 50%;
56
56
  transform: translate(-50%, -50%);
57
+ max-height: 90%;
57
58
 
58
59
  display: flex;
59
60
  flex-direction: column;