@frigade/react 1.32.46 → 1.32.47

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.d.ts CHANGED
@@ -420,7 +420,7 @@ interface FormProps extends DefaultFrigadeFlowProps {
420
420
  * This function is called when the user submits data in a step.
421
421
  * If it returns a string, the flow will not proceed to the next step and the string will be displayed as an error message.
422
422
  */
423
- validationHandler?: (step: StepData, index: number, nextStep?: StepData, allFormData?: any, stepSpecificFormData?: object) => string | null | undefined;
423
+ validationHandler?: (step: StepData, index: number, nextStep?: StepData, allFormData?: any, stepSpecificFormData?: object) => Promise<string | null | undefined>;
424
424
  }
425
425
  declare const FrigadeForm: FC<FormProps>;
426
426
 
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var pl=Object.create;var ko=Object.defineProperty;var dl=Object.getOwnPropertyDescriptor;var cl=Object.getOwnPropertyNames;var ml=Object.getPrototypeOf,ul=Object.prototype.hasOwnProperty;var fl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},br=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of cl(t))!ul.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=dl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?pl(ml(e)):{},br(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),gl=e=>br(ko({},"__esModule",{value:!0}),e);var rp={};fl(rp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>No,FrigadeBanner:()=>tl,FrigadeChecklist:()=>Ko,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>Xs,FrigadeForm:()=>or,FrigadeGuide:()=>Cs,FrigadeHeroChecklist:()=>is,FrigadeNPSSurvey:()=>al,FrigadeProgressBadge:()=>hs,FrigadeProvider:()=>ki,FrigadeSupportWidget:()=>Gs,FrigadeTour:()=>Ls,ProgressRing:()=>It,useFlowOpens:()=>Oe,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>zo,useUser:()=>zt});module.exports=gl(rp);var K=g(require("react")),Ti=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var wr="1.32.46 ";var Le="https://api.frigade.com/v1/public/",Ue="NOT_STARTED_STEP",re="COMPLETED_FLOW",Po="ABORTED_FLOW",Pt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="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":wr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var hl="frigade-last-call-at-",xl="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=hl+t,i=xl+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 Fr=g(require("swr"));var Tr=require("react");function Oe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Tr.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 Cl="unknown";function _e(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Oe(),[s,p]=(0,Ut.useState)(!1),d={data:r.map(b=>({flowId:b.id,flowState:re,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,Fr.default)(t&&r&&o?`${Le}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!==re&&(S.flowState=re),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function x(b,S,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.stepStates[S]=m,C.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function A(b,S,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.lastStepId=S,C.stepStates[S]=m,C.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!==je&&(S.flowState=je,S.lastStepId=Cl,Object.keys(S.stepStates).forEach(m=>{S.stepStates[m].actionType=Ue,S.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,S){if(F){let m=F.find(C=>C.flowId===b);m&&m.stepStates[S]!==Ue&&(m.stepStates[S]=Ue),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:x,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:A,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=_e(),{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 x=JSON.stringify(y);if(p.has(x))return null;p.add(x),d(p),a.add(y),f(a);let A=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(`${Le}flowResponses`,{...e,method:"POST",body:x}).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])):A||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||y.actionType===je?await u(y):y.actionType===re?await u(y):y.actionType===vo?await u(y):y.actionType===Ge?await u(y):y.actionType===Po?await u(y):y.actionType===Ue&&await u(y))}function F(){let y=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let A in x.stepStates){let v=x.stepStates[A];y.push({foreignUserId:x.foreignUserId,flowSlug:x.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 Pr=g(require("swr"));var Sl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,kr=e=>{let t=Sl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=yl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},yl=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:x,isLoadingUserFlowStateData:A,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:S,optimisticallyMarkStepStarted:m}=_e(),{data:C,error:k,isLoading:D}=(0,Pr.default)(i?`${Le}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(D)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!A&&!D?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(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(ye=>{let j=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&z(h,ye.id,{skipped:!0})},...ye,complete:$(h,ye.id)===Ge||j>=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)&&z(h,ye.id)},progress:j}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function V(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function L(h,w){s(E=>({...E,[h]:w}))}function M(h){!A&&!D&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{L(w,h[w])})}let de=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await m(h,w,G),T(G))},[r,x]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:Ue,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await S(h,w),T(G))},[r,x]),z=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await b(h,w,G),T(G))},[r,x]),ke=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===je)return;let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),q(E)&&T(E)},[r,x]),Ne=(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};q(E)&&T(E)},[r,x]),H=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:re,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await v(h),T(E))},[r,x]),fe=(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};q(E)&&(await v(h),T(E))},[r,x]);function q(h){var w;if(!x&&h.actionType===Ue)return!1;if(x){let E=x.find(G=>G.flowId===h.flowSlug);if(h.actionType===Ue&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ue)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===re&&h.actionType===re)return!1}return!0}function $(h,w){let E=ve(h,w);return A?null:E?E.actionType:Ue}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(A)return null;let E=x==null?void 0:x.find(G=>G.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function X(h){var E;if(A||!x)return null;if(te(h)===je)return _(h)[0]??null;let w=(E=x.find(G=>G.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(G=>G.id===w):null}function Se(h){let w=X(h);if(!w)return 0;let E=_(h).findIndex(G=>G.id===w.id)??0;return $(h,w.id)===Ge&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=kr(h.completionCriteria);if(w===null)return;let E=lt(w),G=at(w);return G===0?void 0:E/G}function te(h){let w=x==null?void 0:x.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(G=>$(h,G.id)===Ge).length}function at(h){return _(h).length}function oe(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(A)return!0;if(h!=null&&h.targetingLogic&&x){let w=x.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(W(h))}return{getFlow:W,getFlowData:oe,isLoading:A||D,getStepStatus:$,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:de,markStepCompleted:z,markFlowNotStarted:ke,markFlowStarted:Ne,markFlowCompleted:H,markFlowAborted:fe,markStepNotStarted:ne,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:L,updateCustomVariables:M,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:V,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var Wt="guest_";function zt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,vt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=_e(),p=$t(),{verifySDKInitiated:d}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Le}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(`${Le}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(`${Le}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var bi=require("uuid");var Be=g(require("react"));var ze=g(require("react")),co=g(require("styled-components"));var Ar=g(require("react")),Ir=g(require("styled-components"));var vr="fr-",ao="cfr-";function l(e,t){let o=`${vr}${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(vr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Xo(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=>`${Xo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ae(...e){return e.filter(Boolean).join(" ")}function Er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bl=Ir.default.div`
2
+ var pl=Object.create;var ko=Object.defineProperty;var dl=Object.getOwnPropertyDescriptor;var cl=Object.getOwnPropertyNames;var ml=Object.getPrototypeOf,ul=Object.prototype.hasOwnProperty;var fl=(e,t)=>{for(var o in t)ko(e,o,{get:t[o],enumerable:!0})},br=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of cl(t))!ul.call(e,i)&&i!==o&&ko(e,i,{get:()=>t[i],enumerable:!(r=dl(t,i))||r.enumerable});return e};var g=(e,t,o)=>(o=e!=null?pl(ml(e)):{},br(t||!e||!e.__esModule?ko(o,"default",{value:e,enumerable:!0}):o,e)),gl=e=>br(ko({},"__esModule",{value:!0}),e);var rp={};fl(rp,{CheckBox:()=>Ct,FormLabel:()=>pt,FormTextField:()=>No,FrigadeBanner:()=>tl,FrigadeChecklist:()=>Ko,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>Xs,FrigadeForm:()=>or,FrigadeGuide:()=>Cs,FrigadeHeroChecklist:()=>is,FrigadeNPSSurvey:()=>al,FrigadeProgressBadge:()=>hs,FrigadeProvider:()=>ki,FrigadeSupportWidget:()=>Gs,FrigadeTour:()=>Ls,ProgressRing:()=>It,useFlowOpens:()=>Oe,useFlowResponses:()=>_t,useFlows:()=>Q,useOrganization:()=>zo,useUser:()=>zt});module.exports=gl(rp);var K=g(require("react")),Ti=require("styled-components");var ge=g(require("react"));var We=require("react");var Dt=g(require("react"));var wr="1.32.47 ";var Le="https://api.frigade.com/v1/public/",Ue="NOT_STARTED_STEP",re="COMPLETED_FLOW",Po="ABORTED_FLOW",Pt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="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":wr,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var hl="frigade-last-call-at-",xl="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=hl+t,i=xl+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 Fr=g(require("swr"));var Tr=require("react");function Oe(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Tr.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 Cl="unknown";function _e(){let{config:e}=Je(),{publicApiKey:t,userId:o,flows:r,setShouldGracefullyDegrade:i}=(0,Ut.useContext)(J),{resetOpenFlowState:n}=Oe(),[s,p]=(0,Ut.useState)(!1),d={data:r.map(b=>({flowId:b.id,flowState:re,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,Fr.default)(t&&r&&o?`${Le}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!==re&&(S.flowState=re),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function x(b,S,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.stepStates[S]=m,C.flowState=Pt),await u(Promise.resolve({...f,data:F}),{optimisticData:{...f,data:F},revalidate:!1,rollbackOnError:!1})}}async function A(b,S,m){if(F){let C=F.find(k=>k.flowId===b);C&&(C.lastStepId=S,C.stepStates[S]=m,C.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!==je&&(S.flowState=je,S.lastStepId=Cl,Object.keys(S.stepStates).forEach(m=>{S.stepStates[m].actionType=Ue,S.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,S){if(F){let m=F.find(C=>C.flowId===b);m&&m.stepStates[S]!==Ue&&(m.stepStates[S]=Ue),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:x,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:A,error:T}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=_e(),{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 x=JSON.stringify(y);if(p.has(x))return null;p.add(x),d(p),a.add(y),f(a);let A=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(`${Le}flowResponses`,{...e,method:"POST",body:x}).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])):A||s(I=>[...I??[],y])})}async function T(y){y.foreignUserId&&(y.actionType===Pt||y.actionType===je?await u(y):y.actionType===re?await u(y):y.actionType===vo?await u(y):y.actionType===Ge?await u(y):y.actionType===Po?await u(y):y.actionType===Ue&&await u(y))}function F(){let y=[];return t==null||t.forEach(x=>{if(x&&x.stepStates&&Object.keys(x.stepStates).length!==0)for(let A in x.stepStates){let v=x.stepStates[A];y.push({foreignUserId:x.foreignUserId,flowSlug:x.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 Pr=g(require("swr"));var Sl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,kr=e=>{let t=Sl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=yl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},yl=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:x,isLoadingUserFlowStateData:A,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:b,optimisticallyMarkStepNotStarted:S,optimisticallyMarkStepStarted:m}=_e(),{data:C,error:k,isLoading:D}=(0,Pr.default)(i?`${Le}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(D)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!A&&!D?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function _(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(ye=>{let j=ae(ye);return{handleSecondaryButtonClick:()=>{ye.skippable===!0&&z(h,ye.id,{skipped:!0})},...ye,complete:$(h,ye.id)===Ge||j>=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)&&z(h,ye.id)},progress:j}}).filter(ye=>ye.hidden!==!0)):[]}function N(h){return h.replace(/\${(.*?)}/g,(w,E)=>n[E]!==void 0?String(n[E]):"")}function V(h){if(!W(h))return[];let w=W(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function L(h,w){s(E=>({...E,[h]:w}))}function M(h){!A&&!D&&h&&JSON.stringify(n)!=JSON.stringify({...n,...h})&&Object.keys(h).forEach(w=>{L(w,h[w])})}let de=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:vo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await m(h,w,G),T(G))},[r,x]),ne=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:Ue,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await S(h,w),T(G))},[r,x]),z=(0,We.useCallback)(async(h,w,E)=>{u();let G={foreignUserId:r,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};q(G)&&(await b(h,w,G),T(G))},[r,x]),ke=(0,We.useCallback)(async(h,w)=>{if(u(),te(h)===je)return;let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),q(E)&&T(E)},[r,x]),Ne=(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};q(E)&&T(E)},[r,x]),H=(0,We.useCallback)(async(h,w)=>{u();let E={foreignUserId:r,flowSlug:h,stepId:"unknown",actionType:re,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};q(E)&&(await v(h),T(E))},[r,x]),fe=(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};q(E)&&(await v(h),T(E))},[r,x]);function q(h){var w;if(!x&&h.actionType===Ue)return!1;if(x){let E=x.find(G=>G.flowId===h.flowSlug);if(h.actionType===Ue&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===Ue)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===re&&h.actionType===re)return!1}return!0}function $(h,w){let E=ve(h,w);return A?null:E?E.actionType:Ue}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(A)return null;let E=x==null?void 0:x.find(G=>G.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function X(h){var E;if(A||!x)return null;if(te(h)===je)return _(h)[0]??null;let w=(E=x.find(G=>G.flowId===h))==null?void 0:E.lastStepId;return w?_(h).find(G=>G.id===w):null}function Se(h){let w=X(h);if(!w)return 0;let E=_(h).findIndex(G=>G.id===w.id)??0;return $(h,w.id)===Ge&&E<_(h).length-1?E+1:E}function ae(h){if(!h.completionCriteria)return;let w=kr(h.completionCriteria);if(w===null)return;let E=lt(w),G=at(w);return G===0?void 0:E/G}function te(h){let w=x==null?void 0:x.find(E=>E.flowId===h);return w?w.flowState:null}function lt(h){let w=_(h);return w.length===0?0:w.filter(G=>$(h,G.id)===Ge).length}function at(h){return _(h).length}function oe(h){return JSON.parse(t.find(w=>w.slug===h).data)}function Ee(h){if(A)return!0;if(h!=null&&h.targetingLogic&&x){let w=x.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(W(h))}return{getFlow:W,getFlowData:oe,isLoading:A||D,getStepStatus:$,getFlowSteps:_,getCurrentStepIndex:Se,markStepStarted:de,markStepCompleted:z,markFlowNotStarted:ke,markFlowStarted:Ne,markFlowCompleted:H,markFlowAborted:fe,markStepNotStarted:ne,getFlowStatus:te,getNumberOfStepsCompleted:lt,getNumberOfSteps:at,targetingLogicShouldHideFlow:Ee,setCustomVariable:L,updateCustomVariables:M,customVariables:n,getStepOptionalProgress:ae,getFlowMetadata:V,isStepBlocked:le,isStepHidden:Pe,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:d,isFlowAvailableToUser:Ft}}var vt=require("react");var Wt="guest_";function zt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,vt.useContext)(J),{config:n}=Je(),{mutateUserFlowState:s}=_e(),p=$t(),{verifySDKInitiated:d}=Mt();(0,vt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Wt))return;let c=`frigade-user-registered-${e}`;localStorage.getItem(c)||(p(`${Le}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(`${Le}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(`${Le}users`,{...n,method:"POST",body:JSON.stringify(F)}),s()},[e,n,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:f}}var bi=require("uuid");var Be=g(require("react"));var ze=g(require("react")),co=g(require("styled-components"));var Ar=g(require("react")),Ir=g(require("styled-components"));var vr="fr-",ao="cfr-";function l(e,t){let o=`${vr}${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(vr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function Xo(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=>`${Xo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ae(...e){return e.filter(Boolean).join(" ")}function Er(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bl=Ir.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -528,7 +528,7 @@ var pl=Object.create;var ko=Object.defineProperty;var dl=Object.getOwnPropertyDe
528
528
  color: ${e=>{var t,o;return(o=(t=e.appearance)==null?void 0:t.theme)==null?void 0:o.colorText}};
