@frigade/react 1.35.16 → 1.35.17

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
@@ -681,7 +681,7 @@ declare function useFlowOpens(): {
681
681
  declare function useUser(): {
682
682
  readonly userId: string | null;
683
683
  readonly setUserId: React__default.Dispatch<React__default.SetStateAction<string | null>>;
684
- readonly setUserIdWithProperties: (userId: string, properties?: EntityProperties) => void;
684
+ readonly setUserIdWithProperties: (userId: string, properties?: EntityProperties) => Promise<void>;
685
685
  readonly addPropertiesToUser: (properties: EntityProperties) => Promise<void>;
686
686
  readonly trackEventForUser: (event: string, properties?: EntityProperties) => Promise<void>;
687
687
  };
@@ -689,7 +689,7 @@ declare function useUser(): {
689
689
  declare function useOrganization(): {
690
690
  readonly organizationId: string | null;
691
691
  readonly setOrganizationId: React__default.Dispatch<React__default.SetStateAction<string | null>>;
692
- readonly setOrganizationIdWithProperties: (organizationId: string, properties?: EntityProperties) => void;
692
+ readonly setOrganizationIdWithProperties: (organizationId: string, properties?: EntityProperties) => Promise<void>;
693
693
  readonly addPropertiesToOrganization: (properties: EntityProperties) => Promise<void>;
694
694
  readonly trackEventForOrganization: (event: string, properties?: EntityProperties) => Promise<void>;
695
695
  };
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var oa=Object.create;var $o=Object.defineProperty;var ra=Object.getOwnPropertyDescriptor;var ia=Object.getOwnPropertyNames;var na=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var la=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},Yr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ia(t))!sa.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(i=ra(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?oa(na(e)):{},Yr(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),aa=e=>Yr($o({},"__esModule",{value:!0}),e);var ad={};la(ad,{Box:()=>ro,Button:()=>ea,CheckBox:()=>st,FlowType:()=>zo,FormLabel:()=>xt,FormTextField:()=>Jo,FrigadeAnnouncement:()=>Ql,FrigadeBanner:()=>Ll,FrigadeChecklist:()=>cr,FrigadeDefaultAppearance:()=>it,FrigadeEmbeddedTip:()=>Bl,FrigadeForm:()=>Br,FrigadeGuide:()=>sl,FrigadeHeroChecklist:()=>qs,FrigadeNPSSurvey:()=>_l,FrigadeProgressBadge:()=>il,FrigadeProvider:()=>Cn,FrigadeSupportWidget:()=>Tl,FrigadeTour:()=>ml,ProgressRing:()=>$t,Text:()=>fr,tokens:()=>nr,useFlowOpens:()=>Ie,useFlowResponses:()=>Yt,useFlows:()=>J,useOrganization:()=>or,useUser:()=>Jt,useUserFlowStates:()=>ze});module.exports=aa(ad);var Q=f(require("react")),gn=require("styled-components");var he=f(require("react"));var qe=require("react");var Lt=f(require("react"));var Xr="1.35.16 ";var Ke="NOT_STARTED_STEP",Z="COMPLETED_FLOW",Mo="ABORTED_FLOW",Dt="STARTED_FLOW",Qe="NOT_STARTED_FLOW",Ze="COMPLETED_STEP",Uo="STARTED_STEP";function tt(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(X);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Xr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var pa="frigade-last-call-at-",da="frigade-last-call-data-";function Gt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(X);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Vt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Vt();let r=pa+o,n=da+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Vt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Vt(p)}return s?s.ok?s:Vt(s.statusText):Vt()}}function Vt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Kt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.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 xo=require("react");var qt=require("react");var Qr=f(require("swr"));var Jr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Jr.useContext)(X);function n(d,h=!1){return e[d]??h}function s(d,h){t(w=>({...w,[d]:h}))}function p(d){t(h=>{let{[d]:w,...C}=h;return{...C}})}function c(d){r.includes(d)||i(h=>[...h,d])}function l(d){return r.includes(d)}function x(d){return Object.entries(e).some(([h,w])=>w&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var Zr=f(require("swr/immutable")),ca="unknown";function ze(){let{config:e,apiUrl:t}=tt(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,qt.useContext)(X),{resetOpenFlowState:c}=Ie(),[l,x]=(0,qt.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},h=P=>fetch(P,e).then(v=>{if(v.ok)return v.json();throw new Error("Failed to fetch user flow states")}).catch(v=>(console.log(`Error fetching ${P}: ${v}. Will gracefully degrade and hide Frigade`),s(!0),d)),w=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:C,isLoading:F,mutate:g,error:E}=p?(0,Zr.default)(w,h):(0,Qr.default)(w,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=C==null?void 0:C.data;(0,qt.useEffect)(()=>{!l&&!F&&T&&x(!0)},[T,l,F]);async function b(P){if(T&&!p){let v=T.find(D=>D.flowId===P);v&&v.flowState!==Z&&(v.flowState=Z),await g(Promise.resolve({...C,data:T}),{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function I(P,v,D){if(T){let N=T.find(O=>O.flowId===P);N&&(N.stepStates[v]=D,N.flowState=Dt),await g(Promise.resolve({...C,data:T}),{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function S(P,v,D){if(T){let N=T.find(O=>O.flowId===P);N&&(N.lastStepId=v,N.stepStates[v]=D,N.flowState=Dt),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function m(P){if(T){let v=T.find(D=>D.flowId===P);v&&v.flowState!==Qe&&(v.flowState=Qe,v.lastStepId=ca,Object.keys(v.stepStates).forEach(D=>{v.stepStates[D].actionType=Ke,v.stepStates[D].createdAt=new Date().toISOString()}),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1}),c(P))}}async function A(P,v){if(T){let D=T.find(N=>N.flowId===P);D&&D.stepStates[v]!==Ke&&(D.stepStates[v]=Ke),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!l,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:S,error:E}}function Yt(){let{config:e,apiUrl:t}=tt(),{userFlowStatesData:o,mutateUserFlowState:i}=ze(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,xo.useContext)(X),[c,l]=(0,xo.useState)(new Set),[x,d]=(0,xo.useState)(new Set),h=Gt();function w(g){let E=JSON.stringify(g);if(c.has(E))return null;c.add(E),l(c),x.add(g),d(x);let T=s==null?void 0:s.find(b=>b.flowSlug===g.flowSlug&&b.stepId===g.stepId&&b.actionType===g.actionType&&b.createdAt===g.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:E}).then(b=>{b.status!==200&&b.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...r,g])):T||p(I=>[...I??[],g])})}async function C(g){g.foreignUserId&&(g.actionType===Dt||g.actionType===Qe?await w(g):g.actionType===Z?await w(g):g.actionType===Uo?await w(g):g.actionType===Ze?await w(g):g.actionType===Mo?await w(g):g.actionType===Ke&&await w(g))}function F(){let g=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let T in E.stepStates){let b=E.stepStates[T];g.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:b.stepId,actionType:b.actionType,data:{},createdAt:new Date(b.createdAt),blocked:b.blocked,hidden:b.hidden})}}),[...g,...s]}return{addResponse:C,setFlowResponses:p,getFlowResponses:F}}var ei=f(require("swr"));var ma=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Rr=e=>{let t=ma.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ua(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ua=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function xr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var zo=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(zo||{});function J(){let{config:e,apiUrl:t}=tt(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,qe.useContext)(X),w={data:[]},{verifySDKInitiated:C}=Kt(),{addResponse:F,getFlowResponses:g}=Yt(),E=u=>fetch(u,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${u} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),w)).catch(y=>(console.log(`Error fetching ${u}: ${y}. Will gracefully degrade and hide Frigade`),d(!0),w)),{mutateUserFlowState:T,userFlowStatesData:b,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:A,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:v}=ze(),{data:D,error:N,isLoading:O}=(0,ei.default)(n?`${t}flows${h?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,qe.useEffect)(()=>{if(N){console.error(N);return}D&&D.data&&i(D.data)},[D,N]);function U(u){if(O)return null;let y=o.find(B=>B.slug===u);return!y&&o.length>0&&!I&&!O?(console.log(`Flow with id ${u} not found`),null):(y==null?void 0:y.active)===!1?null:y}function M(u){var H;if(!U(u))return[];let y=U(u).data;return y?(y=se(y),(((H=xr(y))==null?void 0:H.data)??[]).map(z=>{let Je=me(z);return{handleSecondaryButtonClick:()=>{z.skippable===!0&&G(u,z.id,{skipped:!0})},...z,complete:ve(u,z.id)===Ze||Je>=1,blocked:pe(u,z.id),hidden:$(u,z.id),handlePrimaryButtonClick:()=>{(!z.completionCriteria&&(z.autoMarkCompleted||z.autoMarkCompleted===void 0)||z.completionCriteria&&z.autoMarkCompleted===!0)&&G(u,z.id)},progress:Je}}).filter(z=>z.hidden!==!0)):[]}function se(u){return u.replaceAll(/\${(.*?)}/g,(y,B)=>s[B]===void 0?"":String(s[B]).replace(/[\u00A0-\u9999<>\&]/g,function(H){return"&#"+H.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 _(u){if(!U(u))return[];let y=U(u).data;return y?(y=se(y),JSON.parse(y)??{}):[]}function le(u,y){p(B=>({...B,[u]:y}))}function Pe(u){!I&&!O&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(y=>{le(y,u[y])})}let ee=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Uo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await v(u,y,H),F(H))},[r,b]),V=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Ke,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await P(u,y),F(H))},[r,b]),G=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Ze,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await A(u,y,H),F(H))},[r,b]),Ae=(0,qe.useCallback)(async(u,y)=>{if(!C()||fe(u)===Qe)return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Qe,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),te(B)&&F(B)},[r,b]),Ge=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Dt,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&F(B)},[r,b]),Le=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Z,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&(await S(u),F(B))},[r,b]),be=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Mo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&(await S(u),F(B))},[r,b]);function te(u){var y;if(!b&&u.actionType===Ke)return!1;if(b){let B=b.find(H=>H.flowId===u.flowSlug);if(u.actionType===Ke&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Ke)||B&&((y=B.stepStates[u.stepId])==null?void 0:y.actionType)===u.actionType||B&&B.flowState===Z&&u.actionType===Z)return!1}return!0}function ve(u,y){let B=K(u,y);return I?null:B?B.actionType:Ke}function pe(u,y){let B=K(u,y);return B?B.blocked:!1}function $(u,y){let B=K(u,y);return B?B.hidden:!1}function K(u,y){if(I)return null;let B=b==null?void 0:b.find(H=>H.flowId===u);return!B||!B.stepStates[y]?null:B.stepStates[y]??null}function q(u){var B;if(I||!b)return null;if(fe(u)===Qe)return M(u)[0]??null;let y=(B=b.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return y?M(u).find(H=>H.id===y):null}function ce(u){let y=q(u);if(!y)return 0;let B=M(u).findIndex(H=>H.id===y.id)??0;return ve(u,y.id)===Ze&&B<M(u).length-1?B+1:B}function me(u){if(!u.completionCriteria)return;let y=Rr(u.completionCriteria);if(y===null)return;let B=gt(y),H=Xe(y);return H===0?void 0:B/H}function fe(u){let y=b==null?void 0:b.find(B=>B.flowId===u);return y?y.flowState:null}function gt(u){let y=M(u);return y.length===0?0:y.filter(H=>ve(u,H.id)===Ze).length}function Xe(u){return M(u).length}function Ht(u){let y=o.find(B=>B.slug===u);return y?xr(y.data):null}function Nt(u){if(h)return!1;if(I)return!0;if(u!=null&&u.targetingLogic&&b){let y=b.find(B=>B.flowId===u.slug);if(y)return y.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&r&&r.startsWith("guest_"))}function jt(u){return!Nt(U(u))}function Ot(){r&&T()}return{getFlow:U,getFlowData:Ht,isLoading:I||O,getStepStatus:ve,getFlowSteps:M,getCurrentStepIndex:ce,markStepStarted:ee,markStepCompleted:G,markFlowNotStarted:Ae,markFlowStarted:Ge,markFlowCompleted:Le,markFlowAborted:be,markStepNotStarted:V,getFlowStatus:fe,getNumberOfStepsCompleted:gt,getNumberOfSteps:Xe,targetingLogicShouldHideFlow:Nt,setCustomVariable:le,updateCustomVariables:Pe,customVariables:s,getStepOptionalProgress:me,getFlowMetadata:_,isStepBlocked:pe,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:jt,refresh:Ot}}var bt=require("react");var Xt="guest_";function Jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,bt.useContext)(X),{config:n,apiUrl:s}=tt(),{mutateUserFlowState:p}=ze(),c=Gt(),{verifySDKInitiated:l}=Kt();function x(C){return`frigade-user-registered-${C}`}(0,bt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Xt))return;let C=x(e);localStorage.getItem(C)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(C,"true"))}},[e,r,t]);let d=(0,bt.useCallback)(async C=>{if(!l())return;let F={foreignId:e,properties:C};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(F)}),i(g=>({...g,...C})),p()},[e,n,r,p]),h=(0,bt.useCallback)(async(C,F)=>{if(!l())return;let E={foreignId:e,events:[{event:C,properties:F}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),p()},[e,n,p]),w=(0,bt.useCallback)(async(C,F)=>{if(l())if(F){let g=x(C);localStorage.setItem(g,"true"),o(C);let E={foreignId:C,properties:F};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),i(T=>({...T,...F})),p()}else o(C)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:w,addPropertiesToUser:d,trackEventForUser:h}}var nn=require("uuid");var Ue=f(require("react"));var we=f(require("react")),yo=f(require("styled-components"));var oi=f(require("react")),ri=f(require("styled-components"));var ti="fr-",ho="cfr-";function a(e,t){let o=`${ti}${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+" "+ho+e}return o}function k(e){if(!e.className||e.className.indexOf(ho)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ti)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function hr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function We(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${hr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Be(...e){return e.filter(Boolean).join(" ")}function Co(e){return e.charAt(0).toUpperCase()+e.slice(1)}var fa=ri.default.div`
2
+ var oa=Object.create;var $o=Object.defineProperty;var ra=Object.getOwnPropertyDescriptor;var ia=Object.getOwnPropertyNames;var na=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var la=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},Yr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ia(t))!sa.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(i=ra(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?oa(na(e)):{},Yr(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),aa=e=>Yr($o({},"__esModule",{value:!0}),e);var ad={};la(ad,{Box:()=>ro,Button:()=>ea,CheckBox:()=>st,FlowType:()=>zo,FormLabel:()=>xt,FormTextField:()=>Jo,FrigadeAnnouncement:()=>Ql,FrigadeBanner:()=>Ll,FrigadeChecklist:()=>cr,FrigadeDefaultAppearance:()=>it,FrigadeEmbeddedTip:()=>Bl,FrigadeForm:()=>Br,FrigadeGuide:()=>sl,FrigadeHeroChecklist:()=>qs,FrigadeNPSSurvey:()=>_l,FrigadeProgressBadge:()=>il,FrigadeProvider:()=>Cn,FrigadeSupportWidget:()=>Tl,FrigadeTour:()=>ml,ProgressRing:()=>$t,Text:()=>fr,tokens:()=>nr,useFlowOpens:()=>Ie,useFlowResponses:()=>Yt,useFlows:()=>J,useOrganization:()=>or,useUser:()=>Jt,useUserFlowStates:()=>ze});module.exports=aa(ad);var Q=f(require("react")),gn=require("styled-components");var he=f(require("react"));var qe=require("react");var Lt=f(require("react"));var Xr="1.35.17 ";var Ke="NOT_STARTED_STEP",Z="COMPLETED_FLOW",Mo="ABORTED_FLOW",Dt="STARTED_FLOW",Qe="NOT_STARTED_FLOW",Ze="COMPLETED_STEP",Uo="STARTED_STEP";function tt(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(X);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Xr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var pa="frigade-last-call-at-",da="frigade-last-call-data-";function Gt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(X);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Vt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Vt();let r=pa+o,n=da+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Vt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Vt(p)}return s?s.ok?s:Vt(s.statusText):Vt()}}function Vt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Kt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.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 xo=require("react");var qt=require("react");var Qr=f(require("swr"));var Jr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Jr.useContext)(X);function n(d,h=!1){return e[d]??h}function s(d,h){t(w=>({...w,[d]:h}))}function p(d){t(h=>{let{[d]:w,...C}=h;return{...C}})}function c(d){r.includes(d)||i(h=>[...h,d])}function l(d){return r.includes(d)}function x(d){return Object.entries(e).some(([h,w])=>w&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var Zr=f(require("swr/immutable")),ca="unknown";function ze(){let{config:e,apiUrl:t}=tt(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,qt.useContext)(X),{resetOpenFlowState:c}=Ie(),[l,x]=(0,qt.useState)(!1),d={data:n.map(P=>({flowId:P.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},h=P=>fetch(P,e).then(v=>{if(v.ok)return v.json();throw new Error("Failed to fetch user flow states")}).catch(v=>(console.log(`Error fetching ${P}: ${v}. Will gracefully degrade and hide Frigade`),s(!0),d)),w=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:C,isLoading:F,mutate:g,error:E}=p?(0,Zr.default)(w,h):(0,Qr.default)(w,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),T=C==null?void 0:C.data;(0,qt.useEffect)(()=>{!l&&!F&&T&&x(!0)},[T,l,F]);async function b(P){if(T&&!p){let v=T.find(D=>D.flowId===P);v&&v.flowState!==Z&&(v.flowState=Z),await g(Promise.resolve({...C,data:T}),{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function I(P,v,D){if(T){let N=T.find(O=>O.flowId===P);N&&(N.stepStates[v]=D,N.flowState=Dt),await g(Promise.resolve({...C,data:T}),{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function S(P,v,D){if(T){let N=T.find(O=>O.flowId===P);N&&(N.lastStepId=v,N.stepStates[v]=D,N.flowState=Dt),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}async function m(P){if(T){let v=T.find(D=>D.flowId===P);v&&v.flowState!==Qe&&(v.flowState=Qe,v.lastStepId=ca,Object.keys(v.stepStates).forEach(D=>{v.stepStates[D].actionType=Ke,v.stepStates[D].createdAt=new Date().toISOString()}),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1}),c(P))}}async function A(P,v){if(T){let D=T.find(N=>N.flowId===P);D&&D.stepStates[v]!==Ke&&(D.stepStates[v]=Ke),await g({...C,data:T},{optimisticData:{...C,data:T},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:T,isLoadingUserFlowStateData:!l,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:b,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:A,optimisticallyMarkStepStarted:S,error:E}}function Yt(){let{config:e,apiUrl:t}=tt(),{userFlowStatesData:o,mutateUserFlowState:i}=ze(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,xo.useContext)(X),[c,l]=(0,xo.useState)(new Set),[x,d]=(0,xo.useState)(new Set),h=Gt();function w(g){let E=JSON.stringify(g);if(c.has(E))return null;c.add(E),l(c),x.add(g),d(x);let T=s==null?void 0:s.find(b=>b.flowSlug===g.flowSlug&&b.stepId===g.stepId&&b.actionType===g.actionType&&b.createdAt===g.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:E}).then(b=>{b.status!==200&&b.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...r,g])):T||p(I=>[...I??[],g])})}async function C(g){g.foreignUserId&&(g.actionType===Dt||g.actionType===Qe?await w(g):g.actionType===Z?await w(g):g.actionType===Uo?await w(g):g.actionType===Ze?await w(g):g.actionType===Mo?await w(g):g.actionType===Ke&&await w(g))}function F(){let g=[];return o==null||o.forEach(E=>{if(E&&E.stepStates&&Object.keys(E.stepStates).length!==0)for(let T in E.stepStates){let b=E.stepStates[T];g.push({foreignUserId:E.foreignUserId,flowSlug:E.flowId,stepId:b.stepId,actionType:b.actionType,data:{},createdAt:new Date(b.createdAt),blocked:b.blocked,hidden:b.hidden})}}),[...g,...s]}return{addResponse:C,setFlowResponses:p,getFlowResponses:F}}var ei=f(require("swr"));var ma=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Rr=e=>{let t=ma.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ua(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ua=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function xr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var zo=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(zo||{});function J(){let{config:e,apiUrl:t}=tt(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,qe.useContext)(X),w={data:[]},{verifySDKInitiated:C}=Kt(),{addResponse:F,getFlowResponses:g}=Yt(),E=u=>fetch(u,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${u} (${y.status}): ${y.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),w)).catch(y=>(console.log(`Error fetching ${u}: ${y}. Will gracefully degrade and hide Frigade`),d(!0),w)),{mutateUserFlowState:T,userFlowStatesData:b,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:A,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:v}=ze(),{data:D,error:N,isLoading:O}=(0,ei.default)(n?`${t}flows${h?"?readonly=true":""}`:null,E,{keepPreviousData:!0});(0,qe.useEffect)(()=>{if(N){console.error(N);return}D&&D.data&&i(D.data)},[D,N]);function U(u){if(O)return null;let y=o.find(B=>B.slug===u);return!y&&o.length>0&&!I&&!O?(console.log(`Flow with id ${u} not found`),null):(y==null?void 0:y.active)===!1?null:y}function M(u){var H;if(!U(u))return[];let y=U(u).data;return y?(y=se(y),(((H=xr(y))==null?void 0:H.data)??[]).map(z=>{let Je=me(z);return{handleSecondaryButtonClick:()=>{z.skippable===!0&&G(u,z.id,{skipped:!0})},...z,complete:ve(u,z.id)===Ze||Je>=1,blocked:pe(u,z.id),hidden:$(u,z.id),handlePrimaryButtonClick:()=>{(!z.completionCriteria&&(z.autoMarkCompleted||z.autoMarkCompleted===void 0)||z.completionCriteria&&z.autoMarkCompleted===!0)&&G(u,z.id)},progress:Je}}).filter(z=>z.hidden!==!0)):[]}function se(u){return u.replaceAll(/\${(.*?)}/g,(y,B)=>s[B]===void 0?"":String(s[B]).replace(/[\u00A0-\u9999<>\&]/g,function(H){return"&#"+H.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 _(u){if(!U(u))return[];let y=U(u).data;return y?(y=se(y),JSON.parse(y)??{}):[]}function le(u,y){p(B=>({...B,[u]:y}))}function Pe(u){!I&&!O&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(y=>{le(y,u[y])})}let ee=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Uo,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await v(u,y,H),F(H))},[r,b]),V=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Ke,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await P(u,y),F(H))},[r,b]),G=(0,qe.useCallback)(async(u,y,B)=>{if(!C())return;let H={foreignUserId:r,flowSlug:u,stepId:y,actionType:Ze,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};te(H)&&(await A(u,y,H),F(H))},[r,b]),Ae=(0,qe.useCallback)(async(u,y)=>{if(!C()||fe(u)===Qe)return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Qe,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),te(B)&&F(B)},[r,b]),Ge=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Dt,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&F(B)},[r,b]),Le=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Z,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&(await S(u),F(B))},[r,b]),be=(0,qe.useCallback)(async(u,y)=>{if(!C())return;let B={foreignUserId:r,flowSlug:u,stepId:"unknown",actionType:Mo,data:y??{},createdAt:new Date,blocked:!1,hidden:!1};te(B)&&(await S(u),F(B))},[r,b]);function te(u){var y;if(!b&&u.actionType===Ke)return!1;if(b){let B=b.find(H=>H.flowId===u.flowSlug);if(u.actionType===Ke&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Ke)||B&&((y=B.stepStates[u.stepId])==null?void 0:y.actionType)===u.actionType||B&&B.flowState===Z&&u.actionType===Z)return!1}return!0}function ve(u,y){let B=K(u,y);return I?null:B?B.actionType:Ke}function pe(u,y){let B=K(u,y);return B?B.blocked:!1}function $(u,y){let B=K(u,y);return B?B.hidden:!1}function K(u,y){if(I)return null;let B=b==null?void 0:b.find(H=>H.flowId===u);return!B||!B.stepStates[y]?null:B.stepStates[y]??null}function q(u){var B;if(I||!b)return null;if(fe(u)===Qe)return M(u)[0]??null;let y=(B=b.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return y?M(u).find(H=>H.id===y):null}function ce(u){let y=q(u);if(!y)return 0;let B=M(u).findIndex(H=>H.id===y.id)??0;return ve(u,y.id)===Ze&&B<M(u).length-1?B+1:B}function me(u){if(!u.completionCriteria)return;let y=Rr(u.completionCriteria);if(y===null)return;let B=gt(y),H=Xe(y);return H===0?void 0:B/H}function fe(u){let y=b==null?void 0:b.find(B=>B.flowId===u);return y?y.flowState:null}function gt(u){let y=M(u);return y.length===0?0:y.filter(H=>ve(u,H.id)===Ze).length}function Xe(u){return M(u).length}function Ht(u){let y=o.find(B=>B.slug===u);return y?xr(y.data):null}function Nt(u){if(h)return!1;if(I)return!0;if(u!=null&&u.targetingLogic&&b){let y=b.find(B=>B.flowId===u.slug);if(y)return y.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&r&&r.startsWith("guest_"))}function jt(u){return!Nt(U(u))}function Ot(){r&&T()}return{getFlow:U,getFlowData:Ht,isLoading:I||O,getStepStatus:ve,getFlowSteps:M,getCurrentStepIndex:ce,markStepStarted:ee,markStepCompleted:G,markFlowNotStarted:Ae,markFlowStarted:Ge,markFlowCompleted:Le,markFlowAborted:be,markStepNotStarted:V,getFlowStatus:fe,getNumberOfStepsCompleted:gt,getNumberOfSteps:Xe,targetingLogicShouldHideFlow:Nt,setCustomVariable:le,updateCustomVariables:Pe,customVariables:s,getStepOptionalProgress:me,getFlowMetadata:_,isStepBlocked:pe,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:jt,refresh:Ot}}var bt=require("react");var Xt="guest_";function Jt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,bt.useContext)(X),{config:n,apiUrl:s}=tt(),{mutateUserFlowState:p}=ze(),c=Gt(),{verifySDKInitiated:l}=Kt();function x(C){return`frigade-user-registered-${C}`}(0,bt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Xt))return;let C=x(e);localStorage.getItem(C)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(C,"true"))}},[e,r,t]);let d=(0,bt.useCallback)(async C=>{if(!l())return;let F={foreignId:e,properties:C};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(F)}),i(g=>({...g,...C})),p()},[e,n,r,p]),h=(0,bt.useCallback)(async(C,F)=>{if(!l())return;let E={foreignId:e,events:[{event:C,properties:F}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),p()},[e,n,p]),w=(0,bt.useCallback)(async(C,F)=>{if(l())if(F){let g=x(C);localStorage.setItem(g,"true"),o(C);let E={foreignId:C,properties:F};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(E)}),i(T=>({...T,...F})),p()}else o(C)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:w,addPropertiesToUser:d,trackEventForUser:h}}var nn=require("uuid");var Ue=f(require("react"));var we=f(require("react")),yo=f(require("styled-components"));var oi=f(require("react")),ri=f(require("styled-components"));var ti="fr-",ho="cfr-";function a(e,t){let o=`${ti}${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+" "+ho+e}return o}function k(e){if(!e.className||e.className.indexOf(ho)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ti)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function hr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function We(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${hr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Be(...e){return e.filter(Boolean).join(" ")}function Co(e){return e.charAt(0).toUpperCase()+e.slice(1)}var fa=ri.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;