@frigade/react 1.34.2 → 1.34.3

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 zl=Object.create;var No=Object.defineProperty;var _l=Object.getOwnPropertyDescriptor;var Wl=Object.getOwnPropertyNames;var Hl=Object.getPrototypeOf,Vl=Object.prototype.hasOwnProperty;var jl=(e,t)=>{for(var o in t)No(e,o,{get:t[o],enumerable:!0})},Vr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Wl(t))!Vl.call(e,i)&&i!==o&&No(e,i,{get:()=>t[i],enumerable:!(r=_l(t,i))||r.enumerable});return e};var u=(e,t,o)=>(o=e!=null?zl(Hl(e)):{},Vr(t||!e||!e.__esModule?No(o,"default",{value:e,enumerable:!0}):o,e)),Gl=e=>Vr(No({},"__esModule",{value:!0}),e);var Wp={};jl(Wp,{Box:()=>Rt,Button:()=>Ul,CheckBox:()=>rt,FormLabel:()=>ft,FormTextField:()=>jo,FrigadeBanner:()=>Bl,FrigadeChecklist:()=>sr,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>wl,FrigadeForm:()=>Tr,FrigadeGuide:()=>el,FrigadeHeroChecklist:()=>Ws,FrigadeNPSSurvey:()=>Dl,FrigadeProgressBadge:()=>Zs,FrigadeProvider:()=>un,FrigadeSupportWidget:()=>hl,FrigadeTour:()=>sl,ProgressRing:()=>Ot,Text:()=>ar,tokens:()=>Ro,useFlowOpens:()=>De,useFlowResponses:()=>jt,useFlows:()=>ee,useOrganization:()=>Jo,useUser:()=>Kt,useUserFlowStates:()=>$e});module.exports=Gl(Wp);var J=u(require("react")),dn=require("styled-components");var ge=u(require("react"));var Ke=require("react");var At=u(require("react"));var jr="1.34.2 ";var Ge="NOT_STARTED_STEP",ie="COMPLETED_FLOW",Oo="ABORTED_FLOW",It="STARTED_FLOW",Xe="NOT_STARTED_FLOW",Je="COMPLETED_STEP",Lo="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=At.default.useContext(X);return{config:(0,At.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":jr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,At.useMemo)(()=>`${o}/v1/public/`,[o])}}var Kl="frigade-last-call-at-",ql="frigade-last-call-data-";function Wt(){let{shouldGracefullyDegrade:e,readonly:t}=At.default.useContext(X);return async(o,r)=>{if(t&&(r.method==="POST"||r.method==="PUT"||r.method==="DELETE"))return _t();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),_t();let i=Kl+o,n=ql+o;if(window&&window.localStorage&&r&&r.body&&r.method==="POST"){let p=window.localStorage.getItem(i),c=window.localStorage.getItem(n);if(p&&c&&c==r.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return _t()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,r.body)}let s;try{s=await fetch(o,r)}catch(p){return _t(p)}return s?s.ok?s:_t(s.statusText):_t()}}function _t(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ht(){let{publicApiKey:e,shouldGracefullyDegrade:t}=At.default.useContext(X);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var mo=require("react");var Vt=require("react");var Kr=u(require("swr"));var Gr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Gr.useContext)(X);function n(d,C=!1){return e[d]??C}function s(d,C){t(b=>({...b,[d]:C}))}function p(d){t(C=>{let{[d]:b,...T}=C;return{...T}})}function c(d){i.includes(d)||r(C=>[...C,d])}function a(d){return i.includes(d)}function h(d){return Object.entries(e).some(([C,b])=>b&&C!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var qr=u(require("swr/immutable")),Yl="unknown";function $e(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:r,organizationId:i,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Vt.useContext)(X),{resetOpenFlowState:c}=De(),[a,h]=(0,Vt.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:ie,lastStepId:null,userId:r,foreignUserId:r,stepStates:{},shouldTrigger:!1}))},C=P=>fetch(P,e).then(F=>{if(F.ok)return F.json();throw new Error("Failed to fetch user flow states")}).catch(F=>(console.log(`Error fetching ${P}: ${F}. Will gracefully degrade and hide Frigade`),s(!0),d)),b=o&&n&&r?`${t}userFlowStates?foreignUserId=${encodeURIComponent(r)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,{data:T,isLoading:B,mutate:g,error:A}=p?(0,qr.default)(b,C):(0,Kr.default)(b,C,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=T==null?void 0:T.data;(0,Vt.useEffect)(()=>{!a&&!B&&w&&h(!0)},[w,a,B]);async function y(P){if(w&&!p){let F=w.find(L=>L.flowId===P);F&&F.flowState!==ie&&(F.flowState=ie),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function I(P,F,L){if(w){let N=w.find(_=>_.flowId===P);N&&(N.stepStates[F]=L,N.flowState=It),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function S(P,F,L){if(w){let N=w.find(_=>_.flowId===P);N&&(N.lastStepId=F,N.stepStates[F]=L,N.flowState=It),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function m(P){if(w){let F=w.find(L=>L.flowId===P);F&&F.flowState!==Xe&&(F.flowState=Xe,F.lastStepId=Yl,Object.keys(F.stepStates).forEach(L=>{F.stepStates[L].actionType=Ge,F.stepStates[L].createdAt=new Date().toISOString()}),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1}),c(P))}}async function E(P,F){if(w){let L=w.find(N=>N.flowId===P);L&&L.stepStates[F]!==Ge&&(L.stepStates[F]=Ge),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!a,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:S,error:A}}function jt(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:r}=$e(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,mo.useContext)(X),[c,a]=(0,mo.useState)(new Set),[h,d]=(0,mo.useState)(new Set),C=Wt();function b(g){let A=JSON.stringify(g);if(c.has(A))return null;c.add(A),a(c),h.add(g),d(h);let w=s==null?void 0:s.find(y=>y.flowSlug===g.flowSlug&&y.stepId===g.stepId&&y.actionType===g.actionType&&y.createdAt===g.createdAt);return C(`${t}flowResponses`,{...e,method:"POST",body:A}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...i,g])):w||p(I=>[...I??[],g])})}async function T(g){g.foreignUserId&&(g.actionType===It||g.actionType===Xe?await b(g):g.actionType===ie?await b(g):g.actionType===Lo?await b(g):g.actionType===Je?await b(g):g.actionType===Oo?await b(g):g.actionType===Ge&&await b(g))}function B(){let g=[];return o==null||o.forEach(A=>{if(A&&A.stepStates&&Object.keys(A.stepStates).length!==0)for(let w in A.stepStates){let y=A.stepStates[w];g.push({foreignUserId:A.foreignUserId,flowSlug:A.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...g,...s]}return{addResponse:T,setFlowResponses:p,getFlowResponses:B}}var Xr=u(require("swr"));var Xl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Yr=e=>{let t=Xl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=Jl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},Jl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:r,userId:i,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:C}=(0,Ke.useContext)(X),b={data:[]},{verifySDKInitiated:T}=Ht(),{addResponse:B,getFlowResponses:g}=jt(),A=x=>fetch(x,e).then(f=>f.ok?f.json():(console.log(`Error fetching ${x} (${f.status}): ${f.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),b)).catch(f=>(console.log(`Error fetching ${x}: ${f}. Will gracefully degrade and hide Frigade`),d(!0),b)),{mutateUserFlowState:w,userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:E,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:F}=$e(),{data:L,error:N,isLoading:_}=(0,Xr.default)(n?`${t}flows${C?"?readonly=true":""}`:null,A,{keepPreviousData:!0});(0,Ke.useEffect)(()=>{if(N){console.error(N);return}L&&L.data&&r(L.data)},[L,N]);function z(x){if(_)return null;let f=o.find(k=>k.slug===x);return!f&&o.length>0&&!I&&!_?(console.log(`Flow with slug ${x} not found`),null):(f==null?void 0:f.active)===!1?null:f}function $(x){var V;if(!z(x))return[];let f=z(x).data;return f?(f=se(f),(((V=JSON.parse(f))==null?void 0:V.data)??[]).map(Se=>{let cr=ae(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&G(x,Se.id,{skipped:!0})},...Se,complete:ke(x,Se.id)===Je||cr>=1,blocked:le(x,Se.id),hidden:D(x,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&G(x,Se.id)},progress:cr}}).filter(Se=>Se.hidden!==!0)):[]}function se(x){return x.replaceAll(/\${(.*?)}/g,(f,k)=>s[k]===void 0?"":String(s[k]).replace(/[\u00A0-\u9999<>\&]/g,function(V){return"&#"+V.charCodeAt(0)+";"}).replaceAll(/[\\]/g,"\\\\").replaceAll(/[\"]/g,'\\"').replaceAll(/[\/]/g,"\\/").replaceAll(/[\b]/g,"\\b").replaceAll(/[\f]/g,"\\f").replaceAll(/[\n]/g,"\\n").replaceAll(/[\r]/g,"\\r").replaceAll(/[\t]/g,"\\t"))}function H(x){if(!z(x))return[];let f=z(x).data;return f?(f=se(f),JSON.parse(f)??{}):[]}function re(x,f){p(k=>({...k,[x]:f}))}function Fe(x){!I&&!_&&x&&JSON.stringify(s)!=JSON.stringify({...s,...x})&&Object.keys(x).forEach(f=>{re(f,x[f])})}let Z=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Lo,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await F(x,f,V),B(V))},[i,y]),j=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Ge,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await P(x,f),B(V))},[i,y]),G=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Je,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await E(x,f,V),B(V))},[i,y]),ve=(0,Ke.useCallback)(async(x,f)=>{if(!T()||Be(x)===Xe)return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:Xe,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};await m(x),R(k)&&B(k)},[i,y]),je=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:It,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&B(k)},[i,y]),Ie=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ie,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&(await S(x),B(k))},[i,y]),Ce=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:Oo,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&(await S(x),B(k))},[i,y]);function R(x){var f;if(!y&&x.actionType===Ge)return!1;if(y){let k=y.find(V=>V.flowId===x.flowSlug);if(x.actionType===Ge&&(!(k!=null&&k.stepStates[x.stepId])||k.stepStates[x.stepId].actionType===Ge)||k&&((f=k.stepStates[x.stepId])==null?void 0:f.actionType)===x.actionType||k&&k.flowState===ie&&x.actionType===ie)return!1}return!0}function ke(x,f){let k=q(x,f);return I?null:k?k.actionType:Ge}function le(x,f){let k=q(x,f);return k?k.blocked:!1}function D(x,f){let k=q(x,f);return k?k.hidden:!1}function q(x,f){if(I)return null;let k=y==null?void 0:y.find(V=>V.flowId===x);return!k||!k.stepStates[f]?null:k.stepStates[f]??null}function U(x){var k;if(I||!y)return null;if(Be(x)===Xe)return $(x)[0]??null;let f=(k=y.find(V=>V.flowId===x))==null?void 0:k.lastStepId;return f?$(x).find(V=>V.id===f):null}function ce(x){let f=U(x);if(!f)return 0;let k=$(x).findIndex(V=>V.id===f.id)??0;return ke(x,f.id)===Je&&k<$(x).length-1?k+1:k}function ae(x){if(!x.completionCriteria)return;let f=Yr(x.completionCriteria);if(f===null)return;let k=Ye(f),V=ct(f);return V===0?void 0:k/V}function Be(x){let f=y==null?void 0:y.find(k=>k.flowId===x);return f?f.flowState:null}function Ye(x){let f=$(x);return f.length===0?0:f.filter(V=>ke(x,V.id)===Je).length}function ct(x){return $(x).length}function K(x){let f=o.find(k=>k.slug===x);return f?JSON.parse(f.data):null}function ze(x){if(C)return!1;if(I)return!0;if(x!=null&&x.targetingLogic&&y){let f=y.find(k=>k.flowId===x.slug);if(f)return f.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&i&&i.startsWith("guest_"))}function Et(x){return!ze(z(x))}function dr(){i&&w()}return{getFlow:z,getFlowData:K,isLoading:I||_,getStepStatus:ke,getFlowSteps:$,getCurrentStepIndex:ce,markStepStarted:Z,markStepCompleted:G,markFlowNotStarted:ve,markFlowStarted:je,markFlowCompleted:Ie,markFlowAborted:Ce,markStepNotStarted:j,getFlowStatus:Be,getNumberOfStepsCompleted:Ye,getNumberOfSteps:ct,targetingLogicShouldHideFlow:ze,setCustomVariable:re,updateCustomVariables:Fe,customVariables:s,getStepOptionalProgress:ae,getFlowMetadata:H,isStepBlocked:le,isStepHidden:D,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Et,refresh:dr}}var Nt=require("react");var Gt="guest_";function Kt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,Nt.useContext)(X),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=$e(),c=Wt(),{verifySDKInitiated:a}=Ht();(0,Nt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Gt))return;let C=`frigade-user-registered-${e}`;localStorage.getItem(C)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(C,"true"))}},[e,i,t]);let h=(0,Nt.useCallback)(async C=>{if(!a())return;let b={foreignId:e,properties:C};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(b)}),r(T=>({...T,...C})),p()},[e,n,i,p]),d=(0,Nt.useCallback)(async(C,b)=>{if(!a())return;let B={foreignId:e,events:[{event:C,properties:b}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:h,trackEventForUser:d}}var Ri=require("uuid");var Le=u(require("react"));var Me=u(require("react")),go=u(require("styled-components"));var Qr=u(require("react")),Zr=u(require("styled-components"));var Jr="fr-",uo="cfr-";function l(e,t){let o=`${Jr}${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+" "+uo+e}return o}function v(e){if(!e.className||e.className.indexOf(uo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Jr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function mr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function mt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${mr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function fo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ql=Zr.default.div`
2
+ var zl=Object.create;var No=Object.defineProperty;var _l=Object.getOwnPropertyDescriptor;var Wl=Object.getOwnPropertyNames;var Hl=Object.getPrototypeOf,Vl=Object.prototype.hasOwnProperty;var jl=(e,t)=>{for(var o in t)No(e,o,{get:t[o],enumerable:!0})},Vr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Wl(t))!Vl.call(e,i)&&i!==o&&No(e,i,{get:()=>t[i],enumerable:!(r=_l(t,i))||r.enumerable});return e};var u=(e,t,o)=>(o=e!=null?zl(Hl(e)):{},Vr(t||!e||!e.__esModule?No(o,"default",{value:e,enumerable:!0}):o,e)),Gl=e=>Vr(No({},"__esModule",{value:!0}),e);var Wp={};jl(Wp,{Box:()=>Rt,Button:()=>Ul,CheckBox:()=>rt,FormLabel:()=>ft,FormTextField:()=>jo,FrigadeBanner:()=>Bl,FrigadeChecklist:()=>sr,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>wl,FrigadeForm:()=>Tr,FrigadeGuide:()=>el,FrigadeHeroChecklist:()=>Ws,FrigadeNPSSurvey:()=>Dl,FrigadeProgressBadge:()=>Zs,FrigadeProvider:()=>un,FrigadeSupportWidget:()=>hl,FrigadeTour:()=>sl,ProgressRing:()=>Ot,Text:()=>ar,tokens:()=>Ro,useFlowOpens:()=>De,useFlowResponses:()=>jt,useFlows:()=>ee,useOrganization:()=>Jo,useUser:()=>Kt,useUserFlowStates:()=>$e});module.exports=Gl(Wp);var J=u(require("react")),dn=require("styled-components");var ge=u(require("react"));var Ke=require("react");var At=u(require("react"));var jr="1.34.3 ";var Ge="NOT_STARTED_STEP",ie="COMPLETED_FLOW",Oo="ABORTED_FLOW",It="STARTED_FLOW",Xe="NOT_STARTED_FLOW",Je="COMPLETED_STEP",Lo="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=At.default.useContext(X);return{config:(0,At.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":jr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,At.useMemo)(()=>`${o}/v1/public/`,[o])}}var Kl="frigade-last-call-at-",ql="frigade-last-call-data-";function Wt(){let{shouldGracefullyDegrade:e,readonly:t}=At.default.useContext(X);return async(o,r)=>{if(t&&(r.method==="POST"||r.method==="PUT"||r.method==="DELETE"))return _t();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),_t();let i=Kl+o,n=ql+o;if(window&&window.localStorage&&r&&r.body&&r.method==="POST"){let p=window.localStorage.getItem(i),c=window.localStorage.getItem(n);if(p&&c&&c==r.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return _t()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,r.body)}let s;try{s=await fetch(o,r)}catch(p){return _t(p)}return s?s.ok?s:_t(s.statusText):_t()}}function _t(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ht(){let{publicApiKey:e,shouldGracefullyDegrade:t}=At.default.useContext(X);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var mo=require("react");var Vt=require("react");var Kr=u(require("swr"));var Gr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,Gr.useContext)(X);function n(d,C=!1){return e[d]??C}function s(d,C){t(b=>({...b,[d]:C}))}function p(d){t(C=>{let{[d]:b,...T}=C;return{...T}})}function c(d){i.includes(d)||r(C=>[...C,d])}function a(d){return i.includes(d)}function h(d){return Object.entries(e).some(([C,b])=>b&&C!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:h,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var qr=u(require("swr/immutable")),Yl="unknown";function $e(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:r,organizationId:i,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Vt.useContext)(X),{resetOpenFlowState:c}=De(),[a,h]=(0,Vt.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:ie,lastStepId:null,userId:r,foreignUserId:r,stepStates:{},shouldTrigger:!1}))},C=P=>fetch(P,e).then(F=>{if(F.ok)return F.json();throw new Error("Failed to fetch user flow states")}).catch(F=>(console.log(`Error fetching ${P}: ${F}. Will gracefully degrade and hide Frigade`),s(!0),d)),b=o&&n&&r?`${t}userFlowStates?foreignUserId=${encodeURIComponent(r)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,{data:T,isLoading:B,mutate:g,error:A}=p?(0,qr.default)(b,C):(0,Kr.default)(b,C,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=T==null?void 0:T.data;(0,Vt.useEffect)(()=>{!a&&!B&&w&&h(!0)},[w,a,B]);async function y(P){if(w&&!p){let F=w.find(L=>L.flowId===P);F&&F.flowState!==ie&&(F.flowState=ie),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function I(P,F,L){if(w){let N=w.find(_=>_.flowId===P);N&&(N.stepStates[F]=L,N.flowState=It),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function S(P,F,L){if(w){let N=w.find(_=>_.flowId===P);N&&(N.lastStepId=F,N.stepStates[F]=L,N.flowState=It),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function m(P){if(w){let F=w.find(L=>L.flowId===P);F&&F.flowState!==Xe&&(F.flowState=Xe,F.lastStepId=Yl,Object.keys(F.stepStates).forEach(L=>{F.stepStates[L].actionType=Ge,F.stepStates[L].createdAt=new Date().toISOString()}),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1}),c(P))}}async function E(P,F){if(w){let L=w.find(N=>N.flowId===P);L&&L.stepStates[F]!==Ge&&(L.stepStates[F]=Ge),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!a,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:S,error:A}}function jt(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:r}=$e(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,mo.useContext)(X),[c,a]=(0,mo.useState)(new Set),[h,d]=(0,mo.useState)(new Set),C=Wt();function b(g){let A=JSON.stringify(g);if(c.has(A))return null;c.add(A),a(c),h.add(g),d(h);let w=s==null?void 0:s.find(y=>y.flowSlug===g.flowSlug&&y.stepId===g.stepId&&y.actionType===g.actionType&&y.createdAt===g.createdAt);return C(`${t}flowResponses`,{...e,method:"POST",body:A}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...i,g])):w||p(I=>[...I??[],g])})}async function T(g){g.foreignUserId&&(g.actionType===It||g.actionType===Xe?await b(g):g.actionType===ie?await b(g):g.actionType===Lo?await b(g):g.actionType===Je?await b(g):g.actionType===Oo?await b(g):g.actionType===Ge&&await b(g))}function B(){let g=[];return o==null||o.forEach(A=>{if(A&&A.stepStates&&Object.keys(A.stepStates).length!==0)for(let w in A.stepStates){let y=A.stepStates[w];g.push({foreignUserId:A.foreignUserId,flowSlug:A.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...g,...s]}return{addResponse:T,setFlowResponses:p,getFlowResponses:B}}var Xr=u(require("swr"));var Xl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Yr=e=>{let t=Xl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=Jl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},Jl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:r,userId:i,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:h,setShouldGracefullyDegrade:d,readonly:C}=(0,Ke.useContext)(X),b={data:[]},{verifySDKInitiated:T}=Ht(),{addResponse:B,getFlowResponses:g}=jt(),A=x=>fetch(x,e).then(f=>f.ok?f.json():(console.log(`Error fetching ${x} (${f.status}): ${f.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),b)).catch(f=>(console.log(`Error fetching ${x}: ${f}. Will gracefully degrade and hide Frigade`),d(!0),b)),{mutateUserFlowState:w,userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:E,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:F}=$e(),{data:L,error:N,isLoading:_}=(0,Xr.default)(n?`${t}flows${C?"?readonly=true":""}`:null,A,{keepPreviousData:!0});(0,Ke.useEffect)(()=>{if(N){console.error(N);return}L&&L.data&&r(L.data)},[L,N]);function z(x){if(_)return null;let f=o.find(k=>k.slug===x);return!f&&o.length>0&&!I&&!_?(console.log(`Flow with slug ${x} not found`),null):(f==null?void 0:f.active)===!1?null:f}function $(x){var V;if(!z(x))return[];let f=z(x).data;return f?(f=se(f),(((V=JSON.parse(f))==null?void 0:V.data)??[]).map(Se=>{let cr=ae(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&G(x,Se.id,{skipped:!0})},...Se,complete:ke(x,Se.id)===Je||cr>=1,blocked:le(x,Se.id),hidden:D(x,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&G(x,Se.id)},progress:cr}}).filter(Se=>Se.hidden!==!0)):[]}function se(x){return x.replaceAll(/\${(.*?)}/g,(f,k)=>s[k]===void 0?"":String(s[k]).replace(/[\u00A0-\u9999<>\&]/g,function(V){return"&#"+V.charCodeAt(0)+";"}).replaceAll(/[\\]/g,"\\\\").replaceAll(/[\"]/g,'\\"').replaceAll(/[\/]/g,"\\/").replaceAll(/[\b]/g,"\\b").replaceAll(/[\f]/g,"\\f").replaceAll(/[\n]/g,"\\n").replaceAll(/[\r]/g,"\\r").replaceAll(/[\t]/g,"\\t"))}function H(x){if(!z(x))return[];let f=z(x).data;return f?(f=se(f),JSON.parse(f)??{}):[]}function re(x,f){p(k=>({...k,[x]:f}))}function Fe(x){!I&&!_&&x&&JSON.stringify(s)!=JSON.stringify({...s,...x})&&Object.keys(x).forEach(f=>{re(f,x[f])})}let Z=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Lo,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await F(x,f,V),B(V))},[i,y]),j=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Ge,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await P(x,f),B(V))},[i,y]),G=(0,Ke.useCallback)(async(x,f,k)=>{if(!T())return;let V={foreignUserId:i,flowSlug:x,stepId:f,actionType:Je,data:k??{},createdAt:new Date,blocked:!1,hidden:!1};R(V)&&(await E(x,f,V),B(V))},[i,y]),ve=(0,Ke.useCallback)(async(x,f)=>{if(!T()||Be(x)===Xe)return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:Xe,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};await m(x),R(k)&&B(k)},[i,y]),je=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:It,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&B(k)},[i,y]),Ie=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:ie,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&(await S(x),B(k))},[i,y]),Ce=(0,Ke.useCallback)(async(x,f)=>{if(!T())return;let k={foreignUserId:i,flowSlug:x,stepId:"unknown",actionType:Oo,data:f??{},createdAt:new Date,blocked:!1,hidden:!1};R(k)&&(await S(x),B(k))},[i,y]);function R(x){var f;if(!y&&x.actionType===Ge)return!1;if(y){let k=y.find(V=>V.flowId===x.flowSlug);if(x.actionType===Ge&&(!(k!=null&&k.stepStates[x.stepId])||k.stepStates[x.stepId].actionType===Ge)||k&&((f=k.stepStates[x.stepId])==null?void 0:f.actionType)===x.actionType||k&&k.flowState===ie&&x.actionType===ie)return!1}return!0}function ke(x,f){let k=q(x,f);return I?null:k?k.actionType:Ge}function le(x,f){let k=q(x,f);return k?k.blocked:!1}function D(x,f){let k=q(x,f);return k?k.hidden:!1}function q(x,f){if(I)return null;let k=y==null?void 0:y.find(V=>V.flowId===x);return!k||!k.stepStates[f]?null:k.stepStates[f]??null}function U(x){var k;if(I||!y)return null;if(Be(x)===Xe)return $(x)[0]??null;let f=(k=y.find(V=>V.flowId===x))==null?void 0:k.lastStepId;return f?$(x).find(V=>V.id===f):null}function ce(x){let f=U(x);if(!f)return 0;let k=$(x).findIndex(V=>V.id===f.id)??0;return ke(x,f.id)===Je&&k<$(x).length-1?k+1:k}function ae(x){if(!x.completionCriteria)return;let f=Yr(x.completionCriteria);if(f===null)return;let k=Ye(f),V=ct(f);return V===0?void 0:k/V}function Be(x){let f=y==null?void 0:y.find(k=>k.flowId===x);return f?f.flowState:null}function Ye(x){let f=$(x);return f.length===0?0:f.filter(V=>ke(x,V.id)===Je).length}function ct(x){return $(x).length}function K(x){let f=o.find(k=>k.slug===x);return f?JSON.parse(f.data):null}function ze(x){if(C)return!1;if(I)return!0;if(x!=null&&x.targetingLogic&&y){let f=y.find(k=>k.flowId===x.slug);if(f)return f.shouldTrigger===!1}return!!(x!=null&&x.targetingLogic&&i&&i.startsWith("guest_"))}function Et(x){return!ze(z(x))}function dr(){i&&w()}return{getFlow:z,getFlowData:K,isLoading:I||_,getStepStatus:ke,getFlowSteps:$,getCurrentStepIndex:ce,markStepStarted:Z,markStepCompleted:G,markFlowNotStarted:ve,markFlowStarted:je,markFlowCompleted:Ie,markFlowAborted:Ce,markStepNotStarted:j,getFlowStatus:Be,getNumberOfStepsCompleted:Ye,getNumberOfSteps:ct,targetingLogicShouldHideFlow:ze,setCustomVariable:re,updateCustomVariables:Fe,customVariables:s,getStepOptionalProgress:ae,getFlowMetadata:H,isStepBlocked:le,isStepHidden:D,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:Et,refresh:dr}}var Nt=require("react");var Gt="guest_";function Kt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,Nt.useContext)(X),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=$e(),c=Wt(),{verifySDKInitiated:a}=Ht();(0,Nt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Gt))return;let C=`frigade-user-registered-${e}`;localStorage.getItem(C)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(C,"true"))}},[e,i,t]);let h=(0,Nt.useCallback)(async C=>{if(!a())return;let b={foreignId:e,properties:C};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(b)}),r(T=>({...T,...C})),p()},[e,n,i,p]),d=(0,Nt.useCallback)(async(C,b)=>{if(!a())return;let B={foreignId:e,events:[{event:C,properties:b}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:h,trackEventForUser:d}}var Ri=require("uuid");var Le=u(require("react"));var Me=u(require("react")),go=u(require("styled-components"));var Qr=u(require("react")),Zr=u(require("styled-components"));var Jr="fr-",uo="cfr-";function l(e,t){let o=`${Jr}${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+" "+uo+e}return o}function v(e){if(!e.className||e.className.indexOf(uo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Jr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function mr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function mt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${mr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function fo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ql=Zr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -252,7 +252,7 @@ var zl=Object.create;var No=Object.defineProperty;var _l=Object.getOwnPropertyDe
252
252
  align-items: flex-start;
253
253
  justify-content: left;
254
254
  margin-bottom: 10px;
255
- `;var Wo=u(require("react"));var tt={theme:{colorPrimary:"#000000",colorSecondary:"#EEEEEE",colorText:"#000000",colorBackground:"#ffffff",colorBackgroundSecondary:"#d2d2d2",colorTextOnPrimaryBackground:"#ffffff",colorTextSecondary:"#505050",colorTextDisabled:"#C7C7C7",colorBorder:"#E5E5E5",colorTextError:"#c00000",borderRadius:20}};function ft({title:e,required:t,appearance:o=tt}){return e?Wo.default.createElement(_o,null,t?Wo.default.createElement(Ci,{className:l("formLabelRequired",o),appearance:o},"*"):null,Wo.default.createElement(xi,{className:l("formLabel",o)},e)):null}var fr=u(require("react"));function qt({title:e,appearance:t}){return e?fr.default.createElement(_o,null,fr.default.createElement(hi,{className:l("formSubLabel",t)},e)):null}var Ho=require("zod");function Si(e,t){try{if(t){if(t.type=="number"){let o=Ho.z.number();if(t.props)for(let r of t.props)r.requirement=="min"?o=o.min(Number(r.value),r.message??"Value is too small"):r.requirement=="max"?o=o.max(Number(r.value),r.message??"Value is too large"):r.requirement=="positive"?o=o.positive(r.message??"Value must be positive"):r.requirement=="negative"&&(o=o.nonpositive(r.message??"Value must be negative"));o.parse(Number(e))}if(t.type=="string"){let o=Ho.z.string();if(t.props)for(let r of t.props)r.requirement=="min"?o=o.min(Number(r.value),r.message??"Value is too short"):r.requirement=="max"?o=o.max(Number(r.value),r.message??"Value is too long"):r.requirement=="regex"&&(o=o.regex(new RegExp(String(r.value)),r.message??"Value does not match requirements"));o.parse(e)}return}}catch(o){if(o instanceof Ho.z.ZodError)return o.issues&&o.issues.length>0?o.issues[0].message:null;console.error("Frigade Form validation failed for rule ",t,o)}return null}var aa=Vo.default.div`
255
+ `;var Wo=u(require("react"));var tt={theme:{colorPrimary:"#0171F8",colorSecondary:"#EEEEEE",colorText:"#000000",colorBackground:"#ffffff",colorBackgroundSecondary:"#d2d2d2",colorTextOnPrimaryBackground:"#ffffff",colorTextSecondary:"#505050",colorTextDisabled:"#C7C7C7",colorBorder:"#E5E5E5",colorTextError:"#c00000",borderRadius:20}};function ft({title:e,required:t,appearance:o=tt}){return e?Wo.default.createElement(_o,null,t?Wo.default.createElement(Ci,{className:l("formLabelRequired",o),appearance:o},"*"):null,Wo.default.createElement(xi,{className:l("formLabel",o)},e)):null}var fr=u(require("react"));function qt({title:e,appearance:t}){return e?fr.default.createElement(_o,null,fr.default.createElement(hi,{className:l("formSubLabel",t)},e)):null}var Ho=require("zod");function Si(e,t){try{if(t){if(t.type=="number"){let o=Ho.z.number();if(t.props)for(let r of t.props)r.requirement=="min"?o=o.min(Number(r.value),r.message??"Value is too small"):r.requirement=="max"?o=o.max(Number(r.value),r.message??"Value is too large"):r.requirement=="positive"?o=o.positive(r.message??"Value must be positive"):r.requirement=="negative"&&(o=o.nonpositive(r.message??"Value must be negative"));o.parse(Number(e))}if(t.type=="string"){let o=Ho.z.string();if(t.props)for(let r of t.props)r.requirement=="min"?o=o.min(Number(r.value),r.message??"Value is too short"):r.requirement=="max"?o=o.max(Number(r.value),r.message??"Value is too long"):r.requirement=="regex"&&(o=o.regex(new RegExp(String(r.value)),r.message??"Value does not match requirements"));o.parse(e)}return}}catch(o){if(o instanceof Ho.z.ZodError)return o.issues&&o.issues.length>0?o.issues[0].message:null;console.error("Frigade Form validation failed for rule ",t,o)}return null}var aa=Vo.default.div`
256
256
  display: flex;
257
257
  flex-direction: column;
258
258
  width: 100%;