529
529
  display: flex;
530
530
  align-self: center;
531
- `;var hi=({stepData:e,setCanContinue:t,onSaveData:o,appearance:r})=>{let i=e.props,[n,s]=(0,we.useState)([]),[p,d]=(0,we.useState)(!1),[a,f]=(0,we.useState)(e.id);return(0,we.useEffect)(()=>{n.length==0&&!p&&(d(!0),o({choice:[]}))},[p]),(0,we.useEffect)(()=>{a!==e.id&&(f(e.id),s([]))},[e]),(0,we.useEffect)(()=>{o({choice:n}),n.length>=i.minChoices?t(!0):t(!1)},[n]),we.default.createElement(ai,{className:l("selectListContainer",r)},we.default.createElement(pi,null,we.default.createElement(di,{className:l("selectListTitle",r)},e.title),we.default.createElement(ci,{appearance:r,className:l("selectListSubtitle",r)},e.subtitle)),i.options.map((c,u)=>{let T=n.includes(c.id);return we.default.createElement(mi,{key:`select-item-${u}`,onClick:()=>{if(n.includes(c.id)){s(n.filter(F=>F!==c.id));return}n.length<i.maxChoices?s([...n,c.id]):n.length==1&&i.maxChoices==1&&s([c.id])},hideBottomBorder:u===i.options.length-1,className:l("selectListSelectItem",r)},we.default.createElement(ui,{className:l("selectListItemImage",r)},c.imageUri&&we.default.createElement(fi,{src:c.imageUri,alt:`select-icon-${u}`}),we.default.createElement(gi,{appearance:r,className:l("selectListSelectItemText",r)},c.title)),we.default.createElement(Ct,{appearance:r,value:T,primaryColor:r.theme.colorPrimary}))}))};var Z=g(require("react"));var _o=require("framer-motion"),ha=({children:e,id:t,shouldWrap:o=!1})=>Z.default.createElement(Z.default.Fragment,null,o?Z.default.createElement(_o.AnimatePresence,{initial:!1},Z.default.createElement(_o.motion.div,{key:t,initial:{opacity:1,y:"100%"},animate:{opacity:1,y:0},exit:{opacity:0,y:"-100%"},transition:{duration:.5,ease:"easeInOut"},style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:1,overflowY:"auto"}},e)):e),Wo=({appearance:e,steps:t,selectedStep:o,customStepTypes:r,customVariables:i,onButtonClick:n,onStepCompletion:s,flowId:p,type:d,hideOnFlowCompletion:a,onComplete:f,setVisible:c,setShowModal:u,onDismiss:T,showPagination:F=!1,customFormElements:y,allowBackNavigation:x,validationHandler:A})=>{var ve;let I={...{linkCollection:ri,multiInput:Gr,callToAction:ii,selectList:hi},...r},{primaryCTAClickSideEffects:b,secondaryCTAClickSideEffects:S}=me(),[m,C]=(0,Z.useState)(!1),[k,D]=(0,Z.useState)({}),[W,_]=(0,Z.useState)(!1),[N,V]=(0,Z.useState)(!1),[L,M]=(0,Z.useState)(null),de=t[o]??null,{markStepCompleted:ne,markStepStarted:z,isLoading:ke,updateCustomVariables:Ne,markFlowCompleted:H}=Q();(0,Z.useEffect)(()=>{Ne(i)},[i,ke]),(0,Z.useEffect)(()=>{window&&x&&!N&&(window.location.hash=t[o].id,V(!0))},[x,N,V]),(0,Z.useEffect)(()=>{var X;if(window&&((X=window==null?void 0:window.location)!=null&&X.hash)&&window.location.hash.replace("#","")!==t[o].id){let Se=window.location.hash.replace("#",""),ae=t.findIndex(te=>te.id===Se);ae!==-1&&z(p,t[ae].id)}},[(ve=window==null?void 0:window.location)==null?void 0:ve.hash,z,o,t]);function fe(){return{data:k[t[o].id]??{},stepId:t[o].id,customVariables:i}}function q(X,Se,ae){let te=o+1<t.length?t[o+1]:null;n&&n(X,o,Se,te),s&&s(X,ae,te,k,fe())}function $(X,Se){D(ae=>{let te={};return te[X.id]=Se,{...ae,...te}})}function le(X){return X.selectedStep.imageUri?Z.default.createElement(Qr,{image:X.selectedStep.imageUri,appearance:e,className:l("formContainerSidebarImage",e)}):null}let Pe=Z.default.createElement(Rr,{step:t[o],canContinue:m&&!W,formType:d,selectedStep:o,appearance:e,onPrimaryClick:async()=>{if(_(!0),A){let Se=A(t[o],o,t[o+1],k,fe());if(Se){M(Se),_(!1);return}else M(null)}let X={...fe()};await ne(p,t[o].id,X),o+1<t.length&&await z(p,t[o+1].id),q(t[o],"primary",o),o+1>=t.length&&(f&&f(),T&&T(),a&&(c&&c(!1),u(!1)),await H(p)),b(t[o]),_(!1),window&&x&&o+1<t.length&&(window.location.hash=t[o+1].id)},onSecondaryClick:()=>{q(t[o],"secondary",o),S(t[o])},onBack:async()=>{o-1>=0&&(_(!0),await z(p,t[o-1].id),_(!1))},steps:t,allowBackNavigation:x,errorMessage:L});return Z.default.createElement(Z.default.Fragment,null,Z.default.createElement(Yr,{className:l("formContainer",e)},Z.default.createElement(Xr,null,Z.default.createElement(ha,{id:o,shouldWrap:d==="large-modal"},Z.default.createElement(Jr,{key:de.id,type:d,className:l("formContent",e)},t.map(X=>{let Se=I[X.type];return de.id!==X.id?null:Z.default.createElement(Se,{key:X.id,stepData:X,canContinue:m,setCanContinue:C,onSaveData:ae=>{$(X,ae)},appearance:e,customFormElements:y,flowId:p})}),F&&Z.default.createElement(ti,{className:l("formPagination",e),appearance:e,stepCount:t.length,currentStep:o}),Pe))),d=="large-modal"&&Z.default.createElement(le,{selectedStep:t[o]})))};var qt=g(require("react")),xi=require("styled-components");function ce({appearance:e}){if(!e||!e.styleOverrides)return qt.default.createElement(qt.default.Fragment,null);let t=Object.entries(e.styleOverrides).filter(([r,i])=>typeof i=="object");if(t.length===0)return qt.default.createElement(qt.default.Fragment,null);let o=xi.createGlobalStyle`
531
+ `;var hi=({stepData:e,setCanContinue:t,onSaveData:o,appearance:r})=>{let i=e.props,[n,s]=(0,we.useState)([]),[p,d]=(0,we.useState)(!1),[a,f]=(0,we.useState)(e.id);return(0,we.useEffect)(()=>{n.length==0&&!p&&(d(!0),o({choice:[]}))},[p]),(0,we.useEffect)(()=>{a!==e.id&&(f(e.id),s([]))},[e]),(0,we.useEffect)(()=>{o({choice:n}),n.length>=i.minChoices?t(!0):t(!1)},[n]),we.default.createElement(ai,{className:l("selectListContainer",r)},we.default.createElement(pi,null,we.default.createElement(di,{className:l("selectListTitle",r)},e.title),we.default.createElement(ci,{appearance:r,className:l("selectListSubtitle",r)},e.subtitle)),i.options.map((c,u)=>{let T=n.includes(c.id);return we.default.createElement(mi,{key:`select-item-${u}`,onClick:()=>{if(n.includes(c.id)){s(n.filter(F=>F!==c.id));return}n.length<i.maxChoices?s([...n,c.id]):n.length==1&&i.maxChoices==1&&s([c.id])},hideBottomBorder:u===i.options.length-1,className:l("selectListSelectItem",r)},we.default.createElement(ui,{className:l("selectListItemImage",r)},c.imageUri&&we.default.createElement(fi,{src:c.imageUri,alt:`select-icon-${u}`}),we.default.createElement(gi,{appearance:r,className:l("selectListSelectItemText",r)},c.title)),we.default.createElement(Ct,{appearance:r,value:T,primaryColor:r.theme.colorPrimary}))}))};var Z=g(require("react"));var _o=require("framer-motion"),ha=({children:e,id:t,shouldWrap:o=!1})=>Z.default.createElement(Z.default.Fragment,null,o?Z.default.createElement(_o.AnimatePresence,{initial:!1},Z.default.createElement(_o.motion.div,{key:t,initial:{opacity:1,y:"100%"},animate:{opacity:1,y:0},exit:{opacity:0,y:"-100%"},transition:{duration:.5,ease:"easeInOut"},style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:1,overflowY:"auto"}},e)):e),Wo=({appearance:e,steps:t,selectedStep:o,customStepTypes:r,customVariables:i,onButtonClick:n,onStepCompletion:s,flowId:p,type:d,hideOnFlowCompletion:a,onComplete:f,setVisible:c,setShowModal:u,onDismiss:T,showPagination:F=!1,customFormElements:y,allowBackNavigation:x,validationHandler:A})=>{var ve;let I={...{linkCollection:ri,multiInput:Gr,callToAction:ii,selectList:hi},...r},{primaryCTAClickSideEffects:b,secondaryCTAClickSideEffects:S}=me(),[m,C]=(0,Z.useState)(!1),[k,D]=(0,Z.useState)({}),[W,_]=(0,Z.useState)(!1),[N,V]=(0,Z.useState)(!1),[L,M]=(0,Z.useState)(null),de=t[o]??null,{markStepCompleted:ne,markStepStarted:z,isLoading:ke,updateCustomVariables:Ne,markFlowCompleted:H}=Q();(0,Z.useEffect)(()=>{Ne(i)},[i,ke]),(0,Z.useEffect)(()=>{window&&x&&!N&&(window.location.hash=t[o].id,V(!0))},[x,N,V]),(0,Z.useEffect)(()=>{var X;if(window&&((X=window==null?void 0:window.location)!=null&&X.hash)&&window.location.hash.replace("#","")!==t[o].id){let Se=window.location.hash.replace("#",""),ae=t.findIndex(te=>te.id===Se);ae!==-1&&z(p,t[ae].id)}},[(ve=window==null?void 0:window.location)==null?void 0:ve.hash,z,o,t]);function fe(){return{data:k[t[o].id]??{},stepId:t[o].id,customVariables:i}}function q(X,Se,ae){let te=o+1<t.length?t[o+1]:null;n&&n(X,o,Se,te),s&&s(X,ae,te,k,fe())}function $(X,Se){D(ae=>{let te={};return te[X.id]=Se,{...ae,...te}})}function le(X){return X.selectedStep.imageUri?Z.default.createElement(Qr,{image:X.selectedStep.imageUri,appearance:e,className:l("formContainerSidebarImage",e)}):null}let Pe=Z.default.createElement(Rr,{step:t[o],canContinue:m&&!W,formType:d,selectedStep:o,appearance:e,onPrimaryClick:async()=>{if(_(!0),A){let Se=await A(t[o],o,t[o+1],k,fe());if(Se){M(Se),_(!1);return}else M(null)}let X={...fe()};await ne(p,t[o].id,X),o+1<t.length&&await z(p,t[o+1].id),q(t[o],"primary",o),o+1>=t.length&&(f&&f(),T&&T(),a&&(c&&c(!1),u(!1)),await H(p)),b(t[o]),_(!1),window&&x&&o+1<t.length&&(window.location.hash=t[o+1].id)},onSecondaryClick:()=>{q(t[o],"secondary",o),S(t[o])},onBack:async()=>{o-1>=0&&(_(!0),await z(p,t[o-1].id),_(!1))},steps:t,allowBackNavigation:x,errorMessage:L});return Z.default.createElement(Z.default.Fragment,null,Z.default.createElement(Yr,{className:l("formContainer",e)},Z.default.createElement(Xr,null,Z.default.createElement(ha,{id:o,shouldWrap:d==="large-modal"},Z.default.createElement(Jr,{key:de.id,type:d,className:l("formContent",e)},t.map(X=>{let Se=I[X.type];return de.id!==X.id?null:Z.default.createElement(Se,{key:X.id,stepData:X,canContinue:m,setCanContinue:C,onSaveData:ae=>{$(X,ae)},appearance:e,customFormElements:y,flowId:p})}),F&&Z.default.createElement(ti,{className:l("formPagination",e),appearance:e,stepCount:t.length,currentStep:o}),Pe))),d=="large-modal"&&Z.default.createElement(le,{selectedStep:t[o]})))};var qt=g(require("react")),xi=require("styled-components");function ce({appearance:e}){if(!e||!e.styleOverrides)return qt.default.createElement(qt.default.Fragment,null);let t=Object.entries(e.styleOverrides).filter(([r,i])=>typeof i=="object");if(t.length===0)return qt.default.createElement(qt.default.Fragment,null);let o=xi.createGlobalStyle`
532
532
  ${r=>r.inlineStyles.map(([i,n])=>`.${ao}${i}.${ao}${i} { ${Object.entries(n).map(([s,p])=>`${Xo(s)}: ${p};`).join(" ")} }`).join(" ")}`;return qt.default.createElement(o,{inlineStyles:t})}var or=({flowId:e,customStepTypes:t={},type:o="inline",visible:r,setVisible:i,customVariables:n,customFormElements:s,onComplete:p,appearance:d,hideOnFlowCompletion:a=!0,onStepCompletion:f,onButtonClick:c,dismissible:u=!0,endFlowOnDismiss:T=!1,modalPosition:F="center",repeatable:y=!1,onDismiss:x,showPagination:A=!1,allowBackNavigation:v=!1,validationHandler:I})=>{let{getFlow:b,getFlowSteps:S,isLoading:m,targetingLogicShouldHideFlow:C,getFlowStatus:k,getCurrentStepIndex:D,markFlowCompleted:W,markFlowNotStarted:_}=Q(),N=D(e),{mergeAppearanceWithDefault:V}=ie(),[L,M]=(0,Be.useState)(!1),{setOpenFlowState:de,getOpenFlowState:ne}=Oe();d=V(d);let[z,ke]=r!==void 0&&i!==void 0?[r,i]:[ne(e,!0),q=>de(e,q)];if((0,Be.useEffect)(()=>{!L&&!m&&(M(!0),k(e)===re&&y&&_(e),M(!0))},[L,M,m]),m)return null;let Ne=b(e);if(!Ne||C(Ne))return null;let H=S(e);if(!H||r!==void 0&&r===!1||k(e)===re&&a)return null;let fe=()=>{ke(!1),x&&x(),T===!0&&W(e)};if(F=="center"&&o==="modal"||o==="large-modal"){let q={padding:"24px"};return o==="large-modal"?(q.width="85%",q.height="90%",q.maxHeight="800px",q.minHeight="500px",q.padding="0"):q.width="400px",Be.default.createElement(gt,{appearance:d,onClose:fe,visible:z,style:q,dismissible:u},Be.default.createElement(ce,{appearance:d}),Be.default.createElement(Wo,{appearance:d,steps:H,selectedStep:N,customStepTypes:t,customVariables:n,onButtonClick:c,onStepCompletion:f,flowId:e,type:o,hideOnFlowCompletion:a,onComplete:p,setVisible:i,setShowModal:ke,onDismiss:x,showPagination:A,customFormElements:s,allowBackNavigation:v,validationHandler:I}))}return o==="modal"&&F!=="center"?Be.default.createElement(Dr,{appearance:d,onClose:fe,visible:z},Be.default.createElement(ce,{appearance:d}),Be.default.createElement(Wo,{appearance:d,steps:H,selectedStep:N,customStepTypes:t,customVariables:n,onButtonClick:c,onStepCompletion:f,flowId:e,type:o,hideOnFlowCompletion:a,onComplete:p,setVisible:i,setShowModal:ke,onDismiss:x,showPagination:A,customFormElements:s,allowBackNavigation:v,validationHandler:I})):Be.default.createElement(Be.default.Fragment,null,Be.default.createElement(ce,{appearance:d}),Be.default.createElement(Wo,{appearance:d,steps:H,selectedStep:N,customStepTypes:t,customVariables:n,onButtonClick:c,onStepCompletion:f,flowId:e,type:o,hideOnFlowCompletion:a,onComplete:p,setVisible:i,setShowModal:ke,onDismiss:x,showPagination:A,customFormElements:s,allowBackNavigation:v,validationHandler:I}))},Ci=or;var Bt=require("react");function zo(){let{organizationId:e,userId:t,setOrganizationId:o}=(0,Bt.useContext)(J),{mutateUserFlowState:r}=_e(),{config:i}=Je(),n=$t(),{verifySDKInitiated:s}=Mt();(0,Bt.useEffect)(()=>{if(t&&e){if(t.startsWith(Wt))return;let a=`frigade-user-group-registered-${t}-${e}`;localStorage.getItem(a)||(n(`${Le}userGroups`,{...i,method:"POST",body:JSON.stringify({foreignUserId:t,foreignUserGroupId:e})}),localStorage.setItem(a,"true"))}},[t,e]);let p=(0,Bt.useCallback)(async a=>{if(s(),!e||!t){console.error("Cannot add properties to organization: Organization ID and User ID must both be set.",{organizationId:e,userId:t});return}let f={foreignUserId:t,foreignUserGroupId:e,properties:a};await n(`${Le}userGroups`,{...i,method:"POST",body:JSON.stringify(f)}),r()},[e,t,i,r]),d=(0,Bt.useCallback)(async(a,f)=>{if(s(),!e||!t){console.error("Cannot track event for organization: Organization ID and User ID must both be set.",{organizationId:e,userId:t});return}let u={foreignUserId:t,foreignUserGroupId:e,events:[{event:a,properties:f}]};await n(`${Le}userGroups`,{...i,method:"POST",body:JSON.stringify(u)}),r()},[e,t,i,r]);return{organizationId:e,setOrganizationId:o,addPropertiesToOrganization:p,trackEventForOrganization:d}}var Si="xFrigade_guestUserId",yi="xFrigade_userId",wi=({})=>{let{setFlowResponses:e}=_t(),{userFlowStatesData:t,isLoadingUserFlowStateData:o,mutateUserFlowState:r}=_e(),{userId:i,setUserId:n}=zt(),[s,p]=(0,ge.useState)(null),{getFlowStatus:d}=Q(),{flows:a,userProperties:f,setIsNewGuestUser:c,flowResponses:u}=(0,ge.useContext)(J),[T,F]=(0,ge.useState)([]),[y,x]=(0,ge.useState)([]),{organizationId:A}=zo();(0,ge.useEffect)(()=>{if(!o&&t)for(let S=0;S<t.length;S++){let m=t[S],C=a.find(k=>k.slug===(m==null?void 0:m.flowId));if(C&&m&&m.shouldTrigger===!0&&C.type=="FORM"&&C.triggerType==="AUTOMATIC"&&!y.includes(C.slug)){setTimeout(()=>{v(m.flowId)},500);break}}},[o,t]),(0,ge.useEffect)(()=>{u.length>0&&r()},[u]);function v(S){let m=a.find(C=>C.slug===S);m&&m.triggerType==="AUTOMATIC"&&!y.includes(m.slug)&&(x([...y,m.slug]),F([m]))}function I(){if(!i){let S=localStorage.getItem(yi);if(S){n(S);return}let m=localStorage.getItem(Si);if(m){n(m);return}c(!0);let C=Wt+(0,bi.v4)();try{localStorage.setItem(Si,C)}catch(k){console.log("Failed to save guest user id locally: Local storage unavailable",k)}n(k=>k||C)}}(0,ge.useEffect)(()=>{try{if(a){let S=[];a.forEach(m=>{if(m.data){let C=m.data.match(/"imageUri":"(.*?)"/g);C&&C.forEach(k=>{let D=k.replace('"imageUri":"',"").replace('"',"");if(S.includes(D))return;let W=new Image;W.src=D,S.push(D)})}})}}catch{}},[a]),(0,ge.useEffect)(()=>{if(i!==s&&e([]),p(i),i&&!i.startsWith(Wt))try{localStorage.setItem(yi,i)}catch(S){console.log("Failed to save user id locally: Local storage available",S)}i===null&&setTimeout(()=>{i===null&&I()},50)},[i,a,f]);function b(){return ge.default.createElement(ge.default.Fragment,null,T.map(S=>d(S.slug)!==je?null:ge.default.createElement("span",{key:S.slug},ge.default.createElement(Ci,{flowId:S.slug,type:"modal",modalPosition:"center",endFlowOnDismiss:!0}))))}return ge.default.createElement(ge.default.Fragment,null,ge.default.createElement(b,null))};var Fi=require("react-error-boundary"),J=(0,K.createContext)({publicApiKey:"",setUserId:()=>{},flows:[],setFlows:()=>{},failedFlowResponses:[],setFailedFlowResponses:()=>{},flowResponses:[],setFlowResponses:()=>{},userProperties:{},setUserProperties:()=>{},openFlowStates:{},setOpenFlowStates:()=>{},completedFlowsToKeepOpenDuringSession:[],setCompletedFlowsToKeepOpenDuringSession:()=>{},customVariables:{},setCustomVariables:()=>{},isNewGuestUser:!1,setIsNewGuestUser:()=>{},hasActiveFullPageFlow:!1,setHasActiveFullPageFlow:()=>{},organizationId:"",setOrganizationId:()=>{},navigate:()=>{},defaultAppearance:Qe,shouldGracefullyDegrade:!1,setShouldGracefullyDegrade:()=>{}}),ki=({publicApiKey:e,userId:t,organizationId:o,config:r,children:i})=>{var de,ne;let[n,s]=(0,K.useState)(t||null),[p,d]=(0,K.useState)(o||null),[a,f]=(0,K.useState)([]),[c,u]=(0,K.useState)([]),[T,F]=(0,K.useState)([]),[y,x]=(0,K.useState)({}),[A,v]=(0,K.useState)({}),[I,b]=(0,K.useState)([]),[S,m]=(0,K.useState)({}),[C,k]=(0,K.useState)(!1),[D,W]=(0,K.useState)(!1),[_,N]=(0,K.useState)(!M(e)),V=(z,ke)=>{if(ke==="_blank"){window.open(z,"_blank");return}setTimeout(()=>{window.location.href=z},50)},L={theme:{...Qe.theme,...((de=r==null?void 0:r.defaultAppearance)==null?void 0:de.theme)??{}},styleOverrides:{...Qe.styleOverrides,...((ne=r==null?void 0:r.defaultAppearance)==null?void 0:ne.styleOverrides)??{}}};function M(z){return!!(z&&z.length>10&&z.substring(0,10)==="api_public")}return(0,K.useEffect)(()=>{t&&s(t)},[t]),(0,K.useEffect)(()=>{o&&d(o)},[o]),(0,K.useEffect)(()=>{if(M(e))N(!1);else{console.error("Frigade SDK failed to initialize. API key provided is either missing or valid."),N(!0);return}},[e,N]),_?K.default.createElement(J.Provider,{value:{publicApiKey:e,userId:n,setUserId:s,setFlows:f,flows:a,failedFlowResponses:c,setFailedFlowResponses:u,flowResponses:T,setFlowResponses:F,userProperties:y,setUserProperties:x,openFlowStates:A,setOpenFlowStates:v,completedFlowsToKeepOpenDuringSession:I,setCompletedFlowsToKeepOpenDuringSession:b,customVariables:S,setCustomVariables:m,isNewGuestUser:C,setIsNewGuestUser:k,hasActiveFullPageFlow:D,setHasActiveFullPageFlow:W,organizationId:p,setOrganizationId:d,navigate:r&&r.navigate?r.navigate:V,defaultAppearance:L,shouldGracefullyDegrade:_,setShouldGracefullyDegrade:N}},i):K.default.createElement(Fi.ErrorBoundary,{fallback:K.default.createElement(K.default.Fragment,null,i)},K.default.createElement(J.Provider,{value:{publicApiKey:e,userId:n,setUserId:s,setFlows:f,flows:a,failedFlowResponses:c,setFailedFlowResponses:u,flowResponses:T,setFlowResponses:F,userProperties:y,setUserProperties:x,openFlowStates:A,setOpenFlowStates:v,completedFlowsToKeepOpenDuringSession:I,setCompletedFlowsToKeepOpenDuringSession:b,customVariables:S,setCustomVariables:m,isNewGuestUser:C,setIsNewGuestUser:k,hasActiveFullPageFlow:D,setHasActiveFullPageFlow:W,organizationId:p,setOrganizationId:d,navigate:r&&r.navigate?r.navigate:V,defaultAppearance:L,shouldGracefullyDegrade:_,setShouldGracefullyDegrade:N}},K.default.createElement(Ti.ThemeProvider,{theme:L.theme},i,K.default.createElement(wi,null))))};var rs=g(require("react"));var ee=g(require("react"));var De=g(require("react")),bt=g(require("styled-components"));var xo=g(require("react"));var St=g(require("react")),rr=g(require("styled-components"));var Pi=rr.default.span`
533
533
  font-weight: 400;
534
534
  font-size: 15px;