@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 +4 -4
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +4 -4
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
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.
|
|
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);
|