@frigade/react 1.34.4 → 1.34.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -608,7 +608,7 @@ interface FrigadeTourProps extends Omit<DefaultFrigadeFlowProps, 'flowId'> {
608
608
  * How to position the tooltips with CSS. Defaults to `absolute`.
609
609
  * @ignore
610
610
  */
611
- cssPosition?: 'fixed' | 'absolute' | 'relative';
611
+ cssPosition?: 'fixed' | 'absolute' | 'static';
612
612
  }
613
613
  declare const FrigadeTour: FC<FrigadeTourProps & {
614
614
  flowId: string;
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- var zl=Object.create;var Oo=Object.defineProperty;var _l=Object.getOwnPropertyDescriptor;var Wl=Object.getOwnPropertyNames;var Hl=Object.getPrototypeOf,Vl=Object.prototype.hasOwnProperty;var jl=(e,t)=>{for(var o in t)Oo(e,o,{get:t[o],enumerable:!0})},Hr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Wl(t))!Vl.call(e,i)&&i!==o&&Oo(e,i,{get:()=>t[i],enumerable:!(r=_l(t,i))||r.enumerable});return e};var f=(e,t,o)=>(o=e!=null?zl(Hl(e)):{},Hr(t||!e||!e.__esModule?Oo(o,"default",{value:e,enumerable:!0}):o,e)),Gl=e=>Hr(Oo({},"__esModule",{value:!0}),e);var Wp={};jl(Wp,{Box:()=>Zt,Button:()=>Ul,CheckBox:()=>rt,FormLabel:()=>ft,FormTextField:()=>Go,FrigadeBanner:()=>Bl,FrigadeChecklist:()=>sr,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>wl,FrigadeForm:()=>br,FrigadeGuide:()=>el,FrigadeHeroChecklist:()=>Ws,FrigadeNPSSurvey:()=>Dl,FrigadeProgressBadge:()=>Zs,FrigadeProvider:()=>mn,FrigadeSupportWidget:()=>hl,FrigadeTour:()=>sl,ProgressRing:()=>Nt,Text:()=>ar,tokens:()=>er,useFlowOpens:()=>De,useFlowResponses:()=>Vt,useFlows:()=>ee,useOrganization:()=>Qo,useUser:()=>Gt,useUserFlowStates:()=>$e});module.exports=Gl(Wp);var J=f(require("react")),pn=require("styled-components");var xe=f(require("react"));var Ke=require("react");var Et=f(require("react"));var Vr="1.34.4 ";var Ge="NOT_STARTED_STEP",ie="COMPLETED_FLOW",Lo="ABORTED_FLOW",At="STARTED_FLOW",Xe="NOT_STARTED_FLOW",Je="COMPLETED_STEP",Do="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=Et.default.useContext(X);return{config:(0,Et.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Vr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Et.useMemo)(()=>`${o}/v1/public/`,[o])}}var Kl="frigade-last-call-at-",ql="frigade-last-call-data-";function _t(){let{shouldGracefullyDegrade:e,readonly:t}=Et.default.useContext(X);return async(o,r)=>{if(t&&(r.method==="POST"||r.method==="PUT"||r.method==="DELETE"))return zt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),zt();let i=Kl+o,n=ql+o;if(window&&window.localStorage&&r&&r.body&&r.method==="POST"){let p=window.localStorage.getItem(i),c=window.localStorage.getItem(n);if(p&&c&&c==r.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return zt()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,r.body)}let s;try{s=await fetch(o,r)}catch(p){return zt(p)}return s?s.ok?s:zt(s.statusText):zt()}}function zt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Wt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Et.default.useContext(X);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var mo=require("react");var Ht=require("react");var Gr=f(require("swr"));var jr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,jr.useContext)(X);function n(d,h=!1){return e[d]??h}function s(d,h){t(b=>({...b,[d]:h}))}function p(d){t(h=>{let{[d]:b,...T}=h;return{...T}})}function c(d){i.includes(d)||r(h=>[...h,d])}function a(d){return i.includes(d)}function x(d){return Object.entries(e).some(([h,b])=>b&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Kr=f(require("swr/immutable")),Yl="unknown";function $e(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:r,organizationId:i,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Ht.useContext)(X),{resetOpenFlowState:c}=De(),[a,x]=(0,Ht.useState)(!1),d={data:n.map(k=>({flowId:k.id,flowState:ie,lastStepId:null,userId:r,foreignUserId:r,stepStates:{},shouldTrigger:!1}))},h=k=>fetch(k,e).then(F=>{if(F.ok)return F.json();throw new Error("Failed to fetch user flow states")}).catch(F=>(console.log(`Error fetching ${k}: ${F}. Will gracefully degrade and hide Frigade`),s(!0),d)),b=o&&n&&r?`${t}userFlowStates?foreignUserId=${encodeURIComponent(r)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,{data:T,isLoading:v,mutate:g,error:A}=p?(0,Kr.default)(b,h):(0,Gr.default)(b,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=T==null?void 0:T.data;(0,Ht.useEffect)(()=>{!a&&!v&&w&&x(!0)},[w,a,v]);async function y(k){if(w&&!p){let F=w.find(D=>D.flowId===k);F&&F.flowState!==ie&&(F.flowState=ie),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function I(k,F,D){if(w){let N=w.find(z=>z.flowId===k);N&&(N.stepStates[F]=D,N.flowState=At),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function S(k,F,D){if(w){let N=w.find(z=>z.flowId===k);N&&(N.lastStepId=F,N.stepStates[F]=D,N.flowState=At),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function m(k){if(w){let F=w.find(D=>D.flowId===k);F&&F.flowState!==Xe&&(F.flowState=Xe,F.lastStepId=Yl,Object.keys(F.stepStates).forEach(D=>{F.stepStates[D].actionType=Ge,F.stepStates[D].createdAt=new Date().toISOString()}),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1}),c(k))}}async function E(k,F){if(w){let D=w.find(N=>N.flowId===k);D&&D.stepStates[F]!==Ge&&(D.stepStates[F]=Ge),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!a,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:S,error:A}}function Vt(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:r}=$e(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,mo.useContext)(X),[c,a]=(0,mo.useState)(new Set),[x,d]=(0,mo.useState)(new Set),h=_t();function b(g){let A=JSON.stringify(g);if(c.has(A))return null;c.add(A),a(c),x.add(g),d(x);let w=s==null?void 0:s.find(y=>y.flowSlug===g.flowSlug&&y.stepId===g.stepId&&y.actionType===g.actionType&&y.createdAt===g.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:A}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...i,g])):w||p(I=>[...I??[],g])})}async function T(g){g.foreignUserId&&(g.actionType===At||g.actionType===Xe?await b(g):g.actionType===ie?await b(g):g.actionType===Do?await b(g):g.actionType===Je?await b(g):g.actionType===Lo?await b(g):g.actionType===Ge&&await b(g))}function v(){let g=[];return o==null||o.forEach(A=>{if(A&&A.stepStates&&Object.keys(A.stepStates).length!==0)for(let w in A.stepStates){let y=A.stepStates[w];g.push({foreignUserId:A.foreignUserId,flowSlug:A.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...g,...s]}return{addResponse:T,setFlowResponses:p,getFlowResponses:v}}var Yr=f(require("swr"));var Xl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,qr=e=>{let t=Xl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=Jl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},Jl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:r,userId:i,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,Ke.useContext)(X),b={data:[]},{verifySDKInitiated:T}=Wt(),{addResponse:v,getFlowResponses:g}=Vt(),A=u=>fetch(u,e).then(C=>C.ok?C.json():(console.log(`Error fetching ${u} (${C.status}): ${C.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),b)).catch(C=>(console.log(`Error fetching ${u}: ${C}. Will gracefully degrade and hide Frigade`),d(!0),b)),{mutateUserFlowState:w,userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:E,optimisticallyMarkStepNotStarted:k,optimisticallyMarkStepStarted:F}=$e(),{data:D,error:N,isLoading:z}=(0,Yr.default)(n?`${t}flows${h?"?readonly=true":""}`:null,A,{keepPreviousData:!0});(0,Ke.useEffect)(()=>{if(N){console.error(N);return}D&&D.data&&r(D.data)},[D,N]);function U(u){if(z)return null;let C=o.find(B=>B.slug===u);return!C&&o.length>0&&!I&&!z?(console.log(`Flow with slug ${u} not found`),null):(C==null?void 0:C.active)===!1?null:C}function $(u){var H;if(!U(u))return[];let C=U(u).data;return C?(C=se(C),(((H=JSON.parse(C))==null?void 0:H.data)??[]).map(Be=>{let Wr=ce(Be);return{handleSecondaryButtonClick:()=>{Be.skippable===!0&&j(u,Be.id,{skipped:!0})},...Be,complete:ke(u,Be.id)===Je||Wr>=1,blocked:le(u,Be.id),hidden:L(u,Be.id),handlePrimaryButtonClick:()=>{(!Be.completionCriteria&&(Be.autoMarkCompleted||Be.autoMarkCompleted===void 0)||Be.completionCriteria&&Be.autoMarkCompleted===!0)&&j(u,Be.id)},progress:Wr}}).filter(Be=>Be.hidden!==!0)):[]}function se(u){return u.replaceAll(/\${(.*?)}/g,(C,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 W(u){if(!U(u))return[];let C=U(u).data;return C?(C=se(C),JSON.parse(C)??{}):[]}function re(u,C){p(B=>({...B,[u]:C}))}function Fe(u){!I&&!z&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(C=>{re(C,u[C])})}let Z=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Do,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await F(u,C,H),v(H))},[i,y]),V=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Ge,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await k(u,C),v(H))},[i,y]),j=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Je,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await E(u,C,H),v(H))},[i,y]),ve=(0,Ke.useCallback)(async(u,C)=>{if(!T()||me(u)===Xe)return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:Xe,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),R(B)&&v(B)},[i,y]),je=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:At,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&v(B)},[i,y]),Ie=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:ie,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&(await S(u),v(B))},[i,y]),Se=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:Lo,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&(await S(u),v(B))},[i,y]);function R(u){var C;if(!y&&u.actionType===Ge)return!1;if(y){let B=y.find(H=>H.flowId===u.flowSlug);if(u.actionType===Ge&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Ge)||B&&((C=B.stepStates[u.stepId])==null?void 0:C.actionType)===u.actionType||B&&B.flowState===ie&&u.actionType===ie)return!1}return!0}function ke(u,C){let B=G(u,C);return I?null:B?B.actionType:Ge}function le(u,C){let B=G(u,C);return B?B.blocked:!1}function L(u,C){let B=G(u,C);return B?B.hidden:!1}function G(u,C){if(I)return null;let B=y==null?void 0:y.find(H=>H.flowId===u);return!B||!B.stepStates[C]?null:B.stepStates[C]??null}function K(u){var B;if(I||!y)return null;if(me(u)===Xe)return $(u)[0]??null;let C=(B=y.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return C?$(u).find(H=>H.id===C):null}function de(u){let C=K(u);if(!C)return 0;let B=$(u).findIndex(H=>H.id===C.id)??0;return ke(u,C.id)===Je&&B<$(u).length-1?B+1:B}function ce(u){if(!u.completionCriteria)return;let C=qr(u.completionCriteria);if(C===null)return;let B=ct(C),H=Ye(C);return H===0?void 0:B/H}function me(u){let C=y==null?void 0:y.find(B=>B.flowId===u);return C?C.flowState:null}function ct(u){let C=$(u);return C.length===0?0:C.filter(H=>ke(u,H.id)===Je).length}function Ye(u){return $(u).length}function Y(u){let C=o.find(B=>B.slug===u);return C?JSON.parse(C.data):null}function ze(u){if(h)return!1;if(I)return!0;if(u!=null&&u.targetingLogic&&y){let C=y.find(B=>B.flowId===u.slug);if(C)return C.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&i&&i.startsWith("guest_"))}function co(u){return!ze(U(u))}function No(){i&&w()}return{getFlow:U,getFlowData:Y,isLoading:I||z,getStepStatus:ke,getFlowSteps:$,getCurrentStepIndex:de,markStepStarted:Z,markStepCompleted:j,markFlowNotStarted:ve,markFlowStarted:je,markFlowCompleted:Ie,markFlowAborted:Se,markStepNotStarted:V,getFlowStatus:me,getNumberOfStepsCompleted:ct,getNumberOfSteps:Ye,targetingLogicShouldHideFlow:ze,setCustomVariable:re,updateCustomVariables:Fe,customVariables:s,getStepOptionalProgress:ce,getFlowMetadata:W,isStepBlocked:le,isStepHidden:L,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:co,refresh:No}}var It=require("react");var jt="guest_";function Gt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,It.useContext)(X),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=$e(),c=_t(),{verifySDKInitiated:a}=Wt();(0,It.useEffect)(()=>{if(e&&!t){if(e.startsWith(jt))return;let h=`frigade-user-registered-${e}`;localStorage.getItem(h)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(h,"true"))}},[e,i,t]);let x=(0,It.useCallback)(async h=>{if(!a())return;let b={foreignId:e,properties:h};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(b)}),r(T=>({...T,...h})),p()},[e,n,i,p]),d=(0,It.useCallback)(async(h,b)=>{if(!a())return;let v={foreignId:e,events:[{event:h,properties:b}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(v)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:x,trackEventForUser:d}}var Zi=require("uuid");var Le=f(require("react"));var Me=f(require("react")),go=f(require("styled-components"));var Jr=f(require("react")),Qr=f(require("styled-components"));var Xr="fr-",uo="cfr-";function l(e,t){let o=`${Xr}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+uo+e}return o}function P(e){if(!e.className||e.className.indexOf(uo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Xr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function dr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function mt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${dr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function fo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ql=Qr.default.div`
2
+ var zl=Object.create;var Oo=Object.defineProperty;var _l=Object.getOwnPropertyDescriptor;var Wl=Object.getOwnPropertyNames;var Hl=Object.getPrototypeOf,Vl=Object.prototype.hasOwnProperty;var jl=(e,t)=>{for(var o in t)Oo(e,o,{get:t[o],enumerable:!0})},Hr=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Wl(t))!Vl.call(e,i)&&i!==o&&Oo(e,i,{get:()=>t[i],enumerable:!(r=_l(t,i))||r.enumerable});return e};var f=(e,t,o)=>(o=e!=null?zl(Hl(e)):{},Hr(t||!e||!e.__esModule?Oo(o,"default",{value:e,enumerable:!0}):o,e)),Gl=e=>Hr(Oo({},"__esModule",{value:!0}),e);var Wp={};jl(Wp,{Box:()=>Zt,Button:()=>Ul,CheckBox:()=>rt,FormLabel:()=>ft,FormTextField:()=>Go,FrigadeBanner:()=>Bl,FrigadeChecklist:()=>sr,FrigadeDefaultAppearance:()=>tt,FrigadeEmbeddedTip:()=>wl,FrigadeForm:()=>br,FrigadeGuide:()=>el,FrigadeHeroChecklist:()=>Ws,FrigadeNPSSurvey:()=>Dl,FrigadeProgressBadge:()=>Zs,FrigadeProvider:()=>mn,FrigadeSupportWidget:()=>hl,FrigadeTour:()=>sl,ProgressRing:()=>Nt,Text:()=>ar,tokens:()=>er,useFlowOpens:()=>De,useFlowResponses:()=>Vt,useFlows:()=>ee,useOrganization:()=>Qo,useUser:()=>Gt,useUserFlowStates:()=>$e});module.exports=Gl(Wp);var J=f(require("react")),pn=require("styled-components");var xe=f(require("react"));var Ke=require("react");var Et=f(require("react"));var Vr="1.34.5 ";var Ge="NOT_STARTED_STEP",ie="COMPLETED_FLOW",Lo="ABORTED_FLOW",At="STARTED_FLOW",Xe="NOT_STARTED_FLOW",Je="COMPLETED_STEP",Do="STARTED_STEP";function et(){let{publicApiKey:e,userId:t,apiUrl:o}=Et.default.useContext(X);return{config:(0,Et.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Vr,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Et.useMemo)(()=>`${o}/v1/public/`,[o])}}var Kl="frigade-last-call-at-",ql="frigade-last-call-data-";function _t(){let{shouldGracefullyDegrade:e,readonly:t}=Et.default.useContext(X);return async(o,r)=>{if(t&&(r.method==="POST"||r.method==="PUT"||r.method==="DELETE"))return zt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),zt();let i=Kl+o,n=ql+o;if(window&&window.localStorage&&r&&r.body&&r.method==="POST"){let p=window.localStorage.getItem(i),c=window.localStorage.getItem(n);if(p&&c&&c==r.body){let a=new Date(p);if(new Date().getTime()-a.getTime()<1e3)return zt()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,r.body)}let s;try{s=await fetch(o,r)}catch(p){return zt(p)}return s?s.ok?s:zt(s.statusText):zt()}}function zt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Wt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Et.default.useContext(X);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var mo=require("react");var Ht=require("react");var Gr=f(require("swr"));var jr=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:r,completedFlowsToKeepOpenDuringSession:i}=(0,jr.useContext)(X);function n(d,h=!1){return e[d]??h}function s(d,h){t(b=>({...b,[d]:h}))}function p(d){t(h=>{let{[d]:b,...T}=h;return{...T}})}function c(d){i.includes(d)||r(h=>[...h,d])}function a(d){return i.includes(d)}function x(d){return Object.entries(e).some(([h,b])=>b&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Kr=f(require("swr/immutable")),Yl="unknown";function $e(){let{config:e,apiUrl:t}=et(),{publicApiKey:o,userId:r,organizationId:i,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Ht.useContext)(X),{resetOpenFlowState:c}=De(),[a,x]=(0,Ht.useState)(!1),d={data:n.map(k=>({flowId:k.id,flowState:ie,lastStepId:null,userId:r,foreignUserId:r,stepStates:{},shouldTrigger:!1}))},h=k=>fetch(k,e).then(F=>{if(F.ok)return F.json();throw new Error("Failed to fetch user flow states")}).catch(F=>(console.log(`Error fetching ${k}: ${F}. Will gracefully degrade and hide Frigade`),s(!0),d)),b=o&&n&&r?`${t}userFlowStates?foreignUserId=${encodeURIComponent(r)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,{data:T,isLoading:v,mutate:g,error:A}=p?(0,Kr.default)(b,h):(0,Gr.default)(b,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),w=T==null?void 0:T.data;(0,Ht.useEffect)(()=>{!a&&!v&&w&&x(!0)},[w,a,v]);async function y(k){if(w&&!p){let F=w.find(D=>D.flowId===k);F&&F.flowState!==ie&&(F.flowState=ie),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function I(k,F,D){if(w){let N=w.find(z=>z.flowId===k);N&&(N.stepStates[F]=D,N.flowState=At),await g(Promise.resolve({...T,data:w}),{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function S(k,F,D){if(w){let N=w.find(z=>z.flowId===k);N&&(N.lastStepId=F,N.stepStates[F]=D,N.flowState=At),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}async function m(k){if(w){let F=w.find(D=>D.flowId===k);F&&F.flowState!==Xe&&(F.flowState=Xe,F.lastStepId=Yl,Object.keys(F.stepStates).forEach(D=>{F.stepStates[D].actionType=Ge,F.stepStates[D].createdAt=new Date().toISOString()}),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1}),c(k))}}async function E(k,F){if(w){let D=w.find(N=>N.flowId===k);D&&D.stepStates[F]!==Ge&&(D.stepStates[F]=Ge),await g({...T,data:w},{optimisticData:{...T,data:w},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:w,isLoadingUserFlowStateData:!a,mutateUserFlowState:g,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:I,optimisticallyMarkStepNotStarted:E,optimisticallyMarkStepStarted:S,error:A}}function Vt(){let{config:e,apiUrl:t}=et(),{userFlowStatesData:o,mutateUserFlowState:r}=$e(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,mo.useContext)(X),[c,a]=(0,mo.useState)(new Set),[x,d]=(0,mo.useState)(new Set),h=_t();function b(g){let A=JSON.stringify(g);if(c.has(A))return null;c.add(A),a(c),x.add(g),d(x);let w=s==null?void 0:s.find(y=>y.flowSlug===g.flowSlug&&y.stepId===g.stepId&&y.actionType===g.actionType&&y.createdAt===g.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:A}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+g.stepId+". Will retry again later."),n([...i,g])):w||p(I=>[...I??[],g])})}async function T(g){g.foreignUserId&&(g.actionType===At||g.actionType===Xe?await b(g):g.actionType===ie?await b(g):g.actionType===Do?await b(g):g.actionType===Je?await b(g):g.actionType===Lo?await b(g):g.actionType===Ge&&await b(g))}function v(){let g=[];return o==null||o.forEach(A=>{if(A&&A.stepStates&&Object.keys(A.stepStates).length!==0)for(let w in A.stepStates){let y=A.stepStates[w];g.push({foreignUserId:A.foreignUserId,flowSlug:A.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...g,...s]}return{addResponse:T,setFlowResponses:p,getFlowResponses:v}}var Yr=f(require("swr"));var Xl=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,qr=e=>{let t=Xl.exec(e);if(t===null)return null;let o=null;return t.forEach((r,i)=>{let n=Jl(r,"'","");n.startsWith("flow_")&&(o=n)}),o},Jl=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function ee(){let{config:e,apiUrl:t}=et(),{flows:o,setFlows:r,userId:i,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,Ke.useContext)(X),b={data:[]},{verifySDKInitiated:T}=Wt(),{addResponse:v,getFlowResponses:g}=Vt(),A=u=>fetch(u,e).then(C=>C.ok?C.json():(console.log(`Error fetching ${u} (${C.status}): ${C.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),b)).catch(C=>(console.log(`Error fetching ${u}: ${C}. Will gracefully degrade and hide Frigade`),d(!0),b)),{mutateUserFlowState:w,userFlowStatesData:y,isLoadingUserFlowStateData:I,optimisticallyMarkFlowCompleted:S,optimisticallyMarkFlowNotStarted:m,optimisticallyMarkStepCompleted:E,optimisticallyMarkStepNotStarted:k,optimisticallyMarkStepStarted:F}=$e(),{data:D,error:N,isLoading:z}=(0,Yr.default)(n?`${t}flows${h?"?readonly=true":""}`:null,A,{keepPreviousData:!0});(0,Ke.useEffect)(()=>{if(N){console.error(N);return}D&&D.data&&r(D.data)},[D,N]);function U(u){if(z)return null;let C=o.find(B=>B.slug===u);return!C&&o.length>0&&!I&&!z?(console.log(`Flow with slug ${u} not found`),null):(C==null?void 0:C.active)===!1?null:C}function $(u){var H;if(!U(u))return[];let C=U(u).data;return C?(C=se(C),(((H=JSON.parse(C))==null?void 0:H.data)??[]).map(Be=>{let Wr=ce(Be);return{handleSecondaryButtonClick:()=>{Be.skippable===!0&&j(u,Be.id,{skipped:!0})},...Be,complete:ke(u,Be.id)===Je||Wr>=1,blocked:le(u,Be.id),hidden:L(u,Be.id),handlePrimaryButtonClick:()=>{(!Be.completionCriteria&&(Be.autoMarkCompleted||Be.autoMarkCompleted===void 0)||Be.completionCriteria&&Be.autoMarkCompleted===!0)&&j(u,Be.id)},progress:Wr}}).filter(Be=>Be.hidden!==!0)):[]}function se(u){return u.replaceAll(/\${(.*?)}/g,(C,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 W(u){if(!U(u))return[];let C=U(u).data;return C?(C=se(C),JSON.parse(C)??{}):[]}function re(u,C){p(B=>({...B,[u]:C}))}function Fe(u){!I&&!z&&u&&JSON.stringify(s)!=JSON.stringify({...s,...u})&&Object.keys(u).forEach(C=>{re(C,u[C])})}let Z=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Do,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await F(u,C,H),v(H))},[i,y]),V=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Ge,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await k(u,C),v(H))},[i,y]),j=(0,Ke.useCallback)(async(u,C,B)=>{if(!T())return;let H={foreignUserId:i,flowSlug:u,stepId:C,actionType:Je,data:B??{},createdAt:new Date,blocked:!1,hidden:!1};R(H)&&(await E(u,C,H),v(H))},[i,y]),ve=(0,Ke.useCallback)(async(u,C)=>{if(!T()||me(u)===Xe)return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:Xe,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};await m(u),R(B)&&v(B)},[i,y]),je=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:At,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&v(B)},[i,y]),Ie=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:ie,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&(await S(u),v(B))},[i,y]),Se=(0,Ke.useCallback)(async(u,C)=>{if(!T())return;let B={foreignUserId:i,flowSlug:u,stepId:"unknown",actionType:Lo,data:C??{},createdAt:new Date,blocked:!1,hidden:!1};R(B)&&(await S(u),v(B))},[i,y]);function R(u){var C;if(!y&&u.actionType===Ge)return!1;if(y){let B=y.find(H=>H.flowId===u.flowSlug);if(u.actionType===Ge&&(!(B!=null&&B.stepStates[u.stepId])||B.stepStates[u.stepId].actionType===Ge)||B&&((C=B.stepStates[u.stepId])==null?void 0:C.actionType)===u.actionType||B&&B.flowState===ie&&u.actionType===ie)return!1}return!0}function ke(u,C){let B=G(u,C);return I?null:B?B.actionType:Ge}function le(u,C){let B=G(u,C);return B?B.blocked:!1}function L(u,C){let B=G(u,C);return B?B.hidden:!1}function G(u,C){if(I)return null;let B=y==null?void 0:y.find(H=>H.flowId===u);return!B||!B.stepStates[C]?null:B.stepStates[C]??null}function K(u){var B;if(I||!y)return null;if(me(u)===Xe)return $(u)[0]??null;let C=(B=y.find(H=>H.flowId===u))==null?void 0:B.lastStepId;return C?$(u).find(H=>H.id===C):null}function de(u){let C=K(u);if(!C)return 0;let B=$(u).findIndex(H=>H.id===C.id)??0;return ke(u,C.id)===Je&&B<$(u).length-1?B+1:B}function ce(u){if(!u.completionCriteria)return;let C=qr(u.completionCriteria);if(C===null)return;let B=ct(C),H=Ye(C);return H===0?void 0:B/H}function me(u){let C=y==null?void 0:y.find(B=>B.flowId===u);return C?C.flowState:null}function ct(u){let C=$(u);return C.length===0?0:C.filter(H=>ke(u,H.id)===Je).length}function Ye(u){return $(u).length}function Y(u){let C=o.find(B=>B.slug===u);return C?JSON.parse(C.data):null}function ze(u){if(h)return!1;if(I)return!0;if(u!=null&&u.targetingLogic&&y){let C=y.find(B=>B.flowId===u.slug);if(C)return C.shouldTrigger===!1}return!!(u!=null&&u.targetingLogic&&i&&i.startsWith("guest_"))}function co(u){return!ze(U(u))}function No(){i&&w()}return{getFlow:U,getFlowData:Y,isLoading:I||z,getStepStatus:ke,getFlowSteps:$,getCurrentStepIndex:de,markStepStarted:Z,markStepCompleted:j,markFlowNotStarted:ve,markFlowStarted:je,markFlowCompleted:Ie,markFlowAborted:Se,markStepNotStarted:V,getFlowStatus:me,getNumberOfStepsCompleted:ct,getNumberOfSteps:Ye,targetingLogicShouldHideFlow:ze,setCustomVariable:re,updateCustomVariables:Fe,customVariables:s,getStepOptionalProgress:ce,getFlowMetadata:W,isStepBlocked:le,isStepHidden:L,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:a,isFlowAvailableToUser:co,refresh:No}}var It=require("react");var jt="guest_";function Gt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:r,shouldGracefullyDegrade:i}=(0,It.useContext)(X),{config:n,apiUrl:s}=et(),{mutateUserFlowState:p}=$e(),c=_t(),{verifySDKInitiated:a}=Wt();(0,It.useEffect)(()=>{if(e&&!t){if(e.startsWith(jt))return;let h=`frigade-user-registered-${e}`;localStorage.getItem(h)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(h,"true"))}},[e,i,t]);let x=(0,It.useCallback)(async h=>{if(!a())return;let b={foreignId:e,properties:h};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(b)}),r(T=>({...T,...h})),p()},[e,n,i,p]),d=(0,It.useCallback)(async(h,b)=>{if(!a())return;let v={foreignId:e,events:[{event:h,properties:b}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(v)}),p()},[e,n,p]);return{userId:e,setUserId:o,addPropertiesToUser:x,trackEventForUser:d}}var Zi=require("uuid");var Le=f(require("react"));var Me=f(require("react")),go=f(require("styled-components"));var Jr=f(require("react")),Qr=f(require("styled-components"));var Xr="fr-",uo="cfr-";function l(e,t){let o=`${Xr}${e}`;if(!t)return o;if(t.styleOverrides&&t.styleOverrides[e]){if(typeof t.styleOverrides[e]=="string")return o+" "+t.styleOverrides[e];if(typeof t.styleOverrides[e]=="object")return o+" "+uo+e}return o}function P(e){if(!e.className||e.className.indexOf(uo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(Xr)?"":`:not(${o.map(r=>`.${r}`).join(", ")})`}function dr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function mt(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${dr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ne(...e){return e.filter(Boolean).join(" ")}function fo(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ql=Qr.default.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  position: fixed;
@@ -1392,7 +1392,7 @@ ${r=>r.inlineStyles.map(([i,n])=>`.${uo}${i}.${uo}${i} { ${Object.entries(n).map
1392
1392
  `,Mp=(0,po.default)(il)`
1393
1393
  width: ${ao+12}px;
1394
1394
  height: ${ao+12}px;
1395
- `,Up=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:r="auto",showHighlight:i=!0,primaryColor:n="#000000",offset:s={x:0,y:0},visible:p=!0,containerStyle:c={},selectedStep:a=0,customStepTypes:x,appearance:d,dismissible:h=!1,showHighlightOnly:b,showStepCount:T=!0,completedStepsCount:v=0,showFrigadeBranding:g=!1,cssPosition:A="absolute"})=>{var ce,me,ct,Ye;let[w,y]=(0,O.useState)(),[I,S]=(0,O.useState)(new Date),m=(0,O.useRef)(null),[E,k]=(0,O.useState)(document.querySelector(e[a].selector)),F=tl(E,I),[D,N]=(0,O.useState)(),[z,U]=(0,O.useState)(!b),$=(me=(ce=e[a])==null?void 0:ce.props)!=null&&me.position?e[a].props.position:A,se=((Ye=(ct=e[a])==null?void 0:ct.props)==null?void 0:Ye.zIndex)??90,W=(w==null?void 0:w.width)??ol,re=(w==null?void 0:w.height)??rl,Fe=window.location.pathname.split("/").pop();(0,O.useLayoutEffect)(()=>{m.current&&y({width:m.current.clientWidth,height:m.current.clientHeight})},[a,I,$]),(0,O.useEffect)(()=>{b||U(!0)},[a]);let Z=()=>{let Y=document.querySelector(e[a].selector);if(!Y){N(void 0),k(null);return}D&&D===JSON.stringify(Y==null?void 0:Y.getBoundingClientRect())||(k(Y),S(new Date),Y&&N(JSON.stringify(Y.getBoundingClientRect())))};if((0,O.useEffect)(()=>{let Y=new MutationObserver(Z);return Y.observe(document.body,{subtree:!0,childList:!0}),()=>Y.disconnect()},[Z]),(0,O.useEffect)(()=>{let Y=new MutationObserver(Z);return Y.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>Y.disconnect()},[Z]),(0,O.useEffect)(()=>{let Y=setInterval(()=>{Z()},10);return()=>clearInterval(Y)},[Z]),(0,O.useLayoutEffect)(()=>{setTimeout(()=>{Z()},Op),Z()},[a,Fe]),E===null||!p||F.height===0&&F.width===0&&$!=="fixed")return null;let V=r==="auto"?"right":r,j=Ir(F,V,W,s,$),ve=F.right+W>(window.innerWidth||document.documentElement.clientWidth),je=F.bottom+rl>(window.innerHeight||document.documentElement.clientHeight);ve&&r==="auto"&&(j=Ir(F,"left",W,s,$),V="left");let Ie=()=>{let Y=()=>{if(e[a].handlePrimaryButtonClick&&(e[a].handlePrimaryButtonClick(),U(!1),setTimeout(()=>{Z()},30)),v===e.length-1)return o()},ze=()=>{e[a].handleSecondaryButtonClick&&(e[a].handleSecondaryButtonClick(),b&&!e[a].secondaryButtonUri&&U(!1))};return O.default.createElement(O.default.Fragment,null,T&&e.length>1&&O.default.createElement(ni,null,O.default.createElement(li,{className:l("tooltipStepCounter",d)},a+1," of ",e.length)),O.default.createElement(si,{showStepCount:T,className:l("tooltipCTAContainer",d)},e[a].secondaryButtonTitle&&O.default.createElement(ae,{title:e[a].secondaryButtonTitle,appearance:d,onClick:ze,size:"small",withMargin:!1,secondary:!0}),e[a].primaryButtonTitle&&O.default.createElement(ae,{title:e[a].primaryButtonTitle,appearance:d,onClick:Y,withMargin:!1,size:"small"})))},Se=()=>O.default.createElement(O.default.Fragment,null,h&&O.default.createElement(ti,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:l("tooltipClose",d)},O.default.createElement(_e,null)),e[a].imageUri&&O.default.createElement(oi,{dismissible:h,appearance:d,src:e[a].imageUri,className:l("tooltipImageContainer",d)}),e[a].videoUri&&!e[a].imageUri&&O.default.createElement(ri,{dismissible:h,appearance:d,className:l("tooltipVideoContainer",d)},O.default.createElement(wt,{appearance:d,videoUri:e[a].videoUri})),O.default.createElement(Oe,{appearance:d,title:e[a].title,subtitle:e[a].subtitle,size:"small"}),O.default.createElement(ii,{className:l("tooltipFooter",d)},O.default.createElement(Ie,null))),ke={...{default:Y=>{var ze;if((ze=e[a])!=null&&ze.StepContent){let co=e[a].StepContent;return O.default.createElement("div",null,co)}return O.default.createElement(Se,null)}},...x},le=()=>{var Y;return e?!((Y=e[a])!=null&&Y.type)||!ke[e[a].type]?ke.default(e[a]):ke[e[a].type]({stepData:e[a],primaryColor:n}):O.default.createElement(O.default.Fragment,null)};if(b&&e[a].complete===!0)return null;let L={top:(j==null?void 0:j.y)-ao,left:(V=="left"?F.x+s.x:(j==null?void 0:j.x)-ao)??0,cursor:b?"pointer":"default",position:$},G=()=>{let ze=L.left+(V=="left"?-W:24);return Math.min(Math.max(ze,20),window.innerWidth-W-20)},K=()=>{if($==="fixed")return L.top;let Y=L.top+re,ze=20;return Y>window.innerHeight-ze?L.top+-re:L.top},de=()=>{b&&(S(new Date),U(!z))};return O.default.createElement($p,null,O.default.createElement(Mp,{style:L,zIndex:se,className:l("tourHighlightContainer",d)},i&&e[a].showHighlight!==!1&&O.default.createElement(O.default.Fragment,null,O.default.createElement(Dp,{style:{position:$},onClick:de,primaryColor:d.theme.colorPrimary,className:l("tourHighlightInnerCircle",d)}),O.default.createElement(Lp,{style:{position:"absolute"},onClick:de,primaryColor:d.theme.colorPrimary,className:l("tourHighlightOuterCircle",d)}))),O.default.createElement(il,{style:{...L,left:G(),top:K()},zIndex:se+1,className:l("tooltipContainerWrapper",d)},z&&O.default.createElement(O.default.Fragment,null,O.default.createElement(Uo,{ref:m,layoutId:"tooltip-container",style:{position:"relative",width:"max-content",right:0,top:12,...c},appearance:d,className:l("tooltipContainer",d),maxWidth:ol,zIndex:se+10},O.default.createElement(le,null)),g&&O.default.createElement(pi,{className:l("poweredByFrigadeTooltipRibbon",d),appearance:d,zIndex:se+10},O.default.createElement(_o,{appearance:d})))))},lr=Up;var nl=require("react-portal");var sl=({flowId:e,customVariables:t,appearance:o,onStepCompletion:r,onButtonClick:i,showTooltipsSimultaneously:n=!1,onDismiss:s,dismissible:p,tooltipPosition:c="auto",showHighlightOnly:a=!1,dismissBehavior:x="complete-flow",onComplete:d,skipIfNotFound:h=!1,cssPosition:b="absolute",...T})=>{let{getFlow:v,getFlowSteps:g,isLoading:A,targetingLogicShouldHideFlow:w,markStepCompleted:y,markStepStarted:I,markFlowCompleted:S,updateCustomVariables:m,getCurrentStepIndex:E,getStepStatus:k,isStepBlocked:F,getFlowStatus:D,getNumberOfStepsCompleted:N}=ee(),{isLoadingUserFlowStateData:z}=$e(),{primaryCTAClickSideEffects:U,secondaryCTAClickSideEffects:$}=ue(),{hasOpenModals:se}=De(),W=E(e),{openFlowStates:re}=(0,He.useContext)(X),{mergeAppearanceWithDefault:Fe}=ne();if(o=Fe(o),(0,He.useEffect)(()=>{m(t)},[t,A]),z)return null;let Z=v(e);if(!Z||w(Z)||D(e)==ie||se())return null;let V=g(e);if(Object.keys(re).length>0){let L=Object.keys(re).find(G=>re[G]===!0);if(L!==void 0&&L!==e)return He.default.createElement(He.default.Fragment,null)}async function j(L){if(await y(e,L.id),V.map(G=>k(e,G.id)).every(G=>G===Je)){await S(e);return}if(!a&&W+1<V.length){if(F(e,V[W+1].id))return;await I(e,V[W+1].id)}}function ve(L,G,K){let de=W+1<V.length?V[W+1]:null;i&&i(L,W,G,de),r&&r(L,K,de)}function je(){return V.map(L=>({...L,handleSecondaryButtonClick:async()=>{$(L),L.skippable===!0&&await y(e,L.id,{skipped:!0}),ve(L,"secondary",W)},handlePrimaryButtonClick:async()=>{(!L.completionCriteria&&(L.autoMarkCompleted||L.autoMarkCompleted===void 0)||L.completionCriteria&&L.autoMarkCompleted===!0)&&await j(L),ve(L,"primary",W),U(L)}}))}async function Ie(L){s&&s(),x==="complete-flow"?await S(e):await y(e,L.id)}function Se(){d&&d()}let R=!document.querySelector(V[W].selector);function ke(){let L=V.findIndex(G=>!!document.querySelector(G.selector));return V.map((G,K)=>R&&!n&&K!==L&&h?null:He.default.createElement(lr,{key:G.id,appearance:o,steps:je(),selectedStep:K,showTooltipsSimultaneously:n,dismissible:p,onDismiss:()=>Ie(G),tooltipPosition:c,showHighlightOnly:a,completedStepsCount:N(e),onComplete:Se,cssPosition:b,...T}))}function le(){return He.default.createElement(He.default.Fragment,null,He.default.createElement(pe,{appearance:o}),n||R&&h?ke():He.default.createElement(lr,{appearance:o,steps:je(),selectedStep:W,showTooltipsSimultaneously:n,dismissible:p,onDismiss:()=>Ie(V[W]),tooltipPosition:c,completedStepsCount:N(e),showHighlightOnly:a,onComplete:Se,cssPosition:b,...T}))}return b==="relative"?le():He.default.createElement(nl.Portal,null,le())};var ge=f(require("react"));var xl=require("react-portal");var Bt=f(require("styled-components"));var ll=Bt.default.button`
1395
+ `,Up=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:r="auto",showHighlight:i=!0,primaryColor:n="#000000",offset:s={x:0,y:0},visible:p=!0,containerStyle:c={},selectedStep:a=0,customStepTypes:x,appearance:d,dismissible:h=!1,showHighlightOnly:b,showStepCount:T=!0,completedStepsCount:v=0,showFrigadeBranding:g=!1,cssPosition:A="absolute"})=>{var ce,me,ct,Ye;let[w,y]=(0,O.useState)(),[I,S]=(0,O.useState)(new Date),m=(0,O.useRef)(null),[E,k]=(0,O.useState)(document.querySelector(e[a].selector)),F=tl(E,I),[D,N]=(0,O.useState)(),[z,U]=(0,O.useState)(!b),$=(me=(ce=e[a])==null?void 0:ce.props)!=null&&me.position?e[a].props.position:A,se=((Ye=(ct=e[a])==null?void 0:ct.props)==null?void 0:Ye.zIndex)??90,W=(w==null?void 0:w.width)??ol,re=(w==null?void 0:w.height)??rl,Fe=window.location.pathname.split("/").pop();(0,O.useLayoutEffect)(()=>{m.current&&y({width:m.current.clientWidth,height:m.current.clientHeight})},[a,I,$]),(0,O.useEffect)(()=>{b||U(!0)},[a]);let Z=()=>{let Y=document.querySelector(e[a].selector);if(!Y){N(void 0),k(null);return}D&&D===JSON.stringify(Y==null?void 0:Y.getBoundingClientRect())||(k(Y),S(new Date),Y&&N(JSON.stringify(Y.getBoundingClientRect())))};if((0,O.useEffect)(()=>{let Y=new MutationObserver(Z);return Y.observe(document.body,{subtree:!0,childList:!0}),()=>Y.disconnect()},[Z]),(0,O.useEffect)(()=>{let Y=new MutationObserver(Z);return Y.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>Y.disconnect()},[Z]),(0,O.useEffect)(()=>{let Y=setInterval(()=>{Z()},10);return()=>clearInterval(Y)},[Z]),(0,O.useLayoutEffect)(()=>{setTimeout(()=>{Z()},Op),Z()},[a,Fe]),E===null||!p||F.height===0&&F.width===0&&$!=="fixed")return null;let V=r==="auto"?"right":r,j=Ir(F,V,W,s,$),ve=F.right+W>(window.innerWidth||document.documentElement.clientWidth),je=F.bottom+rl>(window.innerHeight||document.documentElement.clientHeight);ve&&r==="auto"&&(j=Ir(F,"left",W,s,$),V="left");let Ie=()=>{let Y=()=>{if(e[a].handlePrimaryButtonClick&&(e[a].handlePrimaryButtonClick(),U(!1),setTimeout(()=>{Z()},30)),v===e.length-1)return o()},ze=()=>{e[a].handleSecondaryButtonClick&&(e[a].handleSecondaryButtonClick(),b&&!e[a].secondaryButtonUri&&U(!1))};return O.default.createElement(O.default.Fragment,null,T&&e.length>1&&O.default.createElement(ni,null,O.default.createElement(li,{className:l("tooltipStepCounter",d)},a+1," of ",e.length)),O.default.createElement(si,{showStepCount:T,className:l("tooltipCTAContainer",d)},e[a].secondaryButtonTitle&&O.default.createElement(ae,{title:e[a].secondaryButtonTitle,appearance:d,onClick:ze,size:"small",withMargin:!1,secondary:!0}),e[a].primaryButtonTitle&&O.default.createElement(ae,{title:e[a].primaryButtonTitle,appearance:d,onClick:Y,withMargin:!1,size:"small"})))},Se=()=>O.default.createElement(O.default.Fragment,null,h&&O.default.createElement(ti,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:l("tooltipClose",d)},O.default.createElement(_e,null)),e[a].imageUri&&O.default.createElement(oi,{dismissible:h,appearance:d,src:e[a].imageUri,className:l("tooltipImageContainer",d)}),e[a].videoUri&&!e[a].imageUri&&O.default.createElement(ri,{dismissible:h,appearance:d,className:l("tooltipVideoContainer",d)},O.default.createElement(wt,{appearance:d,videoUri:e[a].videoUri})),O.default.createElement(Oe,{appearance:d,title:e[a].title,subtitle:e[a].subtitle,size:"small"}),O.default.createElement(ii,{className:l("tooltipFooter",d)},O.default.createElement(Ie,null))),ke={...{default:Y=>{var ze;if((ze=e[a])!=null&&ze.StepContent){let co=e[a].StepContent;return O.default.createElement("div",null,co)}return O.default.createElement(Se,null)}},...x},le=()=>{var Y;return e?!((Y=e[a])!=null&&Y.type)||!ke[e[a].type]?ke.default(e[a]):ke[e[a].type]({stepData:e[a],primaryColor:n}):O.default.createElement(O.default.Fragment,null)};if(b&&e[a].complete===!0)return null;let L={top:(j==null?void 0:j.y)-ao,left:(V=="left"?F.x+s.x:(j==null?void 0:j.x)-ao)??0,cursor:b?"pointer":"default",position:$},G=()=>{let ze=L.left+(V=="left"?-W:24);return Math.min(Math.max(ze,20),window.innerWidth-W-20)},K=()=>{if($==="fixed")return L.top;let Y=L.top+re,ze=20;return Y>window.innerHeight-ze?L.top+-re:L.top},de=()=>{b&&(S(new Date),U(!z))};return O.default.createElement($p,null,O.default.createElement(Mp,{style:L,zIndex:se,className:l("tourHighlightContainer",d)},i&&e[a].showHighlight!==!1&&A!=="static"&&O.default.createElement(O.default.Fragment,null,O.default.createElement(Dp,{style:{position:$},onClick:de,primaryColor:d.theme.colorPrimary,className:l("tourHighlightInnerCircle",d)}),O.default.createElement(Lp,{style:{position:"absolute"},onClick:de,primaryColor:d.theme.colorPrimary,className:l("tourHighlightOuterCircle",d)}))),O.default.createElement(il,{style:{...L,left:G(),top:K()},zIndex:se+1,className:l("tooltipContainerWrapper",d)},z&&O.default.createElement(O.default.Fragment,null,O.default.createElement(Uo,{ref:m,layoutId:"tooltip-container",style:{position:"relative",width:"max-content",right:0,top:A!=="static"?12:0,...c},appearance:d,className:l("tooltipContainer",d),maxWidth:ol,zIndex:se+10},O.default.createElement(le,null)),g&&O.default.createElement(pi,{className:l("poweredByFrigadeTooltipRibbon",d),appearance:d,zIndex:se+10},O.default.createElement(_o,{appearance:d})))))},lr=Up;var nl=require("react-portal");var sl=({flowId:e,customVariables:t,appearance:o,onStepCompletion:r,onButtonClick:i,showTooltipsSimultaneously:n=!1,onDismiss:s,dismissible:p,tooltipPosition:c="auto",showHighlightOnly:a=!1,dismissBehavior:x="complete-flow",onComplete:d,skipIfNotFound:h=!1,cssPosition:b="absolute",...T})=>{let{getFlow:v,getFlowSteps:g,isLoading:A,targetingLogicShouldHideFlow:w,markStepCompleted:y,markStepStarted:I,markFlowCompleted:S,updateCustomVariables:m,getCurrentStepIndex:E,getStepStatus:k,isStepBlocked:F,getFlowStatus:D,getNumberOfStepsCompleted:N}=ee(),{isLoadingUserFlowStateData:z}=$e(),{primaryCTAClickSideEffects:U,secondaryCTAClickSideEffects:$}=ue(),{hasOpenModals:se}=De(),W=E(e),{openFlowStates:re}=(0,He.useContext)(X),{mergeAppearanceWithDefault:Fe}=ne();if(o=Fe(o),(0,He.useEffect)(()=>{m(t)},[t,A]),z)return null;let Z=v(e);if(!Z||w(Z)||D(e)==ie||se())return null;let V=g(e);if(Object.keys(re).length>0){let L=Object.keys(re).find(G=>re[G]===!0);if(L!==void 0&&L!==e)return He.default.createElement(He.default.Fragment,null)}async function j(L){if(await y(e,L.id),V.map(G=>k(e,G.id)).every(G=>G===Je)){await S(e);return}if(!a&&W+1<V.length){if(F(e,V[W+1].id))return;await I(e,V[W+1].id)}}function ve(L,G,K){let de=W+1<V.length?V[W+1]:null;i&&i(L,W,G,de),r&&r(L,K,de)}function je(){return V.map(L=>({...L,handleSecondaryButtonClick:async()=>{$(L),L.skippable===!0&&await y(e,L.id,{skipped:!0}),ve(L,"secondary",W)},handlePrimaryButtonClick:async()=>{(!L.completionCriteria&&(L.autoMarkCompleted||L.autoMarkCompleted===void 0)||L.completionCriteria&&L.autoMarkCompleted===!0)&&await j(L),ve(L,"primary",W),U(L)}}))}async function Ie(L){s&&s(),x==="complete-flow"?await S(e):await y(e,L.id)}function Se(){d&&d()}let R=!document.querySelector(V[W].selector);function ke(){let L=V.findIndex(G=>!!document.querySelector(G.selector));return V.map((G,K)=>R&&!n&&K!==L&&h?null:He.default.createElement(lr,{key:G.id,appearance:o,steps:je(),selectedStep:K,showTooltipsSimultaneously:n,dismissible:p,onDismiss:()=>Ie(G),tooltipPosition:c,showHighlightOnly:a,completedStepsCount:N(e),onComplete:Se,cssPosition:b,...T}))}function le(){return He.default.createElement(He.default.Fragment,null,He.default.createElement(pe,{appearance:o}),n||R&&h?ke():He.default.createElement(lr,{appearance:o,steps:je(),selectedStep:W,showTooltipsSimultaneously:n,dismissible:p,onDismiss:()=>Ie(V[W]),tooltipPosition:c,completedStepsCount:N(e),showHighlightOnly:a,onComplete:Se,cssPosition:b,...T}))}return b==="static"?le():He.default.createElement(nl.Portal,null,le())};var ge=f(require("react"));var xl=require("react-portal");var Bt=f(require("styled-components"));var ll=Bt.default.button`
1396
1396
  ${e=>P(e)} {
1397
1397
  // Anything inside this block will be ignored if the user provides a custom class
1398
1398