@frigade/react 1.32.48 → 1.32.49

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 hl=Object.create;var ko=Object.defineProperty;var xl=Object.getOwnPropertyDescriptor;var Cl=Object.getOwnPropertyNames;var Sl=Object.getPrototypeOf,yl=Object.prototype.hasOwnProperty;var bl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},Fr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Cl(t))!yl.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=xl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?hl(Sl(e)):{},Fr(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),wl=e=>Fr(ko({},"__esModule",{value:!0}),e);var cp={};bl(cp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>Lo,FrigadeBanner:()=>al,FrigadeChecklist:()=>Yo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>ol,FrigadeForm:()=>nr,FrigadeGuide:()=>ks,FrigadeHeroChecklist:()=>cs,FrigadeNPSSurvey:()=>gl,FrigadeProgressBadge:()=>Ts,FrigadeProvider:()=>Ni,FrigadeSupportWidget:()=>Qs,FrigadeTour:()=>zs,ProgressRing:()=>At,useFlowOpens:()=>Le,useFlowResponses:()=>_t,useFlows:()=>J,useOrganization:()=>Ho,useUser:()=>Wt});module.exports=wl(cp);var q=g(require("react")),Ai=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var kr="1.32.48 ";var Ne="https://api.frigade.com/v1/public/",_e="NOT_STARTED_STEP",oe="COMPLETED_FLOW",Po="ABORTED_FLOW",Pt="STARTED_FLOW",Ve="NOT_STARTED_FLOW",je="COMPLETED_STEP",vo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(X);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":kr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Tl="frigade-last-call-at-",Fl="frigade-last-call-data-";function Mt(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(X);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),so();let r=Tl+t,i=Fl+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 $t(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(X);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 vr=g(require("swr"));var Pr=require("react");function Le(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Pr.useContext)(X);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 kl="unknown";function ze(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(X),{resetOpenFlowState:n}=Le(),[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(S=>{if(S.ok)return S.json();throw new Error("Failed to fetch user flow states")}).catch(S=>(console.log(`Error fetching ${b}: ${S}. Will gracefully degrade and hide Frigade`),i(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,vr.default)(t&&r&&o?`${Ne}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 S=F.find(m=>m.flowId===b);S&&S.flowState!==oe&&(S.flowState=oe),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function C(b,S,m){if(F){let x=F.find(k=>k.flowId===b);x&&(x.stepStates[S]=m,x.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function B(b,S,m){if(F){let x=F.find(k=>k.flowId===b);x&&(x.lastStepId=S,x.stepStates[S]=m,x.flowState=Pt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function v(b){if(F){let S=F.find(m=>m.flowId===b);S&&S.flowState!==Ve&&(S.flowState=Ve,S.lastStepId=kl,Object.keys(S.stepStates).forEach(m=>{S.stepStates[m].actionType=_e,S.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(b))}}async function A(b,S){if(F){let m=F.find(x=>x.flowId===b);m&&m.stepStates[S]!==_e&&(m.stepStates[S]=_e),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:v,optimisticallyMarkStepCompleted:C,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:B,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=ze(),{failedFlowResponses:r,setFailedFlowResponses:i,flowResponses:n,setFlowResponses:s}=(0,lo.useContext)(X),[p,d]=(0,lo.useState)(new Set),[a,f]=(0,lo.useState)(new Set),c=Mt();function u(y){let C=JSON.stringify(y);if(p.has(C))return null;p.add(C),d(p),a.add(y),f(a);let B=n==null?void 0:n.find(v=>v.flowSlug===y.flowSlug&&v.stepId===y.stepId&&v.actionType===y.actionType&&v.createdAt===y.createdAt);return c(`${Ne}flowResponses`,{...e,method:"POST",body:C}).then(v=>{v.status!==200&&v.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),i([...r,y])):B||s(A=>[...A??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||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(C=>{if(C&&C.stepStates&&Object.keys(C.stepStates).length!==0)for(let B in C.stepStates){let v=C.stepStates[B];y.push({foreignUserId:C.foreignUserId,flowSlug:C.flowId,stepId:v.stepId,actionType:v.actionType,data:{},createdAt:new Date(v.createdAt),blocked:v.blocked,hidden:v.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Br=g(require("swr"));var Pl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Er=e=>{let t=Pl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=vl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},vl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function J(){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)(X),c={data:[]},{verifySDKInitiated:u}=$t(),{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:C,isLoadingUserFlowStateData:B,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:S,optimisticallyMarkStepStarted:m}=ze(),{data:x,error:k,isLoading:M}=(0,Br.default)(i?`${Ne}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(k){console.error(k);return}x&&x.data&&(x.data=o(x.data))},[x,k]);function z(h){if(M)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!B&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(h){var j;if(!z(h))return[];let w=z(h).data;return w?(w=N(w),(((j=JSON.parse(w))==null?void 0:j.data)??[]).map(ye=>{let V=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&H(h,ye.id,{skipped:!0})},...ye,complete:L(h,ye.id)===je||V>=1,blocked:le(h,ye.id),hidden:Pe(h,ye.id),handlePrimaryButtonClick:()=>{(!ye.completionCriteria&&(ye.autoMarkCompleted||ye.autoMarkCompleted===void 0)||ye.completionCriteria&&ye.autoMarkCompleted===!0)&&H(h,ye.id)},progress:V}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function W(h){if(!z(h))return[];let w=z(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function D(h,w){s(E=>({...E,[h]:w}))}function $(h){!B&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{D(w,h[w])})}let ie=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await m(h,w,j),T(j))},[r,C]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:_e,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await S(h,w),T(j))},[r,C]),H=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:je,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await b(h,w,j),T(j))},[r,C]),Me=(0,We.useCallback)(async(h,w)=>{if(u(),ee(h)===Ve)return;let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Ve,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await A(h),me(E)&&T(E)},[r,C]),ke=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Pt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&T(E)},[r,C]),G=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:oe,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&(await v(h),T(E))},[r,C]),de=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Po,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&(await v(h),T(E))},[r,C]);function me(h){var w;if(!C&&h.actionType===_e)return!1;if(C){let E=C.find(j=>j.flowId===h.flowSlug);if(h.actionType===_e&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===_e)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===oe&&h.actionType===oe)return!1}return!0}function L(h,w){let E=ve(h,w);return B?null:E?E.actionType:_e}function le(h,w){let E=ve(h,w);return E?E.blocked:!1}function Pe(h,w){let E=ve(h,w);return E?E.hidden:!1}function ve(h,w){if(B)return null;let E=C==null?void 0:C.find(j=>j.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function Y(h){var E;if(B||!C)return null;if(ee(h)===Ve)return _(h)[0]??null;let w=(E=C.find(j=>j.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(j=>j.id===w):null}function Se(h){let w=Y(h);if(!w)return 0;let E=_(h).findIndex(j=>j.id===w.id)??0;return L(h,w.id)===je&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=Er(h.completionCriteria);if(w===null)return;let E=lt(w),j=at(w);return j===0?void 0:E/j}function ee(h){let w=C==null?void 0:C.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(j=>L(h,j.id)===je).length}function at(h){return _(h).length}function te(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(B)return!0;if(h!=null&&h.targetingLogic&&C){let w=C.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&r&&r.startsWith("guest_"))}function Ft(h){return!Ee(z(h))}return{getFlow:z,getFlowData:te,isLoading:B||M,getStepStatus:L,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:ie,markStepCompleted:H,markFlowNotStarted:Me,markFlowStarted:ke,markFlowCompleted:G,markFlowAborted:de,markStepNotStarted:ne,getFlowStatus:ee,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:D,updateCustomVariables:$,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:W,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,vt.useContext)(X),{config:n}=Je(),{mutateUserFlowState:s}=ze(),p=Mt(),{verifySDKInitiated:d}=$t();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,i,t]);let a=(0,vt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify(u)}),r(T=>({...T,...c})),s()},[e,n,i,s]),f=(0,vt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Ei=require("uuid");var Ie=g(require("react"));var Oe=g(require("react")),co=g(require("styled-components"));var Nr=g(require("react")),Lr=g(require("styled-components"));var Ar="fr-",ao="cfr-";function l(e,t){let o=`${Ar}${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(Ar)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Jo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Et(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Jo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Be(...e){return e.filter(Boolean).join(" ")}function Ir(e){return e.charAt(0).toUpperCase()+e.slice(1)}var El=Lr.default.div`
2
+ var hl=Object.create;var ko=Object.defineProperty;var xl=Object.getOwnPropertyDescriptor;var Cl=Object.getOwnPropertyNames;var Sl=Object.getPrototypeOf,yl=Object.prototype.hasOwnProperty;var bl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},Fr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Cl(t))!yl.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=xl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?hl(Sl(e)):{},Fr(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),wl=e=>Fr(ko({},"__esModule",{value:!0}),e);var cp={};bl(cp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>Lo,FrigadeBanner:()=>al,FrigadeChecklist:()=>Yo,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>ol,FrigadeForm:()=>nr,FrigadeGuide:()=>ks,FrigadeHeroChecklist:()=>cs,FrigadeNPSSurvey:()=>gl,FrigadeProgressBadge:()=>Ts,FrigadeProvider:()=>Ni,FrigadeSupportWidget:()=>Qs,FrigadeTour:()=>zs,ProgressRing:()=>At,useFlowOpens:()=>Le,useFlowResponses:()=>_t,useFlows:()=>J,useOrganization:()=>Ho,useUser:()=>Wt});module.exports=wl(cp);var q=g(require("react")),Ai=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var kr="1.32.49 ";var Ne="https://api.frigade.com/v1/public/",_e="NOT_STARTED_STEP",oe="COMPLETED_FLOW",Po="ABORTED_FLOW",Pt="STARTED_FLOW",Ve="NOT_STARTED_FLOW",je="COMPLETED_STEP",vo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(X);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":kr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var Tl="frigade-last-call-at-",Fl="frigade-last-call-data-";function Mt(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(X);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),so();let r=Tl+t,i=Fl+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 $t(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(X);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 vr=g(require("swr"));var Pr=require("react");function Le(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Pr.useContext)(X);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 kl="unknown";function ze(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(X),{resetOpenFlowState:n}=Le(),[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(S=>{if(S.ok)return S.json();throw new Error("Failed to fetch user flow states")}).catch(S=>(console.log(`Error fetching ${b}: ${S}. Will gracefully degrade and hide Frigade`),i(!0),d)),{data:f,isLoading:c,mutate:u,error:T}=(0,vr.default)(t&&r&&o?`${Ne}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 S=F.find(m=>m.flowId===b);S&&S.flowState!==oe&&(S.flowState=oe),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function C(b,S,m){if(F){let x=F.find(k=>k.flowId===b);x&&(x.stepStates[S]=m,x.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function B(b,S,m){if(F){let x=F.find(k=>k.flowId===b);x&&(x.lastStepId=S,x.stepStates[S]=m,x.flowState=Pt),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function v(b){if(F){let S=F.find(m=>m.flowId===b);S&&S.flowState!==Ve&&(S.flowState=Ve,S.lastStepId=kl,Object.keys(S.stepStates).forEach(m=>{S.stepStates[m].actionType=_e,S.stepStates[m].createdAt=new Date().toISOString()}),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1}),n(b))}}async function A(b,S){if(F){let m=F.find(x=>x.flowId===b);m&&m.stepStates[S]!==_e&&(m.stepStates[S]=_e),await u({...f,data:F},{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!s,mutateUserFlowState:u,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:v,optimisticallyMarkStepCompleted:C,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:B,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=ze(),{failedFlowResponses:r,setFailedFlowResponses:i,flowResponses:n,setFlowResponses:s}=(0,lo.useContext)(X),[p,d]=(0,lo.useState)(new Set),[a,f]=(0,lo.useState)(new Set),c=Mt();function u(y){let C=JSON.stringify(y);if(p.has(C))return null;p.add(C),d(p),a.add(y),f(a);let B=n==null?void 0:n.find(v=>v.flowSlug===y.flowSlug&&v.stepId===y.stepId&&v.actionType===y.actionType&&v.createdAt===y.createdAt);return c(`${Ne}flowResponses`,{...e,method:"POST",body:C}).then(v=>{v.status!==200&&v.status!==201?(console.log("Failed to send flow response for step "+y.stepId+". Will retry again later."),i([...r,y])):B||s(A=>[...A??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||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(C=>{if(C&&C.stepStates&&Object.keys(C.stepStates).length!==0)for(let B in C.stepStates){let v=C.stepStates[B];y.push({foreignUserId:C.foreignUserId,flowSlug:C.flowId,stepId:v.stepId,actionType:v.actionType,data:{},createdAt:new Date(v.createdAt),blocked:v.blocked,hidden:v.hidden})}}),[...y,...n]}return{addResponse:T,setFlowResponses:s,getFlowResponses:F}}var Br=g(require("swr"));var Pl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Er=e=>{let t=Pl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=vl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},vl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function J(){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)(X),c={data:[]},{verifySDKInitiated:u}=$t(),{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:C,isLoadingUserFlowStateData:B,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:A,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:S,optimisticallyMarkStepStarted:m}=ze(),{data:x,error:k,isLoading:M}=(0,Br.default)(i?`${Ne}flows`:null,y,{keepPreviousData:!0});(0,We.useEffect)(()=>{if(k){console.error(k);return}x&&x.data&&(x.data=o(x.data))},[x,k]);function z(h){if(M)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!B&&!M?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(h){var j;if(!z(h))return[];let w=z(h).data;return w?(w=N(w),(((j=JSON.parse(w))==null?void 0:j.data)??[]).map(ye=>{let V=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&H(h,ye.id,{skipped:!0})},...ye,complete:L(h,ye.id)===je||V>=1,blocked:le(h,ye.id),hidden:Pe(h,ye.id),handlePrimaryButtonClick:()=>{(!ye.completionCriteria&&(ye.autoMarkCompleted||ye.autoMarkCompleted===void 0)||ye.completionCriteria&&ye.autoMarkCompleted===!0)&&H(h,ye.id)},progress:V}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function W(h){if(!z(h))return[];let w=z(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function D(h,w){s(E=>({...E,[h]:w}))}function $(h){!B&&!M&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{D(w,h[w])})}let ie=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await m(h,w,j),T(j))},[r,C]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:_e,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await S(h,w),T(j))},[r,C]),H=(0,We.useCallback)(async(h,w,E)=>{u();let j={foreignUserId:r,flowSlug:h,stepId:w,actionType:je,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};me(j)&&(await b(h,w,j),T(j))},[r,C]),Me=(0,We.useCallback)(async(h,w)=>{if(u(),ee(h)===Ve)return;let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Ve,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await A(h),me(E)&&T(E)},[r,C]),ke=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Pt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&T(E)},[r,C]),G=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:oe,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&(await v(h),T(E))},[r,C]),de=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:Po,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};me(E)&&(await v(h),T(E))},[r,C]);function me(h){var w;if(!C&&h.actionType===_e)return!1;if(C){let E=C.find(j=>j.flowId===h.flowSlug);if(h.actionType===_e&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===_e)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===oe&&h.actionType===oe)return!1}return!0}function L(h,w){let E=ve(h,w);return B?null:E?E.actionType:_e}function le(h,w){let E=ve(h,w);return E?E.blocked:!1}function Pe(h,w){let E=ve(h,w);return E?E.hidden:!1}function ve(h,w){if(B)return null;let E=C==null?void 0:C.find(j=>j.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function Y(h){var E;if(B||!C)return null;if(ee(h)===Ve)return _(h)[0]??null;let w=(E=C.find(j=>j.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(j=>j.id===w):null}function Se(h){let w=Y(h);if(!w)return 0;let E=_(h).findIndex(j=>j.id===w.id)??0;return L(h,w.id)===je&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=Er(h.completionCriteria);if(w===null)return;let E=lt(w),j=at(w);return j===0?void 0:E/j}function ee(h){let w=C==null?void 0:C.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(j=>L(h,j.id)===je).length}function at(h){return _(h).length}function te(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(B)return!0;if(h!=null&&h.targetingLogic&&C){let w=C.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&r&&r.startsWith("guest_"))}function Ft(h){return!Ee(z(h))}return{getFlow:z,getFlowData:te,isLoading:B||M,getStepStatus:L,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:ie,markStepCompleted:H,markFlowNotStarted:Me,markFlowStarted:ke,markFlowCompleted:G,markFlowAborted:de,markStepNotStarted:ne,getFlowStatus:ee,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:D,updateCustomVariables:$,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:W,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,vt.useContext)(X),{config:n}=Je(),{mutateUserFlowState:s}=ze(),p=Mt(),{verifySDKInitiated:d}=$t();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(c,"true"))}},[e,i,t]);let a=(0,vt.useCallback)(async c=>{d();let u={foreignId:e,properties:c};await p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify(u)}),r(T=>({...T,...c})),s()},[e,n,i,s]),f=(0,vt.useCallback)(async(c,u)=>{d();let F={foreignId:e,events:[{event:c,properties:u}]};await p(`${Ne}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var Ei=require("uuid");var Ie=g(require("react"));var Oe=g(require("react")),co=g(require("styled-components"));var Nr=g(require("react")),Lr=g(require("styled-components"));var Ar="fr-",ao="cfr-";function l(e,t){let o=`${Ar}${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(Ar)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Jo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Et(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Jo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Be(...e){return e.filter(Boolean).join(" ")}function Ir(e){return e.charAt(0).toUpperCase()+e.slice(1)}var El=Lr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -268,7 +268,7 @@ var hl=Object.create;var ko=Object.defineProperty;var xl=Object.getOwnPropertyDe
268
268
  height: 60px;
