@frigade/react 1.35.45 → 1.35.46

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.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var ia=Object.defineProperty,na=Object.defineProperties;var sa=Object.getOwnPropertyDescriptors;var Fo=Object.getOwnPropertySymbols;var oi=Object.prototype.hasOwnProperty,ri=Object.prototype.propertyIsEnumerable;var ti=(e,t,o)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,w=(e,t)=>{for(var o in t||(t={}))oi.call(t,o)&&ti(e,o,t[o]);if(Fo)for(var o of Fo(t))ri.call(t,o)&&ti(e,o,t[o]);return e},_=(e,t)=>na(e,sa(t));var ii=e=>typeof e=="symbol"?e:e+"",Ie=(e,t)=>{var o={};for(var i in e)oi.call(e,i)&&t.indexOf(i)<0&&(o[i]=e[i]);if(e!=null&&Fo)for(var i of Fo(e))t.indexOf(i)<0&&ri.call(e,i)&&(o[i]=e[i]);return o};var M=(e,t,o)=>new Promise((i,n)=>{var r=d=>{try{p(o.next(d))}catch(s){n(s)}},l=d=>{try{p(o.throw(d))}catch(s){n(s)}},p=d=>d.done?i(d.value):Promise.resolve(d.value).then(r,l);p((o=o.apply(e,t)).next())});import Pt,{createContext as xd,useEffect as Go,useState as je}from"react";import{ThemeProvider as Cd}from"styled-components";import kt,{useContext as Kp,useEffect as go,useState as jo}from"react";import{useCallback as wt,useContext as ya,useEffect as Sa}from"react";import rr,{useMemo as si}from"react";var ni="1.35.45 ";var He="NOT_STARTED_STEP",Z="COMPLETED_FLOW",ko="ABORTED_FLOW",bt="STARTED_FLOW",Me="NOT_STARTED_FLOW",Ke="COMPLETED_STEP",Po="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t,apiUrl:o}=rr.useContext(Q);return{config:si(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ni,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:si(()=>`${o}/v1/public/`,[o])}}var la="frigade-last-call-at-",aa="frigade-last-call-data-";function Dt(){let{shouldGracefullyDegrade:e,readonly:t}=rr.useContext(Q);return(o,i)=>M(this,null,function*(){if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Mt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Mt();let n=la+o,r=aa+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(n),d=window.localStorage.getItem(r);if(p&&d&&d==i.body){let s=new Date(p);if(new Date().getTime()-s.getTime()<1e3)return Mt()}window.localStorage.setItem(n,new Date().toISOString()),window.localStorage.setItem(r,i.body)}let l;try{l=yield fetch(o,i)}catch(p){return Mt(p)}return l?l.ok?l:Mt(l.statusText):Mt()})}function Mt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ut(){let{publicApiKey:e,shouldGracefullyDegrade:t}=rr.useContext(Q);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}}import{useContext as ha,useState as li}from"react";import{useContext as da,useEffect as ca,useState as ma}from"react";import ua from"swr";import{useContext as pa}from"react";function Be(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=pa(Q);function r(c,g=!1){var y;return(y=e[c])!=null?y:g}function l(c,g){t(y=>_(w({},y),{[c]:g}))}function p(c){t(g=>{let S=g,{[c]:y}=S,T=Ie(S,[ii(c)]);return w({},T)})}function d(c){n.includes(c)||i(g=>[...g,c])}function s(c){return n.includes(c)}function m(c){return Object.entries(e).some(([g,y])=>y&&g!=c)||o}return{getOpenFlowState:r,setOpenFlowState:l,resetOpenFlowState:p,hasOpenModals:m,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:s}}import fa from"swr/immutable";import ro from"core-js-pure/actual/structured-clone";function ir(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ce(...e){let t=e.shift(),o=e.length===1?e[0]:Ce(...e);if(!ir(t)||!ir(o))throw new Error("deepmerge can only merge Objects");let i=ro(t);return Object.entries(o).forEach(([n,r])=>{ir(r)?i[n]!==void 0?Object.assign(i,{[n]:Ce(i[n],ro(r))}):Object.assign(i,{[n]:ro(r)}):Array.isArray(r)?i[n]!==void 0?Object.assign(i,{[n]:[...i[n],...ro(r)]}):Object.assign(i,{[n]:ro(r)}):Object.assign(i,{[n]:r})}),i}var ga="unknown";function De(){let{config:e,apiUrl:t}=Je(),{publicApiKey:o,userId:i,organizationId:n,flows:r,setShouldGracefullyDegrade:l,readonly:p}=da(Q),{resetOpenFlowState:d}=Be(),[s,m]=ma(!1),c={data:r.map(u=>({flowId:u.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},g=u=>fetch(u,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${u}: ${P}. Will gracefully degrade and hide Frigade`),l(!0),c)),y=o&&r&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${n?`&foreignUserGroupId=${encodeURIComponent(n)}`:""}`:null,{data:T,isLoading:S,mutate:h,error:B}=p?fa(y,g):ua(y,g,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!1,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),v=T==null?void 0:T.data;ca(()=>{!s&&!S&&v&&m(!0)},[v,s,S]);function F(u){return M(this,null,function*(){if(v&&!p){let P=v.find(N=>N.flowId===u);P&&P.flowState!==Z&&(P.flowState=Z),yield h(Promise.resolve(Ce(T,{data:v})),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function A(u,P,N){return M(this,null,function*(){if(v){let L=v.find(I=>I.flowId===u);L&&(L.stepStates[P]=N,L.flowState=bt),yield h(Promise.resolve(Ce(T,{data:v})),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function O(u,P,N){return M(this,null,function*(){if(v){let L=v.find(I=>I.flowId===u);L&&(L.lastStepId=P,L.stepStates[P]=N,L.flowState=bt),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function x(u){return M(this,null,function*(){if(v){let P=v.find(N=>N.flowId===u);P&&P.flowState!==Me&&(P.flowState=Me,P.lastStepId=ga,Object.keys(P.stepStates).forEach(N=>{P.stepStates[N].actionType=He,P.stepStates[N].createdAt=new Date().toISOString()}),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1}),d(u))}})}function b(u,P){return M(this,null,function*(){if(v){let N=v.find(L=>L.flowId===u);N&&N.stepStates[P]!==He&&(N.stepStates[P]=He),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}return{userFlowStatesData:v,isLoadingUserFlowStateData:!s,mutateUserFlowState:h,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:x,optimisticallyMarkStepCompleted:A,optimisticallyMarkStepNotStarted:b,optimisticallyMarkStepStarted:O,error:B}}function io(){let{config:e,apiUrl:t}=Je(),{userFlowStatesData:o,mutateUserFlowState:i}=De(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:l,setFlowResponses:p}=ha(Q),[d,s]=li(new Set),[m,c]=li(new Set),g=Dt();function y(h){let B=JSON.stringify(h);if(d.has(B))return null;d.add(B),s(d),m.add(h),c(m);let v=l==null?void 0:l.find(F=>F.flowSlug===h.flowSlug&&F.stepId===h.stepId&&F.actionType===h.actionType&&F.createdAt===h.createdAt);return g(`${t}flowResponses`,_(w({},e),{method:"POST",body:B})).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+h.stepId+". Will retry again later."),r([...n,h])):v||p(A=>[...A!=null?A:[],h])})}function T(h){return M(this,null,function*(){h.foreignUserId&&(h.actionType===bt||h.actionType===Me?yield y(h):h.actionType===Z?yield y(h):h.actionType===Po?yield y(h):h.actionType===Ke?yield y(h):h.actionType===ko?yield y(h):h.actionType===He&&(yield y(h)))})}function S(){let h=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let v in B.stepStates){let F=B.stepStates[v];h.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...h,...l]}return{addResponse:T,setFlowResponses:p,getFlowResponses:S}}import ba from"swr";var xa=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ai=e=>{let t=xa.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=Ca(i,"'","");r.startsWith("flow_")&&(o=r)}),o},Ca=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function nr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var sr=(s=>(s.CHECKLIST="CHECKLIST",s.FORM="FORM",s.TOUR="TOUR",s.SUPPORT="SUPPORT",s.CUSTOM="CUSTOM",s.BANNER="BANNER",s.EMBEDDED_TIP="EMBEDDED_TIP",s.NPS_SURVEY="NPS_SURVEY",s.ANNOUNCEMENT="ANNOUNCEMENT",s))(sr||{});function R(){let{config:e,apiUrl:t}=Je(),{flows:o,setFlows:i,userId:n,organizationId:r,publicApiKey:l,customVariables:p,setCustomVariables:d,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,setFlowResponses:c,setShouldGracefullyDegrade:g,readonly:y}=ya(Q),T={data:[]},{verifySDKInitiated:S}=Ut(),{addResponse:h,getFlowResponses:B}=io(),v=C=>fetch(C,e).then(f=>f.ok?f.json():(console.log(`Error fetching ${C} (${f.status}): ${f.statusText}. Will gracefully degrade and hide Frigade`),g(!0),T)).catch(f=>(console.log(`Error fetching ${C}: ${f}. Will gracefully degrade and hide Frigade`),g(!0),T)),{mutateUserFlowState:F,userFlowStatesData:A,isLoadingUserFlowStateData:O,optimisticallyMarkFlowCompleted:x,optimisticallyMarkFlowNotStarted:b,optimisticallyMarkStepCompleted:u,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:N}=De(),{data:L,error:I,isLoading:q}=ba(l?`${t}flows${y?"?readonly=true":""}`:null,v,{keepPreviousData:!0});Sa(()=>{if(I){console.error(I);return}L&&L.data&&i(L.data)},[L,I]);function D(C){if(q)return null;let f=o.find(k=>k.slug===C);return!f&&o.length>0&&!O&&!q?(console.log(`Flow with id ${C} not found`),null):(f==null?void 0:f.active)===!1&&!y?null:f}function j(C){var z,he;if(!D(C))return[];let f=D(C).data;return f?(f=le(f),((he=(z=nr(f))==null?void 0:z.data)!=null?he:[]).map(xe=>{let oo=J(xe);return _(w({handleSecondaryButtonClick:()=>{xe.skippable===!0&&V(C,xe.id,{skipped:!0})}},xe),{complete:ue(C,xe.id)===Ke||oo>=1,blocked:Oe(C,xe.id),hidden:we(C,xe.id),handlePrimaryButtonClick:()=>{(!xe.completionCriteria&&(xe.autoMarkCompleted||xe.autoMarkCompleted===void 0)||xe.completionCriteria&&xe.autoMarkCompleted===!0)&&V(C,xe.id)},progress:oo})}).filter(xe=>xe.hidden!==!0)):[]}function le(C){return C.replaceAll(/\${(.*?)}/g,(f,k)=>p[k]===void 0?"":String(p[k]).replace(/[\u00A0-\u9999<>\&]/g,function(z){return"&#"+z.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 pe(C){var k;if(!D(C))return[];let f=D(C).data;return f?(f=le(f),(k=JSON.parse(f))!=null?k:{}):[]}function K(C,f){d(k=>_(w({},k),{[C]:f}))}function se(C){!O&&!q&&C&&JSON.stringify(p)!=JSON.stringify(w(w({},p),C))&&Object.keys(C).forEach(f=>{K(f,C[f])})}let de=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:Po,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield N(C,f,z),h(z))}),[n,r,A]),be=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:He,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield P(C,f),h(z))}),[n,r,A]),V=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:Ke,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield u(C,f,z),h(z))}),[n,r,A]),Y=wt((C,f)=>M(this,null,function*(){if(!S()||fe(C)===Me)return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:Me,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};yield b(C),X(k)&&h(k)}),[n,r,A]),ee=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:bt,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&h(k)}),[n,r,A]),Ve=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:Z,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&(yield x(C),h(k))}),[n,r,A]),Le=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:ko,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&(yield x(C),h(k))}),[n,r,A]);function X(C){var f;if(!A&&C.actionType===He)return!1;if(A){let k=A.find(z=>z.flowId===C.flowSlug);if(C.actionType===He&&(!(k!=null&&k.stepStates[C.stepId])||k.stepStates[C.stepId].actionType===He)||k&&((f=k.stepStates[C.stepId])==null?void 0:f.actionType)===C.actionType||k&&k.flowState===Z&&C.actionType===Z)return!1}return!0}function ue(C,f){let k=U(C,f);return O?null:k?k.actionType:He}function Oe(C,f){let k=U(C,f);return k?k.blocked:!1}function we(C,f){let k=U(C,f);return k?k.hidden:!1}function U(C,f){var z;if(O)return null;let k=A==null?void 0:A.find(he=>he.flowId===C);return!k||!k.stepStates[f]?null:(z=k.stepStates[f])!=null?z:null}function $(C){var k,z;if(O||!A)return null;if(fe(C)===Me)return(k=j(C)[0])!=null?k:null;let f=(z=A.find(he=>he.flowId===C))==null?void 0:z.lastStepId;return f?j(C).find(he=>he.id===f):null}function W(C){var z;let f=$(C);if(!f)return 0;let k=(z=j(C).findIndex(he=>he.id===f.id))!=null?z:0;return ue(C,f.id)===Ke&&k<j(C).length-1?k+1:k}function J(C){if(!C.completionCriteria)return;let f=ai(C.completionCriteria);if(f===null)return;let k=$e(f),z=Ge(f);return z===0?void 0:k/z}function fe(C){let f=A==null?void 0:A.find(k=>k.flowId===C);return f?f.flowState:null}function $e(C){let f=j(C);return f.length===0?0:f.filter(z=>ue(C,z.id)===Ke).length}function Ge(C){return j(C).length}function Xe(C){let f=o.find(k=>k.slug===C);return f?nr(f.data):null}function St(C){if(y)return!1;if(O)return!0;if(C!=null&&C.targetingLogic&&A){let f=A.find(k=>k.flowId===C.slug);if(f)return f.shouldTrigger===!1}return!!(C!=null&&C.targetingLogic&&n&&n.startsWith("guest_"))}function Lt(C){return!St(D(C))}function $t(){n&&F()}return{getFlow:D,getFlowData:Xe,isLoading:O||q,getStepStatus:ue,getFlowSteps:j,getCurrentStepIndex:W,markStepStarted:de,markStepCompleted:V,markFlowNotStarted:Y,markFlowStarted:ee,markFlowCompleted:Ve,markFlowAborted:Le,markStepNotStarted:be,getFlowStatus:fe,getNumberOfStepsCompleted:$e,getNumberOfSteps:Ge,targetingLogicShouldHideFlow:St,setCustomVariable:K,updateCustomVariables:se,customVariables:p,getStepOptionalProgress:J,getFlowMetadata:pe,isStepBlocked:Oe,isStepHidden:we,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,isFlowAvailableToUser:Lt,refresh:$t}}import{useCallback as lr,useContext as wa,useEffect as Ta}from"react";var Wt="guest_";function no(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=wa(Q),{config:r,apiUrl:l}=Je(),{mutateUserFlowState:p}=De(),d=Dt(),{verifySDKInitiated:s}=Ut();function m(T){return`frigade-user-registered-${T}`}Ta(()=>{if(e&&!t){if(e.startsWith(Wt))return;let T=m(e);localStorage.getItem(T)||(d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify({foreignId:e})})),localStorage.setItem(T,"true"))}},[e,n,t]);let c=lr(T=>M(this,null,function*(){if(!s())return;let S={foreignId:e,properties:T};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(S)})),i(h=>w(w({},h),T)),p()}),[e,r,n,p]),g=lr((T,S)=>M(this,null,function*(){if(!s())return;let B={foreignId:e,events:[{event:T,properties:S}]};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(B)})),p()}),[e,r,p]),y=lr((T,S)=>M(this,null,function*(){if(s())if(S){let h=m(T);localStorage.setItem(h,"true"),o(T);let B={foreignId:T,properties:S};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(B)})),i(v=>w(w({},v),S)),p()}else o(T)}),[r,n,p]);return{userId:e,setUserId:o,setUserIdWithProperties:y,addPropertiesToUser:c,trackEventForUser:g}}import{v4 as qp}from"uuid";import et,{useEffect as mn,useState as un}from"react";import qe,{useEffect as cr,useState as Ia}from"react";import Ao from"styled-components";import Fa from"react";import ka from"styled-components";var pi="fr-",so="cfr-";function a(e,t){let o=`${pi}${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+" "+so+e}return o}function E(e){if(!e.className||e.className.indexOf(so)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(pi)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function vo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ke(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${vo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Te(...e){return e.filter(Boolean).join(" ")}function lo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Pa=ka.div`
2
+ var ia=Object.defineProperty,na=Object.defineProperties;var sa=Object.getOwnPropertyDescriptors;var Fo=Object.getOwnPropertySymbols;var oi=Object.prototype.hasOwnProperty,ri=Object.prototype.propertyIsEnumerable;var ti=(e,t,o)=>t in e?ia(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,w=(e,t)=>{for(var o in t||(t={}))oi.call(t,o)&&ti(e,o,t[o]);if(Fo)for(var o of Fo(t))ri.call(t,o)&&ti(e,o,t[o]);return e},_=(e,t)=>na(e,sa(t));var ii=e=>typeof e=="symbol"?e:e+"",Ie=(e,t)=>{var o={};for(var i in e)oi.call(e,i)&&t.indexOf(i)<0&&(o[i]=e[i]);if(e!=null&&Fo)for(var i of Fo(e))t.indexOf(i)<0&&ri.call(e,i)&&(o[i]=e[i]);return o};var M=(e,t,o)=>new Promise((i,n)=>{var r=d=>{try{p(o.next(d))}catch(s){n(s)}},l=d=>{try{p(o.throw(d))}catch(s){n(s)}},p=d=>d.done?i(d.value):Promise.resolve(d.value).then(r,l);p((o=o.apply(e,t)).next())});import Pt,{createContext as xd,useEffect as Go,useState as je}from"react";import{ThemeProvider as Cd}from"styled-components";import kt,{useContext as Kp,useEffect as go,useState as jo}from"react";import{useCallback as wt,useContext as ya,useEffect as Sa}from"react";import rr,{useMemo as si}from"react";var ni="1.35.46 ";var He="NOT_STARTED_STEP",Z="COMPLETED_FLOW",ko="ABORTED_FLOW",bt="STARTED_FLOW",Me="NOT_STARTED_FLOW",Ke="COMPLETED_STEP",Po="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t,apiUrl:o}=rr.useContext(Q);return{config:si(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":ni,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:si(()=>`${o}/v1/public/`,[o])}}var la="frigade-last-call-at-",aa="frigade-last-call-data-";function Dt(){let{shouldGracefullyDegrade:e,readonly:t}=rr.useContext(Q);return(o,i)=>M(this,null,function*(){if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Mt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Mt();let n=la+o,r=aa+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(n),d=window.localStorage.getItem(r);if(p&&d&&d==i.body){let s=new Date(p);if(new Date().getTime()-s.getTime()<1e3)return Mt()}window.localStorage.setItem(n,new Date().toISOString()),window.localStorage.setItem(r,i.body)}let l;try{l=yield fetch(o,i)}catch(p){return Mt(p)}return l?l.ok?l:Mt(l.statusText):Mt()})}function Mt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Ut(){let{publicApiKey:e,shouldGracefullyDegrade:t}=rr.useContext(Q);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}}import{useContext as ha,useState as li}from"react";import{useContext as da,useEffect as ca,useState as ma}from"react";import ua from"swr";import{useContext as pa}from"react";function Be(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=pa(Q);function r(c,g=!1){var y;return(y=e[c])!=null?y:g}function l(c,g){t(y=>_(w({},y),{[c]:g}))}function p(c){t(g=>{let S=g,{[c]:y}=S,T=Ie(S,[ii(c)]);return w({},T)})}function d(c){n.includes(c)||i(g=>[...g,c])}function s(c){return n.includes(c)}function m(c){return Object.entries(e).some(([g,y])=>y&&g!=c)||o}return{getOpenFlowState:r,setOpenFlowState:l,resetOpenFlowState:p,hasOpenModals:m,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:s}}import fa from"swr/immutable";import ro from"core-js-pure/actual/structured-clone";function ir(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ce(...e){let t=e.shift(),o=e.length===1?e[0]:Ce(...e);if(!ir(t)||!ir(o))throw new Error("deepmerge can only merge Objects");let i=ro(t);return Object.entries(o).forEach(([n,r])=>{ir(r)?i[n]!==void 0?Object.assign(i,{[n]:Ce(i[n],ro(r))}):Object.assign(i,{[n]:ro(r)}):Array.isArray(r)?i[n]!==void 0?Object.assign(i,{[n]:[...i[n],...ro(r)]}):Object.assign(i,{[n]:ro(r)}):Object.assign(i,{[n]:r})}),i}var ga="unknown";function De(){let{config:e,apiUrl:t}=Je(),{publicApiKey:o,userId:i,organizationId:n,flows:r,setShouldGracefullyDegrade:l,readonly:p}=da(Q),{resetOpenFlowState:d}=Be(),[s,m]=ma(!1),c={data:r.map(u=>({flowId:u.id,flowState:Z,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},g=u=>fetch(u,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${u}: ${P}. Will gracefully degrade and hide Frigade`),l(!0),c)),y=o&&r&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${n?`&foreignUserGroupId=${encodeURIComponent(n)}`:""}`:null,{data:T,isLoading:S,mutate:h,error:B}=p?fa(y,g):ua(y,g,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!1,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),v=T==null?void 0:T.data;ca(()=>{!s&&!S&&v&&m(!0)},[v,s,S]);function F(u){return M(this,null,function*(){if(v&&!p){let P=v.find(N=>N.flowId===u);P&&P.flowState!==Z&&(P.flowState=Z),yield h(Promise.resolve(Ce(T,{data:v})),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function A(u,P,N){return M(this,null,function*(){if(v){let L=v.find(I=>I.flowId===u);L&&(L.stepStates[P]=N,L.flowState=bt),yield h(Promise.resolve(Ce(T,{data:v})),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function O(u,P,N){return M(this,null,function*(){if(v){let L=v.find(I=>I.flowId===u);L&&(L.lastStepId=P,L.stepStates[P]=N,L.flowState=bt),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}function x(u){return M(this,null,function*(){if(v){let P=v.find(N=>N.flowId===u);P&&P.flowState!==Me&&(P.flowState=Me,P.lastStepId=ga,Object.keys(P.stepStates).forEach(N=>{P.stepStates[N].actionType=He,P.stepStates[N].createdAt=new Date().toISOString()}),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1}),d(u))}})}function b(u,P){return M(this,null,function*(){if(v){let N=v.find(L=>L.flowId===u);N&&N.stepStates[P]!==He&&(N.stepStates[P]=He),yield h(Ce(T,{data:v}),{optimisticData:Ce(T,{data:v}),revalidate:!1,rollbackOnError:!1})}})}return{userFlowStatesData:v,isLoadingUserFlowStateData:!s,mutateUserFlowState:h,optimisticallyMarkFlowCompleted:F,optimisticallyMarkFlowNotStarted:x,optimisticallyMarkStepCompleted:A,optimisticallyMarkStepNotStarted:b,optimisticallyMarkStepStarted:O,error:B}}function io(){let{config:e,apiUrl:t}=Je(),{userFlowStatesData:o,mutateUserFlowState:i}=De(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:l,setFlowResponses:p}=ha(Q),[d,s]=li(new Set),[m,c]=li(new Set),g=Dt();function y(h){let B=JSON.stringify(h);if(d.has(B))return null;d.add(B),s(d),m.add(h),c(m);let v=l==null?void 0:l.find(F=>F.flowSlug===h.flowSlug&&F.stepId===h.stepId&&F.actionType===h.actionType&&F.createdAt===h.createdAt);return g(`${t}flowResponses`,_(w({},e),{method:"POST",body:B})).then(F=>{F.status!==200&&F.status!==201?(console.log("Failed to send flow response for step "+h.stepId+". Will retry again later."),r([...n,h])):v||p(A=>[...A!=null?A:[],h])})}function T(h){return M(this,null,function*(){h.foreignUserId&&(h.actionType===bt||h.actionType===Me?yield y(h):h.actionType===Z?yield y(h):h.actionType===Po?yield y(h):h.actionType===Ke?yield y(h):h.actionType===ko?yield y(h):h.actionType===He&&(yield y(h)))})}function S(){let h=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let v in B.stepStates){let F=B.stepStates[v];h.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:F.stepId,actionType:F.actionType,data:{},createdAt:new Date(F.createdAt),blocked:F.blocked,hidden:F.hidden})}}),[...h,...l]}return{addResponse:T,setFlowResponses:p,getFlowResponses:S}}import ba from"swr";var xa=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ai=e=>{let t=xa.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=Ca(i,"'","");r.startsWith("flow_")&&(o=r)}),o},Ca=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function nr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var sr=(s=>(s.CHECKLIST="CHECKLIST",s.FORM="FORM",s.TOUR="TOUR",s.SUPPORT="SUPPORT",s.CUSTOM="CUSTOM",s.BANNER="BANNER",s.EMBEDDED_TIP="EMBEDDED_TIP",s.NPS_SURVEY="NPS_SURVEY",s.ANNOUNCEMENT="ANNOUNCEMENT",s))(sr||{});function R(){let{config:e,apiUrl:t}=Je(),{flows:o,setFlows:i,userId:n,organizationId:r,publicApiKey:l,customVariables:p,setCustomVariables:d,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,setFlowResponses:c,setShouldGracefullyDegrade:g,readonly:y}=ya(Q),T={data:[]},{verifySDKInitiated:S}=Ut(),{addResponse:h,getFlowResponses:B}=io(),v=C=>fetch(C,e).then(f=>f.ok?f.json():(console.log(`Error fetching ${C} (${f.status}): ${f.statusText}. Will gracefully degrade and hide Frigade`),g(!0),T)).catch(f=>(console.log(`Error fetching ${C}: ${f}. Will gracefully degrade and hide Frigade`),g(!0),T)),{mutateUserFlowState:F,userFlowStatesData:A,isLoadingUserFlowStateData:O,optimisticallyMarkFlowCompleted:x,optimisticallyMarkFlowNotStarted:b,optimisticallyMarkStepCompleted:u,optimisticallyMarkStepNotStarted:P,optimisticallyMarkStepStarted:N}=De(),{data:L,error:I,isLoading:q}=ba(l?`${t}flows${y?"?readonly=true":""}`:null,v,{keepPreviousData:!0});Sa(()=>{if(I){console.error(I);return}L&&L.data&&i(L.data)},[L,I]);function D(C){if(q)return null;let f=o.find(k=>k.slug===C);return!f&&o.length>0&&!O&&!q?(console.log(`Flow with id ${C} not found`),null):(f==null?void 0:f.active)===!1&&!y?null:f}function j(C){var z,he;if(!D(C))return[];let f=D(C).data;return f?(f=le(f),((he=(z=nr(f))==null?void 0:z.data)!=null?he:[]).map(xe=>{let oo=J(xe);return _(w({handleSecondaryButtonClick:()=>{xe.skippable===!0&&V(C,xe.id,{skipped:!0})}},xe),{complete:ue(C,xe.id)===Ke||oo>=1,blocked:Oe(C,xe.id),hidden:we(C,xe.id),handlePrimaryButtonClick:()=>{(!xe.completionCriteria&&(xe.autoMarkCompleted||xe.autoMarkCompleted===void 0)||xe.completionCriteria&&xe.autoMarkCompleted===!0)&&V(C,xe.id)},progress:oo})}).filter(xe=>xe.hidden!==!0)):[]}function le(C){return C.replaceAll(/\${(.*?)}/g,(f,k)=>p[k]===void 0?"":String(p[k]).replace(/[\u00A0-\u9999<>\&]/g,function(z){return"&#"+z.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 pe(C){var k;if(!D(C))return[];let f=D(C).data;return f?(f=le(f),(k=JSON.parse(f))!=null?k:{}):[]}function K(C,f){d(k=>_(w({},k),{[C]:f}))}function se(C){!O&&!q&&C&&JSON.stringify(p)!=JSON.stringify(w(w({},p),C))&&Object.keys(C).forEach(f=>{K(f,C[f])})}let de=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:Po,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield N(C,f,z),h(z))}),[n,r,A]),be=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:He,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield P(C,f),h(z))}),[n,r,A]),V=wt((C,f,k)=>M(this,null,function*(){if(!S())return;let z={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:f,actionType:Ke,data:k!=null?k:{},createdAt:new Date,blocked:!1,hidden:!1};X(z)&&(yield u(C,f,z),h(z))}),[n,r,A]),Y=wt((C,f)=>M(this,null,function*(){if(!S()||fe(C)===Me)return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:Me,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};yield b(C),X(k)&&h(k)}),[n,r,A]),ee=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:bt,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&h(k)}),[n,r,A]),Ve=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:Z,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&(yield x(C),h(k))}),[n,r,A]),Le=wt((C,f)=>M(this,null,function*(){if(!S())return;let k={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:C,stepId:"unknown",actionType:ko,data:f!=null?f:{},createdAt:new Date,blocked:!1,hidden:!1};X(k)&&(yield x(C),h(k))}),[n,r,A]);function X(C){var f;if(!A&&C.actionType===He)return!1;if(A){let k=A.find(z=>z.flowId===C.flowSlug);if(C.actionType===He&&(!(k!=null&&k.stepStates[C.stepId])||k.stepStates[C.stepId].actionType===He)||k&&((f=k.stepStates[C.stepId])==null?void 0:f.actionType)===C.actionType||k&&k.flowState===Z&&C.actionType===Z)return!1}return!0}function ue(C,f){let k=U(C,f);return O?null:k?k.actionType:He}function Oe(C,f){let k=U(C,f);return k?k.blocked:!1}function we(C,f){let k=U(C,f);return k?k.hidden:!1}function U(C,f){var z;if(O)return null;let k=A==null?void 0:A.find(he=>he.flowId===C);return!k||!k.stepStates[f]?null:(z=k.stepStates[f])!=null?z:null}function $(C){var k,z;if(O||!A)return null;if(fe(C)===Me)return(k=j(C)[0])!=null?k:null;let f=(z=A.find(he=>he.flowId===C))==null?void 0:z.lastStepId;return f?j(C).find(he=>he.id===f):null}function W(C){var z;let f=$(C);if(!f)return 0;let k=(z=j(C).findIndex(he=>he.id===f.id))!=null?z:0;return ue(C,f.id)===Ke&&k<j(C).length-1?k+1:k}function J(C){if(!C.completionCriteria)return;let f=ai(C.completionCriteria);if(f===null)return;let k=$e(f),z=Ge(f);return z===0?void 0:k/z}function fe(C){let f=A==null?void 0:A.find(k=>k.flowId===C);return f?f.flowState:null}function $e(C){let f=j(C);return f.length===0?0:f.filter(z=>ue(C,z.id)===Ke).length}function Ge(C){return j(C).length}function Xe(C){let f=o.find(k=>k.slug===C);return f?nr(f.data):null}function St(C){if(y)return!1;if(O)return!0;if(C!=null&&C.targetingLogic&&A){let f=A.find(k=>k.flowId===C.slug);if(f)return f.shouldTrigger===!1}return!!(C!=null&&C.targetingLogic&&n&&n.startsWith("guest_"))}function Lt(C){return!St(D(C))}function $t(){n&&F()}return{getFlow:D,getFlowData:Xe,isLoading:O||q,getStepStatus:ue,getFlowSteps:j,getCurrentStepIndex:W,markStepStarted:de,markStepCompleted:V,markFlowNotStarted:Y,markFlowStarted:ee,markFlowCompleted:Ve,markFlowAborted:Le,markStepNotStarted:be,getFlowStatus:fe,getNumberOfStepsCompleted:$e,getNumberOfSteps:Ge,targetingLogicShouldHideFlow:St,setCustomVariable:K,updateCustomVariables:se,customVariables:p,getStepOptionalProgress:J,getFlowMetadata:pe,isStepBlocked:Oe,isStepHidden:we,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,isFlowAvailableToUser:Lt,refresh:$t}}import{useCallback as lr,useContext as wa,useEffect as Ta}from"react";var Wt="guest_";function no(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=wa(Q),{config:r,apiUrl:l}=Je(),{mutateUserFlowState:p}=De(),d=Dt(),{verifySDKInitiated:s}=Ut();function m(T){return`frigade-user-registered-${T}`}Ta(()=>{if(e&&!t){if(e.startsWith(Wt))return;let T=m(e);localStorage.getItem(T)||(d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify({foreignId:e})})),localStorage.setItem(T,"true"))}},[e,n,t]);let c=lr(T=>M(this,null,function*(){if(!s())return;let S={foreignId:e,properties:T};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(S)})),i(h=>w(w({},h),T)),p()}),[e,r,n,p]),g=lr((T,S)=>M(this,null,function*(){if(!s())return;let B={foreignId:e,events:[{event:T,properties:S}]};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(B)})),p()}),[e,r,p]),y=lr((T,S)=>M(this,null,function*(){if(s())if(S){let h=m(T);localStorage.setItem(h,"true"),o(T);let B={foreignId:T,properties:S};yield d(`${l}users`,_(w({},r),{method:"POST",body:JSON.stringify(B)})),i(v=>w(w({},v),S)),p()}else o(T)}),[r,n,p]);return{userId:e,setUserId:o,setUserIdWithProperties:y,addPropertiesToUser:c,trackEventForUser:g}}import{v4 as qp}from"uuid";import et,{useEffect as mn,useState as un}from"react";import qe,{useEffect as cr,useState as Ia}from"react";import Ao from"styled-components";import Fa from"react";import ka from"styled-components";var pi="fr-",so="cfr-";function a(e,t){let o=`${pi}${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+" "+so+e}return o}function E(e){if(!e.className||e.className.indexOf(so)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(pi)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function vo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ke(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${vo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Te(...e){return e.filter(Boolean).join(" ")}function lo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Pa=ka.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -1621,16 +1621,18 @@ ${e=>e.inlineStyles.map(([t,o])=>`.${so}${t}.${so}${t} { ${Object.entries(o).map
1621
1621
  box-sizing: border-box;
1622
1622
  align-items: unset;
1623
1623
  background-color: ${e=>e.appearance.theme.colorBackground};
1624
- border-width: 1px;
1625
- border-color: ${e=>e.appearance.theme.colorBorder};
1626
- border-radius: ${e=>e.appearance.theme.borderRadius}px;
1627
1624
  position: ${e=>e.type=="modal"?"fixed":"relative"};
1628
1625
  left: 50%;
1629
1626
  transform: translate(-50%);
1630
1627
  bottom: 24px;
1628
+ min-width: 550px;
1629
+
1630
+ ${e=>e.type=="modal"?`
1631
1631
  z-index: 1000;
1632
1632
  box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
1633
- min-width: 550px;
1633
+ border-width: 1px;
1634
+ border-color: ${t=>t.appearance.theme.colorBorder};
1635
+ border-radius: ${t=>t.appearance.theme.borderRadius}px;`:""}
1634
1636
  `,_l=ct.button`
1635
1637
  border: 1px solid ${e=>e.appearance.theme.colorBorder};
1636
1638
  border-radius: 8px;