@frigade/react 1.32.35 → 1.32.36

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/README.md CHANGED
@@ -50,7 +50,7 @@ Frigade supports a series of use cases such as:
50
50
 
51
51
  **Component Library**
52
52
 
53
- Unstyled, ready-made components for building high‑quality user onboarding, faster. Onboarding checklists, tooltips, product walkthroughs, and much more. [See components](<https://frigade.com/components)>)
53
+ Unstyled, ready-made components for building high‑quality user onboarding, faster. Onboarding checklists, tooltips, product walkthroughs, and much more. [See components](https://frigade.com/components)
54
54
 
55
55
  **Integrations**
56
56
 
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var sl=Object.create;var To=Object.defineProperty;var ll=Object.getOwnPropertyDescriptor;var al=Object.getOwnPropertyNames;var pl=Object.getPrototypeOf,dl=Object.prototype.hasOwnProperty;var cl=(e,t)=>{for(var o in t)To(e,o,{get:t[o],enumerable:!0})},Sr=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of al(t))!dl.call(e,r)&&r!==o&&To(e,r,{get:()=>t[r],enumerable:!(n=ll(t,r))||n.enumerable});return e};var h=(e,t,o)=>(o=e!=null?sl(pl(e)):{},Sr(t||!e||!e.__esModule?To(o,"default",{value:e,enumerable:!0}):o,e)),ml=e=>Sr(To({},"__esModule",{value:!0}),e);var Qa={};cl(Qa,{CheckBox:()=>ut,FormLabel:()=>st,FrigadeBanner:()=>Zs,FrigadeChecklist:()=>Go,FrigadeEmbeddedTip:()=>Ks,FrigadeForm:()=>er,FrigadeGuide:()=>gs,FrigadeHeroChecklist:()=>ts,FrigadeNPSSurvey:()=>nl,FrigadeProgressBadge:()=>us,FrigadeProvider:()=>wi,FrigadeSupportWidget:()=>zs,FrigadeTour:()=>As,ProgressRing:()=>vt,useFlowOpens:()=>Ee,useFlowResponses:()=>Mt,useFlows:()=>Q,useOrganization:()=>Uo,useUser:()=>vo});module.exports=ml(Qa);var q=h(require("react")),yi=require("styled-components");var me=h(require("react"));var Ue=require("react");var Lt=h(require("react"));var yr="1.32.35 ";var ve="https://api.frigade.com/v1/public/",$e="NOT_STARTED_STEP",re="COMPLETED_FLOW",ko="ABORTED_FLOW",wt="STARTED_FLOW",We="NOT_STARTED_FLOW",ze="COMPLETED_STEP",Po="STARTED_STEP";function qe(){let{publicApiKey:e,userId:t}=Lt.default.useContext(J);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":yr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function Ot(){let{shouldGracefullyDegrade:e}=Lt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),Fo();let n;try{n=await fetch(t,o)}catch(r){return Fo(r)}return n?n.ok?n:Fo(n.statusText):Fo()}}function Fo(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Dt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(J);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}}var no=require("react");var $t=require("react");var wr=h(require("swr"));var br=require("react");function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:n,completedFlowsToKeepOpenDuringSession:r}=(0,br.useContext)(J);function i(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){r.includes(c)||n(u=>[...u,c])}function a(c){return r.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:i,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var ul="unknown";function Me(){let{config:e}=qe(),{publicApiKey:t,userId:o,flows:n,setShouldGracefullyDegrade:r}=(0,$t.useContext)(J),{resetOpenFlowState:i}=Ee(),[s,p]=(0,$t.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=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:f,isLoading:c,mutate:u,error:w}=(0,wr.default)(t&&n&&o?`${ve}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=f==null?void 0:f.data;(0,$t.useEffect)(()=>{!s&&!c&&T&&p(!0)},[T,s,c]);async function y(P){if(T){let C=T.find(m=>m.flowId===P);C&&C.flowState!==re&&(C.flowState=re),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function g(P,C,m){if(T){let S=T.find(E=>E.flowId===P);S&&(S.stepStates[C]=m,S.flowState=wt),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function v(P,C,m){if(T){let S=T.find(E=>E.flowId===P);S&&(S.lastStepId=C,S.stepStates[C]=m,S.flowState=wt),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function F(P){if(T){let C=T.find(m=>m.flowId===P);C&&C.flowState!==We&&(C.flowState=We,C.lastStepId=ul,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=$e,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1}),i(P))}}async function A(P,C){if(T){let m=T.find(S=>S.flowId===P);m&&m.stepStates[C]!==$e&&(m.stepStates[C]=$e),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:g,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:v,error:w}}function Mt(){let{config:e}=qe(),{userFlowStatesData:t,mutateUserFlowState:o}=Me(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:i,setFlowResponses:s}=(0,no.useContext)(J),[p,d]=(0,no.useState)(new Set),[a,f]=(0,no.useState)(new Set),c=Ot();function u(y){let g=JSON.stringify(y);if(p.has(g))return null;p.add(g),d(p),a.add(y),f(a);let v=i==null?void 0:i.find(F=>F.flowSlug===y.flowSlug&&F.stepId===y.stepId&&F.actionType===y.actionType&&F.createdAt===y.createdAt);return c(`${ve}flowResponses`,{...e,method:"POST",body:g}).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...n,y])):v||s(A=>[...A??[],y])})}async function w(y){y.foreignUserId&&(y.actionType===wt||y.actionType===We?await u(y):y.actionType===re?await u(y):y.actionType===Po?await u(y):y.actionType===ze?await u(y):y.actionType===ko?await u(y):y.actionType===$e&&await u(y))}function T(){let y=[];return t==null||t.forEach(g=>{if(g&&g.stepStates&&Object.keys(g.stepStates).length!==0)for(let v in g.stepStates){let F=g.stepStates[v];y.push({foreignUserId:g.foreignUserId,flowSlug:g.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...y,...i]}return{addResponse:w,setFlowResponses:s,getFlowResponses:T}}var Fr=h(require("swr"));var fl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Tr=e=>{let t=fl.exec(e);if(t===null)return null;let o=null;return t.forEach((n,r)=>{let i=gl(n,"'","");i.startsWith("flow_")&&(o=i)}),o},gl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=qe(),{flows:t,setFlows:o,userId:n,publicApiKey:r,customVariables:i,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,Ue.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Dt(),{addResponse:w,getFlowResponses:T}=Mt(),y=x=>fetch(x,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${x} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(b=>(console.log(`Error fetching ${x}: ${b}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:g,isLoadingUserFlowStateData:v,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=Me(),{data:S,error:E,isLoading:U}=(0,Fr.default)(r?`${ve}flows`:null,y,{keepPreviousData:!0});(0,Ue.useEffect)(()=>{if(E){console.error(E);return}S&&S.data&&(S.data=o(S.data))},[S,E]);function M(x){if(U)return null;let b=t.find(B=>B.slug===x);return!b&&t.length>0&&!v&&!U?(console.log(`Flow with slug ${x} not found`),null):(b==null?void 0:b.active)===!1?null:b}function W(x){var V;if(!M(x))return[];let b=M(x).data;return b?(b=N(b),(((V=JSON.parse(b))==null?void 0:V.data)??[]).map(he=>{let j=Ne(he);return{handleSecondaryButtonClick:()=>{he.skippable===!0&&H(x,he.id,{skipped:!0})},...he,complete:O(x,he.id)===ze||j>=1,blocked:X(x,he.id),hidden:Ie(x,he.id),handlePrimaryButtonClick:()=>{(!he.completionCriteria&&(he.autoMarkCompleted||he.autoMarkCompleted===void 0)||he.completionCriteria&&he.autoMarkCompleted===!0)&&H(x,he.id)},progress:j}}).filter(he=>he.hidden!==!0)):[]}function N(x){return x.replace(/\${(.*?)}/g,(b,B)=>i[B]!==void 0?String(i[B]):"")}function G(x){if(!M(x))return[];let b=M(x).data;return b?(b=N(b),JSON.parse(b)??{}):[]}function L(x,b){s(B=>({...B,[x]:b}))}function z(x){!v&&!U&&x&&JSON.stringify(i)!=JSON.stringify({...i,...x})&&Object.keys(x).forEach(b=>{L(b,x[b])})}let ae=(0,Ue.useCallback)(async(x,b,B)=>{u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:Po,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await m(x,b,V),w(V))},[n,g]),ee=(0,Ue.useCallback)(async(x,b,B)=>{u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:$e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await C(x,b),w(V))},[n,g]),H=(0,Ue.useCallback)(async(x,b,B)=>{console.log("markStepCompleted",x,b,B),u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:ze,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await P(x,b,V),w(V))},[n,g]),Ae=(0,Ue.useCallback)(async(x,b)=>{if(u(),ye(x)===We)return;let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:We,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await A(x),pe(B)&&w(B)},[n,g]),we=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:wt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&w(B)},[n,g]),K=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:re,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await F(x),w(B))},[n,g]),$=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:ko,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await F(x),w(B))},[n,g]);function pe(x){var b;if(!g&&x.actionType===$e)return!1;if(g){let B=g.find(V=>V.flowId===x.flowSlug);if(x.actionType===$e&&(!(B!=null&&B.stepStates[x.stepId])||B.stepStates[x.stepId].actionType===$e)||B&&((b=B.stepStates[x.stepId])==null?void 0:b.actionType)===x.actionType)return!1}return!0}function O(x,b){let B=De(x,b);return v?null:B?B.actionType:$e}function X(x,b){let B=De(x,b);return B?B.blocked:!1}function Ie(x,b){let B=De(x,b);return B?B.hidden:!1}function De(x,b){if(v)return null;let B=g==null?void 0:g.find(V=>V.flowId===x);return!B||!B.stepStates[b]?null:B.stepStates[b]??null}function Nt(x){var B;if(v||!g)return null;if(ye(x)===We)return W(x)[0]??null;let b=(B=g.find(V=>V.flowId===x))==null?void 0:B.lastStepId;return b?W(x).find(V=>V.id===b):null}function St(x){let b=Nt(x);if(!b)return 0;let B=W(x).findIndex(V=>V.id===b.id)??0;return O(x,b.id)===ze&&B<W(x).length-1?B+1:B}function Ne(x){if(!x.completionCriteria)return;let b=Tr(x.completionCriteria);if(b===null)return;let B=it(b),V=nt(b);return V===0?void 0:B/V}function ye(x){let b=g==null?void 0:g.find(B=>B.flowId===x);return b?b.flowState:null}function it(x){let b=W(x);return b.length===0?0:b.filter(V=>O(x,V.id)===ze).length}function nt(x){return W(x).length}function te(x){return JSON.parse(t.find(b=>b.slug===x).data)}function Te(x){if(v)return!0;if(x!=null&&x.targetingLogic&&g){let b=g.find(B=>B.flowId===x.slug);if(b)return b.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&n&&n.startsWith("guest_"))}function yt(x){return!Te(M(x))}return{getFlow:M,getFlowData:te,isLoading:v||U,getStepStatus:O,getFlowSteps:W,getCurrentStepIndex:St,markStepStarted:ae,markStepCompleted:H,markFlowNotStarted:Ae,markFlowStarted:we,markFlowCompleted:K,markFlowAborted:$,markStepNotStarted:ee,getFlowStatus:ye,getNumberOfStepsCompleted:it,getNumberOfSteps:nt,targetingLogicShouldHideFlow:Te,setCustomVariable:L,updateCustomVariables:z,customVariables:i,getStepOptionalProgress:Ne,getFlowMetadata:G,isStepBlocked:X,isStepHidden:Ie,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:yt}}var Tt=require("react");var Ut="guest_";function vo(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:n,shouldGracefullyDegrade:r}=(0,Tt.useContext)(J),{config:i}=qe(),{mutateUserFlowState:s}=Me(),p=Ot(),{verifySDKInitiated:d}=Dt();(0,Tt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Ut))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${ve}users`,{...i,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let a=(0,Tt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${ve}users`,{...i,method:"POST",body:JSON.stringify(u)}),n(w=>({...w,...c})),s()},[e,i,r,s]),f=(0,Tt.useCallback)(async(c,u)=>{d();let T={foreignId:e,events:[{event:c,properties:u}]};await p(`${ve}users`,{...i,method:"POST",body:JSON.stringify(T)}),s()},[e,i,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Ci=require("uuid");var Pe=h(require("react"));var _e=h(require("react")),ao=h(require("styled-components"));var vr=h(require("react")),Er=h(require("styled-components"));var kr="fr-",so="cfr-";function l(e,t){let o=`${kr}${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+" "+so+e}return o}function k(e){if(!e.className||e.className.indexOf(so)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(kr)?"":`:not(${o.map(n=>`.${n}`).join(", ")})`}function Ko(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Ft(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ko(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Fe(...e){return e.filter(Boolean).join(" ")}function Pr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var hl=Er.default.div`
2
+ var sl=Object.create;var To=Object.defineProperty;var ll=Object.getOwnPropertyDescriptor;var al=Object.getOwnPropertyNames;var pl=Object.getPrototypeOf,dl=Object.prototype.hasOwnProperty;var cl=(e,t)=>{for(var o in t)To(e,o,{get:t[o],enumerable:!0})},Sr=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of al(t))!dl.call(e,r)&&r!==o&&To(e,r,{get:()=>t[r],enumerable:!(n=ll(t,r))||n.enumerable});return e};var h=(e,t,o)=>(o=e!=null?sl(pl(e)):{},Sr(t||!e||!e.__esModule?To(o,"default",{value:e,enumerable:!0}):o,e)),ml=e=>Sr(To({},"__esModule",{value:!0}),e);var Qa={};cl(Qa,{CheckBox:()=>ut,FormLabel:()=>st,FrigadeBanner:()=>Zs,FrigadeChecklist:()=>Go,FrigadeEmbeddedTip:()=>Ks,FrigadeForm:()=>er,FrigadeGuide:()=>gs,FrigadeHeroChecklist:()=>ts,FrigadeNPSSurvey:()=>nl,FrigadeProgressBadge:()=>us,FrigadeProvider:()=>wi,FrigadeSupportWidget:()=>zs,FrigadeTour:()=>As,ProgressRing:()=>vt,useFlowOpens:()=>Ee,useFlowResponses:()=>Mt,useFlows:()=>Q,useOrganization:()=>Uo,useUser:()=>vo});module.exports=ml(Qa);var q=h(require("react")),yi=require("styled-components");var me=h(require("react"));var Ue=require("react");var Lt=h(require("react"));var yr="1.32.36 ";var ve="https://api.frigade.com/v1/public/",$e="NOT_STARTED_STEP",re="COMPLETED_FLOW",ko="ABORTED_FLOW",wt="STARTED_FLOW",We="NOT_STARTED_FLOW",ze="COMPLETED_STEP",Po="STARTED_STEP";function qe(){let{publicApiKey:e,userId:t}=Lt.default.useContext(J);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":yr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function Ot(){let{shouldGracefullyDegrade:e}=Lt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),Fo();let n;try{n=await fetch(t,o)}catch(r){return Fo(r)}return n?n.ok?n:Fo(n.statusText):Fo()}}function Fo(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Dt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(J);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}}var no=require("react");var $t=require("react");var wr=h(require("swr"));var br=require("react");function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:n,completedFlowsToKeepOpenDuringSession:r}=(0,br.useContext)(J);function i(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){r.includes(c)||n(u=>[...u,c])}function a(c){return r.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:i,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var ul="unknown";function Me(){let{config:e}=qe(),{publicApiKey:t,userId:o,flows:n,setShouldGracefullyDegrade:r}=(0,$t.useContext)(J),{resetOpenFlowState:i}=Ee(),[s,p]=(0,$t.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=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:f,isLoading:c,mutate:u,error:w}=(0,wr.default)(t&&n&&o?`${ve}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=f==null?void 0:f.data;(0,$t.useEffect)(()=>{!s&&!c&&T&&p(!0)},[T,s,c]);async function y(P){if(T){let C=T.find(m=>m.flowId===P);C&&C.flowState!==re&&(C.flowState=re),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function g(P,C,m){if(T){let S=T.find(E=>E.flowId===P);S&&(S.stepStates[C]=m,S.flowState=wt),await u(Promise.resolve({...f,data:T}),{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function v(P,C,m){if(T){let S=T.find(E=>E.flowId===P);S&&(S.lastStepId=C,S.stepStates[C]=m,S.flowState=wt),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}async function F(P){if(T){let C=T.find(m=>m.flowId===P);C&&C.flowState!==We&&(C.flowState=We,C.lastStepId=ul,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=$e,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1}),i(P))}}async function A(P,C){if(T){let m=T.find(S=>S.flowId===P);m&&m.stepStates[C]!==$e&&(m.stepStates[C]=$e),await u({...f,data:T},{optimisticData:{...f,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:g,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:v,error:w}}function Mt(){let{config:e}=qe(),{userFlowStatesData:t,mutateUserFlowState:o}=Me(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:i,setFlowResponses:s}=(0,no.useContext)(J),[p,d]=(0,no.useState)(new Set),[a,f]=(0,no.useState)(new Set),c=Ot();function u(y){let g=JSON.stringify(y);if(p.has(g))return null;p.add(g),d(p),a.add(y),f(a);let v=i==null?void 0:i.find(F=>F.flowSlug===y.flowSlug&&F.stepId===y.stepId&&F.actionType===y.actionType&&F.createdAt===y.createdAt);return c(`${ve}flowResponses`,{...e,method:"POST",body:g}).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...n,y])):v||s(A=>[...A??[],y])})}async function w(y){y.foreignUserId&&(y.actionType===wt||y.actionType===We?await u(y):y.actionType===re?await u(y):y.actionType===Po?await u(y):y.actionType===ze?await u(y):y.actionType===ko?await u(y):y.actionType===$e&&await u(y))}function T(){let y=[];return t==null||t.forEach(g=>{if(g&&g.stepStates&&Object.keys(g.stepStates).length!==0)for(let v in g.stepStates){let F=g.stepStates[v];y.push({foreignUserId:g.foreignUserId,flowSlug:g.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...y,...i]}return{addResponse:w,setFlowResponses:s,getFlowResponses:T}}var Fr=h(require("swr"));var fl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Tr=e=>{let t=fl.exec(e);if(t===null)return null;let o=null;return t.forEach((n,r)=>{let i=gl(n,"'","");i.startsWith("flow_")&&(o=i)}),o},gl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=qe(),{flows:t,setFlows:o,userId:n,publicApiKey:r,customVariables:i,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,Ue.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Dt(),{addResponse:w,getFlowResponses:T}=Mt(),y=x=>fetch(x,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${x} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(b=>(console.log(`Error fetching ${x}: ${b}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:g,isLoadingUserFlowStateData:v,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=Me(),{data:S,error:E,isLoading:U}=(0,Fr.default)(r?`${ve}flows`:null,y,{keepPreviousData:!0});(0,Ue.useEffect)(()=>{if(E){console.error(E);return}S&&S.data&&(S.data=o(S.data))},[S,E]);function M(x){if(U)return null;let b=t.find(B=>B.slug===x);return!b&&t.length>0&&!v&&!U?(console.log(`Flow with slug ${x} not found`),null):(b==null?void 0:b.active)===!1?null:b}function W(x){var V;if(!M(x))return[];let b=M(x).data;return b?(b=N(b),(((V=JSON.parse(b))==null?void 0:V.data)??[]).map(he=>{let j=Ne(he);return{handleSecondaryButtonClick:()=>{he.skippable===!0&&H(x,he.id,{skipped:!0})},...he,complete:O(x,he.id)===ze||j>=1,blocked:X(x,he.id),hidden:Ie(x,he.id),handlePrimaryButtonClick:()=>{(!he.completionCriteria&&(he.autoMarkCompleted||he.autoMarkCompleted===void 0)||he.completionCriteria&&he.autoMarkCompleted===!0)&&H(x,he.id)},progress:j}}).filter(he=>he.hidden!==!0)):[]}function N(x){return x.replace(/\${(.*?)}/g,(b,B)=>i[B]!==void 0?String(i[B]):"")}function G(x){if(!M(x))return[];let b=M(x).data;return b?(b=N(b),JSON.parse(b)??{}):[]}function L(x,b){s(B=>({...B,[x]:b}))}function z(x){!v&&!U&&x&&JSON.stringify(i)!=JSON.stringify({...i,...x})&&Object.keys(x).forEach(b=>{L(b,x[b])})}let ae=(0,Ue.useCallback)(async(x,b,B)=>{u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:Po,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await m(x,b,V),w(V))},[n,g]),ee=(0,Ue.useCallback)(async(x,b,B)=>{u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:$e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await C(x,b),w(V))},[n,g]),H=(0,Ue.useCallback)(async(x,b,B)=>{u();let V={foreignUserId:n,flowSlug:x,stepId:b,actionType:ze,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(V)&&(await P(x,b,V),w(V))},[n,g]),Ae=(0,Ue.useCallback)(async(x,b)=>{if(u(),ye(x)===We)return;let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:We,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await A(x),pe(B)&&w(B)},[n,g]),we=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:wt,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&w(B)},[n,g]),K=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:re,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await F(x),w(B))},[n,g]),$=(0,Ue.useCallback)(async(x,b)=>{u();let B={foreignUserId:n,flowSlug:x,stepId:"unknown",actionType:ko,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await F(x),w(B))},[n,g]);function pe(x){var b;if(!g&&x.actionType===$e)return!1;if(g){let B=g.find(V=>V.flowId===x.flowSlug);if(x.actionType===$e&&(!(B!=null&&B.stepStates[x.stepId])||B.stepStates[x.stepId].actionType===$e)||B&&((b=B.stepStates[x.stepId])==null?void 0:b.actionType)===x.actionType)return!1}return!0}function O(x,b){let B=De(x,b);return v?null:B?B.actionType:$e}function X(x,b){let B=De(x,b);return B?B.blocked:!1}function Ie(x,b){let B=De(x,b);return B?B.hidden:!1}function De(x,b){if(v)return null;let B=g==null?void 0:g.find(V=>V.flowId===x);return!B||!B.stepStates[b]?null:B.stepStates[b]??null}function Nt(x){var B;if(v||!g)return null;if(ye(x)===We)return W(x)[0]??null;let b=(B=g.find(V=>V.flowId===x))==null?void 0:B.lastStepId;return b?W(x).find(V=>V.id===b):null}function St(x){let b=Nt(x);if(!b)return 0;let B=W(x).findIndex(V=>V.id===b.id)??0;return O(x,b.id)===ze&&B<W(x).length-1?B+1:B}function Ne(x){if(!x.completionCriteria)return;let b=Tr(x.completionCriteria);if(b===null)return;let B=it(b),V=nt(b);return V===0?void 0:B/V}function ye(x){let b=g==null?void 0:g.find(B=>B.flowId===x);return b?b.flowState:null}function it(x){let b=W(x);return b.length===0?0:b.filter(V=>O(x,V.id)===ze).length}function nt(x){return W(x).length}function te(x){return JSON.parse(t.find(b=>b.slug===x).data)}function Te(x){if(v)return!0;if(x!=null&&x.targetingLogic&&g){let b=g.find(B=>B.flowId===x.slug);if(b)return b.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&n&&n.startsWith("guest_"))}function yt(x){return!Te(M(x))}return{getFlow:M,getFlowData:te,isLoading:v||U,getStepStatus:O,getFlowSteps:W,getCurrentStepIndex:St,markStepStarted:ae,markStepCompleted:H,markFlowNotStarted:Ae,markFlowStarted:we,markFlowCompleted:K,markFlowAborted:$,markStepNotStarted:ee,getFlowStatus:ye,getNumberOfStepsCompleted:it,getNumberOfSteps:nt,targetingLogicShouldHideFlow:Te,setCustomVariable:L,updateCustomVariables:z,customVariables:i,getStepOptionalProgress:Ne,getFlowMetadata:G,isStepBlocked:X,isStepHidden:Ie,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:yt}}var Tt=require("react");var Ut="guest_";function vo(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:n,shouldGracefullyDegrade:r}=(0,Tt.useContext)(J),{config:i}=qe(),{mutateUserFlowState:s}=Me(),p=Ot(),{verifySDKInitiated:d}=Dt();(0,Tt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Ut))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${ve}users`,{...i,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let a=(0,Tt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${ve}users`,{...i,method:"POST",body:JSON.stringify(u)}),n(w=>({...w,...c})),s()},[e,i,r,s]),f=(0,Tt.useCallback)(async(c,u)=>{d();let T={foreignId:e,events:[{event:c,properties:u}]};await p(`${ve}users`,{...i,method:"POST",body:JSON.stringify(T)}),s()},[e,i,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Ci=require("uuid");var Pe=h(require("react"));var _e=h(require("react")),ao=h(require("styled-components"));var vr=h(require("react")),Er=h(require("styled-components"));var kr="fr-",so="cfr-";function l(e,t){let o=`${kr}${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+" "+so+e}return o}function k(e){if(!e.className||e.className.indexOf(so)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(kr)?"":`:not(${o.map(n=>`.${n}`).join(", ")})`}function Ko(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Ft(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ko(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Fe(...e){return e.filter(Boolean).join(" ")}function Pr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var hl=Er.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;