269
269
  padding: 0 18px;
270
270
  margin-bottom: 10px;
271
- `;function Xr({formInput:e,customFormTypeProps:t,onSaveInputData:o,inputData:r}){var a;let i=e,[n,s]=(0,qe.useState)((r==null?void 0:r.choice)||[]),[p,d]=(0,qe.useState)(!1);return(0,qe.useEffect)(()=>{n.length==0&&!p&&(d(!0),o({choice:[]}))},[]),(0,qe.useEffect)(()=>{o({choice:n})},[n]),qe.default.createElement(Vl,null,qe.default.createElement(pt,{title:i.title,required:i.required,appearance:t.appearance}),(a=i.props.options)==null?void 0:a.map(f=>qe.default.createElement(jl,{appearance:t.appearance,key:f.id,value:f.id,"data-selected":n.includes(f.id),onClick:()=>{if(n.includes(f.id)){s(n.filter(c=>c!==f.id));return}n.length<i.props.maxChoices?s([...n,f.id]):n.length==1&&i.props.maxChoices==1&&s([f.id])}},f.title)),qe.default.createElement(Ht,{title:i.subtitle,appearance:t.appearance}))}var fo=g(require("react"));var rr=g(require("styled-components"));var Jr=g(require("dompurify"));function be(e){return{__html:Jr.default.sanitize(e,{ALLOWED_TAGS:["b","i","a","span","div","p","pre","u","br","img"],ALLOWED_ATTR:["style","class","target","id","href","alt","src"]})}}var Gl=rr.default.h1`
271
+ `;function Xr({formInput:e,customFormTypeProps:t,onSaveInputData:o,inputData:r}){var a;let i=e,[n,s]=(0,qe.useState)((r==null?void 0:r.choice)||[]),[p,d]=(0,qe.useState)(!1);return(0,qe.useEffect)(()=>{n.length==0&&!p&&(d(!0),o({choice:[]}))},[]),(0,qe.useEffect)(()=>{o({choice:n})},[n]),qe.default.createElement(Vl,null,qe.default.createElement(pt,{title:i.title,required:i.required,appearance:t.appearance}),(a=i.props.options)==null?void 0:a.map(f=>qe.default.createElement(jl,{appearance:t.appearance,className:l("multipleChoiceListItem",t.appearance),key:f.id,value:f.id,"data-selected":n.includes(f.id),onClick:()=>{if(n.includes(f.id)){s(n.filter(c=>c!==f.id));return}n.length<i.props.maxChoices?s([...n,f.id]):n.length==1&&i.props.maxChoices==1&&s([f.id])}},f.title)),qe.default.createElement(Ht,{title:i.subtitle,appearance:t.appearance}))}var fo=g(require("react"));var rr=g(require("styled-components"));var Jr=g(require("dompurify"));function be(e){return{__html:Jr.default.sanitize(e,{ALLOWED_TAGS:["b","i","a","span","div","p","pre","u","br","img"],ALLOWED_ATTR:["style","class","target","id","href","alt","src"]})}}var Gl=rr.default.h1`
272
272
  ${e=>P(e)} {
273
273
  font-style: normal;
274
274
  font-weight: 600;