@frigade/react 1.32.83 → 1.32.84

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var yl=Object.create;var Fo=Object.defineProperty;var bl=Object.getOwnPropertyDescriptor;var wl=Object.getOwnPropertyNames;var Tl=Object.getPrototypeOf,Fl=Object.prototype.hasOwnProperty;var kl=(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 wl(t))!Fl.call(e,r)&&r!==o&&Fo(e,r,{get:()=>t[r],enumerable:!(i=bl(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?yl(Tl(e)):{},Br(t||!e||!e.__esModule?Fo(o,"default",{value:e,enumerable:!0}):o,e)),Pl=e=>Br(Fo({},"__esModule",{value:!0}),e);var xp={};kl(xp,{CheckBox:()=>Re,FormLabel:()=>ct,FormTextField:()=>$o,FrigadeBanner:()=>ml,FrigadeChecklist:()=>Qo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>sl,FrigadeForm:()=>dr,FrigadeGuide:()=>Ms,FrigadeHeroChecklist:()=>Ts,FrigadeNPSSurvey:()=>Sl,FrigadeProgressBadge:()=>Ds,FrigadeProvider:()=>ji,FrigadeSupportWidget:()=>tl,FrigadeTour:()=>js,ProgressRing:()=>Et,useFlowOpens:()=>Ie,useFlowResponses:()=>_t,useFlows:()=>R,useOrganization:()=>jo,useUser:()=>Wt});module.exports=Pl(xp);var Y=u(require("react")),Wi=require("styled-components");var he=u(require("react"));var We=require("react");var kt=u(require("react"));var Ar="1.32.83 ";var _e="NOT_STARTED_STEP",ie="COMPLETED_FLOW",ko="ABORTED_FLOW",Pt="STARTED_FLOW",He="NOT_STARTED_FLOW",Ve="COMPLETED_STEP",Po="STARTED_STEP";function Xe(){let{publicApiKey:e,userId:t,apiUrl:o}=kt.default.useContext(K);return{config:(0,kt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Ar,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,kt.useMemo)(()=>`${o}/v1/public/`,[o])}}var vl="frigade-last-call-at-",El="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e,readonly:t}=kt.default.useContext(K);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Dt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Dt();let r=vl+o,n=El+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),d=window.localStorage.getItem(n);if(p&&d&&d==i.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Dt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Dt(p)}return s?s.ok?s:Dt(s.statusText):Dt()}}function Dt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=kt.default.useContext(K);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}var no=require("react");var Ut=require("react");var Nr=u(require("swr"));var Ir=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Ir.useContext)(K);function n(c,x=!1){return e[c]??x}function s(c,x){t(g=>({...g,[c]:x}))}function p(c){t(x=>{let{[c]:g,...E}=x;return{...E}})}function d(c){r.includes(c)||i(x=>[...x,c])}function a(c){return r.includes(c)}function y(c){return Object.entries(e).some(([x,g])=>g&&x!=c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:y,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Bl="unknown";function ze(){let{config:e,apiUrl:t}=Xe(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Ut.useContext)(K),{resetOpenFlowState:d}=Ie(),[a,y]=(0,Ut.useState)(!1),c={data:n.map(C=>({flowId:C.id,flowState:ie,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=C=>fetch(C,e).then(h=>{if(h.ok)return h.json();throw new Error("Failed to fetch user flow states")}).catch(h=>(console.log(`Error fetching ${C}: ${h}. Will gracefully degrade and hide Frigade`),s(!0),c)),{data:g,isLoading:E,mutate:k,error:S}=(0,Nr.default)(o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,x,{revalidateOnFocus:p!==!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),b=g==null?void 0:g.data;(0,Ut.useEffect)(()=>{!a&&!E&&b&&y(!0)},[b,a,E]);async function F(C){if(b&&!p){let h=b.find(L=>L.flowId===C);h&&h.flowState!==ie&&(h.flowState=ie),await k(Promise.resolve({...g,data:b}),{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function P(C,h,L){if(b){let M=b.find(H=>H.flowId===C);M&&(M.stepStates[h]=L,M.flowState=Pt),await k(Promise.resolve({...g,data:b}),{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function N(C,h,L){if(b){let M=b.find(H=>H.flowId===C);M&&(M.lastStepId=h,M.stepStates[h]=L,M.flowState=Pt),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function w(C){if(b){let h=b.find(L=>L.flowId===C);h&&h.flowState!==He&&(h.flowState=He,h.lastStepId=Bl,Object.keys(h.stepStates).forEach(L=>{h.stepStates[L].actionType=_e,h.stepStates[L].createdAt=new Date().toISOString()}),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1}),d(C))}}async function m(C,h){if(b){let L=b.find(M=>M.flowId===C);L&&L.stepStates[h]!==_e&&(L.stepStates[h]=_e),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:b,isLoadingUserFlowStateData:!a,mutateUserFlowState:k,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:w,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:m,optimisticallyMarkStepStarted:N,error:S}}function _t(){let{config:e,apiUrl:t}=Xe(),{userFlowStatesData:o,mutateUserFlowState:i}=ze(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,no.useContext)(K),[d,a]=(0,no.useState)(new Set),[y,c]=(0,no.useState)(new Set),x=$t();function g(S){let b=JSON.stringify(S);if(d.has(b))return null;d.add(b),a(d),y.add(S),c(y);let F=s==null?void 0:s.find(P=>P.flowSlug===S.flowSlug&&P.stepId===S.stepId&&P.actionType===S.actionType&&P.createdAt===S.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:b}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),n([...r,S])):F||p(N=>[...N??[],S])})}async function E(S){S.foreignUserId&&(S.actionType===Pt||S.actionType===He?await g(S):S.actionType===ie?await g(S):S.actionType===Po?await g(S):S.actionType===Ve?await g(S):S.actionType===ko?await g(S):S.actionType===_e&&await g(S))}function k(){let S=[];return o==null||o.forEach(b=>{if(b&&b.stepStates&&Object.keys(b.stepStates).length!==0)for(let F in b.stepStates){let P=b.stepStates[F];S.push({foreignUserId:b.foreignUserId,flowSlug:b.flowId,stepId:P.stepId,actionType:P.actionType,data:{},createdAt:new Date(P.createdAt),blocked:P.blocked,hidden:P.hidden})}}),[...S,...s]}return{addResponse:E,setFlowResponses:p,getFlowResponses:k}}var Or=u(require("swr"));var Al=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Lr=e=>{let t=Al.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Il(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Il=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e,apiUrl:t}=Xe(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:d,setHasActiveFullPageFlow:a,setFlowResponses:y,setShouldGracefullyDegrade:c,readonly:x}=(0,We.useContext)(K),g={data:[]},{verifySDKInitiated:E}=Mt(),{addResponse:k,getFlowResponses:S}=_t(),b=f=>fetch(f,e).then(T=>T.ok?T.json():(console.log(`Error fetching ${f} (${T.status}): ${T.statusText}. .Will gracefully degrade and hide Frigade`),c(!0),g)).catch(T=>(console.log(`Error fetching ${f}: ${T}. Will gracefully degrade and hide Frigade`),c(!0),g)),{userFlowStatesData:F,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:w,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:h}=ze(),{data:L,error:M,isLoading:H}=(0,Or.default)(n?`${t}flows`:null,b,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(M){console.error(M);return}L&&L.data&&i(L.data)},[L,M]);function O(f){if(H)return null;let T=o.find(B=>B.slug===f);return!T&&o.length>0&&!P&&!H?(console.log(`Flow with slug ${f} not found`),null):(T==null?void 0:T.active)===!1?null:T}function _(f){var A;if(!O(f))return[];let T=O(f).data;return T?(T=j(T),(((A=JSON.parse(T))==null?void 0:A.data)??[]).map(re=>{let Ft=at(re);return{handleSecondaryButtonClick:()=>{re.skippable===!0&&Pe(f,re.id,{skipped:!0})},...re,complete:ge(f,re.id)===Ve||Ft>=1,blocked:z(f,re.id),hidden:$(f,re.id),handlePrimaryButtonClick:()=>{(!re.completionCriteria&&(re.autoMarkCompleted||re.autoMarkCompleted===void 0)||re.completionCriteria&&re.autoMarkCompleted===!0)&&Pe(f,re.id)},progress:Ft}}).filter(re=>re.hidden!==!0)):[]}function j(f){return f.replaceAll(/\${(.*?)}/g,(T,B)=>s[B]===void 0?"":String(s[B]).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 D(f){if(!O(f))return[];let T=O(f).data;return T?(T=j(T),JSON.parse(T)??{}):[]}function ce(f,T){p(B=>({...B,[f]:T}))}function Te(f){!P&&!H&&f&&JSON.stringify(s)!=JSON.stringify({...s,...f})&&Object.keys(f).forEach(T=>{ce(T,f[T])})}let Z=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:Po,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await h(f,T,A),k(A))},[r,F]),G=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:_e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await C(f,T),k(A))},[r,F]),Pe=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:Ve,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await m(f,T,A),k(A))},[r,F]),se=(0,We.useCallback)(async(f,T)=>{if(E(),Ye(f)===He)return;let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:He,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};await w(f),X(B)&&k(B)},[r,F]),J=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:Pt,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&k(B)},[r,F]),ve=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ie,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&(await N(f),k(B))},[r,F]),Oe=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ko,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&(await N(f),k(B))},[r,F]);function X(f){var T;if(!F&&f.actionType===_e)return!1;if(F){let B=F.find(A=>A.flowId===f.flowSlug);if(f.actionType===_e&&(!(B!=null&&B.stepStates[f.stepId])||B.stepStates[f.stepId].actionType===_e)||B&&((T=B.stepStates[f.stepId])==null?void 0:T.actionType)===f.actionType||B&&B.flowState===ie&&f.actionType===ie)return!1}return!0}function ge(f,T){let B=le(f,T);return P?null:B?B.actionType:_e}function z(f,T){let B=le(f,T);return B?B.blocked:!1}function $(f,T){let B=le(f,T);return B?B.hidden:!1}function le(f,T){if(P)return null;let B=F==null?void 0:F.find(A=>A.flowId===f);return!B||!B.stepStates[T]?null:B.stepStates[T]??null}function q(f){var B;if(P||!F)return null;if(Ye(f)===He)return _(f)[0]??null;let T=(B=F.find(A=>A.flowId===f))==null?void 0:B.lastStepId;return T?_(f).find(A=>A.id===T):null}function ae(f){let T=q(f);if(!T)return 0;let B=_(f).findIndex(A=>A.id===T.id)??0;return ge(f,T.id)===Ve&&B<_(f).length-1?B+1:B}function at(f){if(!f.completionCriteria)return;let T=Lr(f.completionCriteria);if(T===null)return;let B=Tt(T),A=V(T);return A===0?void 0:B/A}function Ye(f){let T=F==null?void 0:F.find(B=>B.flowId===f);return T?T.flowState:null}function Tt(f){let T=_(f);return T.length===0?0:T.filter(A=>ge(f,A.id)===Ve).length}function V(f){return _(f).length}function Ue(f){return JSON.parse(o.find(T=>T.slug===f).data)}function Je(f){if(x)return!1;if(P)return!0;if(f!=null&&f.targetingLogic&&F){let T=F.find(B=>B.flowId===f.slug);if(T)return T.shouldTrigger===!1}return!!(f!=null&&f.targetingLogic&&r&&r.startsWith("guest_"))}function Ro(f){return!Je(O(f))}return{getFlow:O,getFlowData:Ue,isLoading:P||H,getStepStatus:ge,getFlowSteps:_,getCurrentStepIndex:ae,markStepStarted:Z,markStepCompleted:Pe,markFlowNotStarted:se,markFlowStarted:J,markFlowCompleted:ve,markFlowAborted:Oe,markStepNotStarted:G,getFlowStatus:Ye,getNumberOfStepsCompleted:Tt,getNumberOfSteps:V,targetingLogicShouldHideFlow:Je,setCustomVariable:ce,updateCustomVariables:Te,customVariables:s,getStepOptionalProgress:at,getFlowMetadata:D,isStepBlocked:z,isStepHidden:$,hasActiveFullPageFlow:d,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Ro}}var vt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,vt.useContext)(K),{config:n,apiUrl:s}=Xe(),{mutateUserFlowState:p}=ze(),d=$t(),{verifySDKInitiated:a}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let x=`frigade-user-registered-${e}`;localStorage.getItem(x)||(d(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(x,"true"))}},[e,r,t]);let y=(0,vt.useCallback)(async x=>{a();let g={foreignId:e,properties:x};await d(`${s}users`,{...n,method:"POST",body:JSON.stringify(g)}),i(E=>({...E,...x})),p()},[e,n,r,p]),c=(0,vt.useCallback)(async(x,g)=>{a();let k={foreignId:e,events:[{event:x,properties:g}]};await d(`${s}users`,{...n,method:"POST",body:JSON.stringify(k)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:y,trackEventForUser:c}}var _i=require("uuid");var Ae=u(require("react"));var Ne=u(require("react")),ao=u(require("styled-components"));var $r=u(require("react")),Mr=u(require("styled-components"));var Dr="fr-",so="cfr-";function l(e,t){let o=`${Dr}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+so+e}return o}function v(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(Dr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function er(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function pt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${er(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ee(...e){return e.filter(Boolean).join(" ")}function lo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Nl=Mr.default.div`
2
+ var yl=Object.create;var Fo=Object.defineProperty;var bl=Object.getOwnPropertyDescriptor;var wl=Object.getOwnPropertyNames;var Tl=Object.getPrototypeOf,Fl=Object.prototype.hasOwnProperty;var kl=(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 wl(t))!Fl.call(e,r)&&r!==o&&Fo(e,r,{get:()=>t[r],enumerable:!(i=bl(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?yl(Tl(e)):{},Br(t||!e||!e.__esModule?Fo(o,"default",{value:e,enumerable:!0}):o,e)),Pl=e=>Br(Fo({},"__esModule",{value:!0}),e);var xp={};kl(xp,{CheckBox:()=>Re,FormLabel:()=>ct,FormTextField:()=>$o,FrigadeBanner:()=>ml,FrigadeChecklist:()=>Qo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>sl,FrigadeForm:()=>dr,FrigadeGuide:()=>Ms,FrigadeHeroChecklist:()=>Ts,FrigadeNPSSurvey:()=>Sl,FrigadeProgressBadge:()=>Ds,FrigadeProvider:()=>ji,FrigadeSupportWidget:()=>tl,FrigadeTour:()=>js,ProgressRing:()=>Et,useFlowOpens:()=>Ie,useFlowResponses:()=>_t,useFlows:()=>R,useOrganization:()=>jo,useUser:()=>Wt});module.exports=Pl(xp);var Y=u(require("react")),Wi=require("styled-components");var he=u(require("react"));var We=require("react");var kt=u(require("react"));var Ar="1.32.84 ";var _e="NOT_STARTED_STEP",ie="COMPLETED_FLOW",ko="ABORTED_FLOW",Pt="STARTED_FLOW",He="NOT_STARTED_FLOW",Ve="COMPLETED_STEP",Po="STARTED_STEP";function Xe(){let{publicApiKey:e,userId:t,apiUrl:o}=kt.default.useContext(K);return{config:(0,kt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Ar,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,kt.useMemo)(()=>`${o}/v1/public/`,[o])}}var vl="frigade-last-call-at-",El="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e,readonly:t}=kt.default.useContext(K);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Dt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Dt();let r=vl+o,n=El+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),d=window.localStorage.getItem(n);if(p&&d&&d==i.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Dt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Dt(p)}return s?s.ok?s:Dt(s.statusText):Dt()}}function Dt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=kt.default.useContext(K);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}var no=require("react");var Ut=require("react");var Nr=u(require("swr"));var Ir=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Ir.useContext)(K);function n(c,x=!1){return e[c]??x}function s(c,x){t(g=>({...g,[c]:x}))}function p(c){t(x=>{let{[c]:g,...E}=x;return{...E}})}function d(c){r.includes(c)||i(x=>[...x,c])}function a(c){return r.includes(c)}function y(c){return Object.entries(e).some(([x,g])=>g&&x!=c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:y,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Bl="unknown";function ze(){let{config:e,apiUrl:t}=Xe(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Ut.useContext)(K),{resetOpenFlowState:d}=Ie(),[a,y]=(0,Ut.useState)(!1),c={data:n.map(C=>({flowId:C.id,flowState:ie,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=C=>fetch(C,e).then(h=>{if(h.ok)return h.json();throw new Error("Failed to fetch user flow states")}).catch(h=>(console.log(`Error fetching ${C}: ${h}. Will gracefully degrade and hide Frigade`),s(!0),c)),{data:g,isLoading:E,mutate:k,error:S}=(0,Nr.default)(o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,x,{revalidateOnFocus:p!==!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),b=g==null?void 0:g.data;(0,Ut.useEffect)(()=>{!a&&!E&&b&&y(!0)},[b,a,E]);async function F(C){if(b&&!p){let h=b.find(L=>L.flowId===C);h&&h.flowState!==ie&&(h.flowState=ie),await k(Promise.resolve({...g,data:b}),{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function P(C,h,L){if(b){let M=b.find(H=>H.flowId===C);M&&(M.stepStates[h]=L,M.flowState=Pt),await k(Promise.resolve({...g,data:b}),{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function N(C,h,L){if(b){let M=b.find(H=>H.flowId===C);M&&(M.lastStepId=h,M.stepStates[h]=L,M.flowState=Pt),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}async function w(C){if(b){let h=b.find(L=>L.flowId===C);h&&h.flowState!==He&&(h.flowState=He,h.lastStepId=Bl,Object.keys(h.stepStates).forEach(L=>{h.stepStates[L].actionType=_e,h.stepStates[L].createdAt=new Date().toISOString()}),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1}),d(C))}}async function m(C,h){if(b){let L=b.find(M=>M.flowId===C);L&&L.stepStates[h]!==_e&&(L.stepStates[h]=_e),await k({...g,data:b},{optimisticData:{...g,data:b},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:b,isLoadingUserFlowStateData:!a,mutateUserFlowState:k,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:w,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:m,optimisticallyMarkStepStarted:N,error:S}}function _t(){let{config:e,apiUrl:t}=Xe(),{userFlowStatesData:o,mutateUserFlowState:i}=ze(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,no.useContext)(K),[d,a]=(0,no.useState)(new Set),[y,c]=(0,no.useState)(new Set),x=$t();function g(S){let b=JSON.stringify(S);if(d.has(b))return null;d.add(b),a(d),y.add(S),c(y);let F=s==null?void 0:s.find(P=>P.flowSlug===S.flowSlug&&P.stepId===S.stepId&&P.actionType===S.actionType&&P.createdAt===S.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:b}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+S.stepId+". Will retry again later."),n([...r,S])):F||p(N=>[...N??[],S])})}async function E(S){S.foreignUserId&&(S.actionType===Pt||S.actionType===He?await g(S):S.actionType===ie?await g(S):S.actionType===Po?await g(S):S.actionType===Ve?await g(S):S.actionType===ko?await g(S):S.actionType===_e&&await g(S))}function k(){let S=[];return o==null||o.forEach(b=>{if(b&&b.stepStates&&Object.keys(b.stepStates).length!==0)for(let F in b.stepStates){let P=b.stepStates[F];S.push({foreignUserId:b.foreignUserId,flowSlug:b.flowId,stepId:P.stepId,actionType:P.actionType,data:{},createdAt:new Date(P.createdAt),blocked:P.blocked,hidden:P.hidden})}}),[...S,...s]}return{addResponse:E,setFlowResponses:p,getFlowResponses:k}}var Or=u(require("swr"));var Al=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Lr=e=>{let t=Al.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Il(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Il=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e,apiUrl:t}=Xe(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:d,setHasActiveFullPageFlow:a,setFlowResponses:y,setShouldGracefullyDegrade:c,readonly:x}=(0,We.useContext)(K),g={data:[]},{verifySDKInitiated:E}=Mt(),{addResponse:k,getFlowResponses:S}=_t(),b=f=>fetch(f,e).then(T=>T.ok?T.json():(console.log(`Error fetching ${f} (${T.status}): ${T.statusText}. .Will gracefully degrade and hide Frigade`),c(!0),g)).catch(T=>(console.log(`Error fetching ${f}: ${T}. Will gracefully degrade and hide Frigade`),c(!0),g)),{userFlowStatesData:F,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:w,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:C,optimisticallyMarkStepStarted:h}=ze(),{data:L,error:M,isLoading:H}=(0,Or.default)(n?`${t}flows${x?"?readonly=true":""}`:null,b,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(M){console.error(M);return}L&&L.data&&i(L.data)},[L,M]);function O(f){if(H)return null;let T=o.find(B=>B.slug===f);return!T&&o.length>0&&!P&&!H?(console.log(`Flow with slug ${f} not found`),null):(T==null?void 0:T.active)===!1?null:T}function _(f){var A;if(!O(f))return[];let T=O(f).data;return T?(T=j(T),(((A=JSON.parse(T))==null?void 0:A.data)??[]).map(re=>{let Ft=at(re);return{handleSecondaryButtonClick:()=>{re.skippable===!0&&Pe(f,re.id,{skipped:!0})},...re,complete:ge(f,re.id)===Ve||Ft>=1,blocked:z(f,re.id),hidden:$(f,re.id),handlePrimaryButtonClick:()=>{(!re.completionCriteria&&(re.autoMarkCompleted||re.autoMarkCompleted===void 0)||re.completionCriteria&&re.autoMarkCompleted===!0)&&Pe(f,re.id)},progress:Ft}}).filter(re=>re.hidden!==!0)):[]}function j(f){return f.replaceAll(/\${(.*?)}/g,(T,B)=>s[B]===void 0?"":String(s[B]).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 D(f){if(!O(f))return[];let T=O(f).data;return T?(T=j(T),JSON.parse(T)??{}):[]}function ce(f,T){p(B=>({...B,[f]:T}))}function Te(f){!P&&!H&&f&&JSON.stringify(s)!=JSON.stringify({...s,...f})&&Object.keys(f).forEach(T=>{ce(T,f[T])})}let Z=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:Po,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await h(f,T,A),k(A))},[r,F]),G=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:_e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await C(f,T),k(A))},[r,F]),Pe=(0,We.useCallback)(async(f,T,B)=>{E();let A={foreignUserId:r,flowSlug:f,stepId:T,actionType:Ve,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};X(A)&&(await m(f,T,A),k(A))},[r,F]),se=(0,We.useCallback)(async(f,T)=>{if(E(),Ye(f)===He)return;let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:He,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};await w(f),X(B)&&k(B)},[r,F]),J=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:Pt,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&k(B)},[r,F]),ve=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ie,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&(await N(f),k(B))},[r,F]),Oe=(0,We.useCallback)(async(f,T)=>{E();let B={foreignUserId:r,flowSlug:f,stepId:"unknown",actionType:ko,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};X(B)&&(await N(f),k(B))},[r,F]);function X(f){var T;if(!F&&f.actionType===_e)return!1;if(F){let B=F.find(A=>A.flowId===f.flowSlug);if(f.actionType===_e&&(!(B!=null&&B.stepStates[f.stepId])||B.stepStates[f.stepId].actionType===_e)||B&&((T=B.stepStates[f.stepId])==null?void 0:T.actionType)===f.actionType||B&&B.flowState===ie&&f.actionType===ie)return!1}return!0}function ge(f,T){let B=le(f,T);return P?null:B?B.actionType:_e}function z(f,T){let B=le(f,T);return B?B.blocked:!1}function $(f,T){let B=le(f,T);return B?B.hidden:!1}function le(f,T){if(P)return null;let B=F==null?void 0:F.find(A=>A.flowId===f);return!B||!B.stepStates[T]?null:B.stepStates[T]??null}function q(f){var B;if(P||!F)return null;if(Ye(f)===He)return _(f)[0]??null;let T=(B=F.find(A=>A.flowId===f))==null?void 0:B.lastStepId;return T?_(f).find(A=>A.id===T):null}function ae(f){let T=q(f);if(!T)return 0;let B=_(f).findIndex(A=>A.id===T.id)??0;return ge(f,T.id)===Ve&&B<_(f).length-1?B+1:B}function at(f){if(!f.completionCriteria)return;let T=Lr(f.completionCriteria);if(T===null)return;let B=Tt(T),A=V(T);return A===0?void 0:B/A}function Ye(f){let T=F==null?void 0:F.find(B=>B.flowId===f);return T?T.flowState:null}function Tt(f){let T=_(f);return T.length===0?0:T.filter(A=>ge(f,A.id)===Ve).length}function V(f){return _(f).length}function Ue(f){return JSON.parse(o.find(T=>T.slug===f).data)}function Je(f){if(x)return!1;if(P)return!0;if(f!=null&&f.targetingLogic&&F){let T=F.find(B=>B.flowId===f.slug);if(T)return T.shouldTrigger===!1}return!!(f!=null&&f.targetingLogic&&r&&r.startsWith("guest_"))}function Ro(f){return!Je(O(f))}return{getFlow:O,getFlowData:Ue,isLoading:P||H,getStepStatus:ge,getFlowSteps:_,getCurrentStepIndex:ae,markStepStarted:Z,markStepCompleted:Pe,markFlowNotStarted:se,markFlowStarted:J,markFlowCompleted:ve,markFlowAborted:Oe,markStepNotStarted:G,getFlowStatus:Ye,getNumberOfStepsCompleted:Tt,getNumberOfSteps:V,targetingLogicShouldHideFlow:Je,setCustomVariable:ce,updateCustomVariables:Te,customVariables:s,getStepOptionalProgress:at,getFlowMetadata:D,isStepBlocked:z,isStepHidden:$,hasActiveFullPageFlow:d,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Ro}}var vt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,vt.useContext)(K),{config:n,apiUrl:s}=Xe(),{mutateUserFlowState:p}=ze(),d=$t(),{verifySDKInitiated:a}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let x=`frigade-user-registered-${e}`;localStorage.getItem(x)||(d(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(x,"true"))}},[e,r,t]);let y=(0,vt.useCallback)(async x=>{a();let g={foreignId:e,properties:x};await d(`${s}users`,{...n,method:"POST",body:JSON.stringify(g)}),i(E=>({...E,...x})),p()},[e,n,r,p]),c=(0,vt.useCallback)(async(x,g)=>{a();let k={foreignId:e,events:[{event:x,properties:g}]};await d(`${s}users`,{...n,method:"POST",body:JSON.stringify(k)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:y,trackEventForUser:c}}var _i=require("uuid");var Ae=u(require("react"));var Ne=u(require("react")),ao=u(require("styled-components"));var $r=u(require("react")),Mr=u(require("styled-components"));var Dr="fr-",so="cfr-";function l(e,t){let o=`${Dr}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+so+e}return o}function v(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(Dr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function er(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function pt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${er(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ee(...e){return e.filter(Boolean).join(" ")}function lo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Nl=Mr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;