@mrrocket/sdk 0.17.0 → 0.18.0

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/browser/mrrocket-flows.js +9 -2
  3. package/dist/browser/mrrocket-messenger.js +3 -3
  4. package/dist/browser/mrrocket.js +1 -1
  5. package/dist/browser.d.ts +1 -1
  6. package/dist/browser.js +2 -1
  7. package/dist/browser.js.map +1 -1
  8. package/dist/client.d.ts +23 -3
  9. package/dist/client.js +15 -1
  10. package/dist/client.js.map +1 -1
  11. package/dist/context.d.ts +3 -1
  12. package/dist/context.js.map +1 -1
  13. package/dist/core.d.ts +3 -1
  14. package/dist/core.js +1 -1
  15. package/dist/core.js.map +1 -1
  16. package/dist/finish-web.d.ts +18 -0
  17. package/dist/finish-web.js +139 -0
  18. package/dist/finish-web.js.map +1 -0
  19. package/dist/flows-ui.d.ts +1 -10
  20. package/dist/flows-ui.js +105 -6
  21. package/dist/flows-ui.js.map +1 -1
  22. package/dist/flows-web.d.ts +8 -1
  23. package/dist/flows-web.js +8 -0
  24. package/dist/flows-web.js.map +1 -1
  25. package/dist/flows.d.ts +159 -7
  26. package/dist/flows.js +240 -28
  27. package/dist/flows.js.map +1 -1
  28. package/dist/icons.d.ts +24 -0
  29. package/dist/icons.js +61 -0
  30. package/dist/icons.js.map +1 -0
  31. package/dist/index.d.ts +4 -2
  32. package/dist/index.js +5 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/messenger-ui.js +78 -53
  35. package/dist/messenger-ui.js.map +1 -1
  36. package/dist/onboarding-state.d.ts +23 -0
  37. package/dist/onboarding-state.js +43 -0
  38. package/dist/onboarding-state.js.map +1 -0
  39. package/dist/react-native/index.d.cts +177 -15
  40. package/dist/react-native/index.d.ts +177 -15
  41. package/dist/react-native/index.js +776 -270
  42. package/dist/react-native/index.js.map +1 -1
  43. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- (function(){'use strict';var wn=Object.defineProperty;var hn=(e,n,r)=>n in e?wn(e,n,{enumerable:true,configurable:true,writable:true,value:r}):e[n]=r;var _e=(e,n,r)=>hn(e,typeof n!="symbol"?n+"":n,r);var It=e=>{let n=0;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);s<128?n+=1:s<2048?n+=2:s>=55296&&s<=56319&&r+1<e.length&&(e.charCodeAt(r+1)&64512)===56320?(n+=4,r++):n+=3;}return n},kn=(e,n,r,s)=>{let c=`{"key":${JSON.stringify(e)},${s?`"userHash":${JSON.stringify(s)},`:""}"sdk":${JSON.stringify(r)},"events":[`,l=It(c)+2,g=[],v=[],S=[],b=l,O=()=>{v.length&&g.push({body:`${c}${v.join(",")}]}`,events:S}),v=[],S=[],b=l;};for(let w of n){let C=JSON.stringify(w),_=It(C)+1;l+_>6e4||((v.length===100||b+_>6e4)&&O(),v.push(C),S.push(w),b+=_);}return O(),g},Ft=(e,n,r,s)=>kn(e,n,r,s).map(c=>c.body);var Fe=class{constructor(n=1e3,r=30,s=3){_e(this,"windowMs",n);_e(this,"radius",r);_e(this,"count",s);_e(this,"clicks",[]);_e(this,"fired",false);}push(n,r,s){let c=this.clicks.filter(l=>s-l.t<=this.windowMs&&Math.hypot(l.x-n,l.y-r)<=this.radius);return c.length!==this.clicks.length&&(this.fired=false),this.clicks=[...c,{x:n,y:r,t:s}],this.clicks.length>=this.count&&!this.fired?(this.fired=true,true):false}};var yn='a[href],button,input,select,textarea,label,summary,[role="button"],[role="link"],[role="tab"],[role="menuitem"],[role="checkbox"],[role="switch"],[onclick],[data-ck-goal]',bn="[data-ck-mask]",xn="[data-ck-block]",$t=/\d{4,}|^[a-z]{1,3}-[a-z0-9]{5,}$|^_|__|css-|^sc-|^jsx-/i,Cn=e=>{let n=e.tagName.toLowerCase();if(e.id&&!$t.test(e.id)&&e.id.length<=40)return `${n}#${e.id}`;let r=typeof e.className=="string"?e.className.split(/\s+/).filter(l=>l&&!$t.test(l)&&l.length<=30&&!l.includes(":")):[],s=r.length?`${n}.${r.slice(0,2).join(".")}`:n,c=e.parentElement?[...e.parentElement.children].filter(l=>l.tagName===e.tagName):[];return c.length>1?`${s}:nth-of-type(${c.indexOf(e)+1})`:s},Rn=e=>{let n=[],r=e;for(;r&&n.length<3&&r.tagName&&r.tagName!=="BODY"&&r.tagName!=="HTML";){let s=Cn(r);if(n.unshift(s),s.includes("#"))break;r=r.parentElement;}return n.join(" > ").slice(0,160)},He=e=>(e!=null?e:"").replace(/\s+/g," ").trim().slice(0,40),vn=e=>{var r,s,c,l,g;if(e.closest(`${bn},${xn}`))return "";let n=e.tagName.toLowerCase();if(n==="input"){let v=((r=e.getAttribute("type"))!=null?r:"text").toLowerCase();return He(v==="submit"||v==="button"?(s=e.getAttribute("aria-label"))!=null?s:e.value:e.getAttribute("aria-label"))}return He(n==="select"||n==="textarea"?e.getAttribute("aria-label"):(g=(l=(c=e.getAttribute("aria-label"))!=null?c:e.getAttribute("title"))!=null?l:e.innerText)!=null?g:e.textContent)},Pt=e=>{var l,g;let n=e.target instanceof Element?e.target:null;if(!n)return null;let r=n.closest(yn),s=r!=null?r:n,c=document.documentElement;return {x:Math.round(e.clientX),y:Math.round(e.clientY+window.scrollY),vw:window.innerWidth,vh:window.innerHeight,docH:Math.max(c.scrollHeight,(g=(l=document.body)==null?void 0:l.scrollHeight)!=null?g:0),selector:Rn(s),label:r?vn(r):"",interactive:!!r}},Mt=()=>{var r,s;let e=document.documentElement,n=Math.max(e.scrollHeight,(s=(r=document.body)==null?void 0:r.scrollHeight)!=null?s:0);return n?Math.min(100,Math.round((window.scrollY+window.innerHeight)/n*100)):0};var je="0.17.0",En=(e,n)=>{let r=n.trim().toLowerCase();for(let[s,c]of Object.entries(e))if(s.toLowerCase()===r)return c},_n=(e,n)=>{let r=e.trim().toLowerCase(),s=n.trim().toLowerCase();return s.startsWith("@")?r.endsWith(s):r===s},Sn=(e,n)=>{if(e.op==="in cohort")return false;let r=En(n,e.property),s=r==null?"":String(r);if(e.op==="\u2265"){let l=Number(s),g=Number(e.values[0]);return s!==""&&Number.isFinite(l)&&Number.isFinite(g)&&l>=g}let c=s!==""&&e.values.some(l=>_n(s,l));return e.op==="is"||e.op==="in"?c:!c},On=(e,n,r={})=>{var v;if(!e.on)return false;let s={id:n,...r},c=e.sets.length?e.sets.find(S=>S.conditions.every(b=>Sn(b,s))):{rollout:100};if(!c||At(`${e.key}:rollout:${n}`)*100>=c.rollout)return false;if(!((v=e.variants)!=null&&v.length))return true;let l=At(`${e.key}:variant:${n}`)*100,g=0;for(let S of e.variants)if(g+=S.split,l<g)return S.key;return e.variants[e.variants.length-1].key},it=(e,n,r,s={})=>{var l;let c=(l=n==null?void 0:n.flags)==null?void 0:l.find(g=>g.key===e);return c?On(c,r,s):false},In=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],Nt="ck_preview",Lt="ck_embed",ke="ck_id",Se="ck_sid";var Fn=e=>{var r;let n={};for(let s of In){let c=(r=e(s))==null?void 0:r.trim();c&&(n[s]=c.slice(0,150));}return n},Tt=e=>{let n=new URLSearchParams(e);return Fn(r=>n.get(r))};var $n=e=>{let n=2166136261;for(let r=0;r<e.length;r++)n^=e.charCodeAt(r),n=Math.imul(n,16777619);return (n>>>0)/4294967296},At=e=>{let n=2166136261;for(let r=0;r<e.length;r++)n^=e.charCodeAt(r),n=Math.imul(n,16777619);return n^=n>>>16,n=Math.imul(n,2246822507),n^=n>>>13,n=Math.imul(n,3266489909),n^=n>>>16,(n>>>0)/4294967296},Pn=(e,n)=>{var l,g,v,S;let r=(g=(l=e.variants[0])==null?void 0:l.id)!=null?g:"control";if(e.winner)return e.winner;if(e.status!=="running")return r;let s=$n(`${e.key}:${n}`),c=0;for(let b of e.variants)if(c+=b.weight,s<c)return b.id;return (S=(v=e.variants[e.variants.length-1])==null?void 0:v.id)!=null?S:r},Ut=e=>{let n=Array.isArray(e)?e[0]:e;if(!n)return {};let r={};for(let s of n.split(",")){let[c,l]=s.split(":");c&&l&&(r[c.trim()]=l.trim());}return r};var Pe=(e,n,r,s)=>{if(s[e])return s[e];let c=n==null?void 0:n.experiments.find(l=>l.key===e);return c?Pn(c,r):"control"},Ht=(e,n,r)=>{var c,l,g,v,S,b;let s={...(c=e==null?void 0:e.texts)!=null?c:{}};for(let O of (l=e==null?void 0:e.experiments)!=null?l:[]){let w=Pe(O.key,e,n,r);w!==((v=(g=O.variants[0])==null?void 0:g.id)!=null?v:"control")&&Object.assign(s,(b=(S=O.variants.find(C=>C.id===w))==null?void 0:S.changes)!=null?b:{});}return s},$e="ck_x",De=e=>e.replace(/\/+$/,"")||"/",Dt=(e,n,r,s={})=>{var v,S;if(!e)return null;let c;try{c=new URL(n);}catch(b){return null}if(c.searchParams.has($e))return null;let l=De(c.pathname),g=(b,O)=>{let w;try{w=new URL(b,c);}catch(C){return}if(!(!/^https?:$/.test(w.protocol)||w.origin===c.origin&&De(w.pathname)===l))return c.searchParams.forEach((C,_)=>{w.searchParams.has(_)||w.searchParams.set(_,C);}),O&&w.searchParams.set($e,O),w.hash||(w.hash=c.hash),w.href};for(let b of (v=e.redirects)!=null?v:[]){let O=b.from&&De(b.from)===l?g(b.to):void 0;if(O)return {to:O}}for(let b of e.experiments){if(!b.path||De(b.path)!==l)continue;let O=b.status==="running"&&!b.winner;if(O&&r===null&&!s[b.key])return null;let w=Pe(b.key,e,r!=null?r:"",s),C=(S=b.variants.find(F=>F.id===w))==null?void 0:S.url,_=C?g(C,O?`${b.key}:${w}`:void 0):void 0;return O?{to:_,experiment:b.key,variant:w}:_?{to:_}:null}return null},jt=(e,n)=>{let[r,s]=(n!=null?n:"").split(":"),c=e==null?void 0:e.experiments.find(l=>l.key===r);return c&&c.variants.some(l=>l.id===s)?{experiment:r,variant:s}:null};var at=()=>typeof crypto!="undefined"&&"randomUUID"in crypto?crypto.randomUUID():`ck_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;var Mn="401: sign the user id on your server with userHash(id) from @mrrocket/sdk/next/server and pass identify(id, props, { hash }).",Oe=(e,n=r=>console.warn(r))=>{let r=globalThis;e!==401||r.__mrrocketUnsigned||(r.__mrrocketUnsigned=true,n(`[MRRocket] ${Mn}`));},Wt=(e,n,r,s=c=>console.warn(c))=>{let c=typeof r=="string"?r.trim().toLowerCase():"";return /^[0-9a-f]{64}$/.test(c)?{id:n,hash:c}:(c&&s("[MRRocket] identify: that hash is no userHash(id); not sent."),e&&e.id===n?e:null)},Kt=(e,n)=>e&&n&&e.id===n?e.hash:void 0,Vt=(e,n)=>e&&n.some(r=>r===e.id)&&n.every(r=>!r||r===e.id)?e.hash:void 0;var An=8*1024,Nn=20,Ln=20,Tn=2e3,Me=(e,n)=>e.length>n?`${e.slice(0,n-1)}\u2026`:e,Un=e=>{var n;if(e instanceof Error)return {type:e.name||"Error",message:Me(e.message||String(e),1e3),stack:e.stack?Me(e.stack,An):void 0};if(typeof e=="string")return {type:"Error",message:Me(e,1e3)};try{return {type:"Error",message:Me((n=JSON.stringify(e))!=null?n:String(e),1e3)}}catch(r){return {type:"Error",message:String(e)}}},Bt=e=>{let n=[],r=[],s=new Set,c=0,l=`${e.host}/api/sdk/errors`,g=(C=false)=>{for(;n.length;){let _=n.splice(0,4),F=e.context(),H=F.distinctId&&F.userHash?{id:F.distinctId,hash:F.userHash}:null,A=Vt(H,_.map(M=>M.distinctId)),U=JSON.stringify({key:e.apiKey,...A?{userHash:A}:{},errors:_});C&&typeof navigator!="undefined"&&"sendBeacon"in navigator&&navigator.sendBeacon(l,U)||fetch(l,{method:"POST",headers:{"content-type":"application/json"},body:U,keepalive:true}).then(M=>{M.status===401?Oe(401):!M.ok&&M.status!==429&&e.warn(`Error reports were rejected with ${M.status}. Check the public key and NEXT_PUBLIC_MRROCKET_HOST.`);}).catch(()=>{});}},v=(C,_="manual")=>{let F=e.context();if(!F.send||c>=Nn)return;let H=Un(C);if(/\/api\/sdk\/errors/.test(H.message))return;let A=`${H.type}:${H.message}`;s.has(A)||(s.add(A),c++,n.push({...H,mechanism:_,handled:_==="manual",url:window.location.href,ts:Date.now(),crumbs:r.slice(),...e.release?{release:e.release}:{},...F.distinctId?{distinctId:F.distinctId}:{},...F.sessionId?{sessionId:F.sessionId}:{}}));},S=C=>{var _;!C.error&&(!C.message||C.message==="Script error.")||v((_=C.error)!=null?_:new Error(C.message),"onerror");},b=C=>{var _;return v((_=C.reason)!=null?_:new Error("Unhandled promise rejection"),"onunhandledrejection")},O=()=>g(true);window.addEventListener("error",S),window.addEventListener("unhandledrejection",b),window.addEventListener("pagehide",O);let w=window.setInterval(()=>g(),Tn);return {capture:v,crumb:(C,_)=>{r.push({ts:Date.now(),type:C,message:Me(_,120)}),r.length>Ln&&r.shift();},stop:()=>{window.removeEventListener("error",S),window.removeEventListener("unhandledrejection",b),window.removeEventListener("pagehide",O),window.clearInterval(w),g(true);}}};var Ae="$cancel_flow",se="$onboarding",ct="$inapp";var Hn={version:0,question:"",reasons:[],offers:{},confirm:{title:"Cancel your subscription?",body:"You keep access until the end of the billing period.",button:"Cancel subscription"},offersFor:"business"},Dn="Something went wrong. Please try again.",qt="mrrocket:onboarding",ye=e=>e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,""),Yt=new Set(["signed_up","signup","sign_up","registered","account_created","user_signed_up"]),lt=(e,n)=>{let r=ye(e),s=ye(n);return !r||!s?false:r===s||Yt.has(r)&&Yt.has(s)},jn=e=>/^(first (launch|visit|open|session|login|sign ?in|app open)|app (opened|launched)|on load|every visit|always)?$/i.test(e.trim());var Wn=e=>e.trim().startsWith("/"),dt=e=>ye(e)==="from_a_checklist";var Kn=()=>`cf_${Math.random().toString(36).slice(2,10)}${Date.now().toString(36)}`;var Xt=e=>{let n=(e!=null?e:"").trim();return /^https?:\/\//i.test(n)||/^\/(?!\/)/.test(n)?n:void 0},ie=e=>{var n;return (n=e.nodes)!=null?n:e.steps},Vn=e=>Math.max(0,e.amount)*(e.unit==="hours"?36e5:864e5),zt=(e,n)=>{let r=e.trim(),s=(n.split(/[?#]/)[0]||"/").replace(/\/+$/,"")||"/";if(!r)return false;if(r.endsWith("*")){let c=r.slice(0,-1).replace(/\/+$/,"");return !c||s===c||s.startsWith(`${c}/`)}return s===(r.replace(/\/+$/,"")||"/")},Ke=e=>e.flatMap(n=>n.kind==="condition"?[...Ke(n.yes),...Ke(n.no)]:n.kind==="wait"?[]:[n]),Bn=(e,n=Date.now())=>e==null||e===""?NaN:Math.floor((n-new Date(e).getTime())/2630016e3),We=e=>e==null?void 0:e.trim().toLowerCase(),qn=({when:e={}},n)=>(e.answer==null||We(e.answer)===We(n.answer))&&(e.plan==null||[e.plan].flat().some(r=>We(r)===We(n.plan)))&&!(n.months>=e.tenureUnder)&&!(n.months<e.tenureOver)&&(e.tenureUnder==null||n.months>=0)&&(e.tenureOver==null||n.months>=0),Jt=e=>{let n=null,r=null,s=null,c=[],l=false,g=null,v,S=null,b=new Map,O=new Set,w=new Set,C=new Set,_=e.auto!==false,F=new Set,H=()=>{var t,i;return (i=(t=e.now)==null?void 0:t.call(e))!=null?i:Date.now()},A=null,U=null,ne=()=>{var t;return (t=n==null?void 0:n.onboarding)!=null?t:[]},M=t=>t?ne().find(i=>i.id===t):void 0,K=t=>{let i=b.get(t);return i||b.set(t,i={done:new Set,dismissed:false,answers:new Map,at:new Map,reached:new Map}),i},X=false,fe=t=>{e.track(se,t),X=true;},pe=(t,i)=>{t.done.add(i),t.at.set(i,H());},Te=t=>{var i,a,p;if((i=t.page)!=null&&i.trim()){let m=(a=e.path)==null?void 0:a.call(e);return m===void 0?false:zt(t.page,m)}if((p=t.event)!=null&&p.trim()){if(!l)return;for(let m of F)if(lt(t.event,m))return true;return false}return false},be=(t,i,a,p,m=0,R)=>{var f,h;for(let k=0;k<i.length;k++){let x=i[k];if(x.kind==="wait"){if(a.done.has(x.id)){R=(f=a.at.get(x.id))!=null?f:R;continue}let I=a.reached.get(x.id);if(I===void 0){if(!p)return {at:"pending"};I=R!=null?R:H(),a.reached.set(x.id,I),fe({flow:t.id,step:x.id,kind:"wait",action:"shown"});}let j=I+Vn(x);if(H()<j)return {at:"wait",until:j};if(!p)return {at:"pending"};pe(a,x.id),fe({flow:t.id,step:x.id,kind:"wait",action:"completed"}),R=j;continue}if(x.kind==="condition"){let I=a.answers.get(x.id);if(I===void 0){if(!p)return {at:"pending"};if(I=Te(x),I===void 0)return {at:"pending"};a.answers.set(x.id,I),fe({flow:t.id,step:x.id,kind:"condition",action:"answered",answer:I?"yes":"no"});}return be(t,I?x.yes:x.no,a,p,m,R)}if(!a.done.has(x.id))return {at:"step",step:x,line:i,index:k,before:m};R=(h=a.at.get(x.id))!=null?h:R,m++;}return {at:"end"}},ae=t=>{let i=b.get(t.id);return !!i&&(i.dismissed||be(t,ie(t),i,false).at==="end")},V=t=>`${qt}:${t!=null?t:"visitor"}`,ge=t=>`${qt}:events:${t!=null?t:"visitor"}`,Y=()=>{var a;X=false;let t=(a=e.storage)==null?void 0:a.call(e);if(!t)return;let i={};for(let[p,m]of b)i[p]={done:[...m.done],...m.dismissed?{dismissed:true}:{},...m.answers.size?{answers:Object.fromEntries([...m.answers].map(([R,f])=>[R,f?"yes":"no"]))}:{},...m.at.size?{at:Object.fromEntries(m.at)}:{},...m.reached.size?{reached:Object.fromEntries(m.reached)}:{}};try{t.set(V(e.personId()),JSON.stringify(i)),F.size&&t.set(ge(e.personId()),JSON.stringify([...F].slice(-200)));}catch(p){}},P=t=>{var i,a,p,m;for(let[R,f]of Object.entries(t!=null?t:{})){let h=K(R);for(let k of (i=f.done)!=null?i:[])h.done.add(k);f.dismissed&&(h.dismissed=true);for(let[k,x]of Object.entries((a=f.answers)!=null?a:{}))h.answers.has(k)||h.answers.set(k,x==="yes");for(let[k,x]of Object.entries((p=f.at)!=null?p:{}))typeof x=="number"&&!h.at.has(k)&&h.at.set(k,x);for(let[k,x]of Object.entries((m=f.reached)!=null?m:{}))typeof x=="number"&&(!h.reached.has(k)||x<h.reached.get(k))&&h.reached.set(k,x);}},re=t=>{var a;A&&clearTimeout(A),A=null;let i=t-H();i>0&&i<=864e5&&(A=setTimeout(()=>(A=null,N()),i+50),(a=A.unref)==null||a.call(A));},me=false,oe=()=>{me=false;let t=M(s);if(!t)return null;let i=K(t.id);if(i.dismissed)return null;let a=be(t,ie(t),i,true);if(X&&Y(),a.at==="wait"&&re(a.until),me=a.at==="wait"||a.at==="pending",a.at!=="step")return null;let{step:p,line:m,index:R}=a,f=I=>!!I&&I.kind!=="wait"&&I.kind!=="condition";if(p.kind==="checklist"){let I=R;for(;I>0&&f(m[I-1])&&m[I-1].kind==="checklist";)I--;let j=R;for(;j+1<m.length&&f(m[j+1])&&m[j+1].kind==="checklist";)j++;let ce=m.slice(I,j+1).filter(f);for(let G of ce)!i.done.has(G.id)&&!w.has(`s:${G.id}`)&&(w.add(`s:${G.id}`),e.track(se,{flow:t.id,step:G.id,kind:"checklist",action:"shown"}));return {type:"checklist",flow:t,items:ce.map(G=>{let Re=G.startsTour&&G.startsTour!==t.id?M(G.startsTour):void 0;return {step:G,done:i.done.has(G.id),...Re&&ie(Re).length?{tour:Re}:{}}})}}w.has(`s:${p.id}`)||(w.add(`s:${p.id}`),e.track(se,{flow:t.id,step:p.id,kind:p.kind,action:"shown"}));let h=m.slice(R+1),k=h.findIndex(I=>I.kind==="condition"),x=(k<0?h:h.slice(0,k)).filter(f).length;return {type:"step",flow:t,step:p,index:a.before,total:a.before+1+x,last:!x&&k<0}},we=()=>{var a,p,m,R;if(r){let f=r,h=(a=f.flow.followUps)==null?void 0:a[f.reason],k=h?1:0,x=f.plain?1:3+k+((p=f.flow.second)!=null&&p[f.reason]?1:0);return {type:"cancel",screen:f.screen,flow:f.flow,reason:f.reason,...f.screen==="followup"&&h?{followUp:h,answer:f.answer}:{},offer:f.screen==="offer"?f.offer:void 0,...f.screen==="offer"?{round:f.round}:{},price:f.options.price,busy:f.busy,error:f.error,step:f.screen==="survey"?1:f.screen==="followup"?2:f.screen==="offer"?1+k+f.round:x,steps:x}}let t=oe();if(t)return t;if(s&&!me){let f=U,h=s;U=null,s=null;let k=f?M(f.flow):void 0;if(f&&k){let x=Ke(ie(k)).find(ce=>ce.id===f.step),I=K(k.id);x&&!x.event&&!((m=b.get(h))!=null&&m.dismissed)&&!I.done.has(x.id)&&(pe(I,x.id),fe({flow:k.id,step:x.id,kind:"checklist",action:"completed"})),s=k.id;let j=oe();if(j)return j;me||(s=null);}else if(l){let x=(R=M(h))==null?void 0:R.trigger;Promise.resolve().then(()=>Ce(x));}}let i=c.find(f=>!O.has(f.id));return i?{type:"message",message:i}:null},N=()=>{let t=we();(t==null?void 0:t.type)==="message"&&!w.has(`m:${t.message.id}`)&&(w.add(`m:${t.message.id}`),e.track(ct,{message:t.message.id,journey:t.message.journey,action:"shown"}));for(let i of [...C])try{i();}catch(a){}},te=t=>s===t.id?true:s&&M(s)&&!ae(M(s))?false:(s=t.id,e.track(se,{flow:t.id,action:"started"}),N(),true),xe=t=>t.audience!=="signed_in"||!!e.personId(),Ce=t=>{var m,R;if(!_||s||!l||!e.personId()&&!((m=e.storage)!=null&&m.call(e)))return;let i=(R=e.path)==null?void 0:R.call(e),a=t&&!dt(t)?ye(t):"",p=ne().find(f=>(Wn(f.trigger)?i!==void 0&&zt(f.trigger,i):jn(f.trigger)||!!a&&ye(f.trigger)===a)&&xe(f)&&ie(f).length&&!ae(f));p&&te(p);},B=()=>{let t=e.personId();S!==null&&S!==t&&(b.clear(),F.clear(),O.clear(),s=null,U=null,v=void 0),S=t;let i=(async()=>{var m,R,f;let a=(m=e.storage)==null?void 0:m.call(e);if(a)try{let h=await a.get(V(t));h&&P(JSON.parse(h));let k=await a.get(ge(t));if(k)for(let x of JSON.parse(k))typeof x=="string"&&F.add(x);}catch(h){}let p=ne().length>0||!!(n!=null&&n.messages);if(t&&p&&v!==t){v=t;let h=await e.fetchInApp(t).catch(()=>null);if(h&&e.personId()===t){P(h.onboarding);for(let k of (R=h.events)!=null?R:[])typeof k=="string"&&F.add(ye(k));c=((f=h.messages)!=null?f:[]).filter(k=>k&&k.id&&k.title);}}t||(c=[]),l=true,Ce(),N();})();return g=i.finally(()=>{g===i&&(g=null);}),g},D=t=>t.round>1?{round:2}:t.rule>=0?{rule:t.rule}:{},q=t=>{var p,m,R,f;let i={answer:t.answer,plan:t.options.plan,months:Bn(t.options.customerSince,(p=e.now)==null?void 0:p.call(e))},a=(R=(m=t.flow.rules)==null?void 0:m[t.reason])!=null?R:[];t.rule=a.findIndex(h=>qn(h,i)),t.offer=t.rule<0?t.flow.offers[t.reason]:(f=a[t.rule].offer)!=null?f:void 0,t.round=1,t.screen=t.offer?"offer":"confirm";},Z=(t,i,a)=>{var m;let p=t.screen==="offer"?t.offer:void 0;return {outcome:i,run:t.run,...t.reason?{reason:t.reason,reasonLabel:(m=t.flow.reasons.find(R=>R.id===t.reason))==null?void 0:m.label}:{},...t.answer?{answer:t.answer}:{},...i==="saved"&&p?{offer:p}:{},...a!=null&&a.trim()?{comment:a.trim().slice(0,500)}:{}}},z=(t,i)=>{var a;e.track(Ae,{action:"finished",run:t.run,version:t.flow.version,outcome:i.outcome,customer:(a=t.options.customer)!=null?a:"consumer",...i.reason?{reason:i.reason}:{},...i.answer?{answer:i.answer}:{},...i.offer?{offer:i.offer.kind,...D(t)}:{},...i.comment?{comment:i.comment}:{}}),r===t&&(r=null),t.resolve(i),N();},he=(t,i,a)=>{if(t.busy)return;let p=Z(t,i,a),m=i==="saved"?t.options.onSave:t.options.onCancel;t.busy=true,t.error=void 0,N(),Promise.resolve().then(()=>m==null?void 0:m(p)).then(()=>z(t,p),()=>{t.busy=false,t.error=Dn,N();});};return {setConfig:t=>{n=t,s&&!M(s)&&(s=null),N();},refresh:B,onEvent:t=>{var f;if(t==="$pageview"&&Ce(),!t||t.startsWith("$"))return;let i=ye(t),a=!!i&&!F.has(i);a&&F.add(i);let p=M(s),m=false;if(p){let h=K(p.id);for(let k of Ke(ie(p)))k.kind==="checklist"&&k.event&&!h.done.has(k.id)&&lt(k.event,t)&&(pe(h,k.id),m=true,e.track(se,{flow:p.id,step:k.id,kind:k.kind,action:"completed"}));}if(m||a&&p?(Y(),N()):a&&Y(),!_||!e.personId()&&!((f=e.storage)!=null&&f.call(e)))return;let R=ne().find(h=>ie(h).length&&!dt(h.trigger)&&lt(h.trigger,t)&&xe(h)&&!ae(h));R&&te(R);},openCancelFlow:(t={})=>{var f,h;if(r)return r.promise;let i=(f=n==null?void 0:n.cancelFlow)!=null?f:Hn,a=t.customer!=="business"||i.reasons.length<2,p=()=>{},m=new Promise(k=>p=k),R={flow:i,options:t,plain:a,screen:a?"confirm":"survey",round:1,run:Kn(),busy:false,resolve:p,promise:m};return r=R,e.track(Ae,{action:"shown",run:R.run,version:i.version,customer:(h=t.customer)!=null?h:"consumer",plain:a}),N(),m},startOnboarding:t=>{let i=t?M(t):ne().find(p=>ie(p).length&&!dt(p.trigger)&&!ae(p));if(!i||!ie(i).length)return false;let a=K(i.id);return a.dismissed=false,te(i)},view:we,subscribe:t=>(C.add(t),()=>C.delete(t)),cancel:{pick:t=>{!r||r.busy||r.screen!=="survey"||!r.flow.reasons.some(i=>i.id===t)||(r.reason!==t&&(r.answer=void 0),r.reason=t,r.error=void 0,N());},answer:t=>{let i=r;if(!i||i.busy||i.screen!=="followup")return;let a=t.slice(0,500);i.answer=a.trim()?a:void 0,N();},next:()=>{var i,a;let t=r;if(!(!t||!t.reason)){if(t.screen==="survey")e.track(Ae,{action:"answered",run:t.run,version:t.flow.version,reason:t.reason}),(i=t.flow.followUps)!=null&&i[t.reason]?t.screen="followup":q(t);else if(t.screen==="followup")t.answer=(a=t.answer)==null?void 0:a.trim(),q(t);else return;N();}},accept:t=>{var a;let i=r;!i||i.screen!=="offer"||!i.reason||(i.busy||e.track(Ae,{action:"offer",run:i.run,version:i.flow.version,reason:i.reason,offer:(a=i.offer)==null?void 0:a.kind,...D(i),outcome:"accepted"}),he(i,"saved",t));},decline:()=>{var a,p;let t=r;if(!t||t.screen!=="offer"||t.busy)return;e.track(Ae,{action:"offer",run:t.run,version:t.flow.version,reason:t.reason,offer:(a=t.offer)==null?void 0:a.kind,...D(t),outcome:"declined"});let i=t.round===1&&t.reason?(p=t.flow.second)==null?void 0:p[t.reason]:void 0;i?(t.offer=i,t.rule=void 0,t.round=2):t.screen="confirm",t.error=void 0,N();},confirm:t=>{let i=r;!i||i.screen!=="confirm"||he(i,"cancelled",t);},close:()=>{var a,p;let t=r;if(!t||t.busy)return;let i=Z(t,"kept");(p=(a=t.options).onClose)==null||p.call(a,i),z(t,i);}},onboarding:{next:()=>{var a;let t=oe();if((t==null?void 0:t.type)!=="step")return;pe(K(t.flow.id),t.step.id),e.track(se,{flow:t.flow.id,step:t.step.id,kind:t.step.kind,action:"completed"}),Y(),N();let i=t.step.kind==="modal"?Xt(t.step.url):void 0;i&&((a=e.openUrl)==null||a.call(e,i));},check:t=>{let i=oe();if((i==null?void 0:i.type)!=="checklist")return;let a=i.items.find(p=>p.step.id===t);!a||a.done||(pe(K(i.flow.id),t),e.track(se,{flow:i.flow.id,step:t,kind:"checklist",action:"completed"}),Y(),N());},dismiss:()=>{let t=oe();!t||t.type!=="step"&&t.type!=="checklist"||(K(t.flow.id).dismissed=true,e.track(se,{flow:t.flow.id,...t.type==="step"?{step:t.step.id}:{},action:"dismissed"}),s=U&&U.flow!==t.flow.id&&M(U.flow)?U.flow:null,U=null,Y(),N());},startTour:t=>{var m;let i=oe();if((i==null?void 0:i.type)!=="checklist")return false;let a=(m=i.items.find(R=>R.step.id===t))==null?void 0:m.tour;if(!a)return false;let p=K(a.id);return p.done.clear(),p.at.clear(),p.dismissed=false,U={flow:i.flow.id,step:t},s=a.id,e.track(se,{flow:a.id,action:"started",from:i.flow.id}),Y(),N(),true}},message:{click:()=>{var a;let t=we();if((t==null?void 0:t.type)!=="message")return;O.add(t.message.id),e.track(ct,{message:t.message.id,journey:t.message.journey,action:"clicked"});let i=Xt(t.message.url);N(),i&&((a=e.openUrl)==null||a.call(e,i));},dismiss:()=>{let t=we();(t==null?void 0:t.type)==="message"&&(O.add(t.message.id),e.track(ct,{message:t.message.id,journey:t.message.journey,action:"dismissed"}),N());}}}};var Yn="ck_pick",Xn="ck_origin",Ve=e=>typeof CSS!="undefined"&&CSS.escape?CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\${n}`),zn=e=>[...e.classList].filter(n=>n.length<30&&!/\d{2,}|[_-][a-z0-9]{5,}$|^(is|has)-|hover|active|focus|open|selected|:|\[/.test(n)).slice(0,2),Gt=e=>{let n=e.ownerDocument,r=g=>{try{return n.querySelectorAll(g).length===1}catch(v){return false}},s=e.getAttribute("data-ck-target");if(s)return `[data-ck-target="${s.replace(/"/g,'\\"')}"]`;if(e.id&&!/\d{3,}/.test(e.id)&&r(`#${Ve(e.id)}`))return `#${Ve(e.id)}`;let c=[],l=e;for(;l&&l!==n.documentElement&&c.length<6;){if(l!==e&&l.id&&!/\d{3,}/.test(l.id)){c.unshift(`#${Ve(l.id)}`);break}let g=l.tagName.toLowerCase(),v=zn(l).map(C=>`.${Ve(C)}`).join(""),S=l.parentElement,b=S?[...S.children].filter(C=>C.tagName===l.tagName):[],O=b.length>1?`:nth-of-type(${b.indexOf(l)+1})`:"";c.unshift(`${g}${v}${O}`);let w=c.join(" > ");if(r(w))return w;l=S;}return c.join(" > ")},Qt=()=>{var O;if(typeof window=="undefined"||window.top===window)return null;let e=new URLSearchParams(window.location.search);if(e.get(Yn)!=="1")return null;let n;try{n=new URL((O=e.get(Xn))!=null?O:"").origin;}catch(w){return null}if(!/^https?:\/\//.test(n))return null;let r=w=>window.parent.postMessage(w,n),s=document.createElement("div");s.setAttribute("aria-hidden","true"),Object.assign(s.style,{position:"fixed",zIndex:"2147483647",pointerEvents:"none",border:"2px solid #0ea5e9",background:"rgba(14,165,233,.12)",borderRadius:"6px",transition:"all 60ms linear",display:"none"});let c=document.createElement("div");Object.assign(c.style,{position:"absolute",left:"-2px",bottom:"calc(100% + 4px)",font:"600 11px/1.4 system-ui, sans-serif",color:"#fff",background:"#0c4a6e",padding:"2px 6px",borderRadius:"4px",whiteSpace:"nowrap",maxWidth:"360px",overflow:"hidden",textOverflow:"ellipsis"}),s.appendChild(c),document.body.appendChild(s);let l=null,g=w=>{if(l=w&&w!==s&&!s.contains(w)?w:null,!l){s.style.display="none";return}let C=l.getBoundingClientRect();Object.assign(s.style,{display:"block",left:`${C.left-2}px`,top:`${C.top-2}px`,width:`${C.width+4}px`,height:`${C.height+4}px`}),c.textContent=Gt(l);},v=w=>g(document.elementFromPoint(w.clientX,w.clientY)),S=w=>{var _,F;w.preventDefault(),w.stopPropagation();let C=(_=document.elementFromPoint(w.clientX,w.clientY))!=null?_:l;!C||C===s||r({type:"mrrocket:picked",selector:Gt(C),text:((F=C.textContent)!=null?F:"").trim().replace(/\s+/g," ").slice(0,80)});},b=w=>{w.key==="Escape"&&r({type:"mrrocket:pick-cancel"});};return window.addEventListener("mousemove",v,true),window.addEventListener("click",S,true),window.addEventListener("keydown",b,true),r({type:"mrrocket:pick-ready"}),()=>{window.removeEventListener("mousemove",v,true),window.removeEventListener("click",S,true),window.removeEventListener("keydown",b,true),s.remove();}};var Jn={get:e=>{try{return window.localStorage.getItem(e)}catch(n){return null}},set:(e,n)=>{try{window.localStorage.setItem(e,n);}catch(r){}}},Zt=()=>{try{for(let e=window.localStorage.length-1;e>=0;e--){let n=window.localStorage.key(e);n!=null&&n.startsWith("mrrocket:onboarding")&&window.localStorage.removeItem(n);}}catch(e){}},en=e=>({track:e.track,personId:e.personId,auto:e.auto,storage:()=>e.canStore()?Jn:null,openUrl:n=>window.location.assign(n),path:()=>window.location.pathname,fetchInApp:async n=>{var c;if(!e.apiKey)return null;let r=(c=e.userHash)==null?void 0:c.call(e,n),s=await fetch(`${e.host}/api/sdk/inapp?key=${encodeURIComponent(e.apiKey)}&distinctId=${encodeURIComponent(n)}${r?`&userHash=${r}`:""}`);return Oe(s.status),s.ok?await s.json():null}});var Ye="mrr_ref",Xe="mrr_ref",Gn="mrr_ref",Qn="mrr_click";var Ne=/^[A-Za-z0-9_-]{1,64}$/;var Zn=(e,n="ref")=>{let r=new URLSearchParams(e);return er(s=>r.get(s),n)},er=(e,n="ref")=>{let r=e(Gn);if(r&&Ne.test(r)){let c=e(Qn);return {code:r,clickId:c&&Ne.test(c)?c:null,direct:false}}let s=e(n);return s&&Ne.test(s)?{code:s,clickId:null,direct:true}:null},tn=e=>{var n;return `${e.code}.${(n=e.clickId)!=null?n:""}.${e.at}`},Be=(e,n=60,r=Date.now())=>{if(!e)return null;let[s,c,l]=e.split("."),g=Number(l);return !s||!Ne.test(s)||!Number.isFinite(g)||c&&!Ne.test(c)||r-g>n*864e5||g>r+864e5?null:{code:s,clickId:c||null,at:g}};var W=null,ze=()=>typeof document!="undefined",nn=e=>{var r;if(!ze())return;let n=(r=document.cookie.split("; ").find(s=>s.startsWith(`${e}=`)))==null?void 0:r.slice(e.length+1);try{return n?decodeURIComponent(n):void 0}catch(s){return n}},Je=()=>{try{return typeof localStorage=="undefined"?null:localStorage}catch(e){return null}},ut=()=>{var e,n;return W||(ze()?(n=Be(nn(Ye),3650))!=null?n:Be((e=Je())==null?void 0:e.getItem(Xe),3650):null)};var qe=(e,n)=>{var c;if(!ze())return;let r=Math.max(1,Math.round(n))*86400,s=typeof location!="undefined"&&location.protocol==="https:"?"; secure":"";document.cookie=`${Ye}=${encodeURIComponent(tn(e))}; path=/; max-age=${r}; samesite=lax${s}`;try{(c=Je())==null||c.setItem(Xe,tn(e));}catch(l){}},Ge=()=>{var e;if(ze()){document.cookie=`${Ye}=; path=/; max-age=0; samesite=lax`;try{(e=Je())==null||e.removeItem(Xe);}catch(n){}}},rn=()=>{W=null;},on=async e=>{var s,c,l;let n=Zn(e.search,e.param),r=(s=e.now)!=null?s:Date.now();if(!n)return !W&&e.store&&(W=(l=Be(nn(Ye),e.days,r))!=null?l:Be((c=Je())==null?void 0:c.getItem(Xe),e.days,r),W||Ge()),W;if(W={code:n.code,clickId:n.clickId,at:r},e.store&&qe(W,e.days),e.beacon)try{let g=await e.beacon({code:n.code,clickId:n.clickId});g&&W&&W.code===n.code&&!W.clickId&&(W={...W,clickId:g},e.store&&qe(W,e.days));}catch(g){}return W},sn=e=>e==="$identify"||!e.startsWith("$");var ft=3600*24*365,ln=e=>{var r;if(typeof document=="undefined")return;let n=(r=document.cookie.split("; ").find(s=>s.startsWith(`${e}=`)))==null?void 0:r.slice(e.length+1);if(n)try{return decodeURIComponent(n)}catch(s){return n}},Qe=(e,n,r)=>{let s=window.location.protocol==="https:"?"; secure":"";document.cookie=`${e}=${encodeURIComponent(n)}; path=/; max-age=${r}; samesite=lax${s}`;},Le=e=>{document.cookie=`${e}=; path=/; max-age=0; samesite=lax`;},L={utm:{}},cn=()=>{var e;return (e=L.id)!=null?e:L.id=at()},pt=(e,n)=>{if(e!=="cookies")return cn();let r=ln(ke);if(r)return L.id=r;let s=cn();return Qe(ke,s,ft),s},gt=e=>{var c;let n=Date.now(),r=L.session,s=(c=e?ln(Se):void 0)!=null?c:r&&n-r.last<18e5?r.id:at();return L.session={id:s,last:n},e&&Qe(Se,s,18e5/1e3),s},mt=()=>{var r;let e=window.location.href;if(L.url===e)return;L.referrer=(r=L.url)!=null?r:document.referrer||void 0,L.url=e;let n=Tt(window.location.search);Object.keys(n).length&&(L.utm=n);},dn=()=>{let e=navigator,n=window;return e.doNotTrack==="1"||n.doNotTrack==="1"||e.globalPrivacyControl===true};var Ze=window,nr=()=>{var e,n;return (n=(e=document.currentScript)!=null?e:document.querySelector('script[data-key][src*="sdk"]'))!=null?n:document.querySelector("script[data-key][src*='mrrocket']")},un=new Set,ee=e=>{un.has(e)||(un.add(e),console.warn(`[MRRocket] ${e}`));},rr=()=>{var vt,Et,_t,St;let e=nr(),n=o=>{var d;return (d=e==null?void 0:e.getAttribute(`data-${o}`))!=null?d:void 0},r=(o,d)=>{let u=n(o);return u===void 0?d:!["false","0","off","no"].includes(u.trim().toLowerCase())},s=(vt=e==null?void 0:e.src)!=null?vt:"",c="";try{c=s?new URL(s,window.location.href).origin:"";}catch(o){c="";}let l=((Et=n("key"))!=null?Et:"").trim(),g=((_t=n("api-host"))!=null?_t:c).trim().replace(/\/+$/,""),v=n("consent"),S=r("respect-dnt",false),b=r("heatmaps",true),O=r("errors",true),w=n("release"),C=n("attribution"),_=C==="always"||C==="off"?C:"consent",F=n("referral-param")||"ref",H={},A=(o,d)=>{var u;return (u=H[o])!=null?u:H[o]=new Promise((y,E)=>{var Ot;let $=()=>Ze[d];if($())return y($());let Q=(Ot=n(`${o}-src`))!=null?Ot:s?s.replace(/(\.min)?\.js(\?[^#]*)?(#.*)?$/,`-${o}$1.js?v=${je}`):"";if(!Q)return E(new Error(o));let ue=document.createElement("script");ue.async=true,ue.src=Q,ue.onload=()=>$()?y($()):E(new Error(o)),ue.onerror=()=>E(new Error(o)),document.head.appendChild(ue);}).catch(y=>{throw H[o]=void 0,y})},U=n("theme"),ne={theme:U==="light"||U==="dark"?U:"auto",accent:n("accent")},M=new URLSearchParams(window.location.search),K=Ut(M.get(Nt)),X=M.get(Lt)==="1";X&&Qt();let fe=M.get($e);if(fe!==null){M.delete($e);let o=M.toString();history.replaceState(history.state,"",`${window.location.pathname}${o?`?${o}`:""}${window.location.hash}`);}let pe=dn(),Te=v==="cookies"||v==="off"?v:"cookieless",be=r("replay",false),ae="",V,ge=null,Y,P=null,re=false,me=false,oe=null,we=null,N=window.location.pathname,te=[],xe=new Set,Ce=[],B=()=>S&&pe?"off":Te,D=()=>!X&&B()!=="off",q=()=>V!=null?V:ae,Z=()=>B()==="cookies"?q():V,z=o=>Kt(ge,o);l||ee('No public key. Add data-key="mrr_pub_\u2026" to the script tag; nothing is tracked until then.');let he=(o=false)=>{if(!te.length)return;if(!l){te.length=0;return}let d=`${g}/api/sdk/events`;for(let u of Ft(l,te.splice(0),{v:je,errors:O,platform:"web"},z(Z())))o&&"sendBeacon"in navigator&&navigator.sendBeacon(d,u)||fetch(d,{method:"POST",headers:{"content-type":"application/json"},body:u,keepalive:true}).then(E=>{E.status===401?Oe(401):E.ok||ee(`Events were rejected with ${E.status}. Check data-key (MRRocket \u203A Settings \u203A Products).`);}).catch(()=>ee(`Could not reach ${g||"this origin"} to send events. Check data-api-host.`));},T=null,J=null,t=(o,d,u=Date.now(),y)=>{if(!D())return;let E=sn(o)?ut():null;te.push({event:o,props:E?{...d,$referral:{code:E.code,clickId:E.clickId}}:d,distinctId:Z(),sessionId:gt(B()==="cookies"),ts:u,url:y!=null?y:window.location.href,referrer:L.referrer,...L.utm,screen:{w:window.screen.width,h:window.screen.height}});},i=(o,d)=>{typeof o!="string"||!o||(t(o,d),D()&&(T==null||T.event(o)),a.onEvent(o));},a=Jt(en({host:g,apiKey:l,track:t,personId:()=>D()?V:void 0,userHash:z,canStore:()=>B()==="cookies",auto:r("onboarding",true)})),p=false,m;a.subscribe(()=>{p||!a.view()||X||(p=true,A("flows","__mrrocketFlows").then(o=>o.mountFlows(a,ne)).catch(()=>{p=false,ee("The cancel flow and onboarding dialogs did not load. Check that sdk-flows.js is served next to sdk.js.");}));});let R=(o,d)=>{if(!D())return;let u=`${window.location.pathname}|${o}`;xe.has(u)||(xe.add(u),i("$exposure",{experiment:o,variant:d}));},f=()=>{let o=Dt(P,window.location.href,q(),K);return o!=null&&o.to?(he(true),window.location.replace(o.to),true):(o!=null&&o.experiment&&R(o.experiment,o.variant),false)},h=()=>{if(!P)return;let o=document.querySelectorAll("[data-ck-text]");if(!o.length)return;let d=Ht(P,q(),K),u=new Set;o.forEach(y=>{var Q,ue;let E=y.dataset.ckText;if(!E)return;u.add(E),y.dataset.ckDefault===void 0&&(y.dataset.ckDefault=(Q=y.textContent)!=null?Q:"");let $=(ue=d[E])!=null?ue:y.dataset.ckDefault;y.textContent!==$&&(y.textContent=$);});for(let y of P.experiments)y.variants.some(E=>{var $;return Object.keys(($=E.changes)!=null?$:{}).some(Q=>u.has(Q))})&&R(y.key,Pe(y.key,P,q(),K));},k=()=>{var o,d;return (d=(o=P==null?void 0:P.referral)==null?void 0:o.cookieDays)!=null?d:60},x=()=>_==="always"?B()!=="off":_==="consent"&&B()==="cookies",I=null,j=false,ce=()=>{if(!re||X)return;if(_==="off"||B()==="off"){rn(),(_==="off"||j)&&Ge();return}let o=window.location.href;I!==o&&(I=o,on({search:window.location.search,param:F,store:x(),days:k(),beacon:l?({code:d,clickId:u})=>fetch(`${g}/api/sdk/affiliate/click`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({key:l,code:d,clickId:u,url:o,referrer:document.referrer||void 0}),keepalive:true}).then(y=>y.ok?y.json():null).then(y=>{var E;return (E=y==null?void 0:y.clickId)!=null?E:null}):void 0}));},G=()=>{let o=x(),d=ut();o&&d?qe(d,k()):!o&&j&&Ge(),j=o;},Re=0,wt=false,ht=()=>{var y,E;let o=D()&&be&&!!(P!=null&&P.replay)&&!!l;if(o===wt)return;wt=o;let d=++Re;if(!o){T==null||T.stop(true),T=null;return}let u=(E=(y=P==null?void 0:P.replay)==null?void 0:y.sampleRate)!=null?E:.1;A("replay","__mrrocketReplay").then($=>$.startReplay({host:g,apiKey:l,sessionId:gt(B()==="cookies"),distinctId:Z(),identified:!!V,userHash:z(Z()),sampleRate:u,warn:ee})).then($=>{d!==Re?$==null||$.stop(true):T=$;}).catch(()=>ee("Session recording could not start (the recorder did not load)."));},kt=r("messenger",false),le=null,ve=o=>{X||l&&(le!=null||(le=A("messenger","__mrrocketMessenger").then(d=>{var $;let u=Q=>n(`messenger-${Q}`)===void 0?void 0:r(`messenger-${Q}`,true),y=n("messenger-position"),E=($=n("messenger-theme"))!=null?$:U;return d.mountMessenger({host:g,apiKey:l,distinctId:q,user:()=>Y,userHash:()=>z(q()),launcher:kt,position:y,corners:n("messenger-corners"),header:n("messenger-header"),font:n("messenger-font"),title:n("messenger-title"),greeting:n("messenger-greeting"),label:n("messenger-label"),askEmail:u("ask-email"),help:u("help"),sound:u("sound"),preview:u("preview"),theme:E==="light"||E==="dark"||E==="auto"?E:void 0,accent:n("accent")})})),le.then(o).catch(()=>{le=null,ee("sdk-messenger.js did not load.");}));},yt=n("forms")==="auto",et=false,tt=()=>{et||!l||X||!document.querySelector(yt?"form":"form[data-mrrocket-form]")||(et=true,A("forms","__mrrocketForms").then(o=>o.watchForms({host:g,apiKey:l,auto:yt,distinctId:()=>D()?Z():void 0,userHash:z,identified:()=>!!V,identify:Rt,tracking:D,referrer:()=>L.referrer,utm:()=>L.utm})).catch(()=>et=false));},nt=()=>{!me||!D()||we===window.location.pathname||(we=window.location.pathname,i("$pageview",{path:window.location.pathname}));},de=null,bt=()=>{let o=de;b&&o&&o.max>0&&t("$scroll",{depth:o.max,docH:o.docH,vw:window.innerWidth,vh:window.innerHeight},Date.now(),o.url),de=null;},Ie=()=>{var E,$;if(!b||!D()||X)return;let o=document.documentElement,d=Math.max(o.scrollHeight,($=(E=document.body)==null?void 0:E.scrollHeight)!=null?$:0),u=Mt(),y=window.location.href;(de==null?void 0:de.url)!==y?de={url:y,max:u,docH:d}:u>de.max&&(de={url:y,max:u,docH:d});},xt=()=>{let o=window.location.pathname;o!==N&&(N=o,!(re&&f())&&(bt(),mt(),T==null||T.page(o),J==null||J.crumb("navigation",o),nt(),ce(),window.setTimeout(()=>{Ie(),h(),tt();},0)));},Ct=()=>{let o=B(),d=oe;oe=o,d==="cookies"&&o!=="cookies"&&(Le(ke),Le(Se)),o==="off"&&(te.length=0,L.session=void 0),d==="cookies"&&o!=="cookies"&&Zt(),ae=pt(o),G(),ce(),ht(),nt(),Ie();},pn=o=>{let{analytics:d,replay:u}=typeof o=="string"?{analytics:o,replay:void 0}:o!=null?o:{};if(d!==void 0&&d!=="cookieless"&&d!=="cookies"&&d!=="off"){ee(`setConsent: "${String(d)}" is not a consent mode. Use "cookieless", "cookies" or "off".`);return}d==="off"&&(te.length=0),d&&(Te=d),typeof u=="boolean"&&(be=u),Ct(),re&&a.refresh();},Rt=(o,d,u)=>{if(typeof o!="string"||!o)return;let y=Z();ge=Wt(ge,o,u==null?void 0:u.hash),V=o,t("$identify",{...d,id:o,...y&&y!==o?{previousId:y}:{}}),T==null||T.identify(o,z(o)),B()==="cookies"&&Qe(ke,o,ft),Y={...d,id:o},h(),re&&a.refresh();},Ue={track:i,identify:Rt,reset:()=>{he(),V=void 0,ge=null,Y=void 0,xe.clear(),B()==="cookies"&&(Le(ke),Le(Se)),L.id=void 0,L.session=void 0,ae=pt(B()),h(),re&&a.refresh();},captureError:o=>J==null?void 0:J.capture(o,"manual"),setConsent:pn,getFlag:o=>it(o,P,q(),{...Y})!==false,getFlagVariant:o=>{let d=it(o,P,q(),{...Y});return typeof d=="string"?d:null},getVariant:o=>{let d=Pe(o,P,q(),K);return (P||K[o])&&R(o,d),d},ready:o=>{typeof o=="function"&&(re?window.setTimeout(()=>o(Ue),0):Ce.push(o));},getDistinctId:q,cancelFlow:{open:o=>a.openCancelFlow(o)},onboarding:{start:o=>a.startOnboarding(o)},openCancelFlow:o=>a.openCancelFlow(o),startOnboarding:o=>a.startOnboarding(o),paywall:{open:(o,d)=>(m!=null?m:m=A("flows","__mrrocketFlows").then(u=>u.paywallHost({config:()=>P,distinctId:q,track:t},ne))).then(u=>u.open(o,d))},push:{subscribe:o=>{let d=D()?V:void 0;if(!d)return Promise.resolve({status:"not-signed-in"});let u=window.Notification,y=Promise.resolve(u&&u.permission==="default"&&(o==null?void 0:o.ask)!==false?u.requestPermission():u==null?void 0:u.permission);return A("push","__mrrocketPush").then(E=>E.subscribeWebPush({host:g,apiKey:l,distinctId:d,userHash:z(d),permission:y},o))},unsubscribe:()=>A("push","__mrrocketPush").then(o=>o.unsubscribeWebPush({host:g,apiKey:l,distinctId:V,userHash:z(V)}))},messenger:{open:o=>ve(d=>d.open(o)),close:()=>{le==null?void 0:le.then(o=>o.close()).catch(()=>{});},toggle:()=>ve(o=>o.toggle())},openMessenger:()=>ve(o=>o.open()),version:je};mt(),Ct();let Ee=Ze.mrrocket,gn=(St=Ee==null?void 0:Ee.q)!=null?St:[],rt=Ee&&typeof Ee=="object"?Ee:{};Object.assign(rt,Ue,{__loaded:true}),delete rt.q,Ze.mrrocket=rt;for(let[o,d]of gn){let u=Ue[o];if(typeof u=="function")try{u(...Array.from(d!=null?d:[]));}catch(y){console.error(y);}}me=true,nt(),O&&l&&!X&&(J=Bt({host:g,apiKey:l,release:w,context:()=>{var o;return {send:D(),distinctId:Z(),sessionId:(o=L.session)==null?void 0:o.id,userHash:z(Z())}},warn:ee}),J.crumb("navigation",window.location.pathname));for(let o of ["pushState","replaceState"]){let d=history[o];history[o]=function(...u){let y=d.apply(this,u);return xt(),y};}window.addEventListener("popstate",xt);let mn=new Fe;document.addEventListener("click",o=>{var $;o.target instanceof Element&&o.target.closest("[data-ck-messenger]")&&(o.preventDefault(),ve(Q=>Q.open()));let d=o.target instanceof Element?o.target.closest("[data-ck-goal]"):null;if(d!=null&&d.dataset.ckGoal&&i(d.dataset.ckGoal,{text:($=d.textContent)==null?void 0:$.trim().slice(0,80)}),!D())return;let u=Pt(o);if(!u)return;let y=mn.push(u.x,u.y,Date.now());if((u.label||u.selector)&&(J==null||J.crumb("click",u.label||u.selector)),T==null||T.click(u,y),!b)return;let E={x:u.x,y:u.y,vw:u.vw,vh:u.vh,docH:u.docH,selector:u.selector,label:u.label,dead:!u.interactive};t("$click",E),y&&t("$rageclick",E);});let ot=0;window.addEventListener("scroll",()=>{ot||(ot=window.requestAnimationFrame(()=>{ot=0,Ie();}));},{passive:true}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>Ie()):Ie(),window.setInterval(()=>he(),2e3),window.addEventListener("pagehide",()=>{bt(),he(true);});let st=()=>{if(re=true,f())return;let o=jt(P,fe);o&&R(o.experiment,o.variant),document.documentElement.classList.remove("ck-hide"),ce(),ht(),a.setConfig(P),a.refresh(),kt&&(document.body?ve():document.addEventListener("DOMContentLoaded",()=>ve())),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{h(),tt();}):(h(),tt());for(let d of Ce.splice(0))try{d(Ue);}catch(u){console.error(u);}};l?fetch(`${g}/api/sdk/config?key=${encodeURIComponent(l)}`).then(o=>(o.ok||ee(`Config request to ${g||"this origin"} answered ${o.status}. Check data-key and data-api-host.`),o.ok?o.json():null)).then(o=>{o&&Array.isArray(o.experiments)&&(P=o),st();}).catch(()=>{ee(`Could not reach ${g||"this origin"}. Check data-api-host. The page keeps its own texts and flags stay off.`),st();}):st();},fn;typeof window!="undefined"&&typeof document!="undefined"&&!((fn=Ze.mrrocket)!=null&&fn.__loaded)&&rr();
1
+ (function(){'use strict';var Rn=Object.defineProperty;var vn=(e,n,o)=>n in e?Rn(e,n,{enumerable:true,configurable:true,writable:true,value:o}):e[n]=o;var $e=(e,n,o)=>vn(e,typeof n!="symbol"?n+"":n,o);var Tt=e=>{let n=0;for(let o=0;o<e.length;o++){let i=e.charCodeAt(o);i<128?n+=1:i<2048?n+=2:i>=55296&&i<=56319&&o+1<e.length&&(e.charCodeAt(o+1)&64512)===56320?(n+=4,o++):n+=3;}return n},En=(e,n,o,i)=>{let d=`{"key":${JSON.stringify(e)},${i?`"userHash":${JSON.stringify(i)},`:""}"sdk":${JSON.stringify(o)},"events":[`,l=Tt(d)+2,w=[],v=[],S=[],b=l,I=()=>{v.length&&w.push({body:`${d}${v.join(",")}]}`,events:S}),v=[],S=[],b=l;};for(let k of n){let R=JSON.stringify(k),O=Tt(R)+1;l+O>6e4||((v.length===100||b+O>6e4)&&I(),v.push(R),S.push(k),b+=O);}return I(),w},Lt=(e,n,o,i)=>En(e,n,o,i).map(d=>d.body);var je=class{constructor(n=1e3,o=30,i=3){$e(this,"windowMs",n);$e(this,"radius",o);$e(this,"count",i);$e(this,"clicks",[]);$e(this,"fired",false);}push(n,o,i){let d=this.clicks.filter(l=>i-l.t<=this.windowMs&&Math.hypot(l.x-n,l.y-o)<=this.radius);return d.length!==this.clicks.length&&(this.fired=false),this.clicks=[...d,{x:n,y:o,t:i}],this.clicks.length>=this.count&&!this.fired?(this.fired=true,true):false}};var On='a[href],button,input,select,textarea,label,summary,[role="button"],[role="link"],[role="tab"],[role="menuitem"],[role="checkbox"],[role="switch"],[onclick],[data-ck-goal]',_n="[data-ck-mask]",Sn="[data-ck-block]",Ut=/\d{4,}|^[a-z]{1,3}-[a-z0-9]{5,}$|^_|__|css-|^sc-|^jsx-/i,Fn=e=>{let n=e.tagName.toLowerCase();if(e.id&&!Ut.test(e.id)&&e.id.length<=40)return `${n}#${e.id}`;let o=typeof e.className=="string"?e.className.split(/\s+/).filter(l=>l&&!Ut.test(l)&&l.length<=30&&!l.includes(":")):[],i=o.length?`${n}.${o.slice(0,2).join(".")}`:n,d=e.parentElement?[...e.parentElement.children].filter(l=>l.tagName===e.tagName):[];return d.length>1?`${i}:nth-of-type(${d.indexOf(e)+1})`:i},In=e=>{let n=[],o=e;for(;o&&n.length<3&&o.tagName&&o.tagName!=="BODY"&&o.tagName!=="HTML";){let i=Fn(o);if(n.unshift(i),i.includes("#"))break;o=o.parentElement;}return n.join(" > ").slice(0,160)},Ge=e=>(e!=null?e:"").replace(/\s+/g," ").trim().slice(0,40),$n=e=>{var o,i,d,l,w;if(e.closest(`${_n},${Sn}`))return "";let n=e.tagName.toLowerCase();if(n==="input"){let v=((o=e.getAttribute("type"))!=null?o:"text").toLowerCase();return Ge(v==="submit"||v==="button"?(i=e.getAttribute("aria-label"))!=null?i:e.value:e.getAttribute("aria-label"))}return Ge(n==="select"||n==="textarea"?e.getAttribute("aria-label"):(w=(l=(d=e.getAttribute("aria-label"))!=null?d:e.getAttribute("title"))!=null?l:e.innerText)!=null?w:e.textContent)},Ht=e=>{var l,w;let n=e.target instanceof Element?e.target:null;if(!n)return null;let o=n.closest(On),i=o!=null?o:n,d=document.documentElement;return {x:Math.round(e.clientX),y:Math.round(e.clientY+window.scrollY),vw:window.innerWidth,vh:window.innerHeight,docH:Math.max(d.scrollHeight,(w=(l=document.body)==null?void 0:l.scrollHeight)!=null?w:0),selector:In(i),label:o?$n(o):"",interactive:!!o}},Dt=()=>{var o,i;let e=document.documentElement,n=Math.max(e.scrollHeight,(i=(o=document.body)==null?void 0:o.scrollHeight)!=null?i:0);return n?Math.min(100,Math.round((window.scrollY+window.innerHeight)/n*100)):0};var Ze="0.18.0",Pn=(e,n)=>{let o=n.trim().toLowerCase();for(let[i,d]of Object.entries(e))if(i.toLowerCase()===o)return d},Mn=(e,n)=>{let o=e.trim().toLowerCase(),i=n.trim().toLowerCase();return i.startsWith("@")?o.endsWith(i):o===i},An=(e,n)=>{if(e.op==="in cohort")return false;let o=Pn(n,e.property),i=o==null?"":String(o);if(e.op==="\u2265"){let l=Number(i),w=Number(e.values[0]);return i!==""&&Number.isFinite(l)&&Number.isFinite(w)&&l>=w}let d=i!==""&&e.values.some(l=>Mn(i,l));return e.op==="is"||e.op==="in"?d:!d},Nn=(e,n,o={})=>{var v;if(!e.on)return false;let i={id:n,...o},d=e.sets.length?e.sets.find(S=>S.conditions.every(b=>An(b,i))):{rollout:100};if(!d||jt(`${e.key}:rollout:${n}`)*100>=d.rollout)return false;if(!((v=e.variants)!=null&&v.length))return true;let l=jt(`${e.key}:variant:${n}`)*100,w=0;for(let S of e.variants)if(w+=S.split,l<w)return S.key;return e.variants[e.variants.length-1].key},bt=(e,n,o,i={})=>{var l;let d=(l=n==null?void 0:n.flags)==null?void 0:l.find(w=>w.key===e);return d?Nn(d,o,i):false},Tn=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],Wt="ck_preview",Kt="ck_embed",_e="ck_id",Pe="ck_sid";var Ln=e=>{var o;let n={};for(let i of Tn){let d=(o=e(i))==null?void 0:o.trim();d&&(n[i]=d.slice(0,150));}return n},qt=e=>{let n=new URLSearchParams(e);return Ln(o=>n.get(o))};var Un=e=>{let n=2166136261;for(let o=0;o<e.length;o++)n^=e.charCodeAt(o),n=Math.imul(n,16777619);return (n>>>0)/4294967296},jt=e=>{let n=2166136261;for(let o=0;o<e.length;o++)n^=e.charCodeAt(o),n=Math.imul(n,16777619);return n^=n>>>16,n=Math.imul(n,2246822507),n^=n>>>13,n=Math.imul(n,3266489909),n^=n>>>16,(n>>>0)/4294967296},Hn=(e,n)=>{var l,w,v,S;let o=(w=(l=e.variants[0])==null?void 0:l.id)!=null?w:"control";if(e.winner)return e.winner;if(e.status!=="running")return o;let i=Un(`${e.key}:${n}`),d=0;for(let b of e.variants)if(d+=b.weight,i<d)return b.id;return (S=(v=e.variants[e.variants.length-1])==null?void 0:v.id)!=null?S:o},Vt=e=>{let n=Array.isArray(e)?e[0]:e;if(!n)return {};let o={};for(let i of n.split(",")){let[d,l]=i.split(":");d&&l&&(o[d.trim()]=l.trim());}return o};var Ke=(e,n,o,i)=>{if(i[e])return i[e];let d=n==null?void 0:n.experiments.find(l=>l.key===e);return d?Hn(d,o):"control"},Bt=(e,n,o)=>{var d,l,w,v,S,b;let i={...(d=e==null?void 0:e.texts)!=null?d:{}};for(let I of (l=e==null?void 0:e.experiments)!=null?l:[]){let k=Ke(I.key,e,n,o);k!==((v=(w=I.variants[0])==null?void 0:w.id)!=null?v:"control")&&Object.assign(i,(b=(S=I.variants.find(R=>R.id===k))==null?void 0:S.changes)!=null?b:{});}return i},We="ck_x",Qe=e=>e.replace(/\/+$/,"")||"/",Yt=(e,n,o,i={})=>{var v,S;if(!e)return null;let d;try{d=new URL(n);}catch(b){return null}if(d.searchParams.has(We))return null;let l=Qe(d.pathname),w=(b,I)=>{let k;try{k=new URL(b,d);}catch(R){return}if(!(!/^https?:$/.test(k.protocol)||k.origin===d.origin&&Qe(k.pathname)===l))return d.searchParams.forEach((R,O)=>{k.searchParams.has(O)||k.searchParams.set(O,R);}),I&&k.searchParams.set(We,I),k.hash||(k.hash=d.hash),k.href};for(let b of (v=e.redirects)!=null?v:[]){let I=b.from&&Qe(b.from)===l?w(b.to):void 0;if(I)return {to:I}}for(let b of e.experiments){if(!b.path||Qe(b.path)!==l)continue;let I=b.status==="running"&&!b.winner;if(I&&o===null&&!i[b.key])return null;let k=Ke(b.key,e,o!=null?o:"",i),R=(S=b.variants.find(P=>P.id===k))==null?void 0:S.url,O=R?w(R,I?`${b.key}:${k}`:void 0):void 0;return I?{to:O,experiment:b.key,variant:k}:O?{to:O}:null}return null},Xt=(e,n)=>{let[o,i]=(n!=null?n:"").split(":"),d=e==null?void 0:e.experiments.find(l=>l.key===o);return d&&d.variants.some(l=>l.id===i)?{experiment:o,variant:i}:null};var xt=()=>typeof crypto!="undefined"&&"randomUUID"in crypto?crypto.randomUUID():`ck_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;var Dn="401: sign the user id on your server with userHash(id) from @mrrocket/sdk/next/server and pass identify(id, props, { hash }).",Me=(e,n=o=>console.warn(o))=>{let o=globalThis;e!==401||o.__mrrocketUnsigned||(o.__mrrocketUnsigned=true,n(`[MRRocket] ${Dn}`));},zt=(e,n,o,i=d=>console.warn(d))=>{let d=typeof o=="string"?o.trim().toLowerCase():"";return /^[0-9a-f]{64}$/.test(d)?{id:n,hash:d}:(d&&i("[MRRocket] identify: that hash is no userHash(id); not sent."),e&&e.id===n?e:null)},Jt=(e,n)=>e&&n&&e.id===n?e.hash:void 0,Gt=(e,n)=>e&&n.some(o=>o===e.id)&&n.every(o=>!o||o===e.id)?e.hash:void 0;var jn=8*1024,Wn=20,Kn=20,qn=2e3,qe=(e,n)=>e.length>n?`${e.slice(0,n-1)}\u2026`:e,Vn=e=>{var n;if(e instanceof Error)return {type:e.name||"Error",message:qe(e.message||String(e),1e3),stack:e.stack?qe(e.stack,jn):void 0};if(typeof e=="string")return {type:"Error",message:qe(e,1e3)};try{return {type:"Error",message:qe((n=JSON.stringify(e))!=null?n:String(e),1e3)}}catch(o){return {type:"Error",message:String(e)}}},Qt=e=>{let n=[],o=[],i=new Set,d=0,l=`${e.host}/api/sdk/errors`,w=(R=false)=>{for(;n.length;){let O=n.splice(0,4),P=e.context(),q=P.distinctId&&P.userHash?{id:P.distinctId,hash:P.userHash}:null,T=Gt(q,O.map(W=>W.distinctId)),V=JSON.stringify({key:e.apiKey,...T?{userHash:T}:{},errors:O});R&&typeof navigator!="undefined"&&"sendBeacon"in navigator&&navigator.sendBeacon(l,V)||fetch(l,{method:"POST",headers:{"content-type":"application/json"},body:V,keepalive:true}).then(W=>{W.status===401?Me(401):!W.ok&&W.status!==429&&e.warn(`Error reports were rejected with ${W.status}. Check the public key and NEXT_PUBLIC_MRROCKET_HOST.`);}).catch(()=>{});}},v=(R,O="manual")=>{let P=e.context();if(!P.send||d>=Wn)return;let q=Vn(R);if(/\/api\/sdk\/errors/.test(q.message))return;let T=`${q.type}:${q.message}`;i.has(T)||(i.add(T),d++,n.push({...q,mechanism:O,handled:O==="manual",url:window.location.href,ts:Date.now(),crumbs:o.slice(),...e.release?{release:e.release}:{},...P.distinctId?{distinctId:P.distinctId}:{},...P.sessionId?{sessionId:P.sessionId}:{}}));},S=R=>{var O;!R.error&&(!R.message||R.message==="Script error.")||v((O=R.error)!=null?O:new Error(R.message),"onerror");},b=R=>{var O;return v((O=R.reason)!=null?O:new Error("Unhandled promise rejection"),"onunhandledrejection")},I=()=>w(true);window.addEventListener("error",S),window.addEventListener("unhandledrejection",b),window.addEventListener("pagehide",I);let k=window.setInterval(()=>w(),qn);return {capture:v,crumb:(R,O)=>{o.push({ts:Date.now(),type:R,message:qe(O,120)}),o.length>Kn&&o.shift();},stop:()=>{window.removeEventListener("error",S),window.removeEventListener("unhandledrejection",b),window.removeEventListener("pagehide",I),window.clearInterval(k),w(true);}}};var Ve="$cancel_flow",G="$onboarding",Ct="$inapp";var Bn={version:0,question:"",reasons:[],offers:{},confirm:{title:"Cancel your subscription?",body:"You keep access until the end of the billing period.",button:"Cancel subscription"},offersFor:"business"},Yn="Something went wrong. Please try again.",Rt="mrrocket:onboarding",fe=e=>e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,""),Zt=new Set(["signed_up","signup","sign_up","registered","account_created","user_signed_up"]),et=(e,n)=>{let o=fe(e),i=fe(n);return !o||!i?false:o===i||Zt.has(o)&&Zt.has(i)},en=e=>/^(first (launch|visit|open|session|login|sign ?in|app open)|app (opened|launched)|on load|every visit|always)?$/i.test(e.trim());var tn=e=>e.trim().startsWith("/");var Xn="Needs tracking code 0.18.0",ae=e=>{var n;return (n=e.when)!=null?n:e.trigger},tt=e=>fe(e)==="from_a_checklist"||fe(e)==="from_your_code"||fe(e)===fe(Xn),nn="after:",nt=e=>{let n=(e!=null?e:"").trim();return n.toLowerCase().startsWith(nn)&&n.slice(nn.length).trim()||null},zn=e=>{var n;return (n=e.opens)!=null?n:e.startsTour?{kind:"tour",id:e.startsTour}:void 0},rn=(e,n)=>{var o;return !e||n==null?false:e.type==="choice"?((o=e.options)!=null?o:[]).some(i=>i.id===n):n.trim().length>0&&n.length<=500},Jn=(e,n)=>{var o,i,d;return (e==null?void 0:e.type)==="choice"?(d=(i=(o=e.options)==null?void 0:o.find(l=>l.id===n))==null?void 0:i.label)!=null?d:n:n.trim()};var Gn=()=>`cf_${Math.random().toString(36).slice(2,10)}${Date.now().toString(36)}`;var ot=e=>{let n=(e!=null?e:"").trim();return /^https?:\/\//i.test(n)||/^\/(?!\/)/.test(n)?n:void 0},Z=e=>{var n;return (n=e.nodes)!=null?n:e.steps},Qn=e=>Math.max(0,e.amount)*(e.unit==="hours"?36e5:864e5),vt=(e,n)=>{let o=e.trim(),i=(n.split(/[?#]/)[0]||"/").replace(/\/+$/,"")||"/";if(!o)return false;if(o.endsWith("*")){let d=o.slice(0,-1).replace(/\/+$/,"");return !d||i===d||i.startsWith(`${d}/`)}return i===(o.replace(/\/+$/,"")||"/")},ge=e=>e.flatMap(n=>n.kind==="condition"?[...ge(n.yes),...ge(n.no)]:n.kind==="wait"?[]:[n]),Zn=(e,n=Date.now())=>e==null||e===""?NaN:Math.floor((n-new Date(e).getTime())/2630016e3),rt=e=>e==null?void 0:e.trim().toLowerCase(),er=({when:e={}},n)=>(e.answer==null||rt(e.answer)===rt(n.answer))&&(e.plan==null||[e.plan].flat().some(o=>rt(o)===rt(n.plan)))&&!(n.months>=e.tenureUnder)&&!(n.months<e.tenureOver)&&(e.tenureUnder==null||n.months>=0)&&(e.tenureOver==null||n.months>=0),on=e=>{let n=null,o=null,i=null,d=[],l=false,w=null,v,S=null,b=new Map,I=new Set,k=new Set,R=new Set,O=e.auto!==false,P=new Set,q=()=>{var t,r;return (r=(t=e.now)==null?void 0:t.call(e))!=null?r:Date.now()},T=null,V=null,z=new Map,W=new Map,me=new Set,ce=null,be=()=>{var t;return (t=n==null?void 0:n.onboarding)!=null?t:[]},Ae=()=>be().filter(t=>t.shownBy!=="code"),D=t=>t?be().find(r=>r.id===t):void 0,B=t=>{let r=b.get(t);return r||b.set(t,r={done:new Set,dismissed:false,answers:new Map,at:new Map,reached:new Map}),r},xe=false,Y=t=>{e.track(G,t),xe=true;},te=(t,r)=>{t.done.add(r),t.at.set(r,q());},Ce=t=>{var r,a,c;if((r=t.page)!=null&&r.trim()){let u=(a=e.path)==null?void 0:a.call(e);return u===void 0?false:vt(t.page,u)}if((c=t.event)!=null&&c.trim()){if(!l)return;for(let u of P)if(et(t.event,u))return true;return false}return false},M=(t,r,a,c,u=0,p)=>{var h,C;for(let m=0;m<r.length;m++){let y=r[m];if(y.kind==="wait"){if(a.done.has(y.id)){p=(h=a.at.get(y.id))!=null?h:p;continue}let $=a.reached.get(y.id);if($===void 0){if(!c)return {at:"pending"};$=p!=null?p:q(),a.reached.set(y.id,$),Y({flow:t.id,step:y.id,kind:"wait",action:"shown"});}let _=$+Qn(y);if(q()<_)return {at:"wait",until:_};if(!c)return {at:"pending"};te(a,y.id),Y({flow:t.id,step:y.id,kind:"wait",action:"completed"}),p=_;continue}if(y.kind==="condition"){let $=a.answers.get(y.id);if($===void 0){if(!c)return {at:"pending"};if($=Ce(y),$===void 0)return {at:"pending"};a.answers.set(y.id,$),Y({flow:t.id,step:y.id,kind:"condition",action:"answered",answer:$?"yes":"no"});}return M(t,$?y.yes:y.no,a,c,u,p)}if(!a.done.has(y.id))return {at:"step",step:y,line:r,index:m,before:u};p=(C=a.at.get(y.id))!=null?C:p,u++;}return {at:"end"}},ee=t=>{let r=b.get(t.id);return !!r&&(r.dismissed||M(t,Z(t),r,false).at==="end")},Ne=t=>`${Rt}:${t!=null?t:"visitor"}`,Te=t=>`${Rt}:events:${t!=null?t:"visitor"}`,Le=t=>`${Rt}:answers:${t!=null?t:"visitor"}`,pe=t=>{if(!t.finish||t.finish==="none"||t.shownBy==="code"||me.has(t.id))return;let r=b.get(t.id);!r||r.dismissed||M(t,Z(t),r,false).at!=="end"||(me.add(t.id),ce={kind:t.finish,key:`${t.id}:${q()}`});},K=()=>{var a;xe=false;let t=(a=e.storage)==null?void 0:a.call(e);if(!t)return;let r={};for(let[c,u]of b)r[c]={done:[...u.done],...u.dismissed?{dismissed:true}:{},...u.answers.size?{answers:Object.fromEntries([...u.answers].map(([p,h])=>[p,h?"yes":"no"]))}:{},...u.at.size?{at:Object.fromEntries(u.at)}:{},...u.reached.size?{reached:Object.fromEntries(u.reached)}:{}};try{t.set(Ne(e.personId()),JSON.stringify(r)),z.size&&t.set(Le(e.personId()),JSON.stringify(Object.fromEntries(z))),P.size&&t.set(Te(e.personId()),JSON.stringify([...P].slice(-200)));}catch(c){}},Se=t=>{var r,a,c,u;for(let[p,h]of Object.entries(t!=null?t:{})){let C=B(p);for(let m of (r=h.done)!=null?r:[])C.done.add(m);h.dismissed&&(C.dismissed=true);for(let[m,y]of Object.entries((a=h.answers)!=null?a:{}))C.answers.has(m)||C.answers.set(m,y==="yes");for(let[m,y]of Object.entries((c=h.at)!=null?c:{}))typeof y=="number"&&!C.at.has(m)&&C.at.set(m,y);for(let[m,y]of Object.entries((u=h.reached)!=null?u:{}))typeof y=="number"&&(!C.reached.has(m)||y<C.reached.get(m))&&C.reached.set(m,y);}},Xe=t=>{var a;T&&clearTimeout(T),T=null;let r=t-q();r>0&&r<=864e5&&(T=setTimeout(()=>(T=null,F()),r+50),(a=T.unref)==null||a.call(T));},X=false,L=()=>{var $;X=false;let t=D(i);if(!t)return null;let r=B(t.id);if(r.dismissed)return null;let a=M(t,Z(t),r,true);if(xe&&K(),a.at==="wait"&&Xe(a.until),X=a.at==="wait"||a.at==="pending",a.at!=="step")return null;let{step:c,line:u,index:p}=a,h=_=>!!_&&_.kind!=="wait"&&_.kind!=="condition";if(c.kind==="checklist"){let _=p;for(;_>0&&h(u[_-1])&&u[_-1].kind==="checklist";)_--;let se=p;for(;se+1<u.length&&h(u[se+1])&&u[se+1].kind==="checklist";)se++;let de=u.slice(_,se+1).filter(h);for(let le of de)!r.done.has(le.id)&&!k.has(`s:${le.id}`)&&(k.add(`s:${le.id}`),e.track(G,{flow:t.id,step:le.id,kind:"checklist",action:"shown"}));return {type:"checklist",flow:t,items:de.map(le=>{let j=zn(le),Oe=j&&(j.kind==="tour"||j.kind==="modal")&&j.id!==t.id?D(j.id):void 0,ke=Oe&&Oe.shownBy!=="code"&&Z(Oe).length?Oe:void 0,ze=j&&(j.kind==="page"?j.target.trim():j.kind==="code"||ke)?j:void 0;return {step:le,done:r.done.has(le.id),...ke&&(j==null?void 0:j.kind)==="tour"?{tour:ke}:{},...ze?{opens:ze}:{},...ke?{target:ke}:{}}})}}k.has(`s:${c.id}`)||(k.add(`s:${c.id}`),e.track(G,{flow:t.id,step:c.id,kind:c.kind,action:"shown"}));let C=u.slice(p+1),m=C.findIndex(_=>_.kind==="condition"),y=(m<0?C:C.slice(0,m)).filter(h).length;return {type:"step",flow:t,step:c,index:a.before,total:a.before+1+y,last:!y&&m<0,...c.kind==="question"?{answer:($=W.get(c.id))!=null?$:c.question?z.get(c.question.key):void 0,back:a.before>0}:{}}},J=()=>{var a,c,u;if(o){let p=o,h=(a=p.flow.followUps)==null?void 0:a[p.reason],C=h?1:0,m=p.plain?1:3+C+((c=p.flow.second)!=null&&c[p.reason]?1:0);return {type:"cancel",screen:p.screen,flow:p.flow,reason:p.reason,...p.screen==="followup"&&h?{followUp:h,answer:p.answer}:{},offer:p.screen==="offer"?p.offer:void 0,...p.screen==="offer"?{round:p.round}:{},price:p.options.price,busy:p.busy,error:p.error,step:p.screen==="survey"?1:p.screen==="followup"?2:p.screen==="offer"?1+C+p.round:m,steps:m}}let t=L();if(t)return t;if(i&&!X){let p=V,h=i;V=null,i=null;let C=p?D(p.flow):void 0;if(p&&C){let m=ge(Z(C)).find(_=>_.id===p.step),y=B(C.id);m&&!m.event&&!((u=b.get(h))!=null&&u.dismissed)&&!y.done.has(m.id)&&(te(y,m.id),Y({flow:C.id,step:m.id,kind:"checklist",action:"completed"}),pe(C)),i=C.id;let $=L();if($)return $;X||(i=null);}else if(l){let m=D(h),y=m?ae(m):void 0;Promise.resolve().then(()=>oe(y));}}let r=d.find(p=>!I.has(p.id));return r?{type:"message",message:r}:null},F=()=>{let t=J();(t==null?void 0:t.type)==="message"&&!k.has(`m:${t.message.id}`)&&(k.add(`m:${t.message.id}`),e.track(Ct,{message:t.message.id,journey:t.message.journey,action:"shown"}));for(let r of [...R])try{r();}catch(a){}},ne=t=>i===t.id?true:i&&D(i)&&!ee(D(i))?false:(i=t.id,e.track(G,{flow:t.id,action:"started"}),F(),true),we=t=>t.audience==="answered"?!!t.answered&&z.get(t.answered.question)===t.answered.option:t.audience!=="signed_in"||!!e.personId(),U=t=>{let r=D(t);return !r||ee(r)},re=(t,r=ae(t))=>{var u;let a=(u=e.path)==null?void 0:u.call(e),c=nt(r);if(c)return U(c);if(tt(r))return false;if(tn(r))return a!==void 0&&vt(r,a);if(en(r))return true;for(let p of P)if(et(r,p))return true;return false},oe=t=>{var u,p;if(!O||i||!l||!e.personId()&&!((u=e.storage)!=null&&u.call(e)))return;let r=(p=e.path)==null?void 0:p.call(e),a=t&&!tt(t)?fe(t):"",c=Ae().find(h=>(nt(ae(h))?U(nt(ae(h))):tn(ae(h))?r!==void 0&&vt(ae(h),r):en(ae(h))||!!a&&fe(ae(h))===a)&&we(h)&&Z(h).length&&!ee(h));c&&ne(c);},Re=(t,r,a)=>{let c=B(a.id);c.done.clear(),c.at.clear(),c.dismissed=false,V={flow:t.id,step:r},i=a.id,e.track(G,{flow:a.id,action:"started",from:t.id}),K(),F();},Fe=(t,r,a)=>{let c=r.question,u=c.type==="text"?a.trim().slice(0,500):a;z.set(c.key,u),W.delete(r.id),te(B(t.id),r.id),e.track(G,{flow:t.id,step:r.id,kind:"question",action:"completed",question:c.key,answer:u,label:Jn(c,u)}),pe(t),K();},N=t=>{K(),ee(t)&&Promise.resolve().then(()=>oe()),F();},Ue=()=>{let t=e.personId();S!==null&&S!==t&&(b.clear(),P.clear(),z.clear(),W.clear(),I.clear(),i=null,V=null,v=void 0),S=t;let r=(async()=>{var u,p,h,C;let a=(u=e.storage)==null?void 0:u.call(e);if(a)try{let m=await a.get(Ne(t));m&&Se(JSON.parse(m));let y=await a.get(Te(t));if(y)for(let _ of JSON.parse(y))typeof _=="string"&&P.add(_);let $=await a.get(Le(t));if($)for(let[_,se]of Object.entries(JSON.parse($)))typeof se=="string"&&z.set(_,se);}catch(m){}let c=be().length>0||!!(n!=null&&n.messages);if(t&&c&&v!==t){v=t;let m=await e.fetchInApp(t).catch(()=>null);if(m&&e.personId()===t){Se(m.onboarding);for(let y of (p=m.events)!=null?p:[])typeof y=="string"&&P.add(fe(y));for(let[y,$]of Object.entries((h=m.answers)!=null?h:{}))typeof $=="string"&&!z.has(y)&&z.set(y,$);d=((C=m.messages)!=null?C:[]).filter(y=>y&&y.id&&y.title);}}t||(d=[]),l=true,oe(),F();})();return w=r.finally(()=>{w===r&&(w=null);}),w},ve=t=>t.round>1?{round:2}:t.rule>=0?{rule:t.rule}:{},Ee=t=>{var c,u,p,h;let r={answer:t.answer,plan:t.options.plan,months:Zn(t.options.customerSince,(c=e.now)==null?void 0:c.call(e))},a=(p=(u=t.flow.rules)==null?void 0:u[t.reason])!=null?p:[];t.rule=a.findIndex(C=>er(C,r)),t.offer=t.rule<0?t.flow.offers[t.reason]:(h=a[t.rule].offer)!=null?h:void 0,t.round=1,t.screen=t.offer?"offer":"confirm";},He=(t,r,a)=>{var u;let c=t.screen==="offer"?t.offer:void 0;return {outcome:r,run:t.run,...t.reason?{reason:t.reason,reasonLabel:(u=t.flow.reasons.find(p=>p.id===t.reason))==null?void 0:u.label}:{},...t.answer?{answer:t.answer}:{},...r==="saved"&&c?{offer:c}:{},...a!=null&&a.trim()?{comment:a.trim().slice(0,500)}:{}}},he=(t,r)=>{var a;e.track(Ve,{action:"finished",run:t.run,version:t.flow.version,outcome:r.outcome,customer:(a=t.options.customer)!=null?a:"consumer",...r.reason?{reason:r.reason}:{},...r.answer?{answer:r.answer}:{},...r.offer?{offer:r.offer.kind,...ve(t)}:{},...r.comment?{comment:r.comment}:{}}),o===t&&(o=null),t.resolve(r),F();},De=(t,r,a)=>{if(t.busy)return;let c=He(t,r,a),u=r==="saved"?t.options.onSave:t.options.onCancel;t.busy=true,t.error=void 0,F(),Promise.resolve().then(()=>u==null?void 0:u(c)).then(()=>he(t,c),()=>{t.busy=false,t.error=Yn,F();});};return {setConfig:t=>{n=t,i&&!D(i)&&(i=null),F();},refresh:Ue,onEvent:t=>{var C;if(t==="$pageview"&&oe(),!t||t.startsWith("$"))return;let r=fe(t),a=!!r&&!P.has(r);a&&P.add(r);let c=D(i),u=false,p=[...c?[c]:[],...be().filter(m=>m.shownBy==="code"&&m.id!==(c==null?void 0:c.id))];for(let m of p){let y=B(m.id),$=false;for(let _ of ge(Z(m)))_.kind==="checklist"&&_.event&&!y.done.has(_.id)&&et(_.event,t)&&(te(y,_.id),$=true,e.track(G,{flow:m.id,step:_.id,kind:_.kind,action:"completed"}));$&&(u=true,pe(m));}if(u||a&&(c||p.length)?(K(),F()):a&&K(),!O||!e.personId()&&!((C=e.storage)!=null&&C.call(e)))return;let h=Ae().find(m=>Z(m).length&&!tt(ae(m))&&et(ae(m),t)&&we(m)&&!ee(m));h&&ne(h);},openCancelFlow:(t={})=>{var h,C;if(o)return o.promise;let r=(h=n==null?void 0:n.cancelFlow)!=null?h:Bn,a=t.customer!=="business"||r.reasons.length<2,c=()=>{},u=new Promise(m=>c=m),p={flow:r,options:t,plain:a,screen:a?"confirm":"survey",round:1,run:Gn(),busy:false,resolve:c,promise:u};return o=p,e.track(Ve,{action:"shown",run:p.run,version:r.version,customer:(C=t.customer)!=null?C:"consumer",plain:a}),F(),u},startOnboarding:t=>{let r=t?D(t):Ae().find(c=>Z(c).length&&!tt(ae(c))&&!nt(ae(c))&&!ee(c));if(!r||!Z(r).length||r.shownBy==="code")return false;let a=B(r.id);return a.dismissed=false,ne(r)},view:J,subscribe:t=>(R.add(t),()=>R.delete(t)),cancel:{pick:t=>{!o||o.busy||o.screen!=="survey"||!o.flow.reasons.some(r=>r.id===t)||(o.reason!==t&&(o.answer=void 0),o.reason=t,o.error=void 0,F());},answer:t=>{let r=o;if(!r||r.busy||r.screen!=="followup")return;let a=t.slice(0,500);r.answer=a.trim()?a:void 0,F();},next:()=>{var r,a;let t=o;if(!(!t||!t.reason)){if(t.screen==="survey")e.track(Ve,{action:"answered",run:t.run,version:t.flow.version,reason:t.reason}),(r=t.flow.followUps)!=null&&r[t.reason]?t.screen="followup":Ee(t);else if(t.screen==="followup")t.answer=(a=t.answer)==null?void 0:a.trim(),Ee(t);else return;F();}},accept:t=>{var a;let r=o;!r||r.screen!=="offer"||!r.reason||(r.busy||e.track(Ve,{action:"offer",run:r.run,version:r.flow.version,reason:r.reason,offer:(a=r.offer)==null?void 0:a.kind,...ve(r),outcome:"accepted"}),De(r,"saved",t));},decline:()=>{var a,c;let t=o;if(!t||t.screen!=="offer"||t.busy)return;e.track(Ve,{action:"offer",run:t.run,version:t.flow.version,reason:t.reason,offer:(a=t.offer)==null?void 0:a.kind,...ve(t),outcome:"declined"});let r=t.round===1&&t.reason?(c=t.flow.second)==null?void 0:c[t.reason]:void 0;r?(t.offer=r,t.rule=void 0,t.round=2):t.screen="confirm",t.error=void 0,F();},confirm:t=>{let r=o;!r||r.screen!=="confirm"||De(r,"cancelled",t);},close:()=>{var a,c;let t=o;if(!t||t.busy)return;let r=He(t,"kept");(c=(a=t.options).onClose)==null||c.call(a,r),he(t,r);}},onboarding:{next:()=>{var a,c;let t=L();if((t==null?void 0:t.type)!=="step")return;if(t.step.kind==="question"){let u=t.step.question,p=(a=W.get(t.step.id))!=null?a:u?z.get(u.key):void 0;if(!u||!rn(u,p))return;Fe(t.flow,t.step,p),F();return}te(B(t.flow.id),t.step.id),e.track(G,{flow:t.flow.id,step:t.step.id,kind:t.step.kind,action:"completed"}),pe(t.flow),K(),F();let r=t.step.kind==="modal"?ot(t.step.url):void 0;r&&((c=e.openUrl)==null||c.call(e,r));},check:t=>{let r=L();if((r==null?void 0:r.type)!=="checklist")return;let a=r.items.find(c=>c.step.id===t);!a||a.done||(te(B(r.flow.id),t),e.track(G,{flow:r.flow.id,step:t,kind:"checklist",action:"completed"}),pe(r.flow),K(),F());},dismiss:()=>{let t=L();!t||t.type!=="step"&&t.type!=="checklist"||(B(t.flow.id).dismissed=true,e.track(G,{flow:t.flow.id,...t.type==="step"?{step:t.step.id}:{},action:"dismissed"}),i=V&&V.flow!==t.flow.id&&D(V.flow)?V.flow:null,V=null,K(),F());},startTour:t=>{var c;let r=L();if((r==null?void 0:r.type)!=="checklist")return false;let a=(c=r.items.find(u=>u.step.id===t))==null?void 0:c.target;return a?(Re(r.flow,t,a),true):false},open:t=>{var u,p;let r=L();if((r==null?void 0:r.type)!=="checklist")return false;let a=r.items.find(h=>h.step.id===t),c=a==null?void 0:a.opens;return !a||!c?false:(e.track(G,{flow:r.flow.id,step:t,kind:"checklist",action:"opened",opens:c.kind}),(c.kind==="tour"||c.kind==="modal")&&a.target?(Re(r.flow,t,a.target),true):(!a.done&&!a.step.event&&(te(B(r.flow.id),t),e.track(G,{flow:r.flow.id,step:t,kind:"checklist",action:"completed"}),pe(r.flow)),K(),F(),c.kind==="page"?(u=e.navigate)==null||u.call(e,c.target.trim()):(p=e.task)==null||p.call(e,t,r.flow),true))},answer:t=>{let r=L();(r==null?void 0:r.type)!=="step"||r.step.kind!=="question"||(W.set(r.step.id,String(t).slice(0,500)),F());},back:()=>{let t=L();if((t==null?void 0:t.type)!=="step"||t.step.kind!=="question"||!t.back)return;let r=ge(Z(t.flow)),a=r.findIndex(u=>u.id===t.step.id),c=B(t.flow.id);for(let u=a-1;u>=0;u--)if(c.done.has(r[u].id)){c.done.delete(r[u].id),c.at.delete(r[u].id);break}K(),F();},item:t=>{let r=D(t);if(!r)return null;let a=b.get(r.id),c=ge(Z(r)).map(h=>{let C=h.question?z.get(h.question.key):void 0;return {...h,done:!!(a!=null&&a.done.has(h.id)),...C!==void 0?{answer:C}:{}}}),u=c.length>0&&c.every(h=>h.done),p=!!(a!=null&&a.dismissed);return {item:r,steps:c,done:u,dismissed:p,eligible:!u&&!p&&we(r)&&re(r)}},seen:t=>{let r=D(t);if(!r||r.shownBy!=="code"||!l)return;k.has(`f:${r.id}`)||(k.add(`f:${r.id}`),e.track(G,{flow:r.id,action:"started"}));let a=b.get(r.id);for(let c of ge(Z(r)))if(!(a!=null&&a.done.has(c.id))&&!k.has(`s:${c.id}`)&&(k.add(`s:${c.id}`),e.track(G,{flow:r.id,step:c.id,kind:c.kind,action:"shown"}),c.kind!=="checklist"))break},complete:(t,r)=>{let a=D(t),c=a&&ge(Z(a)).find(p=>p.id===r);if(!a||!c||c.kind==="question")return;let u=B(a.id);u.done.has(c.id)||(te(u,c.id),e.track(G,{flow:a.id,step:c.id,kind:c.kind,action:"completed"}),N(a));},dismissItem:t=>{let r=D(t);if(!r)return;let a=B(r.id);a.dismissed||(a.dismissed=true,e.track(G,{flow:r.id,action:"dismissed"}),i===r.id&&(i=null),N(r));},answerItem:(t,r,a)=>{let c=D(t),u=c&&ge(Z(c)).find(p=>{var h;return p.kind==="question"&&(p.id===r||((h=p.question)==null?void 0:h.key)===r)});!c||!(u!=null&&u.question)||!rn(u.question,a)||(Fe(c,u,a),N(c));}},finale:()=>ce,accent:()=>n==null?void 0:n.onboardingAccent,answers:()=>Object.fromEntries(z),message:{click:()=>{var a;let t=J();if((t==null?void 0:t.type)!=="message")return;I.add(t.message.id),e.track(Ct,{message:t.message.id,journey:t.message.journey,action:"clicked"});let r=ot(t.message.url);F(),r&&((a=e.openUrl)==null||a.call(e,r));},dismiss:()=>{let t=J();(t==null?void 0:t.type)==="message"&&(I.add(t.message.id),e.track(Ct,{message:t.message.id,journey:t.message.journey,action:"dismissed"}),F());}}}};var tr="ck_pick",nr="ck_origin",st=e=>typeof CSS!="undefined"&&CSS.escape?CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\${n}`),rr=e=>[...e.classList].filter(n=>n.length<30&&!/\d{2,}|[_-][a-z0-9]{5,}$|^(is|has)-|hover|active|focus|open|selected|:|\[/.test(n)).slice(0,2),sn=e=>{let n=e.ownerDocument,o=w=>{try{return n.querySelectorAll(w).length===1}catch(v){return false}},i=e.getAttribute("data-ck-target");if(i)return `[data-ck-target="${i.replace(/"/g,'\\"')}"]`;if(e.id&&!/\d{3,}/.test(e.id)&&o(`#${st(e.id)}`))return `#${st(e.id)}`;let d=[],l=e;for(;l&&l!==n.documentElement&&d.length<6;){if(l!==e&&l.id&&!/\d{3,}/.test(l.id)){d.unshift(`#${st(l.id)}`);break}let w=l.tagName.toLowerCase(),v=rr(l).map(R=>`.${st(R)}`).join(""),S=l.parentElement,b=S?[...S.children].filter(R=>R.tagName===l.tagName):[],I=b.length>1?`:nth-of-type(${b.indexOf(l)+1})`:"";d.unshift(`${w}${v}${I}`);let k=d.join(" > ");if(o(k))return k;l=S;}return d.join(" > ")},an=()=>{var I;if(typeof window=="undefined"||window.top===window)return null;let e=new URLSearchParams(window.location.search);if(e.get(tr)!=="1")return null;let n;try{n=new URL((I=e.get(nr))!=null?I:"").origin;}catch(k){return null}if(!/^https?:\/\//.test(n))return null;let o=k=>window.parent.postMessage(k,n),i=document.createElement("div");i.setAttribute("aria-hidden","true"),Object.assign(i.style,{position:"fixed",zIndex:"2147483647",pointerEvents:"none",border:"2px solid #0ea5e9",background:"rgba(14,165,233,.12)",borderRadius:"6px",transition:"all 60ms linear",display:"none"});let d=document.createElement("div");Object.assign(d.style,{position:"absolute",left:"-2px",bottom:"calc(100% + 4px)",font:"600 11px/1.4 system-ui, sans-serif",color:"#fff",background:"#0c4a6e",padding:"2px 6px",borderRadius:"4px",whiteSpace:"nowrap",maxWidth:"360px",overflow:"hidden",textOverflow:"ellipsis"}),i.appendChild(d),document.body.appendChild(i);let l=null,w=k=>{if(l=k&&k!==i&&!i.contains(k)?k:null,!l){i.style.display="none";return}let R=l.getBoundingClientRect();Object.assign(i.style,{display:"block",left:`${R.left-2}px`,top:`${R.top-2}px`,width:`${R.width+4}px`,height:`${R.height+4}px`}),d.textContent=sn(l);},v=k=>w(document.elementFromPoint(k.clientX,k.clientY)),S=k=>{var O,P;k.preventDefault(),k.stopPropagation();let R=(O=document.elementFromPoint(k.clientX,k.clientY))!=null?O:l;!R||R===i||o({type:"mrrocket:picked",selector:sn(R),text:((P=R.textContent)!=null?P:"").trim().replace(/\s+/g," ").slice(0,80)});},b=k=>{k.key==="Escape"&&o({type:"mrrocket:pick-cancel"});};return window.addEventListener("mousemove",v,true),window.addEventListener("click",S,true),window.addEventListener("keydown",b,true),o({type:"mrrocket:pick-ready"}),()=>{window.removeEventListener("mousemove",v,true),window.removeEventListener("click",S,true),window.removeEventListener("keydown",b,true),i.remove();}};var or={get:e=>{try{return window.localStorage.getItem(e)}catch(n){return null}},set:(e,n)=>{try{window.localStorage.setItem(e,n);}catch(o){}}},cn=()=>{try{for(let e=window.localStorage.length-1;e>=0;e--){let n=window.localStorage.key(e);n!=null&&n.startsWith("mrrocket:onboarding")&&window.localStorage.removeItem(n);}}catch(e){}},dn=e=>({track:e.track,personId:e.personId,auto:e.auto,storage:()=>e.canStore()?or:null,openUrl:n=>window.location.assign(n),path:()=>window.location.pathname,navigate:n=>{var d;let o=(d=e.onNavigate)==null?void 0:d.call(e);if(o)return o(n);let i=ot(n);i&&window.location.assign(i);},task:(n,o)=>{var i,d;return (d=(i=e.onTask)==null?void 0:i.call(e))==null?void 0:d(n,o)},fetchInApp:async n=>{var d;if(!e.apiKey)return null;let o=(d=e.userHash)==null?void 0:d.call(e,n),i=await fetch(`${e.host}/api/sdk/inapp?key=${encodeURIComponent(e.apiKey)}&distinctId=${encodeURIComponent(n)}${o?`&userHash=${o}`:""}`);return Me(i.status),i.ok?await i.json():null}});var ct="mrr_ref",dt="mrr_ref",sr="mrr_ref",ir="mrr_click";var Be=/^[A-Za-z0-9_-]{1,64}$/;var ar=(e,n="ref")=>{let o=new URLSearchParams(e);return cr(i=>o.get(i),n)},cr=(e,n="ref")=>{let o=e(sr);if(o&&Be.test(o)){let d=e(ir);return {code:o,clickId:d&&Be.test(d)?d:null,direct:false}}let i=e(n);return i&&Be.test(i)?{code:i,clickId:null,direct:true}:null},ln=e=>{var n;return `${e.code}.${(n=e.clickId)!=null?n:""}.${e.at}`},it=(e,n=60,o=Date.now())=>{if(!e)return null;let[i,d,l]=e.split("."),w=Number(l);return !i||!Be.test(i)||!Number.isFinite(w)||d&&!Be.test(d)||o-w>n*864e5||w>o+864e5?null:{code:i,clickId:d||null,at:w}};var Q=null,lt=()=>typeof document!="undefined",un=e=>{var o;if(!lt())return;let n=(o=document.cookie.split("; ").find(i=>i.startsWith(`${e}=`)))==null?void 0:o.slice(e.length+1);try{return n?decodeURIComponent(n):void 0}catch(i){return n}},ut=()=>{try{return typeof localStorage=="undefined"?null:localStorage}catch(e){return null}},Et=()=>{var e,n;return Q||(lt()?(n=it(un(ct),3650))!=null?n:it((e=ut())==null?void 0:e.getItem(dt),3650):null)};var at=(e,n)=>{var d;if(!lt())return;let o=Math.max(1,Math.round(n))*86400,i=typeof location!="undefined"&&location.protocol==="https:"?"; secure":"";document.cookie=`${ct}=${encodeURIComponent(ln(e))}; path=/; max-age=${o}; samesite=lax${i}`;try{(d=ut())==null||d.setItem(dt,ln(e));}catch(l){}},ft=()=>{var e;if(lt()){document.cookie=`${ct}=; path=/; max-age=0; samesite=lax`;try{(e=ut())==null||e.removeItem(dt);}catch(n){}}},fn=()=>{Q=null;},pn=async e=>{var i,d,l;let n=ar(e.search,e.param),o=(i=e.now)!=null?i:Date.now();if(!n)return !Q&&e.store&&(Q=(l=it(un(ct),e.days,o))!=null?l:it((d=ut())==null?void 0:d.getItem(dt),e.days,o),Q||ft()),Q;if(Q={code:n.code,clickId:n.clickId,at:o},e.store&&at(Q,e.days),e.beacon)try{let w=await e.beacon({code:n.code,clickId:n.clickId});w&&Q&&Q.code===n.code&&!Q.clickId&&(Q={...Q,clickId:w},e.store&&at(Q,e.days));}catch(w){}return Q},gn=e=>e==="$identify"||!e.startsWith("$");var Ot=3600*24*365,hn=e=>{var o;if(typeof document=="undefined")return;let n=(o=document.cookie.split("; ").find(i=>i.startsWith(`${e}=`)))==null?void 0:o.slice(e.length+1);if(n)try{return decodeURIComponent(n)}catch(i){return n}},pt=(e,n,o)=>{let i=window.location.protocol==="https:"?"; secure":"";document.cookie=`${e}=${encodeURIComponent(n)}; path=/; max-age=${o}; samesite=lax${i}`;},Ye=e=>{document.cookie=`${e}=; path=/; max-age=0; samesite=lax`;},H={utm:{}},wn=()=>{var e;return (e=H.id)!=null?e:H.id=xt()},_t=(e,n)=>{if(e!=="cookies")return wn();let o=hn(_e);if(o)return H.id=o;let i=wn();return pt(_e,i,Ot),i},St=e=>{var d;let n=Date.now(),o=H.session,i=(d=e?hn(Pe):void 0)!=null?d:o&&n-o.last<18e5?o.id:xt();return H.session={id:i,last:n},e&&pt(Pe,i,18e5/1e3),i},Ft=()=>{var o;let e=window.location.href;if(H.url===e)return;H.referrer=(o=H.url)!=null?o:document.referrer||void 0,H.url=e;let n=qt(window.location.search);Object.keys(n).length&&(H.utm=n);},kn=()=>{let e=navigator,n=window;return e.doNotTrack==="1"||n.doNotTrack==="1"||e.globalPrivacyControl===true};var gt=window,lr=()=>{var e,n;return (n=(e=document.currentScript)!=null?e:document.querySelector('script[data-key][src*="sdk"]'))!=null?n:document.querySelector("script[data-key][src*='mrrocket']")},yn=new Set,ue=e=>{yn.has(e)||(yn.add(e),console.warn(`[MRRocket] ${e}`));},ur=()=>{var $t,Pt,Mt,At;let e=lr(),n=s=>{var f;return (f=e==null?void 0:e.getAttribute(`data-${s}`))!=null?f:void 0},o=(s,f)=>{let g=n(s);return g===void 0?f:!["false","0","off","no"].includes(g.trim().toLowerCase())},i=($t=e==null?void 0:e.src)!=null?$t:"",d="";try{d=i?new URL(i,window.location.href).origin:"";}catch(s){d="";}let l=((Pt=n("key"))!=null?Pt:"").trim(),w=((Mt=n("api-host"))!=null?Mt:d).trim().replace(/\/+$/,""),v=n("consent"),S=o("respect-dnt",false),b=o("heatmaps",true),I=o("errors",true),k=n("release"),R=n("attribution"),O=R==="always"||R==="off"?R:"consent",P=n("referral-param")||"ref",q={},T=(s,f)=>{var g;return (g=q[s])!=null?g:q[s]=new Promise((x,E)=>{var Nt;let A=()=>gt[f];if(A())return x(A());let ie=(Nt=n(`${s}-src`))!=null?Nt:i?i.replace(/(\.min)?\.js(\?[^#]*)?(#.*)?$/,`-${s}$1.js?v=${Ze}`):"";if(!ie)return E(new Error(s));let ye=document.createElement("script");ye.async=true,ye.src=ie,ye.onload=()=>A()?x(A()):E(new Error(s)),ye.onerror=()=>E(new Error(s)),document.head.appendChild(ye);}).catch(x=>{throw q[s]=void 0,x})},V=n("theme"),z={theme:V==="light"||V==="dark"?V:"auto",accent:n("accent")},W=new URLSearchParams(window.location.search),me=Vt(W.get(Wt)),ce=W.get(Kt)==="1";ce&&an();let be=W.get(We);if(be!==null){W.delete(We);let s=W.toString();history.replaceState(history.state,"",`${window.location.pathname}${s?`?${s}`:""}${window.location.hash}`);}let Ae=kn(),D=v==="cookies"||v==="off"?v:"cookieless",B=o("replay",false),xe="",Y,te=null,Ce,M=null,ee=false,Ne=false,Te=null,Le=null,pe=window.location.pathname,K=[],Se=new Set,Xe=[],X=()=>S&&Ae?"off":D,L=()=>!ce&&X()!=="off",J=()=>Y!=null?Y:xe,F=()=>X()==="cookies"?J():Y,ne=s=>Jt(te,s);l||ue('No public key. Add data-key="mrr_pub_\u2026" to the script tag; nothing is tracked until then.');let we=(s=false)=>{if(!K.length)return;if(!l){K.length=0;return}let f=`${w}/api/sdk/events`;for(let g of Lt(l,K.splice(0),{v:Ze,errors:I,platform:"web"},ne(F())))s&&"sendBeacon"in navigator&&navigator.sendBeacon(f,g)||fetch(f,{method:"POST",headers:{"content-type":"application/json"},body:g,keepalive:true}).then(E=>{E.status===401?Me(401):E.ok||ue(`Events were rejected with ${E.status}. Check data-key (MRRocket \u203A Settings \u203A Products).`);}).catch(()=>ue(`Could not reach ${w||"this origin"} to send events. Check data-api-host.`));},U=null,re=null,oe=(s,f,g=Date.now(),x)=>{if(!L())return;let E=gn(s)?Et():null;K.push({event:s,props:E?{...f,$referral:{code:E.code,clickId:E.clickId}}:f,distinctId:F(),sessionId:St(X()==="cookies"),ts:g,url:x!=null?x:window.location.href,referrer:H.referrer,...H.utm,screen:{w:window.screen.width,h:window.screen.height}});},Re=(s,f)=>{typeof s!="string"||!s||(oe(s,f),L()&&(U==null||U.event(s)),N.onEvent(s));},Fe={},N=on(dn({host:w,apiKey:l,track:oe,personId:()=>L()?Y:void 0,userHash:ne,canStore:()=>X()==="cookies",auto:o("onboarding",true),onNavigate:()=>Fe.onNavigate,onTask:()=>Fe.onTask})),Ue=false,ve;N.subscribe(()=>{Ue||!N.view()||ce||(Ue=true,T("flows","__mrrocketFlows").then(s=>s.mountFlows(N,z)).catch(()=>{Ue=false,ue("The cancel flow and onboarding dialogs did not load. Check that sdk-flows.js is served next to sdk.js.");}));});let Ee=(s,f)=>{if(!L())return;let g=`${window.location.pathname}|${s}`;Se.has(g)||(Se.add(g),Re("$exposure",{experiment:s,variant:f}));},He=()=>{let s=Yt(M,window.location.href,J(),me);return s!=null&&s.to?(we(true),window.location.replace(s.to),true):(s!=null&&s.experiment&&Ee(s.experiment,s.variant),false)},he=()=>{if(!M)return;let s=document.querySelectorAll("[data-ck-text]");if(!s.length)return;let f=Bt(M,J(),me),g=new Set;s.forEach(x=>{var ie,ye;let E=x.dataset.ckText;if(!E)return;g.add(E),x.dataset.ckDefault===void 0&&(x.dataset.ckDefault=(ie=x.textContent)!=null?ie:"");let A=(ye=f[E])!=null?ye:x.dataset.ckDefault;x.textContent!==A&&(x.textContent=A);});for(let x of M.experiments)x.variants.some(E=>{var A;return Object.keys((A=E.changes)!=null?A:{}).some(ie=>g.has(ie))})&&Ee(x.key,Ke(x.key,M,J(),me));},De=()=>{var s,f;return (f=(s=M==null?void 0:M.referral)==null?void 0:s.cookieDays)!=null?f:60},mt=()=>O==="always"?X()!=="off":O==="consent"&&X()==="cookies",wt=null,t=false,r=()=>{if(!ee||ce)return;if(O==="off"||X()==="off"){fn(),(O==="off"||t)&&ft();return}let s=window.location.href;wt!==s&&(wt=s,pn({search:window.location.search,param:P,store:mt(),days:De(),beacon:l?({code:f,clickId:g})=>fetch(`${w}/api/sdk/affiliate/click`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({key:l,code:f,clickId:g,url:s,referrer:document.referrer||void 0}),keepalive:true}).then(x=>x.ok?x.json():null).then(x=>{var E;return (E=x==null?void 0:x.clickId)!=null?E:null}):void 0}));},a=()=>{let s=mt(),f=Et();s&&f?at(f,De()):!s&&t&&ft(),t=s;},c=0,u=false,p=()=>{var x,E;let s=L()&&B&&!!(M!=null&&M.replay)&&!!l;if(s===u)return;u=s;let f=++c;if(!s){U==null||U.stop(true),U=null;return}let g=(E=(x=M==null?void 0:M.replay)==null?void 0:x.sampleRate)!=null?E:.1;T("replay","__mrrocketReplay").then(A=>A.startReplay({host:w,apiKey:l,sessionId:St(X()==="cookies"),distinctId:F(),identified:!!Y,userHash:ne(F()),sampleRate:g,warn:ue})).then(A=>{f!==c?A==null||A.stop(true):U=A;}).catch(()=>ue("Session recording could not start (the recorder did not load)."));},h=o("messenger",false),C=null,m=s=>{ce||l&&(C!=null||(C=T("messenger","__mrrocketMessenger").then(f=>{var A;let g=ie=>n(`messenger-${ie}`)===void 0?void 0:o(`messenger-${ie}`,true),x=n("messenger-position"),E=(A=n("messenger-theme"))!=null?A:V;return f.mountMessenger({host:w,apiKey:l,distinctId:J,user:()=>Ce,userHash:()=>ne(J()),launcher:h,position:x,corners:n("messenger-corners"),header:n("messenger-header"),font:n("messenger-font"),title:n("messenger-title"),greeting:n("messenger-greeting"),label:n("messenger-label"),askEmail:g("ask-email"),help:g("help"),sound:g("sound"),preview:g("preview"),theme:E==="light"||E==="dark"||E==="auto"?E:void 0,accent:n("accent")})})),C.then(s).catch(()=>{C=null,ue("sdk-messenger.js did not load.");}));},y=n("forms")==="auto",$=false,_=()=>{$||!l||ce||!document.querySelector(y?"form":"form[data-mrrocket-form]")||($=true,T("forms","__mrrocketForms").then(s=>s.watchForms({host:w,apiKey:l,auto:y,distinctId:()=>L()?F():void 0,userHash:ne,identified:()=>!!Y,identify:It,tracking:L,referrer:()=>H.referrer,utm:()=>H.utm})).catch(()=>$=false));},se=()=>{!Ne||!L()||Le===window.location.pathname||(Le=window.location.pathname,Re("$pageview",{path:window.location.pathname}));},de=null,le=()=>{let s=de;b&&s&&s.max>0&&oe("$scroll",{depth:s.max,docH:s.docH,vw:window.innerWidth,vh:window.innerHeight},Date.now(),s.url),de=null;},j=()=>{var E,A;if(!b||!L()||ce)return;let s=document.documentElement,f=Math.max(s.scrollHeight,(A=(E=document.body)==null?void 0:E.scrollHeight)!=null?A:0),g=Dt(),x=window.location.href;(de==null?void 0:de.url)!==x?de={url:x,max:g,docH:f}:g>de.max&&(de={url:x,max:g,docH:f});},Oe=()=>{let s=window.location.pathname;s!==pe&&(pe=s,!(ee&&He())&&(le(),Ft(),U==null||U.page(s),re==null||re.crumb("navigation",s),se(),r(),window.setTimeout(()=>{j(),he(),_();},0)));},ke=()=>{let s=X(),f=Te;Te=s,f==="cookies"&&s!=="cookies"&&(Ye(_e),Ye(Pe)),s==="off"&&(K.length=0,H.session=void 0),f==="cookies"&&s!=="cookies"&&cn(),xe=_t(s),a(),r(),p(),se(),j();},ze=s=>{let{analytics:f,replay:g}=typeof s=="string"?{analytics:s,replay:void 0}:s!=null?s:{};if(f!==void 0&&f!=="cookieless"&&f!=="cookies"&&f!=="off"){ue(`setConsent: "${String(f)}" is not a consent mode. Use "cookieless", "cookies" or "off".`);return}f==="off"&&(K.length=0),f&&(D=f),typeof g=="boolean"&&(B=g),ke(),ee&&N.refresh();},It=(s,f,g)=>{if(typeof s!="string"||!s)return;let x=F();te=zt(te,s,g==null?void 0:g.hash),Y=s,oe("$identify",{...f,id:s,...x&&x!==s?{previousId:x}:{}}),U==null||U.identify(s,ne(s)),X()==="cookies"&&pt(_e,s,Ot),Ce={...f,id:s},he(),ee&&N.refresh();},Je={track:Re,identify:It,reset:()=>{we(),Y=void 0,te=null,Ce=void 0,Se.clear(),X()==="cookies"&&(Ye(_e),Ye(Pe)),H.id=void 0,H.session=void 0,xe=_t(X()),he(),ee&&N.refresh();},captureError:s=>re==null?void 0:re.capture(s,"manual"),setConsent:ze,getFlag:s=>bt(s,M,J(),{...Ce})!==false,getFlagVariant:s=>{let f=bt(s,M,J(),{...Ce});return typeof f=="string"?f:null},getVariant:s=>{let f=Ke(s,M,J(),me);return (M||me[s])&&Ee(s,f),f},ready:s=>{typeof s=="function"&&(ee?window.setTimeout(()=>s(Je),0):Xe.push(s));},getDistinctId:J,cancelFlow:{open:s=>N.openCancelFlow(s)},onboarding:{start:s=>N.startOnboarding(s),get:s=>{let f=N.onboarding.item(s);return f&&!f.done&&!f.dismissed&&N.onboarding.seen(s),f},subscribe:s=>N.subscribe(()=>s()),complete:(s,f)=>N.onboarding.complete(s,f),dismiss:s=>N.onboarding.dismissItem(s),answer:(s,f,g)=>N.onboarding.answerItem(s,f,g),setHandlers:s=>{Fe={onNavigate:typeof(s==null?void 0:s.onNavigate)=="function"?s.onNavigate:void 0,onTask:typeof(s==null?void 0:s.onTask)=="function"?s.onTask:void 0};}},openCancelFlow:s=>N.openCancelFlow(s),startOnboarding:s=>N.startOnboarding(s),paywall:{open:(s,f)=>(ve!=null?ve:ve=T("flows","__mrrocketFlows").then(g=>g.paywallHost({config:()=>M,distinctId:J,track:oe},z))).then(g=>g.open(s,f))},push:{subscribe:s=>{let f=L()?Y:void 0;if(!f)return Promise.resolve({status:"not-signed-in"});let g=window.Notification,x=Promise.resolve(g&&g.permission==="default"&&(s==null?void 0:s.ask)!==false?g.requestPermission():g==null?void 0:g.permission);return T("push","__mrrocketPush").then(E=>E.subscribeWebPush({host:w,apiKey:l,distinctId:f,userHash:ne(f),permission:x},s))},unsubscribe:()=>T("push","__mrrocketPush").then(s=>s.unsubscribeWebPush({host:w,apiKey:l,distinctId:Y,userHash:ne(Y)}))},messenger:{open:s=>m(f=>f.open(s)),close:()=>{C==null?void 0:C.then(s=>s.close()).catch(()=>{});},toggle:()=>m(s=>s.toggle())},openMessenger:()=>m(s=>s.open()),version:Ze};Ft(),ke();let Ie=gt.mrrocket,xn=(At=Ie==null?void 0:Ie.q)!=null?At:[],ht=Ie&&typeof Ie=="object"?Ie:{};Object.assign(ht,Je,{__loaded:true}),delete ht.q,gt.mrrocket=ht;for(let[s,f]of xn){let g=Je[s];if(typeof g=="function")try{g(...Array.from(f!=null?f:[]));}catch(x){console.error(x);}}Ne=true,se(),I&&l&&!ce&&(re=Qt({host:w,apiKey:l,release:k,context:()=>{var s;return {send:L(),distinctId:F(),sessionId:(s=H.session)==null?void 0:s.id,userHash:ne(F())}},warn:ue}),re.crumb("navigation",window.location.pathname));for(let s of ["pushState","replaceState"]){let f=history[s];history[s]=function(...g){let x=f.apply(this,g);return Oe(),x};}window.addEventListener("popstate",Oe);let Cn=new je;document.addEventListener("click",s=>{var A;s.target instanceof Element&&s.target.closest("[data-ck-messenger]")&&(s.preventDefault(),m(ie=>ie.open()));let f=s.target instanceof Element?s.target.closest("[data-ck-goal]"):null;if(f!=null&&f.dataset.ckGoal&&Re(f.dataset.ckGoal,{text:(A=f.textContent)==null?void 0:A.trim().slice(0,80)}),!L())return;let g=Ht(s);if(!g)return;let x=Cn.push(g.x,g.y,Date.now());if((g.label||g.selector)&&(re==null||re.crumb("click",g.label||g.selector)),U==null||U.click(g,x),!b)return;let E={x:g.x,y:g.y,vw:g.vw,vh:g.vh,docH:g.docH,selector:g.selector,label:g.label,dead:!g.interactive};oe("$click",E),x&&oe("$rageclick",E);});let kt=0;window.addEventListener("scroll",()=>{kt||(kt=window.requestAnimationFrame(()=>{kt=0,j();}));},{passive:true}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>j()):j(),window.setInterval(()=>we(),2e3),window.addEventListener("pagehide",()=>{le(),we(true);});let yt=()=>{if(ee=true,He())return;let s=Xt(M,be);s&&Ee(s.experiment,s.variant),document.documentElement.classList.remove("ck-hide"),r(),p(),N.setConfig(M),N.refresh(),h&&(document.body?m():document.addEventListener("DOMContentLoaded",()=>m())),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{he(),_();}):(he(),_());for(let f of Xe.splice(0))try{f(Je);}catch(g){console.error(g);}};l?fetch(`${w}/api/sdk/config?key=${encodeURIComponent(l)}`).then(s=>(s.ok||ue(`Config request to ${w||"this origin"} answered ${s.status}. Check data-key and data-api-host.`),s.ok?s.json():null)).then(s=>{s&&Array.isArray(s.experiments)&&(M=s),yt();}).catch(()=>{ue(`Could not reach ${w||"this origin"}. Check data-api-host. The page keeps its own texts and flags stay off.`),yt();}):yt();},bn;typeof window!="undefined"&&typeof document!="undefined"&&!((bn=gt.mrrocket)!=null&&bn.__loaded)&&ur();
2
2
  })();
package/dist/browser.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * that the build keeps one client chunk: server components import these as client references, while the plain
4
4
  * helpers (`core`, `server`, `proxy`) stay free of the directive.
5
5
  */
6
- export { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, usePaywall, usePush, useVariant, type CockpitProviderProps } from "./client.js";
6
+ export { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, useOnboarding, usePaywall, usePush, useVariant, type CockpitProviderProps } from "./client.js";
7
7
  export { FeedbackBoard, FeedbackWidget, useFeedback, type FeedbackBoardProps, type FeedbackWidgetProps } from "./feedback.js";
8
8
  export { Messenger, useMessenger, type MessengerProps } from "./messenger.js";
9
9
  export { Survey } from "./survey.js";
package/dist/browser.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  // src/browser.ts
4
- import { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, usePaywall, usePush, useVariant } from "./client.js";
4
+ import { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, useOnboarding, usePaywall, usePush, useVariant } from "./client.js";
5
5
  import { FeedbackBoard, FeedbackWidget, useFeedback } from "./feedback.js";
6
6
  import { Messenger, useMessenger } from "./messenger.js";
7
7
  import { Survey } from "./survey.js";
@@ -25,6 +25,7 @@ export {
25
25
  useFlag,
26
26
  useFlagVariant,
27
27
  useMessenger,
28
+ useOnboarding,
28
29
  usePaywall,
29
30
  usePush,
30
31
  useStyles,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser.ts"],"sourcesContent":["\"use client\";\n\n/**\n * Everything of the SDK that needs the browser or React state. It is its own file with the \"use client\" directive so\n * that the build keeps one client chunk: server components import these as client references, while the plain\n * helpers (`core`, `server`, `proxy`) stay free of the directive.\n */\nexport { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, usePaywall, usePush, useVariant, type CockpitProviderProps } from \"./client\";\nexport { FeedbackBoard, FeedbackWidget, useFeedback, type FeedbackBoardProps, type FeedbackWidgetProps } from \"./feedback\";\nexport { Messenger, useMessenger, type MessengerProps } from \"./messenger\";\nexport { Survey } from \"./survey\";\nexport type { CockpitUser } from \"./context\";\nexport {\n type ChangelogEntry,\n type ChatMessage,\n type ChatThread,\n type FeedbackBoardInfo,\n type FeedbackComment,\n type FeedbackList,\n type FeedbackPost,\n type FeedbackRoadmap,\n type PostStatus,\n type SurveyAnswer,\n type SurveyDefinition,\n type SurveyQuestion,\n type SurveyQuestionKind,\n createApi,\n} from \"./api\";\nexport { CSS as WIDGET_CSS, useStyles } from \"./styles\";\n"],"mappings":";;;AAOA,SAAS,iBAAiB,YAAY,MAAM,eAAe,YAAY,SAAS,gBAAgB,YAAY,SAAS,kBAA6C;AAClK,SAAS,eAAe,gBAAgB,mBAAsE;AAC9G,SAAS,WAAW,oBAAyC;AAC7D,SAAS,cAAc;AAEvB;AAAA,EAcI;AAAA,OACG;AACP,SAAgB,KAAY,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../src/browser.ts"],"sourcesContent":["\"use client\";\n\n/**\n * Everything of the SDK that needs the browser or React state. It is its own file with the \"use client\" directive so\n * that the build keeps one client chunk: server components import these as client references, while the plain\n * helpers (`core`, `server`, `proxy`) stay free of the directive.\n */\nexport { CockpitProvider, Experiment, Text, useCancelFlow, useCockpit, useFlag, useFlagVariant, useOnboarding, usePaywall, usePush, useVariant, type CockpitProviderProps } from \"./client\";\nexport { FeedbackBoard, FeedbackWidget, useFeedback, type FeedbackBoardProps, type FeedbackWidgetProps } from \"./feedback\";\nexport { Messenger, useMessenger, type MessengerProps } from \"./messenger\";\nexport { Survey } from \"./survey\";\nexport type { CockpitUser } from \"./context\";\nexport {\n type ChangelogEntry,\n type ChatMessage,\n type ChatThread,\n type FeedbackBoardInfo,\n type FeedbackComment,\n type FeedbackList,\n type FeedbackPost,\n type FeedbackRoadmap,\n type PostStatus,\n type SurveyAnswer,\n type SurveyDefinition,\n type SurveyQuestion,\n type SurveyQuestionKind,\n createApi,\n} from \"./api\";\nexport { CSS as WIDGET_CSS, useStyles } from \"./styles\";\n"],"mappings":";;;AAOA,SAAS,iBAAiB,YAAY,MAAM,eAAe,YAAY,SAAS,gBAAgB,eAAe,YAAY,SAAS,kBAA6C;AACjL,SAAS,eAAe,gBAAgB,mBAAsE;AAC9G,SAAS,WAAW,oBAAyC;AAC7D,SAAS,cAAc;AAEvB;AAAA,EAcI;AAAA,OACG;AACP,SAAgB,KAAY,iBAAiB;","names":[]}
package/dist/client.d.ts CHANGED
@@ -2,7 +2,8 @@ import { type ReactNode } from "react";
2
2
  import { type AttributionMode } from "./referral.js";
3
3
  import { type CockpitConfig, type ConsentChoice, type ConsentMode, type VariantId } from "./core.js";
4
4
  import type { PushResult, WebPushOptions } from "./push-web.js";
5
- import { type CancelFlowOptions, type CancelFlowResult } from "./flows.js";
5
+ import { type CancelFlowOptions, type CancelFlowResult, type OnboardingFlow } from "./flows.js";
6
+ import { type UseOnboarding } from "./onboarding-state.js";
6
7
  import type { FlowsTheme } from "./flows-ui.js";
7
8
  import { type PaywallOptions, type PaywallResult } from "./paywall.js";
8
9
  import { type IdentifyOptions } from "./identity.js";
@@ -65,8 +66,18 @@ export interface CockpitProviderProps {
65
66
  * `useCockpit().startOnboarding()` starts one. In-app messages and `openCancelFlow` work either way.
66
67
  */
67
68
  onboarding?: boolean;
68
- /** The look of the cancel flow, onboarding and message dialogs: `{ theme: "dark", accent: "#0f766e", className }`. */
69
+ /**
70
+ * The look of the cancel flow, onboarding and message dialogs: `{ theme: "dark", accent: "#0f766e", className }`.
71
+ * Without an accent the onboarding dialogs take the product's brand color from MRRocket (0.18.0).
72
+ */
69
73
  appearance?: FlowsTheme;
74
+ /**
75
+ * 0.18.0: opens what a checklist task's "Opens: page or screen" names, with your router (`(target) => router.push(target)`).
76
+ * Without it a path or an http(s) address opens as a normal page load.
77
+ */
78
+ onNavigate?: (target: string) => void;
79
+ /** 0.18.0: a checklist task set to "Opens: your code" was tapped: `(taskId, item) => …`. */
80
+ onTask?: (taskId: string, item: OnboardingFlow) => void;
70
81
  /**
71
82
  * Form leads (0.12.0): a submitted form marked `data-mrrocket-form` becomes a contact in MRRocket (default true).
72
83
  * "auto" also captures any form with an email field (never one with a password field); false captures none. Only
@@ -82,7 +93,7 @@ export interface CockpitProviderProps {
82
93
  * `preview` forces variants for this render, for example from the `ck_preview` search param on the server,
83
94
  * so a Cockpit preview never flickers. Without it the provider reads the param itself after the first render.
84
95
  */
85
- export declare const CockpitProvider: ({ apiKey: apiKeyProp, host: hostProp, preview: forced, embedded: embeddedProp, config: bootstrapConfig, distinctId: bootstrapId, userHash: bootstrapHash, consent: consentProp, respectDnt, replay: replayProp, heatmaps, surveys, errors, release, attribution, referralParam, onboarding, appearance, forms, children, }: CockpitProviderProps) => import("react").JSX.Element;
96
+ export declare const CockpitProvider: ({ apiKey: apiKeyProp, host: hostProp, preview: forced, embedded: embeddedProp, config: bootstrapConfig, distinctId: bootstrapId, userHash: bootstrapHash, consent: consentProp, respectDnt, replay: replayProp, heatmaps, surveys, errors, release, attribution, referralParam, onboarding, appearance, onNavigate, onTask, forms, children, }: CockpitProviderProps) => import("react").JSX.Element;
86
97
  /**
87
98
  * `track`, `identify`, `captureError`, the consent mode, the replay consent and their setter, the visitor id and whether
88
99
  * the experiments and flags have loaded. `setConsent("cookies")` sets the mode, `setConsent({ replay: true })` the
@@ -151,6 +162,15 @@ export declare const Text: ({ id, children }: {
151
162
  export declare const useCancelFlow: () => {
152
163
  open: (options?: CancelFlowOptions) => Promise<CancelFlowResult>;
153
164
  };
165
+ /**
166
+ * 0.18.0: an onboarding item you draw yourself ("Shown by: your code" in MRRocket): its content, the person's progress
167
+ * and the calls that report what they did; MRRocket still counts it and keeps the answers on the contact.
168
+ *
169
+ * const { item, steps, done, complete, dismiss } = useOnboarding("flow_123");
170
+ * if (!item || done) return null;
171
+ * return <MyChecklist title={item.name} tasks={steps} onTick={complete} onClose={dismiss} />;
172
+ */
173
+ export declare const useOnboarding: (id?: string) => UseOnboarding;
154
174
  /**
155
175
  * The paywalls you built in MRRocket › Paywalls, with their pages (benefits, social proof, plans). `open` shows the
156
176
  * placement's paywall page by page; on its last page the button hands the chosen plan to `onPurchase`, where your code
package/dist/client.js CHANGED
@@ -36,6 +36,7 @@ import {
36
36
  import { bodies } from "./batch.js";
37
37
  import { YEAR_S, deleteCookie, enterPage, page, privacySignal, touchSession, visitorId, writeCookie } from "./web-state.js";
38
38
  import { createFlows } from "./flows.js";
39
+ import { useOnboardingItem } from "./onboarding-state.js";
39
40
  import { startPicker } from "./pick.js";
40
41
  import { forgetFlowsStorage, webFlowsEnv } from "./flows-web.js";
41
42
  import { createPaywallHost } from "./paywall.js";
@@ -66,6 +67,8 @@ var CockpitProvider = ({
66
67
  referralParam = "ref",
67
68
  onboarding = true,
68
69
  appearance,
70
+ onNavigate,
71
+ onTask,
69
72
  forms = true,
70
73
  children
71
74
  }) => {
@@ -220,6 +223,8 @@ var CockpitProvider = ({
220
223
  const replayer = useRef(null);
221
224
  const errorer = useRef(null);
222
225
  const flowsRef = useRef(null);
226
+ const handlers = useRef({ onNavigate, onTask });
227
+ handlers.current = { onNavigate, onTask };
223
228
  const flows = flowsRef.current ??= createFlows(
224
229
  webFlowsEnv({
225
230
  host,
@@ -228,7 +233,9 @@ var CockpitProvider = ({
228
233
  personId: () => live.current.tracking && live.current.identified ? live.current.distinctId : void 0,
229
234
  userHash: hashOf,
230
235
  canStore: () => live.current.persist,
231
- auto: onboarding
236
+ auto: onboarding,
237
+ onNavigate: () => handlers.current.onNavigate,
238
+ onTask: () => handlers.current.onTask
232
239
  })
233
240
  );
234
241
  const configNow = useRef(config);
@@ -561,11 +568,13 @@ var CockpitProvider = ({
561
568
  captureError,
562
569
  openCancelFlow,
563
570
  startOnboarding,
571
+ flows,
564
572
  openPaywall,
565
573
  subscribeToPush,
566
574
  unsubscribeFromPush
567
575
  }),
568
576
  [
577
+ flows,
569
578
  apiKey,
570
579
  host,
571
580
  user,
@@ -636,6 +645,10 @@ var useCancelFlow = () => {
636
645
  const { openCancelFlow } = useCtx();
637
646
  return useMemo(() => ({ open: openCancelFlow }), [openCancelFlow]);
638
647
  };
648
+ var useOnboarding = (id) => {
649
+ const { flows, startOnboarding } = useCtx();
650
+ return useOnboardingItem(flows, id, startOnboarding);
651
+ };
639
652
  var usePaywall = () => {
640
653
  const { openPaywall } = useCtx();
641
654
  return useMemo(() => ({ open: openPaywall }), [openPaywall]);
@@ -648,6 +661,7 @@ export {
648
661
  useCockpit,
649
662
  useFlag,
650
663
  useFlagVariant,
664
+ useOnboarding,
651
665
  usePaywall,
652
666
  usePush,
653
667
  useVariant