@frigade/react 1.35.14 → 1.35.15
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 +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -217,7 +217,7 @@ declare enum TriggerType {
|
|
|
217
217
|
}
|
|
218
218
|
declare function useFlows(): {
|
|
219
219
|
getFlow: (flowId: string) => Flow;
|
|
220
|
-
getFlowData: (flowId: string) =>
|
|
220
|
+
getFlowData: <T>(flowId: string) => T;
|
|
221
221
|
isLoading: boolean;
|
|
222
222
|
getStepStatus: (flowId: string, stepId: string) => StepActionType | null;
|
|
223
223
|
getFlowSteps: (flowId: string) => StepData[];
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var ta=Object.create;var $o=Object.defineProperty;var oa=Object.getOwnPropertyDescriptor;var ra=Object.getOwnPropertyNames;var ia=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var sa=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},qr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ra(t))!na.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(i=oa(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?ta(ia(e)):{},qr(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),la=e=>qr($o({},"__esModule",{value:!0}),e);var ld={};sa(ld,{Box:()=>ro,Button:()=>Rl,CheckBox:()=>st,FlowType:()=>zo,FormLabel:()=>xt,FormTextField:()=>Jo,FrigadeAnnouncement:()=>Jl,FrigadeBanner:()=>Ol,FrigadeChecklist:()=>cr,FrigadeDefaultAppearance:()=>it,FrigadeEmbeddedTip:()=>vl,FrigadeForm:()=>vr,FrigadeGuide:()=>nl,FrigadeHeroChecklist:()=>Ks,FrigadeNPSSurvey:()=>Wl,FrigadeProgressBadge:()=>rl,FrigadeProvider:()=>hn,FrigadeSupportWidget:()=>wl,FrigadeTour:()=>cl,ProgressRing:()=>$t,Text:()=>fr,tokens:()=>nr,useFlowOpens:()=>Ie,useFlowResponses:()=>Yt,useFlows:()=>J,useOrganization:()=>or,useUser:()=>Jt,useUserFlowStates:()=>ze});module.exports=la(ld);var Q=f(require("react")),fn=require("styled-components");var he=f(require("react"));var qe=require("react");var Lt=f(require("react"));var Yr="1.35.14 ";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":Yr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var aa="frigade-last-call-at-",pa="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=aa+o,n=pa+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 Jr=f(require("swr"));var Xr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Xr.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 Qr=f(require("swr/immutable")),da="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,Qr.default)(w,h):(0,Jr.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=da,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 Rr=f(require("swr"));var ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Zr=e=>{let t=ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ma(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ma=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};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,Rr.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=JSON.parse(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=Zr(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?JSON.parse(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 rn=require("uuid");var Ue=f(require("react"));var we=f(require("react")),yo=f(require("styled-components"));var ti=f(require("react")),oi=f(require("styled-components"));var ei="fr-",ho="cfr-";function a(e,t){let o=`${ei}${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(ei)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function xr(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=>`${xr(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 ua=oi.default.div`
|
|
2
|
+
var ta=Object.create;var $o=Object.defineProperty;var oa=Object.getOwnPropertyDescriptor;var ra=Object.getOwnPropertyNames;var ia=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var sa=(e,t)=>{for(var o in t)$o(e,o,{get:t[o],enumerable:!0})},qr=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ra(t))!na.call(e,r)&&r!==o&&$o(e,r,{get:()=>t[r],enumerable:!(i=oa(t,r))||i.enumerable});return e};var f=(e,t,o)=>(o=e!=null?ta(ia(e)):{},qr(t||!e||!e.__esModule?$o(o,"default",{value:e,enumerable:!0}):o,e)),la=e=>qr($o({},"__esModule",{value:!0}),e);var ld={};sa(ld,{Box:()=>ro,Button:()=>Rl,CheckBox:()=>st,FlowType:()=>zo,FormLabel:()=>xt,FormTextField:()=>Jo,FrigadeAnnouncement:()=>Jl,FrigadeBanner:()=>Ol,FrigadeChecklist:()=>cr,FrigadeDefaultAppearance:()=>it,FrigadeEmbeddedTip:()=>vl,FrigadeForm:()=>vr,FrigadeGuide:()=>nl,FrigadeHeroChecklist:()=>Ks,FrigadeNPSSurvey:()=>Wl,FrigadeProgressBadge:()=>rl,FrigadeProvider:()=>hn,FrigadeSupportWidget:()=>wl,FrigadeTour:()=>cl,ProgressRing:()=>$t,Text:()=>fr,tokens:()=>nr,useFlowOpens:()=>Ie,useFlowResponses:()=>Yt,useFlows:()=>J,useOrganization:()=>or,useUser:()=>Jt,useUserFlowStates:()=>ze});module.exports=la(ld);var Q=f(require("react")),fn=require("styled-components");var he=f(require("react"));var qe=require("react");var Lt=f(require("react"));var Yr="1.35.15 ";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":Yr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var aa="frigade-last-call-at-",pa="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=aa+o,n=pa+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 Jr=f(require("swr"));var Xr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,Xr.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 Qr=f(require("swr/immutable")),da="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,Qr.default)(w,h):(0,Jr.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=da,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 Rr=f(require("swr"));var ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Zr=e=>{let t=ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ma(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ma=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};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,Rr.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=JSON.parse(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=Zr(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?JSON.parse(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 rn=require("uuid");var Ue=f(require("react"));var we=f(require("react")),yo=f(require("styled-components"));var ti=f(require("react")),oi=f(require("styled-components"));var ei="fr-",ho="cfr-";function a(e,t){let o=`${ei}${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(ei)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function xr(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=>`${xr(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 ua=oi.default.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|