@outlit/browser 0.0.0-canary-202601161920-3feb1db-20260116192046 → 0.0.0-canary-202601180636-75a847c-20260118063608
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +6 -8
- package/dist/index.d.ts +6 -8
- package/dist/index.js +56 -55
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -50
- package/dist/index.mjs.map +1 -1
- package/dist/outlit.global.js +1 -1
- package/dist/outlit.global.js.map +1 -1
- package/dist/react/index.d.mts +18 -21
- package/dist/react/index.d.ts +18 -21
- package/dist/react/index.js +91 -41
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +92 -41
- package/dist/react/index.mjs.map +1 -1
- package/dist/{tracker-DK-2gYCi.d.mts → tracker-BY_JTlOP.d.mts} +23 -40
- package/dist/{tracker-DK-2gYCi.d.ts → tracker-BY_JTlOP.d.ts} +23 -40
- package/package.json +9 -2
package/dist/outlit.global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Outlit=(()=>{var _=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var de=Object.prototype.hasOwnProperty;var me=(t,e)=>{for(var i in e)_(t,i,{get:e[i],enumerable:!0})},fe=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ce(e))!de.call(t,r)&&r!==i&&_(t,r,{get:()=>e[r],enumerable:!(n=ue(e,r))||n.enumerable});return t};var ge=t=>fe(_({},"__esModule",{value:!0}),t);var ze={};me(ze,{outlit:()=>O});var D="https://app.outlit.ai",pe=["password","passwd","pass","pwd","token","secret","api_key","apikey","api-key","credit_card","creditcard","credit-card","cc_number","ccnumber","card_number","cardnumber","cvv","cvc","ssn","social_security","socialsecurity","bank_account","bankaccount","routing_number","routingnumber"];function u(t){try{let i=new URL(t).searchParams,n={};return i.has("utm_source")&&(n.source=i.get("utm_source")??void 0),i.has("utm_medium")&&(n.medium=i.get("utm_medium")??void 0),i.has("utm_campaign")&&(n.campaign=i.get("utm_campaign")??void 0),i.has("utm_term")&&(n.term=i.get("utm_term")??void 0),i.has("utm_content")&&(n.content=i.get("utm_content")??void 0),Object.keys(n).length>0?n:void 0}catch{return}}function c(t){try{return new URL(t).pathname}catch{return"/"}}function he(t,e){let i=t.toLowerCase().replace(/[-_\s]/g,"");return e.some(n=>{let r=n.toLowerCase().replace(/[-_\s]/g,"");return i.includes(r)})}function ve(t){let e=t.replace(/[\s-]/g,"");return!!(/^\d{13,19}$/.test(e)||/^\d{9}$/.test(e)||/^\d{3}-\d{2}-\d{4}$/.test(t))}function R(t,e){if(!t)return;let i=e??pe,n={};for(let[r,s]of Object.entries(t))he(r,i)||ve(s)||(n[r]=s);return Object.keys(n).length>0?n:void 0}function S(t){return!t||typeof t!="string"?!1:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.trim())}var ye=[/^e?-?mail$/i,/^email[_-]?address$/i,/^user[_-]?email$/i,/^work[_-]?email$/i,/^contact[_-]?email$/i,/^primary[_-]?email$/i,/^business[_-]?email$/i],be=[/^name$/i,/^full[_-]?name$/i,/^your[_-]?name$/i,/^customer[_-]?name$/i,/^contact[_-]?name$/i,/^display[_-]?name$/i],Te=[/^first[_-]?name$/i,/^firstname$/i,/^first$/i,/^fname$/i,/^given[_-]?name$/i,/^forename$/i],ke=[/^last[_-]?name$/i,/^lastname$/i,/^last$/i,/^lname$/i,/^surname$/i,/^family[_-]?name$/i];function b(t,e){let i=t.trim();return e.some(n=>n.test(i))}function Ie(t,e){if(e){for(let[i,n]of e.entries())if(n==="email"){let r=t[i];if(r&&S(r))return r.trim()}}for(let[i,n]of Object.entries(t))if(b(i,ye)&&S(n))return n.trim();for(let i of Object.values(t))if(S(i))return i.trim()}function Ee(t){let e,i,n;for(let[s,a]of Object.entries(t)){let o=a?.trim();o&&(!e&&b(s,be)&&(e=o),!i&&b(s,Te)&&(i=o),!n&&b(s,ke)&&(n=o))}let r={};return e?r.name=e:i&&n?(r.name=`${i} ${n}`,r.firstName=i,r.lastName=n):i?r.firstName=i:n&&(r.lastName=n),r}function L(t,e){let i=Ie(t,e);if(!i)return;let n=Ee(t);return{email:i,...n}}function N(t){let{url:e,referrer:i,timestamp:n,title:r}=t;return{type:"pageview",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),title:r}}function P(t){let{url:e,referrer:i,timestamp:n,formId:r,formFields:s}=t;return{type:"form",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),formId:r,formFields:s}}function M(t){let{url:e,referrer:i,timestamp:n,email:r,userId:s,traits:a}=t;return{type:"identify",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),email:r,userId:s,traits:a}}function F(t){let{url:e,referrer:i,timestamp:n,eventName:r,properties:s}=t;return{type:"custom",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),eventName:r,properties:s}}function $(t){let{url:e,referrer:i,timestamp:n,provider:r,eventType:s,startTime:a,endTime:o,duration:g,isRecurring:l,inviteeEmail:f,inviteeName:le}=t;return{type:"calendar",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),provider:r,eventType:s,startTime:a,endTime:o,duration:g,isRecurring:l,inviteeEmail:f,inviteeName:le}}function B(t){let{url:e,referrer:i,timestamp:n,activeTimeMs:r,totalTimeMs:s,sessionId:a}=t;return{type:"engagement",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),activeTimeMs:r,totalTimeMs:s,sessionId:a}}function V(t){let{url:e,referrer:i,timestamp:n,stage:r,properties:s}=t;return{type:"stage",timestamp:n??Date.now(),url:e,path:c(e),referrer:i,utm:u(e),stage:r,properties:s}}function q(t,e,i,n,r){let s={visitorId:t,source:e,events:i};return r&&(s.sessionId=r),n&&(n.email||n.userId)&&(s.userIdentity={...n.email&&{email:n.email},...n.userId&&{userId:n.userId}}),s}var T=null,z=null;function H(t){T=t,j(),we()}function j(){if(!T)return;let t=window.location.href,e=document.referrer,i=document.title;t!==z&&(z=t,T(t,e,i))}function x(){setTimeout(j,10)}function we(){window.addEventListener("popstate",()=>{x()});let t=history.pushState,e=history.replaceState;history.pushState=function(...i){t.apply(this,i),x()},history.replaceState=function(...i){e.apply(this,i),x()}}var k=null,K,I=null;function Q(t,e,i){k=t,K=e,I=i??null,document.addEventListener("submit",Y,!0)}function Y(t){if(!k)return;let e=t.target;if(!(e instanceof HTMLFormElement))return;let i=window.location.href,n=e.id||e.name||void 0,r=new FormData(e),s={},a=new Map,o=e.querySelectorAll("input, select, textarea");for(let l of o){let f=l.getAttribute("name");f&&l instanceof HTMLInputElement&&a.set(f,l.type)}r.forEach((l,f)=>{typeof l=="string"&&(s[f]=l)});let g=R(s,K);if(I){let l=L(s,a);l&&I(l)}g&&Object.keys(g).length>0&&k(i,n,g)}function G(){T=null,k=null,I=null,document.removeEventListener("submit",Y,!0)}var d=null,E=!1,p=0,C=!1,h=null,_e=10,Se=200,xe=2e3;function J(t){let e={provider:"cal.com"};if(t.title){e.eventType=t.title;let i=t.title.match(/between .+ and (.+)$/i);i?.[1]&&(e.inviteeName=i[1].trim())}if(t.startTime&&(e.startTime=t.startTime),t.endTime&&(e.endTime=t.endTime),t.startTime&&t.endTime){let i=new Date(t.startTime),n=new Date(t.endTime);e.duration=Math.round((n.getTime()-i.getTime())/6e4)}return t.isRecurring!==void 0&&(e.isRecurring=t.isRecurring),e}function X(){if(!(typeof window>"u")&&!C){if(p++,"Cal"in window){let t=window.Cal;if(typeof t=="function")try{t("on",{action:"bookingSuccessfulV2",callback:Ce}),C=!0;return}catch{}}if(p<_e){let t=Math.min(Se*p,xe);setTimeout(X,t)}}}function Ce(t){if(!d)return;let e=t.detail?.data;if(!e||e.uid&&e.uid===h)return;h=e.uid||null;let i=J(e);d.onCalendarBooked(i)}function W(t){if(d){if(Oe(t)){if(t.data.event==="calendly.event_scheduled"){let e=De(t.data.payload);d.onCalendarBooked(e)}return}if(Ue(t)){let e=Ae(t.data);if(e){if(e.uid&&e.uid===h)return;h=e.uid||null;let i=J(e);d.onCalendarBooked(i)}}}}function Ue(t){if(!t.origin.includes("cal.com"))return!1;let e=t.data;if(!e||typeof e!="object")return!1;let i=e.type||e.action;return i==="bookingSuccessfulV2"||i==="bookingSuccessful"||i==="booking_successful"}function Ae(t){if(!t||typeof t!="object")return null;let e=t;return e.data&&typeof e.data=="object"?e.data:e.booking&&typeof e.booking=="object"?e.booking:null}function Oe(t){return t.origin==="https://calendly.com"&&t.data&&typeof t.data.event=="string"&&t.data.event.startsWith("calendly.")}function De(t){return{provider:"calendly"}}function Z(t){E||(d=t,E=!0,p=0,window.addEventListener("message",W),X())}function ee(){E&&(window.removeEventListener("message",W),d=null,E=!1,C=!1,p=0,h=null)}var Re=3e4,te=1800*1e3,Le=1e3,ie=50,Ne=500,U="outlit_session_id",v="outlit_session_last_activity",A=class{state;options;idleTimeout;timeUpdateInterval=null;boundHandleActivity;boundHandleVisibilityChange;constructor(e){this.options=e,this.idleTimeout=e.idleTimeout??Re,this.state=this.createInitialState(),this.boundHandleActivity=this.handleActivity.bind(this),this.boundHandleVisibilityChange=this.handleVisibilityChange.bind(this),this.setupEventListeners(),this.startTimeUpdateInterval()}getSessionId(){return this.state.sessionId}emitEngagement(){if(this.state.hasEmittedEngagement)return;this.state.hasEmittedEngagement=!0,this.updateActiveTime();let e=Date.now()-this.state.pageEntryTime,i=this.state.activeTimeMs<ie&&e<ie,n=e<Ne;if(!i&&!n){let r=B({url:this.state.currentUrl,referrer:document.referrer,activeTimeMs:this.state.activeTimeMs,totalTimeMs:e,sessionId:this.state.sessionId});this.options.onEngagement(r)}this.resetState()}onNavigation(e){this.emitEngagement(),this.state.currentUrl=e,this.state.currentPath=this.extractPath(e),this.state.pageEntryTime=Date.now(),this.state.activeTimeMs=0,this.state.lastActiveTime=Date.now(),this.state.isUserActive=!0,this.state.hasEmittedEngagement=!1,this.resetIdleTimer()}stop(){this.removeEventListeners(),this.timeUpdateInterval&&(clearInterval(this.timeUpdateInterval),this.timeUpdateInterval=null),this.state.idleTimeoutId&&(clearTimeout(this.state.idleTimeoutId),this.state.idleTimeoutId=null)}createInitialState(){let e=Date.now();return{currentUrl:typeof window<"u"?window.location.href:"",currentPath:typeof window<"u"?window.location.pathname:"/",pageEntryTime:e,lastActiveTime:e,activeTimeMs:0,isPageVisible:typeof document<"u"?document.visibilityState==="visible":!0,isUserActive:!0,idleTimeoutId:null,sessionId:this.getOrCreateSessionId(),hasEmittedEngagement:!1}}resetState(){let e=Date.now();this.state.pageEntryTime=e,this.state.lastActiveTime=e,this.state.activeTimeMs=0,this.state.isUserActive=!0,this.resetIdleTimer()}getOrCreateSessionId(){if(typeof sessionStorage>"u")return this.generateSessionId();try{let e=sessionStorage.getItem(U),i=sessionStorage.getItem(v),n=i?Number.parseInt(i,10):0,r=Date.now();if(e&&n&&r-n<te)return this.updateSessionActivity(),e;let s=this.generateSessionId();return sessionStorage.setItem(U,s),sessionStorage.setItem(v,r.toString()),s}catch{return this.generateSessionId()}}generateSessionId(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let i=Math.random()*16|0;return(e==="x"?i:i&3|8).toString(16)})}updateSessionActivity(){if(!(typeof sessionStorage>"u"))try{sessionStorage.setItem(v,Date.now().toString())}catch{}}checkSessionExpiry(){if(!(typeof sessionStorage>"u"))try{let e=sessionStorage.getItem(v),i=e?Number.parseInt(e,10):0,n=Date.now();if(n-i>=te){let r=this.generateSessionId();sessionStorage.setItem(U,r),this.state.sessionId=r}sessionStorage.setItem(v,n.toString())}catch{}}setupEventListeners(){if(typeof window>"u"||typeof document>"u")return;let e=["mousemove","keydown","click","scroll","touchstart"];for(let i of e)document.addEventListener(i,this.boundHandleActivity,{passive:!0});document.addEventListener("visibilitychange",this.boundHandleVisibilityChange),this.resetIdleTimer()}removeEventListeners(){if(typeof window>"u"||typeof document>"u")return;let e=["mousemove","keydown","click","scroll","touchstart"];for(let i of e)document.removeEventListener(i,this.boundHandleActivity);document.removeEventListener("visibilitychange",this.boundHandleVisibilityChange)}handleActivity(){this.state.isUserActive||(this.checkSessionExpiry(),this.state.lastActiveTime=Date.now()),this.state.isUserActive=!0,this.resetIdleTimer(),this.updateSessionActivity()}handleVisibilityChange(){let e=this.state.isPageVisible,i=document.visibilityState==="visible";e&&!i&&this.updateActiveTime(),this.state.isPageVisible=i,!e&&i&&(this.checkSessionExpiry(),this.state.lastActiveTime=Date.now(),this.state.hasEmittedEngagement=!1,this.updateSessionActivity())}resetIdleTimer(){this.state.idleTimeoutId&&clearTimeout(this.state.idleTimeoutId),this.state.idleTimeoutId=setTimeout(()=>{this.updateActiveTime(),this.state.isUserActive=!1},this.idleTimeout)}startTimeUpdateInterval(){this.timeUpdateInterval||(this.timeUpdateInterval=setInterval(()=>{this.updateActiveTime()},Le))}updateActiveTime(){if(this.state.isPageVisible&&this.state.isUserActive){let e=Date.now();this.state.activeTimeMs+=e-this.state.lastActiveTime,this.state.lastActiveTime=e}}extractPath(e){try{return new URL(e).pathname}catch{return"/"}}},m=null;function ne(t){return m?(console.warn("[Outlit] Session tracking already initialized"),m):(m=new A(t),m)}function re(){m&&(m.stop(),m=null)}var y="outlit_visitor_id";function Pe(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function ae(){try{let i=localStorage.getItem(y);if(i&&se(i))return i}catch{}let t=Fe(y);if(t&&se(t)){try{localStorage.setItem(y,t)}catch{}return t}let e=Pe();return Me(e),e}function Me(t){try{localStorage.setItem(y,t)}catch{}Be(y,t,365)}function se(t){return/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function Fe(t){if(typeof document>"u")return null;let i=`; ${document.cookie}`.split(`; ${t}=`);return i.length===2?i.pop()?.split(";").shift()??null:null}function $e(){if(typeof window>"u")return null;let t=window.location.hostname;if(t==="localhost"||/^(\d{1,3}\.){3}\d{1,3}$/.test(t))return null;let e=t.split(".");if(e.length>=2){let i=["co.uk","com.au","co.nz","org.uk","net.au","com.br"],n=e.slice(-2).join(".");return i.includes(n)&&e.length>=3?e.slice(-3).join("."):e.slice(-2).join(".")}return null}function Be(t,e,i){if(typeof document>"u")return;let n=new Date;n.setTime(n.getTime()+i*24*60*60*1e3);let r=`${t}=${e};expires=${n.toUTCString()};path=/;SameSite=Lax`,s=$e();s&&(r+=`;domain=${s}`),document.cookie=r}var w=class{publicKey;apiHost;visitorId=null;eventQueue=[];flushTimer=null;flushInterval;isInitialized=!1;isTrackingEnabled=!1;options;hasHandledExit=!1;sessionTracker=null;currentUser=null;pendingUser=null;constructor(e){if(this.publicKey=e.publicKey,this.apiHost=e.apiHost??D,this.flushInterval=e.flushInterval??5e3,this.options=e,typeof window<"u"){let i=()=>{this.hasHandledExit||(this.hasHandledExit=!0,this.sessionTracker?.emitEngagement(),this.flush())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?i():this.hasHandledExit=!1}),window.addEventListener("pagehide",i),window.addEventListener("beforeunload",i)}this.isInitialized=!0,e.autoTrack!==!1&&this.enableTracking()}enableTracking(){this.isTrackingEnabled||(this.visitorId=ae(),this.startFlushTimer(),this.initSessionTracking(),this.options.trackPageviews!==!1&&this.initPageviewTracking(),this.options.trackForms!==!1&&this.initFormTracking(this.options.formFieldDenylist),this.options.trackCalendarEmbeds!==!1&&this.initCalendarTracking(),this.isTrackingEnabled=!0,this.pendingUser&&(this.applyUser(this.pendingUser),this.pendingUser=null))}isEnabled(){return this.isTrackingEnabled}track(e,i){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}let n=F({url:window.location.href,referrer:document.referrer,eventName:e,properties:i});this.enqueue(n)}identify(e){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}(e.email||e.userId)&&(this.currentUser={email:e.email,userId:e.userId});let i=M({url:window.location.href,referrer:document.referrer,email:e.email,userId:e.userId,traits:e.traits});this.enqueue(i)}setUser(e){if(!e.email&&!e.userId){console.warn("[Outlit] setUser requires at least email or userId");return}if(!this.isTrackingEnabled){this.pendingUser=e;return}this.applyUser(e)}clearUser(){this.currentUser=null,this.pendingUser=null}applyUser(e){this.currentUser=e,this.identify({email:e.email,userId:e.userId,traits:e.traits})}activate(e){this.sendStageEvent("activated",e)}engaged(e){this.sendStageEvent("engaged",e)}paid(e){this.sendStageEvent("paid",e)}churned(e){this.sendStageEvent("churned",e)}sendStageEvent(e,i){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}if(!this.currentUser){console.warn(`[Outlit] Cannot call ${e}() without setting user identity. Call setUser() or identify() first.`);return}let n=V({url:window.location.href,referrer:document.referrer,stage:e,properties:i});this.enqueue(n)}getVisitorId(){return this.visitorId}async flush(){if(this.eventQueue.length===0)return;let e=[...this.eventQueue];this.eventQueue=[],await this.sendEvents(e)}async shutdown(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),G(),ee(),re(),this.sessionTracker=null,await this.flush()}initSessionTracking(){this.sessionTracker=ne({onEngagement:this.options.trackEngagement!==!1?e=>this.enqueue(e):()=>{},idleTimeout:this.options.idleTimeout})}initPageviewTracking(){H((e,i,n)=>{this.sessionTracker?.onNavigation(e);let r=N({url:e,referrer:i,title:n});this.enqueue(r)})}initFormTracking(e){let i=this.options.autoIdentify!==!1?n=>{let r={};n.name&&(r.name=n.name),n.firstName&&(r.firstName=n.firstName),n.lastName&&(r.lastName=n.lastName),this.identify({email:n.email,traits:Object.keys(r).length>0?r:void 0})}:void 0;Q((n,r,s)=>{let a=P({url:n,referrer:document.referrer,formId:r,formFields:s});this.enqueue(a)},e,i)}initCalendarTracking(){Z({onCalendarBooked:e=>{let i=$({url:window.location.href,referrer:document.referrer,provider:e.provider,eventType:e.eventType,startTime:e.startTime,endTime:e.endTime,duration:e.duration,isRecurring:e.isRecurring,inviteeEmail:e.inviteeEmail,inviteeName:e.inviteeName});this.enqueue(i)}})}enqueue(e){this.eventQueue.push(e),this.eventQueue.length>=10&&this.flush()}startFlushTimer(){this.flushTimer||(this.flushTimer=setInterval(()=>{this.flush()},this.flushInterval))}async sendEvents(e){if(e.length===0||!this.visitorId)return;let i=this.currentUser??void 0,n=this.sessionTracker?.getSessionId(),r=q(this.visitorId,"client",e,i,n),s=`${this.apiHost}/api/i/v1/${this.publicKey}/events`;try{if(typeof navigator<"u"&&navigator.sendBeacon){let a=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(s,a))return}await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),keepalive:!0})}catch(a){console.warn("[Outlit] Failed to send events:",a)}}};var Ve=typeof window<"u"?window.outlit:void 0,qe=Ve?._q||[],O={_initialized:!1,_instance:null,_queue:[],_loaded:!0,init(t){if(this._initialized){console.warn("[Outlit] Already initialized");return}this._instance=new w(t),this._initialized=!0;for(let[e,i]of qe){let n=this;e in n&&typeof n[e]=="function"&&n[e](...i)}for(;this._queue.length>0;)this._queue.shift()?.()},track(t,e){if(!this._initialized||!this._instance){this._queue.push(()=>this.track(t,e));return}this._instance.track(t,e)},identify(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.identify(t));return}this._instance.identify(t)},getVisitorId(){return this._instance?this._instance.getVisitorId():null},enableTracking(){if(!this._initialized||!this._instance){this._queue.push(()=>this.enableTracking());return}this._instance.enableTracking()},isTrackingEnabled(){return this._instance?this._instance.isEnabled():!1},setUser(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.setUser(t));return}this._instance.setUser(t)},clearUser(){if(!this._initialized||!this._instance){this._queue.push(()=>this.clearUser());return}this._instance.clearUser()},activate(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.activate(t));return}this._instance.activate(t)},engaged(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.engaged(t));return}this._instance.engaged(t)},paid(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.paid(t));return}this._instance.paid(t)},churned(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.churned(t));return}this._instance.churned(t)}};function oe(){let t=document.currentScript;if(t||(t=document.querySelector("script[data-public-key]")),!t){console.warn("[Outlit] No script tag found with data-public-key attribute");return}let e=t.getAttribute("data-public-key");if(!e){console.warn("[Outlit] Missing data-public-key attribute on script tag");return}let i=t.getAttribute("data-api-host")??void 0,n=t.getAttribute("data-track-pageviews")!=="false",r=t.getAttribute("data-track-forms")!=="false",s=t.getAttribute("data-auto-track")!=="false",a=t.getAttribute("data-auto-identify")!=="false",o=t.getAttribute("data-track-calendar-embeds")!=="false";O.init({publicKey:e,apiHost:i,trackPageviews:n,trackForms:r,autoTrack:s,autoIdentify:a,trackCalendarEmbeds:o})}typeof window<"u"&&(window.outlit=O,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",oe):oe());return ge(ze);})();
|
|
1
|
+
"use strict";var Outlit=(()=>{var S=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var me=Object.prototype.hasOwnProperty;var fe=(t,e)=>{for(var i in e)S(t,i,{get:e[i],enumerable:!0})},ge=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of de(e))!me.call(t,r)&&r!==i&&S(t,r,{get:()=>e[r],enumerable:!(n=ce(e,r))||n.enumerable});return t};var pe=t=>ge(S({},"__esModule",{value:!0}),t);var He={};fe(He,{outlit:()=>a});var D="https://app.outlit.ai",ve=["password","passwd","pass","pwd","token","secret","api_key","apikey","api-key","credit_card","creditcard","credit-card","cc_number","ccnumber","card_number","cardnumber","cvv","cvc","ssn","social_security","socialsecurity","bank_account","bankaccount","routing_number","routingnumber"];function d(t){try{let i=new URL(t).searchParams,n={};return i.has("utm_source")&&(n.source=i.get("utm_source")??void 0),i.has("utm_medium")&&(n.medium=i.get("utm_medium")??void 0),i.has("utm_campaign")&&(n.campaign=i.get("utm_campaign")??void 0),i.has("utm_term")&&(n.term=i.get("utm_term")??void 0),i.has("utm_content")&&(n.content=i.get("utm_content")??void 0),Object.keys(n).length>0?n:void 0}catch(e){console.warn(`[Outlit] Failed to parse URL for UTM extraction: "${t}"`,e);return}}function m(t){try{return new URL(t).pathname}catch(e){return console.warn(`[Outlit] Failed to parse URL for path extraction: "${t}", defaulting to "/"`,e),"/"}}function he(t,e){let i=t.toLowerCase().replace(/[-_\s]/g,"");return e.some(n=>{let r=n.toLowerCase().replace(/[-_\s]/g,"");return i.includes(r)})}function ye(t){let e=t.replace(/[\s-]/g,"");return!!(/^\d{13,19}$/.test(e)||/^\d{9}$/.test(e)||/^\d{3}-\d{2}-\d{4}$/.test(t))}function B(t,e){if(!t)return;let i=e??ve,n={};for(let[r,s]of Object.entries(t))he(r,i)||ye(s)||(n[r]=s);return Object.keys(n).length>0?n:void 0}function x(t){return!t||typeof t!="string"?!1:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.trim())}var be=[/^e?-?mail$/i,/^email[_-]?address$/i,/^user[_-]?email$/i,/^work[_-]?email$/i,/^contact[_-]?email$/i,/^primary[_-]?email$/i,/^business[_-]?email$/i],Te=[/^name$/i,/^full[_-]?name$/i,/^your[_-]?name$/i,/^customer[_-]?name$/i,/^contact[_-]?name$/i,/^display[_-]?name$/i],ke=[/^first[_-]?name$/i,/^firstname$/i,/^first$/i,/^fname$/i,/^given[_-]?name$/i,/^forename$/i],Ie=[/^last[_-]?name$/i,/^lastname$/i,/^last$/i,/^lname$/i,/^surname$/i,/^family[_-]?name$/i];function T(t,e){let i=t.trim();return e.some(n=>n.test(i))}function we(t,e){if(e){for(let[i,n]of e.entries())if(n==="email"){let r=t[i];if(r&&x(r))return r.trim()}}for(let[i,n]of Object.entries(t))if(T(i,be)&&x(n))return n.trim();for(let i of Object.values(t))if(x(i))return i.trim()}function Ee(t){let e,i,n;for(let[s,o]of Object.entries(t)){let l=o?.trim();l&&(!e&&T(s,Te)&&(e=l),!i&&T(s,ke)&&(i=l),!n&&T(s,Ie)&&(n=l))}let r={};return e?r.name=e:i&&n?(r.name=`${i} ${n}`,r.firstName=i,r.lastName=n):i?r.firstName=i:n&&(r.lastName=n),r}function L(t,e){let i=we(t,e);if(!i)return;let n=Ee(t);return{email:i,...n}}function N(t){let{url:e,referrer:i,timestamp:n,title:r}=t;return{type:"pageview",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),title:r}}function R(t){let{url:e,referrer:i,timestamp:n,formId:r,formFields:s}=t;return{type:"form",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),formId:r,formFields:s}}function F(t){let{url:e,referrer:i,timestamp:n,email:r,userId:s,traits:o}=t;return{type:"identify",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),email:r,userId:s,traits:o}}function M(t){let{url:e,referrer:i,timestamp:n,eventName:r,properties:s}=t;return{type:"custom",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),eventName:r,properties:s}}function P(t){let{url:e,referrer:i,timestamp:n,provider:r,eventType:s,startTime:o,endTime:l,duration:c,isRecurring:u,inviteeEmail:p,inviteeName:ue}=t;return{type:"calendar",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),provider:r,eventType:s,startTime:o,endTime:l,duration:c,isRecurring:u,inviteeEmail:p,inviteeName:ue}}function $(t){let{url:e,referrer:i,timestamp:n,activeTimeMs:r,totalTimeMs:s,sessionId:o}=t;return{type:"engagement",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),activeTimeMs:r,totalTimeMs:s,sessionId:o}}function q(t){let{url:e,referrer:i,timestamp:n,stage:r,properties:s}=t;return{type:"stage",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),stage:r,properties:s}}function V(t){let{url:e,referrer:i,timestamp:n,status:r,customerId:s,stripeCustomerId:o,domain:l,properties:c}=t;return{type:"billing",timestamp:n??Date.now(),url:e,path:m(e),referrer:i,utm:d(e),status:r,customerId:s,stripeCustomerId:o,domain:l,properties:c}}function z(t,e,i,n,r){let s={visitorId:t,source:e,events:i};return r&&(s.sessionId=r),n&&(n.email||n.userId)&&(s.userIdentity={...n.email&&{email:n.email},...n.userId&&{userId:n.userId}}),s}var k=null,H=null;function j(t){k=t,K(),_e()}function K(){if(!k)return;let t=window.location.href,e=document.referrer,i=document.title;t!==H&&(H=t,k(t,e,i))}function C(){setTimeout(K,10)}function _e(){window.addEventListener("popstate",()=>{C()});let t=history.pushState,e=history.replaceState;history.pushState=function(...i){t.apply(this,i),C()},history.replaceState=function(...i){e.apply(this,i),C()}}var I=null,Q,w=null;function Y(t,e,i){I=t,Q=e,w=i??null,document.addEventListener("submit",G,!0)}function G(t){if(!I)return;let e=t.target;if(!(e instanceof HTMLFormElement))return;let i=window.location.href,n=e.id||e.name||void 0,r=new FormData(e),s={},o=new Map,l=e.querySelectorAll("input, select, textarea");for(let u of l){let p=u.getAttribute("name");p&&u instanceof HTMLInputElement&&o.set(p,u.type)}r.forEach((u,p)=>{typeof u=="string"&&(s[p]=u)});let c=B(s,Q);if(w){let u=L(s,o);u&&w(u)}c&&Object.keys(c).length>0&&I(i,n,c)}function J(){k=null,I=null,w=null,document.removeEventListener("submit",G,!0)}var f=null,E=!1,v=0,O=!1,h=null,Se=10,xe=200,Ce=2e3;function X(t){let e={provider:"cal.com"};if(t.title){e.eventType=t.title;let i=t.title.match(/between .+ and (.+)$/i);i?.[1]&&(e.inviteeName=i[1].trim())}if(t.startTime&&(e.startTime=t.startTime),t.endTime&&(e.endTime=t.endTime),t.startTime&&t.endTime){let i=new Date(t.startTime),n=new Date(t.endTime);e.duration=Math.round((n.getTime()-i.getTime())/6e4)}return t.isRecurring!==void 0&&(e.isRecurring=t.isRecurring),e}function W(){if(!(typeof window>"u")&&!O){if(v++,"Cal"in window){let t=window.Cal;if(typeof t=="function")try{t("on",{action:"bookingSuccessfulV2",callback:Oe}),O=!0;return}catch{}}if(v<Se){let t=Math.min(xe*v,Ce);setTimeout(W,t)}}}function Oe(t){if(!f)return;let e=t.detail?.data;if(!e||e.uid&&e.uid===h)return;h=e.uid||null;let i=X(e);f.onCalendarBooked(i)}function Z(t){if(f){if(De(t)){if(t.data.event==="calendly.event_scheduled"){let e=Be(t.data.payload);f.onCalendarBooked(e)}return}if(Ue(t)){let e=Ae(t.data);if(e){if(e.uid&&e.uid===h)return;h=e.uid||null;let i=X(e);f.onCalendarBooked(i)}}}}function Ue(t){if(!t.origin.includes("cal.com"))return!1;let e=t.data;if(!e||typeof e!="object")return!1;let i=e.type||e.action;return i==="bookingSuccessfulV2"||i==="bookingSuccessful"||i==="booking_successful"}function Ae(t){if(!t||typeof t!="object")return null;let e=t;return e.data&&typeof e.data=="object"?e.data:e.booking&&typeof e.booking=="object"?e.booking:null}function De(t){return t.origin==="https://calendly.com"&&t.data&&typeof t.data.event=="string"&&t.data.event.startsWith("calendly.")}function Be(t){return{provider:"calendly"}}function ee(t){E||(f=t,E=!0,v=0,window.addEventListener("message",Z),W())}function te(){E&&(window.removeEventListener("message",Z),f=null,E=!1,O=!1,v=0,h=null)}var Le=3e4,ie=1800*1e3,Ne=1e3,ne=50,Re=500,U="outlit_session_id",y="outlit_session_last_activity",A=class{state;options;idleTimeout;timeUpdateInterval=null;boundHandleActivity;boundHandleVisibilityChange;constructor(e){this.options=e,this.idleTimeout=e.idleTimeout??Le,this.state=this.createInitialState(),this.boundHandleActivity=this.handleActivity.bind(this),this.boundHandleVisibilityChange=this.handleVisibilityChange.bind(this),this.setupEventListeners(),this.startTimeUpdateInterval()}getSessionId(){return this.state.sessionId}emitEngagement(){if(this.state.hasEmittedEngagement)return;this.state.hasEmittedEngagement=!0,this.updateActiveTime();let e=Date.now()-this.state.pageEntryTime,i=this.state.activeTimeMs<ne&&e<ne,n=e<Re;if(!i&&!n){let r=$({url:this.state.currentUrl,referrer:document.referrer,activeTimeMs:this.state.activeTimeMs,totalTimeMs:e,sessionId:this.state.sessionId});this.options.onEngagement(r)}this.resetState()}onNavigation(e){this.emitEngagement(),this.state.currentUrl=e,this.state.currentPath=this.extractPath(e),this.state.pageEntryTime=Date.now(),this.state.activeTimeMs=0,this.state.lastActiveTime=Date.now(),this.state.isUserActive=!0,this.state.hasEmittedEngagement=!1,this.resetIdleTimer()}stop(){this.removeEventListeners(),this.timeUpdateInterval&&(clearInterval(this.timeUpdateInterval),this.timeUpdateInterval=null),this.state.idleTimeoutId&&(clearTimeout(this.state.idleTimeoutId),this.state.idleTimeoutId=null)}createInitialState(){let e=Date.now();return{currentUrl:typeof window<"u"?window.location.href:"",currentPath:typeof window<"u"?window.location.pathname:"/",pageEntryTime:e,lastActiveTime:e,activeTimeMs:0,isPageVisible:typeof document<"u"?document.visibilityState==="visible":!0,isUserActive:!0,idleTimeoutId:null,sessionId:this.getOrCreateSessionId(),hasEmittedEngagement:!1}}resetState(){let e=Date.now();this.state.pageEntryTime=e,this.state.lastActiveTime=e,this.state.activeTimeMs=0,this.state.isUserActive=!0,this.resetIdleTimer()}getOrCreateSessionId(){if(typeof sessionStorage>"u")return this.generateSessionId();try{let e=sessionStorage.getItem(U),i=sessionStorage.getItem(y),n=i?Number.parseInt(i,10):0,r=Date.now();if(e&&n&&r-n<ie)return this.updateSessionActivity(),e;let s=this.generateSessionId();return sessionStorage.setItem(U,s),sessionStorage.setItem(y,r.toString()),s}catch{return this.generateSessionId()}}generateSessionId(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let i=Math.random()*16|0;return(e==="x"?i:i&3|8).toString(16)})}updateSessionActivity(){if(!(typeof sessionStorage>"u"))try{sessionStorage.setItem(y,Date.now().toString())}catch{}}checkSessionExpiry(){if(!(typeof sessionStorage>"u"))try{let e=sessionStorage.getItem(y),i=e?Number.parseInt(e,10):0,n=Date.now();if(n-i>=ie){let r=this.generateSessionId();sessionStorage.setItem(U,r),this.state.sessionId=r}sessionStorage.setItem(y,n.toString())}catch{}}setupEventListeners(){if(typeof window>"u"||typeof document>"u")return;let e=["mousemove","keydown","click","scroll","touchstart"];for(let i of e)document.addEventListener(i,this.boundHandleActivity,{passive:!0});document.addEventListener("visibilitychange",this.boundHandleVisibilityChange),this.resetIdleTimer()}removeEventListeners(){if(typeof window>"u"||typeof document>"u")return;let e=["mousemove","keydown","click","scroll","touchstart"];for(let i of e)document.removeEventListener(i,this.boundHandleActivity);document.removeEventListener("visibilitychange",this.boundHandleVisibilityChange)}handleActivity(){this.state.isUserActive||(this.checkSessionExpiry(),this.state.lastActiveTime=Date.now()),this.state.isUserActive=!0,this.resetIdleTimer(),this.updateSessionActivity()}handleVisibilityChange(){let e=this.state.isPageVisible,i=document.visibilityState==="visible";e&&!i&&this.updateActiveTime(),this.state.isPageVisible=i,!e&&i&&(this.checkSessionExpiry(),this.state.lastActiveTime=Date.now(),this.state.hasEmittedEngagement=!1,this.updateSessionActivity())}resetIdleTimer(){this.state.idleTimeoutId&&clearTimeout(this.state.idleTimeoutId),this.state.idleTimeoutId=setTimeout(()=>{this.updateActiveTime(),this.state.isUserActive=!1},this.idleTimeout)}startTimeUpdateInterval(){this.timeUpdateInterval||(this.timeUpdateInterval=setInterval(()=>{this.updateActiveTime()},Ne))}updateActiveTime(){if(this.state.isPageVisible&&this.state.isUserActive){let e=Date.now();this.state.activeTimeMs+=e-this.state.lastActiveTime,this.state.lastActiveTime=e}}extractPath(e){try{return new URL(e).pathname}catch{return"/"}}},g=null;function re(t){return g?(console.warn("[Outlit] Session tracking already initialized"),g):(g=new A(t),g)}function se(){g&&(g.stop(),g=null)}var b="outlit_visitor_id";function Fe(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function oe(){try{let i=localStorage.getItem(b);if(i&&ae(i))return i}catch{}let t=Pe(b);if(t&&ae(t)){try{localStorage.setItem(b,t)}catch{}return t}let e=Fe();return Me(e),e}function Me(t){try{localStorage.setItem(b,t)}catch{}qe(b,t,365)}function ae(t){return/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function Pe(t){if(typeof document>"u")return null;let i=`; ${document.cookie}`.split(`; ${t}=`);return i.length===2?i.pop()?.split(";").shift()??null:null}function $e(){if(typeof window>"u")return null;let t=window.location.hostname;if(t==="localhost"||/^(\d{1,3}\.){3}\d{1,3}$/.test(t))return null;let e=t.split(".");if(e.length>=2){let i=["co.uk","com.au","co.nz","org.uk","net.au","com.br"],n=e.slice(-2).join(".");return i.includes(n)&&e.length>=3?e.slice(-3).join("."):e.slice(-2).join(".")}return null}function qe(t,e,i){if(typeof document>"u")return;let n=new Date;n.setTime(n.getTime()+i*24*60*60*1e3);let r=`${t}=${e};expires=${n.toUTCString()};path=/;SameSite=Lax`,s=$e();s&&(r+=`;domain=${s}`),document.cookie=r}var _=class{publicKey;apiHost;visitorId=null;eventQueue=[];flushTimer=null;flushInterval;isInitialized=!1;isTrackingEnabled=!1;options;hasHandledExit=!1;sessionTracker=null;currentUser=null;pendingUser=null;constructor(e){if(this.publicKey=e.publicKey,this.apiHost=e.apiHost??D,this.flushInterval=e.flushInterval??5e3,this.options=e,typeof window<"u"){let i=()=>{this.hasHandledExit||(this.hasHandledExit=!0,this.sessionTracker?.emitEngagement(),this.flush())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?i():this.hasHandledExit=!1}),window.addEventListener("pagehide",i),window.addEventListener("beforeunload",i)}this.isInitialized=!0,e.autoTrack!==!1&&this.enableTracking()}enableTracking(){this.isTrackingEnabled||(this.visitorId=oe(),this.startFlushTimer(),this.initSessionTracking(),this.options.trackPageviews!==!1&&this.initPageviewTracking(),this.options.trackForms!==!1&&this.initFormTracking(this.options.formFieldDenylist),this.options.trackCalendarEmbeds!==!1&&this.initCalendarTracking(),this.isTrackingEnabled=!0,this.pendingUser&&(this.applyUser(this.pendingUser),this.pendingUser=null))}isEnabled(){return this.isTrackingEnabled}track(e,i){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}let n=M({url:window.location.href,referrer:document.referrer,eventName:e,properties:i});this.enqueue(n)}identify(e){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}(e.email||e.userId)&&(this.currentUser={email:e.email,userId:e.userId});let i=F({url:window.location.href,referrer:document.referrer,email:e.email,userId:e.userId,traits:e.traits});this.enqueue(i)}setUser(e){if(!e.email&&!e.userId){console.warn("[Outlit] setUser requires at least email or userId");return}if(!this.isTrackingEnabled){this.pendingUser=e;return}this.applyUser(e)}clearUser(){this.currentUser=null,this.pendingUser=null}applyUser(e){this.currentUser=e,this.identify({email:e.email,userId:e.userId,traits:e.traits})}user={identify:e=>this.identify(e),activate:e=>this.sendStageEvent("activated",e),engaged:e=>this.sendStageEvent("engaged",e),inactive:e=>this.sendStageEvent("inactive",e)};customer={trialing:e=>this.sendBillingEvent("trialing",e),paid:e=>this.sendBillingEvent("paid",e),churned:e=>this.sendBillingEvent("churned",e)};sendStageEvent(e,i){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}if(!this.currentUser){console.warn(`[Outlit] Cannot call ${e}() without setting user identity. Call setUser() or identify() first.`);return}let n=q({url:window.location.href,referrer:document.referrer,stage:e,properties:i});this.enqueue(n)}sendBillingEvent(e,i){if(!this.isTrackingEnabled){console.warn("[Outlit] Tracking not enabled. Call enableTracking() first.");return}if(!i.customerId&&!i.stripeCustomerId&&!i.domain){console.warn("[Outlit] customer.* requires customerId, stripeCustomerId, or domain");return}let n=V({url:window.location.href,referrer:document.referrer,status:e,customerId:i.customerId,stripeCustomerId:i.stripeCustomerId,domain:i.domain,properties:i.properties});this.enqueue(n)}getVisitorId(){return this.visitorId}async flush(){if(this.eventQueue.length===0)return;let e=[...this.eventQueue];this.eventQueue=[],await this.sendEvents(e)}async shutdown(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),J(),te(),se(),this.sessionTracker=null,await this.flush()}initSessionTracking(){this.sessionTracker=re({onEngagement:this.options.trackEngagement!==!1?e=>this.enqueue(e):()=>{},idleTimeout:this.options.idleTimeout})}initPageviewTracking(){j((e,i,n)=>{this.sessionTracker?.onNavigation(e);let r=N({url:e,referrer:i,title:n});this.enqueue(r)})}initFormTracking(e){let i=this.options.autoIdentify!==!1?n=>{let r={};n.name&&(r.name=n.name),n.firstName&&(r.firstName=n.firstName),n.lastName&&(r.lastName=n.lastName),this.identify({email:n.email,traits:Object.keys(r).length>0?r:void 0})}:void 0;Y((n,r,s)=>{let o=R({url:n,referrer:document.referrer,formId:r,formFields:s});this.enqueue(o)},e,i)}initCalendarTracking(){ee({onCalendarBooked:e=>{let i=P({url:window.location.href,referrer:document.referrer,provider:e.provider,eventType:e.eventType,startTime:e.startTime,endTime:e.endTime,duration:e.duration,isRecurring:e.isRecurring,inviteeEmail:e.inviteeEmail,inviteeName:e.inviteeName});this.enqueue(i)}})}enqueue(e){this.eventQueue.push(e),this.eventQueue.length>=10&&this.flush()}startFlushTimer(){this.flushTimer||(this.flushTimer=setInterval(()=>{this.flush()},this.flushInterval))}async sendEvents(e){if(e.length===0||!this.visitorId)return;let i=this.currentUser??void 0,n=this.sessionTracker?.getSessionId(),r=z(this.visitorId,"client",e,i,n),s=`${this.apiHost}/api/i/v1/${this.publicKey}/events`;try{if(typeof navigator<"u"&&navigator.sendBeacon){let l=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(s,l))return;console.warn(`[Outlit] sendBeacon failed for ${e.length} events, falling back to fetch`)}let o=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),keepalive:!0});o.ok||console.warn(`[Outlit] Server returned ${o.status} when sending ${e.length} events`)}catch(o){console.warn(`[Outlit] Failed to send ${e.length} events:`,o)}}};var Ve=typeof window<"u"?window.outlit:void 0,ze=Ve?._q||[],a={_initialized:!1,_instance:null,_queue:[],_loaded:!0,init(t){if(this._initialized){console.warn("[Outlit] Already initialized");return}this._instance=new _(t),this._initialized=!0;for(let[e,i]of ze){let n=this;if(e.includes(".")){let[r,s]=e.split(".");r&&s&&r in n&&typeof n[r][s]=="function"&&n[r][s](...i)}else e in n&&typeof n[e]=="function"&&n[e](...i)}for(;this._queue.length>0;)this._queue.shift()?.()},track(t,e){if(!this._initialized||!this._instance){this._queue.push(()=>this.track(t,e));return}this._instance.track(t,e)},identify(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.identify(t));return}this._instance.identify(t)},getVisitorId(){return this._instance?this._instance.getVisitorId():null},enableTracking(){if(!this._initialized||!this._instance){this._queue.push(()=>this.enableTracking());return}this._instance.enableTracking()},isTrackingEnabled(){return this._instance?this._instance.isEnabled():!1},setUser(t){if(!this._initialized||!this._instance){this._queue.push(()=>this.setUser(t));return}this._instance.setUser(t)},clearUser(){if(!this._initialized||!this._instance){this._queue.push(()=>this.clearUser());return}this._instance.clearUser()},user:{identify(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.user.identify(t));return}a._instance.user.identify(t)},activate(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.user.activate(t));return}a._instance.user.activate(t)},engaged(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.user.engaged(t));return}a._instance.user.engaged(t)},inactive(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.user.inactive(t));return}a._instance.user.inactive(t)}},customer:{trialing(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.customer.trialing(t));return}a._instance.customer.trialing(t)},paid(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.customer.paid(t));return}a._instance.customer.paid(t)},churned(t){if(!a._initialized||!a._instance){a._queue.push(()=>a.customer.churned(t));return}a._instance.customer.churned(t)}}};function le(){let t=document.currentScript;if(t||(t=document.querySelector("script[data-public-key]")),!t){console.warn("[Outlit] No script tag found with data-public-key attribute");return}let e=t.getAttribute("data-public-key");if(!e){console.warn("[Outlit] Missing data-public-key attribute on script tag");return}let i=t.getAttribute("data-api-host")??void 0,n=t.getAttribute("data-track-pageviews")!=="false",r=t.getAttribute("data-track-forms")!=="false",s=t.getAttribute("data-auto-track")!=="false",o=t.getAttribute("data-auto-identify")!=="false",l=t.getAttribute("data-track-calendar-embeds")!=="false";a.init({publicKey:e,apiHost:i,trackPageviews:n,trackForms:r,autoTrack:s,autoIdentify:o,trackCalendarEmbeds:l})}typeof window<"u"&&(window.outlit=a,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",le):le());return pe(He);})();
|
|
2
2
|
//# sourceMappingURL=outlit.global.js.map
|