UNPKG

webpage-section-tracker

Version:
2 lines (1 loc) 30.2 kB
var de=Object.defineProperty;var en=Object.getOwnPropertyDescriptor;var tn=Object.getOwnPropertyNames;var nn=Object.prototype.hasOwnProperty;var _=(e,s)=>()=>(e&&(s=e(e=0)),s);var sn=(e,s)=>{for(var t in s)de(e,t,{get:s[t],enumerable:!0})},on=(e,s,t,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of tn(s))!nn.call(e,i)&&i!==t&&de(e,i,{get:()=>s[i],enumerable:!(r=en(s,i))||r.enumerable});return e};var rn=e=>on(de({},"__esModule",{value:!0}),e);function Mt(){try{let e=sessionStorage.getItem(W);if(e){let t=JSON.parse(e);return Array.isArray(t.events)?t.events:[]}let s=localStorage.getItem(It);if(s){typeof process!="undefined"&&process.env.NODE_ENV;let t=JSON.parse(s),r=Array.isArray(t.events)?t.events:[];try{localStorage.removeItem(It)}catch{}return r.length>0&&sessionStorage.setItem(W,JSON.stringify({events:r})),r}return[]}catch{typeof process!="undefined"&&process.env.NODE_ENV;try{sessionStorage.removeItem(W)}catch{typeof process!="undefined"&&process.env.NODE_ENV}return[]}}function Dt(e){try{let r={events:e.slice(-1e3)};sessionStorage.setItem(W,JSON.stringify(r))}catch{typeof process!="undefined"&&process.env.NODE_ENV;try{let t=e.slice(Math.floor(e.length/2));sessionStorage.setItem(W,JSON.stringify({events:t}))}catch{typeof process!="undefined"&&process.env.NODE_ENV}}}var W,It,At=_(()=>{"use strict";W="__stl_tracker_queue_v2",It="__stl_tracker_queue_v1"});function an(){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(an()*u)}function ue(e){let s=Math.max(0,Math.floor(e));return new Promise(t=>setTimeout(t,s))}var Vt=_(()=>{"use strict"});function _t(e){let s={id:e.sessionId||"unknown",startedAt:e.sessionStart||new Date().toISOString(),pageViews:e.sessionPageViews||1,isNew:e.isNewSession||!1},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:process.env.NODE_ENV==="production"?"production":"development"},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{typeof process!="undefined"&&process.env.NODE_ENV}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 cn(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=cn(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=_(()=>{"use strict"});function dn(){let e=Date.now().toString(36),s=(++ln).toString(36).padStart(4,"0"),t=Math.random().toString(36).substring(2,8);return`evt_${e}_${t}_${s}`}var ln,Ot,se,kt=_(()=>{"use strict";At();Vt();Pt();ln=0;Ot="__stl_sent_event_ids",se=class{constructor(s){this.opts=s;this.q=[];this.flushing=!1;this.stopped=!1;this.attempt=0;this.paused=!1;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)?(typeof process!="undefined"&&process.env.NODE_ENV,!1):!0});typeof process!="undefined"&&process.env.NODE_ENV,this.q.push(...r)}this.persist()}enqueue(s,t){if(s.eventId){if(this.q.some(d=>d.eventId===s.eventId)){typeof process!="undefined"&&process.env.NODE_ENV;return}if(this.sentEventIds.has(s.eventId)){typeof process!="undefined"&&process.env.NODE_ENV;return}}let r={...s,_queueId:s.eventId||dn(),_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=!0}resume(){this.paused=!1}stop(){this.stopped=!0}isPaused(){return this.paused}isStopped(){return this.stopped}async flushLoop(s){for(;!this.stopped;){try{this.paused||await this.flushOnce()}catch{typeof process!="undefined"&&process.env.NODE_ENV}await ue(s)}}async flushOnce(){var s;if(!(this.flushing||this.q.length===0)){this.flushing=!0;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)?(typeof process!="undefined"&&process.env.NODE_ENV,!1):!0});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,...z}=c;return z}),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;typeof process!="undefined"&&process.env.NODE_ENV;let 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{typeof process!="undefined"&&process.env.NODE_ENV}this.attempt=0,typeof process!="undefined"&&process.env.NODE_ENV}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);typeof process!="undefined"&&process.env.NODE_ENV,await ue(E)}}finally{this.flushing=!1}}}persist(){try{Dt(this.q),this.persistSentIds()}catch{typeof process!="undefined"&&process.env.NODE_ENV}}persistSentIds(){try{let s=Array.from(this.sentEventIds).slice(-this.MAX_SENT_IDS);localStorage.setItem(Ot,JSON.stringify(s))}catch{typeof process!="undefined"&&process.env.NODE_ENV}}loadSentIds(){try{let s=localStorage.getItem(Ot);if(s){let t=JSON.parse(s);this.sentEventIds=new Set(t),typeof process!="undefined"&&process.env.NODE_ENV}}catch{typeof process!="undefined"&&process.env.NODE_ENV}}}});var Ct,Bt=_(()=>{"use strict";Ct=async(e,s)=>{if(typeof navigator=="undefined"||typeof navigator.sendBeacon!="function")return{ok:!1};try{let t=new Blob([JSON.stringify(s)],{type:"application/json"});return{ok:navigator.sendBeacon(e,t)}}catch{return typeof process!="undefined"&&process.env.NODE_ENV,{ok:!1}}}});var pe,Rt=_(()=>{"use strict";pe=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 typeof process!="undefined"&&process.env.NODE_ENV,{ok:!1}}}});function ge(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=un();return`${e}_${s}_${t}_${r.toString(36).padStart(4,"0")}`}function un(){let e=Date.now();return e!==Lt&&(qt=0,Lt=e),++qt}function L(){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 q(e){O=e;try{localStorage.setItem(oe,JSON.stringify(e))}catch{typeof process!="undefined"&&process.env.NODE_ENV}}function pn(){let e=L();if(!e){let s=Date.now();e={browserId:ge("br"),firstVisitAt:s,lastActivityAt:s,totalPageViews:0,totalDuration:0,isNew:!0},q(e)}return e}function K(){try{let e=sessionStorage.getItem(fe);if(!e)return B;let s=JSON.parse(e);return B=s,s}catch{return B}}function re(e){B=e;try{sessionStorage.setItem(fe,JSON.stringify(e))}catch{typeof process!="undefined"&&process.env.NODE_ENV}}function fn(e,s){let t=K();if(!t){let r=Date.now();t={pageId:ge("pg"),browserId:e,openedAt:r,lastActivityAt:r,viewCount:0,isFirstPage:s},re(t)}return t}function mn(e,s){let t=Date.now(),i={viewId:ge("vw"),pageId:e,browserId:s,loadedAt:t,referrer:typeof document!="undefined"?document.referrer:"",url:typeof window!="undefined"?window.location.href:"",isNewView:!0};R=i;try{sessionStorage.setItem(me,JSON.stringify(i))}catch{}return i}function Ut(){if(R)return R;try{let e=sessionStorage.getItem(me);if(e){let s=JSON.parse(e);return R=s,s}}catch{}return null}function Jt(){let e=pn(),s=e.isNew,t=fn(e.browserId,s),r=mn(t.pageId,e.browserId);return e.isNew&&(e.isNew=!1,q(e)),t.viewCount++,t.lastActivityAt=Date.now(),re(t),e.totalPageViews++,e.lastActivityAt=Date.now(),q(e),typeof process!="undefined"&&process.env.NODE_ENV,{browser:e,page:t,view:r}}function ie(){let e=Ut();if(e){let s=L(),t=K();if(s&&t)return{browser:s,page:t,view:e}}return Jt()}function ae(){let e=Date.now();if(!(e-zt<1e4)){zt=e;try{let s=L();s&&(s.lastActivityAt=e,s.totalDuration=e-s.firstVisitAt,q(s));let t=K();t&&(t.lastActivityAt=e,re(t))}catch{typeof process!="undefined"&&process.env.NODE_ENV}}}function gn(){let e=L();e&&(e.totalPageViews++,e.lastActivityAt=Date.now(),q(e))}function wn(){let e=K();e&&(e.viewCount++,e.lastActivityAt=Date.now(),re(e))}function Ht(){Y||(Y=window.setInterval(()=>{if(document.visibilityState==="hidden")return;let e=Date.now();e-Ft>5e3&&(ae(),Ft=e)},5e3))}function $t(){Y&&(clearInterval(Y),Y=void 0)}function vn(){O=null,B=null,R=null;try{localStorage.removeItem(oe),sessionStorage.removeItem(fe),sessionStorage.removeItem(me)}catch{}}function hn(){return ie().browser.browserId}function we(){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 bn(){if(typeof process!="undefined"&&process.env.NODE_ENV!=="production"){let e=ie()}}function jt(){let e=Jt();return Ht(),typeof window!="undefined"&&(window.addEventListener("beforeunload",()=>{$t();let s=Date.now(),t=L();t&&(t.lastActivityAt=s,t.totalDuration=s-t.firstVisitAt,q(t))}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"?Ht():$t()})),e}function Sn(){return{browser:L(),page:K(),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!1}}var oe,fe,me,O,B,R,qt,Lt,zt,Y,Ft,ve=_(()=>{"use strict";oe="__stl_browser_session",fe="__stl_page_session",me="__stl_view_session",O=null,B=null,R=null;qt=0,Lt=0;zt=0;Ft=0});var Wt={};sn(Wt,{Tracker:()=>ce});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 he(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=we();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,ce,be=_(()=>{"use strict";kt();Bt();Rt();ve();En=0;ce=class{constructor(s){this.paused=!1;this.cleanup=()=>{};jt();let{endpoint:t,appId:r,schemaVersion:i="v1",useBeacon:d=!0,batchSize:u=20,flushIntervalMs:m=5e3,maxQueueSize:w=1e3,retryBaseDelayMs:c=1e3,retryMaxDelayMs:f=3e4,sampleRate:E=1,getConsent:y=()=>!0,context:z={},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:z,fetcher:N},N&&N!==void 0&&d&&typeof process!="undefined"&&process.env.NODE_ENV;let le=Math.random()<E,Z=!!y();this.enabled=le&&Z,this.queue=new se({endpoint:t,batchSize:u,retryBaseDelayMs:c,retryMaxDelayMs:f,schemaVersion:i,transportPrimary:N&&N!==void 0?N:d?Ct:pe,transportFallback:pe}),this.queue.flushLoop(m);let F=()=>{document.visibilityState==="visible"?this.queue.resume():this.queue.pause()};F();let x=()=>this.queue.resume(),G=()=>this.queue.pause();document.addEventListener("visibilitychange",F),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",F),window.removeEventListener("focus",x),window.removeEventListener("blur",G),window.removeEventListener("pagehide",V),window.removeEventListener("beforeunload",V),this.queue.stop()}}pauseFlushing(){this.paused=!0}resumeFlushing(){this.paused=!1}isEnabled(){return this.enabled}setEnabled(s){this.enabled=s}track(s,t,r){if(!this.enabled)return;ae();let i={...he(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,he(this.opts.appId,this.opts.context))}identify(s,t){this.track("identify",{userId:s,traits:t},he(this.opts.appId,this.opts.context))}destroy(){this.cleanup(),this.setEnabled(!1)}}});be();ve();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{typeof process!="undefined"&&process.env.NODE_ENV;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{typeof process!="undefined"&&process.env.NODE_ENV;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 Vn(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:!0,focused:!0},i=new Set;function d(){if(i.size>0){let n=t.map(o=>o.state);i.forEach(o=>{try{o(n)}catch{typeof process!="undefined"&&process.env.NODE_ENV}})}}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);typeof process!="undefined"&&process.env.NODE_ENV;let 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}=Xt(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=!0,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=!1,l.hiddenAtMs=void 0,p.firstEmitTimer&&(clearTimeout(p.firstEmitTimer),p.firstEmitTimer=void 0,p.firstEmitArming=!1),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:!0,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:!0,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:!0,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:!0,observer:(rt=n.observer)!=null?rt:{},heartbeat:a,meta:{collectStableSelector:(at=(it=n.meta)==null?void 0:it.collectStableSelector)!=null?at:!0,collectNthPath:(lt=(ct=n.meta)==null?void 0:ct.collectNthPath)!=null?lt:!0,collectDataAttrs:(ut=(dt=n.meta)==null?void 0:dt.collectDataAttrs)!=null?ut:!1,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:!1,pageVisible:!0,windowFocused:!0,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),$=0,Q=0;P>0&&A>0&&($=P/A,Q=Math.min(1,P/v)),a.elementCoverage=$,a.viewportTopPct=D,a.viewportBottomPct=S,a.viewportCoverage=Q,a.isOversized=h,a.visibleHeightPx=P,a.elementSize={w:p.width,h:p.height},a.viewport=u?(()=>{let U=u.getBoundingClientRect();return{w:U.width,h:U.height}})():{w:window.innerWidth,h:window.innerHeight}}let E=[window];u&&E.push(u);let y,z=(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),Yt(n))},z)}for(let n of E)n.addEventListener("scroll",N,{passive:!0});let le=["scroll","pointermove","keydown","touchstart"],Z=()=>{for(let n of t)n.interacted=!0},F=le.map(n=>(window.addEventListener(n,Z,{passive:!0,once:!0}),()=>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=!0;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=!1;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=!1};n.firstEmitArming=!0,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:!1},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:!1};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 Yt(n){var p,l,g;let o=n.cfg.heartbeat,a=(p=o.adaptive)!=null?p:{enabled:!1};!a.enabled||a.resetOnScroll===!1||(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=!1),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=!0,ee()},Me=()=>{r.focused=!1,ee()},te=()=>{r.visible=!1,r.focused=!1,ee()},H,De=()=>{H&&clearTimeout(H),H=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 Kt(){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);F.forEach(n=>n()),y&&clearTimeout(y),H&&clearTimeout(H),Kt()},getSnapshots(){return t.map(n=>n.state)},onChange(n){return i.add(n),n(t.map(o=>o.state)),()=>i.delete(n)}};function Xt(n,o){var P,$,Q,U,St,Et,yt;let a=($=(P=n.rootBounds)==null?void 0:P.top)!=null?$:0,p=(U=(Q=n.rootBounds)==null?void 0:Q.bottom)!=null?U: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 J=parseFloat(C[1])/100;if(J<0){let j=Math.abs(J);I=n.isIntersecting&&(S?M>=j:h>=j)}}else if(ne){let J=parseFloat(ne[1]);if(J<0){let j=Math.abs(J),Zt=a+j,Gt=p-j;if(I=n.boundingClientRect.bottom>Zt&&n.boundingClientRect.top<Gt,typeof process!="undefined"&&process.env.NODE_ENV!=="production"){let Pn=Math.round(n.boundingClientRect.top-a),On=Math.round(p-n.boundingClientRect.bottom)}}}}return{visible:I,coverage:h,viewportTopPct:b,viewportBottomPct:D,viewportCoverage:M,isOversized:S,visibleHeightPx:T}}else if(o.trigger.mode==="elementCoverage"){let I=!1;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=!1;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 Xn(e){return new(Tn())(e)}function Tn(){return _n()}function _n(){let{Tracker:e}=(be(),rn(Wt));return e}export{ce as Tracker,Xn as createTracker,we as getSessionContext,Sn as getSessionDebugInfo,hn as getSessionId,ie as getSessionMetadata,gn as incrementPageView,wn as incrementViewCount,bn as logSessionInfo,Vn as monitorElementDwell,vn as resetSession,ae as touchSession};