@frigade/react 1.32.48 → 1.32.49

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 ht,{createContext as Oa,useEffect as Jo,useState as Ne}from"react";import{ThemeProvider as Da}from"styled-components";import gt,{useContext as Na,useEffect as wo,useState as Xo}from"react";import{useCallback as dt,useContext as il,useEffect as nl}from"react";import Lo,{useMemo as qs}from"react";var mr="1.32.48 ";var Fe="https://api.frigade.com/v1/public/",Ae="NOT_STARTED_STEP",Y="COMPLETED_FLOW",no="ABORTED_FLOW",pt="STARTED_FLOW",Le="NOT_STARTED_FLOW",Oe="COMPLETED_STEP",so="STARTED_STEP";function $e(){let{publicApiKey:e,userId:t}=Lo.useContext(G);return{config:qs(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":mr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Ks="frigade-last-call-at-",Ys="frigade-last-call-data-";function Tt(){let{shouldGracefullyDegrade:e}=Lo.useContext(G);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),zt();let i=Ks+t,n=Ys+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(n);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return zt()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,o.body)}let r;try{r=await fetch(t,o)}catch(s){return zt(s)}return r?r.ok?r:zt(r.statusText):zt()}}function zt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ft(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lo.useContext(G);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 tl,useState as ur}from"react";import{useContext as Js,useEffect as Qs,useState as Zs}from"react";import Rs from"swr";import{useContext as Xs}from"react";function ve(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=Xs(G);function r(c,u=!1){return e[c]??u}function s(c,u){t(w=>({...w,[c]:u}))}function p(c){t(u=>{let{[c]:w,...T}=u;return{...T}})}function d(c){n.includes(c)||i(u=>[...u,c])}function a(c){return n.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:r,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var el="unknown";function Ie(){let{config:e}=$e(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:n}=Js(G),{resetOpenFlowState:r}=ve(),[s,p]=Zs(!1),d={data:i.map(y=>({flowId:y.id,flowState:Y,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=y=>fetch(y,e).then(C=>{if(C.ok)return C.json();throw new Error("Failed to fetch user flow states")}).catch(C=>(console.log(`Error fetching ${y}: ${C}. Will gracefully degrade and hide Frigade`),n(!0),d)),{data:f,isLoading:c,mutate:u,error:w}=Rs(t&&i&&o?`${Fe}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=f==null?void 0:f.data;Qs(()=>{!s&&!c&&T&&p(!0)},[T,s,c]);async function S(y){if(T){let C=T.find(m=>m.flowId===y);C&&C.flowState!==Y&&(C.flowState=Y),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function x(y,C,m){if(T){let h=T.find(F=>F.flowId===y);h&&(h.stepStates[C]=m,h.flowState=pt),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function E(y,C,m){if(T){let h=T.find(F=>F.flowId===y);h&&(h.lastStepId=C,h.stepStates[C]=m,h.flowState=pt),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function P(y){if(T){let C=T.find(m=>m.flowId===y);C&&C.flowState!==Le&&(C.flowState=Le,C.lastStepId=el,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=Ae,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1}),r(y))}}async function B(y,C){if(T){let m=T.find(h=>h.flowId===y);m&&m.stepStates[C]!==Ae&&(m.stepStates[C]=Ae),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:x,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:E,error:w}}function Wt(){let{config:e}=$e(),{userFlowStatesData:t,mutateUserFlowState:o}=Ie(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:r,setFlowResponses:s}=tl(G),[p,d]=ur(new Set),[a,f]=ur(new Set),c=Tt();function u(S){let x=JSON.stringify(S);if(p.has(x))return null;p.add(x),d(p),a.add(S),f(a);let E=r==null?void 0:r.find(P=>P.flowSlug===S.flowSlug&&P.stepId===S.stepId&&P.actionType===S.actionType&&P.createdAt===S.createdAt);return c(`${Fe}flowResponses`,{...e,method:"POST",body:x}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),n([...i,S])):E||s(B=>[...B??[],S])})}async function w(S){S.foreignUserId&&(S.actionType===pt||S.actionType===Le?await u(S):S.actionType===Y?await u(S):S.actionType===so?await u(S):S.actionType===Oe?await u(S):S.actionType===no?await u(S):S.actionType===Ae&&await u(S))}function T(){let S=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let E in x.stepStates){let P=x.stepStates[E];S.push({foreignUserId:x.foreignUserId,flowSlug:x.flowId,stepId:P.stepId,actionType:P.actionType,data:{},createdAt:new Date(P.createdAt),blocked:P.blocked,hidden:P.hidden})}}),[...S,...r]}return{addResponse:w,setFlowResponses:s,getFlowResponses:T}}import sl from"swr";var ol=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,fr=e=>{let t=ol.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=rl(i,"'","");r.startsWith("flow_")&&(o=r)}),o},rl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function X(){let{config:e}=$e(),{flows:t,setFlows:o,userId:i,publicApiKey:n,customVariables:r,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=il(G),c={data:[]},{verifySDKInitiated:u}=Ft(),{addResponse:w,getFlowResponses:T}=Wt(),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`),f(!0),c)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:x,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:y,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=Ie(),{data:h,error:F,isLoading:L}=sl(n?`${Fe}flows`:null,S,{keepPreviousData:!0});nl(()=>{if(F){console.error(F);return}h&&h.data&&(h.data=o(h.data))},[h,F]);function U(g){if(L)return null;let b=t.find(v=>v.slug===g);return!b&&t.length>0&&!E&&!L?(console.log(`Flow with slug ${g} not found`),null):(b==null?void 0:b.active)===!1?null:b}function $(g){var H;if(!U(g))return[];let b=U(g).data;return b?(b=A(b),(((H=JSON.parse(b))==null?void 0:H.data)??[]).map(ce=>{let W=oe(ce);return{handleSecondaryButtonClick:()=>{ce.skippable===!0&&z(g,ce.id,{skipped:!0})},...ce,complete:I(g,ce.id)===Oe||W>=1,blocked:te(g,ce.id),hidden:xe(g,ce.id),handlePrimaryButtonClick:()=>{(!ce.completionCriteria&&(ce.autoMarkCompleted||ce.autoMarkCompleted===void 0)||ce.completionCriteria&&ce.autoMarkCompleted===!0)&&z(g,ce.id)},progress:W}}).filter(ce=>ce.hidden!==!0)):[]}function A(g){return g.replace(/\${(.*?)}/g,(b,v)=>r[v]!==void 0?String(r[v]):"")}function _(g){if(!U(g))return[];let b=U(g).data;return b?(b=A(b),JSON.parse(b)??{}):[]}function N(g,b){s(v=>({...v,[g]:b}))}function M(g){!E&&!L&&g&&JSON.stringify(r)!=JSON.stringify({...r,...g})&&Object.keys(g).forEach(b=>{N(b,g[b])})}let Z=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:so,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await m(g,b,H),w(H))},[i,x]),R=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:Ae,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await C(g,b),w(H))},[i,x]),z=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:Oe,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await y(g,b,H),w(H))},[i,x]),Pe=dt(async(g,b)=>{if(u(),q(g)===Le)return;let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Le,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await B(g),ne(v)&&w(v)},[i,x]),ge=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:pt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&w(v)},[i,x]),V=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Y,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&(await P(g),w(v))},[i,x]),re=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:no,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&(await P(g),w(v))},[i,x]);function ne(g){var b;if(!x&&g.actionType===Ae)return!1;if(x){let v=x.find(H=>H.flowId===g.flowSlug);if(g.actionType===Ae&&(!(v!=null&&v.stepStates[g.stepId])||v.stepStates[g.stepId].actionType===Ae)||v&&((b=v.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType||v&&v.flowState===Y&&g.actionType===Y)return!1}return!0}function I(g,b){let v=Ce(g,b);return E?null:v?v.actionType:Ae}function te(g,b){let v=Ce(g,b);return v?v.blocked:!1}function xe(g,b){let v=Ce(g,b);return v?v.hidden:!1}function Ce(g,b){if(E)return null;let v=x==null?void 0:x.find(H=>H.flowId===g);return!v||!v.stepStates[b]?null:v.stepStates[b]??null}function j(g){var v;if(E||!x)return null;if(q(g)===Le)return $(g)[0]??null;let b=(v=x.find(H=>H.flowId===g))==null?void 0:v.lastStepId;return b?$(g).find(H=>H.id===b):null}function de(g){let b=j(g);if(!b)return 0;let v=$(g).findIndex(H=>H.id===b.id)??0;return I(g,b.id)===Oe&&v<$(g).length-1?v+1:v}function oe(g){if(!g.completionCriteria)return;let b=fr(g.completionCriteria);if(b===null)return;let v=je(b),H=Ge(b);return H===0?void 0:v/H}function q(g){let b=x==null?void 0:x.find(v=>v.flowId===g);return b?b.flowState:null}function je(g){let b=$(g);return b.length===0?0:b.filter(H=>I(g,H.id)===Oe).length}function Ge(g){return $(g).length}function K(g){return JSON.parse(t.find(b=>b.slug===g).data)}function Se(g){if(E)return!0;if(g!=null&&g.targetingLogic&&x){let b=x.find(v=>v.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&i&&i.startsWith("guest_"))}function lt(g){return!Se(U(g))}return{getFlow:U,getFlowData:K,isLoading:E||L,getStepStatus:I,getFlowSteps:$,getCurrentStepIndex:de,markStepStarted:Z,markStepCompleted:z,markFlowNotStarted:Pe,markFlowStarted:ge,markFlowCompleted:V,markFlowAborted:re,markStepNotStarted:R,getFlowStatus:q,getNumberOfStepsCompleted:je,getNumberOfSteps:Ge,targetingLogicShouldHideFlow:Se,setCustomVariable:N,updateCustomVariables:M,customVariables:r,getStepOptionalProgress:oe,getFlowMetadata:_,isStepBlocked:te,isStepHidden:xe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:lt}}import{useCallback as gr,useContext as ll,useEffect as al}from"react";var kt="guest_";function Ht(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=ll(G),{config:r}=$e(),{mutateUserFlowState:s}=Ie(),p=Tt(),{verifySDKInitiated:d}=Ft();al(()=>{if(e&&!t){if(e.startsWith(kt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,n,t]);let a=gr(async c=>{d();let u={foreignId:e,properties:c};await p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify(u)}),i(w=>({...w,...c})),s()},[e,r,n,s]),f=gr(async(c,u)=>{d();let T={foreignId:e,events:[{event:c,properties:u}]};await p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify(T)}),s()},[e,r,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}import{v4 as La}from"uuid";import _e,{useEffect as Ea,useState as Ba}from"react";import De,{useEffect as gl}from"react";import ao from"styled-components";import pl from"react";import dl from"styled-components";var hr="fr-",Vt="cfr-";function l(e,t){let o=`${hr}${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+" "+Vt+e}return o}function k(e){if(!e.className||e.className.indexOf(Vt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(hr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Oo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ct(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Oo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ye(...e){return e.filter(Boolean).join(" ")}function xr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var cl=dl.div`
2
+ import ht,{createContext as Oa,useEffect as Jo,useState as Ne}from"react";import{ThemeProvider as Da}from"styled-components";import gt,{useContext as Na,useEffect as wo,useState as Xo}from"react";import{useCallback as dt,useContext as il,useEffect as nl}from"react";import Lo,{useMemo as qs}from"react";var mr="1.32.49 ";var Fe="https://api.frigade.com/v1/public/",Ae="NOT_STARTED_STEP",Y="COMPLETED_FLOW",no="ABORTED_FLOW",pt="STARTED_FLOW",Le="NOT_STARTED_FLOW",Oe="COMPLETED_STEP",so="STARTED_STEP";function $e(){let{publicApiKey:e,userId:t}=Lo.useContext(G);return{config:qs(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":mr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Ks="frigade-last-call-at-",Ys="frigade-last-call-data-";function Tt(){let{shouldGracefullyDegrade:e}=Lo.useContext(G);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),zt();let i=Ks+t,n=Ys+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(n);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return zt()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,o.body)}let r;try{r=await fetch(t,o)}catch(s){return zt(s)}return r?r.ok?r:zt(r.statusText):zt()}}function zt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ft(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lo.useContext(G);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 tl,useState as ur}from"react";import{useContext as Js,useEffect as Qs,useState as Zs}from"react";import Rs from"swr";import{useContext as Xs}from"react";function ve(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=Xs(G);function r(c,u=!1){return e[c]??u}function s(c,u){t(w=>({...w,[c]:u}))}function p(c){t(u=>{let{[c]:w,...T}=u;return{...T}})}function d(c){n.includes(c)||i(u=>[...u,c])}function a(c){return n.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:r,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var el="unknown";function Ie(){let{config:e}=$e(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:n}=Js(G),{resetOpenFlowState:r}=ve(),[s,p]=Zs(!1),d={data:i.map(y=>({flowId:y.id,flowState:Y,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=y=>fetch(y,e).then(C=>{if(C.ok)return C.json();throw new Error("Failed to fetch user flow states")}).catch(C=>(console.log(`Error fetching ${y}: ${C}. Will gracefully degrade and hide Frigade`),n(!0),d)),{data:f,isLoading:c,mutate:u,error:w}=Rs(t&&i&&o?`${Fe}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=f==null?void 0:f.data;Qs(()=>{!s&&!c&&T&&p(!0)},[T,s,c]);async function S(y){if(T){let C=T.find(m=>m.flowId===y);C&&C.flowState!==Y&&(C.flowState=Y),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function x(y,C,m){if(T){let h=T.find(F=>F.flowId===y);h&&(h.stepStates[C]=m,h.flowState=pt),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function E(y,C,m){if(T){let h=T.find(F=>F.flowId===y);h&&(h.lastStepId=C,h.stepStates[C]=m,h.flowState=pt),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function P(y){if(T){let C=T.find(m=>m.flowId===y);C&&C.flowState!==Le&&(C.flowState=Le,C.lastStepId=el,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=Ae,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1}),r(y))}}async function B(y,C){if(T){let m=T.find(h=>h.flowId===y);m&&m.stepStates[C]!==Ae&&(m.stepStates[C]=Ae),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:x,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:E,error:w}}function Wt(){let{config:e}=$e(),{userFlowStatesData:t,mutateUserFlowState:o}=Ie(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:r,setFlowResponses:s}=tl(G),[p,d]=ur(new Set),[a,f]=ur(new Set),c=Tt();function u(S){let x=JSON.stringify(S);if(p.has(x))return null;p.add(x),d(p),a.add(S),f(a);let E=r==null?void 0:r.find(P=>P.flowSlug===S.flowSlug&&P.stepId===S.stepId&&P.actionType===S.actionType&&P.createdAt===S.createdAt);return c(`${Fe}flowResponses`,{...e,method:"POST",body:x}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),n([...i,S])):E||s(B=>[...B??[],S])})}async function w(S){S.foreignUserId&&(S.actionType===pt||S.actionType===Le?await u(S):S.actionType===Y?await u(S):S.actionType===so?await u(S):S.actionType===Oe?await u(S):S.actionType===no?await u(S):S.actionType===Ae&&await u(S))}function T(){let S=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let E in x.stepStates){let P=x.stepStates[E];S.push({foreignUserId:x.foreignUserId,flowSlug:x.flowId,stepId:P.stepId,actionType:P.actionType,data:{},createdAt:new Date(P.createdAt),blocked:P.blocked,hidden:P.hidden})}}),[...S,...r]}return{addResponse:w,setFlowResponses:s,getFlowResponses:T}}import sl from"swr";var ol=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,fr=e=>{let t=ol.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=rl(i,"'","");r.startsWith("flow_")&&(o=r)}),o},rl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function X(){let{config:e}=$e(),{flows:t,setFlows:o,userId:i,publicApiKey:n,customVariables:r,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=il(G),c={data:[]},{verifySDKInitiated:u}=Ft(),{addResponse:w,getFlowResponses:T}=Wt(),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`),f(!0),c)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:x,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:y,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=Ie(),{data:h,error:F,isLoading:L}=sl(n?`${Fe}flows`:null,S,{keepPreviousData:!0});nl(()=>{if(F){console.error(F);return}h&&h.data&&(h.data=o(h.data))},[h,F]);function U(g){if(L)return null;let b=t.find(v=>v.slug===g);return!b&&t.length>0&&!E&&!L?(console.log(`Flow with slug ${g} not found`),null):(b==null?void 0:b.active)===!1?null:b}function $(g){var H;if(!U(g))return[];let b=U(g).data;return b?(b=A(b),(((H=JSON.parse(b))==null?void 0:H.data)??[]).map(ce=>{let W=oe(ce);return{handleSecondaryButtonClick:()=>{ce.skippable===!0&&z(g,ce.id,{skipped:!0})},...ce,complete:I(g,ce.id)===Oe||W>=1,blocked:te(g,ce.id),hidden:xe(g,ce.id),handlePrimaryButtonClick:()=>{(!ce.completionCriteria&&(ce.autoMarkCompleted||ce.autoMarkCompleted===void 0)||ce.completionCriteria&&ce.autoMarkCompleted===!0)&&z(g,ce.id)},progress:W}}).filter(ce=>ce.hidden!==!0)):[]}function A(g){return g.replace(/\${(.*?)}/g,(b,v)=>r[v]!==void 0?String(r[v]):"")}function _(g){if(!U(g))return[];let b=U(g).data;return b?(b=A(b),JSON.parse(b)??{}):[]}function N(g,b){s(v=>({...v,[g]:b}))}function M(g){!E&&!L&&g&&JSON.stringify(r)!=JSON.stringify({...r,...g})&&Object.keys(g).forEach(b=>{N(b,g[b])})}let Z=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:so,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await m(g,b,H),w(H))},[i,x]),R=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:Ae,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await C(g,b),w(H))},[i,x]),z=dt(async(g,b,v)=>{u();let H={foreignUserId:i,flowSlug:g,stepId:b,actionType:Oe,data:v??{},createdAt:new Date,blocked:!1,hidden:!1};ne(H)&&(await y(g,b,H),w(H))},[i,x]),Pe=dt(async(g,b)=>{if(u(),q(g)===Le)return;let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Le,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await B(g),ne(v)&&w(v)},[i,x]),ge=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:pt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&w(v)},[i,x]),V=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:Y,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&(await P(g),w(v))},[i,x]),re=dt(async(g,b)=>{u();let v={foreignUserId:i,flowSlug:g,stepId:"unknown",actionType:no,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};ne(v)&&(await P(g),w(v))},[i,x]);function ne(g){var b;if(!x&&g.actionType===Ae)return!1;if(x){let v=x.find(H=>H.flowId===g.flowSlug);if(g.actionType===Ae&&(!(v!=null&&v.stepStates[g.stepId])||v.stepStates[g.stepId].actionType===Ae)||v&&((b=v.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType||v&&v.flowState===Y&&g.actionType===Y)return!1}return!0}function I(g,b){let v=Ce(g,b);return E?null:v?v.actionType:Ae}function te(g,b){let v=Ce(g,b);return v?v.blocked:!1}function xe(g,b){let v=Ce(g,b);return v?v.hidden:!1}function Ce(g,b){if(E)return null;let v=x==null?void 0:x.find(H=>H.flowId===g);return!v||!v.stepStates[b]?null:v.stepStates[b]??null}function j(g){var v;if(E||!x)return null;if(q(g)===Le)return $(g)[0]??null;let b=(v=x.find(H=>H.flowId===g))==null?void 0:v.lastStepId;return b?$(g).find(H=>H.id===b):null}function de(g){let b=j(g);if(!b)return 0;let v=$(g).findIndex(H=>H.id===b.id)??0;return I(g,b.id)===Oe&&v<$(g).length-1?v+1:v}function oe(g){if(!g.completionCriteria)return;let b=fr(g.completionCriteria);if(b===null)return;let v=je(b),H=Ge(b);return H===0?void 0:v/H}function q(g){let b=x==null?void 0:x.find(v=>v.flowId===g);return b?b.flowState:null}function je(g){let b=$(g);return b.length===0?0:b.filter(H=>I(g,H.id)===Oe).length}function Ge(g){return $(g).length}function K(g){return JSON.parse(t.find(b=>b.slug===g).data)}function Se(g){if(E)return!0;if(g!=null&&g.targetingLogic&&x){let b=x.find(v=>v.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&i&&i.startsWith("guest_"))}function lt(g){return!Se(U(g))}return{getFlow:U,getFlowData:K,isLoading:E||L,getStepStatus:I,getFlowSteps:$,getCurrentStepIndex:de,markStepStarted:Z,markStepCompleted:z,markFlowNotStarted:Pe,markFlowStarted:ge,markFlowCompleted:V,markFlowAborted:re,markStepNotStarted:R,getFlowStatus:q,getNumberOfStepsCompleted:je,getNumberOfSteps:Ge,targetingLogicShouldHideFlow:Se,setCustomVariable:N,updateCustomVariables:M,customVariables:r,getStepOptionalProgress:oe,getFlowMetadata:_,isStepBlocked:te,isStepHidden:xe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:lt}}import{useCallback as gr,useContext as ll,useEffect as al}from"react";var kt="guest_";function Ht(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=ll(G),{config:r}=$e(),{mutateUserFlowState:s}=Ie(),p=Tt(),{verifySDKInitiated:d}=Ft();al(()=>{if(e&&!t){if(e.startsWith(kt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,n,t]);let a=gr(async c=>{d();let u={foreignId:e,properties:c};await p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify(u)}),i(w=>({...w,...c})),s()},[e,r,n,s]),f=gr(async(c,u)=>{d();let T={foreignId:e,events:[{event:c,properties:u}]};await p(`${Fe}users`,{...r,method:"POST",body:JSON.stringify(T)}),s()},[e,r,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}import{v4 as La}from"uuid";import _e,{useEffect as Ea,useState as Ba}from"react";import De,{useEffect as gl}from"react";import ao from"styled-components";import pl from"react";import dl from"styled-components";var hr="fr-",Vt="cfr-";function l(e,t){let o=`${hr}${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+" "+Vt+e}return o}function k(e){if(!e.className||e.className.indexOf(Vt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(hr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Oo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ct(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Oo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ye(...e){return e.filter(Boolean).join(" ")}function xr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var cl=dl.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -268,7 +268,7 @@ import ht,{createContext as Oa,useEffect as Jo,useState as Ne}from"react";import
268
268
  height: 60px;
269
269
  padding: 0 18px;
270
270
  margin-bottom: 10px;
271
- `;function _r({formInput:e,customFormTypeProps:t,onSaveInputData:o,inputData:i}){var a;let n=e,[r,s]=$r((i==null?void 0:i.choice)||[]),[p,d]=$r(!1);return Mr(()=>{r.length==0&&!p&&(d(!0),o({choice:[]}))},[]),Mr(()=>{o({choice:r})},[r]),go.createElement(Ll,null,go.createElement(tt,{title:n.title,required:n.required,appearance:t.appearance}),(a=n.props.options)==null?void 0:a.map(f=>go.createElement(Ol,{appearance:t.appearance,key:f.id,value:f.id,"data-selected":r.includes(f.id),onClick:()=>{if(r.includes(f.id)){s(r.filter(c=>c!==f.id));return}r.length<n.props.maxChoices?s([...r,f.id]):r.length==1&&n.props.maxChoices==1&&s([f.id])}},f.title)),go.createElement(Pt,{title:n.subtitle,appearance:t.appearance}))}import ho from"react";import zr from"styled-components";import Dl from"dompurify";function me(e){return{__html:Dl.sanitize(e,{ALLOWED_TAGS:["b","i","a","span","div","p","pre","u","br","img"],ALLOWED_ATTR:["style","class","target","id","href","alt","src"]})}}var Ml=zr.h1`
271
+ `;function _r({formInput:e,customFormTypeProps:t,onSaveInputData:o,inputData:i}){var a;let n=e,[r,s]=$r((i==null?void 0:i.choice)||[]),[p,d]=$r(!1);return Mr(()=>{r.length==0&&!p&&(d(!0),o({choice:[]}))},[]),Mr(()=>{o({choice:r})},[r]),go.createElement(Ll,null,go.createElement(tt,{title:n.title,required:n.required,appearance:t.appearance}),(a=n.props.options)==null?void 0:a.map(f=>go.createElement(Ol,{appearance:t.appearance,className:l("multipleChoiceListItem",t.appearance),key:f.id,value:f.id,"data-selected":r.includes(f.id),onClick:()=>{if(r.includes(f.id)){s(r.filter(c=>c!==f.id));return}r.length<n.props.maxChoices?s([...r,f.id]):r.length==1&&n.props.maxChoices==1&&s([f.id])}},f.title)),go.createElement(Pt,{title:n.subtitle,appearance:t.appearance}))}import ho from"react";import zr from"styled-components";import Dl from"dompurify";function me(e){return{__html:Dl.sanitize(e,{ALLOWED_TAGS:["b","i","a","span","div","p","pre","u","br","img"],ALLOWED_ATTR:["style","class","target","id","href","alt","src"]})}}var Ml=zr.h1`
272
272
  ${e=>k(e)} {
273
273
  font-style: normal;
274
274
  font-weight: 600;