@frigade/react 1.37.8 → 1.37.9

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/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var na=Object.defineProperty,sa=Object.defineProperties;var la=Object.getOwnPropertyDescriptors;var Io=Object.getOwnPropertySymbols;var li=Object.prototype.hasOwnProperty,ai=Object.prototype.propertyIsEnumerable;var si=(e,t,o)=>t in e?na(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,T=(e,t)=>{for(var o in t||(t={}))li.call(t,o)&&si(e,o,t[o]);if(Io)for(var o of Io(t))ai.call(t,o)&&si(e,o,t[o]);return e},V=(e,t)=>sa(e,la(t));var pi=e=>typeof e=="symbol"?e:e+"",Le=(e,t)=>{var o={};for(var i in e)li.call(e,i)&&t.indexOf(i)<0&&(o[i]=e[i]);if(e!=null&&Io)for(var i of Io(e))t.indexOf(i)<0&&ai.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 Ro,{createContext as Td,useEffect as er,useState as Ke}from"react";import{ThemeProvider as Fd}from"styled-components";import Nt,{useContext as Zp,useEffect as Zt,useState as To}from"react";import{useCallback as Bt,useContext as Sa,useEffect as ba}from"react";import ur,{useMemo as ci}from"react";var di="1.37.8";var st="NOT_STARTED_STEP",te="COMPLETED_FLOW",Lo="ABORTED_FLOW",vt="STARTED_FLOW",Ue="NOT_STARTED_FLOW",$e="COMPLETED_STEP",uo="STARTED_STEP";function Qe(){let{publicApiKey:e,userId:t,apiUrl:o}=ur.useContext(X);return{config:ci(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":di,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:ci(()=>`${o}/v1/public/`,[o])}}var aa="frigade-last-call-at-",pa="frigade-last-call-data-";function Vt(){let{shouldGracefullyDegrade:e,readonly:t}=ur.useContext(X);return(o,i)=>M(this,null,function*(){if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ht();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ht();let n=aa+o,r=pa+o;if(typeof window!="undefined"&&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 Ht()}typeof window!="undefined"&&(window.localStorage.setItem(n,new Date().toISOString()),window.localStorage.setItem(r,i.body))}let l;try{l=yield fetch(o,i)}catch(p){return Ht(p)}return l?l.ok?l:Ht(l.statusText):Ht()})}function Ht(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function jt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=ur.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}}import{useContext as xa,useState as mi}from"react";import{useContext as ca,useEffect as ma,useState as ua}from"react";import fa from"swr";import{useContext as da}from"react";function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=da(X);function r(c,f=!1){var S;return(S=e[c])!=null?S:f}function l(c,f){t(S=>V(T({},S),{[c]:f}))}function p(c){t(f=>{let b=f,{[c]:S}=b,w=Le(b,[pi(c)]);return T({},w)})}function d(c){n.includes(c)||i(f=>[...f,c])}function s(c){return n.includes(c)}function m(c){return Object.entries(e).some(([f,S])=>S&&f!=c)||o}return{getOpenFlowState:r,setOpenFlowState:l,resetOpenFlowState:p,hasOpenModals:m,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:s}}import ga from"swr/immutable";import fo from"core-js-pure/actual/structured-clone";function fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(...e){let t=e.shift(),o=e.length===1?e[0]:ye(...e);if(!fr(t)||!fr(o))throw new Error("deepmerge can only merge Objects");let i=fo(t);return Object.entries(o).forEach(([n,r])=>{fr(r)?i[n]!==void 0?Object.assign(i,{[n]:ye(i[n],fo(r))}):Object.assign(i,{[n]:fo(r)}):Array.isArray(r)?i[n]!==void 0?Object.assign(i,{[n]:[...i[n],...fo(r)]}):Object.assign(i,{[n]:fo(r)}):Object.assign(i,{[n]:r})}),i}var ha="unknown";function _e(){let{config:e,apiUrl:t}=Qe(),{publicApiKey:o,userId:i,organizationId:n,flows:r,setShouldGracefullyDegrade:l,readonly:p}=ca(X),{resetOpenFlowState:d}=Ee(),[s,m]=ua(!1),c={data:r.map(F=>({flowId:F.id,flowState:te,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},f=F=>fetch(F,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${F}: ${P}. Will gracefully degrade and hide Frigade`),l(!0),c)),S=o&&r&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${n?`&foreignUserGroupId=${encodeURIComponent(n)}`:""}`:null,{data:w,isLoading:b,mutate:x,error:v}=p?ga(S,f):fa(S,f,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!1,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),k=w==null?void 0:w.data;ma(()=>{!s&&!b&&k&&m(!0)},[k,s,b]);function B(F){return M(this,null,function*(){if(k&&!p){let P=k.find(I=>I.flowId===F);P&&P.flowState!==te&&(P.flowState=te),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function L(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.stepStates[P]=I,O.flowState=vt),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function C(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.lastStepId=P,O.stepStates[P]=I,O.flowState=vt),yield x(ye(w,{data:k}),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function u(F){return M(this,null,function*(){if(k){let P=k.find(I=>I.flowId===F);P&&P.flowState!==Ue&&(P.flowState=Ue,P.lastStepId=ha,Object.keys(P.stepStates).forEach(I=>{P.stepStates[I].actionType=st,P.stepStates[I].createdAt=new Date().toISOString()}),yield x(ye(w,{data:k}),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1}),d(F))}})}function N(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.stepStates[P]=I),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}return{userFlowStatesData:k,isLoadingUserFlowStateData:!s,mutateUserFlowState:x,optimisticallyMarkFlowCompleted:B,optimisticallyMarkFlowNotStarted:u,optimisticallyMarkStepCompleted:L,optimisticallyMarkStepNotStarted:N,optimisticallyMarkStepStarted:C,error:v}}function go(){let{config:e,apiUrl:t}=Qe(),{userFlowStatesData:o,mutateUserFlowState:i}=_e(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:l,setFlowResponses:p}=xa(X),[d,s]=mi(new Set),[m,c]=mi(new Set),f=Vt();function S(x){let v=JSON.stringify(x);if(d.has(v))return null;d.add(v),s(d),m.add(x),c(m);let k=l==null?void 0:l.find(B=>B.flowSlug===x.flowSlug&&B.stepId===x.stepId&&B.actionType===x.actionType&&B.createdAt===x.createdAt);return f(`${t}flowResponses`,V(T({},e),{method:"POST",body:v})).then(B=>{B.status!==200&&B.status!==201?(console.log("Failed to send flow response for step "+x.stepId+". Will retry again later."),r([...n,x])):k||p(L=>[...L!=null?L:[],x])})}function w(x){return M(this,null,function*(){x.foreignUserId&&(x.actionType===vt||x.actionType===Ue?yield S(x):x.actionType===te?yield S(x):x.actionType===uo?yield S(x):x.actionType===$e?yield S(x):x.actionType===Lo?yield S(x):x.actionType===st&&(yield S(x)))})}function b(){let x=[];return o==null||o.forEach(v=>{if(v&&v.stepStates&&Object.keys(v.stepStates).length!==0)for(let k in v.stepStates){let B=v.stepStates[k];x.push({foreignUserId:v.foreignUserId,flowSlug:v.flowId,stepId:B.stepId,actionType:B.actionType,data:{},createdAt:new Date(B.createdAt),blocked:B.blocked,hidden:B.hidden})}}),[...x,...l]}return{addResponse:w,setFlowResponses:p,getFlowResponses:b}}import wa from"swr";var Ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ui=e=>{let t=Ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=ya(i,"'","");r.startsWith("flow_")&&(o=r)}),o},ya=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function $o(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var gr=(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))(gr||{});function R(){let{config:e,apiUrl:t}=Qe(),{flows:o,setFlows:i,userId:n,organizationId:r,publicApiKey:l,customVariables:p,setCustomVariables:d,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,setFlowResponses:c,setShouldGracefullyDegrade:f,readonly:S,flowDataOverrides:w}=Sa(X),b={data:[]},{verifySDKInitiated:x}=jt(),{addResponse:v,getFlowResponses:k}=go(),B=g=>fetch(g,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${g} (${y.status}): ${y.statusText}. Will gracefully degrade and hide Frigade`),f(!0),b)).catch(y=>(console.log(`Error fetching ${g}: ${y}. Will gracefully degrade and hide Frigade`),f(!0),b)),{mutateUserFlowState:L,userFlowStatesData:C,isLoadingUserFlowStateData:u,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:O}=_e(),{data:A,error:G,isLoading:_}=wa(l?`${t}flows${S?"?readonly=true":""}`:null,B,{keepPreviousData:!0});ba(()=>{if(G){console.error(G);return}A&&A.data&&i(A.data)},[A,G]);function Q(g){if(_)return null;let y=o.find(h=>h.slug===g);return!y&&o.length>0&&!u&&!_?(console.log(`Flow with id ${g} not found`),null):(y&&w&&w[g]&&(y.data=w[g]),(y==null?void 0:y.active)===!1&&!S?null:y)}function Y(g){var D,ge,De,ht,Pt;if(!Q(g))return[];let y=(D=Q(g))==null?void 0:D.data;return y?(y=se(y),((Pt=(ht=(ge=$o(y))==null?void 0:ge.data)!=null?ht:(De=$o(y))==null?void 0:De.steps)!=null?Pt:[]).map(ue=>{let co=pe(ue);return V(T({handleSecondaryButtonClick:()=>{ue.skippable===!0&&Z(g,ue.id,{skipped:!0})}},ue),{complete:xe(g,ue.id)===$e||co>=1,started:xe(g,ue.id)===uo||xe(g,ue.id)===$e,currentlyActive:C==null?void 0:C.some(mo=>mo.flowId==g&&mo.lastStepId===ue.id),blocked:Ce(g,ue.id),hidden:H(g,ue.id),handlePrimaryButtonClick:()=>{(!ue.completionCriteria&&(ue.autoMarkCompleted||ue.autoMarkCompleted===void 0)||ue.completionCriteria&&ue.autoMarkCompleted===!0)&&Z(g,ue.id)},progress:co})}).filter(ue=>ue.hidden!==!0)):[]}function se(g){return g.replaceAll(/\${(.*?)}/g,(y,h)=>p[h]===void 0?"":String(p[h]).replace(/[\u00A0-\u9999<>\&]/g,function(D){return"&#"+D.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 J(g){var h;if(!Q(g))return[];let y=Q(g).data;return y?(y=se(y),(h=JSON.parse(y))!=null?h:{}):[]}function q(g,y){d(h=>V(T({},h),{[g]:y}))}function ae(g){!u&&!_&&g&&JSON.stringify(p)!=JSON.stringify(T(T({},p),g))&&Object.keys(g).forEach(y=>{q(y,g[y])})}let we=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:uo,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield O(g,y,D),v(D))}),[n,r,C]),Ne=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:st,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield I(g,y,D),v(D))}),[n,r,C]),Z=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:$e,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield P(g,y,D),v(D))}),[n,r,C]),ce=Bt((g,y)=>M(this,null,function*(){if(!x()||je(g)===Ue)return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:Ue,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};yield F(g),ke(h)&&v(h)}),[n,r,C]),U=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:vt,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&v(h)}),[n,r,C]),ee=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:te,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&(yield N(g),v(h))}),[n,r,C]),Ie=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:Lo,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&(yield N(g),v(h))}),[n,r,C]);function ke(g){var y;if(C===void 0)return!1;if(C){let h=C.find(D=>D.flowId===g.flowSlug);if(g.actionType===st&&(!(h!=null&&h.stepStates[g.stepId])||h.stepStates[g.stepId].actionType===st))return!1;if(h&&((y=h.stepStates[g.stepId])==null?void 0:y.actionType)===g.actionType){if(g.actionType===$e&&(!g.data||JSON.stringify(g.data)===JSON.stringify({})))return!1;let D=Object.keys(h.stepStates).sort((ge,De)=>{let ht=new Date(h.stepStates[ge].createdAt),Pt=new Date(h.stepStates[De].createdAt);return ht.getTime()-Pt.getTime()});if(h.stepStates[D[D.length-1]].actionType===g.actionType&&g.stepId===D[D.length-1])return!1}if(h&&h.flowState===te&&g.actionType===te)return!1}return!0}function xe(g,y){let h=W(g,y);return u?null:h?h.actionType:st}function Ce(g,y){let h=W(g,y);return h?h.blocked:!1}function H(g,y){let h=W(g,y);return h?h.hidden:!1}function W(g,y){var D;if(u)return null;let h=C==null?void 0:C.find(ge=>ge.flowId===g);return!h||!h.stepStates[y]?null:(D=h.stepStates[y])!=null?D:null}function $(g){var h,D;if(u||!C)return null;if(je(g)===Ue)return(h=Y(g)[0])!=null?h:null;let y=(D=C.find(ge=>ge.flowId===g))==null?void 0:D.lastStepId;return y?Y(g).find(ge=>ge.id===y):null}function z(g){var D;let y=$(g);if(!y)return 0;let h=(D=Y(g).findIndex(ge=>ge.id===y.id))!=null?D:0;return xe(g,y.id)===$e&&h<Y(g).length-1?h+1:h}function pe(g){if(!g.completionCriteria)return;let y=ui(g.completionCriteria);if(y===null)return;let h=it(y),D=kt(y);return D===0?void 0:h/D}function je(g){let y=C==null?void 0:C.find(h=>h.flowId===g);return y?y.flowState:null}function it(g){let y=Y(g);return y.length===0?0:y.filter(D=>xe(g,D.id)===$e).length}function kt(g){return Y(g).length}function Je(g){let y=o.find(h=>h.slug===g);return y?(w&&w[g]&&(y.data=w[g]),$o(y.data)):null}function nt(g){if(S)return!1;if(u)return!0;if(g!=null&&g.targetingLogic&&C){let y=C.find(h=>h.flowId===g.slug);if(y)return y.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&n&&n.startsWith("guest_"))}function Xe(g){return!nt(Q(g))}function Wt(){n&&L()}function zt(){return o}return{getAllFlows:zt,getFlow:Q,getFlowData:Je,isLoading:u||_,getStepStatus:xe,getFlowSteps:Y,getCurrentStepIndex:z,markStepStarted:we,markStepCompleted:Z,markFlowNotStarted:ce,markFlowStarted:U,markFlowCompleted:ee,markFlowAborted:Ie,markStepNotStarted:Ne,getFlowStatus:je,getNumberOfStepsCompleted:it,getNumberOfSteps:kt,targetingLogicShouldHideFlow:nt,setCustomVariable:q,updateCustomVariables:ae,customVariables:p,getStepOptionalProgress:pe,getFlowMetadata:J,isStepBlocked:Ce,isStepHidden:H,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,isFlowAvailableToUser:Xe,refresh:Wt}}import{useCallback as hr,useContext as Ta,useEffect as Fa}from"react";var Gt="guest_";function ho(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=Ta(X),{config:r,apiUrl:l}=Qe(),{mutateUserFlowState:p}=_e(),d=Vt(),{verifySDKInitiated:s}=jt();function m(w){return`frigade-user-registered-${w}`}Fa(()=>{if(e&&!t){if(e.startsWith(Gt))return;let w=m(e);localStorage.getItem(w)||(d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify({foreignId:e})})),localStorage.setItem(w,"true"))}},[e,n,t]);let c=hr(w=>M(this,null,function*(){if(!s())return;let b={foreignId:e,properties:w};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(b)})),i(x=>T(T({},x),w)),p()}),[e,r,n,p]),f=hr((w,b)=>M(this,null,function*(){if(!s())return;let v={foreignId:e,events:[{event:w,properties:b}]};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(v)})),p()}),[e,r,p]),S=hr((w,b)=>M(this,null,function*(){if(s())if(b){let x=m(w);localStorage.setItem(x,"true"),o(w);let v={foreignId:w,properties:b};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(v)})),i(k=>T(T({},k),b)),p()}else o(w)}),[r,n,p]);return{userId:e,setUserId:o,setUserIdWithProperties:S,addPropertiesToUser:c,trackEventForUser:f}}import{v4 as Rp}from"uuid";import tt,{useEffect as xn,useState as Jp}from"react";import qe,{useEffect as Sr,useState as Ia}from"react";import _o from"styled-components";import ka from"react";import Pa from"styled-components";var fi="fr-",xo="cfr-";function a(e,t){let o=`${fi}${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+" "+xo+e}return o}function E(e){if(!e.className||e.className.indexOf(xo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(fi)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Mo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Pe(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Mo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Te(...e){return e.filter(Boolean).join(" ")}function Co(e){return e.charAt(0).toUpperCase()+e.slice(1)}var va=Pa.div`
2
+ var na=Object.defineProperty,sa=Object.defineProperties;var la=Object.getOwnPropertyDescriptors;var Io=Object.getOwnPropertySymbols;var li=Object.prototype.hasOwnProperty,ai=Object.prototype.propertyIsEnumerable;var si=(e,t,o)=>t in e?na(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,T=(e,t)=>{for(var o in t||(t={}))li.call(t,o)&&si(e,o,t[o]);if(Io)for(var o of Io(t))ai.call(t,o)&&si(e,o,t[o]);return e},V=(e,t)=>sa(e,la(t));var pi=e=>typeof e=="symbol"?e:e+"",Le=(e,t)=>{var o={};for(var i in e)li.call(e,i)&&t.indexOf(i)<0&&(o[i]=e[i]);if(e!=null&&Io)for(var i of Io(e))t.indexOf(i)<0&&ai.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 Ro,{createContext as Td,useEffect as er,useState as Ke}from"react";import{ThemeProvider as Fd}from"styled-components";import Nt,{useContext as Zp,useEffect as Zt,useState as To}from"react";import{useCallback as Bt,useContext as Sa,useEffect as ba}from"react";import ur,{useMemo as ci}from"react";var di="1.37.9";var st="NOT_STARTED_STEP",te="COMPLETED_FLOW",Lo="ABORTED_FLOW",vt="STARTED_FLOW",Ue="NOT_STARTED_FLOW",$e="COMPLETED_STEP",uo="STARTED_STEP";function Qe(){let{publicApiKey:e,userId:t,apiUrl:o}=ur.useContext(X);return{config:ci(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":di,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:ci(()=>`${o}/v1/public/`,[o])}}var aa="frigade-last-call-at-",pa="frigade-last-call-data-";function Vt(){let{shouldGracefullyDegrade:e,readonly:t}=ur.useContext(X);return(o,i)=>M(this,null,function*(){if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Ht();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Ht();let n=aa+o,r=pa+o;if(typeof window!="undefined"&&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 Ht()}typeof window!="undefined"&&(window.localStorage.setItem(n,new Date().toISOString()),window.localStorage.setItem(r,i.body))}let l;try{l=yield fetch(o,i)}catch(p){return Ht(p)}return l?l.ok?l:Ht(l.statusText):Ht()})}function Ht(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function jt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=ur.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}}import{useContext as xa,useState as mi}from"react";import{useContext as ca,useEffect as ma,useState as ua}from"react";import fa from"swr";import{useContext as da}from"react";function Ee(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=da(X);function r(c,f=!1){var S;return(S=e[c])!=null?S:f}function l(c,f){t(S=>V(T({},S),{[c]:f}))}function p(c){t(f=>{let b=f,{[c]:S}=b,w=Le(b,[pi(c)]);return T({},w)})}function d(c){n.includes(c)||i(f=>[...f,c])}function s(c){return n.includes(c)}function m(c){return Object.entries(e).some(([f,S])=>S&&f!=c)||o}return{getOpenFlowState:r,setOpenFlowState:l,resetOpenFlowState:p,hasOpenModals:m,setKeepCompletedFlowOpenDuringSession:d,shouldKeepCompletedFlowOpenDuringSession:s}}import ga from"swr/immutable";import fo from"core-js-pure/actual/structured-clone";function fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(...e){let t=e.shift(),o=e.length===1?e[0]:ye(...e);if(!fr(t)||!fr(o))throw new Error("deepmerge can only merge Objects");let i=fo(t);return Object.entries(o).forEach(([n,r])=>{fr(r)?i[n]!==void 0?Object.assign(i,{[n]:ye(i[n],fo(r))}):Object.assign(i,{[n]:fo(r)}):Array.isArray(r)?i[n]!==void 0?Object.assign(i,{[n]:[...i[n],...fo(r)]}):Object.assign(i,{[n]:fo(r)}):Object.assign(i,{[n]:r})}),i}var ha="unknown";function _e(){let{config:e,apiUrl:t}=Qe(),{publicApiKey:o,userId:i,organizationId:n,flows:r,setShouldGracefullyDegrade:l,readonly:p}=ca(X),{resetOpenFlowState:d}=Ee(),[s,m]=ua(!1),c={data:r.map(F=>({flowId:F.id,flowState:te,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},f=F=>fetch(F,e).then(P=>{if(P.ok)return P.json();throw new Error("Failed to fetch user flow states")}).catch(P=>(console.log(`Error fetching ${F}: ${P}. Will gracefully degrade and hide Frigade`),l(!0),c)),S=o&&r&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${n?`&foreignUserGroupId=${encodeURIComponent(n)}`:""}`:null,{data:w,isLoading:b,mutate:x,error:v}=p?ga(S,f):fa(S,f,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!1,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>c,onLoadingSlow:()=>c}),k=w==null?void 0:w.data;ma(()=>{!s&&!b&&k&&m(!0)},[k,s,b]);function B(F){return M(this,null,function*(){if(k&&!p){let P=k.find(I=>I.flowId===F);P&&P.flowState!==te&&(P.flowState=te),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function L(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.stepStates[P]=I,O.flowState=vt),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function C(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.lastStepId=P,O.stepStates[P]=I,O.flowState=vt),yield x(ye(w,{data:k}),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}function u(F){return M(this,null,function*(){if(k){let P=k.find(I=>I.flowId===F);P&&P.flowState!==Ue&&(P.flowState=Ue,P.lastStepId=ha,Object.keys(P.stepStates).forEach(I=>{P.stepStates[I].actionType=st,P.stepStates[I].createdAt=new Date().toISOString()}),yield x(ye(w,{data:k}),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1}),d(F))}})}function N(F,P,I){return M(this,null,function*(){if(k){let O=k.find(A=>A.flowId===F);O&&(O.stepStates[P]=I),yield x(Promise.resolve(ye(w,{data:k})),{optimisticData:ye(w,{data:k}),revalidate:!1,rollbackOnError:!1})}})}return{userFlowStatesData:k,isLoadingUserFlowStateData:!s,mutateUserFlowState:x,optimisticallyMarkFlowCompleted:B,optimisticallyMarkFlowNotStarted:u,optimisticallyMarkStepCompleted:L,optimisticallyMarkStepNotStarted:N,optimisticallyMarkStepStarted:C,error:v}}function go(){let{config:e,apiUrl:t}=Qe(),{userFlowStatesData:o,mutateUserFlowState:i}=_e(),{failedFlowResponses:n,setFailedFlowResponses:r,flowResponses:l,setFlowResponses:p}=xa(X),[d,s]=mi(new Set),[m,c]=mi(new Set),f=Vt();function S(x){let v=JSON.stringify(x);if(d.has(v))return null;d.add(v),s(d),m.add(x),c(m);let k=l==null?void 0:l.find(B=>B.flowSlug===x.flowSlug&&B.stepId===x.stepId&&B.actionType===x.actionType&&B.createdAt===x.createdAt);return f(`${t}flowResponses`,V(T({},e),{method:"POST",body:v})).then(B=>{B.status!==200&&B.status!==201?(console.log("Failed to send flow response for step "+x.stepId+". Will retry again later."),r([...n,x])):k||p(L=>[...L!=null?L:[],x])})}function w(x){return M(this,null,function*(){x.foreignUserId&&(x.actionType===vt||x.actionType===Ue?yield S(x):x.actionType===te?yield S(x):x.actionType===uo?yield S(x):x.actionType===$e?yield S(x):x.actionType===Lo?yield S(x):x.actionType===st&&(yield S(x)))})}function b(){let x=[];return o==null||o.forEach(v=>{if(v&&v.stepStates&&Object.keys(v.stepStates).length!==0)for(let k in v.stepStates){let B=v.stepStates[k];x.push({foreignUserId:v.foreignUserId,flowSlug:v.flowId,stepId:B.stepId,actionType:B.actionType,data:{},createdAt:new Date(B.createdAt),blocked:B.blocked,hidden:B.hidden})}}),[...x,...l]}return{addResponse:w,setFlowResponses:p,getFlowResponses:b}}import wa from"swr";var Ca=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,ui=e=>{let t=Ca.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=ya(i,"'","");r.startsWith("flow_")&&(o=r)}),o},ya=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function $o(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var gr=(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))(gr||{});function R(){let{config:e,apiUrl:t}=Qe(),{flows:o,setFlows:i,userId:n,organizationId:r,publicApiKey:l,customVariables:p,setCustomVariables:d,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,setFlowResponses:c,setShouldGracefullyDegrade:f,readonly:S,flowDataOverrides:w}=Sa(X),b={data:[]},{verifySDKInitiated:x}=jt(),{addResponse:v,getFlowResponses:k}=go(),B=g=>fetch(g,e).then(y=>y.ok?y.json():(console.log(`Error fetching ${g} (${y.status}): ${y.statusText}. Will gracefully degrade and hide Frigade`),f(!0),b)).catch(y=>(console.log(`Error fetching ${g}: ${y}. Will gracefully degrade and hide Frigade`),f(!0),b)),{mutateUserFlowState:L,userFlowStatesData:C,isLoadingUserFlowStateData:u,optimisticallyMarkFlowCompleted:N,optimisticallyMarkFlowNotStarted:F,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:I,optimisticallyMarkStepStarted:O}=_e(),{data:A,error:G,isLoading:_}=wa(l?`${t}flows${S?"?readonly=true":""}`:null,B,{keepPreviousData:!0});ba(()=>{if(G){console.error(G);return}A&&A.data&&i(A.data)},[A,G]);function Q(g){if(_)return null;let y=o.find(h=>h.slug===g);return!y&&o.length>0&&!u&&!_?(console.log(`Flow with id ${g} not found`),null):(y&&w&&w[g]&&(y.data=w[g]),(y==null?void 0:y.active)===!1&&!S?null:y)}function Y(g){var D,ge,De,ht,Pt;if(!Q(g))return[];let y=(D=Q(g))==null?void 0:D.data;return y?(y=se(y),((Pt=(ht=(ge=$o(y))==null?void 0:ge.data)!=null?ht:(De=$o(y))==null?void 0:De.steps)!=null?Pt:[]).map(ue=>{let co=pe(ue);return V(T({handleSecondaryButtonClick:()=>{ue.skippable===!0&&Z(g,ue.id,{skipped:!0})}},ue),{complete:xe(g,ue.id)===$e||co>=1,started:xe(g,ue.id)===uo||xe(g,ue.id)===$e,currentlyActive:C==null?void 0:C.some(mo=>mo.flowId==g&&mo.lastStepId===ue.id),blocked:Ce(g,ue.id),hidden:H(g,ue.id),handlePrimaryButtonClick:()=>{(!ue.completionCriteria&&(ue.autoMarkCompleted||ue.autoMarkCompleted===void 0)||ue.completionCriteria&&ue.autoMarkCompleted===!0)&&Z(g,ue.id)},progress:co})}).filter(ue=>ue.hidden!==!0)):[]}function se(g){return g.replaceAll(/\${(.*?)}/g,(y,h)=>p[h]===void 0?"":String(p[h]).replace(/[\u00A0-\u9999<>\&]/g,function(D){return"&#"+D.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 J(g){var h;if(!Q(g))return[];let y=Q(g).data;return y?(y=se(y),(h=JSON.parse(y))!=null?h:{}):[]}function q(g,y){d(h=>V(T({},h),{[g]:y}))}function ae(g){!u&&!_&&g&&JSON.stringify(p)!=JSON.stringify(T(T({},p),g))&&Object.keys(g).forEach(y=>{q(y,g[y])})}let we=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:uo,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield O(g,y,D),v(D))}),[n,r,C]),Ne=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:st,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield I(g,y,D),v(D))}),[n,r,C]),Z=Bt((g,y,h)=>M(this,null,function*(){if(!x())return;let D={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:y,actionType:$e,data:h!=null?h:{},createdAt:new Date,blocked:!1,hidden:!1};ke(D)&&(yield P(g,y,D),v(D))}),[n,r,C]),ce=Bt((g,y)=>M(this,null,function*(){if(!x()||je(g)===Ue)return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:Ue,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};yield F(g),ke(h)&&v(h)}),[n,r,C]),U=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:vt,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&v(h)}),[n,r,C]),ee=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:te,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&(yield N(g),v(h))}),[n,r,C]),Ie=Bt((g,y)=>M(this,null,function*(){if(!x())return;let h={foreignUserId:n,foreignUserGroupId:r!=null?r:null,flowSlug:g,stepId:"unknown",actionType:Lo,data:y!=null?y:{},createdAt:new Date,blocked:!1,hidden:!1};ke(h)&&(yield N(g),v(h))}),[n,r,C]);function ke(g){var y;if(C===void 0)return!1;if(C){let h=C.find(D=>D.flowId===g.flowSlug);if(g.actionType===st&&(!(h!=null&&h.stepStates[g.stepId])||h.stepStates[g.stepId].actionType===st))return!1;if(h&&((y=h.stepStates[g.stepId])==null?void 0:y.actionType)===g.actionType){if(g.actionType===$e&&(!g.data||JSON.stringify(g.data)===JSON.stringify({})))return!1;let D=Object.keys(h.stepStates).sort((ge,De)=>{let ht=new Date(h.stepStates[ge].createdAt),Pt=new Date(h.stepStates[De].createdAt);return ht.getTime()-Pt.getTime()});if(h.stepStates[D[D.length-1]].actionType===g.actionType&&g.stepId===D[D.length-1])return!1}if(h&&h.flowState===te&&g.actionType===te)return!1}return!0}function xe(g,y){let h=W(g,y);return u?null:h?h.actionType:st}function Ce(g,y){let h=W(g,y);return h?h.blocked:!1}function H(g,y){let h=W(g,y);return h?h.hidden:!1}function W(g,y){var D;if(u)return null;let h=C==null?void 0:C.find(ge=>ge.flowId===g);return!h||!h.stepStates[y]?null:(D=h.stepStates[y])!=null?D:null}function $(g){var h,D;if(u||!C)return null;if(je(g)===Ue)return(h=Y(g)[0])!=null?h:null;let y=(D=C.find(ge=>ge.flowId===g))==null?void 0:D.lastStepId;return y?Y(g).find(ge=>ge.id===y):null}function z(g){var D;let y=$(g);if(!y)return 0;let h=(D=Y(g).findIndex(ge=>ge.id===y.id))!=null?D:0;return xe(g,y.id)===$e&&h<Y(g).length-1?h+1:h}function pe(g){if(!g.completionCriteria)return;let y=ui(g.completionCriteria);if(y===null)return;let h=it(y),D=kt(y);return D===0?void 0:h/D}function je(g){let y=C==null?void 0:C.find(h=>h.flowId===g);return y?y.flowState:null}function it(g){let y=Y(g);return y.length===0?0:y.filter(D=>xe(g,D.id)===$e).length}function kt(g){return Y(g).length}function Je(g){let y=o.find(h=>h.slug===g);return y?(w&&w[g]&&(y.data=w[g]),$o(y.data)):null}function nt(g){if(S)return!1;if(u)return!0;if(g!=null&&g.targetingLogic&&C){let y=C.find(h=>h.flowId===g.slug);if(y)return y.shouldTrigger===!1}return!!(g!=null&&g.targetingLogic&&n&&n.startsWith("guest_"))}function Xe(g){return!nt(Q(g))}function Wt(){n&&L()}function zt(){return o}return{getAllFlows:zt,getFlow:Q,getFlowData:Je,isLoading:u||_,getStepStatus:xe,getFlowSteps:Y,getCurrentStepIndex:z,markStepStarted:we,markStepCompleted:Z,markFlowNotStarted:ce,markFlowStarted:U,markFlowCompleted:ee,markFlowAborted:Ie,markStepNotStarted:Ne,getFlowStatus:je,getNumberOfStepsCompleted:it,getNumberOfSteps:kt,targetingLogicShouldHideFlow:nt,setCustomVariable:q,updateCustomVariables:ae,customVariables:p,getStepOptionalProgress:pe,getFlowMetadata:J,isStepBlocked:Ce,isStepHidden:H,hasActiveFullPageFlow:s,setHasActiveFullPageFlow:m,isFlowAvailableToUser:Xe,refresh:Wt}}import{useCallback as hr,useContext as Ta,useEffect as Fa}from"react";var Gt="guest_";function ho(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=Ta(X),{config:r,apiUrl:l}=Qe(),{mutateUserFlowState:p}=_e(),d=Vt(),{verifySDKInitiated:s}=jt();function m(w){return`frigade-user-registered-${w}`}Fa(()=>{if(e&&!t){if(e.startsWith(Gt))return;let w=m(e);localStorage.getItem(w)||(d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify({foreignId:e})})),localStorage.setItem(w,"true"))}},[e,n,t]);let c=hr(w=>M(this,null,function*(){if(!s())return;let b={foreignId:e,properties:w};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(b)})),i(x=>T(T({},x),w)),p()}),[e,r,n,p]),f=hr((w,b)=>M(this,null,function*(){if(!s())return;let v={foreignId:e,events:[{event:w,properties:b}]};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(v)})),p()}),[e,r,p]),S=hr((w,b)=>M(this,null,function*(){if(s())if(b){let x=m(w);localStorage.setItem(x,"true"),o(w);let v={foreignId:w,properties:b};yield d(`${l}users`,V(T({},r),{method:"POST",body:JSON.stringify(v)})),i(k=>T(T({},k),b)),p()}else o(w)}),[r,n,p]);return{userId:e,setUserId:o,setUserIdWithProperties:S,addPropertiesToUser:c,trackEventForUser:f}}import{v4 as Rp}from"uuid";import tt,{useEffect as xn,useState as Jp}from"react";import qe,{useEffect as Sr,useState as Ia}from"react";import _o from"styled-components";import ka from"react";import Pa from"styled-components";var fi="fr-",xo="cfr-";function a(e,t){let o=`${fi}${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+" "+xo+e}return o}function E(e){if(!e.className||e.className.indexOf(xo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(fi)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Mo(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function Pe(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Mo(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Te(...e){return e.filter(Boolean).join(" ")}function Co(e){return e.charAt(0).toUpperCase()+e.slice(1)}var va=Pa.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -1462,7 +1462,7 @@ ${e=>e.inlineStyles.map(([t,o])=>`.${xo}${t}.${xo}${t} { ${Object.entries(o).map
1462
1462
  `,Oc=No(Sl)`
1463
1463
  width: ${ao+12}px;
1464
1464
  height: ${ao+12}px;
1465
- `,Nc=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:i="auto",showHighlight:n=!0,primaryColor:r="#000000",offset:l={x:0,y:0},visible:p=!0,containerStyle:d={},selectedStep:s=0,customStepTypes:m,appearance:c,dismissible:f=!1,showHighlightOnly:S,showStepCount:w=!0,completedStepsCount:b=0,showFrigadeBranding:x=!1,cssPosition:v="absolute",onViewTooltip:k,className:B})=>{var kt,Je,nt,Xe,Wt,zt,g,y,h,D,ge,De,ht,Pt,ue,co,mo,ii,ni;let{logErrorIfDebugMode:L}=hl(),[C,u]=lo(),[N,F]=lo(new Date),P=Pc(null),[I,O]=lo(document.querySelector(e[s].selector)),A=gl(I,N),[G,_]=lo(),[Q,Y]=lo(!S),se=(Je=(kt=e[s])==null?void 0:kt.props)!=null&&Je.position?e[s].props.position:v,J=(Wt=(Xe=(nt=e[s])==null?void 0:nt.props)==null?void 0:Xe.zIndex)!=null?Wt:90,q=(zt=C==null?void 0:C.width)!=null?zt:Cl,ae=(g=C==null?void 0:C.height)!=null?g:yl,[we,Ne]=lo(new Date().getTime());l=(D=(h=(y=e[s])==null?void 0:y.props)==null?void 0:h.offset)!=null?D:l;let Z=window.location.pathname.split("/").pop();xl(()=>{P.current&&u({width:P.current.clientWidth,height:P.current.clientHeight})},[s,N,se]),Oo(()=>{S||Y(!0)},[s]),Oo(()=>{p&&Q&&k(s)},[Q]);let ce=()=>{let le=document.querySelector(e[s].selector);if(!le){_(void 0),O(null),L(`FrigadeTour: Could not find element with selector "${e[s].selector}" for step ${e[s].id}`);return}G&&G===JSON.stringify(le==null?void 0:le.getBoundingClientRect())||(O(le),F(new Date),le&&_(JSON.stringify(le.getBoundingClientRect())))};if(Oo(()=>{let le=new MutationObserver(ce);return le.observe(document.body,{subtree:!0,childList:!0}),()=>le.disconnect()},[ce]),Oo(()=>{let le=new MutationObserver(ce);return le.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>le.disconnect()},[ce]),Oo(()=>{let le=setInterval(()=>{ce()},10);return()=>clearInterval(le)},[ce]),xl(()=>{setTimeout(()=>{ce()},vc),ce()},[s,Z]),I===null||!p)return null;let U=i==="auto"?"right":i,ee=Jr(A,U,q,l,se),Ie=A.right+q>(window.innerWidth||document.documentElement.clientWidth),ke=A.bottom+yl>(window.innerHeight||document.documentElement.clientHeight);Ie&&i==="auto"&&(ee=Jr(A,"left",q,l,se),U="left"),(De=(ge=e[s])==null?void 0:ge.props)!=null&&De.tooltipPosition&&((Pt=(ht=e[s])==null?void 0:ht.props)==null?void 0:Pt.tooltipPosition)!=="auto"&&(((co=(ue=e[s])==null?void 0:ue.props)==null?void 0:co.tooltipPosition)==="left"||((ii=(mo=e[s])==null?void 0:mo.props)==null?void 0:ii.tooltipPosition)==="right")&&(U=e[s].props.tooltipPosition);let xe=()=>{let le=()=>{if(e[s].handlePrimaryButtonClick&&(e[s].handlePrimaryButtonClick(),Y(!1),setTimeout(()=>{ce()},30)),b===e.length-1)return o()},xt=()=>{e[s].handleSecondaryButtonClick&&(e[s].handleSecondaryButtonClick(),S&&!e[s].secondaryButtonUri&&Y(!1))};return K.createElement(K.Fragment,null,w&&e.length>1&&K.createElement(wi,null,K.createElement(Fi,{role:"status",className:a("tooltipStepCounter",c)},s+1," of ",e.length)),(e[s].primaryButtonTitle||e[s].secondaryButtonTitle)&&K.createElement(Ti,{showStepCount:w,className:a("tooltipCTAContainer",c)},e[s].secondaryButtonTitle&&K.createElement(re,{title:e[s].secondaryButtonTitle,appearance:c,onClick:xt,size:"small",withMargin:!1,secondary:!0}),e[s].primaryButtonTitle&&K.createElement(re,{title:e[s].primaryButtonTitle,appearance:c,onClick:le,withMargin:!1,size:"small"})))},Ce=()=>K.createElement(K.Fragment,null,f&&K.createElement(xi,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:a("tooltipClose",c),hasImage:!!e[s].imageUri||!!e[s].videoUri},K.createElement(Ae,null)),e[s].imageUri&&K.createElement(Ci,{dismissible:f,appearance:c,role:"img","aria-label":e[s].title,src:e[s].imageUri,className:a("tooltipImageContainer",c)}),e[s].videoUri&&!e[s].imageUri&&K.createElement(yi,{dismissible:f,appearance:c,role:"video","aria-label":e[s].title,className:a("tooltipVideoContainer",c)},K.createElement(et,{appearance:c,videoUri:e[s].videoUri})),K.createElement(bi,{className:a("tooltipContentContainer",c)},K.createElement(Oe,{appearance:c,title:e[s].title,subtitle:e[s].subtitle,size:"small",ariaPrefix:`Tooltip${e[s].id}`}),K.createElement(Si,{className:a("tooltipFooter",c)},K.createElement(xe,null)))),W=T(T({},{default:le=>{var xt;if((xt=e[s])!=null&&xt.StepContent){let ia=e[s].StepContent;return K.createElement("div",null,ia)}return K.createElement(Ce,null)}}),m),$=()=>{var le;return e?!((le=e[s])!=null&&le.type)||!W[e[s].type]?W.default(e[s]):W[e[s].type]({stepData:e[s],primaryColor:r}):K.createElement(K.Fragment,null)};if(e[s].complete===!0||ee.x==0&&ee.y==0&&new Date().getTime()-we<100)return null;let z={top:(ee==null?void 0:ee.y)-ao,left:(ni=U=="left"?A.x+l.x:(ee==null?void 0:ee.x)-ao)!=null?ni:0,cursor:S?"pointer":"default",position:se},pe=()=>{let xt=z.left+(U=="left"?-q:24);return Math.min(Math.max(xt,20),window.innerWidth-q-20)},je=()=>{if(se==="fixed")return z.top;let le=z.top+ae,xt=20;return le>window.innerHeight-xt?z.top+-ae:z.top},it=()=>{S&&(F(new Date),Y(!Q))};return K.createElement(Ac,{className:B},K.createElement(Oc,{style:z,zIndex:J,className:a("tourHighlightContainer",c)},n&&e[s].showHighlight!==!1&&v!=="static"&&K.createElement(K.Fragment,null,K.createElement(Ec,{style:{position:se},onClick:it,primaryColor:c.theme.colorPrimary,className:a("tourHighlightInnerCircle",c)}),K.createElement(Bc,{style:{position:"absolute"},onClick:it,primaryColor:c.theme.colorPrimary,className:a("tourHighlightOuterCircle",c)}))),K.createElement(Sl,{style:V(T({},z),{left:pe(),top:je()}),zIndex:J+1,className:a("tooltipContainerWrapper",c)},Q&&K.createElement(K.Fragment,null,K.createElement(Do,{ref:P,role:"dialog","aria-labelledby":`frigadeTooltip${e[s].id}Title`,"aria-describedby":`frigadeTooltip${e[s].id}Subtitle`,layoutId:"tooltip-container",tabIndex:0,style:T({position:"relative",width:"max-content",right:0,top:v!=="static"?12:0},d),appearance:c,className:a("tooltipContainer",c),maxWidth:Cl,zIndex:J+10},K.createElement($,null)),x&&K.createElement(Pi,{className:a("poweredByFrigadeTooltipRibbon",c),appearance:c,zIndex:J+10},K.createElement(Uo,{appearance:c})))))},Xr=Nc;import{Portal as $c}from"react-portal";var Mc=x=>{var v=x,{flowId:e,customVariables:t,appearance:o,onStepCompletion:i,onButtonClick:n,showTooltipsSimultaneously:r=!1,onDismiss:l,dismissible:p,tooltipPosition:d="auto",showHighlightOnly:s=!1,dismissBehavior:m="complete-flow",onComplete:c,skipIfNotFound:f=!1,cssPosition:S="absolute",className:w}=v,b=Le(v,["flowId","customVariables","appearance","onStepCompletion","onButtonClick","showTooltipsSimultaneously","onDismiss","dismissible","tooltipPosition","showHighlightOnly","dismissBehavior","onComplete","skipIfNotFound","cssPosition","className"]);let{getFlow:k,getFlowSteps:B,isLoading:L,targetingLogicShouldHideFlow:C,markStepCompleted:u,markStepStarted:N,markFlowCompleted:F,updateCustomVariables:P,getCurrentStepIndex:I,getStepStatus:O,isStepBlocked:A,getFlowStatus:G,getNumberOfStepsCompleted:_}=R(),{isLoadingUserFlowStateData:Q}=_e(),{primaryCTAClickSideEffects:Y,secondaryCTAClickSideEffects:se}=me(),{hasOpenModals:J}=Ee(),q=I(e),{openFlowStates:ae}=Ic(X),{mergeAppearanceWithDefault:we}=oe();if(o=we(o),Lc(()=>{P(t)},[t,L]),Q)return null;let Ne=k(e);if(!Ne||C(Ne)||G(e)==te||J())return null;let Z=B(e);if(Object.keys(ae).length>0){let $=Object.keys(ae).find(z=>ae[z]===!0);if($!==void 0&&$!==e)return Dt.createElement(Dt.Fragment,null)}function ce($){return M(this,null,function*(){if(yield u(e,$.id),Z.map(z=>O(e,z.id)).every(z=>z===$e)){yield F(e);return}!s&&q+1<Z.length&&!r&&A(e,Z[q+1].id)})}function U($,z,pe){let je=q+1<Z.length?Z[q+1]:null;n&&n($,q,z,je),i&&i($,pe,je)}function ee(){return Z.map($=>V(T({},$),{handleSecondaryButtonClick:()=>M(this,null,function*(){se($),$.skippable===!0&&(yield u(e,$.id,{skipped:!0})),U($,"secondary",q)}),handlePrimaryButtonClick:()=>M(this,null,function*(){(!$.completionCriteria&&($.autoMarkCompleted||$.autoMarkCompleted===void 0)||$.completionCriteria&&$.autoMarkCompleted===!0)&&(yield ce($)),U($,"primary",q),Y($)})}))}function Ie($){return M(this,null,function*(){l&&l(),m==="complete-flow"?yield F(e):yield u(e,$.id)})}function ke(){c&&c()}function xe($){return M(this,null,function*(){yield N(e,Z[$].id)})}let Ce=!document.querySelector(Z[q].selector);function H(){let $=Z.findIndex(z=>!!document.querySelector(z.selector));return Z.map((z,pe)=>Ce&&!r&&pe!==$&&f||!r&&pe!==q?null:Dt.createElement(Xr,T({key:z.id,appearance:o,steps:ee(),selectedStep:pe,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>Ie(z),tooltipPosition:d,showHighlightOnly:s,completedStepsCount:_(e),onComplete:ke,cssPosition:S,onViewTooltip:xe,className:w},b)))}function W(){return Dt.createElement(Dt.Fragment,null,Dt.createElement(ne,{appearance:o}),H())}return S==="static"?W():Dt.createElement($c,null,W())};import Ve,{useEffect as Dc,useRef as Uc,useState as _c}from"react";import{Portal as Wc}from"react-portal";import Ut from"styled-components";var bl=Ut.button`
1465
+ `,Nc=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:i="auto",showHighlight:n=!0,primaryColor:r="#000000",offset:l={x:0,y:0},visible:p=!0,containerStyle:d={},selectedStep:s=0,customStepTypes:m,appearance:c,dismissible:f=!1,showHighlightOnly:S,showStepCount:w=!0,completedStepsCount:b=0,showFrigadeBranding:x=!1,cssPosition:v="absolute",onViewTooltip:k,className:B})=>{var kt,Je,nt,Xe,Wt,zt,g,y,h,D,ge,De,ht,Pt,ue,co,mo,ii,ni;let{logErrorIfDebugMode:L}=hl(),[C,u]=lo(),[N,F]=lo(new Date),P=Pc(null),[I,O]=lo(document.querySelector(e[s].selector)),A=gl(I,N),[G,_]=lo(),[Q,Y]=lo(!S),se=(Je=(kt=e[s])==null?void 0:kt.props)!=null&&Je.position?e[s].props.position:v,J=(Wt=(Xe=(nt=e[s])==null?void 0:nt.props)==null?void 0:Xe.zIndex)!=null?Wt:90,q=(zt=C==null?void 0:C.width)!=null?zt:Cl,ae=(g=C==null?void 0:C.height)!=null?g:yl,[we,Ne]=lo(new Date().getTime());l=(D=(h=(y=e[s])==null?void 0:y.props)==null?void 0:h.offset)!=null?D:l;let Z=window.location.pathname.split("/").pop();xl(()=>{P.current&&u({width:P.current.clientWidth,height:P.current.clientHeight})},[s,N,se]),Oo(()=>{S||Y(!0)},[s]),Oo(()=>{p&&Q&&k(s)},[Q]);let ce=()=>{let le=document.querySelector(e[s].selector);if(!le){_(void 0),O(null),L(`FrigadeTour: Could not find element with selector "${e[s].selector}" for step ${e[s].id}`);return}G&&G===JSON.stringify(le==null?void 0:le.getBoundingClientRect())||(O(le),F(new Date),le&&_(JSON.stringify(le.getBoundingClientRect())))};if(Oo(()=>{let le=new MutationObserver(ce);return le.observe(document.body,{subtree:!0,childList:!0}),()=>le.disconnect()},[ce]),Oo(()=>{let le=new MutationObserver(ce);return le.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>le.disconnect()},[ce]),Oo(()=>{let le=setInterval(()=>{ce()},10);return()=>clearInterval(le)},[ce]),xl(()=>{setTimeout(()=>{ce()},vc),ce()},[s,Z]),I===null||!p)return null;let U=i==="auto"?"right":i,ee=Jr(A,U,q,l,se),Ie=A.right+q>(window.innerWidth||document.documentElement.clientWidth),ke=A.bottom+yl>(window.innerHeight||document.documentElement.clientHeight);Ie&&i==="auto"&&(ee=Jr(A,"left",q,l,se),U="left"),(De=(ge=e[s])==null?void 0:ge.props)!=null&&De.tooltipPosition&&((Pt=(ht=e[s])==null?void 0:ht.props)==null?void 0:Pt.tooltipPosition)!=="auto"&&(((co=(ue=e[s])==null?void 0:ue.props)==null?void 0:co.tooltipPosition)==="left"||((ii=(mo=e[s])==null?void 0:mo.props)==null?void 0:ii.tooltipPosition)==="right")&&(U=e[s].props.tooltipPosition);let xe=()=>{let le=()=>{if(e[s].handlePrimaryButtonClick&&(e[s].handlePrimaryButtonClick(),Y(!1),setTimeout(()=>{ce()},30)),b===e.length-1)return o()},xt=()=>{e[s].handleSecondaryButtonClick&&(e[s].handleSecondaryButtonClick(),S&&!e[s].secondaryButtonUri&&Y(!1))};return K.createElement(K.Fragment,null,w&&e.length>1&&K.createElement(wi,null,K.createElement(Fi,{role:"status",className:a("tooltipStepCounter",c)},s+1," of ",e.length)),(e[s].primaryButtonTitle||e[s].secondaryButtonTitle)&&K.createElement(Ti,{showStepCount:w,className:a("tooltipCTAContainer",c)},e[s].secondaryButtonTitle&&K.createElement(re,{title:e[s].secondaryButtonTitle,appearance:c,onClick:xt,size:"small",withMargin:!1,secondary:!0}),e[s].primaryButtonTitle&&K.createElement(re,{title:e[s].primaryButtonTitle,appearance:c,onClick:le,withMargin:!1,size:"small"})))},Ce=()=>K.createElement(K.Fragment,null,f&&K.createElement(xi,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:a("tooltipClose",c),hasImage:!!e[s].imageUri||!!e[s].videoUri,"aria-label":"Close Tooltip",tabIndex:0},K.createElement(Ae,null)),e[s].imageUri&&K.createElement(Ci,{dismissible:f,appearance:c,role:"img","aria-label":e[s].title,src:e[s].imageUri,className:a("tooltipImageContainer",c)}),e[s].videoUri&&!e[s].imageUri&&K.createElement(yi,{dismissible:f,appearance:c,role:"video","aria-label":e[s].title,className:a("tooltipVideoContainer",c)},K.createElement(et,{appearance:c,videoUri:e[s].videoUri})),K.createElement(bi,{className:a("tooltipContentContainer",c)},K.createElement(Oe,{appearance:c,title:e[s].title,subtitle:e[s].subtitle,size:"small",ariaPrefix:`Tooltip${e[s].id}`}),K.createElement(Si,{className:a("tooltipFooter",c)},K.createElement(xe,null)))),W=T(T({},{default:le=>{var xt;if((xt=e[s])!=null&&xt.StepContent){let ia=e[s].StepContent;return K.createElement("div",null,ia)}return K.createElement(Ce,null)}}),m),$=()=>{var le;return e?!((le=e[s])!=null&&le.type)||!W[e[s].type]?W.default(e[s]):W[e[s].type]({stepData:e[s],primaryColor:r}):K.createElement(K.Fragment,null)};if(e[s].complete===!0||ee.x==0&&ee.y==0&&new Date().getTime()-we<100)return null;let z={top:(ee==null?void 0:ee.y)-ao,left:(ni=U=="left"?A.x+l.x:(ee==null?void 0:ee.x)-ao)!=null?ni:0,cursor:S?"pointer":"default",position:se},pe=()=>{let xt=z.left+(U=="left"?-q:24);return Math.min(Math.max(xt,20),window.innerWidth-q-20)},je=()=>{if(se==="fixed")return z.top;let le=z.top+ae,xt=20;return le>window.innerHeight-xt?z.top+-ae:z.top},it=()=>{S&&(F(new Date),Y(!Q))};return K.createElement(Ac,{className:B},K.createElement(Oc,{style:z,zIndex:J,className:a("tourHighlightContainer",c)},n&&e[s].showHighlight!==!1&&v!=="static"&&K.createElement(K.Fragment,null,K.createElement(Ec,{style:{position:se},onClick:it,primaryColor:c.theme.colorPrimary,className:a("tourHighlightInnerCircle",c)}),K.createElement(Bc,{style:{position:"absolute"},onClick:it,primaryColor:c.theme.colorPrimary,className:a("tourHighlightOuterCircle",c)}))),K.createElement(Sl,{style:V(T({},z),{left:pe(),top:je()}),zIndex:J+1,className:a("tooltipContainerWrapper",c)},Q&&K.createElement(K.Fragment,null,K.createElement(Do,{ref:P,role:"alertdialog","aria-labelledby":`frigadeTooltip${e[s].id}Title`,"aria-describedby":`frigadeTooltip${e[s].id}Subtitle`,layoutId:"tooltip-container",tabIndex:0,"aria-label":"Tooltip",style:T({position:"relative",width:"max-content",right:0,top:v!=="static"?12:0},d),appearance:c,className:a("tooltipContainer",c),maxWidth:Cl,zIndex:J+10},K.createElement($,null)),x&&K.createElement(Pi,{className:a("poweredByFrigadeTooltipRibbon",c),appearance:c,zIndex:J+10},K.createElement(Uo,{appearance:c})))))},Xr=Nc;import{Portal as $c}from"react-portal";var Mc=x=>{var v=x,{flowId:e,customVariables:t,appearance:o,onStepCompletion:i,onButtonClick:n,showTooltipsSimultaneously:r=!1,onDismiss:l,dismissible:p,tooltipPosition:d="auto",showHighlightOnly:s=!1,dismissBehavior:m="complete-flow",onComplete:c,skipIfNotFound:f=!1,cssPosition:S="absolute",className:w}=v,b=Le(v,["flowId","customVariables","appearance","onStepCompletion","onButtonClick","showTooltipsSimultaneously","onDismiss","dismissible","tooltipPosition","showHighlightOnly","dismissBehavior","onComplete","skipIfNotFound","cssPosition","className"]);let{getFlow:k,getFlowSteps:B,isLoading:L,targetingLogicShouldHideFlow:C,markStepCompleted:u,markStepStarted:N,markFlowCompleted:F,updateCustomVariables:P,getCurrentStepIndex:I,getStepStatus:O,isStepBlocked:A,getFlowStatus:G,getNumberOfStepsCompleted:_}=R(),{isLoadingUserFlowStateData:Q}=_e(),{primaryCTAClickSideEffects:Y,secondaryCTAClickSideEffects:se}=me(),{hasOpenModals:J}=Ee(),q=I(e),{openFlowStates:ae}=Ic(X),{mergeAppearanceWithDefault:we}=oe();if(o=we(o),Lc(()=>{P(t)},[t,L]),Q)return null;let Ne=k(e);if(!Ne||C(Ne)||G(e)==te||J())return null;let Z=B(e);if(Object.keys(ae).length>0){let $=Object.keys(ae).find(z=>ae[z]===!0);if($!==void 0&&$!==e)return Dt.createElement(Dt.Fragment,null)}function ce($){return M(this,null,function*(){if(yield u(e,$.id),Z.map(z=>O(e,z.id)).every(z=>z===$e)){yield F(e);return}!s&&q+1<Z.length&&!r&&A(e,Z[q+1].id)})}function U($,z,pe){let je=q+1<Z.length?Z[q+1]:null;n&&n($,q,z,je),i&&i($,pe,je)}function ee(){return Z.map($=>V(T({},$),{handleSecondaryButtonClick:()=>M(this,null,function*(){se($),$.skippable===!0&&(yield u(e,$.id,{skipped:!0})),U($,"secondary",q)}),handlePrimaryButtonClick:()=>M(this,null,function*(){(!$.completionCriteria&&($.autoMarkCompleted||$.autoMarkCompleted===void 0)||$.completionCriteria&&$.autoMarkCompleted===!0)&&(yield ce($)),U($,"primary",q),Y($)})}))}function Ie($){return M(this,null,function*(){l&&l(),m==="complete-flow"?yield F(e):yield u(e,$.id)})}function ke(){c&&c()}function xe($){return M(this,null,function*(){yield N(e,Z[$].id)})}let Ce=!document.querySelector(Z[q].selector);function H(){let $=Z.findIndex(z=>!!document.querySelector(z.selector));return Z.map((z,pe)=>Ce&&!r&&pe!==$&&f||!r&&pe!==q?null:Dt.createElement(Xr,T({key:z.id,appearance:o,steps:ee(),selectedStep:pe,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>Ie(z),tooltipPosition:d,showHighlightOnly:s,completedStepsCount:_(e),onComplete:ke,cssPosition:S,onViewTooltip:xe,className:w},b)))}function W(){return Dt.createElement(Dt.Fragment,null,Dt.createElement(ne,{appearance:o}),H())}return S==="static"?W():Dt.createElement($c,null,W())};import Ve,{useEffect as Dc,useRef as Uc,useState as _c}from"react";import{Portal as Wc}from"react-portal";import Ut from"styled-components";var bl=Ut.button`
1466
1466
  ${e=>E(e)} {
1467
1467
  // Anything inside this block will be ignored if the user provides a custom class
1468
1468