webpage-section-tracker
Version:
Web analytics/tracking library for browsers and bundlers
1 lines • 28.3 kB
JavaScript
(function(){'use strict';var ce=Object.defineProperty;var an=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var ln=Object.prototype.hasOwnProperty;var _=(e,s)=>()=>(e&&(s=e(e=0)),s);var dn=(e,s)=>{for(var t in s)ce(e,t,{get:s[t],enumerable:true});},un=(e,s,t,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of cn(s))!ln.call(e,i)&&i!==t&&ce(e,i,{get:()=>s[i],enumerable:!(r=an(s,i))||r.enumerable});return e};var pn=e=>un(ce({},"__esModule",{value:true}),e);function Mt(){try{let e=sessionStorage.getItem(j);if(e){let t=JSON.parse(e);return Array.isArray(t.events)?t.events:[]}let s=localStorage.getItem(It);if(s){let t=JSON.parse(s),r=Array.isArray(t.events)?t.events:[];try{localStorage.removeItem(It);}catch{}return r.length>0&&sessionStorage.setItem(j,JSON.stringify({events:r})),r}return []}catch{try{sessionStorage.removeItem(j);}catch{}return []}}function Dt(e){try{let r={events:e.slice(-1e3)};sessionStorage.setItem(j,JSON.stringify(r));}catch{try{let t=e.slice(Math.floor(e.length/2));sessionStorage.setItem(j,JSON.stringify({events:t}));}catch{}}}var j,It,At=_(()=>{j="__stl_tracker_queue_v2",It="__stl_tracker_queue_v1";});function fn(){if(typeof crypto!="undefined"&&"getRandomValues"in crypto){let e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]/2**32}return Math.random()}function Nt(e,s,t){let r=Math.max(1,Math.floor(e)),i=Math.max(0,Math.floor(s)),d=Math.max(i,Math.floor(t)),u=Math.min(d,i*2**(r-1));return Math.floor(fn()*u)}function le(e){let s=Math.max(0,Math.floor(e));return new Promise(t=>setTimeout(t,s))}var Vt=_(()=>{});function _t(e){let s={id:e.sessionId||"unknown",startedAt:e.sessionStart||new Date().toISOString(),pageViews:e.sessionPageViews||1,isNew:e.isNewSession||false},t;e.viewSessionId&&(t={id:e.viewSessionId,parentSessionId:e.sessionId||"unknown",startedAt:e.viewSessionStart||new Date().toISOString(),duration:e.viewDuration||0,engagement:e.viewEngagement||0});let r={id:e.appId||"unknown",env:"production"},i=e.page||"",d={url:i,referrer:e.referrer};try{let c=new URL(i);d.path=c.pathname,d.hash=c.hash,c.search&&(d.query=Object.fromEntries(c.searchParams.entries())),typeof document!="undefined"&&(d.title=document.title);}catch{}let u={timezone:e.tz||Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC",language:e.lang,userAgent:e.ua};e.screen&&(u.screen={width:e.screen.w,height:e.screen.h,pixelRatio:e.screen.dpr});let m=new Set(["appId","page","referrer","tz","lang","ua","screen","sessionId","sessionStart","sessionPageViews","isNewSession","viewSessionId","viewSessionStart","viewDuration","viewEngagement"]),w={};for(let[c,f]of Object.entries(e))!m.has(c)&&f!==void 0&&(w[c]=f);return {session:{browser:s,view:t},environment:{app:r,page:d,device:u},custom:Object.keys(w).length>0?w:void 0}}function mn(e){let{...s}=_t(e.ctx||{});return {type:e.type,timestamp:e.ts,session:s.session,environment:s.environment,data:e.data,user:s.user,custom:s.custom,meta:{sdkVersion:"0.1.2",transport:"fetch"}}}function xt(e){if(!e.events||e.events.length===0)return {events:[],batchMeta:{batchId:Tt(),batchSize:0,createdAt:Date.now()}};let s=e.events[0],t=_t(s.ctx||{}),r=e.events.every(w=>{var c,f;return ((c=w.ctx)==null?void 0:c.sessionId)===((f=s.ctx)==null?void 0:f.sessionId)})?t.session.browser:void 0,i=e.events.every(w=>{var c,f;return ((c=w.ctx)==null?void 0:c.appId)===((f=s.ctx)==null?void 0:f.appId)})?t.environment.app:void 0,d=e.events.every(w=>{var c,f,E,y;return ((c=w.ctx)==null?void 0:c.ua)===((f=s.ctx)==null?void 0:f.ua)&&((E=w.ctx)==null?void 0:E.tz)===((y=s.ctx)==null?void 0:y.tz)})?t.environment.device:void 0,u={};(r||i||d)&&(r&&(u.session={browser:r}),(i||d)&&(u.environment={},i&&(u.environment.app=i),d&&(u.environment.device=d)));let m=e.events.map(w=>{let c=mn(w),f={type:c.type,timestamp:c.timestamp,data:c.data,custom:c.custom};return !r||c.session.browser.id!==r.id?f.session=c.session:c.session.view&&(f.session={view:c.session.view}),(!i||c.environment.app.id!==i.id||!d||c.environment.device.timezone!==d.timezone||c.environment.page)&&(f.environment={},(!i||c.environment.app.id!==i.id)&&(f.environment.app=c.environment.app),c.environment.page&&(f.environment.page=c.environment.page),(!d||c.environment.device.timezone!==d.timezone)&&(f.environment.device=c.environment.device)),c.user&&(f.user=c.user),f});return {common:Object.keys(u).length>0?u:void 0,events:m,batchMeta:{batchId:Tt(),batchSize:m.length,createdAt:Date.now()}}}function Tt(){let e=Date.now().toString(36),s=Math.random().toString(36).substring(2,8);return `batch_${e}_${s}`}var Pt=_(()=>{});function wn(){let e=Date.now().toString(36),s=(++gn).toString(36).padStart(4,"0"),t=Math.random().toString(36).substring(2,8);return `evt_${e}_${t}_${s}`}var gn,Ot,se,kt=_(()=>{At();Vt();Pt();gn=0;Ot="__stl_sent_event_ids",se=class{constructor(s){this.opts=s;this.q=[];this.flushing=false;this.stopped=false;this.attempt=0;this.paused=false;this.sentEventIds=new Set;this.MAX_SENT_IDS=1e3;this.loadSentIds();let t=Mt();if(Array.isArray(t)){let r=t.filter(i=>{let d=i.eventId||i._queueId;return !(d&&this.sentEventIds.has(d))});this.q.push(...r);}this.persist();}enqueue(s,t){if(s.eventId&&(this.q.some(d=>d.eventId===s.eventId)||this.sentEventIds.has(s.eventId)))return;let r={...s,_queueId:s.eventId||wn(),_queuedAt:Date.now(),_attempts:0};if(this.q.push(r),this.q.length>t){let i=this.q.shift();i!=null&&i.eventId?this.sentEventIds.delete(i.eventId):i!=null&&i._queueId&&this.sentEventIds.delete(i._queueId);}this.persist();}size(){return this.q.length}pause(){this.paused=true;}resume(){this.paused=false;}stop(){this.stopped=true;}isPaused(){return this.paused}isStopped(){return this.stopped}async flushLoop(s){for(;!this.stopped;){try{this.paused||await this.flushOnce();}catch{}await le(s);}}async flushOnce(){var s;if(!(this.flushing||this.q.length===0)){this.flushing=true;try{let t=this.q.slice(0,this.opts.batchSize),r=t.filter(c=>{let f=c.eventId||c._queueId;return !(f&&this.sentEventIds.has(f))});if(r.length===0){this.q.splice(0,t.length),this.persist();return}let i=r.map(c=>c.eventId||c._queueId).filter(c=>c!==void 0),d=r.map(c=>{let{_queueId:f,_queuedAt:E,_attempts:y,...L}=c;return L}),u=this.opts.schemaVersion==="v2"?xt({events:d}):{events:d},m=this.opts.schemaVersion==="v2"?this.opts.endpoint+(this.opts.endpoint.includes("?")?"&":"?")+"schema=v2":this.opts.endpoint,w=await this.opts.transportPrimary(m,u);if(w.ok||(w=await this.opts.transportFallback(m,u)),w.ok){i.forEach(f=>{if(this.sentEventIds.add(f),this.sentEventIds.size>this.MAX_SENT_IDS){let E=this.sentEventIds.values().next().value;this.sentEventIds.delete(E);}});let c=t.length;this.q.splice(0,c);try{this.persist();}catch{}this.attempt=0;}else {t.forEach(y=>{y._attempts=(y._attempts||0)+1;}),this.attempt++;let c=(s=w.retryAfterMs)!=null?s:0,f=Nt(this.attempt,this.opts.retryBaseDelayMs,this.opts.retryMaxDelayMs),E=Math.max(c,f);await le(E);}}finally{this.flushing=false;}}}persist(){try{Dt(this.q),this.persistSentIds();}catch{}}persistSentIds(){try{let s=Array.from(this.sentEventIds).slice(-this.MAX_SENT_IDS);localStorage.setItem(Ot,JSON.stringify(s));}catch{}}loadSentIds(){try{let s=localStorage.getItem(Ot);if(s){let t=JSON.parse(s);this.sentEventIds=new Set(t);}}catch{}}};});var Ct,Bt=_(()=>{Ct=async(e,s)=>{if(typeof navigator=="undefined"||typeof navigator.sendBeacon!="function")return {ok:false};try{let t=new Blob([JSON.stringify(s)],{type:"application/json"});return {ok:navigator.sendBeacon(e,t)}}catch{return {ok:false}}};});var de,Rt=_(()=>{de=async(e,s,t)=>{var r;try{let i=new AbortController,d=setTimeout(()=>i.abort(),(r=t==null?void 0:t.timeoutMs)!=null?r:5e3),u=await fetch(e,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s),keepalive:!0,signal:i.signal});clearTimeout(d);let m=parseInt(u.headers.get("Retry-After")||"",10);return {ok:u.ok,status:u.status,retryAfterMs:isFinite(m)?m*1e3:void 0}}catch{return {ok:false}}};});function fe(e){let s=Date.now().toString(36),t;if(typeof crypto!="undefined"&&crypto.randomUUID)t=crypto.randomUUID().replace(/-/g,"").substring(0,16);else if(typeof crypto!="undefined"&&crypto.getRandomValues){let i=new Uint8Array(8);crypto.getRandomValues(i),t=Array.from(i).map(d=>d.toString(16).padStart(2,"0")).join("");}else t=Math.random().toString(36).substring(2,18)+Math.random().toString(36).substring(2,18),t=t.substring(0,16);let r=vn();return `${e}_${s}_${t}_${r.toString(36).padStart(4,"0")}`}function vn(){let e=Date.now();return e!==Lt&&(qt=0,Lt=e),++qt}function K(){try{let e=localStorage.getItem(oe);if(!e)return O;let s=JSON.parse(e);return Date.now()-s.lastActivityAt>18e5?(localStorage.removeItem(oe),O=null,null):(O=s,s)}catch{return O}}function Y(e){O=e;try{localStorage.setItem(oe,JSON.stringify(e));}catch{}}function hn(){let e=K();if(!e){let s=Date.now();e={browserId:fe("br"),firstVisitAt:s,lastActivityAt:s,totalPageViews:0,totalDuration:0,isNew:true},Y(e);}return e}function re(){try{let e=sessionStorage.getItem(ue);if(!e)return B;let s=JSON.parse(e);return B=s,s}catch{return B}}function me(e){B=e;try{sessionStorage.setItem(ue,JSON.stringify(e));}catch{}}function bn(e,s){let t=re();if(!t){let r=Date.now();t={pageId:fe("pg"),browserId:e,openedAt:r,lastActivityAt:r,viewCount:0,isFirstPage:s},me(t);}return t}function Sn(e,s){let t=Date.now(),i={viewId:fe("vw"),pageId:e,browserId:s,loadedAt:t,referrer:typeof document!="undefined"?document.referrer:"",url:typeof window!="undefined"?window.location.href:"",isNewView:true};R=i;try{sessionStorage.setItem(pe,JSON.stringify(i));}catch{}return i}function Ut(){if(R)return R;try{let e=sessionStorage.getItem(pe);if(e){let s=JSON.parse(e);return R=s,s}}catch{}return null}function Jt(){let e=hn(),s=e.isNew,t=bn(e.browserId,s),r=Sn(t.pageId,e.browserId);return e.isNew&&(e.isNew=false,Y(e)),t.viewCount++,t.lastActivityAt=Date.now(),me(t),e.totalPageViews++,e.lastActivityAt=Date.now(),Y(e),{browser:e,page:t,view:r}}function ie(){let e=Ut();if(e){let s=K(),t=re();if(s&&t)return {browser:s,page:t,view:e}}return Jt()}function ge(){let e=Date.now();if(!(e-zt<1e4)){zt=e;try{let s=K();s&&(s.lastActivityAt=e,s.totalDuration=e-s.firstVisitAt,Y(s));let t=re();t&&(t.lastActivityAt=e,me(t));}catch{}}}function Ht(){W||(W=window.setInterval(()=>{if(document.visibilityState==="hidden")return;let e=Date.now();e-Ft>5e3&&(ge(),Ft=e);},5e3));}function $t(){W&&(clearInterval(W),W=void 0);}function jt(){O=null,B=null,R=null;try{localStorage.removeItem(oe),sessionStorage.removeItem(ue),sessionStorage.removeItem(pe);}catch{}}function Wt(){return ie().browser.browserId}function Yt(){let e=ie();return {browserId:e.browser.browserId,browserFirstVisit:e.browser.firstVisitAt,browserLastActivity:e.browser.lastActivityAt,browserTotalViews:e.browser.totalPageViews,browserDuration:e.browser.totalDuration,isNewBrowser:e.browser.isNew,pageId:e.page.pageId,pageOpenedAt:e.page.openedAt,pageViewCount:e.page.viewCount,isFirstPage:e.page.isFirstPage,viewId:e.view.viewId,viewLoadedAt:e.view.loadedAt,viewReferrer:e.view.referrer,viewUrl:e.view.url,isNewView:e.view.isNewView}}function Kt(){}function Xt(){let e=Jt();return Ht(),typeof window!="undefined"&&(window.addEventListener("beforeunload",()=>{$t();let s=Date.now(),t=K();t&&(t.lastActivityAt=s,t.totalDuration=s-t.firstVisitAt,Y(t));}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"?Ht():$t();})),e}function Zt(){return {browser:K(),page:re(),view:Ut(),memoryFallback:{browser:O,page:B,view:R},storage:{localStorage:Qt("localStorage"),sessionStorage:Qt("sessionStorage")}}}function Qt(e){try{let s=e==="localStorage"?localStorage:sessionStorage,t="__storage_test__";return s.setItem(t,t),s.removeItem(t),!0}catch{return false}}var oe,ue,pe,O,B,R,qt,Lt,zt,W,Ft,we=_(()=>{oe="__stl_browser_session",ue="__stl_page_session",pe="__stl_view_session",O=null,B=null,R=null;qt=0,Lt=0;zt=0;Ft=0;});var Gt={};dn(Gt,{Tracker:()=>q});function yn(){let e=Date.now().toString(36),s=(++En).toString(36).padStart(4,"0"),t=Math.random().toString(36).substring(2,8);return `evt_${e}_${t}_${s}`}function ve(e,s){let t=typeof location!="undefined"?location:{},r=typeof navigator!="undefined"?navigator:{},i=typeof screen!="undefined"?screen:{},d=Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC",u=Yt();return {appId:e,page:(t==null?void 0:t.href)||"",referrer:document&&document.referrer||void 0,tz:d,lang:r==null?void 0:r.language,ua:r==null?void 0:r.userAgent,screen:i?{w:i.width,h:i.height,dpr:window==null?void 0:window.devicePixelRatio}:void 0,...u,sessionId:u.browserId,sessionStart:new Date(u.browserFirstVisit).toISOString(),sessionPageViews:u.browserTotalViews,isNewSession:u.isNewBrowser,...s}}var En,q,he=_(()=>{kt();Bt();Rt();we();En=0;q=class{constructor(s){this.paused=false;this.cleanup=()=>{};Xt();let{endpoint:t,appId:r,schemaVersion:i="v1",useBeacon:d=true,batchSize:u=20,flushIntervalMs:m=5e3,maxQueueSize:w=1e3,retryBaseDelayMs:c=1e3,retryMaxDelayMs:f=3e4,sampleRate:E=1,getConsent:y=()=>true,context:L={},fetcher:N}=s;this.opts={endpoint:t,appId:r,schemaVersion:i,useBeacon:d,batchSize:u,flushIntervalMs:m,maxQueueSize:w,retryBaseDelayMs:c,retryMaxDelayMs:f,sampleRate:E,getConsent:y,context:L,fetcher:N};let ae=Math.random()<E,Z=!!y();this.enabled=ae&&Z,this.queue=new se({endpoint:t,batchSize:u,retryBaseDelayMs:c,retryMaxDelayMs:f,schemaVersion:i,transportPrimary:N&&N!==void 0?N:d?Ct:de,transportFallback:de}),this.queue.flushLoop(m);let z=()=>{document.visibilityState==="visible"?this.queue.resume():this.queue.pause();};z();let x=()=>this.queue.resume(),G=()=>this.queue.pause();document.addEventListener("visibilitychange",z),window.addEventListener("focus",x),window.addEventListener("blur",G);let V=()=>this.flush();window.addEventListener("pagehide",V),window.addEventListener("beforeunload",V),this.cleanup=()=>{document.removeEventListener("visibilitychange",z),window.removeEventListener("focus",x),window.removeEventListener("blur",G),window.removeEventListener("pagehide",V),window.removeEventListener("beforeunload",V),this.queue.stop();};}pauseFlushing(){this.paused=true;}resumeFlushing(){this.paused=false;}isEnabled(){return this.enabled}setEnabled(s){this.enabled=s;}track(s,t,r){if(!this.enabled)return;ge();let i={...ve(this.opts.appId,this.opts.context),...r},d={type:s,ts:Date.now(),data:t,ctx:i,eventId:yn()};this.queue.enqueue(d,this.opts.maxQueueSize);}flush(){return this.queue.flushOnce()}pageView(s){this.track("page_view",s,ve(this.opts.appId,this.opts.context));}identify(s,t){this.track("identify",{userId:s,traits:t},ve(this.opts.appId,this.opts.context));}destroy(){this.cleanup(),this.setEnabled(false);}};});he();var X=(e,s,t)=>Math.max(s,Math.min(t,e));function In(e){try{let s=[],t=e;for(;t&&t.parentElement;){let r=t.tagName.toLowerCase(),d=Array.from(t.parentElement.children).filter(u=>u.tagName===t.tagName).indexOf(t)+1;s.push(`${r}[${d}]`),t=t.parentElement;}return s.reverse().join("/")}catch{return}}function Mn(e,s=[],t=5){let r={},i=Array.from(e.attributes).filter(d=>d.name.startsWith("data-"));for(let d of i)if(!(s.length&&!s.includes(d.name))&&(r[d.name]=d.value.slice(0,200),Object.keys(r).length>=t))break;return r}function Dn(e){try{let s=e.id;if(s)return `#${s}`;let t=e.tagName.toLowerCase(),r=e;for(;r&&r.parentElement&&r!==document.body;){let i=r.tagName.toLowerCase(),u=Array.from(r.parentElement.children).filter(m=>m.tagName===r.tagName).indexOf(r)+1;t=`${i}:nth-of-type(${u})${t?" > "+t:""}`,r=r.parentElement;}return t}catch{return}}function An(e){let s=[0,.25,.5,.75,1];if(e.trigger.mode==="immediate"){if(e.trigger.margin){if(e.trigger.margin.includes("px")){let t=Math.abs(parseFloat(e.trigger.margin)),r=typeof window!="undefined"?window.innerHeight:800,i=t/r;return [0,i*.5,i,.5,1-i,1-i*.5,1].filter(d=>d>=0&&d<=1)}else if(e.trigger.margin.includes("%")){let t=Math.abs(parseFloat(e.trigger.margin))/100;return [0,t*.5,t,.5,1-t,1-t*.5,1].filter(r=>r>=0&&r<=1)}}return [0,.1,.5,.9,1]}if(e.trigger.mode==="elementCoverage"){let t=e.trigger.value;return [0,Math.max(0,t-.15),Math.max(0,t-.05),t,Math.min(1,t+.05),Math.min(1,t+.15),1].filter(r=>r>=0&&r<=1)}if(e.trigger.mode==="viewportPosition"){let t=e.trigger.value;return [0,Math.max(0,t-.15),Math.max(0,t-.05),t,Math.min(1,t+.05),Math.min(1,t+.15),1].filter(r=>r>=0&&r<=1)}return s}function Nn(e){let s=Array.from(new Set(e.flat())).sort((u,m)=>u-m);if(s.length<=10)return s;let t=[0,1,.5],r=s.filter(u=>!t.includes(u)),i=Math.ceil(r.length/7),d=r.filter((u,m)=>m%i===0).slice(0,7);return [...t,...d].sort((u,m)=>u-m)}function en(e,s){var Ae,Ne,Ve,Te,_e,xe,Pe,Oe,ke,Ce,Be,Re,qe,Le,ze,Fe,He,$e,Qe,Ue,Je,je,We,Ye,Ke,Xe,Ze,Ge,et,tt,nt,st,ot,rt,it,at,ct,lt,dt,ut,pt,ft,mt,gt,wt,vt,ht,bt;let t=[],r={visible:true,focused:true},i=new Set;function d(){if(i.size>0){let n=t.map(o=>o.state);i.forEach(o=>{try{o(n);}catch{}});}}let u=(()=>{var o,a;let n=(a=(o=s.find(p=>{var l;return (l=p.observer)==null?void 0:l.rootSelector}))==null?void 0:o.observer)==null?void 0:a.rootSelector;return n?document.querySelector(n):null})(),m=s.map(n=>{var o,a;return (a=(o=n.observer)==null?void 0:o.thresholds)!=null?a:An(n)}),w=Nn(m),c=new IntersectionObserver(n=>{let o=Date.now();for(let a of n){let p=t.find(M=>M.el===a.target);if(!p)continue;let l=p.state,{visible:g,coverage:v,viewportTopPct:A,viewportBottomPct:b,viewportCoverage:D,isOversized:S,visibleHeightPx:h}=sn(a,p.cfg);l.elementCoverage=v,l.viewportTopPct=A,l.viewportBottomPct=b,l.viewportCoverage=D,l.isOversized=S,l.visibleHeightPx=h,g&&!l.visibleNow?(l.visibleNow=true,l.firstVisibleAtMs||(l.firstVisibleAtMs=o),r.visible&&r.focused&&(l.lastVisibleAtMs=o,l.hiddenAtMs=void 0,p.cfg.heartbeat.enabled&&Ee(p),p.cfg.initialReport==="progress"?(l.collectedAtMs=o,f(p),x(p),l.lastProgressAtMs=o):p.cfg.initialReport==="snapshot"?(f(p),e.track("element_dwell_snapshot",{selector:l.selector,tag:l.tag,id:l.id,className:l.className,elementSize:l.elementSize,viewport:l.viewport,trackingStartedAt:new Date(l.trackingStartedAtMs).toISOString()})):p.cfg.initialReport==="guarded"&&G(p))):!g&&l.visibleNow&&(l.lastVisibleAtMs&&(l.dwellMs+=o-l.lastVisibleAtMs,l.lastVisibleAtMs=void 0),l.visibleNow=false,l.hiddenAtMs=void 0,p.firstEmitTimer&&(clearTimeout(p.firstEmitTimer),p.firstEmitTimer=void 0,p.firstEmitArming=false),k(p));}},{root:u,threshold:w,rootMargin:(Ae=s[0].observer)==null?void 0:Ae.rootMargin});for(let n of s){let o=document.querySelector(n.selector);if(!o)continue;let a={enabled:(Ve=(Ne=n.heartbeat)==null?void 0:Ne.enabled)!=null?Ve:true,intervalMs:(xe=(Te=n.heartbeat)==null?void 0:Te.intervalMs)!=null?xe:(_e=n.throttleMs)!=null?_e:500,flushPolicy:(Oe=(Pe=n.heartbeat)==null?void 0:Pe.flushPolicy)!=null?Oe:"batch",debounceMs:(Ce=(ke=n.heartbeat)==null?void 0:ke.debounceMs)!=null?Ce:800,adaptive:{enabled:(qe=(Re=(Be=n.heartbeat)==null?void 0:Be.adaptive)==null?void 0:Re.enabled)!=null?qe:true,baseMs:(Qe=(ze=(Le=n.heartbeat)==null?void 0:Le.adaptive)==null?void 0:ze.baseMs)!=null?Qe:($e=(He=(Fe=n.heartbeat)==null?void 0:Fe.intervalMs)!=null?He:n.throttleMs)!=null?$e:500,maxMs:(je=(Je=(Ue=n.heartbeat)==null?void 0:Ue.adaptive)==null?void 0:Je.maxMs)!=null?je:4e3,factor:(Ke=(Ye=(We=n.heartbeat)==null?void 0:We.adaptive)==null?void 0:Ye.factor)!=null?Ke:1.5,resetOnScroll:(Ge=(Ze=(Xe=n.heartbeat)==null?void 0:Xe.adaptive)==null?void 0:Ze.resetOnScroll)!=null?Ge:true,scrollDebounceMs:(nt=(tt=(et=n.heartbeat)==null?void 0:et.adaptive)==null?void 0:tt.scrollDebounceMs)!=null?nt:150}},p={throttleMs:(st=n.throttleMs)!=null?st:500,allowOversizeFallback:(ot=n.allowOversizeFallback)!=null?ot:true,observer:(rt=n.observer)!=null?rt:{},heartbeat:a,meta:{collectStableSelector:(at=(it=n.meta)==null?void 0:it.collectStableSelector)!=null?at:true,collectNthPath:(lt=(ct=n.meta)==null?void 0:ct.collectNthPath)!=null?lt:true,collectDataAttrs:(ut=(dt=n.meta)==null?void 0:dt.collectDataAttrs)!=null?ut:false,dataAttrAllowlist:(ft=(pt=n.meta)==null?void 0:pt.dataAttrAllowlist)!=null?ft:[],maxDataAttrs:(gt=(mt=n.meta)==null?void 0:mt.maxDataAttrs)!=null?gt:5},...n},l=o.getBoundingClientRect(),g={selector:n.selector,tag:o.tagName,id:o.id||void 0,className:o.className||void 0,stableSelector:p.meta.collectStableSelector?Dn(o):void 0,nthPath:p.meta.collectNthPath?In(o):void 0,dataAttrs:p.meta.collectDataAttrs?Mn(o,p.meta.dataAttrAllowlist,p.meta.maxDataAttrs):void 0,elementSize:{w:l.width,h:l.height},viewport:u?(()=>{let v=u.getBoundingClientRect();return {w:v.width,h:v.height}})():{w:window.innerWidth,h:window.innerHeight},trackingStartedAtMs:Date.now(),collectedAtMs:Date.now(),dwellMs:0,visibleNow:false,pageVisible:true,windowFocused:true,basis:n.trigger.mode,elementCoverage:0,viewportTopPct:0};t.push({el:o,cfg:p,state:g}),c.observe(o);}function f(n){let o=n.el,a=n.state,p=o.getBoundingClientRect(),l=u?u.getBoundingClientRect().top:0,g=u?u.getBoundingClientRect().bottom:window.innerHeight,v=u?u.getBoundingClientRect().height:window.innerHeight,A=p.height,b=p.bottom,D=(p.top-l)/v,S=(b-l)/v,h=A>v,M=Math.max(p.top,l),T=Math.min(b,g),P=Math.max(0,T-M),H=0,$=0;P>0&&A>0&&(H=P/A,$=Math.min(1,P/v)),a.elementCoverage=H,a.viewportTopPct=D,a.viewportBottomPct=S,a.viewportCoverage=$,a.isOversized=h,a.visibleHeightPx=P,a.elementSize={w:p.width,h:p.height},a.viewport=u?(()=>{let Q=u.getBoundingClientRect();return {w:Q.width,h:Q.height}})():{w:window.innerWidth,h:window.innerHeight};}let E=[window];u&&E.push(u);let y,L=(bt=(ht=(vt=(wt=t[0])==null?void 0:wt.cfg.heartbeat)==null?void 0:vt.adaptive)==null?void 0:ht.scrollDebounceMs)!=null?bt:150;function N(){y&&clearTimeout(y),y=window.setTimeout(()=>{for(let n of t)n.state.visibleNow&&(f(n),tn(n));},L);}for(let n of E)n.addEventListener("scroll",N,{passive:true});let ae=["scroll","pointermove","keydown","touchstart"],Z=()=>{for(let n of t)n.interacted=true;},z=ae.map(n=>(window.addEventListener(n,Z,{passive:true,once:true}),()=>window.removeEventListener(n,Z)));function x(n){let o=n.state;e.track("element_dwell_progress",{selector:o.selector,tag:o.tag,id:o.id,className:o.className,stableSelector:o.stableSelector,nthPath:o.nthPath,dataAttrs:o.dataAttrs,elementSize:o.elementSize,viewport:o.viewport,firstVisibleAt:o.firstVisibleAtMs?new Date(o.firstVisibleAtMs).toISOString():null,trackingStartedAt:new Date(o.trackingStartedAtMs).toISOString(),collectedAt:new Date(o.collectedAtMs).toISOString(),dwellMs:o.dwellMs,visibleNow:o.visibleNow,pageVisible:o.pageVisible,windowFocused:o.windowFocused,basis:o.basis,elementCoverage:o.elementCoverage,viewportTopPct:o.viewportTopPct,viewportBottomPct:o.viewportBottomPct,viewportCoverage:o.viewportCoverage,isOversized:o.isOversized,visibleHeightPx:o.visibleHeightPx}),d();}function G(n){var D,S;let{initialReport:o,initialGuard:a,trigger:p}=n.cfg;if(o!=="guarded")return;if(a!=null&&a.afterInteraction&&!n.interacted){n.firstEmitArming=true;return}let l=(D=a==null?void 0:a.minStableMs)!=null?D:400,g=(S=a==null?void 0:a.rafPasses)!=null?S:1,v=Date.now(),A=g,b=()=>{let h=n.state;if(!h.visibleNow||!r.visible||!r.focused){n.firstEmitArming=false;return}if((a==null?void 0:a.initialMinCoverage)!=null&&h.elementCoverage<a.initialMinCoverage){n.firstEmitTimer=window.setTimeout(b,50);return}if(A>0){A--,requestAnimationFrame(b);return}if(Date.now()-v<l){n.firstEmitTimer=window.setTimeout(b,50);return}h.collectedAtMs=Date.now(),x(n),n.state.lastProgressAtMs=Date.now(),n.firstEmitArming=false;};n.firstEmitArming=true,b();}function V(n){var a,p,l;k(n);let o=X((a=n.hbNextMs)!=null?a:n.cfg.heartbeat.intervalMs,100,(l=(p=n.cfg.heartbeat.adaptive)==null?void 0:p.maxMs)!=null?l:5e3);n.hbTid=window.setTimeout(()=>Se(n),o);}function Se(n){var b,D,S,h,M;let o=n.state,a=n.cfg.heartbeat,p=(b=a.adaptive)!=null?b:{enabled:false},l=(D=p.factor)!=null?D:1.5,g=(S=p.maxMs)!=null?S:5e3;if(!o.visibleNow||!r.visible||!r.focused||!o.lastVisibleAtMs){if(p.enabled){let T=Math.min(g,Math.floor(((h=n.hbNextMs)!=null?h:a.intervalMs)*l));n.hbNextMs=X(T,100,g);}else n.hbNextMs=a.intervalMs;V(n);return}let v=Date.now(),A=o.hiddenAtMs?Math.min(v,o.hiddenAtMs):v;if(o.dwellMs+=A-o.lastVisibleAtMs,o.lastVisibleAtMs=v,o.collectedAtMs=v,f(n),x(n),o.lastProgressAtMs=v,p.enabled){let T=Math.min(g,Math.floor(((M=n.hbNextMs)!=null?M:a.intervalMs)*l));n.hbNextMs=X(T,100,g);}else n.hbNextMs=a.intervalMs;V(n);}function Ee(n){var p,l,g;if(n.hbTid)return;let o=n.cfg.heartbeat,a=(p=o.adaptive)!=null?p:{enabled:false};n.hbNextMs=a.enabled&&(l=a.baseMs)!=null?l:o.intervalMs,n.hbNextMs=X(n.hbNextMs,100,(g=a.maxMs)!=null?g:5e3),V(n);}function tn(n){var p,l,g;let o=n.cfg.heartbeat,a=(p=o.adaptive)!=null?p:{enabled:false};!a.enabled||a.resetOnScroll===false||(n.hbNextMs=X((l=a.baseMs)!=null?l:o.intervalMs,100,(g=a.maxMs)!=null?g:5e3),k(n),V(n));}function k(n){n.hbTid&&(clearTimeout(n.hbTid),n.hbTid=void 0);}function ee(){let n=Date.now();for(let o of t){let a=o.state;if(!r.visible||!r.focused){a.visibleNow?(a.lastVisibleAtMs&&(a.dwellMs+=n-a.lastVisibleAtMs,a.lastVisibleAtMs=void 0),a.hiddenAtMs=n,k(o),a.collectedAtMs=n,x(o)):(o.firstEmitTimer&&(clearTimeout(o.firstEmitTimer),o.firstEmitTimer=void 0,o.firstEmitArming=false),k(o));continue}a.visibleNow&&(a.lastVisibleAtMs=n,a.hiddenAtMs=void 0,o.cfg.heartbeat.enabled&&!o.hbTid&&Ee(o));}}let ye=()=>{let n=document.visibilityState==="visible";r.visible=n,n?e.resumeFlushing():e.pauseFlushing(),ee();},Ie=()=>{r.focused=true,ee();},Me=()=>{r.focused=false,ee();},te=()=>{r.visible=false,r.focused=false,ee();},F,De=()=>{F&&clearTimeout(F),F=window.setTimeout(()=>{for(let n of t)n.state.visibleNow&&f(n);},200);};document.addEventListener("visibilitychange",ye),window.addEventListener("focus",Ie),window.addEventListener("blur",Me),window.addEventListener("pagehide",te),window.addEventListener("beforeunload",te),window.addEventListener("resize",De);function nn(){for(let n of t)k(n),c.unobserve(n.el);c.disconnect();}return {stop(){document.removeEventListener("visibilitychange",ye),window.removeEventListener("focus",Ie),window.removeEventListener("blur",Me),window.removeEventListener("pagehide",te),window.removeEventListener("beforeunload",te),window.removeEventListener("resize",De);for(let n of E)n.removeEventListener("scroll",N);z.forEach(n=>n()),y&&clearTimeout(y),F&&clearTimeout(F),nn();},getSnapshots(){return t.map(n=>n.state)},onChange(n){return i.add(n),n(t.map(o=>o.state)),()=>i.delete(n)}};function sn(n,o){var P,H,$,Q,St,Et,yt;let a=(H=(P=n.rootBounds)==null?void 0:P.top)!=null?H:0,p=(Q=($=n.rootBounds)==null?void 0:$.bottom)!=null?Q:window.innerHeight,l=(Et=(St=n.rootBounds)==null?void 0:St.height)!=null?Et:window.innerHeight||1,g=n.boundingClientRect,v=g.height,A=g.bottom,b=(g.top-a)/l,D=(A-a)/l,S=v>l,h=n.intersectionRatio,M=0;if(n.isIntersecting&&n.intersectionRect){let I=n.intersectionRect.height;M=Math.min(1,I/l),S&&(h=I/v);}let T=((yt=n.intersectionRect)==null?void 0:yt.height)||0;if(o.trigger.mode==="immediate"){let I=n.isIntersecting;if(I&&o.trigger.margin){let C=o.trigger.margin.match(/^(-?\d+(?:\.\d+)?)%$/),ne=o.trigger.margin.match(/^(-?\d+(?:\.\d+)?)px$/);if(C){let U=parseFloat(C[1])/100;if(U<0){let J=Math.abs(U);I=n.isIntersecting&&(S?M>=J:h>=J);}}else if(ne){let U=parseFloat(ne[1]);if(U<0){let J=Math.abs(U),on=a+J,rn=p-J;I=n.boundingClientRect.bottom>on&&n.boundingClientRect.top<rn;}}}return {visible:I,coverage:h,viewportTopPct:b,viewportBottomPct:D,viewportCoverage:M,isOversized:S,visibleHeightPx:T}}else if(o.trigger.mode==="elementCoverage"){let I=false;if(S&&o.allowOversizeFallback){let C=o.trigger.value,ne=Math.min(o.trigger.value,.8);I=n.isIntersecting&&(h>=C||M>=ne);}else I=n.isIntersecting&&h>=o.trigger.value;return {visible:I,coverage:h,viewportTopPct:b,viewportBottomPct:D,viewportCoverage:M,isOversized:S,visibleHeightPx:T}}else {let I=false;if(S)I=n.isIntersecting&&M>=o.trigger.value;else {let C=b<=o.trigger.value;I=n.isIntersecting&&C;}return {visible:I,coverage:h,viewportTopPct:b,viewportBottomPct:D,viewportCoverage:M,isOversized:S,visibleHeightPx:T}}}}function be(e){return new(Vn())(e)}function Vn(){return Tn()}function Tn(){let{Tracker:e}=(he(),pn(Gt));return e}we();typeof window!="undefined"&&(window.StlTracker={Tracker:q,createTracker:be,monitorElementDwell:en,getSessionId:Wt,getSessionMetadata:ie,resetSession:jt,logSessionInfo:Kt,getSessionDebugInfo:Zt,create:be});})();