@frigade/react 1.32.43 → 1.32.44

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.d.ts CHANGED
@@ -541,7 +541,7 @@ declare function useOrganization(): {
541
541
  declare function Label({ title, required, appearance, }: {
542
542
  title: string;
543
543
  required: boolean;
544
- appearance: Appearance;
544
+ appearance?: Appearance;
545
545
  }): JSX.Element;
546
546
 
547
547
  declare function TextField({ formInput, customFormTypeProps, onSaveInputData, setFormValidationErrors, inputData, }: FormInputProps): JSX.Element;
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var pl=Object.create;var Fo=Object.defineProperty;var dl=Object.getOwnPropertyDescriptor;var cl=Object.getOwnPropertyNames;var ml=Object.getPrototypeOf,ul=Object.prototype.hasOwnProperty;var fl=(e,t)=>{for(var o in t)Fo(e,o,{get:t[o],enumerable:!0})},br=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of cl(t))!ul.call(e,r)&&r!==o&&Fo(e,r,{get:()=>t[r],enumerable:!(i=dl(t,r))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?pl(ml(e)):{},br(t||!e||!e.__esModule?Fo(o,"default",{value:e,enumerable:!0}):o,e)),gl=e=>br(Fo({},"__esModule",{value:!0}),e);var rp={};fl(rp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>No,FrigadeBanner:()=>tl,FrigadeChecklist:()=>Ko,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>Xs,FrigadeForm:()=>or,FrigadeGuide:()=>Cs,FrigadeHeroChecklist:()=>is,FrigadeNPSSurvey:()=>al,FrigadeProgressBadge:()=>hs,FrigadeProvider:()=>ki,FrigadeSupportWidget:()=>Gs,FrigadeTour:()=>Ls,ProgressRing:()=>It,useFlowOpens:()=>Oe,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>zo,useUser:()=>vo});module.exports=gl(rp);var K=g(require("react")),Ti=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var wr="1.32.43 ";var Le="https://api.frigade.com/v1/public/",Ue="NOT_STARTED_STEP",re="COMPLETED_FLOW",ko="ABORTED_FLOW",Pt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="COMPLETED_STEP",Po="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(J);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":wr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var hl="frigade-last-call-at-",xl="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),no();let i=hl+t,r=xl+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(r);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return no()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(r,o.body)}let n;try{n=await fetch(t,o)}catch(s){return no(s)}return n?n.ok?n:no(n.statusText):no()}}function no(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.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 so=require("react");var Ut=require("react");var Fr=g(require("swr"));var Tr=require("react");function Oe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Tr.useContext)(J);function n(c,u=!1){return e[c]??u}function s(c,u){t(T=>({...T,[c]:u}))}function p(c){t(u=>{let{[c]:T,...F}=u;return{...F}})}function d(c){r.includes(c)||i(u=>[...u,c])}function a(c){return r.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Cl="unknown";function _e(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Oe(),[s,p]=(0,Ut.useState)(!1),d={data:i.map(k=>({flowId:k.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=k=>fetch(k,e).then(C=>{if(C.ok)return C.json();throw new Error("Failed to fetch user flow states")}).catch(C=>(console.log(`Error fetching ${k}: ${C}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,Fr.default)(t&&i&&o?`${Le}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=f==null?void 0:f.data;(0,Ut.useEffect)(()=>{!s&&!c&&F&&p(!0)},[F,s,c]);async function y(k){if(F){let C=F.find(m=>m.flowId===k);C&&C.flowState!==re&&(C.flowState=re),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function x(k,C,m){if(F){let S=F.find(v=>v.flowId===k);S&&(S.stepStates[C]=m,S.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function A(k,C,m){if(F){let S=F.find(v=>v.flowId===k);S&&(S.lastStepId=C,S.stepStates[C]=m,S.flowState=Pt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function b(k){if(F){let C=F.find(m=>m.flowId===k);C&&C.flowState!==je&&(C.flowState=je,C.lastStepId=Cl,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=Ue,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(k))}}async function I(k,C){if(F){let m=F.find(S=>S.flowId===k);m&&m.stepStates[C]!==Ue&&(m.stepStates[C]=Ue),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:b,optimisticallyMarkStepCompleted:x,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:A,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=_e(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,so.useContext)(J),[p,d]=(0,so.useState)(new Set),[a,f]=(0,so.useState)(new Set),c=$t();function u(y){let x=JSON.stringify(y);if(p.has(x))return null;p.add(x),d(p),a.add(y),f(a);let A=n==null?void 0:n.find(b=>b.flowSlug===y.flowSlug&&b.stepId===y.stepId&&b.actionType===y.actionType&&b.createdAt===y.createdAt);return c(`${Le}flowResponses`,{...e,method:"POST",body:x}).then(b=>{b.status!==200&&b.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...i,y])):A||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||y.actionType===je?await u(y):y.actionType===re?await u(y):y.actionType===Po?await u(y):y.actionType===Ge?await u(y):y.actionType===ko?await u(y):y.actionType===Ue&&await u(y))}function F(){let y=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let A in x.stepStates){let b=x.stepStates[A];y.push({foreignUserId:x.foreignUserId,flowSlug:x.flowId,stepId:b.stepId,actionType:b.actionType,data:{},createdAt:new Date(b.createdAt),blocked:b.blocked,hidden:b.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Pr=g(require("swr"));var Sl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,kr=e=>{let t=Sl.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=yl(i,"'","");n.startsWith("flow_")&&(o=n)}),o},yl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=Je(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,We.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:T,getFlowResponses:F}=_t(),y=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:x,isLoadingUserFlowStateData:A,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=_e(),{data:S,error:v,isLoading:M}=(0,Pr.default)(r?`${Le}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(v){console.error(v);return}S&&S.data&&(S.data=o(S.data))},[S,v]);function W(h){if(M)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!A&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(h){var G;if(!W(h))return[];let w=W(h).data;return w?(w=N(w),(((G=JSON.parse(w))==null?void 0:G.data)??[]).map(ye=>{let j=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&z(h,ye.id,{skipped:!0})},...ye,complete:D(h,ye.id)===Ge||j>=1,blocked:le(h,ye.id),hidden:Pe(h,ye.id),handlePrimaryButtonClick:()=>{(!ye.completionCriteria&&(ye.autoMarkCompleted||ye.autoMarkCompleted===void 0)||ye.completionCriteria&&ye.autoMarkCompleted===!0)&&z(h,ye.id)},progress:j}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function V(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function L(h,w){s(E=>({...E,[h]:w}))}function $(h){!A&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{L(w,h[w])})}let de=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Po,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await m(h,w,G),T(G))},[i,x]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ue,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await C(h,w),T(G))},[i,x]),z=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await k(h,w,G),T(G))},[i,x]),ke=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===je)return;let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),q(E)&&T(E)},[i,x]),Ne=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:Pt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&T(E)},[i,x]),H=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:re,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await b(h),T(E))},[i,x]),fe=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ko,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await b(h),T(E))},[i,x]);function q(h){var w;if(!x&&h.actionType===Ue)return!1;if(x){let E=x.find(G=>G.flowId===h.flowSlug);if(h.actionType===Ue&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ue)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===re&&h.actionType===re)return!1}return!0}function D(h,w){let E=ve(h,w);return A?null:E?E.actionType:Ue}function le(h,w){let E=ve(h,w);return E?E.blocked:!1}function Pe(h,w){let E=ve(h,w);return E?E.hidden:!1}function ve(h,w){if(A)return null;let E=x==null?void 0:x.find(G=>G.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function X(h){var E;if(A||!x)return null;if(te(h)===je)return _(h)[0]??null;let w=(E=x.find(G=>G.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(G=>G.id===w):null}function Se(h){let w=X(h);if(!w)return 0;let E=_(h).findIndex(G=>G.id===w.id)??0;return D(h,w.id)===Ge&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=kr(h.completionCriteria);if(w===null)return;let E=lt(w),G=at(w);return G===0?void 0:E/G}function te(h){let w=x==null?void 0:x.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(G=>D(h,G.id)===Ge).length}function at(h){return _(h).length}function oe(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(A)return!0;if(h!=null&&h.targetingLogic&&x){let w=x.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function Ft(h){return!Ee(W(h))}return{getFlow:W,getFlowData:oe,isLoading:A||M,getStepStatus:D,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:de,markStepCompleted:z,markFlowNotStarted:ke,markFlowStarted:Ne,markFlowCompleted:H,markFlowAborted:fe,markStepNotStarted:ne,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:L,updateCustomVariables:$,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:V,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var Wt="guest_";function vo(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,vt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=_e(),p=$t(),{verifySDKInitiated:d}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Le}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let a=(0,vt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Le}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(T=>({...T,...c})),s()},[e,n,r,s]),f=(0,vt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Le}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var bi=require("uuid");var Be=g(require("react"));var ze=g(require("react")),po=g(require("styled-components"));var Ar=g(require("react")),Ir=g(require("styled-components"));var vr="fr-",lo="cfr-";function l(e,t){let o=`${vr}${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+" "+lo+e}return o}function P(e){if(!e.className||e.className.indexOf(lo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(vr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Xo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Et(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Xo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ae(...e){return e.filter(Boolean).join(" ")}function Er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bl=Ir.default.div`
2
+ var pl=Object.create;var Fo=Object.defineProperty;var dl=Object.getOwnPropertyDescriptor;var cl=Object.getOwnPropertyNames;var ml=Object.getPrototypeOf,ul=Object.prototype.hasOwnProperty;var fl=(e,t)=>{for(var o in t)Fo(e,o,{get:t[o],enumerable:!0})},br=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of cl(t))!ul.call(e,r)&&r!==o&&Fo(e,r,{get:()=>t[r],enumerable:!(i=dl(t,r))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?pl(ml(e)):{},br(t||!e||!e.__esModule?Fo(o,"default",{value:e,enumerable:!0}):o,e)),gl=e=>br(Fo({},"__esModule",{value:!0}),e);var rp={};fl(rp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>No,FrigadeBanner:()=>tl,FrigadeChecklist:()=>Ko,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>Xs,FrigadeForm:()=>or,FrigadeGuide:()=>Cs,FrigadeHeroChecklist:()=>is,FrigadeNPSSurvey:()=>al,FrigadeProgressBadge:()=>hs,FrigadeProvider:()=>ki,FrigadeSupportWidget:()=>Gs,FrigadeTour:()=>Ls,ProgressRing:()=>It,useFlowOpens:()=>Oe,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>zo,useUser:()=>vo});module.exports=gl(rp);var K=g(require("react")),Ti=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var wr="1.32.44 ";var Le="https://api.frigade.com/v1/public/",Ue="NOT_STARTED_STEP",re="COMPLETED_FLOW",ko="ABORTED_FLOW",Pt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="COMPLETED_STEP",Po="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(J);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":wr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var hl="frigade-last-call-at-",xl="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),no();let i=hl+t,r=xl+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(r);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return no()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(r,o.body)}let n;try{n=await fetch(t,o)}catch(s){return no(s)}return n?n.ok?n:no(n.statusText):no()}}function no(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.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 so=require("react");var Ut=require("react");var Fr=g(require("swr"));var Tr=require("react");function Oe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Tr.useContext)(J);function n(c,u=!1){return e[c]??u}function s(c,u){t(T=>({...T,[c]:u}))}function p(c){t(u=>{let{[c]:T,...F}=u;return{...F}})}function d(c){r.includes(c)||i(u=>[...u,c])}function a(c){return r.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Cl="unknown";function _e(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Oe(),[s,p]=(0,Ut.useState)(!1),d={data:i.map(k=>({flowId:k.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=k=>fetch(k,e).then(C=>{if(C.ok)return C.json();throw new Error("Failed to fetch user flow states")}).catch(C=>(console.log(`Error fetching ${k}: ${C}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,Fr.default)(t&&i&&o?`${Le}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=f==null?void 0:f.data;(0,Ut.useEffect)(()=>{!s&&!c&&F&&p(!0)},[F,s,c]);async function y(k){if(F){let C=F.find(m=>m.flowId===k);C&&C.flowState!==re&&(C.flowState=re),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function x(k,C,m){if(F){let S=F.find(v=>v.flowId===k);S&&(S.stepStates[C]=m,S.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function A(k,C,m){if(F){let S=F.find(v=>v.flowId===k);S&&(S.lastStepId=C,S.stepStates[C]=m,S.flowState=Pt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function b(k){if(F){let C=F.find(m=>m.flowId===k);C&&C.flowState!==je&&(C.flowState=je,C.lastStepId=Cl,Object.keys(C.stepStates).forEach(m=>{C.stepStates[m].actionType=Ue,C.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(k))}}async function I(k,C){if(F){let m=F.find(S=>S.flowId===k);m&&m.stepStates[C]!==Ue&&(m.stepStates[C]=Ue),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:b,optimisticallyMarkStepCompleted:x,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:A,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=_e(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,so.useContext)(J),[p,d]=(0,so.useState)(new Set),[a,f]=(0,so.useState)(new Set),c=$t();function u(y){let x=JSON.stringify(y);if(p.has(x))return null;p.add(x),d(p),a.add(y),f(a);let A=n==null?void 0:n.find(b=>b.flowSlug===y.flowSlug&&b.stepId===y.stepId&&b.actionType===y.actionType&&b.createdAt===y.createdAt);return c(`${Le}flowResponses`,{...e,method:"POST",body:x}).then(b=>{b.status!==200&&b.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...i,y])):A||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||y.actionType===je?await u(y):y.actionType===re?await u(y):y.actionType===Po?await u(y):y.actionType===Ge?await u(y):y.actionType===ko?await u(y):y.actionType===Ue&&await u(y))}function F(){let y=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let A in x.stepStates){let b=x.stepStates[A];y.push({foreignUserId:x.foreignUserId,flowSlug:x.flowId,stepId:b.stepId,actionType:b.actionType,data:{},createdAt:new Date(b.createdAt),blocked:b.blocked,hidden:b.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Pr=g(require("swr"));var Sl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,kr=e=>{let t=Sl.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=yl(i,"'","");n.startsWith("flow_")&&(o=n)}),o},yl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=Je(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,We.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:T,getFlowResponses:F}=_t(),y=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:x,isLoadingUserFlowStateData:A,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:m}=_e(),{data:S,error:v,isLoading:M}=(0,Pr.default)(r?`${Le}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(v){console.error(v);return}S&&S.data&&(S.data=o(S.data))},[S,v]);function W(h){if(M)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!A&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(h){var G;if(!W(h))return[];let w=W(h).data;return w?(w=N(w),(((G=JSON.parse(w))==null?void 0:G.data)??[]).map(ye=>{let j=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&z(h,ye.id,{skipped:!0})},...ye,complete:D(h,ye.id)===Ge||j>=1,blocked:le(h,ye.id),hidden:Pe(h,ye.id),handlePrimaryButtonClick:()=>{(!ye.completionCriteria&&(ye.autoMarkCompleted||ye.autoMarkCompleted===void 0)||ye.completionCriteria&&ye.autoMarkCompleted===!0)&&z(h,ye.id)},progress:j}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function V(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function L(h,w){s(E=>({...E,[h]:w}))}function $(h){!A&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{L(w,h[w])})}let de=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Po,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await m(h,w,G),T(G))},[i,x]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ue,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await C(h,w),T(G))},[i,x]),z=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await k(h,w,G),T(G))},[i,x]),ke=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===je)return;let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),q(E)&&T(E)},[i,x]),Ne=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:Pt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&T(E)},[i,x]),H=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:re,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await b(h),T(E))},[i,x]),fe=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ko,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await b(h),T(E))},[i,x]);function q(h){var w;if(!x&&h.actionType===Ue)return!1;if(x){let E=x.find(G=>G.flowId===h.flowSlug);if(h.actionType===Ue&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ue)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===re&&h.actionType===re)return!1}return!0}function D(h,w){let E=ve(h,w);return A?null:E?E.actionType:Ue}function le(h,w){let E=ve(h,w);return E?E.blocked:!1}function Pe(h,w){let E=ve(h,w);return E?E.hidden:!1}function ve(h,w){if(A)return null;let E=x==null?void 0:x.find(G=>G.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function X(h){var E;if(A||!x)return null;if(te(h)===je)return _(h)[0]??null;let w=(E=x.find(G=>G.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(G=>G.id===w):null}function Se(h){let w=X(h);if(!w)return 0;let E=_(h).findIndex(G=>G.id===w.id)??0;return D(h,w.id)===Ge&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=kr(h.completionCriteria);if(w===null)return;let E=lt(w),G=at(w);return G===0?void 0:E/G}function te(h){let w=x==null?void 0:x.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(G=>D(h,G.id)===Ge).length}function at(h){return _(h).length}function oe(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(A)return!0;if(h!=null&&h.targetingLogic&&x){let w=x.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function Ft(h){return!Ee(W(h))}return{getFlow:W,getFlowData:oe,isLoading:A||M,getStepStatus:D,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:de,markStepCompleted:z,markFlowNotStarted:ke,markFlowStarted:Ne,markFlowCompleted:H,markFlowAborted:fe,markStepNotStarted:ne,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:L,updateCustomVariables:$,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:V,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var Wt="guest_";function vo(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,vt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=_e(),p=$t(),{verifySDKInitiated:d}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Le}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,r,t]);let a=(0,vt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Le}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(T=>({...T,...c})),s()},[e,n,r,s]),f=(0,vt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Le}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var bi=require("uuid");var Be=g(require("react"));var ze=g(require("react")),po=g(require("styled-components"));var Ar=g(require("react")),Ir=g(require("styled-components"));var vr="fr-",lo="cfr-";function l(e,t){let o=`${vr}${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+" "+lo+e}return o}function P(e){if(!e.className||e.className.indexOf(lo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(vr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Xo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Et(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Xo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ae(...e){return e.filter(Boolean).join(" ")}function Er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bl=Ir.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;