@frigade/react 1.32.51 → 1.32.53
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 +5 -5
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +5 -5
- 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 xl=Object.create;var ko=Object.defineProperty;var Cl=Object.getOwnPropertyDescriptor;var Sl=Object.getOwnPropertyNames;var yl=Object.getPrototypeOf,bl=Object.prototype.hasOwnProperty;var wl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},Pr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Sl(t))!bl.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=Cl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?xl(yl(e)):{},Pr(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),Tl=e=>Pr(ko({},"__esModule",{value:!0}),e);var mp={};wl(mp,{CheckBox:()=>Ct,FormLabel:()=>dt,FormTextField:()=>$o,FrigadeBanner:()=>pl,FrigadeChecklist:()=>Qo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>rl,FrigadeForm:()=>lr,FrigadeGuide:()=>Os,FrigadeHeroChecklist:()=>ys,FrigadeNPSSurvey:()=>hl,FrigadeProgressBadge:()=>Ns,FrigadeProvider:()=>Wi,FrigadeSupportWidget:()=>Zs,FrigadeTour:()=>Ws,ProgressRing:()=>Bt,useFlowOpens:()=>Ne,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>Go,useUser:()=>Wt});module.exports=Tl(mp);var Y=g(require("react")),_i=require("styled-components");var fe=g(require("react"));var We=require("react");var Dt=g(require("react"));var vr="1.32.51 ";var Ie="https://api.frigade.com/v1/public/",_e="NOT_STARTED_STEP",oe="COMPLETED_FLOW",Po="ABORTED_FLOW",kt="STARTED_FLOW",Ve="NOT_STARTED_FLOW",je="COMPLETED_STEP",vo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(J);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":vr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Fl="frigade-last-call-at-",kl="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),so();let r=Fl+t,i=kl+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(r),p=window.localStorage.getItem(i);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return so()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(i,o.body)}let n;try{n=await fetch(t,o)}catch(s){return so(s)}return n?n.ok?n:so(n.statusText):so()}}function so(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(J);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 lo=require("react");var Ut=require("react");var Br=g(require("swr"));var Er=require("react");function Ne(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Er.useContext)(J);function n(c,u=!1){return e[c]??u}function s(c,u){t(T=>({...T,[c]:u}))}function p(c){t(u=>{let{[c]:T,...F}=u;return{...F}})}function d(c){i.includes(c)||r(u=>[...u,c])}function a(c){return i.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Pl="unknown";function ze(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Ne(),[s,p]=(0,Ut.useState)(!1),d={data:r.map(b=>({flowId:b.id,flowState:oe,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=b=>fetch(b,e).then(x=>{if(x.ok)return x.json();throw new Error("Failed to fetch user flow states")}).catch(x=>(console.log(`Error fetching ${b}: ${x}. Will gracefully degrade and hide Frigade`),i(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,Br.default)(t&&r&&o?`${Ie}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=f==null?void 0:f.data;(0,Ut.useEffect)(()=>{!s&&!c&&F&&p(!0)},[F,s,c]);async function y(b){if(F){let x=F.find(m=>m.flowId===b);x&&x.flowState!==oe&&(x.flowState=oe),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function S(b,x,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.stepStates[x]=m,C.flowState=kt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function v(b,x,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.lastStepId=x,C.stepStates[x]=m,C.flowState=kt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function E(b){if(F){let x=F.find(m=>m.flowId===b);x&&x.flowState!==Ve&&(x.flowState=Ve,x.lastStepId=Pl,Object.keys(x.stepStates).forEach(m=>{x.stepStates[m].actionType=_e,x.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(b))}}async function I(b,x){if(F){let m=F.find(C=>C.flowId===b);m&&m.stepStates[x]!==_e&&(m.stepStates[x]=_e),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:E,optimisticallyMarkStepCompleted:S,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:v,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=ze(),{failedFlowResponses:r,setFailedFlowResponses:i,flowResponses:n,setFlowResponses:s}=(0,lo.useContext)(J),[p,d]=(0,lo.useState)(new Set),[a,f]=(0,lo.useState)(new Set),c=$t();function u(y){let S=JSON.stringify(y);if(p.has(S))return null;p.add(S),d(p),a.add(y),f(a);let v=n==null?void 0:n.find(E=>E.flowSlug===y.flowSlug&&E.stepId===y.stepId&&E.actionType===y.actionType&&E.createdAt===y.createdAt);return c(`${Ie}flowResponses`,{...e,method:"POST",body:S}).then(E=>{E.status!==200&&E.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),i([...r,y])):v||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===kt||y.actionType===Ve?await u(y):y.actionType===oe?await u(y):y.actionType===vo?await u(y):y.actionType===je?await u(y):y.actionType===Po?await u(y):y.actionType===_e&&await u(y))}function F(){let y=[];return t==null||t.forEach(S=>{if(S&&S.stepStates&&Object.keys(S.stepStates).length!==0)for(let v in S.stepStates){let E=S.stepStates[v];y.push({foreignUserId:S.foreignUserId,flowSlug:S.flowId,stepId:E.stepId,actionType:E.actionType,data:{},createdAt:new Date(E.createdAt),blocked:E.blocked,hidden:E.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Ir=g(require("swr"));var vl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Ar=e=>{let t=vl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=El(r,"'","");n.startsWith("flow_")&&(o=n)}),o},El=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=Je(),{flows:t,setFlows:o,userId:r,publicApiKey:i,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,We.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:T,getFlowResponses:F}=_t(),y=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:S,isLoadingUserFlowStateData:v,optimisticallyMarkFlowCompleted:E,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:x,optimisticallyMarkStepStarted:m}=ze(),{data:C,error:k,isLoading:M}=(0,Ir.default)(i?`${Ie}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(k){console.error(k);return}C&&C.data&&(C.data=o(C.data))},[C,k]);function W(h){if(M)return null;let w=t.find(B=>B.slug===h);return!w&&t.length>0&&!v&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function H(h){var G;if(!W(h))return[];let w=W(h).data;return w?(w=N(w),(((G=JSON.parse(w))==null?void 0:G.data)??[]).map(Se=>{let V=ne(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&$(h,Se.id,{skipped:!0})},...Se,complete:L(h,Se.id)===je||V>=1,blocked:ue(h,Se.id),hidden:Te(h,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&$(h,Se.id)},progress:V}}).filter(Se=>Se.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,B)=>n[B]!==void 0?String(n[B]):"")}function z(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function U(h,w){s(B=>({...B,[h]:w}))}function D(h){!v&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{U(w,h[w])})}let me=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await m(h,w,G),T(G))},[r,S]),Ce=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:_e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await x(h,w),T(G))},[r,S]),$=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:je,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await b(h,w,G),T(G))},[r,S]),Ae=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===Ve)return;let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Ve,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),pe(B)&&T(B)},[r,S]),Pe=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:kt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&T(B)},[r,S]),le=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:oe,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await E(h),T(B))},[r,S]),q=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Po,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await E(h),T(B))},[r,S]);function pe(h){var w;if(!S&&h.actionType===_e)return!1;if(S){let B=S.find(G=>G.flowId===h.flowSlug);if(h.actionType===_e&&(!(B!=null&&B.stepStates[h.stepId])||B.stepStates[h.stepId].actionType===_e)||B&&((w=B.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||B&&B.flowState===oe&&h.actionType===oe)return!1}return!0}function L(h,w){let B=De(h,w);return v?null:B?B.actionType:_e}function ue(h,w){let B=De(h,w);return B?B.blocked:!1}function Te(h,w){let B=De(h,w);return B?B.hidden:!1}function De(h,w){if(v)return null;let B=S==null?void 0:S.find(G=>G.flowId===h);return!B||!B.stepStates[w]?null:B.stepStates[w]??null}function K(h){var B;if(v||!S)return null;if(te(h)===Ve)return H(h)[0]??null;let w=(B=S.find(G=>G.flowId===h))==null?void 0:B.lastStepId;return w?H(h).find(G=>G.id===w):null}function Fe(h){let w=K(h);if(!w)return 0;let B=H(h).findIndex(G=>G.id===w.id)??0;return L(h,w.id)===je&&B<H(h).length-1?B+1:B}function ne(h){if(!h.completionCriteria)return;let w=Ar(h.completionCriteria);if(w===null)return;let B=lt(w),G=at(w);return G===0?void 0:B/G}function te(h){let w=S==null?void 0:S.find(B=>B.flowId===h);return w?w.flowState:null}function lt(h){let w=H(h);return w.length===0?0:w.filter(G=>L(h,G.id)===je).length}function at(h){return H(h).length}function Ot(h){return JSON.parse(t.find(w=>w.slug===h).data)}function j(h){if(v)return!0;if(h!=null&&h.targetingLogic&&S){let w=S.find(B=>B.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&r&&r.startsWith("guest_"))}function Ue(h){return!j(W(h))}return{getFlow:W,getFlowData:Ot,isLoading:v||M,getStepStatus:L,getFlowSteps:H,getCurrentStepIndex:Fe,markStepStarted:me,markStepCompleted:$,markFlowNotStarted:Ae,markFlowStarted:Pe,markFlowCompleted:le,markFlowAborted:q,markStepNotStarted:Ce,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:j,setCustomVariable:U,updateCustomVariables:D,customVariables:n,getStepOptionalProgress:ne,getFlowMetadata:z,isStepBlocked:ue,isStepHidden:Te,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ue}}var Pt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,Pt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=ze(),p=$t(),{verifySDKInitiated:d}=Mt();(0,Pt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,i,t]);let a=(0,Pt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify(u)}),r(T=>({...T,...c})),s()},[e,n,i,s]),f=(0,Pt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Mi=require("uuid");var Be=g(require("react"));var Le=g(require("react")),co=g(require("styled-components"));var Or=g(require("react")),Dr=g(require("styled-components"));var Nr="fr-",ao="cfr-";function l(e,t){let o=`${Nr}${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+" "+ao+e}return o}function P(e){if(!e.className||e.className.indexOf(ao)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Nr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Ro(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function vt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ro(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ve(...e){return e.filter(Boolean).join(" ")}function Lr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Bl=Dr.default.div`
|
|
2
|
+
var xl=Object.create;var ko=Object.defineProperty;var Cl=Object.getOwnPropertyDescriptor;var Sl=Object.getOwnPropertyNames;var yl=Object.getPrototypeOf,bl=Object.prototype.hasOwnProperty;var wl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},Pr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Sl(t))!bl.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=Cl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?xl(yl(e)):{},Pr(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),Tl=e=>Pr(ko({},"__esModule",{value:!0}),e);var mp={};wl(mp,{CheckBox:()=>Ct,FormLabel:()=>dt,FormTextField:()=>$o,FrigadeBanner:()=>pl,FrigadeChecklist:()=>Qo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>rl,FrigadeForm:()=>lr,FrigadeGuide:()=>Os,FrigadeHeroChecklist:()=>ys,FrigadeNPSSurvey:()=>hl,FrigadeProgressBadge:()=>Ns,FrigadeProvider:()=>Wi,FrigadeSupportWidget:()=>Zs,FrigadeTour:()=>Ws,ProgressRing:()=>Bt,useFlowOpens:()=>Ne,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>Go,useUser:()=>Wt});module.exports=Tl(mp);var Y=g(require("react")),_i=require("styled-components");var fe=g(require("react"));var We=require("react");var Dt=g(require("react"));var vr="1.32.53 ";var Ie="https://api.frigade.com/v1/public/",_e="NOT_STARTED_STEP",oe="COMPLETED_FLOW",Po="ABORTED_FLOW",kt="STARTED_FLOW",Ve="NOT_STARTED_FLOW",je="COMPLETED_STEP",vo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(J);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":vr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Fl="frigade-last-call-at-",kl="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(J);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),so();let r=Fl+t,i=kl+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(r),p=window.localStorage.getItem(i);if(s&&p&&p==o.body){let d=new Date(s);if(new Date().getTime()-d.getTime()<1e3)return so()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(i,o.body)}let n;try{n=await fetch(t,o)}catch(s){return so(s)}return n?n.ok?n:so(n.statusText):so()}}function so(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(J);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 lo=require("react");var Ut=require("react");var Br=g(require("swr"));var Er=require("react");function Ne(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Er.useContext)(J);function n(c,u=!1){return e[c]??u}function s(c,u){t(T=>({...T,[c]:u}))}function p(c){t(u=>{let{[c]:T,...F}=u;return{...F}})}function d(c){i.includes(c)||r(u=>[...u,c])}function a(c){return i.includes(c)}function f(){return Object.values(e).some(c=>c)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:f,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:a}}var Pl="unknown";function ze(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Ne(),[s,p]=(0,Ut.useState)(!1),d={data:r.map(b=>({flowId:b.id,flowState:oe,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},a=b=>fetch(b,e).then(x=>{if(x.ok)return x.json();throw new Error("Failed to fetch user flow states")}).catch(x=>(console.log(`Error fetching ${b}: ${x}. Will gracefully degrade and hide Frigade`),i(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,Br.default)(t&&r&&o?`${Ie}userFlowStates?foreignUserId=${encodeURIComponent(o)}`:null,a,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=f==null?void 0:f.data;(0,Ut.useEffect)(()=>{!s&&!c&&F&&p(!0)},[F,s,c]);async function y(b){if(F){let x=F.find(m=>m.flowId===b);x&&x.flowState!==oe&&(x.flowState=oe),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function S(b,x,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.stepStates[x]=m,C.flowState=kt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function v(b,x,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.lastStepId=x,C.stepStates[x]=m,C.flowState=kt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function E(b){if(F){let x=F.find(m=>m.flowId===b);x&&x.flowState!==Ve&&(x.flowState=Ve,x.lastStepId=Pl,Object.keys(x.stepStates).forEach(m=>{x.stepStates[m].actionType=_e,x.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(b))}}async function I(b,x){if(F){let m=F.find(C=>C.flowId===b);m&&m.stepStates[x]!==_e&&(m.stepStates[x]=_e),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:E,optimisticallyMarkStepCompleted:S,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:v,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=ze(),{failedFlowResponses:r,setFailedFlowResponses:i,flowResponses:n,setFlowResponses:s}=(0,lo.useContext)(J),[p,d]=(0,lo.useState)(new Set),[a,f]=(0,lo.useState)(new Set),c=$t();function u(y){let S=JSON.stringify(y);if(p.has(S))return null;p.add(S),d(p),a.add(y),f(a);let v=n==null?void 0:n.find(E=>E.flowSlug===y.flowSlug&&E.stepId===y.stepId&&E.actionType===y.actionType&&E.createdAt===y.createdAt);return c(`${Ie}flowResponses`,{...e,method:"POST",body:S}).then(E=>{E.status!==200&&E.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),i([...r,y])):v||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===kt||y.actionType===Ve?await u(y):y.actionType===oe?await u(y):y.actionType===vo?await u(y):y.actionType===je?await u(y):y.actionType===Po?await u(y):y.actionType===_e&&await u(y))}function F(){let y=[];return t==null||t.forEach(S=>{if(S&&S.stepStates&&Object.keys(S.stepStates).length!==0)for(let v in S.stepStates){let E=S.stepStates[v];y.push({foreignUserId:S.foreignUserId,flowSlug:S.flowId,stepId:E.stepId,actionType:E.actionType,data:{},createdAt:new Date(E.createdAt),blocked:E.blocked,hidden:E.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Ir=g(require("swr"));var vl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Ar=e=>{let t=vl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=El(r,"'","");n.startsWith("flow_")&&(o=n)}),o},El=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Q(){let{config:e}=Je(),{flows:t,setFlows:o,userId:r,publicApiKey:i,customVariables:n,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,setFlowResponses:a,setShouldGracefullyDegrade:f}=(0,We.useContext)(J),c={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:T,getFlowResponses:F}=_t(),y=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),f(!0),c)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),f(!0),c)),{userFlowStatesData:S,isLoadingUserFlowStateData:v,optimisticallyMarkFlowCompleted:E,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:x,optimisticallyMarkStepStarted:m}=ze(),{data:C,error:k,isLoading:M}=(0,Ir.default)(i?`${Ie}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(k){console.error(k);return}C&&C.data&&(C.data=o(C.data))},[C,k]);function W(h){if(M)return null;let w=t.find(B=>B.slug===h);return!w&&t.length>0&&!v&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function H(h){var G;if(!W(h))return[];let w=W(h).data;return w?(w=N(w),(((G=JSON.parse(w))==null?void 0:G.data)??[]).map(Se=>{let V=ne(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&$(h,Se.id,{skipped:!0})},...Se,complete:L(h,Se.id)===je||V>=1,blocked:ue(h,Se.id),hidden:Te(h,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&$(h,Se.id)},progress:V}}).filter(Se=>Se.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,B)=>n[B]!==void 0?String(n[B]):"")}function z(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function U(h,w){s(B=>({...B,[h]:w}))}function D(h){!v&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{U(w,h[w])})}let me=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await m(h,w,G),T(G))},[r,S]),Ce=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:_e,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await x(h,w),T(G))},[r,S]),$=(0,We.useCallback)(async(h,w,B)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:je,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};pe(G)&&(await b(h,w,G),T(G))},[r,S]),Ae=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===Ve)return;let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Ve,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),pe(B)&&T(B)},[r,S]),Pe=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:kt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&T(B)},[r,S]),le=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:oe,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await E(h),T(B))},[r,S]),q=(0,We.useCallback)(async(h,w)=>{u();let B={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Po,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(B)&&(await E(h),T(B))},[r,S]);function pe(h){var w;if(!S&&h.actionType===_e)return!1;if(S){let B=S.find(G=>G.flowId===h.flowSlug);if(h.actionType===_e&&(!(B!=null&&B.stepStates[h.stepId])||B.stepStates[h.stepId].actionType===_e)||B&&((w=B.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||B&&B.flowState===oe&&h.actionType===oe)return!1}return!0}function L(h,w){let B=De(h,w);return v?null:B?B.actionType:_e}function ue(h,w){let B=De(h,w);return B?B.blocked:!1}function Te(h,w){let B=De(h,w);return B?B.hidden:!1}function De(h,w){if(v)return null;let B=S==null?void 0:S.find(G=>G.flowId===h);return!B||!B.stepStates[w]?null:B.stepStates[w]??null}function K(h){var B;if(v||!S)return null;if(te(h)===Ve)return H(h)[0]??null;let w=(B=S.find(G=>G.flowId===h))==null?void 0:B.lastStepId;return w?H(h).find(G=>G.id===w):null}function Fe(h){let w=K(h);if(!w)return 0;let B=H(h).findIndex(G=>G.id===w.id)??0;return L(h,w.id)===je&&B<H(h).length-1?B+1:B}function ne(h){if(!h.completionCriteria)return;let w=Ar(h.completionCriteria);if(w===null)return;let B=lt(w),G=at(w);return G===0?void 0:B/G}function te(h){let w=S==null?void 0:S.find(B=>B.flowId===h);return w?w.flowState:null}function lt(h){let w=H(h);return w.length===0?0:w.filter(G=>L(h,G.id)===je).length}function at(h){return H(h).length}function Ot(h){return JSON.parse(t.find(w=>w.slug===h).data)}function j(h){if(v)return!0;if(h!=null&&h.targetingLogic&&S){let w=S.find(B=>B.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&r&&r.startsWith("guest_"))}function Ue(h){return!j(W(h))}return{getFlow:W,getFlowData:Ot,isLoading:v||M,getStepStatus:L,getFlowSteps:H,getCurrentStepIndex:Fe,markStepStarted:me,markStepCompleted:$,markFlowNotStarted:Ae,markFlowStarted:Pe,markFlowCompleted:le,markFlowAborted:q,markStepNotStarted:Ce,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:j,setCustomVariable:U,updateCustomVariables:D,customVariables:n,getStepOptionalProgress:ne,getFlowMetadata:z,isStepBlocked:ue,isStepHidden:Te,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ue}}var Pt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,Pt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=ze(),p=$t(),{verifySDKInitiated:d}=Mt();(0,Pt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,i,t]);let a=(0,Pt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify(u)}),r(T=>({...T,...c})),s()},[e,n,i,s]),f=(0,Pt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Ie}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Mi=require("uuid");var Be=g(require("react"));var Le=g(require("react")),co=g(require("styled-components"));var Or=g(require("react")),Dr=g(require("styled-components"));var Nr="fr-",ao="cfr-";function l(e,t){let o=`${Nr}${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+" "+ao+e}return o}function P(e){if(!e.className||e.className.indexOf(ao)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Nr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Ro(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function vt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ro(t)}: ${e.styleOverrides[t]};`).join(" "):""}function ve(...e){return e.filter(Boolean).join(" ")}function Lr(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Bl=Dr.default.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|
|
@@ -458,7 +458,7 @@ var xl=Object.create;var ko=Object.defineProperty;var Cl=Object.getOwnPropertyDe
|
|
|
458
458
|
margin-right: 8px;
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
|
-
`,ie=({onClick:e,title:t,style:o,disabled:r,type:i="inline",size:n="medium",secondary:s=!1,appearance:p,withMargin:d=!0,classPrefix:a=""})=>{function f(){let c=s?"buttonSecondary":"button";return a===""?c:`${a}${Lr(c)}`}return fi.default.createElement(Zl,{secondary:s,appearance:p,disabled:r,onClick:e,style:o,type:i,withMargin:d,size:n,className:l(f(),p)},t)};var gi=({step:e,canContinue:t,appearance:o,onPrimaryClick:r,onSecondaryClick:i,formType:n,selectedStep:s,steps:p,onBack:d,allowBackNavigation:a,errorMessage:f})=>{let c=n==="inline"?"inline":"full-width",u=p.length>1&&s!=0&&a;return ct.default.createElement(ct.default.Fragment,null,f&&ct.default.createElement(ai,{appearance:o,className:l("formCTAError",o)},f),ct.default.createElement(li,{showBackButton:u,className:l("formCTAContainer",o)},u&&ct.default.createElement(ie,{title:"\u2190",onClick:d,secondary:!0,withMargin:!1,type:c,appearance:o}),ct.default.createElement(pi,{className:l("ctaWrapper",o)},e.secondaryButtonTitle?ct.default.createElement(ie,{title:e.secondaryButtonTitle,onClick:i,secondary:!0,withMargin:!1,type:c,appearance:o}):null," ",e.primaryButtonTitle?ct.default.createElement(ie,{disabled:!t,withMargin:!1,title:e.primaryButtonTitle,onClick:r,type:c,appearance:o}):null)))};var zo=g(require("react")),hi=g(require("styled-components"));var Rl=hi.default.div`
|
|
461
|
+
`,ie=({onClick:e,title:t,style:o,disabled:r,type:i="inline",size:n="medium",secondary:s=!1,appearance:p,withMargin:d=!0,classPrefix:a=""})=>{function f(){let c=s?"buttonSecondary":"button";return a===""?c:`${a}${Lr(c)}`}return fi.default.createElement(Zl,{secondary:s,appearance:p,disabled:r,onClick:e,style:o,type:i,withMargin:d,size:n,className:l(f(),p)},t)};var gi=({step:e,canContinue:t,appearance:o,onPrimaryClick:r,onSecondaryClick:i,formType:n,selectedStep:s,steps:p,onBack:d,allowBackNavigation:a,errorMessage:f})=>{let c=n==="inline"?"inline":"full-width",u=p.length>1&&s!=0&&a;return ct.default.createElement(ct.default.Fragment,null,f&&ct.default.createElement(ai,{appearance:o,className:l("formCTAError",o)},f),ct.default.createElement(li,{showBackButton:u,className:l("formCTAContainer",o)},u&&ct.default.createElement(ie,{title:"\u2190",onClick:d,secondary:!0,withMargin:!1,type:c,appearance:o,style:{maxWidth:"90px"}}),ct.default.createElement(pi,{className:l("ctaWrapper",o)},e.secondaryButtonTitle?ct.default.createElement(ie,{title:e.secondaryButtonTitle,onClick:i,secondary:!0,withMargin:!1,type:c,appearance:o}):null," ",e.primaryButtonTitle?ct.default.createElement(ie,{disabled:!t,withMargin:!1,title:e.primaryButtonTitle,onClick:r,type:c,appearance:o}):null)))};var zo=g(require("react")),hi=g(require("styled-components"));var Rl=hi.default.div`
|
|
462
462
|
text-align: center;
|
|
463
463
|
`,xi=({stepCount:e=0,currentStep:t=0,className:o,appearance:r})=>{let{theme:i}=re().mergeAppearanceWithDefault(r);return zo.default.createElement(Rl,{className:o},zo.default.createElement("svg",{width:16*e-8,height:8,viewBox:`0 0 ${16*e-8} 8`,fill:"none"},Array(e).fill(null).map((n,s)=>zo.default.createElement("rect",{key:s,x:16*s,y:0,width:8,height:8,rx:4,fill:t===s?i.colorPrimary:"#E6E6E6"}))))};var xt=g(require("react")),Et=g(require("styled-components"));var Ci=require("react");function de(){let e=(0,Ci.useContext)(J);function t(i){r(i.primaryButtonUri,i.primaryButtonUriTarget)}function o(i){r(i.secondaryButtonUri,i.secondaryButtonUriTarget)}function r(i,n){if(!i)return;let s=i.startsWith("http")?"_blank":"_self";n&&n!=="_blank"&&(s="_self"),e.navigate(i,s)}return{primaryCTAClickSideEffects:t,secondaryCTAClickSideEffects:o,handleUrl:r}}var ea=Et.default.div`
|
|
464
464
|
display: flex;
|
|
@@ -1529,7 +1529,7 @@ ${r=>r.inlineStyles.map(([i,n])=>`.${ao}${i}.${ao}${i} { ${Object.entries(n).map
|
|
|
1529
1529
|
}
|
|
1530
1530
|
`,cl=st.default.button`
|
|
1531
1531
|
border: 1px solid ${e=>e.appearance.theme.colorBorder};
|
|
1532
|
-
border-radius:
|
|
1532
|
+
border-radius: 8px;
|
|
1533
1533
|
// If selected make border color primary and text color color priamry
|
|
1534
1534
|
border-color: ${e=>e.selected?e.appearance.theme.colorPrimary:e.appearance.theme.colorBorder};
|
|
1535
1535
|
color: ${e=>e.selected?e.appearance.theme.colorPrimary:e.appearance.theme.colorText};
|
|
@@ -1551,12 +1551,12 @@ ${r=>r.inlineStyles.map(([i,n])=>`.${ao}${i}.${ao}${i} { ${Object.entries(n).map
|
|
|
1551
1551
|
`,wr=st.default.div`
|
|
1552
1552
|
display: flex;
|
|
1553
1553
|
justify-content: flex-end;
|
|
1554
|
-
margin-top:
|
|
1554
|
+
margin-top: 16px;
|
|
1555
1555
|
gap: 8px;
|
|
1556
1556
|
`,ml=st.default.div`
|
|
1557
1557
|
display: flex;
|
|
1558
1558
|
justify-content: space-between;
|
|
1559
|
-
margin-top:
|
|
1559
|
+
margin-top: 8px;
|
|
1560
1560
|
`,Tr=st.default.div`
|
|
1561
1561
|
font-size: 12px;
|
|
1562
1562
|
line-height: 16px;
|