@frigade/react 1.32.9 → 1.32.11
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 +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -8
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var Hs=Object.create;var fo=Object.defineProperty;var zs=Object.getOwnPropertyDescriptor;var Gs=Object.getOwnPropertyNames;var js=Object.getPrototypeOf,Vs=Object.prototype.hasOwnProperty;var qs=(e,t)=>{for(var o in t)fo(e,o,{get:t[o],enumerable:!0})},ar=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Gs(t))!Vs.call(e,r)&&r!==o&&fo(e,r,{get:()=>t[r],enumerable:!(i=zs(t,r))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?Hs(js(e)):{},ar(t||!e||!e.__esModule?fo(o,"default",{value:e,enumerable:!0}):o,e)),Ks=e=>ar(fo({},"__esModule",{value:!0}),e);var Ba={};qs(Ba,{FrigadeBanner:()=>Ws,FrigadeChecklist:()=>Mo,FrigadeEmbeddedTip:()=>Ns,FrigadeForm:()=>Ko,FrigadeGuide:()=>rs,FrigadeHeroChecklist:()=>Gn,FrigadeProgressBadge:()=>ts,FrigadeProvider:()=>ci,FrigadeSupportWidget:()=>Es,FrigadeTour:()=>Cs,useFlowOpens:()=>Ie,useFlowResponses:()=>vt,useFlows:()=>Z,useOrganization:()=>Ao,useUser:()=>Co});module.exports=Ks(Ba);var X=g(require("react")),pi=require("styled-components");var ae=g(require("react"));var Ae=require("react");var wt=g(require("react"));var pr="0.0.1";var Te="https://api.frigade.com/v1/public/",ve="NOT_STARTED_STEP",re="COMPLETED_FLOW",ho="ABORTED_FLOW",ft="STARTED_FLOW",He="NOT_STARTED_FLOW",Ne="COMPLETED_STEP",xo="STARTED_STEP";function ze(){let{publicApiKey:e,userId:t}=wt.default.useContext(Y);return{config:(0,wt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":pr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function Ft(){let{shouldGracefullyDegrade:e}=wt.default.useContext(Y);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),go();let i;try{i=await fetch(t,o)}catch(r){return go(r)}return i?i.ok?i:go(i.statusText):go()}}function go(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function kt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=wt.default.useContext(Y);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 Xt=require("react");var Pt=require("react");var cr=g(require("swr"));var dr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=(0,dr.useContext)(Y);function i(p,d=!1){return e[p]??d}function r(p,d){t(l=>({...l,[p]:d}))}function n(p){t(d=>{let{[p]:l,...C}=d;return{...C}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Ys="unknown";function Ee(){let{config:e}=ze(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,Pt.useContext)(Y),{resetOpenFlowState:n}=Ie(),[s,p]=(0,Pt.useState)(!1),d={data:i.map(v=>({flowId:v.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=v=>fetch(v,e).then(c=>{if(c.ok)return c.json();throw new Error("Failed to fetch user flow states")}).catch(c=>(console.log(`Error fetching ${v}: ${c}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:C,isLoading:m,mutate:f,error:T}=(0,cr.default)(t&&i&&o?`${Te}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),S=C==null?void 0:C.data;(0,Pt.useEffect)(()=>{!s&&!m&&S&&p(!0)},[S,s,m]);async function y(v){if(S){let c=S.find(h=>h.flowId===v);c&&c.flowState!==re&&(c.flowState=re),await f(Promise.resolve({...C,data:S}),{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function b(v,c,h){if(S){let w=S.find(I=>I.flowId===v);w&&(w.stepStates[c]=h,w.flowState=ft),await f(Promise.resolve({...C,data:S}),{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function E(v,c,h){if(S){let w=S.find(I=>I.flowId===v);w&&(w.lastStepId=c,w.stepStates[c]=h,w.flowState=ft),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function P(v){if(S){let c=S.find(h=>h.flowId===v);c&&c.flowState!==He&&(c.flowState=He,c.lastStepId=Ys,Object.keys(c.stepStates).forEach(h=>{c.stepStates[h].actionType=ve,c.stepStates[h].createdAt=new Date().toISOString()}),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1}),n(v))}}async function A(v,c){if(S){let h=S.find(w=>w.flowId===v);h&&h.stepStates[c]!==ve&&(h.stepStates[c]=ve),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:S,isLoadingUserFlowStateData:!s,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:E,error:T}}function vt(){let{config:e}=ze(),{userFlowStatesData:t,mutateUserFlowState:o}=Ee(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,Xt.useContext)(Y),[p,d]=(0,Xt.useState)(new Set),[l,C]=(0,Xt.useState)(new Set),m=Ft();function f(y){let b=JSON.stringify(y);if(p.has(b))return null;p.add(b),d(p),l.add(y),C(l);let E=n==null?void 0:n.find(P=>P.flowSlug===y.flowSlug&&P.stepId===y.stepId&&P.actionType===y.actionType&&P.createdAt===y.createdAt);return m(`${Te}flowResponses`,{...e,method:"POST",body:b}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...i,y])):E||s(A=>[...A??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===ft||y.actionType===He?await f(y):y.actionType===re?await f(y):y.actionType===xo?await f(y):y.actionType===Ne?await f(y):y.actionType===ho?await f(y):y.actionType===ve&&await f(y))}function S(){let y=[];return t==null||t.forEach(b=>{if(b&&b.stepStates&&Object.keys(b.stepStates).length!==0)for(let E in b.stepStates){let P=b.stepStates[E];y.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})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:S}}var ur=g(require("swr"));var Xs=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,mr=e=>{let t=Xs.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Js(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Js=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Z(){let{config:e}=ze(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:C}=(0,Ae.useContext)(Y),m={data:[]},{verifySDKInitiated:f}=kt(),{addResponse:T,getFlowResponses:S}=vt(),y=x=>fetch(x,e).then(u=>u.ok?u.json():(console.log(`Error fetching ${x} (${u.status}): ${u.statusText}. .Will gracefully degrade and hide Frigade`),C(!0),m)).catch(u=>(console.log(`Error fetching ${x}: ${u}. Will gracefully degrade and hide Frigade`),C(!0),m)),{userFlowStatesData:b,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:h}=Ee(),w=S(),{data:I,error:$,isLoading:W}=(0,ur.default)(r?`${Te}flows`:null,y,{keepPreviousData:!0});(0,Ae.useEffect)(()=>{if($){console.error($);return}I&&I.data&&(I.data=o(I.data))},[I,$]);function z(x){let u=t.find(F=>F.slug===x);return!u&&t.length>0&&!E&&!W&&console.log(`Flow with slug ${x} not found`),u}function L(x){var U;if(!z(x))return[];let u=z(x).data;return u?(u=H(u),(((U=JSON.parse(u))==null?void 0:U.data)??[]).map(ce=>{let _o=ut(ce);return{handleSecondaryButtonClick:()=>{ce.skippable===!0&&R(x,ce.id,{skipped:!0})},...ce,complete:ie(x,ce.id)===Ne||_o>=1,blocked:Ze(x,ce.id),hidden:he(x,ce.id),handlePrimaryButtonClick:()=>{(!ce.completionCriteria&&(ce.autoMarkCompleted||ce.autoMarkCompleted===void 0)||ce.completionCriteria&&ce.autoMarkCompleted===!0)&&R(x,ce.id)},progress:_o}}).filter(ce=>ce.hidden!==!0)):[]}function H(x){return x.replace(/\${(.*?)}/g,(u,F)=>n[F]!==void 0?String(n[F]):"")}function D(x){if(!z(x))return[];let u=z(x).data;return u?(u=H(u),JSON.parse(u)??{}):[]}function j(x,u){s(F=>({...F,[x]:u}))}function V(x){!E&&!W&&x&&JSON.stringify(n)!=JSON.stringify({...n,...x})&&Object.keys(x).forEach(u=>{j(u,x[u])})}let q=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:xo,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await h(x,u,U),T(U))},[i,b]),_=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:ve,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await c(x,u),T(U))},[i,b]),R=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:Ne,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await v(x,u,U),T(U))},[i,b]),K=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:He,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};await A(x),O(F)&&T(F)},[i,b]),ee=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ft,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&T(F)},[i,b]),it=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:re,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&(await P(x),T(F))},[i,b]),We=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ho,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&(await P(x),T(F))},[i,b]);function O(x){var u;if(!b&&x.actionType===ve)return!1;if(b){let F=b.find(U=>U.flowId===x.flowSlug);if(x.actionType===ve&&(!(F!=null&&F.stepStates[x.stepId])||F.stepStates[x.stepId].actionType===ve)||F&&((u=F.stepStates[x.stepId])==null?void 0:u.actionType)===x.actionType)return!1}return!0}function ie(x,u){let F=xe(x,u);return E?null:F?F.actionType:ve}function Ze(x,u){let F=xe(x,u);return F?F.blocked:!1}function he(x,u){let F=xe(x,u);return F?F.hidden:!1}function xe(x,u){if(E)return null;let F=b==null?void 0:b.find(U=>U.flowId===x);return!F||!F.stepStates[u]?null:F.stepStates[u]??null}function nt(x){var F;if(E||!b)return null;if(Oe(x)===He)return L(x)[0]??null;let u=(F=b.find(U=>U.flowId===x))==null?void 0:F.lastStepId;return u?L(x).find(U=>U.id===u):null}function st(x){let u=nt(x);if(!u)return 0;let F=L(x).findIndex(U=>U.id===u.id)??0;return ie(x,u.id)===Ne&&F<L(x).length-1?F+1:F}function ut(x){if(!x.completionCriteria)return;let u=mr(x.completionCriteria);if(u===null)return;let F=G(u),U=Fe(u);return U===0?void 0:F/U}function Oe(x){let u=b==null?void 0:b.find(F=>F.flowId===x);return u?u.flowState:null}function G(x){let u=L(x);return u.length===0?0:u.filter(U=>ie(x,U.id)===Ne).length}function Fe(x){return L(x).length}function Yt(x){return JSON.parse(t.find(u=>u.slug===x).data)}function uo(x){if(E)return!0;if(x!=null&&x.targetingLogic&&b){let u=b.find(F=>F.flowId===x.slug);if(u)return u.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&i&&i.startsWith("guest_"))}function Uo(x){return!uo(z(x))}return{getFlow:z,getFlowData:Yt,isLoading:E||W,getStepStatus:ie,getFlowSteps:L,getCurrentStepIndex:st,markStepStarted:q,markStepCompleted:R,markFlowNotStarted:K,markFlowStarted:ee,markFlowCompleted:it,markFlowAborted:We,markStepNotStarted:_,getFlowStatus:Oe,getNumberOfStepsCompleted:G,getNumberOfSteps:Fe,targetingLogicShouldHideFlow:uo,setCustomVariable:j,updateCustomVariables:V,customVariables:n,getStepOptionalProgress:ut,getFlowMetadata:D,isStepBlocked:Ze,isStepHidden:he,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Uo}}var gt=require("react");var It="guest_";function Co(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,gt.useContext)(Y),{config:n}=ze(),{mutateUserFlowState:s}=Ee(),p=Ft(),{verifySDKInitiated:d}=kt();(0,gt.useEffect)(()=>{if(e&&!t){if(e.startsWith(It))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${Te}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(m,"true"))}},[e,r,t]);let l=(0,gt.useCallback)(async m=>{d();let f={foreignId:e,properties:m};await p(`${Te}users`,{...n,method:"POST",body:JSON.stringify(f)}),i(T=>({...T,...m})),s()},[e,n,r,s]),C=(0,gt.useCallback)(async(m,f)=>{d();let S={foreignId:e,events:[{event:m,properties:f}]};await p(`${Te}users`,{...n,method:"POST",body:JSON.stringify(S)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:C}}var li=require("uuid");var be=g(require("react"));var Be=g(require("react")),Zt=g(require("styled-components"));var hr=g(require("react")),xr=g(require("styled-components"));var fr="fr-",Jt="cfr-";function a(e,t){let o=`${fr}${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+" "+Jt+e}return o}function k(e){if(!e.className||e.className.indexOf(Jt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(fr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Wo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ht(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Wo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ke(...e){return e.filter(Boolean).join(" ")}function gr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Qs=xr.default.div`
|
|
2
|
+
var Hs=Object.create;var fo=Object.defineProperty;var zs=Object.getOwnPropertyDescriptor;var Gs=Object.getOwnPropertyNames;var js=Object.getPrototypeOf,Vs=Object.prototype.hasOwnProperty;var qs=(e,t)=>{for(var o in t)fo(e,o,{get:t[o],enumerable:!0})},ar=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Gs(t))!Vs.call(e,r)&&r!==o&&fo(e,r,{get:()=>t[r],enumerable:!(i=zs(t,r))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?Hs(js(e)):{},ar(t||!e||!e.__esModule?fo(o,"default",{value:e,enumerable:!0}):o,e)),Ks=e=>ar(fo({},"__esModule",{value:!0}),e);var Ba={};qs(Ba,{FrigadeBanner:()=>Ws,FrigadeChecklist:()=>Mo,FrigadeEmbeddedTip:()=>Ns,FrigadeForm:()=>Ko,FrigadeGuide:()=>rs,FrigadeHeroChecklist:()=>Gn,FrigadeProgressBadge:()=>ts,FrigadeProvider:()=>ci,FrigadeSupportWidget:()=>Es,FrigadeTour:()=>Cs,useFlowOpens:()=>Ie,useFlowResponses:()=>vt,useFlows:()=>Z,useOrganization:()=>Ao,useUser:()=>Co});module.exports=Ks(Ba);var X=g(require("react")),pi=require("styled-components");var ae=g(require("react"));var Ae=require("react");var wt=g(require("react"));var pr="1.32.11 ";var Te="https://api.frigade.com/v1/public/",ve="NOT_STARTED_STEP",re="COMPLETED_FLOW",ho="ABORTED_FLOW",ft="STARTED_FLOW",He="NOT_STARTED_FLOW",Ne="COMPLETED_STEP",xo="STARTED_STEP";function ze(){let{publicApiKey:e,userId:t}=wt.default.useContext(Y);return{config:(0,wt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":pr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function Ft(){let{shouldGracefullyDegrade:e}=wt.default.useContext(Y);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),go();let i;try{i=await fetch(t,o)}catch(r){return go(r)}return i?i.ok?i:go(i.statusText):go()}}function go(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function kt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=wt.default.useContext(Y);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 Xt=require("react");var Pt=require("react");var cr=g(require("swr"));var dr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=(0,dr.useContext)(Y);function i(p,d=!1){return e[p]??d}function r(p,d){t(l=>({...l,[p]:d}))}function n(p){t(d=>{let{[p]:l,...C}=d;return{...C}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Ys="unknown";function Ee(){let{config:e}=ze(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,Pt.useContext)(Y),{resetOpenFlowState:n}=Ie(),[s,p]=(0,Pt.useState)(!1),d={data:i.map(v=>({flowId:v.id,flowState:re,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},l=v=>fetch(v,e).then(c=>{if(c.ok)return c.json();throw new Error("Failed to fetch user flow states")}).catch(c=>(console.log(`Error fetching ${v}: ${c}. Will gracefully degrade and hide Frigade`),r(!0),d)),{data:C,isLoading:m,mutate:f,error:T}=(0,cr.default)(t&&i&&o?`${Te}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),S=C==null?void 0:C.data;(0,Pt.useEffect)(()=>{!s&&!m&&S&&p(!0)},[S,s,m]);async function y(v){if(S){let c=S.find(h=>h.flowId===v);c&&c.flowState!==re&&(c.flowState=re),await f(Promise.resolve({...C,data:S}),{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function b(v,c,h){if(S){let w=S.find(I=>I.flowId===v);w&&(w.stepStates[c]=h,w.flowState=ft),await f(Promise.resolve({...C,data:S}),{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function E(v,c,h){if(S){let w=S.find(I=>I.flowId===v);w&&(w.lastStepId=c,w.stepStates[c]=h,w.flowState=ft),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}async function P(v){if(S){let c=S.find(h=>h.flowId===v);c&&c.flowState!==He&&(c.flowState=He,c.lastStepId=Ys,Object.keys(c.stepStates).forEach(h=>{c.stepStates[h].actionType=ve,c.stepStates[h].createdAt=new Date().toISOString()}),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1}),n(v))}}async function A(v,c){if(S){let h=S.find(w=>w.flowId===v);h&&h.stepStates[c]!==ve&&(h.stepStates[c]=ve),await f({...C,data:S},{optimisticData:{...C,data:S},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:S,isLoadingUserFlowStateData:!s,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:E,error:T}}function vt(){let{config:e}=ze(),{userFlowStatesData:t,mutateUserFlowState:o}=Ee(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,Xt.useContext)(Y),[p,d]=(0,Xt.useState)(new Set),[l,C]=(0,Xt.useState)(new Set),m=Ft();function f(y){let b=JSON.stringify(y);if(p.has(b))return null;p.add(b),d(p),l.add(y),C(l);let E=n==null?void 0:n.find(P=>P.flowSlug===y.flowSlug&&P.stepId===y.stepId&&P.actionType===y.actionType&&P.createdAt===y.createdAt);return m(`${Te}flowResponses`,{...e,method:"POST",body:b}).then(P=>{P.status!==200&&P.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),r([...i,y])):E||s(A=>[...A??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===ft||y.actionType===He?await f(y):y.actionType===re?await f(y):y.actionType===xo?await f(y):y.actionType===Ne?await f(y):y.actionType===ho?await f(y):y.actionType===ve&&await f(y))}function S(){let y=[];return t==null||t.forEach(b=>{if(b&&b.stepStates&&Object.keys(b.stepStates).length!==0)for(let E in b.stepStates){let P=b.stepStates[E];y.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})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:S}}var ur=g(require("swr"));var Xs=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,mr=e=>{let t=Xs.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Js(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Js=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Z(){let{config:e}=ze(),{flows:t,setFlows:o,userId:i,publicApiKey:r,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:l,setShouldGracefullyDegrade:C}=(0,Ae.useContext)(Y),m={data:[]},{verifySDKInitiated:f}=kt(),{addResponse:T,getFlowResponses:S}=vt(),y=x=>fetch(x,e).then(u=>u.ok?u.json():(console.log(`Error fetching ${x} (${u.status}): ${u.statusText}. .Will gracefully degrade and hide Frigade`),C(!0),m)).catch(u=>(console.log(`Error fetching ${x}: ${u}. Will gracefully degrade and hide Frigade`),C(!0),m)),{userFlowStatesData:b,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:h}=Ee(),w=S(),{data:I,error:$,isLoading:W}=(0,ur.default)(r?`${Te}flows`:null,y,{keepPreviousData:!0});(0,Ae.useEffect)(()=>{if($){console.error($);return}I&&I.data&&(I.data=o(I.data))},[I,$]);function z(x){let u=t.find(F=>F.slug===x);return!u&&t.length>0&&!E&&!W&&console.log(`Flow with slug ${x} not found`),u}function L(x){var U;if(!z(x))return[];let u=z(x).data;return u?(u=H(u),(((U=JSON.parse(u))==null?void 0:U.data)??[]).map(ce=>{let _o=ut(ce);return{handleSecondaryButtonClick:()=>{ce.skippable===!0&&R(x,ce.id,{skipped:!0})},...ce,complete:ie(x,ce.id)===Ne||_o>=1,blocked:Ze(x,ce.id),hidden:he(x,ce.id),handlePrimaryButtonClick:()=>{(!ce.completionCriteria&&(ce.autoMarkCompleted||ce.autoMarkCompleted===void 0)||ce.completionCriteria&&ce.autoMarkCompleted===!0)&&R(x,ce.id)},progress:_o}}).filter(ce=>ce.hidden!==!0)):[]}function H(x){return x.replace(/\${(.*?)}/g,(u,F)=>n[F]!==void 0?String(n[F]):"")}function D(x){if(!z(x))return[];let u=z(x).data;return u?(u=H(u),JSON.parse(u)??{}):[]}function j(x,u){s(F=>({...F,[x]:u}))}function V(x){!E&&!W&&x&&JSON.stringify(n)!=JSON.stringify({...n,...x})&&Object.keys(x).forEach(u=>{j(u,x[u])})}let q=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:xo,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await h(x,u,U),T(U))},[i,b]),_=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:ve,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await c(x,u),T(U))},[i,b]),R=(0,Ae.useCallback)(async(x,u,F)=>{f();let U={foreignUserId:i,flowSlug:x,stepId:u,actionType:Ne,data:F??{},createdAt:new Date,blocked:!1,hidden:!1};O(U)&&(await v(x,u,U),T(U))},[i,b]),K=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:He,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};await A(x),O(F)&&T(F)},[i,b]),ee=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ft,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&T(F)},[i,b]),it=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:re,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&(await P(x),T(F))},[i,b]),We=(0,Ae.useCallback)(async(x,u)=>{f();let F={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ho,data:u??{},createdAt:new Date,blocked:!1,hidden:!1};O(F)&&(await P(x),T(F))},[i,b]);function O(x){var u;if(!b&&x.actionType===ve)return!1;if(b){let F=b.find(U=>U.flowId===x.flowSlug);if(x.actionType===ve&&(!(F!=null&&F.stepStates[x.stepId])||F.stepStates[x.stepId].actionType===ve)||F&&((u=F.stepStates[x.stepId])==null?void 0:u.actionType)===x.actionType)return!1}return!0}function ie(x,u){let F=xe(x,u);return E?null:F?F.actionType:ve}function Ze(x,u){let F=xe(x,u);return F?F.blocked:!1}function he(x,u){let F=xe(x,u);return F?F.hidden:!1}function xe(x,u){if(E)return null;let F=b==null?void 0:b.find(U=>U.flowId===x);return!F||!F.stepStates[u]?null:F.stepStates[u]??null}function nt(x){var F;if(E||!b)return null;if(Oe(x)===He)return L(x)[0]??null;let u=(F=b.find(U=>U.flowId===x))==null?void 0:F.lastStepId;return u?L(x).find(U=>U.id===u):null}function st(x){let u=nt(x);if(!u)return 0;let F=L(x).findIndex(U=>U.id===u.id)??0;return ie(x,u.id)===Ne&&F<L(x).length-1?F+1:F}function ut(x){if(!x.completionCriteria)return;let u=mr(x.completionCriteria);if(u===null)return;let F=G(u),U=Fe(u);return U===0?void 0:F/U}function Oe(x){let u=b==null?void 0:b.find(F=>F.flowId===x);return u?u.flowState:null}function G(x){let u=L(x);return u.length===0?0:u.filter(U=>ie(x,U.id)===Ne).length}function Fe(x){return L(x).length}function Yt(x){return JSON.parse(t.find(u=>u.slug===x).data)}function uo(x){if(E)return!0;if(x!=null&&x.targetingLogic&&b){let u=b.find(F=>F.flowId===x.slug);if(u)return u.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&i&&i.startsWith("guest_"))}function Uo(x){return!uo(z(x))}return{getFlow:z,getFlowData:Yt,isLoading:E||W,getStepStatus:ie,getFlowSteps:L,getCurrentStepIndex:st,markStepStarted:q,markStepCompleted:R,markFlowNotStarted:K,markFlowStarted:ee,markFlowCompleted:it,markFlowAborted:We,markStepNotStarted:_,getFlowStatus:Oe,getNumberOfStepsCompleted:G,getNumberOfSteps:Fe,targetingLogicShouldHideFlow:uo,setCustomVariable:j,updateCustomVariables:V,customVariables:n,getStepOptionalProgress:ut,getFlowMetadata:D,isStepBlocked:Ze,isStepHidden:he,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Uo}}var gt=require("react");var It="guest_";function Co(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,gt.useContext)(Y),{config:n}=ze(),{mutateUserFlowState:s}=Ee(),p=Ft(),{verifySDKInitiated:d}=kt();(0,gt.useEffect)(()=>{if(e&&!t){if(e.startsWith(It))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${Te}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(m,"true"))}},[e,r,t]);let l=(0,gt.useCallback)(async m=>{d();let f={foreignId:e,properties:m};await p(`${Te}users`,{...n,method:"POST",body:JSON.stringify(f)}),i(T=>({...T,...m})),s()},[e,n,r,s]),C=(0,gt.useCallback)(async(m,f)=>{d();let S={foreignId:e,events:[{event:m,properties:f}]};await p(`${Te}users`,{...n,method:"POST",body:JSON.stringify(S)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:C}}var li=require("uuid");var be=g(require("react"));var Be=g(require("react")),Zt=g(require("styled-components"));var hr=g(require("react")),xr=g(require("styled-components"));var fr="fr-",Jt="cfr-";function a(e,t){let o=`${fr}${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+" "+Jt+e}return o}function k(e){if(!e.className||e.className.indexOf(Jt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(fr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Wo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ht(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Wo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ke(...e){return e.filter(Boolean).join(" ")}function gr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Qs=xr.default.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|