@frigade/react 1.32.73 → 1.32.74
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.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +2 -2
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var yl=Object.create;var Po=Object.defineProperty;var bl=Object.getOwnPropertyDescriptor;var wl=Object.getOwnPropertyNames;var Tl=Object.getPrototypeOf,Fl=Object.prototype.hasOwnProperty;var kl=(e,t)=>{for(var o in t)Po(e,o,{get:t[o],enumerable:!0})},Ar=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of wl(t))!Fl.call(e,n)&&n!==o&&Po(e,n,{get:()=>t[n],enumerable:!(i=bl(t,n))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?yl(Tl(e)):{},Ar(t||!e||!e.__esModule?Po(o,"default",{value:e,enumerable:!0}):o,e)),Pl=e=>Ar(Po({},"__esModule",{value:!0}),e);var xp={};kl(xp,{CheckBox:()=>Re,FormLabel:()=>ut,FormTextField:()=>Uo,FrigadeBanner:()=>ml,FrigadeChecklist:()=>Ro,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>sl,FrigadeForm:()=>cr,FrigadeGuide:()=>Ms,FrigadeHeroChecklist:()=>Ts,FrigadeNPSSurvey:()=>Sl,FrigadeProgressBadge:()=>Ds,FrigadeProvider:()=>ji,FrigadeSupportWidget:()=>tl,FrigadeTour:()=>js,ProgressRing:()=>vt,useFlowOpens:()=>Ie,useFlowResponses:()=>_t,useFlows:()=>R,useOrganization:()=>qo,useUser:()=>Wt});module.exports=Pl(xp);var Y=g(require("react")),Hi=require("styled-components");var fe=g(require("react"));var Ve=require("react");var Dt=g(require("react"));var Ir="1.32.73 ";var Ae="https://api.frigade.com/v1/public/",We="NOT_STARTED_STEP",ie="COMPLETED_FLOW",vo="ABORTED_FLOW",kt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="COMPLETED_STEP",Eo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(Z);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Ir,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var vl="frigade-last-call-at-",El="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(Z);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),no();let i=vl+t,n=El+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(n);if(s&&p&&p==o.body){let c=new Date(s);if(new Date().getTime()-c.getTime()<1e3)return no()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,o.body)}let r;try{r=await fetch(t,o)}catch(s){return no(s)}return r?r.ok?r:no(r.statusText):no()}}function no(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(Z);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}var so=require("react");var Ut=require("react");var Lr=g(require("swr"));var Nr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=(0,Nr.useContext)(Z);function r(d,u=!1){return e[d]??u}function s(d,u){t(b=>({...b,[d]:u}))}function p(d){t(u=>{let{[d]:b,...B}=u;return{...B}})}function c(d){n.includes(d)||i(u=>[...u,d])}function a(d){return n.includes(d)}function S(d){return Object.entries(e).some(([u,b])=>b&&u!=d)||o}return{getOpenFlowState:r,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:S,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Bl="unknown";function He(){let{config:e}=Je(),{publicApiKey:t,userId:o,organizationId:i,flows:n,setShouldGracefullyDegrade:r}=(0,Ut.useContext)(Z),{resetOpenFlowState:s}=Ie(),[p,c]=(0,Ut.useState)(!1),a={data:n.map(y=>({flowId:y.id,flowState:ie,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},S=y=>fetch(y,e).then(m=>{if(m.ok)return m.json();throw new Error("Failed to fetch user flow states")}).catch(m=>(console.log(`Error fetching ${y}: ${m}. Will gracefully degrade and hide Frigade`),r(!0),a)),{data:d,isLoading:u,mutate:b,error:B}=(0,Lr.default)(t&&n&&o?`${Ae}userFlowStates?foreignUserId=${encodeURIComponent(o)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,S,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>a,onLoadingSlow:()=>a}),f=d==null?void 0:d.data;(0,Ut.useEffect)(()=>{!p&&!u&&f&&c(!0)},[f,p,u]);async function C(y){if(f){let m=f.find(x=>x.flowId===y);m&&m.flowState!==ie&&(m.flowState=ie),await b(Promise.resolve({...d,data:f}),{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function P(y,m,x){if(f){let T=f.find(L=>L.flowId===y);T&&(T.stepStates[m]=x,T.flowState=kt),await b(Promise.resolve({...d,data:f}),{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function v(y,m,x){if(f){let T=f.find(L=>L.flowId===y);T&&(T.lastStepId=m,T.stepStates[m]=x,T.flowState=kt),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function I(y){if(f){let m=f.find(x=>x.flowId===y);m&&m.flowState!==je&&(m.flowState=je,m.lastStepId=Bl,Object.keys(m.stepStates).forEach(x=>{m.stepStates[x].actionType=We,m.stepStates[x].createdAt=new Date().toISOString()}),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1}),s(y))}}async function k(y,m){if(f){let x=f.find(T=>T.flowId===y);x&&x.stepStates[m]!==We&&(x.stepStates[m]=We),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:f,isLoadingUserFlowStateData:!p,mutateUserFlowState:b,optimisticallyMarkFlowCompleted:C,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:k,optimisticallyMarkStepStarted:v,error:B}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=He(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:r,setFlowResponses:s}=(0,so.useContext)(Z),[p,c]=(0,so.useState)(new Set),[a,S]=(0,so.useState)(new Set),d=$t();function u(f){let C=JSON.stringify(f);if(p.has(C))return null;p.add(C),c(p),a.add(f),S(a);let P=r==null?void 0:r.find(v=>v.flowSlug===f.flowSlug&&v.stepId===f.stepId&&v.actionType===f.actionType&&v.createdAt===f.createdAt);return d(`${Ae}flowResponses`,{...e,method:"POST",body:C}).then(v=>{v.status!==200&&v.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...i,f])):P||s(I=>[...I??[],f])})}async function b(f){f.foreignUserId&&(f.actionType===kt||f.actionType===je?await u(f):f.actionType===ie?await u(f):f.actionType===Eo?await u(f):f.actionType===Ge?await u(f):f.actionType===vo?await u(f):f.actionType===We&&await u(f))}function B(){let f=[];return t==null||t.forEach(C=>{if(C&&C.stepStates&&Object.keys(C.stepStates).length!==0)for(let P in C.stepStates){let v=C.stepStates[P];f.push({foreignUserId:C.foreignUserId,flowSlug:C.flowId,stepId:v.stepId,actionType:v.actionType,data:{},createdAt:new Date(v.createdAt),blocked:v.blocked,hidden:v.hidden})}}),[...f,...r]}return{addResponse:b,setFlowResponses:s,getFlowResponses:B}}var Dr=g(require("swr"));var Al=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Or=e=>{let t=Al.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=Il(i,"'","");r.startsWith("flow_")&&(o=r)}),o},Il=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e}=Je(),{flows:t,setFlows:o,userId:i,publicApiKey:n,customVariables:r,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:c,setFlowResponses:a,setShouldGracefullyDegrade:S}=(0,Ve.useContext)(Z),d={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:b,getFlowResponses:B}=_t(),f=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),S(!0),d)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),S(!0),d)),{userFlowStatesData:C,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:y,optimisticallyMarkStepStarted:m}=He(),{data:x,error:T,isLoading:L}=(0,Dr.default)(n?`${Ae}flows`:null,f,{keepPreviousData:!0});(0,Ve.useEffect)(()=>{if(T){console.error(T);return}x&&x.data&&(x.data=o(x.data))},[x,T]);function V(h){if(L)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!P&&!L?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function j(h){var W;if(!V(h))return[];let w=V(h).data;return w?(w=N(w),(((W=JSON.parse(w))==null?void 0:W.data)??[]).map(Se=>{let H=Q(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&M(h,Se.id,{skipped:!0})},...Se,complete:O(h,Se.id)===Ge||H>=1,blocked:q(h,Se.id),hidden:Te(h,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&M(h,Se.id)},progress:H}}).filter(Se=>Se.hidden!==!0)):[]}function N(h){return h.replaceAll(/\${(.*?)}/g,(w,E)=>r[E]===void 0?"":String(r[E]).replace(/[\u00A0-\u9999<>\&]/g,function(W){return"&#"+W.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 z(h){if(!V(h))return[];let w=V(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function U(h,w){s(E=>({...E,[h]:w}))}function $(h){!P&&!L&&h&&JSON.stringify(r)!=JSON.stringify({...r,...h})&&Object.keys(h).forEach(w=>{U(w,h[w])})}let ue=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:Eo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await m(h,w,W),b(W))},[i,C]),Ce=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:We,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await y(h,w),b(W))},[i,C]),M=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await k(h,w,W),b(W))},[i,C]),Oe=(0,Ve.useCallback)(async(h,w)=>{if(u(),re(h)===je)return;let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),pe(E)&&b(E)},[i,C]),De=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:kt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&b(E)},[i,C]),se=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ie,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&(await v(h),b(E))},[i,C]),X=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:vo,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&(await v(h),b(E))},[i,C]);function pe(h){var w;if(!C&&h.actionType===We)return!1;if(C){let E=C.find(W=>W.flowId===h.flowSlug);if(h.actionType===We&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===We)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===ie&&h.actionType===ie)return!1}return!0}function O(h,w){let E=$e(h,w);return P?null:E?E.actionType:We}function q(h,w){let E=$e(h,w);return E?E.blocked:!1}function Te(h,w){let E=$e(h,w);return E?E.hidden:!1}function $e(h,w){if(P)return null;let E=C==null?void 0:C.find(W=>W.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function K(h){var E;if(P||!C)return null;if(re(h)===je)return j(h)[0]??null;let w=(E=C.find(W=>W.flowId===h))==null?void 0:E.lastStepId;return w?j(h).find(W=>W.id===w):null}function ke(h){let w=K(h);if(!w)return 0;let E=j(h).findIndex(W=>W.id===w.id)??0;return O(h,w.id)===Ge&&E<j(h).length-1?E+1:E}function Q(h){if(!h.completionCriteria)return;let w=Or(h.completionCriteria);if(w===null)return;let E=at(w),W=pt(w);return W===0?void 0:E/W}function re(h){let w=C==null?void 0:C.find(E=>E.flowId===h);return w?w.flowState:null}function at(h){let w=j(h);return w.length===0?0:w.filter(W=>O(h,W.id)===Ge).length}function pt(h){return j(h).length}function Ot(h){return JSON.parse(t.find(w=>w.slug===h).data)}function G(h){if(P)return!0;if(h!=null&&h.targetingLogic&&C){let w=C.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function ze(h){return!G(V(h))}return{getFlow:V,getFlowData:Ot,isLoading:P||L,getStepStatus:O,getFlowSteps:j,getCurrentStepIndex:ke,markStepStarted:ue,markStepCompleted:M,markFlowNotStarted:Oe,markFlowStarted:De,markFlowCompleted:se,markFlowAborted:X,markStepNotStarted:Ce,getFlowStatus:re,getNumberOfStepsCompleted:at,getNumberOfSteps:pt,targetingLogicShouldHideFlow:G,setCustomVariable:U,updateCustomVariables:$,customVariables:r,getStepOptionalProgress:Q,getFlowMetadata:z,isStepBlocked:q,isStepHidden:Te,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:c,isFlowAvailableToUser:ze}}var Pt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=(0,Pt.useContext)(Z),{config:r}=Je(),{mutateUserFlowState:s}=He(),p=$t(),{verifySDKInitiated:c}=Mt();(0,Pt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let d=`frigade-user-registered-${e}`;localStorage.getItem(d)||(p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(d,"true"))}},[e,n,t]);let a=(0,Pt.useCallback)(async d=>{c();let u={foreignId:e,properties:d};await p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify(u)}),i(b=>({...b,...d})),s()},[e,r,n,s]),S=(0,Pt.useCallback)(async(d,u)=>{c();let B={foreignId:e,events:[{event:d,properties:u}]};await p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify(B)}),s()},[e,r,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:S}}var zi=require("uuid");var Be=g(require("react"));var Ne=g(require("react")),po=g(require("styled-components"));var Mr=g(require("react")),Ur=g(require("styled-components"));var $r="fr-",lo="cfr-";function l(e,t){let o=`${$r}${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+" "+lo+e}return o}function F(e){if(!e.className||e.className.indexOf(lo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith($r)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function tr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ct(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${tr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Pe(...e){return e.filter(Boolean).join(" ")}function ao(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Nl=Ur.default.div`
|
|
2
|
+
var yl=Object.create;var Po=Object.defineProperty;var bl=Object.getOwnPropertyDescriptor;var wl=Object.getOwnPropertyNames;var Tl=Object.getPrototypeOf,Fl=Object.prototype.hasOwnProperty;var kl=(e,t)=>{for(var o in t)Po(e,o,{get:t[o],enumerable:!0})},Ar=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of wl(t))!Fl.call(e,n)&&n!==o&&Po(e,n,{get:()=>t[n],enumerable:!(i=bl(t,n))||i.enumerable});return e};var g=(e,t,o)=>(o=e!=null?yl(Tl(e)):{},Ar(t||!e||!e.__esModule?Po(o,"default",{value:e,enumerable:!0}):o,e)),Pl=e=>Ar(Po({},"__esModule",{value:!0}),e);var xp={};kl(xp,{CheckBox:()=>Re,FormLabel:()=>ut,FormTextField:()=>Uo,FrigadeBanner:()=>ml,FrigadeChecklist:()=>Ro,FrigadeDefaultAppearance:()=>Qe,FrigadeEmbeddedTip:()=>sl,FrigadeForm:()=>cr,FrigadeGuide:()=>Ms,FrigadeHeroChecklist:()=>Ts,FrigadeNPSSurvey:()=>Sl,FrigadeProgressBadge:()=>Ds,FrigadeProvider:()=>ji,FrigadeSupportWidget:()=>tl,FrigadeTour:()=>js,ProgressRing:()=>vt,useFlowOpens:()=>Ie,useFlowResponses:()=>_t,useFlows:()=>R,useOrganization:()=>qo,useUser:()=>Wt});module.exports=Pl(xp);var Y=g(require("react")),Hi=require("styled-components");var fe=g(require("react"));var Ve=require("react");var Dt=g(require("react"));var Ir="1.32.74 ";var Ae="https://api.frigade.com/v1/public/",We="NOT_STARTED_STEP",ie="COMPLETED_FLOW",vo="ABORTED_FLOW",kt="STARTED_FLOW",je="NOT_STARTED_FLOW",Ge="COMPLETED_STEP",Eo="STARTED_STEP";function Je(){let{publicApiKey:e,userId:t}=Dt.default.useContext(Z);return{config:(0,Dt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":Ir,"X-Frigade-SDK-Platform":"React"}}),[e,t])}}var vl="frigade-last-call-at-",El="frigade-last-call-data-";function $t(){let{shouldGracefullyDegrade:e}=Dt.default.useContext(Z);return async(t,o)=>{if(e)return console.log(`Skipping ${t} call to Frigade due to error`),no();let i=vl+t,n=El+t;if(window&&window.localStorage&&o&&o.body&&o.method==="POST"){let s=window.localStorage.getItem(i),p=window.localStorage.getItem(n);if(s&&p&&p==o.body){let c=new Date(s);if(new Date().getTime()-c.getTime()<1e3)return no()}window.localStorage.setItem(i,new Date().toISOString()),window.localStorage.setItem(n,o.body)}let r;try{r=await fetch(t,o)}catch(s){return no(s)}return r?r.ok?r:no(r.statusText):no()}}function no(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function Mt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Dt.default.useContext(Z);function o(){if(t){console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize");return}e||console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider")}return{verifySDKInitiated:o}}var so=require("react");var Ut=require("react");var Lr=g(require("swr"));var Nr=require("react");function Ie(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:n}=(0,Nr.useContext)(Z);function r(d,u=!1){return e[d]??u}function s(d,u){t(b=>({...b,[d]:u}))}function p(d){t(u=>{let{[d]:b,...B}=u;return{...B}})}function c(d){n.includes(d)||i(u=>[...u,d])}function a(d){return n.includes(d)}function S(d){return Object.entries(e).some(([u,b])=>b&&u!=d)||o}return{getOpenFlowState:r,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:S,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:a}}var Bl="unknown";function He(){let{config:e}=Je(),{publicApiKey:t,userId:o,organizationId:i,flows:n,setShouldGracefullyDegrade:r}=(0,Ut.useContext)(Z),{resetOpenFlowState:s}=Ie(),[p,c]=(0,Ut.useState)(!1),a={data:n.map(y=>({flowId:y.id,flowState:ie,lastStepId:null,userId:o,foreignUserId:o,stepStates:{},shouldTrigger:!1}))},S=y=>fetch(y,e).then(m=>{if(m.ok)return m.json();throw new Error("Failed to fetch user flow states")}).catch(m=>(console.log(`Error fetching ${y}: ${m}. Will gracefully degrade and hide Frigade`),r(!0),a)),{data:d,isLoading:u,mutate:b,error:B}=(0,Lr.default)(t&&n&&o?`${Ae}userFlowStates?foreignUserId=${encodeURIComponent(o)}${i?`&foreignUserGroupId=${encodeURIComponent(i)}`:""}`:null,S,{revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>a,onLoadingSlow:()=>a}),f=d==null?void 0:d.data;(0,Ut.useEffect)(()=>{!p&&!u&&f&&c(!0)},[f,p,u]);async function C(y){if(f){let m=f.find(x=>x.flowId===y);m&&m.flowState!==ie&&(m.flowState=ie),await b(Promise.resolve({...d,data:f}),{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function P(y,m,x){if(f){let T=f.find(L=>L.flowId===y);T&&(T.stepStates[m]=x,T.flowState=kt),await b(Promise.resolve({...d,data:f}),{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function v(y,m,x){if(f){let T=f.find(L=>L.flowId===y);T&&(T.lastStepId=m,T.stepStates[m]=x,T.flowState=kt),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}async function I(y){if(f){let m=f.find(x=>x.flowId===y);m&&m.flowState!==je&&(m.flowState=je,m.lastStepId=Bl,Object.keys(m.stepStates).forEach(x=>{m.stepStates[x].actionType=We,m.stepStates[x].createdAt=new Date().toISOString()}),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1}),s(y))}}async function k(y,m){if(f){let x=f.find(T=>T.flowId===y);x&&x.stepStates[m]!==We&&(x.stepStates[m]=We),await b({...d,data:f},{optimisticData:{...d,data:f},revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:f,isLoadingUserFlowStateData:!p,mutateUserFlowState:b,optimisticallyMarkFlowCompleted:C,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:P,optimisticallyMarkStepNotStarted:k,optimisticallyMarkStepStarted:v,error:B}}function _t(){let{config:e}=Je(),{userFlowStatesData:t,mutateUserFlowState:o}=He(),{failedFlowResponses:i,setFailedFlowResponses:n,flowResponses:r,setFlowResponses:s}=(0,so.useContext)(Z),[p,c]=(0,so.useState)(new Set),[a,S]=(0,so.useState)(new Set),d=$t();function u(f){let C=JSON.stringify(f);if(p.has(C))return null;p.add(C),c(p),a.add(f),S(a);let P=r==null?void 0:r.find(v=>v.flowSlug===f.flowSlug&&v.stepId===f.stepId&&v.actionType===f.actionType&&v.createdAt===f.createdAt);return d(`${Ae}flowResponses`,{...e,method:"POST",body:C}).then(v=>{v.status!==200&&v.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...i,f])):P||s(I=>[...I??[],f])})}async function b(f){f.foreignUserId&&(f.actionType===kt||f.actionType===je?await u(f):f.actionType===ie?await u(f):f.actionType===Eo?await u(f):f.actionType===Ge?await u(f):f.actionType===vo?await u(f):f.actionType===We&&await u(f))}function B(){let f=[];return t==null||t.forEach(C=>{if(C&&C.stepStates&&Object.keys(C.stepStates).length!==0)for(let P in C.stepStates){let v=C.stepStates[P];f.push({foreignUserId:C.foreignUserId,flowSlug:C.flowId,stepId:v.stepId,actionType:v.actionType,data:{},createdAt:new Date(v.createdAt),blocked:v.blocked,hidden:v.hidden})}}),[...f,...r]}return{addResponse:b,setFlowResponses:s,getFlowResponses:B}}var Dr=g(require("swr"));var Al=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,Or=e=>{let t=Al.exec(e);if(t===null)return null;let o=null;return t.forEach((i,n)=>{let r=Il(i,"'","");r.startsWith("flow_")&&(o=r)}),o},Il=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function R(){let{config:e}=Je(),{flows:t,setFlows:o,userId:i,publicApiKey:n,customVariables:r,setCustomVariables:s,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:c,setFlowResponses:a,setShouldGracefullyDegrade:S}=(0,Ve.useContext)(Z),d={data:[]},{verifySDKInitiated:u}=Mt(),{addResponse:b,getFlowResponses:B}=_t(),f=h=>fetch(h,e).then(w=>w.ok?w.json():(console.log(`Error fetching ${h} (${w.status}): ${w.statusText}. .Will gracefully degrade and hide Frigade`),S(!0),d)).catch(w=>(console.log(`Error fetching ${h}: ${w}. Will gracefully degrade and hide Frigade`),S(!0),d)),{userFlowStatesData:C,isLoadingUserFlowStateData:P,optimisticallyMarkFlowCompleted:v,optimisticallyMarkFlowNotStarted:I,optimisticallyMarkStepCompleted:k,optimisticallyMarkStepNotStarted:y,optimisticallyMarkStepStarted:m}=He(),{data:x,error:T,isLoading:L}=(0,Dr.default)(n?`${Ae}flows`:null,f,{keepPreviousData:!0});(0,Ve.useEffect)(()=>{if(T){console.error(T);return}x&&x.data&&(x.data=o(x.data))},[x,T]);function V(h){if(L)return null;let w=t.find(E=>E.slug===h);return!w&&t.length>0&&!P&&!L?(console.log(`Flow with slug ${h} not found`),null):(w==null?void 0:w.active)===!1?null:w}function j(h){var W;if(!V(h))return[];let w=V(h).data;return w?(w=N(w),(((W=JSON.parse(w))==null?void 0:W.data)??[]).map(Se=>{let H=Q(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&M(h,Se.id,{skipped:!0})},...Se,complete:O(h,Se.id)===Ge||H>=1,blocked:q(h,Se.id),hidden:Te(h,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&M(h,Se.id)},progress:H}}).filter(Se=>Se.hidden!==!0)):[]}function N(h){return h.replaceAll(/\${(.*?)}/g,(w,E)=>r[E]===void 0?"":String(r[E]).replace(/[\u00A0-\u9999<>\&]/g,function(W){return"&#"+W.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 z(h){if(!V(h))return[];let w=V(h).data;return w?(w=N(w),JSON.parse(w)??{}):[]}function U(h,w){s(E=>({...E,[h]:w}))}function $(h){!P&&!L&&h&&JSON.stringify(r)!=JSON.stringify({...r,...h})&&Object.keys(h).forEach(w=>{U(w,h[w])})}let ue=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:Eo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await m(h,w,W),b(W))},[i,C]),Ce=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:We,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await y(h,w),b(W))},[i,C]),M=(0,Ve.useCallback)(async(h,w,E)=>{u();let W={foreignUserId:i,flowSlug:h,stepId:w,actionType:Ge,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};pe(W)&&(await k(h,w,W),b(W))},[i,C]),Oe=(0,Ve.useCallback)(async(h,w)=>{if(u(),re(h)===je)return;let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:je,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};await I(h),pe(E)&&b(E)},[i,C]),De=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:kt,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&b(E)},[i,C]),se=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:ie,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&(await v(h),b(E))},[i,C]),X=(0,Ve.useCallback)(async(h,w)=>{u();let E={foreignUserId:i,flowSlug:h,stepId:"unknown",actionType:vo,data:w??{},createdAt:new Date,blocked:!1,hidden:!1};pe(E)&&(await v(h),b(E))},[i,C]);function pe(h){var w;if(!C&&h.actionType===We)return!1;if(C){let E=C.find(W=>W.flowId===h.flowSlug);if(h.actionType===We&&(!(E!=null&&E.stepStates[h.stepId])||E.stepStates[h.stepId].actionType===We)||E&&((w=E.stepStates[h.stepId])==null?void 0:w.actionType)===h.actionType||E&&E.flowState===ie&&h.actionType===ie)return!1}return!0}function O(h,w){let E=$e(h,w);return P?null:E?E.actionType:We}function q(h,w){let E=$e(h,w);return E?E.blocked:!1}function Te(h,w){let E=$e(h,w);return E?E.hidden:!1}function $e(h,w){if(P)return null;let E=C==null?void 0:C.find(W=>W.flowId===h);return!E||!E.stepStates[w]?null:E.stepStates[w]??null}function K(h){var E;if(P||!C)return null;if(re(h)===je)return j(h)[0]??null;let w=(E=C.find(W=>W.flowId===h))==null?void 0:E.lastStepId;return w?j(h).find(W=>W.id===w):null}function ke(h){let w=K(h);if(!w)return 0;let E=j(h).findIndex(W=>W.id===w.id)??0;return O(h,w.id)===Ge&&E<j(h).length-1?E+1:E}function Q(h){if(!h.completionCriteria)return;let w=Or(h.completionCriteria);if(w===null)return;let E=at(w),W=pt(w);return W===0?void 0:E/W}function re(h){let w=C==null?void 0:C.find(E=>E.flowId===h);return w?w.flowState:null}function at(h){let w=j(h);return w.length===0?0:w.filter(W=>O(h,W.id)===Ge).length}function pt(h){return j(h).length}function Ot(h){return JSON.parse(t.find(w=>w.slug===h).data)}function G(h){if(P)return!0;if(h!=null&&h.targetingLogic&&C){let w=C.find(E=>E.flowId===h.slug);if(w)return w.shouldTrigger===!1}return!!(h!=null&&h.targetingLogic&&i&&i.startsWith("guest_"))}function ze(h){return!G(V(h))}return{getFlow:V,getFlowData:Ot,isLoading:P||L,getStepStatus:O,getFlowSteps:j,getCurrentStepIndex:ke,markStepStarted:ue,markStepCompleted:M,markFlowNotStarted:Oe,markFlowStarted:De,markFlowCompleted:se,markFlowAborted:X,markStepNotStarted:Ce,getFlowStatus:re,getNumberOfStepsCompleted:at,getNumberOfSteps:pt,targetingLogicShouldHideFlow:G,setCustomVariable:U,updateCustomVariables:$,customVariables:r,getStepOptionalProgress:Q,getFlowMetadata:z,isStepBlocked:q,isStepHidden:Te,hasActiveFullPageFlow:p,setHasActiveFullPageFlow:c,isFlowAvailableToUser:ze}}var Pt=require("react");var zt="guest_";function Wt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:n}=(0,Pt.useContext)(Z),{config:r}=Je(),{mutateUserFlowState:s}=He(),p=$t(),{verifySDKInitiated:c}=Mt();(0,Pt.useEffect)(()=>{if(e&&!t){if(e.startsWith(zt))return;let d=`frigade-user-registered-${e}`;localStorage.getItem(d)||(p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(d,"true"))}},[e,n,t]);let a=(0,Pt.useCallback)(async d=>{c();let u={foreignId:e,properties:d};await p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify(u)}),i(b=>({...b,...d})),s()},[e,r,n,s]),S=(0,Pt.useCallback)(async(d,u)=>{c();let B={foreignId:e,events:[{event:d,properties:u}]};await p(`${Ae}users`,{...r,method:"POST",body:JSON.stringify(B)}),s()},[e,r,s]);return{userId:e,setUserId:o,addPropertiesToUser:a,trackEventForUser:S}}var zi=require("uuid");var Be=g(require("react"));var Ne=g(require("react")),po=g(require("styled-components"));var Mr=g(require("react")),Ur=g(require("styled-components"));var $r="fr-",lo="cfr-";function l(e,t){let o=`${$r}${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+" "+lo+e}return o}function F(e){if(!e.className||e.className.indexOf(lo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith($r)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function tr(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function ct(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${tr(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Pe(...e){return e.filter(Boolean).join(" ")}function ao(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Nl=Ur.default.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|
|
@@ -1346,7 +1346,7 @@ ${i=>i.inlineStyles.map(([n,r])=>`.${lo}${n}.${lo}${n} { ${Object.entries(r).map
|
|
|
1346
1346
|
`,gp=(0,ro.default)(Hs)`
|
|
1347
1347
|
width: ${oo+12}px;
|
|
1348
1348
|
height: ${oo+12}px;
|
|
1349
|
-
`,hp=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:i="auto",showHighlight:n=!0,primaryColor:r="#000000",offset:s={x:0,y:0},visible:p=!0,containerStyle:c={},selectedStep:a=0,customStepTypes:S,appearance:d,dismissible:u=!1,showHighlightOnly:b,showStepCount:B=!0,completedStepsCount:f=0,showFrigadeBranding:C=!1})=>{var re,at,pt,Ot;let[P,v]=(0,A.useState)(),[I,k]=(0,A.useState)(new Date),y=(0,A.useRef)(null),[m,x]=(0,A.useState)(document.querySelector(e[a].selector)),T=_s(m,I),[L,V]=(0,A.useState)(),[j,N]=(0,A.useState)(!b),z=(at=(re=e[a])==null?void 0:re.props)!=null&&at.position?e[a].props.position:"absolute",U=((Ot=(pt=e[a])==null?void 0:pt.props)==null?void 0:Ot.zIndex)??90,$=(P==null?void 0:P.width)??zs,ue=(P==null?void 0:P.height)??Ws;(0,A.useLayoutEffect)(()=>{y.current&&v({width:y.current.clientWidth,height:y.current.clientHeight})},[a,I,z]),(0,A.useEffect)(()=>{b||N(!0)},[a]);let Ce=i==="auto"?"right":i,M=yr(T,Ce,$,s,z),Oe=T.right+$>(window.innerWidth||document.documentElement.clientWidth),De=T.bottom+Ws>(window.innerHeight||document.documentElement.clientHeight);Oe&&i==="auto"&&(M=yr(T,"left",$,s,z),Ce="left");let se=window.location.pathname.split("/").pop(),X=()=>{let G=document.querySelector(e[a].selector);L&&L===JSON.stringify(G==null?void 0:G.getBoundingClientRect())||(x(G),k(new Date),G&&V(JSON.stringify(G.getBoundingClientRect())))};if((0,A.useEffect)(()=>{let G=new MutationObserver(X);return G.observe(document.body,{subtree:!0,childList:!0}),()=>G.disconnect()},[X]),(0,A.useEffect)(()=>{let G=new MutationObserver(X);return G.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>G.disconnect()},[X]),(0,A.useEffect)(()=>{let G=setInterval(()=>{X()},10);return()=>clearInterval(G)},[X]),(0,A.useLayoutEffect)(()=>{setTimeout(()=>{X()},cp),X()},[a,se]),m===null)return A.default.createElement(A.default.Fragment,null);if(M.x==0&&M.y==0)return A.default.createElement(A.default.Fragment,null);if(!p)return A.default.createElement(A.default.Fragment,null);let pe=()=>{let G=()=>{if(e[a].handlePrimaryButtonClick&&(e[a].handlePrimaryButtonClick(),N(!1),setTimeout(()=>{X()},30)),f===e.length-1)return o()},ze=()=>{e[a].handleSecondaryButtonClick&&(e[a].handleSecondaryButtonClick(),b&&N(!1))};return A.default.createElement(A.default.Fragment,null,B&&A.default.createElement(qr,null,A.default.createElement(Yr,{className:l("tooltipStepCounter",d)},a+1," of ",e.length)),A.default.createElement(Kr,{showStepCount:B,className:l("tooltipCTAContainer",d)},e[a].secondaryButtonTitle&&A.default.createElement(le,{title:e[a].secondaryButtonTitle,appearance:d,onClick:ze,size:"small",withMargin:!1,secondary:!0}),e[a].primaryButtonTitle&&A.default.createElement(le,{title:e[a].primaryButtonTitle,appearance:d,onClick:G,withMargin:!1,size:"small"})))},O=()=>A.default.createElement(A.default.Fragment,null,u&&A.default.createElement(Hr,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:l("tooltipClose",d)},A.default.createElement(Me,null)),e[a].imageUri&&A.default.createElement(Vr,{dismissible:u,appearance:d,src:e[a].imageUri,className:l("tooltipImageContainer",d)}),e[a].videoUri&&!e[a].imageUri&&A.default.createElement(jr,{dismissible:u,appearance:d,className:l("tooltipVideoContainer",d)},A.default.createElement(Gt,{appearance:d,videoUri:e[a].videoUri})),A.default.createElement(ve,{appearance:d,title:e[a].title,subtitle:e[a].subtitle,size:"small"}),A.default.createElement(Gr,{className:l("tooltipFooter",d)},A.default.createElement(pe,null))),Te={...{default:G=>{var ze;if((ze=e[a])!=null&&ze.StepContent){let h=e[a].StepContent;return A.default.createElement("div",null,h)}return A.default.createElement(O,null)}},...S},$e=()=>{var G;return e?!((G=e[a])!=null&&G.type)||!Te[e[a].type]?Te.default(e[a]):Te[e[a].type]({stepData:e[a],primaryColor:r}):A.default.createElement(A.default.Fragment,null)};if(b&&e[a].complete===!0)return null;let K={top:(M==null?void 0:M.y)-oo,left:(Ce=="left"?T.x+s.x:(M==null?void 0:M.x)-oo)??0,cursor:b?"pointer":"default",position:z},ke=()=>{let ze=K.left+(Ce=="left"?-$:24);return Math.min(Math.max(ze,20),window.innerWidth-$-20)},Q=()=>{b&&(k(new Date),N(!j))};return A.default.createElement(fp,null,A.default.createElement(gp,{style:K,zIndex:U,className:l("tourHighlightContainer",d)},n&&e[a].showHighlight!==!1&&A.default.createElement(A.default.Fragment,null,A.default.createElement(up,{style:{position:z},onClick:Q,primaryColor:d.theme.colorPrimary}),A.default.createElement(mp,{style:{position:"absolute"},onClick:Q,primaryColor:d.theme.colorPrimary}))),A.default.createElement(Hs,{style:{...K,left:ke()},zIndex:U+1,className:l("tooltipContainerWrapper",d)},j&&A.default.createElement(A.default.Fragment,null,A.default.createElement(Io,{ref:y,layoutId:"tooltip-container",style:{position:"relative",width:"max-content",right:0,top:12,...c},appearance:d,className:l("tooltipContainer",d),maxWidth:zs,zIndex:U+10},A.default.createElement($e,null)),C&&A.default.createElement(Jr,{className:l("poweredByFrigadeTooltipRibbon",d),appearance:d,zIndex:U+10},A.default.createElement(Lo,{appearance:d})))))},er=hp;var Vs=require("react-portal");var js=({flowId:e,customVariables:t,appearance:o,onStepCompletion:i,onButtonClick:n,showTooltipsSimultaneously:r=!1,onDismiss:s,dismissible:p,tooltipPosition:c="auto",showHighlightOnly:a=!1,dismissBehavior:S="complete-flow",onComplete:d,...u})=>{let{getFlow:b,getFlowSteps:B,isLoading:f,targetingLogicShouldHideFlow:C,markStepCompleted:P,markStepStarted:v,markFlowCompleted:I,updateCustomVariables:k,getCurrentStepIndex:y,getStepStatus:m,isStepBlocked:x,getFlowStatus:T,getNumberOfStepsCompleted:L}=R(),{isLoadingUserFlowStateData:V}=He(),{primaryCTAClickSideEffects:j,secondaryCTAClickSideEffects:N}=ce(),{hasOpenModals:z}=Ie(),U=y(e),{openFlowStates:$}=(0,Xe.useContext)(Z),{mergeAppearanceWithDefault:ue}=ne();if(o=ue(o),(0,Xe.useEffect)(()=>{k(t)},[t,f]),V)return null;let Ce=b(e);if(!Ce||C(Ce)||T(e)==ie||z())return null;let M=B(e);if(Object.keys($).length>0){let O=Object.keys($).find(q=>$[q]===!0);if(O!==void 0&&O!==e)return Xe.default.createElement(Xe.default.Fragment,null)}async function Oe(O){if(await P(e,O.id),M.map(q=>m(e,q.id)).every(q=>q===Ge)){await I(e);return}if(!a&&U+1<M.length){if(x(e,M[U+1].id))return;await v(e,M[U+1].id)}}function De(O,q,Te){let $e=U+1<M.length?M[U+1]:null;n&&n(O,U,q,$e),i&&i(O,Te,$e)}function se(){return M.map(O=>({...O,handleSecondaryButtonClick:async()=>{N(O),O.skippable===!0&&await P(e,O.id,{skipped:!0}),De(O,"secondary",U)},handlePrimaryButtonClick:async()=>{(!O.completionCriteria&&(O.autoMarkCompleted||O.autoMarkCompleted===void 0)||O.completionCriteria&&O.autoMarkCompleted===!0)&&await Oe(O),De(O,"primary",U),j(O)}}))}async function X(O){s&&s(),S==="complete-flow"?await I(e):await P(e,O.id)}function pe(){d&&d()}return Xe.default.createElement(Vs.Portal,null,Xe.default.createElement(ae,{appearance:o}),r?M.map((O,q)=>Xe.default.createElement(er,{key:O.id,appearance:o,steps:se(),selectedStep:q,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>X(O),tooltipPosition:c,showHighlightOnly:a,completedStepsCount:L(e),onComplete:pe,...u})):Xe.default.createElement(er,{appearance:o,steps:se(),selectedStep:U,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>X(M[U]),tooltipPosition:c,completedStepsCount:L(e),showHighlightOnly:a,onComplete:pe,...u}))};var de=g(require("react"));var el=require("react-portal");var Ft=g(require("styled-components"));var Gs=Ft.default.button`
|
|
1349
|
+
`,hp=({steps:e=[],onDismiss:t,onComplete:o=()=>{},tooltipPosition:i="auto",showHighlight:n=!0,primaryColor:r="#000000",offset:s={x:0,y:0},visible:p=!0,containerStyle:c={},selectedStep:a=0,customStepTypes:S,appearance:d,dismissible:u=!1,showHighlightOnly:b,showStepCount:B=!0,completedStepsCount:f=0,showFrigadeBranding:C=!1})=>{var re,at,pt,Ot;let[P,v]=(0,A.useState)(),[I,k]=(0,A.useState)(new Date),y=(0,A.useRef)(null),[m,x]=(0,A.useState)(document.querySelector(e[a].selector)),T=_s(m,I),[L,V]=(0,A.useState)(),[j,N]=(0,A.useState)(!b),z=(at=(re=e[a])==null?void 0:re.props)!=null&&at.position?e[a].props.position:"absolute",U=((Ot=(pt=e[a])==null?void 0:pt.props)==null?void 0:Ot.zIndex)??90,$=(P==null?void 0:P.width)??zs,ue=(P==null?void 0:P.height)??Ws;(0,A.useLayoutEffect)(()=>{y.current&&v({width:y.current.clientWidth,height:y.current.clientHeight})},[a,I,z]),(0,A.useEffect)(()=>{b||N(!0)},[a]);let Ce=i==="auto"?"right":i,M=yr(T,Ce,$,s,z),Oe=T.right+$>(window.innerWidth||document.documentElement.clientWidth),De=T.bottom+Ws>(window.innerHeight||document.documentElement.clientHeight);Oe&&i==="auto"&&(M=yr(T,"left",$,s,z),Ce="left");let se=window.location.pathname.split("/").pop(),X=()=>{let G=document.querySelector(e[a].selector);L&&L===JSON.stringify(G==null?void 0:G.getBoundingClientRect())||(x(G),k(new Date),G&&V(JSON.stringify(G.getBoundingClientRect())))};if((0,A.useEffect)(()=>{let G=new MutationObserver(X);return G.observe(document.body,{subtree:!0,childList:!0}),()=>G.disconnect()},[X]),(0,A.useEffect)(()=>{let G=new MutationObserver(X);return G.observe(document.body,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>G.disconnect()},[X]),(0,A.useEffect)(()=>{let G=setInterval(()=>{X()},10);return()=>clearInterval(G)},[X]),(0,A.useLayoutEffect)(()=>{setTimeout(()=>{X()},cp),X()},[a,se]),m===null)return A.default.createElement(A.default.Fragment,null);if(M.x==0&&M.y==0)return A.default.createElement(A.default.Fragment,null);if(!p)return A.default.createElement(A.default.Fragment,null);let pe=()=>{let G=()=>{if(e[a].handlePrimaryButtonClick&&(e[a].handlePrimaryButtonClick(),N(!1),setTimeout(()=>{X()},30)),f===e.length-1)return o()},ze=()=>{e[a].handleSecondaryButtonClick&&(e[a].handleSecondaryButtonClick(),b&&N(!1))};return A.default.createElement(A.default.Fragment,null,B&&A.default.createElement(qr,null,A.default.createElement(Yr,{className:l("tooltipStepCounter",d)},a+1," of ",e.length)),A.default.createElement(Kr,{showStepCount:B,className:l("tooltipCTAContainer",d)},e[a].secondaryButtonTitle&&A.default.createElement(le,{title:e[a].secondaryButtonTitle,appearance:d,onClick:ze,size:"small",withMargin:!1,secondary:!0}),e[a].primaryButtonTitle&&A.default.createElement(le,{title:e[a].primaryButtonTitle,appearance:d,onClick:G,withMargin:!1,size:"small"})))},O=()=>A.default.createElement(A.default.Fragment,null,u&&A.default.createElement(Hr,{"data-testid":"tooltip-dismiss",onClick:()=>{t&&t()},className:l("tooltipClose",d)},A.default.createElement(Me,null)),e[a].imageUri&&A.default.createElement(Vr,{dismissible:u,appearance:d,src:e[a].imageUri,className:l("tooltipImageContainer",d)}),e[a].videoUri&&!e[a].imageUri&&A.default.createElement(jr,{dismissible:u,appearance:d,className:l("tooltipVideoContainer",d)},A.default.createElement(Gt,{appearance:d,videoUri:e[a].videoUri})),A.default.createElement(ve,{appearance:d,title:e[a].title,subtitle:e[a].subtitle,size:"small"}),A.default.createElement(Gr,{className:l("tooltipFooter",d)},A.default.createElement(pe,null))),Te={...{default:G=>{var ze;if((ze=e[a])!=null&&ze.StepContent){let h=e[a].StepContent;return A.default.createElement("div",null,h)}return A.default.createElement(O,null)}},...S},$e=()=>{var G;return e?!((G=e[a])!=null&&G.type)||!Te[e[a].type]?Te.default(e[a]):Te[e[a].type]({stepData:e[a],primaryColor:r}):A.default.createElement(A.default.Fragment,null)};if(b&&e[a].complete===!0)return null;let K={top:(M==null?void 0:M.y)-oo,left:(Ce=="left"?T.x+s.x:(M==null?void 0:M.x)-oo)??0,cursor:b?"pointer":"default",position:z},ke=()=>{let ze=K.left+(Ce=="left"?-$:24);return Math.min(Math.max(ze,20),window.innerWidth-$-20)},Q=()=>{b&&(k(new Date),N(!j))};return A.default.createElement(fp,null,A.default.createElement(gp,{style:K,zIndex:U,className:l("tourHighlightContainer",d)},n&&e[a].showHighlight!==!1&&A.default.createElement(A.default.Fragment,null,A.default.createElement(up,{style:{position:z},onClick:Q,primaryColor:d.theme.colorPrimary,className:l("tourHighlightInnerCircle",d)}),A.default.createElement(mp,{style:{position:"absolute"},onClick:Q,primaryColor:d.theme.colorPrimary,className:l("tourHighlightOuterCircle",d)}))),A.default.createElement(Hs,{style:{...K,left:ke()},zIndex:U+1,className:l("tooltipContainerWrapper",d)},j&&A.default.createElement(A.default.Fragment,null,A.default.createElement(Io,{ref:y,layoutId:"tooltip-container",style:{position:"relative",width:"max-content",right:0,top:12,...c},appearance:d,className:l("tooltipContainer",d),maxWidth:zs,zIndex:U+10},A.default.createElement($e,null)),C&&A.default.createElement(Jr,{className:l("poweredByFrigadeTooltipRibbon",d),appearance:d,zIndex:U+10},A.default.createElement(Lo,{appearance:d})))))},er=hp;var Vs=require("react-portal");var js=({flowId:e,customVariables:t,appearance:o,onStepCompletion:i,onButtonClick:n,showTooltipsSimultaneously:r=!1,onDismiss:s,dismissible:p,tooltipPosition:c="auto",showHighlightOnly:a=!1,dismissBehavior:S="complete-flow",onComplete:d,...u})=>{let{getFlow:b,getFlowSteps:B,isLoading:f,targetingLogicShouldHideFlow:C,markStepCompleted:P,markStepStarted:v,markFlowCompleted:I,updateCustomVariables:k,getCurrentStepIndex:y,getStepStatus:m,isStepBlocked:x,getFlowStatus:T,getNumberOfStepsCompleted:L}=R(),{isLoadingUserFlowStateData:V}=He(),{primaryCTAClickSideEffects:j,secondaryCTAClickSideEffects:N}=ce(),{hasOpenModals:z}=Ie(),U=y(e),{openFlowStates:$}=(0,Xe.useContext)(Z),{mergeAppearanceWithDefault:ue}=ne();if(o=ue(o),(0,Xe.useEffect)(()=>{k(t)},[t,f]),V)return null;let Ce=b(e);if(!Ce||C(Ce)||T(e)==ie||z())return null;let M=B(e);if(Object.keys($).length>0){let O=Object.keys($).find(q=>$[q]===!0);if(O!==void 0&&O!==e)return Xe.default.createElement(Xe.default.Fragment,null)}async function Oe(O){if(await P(e,O.id),M.map(q=>m(e,q.id)).every(q=>q===Ge)){await I(e);return}if(!a&&U+1<M.length){if(x(e,M[U+1].id))return;await v(e,M[U+1].id)}}function De(O,q,Te){let $e=U+1<M.length?M[U+1]:null;n&&n(O,U,q,$e),i&&i(O,Te,$e)}function se(){return M.map(O=>({...O,handleSecondaryButtonClick:async()=>{N(O),O.skippable===!0&&await P(e,O.id,{skipped:!0}),De(O,"secondary",U)},handlePrimaryButtonClick:async()=>{(!O.completionCriteria&&(O.autoMarkCompleted||O.autoMarkCompleted===void 0)||O.completionCriteria&&O.autoMarkCompleted===!0)&&await Oe(O),De(O,"primary",U),j(O)}}))}async function X(O){s&&s(),S==="complete-flow"?await I(e):await P(e,O.id)}function pe(){d&&d()}return Xe.default.createElement(Vs.Portal,null,Xe.default.createElement(ae,{appearance:o}),r?M.map((O,q)=>Xe.default.createElement(er,{key:O.id,appearance:o,steps:se(),selectedStep:q,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>X(O),tooltipPosition:c,showHighlightOnly:a,completedStepsCount:L(e),onComplete:pe,...u})):Xe.default.createElement(er,{appearance:o,steps:se(),selectedStep:U,showTooltipsSimultaneously:r,dismissible:p,onDismiss:()=>X(M[U]),tooltipPosition:c,completedStepsCount:L(e),showHighlightOnly:a,onComplete:pe,...u}))};var de=g(require("react"));var el=require("react-portal");var Ft=g(require("styled-components"));var Gs=Ft.default.button`
|
|
1350
1350
|
${e=>F(e)} {
|
|
1351
1351
|
// Anything inside this block will be ignored if the user provides a custom class
|
|
1352
1352
|
|