@frigade/react 1.33.17 → 1.33.18
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 +2 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +2 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import Ct,{createContext as vp,useEffect as Eo,useState as Oe}from"react";import{ThemeProvider as Bp}from"styled-components";import ht,{useContext as op,useEffect as vo,useState as ar}from"react";import{useCallback as ft,useContext as Fl,useEffect as kl}from"react";import Vo,{useMemo as Er}from"react";var Br="1.33.17 ";var Ie="NOT_STARTED_STEP",Z="COMPLETED_FLOW",po="ABORTED_FLOW",ut="STARTED_FLOW",De="NOT_STARTED_FLOW",$e="COMPLETED_STEP",co="STARTED_STEP";function _e(){let{publicApiKey:e,userId:t,apiUrl:o}=Vo.useContext(G);return{config:Er(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Br,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:Er(()=>`${o}/v1/public/`,[o])}}var ml="frigade-last-call-at-",ul="frigade-last-call-data-";function kt(){let{shouldGracefullyDegrade:e,readonly:t}=Vo.useContext(G);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ft();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ft();let r=ml+o,n=ul+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 a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Ft()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Ft(p)}return s?s.ok?s:Ft(s.statusText):Ft()}}function Ft(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Pt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Vo.useContext(G);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}}import{useContext as bl,useState as Ar}from"react";import{useContext as gl,useEffect as xl,useState as hl}from"react";import Cl from"swr";import{useContext as fl}from"react";function ve(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=fl(G);function n(d,g=!1){return e[d]??g}function s(d,g){t(C=>({...C,[d]:g}))}function p(d){t(g=>{let{[d]:C,...b}=g;return{...b}})}function c(d){r.includes(d)||i(g=>[...g,d])}function a(d){return r.includes(d)}function h(d){return Object.entries(e).some(([g,C])=>C&&g!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}import yl from"swr/immutable";var Sl="unknown";function Ne(){let{config:e,apiUrl:t}=_e(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=gl(G),{resetOpenFlowState:c}=ve(),[a,h]=hl(!1),d={data:n.map(y=>({flowId:y.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},g=y=>fetch(y,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${y}: ${P}. Will gracefully degrade and hide Frigade`),s(!0),d)),C=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:b,isLoading:k,mutate:u,error:B}=p?yl(C,g):Cl(C,g,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),x=b==null?void 0:b.data;xl(()=>{!a&&!k&&x&&h(!0)},[x,a,k]);async function F(y){if(x&&!p){let P=x.find(O=>O.flowId===y);P&&P.flowState!==Z&&(P.flowState=Z),await u(Promise.resolve({...b,data:x}),{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function N(y,P,O){if(x){let I=x.find(L=>L.flowId===y);I&&(I.stepStates[P]=O,I.flowState=ut),await u(Promise.resolve({...b,data:x}),{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function T(y,P,O){if(x){let I=x.find(L=>L.flowId===y);I&&(I.lastStepId=P,I.stepStates[P]=O,I.flowState=ut),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function m(y){if(x){let P=x.find(O=>O.flowId===y);P&&P.flowState!==De&&(P.flowState=De,P.lastStepId=Sl,Object.keys(P.stepStates).forEach(O=>{P.stepStates[O].actionType=Ie,P.stepStates[O].createdAt=new Date().toISOString()}),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1}),c(y))}}async function w(y,P){if(x){let O=x.find(I=>I.flowId===y);O&&O.stepStates[P]!==Ie&&(O.stepStates[P]=Ie),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:x,isLoadingUserFlowStateData:!a,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:N,optimisticallyMarkStepNotStarted:w,optimisticallyMarkStepStarted:T,error:B}}function Vt(){let{config:e,apiUrl:t}=_e(),{userFlowStatesData:o,mutateUserFlowState:i}=Ne(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=bl(G),[c,a]=Ar(new Set),[h,d]=Ar(new Set),g=kt();function C(u){let B=JSON.stringify(u);if(c.has(B))return null;c.add(B),a(c),h.add(u),d(h);let x=s==null?void 0:s.find(F=>F.flowSlug===u.flowSlug&&F.stepId===u.stepId&&F.actionType===u.actionType&&F.createdAt===u.createdAt);return g(`${t}flowResponses`,{...e,method:"POST",body:B}).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+u.stepId+". Will retry again later."),n([...r,u])):x||p(N=>[...N??[],u])})}async function b(u){u.foreignUserId&&(u.actionType===ut||u.actionType===De?await C(u):u.actionType===Z?await C(u):u.actionType===co?await C(u):u.actionType===$e?await C(u):u.actionType===po?await C(u):u.actionType===Ie&&await C(u))}function k(){let u=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let x in B.stepStates){let F=B.stepStates[x];u.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...u,...s]}return{addResponse:b,setFlowResponses:p,getFlowResponses:k}}import Pl from"swr";var wl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Ir=e=>{let t=wl.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Tl(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Tl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e,apiUrl:t}=_e(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:g}=Fl(G),C={data:[]},{verifySDKInitiated:b}=Pt(),{addResponse:k,getFlowResponses:u}=Vt(),B=f=>fetch(f,e).then(S=>S.ok?S.json():(console.log(`Error fetching ${f} (${S.status}): ${S.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),C)).catch(S=>(console.log(`Error fetching ${f}: ${S}. Will gracefully degrade and hide Frigade`),d(!0),C)),{userFlowStatesData:x,isLoadingUserFlowStateData:F,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:T,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:w,optimisticallyMarkStepStarted:y}=Ne(),{data:P,error:O,isLoading:I}=Pl(n?`${t}flows${g?"?readonly=true":""}`:null,B,{keepPreviousData:!0});kl(()=>{if(O){console.error(O);return}P&&P.data&&i(P.data)},[P,O]);function L(f){if(I)return null;let S=o.find(E=>E.slug===f);return!S&&o.length>0&&!F&&!I?(console.log(`Flow with slug ${f} not found`),null):(S==null?void 0:S.active)===!1?null:S}function D(f){var A;if(!L(f))return[];let S=L(f).data;return S?(S=z(S),(((A=JSON.parse(S))==null?void 0:A.data)??[]).map(Q=>{let mt=ce(Q);return{handleSecondaryButtonClick:()=>{Q.skippable===!0&&q(f,Q.id,{skipped:!0})},...Q,complete:J(f,Q.id)===$e||mt>=1,blocked:$(f,Q.id),hidden:_(f,Q.id),handlePrimaryButtonClick:()=>{(!Q.completionCriteria&&(Q.autoMarkCompleted||Q.autoMarkCompleted===void 0)||Q.completionCriteria&&Q.autoMarkCompleted===!0)&&q(f,Q.id)},progress:mt}}).filter(Q=>Q.hidden!==!0)):[]}function z(f){return f.replaceAll(/\${(.*?)}/g,(S,E)=>s[E]===void 0?"":String(s[E]).replace(/[\u00A0-\u9999<>\&]/g,function(A){return"&#"+A.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 H(f){if(!L(f))return[];let S=L(f).data;return S?(S=z(S),JSON.parse(S)??{}):[]}function oe(f,S){p(E=>({...E,[f]:S}))}function se(f){!F&&!I&&f&&JSON.stringify(s)!=JSON.stringify({...s,...f})&&Object.keys(f).forEach(S=>{oe(S,f[S])})}let K=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:co,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await y(f,S,A),k(A))},[r,x]),j=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:Ie,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await w(f,S),k(A))},[r,x]),q=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:$e,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await m(f,S,A),k(A))},[r,x]),X=ft(async(f,S)=>{if(!b()||ee(f)===De)return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:De,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};await T(f),re(E)&&k(E)},[r,x]),he=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ut,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&k(E)},[r,x]),Pe=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:Z,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&(await N(f),k(E))},[r,x]),Ce=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:po,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&(await N(f),k(E))},[r,x]);function re(f){var S;if(!x&&f.actionType===Ie)return!1;if(x){let E=x.find(A=>A.flowId===f.flowSlug);if(f.actionType===Ie&&(!(E!=null&&E.stepStates[f.stepId])||E.stepStates[f.stepId].actionType===Ie)||E&&((S=E.stepStates[f.stepId])==null?void 0:S.actionType)===f.actionType||E&&E.flowState===Z&&f.actionType===Z)return!1}return!0}function J(f,S){let E=ye(f,S);return F?null:E?E.actionType:Ie}function $(f,S){let E=ye(f,S);return E?E.blocked:!1}function _(f,S){let E=ye(f,S);return E?E.hidden:!1}function ye(f,S){if(F)return null;let E=x==null?void 0:x.find(A=>A.flowId===f);return!E||!E.stepStates[S]?null:E.stepStates[S]??null}function de(f){var E;if(F||!x)return null;if(ee(f)===De)return D(f)[0]??null;let S=(E=x.find(A=>A.flowId===f))==null?void 0:E.lastStepId;return S?D(f).find(A=>A.id===S):null}function U(f){let S=de(f);if(!S)return 0;let E=D(f).findIndex(A=>A.id===S.id)??0;return J(f,S.id)===$e&&E<D(f).length-1?E+1:E}function ce(f){if(!f.completionCriteria)return;let S=Ir(f.completionCriteria);if(S===null)return;let E=Se(S),A=V(S);return A===0?void 0:E/A}function ee(f){let S=x==null?void 0:x.find(E=>E.flowId===f);return S?S.flowState:null}function Se(f){let S=D(f);return S.length===0?0:S.filter(A=>J(f,A.id)===$e).length}function V(f){return D(f).length}function Ae(f){let S=o.find(E=>E.slug===f);return S?JSON.parse(S.data):null}function ze(f){if(g)return!1;if(F)return!0;if(f!=null&&f.targetingLogic&&x){let S=x.find(E=>E.flowId===f.slug);if(S)return S.shouldTrigger===!1}return!!(f!=null&&f.targetingLogic&&r&&r.startsWith("guest_"))}function Ho(f){return!ze(L(f))}return{getFlow:L,getFlowData:Ae,isLoading:F||I,getStepStatus:J,getFlowSteps:D,getCurrentStepIndex:U,markStepStarted:K,markStepCompleted:q,markFlowNotStarted:X,markFlowStarted:he,markFlowCompleted:Pe,markFlowAborted:Ce,markStepNotStarted:j,getFlowStatus:ee,getNumberOfStepsCompleted:Se,getNumberOfSteps:V,targetingLogicShouldHideFlow:ze,setCustomVariable:oe,updateCustomVariables:se,customVariables:s,getStepOptionalProgress:ce,getFlowMetadata:H,isStepBlocked:$,isStepHidden:_,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Ho}}import{useCallback as Nr,useContext as vl,useEffect as Bl}from"react";var vt="guest_";function jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=vl(G),{config:n,apiUrl:s}=_e(),{mutateUserFlowState:p}=Ne(),c=kt(),{verifySDKInitiated:a}=Pt();Bl(()=>{if(e&&!t){if(e.startsWith(vt))return;let g=`frigade-user-registered-${e}`;localStorage.getItem(g)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(g,"true"))}},[e,r,t]);let h=Nr(async g=>{if(!a())return;let C={foreignId:e,properties:g};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(C)}),i(b=>({...b,...g})),p()},[e,n,r,p]),d=Nr(async(g,C)=>{if(!a())return;let k={foreignId:e,events:[{event:g,properties:C}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(k)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:h,trackEventForUser:d}}import{v4 as rp}from"uuid";import He,{useEffect as Za,useState as Ra}from"react";import Me,{useEffect as Dl}from"react";import fo from"styled-components";import El from"react";import Al from"styled-components";var Or="fr-",Gt="cfr-";function l(e,t){let o=`${Or}${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+" "+Gt+e}return o}function v(e){if(!e.className||e.className.indexOf(Gt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Or)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function jo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Ge(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${jo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function be(...e){return e.filter(Boolean).join(" ")}function qt(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Il=Al.div`
|
|
2
|
+
import Ct,{createContext as vp,useEffect as Eo,useState as Oe}from"react";import{ThemeProvider as Bp}from"styled-components";import ht,{useContext as op,useEffect as vo,useState as ar}from"react";import{useCallback as ft,useContext as Fl,useEffect as kl}from"react";import Vo,{useMemo as Er}from"react";var Br="1.33.18 ";var Ie="NOT_STARTED_STEP",Z="COMPLETED_FLOW",po="ABORTED_FLOW",ut="STARTED_FLOW",De="NOT_STARTED_FLOW",$e="COMPLETED_STEP",co="STARTED_STEP";function _e(){let{publicApiKey:e,userId:t,apiUrl:o}=Vo.useContext(G);return{config:Er(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Br,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:Er(()=>`${o}/v1/public/`,[o])}}var ml="frigade-last-call-at-",ul="frigade-last-call-data-";function kt(){let{shouldGracefullyDegrade:e,readonly:t}=Vo.useContext(G);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ft();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ft();let r=ml+o,n=ul+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 a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Ft()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Ft(p)}return s?s.ok?s:Ft(s.statusText):Ft()}}function Ft(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Pt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Vo.useContext(G);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}}import{useContext as bl,useState as Ar}from"react";import{useContext as gl,useEffect as xl,useState as hl}from"react";import Cl from"swr";import{useContext as fl}from"react";function ve(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=fl(G);function n(d,g=!1){return e[d]??g}function s(d,g){t(C=>({...C,[d]:g}))}function p(d){t(g=>{let{[d]:C,...b}=g;return{...b}})}function c(d){r.includes(d)||i(g=>[...g,d])}function a(d){return r.includes(d)}function h(d){return Object.entries(e).some(([g,C])=>C&&g!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}import yl from"swr/immutable";var Sl="unknown";function Ne(){let{config:e,apiUrl:t}=_e(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=gl(G),{resetOpenFlowState:c}=ve(),[a,h]=hl(!1),d={data:n.map(y=>({flowId:y.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},g=y=>fetch(y,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${y}: ${P}. Will gracefully degrade and hide Frigade`),s(!0),d)),C=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:b,isLoading:k,mutate:u,error:B}=p?yl(C,g):Cl(C,g,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),x=b==null?void 0:b.data;xl(()=>{!a&&!k&&x&&h(!0)},[x,a,k]);async function F(y){if(x&&!p){let P=x.find(O=>O.flowId===y);P&&P.flowState!==Z&&(P.flowState=Z),await u(Promise.resolve({...b,data:x}),{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function N(y,P,O){if(x){let I=x.find(L=>L.flowId===y);I&&(I.stepStates[P]=O,I.flowState=ut),await u(Promise.resolve({...b,data:x}),{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function T(y,P,O){if(x){let I=x.find(L=>L.flowId===y);I&&(I.lastStepId=P,I.stepStates[P]=O,I.flowState=ut),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}async function m(y){if(x){let P=x.find(O=>O.flowId===y);P&&P.flowState!==De&&(P.flowState=De,P.lastStepId=Sl,Object.keys(P.stepStates).forEach(O=>{P.stepStates[O].actionType=Ie,P.stepStates[O].createdAt=new Date().toISOString()}),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1}),c(y))}}async function w(y,P){if(x){let O=x.find(I=>I.flowId===y);O&&O.stepStates[P]!==Ie&&(O.stepStates[P]=Ie),await u({...b,data:x},{optimisticData:{...b,data:x},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:x,isLoadingUserFlowStateData:!a,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:N,optimisticallyMarkStepNotStarted:w,optimisticallyMarkStepStarted:T,error:B}}function Vt(){let{config:e,apiUrl:t}=_e(),{userFlowStatesData:o,mutateUserFlowState:i}=Ne(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=bl(G),[c,a]=Ar(new Set),[h,d]=Ar(new Set),g=kt();function C(u){let B=JSON.stringify(u);if(c.has(B))return null;c.add(B),a(c),h.add(u),d(h);let x=s==null?void 0:s.find(F=>F.flowSlug===u.flowSlug&&F.stepId===u.stepId&&F.actionType===u.actionType&&F.createdAt===u.createdAt);return g(`${t}flowResponses`,{...e,method:"POST",body:B}).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+u.stepId+". Will retry again later."),n([...r,u])):x||p(N=>[...N??[],u])})}async function b(u){u.foreignUserId&&(u.actionType===ut||u.actionType===De?await C(u):u.actionType===Z?await C(u):u.actionType===co?await C(u):u.actionType===$e?await C(u):u.actionType===po?await C(u):u.actionType===Ie&&await C(u))}function k(){let u=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let x in B.stepStates){let F=B.stepStates[x];u.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...u,...s]}return{addResponse:b,setFlowResponses:p,getFlowResponses:k}}import Pl from"swr";var wl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Ir=e=>{let t=wl.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Tl(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Tl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e,apiUrl:t}=_e(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:g}=Fl(G),C={data:[]},{verifySDKInitiated:b}=Pt(),{addResponse:k,getFlowResponses:u}=Vt(),B=f=>fetch(f,e).then(S=>S.ok?S.json():(console.log(`Error fetching ${f} (${S.status}): ${S.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),C)).catch(S=>(console.log(`Error fetching ${f}: ${S}. Will gracefully degrade and hide Frigade`),d(!0),C)),{userFlowStatesData:x,isLoadingUserFlowStateData:F,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:T,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:w,optimisticallyMarkStepStarted:y}=Ne(),{data:P,error:O,isLoading:I}=Pl(n?`${t}flows${g?"?readonly=true":""}`:null,B,{keepPreviousData:!0});kl(()=>{if(O){console.error(O);return}P&&P.data&&i(P.data)},[P,O]);function L(f){if(I)return null;let S=o.find(E=>E.slug===f);return!S&&o.length>0&&!F&&!I?(console.log(`Flow with slug ${f} not found`),null):(S==null?void 0:S.active)===!1?null:S}function D(f){var A;if(!L(f))return[];let S=L(f).data;return S?(S=z(S),(((A=JSON.parse(S))==null?void 0:A.data)??[]).map(Q=>{let mt=ce(Q);return{handleSecondaryButtonClick:()=>{Q.skippable===!0&&q(f,Q.id,{skipped:!0})},...Q,complete:J(f,Q.id)===$e||mt>=1,blocked:$(f,Q.id),hidden:_(f,Q.id),handlePrimaryButtonClick:()=>{(!Q.completionCriteria&&(Q.autoMarkCompleted||Q.autoMarkCompleted===void 0)||Q.completionCriteria&&Q.autoMarkCompleted===!0)&&q(f,Q.id)},progress:mt}}).filter(Q=>Q.hidden!==!0)):[]}function z(f){return f.replaceAll(/\${(.*?)}/g,(S,E)=>s[E]===void 0?"":String(s[E]).replace(/[\u00A0-\u9999<>\&]/g,function(A){return"&#"+A.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 H(f){if(!L(f))return[];let S=L(f).data;return S?(S=z(S),JSON.parse(S)??{}):[]}function oe(f,S){p(E=>({...E,[f]:S}))}function se(f){!F&&!I&&f&&JSON.stringify(s)!=JSON.stringify({...s,...f})&&Object.keys(f).forEach(S=>{oe(S,f[S])})}let K=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:co,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await y(f,S,A),k(A))},[r,x]),j=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:Ie,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await w(f,S),k(A))},[r,x]),q=ft(async(f,S,E)=>{if(!b())return;let A={foreignUserId:r,flowSlug:f,stepId:S,actionType:$e,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};re(A)&&(await m(f,S,A),k(A))},[r,x]),X=ft(async(f,S)=>{if(!b()||ee(f)===De)return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:De,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};await T(f),re(E)&&k(E)},[r,x]),he=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ut,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&k(E)},[r,x]),Pe=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:Z,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&(await N(f),k(E))},[r,x]),Ce=ft(async(f,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:po,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};re(E)&&(await N(f),k(E))},[r,x]);function re(f){var S;if(!x&&f.actionType===Ie)return!1;if(x){let E=x.find(A=>A.flowId===f.flowSlug);if(f.actionType===Ie&&(!(E!=null&&E.stepStates[f.stepId])||E.stepStates[f.stepId].actionType===Ie)||E&&((S=E.stepStates[f.stepId])==null?void 0:S.actionType)===f.actionType||E&&E.flowState===Z&&f.actionType===Z)return!1}return!0}function J(f,S){let E=ye(f,S);return F?null:E?E.actionType:Ie}function $(f,S){let E=ye(f,S);return E?E.blocked:!1}function _(f,S){let E=ye(f,S);return E?E.hidden:!1}function ye(f,S){if(F)return null;let E=x==null?void 0:x.find(A=>A.flowId===f);return!E||!E.stepStates[S]?null:E.stepStates[S]??null}function de(f){var E;if(F||!x)return null;if(ee(f)===De)return D(f)[0]??null;let S=(E=x.find(A=>A.flowId===f))==null?void 0:E.lastStepId;return S?D(f).find(A=>A.id===S):null}function U(f){let S=de(f);if(!S)return 0;let E=D(f).findIndex(A=>A.id===S.id)??0;return J(f,S.id)===$e&&E<D(f).length-1?E+1:E}function ce(f){if(!f.completionCriteria)return;let S=Ir(f.completionCriteria);if(S===null)return;let E=Se(S),A=V(S);return A===0?void 0:E/A}function ee(f){let S=x==null?void 0:x.find(E=>E.flowId===f);return S?S.flowState:null}function Se(f){let S=D(f);return S.length===0?0:S.filter(A=>J(f,A.id)===$e).length}function V(f){return D(f).length}function Ae(f){let S=o.find(E=>E.slug===f);return S?JSON.parse(S.data):null}function ze(f){if(g)return!1;if(F)return!0;if(f!=null&&f.targetingLogic&&x){let S=x.find(E=>E.flowId===f.slug);if(S)return S.shouldTrigger===!1}return!!(f!=null&&f.targetingLogic&&r&&r.startsWith("guest_"))}function Ho(f){return!ze(L(f))}return{getFlow:L,getFlowData:Ae,isLoading:F||I,getStepStatus:J,getFlowSteps:D,getCurrentStepIndex:U,markStepStarted:K,markStepCompleted:q,markFlowNotStarted:X,markFlowStarted:he,markFlowCompleted:Pe,markFlowAborted:Ce,markStepNotStarted:j,getFlowStatus:ee,getNumberOfStepsCompleted:Se,getNumberOfSteps:V,targetingLogicShouldHideFlow:ze,setCustomVariable:oe,updateCustomVariables:se,customVariables:s,getStepOptionalProgress:ce,getFlowMetadata:H,isStepBlocked:$,isStepHidden:_,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Ho}}import{useCallback as Nr,useContext as vl,useEffect as Bl}from"react";var vt="guest_";function jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=vl(G),{config:n,apiUrl:s}=_e(),{mutateUserFlowState:p}=Ne(),c=kt(),{verifySDKInitiated:a}=Pt();Bl(()=>{if(e&&!t){if(e.startsWith(vt))return;let g=`frigade-user-registered-${e}`;localStorage.getItem(g)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(g,"true"))}},[e,r,t]);let h=Nr(async g=>{if(!a())return;let C={foreignId:e,properties:g};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(C)}),i(b=>({...b,...g})),p()},[e,n,r,p]),d=Nr(async(g,C)=>{if(!a())return;let k={foreignId:e,events:[{event:g,properties:C}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(k)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:h,trackEventForUser:d}}import{v4 as rp}from"uuid";import He,{useEffect as Za,useState as Ra}from"react";import Me,{useEffect as Dl}from"react";import fo from"styled-components";import El from"react";import Al from"styled-components";var Or="fr-",Gt="cfr-";function l(e,t){let o=`${Or}${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+" "+Gt+e}return o}function v(e){if(!e.className||e.className.indexOf(Gt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Or)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function jo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Ge(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${jo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function be(...e){return e.filter(Boolean).join(" ")}function qt(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Il=Al.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|
|
@@ -1262,6 +1262,7 @@ ${i=>i.inlineStyles.map(([r,n])=>`.${Gt}${r}.${Gt}${r} { ${Object.entries(n).map
|
|
|
1262
1262
|
font-weight: 600;
|
|
1263
1263
|
font-size: 12px;
|
|
1264
1264
|
line-height: 15px;
|
|
1265
|
+
margin-right: ${e=>e.type==="condensed"?"8px":"0"};
|
|
1265
1266
|
text-align: ${e=>e.type==="condensed"?"left":"right"};
|
|
1266
1267
|
color: ${e=>e.appearance.theme.colorPrimary};
|
|
1267
1268
|
`,Ts=Mo.div`
|