@frigade/react 1.32.14 → 1.32.16

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 Ws=Object.create;var fo=Object.defineProperty;var Hs=Object.getOwnPropertyDescriptor;var zs=Object.getOwnPropertyNames;var Gs=Object.getPrototypeOf,js=Object.prototype.hasOwnProperty;var Vs=(e,t)=>{for(var o in t)fo(e,o,{get:t[o],enumerable:!0})},lr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of zs(t))!js.call(e,r)&&r!==o&&fo(e,r,{get:()=>t[r],enumerable:!(i=Hs(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?Ws(Gs(e)):{},lr(t||!e||!e.__esModule?fo(o,"default",{value:e,enumerable:!0}):o,e)),qs=e=>lr(fo({},"__esModule",{value:!0}),e);var Aa={};Vs(Aa,{FrigadeBanner:()=>_s,FrigadeChecklist:()=>Mo,FrigadeEmbeddedTip:()=>Os,FrigadeForm:()=>qo,FrigadeGuide:()=>os,FrigadeHeroChecklist:()=>zn,FrigadeProgressBadge:()=>es,FrigadeProvider:()=>di,FrigadeSupportWidget:()=>Is,FrigadeTour:()=>xs,useFlowOpens:()=>Ee,useFlowResponses:()=>It,useFlows:()=>Z,useOrganization:()=>Ao,useUser:()=>Co});module.exports=qs(Aa);var Y=f(require("react")),ai=require("styled-components");var ae=f(require("react"));var Be=require("react");var Ft=f(require("react"));var ar="1.32.14 ";var we="https://api.frigade.com/v1/public/",Ie="NOT_STARTED_STEP",re="COMPLETED_FLOW",ho="ABORTED_FLOW",ft="STARTED_FLOW",He="NOT_STARTED_FLOW",De="COMPLETED_STEP",xo="STARTED_STEP";function ze(){let{publicApiKey:e,userId:t}=Ft.default.useContext(K);return{config:(0,Ft.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ar,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function kt(){let{shouldGracefullyDegrade:e}=Ft.default.useContext(K);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 Pt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Ft.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 Jt=require("react");var vt=require("react");var dr=f(require("swr"));var pr=require("react");function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=(0,pr.useContext)(K);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,...x}=d;return{...x}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Ks="unknown";function Ae(){let{config:e}=ze(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,vt.useContext)(K),{resetOpenFlowState:n}=Ee(),[s,p]=(0,vt.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:x,isLoading:m,mutate:u,error:F}=(0,dr.default)(t&&i&&o?`${we}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),C=x==null?void 0:x.data;(0,vt.useEffect)(()=>{!s&&!m&&C&&p(!0)},[C,s,m]);async function y(v){if(C){let c=C.find(g=>g.flowId===v);c&&c.flowState!==re&&(c.flowState=re),await u(Promise.resolve({...x,data:C}),{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function b(v,c,g){if(C){let w=C.find(I=>I.flowId===v);w&&(w.stepStates[c]=g,w.flowState=ft),await u(Promise.resolve({...x,data:C}),{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function E(v,c,g){if(C){let w=C.find(I=>I.flowId===v);w&&(w.lastStepId=c,w.stepStates[c]=g,w.flowState=ft),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function P(v){if(C){let c=C.find(g=>g.flowId===v);c&&c.flowState!==He&&(c.flowState=He,c.lastStepId=Ks,Object.keys(c.stepStates).forEach(g=>{c.stepStates[g].actionType=Ie,c.stepStates[g].createdAt=new Date().toISOString()}),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1}),n(v))}}async function B(v,c){if(C){let g=C.find(w=>w.flowId===v);g&&g.stepStates[c]!==Ie&&(g.stepStates[c]=Ie),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:C,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:E,error:F}}function It(){let{config:e}=ze(),{userFlowStatesData:t,mutateUserFlowState:o}=Ae(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,Jt.useContext)(K),[p,d]=(0,Jt.useState)(new Set),[l,x]=(0,Jt.useState)(new Set),m=kt();function u(y){let b=JSON.stringify(y);if(p.has(b))return null;p.add(b),d(p),l.add(y),x(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(`${we}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(B=>[...B??[],y])})}async function F(y){y.foreignUserId&&(y.actionType===ft||y.actionType===He?await u(y):y.actionType===re?await u(y):y.actionType===xo?await u(y):y.actionType===De?await u(y):y.actionType===ho?await u(y):y.actionType===Ie&&await u(y))}function C(){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:F,setFlowResponses:s,getFlowResponses:C}}var mr=f(require("swr"));var Ys=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,cr=e=>{let t=Ys.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Xs(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Xs=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:x}=(0,Be.useContext)(K),m={data:[]},{verifySDKInitiated:u}=Pt(),{addResponse:F,getFlowResponses:C}=It(),y=h=>fetch(h,e).then(T=>T.ok?T.json():(console.log(`Error fetching ${h} (${T.status}): ${T.statusText}. .Will gracefully degrade and hide Frigade`),x(!0),m)).catch(T=>(console.log(`Error fetching ${h}: ${T}. Will gracefully degrade and hide Frigade`),x(!0),m)),{userFlowStatesData:b,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:g}=Ae(),{data:w,error:I,isLoading:_}=(0,mr.default)(r?`${we}flows`:null,y,{keepPreviousData:!0});(0,Be.useEffect)(()=>{if(I){console.error(I);return}w&&w.data&&(w.data=o(w.data))},[w,I]);function W(h){let T=t.find(S=>S.slug===h);return!T&&t.length>0&&!E&&!_?(console.log(`Flow with slug ${h} not found`),null):T.active===!1?null:T}function H(h){var M;if(!W(h))return[];let T=W(h).data;return T?(T=L(T),(((M=JSON.parse(T))==null?void 0:M.data)??[]).map(ie=>{let Xt=Re(ie);return{handleSecondaryButtonClick:()=>{ie.skippable===!0&&$(h,ie.id,{skipped:!0})},...ie,complete:N(h,ie.id)===De||Xt>=1,blocked:ce(h,ie.id),hidden:Ze(h,ie.id),handlePrimaryButtonClick:()=>{(!ie.completionCriteria&&(ie.autoMarkCompleted||ie.autoMarkCompleted===void 0)||ie.completionCriteria&&ie.autoMarkCompleted===!0)&&$(h,ie.id)},progress:Xt}}).filter(ie=>ie.hidden!==!0)):[]}function L(h){return h.replace(/\${(.*?)}/g,(T,S)=>n[S]!==void 0?String(n[S]):"")}function z(h){if(!W(h))return[];let T=W(h).data;return T?(T=L(T),JSON.parse(T)??{}):[]}function D(h,T){s(S=>({...S,[h]:T}))}function Q(h){!E&&!_&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(T=>{D(T,h[T])})}let j=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:xo,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await g(h,T,M),F(M))},[i,b]),V=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:Ie,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await c(h,T),F(M))},[i,b]),$=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:De,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await v(h,T,M),F(M))},[i,b]),oe=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:He,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};await B(h),Se(S)&&F(S)},[i,b]),q=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ft,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&F(S)},[i,b]),R=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:re,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&(await P(h),F(S))},[i,b]),nt=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ho,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&(await P(h),F(S))},[i,b]);function Se(h){var T;if(!b&&h.actionType===Ie)return!1;if(b){let S=b.find(M=>M.flowId===h.flowSlug);if(h.actionType===Ie&&(!(S!=null&&S.stepStates[h.stepId])||S.stepStates[h.stepId].actionType===Ie)||S&&((T=S.stepStates[h.stepId])==null?void 0:T.actionType)===h.actionType)return!1}return!0}function N(h,T){let S=me(h,T);return E?null:S?S.actionType:Ie}function ce(h,T){let S=me(h,T);return S?S.blocked:!1}function Ze(h,T){let S=me(h,T);return S?S.hidden:!1}function me(h,T){if(E)return null;let S=b==null?void 0:b.find(M=>M.flowId===h);return!S||!S.stepStates[T]?null:S.stepStates[T]??null}function be(h){var S;if(E||!b)return null;if(ut(h)===He)return H(h)[0]??null;let T=(S=b.find(M=>M.flowId===h))==null?void 0:S.lastStepId;return T?H(h).find(M=>M.id===T):null}function st(h){let T=be(h);if(!T)return 0;let S=H(h).findIndex(M=>M.id===T.id)??0;return N(h,T.id)===De&&S<H(h).length-1?S+1:S}function Re(h){if(!h.completionCriteria)return;let T=cr(h.completionCriteria);if(T===null)return;let S=Ne(T),M=G(T);return M===0?void 0:S/M}function ut(h){let T=b==null?void 0:b.find(S=>S.flowId===h);return T?T.flowState:null}function Ne(h){let T=H(h);return T.length===0?0:T.filter(M=>N(h,M.id)===De).length}function G(h){return H(h).length}function ve(h){return JSON.parse(t.find(T=>T.slug===h).data)}function wt(h){if(E)return!0;if(h!=null&&h.targetingLogic&&b){let T=b.find(S=>S.flowId===h.slug);if(T)return T.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function Uo(h){return!wt(W(h))}return{getFlow:W,getFlowData:ve,isLoading:E||_,getStepStatus:N,getFlowSteps:H,getCurrentStepIndex:st,markStepStarted:j,markStepCompleted:$,markFlowNotStarted:oe,markFlowStarted:q,markFlowCompleted:R,markFlowAborted:nt,markStepNotStarted:V,getFlowStatus:ut,getNumberOfStepsCompleted:Ne,getNumberOfSteps:G,targetingLogicShouldHideFlow:wt,setCustomVariable:D,updateCustomVariables:Q,customVariables:n,getStepOptionalProgress:Re,getFlowMetadata:z,isStepBlocked:ce,isStepHidden:Ze,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Uo}}var gt=require("react");var Et="guest_";function Co(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,gt.useContext)(K),{config:n}=ze(),{mutateUserFlowState:s}=Ae(),p=kt(),{verifySDKInitiated:d}=Pt();(0,gt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Et))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${we}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 u={foreignId:e,properties:m};await p(`${we}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(F=>({...F,...m})),s()},[e,n,r,s]),x=(0,gt.useCallback)(async(m,u)=>{d();let C={foreignId:e,events:[{event:m,properties:u}]};await p(`${we}users`,{...n,method:"POST",body:JSON.stringify(C)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:x}}var si=require("uuid");var Te=f(require("react"));var Le=f(require("react")),Rt=f(require("styled-components"));var gr=f(require("react")),hr=f(require("styled-components"));var ur="fr-",Qt="cfr-";function a(e,t){let o=`${ur}${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+" "+Qt+e}return o}function k(e){if(!e.className||e.className.indexOf(Qt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ur)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function _o(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=>`${_o(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ke(...e){return e.filter(Boolean).join(" ")}function fr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Js=hr.default.div`
2
+ var Ws=Object.create;var fo=Object.defineProperty;var Hs=Object.getOwnPropertyDescriptor;var zs=Object.getOwnPropertyNames;var Gs=Object.getPrototypeOf,js=Object.prototype.hasOwnProperty;var Vs=(e,t)=>{for(var o in t)fo(e,o,{get:t[o],enumerable:!0})},lr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of zs(t))!js.call(e,r)&&r!==o&&fo(e,r,{get:()=>t[r],enumerable:!(i=Hs(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?Ws(Gs(e)):{},lr(t||!e||!e.__esModule?fo(o,"default",{value:e,enumerable:!0}):o,e)),qs=e=>lr(fo({},"__esModule",{value:!0}),e);var Aa={};Vs(Aa,{FrigadeBanner:()=>_s,FrigadeChecklist:()=>Mo,FrigadeEmbeddedTip:()=>Os,FrigadeForm:()=>qo,FrigadeGuide:()=>os,FrigadeHeroChecklist:()=>zn,FrigadeProgressBadge:()=>es,FrigadeProvider:()=>di,FrigadeSupportWidget:()=>Is,FrigadeTour:()=>xs,useFlowOpens:()=>Ee,useFlowResponses:()=>It,useFlows:()=>Z,useOrganization:()=>Ao,useUser:()=>Co});module.exports=qs(Aa);var Y=f(require("react")),ai=require("styled-components");var ae=f(require("react"));var Be=require("react");var Ft=f(require("react"));var ar="1.32.16 ";var we="https://api.frigade.com/v1/public/",Ie="NOT_STARTED_STEP",re="COMPLETED_FLOW",ho="ABORTED_FLOW",ft="STARTED_FLOW",He="NOT_STARTED_FLOW",De="COMPLETED_STEP",xo="STARTED_STEP";function ze(){let{publicApiKey:e,userId:t}=Ft.default.useContext(K);return{config:(0,Ft.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ar,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}function kt(){let{shouldGracefullyDegrade:e}=Ft.default.useContext(K);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 Pt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Ft.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 Jt=require("react");var vt=require("react");var dr=f(require("swr"));var pr=require("react");function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o}=(0,pr.useContext)(K);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,...x}=d;return{...x}})}function s(){return Object.values(e).some(p=>p)||o}return{getOpenFlowState:i,setOpenFlowState:r,resetOpenFlowState:n,hasOpenModals:s}}var Ks="unknown";function Ae(){let{config:e}=ze(),{publicApiKey:t,userId:o,flows:i,setShouldGracefullyDegrade:r}=(0,vt.useContext)(K),{resetOpenFlowState:n}=Ee(),[s,p]=(0,vt.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:x,isLoading:m,mutate:u,error:F}=(0,dr.default)(t&&i&&o?`${we}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,l,{keepPreviousData:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),C=x==null?void 0:x.data;(0,vt.useEffect)(()=>{!s&&!m&&C&&p(!0)},[C,s,m]);async function y(v){if(C){let c=C.find(g=>g.flowId===v);c&&c.flowState!==re&&(c.flowState=re),await u(Promise.resolve({...x,data:C}),{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function b(v,c,g){if(C){let w=C.find(I=>I.flowId===v);w&&(w.stepStates[c]=g,w.flowState=ft),await u(Promise.resolve({...x,data:C}),{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function E(v,c,g){if(C){let w=C.find(I=>I.flowId===v);w&&(w.lastStepId=c,w.stepStates[c]=g,w.flowState=ft),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}async function P(v){if(C){let c=C.find(g=>g.flowId===v);c&&c.flowState!==He&&(c.flowState=He,c.lastStepId=Ks,Object.keys(c.stepStates).forEach(g=>{c.stepStates[g].actionType=Ie,c.stepStates[g].createdAt=new Date().toISOString()}),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1}),n(v))}}async function B(v,c){if(C){let g=C.find(w=>w.flowId===v);g&&g.stepStates[c]!==Ie&&(g.stepStates[c]=Ie),await u({...x,data:C},{optimisticData:{...x,data:C},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:C,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:P,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:B,optimisticallyMarkStepStarted:E,error:F}}function It(){let{config:e}=ze(),{userFlowStatesData:t,mutateUserFlowState:o}=Ae(),{failedFlowResponses:i,setFailedFlowResponses:r,flowResponses:n,setFlowResponses:s}=(0,Jt.useContext)(K),[p,d]=(0,Jt.useState)(new Set),[l,x]=(0,Jt.useState)(new Set),m=kt();function u(y){let b=JSON.stringify(y);if(p.has(b))return null;p.add(b),d(p),l.add(y),x(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(`${we}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(B=>[...B??[],y])})}async function F(y){y.foreignUserId&&(y.actionType===ft||y.actionType===He?await u(y):y.actionType===re?await u(y):y.actionType===xo?await u(y):y.actionType===De?await u(y):y.actionType===ho?await u(y):y.actionType===Ie&&await u(y))}function C(){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:F,setFlowResponses:s,getFlowResponses:C}}var mr=f(require("swr"));var Ys=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,cr=e=>{let t=Ys.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=Xs(i,"'","");n.startsWith("flow_")&&(o=n)}),o},Xs=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:x}=(0,Be.useContext)(K),m={data:[]},{verifySDKInitiated:u}=Pt(),{addResponse:F,getFlowResponses:C}=It(),y=h=>fetch(h,e).then(T=>T.ok?T.json():(console.log(`Error fetching ${h} (${T.status}): ${T.statusText}. .Will gracefully degrade and hide Frigade`),x(!0),m)).catch(T=>(console.log(`Error fetching ${h}: ${T}. Will gracefully degrade and hide Frigade`),x(!0),m)),{userFlowStatesData:b,isLoadingUserFlowStateData:E,optimisticallyMarkFlowCompleted:P,optimisticallyMarkFlowNotStarted:B,optimisticallyMarkStepCompleted:v,optimisticallyMarkStepNotStarted:c,optimisticallyMarkStepStarted:g}=Ae(),{data:w,error:I,isLoading:_}=(0,mr.default)(r?`${we}flows`:null,y,{keepPreviousData:!0});(0,Be.useEffect)(()=>{if(I){console.error(I);return}w&&w.data&&(w.data=o(w.data))},[w,I]);function W(h){let T=t.find(S=>S.slug===h);return!T&&t.length>0&&!E&&!_?(console.log(`Flow with slug ${h} not found`),null):T.active===!1?null:T}function H(h){var M;if(!W(h))return[];let T=W(h).data;return T?(T=L(T),(((M=JSON.parse(T))==null?void 0:M.data)??[]).map(ie=>{let Xt=Re(ie);return{handleSecondaryButtonClick:()=>{ie.skippable===!0&&$(h,ie.id,{skipped:!0})},...ie,complete:N(h,ie.id)===De||Xt>=1,blocked:ce(h,ie.id),hidden:Ze(h,ie.id),handlePrimaryButtonClick:()=>{(!ie.completionCriteria&&(ie.autoMarkCompleted||ie.autoMarkCompleted===void 0)||ie.completionCriteria&&ie.autoMarkCompleted===!0)&&$(h,ie.id)},progress:Xt}}).filter(ie=>ie.hidden!==!0)):[]}function L(h){return h.replace(/\${(.*?)}/g,(T,S)=>n[S]!==void 0?String(n[S]):"")}function z(h){if(!W(h))return[];let T=W(h).data;return T?(T=L(T),JSON.parse(T)??{}):[]}function D(h,T){s(S=>({...S,[h]:T}))}function Q(h){!E&&!_&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(T=>{D(T,h[T])})}let j=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:xo,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await g(h,T,M),F(M))},[i,b]),V=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:Ie,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await c(h,T),F(M))},[i,b]),$=(0,Be.useCallback)(async(h,T,S)=>{u();let M={foreignUserId:i,flowSlug:h,stepId:T,actionType:De,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};Se(M)&&(await v(h,T,M),F(M))},[i,b]),oe=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:He,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};await B(h),Se(S)&&F(S)},[i,b]),q=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ft,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&F(S)},[i,b]),R=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:re,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&(await P(h),F(S))},[i,b]),nt=(0,Be.useCallback)(async(h,T)=>{u();let S={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ho,data:T??{},createdAt:new Date,blocked:!1,hidden:!1};Se(S)&&(await P(h),F(S))},[i,b]);function Se(h){var T;if(!b&&h.actionType===Ie)return!1;if(b){let S=b.find(M=>M.flowId===h.flowSlug);if(h.actionType===Ie&&(!(S!=null&&S.stepStates[h.stepId])||S.stepStates[h.stepId].actionType===Ie)||S&&((T=S.stepStates[h.stepId])==null?void 0:T.actionType)===h.actionType)return!1}return!0}function N(h,T){let S=me(h,T);return E?null:S?S.actionType:Ie}function ce(h,T){let S=me(h,T);return S?S.blocked:!1}function Ze(h,T){let S=me(h,T);return S?S.hidden:!1}function me(h,T){if(E)return null;let S=b==null?void 0:b.find(M=>M.flowId===h);return!S||!S.stepStates[T]?null:S.stepStates[T]??null}function be(h){var S;if(E||!b)return null;if(ut(h)===He)return H(h)[0]??null;let T=(S=b.find(M=>M.flowId===h))==null?void 0:S.lastStepId;return T?H(h).find(M=>M.id===T):null}function st(h){let T=be(h);if(!T)return 0;let S=H(h).findIndex(M=>M.id===T.id)??0;return N(h,T.id)===De&&S<H(h).length-1?S+1:S}function Re(h){if(!h.completionCriteria)return;let T=cr(h.completionCriteria);if(T===null)return;let S=Ne(T),M=G(T);return M===0?void 0:S/M}function ut(h){let T=b==null?void 0:b.find(S=>S.flowId===h);return T?T.flowState:null}function Ne(h){let T=H(h);return T.length===0?0:T.filter(M=>N(h,M.id)===De).length}function G(h){return H(h).length}function ve(h){return JSON.parse(t.find(T=>T.slug===h).data)}function wt(h){if(E)return!0;if(h!=null&&h.targetingLogic&&b){let T=b.find(S=>S.flowId===h.slug);if(T)return T.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function Uo(h){return!wt(W(h))}return{getFlow:W,getFlowData:ve,isLoading:E||_,getStepStatus:N,getFlowSteps:H,getCurrentStepIndex:st,markStepStarted:j,markStepCompleted:$,markFlowNotStarted:oe,markFlowStarted:q,markFlowCompleted:R,markFlowAborted:nt,markStepNotStarted:V,getFlowStatus:ut,getNumberOfStepsCompleted:Ne,getNumberOfSteps:G,targetingLogicShouldHideFlow:wt,setCustomVariable:D,updateCustomVariables:Q,customVariables:n,getStepOptionalProgress:Re,getFlowMetadata:z,isStepBlocked:ce,isStepHidden:Ze,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Uo}}var gt=require("react");var Et="guest_";function Co(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,gt.useContext)(K),{config:n}=ze(),{mutateUserFlowState:s}=Ae(),p=kt(),{verifySDKInitiated:d}=Pt();(0,gt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Et))return;let m=`frigade-user-registered-${e}`;localStorage.getItem(m)||(p(`${we}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 u={foreignId:e,properties:m};await p(`${we}users`,{...n,method:"POST",body:JSON.stringify(u)}),i(F=>({...F,...m})),s()},[e,n,r,s]),x=(0,gt.useCallback)(async(m,u)=>{d();let C={foreignId:e,events:[{event:m,properties:u}]};await p(`${we}users`,{...n,method:"POST",body:JSON.stringify(C)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:l,trackEventForUser:x}}var si=require("uuid");var Te=f(require("react"));var Le=f(require("react")),Rt=f(require("styled-components"));var gr=f(require("react")),hr=f(require("styled-components"));var ur="fr-",Qt="cfr-";function a(e,t){let o=`${ur}${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+" "+Qt+e}return o}function k(e){if(!e.className||e.className.indexOf(Qt)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ur)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function _o(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=>`${_o(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ke(...e){return e.filter(Boolean).join(" ")}function fr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Js=hr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -73,7 +73,7 @@ var Ws=Object.create;var fo=Object.defineProperty;var Hs=Object.getOwnPropertyDe
73
73
  }
74
74
  `,Rs=Rt.default.div`
75
75
  position: relative;
76
- flex: 1;
76
+ flex: 0 1 auto;
77
77
  `,el=Rt.default.div`
78
78
  position: absolute;
79
79
  top: 24px;
@@ -566,7 +566,7 @@ ${i=>i.inlineStyles.map(([r,n])=>`.${Qt}${r}.${Qt}${r} { ${Object.entries(n).map
566
566
  flex-grow: 1;
567
567
  position: relative;
568
568
  ${e=>e.textLocation=="top"?"width: 100%;":""}
569
- `,Yl=No.default.p`
569
+ `,Yl=No.default.span`
570
570
  font-weight: 500;
571
571
  font-size: 15px;
572
572
  line-height: 18px;
@@ -981,7 +981,7 @@ ${i=>i.inlineStyles.map(([r,n])=>`.${Qt}${r}.${Qt}${r} { ${Object.entries(n).map
981
981
  justify-content: space-between;
982
982
  background-color: ${e=>{var t,o;return(o=(t=e.appearance)==null?void 0:t.theme)==null?void 0:o.colorBackground}};
983
983
  border-radius: ${e=>{var t,o;return(o=(t=e.appearance)==null?void 0:t.theme)==null?void 0:o.borderRadius}}px;
984
- `;var ha=({title:e,subtitle:t,steps:o,onClose:i,visible:r,onCompleteStep:n,autoExpandFirstIncompleteStep:s=!0,autoCollapse:p=!0,autoExpandNextStep:d=!0,primaryColor:l="#000000",selectedStep:x,setSelectedStep:m,appearance:u,type:F,className:C})=>{let y=o.filter(c=>c.complete).length,[b,E]=(0,se.useState)(Array(o.length).fill(!0));(0,se.useEffect)(()=>{let c=[...b];if(s){for(let g=0;g<o.length;g++)if(!o[g].complete){c[g]=!1;break}E(c)}},[]),(0,se.useEffect)(()=>{P(x)},[x]);let P=c=>{let g=[...b];if(p)for(let w=0;w<b.length;++w)w!==c&&(g[w]=!0);g[c]=!g[c],E(g)};if(!r&&F=="modal")return se.default.createElement(se.default.Fragment,null);let B=se.default.createElement(se.default.Fragment,null,se.default.createElement(xn,null,se.default.createElement(Cn,{appearance:u,dangerouslySetInnerHTML:ue(e)}),se.default.createElement(Sn,{appearance:u,dangerouslySetInnerHTML:ue(t)})),se.default.createElement(qe,{display:"percent",count:y,total:o.length,fillColor:l,style:{margin:"14px 0px 8px 0px"},appearance:u})),v=se.default.createElement(yn,{className:ke(a("checklistContainer",u),C)},o.map((c,g)=>{let w=b[g];return se.default.createElement(hn,{appearance:u,stepData:c,collapsed:w,key:`modal-checklist-${c.id??g}`,onClick:()=>{if(x===g){P(g);return}m(g)},onPrimaryButtonClick:()=>{n&&n(g,c),c.handlePrimaryButtonClick&&c.handlePrimaryButtonClick(),d&&!c.completionCriteria&&g<b.length-1&&b[g+1]&&m(g+1)},onSecondaryButtonClick:()=>{c.handleSecondaryButtonClick&&c.handleSecondaryButtonClick()}})}));return F==="inline"?se.default.createElement(bn,{appearance:u,className:ke(a("checklistInlineContainer",u),C)},B,v):se.default.createElement(se.default.Fragment,null,se.default.createElement(lt,{onClose:i,visible:r,appearance:u,style:{maxWidth:"600px"},headerContent:B},v))},er=ha;var U=f(require("react"));var ct=f(require("react"));var X=f(require("styled-components"));var Tn=X.css`
984
+ `;var ha=({title:e,subtitle:t,steps:o,onClose:i,visible:r,onCompleteStep:n,autoExpandFirstIncompleteStep:s=!0,autoCollapse:p=!0,autoExpandNextStep:d=!0,primaryColor:l="#000000",selectedStep:x,setSelectedStep:m,appearance:u,type:F,className:C})=>{let y=o.filter(c=>c.complete).length,[b,E]=(0,se.useState)(Array(o.length).fill(!0));(0,se.useEffect)(()=>{let c=[...b];if(s){for(let g=0;g<o.length;g++)if(!o[g].complete){c[g]=!1;break}E(c)}},[]),(0,se.useEffect)(()=>{P(x)},[x]);let P=c=>{let g=[...b];if(p)for(let w=0;w<b.length;++w)w!==c&&(g[w]=!0);g[c]=!g[c],E(g)};if(!r&&F=="modal")return se.default.createElement(se.default.Fragment,null);let B=se.default.createElement(se.default.Fragment,null,se.default.createElement(xn,null,se.default.createElement(Cn,{appearance:u,className:a("checklistTitle",u),dangerouslySetInnerHTML:ue(e)}),se.default.createElement(Sn,{appearance:u,className:a("checklistSubtitle",u),dangerouslySetInnerHTML:ue(t)})),se.default.createElement(qe,{display:"percent",count:y,total:o.length,fillColor:l,style:{margin:"14px 0px 8px 0px"},appearance:u})),v=se.default.createElement(yn,{className:ke(a("checklistContainer",u),C)},o.map((c,g)=>{let w=b[g];return se.default.createElement(hn,{appearance:u,stepData:c,collapsed:w,key:`modal-checklist-${c.id??g}`,onClick:()=>{if(x===g){P(g);return}m(g)},onPrimaryButtonClick:()=>{n&&n(g,c),c.handlePrimaryButtonClick&&c.handlePrimaryButtonClick(),d&&!c.completionCriteria&&g<b.length-1&&b[g+1]&&m(g+1)},onSecondaryButtonClick:()=>{c.handleSecondaryButtonClick&&c.handleSecondaryButtonClick()}})}));return F==="inline"?se.default.createElement(bn,{appearance:u,className:ke(a("checklistInlineContainer",u),C)},B,v):se.default.createElement(se.default.Fragment,null,se.default.createElement(lt,{onClose:i,visible:r,appearance:u,style:{maxWidth:"600px"},headerContent:B},v))},er=ha;var U=f(require("react"));var ct=f(require("react"));var X=f(require("styled-components"));var Tn=X.css`
985
985
  border: 1px solid ${({theme:e})=>e.colorBorder};
986
986
  `,xa=X.css`
987
987
  box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.06);