@frigade/react 1.35.33 → 1.35.34
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 +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var da=Object.create;var Uo=Object.defineProperty;var ca=Object.getOwnPropertyDescriptor;var ma=Object.getOwnPropertyNames;var ua=Object.getPrototypeOf,fa=Object.prototype.hasOwnProperty;var ga=(e,t)=>{for(var o in t)Uo(e,o,{get:t[o],enumerable:!0})},ti=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ma(t))!fa.call(e,r)&&r!==o&&Uo(e,r,{get:()=>t[r],enumerable:!(i=ca(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?da(ua(e)):{},ti(t||!e||!e.__esModule?Uo(o,"default",{value:e,enumerable:!0}):o,e)),xa=e=>ti(Uo({},"__esModule",{value:!0}),e);var hd={};ga(hd,{Box:()=>io,Button:()=>aa,CheckBox:()=>at,FlowType:()=>_o,FormLabel:()=>ht,FormTextField:()=>Ro,FrigadeAnnouncement:()=>na,FrigadeBanner:()=>Hl,FrigadeChecklist:()=>fr,FrigadeDefaultAppearance:()=>lt,FrigadeEmbeddedTip:()=>$l,FrigadeForm:()=>Nr,FrigadeGuide:()=>ul,FrigadeHeroChecklist:()=>el,FrigadeNPSSurvey:()=>Xl,FrigadeProgressBadge:()=>cl,FrigadeProvider:()=>kn,FrigadeSupportWidget:()=>Il,FrigadeTour:()=>Sl,ProgressBar:()=>je,ProgressRing:()=>$t,Text:()=>hr,tokens:()=>ar,useFlowOpens:()=>De,useFlowResponses:()=>Jt,useFlows:()=>Q,useOrganization:()=>nr,useUser:()=>Zt,useUserFlowStates:()=>_e});module.exports=xa(hd);var Z=u(require("react")),wn=require("styled-components");var ge=u(require("react"));var Ze=require("react");var Lt=u(require("react"));var oi="1.35.33 ";var Qe="NOT_STARTED_STEP",J="COMPLETED_FLOW",zo="ABORTED_FLOW",Dt="STARTED_FLOW",Ye="NOT_STARTED_FLOW",tt="COMPLETED_STEP",Wo="STARTED_STEP";function it(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(q);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":oi,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var ha="frigade-last-call-at-",Ca="frigade-last-call-data-";function Kt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(q);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Gt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Gt();let r=ha+o,n=Ca+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Gt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Gt(p)}return s?s.ok?s:Gt(s.statusText):Gt()}}function Gt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function qt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(q);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var Co=require("react");var Xt=require("react");var ii=u(require("swr"));var ri=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,ri.useContext)(q);function n(d,h=!1){return e[d]??h}function s(d,h){t(P=>({...P,[d]:h}))}function p(d){t(h=>{let{[d]:P,...b}=h;return{...b}})}function c(d){r.includes(d)||i(h=>[...h,d])}function l(d){return r.includes(d)}function x(d){return Object.entries(e).some(([h,P])=>P&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var ni=u(require("swr/immutable"));var Yt=u(require("core-js-pure/actual/structured-clone"));function yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function be(...e){let t=e.shift(),o=e.length===1?e[0]:be(...e);if(!yr(t)||!yr(o))throw new Error("deepmerge can only merge Objects");let i=(0,Yt.default)(t);return Object.entries(o).forEach(([r,n])=>{yr(n)?i[r]!==void 0?Object.assign(i,{[r]:be(i[r],(0,Yt.default)(n))}):Object.assign(i,{[r]:(0,Yt.default)(n)}):Array.isArray(n)?i[r]!==void 0?Object.assign(i,{[r]:[...i[r],...(0,Yt.default)(n)]}):Object.assign(i,{[r]:(0,Yt.default)(n)}):Object.assign(i,{[r]:n})}),i}var ya="unknown";function _e(){let{config:e,apiUrl:t}=it(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Xt.useContext)(q),{resetOpenFlowState:c}=De(),[l,x]=(0,Xt.useState)(!1),d={data:n.map(g=>({flowId:g.id,flowState:J,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},h=g=>fetch(g,e).then(k=>{if(k.ok)return k.json();throw new Error("Failed to fetch user flow states")}).catch(k=>(console.log(`Error fetching ${g}: ${k}. Will gracefully degrade and hide Frigade`),s(!0),d)),P=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:b,isLoading:w,mutate:f,error:B}=p?(0,ni.default)(P,h):(0,ii.default)(P,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=b==null?void 0:b.data;(0,Xt.useEffect)(()=>{!l&&!w&&F&&x(!0)},[F,l,w]);async function y(g){if(F&&!p){let k=F.find(N=>N.flowId===g);k&&k.flowState!==J&&(k.flowState=J),await f(Promise.resolve(be(b,{data:F})),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function O(g,k,N){if(F){let L=F.find(A=>A.flowId===g);L&&(L.stepStates[k]=N,L.flowState=Dt),await f(Promise.resolve(be(b,{data:F})),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function I(g,k,N){if(F){let L=F.find(A=>A.flowId===g);L&&(L.lastStepId=k,L.stepStates[k]=N,L.flowState=Dt),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function C(g){if(F){let k=F.find(N=>N.flowId===g);k&&k.flowState!==Ye&&(k.flowState=Ye,k.lastStepId=ya,Object.keys(k.stepStates).forEach(N=>{k.stepStates[N].actionType=Qe,k.stepStates[N].createdAt=new Date().toISOString()}),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1}),c(g))}}async function T(g,k){if(F){let N=F.find(L=>L.flowId===g);N&&N.stepStates[k]!==Qe&&(N.stepStates[k]=Qe),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!l,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:C,optimisticallyMarkStepCompleted:O,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:I,error:B}}function Jt(){let{config:e,apiUrl:t}=it(),{userFlowStatesData:o,mutateUserFlowState:i}=_e(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,Co.useContext)(q),[c,l]=(0,Co.useState)(new Set),[x,d]=(0,Co.useState)(new Set),h=Kt();function P(f){let B=JSON.stringify(f);if(c.has(B))return null;c.add(B),l(c),x.add(f),d(x);let F=s==null?void 0:s.find(y=>y.flowSlug===f.flowSlug&&y.stepId===f.stepId&&y.actionType===f.actionType&&y.createdAt===f.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:B}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...r,f])):F||p(O=>[...O??[],f])})}async function b(f){f.foreignUserId&&(f.actionType===Dt||f.actionType===Ye?await P(f):f.actionType===J?await P(f):f.actionType===Wo?await P(f):f.actionType===tt?await P(f):f.actionType===zo?await P(f):f.actionType===Qe&&await P(f))}function w(){let f=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let F in B.stepStates){let y=B.stepStates[F];f.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...f,...s]}return{addResponse:b,setFlowResponses:p,getFlowResponses:w}}var li=u(require("swr"));var Sa=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,si=e=>{let t=Sa.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ba(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ba=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Sr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var _o=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(_o||{});function Q(){let{config:e,apiUrl:t}=it(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,Ze.useContext)(q),P={data:[]},{verifySDKInitiated:b}=qt(),{addResponse:w,getFlowResponses:f}=Jt(),B=m=>fetch(m,e).then(S=>S.ok?S.json():(console.log(`Error fetching ${m} (${S.status}): ${S.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),P)).catch(S=>(console.log(`Error fetching ${m}: ${S}. Will gracefully degrade and hide Frigade`),d(!0),P)),{mutateUserFlowState:F,userFlowStatesData:y,isLoadingUserFlowStateData:O,optimisticallyMarkFlowCompleted:I,optimisticallyMarkFlowNotStarted:C,optimisticallyMarkStepCompleted:T,optimisticallyMarkStepNotStarted:g,optimisticallyMarkStepStarted:k}=_e(),{data:N,error:L,isLoading:A}=(0,li.default)(n?`${t}flows${h?"?readonly=true":""}`:null,B,{keepPreviousData:!0});(0,Ze.useEffect)(()=>{if(L){console.error(L);return}N&&N.data&&i(N.data)},[N,L]);function M(m){if(A)return null;let S=o.find(E=>E.slug===m);return!S&&o.length>0&&!O&&!A?(console.log(`Flow with id ${m} not found`),null):(S==null?void 0:S.active)===!1?null:S}function U(m){var _;if(!M(m))return[];let S=M(m).data;return S?(S=K(S),(((_=Sr(S))==null?void 0:_.data)??[]).map(Se=>{let ho=V(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&se(m,Se.id,{skipped:!0})},...Se,complete:ce(m,Se.id)===tt||ho>=1,blocked:Me(m,Se.id),hidden:$(m,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&se(m,Se.id)},progress:ho}}).filter(Se=>Se.hidden!==!0)):[]}function K(m){return m.replaceAll(/\${(.*?)}/g,(S,E)=>s[E]===void 0?"":String(s[E]).replace(/[\u00A0-\u9999<>\&]/g,function(_){return"&#"+_.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 G(m){if(!M(m))return[];let S=M(m).data;return S?(S=K(S),JSON.parse(S)??{}):[]}function R(m,S){p(E=>({...E,[m]:S}))}function he(m){!O&&!A&&m&&JSON.stringify(s)!=JSON.stringify({...s,...m})&&Object.keys(m).forEach(S=>{R(S,m[S])})}let Ae=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:Wo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await k(m,S,_),w(_))},[r,y]),Y=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:Qe,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await g(m,S),w(_))},[r,y]),se=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:tt,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await T(m,S,_),w(_))},[r,y]),oe=(0,Ze.useCallback)(async(m,S)=>{if(!b()||me(m)===Ye)return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:Ye,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};await C(m),ae(E)&&w(E)},[r,y]),Le=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:Dt,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&w(E)},[r,y]),ye=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:J,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&(await I(m),w(E))},[r,y]),Ge=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:zo,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&(await I(m),w(E))},[r,y]);function ae(m){var S;if(!y&&m.actionType===Qe)return!1;if(y){let E=y.find(_=>_.flowId===m.flowSlug);if(m.actionType===Qe&&(!(E!=null&&E.stepStates[m.stepId])||E.stepStates[m.stepId].actionType===Qe)||E&&((S=E.stepStates[m.stepId])==null?void 0:S.actionType)===m.actionType||E&&E.flowState===J&&m.actionType===J)return!1}return!0}function ce(m,S){let E=W(m,S);return O?null:E?E.actionType:Qe}function Me(m,S){let E=W(m,S);return E?E.blocked:!1}function $(m,S){let E=W(m,S);return E?E.hidden:!1}function W(m,S){if(O)return null;let E=y==null?void 0:y.find(_=>_.flowId===m);return!E||!E.stepStates[S]?null:E.stepStates[S]??null}function j(m){var E;if(O||!y)return null;if(me(m)===Ye)return U(m)[0]??null;let S=(E=y.find(_=>_.flowId===m))==null?void 0:E.lastStepId;return S?U(m).find(_=>_.id===S):null}function ee(m){let S=j(m);if(!S)return 0;let E=U(m).findIndex(_=>_.id===S.id)??0;return ce(m,S.id)===tt&&E<U(m).length-1?E+1:E}function V(m){if(!m.completionCriteria)return;let S=si(m.completionCriteria);if(S===null)return;let E=Ke(S),_=qe(S);return _===0?void 0:E/_}function me(m){let S=y==null?void 0:y.find(E=>E.flowId===m);return S?S.flowState:null}function Ke(m){let S=U(m);return S.length===0?0:S.filter(_=>ce(m,_.id)===tt).length}function qe(m){return U(m).length}function jt(m){let S=o.find(E=>E.slug===m);return S?Sr(S.data):null}function Nt(m){if(h)return!1;if(O)return!0;if(m!=null&&m.targetingLogic&&y){let S=y.find(E=>E.flowId===m.slug);if(S)return S.shouldTrigger===!1}return!!(m!=null&&m.targetingLogic&&r&&r.startsWith("guest_"))}function Vt(m){return!Nt(M(m))}function Ot(){r&&F()}return{getFlow:M,getFlowData:jt,isLoading:O||A,getStepStatus:ce,getFlowSteps:U,getCurrentStepIndex:ee,markStepStarted:Ae,markStepCompleted:se,markFlowNotStarted:oe,markFlowStarted:Le,markFlowCompleted:ye,markFlowAborted:Ge,markStepNotStarted:Y,getFlowStatus:me,getNumberOfStepsCompleted:Ke,getNumberOfSteps:qe,targetingLogicShouldHideFlow:Nt,setCustomVariable:R,updateCustomVariables:he,customVariables:s,getStepOptionalProgress:V,getFlowMetadata:G,isStepBlocked:Me,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:Vt,refresh:Ot}}var Tt=require("react");var Qt="guest_";function Zt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,Tt.useContext)(q),{config:n,apiUrl:s}=it(),{mutateUserFlowState:p}=_e(),c=Kt(),{verifySDKInitiated:l}=qt();function x(b){return`frigade-user-registered-${b}`}(0,Tt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Qt))return;let b=x(e);localStorage.getItem(b)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(b,"true"))}},[e,r,t]);let d=(0,Tt.useCallback)(async b=>{if(!l())return;let w={foreignId:e,properties:b};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(w)}),i(f=>({...f,...b})),p()},[e,n,r,p]),h=(0,Tt.useCallback)(async(b,w)=>{if(!l())return;let B={foreignId:e,events:[{event:b,properties:w}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),p()},[e,n,p]),P=(0,Tt.useCallback)(async(b,w)=>{if(l())if(w){let f=x(b);localStorage.setItem(f,"true"),o(b);let B={foreignId:b,properties:w};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),i(F=>({...F,...w})),p()}else o(b)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:P,addPropertiesToUser:d,trackEventForUser:h}}var mn=require("uuid");var ve=u(require("react"));var ke=u(require("react")),bo=u(require("styled-components"));var pi=u(require("react")),di=u(require("styled-components"));var ai="fr-",yo="cfr-";function a(e,t){let o=`${ai}${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+" "+yo+e}return o}function v(e){if(!e.className||e.className.indexOf(yo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ai)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Ho(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function He(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ho(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ie(...e){return e.filter(Boolean).join(" ")}function So(e){return e.charAt(0).toUpperCase()+e.slice(1)}var wa=di.default.div`
|
|
2
|
+
var da=Object.create;var Uo=Object.defineProperty;var ca=Object.getOwnPropertyDescriptor;var ma=Object.getOwnPropertyNames;var ua=Object.getPrototypeOf,fa=Object.prototype.hasOwnProperty;var ga=(e,t)=>{for(var o in t)Uo(e,o,{get:t[o],enumerable:!0})},ti=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ma(t))!fa.call(e,r)&&r!==o&&Uo(e,r,{get:()=>t[r],enumerable:!(i=ca(t,r))||i.enumerable});return e};var u=(e,t,o)=>(o=e!=null?da(ua(e)):{},ti(t||!e||!e.__esModule?Uo(o,"default",{value:e,enumerable:!0}):o,e)),xa=e=>ti(Uo({},"__esModule",{value:!0}),e);var hd={};ga(hd,{Box:()=>io,Button:()=>aa,CheckBox:()=>at,FlowType:()=>_o,FormLabel:()=>ht,FormTextField:()=>Ro,FrigadeAnnouncement:()=>na,FrigadeBanner:()=>Hl,FrigadeChecklist:()=>fr,FrigadeDefaultAppearance:()=>lt,FrigadeEmbeddedTip:()=>$l,FrigadeForm:()=>Nr,FrigadeGuide:()=>ul,FrigadeHeroChecklist:()=>el,FrigadeNPSSurvey:()=>Xl,FrigadeProgressBadge:()=>cl,FrigadeProvider:()=>kn,FrigadeSupportWidget:()=>Il,FrigadeTour:()=>Sl,ProgressBar:()=>je,ProgressRing:()=>$t,Text:()=>hr,tokens:()=>ar,useFlowOpens:()=>De,useFlowResponses:()=>Jt,useFlows:()=>Q,useOrganization:()=>nr,useUser:()=>Zt,useUserFlowStates:()=>_e});module.exports=xa(hd);var Z=u(require("react")),wn=require("styled-components");var ge=u(require("react"));var Ze=require("react");var Lt=u(require("react"));var oi="1.35.34 ";var Qe="NOT_STARTED_STEP",J="COMPLETED_FLOW",zo="ABORTED_FLOW",Dt="STARTED_FLOW",Ye="NOT_STARTED_FLOW",tt="COMPLETED_STEP",Wo="STARTED_STEP";function it(){let{publicApiKey:e,userId:t,apiUrl:o}=Lt.default.useContext(q);return{config:(0,Lt.useMemo)(()=>({headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","X-Frigade-SDK-Version":oi,"X-Frigade-SDK-Platform":"React"}}),[e,t]),apiUrl:(0,Lt.useMemo)(()=>`${o}/v1/public/`,[o])}}var ha="frigade-last-call-at-",Ca="frigade-last-call-data-";function Kt(){let{shouldGracefullyDegrade:e,readonly:t}=Lt.default.useContext(q);return async(o,i)=>{if(t&&(i.method==="POST"||i.method==="PUT"||i.method==="DELETE"))return Gt();if(e)return console.log(`Skipping ${o} call to Frigade due to error`),Gt();let r=ha+o,n=Ca+o;if(window&&window.localStorage&&i&&i.body&&i.method==="POST"){let p=window.localStorage.getItem(r),c=window.localStorage.getItem(n);if(p&&c&&c==i.body){let l=new Date(p);if(new Date().getTime()-l.getTime()<1e3)return Gt()}window.localStorage.setItem(r,new Date().toISOString()),window.localStorage.setItem(n,i.body)}let s;try{s=await fetch(o,i)}catch(p){return Gt(p)}return s?s.ok?s:Gt(s.statusText):Gt()}}function Gt(e){return e&&console.log("Call to Frigade failed",e),{json:()=>({})}}function qt(){let{publicApiKey:e,shouldGracefullyDegrade:t}=Lt.default.useContext(q);function o(){return t?(console.error("Frigade hooks cannot be used when Frigade SDK has failed to initialize"),!1):e?!0:(console.error("Frigade hooks cannot be used outside the scope of FrigadeProvider"),!1)}return{verifySDKInitiated:o}}var Co=require("react");var Xt=require("react");var ii=u(require("swr"));var ri=require("react");function De(){let{openFlowStates:e,setOpenFlowStates:t,hasActiveFullPageFlow:o,setCompletedFlowsToKeepOpenDuringSession:i,completedFlowsToKeepOpenDuringSession:r}=(0,ri.useContext)(q);function n(d,h=!1){return e[d]??h}function s(d,h){t(P=>({...P,[d]:h}))}function p(d){t(h=>{let{[d]:P,...b}=h;return{...b}})}function c(d){r.includes(d)||i(h=>[...h,d])}function l(d){return r.includes(d)}function x(d){return Object.entries(e).some(([h,P])=>P&&h!=d)||o}return{getOpenFlowState:n,setOpenFlowState:s,resetOpenFlowState:p,hasOpenModals:x,setKeepCompletedFlowOpenDuringSession:c,shouldKeepCompletedFlowOpenDuringSession:l}}var ni=u(require("swr/immutable"));var Yt=u(require("core-js-pure/actual/structured-clone"));function yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function be(...e){let t=e.shift(),o=e.length===1?e[0]:be(...e);if(!yr(t)||!yr(o))throw new Error("deepmerge can only merge Objects");let i=(0,Yt.default)(t);return Object.entries(o).forEach(([r,n])=>{yr(n)?i[r]!==void 0?Object.assign(i,{[r]:be(i[r],(0,Yt.default)(n))}):Object.assign(i,{[r]:(0,Yt.default)(n)}):Array.isArray(n)?i[r]!==void 0?Object.assign(i,{[r]:[...i[r],...(0,Yt.default)(n)]}):Object.assign(i,{[r]:(0,Yt.default)(n)}):Object.assign(i,{[r]:n})}),i}var ya="unknown";function _e(){let{config:e,apiUrl:t}=it(),{publicApiKey:o,userId:i,organizationId:r,flows:n,setShouldGracefullyDegrade:s,readonly:p}=(0,Xt.useContext)(q),{resetOpenFlowState:c}=De(),[l,x]=(0,Xt.useState)(!1),d={data:n.map(g=>({flowId:g.id,flowState:J,lastStepId:null,userId:i,foreignUserId:i,stepStates:{},shouldTrigger:!1}))},h=g=>fetch(g,e).then(k=>{if(k.ok)return k.json();throw new Error("Failed to fetch user flow states")}).catch(k=>(console.log(`Error fetching ${g}: ${k}. Will gracefully degrade and hide Frigade`),s(!0),d)),P=o&&n&&i?`${t}userFlowStates?foreignUserId=${encodeURIComponent(i)}${r?`&foreignUserGroupId=${encodeURIComponent(r)}`:""}`:null,{data:b,isLoading:w,mutate:f,error:B}=p?(0,ni.default)(P,h):(0,ii.default)(P,h,{revalidateOnFocus:!0,revalidateIfStale:!0,keepPreviousData:!0,revalidateOnMount:!0,errorRetryInterval:1e4,errorRetryCount:3,onError:()=>d,onLoadingSlow:()=>d}),F=b==null?void 0:b.data;(0,Xt.useEffect)(()=>{!l&&!w&&F&&x(!0)},[F,l,w]);async function y(g){if(F&&!p){let k=F.find(N=>N.flowId===g);k&&k.flowState!==J&&(k.flowState=J),await f(Promise.resolve(be(b,{data:F})),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function O(g,k,N){if(F){let L=F.find(A=>A.flowId===g);L&&(L.stepStates[k]=N,L.flowState=Dt),await f(Promise.resolve(be(b,{data:F})),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function I(g,k,N){if(F){let L=F.find(A=>A.flowId===g);L&&(L.lastStepId=k,L.stepStates[k]=N,L.flowState=Dt),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}async function C(g){if(F){let k=F.find(N=>N.flowId===g);k&&k.flowState!==Ye&&(k.flowState=Ye,k.lastStepId=ya,Object.keys(k.stepStates).forEach(N=>{k.stepStates[N].actionType=Qe,k.stepStates[N].createdAt=new Date().toISOString()}),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1}),c(g))}}async function T(g,k){if(F){let N=F.find(L=>L.flowId===g);N&&N.stepStates[k]!==Qe&&(N.stepStates[k]=Qe),await f(be(b,{data:F}),{optimisticData:be(b,{data:F}),revalidate:!1,rollbackOnError:!1})}}return{userFlowStatesData:F,isLoadingUserFlowStateData:!l,mutateUserFlowState:f,optimisticallyMarkFlowCompleted:y,optimisticallyMarkFlowNotStarted:C,optimisticallyMarkStepCompleted:O,optimisticallyMarkStepNotStarted:T,optimisticallyMarkStepStarted:I,error:B}}function Jt(){let{config:e,apiUrl:t}=it(),{userFlowStatesData:o,mutateUserFlowState:i}=_e(),{failedFlowResponses:r,setFailedFlowResponses:n,flowResponses:s,setFlowResponses:p}=(0,Co.useContext)(q),[c,l]=(0,Co.useState)(new Set),[x,d]=(0,Co.useState)(new Set),h=Kt();function P(f){let B=JSON.stringify(f);if(c.has(B))return null;c.add(B),l(c),x.add(f),d(x);let F=s==null?void 0:s.find(y=>y.flowSlug===f.flowSlug&&y.stepId===f.stepId&&y.actionType===f.actionType&&y.createdAt===f.createdAt);return h(`${t}flowResponses`,{...e,method:"POST",body:B}).then(y=>{y.status!==200&&y.status!==201?(console.log("Failed to send flow response for step "+f.stepId+". Will retry again later."),n([...r,f])):F||p(O=>[...O??[],f])})}async function b(f){f.foreignUserId&&(f.actionType===Dt||f.actionType===Ye?await P(f):f.actionType===J?await P(f):f.actionType===Wo?await P(f):f.actionType===tt?await P(f):f.actionType===zo?await P(f):f.actionType===Qe&&await P(f))}function w(){let f=[];return o==null||o.forEach(B=>{if(B&&B.stepStates&&Object.keys(B.stepStates).length!==0)for(let F in B.stepStates){let y=B.stepStates[F];f.push({foreignUserId:B.foreignUserId,flowSlug:B.flowId,stepId:y.stepId,actionType:y.actionType,data:{},createdAt:new Date(y.createdAt),blocked:y.blocked,hidden:y.hidden})}}),[...f,...s]}return{addResponse:b,setFlowResponses:p,getFlowResponses:w}}var li=u(require("swr"));var Sa=/user.flow\(([^\)]+)\) == '?COMPLETED_FLOW'?/gm,si=e=>{let t=Sa.exec(e);if(t===null)return null;let o=null;return t.forEach((i,r)=>{let n=ba(i,"'","");n.startsWith("flow_")&&(o=n)}),o},ba=function(e,t,o){return e.replace(new RegExp(t,"g"),o)};function Sr(e){try{return JSON.parse(e)}catch(t){return console.error("Failed to parse Frigade config.yml to JSON",t),null}}var _o=(l=>(l.CHECKLIST="CHECKLIST",l.FORM="FORM",l.TOUR="TOUR",l.SUPPORT="SUPPORT",l.CUSTOM="CUSTOM",l.BANNER="BANNER",l.EMBEDDED_TIP="EMBEDDED_TIP",l.NPS_SURVEY="NPS_SURVEY",l.ANNOUNCEMENT="ANNOUNCEMENT",l))(_o||{});function Q(){let{config:e,apiUrl:t}=it(),{flows:o,setFlows:i,userId:r,publicApiKey:n,customVariables:s,setCustomVariables:p,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,setFlowResponses:x,setShouldGracefullyDegrade:d,readonly:h}=(0,Ze.useContext)(q),P={data:[]},{verifySDKInitiated:b}=qt(),{addResponse:w,getFlowResponses:f}=Jt(),B=m=>fetch(m,e).then(S=>S.ok?S.json():(console.log(`Error fetching ${m} (${S.status}): ${S.statusText}. .Will gracefully degrade and hide Frigade`),d(!0),P)).catch(S=>(console.log(`Error fetching ${m}: ${S}. Will gracefully degrade and hide Frigade`),d(!0),P)),{mutateUserFlowState:F,userFlowStatesData:y,isLoadingUserFlowStateData:O,optimisticallyMarkFlowCompleted:I,optimisticallyMarkFlowNotStarted:C,optimisticallyMarkStepCompleted:T,optimisticallyMarkStepNotStarted:g,optimisticallyMarkStepStarted:k}=_e(),{data:N,error:L,isLoading:A}=(0,li.default)(n?`${t}flows${h?"?readonly=true":""}`:null,B,{keepPreviousData:!0});(0,Ze.useEffect)(()=>{if(L){console.error(L);return}N&&N.data&&i(N.data)},[N,L]);function M(m){if(A)return null;let S=o.find(E=>E.slug===m);return!S&&o.length>0&&!O&&!A?(console.log(`Flow with id ${m} not found`),null):(S==null?void 0:S.active)===!1&&!h?null:S}function U(m){var _;if(!M(m))return[];let S=M(m).data;return S?(S=K(S),(((_=Sr(S))==null?void 0:_.data)??[]).map(Se=>{let ho=V(Se);return{handleSecondaryButtonClick:()=>{Se.skippable===!0&&se(m,Se.id,{skipped:!0})},...Se,complete:ce(m,Se.id)===tt||ho>=1,blocked:Me(m,Se.id),hidden:$(m,Se.id),handlePrimaryButtonClick:()=>{(!Se.completionCriteria&&(Se.autoMarkCompleted||Se.autoMarkCompleted===void 0)||Se.completionCriteria&&Se.autoMarkCompleted===!0)&&se(m,Se.id)},progress:ho}}).filter(Se=>Se.hidden!==!0)):[]}function K(m){return m.replaceAll(/\${(.*?)}/g,(S,E)=>s[E]===void 0?"":String(s[E]).replace(/[\u00A0-\u9999<>\&]/g,function(_){return"&#"+_.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 G(m){if(!M(m))return[];let S=M(m).data;return S?(S=K(S),JSON.parse(S)??{}):[]}function R(m,S){p(E=>({...E,[m]:S}))}function he(m){!O&&!A&&m&&JSON.stringify(s)!=JSON.stringify({...s,...m})&&Object.keys(m).forEach(S=>{R(S,m[S])})}let Ae=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:Wo,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await k(m,S,_),w(_))},[r,y]),Y=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:Qe,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await g(m,S),w(_))},[r,y]),se=(0,Ze.useCallback)(async(m,S,E)=>{if(!b())return;let _={foreignUserId:r,flowSlug:m,stepId:S,actionType:tt,data:E??{},createdAt:new Date,blocked:!1,hidden:!1};ae(_)&&(await T(m,S,_),w(_))},[r,y]),oe=(0,Ze.useCallback)(async(m,S)=>{if(!b()||me(m)===Ye)return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:Ye,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};await C(m),ae(E)&&w(E)},[r,y]),Le=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:Dt,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&w(E)},[r,y]),ye=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:J,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&(await I(m),w(E))},[r,y]),Ge=(0,Ze.useCallback)(async(m,S)=>{if(!b())return;let E={foreignUserId:r,flowSlug:m,stepId:"unknown",actionType:zo,data:S??{},createdAt:new Date,blocked:!1,hidden:!1};ae(E)&&(await I(m),w(E))},[r,y]);function ae(m){var S;if(!y&&m.actionType===Qe)return!1;if(y){let E=y.find(_=>_.flowId===m.flowSlug);if(m.actionType===Qe&&(!(E!=null&&E.stepStates[m.stepId])||E.stepStates[m.stepId].actionType===Qe)||E&&((S=E.stepStates[m.stepId])==null?void 0:S.actionType)===m.actionType||E&&E.flowState===J&&m.actionType===J)return!1}return!0}function ce(m,S){let E=W(m,S);return O?null:E?E.actionType:Qe}function Me(m,S){let E=W(m,S);return E?E.blocked:!1}function $(m,S){let E=W(m,S);return E?E.hidden:!1}function W(m,S){if(O)return null;let E=y==null?void 0:y.find(_=>_.flowId===m);return!E||!E.stepStates[S]?null:E.stepStates[S]??null}function j(m){var E;if(O||!y)return null;if(me(m)===Ye)return U(m)[0]??null;let S=(E=y.find(_=>_.flowId===m))==null?void 0:E.lastStepId;return S?U(m).find(_=>_.id===S):null}function ee(m){let S=j(m);if(!S)return 0;let E=U(m).findIndex(_=>_.id===S.id)??0;return ce(m,S.id)===tt&&E<U(m).length-1?E+1:E}function V(m){if(!m.completionCriteria)return;let S=si(m.completionCriteria);if(S===null)return;let E=Ke(S),_=qe(S);return _===0?void 0:E/_}function me(m){let S=y==null?void 0:y.find(E=>E.flowId===m);return S?S.flowState:null}function Ke(m){let S=U(m);return S.length===0?0:S.filter(_=>ce(m,_.id)===tt).length}function qe(m){return U(m).length}function jt(m){let S=o.find(E=>E.slug===m);return S?Sr(S.data):null}function Nt(m){if(h)return!1;if(O)return!0;if(m!=null&&m.targetingLogic&&y){let S=y.find(E=>E.flowId===m.slug);if(S)return S.shouldTrigger===!1}return!!(m!=null&&m.targetingLogic&&r&&r.startsWith("guest_"))}function Vt(m){return!Nt(M(m))}function Ot(){r&&F()}return{getFlow:M,getFlowData:jt,isLoading:O||A,getStepStatus:ce,getFlowSteps:U,getCurrentStepIndex:ee,markStepStarted:Ae,markStepCompleted:se,markFlowNotStarted:oe,markFlowStarted:Le,markFlowCompleted:ye,markFlowAborted:Ge,markStepNotStarted:Y,getFlowStatus:me,getNumberOfStepsCompleted:Ke,getNumberOfSteps:qe,targetingLogicShouldHideFlow:Nt,setCustomVariable:R,updateCustomVariables:he,customVariables:s,getStepOptionalProgress:V,getFlowMetadata:G,isStepBlocked:Me,isStepHidden:$,hasActiveFullPageFlow:c,setHasActiveFullPageFlow:l,isFlowAvailableToUser:Vt,refresh:Ot}}var Tt=require("react");var Qt="guest_";function Zt(){let{userId:e,organizationId:t,setUserId:o,setUserProperties:i,shouldGracefullyDegrade:r}=(0,Tt.useContext)(q),{config:n,apiUrl:s}=it(),{mutateUserFlowState:p}=_e(),c=Kt(),{verifySDKInitiated:l}=qt();function x(b){return`frigade-user-registered-${b}`}(0,Tt.useEffect)(()=>{if(e&&!t){if(e.startsWith(Qt))return;let b=x(e);localStorage.getItem(b)||(c(`${s}users`,{...n,method:"POST",body:JSON.stringify({foreignId:e})}),localStorage.setItem(b,"true"))}},[e,r,t]);let d=(0,Tt.useCallback)(async b=>{if(!l())return;let w={foreignId:e,properties:b};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(w)}),i(f=>({...f,...b})),p()},[e,n,r,p]),h=(0,Tt.useCallback)(async(b,w)=>{if(!l())return;let B={foreignId:e,events:[{event:b,properties:w}]};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),p()},[e,n,p]),P=(0,Tt.useCallback)(async(b,w)=>{if(l())if(w){let f=x(b);localStorage.setItem(f,"true"),o(b);let B={foreignId:b,properties:w};await c(`${s}users`,{...n,method:"POST",body:JSON.stringify(B)}),i(F=>({...F,...w})),p()}else o(b)},[n,r,p]);return{userId:e,setUserId:o,setUserIdWithProperties:P,addPropertiesToUser:d,trackEventForUser:h}}var mn=require("uuid");var ve=u(require("react"));var ke=u(require("react")),bo=u(require("styled-components"));var pi=u(require("react")),di=u(require("styled-components"));var ai="fr-",yo="cfr-";function a(e,t){let o=`${ai}${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+" "+yo+e}return o}function v(e){if(!e.className||e.className.indexOf(yo)!==-1)return"";let o=e.className.replace(/\s+/g," ").split(" ");return o.length==1&&o[0].startsWith(ai)?"":`:not(${o.map(i=>`.${i}`).join(", ")})`}function Ho(e){return e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g,"$1-$2").toLowerCase()}function He(e){return e!=null&&e.styleOverrides?Object.keys(e.styleOverrides).map(t=>`${Ho(t)}: ${e.styleOverrides[t]};`).join(" "):""}function Ie(...e){return e.filter(Boolean).join(" ")}function So(e){return e.charAt(0).toUpperCase()+e.slice(1)}var wa=di.default.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
5
5
|
position: fixed;
|