@frigade/react 1.33.17 → 1.33.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var jl=Object.create;var Io=Object.defineProperty;var Gl=Object.getOwnPropertyDescriptor;var ql=Object.getOwnPropertyNames;var Kl=Object.getPrototypeOf,Yl=Object.prototype.hasOwnProperty;var Xl=(e,t)=>{for(var o in t)Io(e,o,{get:t[o],enumerable:!0})},jr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ql(t))!Yl.call(e,r)&&r!==o&&Io(e,r,{get:()=>t[r],enumerable:!(i=Gl(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?jl(Kl(e)):{},jr(t||!e||!e.__esModule?Io(o,"default",{value:e,enumerable:!0}):o,e)),Jl=e=>jr(Io({},"__esModule",{value:!0}),e);var Xp={};Xl(Xp,{Box:()=>Qt,Button:()=>Vl,CheckBox:()=>rt,FormLabel:()=>mt,FormTextField:()=>Vo,FrigadeBanner:()=>Ol,FrigadeChecklist:()=>ar,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>vl,FrigadeForm:()=>Tr,FrigadeGuide:()=>nl,FrigadeHeroChecklist:()=>Gs,FrigadeNPSSurvey:()=>_l,FrigadeProgressBadge:()=>rl,FrigadeProvider:()=>gn,FrigadeSupportWidget:()=>wl,FrigadeTour:()=>cl,ProgressRing:()=>It,Text:()=>dr,tokens:()=>er,useFlowOpens:()=>De,useFlowResponses:()=>Ht,useFlows:()=>ee,useOrganization:()=>Qo,useUser:()=>jt});module.exports=Jl(Xp);var X=u(require("react")),mn=require("styled-components");var Ce=u(require("react"));var Ge=require("react");var Bt=u(require("react"));var Gr="1.33.17 ";var Ve="NOT_STARTED_STEP",ne="COMPLETED_FLOW",No="ABORTED_FLOW",Et="STARTED_FLOW",Ke="NOT_STARTED_FLOW",Ye="COMPLETED_STEP",Oo="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=Bt.default.useContext(Y);return{config:(0,Bt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Gr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Bt.useMemo)(()=>`${o}/v1/public/`,[o])}}var Ql="frigade-last-call-at-",Zl="frigade-last-call-data-";function zt(){let{shouldGracefullyDegrade:e,readonly:t}=Bt.default.useContext(Y);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ut();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ut();let r=Ql+o,n=Zl+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Ut()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Ut(p)}return s?s.ok?s:Ut(s.statusText):Ut()}}function Ut(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function _t(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Bt.default.useContext(Y);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var co=require("react");var Wt=require("react");var Kr=u(require("swr"));var qr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,qr.useContext)(Y);function n(d,x=!1){return e[d]??x}function s(d,x){t(y=>({...y,[d]:x}))}function p(d){t(x=>{let{[d]:y,...w}=x;return{...w}})}function c(d){r.includes(d)||i(x=>[...x,d])}function a(d){return r.includes(d)}function C(d){return Object.entries(e).some(([x,y])=>y&&x!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:C,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Yr=u(require("swr/immutable")),Rl="unknown";function je(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Wt.useContext)(Y),{resetOpenFlowState:c}=De(),[a,C]=(0,Wt.useState)(!1),d={data:n.map(S=>({flowId:S.id,flowState:ne,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=S=>fetch(S,e).then(v=>{if(v.ok)return v.json();throw new Error("Failed to fetch user flow states")}).catch(v=>(console.log(`Error fetching ${S}: ${v}. Will gracefully degrade and hide Frigade`),s(!0),d)),y=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:w,isLoading:P,mutate:f,error:E}=p?(0,Yr.default)(y,x):(0,Kr.default)(y,x,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),h=w==null?void 0:w.data;(0,Wt.useEffect)(()=>{!a&&!P&&h&&C(!0)},[h,a,P]);async function k(S){if(h&&!p){let v=h.find(D=>D.flowId===S);v&&v.flowState!==ne&&(v.flowState=ne),await f(Promise.resolve({...w,data:h}),{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function O(S,v,D){if(h){let N=h.find($=>$.flowId===S);N&&(N.stepStates[v]=D,N.flowState=Et),await f(Promise.resolve({...w,data:h}),{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function F(S,v,D){if(h){let N=h.find($=>$.flowId===S);N&&(N.lastStepId=v,N.stepStates[v]=D,N.flowState=Et),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function m(S){if(h){let v=h.find(D=>D.flowId===S);v&&v.flowState!==Ke&&(v.flowState=Ke,v.lastStepId=Rl,Object.keys(v.stepStates).forEach(D=>{v.stepStates[D].actionType=Ve,v.stepStates[D].createdAt=new Date().toISOString()}),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1}),c(S))}}async function T(S,v){if(h){let D=h.find(N=>N.flowId===S);D&&D.stepStates[v]!==Ve&&(D.stepStates[v]=Ve),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:h,isLoadingUserFlowStateData:!a,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:k,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:O,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:F,error:E}}function Ht(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:i}=je(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,co.useContext)(Y),[c,a]=(0,co.useState)(new Set),[C,d]=(0,co.useState)(new Set),x=zt();function y(f){let E=JSON.stringify(f);if(c.has(E))return null;c.add(E),a(c),C.add(f),d(C);let h=s==null?void 0:s.find(k=>k.flowSlug===f.flowSlug&&k.stepId===f.stepId&&k.actionType===f.actionType&&k.createdAt===f.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:E}).then(k=>{k.status!==200&&k.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...r,f])):h||p(O=>[...O??[],f])})}async function w(f){f.foreignUserId&&(f.actionType===Et||f.actionType===Ke?await y(f):f.actionType===ne?await y(f):f.actionType===Oo?await y(f):f.actionType===Ye?await y(f):f.actionType===No?await y(f):f.actionType===Ve&&await y(f))}function P(){let f=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let h in E.stepStates){let k=E.stepStates[h];f.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:k.stepId,actionType:k.actionType,data:{},createdAt:new Date(k.createdAt),blocked:k.blocked,hidden:k.hidden})}}),[...f,...s]}return{addResponse:w,setFlowResponses:p,getFlowResponses:P}}var Jr=u(require("swr"));var ea=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Xr=e=>{let t=ea.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ta(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ta=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:C,setShouldGracefullyDegrade:d,readonly:x}=(0,Ge.useContext)(Y),y={data:[]},{verifySDKInitiated:w}=_t(),{addResponse:P,getFlowResponses:f}=Ht(),E=g=>fetch(g,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${g} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),y)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),d(!0),y)),{userFlowStatesData:h,isLoadingUserFlowStateData:k,optimisticallyMarkFlowCompleted:O,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:S}=je(),{data:v,error:D,isLoading:N}=(0,Jr.default)(n?`${t}flows${x?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,Ge.useEffect)(()=>{if(D){console.error(D);return}v&&v.data&&i(v.data)},[v,D]);function $(g){if(N)return null;let b=o.find(A=>A.slug===g);return!b&&o.length>0&&!k&&!N?(console.log(`Flow with slug ${g} not found`),null):(b==null?void 0:b.active)===!1?null:b}function M(g){var I;if(!$(g))return[];let b=$(g).data;return b?(b=H(b),(((I=JSON.parse(b))==null?void 0:I.data)??[]).map(ie=>{let vt=he(ie);return{handleSecondaryButtonClick:()=>{ie.skippable===!0&&J(g,ie.id,{skipped:!0})},...ie,complete:re(g,ie.id)===Ye||vt>=1,blocked:z(g,ie.id),hidden:V(g,ie.id),handlePrimaryButtonClick:()=>{(!ie.completionCriteria&&(ie.autoMarkCompleted||ie.autoMarkCompleted===void 0)||ie.completionCriteria&&ie.autoMarkCompleted===!0)&&J(g,ie.id)},progress:vt}}).filter(ie=>ie.hidden!==!0)):[]}function H(g){return g.replaceAll(/\${(.*?)}/g,(b,A)=>s[A]===void 0?"":String(s[A]).replace(/[\u00A0-\u9999<>\&]/g,function(I){return"&#"+I.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 j(g){if(!$(g))return[];let b=$(g).data;return b?(b=H(b),JSON.parse(b)??{}):[]}function ae(g,b){p(A=>({...A,[g]:b}))}function ue(g){!k&&!N&&g&&JSON.stringify(s)!=JSON.stringify({...s,...g})&&Object.keys(g).forEach(b=>{ae(b,g[b])})}let R=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Oo,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await S(g,b,I),P(I))},[r,h]),q=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Ve,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await T(g,b),P(I))},[r,h]),J=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Ye,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await m(g,b,I),P(I))},[r,h]),oe=(0,Ge.useCallback)(async(g,b)=>{if(!w()||se(g)===Ke)return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:Ke,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await F(g),pe(A)&&P(A)},[r,h]),Be=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:Et,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&P(A)},[r,h]),Ue=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:ne,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&(await O(g),P(A))},[r,h]),Ee=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:No,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&(await O(g),P(A))},[r,h]);function pe(g){var b;if(!h&&g.actionType===Ve)return!1;if(h){let A=h.find(I=>I.flowId===g.flowSlug);if(g.actionType===Ve&&(!(A!=null&&A.stepStates[g.stepId])||A.stepStates[g.stepId].actionType===Ve)||A&&((b=A.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType||A&&A.flowState===ne&&g.actionType===ne)return!1}return!0}function re(g,b){let A=Ae(g,b);return k?null:A?A.actionType:Ve}function z(g,b){let A=Ae(g,b);return A?A.blocked:!1}function V(g,b){let A=Ae(g,b);return A?A.hidden:!1}function Ae(g,b){if(k)return null;let A=h==null?void 0:h.find(I=>I.flowId===g);return!A||!A.stepStates[b]?null:A.stepStates[b]??null}function xe(g){var A;if(k||!h)return null;if(se(g)===Ke)return M(g)[0]??null;let b=(A=h.find(I=>I.flowId===g))==null?void 0:A.lastStepId;return b?M(g).find(I=>I.id===b):null}function W(g){let b=xe(g);if(!b)return 0;let A=M(g).findIndex(I=>I.id===b.id)??0;return re(g,b.id)===Ye&&A<M(g).length-1?A+1:A}function he(g){if(!g.completionCriteria)return;let b=Xr(g.completionCriteria);if(b===null)return;let A=Ie(b),I=G(b);return I===0?void 0:A/I}function se(g){let b=h==null?void 0:h.find(A=>A.flowId===g);return b?b.flowState:null}function Ie(g){let b=M(g);return b.length===0?0:b.filter(I=>re(g,I.id)===Ye).length}function G(g){return M(g).length}function He(g){let b=o.find(A=>A.slug===g);return b?JSON.parse(b.data):null}function Re(g){if(x)return!1;if(k)return!0;if(g!=null&&g.targetingLogic&&h){let b=h.find(A=>A.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&r&&r.startsWith("guest_"))}function mr(g){return!Re($(g))}return{getFlow:$,getFlowData:He,isLoading:k||N,getStepStatus:re,getFlowSteps:M,getCurrentStepIndex:W,markStepStarted:R,markStepCompleted:J,markFlowNotStarted:oe,markFlowStarted:Be,markFlowCompleted:Ue,markFlowAborted:Ee,markStepNotStarted:q,getFlowStatus:se,getNumberOfStepsCompleted:Ie,getNumberOfSteps:G,targetingLogicShouldHideFlow:Re,setCustomVariable:ae,updateCustomVariables:ue,customVariables:s,getStepOptionalProgress:he,getFlowMetadata:j,isStepBlocked:z,isStepHidden:V,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:mr}}var At=require("react");var Vt="guest_";function jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,At.useContext)(Y),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=je(),c=zt(),{verifySDKInitiated:a}=_t();(0,At.useEffect)(()=>{if(e&&!t){if(e.startsWith(Vt))return;let x=`frigade-user-registered-${e}`;localStorage.getItem(x)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(x,"true"))}},[e,r,t]);let C=(0,At.useCallback)(async x=>{if(!a())return;let y={foreignId:e,properties:x};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(y)}),i(w=>({...w,...x})),p()},[e,n,r,p]),d=(0,At.useCallback)(async(x,y)=>{if(!a())return;let P={foreignId:e,events:[{event:x,properties:y}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(P)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:C,trackEventForUser:d}}var tn=require("uuid");var Le=u(require("react"));var $e=u(require("react")),fo=u(require("styled-components"));var Zr=u(require("react")),Rr=u(require("styled-components"));var Qr="fr-",mo="cfr-";function l(e,t){let o=`${Qr}${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+" "+mo+e}return o}function B(e){if(!e.className||e.className.indexOf(mo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Qr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function ur(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function dt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${ur(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function uo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var oa=Rr.default.div`
2
+ var jl=Object.create;var Io=Object.defineProperty;var Gl=Object.getOwnPropertyDescriptor;var ql=Object.getOwnPropertyNames;var Kl=Object.getPrototypeOf,Yl=Object.prototype.hasOwnProperty;var Xl=(e,t)=>{for(var o in t)Io(e,o,{get:t[o],enumerable:!0})},jr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ql(t))!Yl.call(e,r)&&r!==o&&Io(e,r,{get:()=>t[r],enumerable:!(i=Gl(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?jl(Kl(e)):{},jr(t||!e||!e.__esModule?Io(o,"default",{value:e,enumerable:!0}):o,e)),Jl=e=>jr(Io({},"__esModule",{value:!0}),e);var Xp={};Xl(Xp,{Box:()=>Qt,Button:()=>Vl,CheckBox:()=>rt,FormLabel:()=>mt,FormTextField:()=>Vo,FrigadeBanner:()=>Ol,FrigadeChecklist:()=>ar,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>vl,FrigadeForm:()=>Tr,FrigadeGuide:()=>nl,FrigadeHeroChecklist:()=>Gs,FrigadeNPSSurvey:()=>_l,FrigadeProgressBadge:()=>rl,FrigadeProvider:()=>gn,FrigadeSupportWidget:()=>wl,FrigadeTour:()=>cl,ProgressRing:()=>It,Text:()=>dr,tokens:()=>er,useFlowOpens:()=>De,useFlowResponses:()=>Ht,useFlows:()=>ee,useOrganization:()=>Qo,useUser:()=>jt});module.exports=Jl(Xp);var X=u(require("react")),mn=require("styled-components");var Ce=u(require("react"));var Ge=require("react");var Bt=u(require("react"));var Gr="1.33.18 ";var Ve="NOT_STARTED_STEP",ne="COMPLETED_FLOW",No="ABORTED_FLOW",Et="STARTED_FLOW",Ke="NOT_STARTED_FLOW",Ye="COMPLETED_STEP",Oo="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=Bt.default.useContext(Y);return{config:(0,Bt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Gr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Bt.useMemo)(()=>`${o}/v1/public/`,[o])}}var Ql="frigade-last-call-at-",Zl="frigade-last-call-data-";function zt(){let{shouldGracefullyDegrade:e,readonly:t}=Bt.default.useContext(Y);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ut();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ut();let r=Ql+o,n=Zl+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return Ut()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Ut(p)}return s?s.ok?s:Ut(s.statusText):Ut()}}function Ut(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function _t(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Bt.default.useContext(Y);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var co=require("react");var Wt=require("react");var Kr=u(require("swr"));var qr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,qr.useContext)(Y);function n(d,x=!1){return e[d]??x}function s(d,x){t(y=>({...y,[d]:x}))}function p(d){t(x=>{let{[d]:y,...w}=x;return{...w}})}function c(d){r.includes(d)||i(x=>[...x,d])}function a(d){return r.includes(d)}function C(d){return Object.entries(e).some(([x,y])=>y&&x!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:C,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Yr=u(require("swr/immutable")),Rl="unknown";function je(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Wt.useContext)(Y),{resetOpenFlowState:c}=De(),[a,C]=(0,Wt.useState)(!1),d={data:n.map(S=>({flowId:S.id,flowState:ne,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},x=S=>fetch(S,e).then(v=>{if(v.ok)return v.json();throw new Error("Failed to fetch user flow states")}).catch(v=>(console.log(`Error fetching ${S}: ${v}. Will gracefully degrade and hide Frigade`),s(!0),d)),y=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:w,isLoading:P,mutate:f,error:E}=p?(0,Yr.default)(y,x):(0,Kr.default)(y,x,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),h=w==null?void 0:w.data;(0,Wt.useEffect)(()=>{!a&&!P&&h&&C(!0)},[h,a,P]);async function k(S){if(h&&!p){let v=h.find(D=>D.flowId===S);v&&v.flowState!==ne&&(v.flowState=ne),await f(Promise.resolve({...w,data:h}),{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function O(S,v,D){if(h){let N=h.find($=>$.flowId===S);N&&(N.stepStates[v]=D,N.flowState=Et),await f(Promise.resolve({...w,data:h}),{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function F(S,v,D){if(h){let N=h.find($=>$.flowId===S);N&&(N.lastStepId=v,N.stepStates[v]=D,N.flowState=Et),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}async function m(S){if(h){let v=h.find(D=>D.flowId===S);v&&v.flowState!==Ke&&(v.flowState=Ke,v.lastStepId=Rl,Object.keys(v.stepStates).forEach(D=>{v.stepStates[D].actionType=Ve,v.stepStates[D].createdAt=new Date().toISOString()}),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1}),c(S))}}async function T(S,v){if(h){let D=h.find(N=>N.flowId===S);D&&D.stepStates[v]!==Ve&&(D.stepStates[v]=Ve),await f({...w,data:h},{optimisticData:{...w,data:h},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:h,isLoadingUserFlowStateData:!a,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:k,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:O,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:F,error:E}}function Ht(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:i}=je(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,co.useContext)(Y),[c,a]=(0,co.useState)(new Set),[C,d]=(0,co.useState)(new Set),x=zt();function y(f){let E=JSON.stringify(f);if(c.has(E))return null;c.add(E),a(c),C.add(f),d(C);let h=s==null?void 0:s.find(k=>k.flowSlug===f.flowSlug&&k.stepId===f.stepId&&k.actionType===f.actionType&&k.createdAt===f.createdAt);return x(`${t}flowResponses`,{...e,method:"POST",body:E}).then(k=>{k.status!==200&&k.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...r,f])):h||p(O=>[...O??[],f])})}async function w(f){f.foreignUserId&&(f.actionType===Et||f.actionType===Ke?await y(f):f.actionType===ne?await y(f):f.actionType===Oo?await y(f):f.actionType===Ye?await y(f):f.actionType===No?await y(f):f.actionType===Ve&&await y(f))}function P(){let f=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let h in E.stepStates){let k=E.stepStates[h];f.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:k.stepId,actionType:k.actionType,data:{},createdAt:new Date(k.createdAt),blocked:k.blocked,hidden:k.hidden})}}),[...f,...s]}return{addResponse:w,setFlowResponses:p,getFlowResponses:P}}var Jr=u(require("swr"));var ea=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Xr=e=>{let t=ea.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ta(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ta=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:C,setShouldGracefullyDegrade:d,readonly:x}=(0,Ge.useContext)(Y),y={data:[]},{verifySDKInitiated:w}=_t(),{addResponse:P,getFlowResponses:f}=Ht(),E=g=>fetch(g,e).then(b=>b.ok?b.json():(console.log(`Error fetching ${g} (${b.status}): ${b.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),y)).catch(b=>(console.log(`Error fetching ${g}: ${b}. Will gracefully degrade and hide Frigade`),d(!0),y)),{userFlowStatesData:h,isLoadingUserFlowStateData:k,optimisticallyMarkFlowCompleted:O,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:m,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:S}=je(),{data:v,error:D,isLoading:N}=(0,Jr.default)(n?`${t}flows${x?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,Ge.useEffect)(()=>{if(D){console.error(D);return}v&&v.data&&i(v.data)},[v,D]);function $(g){if(N)return null;let b=o.find(A=>A.slug===g);return!b&&o.length>0&&!k&&!N?(console.log(`Flow with slug ${g} not found`),null):(b==null?void 0:b.active)===!1?null:b}function M(g){var I;if(!$(g))return[];let b=$(g).data;return b?(b=H(b),(((I=JSON.parse(b))==null?void 0:I.data)??[]).map(ie=>{let vt=he(ie);return{handleSecondaryButtonClick:()=>{ie.skippable===!0&&J(g,ie.id,{skipped:!0})},...ie,complete:re(g,ie.id)===Ye||vt>=1,blocked:z(g,ie.id),hidden:V(g,ie.id),handlePrimaryButtonClick:()=>{(!ie.completionCriteria&&(ie.autoMarkCompleted||ie.autoMarkCompleted===void 0)||ie.completionCriteria&&ie.autoMarkCompleted===!0)&&J(g,ie.id)},progress:vt}}).filter(ie=>ie.hidden!==!0)):[]}function H(g){return g.replaceAll(/\${(.*?)}/g,(b,A)=>s[A]===void 0?"":String(s[A]).replace(/[\u00A0-\u9999<>\&]/g,function(I){return"&#"+I.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 j(g){if(!$(g))return[];let b=$(g).data;return b?(b=H(b),JSON.parse(b)??{}):[]}function ae(g,b){p(A=>({...A,[g]:b}))}function ue(g){!k&&!N&&g&&JSON.stringify(s)!=JSON.stringify({...s,...g})&&Object.keys(g).forEach(b=>{ae(b,g[b])})}let R=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Oo,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await S(g,b,I),P(I))},[r,h]),q=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Ve,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await T(g,b),P(I))},[r,h]),J=(0,Ge.useCallback)(async(g,b,A)=>{if(!w())return;let I={foreignUserId:r,flowSlug:g,stepId:b,actionType:Ye,data:A??{},createdAt:new Date,blocked:!1,hidden:!1};pe(I)&&(await m(g,b,I),P(I))},[r,h]),oe=(0,Ge.useCallback)(async(g,b)=>{if(!w()||se(g)===Ke)return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:Ke,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};await F(g),pe(A)&&P(A)},[r,h]),Be=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:Et,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&P(A)},[r,h]),Ue=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:ne,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&(await O(g),P(A))},[r,h]),Ee=(0,Ge.useCallback)(async(g,b)=>{if(!w())return;let A={foreignUserId:r,flowSlug:g,stepId:"unknown",actionType:No,data:b??{},createdAt:new Date,blocked:!1,hidden:!1};pe(A)&&(await O(g),P(A))},[r,h]);function pe(g){var b;if(!h&&g.actionType===Ve)return!1;if(h){let A=h.find(I=>I.flowId===g.flowSlug);if(g.actionType===Ve&&(!(A!=null&&A.stepStates[g.stepId])||A.stepStates[g.stepId].actionType===Ve)||A&&((b=A.stepStates[g.stepId])==null?void 0:b.actionType)===g.actionType||A&&A.flowState===ne&&g.actionType===ne)return!1}return!0}function re(g,b){let A=Ae(g,b);return k?null:A?A.actionType:Ve}function z(g,b){let A=Ae(g,b);return A?A.blocked:!1}function V(g,b){let A=Ae(g,b);return A?A.hidden:!1}function Ae(g,b){if(k)return null;let A=h==null?void 0:h.find(I=>I.flowId===g);return!A||!A.stepStates[b]?null:A.stepStates[b]??null}function xe(g){var A;if(k||!h)return null;if(se(g)===Ke)return M(g)[0]??null;let b=(A=h.find(I=>I.flowId===g))==null?void 0:A.lastStepId;return b?M(g).find(I=>I.id===b):null}function W(g){let b=xe(g);if(!b)return 0;let A=M(g).findIndex(I=>I.id===b.id)??0;return re(g,b.id)===Ye&&A<M(g).length-1?A+1:A}function he(g){if(!g.completionCriteria)return;let b=Xr(g.completionCriteria);if(b===null)return;let A=Ie(b),I=G(b);return I===0?void 0:A/I}function se(g){let b=h==null?void 0:h.find(A=>A.flowId===g);return b?b.flowState:null}function Ie(g){let b=M(g);return b.length===0?0:b.filter(I=>re(g,I.id)===Ye).length}function G(g){return M(g).length}function He(g){let b=o.find(A=>A.slug===g);return b?JSON.parse(b.data):null}function Re(g){if(x)return!1;if(k)return!0;if(g!=null&&g.targetingLogic&&h){let b=h.find(A=>A.flowId===g.slug);if(b)return b.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&r&&r.startsWith("guest_"))}function mr(g){return!Re($(g))}return{getFlow:$,getFlowData:He,isLoading:k||N,getStepStatus:re,getFlowSteps:M,getCurrentStepIndex:W,markStepStarted:R,markStepCompleted:J,markFlowNotStarted:oe,markFlowStarted:Be,markFlowCompleted:Ue,markFlowAborted:Ee,markStepNotStarted:q,getFlowStatus:se,getNumberOfStepsCompleted:Ie,getNumberOfSteps:G,targetingLogicShouldHideFlow:Re,setCustomVariable:ae,updateCustomVariables:ue,customVariables:s,getStepOptionalProgress:he,getFlowMetadata:j,isStepBlocked:z,isStepHidden:V,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:mr}}var At=require("react");var Vt="guest_";function jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,At.useContext)(Y),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=je(),c=zt(),{verifySDKInitiated:a}=_t();(0,At.useEffect)(()=>{if(e&&!t){if(e.startsWith(Vt))return;let x=`frigade-user-registered-${e}`;localStorage.getItem(x)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(x,"true"))}},[e,r,t]);let C=(0,At.useCallback)(async x=>{if(!a())return;let y={foreignId:e,properties:x};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(y)}),i(w=>({...w,...x})),p()},[e,n,r,p]),d=(0,At.useCallback)(async(x,y)=>{if(!a())return;let P={foreignId:e,events:[{event:x,properties:y}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(P)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:C,trackEventForUser:d}}var tn=require("uuid");var Le=u(require("react"));var $e=u(require("react")),fo=u(require("styled-components"));var Zr=u(require("react")),Rr=u(require("styled-components"));var Qr="fr-",mo="cfr-";function l(e,t){let o=`${Qr}${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+" "+mo+e}return o}function B(e){if(!e.className||e.className.indexOf(mo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Qr)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function ur(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function dt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${ur(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function uo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var oa=Rr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -1262,6 +1262,7 @@ ${i=>i.inlineStyles.map(([r,n])=>`.${mo}${r}.${mo}${r} { ${Object.entries(n).map
1262
1262
  font-weight: 600;
1263
1263
  font-size: 12px;
1264
1264
  line-height: 15px;
1265
+ margin-right: ${e=>e.type==="condensed"?"8px":"0"};
1265
1266
  text-align: ${e=>e.type==="condensed"?"left":"right"};
1266
1267
  color: ${e=>e.appearance.theme.colorPrimary};
1267
1268
  `,Xs=Eo.default.div`