@webority/analytics 0.14.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ var pt=["google","googleads","adwords","youtube"],gt=["meta","facebook","fb","instagram","ig","messenger"],_t=["linkedin","lnkd"],Ct=["bing","microsoft","microsoftads","msn"],$=Object.freeze([["chatgpt",["chatgpt.com","chat.openai.com"]],["perplexity",["perplexity.ai"]],["gemini",["gemini.google.com"]],["copilot",["copilot.microsoft.com"]],["claude",["claude.ai"]],["you",["you.com"]],["phind",["phind.com"]],["deepseek",["deepseek.com"]],["grok",["grok.com"]],["meta_ai",["meta.ai"]],["poe",["poe.com"]]]),St=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],yt=["google","yandex"],Et=["facebook.com","fb.com","instagram.com","linkedin.com","lnkd.in","twitter.com","t.co","x.com","reddit.com","pinterest.com","youtube.com","youtu.be","tiktok.com","whatsapp.com","threads.net","t.me","telegram.org"],u=Object.freeze({DIRECT:"direct",GOOGLE:"google",META:"meta",LINKEDIN:"linkedin",MICROSOFT:"microsoft",OTHER:"other",AI_ASSISTANT:"ai_assistant",ORGANIC_SEARCH:"organic_search",ORGANIC_SOCIAL:"organic_social",REFERRAL:"referral"});function S(t){if(!t)return u.DIRECT;let e=d(t.utmSource);if(e){let i=E(e);if(pt.includes(i))return u.GOOGLE;if(gt.includes(i))return u.META;if(_t.includes(i))return u.LINKEDIN;if(Ct.includes(i))return u.MICROSOFT}if(d(t.fbclid))return u.META;if(d(t.gclid)||d(t.gbraid)||d(t.wbraid))return u.GOOGLE;if(d(t.liFatId))return u.LINKEDIN;if(d(t.msclkid))return u.MICROSOFT;if(q(e))return u.AI_ASSISTANT;if(e||d(t.utmMedium)||d(t.utmCampaign)||d(t.utmContent)||d(t.utmTerm))return u.OTHER;let o=Y(t.referrer);return o?j(o)?u.AI_ASSISTANT:It(o)?u.ORGANIC_SEARCH:Et.some(i=>W(o,i))?u.ORGANIC_SOCIAL:u.REFERRAL:u.DIRECT}function O(t){if(!t)return"";let e=q(d(t.utmSource));if(e)return e;let n=Y(t.referrer);return n?j(n):""}function q(t){if(!t)return"";let e=E(t);for(let[n,o]of $)if(E(n)===e||o.some(i=>E(i)===e))return n;return""}function j(t){for(let[e,n]of $)if(n.some(o=>W(t,o)))return e;return""}function It(t){return St.includes(t)?!0:yt.some(e=>{if(!t.startsWith(`${e}.`))return!1;let n=t.slice(e.length+1).split(".");return n.length===1||n.length===2&&(n[0]==="co"||n[0]==="com")})}function W(t,e){return t===e||t.endsWith(`.${e}`)}function Y(t){let e=d(t);if(!e)return"";try{let n=new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`https://${e}`).hostname.toLowerCase();return n.startsWith("www.")?n.slice(4):n}catch{return""}}function E(t){return String(t).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function d(t){return String(t??"").trim()}var A=Object.freeze(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH"]);function wt(t){let e=typeof t=="string"?t.trim().toUpperCase():"";return e.length!==2||e==="XX"||e==="T1"?!0:A.includes(e)}var I="webority_cookie_consent",J="webority-consent-change",X=365,r={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:X,cookieDomain:null,regionCookie:null,region:null,saved:null},Q=["eea","other"],b=new Set;function Tt(t){let e=t?.strictOptIn??!1;if(typeof e!="boolean")throw new Error("@webority/analytics: initConsent strictOptIn must be true or false, or left out.");if(e){if(t.requiresOptIn!==void 0&&t.requiresOptIn!==!0)throw new Error("@webority/analytics: initConsent strictOptIn asks every visitor to opt in, so requiresOptIn must be true or left out.")}else if(typeof t?.requiresOptIn!="boolean")throw new Error("@webority/analytics: initConsent needs requiresOptIn (true or false), decided from the visitor's country.");if(t.cookieDomain!==void 0&&(typeof t.cookieDomain!="string"||!t.cookieDomain.trim()))throw new Error('@webority/analytics: initConsent cookieDomain must be a domain such as ".example.com", or left out.');if(t.cookieDays!==void 0&&!(Number.isInteger(t.cookieDays)&&t.cookieDays>0))throw new Error("@webority/analytics: initConsent cookieDays must be a whole number of days above zero, or left out.");if(t.adStorage!==void 0&&typeof t.adStorage!="boolean")throw new Error("@webority/analytics: initConsent adStorage must be true or false, or left out.");if(t.regionCookie!==void 0&&(typeof t.regionCookie!="string"||!/^[\w.-]+$/.test(t.regionCookie)))throw new Error('@webority/analytics: initConsent regionCookie must be a cookie name such as "wui_region", or left out.');r.initialized=!0,r.strictOptIn=e,r.requiresOptIn=e||t.requiresOptIn,r.adStorage=t.adStorage??!e,r.cookieDays=t.cookieDays??X,r.cookieDomain=t.cookieDomain?.trim()??null,r.regionCookie=t.regionCookie??null,r.region=r.regionCookie?Lt(r.regionCookie):null;let{saved:n,entryCount:o}=Nt();r.saved=n,r.cookieDomain&&o>1&&n&&ot(n),At(),bt(),r.saved?D(r.saved):et()&&nt()}function ht(t){if(L("setConsentRegion"),!Q.includes(t))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let e=c();if(r.region=t,r.saved)return;let n=c();e.analytics===n.analytics&&e.functional===n.functional&&e.marketing===n.marketing||(nt(),tt(n))}function g(){return r.initialized}function Z(){return r.strictOptIn}function N(){return r.adStorage}function c(){L("getConsent");let t=r.saved;if(t)return{essential:!0,analytics:t.analytics,functional:t.functional,marketing:t.marketing,decided:!0};if(et())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let e=!r.requiresOptIn;return{essential:!0,analytics:e,functional:e,marketing:e,decided:!1}}function Ot(t){L("saveConsent");let e={essential:!0,analytics:t?.analytics===!0,functional:t?.functional===!0,marketing:t?.marketing===!0,timestamp:new Date().toISOString()};ot(e),r.saved=e,D(e),tt(c())}function _(t){return b.add(t),()=>b.delete(t)}function tt(t){for(let e of b)try{e(t)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(J,{detail:t}))}function L(t){if(!r.initialized)throw new Error(`@webority/analytics: call initConsent before ${t}.`)}function C(){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function At(){if(r.strictOptIn){C("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500});return}C("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500,region:[...A]});let t=r.adStorage?"granted":"denied";C("consent","default",{ad_storage:t,ad_user_data:t,ad_personalization:t,analytics_storage:"granted",functionality_storage:"granted",personalization_storage:"granted",security_storage:"granted"})}function bt(){C("set","ads_data_redaction",!0),C("set","url_passthrough",!0)}function et(){return r.requiresOptIn&&!r.strictOptIn&&r.region==="other"}function nt(){let t=c();D(t,t.analytics&&r.adStorage)}function D(t,e=t.marketing&&r.adStorage){let n=o=>o?"granted":"denied";C("consent","update",{analytics_storage:n(t.analytics),functionality_storage:n(t.functional),personalization_storage:n(t.functional),ad_storage:n(e),ad_user_data:n(e),ad_personalization:n(e)})}function Nt(){let t=`${I}=`,e=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(t)),n=e.map(o=>Dt(o.slice(t.length))).filter(Boolean);return{saved:kt(n),entryCount:e.length}}function Lt(t){let e=`${t}=`,o=(document.cookie||"").split(";").map(i=>i.trim()).find(i=>i.startsWith(e))?.slice(e.length);return Q.includes(o)?o:null}function Dt(t){try{let e=JSON.parse(decodeURIComponent(t));return!e||typeof e!="object"?null:{essential:!0,analytics:e.analytics===!0,functional:e.functional===!0,marketing:e.marketing===!0,timestamp:e.timestamp??null}}catch{return null}}function kt(t){if(t.length===0)return null;let e=t.map(o=>typeof o.timestamp=="string"?Date.parse(o.timestamp):Number.NaN);if(e.some(Number.isNaN))return t.at(-1);let n=0;for(let o=1;o<t.length;o++)e[o]>=e[n]&&(n=o);return t[n]}function ot(t){let e=typeof t.timestamp=="string"?Date.parse(t.timestamp):Number.NaN,n=(Number.isNaN(e)?Date.now():e)+r.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";r.cookieDomain&&V(`${I}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let i=r.cookieDomain?`;domain=${r.cookieDomain}`:"";V(`${I}=${encodeURIComponent(JSON.stringify(t))};expires=${new Date(n).toUTCString()};path=/${i};SameSite=Lax${o}`)}function V(t){document.cookie=t}var T="webority_attribution",Rt=2160*60*60*1e3,vt=200,k=500,xt=Object.freeze({utm_source:"utmSource",utm_medium:"utmMedium",utm_campaign:"utmCampaign",utm_content:"utmContent",utm_term:"utmTerm",gclid:"gclid",gbraid:"gbraid",wbraid:"wbraid",fbclid:"fbclid",msclkid:"msclkid",li_fat_id:"liFatId"}),rt=!1;function Ut(){st("captureAttribution"),Ft();let t=Mt();if(!t)return;let e=P(R());at(R(),{firstTouch:e?.firstTouch??t,lastTouch:t}),Pt(t)}function Pt(t){let e={event:"acquisition_touch",acquisition_channel:S(t)};t.aiSource&&(e.ai_source=t.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(e)}function U(){return st("getAttribution"),P(R())}function Mt(){let t=new URLSearchParams(window.location.search),e={};for(let[i,p]of Object.entries(xt)){let s=w(t.get(i),vt);s&&(e[p]=s)}let n=w(t.get("referrer"),k)||Gt();if(n&&(e.referrer=n),Object.keys(e).length===0)return null;let o=O(e);return o&&(e.aiSource=o),e.landingPage=w(window.location.pathname,k),e.capturedDateTimeUtc=new Date().toISOString(),e}function Gt(){let t=document.referrer;if(!t)return"";try{return new URL(t).hostname===window.location.hostname?"":w(t,k)}catch{return""}}function Ft(){rt||(rt=!0,_(t=>{let e=t.marketing?x():v(),n=t.marketing?v():x(),o=P(e);zt(e),o&&at(n,o)}))}function R(){return c().marketing?v():x()}function v(){try{return window.localStorage}catch{return null}}function x(){try{return window.sessionStorage}catch{return null}}function P(t){try{let e=t?.getItem(T);if(!e)return null;let n=JSON.parse(e),o=it(n?.firstTouch),i=it(n?.lastTouch);return!o&&!i?(t.removeItem(T),null):{firstTouch:o??i,lastTouch:i??o}}catch{return null}}function at(t,e){try{t?.setItem(T,JSON.stringify(e))}catch{}}function zt(t){try{t?.removeItem(T)}catch{}}function it(t){if(!t||typeof t!="object")return null;let e=Date.parse(t.capturedDateTimeUtc);return Number.isFinite(e)&&Date.now()-e<=Rt?t:null}function w(t,e){let n=String(t??"").trim();return n?n.slice(0,e):""}function st(t){if(!g())throw new Error(`@webority/analytics: call initConsent before ${t}.`)}var a=Object.freeze({SIGNUP_STARTED:"signup_started",SIGNUP_COMPLETED:"signup_completed",LOGIN_SUCCEEDED:"login_succeeded",ONBOARDING_STARTED:"onboarding_started",ONBOARDING_STEP_COMPLETED:"onboarding_step_completed",ONBOARDING_COMPLETED:"onboarding_completed",SUBSCRIPTION_ACTIVATED:"subscription_activated",SUBSCRIPTION_CANCELLED:"subscription_cancelled",PAYMENT_SUCCEEDED:"payment_succeeded",PAYMENT_FAILED:"payment_failed",FEEDBACK_SUBMITTED:"feedback_submitted",LEAD_SUBMITTED:"lead_submitted",LEAD_QUALIFIED:"lead_qualified",WHATSAPP_CLICK:"whatsapp_click",CALCULATOR_USE:"calculator_use",PHONE_CLICK:"phone_click",DEMO_BOOKED:"demo_booked",CONTACT_SUBMITTED:"contact_submitted",TRIAL_START_CLICK:"trial_start_click",SAMPLE_REPORT_DOWNLOAD:"sample_report_download"}),le=Object.freeze({signupStarted:a.SIGNUP_STARTED,signupCompleted:a.SIGNUP_COMPLETED,loginSucceeded:a.LOGIN_SUCCEEDED,onboardingStarted:a.ONBOARDING_STARTED,onboardingStepCompleted:a.ONBOARDING_STEP_COMPLETED,onboardingCompleted:a.ONBOARDING_COMPLETED,subscriptionActivated:a.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:a.SUBSCRIPTION_CANCELLED,paymentSucceeded:a.PAYMENT_SUCCEEDED,paymentFailed:a.PAYMENT_FAILED,feedbackSubmitted:a.FEEDBACK_SUBMITTED,leadSubmitted:a.LEAD_SUBMITTED,leadQualified:a.LEAD_QUALIFIED,whatsappClick:a.WHATSAPP_CLICK,calculatorUse:a.CALCULATOR_USE,phoneClick:a.PHONE_CLICK,demoBooked:a.DEMO_BOOKED,contactSubmitted:a.CONTACT_SUBMITTED,trialStartClick:a.TRIAL_START_CLICK,sampleReportDownload:a.SAMPLE_REPORT_DOWNLOAD}),de=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;var l={config:null,posthogInstance:null,posthogInitPromise:null,registeredEvents:new Set(Object.values(a)),warnedUnregisteredEvents:new Set,pendingIdentify:null},ge=50;function _e(t){l.config=t,l.posthogInstance=null,l.posthogInitPromise=null,l.pendingIdentify=null}function Bt(){let t=l.config;return t?!!(t.enabled&&t.clientKey&&t.environment!=="Local"):!1}function h(){return g()&&c().analytics}function Ce(){return Bt()&&h()}async function Ee(){if(l.posthogInstance)return l.posthogInstance;if(l.posthogInitPromise)return l.posthogInitPromise;let t=l.config;return l.posthogInitPromise=import("posthog-js").then(e=>{let n=e.default??e,o=M(G(t),h());return n.init(t.clientKey,o),n.register({product:t.product,surface:t.surface,environment:t.environment}),h()?n.opt_in_capturing({captureEventName:!1}):n.opt_out_capturing(),l.posthogInstance=n,n}).catch(e=>{throw l.posthogInitPromise=null,e}),l.posthogInitPromise}function M(t,e){return e?t:{...t,opt_out_capturing_by_default:!0}}function G(t){let e=t.sessionRecording??{enabled:!1},n={api_host:t.host,autocapture:!1,capture_pageview:"history_change",cookieless_mode:"on_reject",person_profiles:"identified_only",persistence:"localStorage+cookie",cross_subdomain_cookie:!0,disable_session_recording:!e.enabled,disable_surveys:!0,disable_product_tours:!0,disable_conversations:!0,advanced_disable_feature_flags:!e.enabled};return e.enabled&&(n.session_recording={maskAllInputs:e.maskAllInputs??!0,...e.maskTextSelector?{maskTextSelector:e.maskTextSelector}:{}}),n}var Ht=()=>import("posthog-js"),f={config:null,posthog:null,loading:null,loadPosthog:Ht,stopFollowingConsent:null};function Kt({host:t,clientKey:e,product:n,surface:o,environment:i,enabled:p=!0}={}){if(!g())throw new Error("@webority/analytics: call initConsent before initSiteAnalytics.");!p||!t||!e||i==="Local"||f.config||(f.config={host:t,clientKey:e,product:n,surface:o,environment:i},f.stopFollowingConsent=_(s=>qt(s.analytics)),f.loading=Promise.resolve().then(f.loadPosthog).then(s=>$t(s.default??s)).catch(()=>{}))}function $t(t){let e=f.config,n=c().analytics;t.init(e.clientKey,M(jt(e),n)),t.register({product:e.product,surface:e.surface,environment:e.environment}),n?t.opt_in_capturing({captureEventName:!1}):t.opt_out_capturing(),f.posthog=t}function qt(t){f.posthog&&(t?f.posthog.opt_in_capturing():f.posthog.opt_out_capturing())}function jt(t){return{...G({host:t.host}),capture_pageview:!0}}function ct(t,e){let n=f.config;if(!n)return;let o={...e,product:n.product,surface:n.surface,environment:n.environment};f.loading.then(()=>f.posthog?.capture(t,o)).catch(()=>{})}var Wt=new Set(Object.values(a));function Yt(t,e={}){if(!Wt.has(t))return!1;let n=c().analytics,o=U(),i={...e};for(let[p,s]of[["first",o?.firstTouch],["last",o?.lastTouch]])s&&(i[`${p}_touch_channel`]=S(s),s.aiSource&&(i[`${p}_touch_ai_source`]=s.aiSource));return ct(t,i),n?(window.dataLayer=window.dataLayer||[],window.dataLayer.push({...i,event:t}),!0):!1}var Vt=["scroll","mousemove","touchstart","keydown","pointerdown"],Jt="https://www.googletagmanager.com/gtm.js",ut=1500,Xt=3e3,Qt=100,m={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function Zt(t={}){if(!g())throw new Error("@webority/analytics: call initConsent before loadTags.");if(m.loaded)return;m.loaded=!0;let{gtmId:e,gtmUrl:n=Jt,clarityId:o,ahrefsKey:i}=t;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let p=Z();if(i){let s=()=>z("https://analytics.ahrefs.com/analytics.js",{"data-key":i});p?lt(y=>y.analytics,s):s()}if(e){let s=N(),y=K=>K.analytics||K.marketing&&s,ft=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),z(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(e)}`)},B=c(),mt=B.decided&&y(B)?te:ee,H=()=>mt(ft);p?lt(y,H):H()}o&&(m.clarityId=o,c().analytics&&ne(),_(s=>{s.analytics&&!m.clarityLoaded?F():m.clarityLoaded&&dt(s)}))}function lt(t,e){if(t(c())){e();return}let n=_(o=>{t(o)&&(n(),e())})}function te(t){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()}function ee(t){let e=!1,n=()=>{e||(e=!0,t())};for(let o of Vt)window.addEventListener(o,n,{once:!0,passive:!0});document.readyState==="complete"?setTimeout(n,ut):window.addEventListener("load",()=>setTimeout(n,ut),{once:!0})}function ne(){let t=()=>{window.scrollY>Qt&&F()};window.addEventListener("scroll",t,{passive:!0});let e=setTimeout(F,Xt);m.cancelClaritySchedule=()=>{window.removeEventListener("scroll",t),clearTimeout(e)}}function F(){m.cancelClaritySchedule?.(),m.cancelClaritySchedule=null,!(m.clarityLoaded||!m.clarityId)&&(m.clarityLoaded=!0,window.clarity=window.clarity||function(){window.clarity.q=window.clarity.q||[],window.clarity.q.push(arguments)},dt(c()),z(`https://www.clarity.ms/tag/${encodeURIComponent(m.clarityId)}`,{crossorigin:"anonymous"}))}function dt(t){window.clarity("consentv2",{ad_Storage:t.marketing&&N()?"granted":"denied",analytics_Storage:t.analytics?"granted":"denied"})}function z(t,e={}){let n=document.createElement("script");n.async=!0,n.src=t;for(let[o,i]of Object.entries(e))n.setAttribute(o,i);document.head.appendChild(n)}export{wt as a,I as b,J as c,Tt as d,ht as e,g as f,c as g,Ot as h,_ as i,a as j,le as k,de as l,l as m,ge as n,_e as o,Bt as p,h as q,Ce as r,Ee as s,u as t,S as u,O as v,Ut as w,U as x,Kt as y,Yt as z,Zt as A};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as b,b as C,c as x,d as w,e as k,f as c,g as l,h as A,i as u,j as f,k as d,l as h,m as T,n as N,o as S,p as O,q as P,r as R,s as U}from"./chunk-K4QQTXDP.js";var n={config:null,posthogInstance:null,posthogInitPromise:null,registeredEvents:new Set(Object.values(f)),warnedUnregisteredEvents:new Set,pendingIdentify:null},m=50;function I(e){n.config=e,n.posthogInstance=null,n.posthogInitPromise=null,n.pendingIdentify=null}function i(){let e=n.config;return e?!!(e.enabled&&e.clientKey&&e.environment!=="Local"):!1}function r(){return c()&&l().analytics}function _(){return i()&&r()}async function a(){if(n.posthogInstance)return n.posthogInstance;if(n.posthogInitPromise)return n.posthogInitPromise;let e=n.config;return n.posthogInitPromise=import("posthog-js").then(t=>{let o=t.default??t,s=z(j(e),r());return o.init(e.clientKey,s),o.register({product:e.product,surface:e.surface,environment:e.environment}),r()?o.opt_in_capturing({captureEventName:!1}):o.opt_out_capturing(),n.posthogInstance=o,o}).catch(t=>{throw n.posthogInitPromise=null,t}),n.posthogInitPromise}function z(e,t){return t?e:{...e,opt_out_capturing_by_default:!0}}function j(e){let t=e.sessionRecording??{enabled:!1},o={api_host:e.host,autocapture:!1,capture_pageview:"history_change",cookieless_mode:"on_reject",person_profiles:"identified_only",persistence:"localStorage",disable_session_recording:!t.enabled,disable_surveys:!0,disable_product_tours:!0,disable_conversations:!0,advanced_disable_feature_flags:!t.enabled};return t.enabled&&(o.session_recording={maskAllInputs:t.maskAllInputs??!0,...t.maskTextSelector?{maskTextSelector:t.maskTextSelector}:{}}),o}var v=null;function K(e){if(!c())throw new Error("@webority/analytics: call initConsent before initAnalytics.");v?.(),v=u(t=>M(t.analytics)),I({host:e.host,clientKey:e.clientKey,product:e.product,surface:e.surface,environment:e.environment,enabled:e.enabled??!0,logger:e.logger??null,sessionRecording:{enabled:e.sessionRecording?.enabled??!1,maskAllInputs:e.sessionRecording?.maskAllInputs??!0,maskTextSelector:e.sessionRecording?.maskTextSelector??null}}),i()&&L()}function L(){let e=()=>{i()&&y()};typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:3e3}):setTimeout(e,0)}function y(){a().catch(()=>{})}function M(e){if(i()){if(e){n.posthogInstance?(n.posthogInstance.opt_in_capturing(),E(n.posthogInstance)):a().then(E).catch(()=>{});return}!n.posthogInstance&&!n.posthogInitPromise&&y(),V()}}function E(e){let t=n.pendingIdentify;e&&t&&r()&&e.identify(t.publicId,t.props)}function V(){if(n.posthogInstance){n.posthogInstance.opt_out_capturing();return}n.posthogInitPromise&&n.posthogInitPromise.then(e=>{r()||e?.opt_out_capturing()}).catch(()=>{})}function W(e,t={}){if(!i()){g("identify",{publicId:e,...t});return}n.pendingIdentify={publicId:e,props:t},r()&&a().then(o=>{!o||!r()||o.identify(e,t)}).catch(()=>{})}function q(e,t,o={}){if(!_()){g("group",{type:e,key:t,...o});return}a().then(s=>{!s||!r()||s.group(e,t,o)}).catch(()=>{})}function D(){n.pendingIdentify=null,n.posthogInstance&&n.posthogInstance.reset()}function H(e){for(let t of e){if(!h.test(t))throw new Error(`@webority/analytics: invalid event name "${t}". Expected snake_case.`);n.registeredEvents.add(t)}}function p(e,t={}){if(!n.registeredEvents.has(e)){$(e);return}B(e,t)}function $(e){if(n.warnedUnregisteredEvents.has(e))return;n.warnedUnregisteredEvents.size<m&&n.warnedUnregisteredEvents.add(e);let t=n.config?.logger,o=`@webority/analytics: event "${e}" is not registered, so it was dropped. Call registerEvents() first.`;if(typeof t?.warn=="function"){t.warn(o);return}if(typeof t?.info=="function"){t.info(o);return}console.warn(o)}function B(e,t){if(!i()){g(e,t);return}let o={...t,product:n.config.product,surface:n.config.surface,environment:n.config.environment};a().then(s=>{s?.capture(e,o)}).catch(()=>{})}function g(e,t){n.config?.environment==="Local"&&n.config.logger?.info(e,t)}var F=Object.freeze(Object.fromEntries(Object.entries(d).map(([e,t])=>[e,(o={})=>p(t,o)])));export{x as CONSENT_CHANGE_EVENT,C as CONSENT_COOKIE_NAME,O as captureAttribution,T as channels,f as events,P as getAttribution,l as getConsent,q as group,W as identify,K as initAnalytics,w as initConsent,U as loadTags,u as onConsentChange,H as registerEvents,b as requiresOptIn,D as resetIdentity,S as resolveAiSource,N as resolveChannel,A as saveConsent,k as setConsentRegion,F as track,p as trackEvent,R as trackSiteEvent};
1
+ import{A as P,a as y,b as C,c as w,d as b,e as _,f as l,g as A,h as k,i as c,j as x,k as p,l as d,m as n,n as g,o as h,p as i,q as o,r as m,s,t as N,u as T,v as O,w as R,x as S,z as U}from"./chunk-YDLURFRA.js";var E=null;function z(e){if(!l())throw new Error("@webority/analytics: call initConsent before initAnalytics.");E?.(),E=c(t=>q(t.analytics)),h({host:e.host,clientKey:e.clientKey,product:e.product,surface:e.surface,environment:e.environment,enabled:e.enabled??!0,logger:e.logger??null,sessionRecording:{enabled:e.sessionRecording?.enabled??!1,maskAllInputs:e.sessionRecording?.maskAllInputs??!0,maskTextSelector:e.sessionRecording?.maskTextSelector??null}}),i()&&j()}function j(){let e=()=>{i()&&v()};typeof requestIdleCallback=="function"?requestIdleCallback(e,{timeout:3e3}):setTimeout(e,0)}function v(){s().catch(()=>{})}function q(e){if(i()){if(e){n.posthogInstance?(n.posthogInstance.opt_in_capturing(),I(n.posthogInstance)):s().then(I).catch(()=>{});return}!n.posthogInstance&&!n.posthogInitPromise&&v(),K()}}function I(e){let t=n.pendingIdentify;e&&t&&o()&&e.identify(t.publicId,t.props)}function K(){if(n.posthogInstance){n.posthogInstance.opt_out_capturing();return}n.posthogInitPromise&&n.posthogInitPromise.then(e=>{o()||e?.opt_out_capturing()}).catch(()=>{})}function M(e,t={}){if(!i()){u("identify",{publicId:e,...t});return}n.pendingIdentify={publicId:e,props:t},o()&&s().then(r=>{!r||!o()||r.identify(e,t)}).catch(()=>{})}function V(e,t,r={}){if(!m()){u("group",{type:e,key:t,...r});return}s().then(a=>{!a||!o()||a.group(e,t,r)}).catch(()=>{})}function W(){n.pendingIdentify=null,n.posthogInstance&&n.posthogInstance.reset()}function H(e){for(let t of e){if(!d.test(t))throw new Error(`@webority/analytics: invalid event name "${t}". Expected snake_case.`);n.registeredEvents.add(t)}}function f(e,t={}){if(!n.registeredEvents.has(e)){L(e);return}$(e,t)}function L(e){if(n.warnedUnregisteredEvents.has(e))return;n.warnedUnregisteredEvents.size<g&&n.warnedUnregisteredEvents.add(e);let t=n.config?.logger,r=`@webority/analytics: event "${e}" is not registered, so it was dropped. Call registerEvents() first.`;if(typeof t?.warn=="function"){t.warn(r);return}if(typeof t?.info=="function"){t.info(r);return}console.warn(r)}function $(e,t){if(!i()){u(e,t);return}let r={...t,product:n.config.product,surface:n.config.surface,environment:n.config.environment};s().then(a=>{a?.capture(e,r)}).catch(()=>{})}function u(e,t){n.config?.environment==="Local"&&n.config.logger?.info(e,t)}var D=Object.freeze(Object.fromEntries(Object.entries(p).map(([e,t])=>[e,(r={})=>f(t,r)])));export{w as CONSENT_CHANGE_EVENT,C as CONSENT_COOKIE_NAME,R as captureAttribution,N as channels,x as events,S as getAttribution,A as getConsent,V as group,M as identify,z as initAnalytics,b as initConsent,P as loadTags,c as onConsentChange,H as registerEvents,y as requiresOptIn,W as resetIdentity,O as resolveAiSource,T as resolveChannel,k as saveConsent,_ as setConsentRegion,D as track,f as trackEvent,U as trackSiteEvent};
@@ -0,0 +1 @@
1
+ var r=Object.freeze({SIGNUP_STARTED:"signup_started",SIGNUP_COMPLETED:"signup_completed",LOGIN_SUCCEEDED:"login_succeeded",ONBOARDING_STARTED:"onboarding_started",ONBOARDING_STEP_COMPLETED:"onboarding_step_completed",ONBOARDING_COMPLETED:"onboarding_completed",SUBSCRIPTION_ACTIVATED:"subscription_activated",SUBSCRIPTION_CANCELLED:"subscription_cancelled",PAYMENT_SUCCEEDED:"payment_succeeded",PAYMENT_FAILED:"payment_failed",FEEDBACK_SUBMITTED:"feedback_submitted",LEAD_SUBMITTED:"lead_submitted",LEAD_QUALIFIED:"lead_qualified",WHATSAPP_CLICK:"whatsapp_click",CALCULATOR_USE:"calculator_use",PHONE_CLICK:"phone_click",DEMO_BOOKED:"demo_booked",CONTACT_SUBMITTED:"contact_submitted",TRIAL_START_CLICK:"trial_start_click",SAMPLE_REPORT_DOWNLOAD:"sample_report_download"}),x=Object.freeze({signupStarted:r.SIGNUP_STARTED,signupCompleted:r.SIGNUP_COMPLETED,loginSucceeded:r.LOGIN_SUCCEEDED,onboardingStarted:r.ONBOARDING_STARTED,onboardingStepCompleted:r.ONBOARDING_STEP_COMPLETED,onboardingCompleted:r.ONBOARDING_COMPLETED,subscriptionActivated:r.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:r.SUBSCRIPTION_CANCELLED,paymentSucceeded:r.PAYMENT_SUCCEEDED,paymentFailed:r.PAYMENT_FAILED,feedbackSubmitted:r.FEEDBACK_SUBMITTED,leadSubmitted:r.LEAD_SUBMITTED,leadQualified:r.LEAD_QUALIFIED,whatsappClick:r.WHATSAPP_CLICK,calculatorUse:r.CALCULATOR_USE,phoneClick:r.PHONE_CLICK,demoBooked:r.DEMO_BOOKED,contactSubmitted:r.CONTACT_SUBMITTED,trialStartClick:r.TRIAL_START_CLICK,sampleReportDownload:r.SAMPLE_REPORT_DOWNLOAD}),I=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;var E=null;function w(e){E=e}async function S(){if(E)return E.PostHog??null;try{let e=await import("posthog-react-native");return e.PostHog??e.default?.PostHog??e.default??null}catch{return null}}function D(e){return{host:e.host,defaultOptIn:!1,personProfiles:"identified_only",captureAppLifecycleEvents:!1,enableSessionReplay:!1,preloadFeatureFlags:!1,disableRemoteFeatureFlags:!0,disableSurveys:!0}}var _="webority_analytics_consent",v=["eea","other"],b=50,N="account",n={config:null,initPromise:null,posthog:null,requiresOptIn:!0,region:null,saved:null,pendingIdentify:null,pendingGroup:null,failureReported:!1},P=new Set(Object.values(r)),u=new Set,d=new Set;function k(e){if(n.initPromise)return n.initPromise;let t=l();return n.config={host:e?.host,clientKey:e?.clientKey,product:e?.product,surface:e?.surface,environment:e?.environment,enabled:e?.enabled??!0,logger:e?.logger??null,storage:e?.storage??null},n.requiresOptIn=e?.requiresOptIn!==!1,n.initPromise=L(t).catch(c),n.initPromise}async function L(e){let t=m(),o=n.saved,i=await U(t);o&&t?await s(()=>t.setItem(_,JSON.stringify(o))):!n.saved&&i&&(n.saved=i);let p=l();if((e.analytics!==p.analytics||e.decided!==p.decided)&&T(p),!f())return;let O=await S();if(!O){c(new Error("@webority/analytics: posthog-react-native is not installed, so nothing is sent."));return}let g=new O(n.config.clientKey,D(n.config));await g.ready?.(),await g.register(C()),n.posthog=g,await y(a())}function H(e){if(!v.includes(e))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let t=l();n.region=e;let o=l();t.analytics!==o.analytics&&(y(o.analytics),T(o))}async function q(e){let t={analytics:e===!0,savedAtUtc:new Date().toISOString()};n.saved=t,y(t.analytics),T(l());let o=m();o&&await s(()=>o.setItem(_,JSON.stringify(t)))}function l(){return n.saved?{analytics:n.saved.analytics,decided:!0}:{analytics:!n.requiresOptIn||n.region==="other",decided:!1}}function z(e){return d.add(e),()=>d.delete(e)}function V(e,t={}){if(n.config&&!f()){A("identify",{publicId:e,...t});return}n.pendingIdentify={publicId:e,props:t},n.posthog&&a()&&s(()=>n.posthog.identify(e,t))}function Y(e,t={}){if(n.config&&!f()){A("group",{accountPublicId:e,...t});return}n.pendingGroup={accountPublicId:e,props:t},n.posthog&&a()&&s(()=>n.posthog.group(N,e,t))}function W(){n.pendingIdentify=null,n.pendingGroup=null;let e=n.posthog;e&&s(async()=>{e.reset(),await e.register(C()),a()?await e.optIn():await e.optOut()})}function $(e){for(let t of e){if(!I.test(t))throw new Error(`@webority/analytics: invalid event name "${t}". Expected snake_case.`);P.add(t)}}function j(e,t={}){if(!P.has(e)){M(e);return}h(e,t,(o,i)=>o.capture(e,i))}function J(e,t={}){h(e,t,(o,i)=>o.screen(e,i))}function h(e,t,o){if(!f()){A(e,t);return}if(!a())return;let i={...t,...C()};if(n.posthog){s(()=>o(n.posthog,i));return}n.initPromise?.then(()=>{n.posthog&&a()&&s(()=>o(n.posthog,i))})}function y(e){let t=n.posthog;return t?s(async()=>{if(!e){await t.optOut();return}await t.optIn(),R(t)}):Promise.resolve()}function R(e){if(!a())return;let t=n.pendingIdentify;t&&e.identify(t.publicId,t.props);let o=n.pendingGroup;o&&e.group(N,o.accountPublicId,o.props)}function m(){let e=n.config?.storage??null;return n.config&&!e&&c(new Error("@webority/analytics: no storage was passed to initMobileAnalytics, so the choice lasts until the app closes.")),e}async function U(e){if(!e)return null;try{let t=await e.getItem(_);if(!t)return null;let o=JSON.parse(t);return typeof o?.analytics!="boolean"?null:{analytics:o.analytics,savedAtUtc:typeof o.savedAtUtc=="string"?o.savedAtUtc:null}}catch(t){return c(t),null}}function T(e){for(let t of d)try{t(e)}catch(o){c(o)}}function f(){let e=n.config;return!!(e?.enabled&&e.clientKey&&e.host&&e.environment!=="Local")}function a(){return l().analytics}function C(){return{product:n.config.product,surface:n.config.surface,environment:n.config.environment}}function s(e){try{return Promise.resolve(e()).then(void 0,c)}catch(t){return c(t),Promise.resolve()}}function c(e){if(n.failureReported||(n.failureReported=!0,globalThis.__DEV__!==!0))return;let t=n.config?.logger,o=typeof t?.warn=="function"?t.warn:t?.info;if(typeof o=="function")try{o.call(t,`@webority/analytics: ${e?.message??e}`)}catch{}}function M(e){if(u.has(e))return;u.size<b&&u.add(e);let t=n.config?.logger,o=`@webority/analytics: event "${e}" is not registered, so it was dropped. Call registerEvents() first.`;if(typeof t?.warn=="function"){t.warn(o);return}if(typeof t?.info=="function"){t.info(o);return}console.warn(o)}function A(e,t){n.config?.environment==="Local"&&n.config.logger?.info(e,t)}function Q(){n.config=null,n.initPromise=null,n.posthog=null,n.requiresOptIn=!0,n.region=null,n.saved=null,n.pendingIdentify=null,n.pendingGroup=null,n.failureReported=!1,u.clear(),d.clear()}export{_ as CONSENT_STORAGE_KEY,Q as __resetForTests,w as __setNativeModulesForTests,r as events,l as getAnalyticsConsent,Y as group,V as identify,k as initMobileAnalytics,z as onAnalyticsConsentChange,$ as registerEvents,W as resetIdentity,q as setAnalyticsConsent,H as setConsentRegion,j as trackEvent,J as trackScreen};
package/dist/site.js CHANGED
@@ -1 +1 @@
1
- import{a,b,c,d,e,g as f,h as g,i as h,j as i,m as j,n as k,o as l,p as m,q as n,r as o,s as p}from"./chunk-K4QQTXDP.js";export{c as CONSENT_CHANGE_EVENT,b as CONSENT_COOKIE_NAME,m as captureAttribution,j as channels,i as events,n as getAttribution,f as getConsent,d as initConsent,p as loadTags,h as onConsentChange,a as requiresOptIn,l as resolveAiSource,k as resolveChannel,g as saveConsent,e as setConsentRegion,o as trackSiteEvent};
1
+ import{A as q,a,b,c,d,e,g as f,h as g,i as h,j as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-YDLURFRA.js";export{c as CONSENT_CHANGE_EVENT,b as CONSENT_COOKIE_NAME,m as captureAttribution,j as channels,i as events,n as getAttribution,f as getConsent,d as initConsent,o as initSiteAnalytics,q as loadTags,h as onConsentChange,a as requiresOptIn,l as resolveAiSource,k as resolveChannel,g as saveConsent,e as setConsentRegion,p as trackSiteEvent};
@@ -1 +1 @@
1
- var WeborityAnalytics=(()=>{var O=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Se=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var n in t)O(e,n,{get:t[n],enumerable:!0})},ye=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of _e(t))!Se.call(e,r)&&r!==n&&O(e,r,{get:()=>t[r],enumerable:!(o=Ce(t,r))||o.enumerable});return e};var we=e=>ye(O({},"__esModule",{value:!0}),e);var Qe={};Ee(Qe,{CONSENT_CHANGE_EVENT:()=>D,CONSENT_COOKIE_NAME:()=>C,captureAttribution:()=>ae,channels:()=>s,events:()=>a,getAttribution:()=>I,getConsent:()=>c,initConsent:()=>J,loadTags:()=>fe,onConsentChange:()=>m,requiresOptIn:()=>j,resolveAiSource:()=>E,resolveChannel:()=>g,saveConsent:()=>Z,setConsentRegion:()=>X,trackSiteEvent:()=>ue});var Te=["google","googleads","adwords","youtube"],Ie=["meta","facebook","fb","instagram","ig","messenger"],Oe=["linkedin","lnkd"],Ae=["bing","microsoft","microsoftads","msn"],B=Object.freeze([["chatgpt",["chatgpt.com","chat.openai.com"]],["perplexity",["perplexity.ai"]],["gemini",["gemini.google.com"]],["copilot",["copilot.microsoft.com"]],["claude",["claude.ai"]],["you",["you.com"]],["phind",["phind.com"]],["deepseek",["deepseek.com"]],["grok",["grok.com"]],["meta_ai",["meta.ai"]],["poe",["poe.com"]]]),he=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],De=["google","yandex"],Ne=["facebook.com","fb.com","instagram.com","linkedin.com","lnkd.in","twitter.com","t.co","x.com","reddit.com","pinterest.com","youtube.com","youtu.be","tiktok.com","whatsapp.com","threads.net","t.me","telegram.org"],s=Object.freeze({DIRECT:"direct",GOOGLE:"google",META:"meta",LINKEDIN:"linkedin",MICROSOFT:"microsoft",OTHER:"other",AI_ASSISTANT:"ai_assistant",ORGANIC_SEARCH:"organic_search",ORGANIC_SOCIAL:"organic_social",REFERRAL:"referral"});function g(e){if(!e)return s.DIRECT;let t=u(e.utmSource);if(t){let r=S(t);if(Te.includes(r))return s.GOOGLE;if(Ie.includes(r))return s.META;if(Oe.includes(r))return s.LINKEDIN;if(Ae.includes(r))return s.MICROSOFT}if(u(e.fbclid))return s.META;if(u(e.gclid)||u(e.gbraid)||u(e.wbraid))return s.GOOGLE;if(u(e.liFatId))return s.LINKEDIN;if(u(e.msclkid))return s.MICROSOFT;if(H(t))return s.AI_ASSISTANT;if(t||u(e.utmMedium)||u(e.utmCampaign)||u(e.utmContent)||u(e.utmTerm))return s.OTHER;let o=q(e.referrer);return o?$(o)?s.AI_ASSISTANT:Le(o)?s.ORGANIC_SEARCH:Ne.some(r=>K(o,r))?s.ORGANIC_SOCIAL:s.REFERRAL:s.DIRECT}function E(e){if(!e)return"";let t=H(u(e.utmSource));if(t)return t;let n=q(e.referrer);return n?$(n):""}function H(e){if(!e)return"";let t=S(e);for(let[n,o]of B)if(S(n)===t||o.some(r=>S(r)===t))return n;return""}function $(e){for(let[t,n]of B)if(n.some(o=>K(e,o)))return t;return""}function Le(e){return he.includes(e)?!0:De.some(t=>{if(!e.startsWith(`${t}.`))return!1;let n=e.slice(t.length+1).split(".");return n.length===1||n.length===2&&(n[0]==="co"||n[0]==="com")})}function K(e,t){return e===t||e.endsWith(`.${t}`)}function q(e){let t=u(e);if(!t)return"";try{let n=new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)?t:`https://${t}`).hostname.toLowerCase();return n.startsWith("www.")?n.slice(4):n}catch{return""}}function S(e){return String(e).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function u(e){return String(e??"").trim()}var A=Object.freeze(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH"]);function j(e){let t=typeof e=="string"?e.trim().toUpperCase():"";return t.length!==2||t==="XX"||t==="T1"?!0:A.includes(t)}var C="webority_cookie_consent",D="webority-consent-change",W=365,i={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:W,cookieDomain:null,regionCookie:null,region:null,saved:null},V=["eea","other"],h=new Set;function J(e){let t=e?.strictOptIn??!1;if(typeof t!="boolean")throw new Error("@webority/analytics: initConsent strictOptIn must be true or false, or left out.");if(t){if(e.requiresOptIn!==void 0&&e.requiresOptIn!==!0)throw new Error("@webority/analytics: initConsent strictOptIn asks every visitor to opt in, so requiresOptIn must be true or left out.")}else if(typeof e?.requiresOptIn!="boolean")throw new Error("@webority/analytics: initConsent needs requiresOptIn (true or false), decided from the visitor's country.");if(e.cookieDomain!==void 0&&(typeof e.cookieDomain!="string"||!e.cookieDomain.trim()))throw new Error('@webority/analytics: initConsent cookieDomain must be a domain such as ".example.com", or left out.');if(e.cookieDays!==void 0&&!(Number.isInteger(e.cookieDays)&&e.cookieDays>0))throw new Error("@webority/analytics: initConsent cookieDays must be a whole number of days above zero, or left out.");if(e.adStorage!==void 0&&typeof e.adStorage!="boolean")throw new Error("@webority/analytics: initConsent adStorage must be true or false, or left out.");if(e.regionCookie!==void 0&&(typeof e.regionCookie!="string"||!/^[\w.-]+$/.test(e.regionCookie)))throw new Error('@webority/analytics: initConsent regionCookie must be a cookie name such as "wui_region", or left out.');i.initialized=!0,i.strictOptIn=t,i.requiresOptIn=t||e.requiresOptIn,i.adStorage=e.adStorage??!t,i.cookieDays=e.cookieDays??W,i.cookieDomain=e.cookieDomain?.trim()??null,i.regionCookie=e.regionCookie??null,i.region=i.regionCookie?ve(i.regionCookie):null;let{saved:n,entryCount:o}=Re();i.saved=n,i.cookieDomain&&o>1&&n&&oe(n),be(),ke(),i.saved?b(i.saved):te()&&ne()}function X(e){if(L("setConsentRegion"),!V.includes(e))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let t=c();if(i.region=e,i.saved)return;let n=c();t.analytics===n.analytics&&t.functional===n.functional&&t.marketing===n.marketing||(ne(),ee(n))}function y(){return i.initialized}function Q(){return i.strictOptIn}function N(){return i.adStorage}function c(){L("getConsent");let e=i.saved;if(e)return{essential:!0,analytics:e.analytics,functional:e.functional,marketing:e.marketing,decided:!0};if(te())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let t=!i.requiresOptIn;return{essential:!0,analytics:t,functional:t,marketing:t,decided:!1}}function Z(e){L("saveConsent");let t={essential:!0,analytics:e?.analytics===!0,functional:e?.functional===!0,marketing:e?.marketing===!0,timestamp:new Date().toISOString()};oe(t),i.saved=t,b(t),ee(c())}function m(e){return h.add(e),()=>h.delete(e)}function ee(e){for(let t of h)try{t(e)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(D,{detail:e}))}function L(e){if(!i.initialized)throw new Error(`@webority/analytics: call initConsent before ${e}.`)}function p(){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function be(){if(i.strictOptIn){p("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500});return}p("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500,region:[...A]});let e=i.adStorage?"granted":"denied";p("consent","default",{ad_storage:e,ad_user_data:e,ad_personalization:e,analytics_storage:"granted",functionality_storage:"granted",personalization_storage:"granted",security_storage:"granted"})}function ke(){p("set","ads_data_redaction",!0),p("set","url_passthrough",!0)}function te(){return i.requiresOptIn&&!i.strictOptIn&&i.region==="other"}function ne(){let e=c();b(e,e.analytics&&i.adStorage)}function b(e,t=e.marketing&&i.adStorage){let n=o=>o?"granted":"denied";p("consent","update",{analytics_storage:n(e.analytics),functionality_storage:n(e.functional),personalization_storage:n(e.functional),ad_storage:n(t),ad_user_data:n(t),ad_personalization:n(t)})}function Re(){let e=`${C}=`,t=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(e)),n=t.map(o=>Ue(o.slice(e.length))).filter(Boolean);return{saved:xe(n),entryCount:t.length}}function ve(e){let t=`${e}=`,o=(document.cookie||"").split(";").map(r=>r.trim()).find(r=>r.startsWith(t))?.slice(t.length);return V.includes(o)?o:null}function Ue(e){try{let t=JSON.parse(decodeURIComponent(e));return!t||typeof t!="object"?null:{essential:!0,analytics:t.analytics===!0,functional:t.functional===!0,marketing:t.marketing===!0,timestamp:t.timestamp??null}}catch{return null}}function xe(e){if(e.length===0)return null;let t=e.map(o=>typeof o.timestamp=="string"?Date.parse(o.timestamp):Number.NaN);if(t.some(Number.isNaN))return e.at(-1);let n=0;for(let o=1;o<e.length;o++)t[o]>=t[n]&&(n=o);return e[n]}function oe(e){let t=typeof e.timestamp=="string"?Date.parse(e.timestamp):Number.NaN,n=(Number.isNaN(t)?Date.now():t)+i.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";i.cookieDomain&&Y(`${C}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let r=i.cookieDomain?`;domain=${i.cookieDomain}`:"";Y(`${C}=${encodeURIComponent(JSON.stringify(e))};expires=${new Date(n).toUTCString()};path=/${r};SameSite=Lax${o}`)}function Y(e){document.cookie=e}var T="webority_attribution",Me=2160*60*60*1e3,Ge=200,k=500,Pe=Object.freeze({utm_source:"utmSource",utm_medium:"utmMedium",utm_campaign:"utmCampaign",utm_content:"utmContent",utm_term:"utmTerm",gclid:"gclid",gbraid:"gbraid",wbraid:"wbraid",fbclid:"fbclid",msclkid:"msclkid",li_fat_id:"liFatId"}),re=!1;function ae(){ce("captureAttribution"),He();let e=ze();if(!e)return;let t=x(R());se(R(),{firstTouch:t?.firstTouch??e,lastTouch:e}),Fe(e)}function Fe(e){let t={event:"acquisition_touch",acquisition_channel:g(e)};e.aiSource&&(t.ai_source=e.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(t)}function I(){return ce("getAttribution"),x(R())}function ze(){let e=new URLSearchParams(window.location.search),t={};for(let[r,f]of Object.entries(Pe)){let d=w(e.get(r),Ge);d&&(t[f]=d)}let n=w(e.get("referrer"),k)||Be();if(n&&(t.referrer=n),Object.keys(t).length===0)return null;let o=E(t);return o&&(t.aiSource=o),t.landingPage=w(window.location.pathname,k),t.capturedDateTimeUtc=new Date().toISOString(),t}function Be(){let e=document.referrer;if(!e)return"";try{return new URL(e).hostname===window.location.hostname?"":w(e,k)}catch{return""}}function He(){re||(re=!0,m(e=>{let t=e.marketing?U():v(),n=e.marketing?v():U(),o=x(t);$e(t),o&&se(n,o)}))}function R(){return c().marketing?v():U()}function v(){try{return window.localStorage}catch{return null}}function U(){try{return window.sessionStorage}catch{return null}}function x(e){try{let t=e?.getItem(T);if(!t)return null;let n=JSON.parse(t),o=ie(n?.firstTouch),r=ie(n?.lastTouch);return!o&&!r?(e.removeItem(T),null):{firstTouch:o??r,lastTouch:r??o}}catch{return null}}function se(e,t){try{e?.setItem(T,JSON.stringify(t))}catch{}}function $e(e){try{e?.removeItem(T)}catch{}}function ie(e){if(!e||typeof e!="object")return null;let t=Date.parse(e.capturedDateTimeUtc);return Number.isFinite(t)&&Date.now()-t<=Me?e:null}function w(e,t){let n=String(e??"").trim();return n?n.slice(0,t):""}function ce(e){if(!y())throw new Error(`@webority/analytics: call initConsent before ${e}.`)}var a=Object.freeze({SIGNUP_STARTED:"signup_started",SIGNUP_COMPLETED:"signup_completed",LOGIN_SUCCEEDED:"login_succeeded",ONBOARDING_STARTED:"onboarding_started",ONBOARDING_STEP_COMPLETED:"onboarding_step_completed",ONBOARDING_COMPLETED:"onboarding_completed",SUBSCRIPTION_ACTIVATED:"subscription_activated",SUBSCRIPTION_CANCELLED:"subscription_cancelled",PAYMENT_SUCCEEDED:"payment_succeeded",PAYMENT_FAILED:"payment_failed",FEEDBACK_SUBMITTED:"feedback_submitted",LEAD_SUBMITTED:"lead_submitted",LEAD_QUALIFIED:"lead_qualified",WHATSAPP_CLICK:"whatsapp_click",CALCULATOR_USE:"calculator_use",PHONE_CLICK:"phone_click",DEMO_BOOKED:"demo_booked",CONTACT_SUBMITTED:"contact_submitted",TRIAL_START_CLICK:"trial_start_click",SAMPLE_REPORT_DOWNLOAD:"sample_report_download"}),st=Object.freeze({signupStarted:a.SIGNUP_STARTED,signupCompleted:a.SIGNUP_COMPLETED,loginSucceeded:a.LOGIN_SUCCEEDED,onboardingStarted:a.ONBOARDING_STARTED,onboardingStepCompleted:a.ONBOARDING_STEP_COMPLETED,onboardingCompleted:a.ONBOARDING_COMPLETED,subscriptionActivated:a.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:a.SUBSCRIPTION_CANCELLED,paymentSucceeded:a.PAYMENT_SUCCEEDED,paymentFailed:a.PAYMENT_FAILED,feedbackSubmitted:a.FEEDBACK_SUBMITTED,leadSubmitted:a.LEAD_SUBMITTED,leadQualified:a.LEAD_QUALIFIED,whatsappClick:a.WHATSAPP_CLICK,calculatorUse:a.CALCULATOR_USE,phoneClick:a.PHONE_CLICK,demoBooked:a.DEMO_BOOKED,contactSubmitted:a.CONTACT_SUBMITTED,trialStartClick:a.TRIAL_START_CLICK,sampleReportDownload:a.SAMPLE_REPORT_DOWNLOAD});var Ke=new Set(Object.values(a));function ue(e,t={}){if(!Ke.has(e)||!c().analytics)return!1;let n=I(),o={...t,event:e};for(let[r,f]of[["first",n?.firstTouch],["last",n?.lastTouch]])f&&(o[`${r}_touch_channel`]=g(f),f.aiSource&&(o[`${r}_touch_ai_source`]=f.aiSource));return window.dataLayer=window.dataLayer||[],window.dataLayer.push(o),!0}var qe=["scroll","mousemove","touchstart","keydown","pointerdown"],je="https://www.googletagmanager.com/gtm.js",le=1500,Ye=3e3,We=100,l={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function fe(e={}){if(!y())throw new Error("@webority/analytics: call initConsent before loadTags.");if(l.loaded)return;l.loaded=!0;let{gtmId:t,gtmUrl:n=je,clarityId:o,ahrefsKey:r}=e;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let f=Q();if(r){let d=()=>G("https://analytics.ahrefs.com/analytics.js",{"data-key":r});f?de(_=>_.analytics,d):d()}if(t){let d=N(),_=z=>z.analytics||z.marketing&&d,ge=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),G(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(t)}`)},P=c(),pe=P.decided&&_(P)?Ve:Je,F=()=>pe(ge);f?de(_,F):F()}o&&(l.clarityId=o,c().analytics&&Xe(),m(d=>{d.analytics&&!l.clarityLoaded?M():l.clarityLoaded&&me(d)}))}function de(e,t){if(e(c())){t();return}let n=m(o=>{e(o)&&(n(),t())})}function Ve(e){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}function Je(e){let t=!1,n=()=>{t||(t=!0,e())};for(let o of qe)window.addEventListener(o,n,{once:!0,passive:!0});document.readyState==="complete"?setTimeout(n,le):window.addEventListener("load",()=>setTimeout(n,le),{once:!0})}function Xe(){let e=()=>{window.scrollY>We&&M()};window.addEventListener("scroll",e,{passive:!0});let t=setTimeout(M,Ye);l.cancelClaritySchedule=()=>{window.removeEventListener("scroll",e),clearTimeout(t)}}function M(){l.cancelClaritySchedule?.(),l.cancelClaritySchedule=null,!(l.clarityLoaded||!l.clarityId)&&(l.clarityLoaded=!0,window.clarity=window.clarity||function(){window.clarity.q=window.clarity.q||[],window.clarity.q.push(arguments)},me(c()),G(`https://www.clarity.ms/tag/${encodeURIComponent(l.clarityId)}`,{crossorigin:"anonymous"}))}function me(e){window.clarity("consentv2",{ad_Storage:e.marketing&&N()?"granted":"denied",analytics_Storage:e.analytics?"granted":"denied"})}function G(e,t={}){let n=document.createElement("script");n.async=!0,n.src=e;for(let[o,r]of Object.entries(t))n.setAttribute(o,r);document.head.appendChild(n)}return we(Qe);})();
1
+ var WeborityAnalytics=(()=>{var O=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var Dt=Object.prototype.hasOwnProperty;var Nt=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(o){throw n=[o],o}};var H=(t,e)=>{for(var n in e)O(t,n,{get:e[n],enumerable:!0})},Lt=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of bt(e))!Dt.call(t,r)&&r!==n&&O(t,r,{get:()=>e[r],enumerable:!(o=At(e,r))||o.enumerable});return t};var kt=t=>Lt(O({},"__esModule",{value:!0}),t);var gt={};H(gt,{default:()=>ee});function te(){let t=[];t._i=[],t.__SV=1,t.people=[];for(let e of pt)t[e]=(...n)=>{t.push([e,...n])};t.init=(e,n)=>{t._i.push([e,n]);let o=document.createElement("script");o.async=!0,o.crossOrigin="anonymous",o.src=`${n.api_host.replace(/\/+$/,"").replace(".i.posthog.com","-assets.i.posthog.com")}/static/array.js`,document.head.appendChild(o)},window.posthog=t}var pt,mt,ee,_t=Nt(()=>{pt=["capture","register","opt_in_capturing","opt_out_capturing"];mt={init(t,e){window.posthog||te(),window.posthog.init(t,e)}};for(let t of pt)mt[t]=(...e)=>window.posthog[t](...e);ee=mt});var me={};H(me,{CONSENT_CHANGE_EVENT:()=>D,CONSENT_COOKIE_NAME:()=>S,captureAttribution:()=>ct,channels:()=>c,events:()=>a,getAttribution:()=>T,getConsent:()=>u,initConsent:()=>X,initSiteAnalytics:()=>Ct,loadTags:()=>It,onConsentChange:()=>m,requiresOptIn:()=>W,resolveAiSource:()=>w,resolveChannel:()=>g,saveConsent:()=>et,setConsentRegion:()=>Z,trackSiteEvent:()=>yt});var Rt=["google","googleads","adwords","youtube"],vt=["meta","facebook","fb","instagram","ig","messenger"],xt=["linkedin","lnkd"],Ut=["bing","microsoft","microsoftads","msn"],$=Object.freeze([["chatgpt",["chatgpt.com","chat.openai.com"]],["perplexity",["perplexity.ai"]],["gemini",["gemini.google.com"]],["copilot",["copilot.microsoft.com"]],["claude",["claude.ai"]],["you",["you.com"]],["phind",["phind.com"]],["deepseek",["deepseek.com"]],["grok",["grok.com"]],["meta_ai",["meta.ai"]],["poe",["poe.com"]]]),Pt=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],Mt=["google","yandex"],Gt=["facebook.com","fb.com","instagram.com","linkedin.com","lnkd.in","twitter.com","t.co","x.com","reddit.com","pinterest.com","youtube.com","youtu.be","tiktok.com","whatsapp.com","threads.net","t.me","telegram.org"],c=Object.freeze({DIRECT:"direct",GOOGLE:"google",META:"meta",LINKEDIN:"linkedin",MICROSOFT:"microsoft",OTHER:"other",AI_ASSISTANT:"ai_assistant",ORGANIC_SEARCH:"organic_search",ORGANIC_SOCIAL:"organic_social",REFERRAL:"referral"});function g(t){if(!t)return c.DIRECT;let e=l(t.utmSource);if(e){let r=E(e);if(Rt.includes(r))return c.GOOGLE;if(vt.includes(r))return c.META;if(xt.includes(r))return c.LINKEDIN;if(Ut.includes(r))return c.MICROSOFT}if(l(t.fbclid))return c.META;if(l(t.gclid)||l(t.gbraid)||l(t.wbraid))return c.GOOGLE;if(l(t.liFatId))return c.LINKEDIN;if(l(t.msclkid))return c.MICROSOFT;if(K(e))return c.AI_ASSISTANT;if(e||l(t.utmMedium)||l(t.utmCampaign)||l(t.utmContent)||l(t.utmTerm))return c.OTHER;let o=Y(t.referrer);return o?q(o)?c.AI_ASSISTANT:Ft(o)?c.ORGANIC_SEARCH:Gt.some(r=>j(o,r))?c.ORGANIC_SOCIAL:c.REFERRAL:c.DIRECT}function w(t){if(!t)return"";let e=K(l(t.utmSource));if(e)return e;let n=Y(t.referrer);return n?q(n):""}function K(t){if(!t)return"";let e=E(t);for(let[n,o]of $)if(E(n)===e||o.some(r=>E(r)===e))return n;return""}function q(t){for(let[e,n]of $)if(n.some(o=>j(t,o)))return e;return""}function Ft(t){return Pt.includes(t)?!0:Mt.some(e=>{if(!t.startsWith(`${e}.`))return!1;let n=t.slice(e.length+1).split(".");return n.length===1||n.length===2&&(n[0]==="co"||n[0]==="com")})}function j(t,e){return t===e||t.endsWith(`.${e}`)}function Y(t){let e=l(t);if(!e)return"";try{let n=new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`https://${e}`).hostname.toLowerCase();return n.startsWith("www.")?n.slice(4):n}catch{return""}}function E(t){return String(t).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function l(t){return String(t??"").trim()}var A=Object.freeze(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH"]);function W(t){let e=typeof t=="string"?t.trim().toUpperCase():"";return e.length!==2||e==="XX"||e==="T1"?!0:A.includes(e)}var S="webority_cookie_consent",D="webority-consent-change",Q=365,i={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:Q,cookieDomain:null,regionCookie:null,region:null,saved:null},J=["eea","other"],b=new Set;function X(t){let e=t?.strictOptIn??!1;if(typeof e!="boolean")throw new Error("@webority/analytics: initConsent strictOptIn must be true or false, or left out.");if(e){if(t.requiresOptIn!==void 0&&t.requiresOptIn!==!0)throw new Error("@webority/analytics: initConsent strictOptIn asks every visitor to opt in, so requiresOptIn must be true or left out.")}else if(typeof t?.requiresOptIn!="boolean")throw new Error("@webority/analytics: initConsent needs requiresOptIn (true or false), decided from the visitor's country.");if(t.cookieDomain!==void 0&&(typeof t.cookieDomain!="string"||!t.cookieDomain.trim()))throw new Error('@webority/analytics: initConsent cookieDomain must be a domain such as ".example.com", or left out.');if(t.cookieDays!==void 0&&!(Number.isInteger(t.cookieDays)&&t.cookieDays>0))throw new Error("@webority/analytics: initConsent cookieDays must be a whole number of days above zero, or left out.");if(t.adStorage!==void 0&&typeof t.adStorage!="boolean")throw new Error("@webority/analytics: initConsent adStorage must be true or false, or left out.");if(t.regionCookie!==void 0&&(typeof t.regionCookie!="string"||!/^[\w.-]+$/.test(t.regionCookie)))throw new Error('@webority/analytics: initConsent regionCookie must be a cookie name such as "wui_region", or left out.');i.initialized=!0,i.strictOptIn=e,i.requiresOptIn=e||t.requiresOptIn,i.adStorage=t.adStorage??!e,i.cookieDays=t.cookieDays??Q,i.cookieDomain=t.cookieDomain?.trim()??null,i.regionCookie=t.regionCookie??null,i.region=i.regionCookie?$t(i.regionCookie):null;let{saved:n,entryCount:o}=Ht();i.saved=n,i.cookieDomain&&o>1&&n&&it(n),zt(),Bt(),i.saved?k(i.saved):ot()&&rt()}function Z(t){if(L("setConsentRegion"),!J.includes(t))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let e=u();if(i.region=t,i.saved)return;let n=u();e.analytics===n.analytics&&e.functional===n.functional&&e.marketing===n.marketing||(rt(),nt(n))}function C(){return i.initialized}function tt(){return i.strictOptIn}function N(){return i.adStorage}function u(){L("getConsent");let t=i.saved;if(t)return{essential:!0,analytics:t.analytics,functional:t.functional,marketing:t.marketing,decided:!0};if(ot())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let e=!i.requiresOptIn;return{essential:!0,analytics:e,functional:e,marketing:e,decided:!1}}function et(t){L("saveConsent");let e={essential:!0,analytics:t?.analytics===!0,functional:t?.functional===!0,marketing:t?.marketing===!0,timestamp:new Date().toISOString()};it(e),i.saved=e,k(e),nt(u())}function m(t){return b.add(t),()=>b.delete(t)}function nt(t){for(let e of b)try{e(t)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(D,{detail:t}))}function L(t){if(!i.initialized)throw new Error(`@webority/analytics: call initConsent before ${t}.`)}function _(){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function zt(){if(i.strictOptIn){_("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500});return}_("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500,region:[...A]});let t=i.adStorage?"granted":"denied";_("consent","default",{ad_storage:t,ad_user_data:t,ad_personalization:t,analytics_storage:"granted",functionality_storage:"granted",personalization_storage:"granted",security_storage:"granted"})}function Bt(){_("set","ads_data_redaction",!0),_("set","url_passthrough",!0)}function ot(){return i.requiresOptIn&&!i.strictOptIn&&i.region==="other"}function rt(){let t=u();k(t,t.analytics&&i.adStorage)}function k(t,e=t.marketing&&i.adStorage){let n=o=>o?"granted":"denied";_("consent","update",{analytics_storage:n(t.analytics),functionality_storage:n(t.functional),personalization_storage:n(t.functional),ad_storage:n(e),ad_user_data:n(e),ad_personalization:n(e)})}function Ht(){let t=`${S}=`,e=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(t)),n=e.map(o=>Kt(o.slice(t.length))).filter(Boolean);return{saved:qt(n),entryCount:e.length}}function $t(t){let e=`${t}=`,o=(document.cookie||"").split(";").map(r=>r.trim()).find(r=>r.startsWith(e))?.slice(e.length);return J.includes(o)?o:null}function Kt(t){try{let e=JSON.parse(decodeURIComponent(t));return!e||typeof e!="object"?null:{essential:!0,analytics:e.analytics===!0,functional:e.functional===!0,marketing:e.marketing===!0,timestamp:e.timestamp??null}}catch{return null}}function qt(t){if(t.length===0)return null;let e=t.map(o=>typeof o.timestamp=="string"?Date.parse(o.timestamp):Number.NaN);if(e.some(Number.isNaN))return t.at(-1);let n=0;for(let o=1;o<t.length;o++)e[o]>=e[n]&&(n=o);return t[n]}function it(t){let e=typeof t.timestamp=="string"?Date.parse(t.timestamp):Number.NaN,n=(Number.isNaN(e)?Date.now():e)+i.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";i.cookieDomain&&V(`${S}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let r=i.cookieDomain?`;domain=${i.cookieDomain}`:"";V(`${S}=${encodeURIComponent(JSON.stringify(t))};expires=${new Date(n).toUTCString()};path=/${r};SameSite=Lax${o}`)}function V(t){document.cookie=t}var h="webority_attribution",jt=2160*60*60*1e3,Yt=200,R=500,Wt=Object.freeze({utm_source:"utmSource",utm_medium:"utmMedium",utm_campaign:"utmCampaign",utm_content:"utmContent",utm_term:"utmTerm",gclid:"gclid",gbraid:"gbraid",wbraid:"wbraid",fbclid:"fbclid",msclkid:"msclkid",li_fat_id:"liFatId"}),at=!1;function ct(){lt("captureAttribution"),Xt();let t=Qt();if(!t)return;let e=P(v());ut(v(),{firstTouch:e?.firstTouch??t,lastTouch:t}),Vt(t)}function Vt(t){let e={event:"acquisition_touch",acquisition_channel:g(t)};t.aiSource&&(e.ai_source=t.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(e)}function T(){return lt("getAttribution"),P(v())}function Qt(){let t=new URLSearchParams(window.location.search),e={};for(let[r,p]of Object.entries(Wt)){let s=I(t.get(r),Yt);s&&(e[p]=s)}let n=I(t.get("referrer"),R)||Jt();if(n&&(e.referrer=n),Object.keys(e).length===0)return null;let o=w(e);return o&&(e.aiSource=o),e.landingPage=I(window.location.pathname,R),e.capturedDateTimeUtc=new Date().toISOString(),e}function Jt(){let t=document.referrer;if(!t)return"";try{return new URL(t).hostname===window.location.hostname?"":I(t,R)}catch{return""}}function Xt(){at||(at=!0,m(t=>{let e=t.marketing?U():x(),n=t.marketing?x():U(),o=P(e);Zt(e),o&&ut(n,o)}))}function v(){return u().marketing?x():U()}function x(){try{return window.localStorage}catch{return null}}function U(){try{return window.sessionStorage}catch{return null}}function P(t){try{let e=t?.getItem(h);if(!e)return null;let n=JSON.parse(e),o=st(n?.firstTouch),r=st(n?.lastTouch);return!o&&!r?(t.removeItem(h),null):{firstTouch:o??r,lastTouch:r??o}}catch{return null}}function ut(t,e){try{t?.setItem(h,JSON.stringify(e))}catch{}}function Zt(t){try{t?.removeItem(h)}catch{}}function st(t){if(!t||typeof t!="object")return null;let e=Date.parse(t.capturedDateTimeUtc);return Number.isFinite(e)&&Date.now()-e<=jt?t:null}function I(t,e){let n=String(t??"").trim();return n?n.slice(0,e):""}function lt(t){if(!C())throw new Error(`@webority/analytics: call initConsent before ${t}.`)}var a=Object.freeze({SIGNUP_STARTED:"signup_started",SIGNUP_COMPLETED:"signup_completed",LOGIN_SUCCEEDED:"login_succeeded",ONBOARDING_STARTED:"onboarding_started",ONBOARDING_STEP_COMPLETED:"onboarding_step_completed",ONBOARDING_COMPLETED:"onboarding_completed",SUBSCRIPTION_ACTIVATED:"subscription_activated",SUBSCRIPTION_CANCELLED:"subscription_cancelled",PAYMENT_SUCCEEDED:"payment_succeeded",PAYMENT_FAILED:"payment_failed",FEEDBACK_SUBMITTED:"feedback_submitted",LEAD_SUBMITTED:"lead_submitted",LEAD_QUALIFIED:"lead_qualified",WHATSAPP_CLICK:"whatsapp_click",CALCULATOR_USE:"calculator_use",PHONE_CLICK:"phone_click",DEMO_BOOKED:"demo_booked",CONTACT_SUBMITTED:"contact_submitted",TRIAL_START_CLICK:"trial_start_click",SAMPLE_REPORT_DOWNLOAD:"sample_report_download"}),he=Object.freeze({signupStarted:a.SIGNUP_STARTED,signupCompleted:a.SIGNUP_COMPLETED,loginSucceeded:a.LOGIN_SUCCEEDED,onboardingStarted:a.ONBOARDING_STARTED,onboardingStepCompleted:a.ONBOARDING_STEP_COMPLETED,onboardingCompleted:a.ONBOARDING_COMPLETED,subscriptionActivated:a.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:a.SUBSCRIPTION_CANCELLED,paymentSucceeded:a.PAYMENT_SUCCEEDED,paymentFailed:a.PAYMENT_FAILED,feedbackSubmitted:a.FEEDBACK_SUBMITTED,leadSubmitted:a.LEAD_SUBMITTED,leadQualified:a.LEAD_QUALIFIED,whatsappClick:a.WHATSAPP_CLICK,calculatorUse:a.CALCULATOR_USE,phoneClick:a.PHONE_CLICK,demoBooked:a.DEMO_BOOKED,contactSubmitted:a.CONTACT_SUBMITTED,trialStartClick:a.TRIAL_START_CLICK,sampleReportDownload:a.SAMPLE_REPORT_DOWNLOAD});function dt(t,e){return e?t:{...t,opt_out_capturing_by_default:!0}}function ft(t){let e=t.sessionRecording??{enabled:!1},n={api_host:t.host,autocapture:!1,capture_pageview:"history_change",cookieless_mode:"on_reject",person_profiles:"identified_only",persistence:"localStorage+cookie",cross_subdomain_cookie:!0,disable_session_recording:!e.enabled,disable_surveys:!0,disable_product_tours:!0,disable_conversations:!0,advanced_disable_feature_flags:!e.enabled};return e.enabled&&(n.session_recording={maskAllInputs:e.maskAllInputs??!0,...e.maskTextSelector?{maskTextSelector:e.maskTextSelector}:{}}),n}var ne=()=>Promise.resolve().then(()=>(_t(),gt)),d={config:null,posthog:null,loading:null,loadPosthog:ne,stopFollowingConsent:null};function Ct({host:t,clientKey:e,product:n,surface:o,environment:r,enabled:p=!0}={}){if(!C())throw new Error("@webority/analytics: call initConsent before initSiteAnalytics.");!p||!t||!e||r==="Local"||d.config||(d.config={host:t,clientKey:e,product:n,surface:o,environment:r},d.stopFollowingConsent=m(s=>re(s.analytics)),d.loading=Promise.resolve().then(d.loadPosthog).then(s=>oe(s.default??s)).catch(()=>{}))}function oe(t){let e=d.config,n=u().analytics;t.init(e.clientKey,dt(ie(e),n)),t.register({product:e.product,surface:e.surface,environment:e.environment}),n?t.opt_in_capturing({captureEventName:!1}):t.opt_out_capturing(),d.posthog=t}function re(t){d.posthog&&(t?d.posthog.opt_in_capturing():d.posthog.opt_out_capturing())}function ie(t){return{...ft({host:t.host}),capture_pageview:!0}}function St(t,e){let n=d.config;if(!n)return;let o={...e,product:n.product,surface:n.surface,environment:n.environment};d.loading.then(()=>d.posthog?.capture(t,o)).catch(()=>{})}var ae=new Set(Object.values(a));function yt(t,e={}){if(!ae.has(t))return!1;let n=u().analytics,o=T(),r={...e};for(let[p,s]of[["first",o?.firstTouch],["last",o?.lastTouch]])s&&(r[`${p}_touch_channel`]=g(s),s.aiSource&&(r[`${p}_touch_ai_source`]=s.aiSource));return St(t,r),n?(window.dataLayer=window.dataLayer||[],window.dataLayer.push({...r,event:t}),!0):!1}var se=["scroll","mousemove","touchstart","keydown","pointerdown"],ce="https://www.googletagmanager.com/gtm.js",Et=1500,ue=3e3,le=100,f={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function It(t={}){if(!C())throw new Error("@webority/analytics: call initConsent before loadTags.");if(f.loaded)return;f.loaded=!0;let{gtmId:e,gtmUrl:n=ce,clarityId:o,ahrefsKey:r}=t;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let p=tt();if(r){let s=()=>G("https://analytics.ahrefs.com/analytics.js",{"data-key":r});p?wt(y=>y.analytics,s):s()}if(e){let s=N(),y=B=>B.analytics||B.marketing&&s,Tt=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),G(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(e)}`)},F=u(),Ot=F.decided&&y(F)?de:fe,z=()=>Ot(Tt);p?wt(y,z):z()}o&&(f.clarityId=o,u().analytics&&pe(),m(s=>{s.analytics&&!f.clarityLoaded?M():f.clarityLoaded&&ht(s)}))}function wt(t,e){if(t(u())){e();return}let n=m(o=>{t(o)&&(n(),e())})}function de(t){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()}function fe(t){let e=!1,n=()=>{e||(e=!0,t())};for(let o of se)window.addEventListener(o,n,{once:!0,passive:!0});document.readyState==="complete"?setTimeout(n,Et):window.addEventListener("load",()=>setTimeout(n,Et),{once:!0})}function pe(){let t=()=>{window.scrollY>le&&M()};window.addEventListener("scroll",t,{passive:!0});let e=setTimeout(M,ue);f.cancelClaritySchedule=()=>{window.removeEventListener("scroll",t),clearTimeout(e)}}function M(){f.cancelClaritySchedule?.(),f.cancelClaritySchedule=null,!(f.clarityLoaded||!f.clarityId)&&(f.clarityLoaded=!0,window.clarity=window.clarity||function(){window.clarity.q=window.clarity.q||[],window.clarity.q.push(arguments)},ht(u()),G(`https://www.clarity.ms/tag/${encodeURIComponent(f.clarityId)}`,{crossorigin:"anonymous"}))}function ht(t){window.clarity("consentv2",{ad_Storage:t.marketing&&N()?"granted":"denied",analytics_Storage:t.analytics?"granted":"denied"})}function G(t,e={}){let n=document.createElement("script");n.async=!0,n.src=t;for(let[o,r]of Object.entries(e))n.setAttribute(o,r);document.head.appendChild(n)}return kt(me);})();
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@webority/analytics",
3
- "version": "0.14.2",
3
+ "version": "0.15.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "exports": {
8
8
  ".": "./dist/index.js",
9
9
  "./site": "./dist/site.js",
10
+ "./react-native": "./dist/react-native.js",
10
11
  "./dist/webority-analytics-site.global.js": "./dist/webority-analytics-site.global.js"
11
12
  },
12
13
  "sideEffects": [
@@ -16,19 +17,23 @@
16
17
  "dist"
17
18
  ],
18
19
  "scripts": {
19
- "build": "node -e \"require(\\\"node:fs\\\").rmSync(\\\"dist\\\",{recursive:true,force:true})\" && esbuild src/index.js src/site.js --bundle --splitting --format=esm --external:posthog-js --target=es2020 --minify --outdir=dist && esbuild src/site.js --bundle --format=iife --global-name=WeborityAnalytics --target=es2020 --minify --outfile=dist/webority-analytics-site.global.js",
20
+ "build": "node -e \"require(\\\"node:fs\\\").rmSync(\\\"dist\\\",{recursive:true,force:true})\" && esbuild src/index.js src/site.js --bundle --splitting --format=esm --external:posthog-js --target=es2020 --minify --outdir=dist && esbuild src/site.js --bundle --format=iife --global-name=WeborityAnalytics --alias:posthog-js=./src/site-posthog-snippet.js --target=es2020 --minify --outfile=dist/webority-analytics-site.global.js && esbuild src/react-native/index.js --bundle --format=esm --external:posthog-react-native --target=es2020 --minify --outfile=dist/react-native.js",
20
21
  "prepack": "npm run build && node ../scripts/package-guard-pack.mjs --output-dirs dist --allow-file ../.webority/package-allow.json",
21
22
  "lint": "biome lint ./src ./test",
22
23
  "format": "biome format --write ./src ./test",
23
24
  "check": "biome check ./src ./test",
24
- "test": "node test/smoke.mjs && node test/site.mjs && npm run build --silent && node test/bundle.mjs"
25
+ "test": "node test/smoke.mjs && node test/site.mjs && node test/react-native.mjs && npm run build --silent && node test/bundle.mjs"
25
26
  },
26
27
  "peerDependencies": {
27
- "posthog-js": "^1.417.1"
28
+ "posthog-js": "^1.417.1",
29
+ "posthog-react-native": "^4.80.0"
28
30
  },
29
31
  "peerDependenciesMeta": {
30
32
  "posthog-js": {
31
33
  "optional": true
34
+ },
35
+ "posthog-react-native": {
36
+ "optional": true
32
37
  }
33
38
  },
34
39
  "devDependencies": {
@@ -1 +0,0 @@
1
- var ce=["google","googleads","adwords","youtube"],ue=["meta","facebook","fb","instagram","ig","messenger"],le=["linkedin","lnkd"],de=["bing","microsoft","microsoftads","msn"],F=Object.freeze([["chatgpt",["chatgpt.com","chat.openai.com"]],["perplexity",["perplexity.ai"]],["gemini",["gemini.google.com"]],["copilot",["copilot.microsoft.com"]],["claude",["claude.ai"]],["you",["you.com"]],["phind",["phind.com"]],["deepseek",["deepseek.com"]],["grok",["grok.com"]],["meta_ai",["meta.ai"]],["poe",["poe.com"]]]),fe=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],me=["google","yandex"],ge=["facebook.com","fb.com","instagram.com","linkedin.com","lnkd.in","twitter.com","t.co","x.com","reddit.com","pinterest.com","youtube.com","youtu.be","tiktok.com","whatsapp.com","threads.net","t.me","telegram.org"],s=Object.freeze({DIRECT:"direct",GOOGLE:"google",META:"meta",LINKEDIN:"linkedin",MICROSOFT:"microsoft",OTHER:"other",AI_ASSISTANT:"ai_assistant",ORGANIC_SEARCH:"organic_search",ORGANIC_SOCIAL:"organic_social",REFERRAL:"referral"});function p(e){if(!e)return s.DIRECT;let t=u(e.utmSource);if(t){let i=_(t);if(ce.includes(i))return s.GOOGLE;if(ue.includes(i))return s.META;if(le.includes(i))return s.LINKEDIN;if(de.includes(i))return s.MICROSOFT}if(u(e.fbclid))return s.META;if(u(e.gclid)||u(e.gbraid)||u(e.wbraid))return s.GOOGLE;if(u(e.liFatId))return s.LINKEDIN;if(u(e.msclkid))return s.MICROSOFT;if(z(t))return s.AI_ASSISTANT;if(t||u(e.utmMedium)||u(e.utmCampaign)||u(e.utmContent)||u(e.utmTerm))return s.OTHER;let o=$(e.referrer);return o?B(o)?s.AI_ASSISTANT:pe(o)?s.ORGANIC_SEARCH:ge.some(i=>H(o,i))?s.ORGANIC_SOCIAL:s.REFERRAL:s.DIRECT}function T(e){if(!e)return"";let t=z(u(e.utmSource));if(t)return t;let n=$(e.referrer);return n?B(n):""}function z(e){if(!e)return"";let t=_(e);for(let[n,o]of F)if(_(n)===t||o.some(i=>_(i)===t))return n;return""}function B(e){for(let[t,n]of F)if(n.some(o=>H(e,o)))return t;return""}function pe(e){return fe.includes(e)?!0:me.some(t=>{if(!e.startsWith(`${t}.`))return!1;let n=e.slice(t.length+1).split(".");return n.length===1||n.length===2&&(n[0]==="co"||n[0]==="com")})}function H(e,t){return e===t||e.endsWith(`.${t}`)}function $(e){let t=u(e);if(!t)return"";try{let n=new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)?t:`https://${t}`).hostname.toLowerCase();return n.startsWith("www.")?n.slice(4):n}catch{return""}}function _(e){return String(e).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function u(e){return String(e??"").trim()}var I=Object.freeze(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH"]);function Ce(e){let t=typeof e=="string"?e.trim().toUpperCase():"";return t.length!==2||t==="XX"||t==="T1"?!0:I.includes(t)}var S="webority_cookie_consent",q="webority-consent-change",j=365,r={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:j,cookieDomain:null,regionCookie:null,region:null,saved:null},Y=["eea","other"],O=new Set;function _e(e){let t=e?.strictOptIn??!1;if(typeof t!="boolean")throw new Error("@webority/analytics: initConsent strictOptIn must be true or false, or left out.");if(t){if(e.requiresOptIn!==void 0&&e.requiresOptIn!==!0)throw new Error("@webority/analytics: initConsent strictOptIn asks every visitor to opt in, so requiresOptIn must be true or left out.")}else if(typeof e?.requiresOptIn!="boolean")throw new Error("@webority/analytics: initConsent needs requiresOptIn (true or false), decided from the visitor's country.");if(e.cookieDomain!==void 0&&(typeof e.cookieDomain!="string"||!e.cookieDomain.trim()))throw new Error('@webority/analytics: initConsent cookieDomain must be a domain such as ".example.com", or left out.');if(e.cookieDays!==void 0&&!(Number.isInteger(e.cookieDays)&&e.cookieDays>0))throw new Error("@webority/analytics: initConsent cookieDays must be a whole number of days above zero, or left out.");if(e.adStorage!==void 0&&typeof e.adStorage!="boolean")throw new Error("@webority/analytics: initConsent adStorage must be true or false, or left out.");if(e.regionCookie!==void 0&&(typeof e.regionCookie!="string"||!/^[\w.-]+$/.test(e.regionCookie)))throw new Error('@webority/analytics: initConsent regionCookie must be a cookie name such as "wui_region", or left out.');r.initialized=!0,r.strictOptIn=t,r.requiresOptIn=t||e.requiresOptIn,r.adStorage=e.adStorage??!t,r.cookieDays=e.cookieDays??j,r.cookieDomain=e.cookieDomain?.trim()??null,r.regionCookie=e.regionCookie??null,r.region=r.regionCookie?Ie(r.regionCookie):null;let{saved:n,entryCount:o}=Te();r.saved=n,r.cookieDomain&&o>1&&n&&Q(n),ye(),we(),r.saved?D(r.saved):J()&&X()}function Se(e){if(h("setConsentRegion"),!Y.includes(e))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let t=c();if(r.region=e,r.saved)return;let n=c();t.analytics===n.analytics&&t.functional===n.functional&&t.marketing===n.marketing||(X(),V(n))}function E(){return r.initialized}function W(){return r.strictOptIn}function A(){return r.adStorage}function c(){h("getConsent");let e=r.saved;if(e)return{essential:!0,analytics:e.analytics,functional:e.functional,marketing:e.marketing,decided:!0};if(J())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let t=!r.requiresOptIn;return{essential:!0,analytics:t,functional:t,marketing:t,decided:!1}}function Ee(e){h("saveConsent");let t={essential:!0,analytics:e?.analytics===!0,functional:e?.functional===!0,marketing:e?.marketing===!0,timestamp:new Date().toISOString()};Q(t),r.saved=t,D(t),V(c())}function g(e){return O.add(e),()=>O.delete(e)}function V(e){for(let t of O)try{t(e)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(q,{detail:e}))}function h(e){if(!r.initialized)throw new Error(`@webority/analytics: call initConsent before ${e}.`)}function m(){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function ye(){if(r.strictOptIn){m("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500});return}m("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500,region:[...I]});let e=r.adStorage?"granted":"denied";m("consent","default",{ad_storage:e,ad_user_data:e,ad_personalization:e,analytics_storage:"granted",functionality_storage:"granted",personalization_storage:"granted",security_storage:"granted"})}function we(){m("set","ads_data_redaction",!0),m("set","url_passthrough",!0)}function J(){return r.requiresOptIn&&!r.strictOptIn&&r.region==="other"}function X(){let e=c();D(e,e.analytics&&r.adStorage)}function D(e,t=e.marketing&&r.adStorage){let n=o=>o?"granted":"denied";m("consent","update",{analytics_storage:n(e.analytics),functionality_storage:n(e.functional),personalization_storage:n(e.functional),ad_storage:n(t),ad_user_data:n(t),ad_personalization:n(t)})}function Te(){let e=`${S}=`,t=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(e)),n=t.map(o=>Oe(o.slice(e.length))).filter(Boolean);return{saved:Ae(n),entryCount:t.length}}function Ie(e){let t=`${e}=`,o=(document.cookie||"").split(";").map(i=>i.trim()).find(i=>i.startsWith(t))?.slice(t.length);return Y.includes(o)?o:null}function Oe(e){try{let t=JSON.parse(decodeURIComponent(e));return!t||typeof t!="object"?null:{essential:!0,analytics:t.analytics===!0,functional:t.functional===!0,marketing:t.marketing===!0,timestamp:t.timestamp??null}}catch{return null}}function Ae(e){if(e.length===0)return null;let t=e.map(o=>typeof o.timestamp=="string"?Date.parse(o.timestamp):Number.NaN);if(t.some(Number.isNaN))return e.at(-1);let n=0;for(let o=1;o<e.length;o++)t[o]>=t[n]&&(n=o);return e[n]}function Q(e){let t=typeof e.timestamp=="string"?Date.parse(e.timestamp):Number.NaN,n=(Number.isNaN(t)?Date.now():t)+r.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";r.cookieDomain&&K(`${S}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let i=r.cookieDomain?`;domain=${r.cookieDomain}`:"";K(`${S}=${encodeURIComponent(JSON.stringify(e))};expires=${new Date(n).toUTCString()};path=/${i};SameSite=Lax${o}`)}function K(e){document.cookie=e}var w="webority_attribution",he=2160*60*60*1e3,De=200,N=500,Ne=Object.freeze({utm_source:"utmSource",utm_medium:"utmMedium",utm_campaign:"utmCampaign",utm_content:"utmContent",utm_term:"utmTerm",gclid:"gclid",gbraid:"gbraid",wbraid:"wbraid",fbclid:"fbclid",msclkid:"msclkid",li_fat_id:"liFatId"}),Z=!1;function Le(){ne("captureAttribution"),ve();let e=ke();if(!e)return;let t=v(L());te(L(),{firstTouch:t?.firstTouch??e,lastTouch:e}),be(e)}function be(e){let t={event:"acquisition_touch",acquisition_channel:p(e)};e.aiSource&&(t.ai_source=e.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(t)}function R(){return ne("getAttribution"),v(L())}function ke(){let e=new URLSearchParams(window.location.search),t={};for(let[i,f]of Object.entries(Ne)){let d=y(e.get(i),De);d&&(t[f]=d)}let n=y(e.get("referrer"),N)||Re();if(n&&(t.referrer=n),Object.keys(t).length===0)return null;let o=T(t);return o&&(t.aiSource=o),t.landingPage=y(window.location.pathname,N),t.capturedDateTimeUtc=new Date().toISOString(),t}function Re(){let e=document.referrer;if(!e)return"";try{return new URL(e).hostname===window.location.hostname?"":y(e,N)}catch{return""}}function ve(){Z||(Z=!0,g(e=>{let t=e.marketing?k():b(),n=e.marketing?b():k(),o=v(t);Ue(t),o&&te(n,o)}))}function L(){return c().marketing?b():k()}function b(){try{return window.localStorage}catch{return null}}function k(){try{return window.sessionStorage}catch{return null}}function v(e){try{let t=e?.getItem(w);if(!t)return null;let n=JSON.parse(t),o=ee(n?.firstTouch),i=ee(n?.lastTouch);return!o&&!i?(e.removeItem(w),null):{firstTouch:o??i,lastTouch:i??o}}catch{return null}}function te(e,t){try{e?.setItem(w,JSON.stringify(t))}catch{}}function Ue(e){try{e?.removeItem(w)}catch{}}function ee(e){if(!e||typeof e!="object")return null;let t=Date.parse(e.capturedDateTimeUtc);return Number.isFinite(t)&&Date.now()-t<=he?e:null}function y(e,t){let n=String(e??"").trim();return n?n.slice(0,t):""}function ne(e){if(!E())throw new Error(`@webority/analytics: call initConsent before ${e}.`)}var a=Object.freeze({SIGNUP_STARTED:"signup_started",SIGNUP_COMPLETED:"signup_completed",LOGIN_SUCCEEDED:"login_succeeded",ONBOARDING_STARTED:"onboarding_started",ONBOARDING_STEP_COMPLETED:"onboarding_step_completed",ONBOARDING_COMPLETED:"onboarding_completed",SUBSCRIPTION_ACTIVATED:"subscription_activated",SUBSCRIPTION_CANCELLED:"subscription_cancelled",PAYMENT_SUCCEEDED:"payment_succeeded",PAYMENT_FAILED:"payment_failed",FEEDBACK_SUBMITTED:"feedback_submitted",LEAD_SUBMITTED:"lead_submitted",LEAD_QUALIFIED:"lead_qualified",WHATSAPP_CLICK:"whatsapp_click",CALCULATOR_USE:"calculator_use",PHONE_CLICK:"phone_click",DEMO_BOOKED:"demo_booked",CONTACT_SUBMITTED:"contact_submitted",TRIAL_START_CLICK:"trial_start_click",SAMPLE_REPORT_DOWNLOAD:"sample_report_download"}),Qe=Object.freeze({signupStarted:a.SIGNUP_STARTED,signupCompleted:a.SIGNUP_COMPLETED,loginSucceeded:a.LOGIN_SUCCEEDED,onboardingStarted:a.ONBOARDING_STARTED,onboardingStepCompleted:a.ONBOARDING_STEP_COMPLETED,onboardingCompleted:a.ONBOARDING_COMPLETED,subscriptionActivated:a.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:a.SUBSCRIPTION_CANCELLED,paymentSucceeded:a.PAYMENT_SUCCEEDED,paymentFailed:a.PAYMENT_FAILED,feedbackSubmitted:a.FEEDBACK_SUBMITTED,leadSubmitted:a.LEAD_SUBMITTED,leadQualified:a.LEAD_QUALIFIED,whatsappClick:a.WHATSAPP_CLICK,calculatorUse:a.CALCULATOR_USE,phoneClick:a.PHONE_CLICK,demoBooked:a.DEMO_BOOKED,contactSubmitted:a.CONTACT_SUBMITTED,trialStartClick:a.TRIAL_START_CLICK,sampleReportDownload:a.SAMPLE_REPORT_DOWNLOAD}),Ze=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;var xe=new Set(Object.values(a));function Me(e,t={}){if(!xe.has(e)||!c().analytics)return!1;let n=R(),o={...t,event:e};for(let[i,f]of[["first",n?.firstTouch],["last",n?.lastTouch]])f&&(o[`${i}_touch_channel`]=p(f),f.aiSource&&(o[`${i}_touch_ai_source`]=f.aiSource));return window.dataLayer=window.dataLayer||[],window.dataLayer.push(o),!0}var Ge=["scroll","mousemove","touchstart","keydown","pointerdown"],Pe="https://www.googletagmanager.com/gtm.js",oe=1500,Fe=3e3,ze=100,l={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function Be(e={}){if(!E())throw new Error("@webority/analytics: call initConsent before loadTags.");if(l.loaded)return;l.loaded=!0;let{gtmId:t,gtmUrl:n=Pe,clarityId:o,ahrefsKey:i}=e;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let f=W();if(i){let d=()=>x("https://analytics.ahrefs.com/analytics.js",{"data-key":i});f?re(C=>C.analytics,d):d()}if(t){let d=A(),C=P=>P.analytics||P.marketing&&d,ae=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),x(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(t)}`)},M=c(),se=M.decided&&C(M)?He:$e,G=()=>se(ae);f?re(C,G):G()}o&&(l.clarityId=o,c().analytics&&Ke(),g(d=>{d.analytics&&!l.clarityLoaded?U():l.clarityLoaded&&ie(d)}))}function re(e,t){if(e(c())){t();return}let n=g(o=>{e(o)&&(n(),t())})}function He(e){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}function $e(e){let t=!1,n=()=>{t||(t=!0,e())};for(let o of Ge)window.addEventListener(o,n,{once:!0,passive:!0});document.readyState==="complete"?setTimeout(n,oe):window.addEventListener("load",()=>setTimeout(n,oe),{once:!0})}function Ke(){let e=()=>{window.scrollY>ze&&U()};window.addEventListener("scroll",e,{passive:!0});let t=setTimeout(U,Fe);l.cancelClaritySchedule=()=>{window.removeEventListener("scroll",e),clearTimeout(t)}}function U(){l.cancelClaritySchedule?.(),l.cancelClaritySchedule=null,!(l.clarityLoaded||!l.clarityId)&&(l.clarityLoaded=!0,window.clarity=window.clarity||function(){window.clarity.q=window.clarity.q||[],window.clarity.q.push(arguments)},ie(c()),x(`https://www.clarity.ms/tag/${encodeURIComponent(l.clarityId)}`,{crossorigin:"anonymous"}))}function ie(e){window.clarity("consentv2",{ad_Storage:e.marketing&&A()?"granted":"denied",analytics_Storage:e.analytics?"granted":"denied"})}function x(e,t={}){let n=document.createElement("script");n.async=!0,n.src=e;for(let[o,i]of Object.entries(t))n.setAttribute(o,i);document.head.appendChild(n)}export{Ce as a,S as b,q as c,_e as d,Se as e,E as f,c as g,Ee as h,g as i,a as j,Qe as k,Ze as l,s as m,p as n,T as o,Le as p,R as q,Me as r,Be as s};