@webority/analytics 0.37.0 → 0.38.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.
- package/dist/check-events.js +14 -14
- package/dist/chunk-LGUY6CCC.js +1 -0
- package/dist/chunk-UMKCGH25.js +1 -0
- package/dist/errors.js +1 -1
- package/dist/generate-events.js +12 -12
- package/dist/index.js +1 -1
- package/dist/node.js +1 -1
- package/dist/react-native.js +1 -1
- package/dist/site.js +1 -1
- package/dist/types/after-interaction.d.ts +6 -0
- package/dist/types/analytics.d.ts +49 -0
- package/dist/types/attribution.d.ts +34 -0
- package/dist/types/catalogue/check-events.d.ts +2 -0
- package/dist/types/catalogue/check.d.ts +32 -0
- package/dist/types/catalogue/generate-events.d.ts +2 -0
- package/dist/types/catalogue/generate.d.ts +28 -0
- package/dist/types/catalogue/plan.d.ts +97 -0
- package/dist/types/catalogue/scan.d.ts +42 -0
- package/dist/types/channels.d.ts +24 -0
- package/dist/types/consent-regions.d.ts +2 -0
- package/dist/types/consent.d.ts +83 -0
- package/dist/types/errors.d.ts +35 -0
- package/dist/types/event-registry.d.ts +19 -0
- package/dist/types/feature-flags.d.ts +26 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/node/errors.d.ts +38 -0
- package/dist/types/node/index.d.ts +1 -0
- package/dist/types/posthog-bridge.d.ts +22 -0
- package/dist/types/react-native/index.d.ts +90 -0
- package/dist/types/react-native/native-modules.d.ts +41 -0
- package/dist/types/site-events.d.ts +16 -0
- package/dist/types/site-posthog-snippet.d.ts +27 -0
- package/dist/types/site-posthog.d.ts +62 -0
- package/dist/types/site-web-vitals-script.d.ts +13 -0
- package/dist/types/site-web-vitals.d.ts +4 -0
- package/dist/types/site.d.ts +8 -0
- package/dist/types/state.d.ts +43 -0
- package/dist/types/tags.d.ts +35 -0
- package/dist/types/tours.d.ts +8 -0
- package/dist/types/track-helpers.d.ts +8 -0
- package/dist/types/url-scrub.d.ts +14 -0
- package/dist/types/vocabulary.d.ts +76 -0
- package/dist/types/web-vitals-global.d.ts +1 -0
- package/dist/types/web-vitals.d.ts +71 -0
- package/dist/{web-vitals-RMISAXOY.js → web-vitals-DND62YT4.js} +1 -1
- package/dist/webority-analytics-site.global.js +1 -1
- package/dist/webority-analytics-web-vitals.global.js +1 -1
- package/package.json +30 -11
- package/dist/chunk-BXYJOYLR.js +0 -1
- package/dist/chunk-TPTUIQE4.js +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { PostHog } from "posthog-js";
|
|
2
|
+
import { startSiteWebVitals } from "#site-web-vitals";
|
|
3
|
+
import type { EventName, EventProperties } from "./event-registry.ts";
|
|
4
|
+
import { buildInitOptions, type PosthogInitOptions } from "./posthog-bridge.ts";
|
|
5
|
+
import { normalizeWebVitalsOption } from "./web-vitals.ts";
|
|
6
|
+
type BridgeConfig = Parameters<typeof buildInitOptions>[0];
|
|
7
|
+
type WebVitalsOption = Parameters<typeof normalizeWebVitalsOption>[0];
|
|
8
|
+
type WebVitalsConfig = ReturnType<typeof normalizeWebVitalsOption>;
|
|
9
|
+
type SiteConfig = {
|
|
10
|
+
host: string;
|
|
11
|
+
clientKey: string;
|
|
12
|
+
product: string | undefined;
|
|
13
|
+
surface: string | undefined;
|
|
14
|
+
environment: string | undefined;
|
|
15
|
+
sessionRecording: BridgeConfig["sessionRecording"];
|
|
16
|
+
heatmaps: boolean;
|
|
17
|
+
captureExceptions: boolean;
|
|
18
|
+
webVitals: WebVitalsConfig;
|
|
19
|
+
};
|
|
20
|
+
type SiteState = {
|
|
21
|
+
config: SiteConfig | null;
|
|
22
|
+
posthog: PostHog | null;
|
|
23
|
+
pending: [string, Record<string, unknown>][];
|
|
24
|
+
failed: boolean;
|
|
25
|
+
loadPosthog: () => Promise<{
|
|
26
|
+
default: PostHog;
|
|
27
|
+
}>;
|
|
28
|
+
startVitals: typeof startSiteWebVitals;
|
|
29
|
+
stopFollowingConsent: (() => void) | null;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Starts PostHog capture on a public website, once per page. initConsent must run first, as for
|
|
33
|
+
* initAnalytics. Nothing starts without a host and a client key, with enabled false, or in Local.
|
|
34
|
+
* Consent works as on the portal: without analytics consent PostHog counts the visit cookieless
|
|
35
|
+
* and anonymous, with it the device id is kept in a cookie on the parent domain, so a later
|
|
36
|
+
* portal sign-in on a sibling subdomain joins this visit. A website never identifies anyone.
|
|
37
|
+
*
|
|
38
|
+
* PostHog loads on the same schedule as Tag Manager (the first interaction, or 1.5s after the
|
|
39
|
+
* load event), so it never competes with the page's first paint. Events tracked before then are
|
|
40
|
+
* held and sent in order once it starts; PostHog stamps them, and the page view, at that moment.
|
|
41
|
+
*
|
|
42
|
+
* webVitals takes the portal's option (true or { sampleRate, softNavigations, deployVersion }) and
|
|
43
|
+
* sends the same attributed $web_vitals events once PostHog starts; a bad value throws here.
|
|
44
|
+
*/
|
|
45
|
+
export declare function initSiteAnalytics({ host, clientKey, product, surface, environment, enabled, sessionRecording, heatmaps, captureExceptions, webVitals, }?: {
|
|
46
|
+
host?: string;
|
|
47
|
+
clientKey?: string;
|
|
48
|
+
product?: string | undefined;
|
|
49
|
+
surface?: string | undefined;
|
|
50
|
+
environment?: string | undefined;
|
|
51
|
+
enabled?: boolean;
|
|
52
|
+
sessionRecording?: BridgeConfig["sessionRecording"];
|
|
53
|
+
heatmaps?: boolean;
|
|
54
|
+
captureExceptions?: boolean;
|
|
55
|
+
webVitals?: WebVitalsOption;
|
|
56
|
+
}): void;
|
|
57
|
+
/** The portal's init options, changed for a multi-page site: every load is a page view. Pure, so the test can lock the mapping. */
|
|
58
|
+
export declare function buildSiteInitOptions(config: SiteConfig): PosthogInitOptions;
|
|
59
|
+
/** Sends a site event to PostHog, held until PostHog starts; does nothing unless initSiteAnalytics has run. */
|
|
60
|
+
export declare function captureSiteEvent(name: EventName, props: EventProperties): void;
|
|
61
|
+
export declare function resetSiteAnalyticsForTests(loadPosthog?: SiteState["loadPosthog"], startVitals?: SiteState["startVitals"]): void;
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { startWebVitals } from "./web-vitals.ts";
|
|
2
|
+
type StartWebVitals = typeof startWebVitals;
|
|
3
|
+
declare global {
|
|
4
|
+
var WeborityAnalyticsWebVitals: {
|
|
5
|
+
startWebVitals: StartWebVitals;
|
|
6
|
+
} | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare const WEB_VITALS_SCRIPT = "webority-analytics-web-vitals.global.js";
|
|
9
|
+
export declare function startSiteWebVitals(options: Parameters<StartWebVitals>[0], send: Parameters<StartWebVitals>[1], { base, doc }?: {
|
|
10
|
+
base?: string | null;
|
|
11
|
+
doc?: Document;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { captureAttribution, getAttribution } from "./attribution.ts";
|
|
2
|
+
export { channels, resolveAiSource, resolveChannel } from "./channels.ts";
|
|
3
|
+
export { CONSENT_CHANGE_EVENT, CONSENT_COOKIE_NAME, getConsent, initConsent, onConsentChange, saveConsent, setConsentRegion, } from "./consent.ts";
|
|
4
|
+
export { requiresOptIn } from "./consent-regions.ts";
|
|
5
|
+
export { registerEvents, trackSiteEvent } from "./site-events.ts";
|
|
6
|
+
export { initSiteAnalytics } from "./site-posthog.ts";
|
|
7
|
+
export { loadTags } from "./tags.ts";
|
|
8
|
+
export { events } from "./vocabulary.ts";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { PostHog } from "posthog-js";
|
|
2
|
+
import type { AnalyticsLogger } from "./analytics.ts";
|
|
3
|
+
import type { EventProperties } from "./event-registry.ts";
|
|
4
|
+
import type { normalizeWebVitalsOption } from "./web-vitals.ts";
|
|
5
|
+
/** What initAnalytics settled on after applying its defaults. */
|
|
6
|
+
export type ResolvedAnalyticsConfig = {
|
|
7
|
+
host: string;
|
|
8
|
+
clientKey: string;
|
|
9
|
+
product: string;
|
|
10
|
+
surface: string;
|
|
11
|
+
environment: string;
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
logger: AnalyticsLogger | null;
|
|
14
|
+
sessionRecording: {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
maskAllInputs: boolean;
|
|
17
|
+
maskTextSelector: string | null;
|
|
18
|
+
};
|
|
19
|
+
heatmaps: boolean;
|
|
20
|
+
captureExceptions: boolean;
|
|
21
|
+
webVitals: ReturnType<typeof normalizeWebVitalsOption>;
|
|
22
|
+
featureFlags: boolean;
|
|
23
|
+
};
|
|
24
|
+
/** An identify made before consent, kept until analytics is allowed. */
|
|
25
|
+
export type PendingIdentify = {
|
|
26
|
+
publicId: string;
|
|
27
|
+
props: EventProperties;
|
|
28
|
+
};
|
|
29
|
+
export type AnalyticsState = {
|
|
30
|
+
config: ResolvedAnalyticsConfig | null;
|
|
31
|
+
posthogInstance: PostHog | null;
|
|
32
|
+
posthogInitPromise: Promise<PostHog> | null;
|
|
33
|
+
pendingIdentify: PendingIdentify | null;
|
|
34
|
+
};
|
|
35
|
+
export declare const eventRegistry: {
|
|
36
|
+
register(names: Iterable<string>): void;
|
|
37
|
+
assertRegistered(name: import("./event-registry.ts").EventName): void;
|
|
38
|
+
};
|
|
39
|
+
export declare const state: AnalyticsState;
|
|
40
|
+
export declare function resetState(config: ResolvedAnalyticsConfig): void;
|
|
41
|
+
export declare function isEligible(): boolean;
|
|
42
|
+
export declare function hasConsent(): boolean;
|
|
43
|
+
export declare function isActive(): boolean;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
type ClarityQueue = {
|
|
2
|
+
(...args: unknown[]): void;
|
|
3
|
+
q?: unknown[];
|
|
4
|
+
};
|
|
5
|
+
declare global {
|
|
6
|
+
interface Window {
|
|
7
|
+
clarity?: ClarityQueue;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Loads the marketing tags. Tag Manager waits for the first interaction, or 1.5s after load,
|
|
12
|
+
* so its download never competes with the page's largest paint; Consent Mode (set by
|
|
13
|
+
* initConsent) gates what its tags may do. Clarity records sessions, so it loads only with
|
|
14
|
+
* analytics consent, and tells Clarity the visitor's choice (consentv2) when it loads and on every
|
|
15
|
+
* change after; a revoke stops its recording from the next page. Ahrefs is cookieless and
|
|
16
|
+
* loads straight away. GA4 is deliberately absent: it runs inside the Tag Manager container,
|
|
17
|
+
* and loading it here as well counts every page view twice.
|
|
18
|
+
*
|
|
19
|
+
* gtmUrl replaces Google's loader address with the site's own (a proxy path or domain serving
|
|
20
|
+
* gtm.js); the container id is appended as the id query parameter. A visitor whose saved choice
|
|
21
|
+
* already grants Tag Manager gets it at DOM-ready, without the interaction wait.
|
|
22
|
+
*
|
|
23
|
+
* Under initConsent's strictOptIn nothing loads before consent: Ahrefs waits for analytics, and
|
|
24
|
+
* Tag Manager for analytics, or for marketing when adStorage lets marketing grant ad signals,
|
|
25
|
+
* whether granted on this page or saved on an earlier one. Marketing alone without adStorage
|
|
26
|
+
* unlocks nothing in the container, and loading it would still let GA4 send cookieless pings.
|
|
27
|
+
*/
|
|
28
|
+
export declare function loadTags(options?: {
|
|
29
|
+
gtmId?: string;
|
|
30
|
+
gtmUrl?: string;
|
|
31
|
+
clarityId?: string;
|
|
32
|
+
ahrefsKey?: string;
|
|
33
|
+
}): void;
|
|
34
|
+
export declare function resetTagsForTests(): void;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends the four tour events for every <wui-tour> on the page: it listens on document for the
|
|
3
|
+
* tour's bubbling events, so a product calls it once and writes nothing per tour. Events go
|
|
4
|
+
* through trackEvent, so they follow the same consent and eligibility rules as every other event.
|
|
5
|
+
* A tour without a tour-id sends nothing, because an event that names no tour cannot be counted.
|
|
6
|
+
* Returns an unsubscribe function.
|
|
7
|
+
*/
|
|
8
|
+
export declare function trackTours(): () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EventProperties } from "./event-registry.ts";
|
|
2
|
+
import { trackHelperNames } from "./vocabulary.ts";
|
|
3
|
+
type TrackHelper = (props?: EventProperties) => void;
|
|
4
|
+
export type TrackHelpers = {
|
|
5
|
+
readonly [Name in keyof typeof trackHelperNames]: TrackHelper;
|
|
6
|
+
};
|
|
7
|
+
export declare const track: TrackHelpers;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The address with its secrets removed: the fragment when it carries a token, code or state, and
|
|
3
|
+
* the sensitive query keys. Everything else, including the order and encoding of the kept keys,
|
|
4
|
+
* is left exactly as it was. Works on absolute, relative and malformed addresses alike, never
|
|
5
|
+
* throws, and returns anything that is not a string unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export declare function scrubUrl(url: string): string;
|
|
8
|
+
export declare function scrubUrl<T>(url: T): T;
|
|
9
|
+
/**
|
|
10
|
+
* The posthog-js before_send hook: scrubs the address properties on the event, its $set and its
|
|
11
|
+
* $set_once in place, and the page and request addresses in a replay batch, and never drops the
|
|
12
|
+
* event. Only address values change, so the project token PostHog needs on every event is untouched.
|
|
13
|
+
*/
|
|
14
|
+
export declare function scrubEventUrls<T>(event: T): T;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare const events: Readonly<{
|
|
2
|
+
readonly SIGNUP_STARTED: "signup_started";
|
|
3
|
+
readonly SIGNUP_COMPLETED: "signup_completed";
|
|
4
|
+
readonly LOGIN_SUCCEEDED: "login_succeeded";
|
|
5
|
+
readonly ONBOARDING_STARTED: "onboarding_started";
|
|
6
|
+
readonly ONBOARDING_STEP_COMPLETED: "onboarding_step_completed";
|
|
7
|
+
readonly ONBOARDING_COMPLETED: "onboarding_completed";
|
|
8
|
+
readonly SUBSCRIPTION_ACTIVATED: "subscription_activated";
|
|
9
|
+
readonly SUBSCRIPTION_CANCELLED: "subscription_cancelled";
|
|
10
|
+
readonly PAYMENT_SUCCEEDED: "payment_succeeded";
|
|
11
|
+
readonly PAYMENT_FAILED: "payment_failed";
|
|
12
|
+
readonly FEEDBACK_SUBMITTED: "feedback_submitted";
|
|
13
|
+
readonly LEAD_SUBMITTED: "lead_submitted";
|
|
14
|
+
readonly LEAD_QUALIFIED: "lead_qualified";
|
|
15
|
+
readonly LEAD_WON: "lead_won";
|
|
16
|
+
readonly WHATSAPP_CLICK: "whatsapp_click";
|
|
17
|
+
readonly CALCULATOR_USE: "calculator_use";
|
|
18
|
+
readonly PHONE_CLICK: "phone_click";
|
|
19
|
+
readonly DEMO_BOOKED: "demo_booked";
|
|
20
|
+
readonly CONTACT_SUBMITTED: "contact_submitted";
|
|
21
|
+
readonly TRIAL_START_CLICK: "trial_start_click";
|
|
22
|
+
readonly SAMPLE_REPORT_DOWNLOAD: "sample_report_download";
|
|
23
|
+
readonly REPORT_VERIFIED: "report_verified";
|
|
24
|
+
readonly CONTENT_ENGAGED: "content_engaged";
|
|
25
|
+
readonly EMAIL_CLICK: "email_click";
|
|
26
|
+
readonly PAGE_NOT_FOUND: "page_not_found";
|
|
27
|
+
readonly CHAT_OPENED: "chat_opened";
|
|
28
|
+
readonly CHAT_STARTED: "chat_started";
|
|
29
|
+
readonly CHAT_INPUT_SUBMITTED: "chat_input_submitted";
|
|
30
|
+
readonly CHAT_HANDOFF_REQUESTED: "chat_handoff_requested";
|
|
31
|
+
readonly CHAT_RATED: "chat_rated";
|
|
32
|
+
readonly CHAT_ACTION_REPEATED: "chat_action_repeated";
|
|
33
|
+
readonly TOUR_STARTED: "tour_started";
|
|
34
|
+
readonly TOUR_STEP_VIEWED: "tour_step_viewed";
|
|
35
|
+
readonly TOUR_COMPLETED: "tour_completed";
|
|
36
|
+
readonly TOUR_SKIPPED: "tour_skipped";
|
|
37
|
+
}>;
|
|
38
|
+
export type FleetEventName = (typeof events)[keyof typeof events];
|
|
39
|
+
export declare const trackHelperNames: Readonly<{
|
|
40
|
+
signupStarted: "signup_started";
|
|
41
|
+
signupCompleted: "signup_completed";
|
|
42
|
+
loginSucceeded: "login_succeeded";
|
|
43
|
+
onboardingStarted: "onboarding_started";
|
|
44
|
+
onboardingStepCompleted: "onboarding_step_completed";
|
|
45
|
+
onboardingCompleted: "onboarding_completed";
|
|
46
|
+
subscriptionActivated: "subscription_activated";
|
|
47
|
+
subscriptionCancelled: "subscription_cancelled";
|
|
48
|
+
paymentSucceeded: "payment_succeeded";
|
|
49
|
+
paymentFailed: "payment_failed";
|
|
50
|
+
feedbackSubmitted: "feedback_submitted";
|
|
51
|
+
leadSubmitted: "lead_submitted";
|
|
52
|
+
leadQualified: "lead_qualified";
|
|
53
|
+
leadWon: "lead_won";
|
|
54
|
+
whatsappClick: "whatsapp_click";
|
|
55
|
+
calculatorUse: "calculator_use";
|
|
56
|
+
phoneClick: "phone_click";
|
|
57
|
+
demoBooked: "demo_booked";
|
|
58
|
+
contactSubmitted: "contact_submitted";
|
|
59
|
+
trialStartClick: "trial_start_click";
|
|
60
|
+
sampleReportDownload: "sample_report_download";
|
|
61
|
+
reportVerified: "report_verified";
|
|
62
|
+
contentEngaged: "content_engaged";
|
|
63
|
+
emailClick: "email_click";
|
|
64
|
+
pageNotFound: "page_not_found";
|
|
65
|
+
chatOpened: "chat_opened";
|
|
66
|
+
chatStarted: "chat_started";
|
|
67
|
+
chatInputSubmitted: "chat_input_submitted";
|
|
68
|
+
chatHandoffRequested: "chat_handoff_requested";
|
|
69
|
+
chatRated: "chat_rated";
|
|
70
|
+
chatActionRepeated: "chat_action_repeated";
|
|
71
|
+
tourStarted: "tour_started";
|
|
72
|
+
tourStepViewed: "tour_step_viewed";
|
|
73
|
+
tourCompleted: "tour_completed";
|
|
74
|
+
tourSkipped: "tour_skipped";
|
|
75
|
+
}>;
|
|
76
|
+
export declare const EVENT_NAME_PATTERN: RegExp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { startWebVitals } from "./web-vitals.ts";
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { INPAttribution, MetricWithAttribution } from "web-vitals/attribution";
|
|
2
|
+
import type { EventProperties } from "./event-registry.ts";
|
|
3
|
+
type WebVitalsInput = boolean | {
|
|
4
|
+
sampleRate?: number;
|
|
5
|
+
softNavigations?: boolean;
|
|
6
|
+
deployVersion?: string | null;
|
|
7
|
+
pageTemplate?: string | null;
|
|
8
|
+
} | null | undefined;
|
|
9
|
+
type WebVitalsSettings = {
|
|
10
|
+
sampleRate: number;
|
|
11
|
+
softNavigations: boolean;
|
|
12
|
+
deployVersion: string | null;
|
|
13
|
+
pageTemplate: string | null;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The webVitals option as the package uses it, or null when off. `true` takes the defaults; an
|
|
17
|
+
* object may set sampleRate (0 to 1, default 1), softNavigations (default true), deployVersion and
|
|
18
|
+
* pageTemplate (the page's route template, at most 120 characters, default null).
|
|
19
|
+
* A sample rate outside (0, 1] throws: a typo there would silently send nothing or everything.
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeWebVitalsOption(option: WebVitalsInput): WebVitalsSettings | null;
|
|
22
|
+
/** True when this page load is in the sample. `roll` is a number in [0, 1), Math.random() in the browser. */
|
|
23
|
+
export declare function isSampled(sampleRate: number, roll: number): boolean;
|
|
24
|
+
/** mobile, tablet or desktop, from the browser's own mobile hint and the screen width. */
|
|
25
|
+
export declare function deviceClass({ mobileHint, screenWidth }: {
|
|
26
|
+
mobileHint?: boolean | undefined;
|
|
27
|
+
screenWidth?: number | undefined;
|
|
28
|
+
}): "desktop" | "mobile" | "tablet" | "unknown";
|
|
29
|
+
/**
|
|
30
|
+
* Whether the browser served a resource from its cache: true from cache, false from the network,
|
|
31
|
+
* null when it does not say. A cross-origin resource without a timing header reports zero sizes,
|
|
32
|
+
* which is unknown, not cached.
|
|
33
|
+
*/
|
|
34
|
+
export declare function wasCached(timing: (PerformanceEntry & {
|
|
35
|
+
transferSize?: unknown;
|
|
36
|
+
decodedBodySize?: unknown;
|
|
37
|
+
}) | null | undefined): boolean | null;
|
|
38
|
+
/**
|
|
39
|
+
* The three longest scripts behind an INP interaction, or null when the browser sent none. Firefox
|
|
40
|
+
* and Safari send no script detail, so null is missing data, not a fast page. The longest script
|
|
41
|
+
* alone is the fallback when no frame lists its scripts.
|
|
42
|
+
*/
|
|
43
|
+
export declare function topScripts(attribution: Partial<INPAttribution>): {
|
|
44
|
+
url: string | null;
|
|
45
|
+
function: string | null;
|
|
46
|
+
invoker_type: ScriptInvokerType;
|
|
47
|
+
duration_ms: number | null;
|
|
48
|
+
forced_style_layout_ms: number | null;
|
|
49
|
+
}[] | null;
|
|
50
|
+
/**
|
|
51
|
+
* The $web_vitals properties for one web-vitals attribution metric. Pure, so the test can lock the
|
|
52
|
+
* shape without a browser. Never a user id or element text: the INP and LCP targets are CSS
|
|
53
|
+
* selectors, and every address has its query stripped.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildVitalsProperties(metric: MetricWithAttribution, context: {
|
|
56
|
+
deployVersion: string | null;
|
|
57
|
+
pageTemplate: string | null;
|
|
58
|
+
deviceClass: string;
|
|
59
|
+
pageUrl?: string | undefined;
|
|
60
|
+
}): EventProperties;
|
|
61
|
+
/**
|
|
62
|
+
* Registers the five metrics once per page and sends each report through `send(name, props)`.
|
|
63
|
+
* A later call only swaps the sink, since web-vitals observers cannot be removed. Loading fails
|
|
64
|
+
* quietly: analytics must stay invisible to the product.
|
|
65
|
+
*/
|
|
66
|
+
export declare function startWebVitals(options: WebVitalsSettings, send: (name: string, props: EventProperties) => void, { load, roll, }?: {
|
|
67
|
+
load?: () => Promise<typeof import("web-vitals/attribution")>;
|
|
68
|
+
roll?: number;
|
|
69
|
+
}): Promise<void>;
|
|
70
|
+
export declare function resetWebVitalsForTests(): void;
|
|
71
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h}from"./chunk-LGUY6CCC.js";import"./chunk-O2XFH626.js";export{f as buildVitalsProperties,c as deviceClass,b as isSampled,a as normalizeWebVitalsOption,h as resetWebVitalsForTests,g as startWebVitals,e as topScripts,d as wasCached};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var WeborityAnalytics=(()=>{var k=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Ve=Object.prototype.hasOwnProperty;var Ge=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};var Y=(e,t)=>{for(var n in t)k(e,n,{get:t[n],enumerable:!0})},He=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of $e(t))!Ve.call(e,r)&&r!==n&&k(e,r,{get:()=>t[r],enumerable:!(o=Me(t,r))||o.enumerable});return e};var Be=e=>He(k({},"__esModule",{value:!0}),e);var Ne={};Y(Ne,{default:()=>Ot});function bt(){let e=[];e._i=[],e.__SV=1,e.people=[];for(let t of Ae)e[t]=(...n)=>{e.push([t,...n])};e.init=(t,n)=>{e._i.push([t,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=e}var Ae,Re,Ot,De=Ge(()=>{Ae=["capture","register","opt_in_capturing","opt_out_capturing"];Re={init(e,t){window.posthog||bt(),window.posthog.init(e,t)}};for(let e of Ae)Re[e]=(...t)=>window.posthog[e](...t);Ot=Re});var Ft={};Y(Ft,{CONSENT_CHANGE_EVENT:()=>P,CONSENT_COOKIE_NAME:()=>I,captureAttribution:()=>_e,channels:()=>u,events:()=>i,getAttribution:()=>N,getConsent:()=>d,initConsent:()=>ie,initSiteAnalytics:()=>Le,loadTags:()=>xe,onConsentChange:()=>g,registerEvents:()=>Ue,requiresOptIn:()=>te,resolveAiSource:()=>O,resolveChannel:()=>h,saveConsent:()=>ce,setConsentRegion:()=>ae,trackSiteEvent:()=>ve});var ze=["google","googleads","adwords","youtube"],qe=["meta","facebook","fb","instagram","ig","messenger"],Ke=["linkedin","lnkd"],je=["bing","microsoft","microsoftads","msn"],Q=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"]]]),We=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],Ye=["google","yandex"],Qe=["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 h(e){if(!e)return u.DIRECT;let t=p(e.utmSource);if(t){let r=b(t);if(ze.includes(r))return u.GOOGLE;if(qe.includes(r))return u.META;if(Ke.includes(r))return u.LINKEDIN;if(je.includes(r))return u.MICROSOFT}if(p(e.fbclid))return u.META;if(p(e.gclid)||p(e.gbraid)||p(e.wbraid))return u.GOOGLE;if(p(e.liFatId))return u.LINKEDIN;if(p(e.msclkid))return u.MICROSOFT;if(X(t))return u.AI_ASSISTANT;if(t||p(e.utmMedium)||p(e.utmCampaign)||p(e.utmContent)||p(e.utmTerm))return u.OTHER;let o=ee(e.referrer);return o?J(o)?u.AI_ASSISTANT:Xe(o)?u.ORGANIC_SEARCH:Qe.some(r=>Z(o,r))?u.ORGANIC_SOCIAL:u.REFERRAL:u.DIRECT}function O(e){if(!e)return"";let t=X(p(e.utmSource));if(t)return t;let n=ee(e.referrer);return n?J(n):""}function X(e){if(!e)return"";let t=b(e);for(let[n,o]of Q)if(b(n)===t||o.some(r=>b(r)===t))return n;return""}function J(e){for(let[t,n]of Q)if(n.some(o=>Z(e,o)))return t;return""}function Xe(e){return We.includes(e)?!0:Ye.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 Z(e,t){return e===t||e.endsWith(`.${t}`)}function ee(e){let t=p(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 b(e){return String(e).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function p(e){return String(e??"").trim()}var v=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 te(e){let t=typeof e=="string"?e.trim().toUpperCase():"";return t.length!==2||t==="XX"||t==="T1"?!0:v.includes(t)}var I="webority_cookie_consent",P="webority-consent-change",oe=365,a={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:oe,cookieDomain:null,regionCookie:null,region:null,saved:null},re=["eea","other"],U=new Set;function ie(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.');a.initialized=!0,a.strictOptIn=t,a.requiresOptIn=t||e.requiresOptIn,a.adStorage=e.adStorage??!t,a.cookieDays=e.cookieDays??oe,a.cookieDomain=e.cookieDomain?.trim()??null,a.regionCookie=e.regionCookie??null,a.region=a.regionCookie?tt(a.regionCookie):null;let{saved:n,entryCount:o}=et();a.saved=n,a.cookieDomain&&o>1&&n&&fe(n),Je(),Ze(),a.saved?M(a.saved):ue()&&de()}function ae(e){if(F("setConsentRegion"),!re.includes(e))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let t=d();if(a.region=e,a.saved)return;let n=d();t.analytics===n.analytics&&t.functional===n.functional&&t.marketing===n.marketing||(de(),le(n))}function T(){return a.initialized}function se(){return a.strictOptIn}function x(){return a.adStorage}function d(){F("getConsent");let e=a.saved;if(e)return{essential:!0,analytics:e.analytics,functional:e.functional,marketing:e.marketing,decided:!0};if(ue())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let t=!a.requiresOptIn;return{essential:!0,analytics:t,functional:t,marketing:t,decided:!1}}function ce(e){F("saveConsent");let t={essential:!0,analytics:e?.analytics===!0,functional:e?.functional===!0,marketing:e?.marketing===!0,timestamp:new Date().toISOString()};fe(t),a.saved=t,M(t),le(d())}function g(e){return U.add(e),()=>U.delete(e)}function le(e){for(let t of U)try{t(e)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(P,{detail:e}))}function F(e){if(!a.initialized)throw new Error(`@webority/analytics: call initConsent before ${e}.`)}function C(){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function Je(){if(a.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:[...v]});let e=a.adStorage?"granted":"denied";C("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 Ze(){C("set","ads_data_redaction",!0),C("set","url_passthrough",!0)}function ue(){return a.requiresOptIn&&!a.strictOptIn&&a.region==="other"}function de(){let e=d();M(e,e.analytics&&a.adStorage)}function M(e,t=e.marketing&&a.adStorage){let n=o=>o?"granted":"denied";C("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 et(){let e=`${I}=`,t=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(e)),n=t.map(o=>nt(o.slice(e.length))).filter(Boolean);return{saved:ot(n),entryCount:t.length}}function tt(e){let t=`${e}=`,o=(document.cookie||"").split(";").map(r=>r.trim()).find(r=>r.startsWith(t))?.slice(t.length);return re.includes(o)?o:null}function nt(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 ot(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 fe(e){let t=typeof e.timestamp=="string"?Date.parse(e.timestamp):Number.NaN,n=(Number.isNaN(t)?Date.now():t)+a.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";a.cookieDomain&&ne(`${I}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let r=a.cookieDomain?`;domain=${a.cookieDomain}`:"";ne(`${I}=${encodeURIComponent(JSON.stringify(e))};expires=${new Date(n).toUTCString()};path=/${r};SameSite=Lax${o}`)}function ne(e){document.cookie=e}var R="webority_attribution",rt=2160*60*60*1e3,it=200,$=500,at=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"}),pe=!1;function _e(){ye("captureAttribution"),ut();let e=ct();if(!e)return;let t=B(V());ge(V(),{firstTouch:t?.firstTouch??e,lastTouch:e}),st(e)}function st(e){let t={event:"acquisition_touch",acquisition_channel:h(e)};e.aiSource&&(t.ai_source=e.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(t)}function N(){return ye("getAttribution"),B(V())}function ct(){let e=new URLSearchParams(window.location.search),t={};for(let[r,s]of Object.entries(at)){let c=A(e.get(r),it);c&&(t[s]=c)}let n=A(e.get("referrer"),$)||lt();if(n&&(t.referrer=n),Object.keys(t).length===0)return null;let o=O(t);return o&&(t.aiSource=o),t.landingPage=A(window.location.pathname,$),t.capturedDateTimeUtc=new Date().toISOString(),t}function lt(){let e=document.referrer;if(!e)return"";try{return new URL(e).hostname===window.location.hostname?"":A(e,$)}catch{return""}}function ut(){pe||(pe=!0,g(e=>{let t=e.marketing?H():G(),n=e.marketing?G():H(),o=B(t);dt(t),o&&ge(n,o)}))}function V(){return d().marketing?G():H()}function G(){try{return window.localStorage}catch{return null}}function H(){try{return window.sessionStorage}catch{return null}}function B(e){try{let t=e?.getItem(R);if(!t)return null;let n=JSON.parse(t),o=me(n?.firstTouch),r=me(n?.lastTouch);return!o&&!r?(e.removeItem(R),null):{firstTouch:o??r,lastTouch:r??o}}catch{return null}}function ge(e,t){try{e?.setItem(R,JSON.stringify(t))}catch{}}function dt(e){try{e?.removeItem(R)}catch{}}function me(e){if(!e||typeof e!="object")return null;let t=Date.parse(e.capturedDateTimeUtc);return Number.isFinite(t)&&Date.now()-t<=rt?e:null}function A(e,t){let n=String(e??"").trim();return n?n.slice(0,t):""}function ye(e){if(!T())throw new Error(`@webority/analytics: call initConsent before ${e}.`)}var ft="webority-analytics-web-vitals.global.js",pt=globalThis.document?.currentScript?.src||null;function Ee(e,t,{base:n=pt,doc:o=globalThis.document}={}){return!n||!o?.head?Promise.resolve():new Promise(r=>{let s=o.createElement("script");s.async=!0,s.src=new URL(ft,n).href,s.onload=()=>r(globalThis.WeborityAnalyticsWebVitals?.startWebVitals(e,t)),s.onerror=()=>r(),o.head.appendChild(s)})}var mt=["scroll","mousemove","touchstart","keydown","pointerdown"];function D(e){let t=!1,n=()=>{t||(t=!0,e())};for(let o of mt)window.addEventListener(o,n,{once:!0,passive:!0});document.readyState==="complete"?setTimeout(n,1500):window.addEventListener("load",()=>setTimeout(n,1500),{once:!0})}var i=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",LEAD_WON:"lead_won",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",REPORT_VERIFIED:"report_verified",CONTENT_ENGAGED:"content_engaged",EMAIL_CLICK:"email_click",PAGE_NOT_FOUND:"page_not_found",CHAT_OPENED:"chat_opened",CHAT_STARTED:"chat_started",CHAT_INPUT_SUBMITTED:"chat_input_submitted",CHAT_HANDOFF_REQUESTED:"chat_handoff_requested",CHAT_RATED:"chat_rated",CHAT_ACTION_REPEATED:"chat_action_repeated",TOUR_STARTED:"tour_started",TOUR_STEP_VIEWED:"tour_step_viewed",TOUR_COMPLETED:"tour_completed",TOUR_SKIPPED:"tour_skipped"}),Wt=Object.freeze({signupStarted:i.SIGNUP_STARTED,signupCompleted:i.SIGNUP_COMPLETED,loginSucceeded:i.LOGIN_SUCCEEDED,onboardingStarted:i.ONBOARDING_STARTED,onboardingStepCompleted:i.ONBOARDING_STEP_COMPLETED,onboardingCompleted:i.ONBOARDING_COMPLETED,subscriptionActivated:i.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:i.SUBSCRIPTION_CANCELLED,paymentSucceeded:i.PAYMENT_SUCCEEDED,paymentFailed:i.PAYMENT_FAILED,feedbackSubmitted:i.FEEDBACK_SUBMITTED,leadSubmitted:i.LEAD_SUBMITTED,leadQualified:i.LEAD_QUALIFIED,leadWon:i.LEAD_WON,whatsappClick:i.WHATSAPP_CLICK,calculatorUse:i.CALCULATOR_USE,phoneClick:i.PHONE_CLICK,demoBooked:i.DEMO_BOOKED,contactSubmitted:i.CONTACT_SUBMITTED,trialStartClick:i.TRIAL_START_CLICK,sampleReportDownload:i.SAMPLE_REPORT_DOWNLOAD,reportVerified:i.REPORT_VERIFIED,contentEngaged:i.CONTENT_ENGAGED,emailClick:i.EMAIL_CLICK,pageNotFound:i.PAGE_NOT_FOUND,chatOpened:i.CHAT_OPENED,chatStarted:i.CHAT_STARTED,chatInputSubmitted:i.CHAT_INPUT_SUBMITTED,chatHandoffRequested:i.CHAT_HANDOFF_REQUESTED,chatRated:i.CHAT_RATED,chatActionRepeated:i.CHAT_ACTION_REPEATED,tourStarted:i.TOUR_STARTED,tourStepViewed:i.TOUR_STEP_VIEWED,tourCompleted:i.TOUR_COMPLETED,tourSkipped:i.TOUR_SKIPPED}),he=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;function Ce(){let e=new Set(Object.values(i));return{register(t){for(let n of t){if(!he.test(n))throw new Error(`@webority/analytics: invalid event name "${n}". Expected snake_case.`);e.add(n)}},assertRegistered(t){if(!e.has(t))throw new Error(`@webority/analytics: event "${t}" is not registered. Call registerEvents() first.`)}}}var z=Ce();var _t=new Set(["token","code","email","access_token","id_token","state","session_state","password","search","q","query"]),gt=/(?:access_token|id_token|session_state|token|code|state|email|password)=/i,yt=["$current_url","$referrer","$pathname","$initial_current_url","$initial_referrer","$initial_pathname","$session_entry_url","$session_entry_referrer","$session_entry_pathname"],Et=4,ht=5,Ct=6;function S(e){if(typeof e!="string")return e;let t=e.indexOf("#"),n=t===-1?e:e.slice(0,t),o=t===-1||gt.test(e.slice(t))?"":e.slice(t),r=n.indexOf("?");if(r===-1)return n+o;let s=n.slice(r+1).split("&"),c=s.filter(_=>!_t.has(It(_))).map(wt);if(c.length===s.length&&c.every((_,w)=>_===s[w]))return n+o;let f=n.slice(0,r),E=c.filter(_=>_!=="").join("&");return(E?`${f}?${E}`:f)+o}function Te(e){if(!e||typeof e!="object")return e;let t=e.properties;for(let r of[t,e.$set,e.$set_once,t?.$set,t?.$set_once])St(r);let n=t?.$heatmap_data;if(n&&typeof n=="object"){let r={};for(let[s,c]of Object.entries(n)){let f=S(s);r[f]=r[f]?r[f].concat(c):c}t.$heatmap_data=r}if(t&&typeof t=="object"){for(let[r,s]of Object.entries(t))if(r.startsWith("$web_vitals_")&&r.endsWith("_event")&&s&&typeof s=="object")for(let c of["$current_url","navigationURL"])typeof s[c]=="string"&&(s[c]=S(s[c]))}let o=t?.$snapshot_data;if(e.event==="$snapshot"&&o&&typeof o=="object")for(let r of Array.isArray(o)?o:[o])Tt(r);return e}function Tt(e){let t=e?.data;if(!(!t||typeof t!="object")){if(e.type===Et)L(t,["href"]);else if(e.type===ht)L(t.payload,["href"]);else if(e.type===Ct&&Array.isArray(t.payload?.requests))for(let n of t.payload.requests)L(n,["name","url"])}}function L(e,t){if(!(!e||typeof e!="object"))for(let n of t)typeof e[n]=="string"&&(e[n]=S(e[n]))}function St(e){L(e,yt)}function wt(e){let t=e.indexOf("=");if(t===-1)return e;let n=e.slice(t+1).replace(/\+/g," "),o;try{o=decodeURIComponent(n)}catch{o=Se(n)}if(!o.startsWith("/")&&!/^https?:\/\//i.test(o))return e;let r=S(o);return r===o?e:`${e.slice(0,t)}=${encodeURIComponent(r)}`}function It(e){let t=e.replace(/\+/g," "),n;try{n=decodeURIComponent(t)}catch{n=Se(t)}return n.split("=",1)[0].toLowerCase()}function Se(e){return e.replace(/%([0-9a-f]{2})/gi,(t,n)=>{let o=Number.parseInt(n,16);return o<128?String.fromCharCode(o):t})}function we(e,t,n=!1){return t?e:{...e,opt_out_capturing_by_default:!0,...n?{advanced_disable_feature_flags_on_first_load:!0}:{}}}function Ie(e){let t=e.sessionRecording??{enabled:!1},n={api_host:e.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:!t.enabled,enable_heatmaps:e.heatmaps===!0,capture_exceptions:e.captureExceptions===!0,capture_performance:{web_vitals:!1},disable_surveys:!0,disable_product_tours:!0,disable_conversations:!0,advanced_disable_feature_flags:!(t.enabled||e.featureFlags===!0),before_send:Te};return t.enabled&&(n.session_recording={maskAllInputs:t.maskAllInputs??!0,...t.maskTextSelector?{maskTextSelector:t.maskTextSelector}:{},maskCapturedNetworkRequestFn:o=>({...o,name:S(o.name)}),recordBody:!1,recordHeaders:!1}),n}var be={sampleRate:1,softNavigations:!0,deployVersion:null,pageTemplate:null};function Oe(e){if(e==null||e===!1)return null;if(e===!0)return{...be};if(typeof e!="object")throw new Error("@webority/analytics: webVitals takes true or { sampleRate, softNavigations, deployVersion, pageTemplate }.");let t=e.sampleRate??be.sampleRate;if(typeof t!="number"||!(t>0&&t<=1))throw new Error("@webority/analytics: webVitals.sampleRate must be a number above 0 and at most 1.");let n=e.deployVersion??null;if(n!==null&&typeof n!="string")throw new Error("@webority/analytics: webVitals.deployVersion must be a string.");let o=e.pageTemplate??null;if(o!==null&&(typeof o!="string"||o.length>120))throw new Error("@webority/analytics: webVitals.pageTemplate must be a string of at most 120 characters.");return{sampleRate:t,softNavigations:e.softNavigations!==!1,deployVersion:n,pageTemplate:o}}var At=()=>Promise.resolve().then(()=>(De(),Ne)),Rt=100,l={config:null,posthog:null,pending:[],failed:!1,loadPosthog:At,startVitals:Ee,stopFollowingConsent:null};function Le({host:e,clientKey:t,product:n,surface:o,environment:r,enabled:s=!0,sessionRecording:c,heatmaps:f=!1,captureExceptions:E=!1,webVitals:_=!1}={}){if(!T())throw new Error("@webority/analytics: call initConsent before initSiteAnalytics.");let w=Oe(_);!s||!e||!t||r==="Local"||l.config||(l.config={host:e,clientKey:t,product:n,surface:o,environment:r,sessionRecording:c,heatmaps:f,captureExceptions:E,webVitals:w},l.stopFollowingConsent=g(y=>Dt(y.analytics)),D(()=>{Promise.resolve().then(l.loadPosthog).then(y=>Nt(y.default??y)).catch(()=>{l.failed=!0,l.pending=[]})}))}function Nt(e){let t=l.config,n=d().analytics;e.init(t.clientKey,we(Lt(t),n)),e.register({product:t.product,surface:t.surface,environment:t.environment}),n?e.opt_in_capturing({captureEventName:!1}):e.opt_out_capturing(),l.posthog=e;let o=l.pending;l.pending=[];for(let[r,s]of o)q(e,r,s);t.webVitals&&l.startVitals(t.webVitals,(r,s)=>q(e,r,s))}function Dt(e){l.posthog&&(e?l.posthog.opt_in_capturing():l.posthog.opt_out_capturing())}function Lt(e){return{...Ie({host:e.host,sessionRecording:e.sessionRecording,heatmaps:e.heatmaps,captureExceptions:e.captureExceptions,webVitals:e.webVitals}),capture_pageview:!0}}function ke(e,t){let n=l.config;if(!n)return;let o={...t,product:n.product,surface:n.surface,environment:n.environment};l.posthog?q(l.posthog,e,o):!l.failed&&l.pending.length<Rt&&l.pending.push([e,o])}function q(e,t,n){try{e.capture(t,n)}catch{}}function ve(e,t={}){z.assertRegistered(e);let n=d().analytics,o=N(),r={...t};for(let[s,c]of[["first",o?.firstTouch],["last",o?.lastTouch]])c&&(r[`${s}_touch_channel`]=h(c),c.aiSource&&(r[`${s}_touch_ai_source`]=c.aiSource));return ke(e,r),n?(window.dataLayer=window.dataLayer||[],window.dataLayer.push({...r,event:e}),!0):!1}function Ue(e){z.register(e)}var kt="https://www.googletagmanager.com/gtm.js",vt=3e3,Ut=100,m={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function xe(e={}){if(!T())throw new Error("@webority/analytics: call initConsent before loadTags.");if(m.loaded)return;m.loaded=!0;let{gtmId:t,gtmUrl:n=kt,clarityId:o,ahrefsKey:r}=e;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let s=se();if(r){let c=()=>j("https://analytics.ahrefs.com/analytics.js",{"data-key":r});s?Pe(f=>f.analytics,c):c()}if(t){let c=x(),f=W=>W.analytics||W.marketing&&c,E=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),j(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(t)}`)},_=d(),w=_.decided&&f(_)?Pt:D,y=()=>w(E);s?Pe(f,y):y()}o&&(m.clarityId=o,d().analytics&&xt(),g(c=>{c.analytics&&!m.clarityLoaded?K():m.clarityLoaded&&Fe(c)}))}function Pe(e,t){if(e(d())){t();return}let n=g(o=>{e(o)&&(n(),t())})}function Pt(e){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}function xt(){let e=()=>{window.scrollY>Ut&&K()};window.addEventListener("scroll",e,{passive:!0});let t=setTimeout(K,vt);m.cancelClaritySchedule=()=>{window.removeEventListener("scroll",e),clearTimeout(t)}}function K(){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)},Fe(d()),j(`https://www.clarity.ms/tag/${encodeURIComponent(m.clarityId)}`,{crossorigin:"anonymous"}))}function Fe(e){window.clarity("consentv2",{ad_Storage:e.marketing&&x()?"granted":"denied",analytics_Storage:e.analytics?"granted":"denied"})}function j(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 Be(Ft);})();
|
|
1
|
+
"use strict";var WeborityAnalytics=(()=>{var L=Object.defineProperty;var Wt=Object.getOwnPropertyDescriptor;var Ht=Object.getOwnPropertyNames;var $t=Object.prototype.hasOwnProperty;var zt=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(o){throw n=[o],o}};var X=(t,e)=>{for(var n in e)L(t,n,{get:e[n],enumerable:!0})},Gt=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ht(e))!$t.call(t,r)&&r!==n&&L(t,r,{get:()=>e[r],enumerable:!(o=Wt(e,r))||o.enumerable});return t};var Bt=t=>Gt(L({},"__esModule",{value:!0}),t);var Nt={};X(Nt,{default:()=>Le});function De(){let t=Object.assign([],{_i:[],__SV:1,people:[],capture:(...e)=>{t.push(["capture",...e])},register:(...e)=>{t.push(["register",...e])},opt_in_capturing:(...e)=>{t.push(["opt_in_capturing",...e])},opt_out_capturing:(...e)=>{t.push(["opt_out_capturing",...e])},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)}});return window.posthog=t,t}var Pe,kt,Le,Pt=zt(()=>{"use strict";Pe=["capture","register","opt_in_capturing","opt_out_capturing"];kt={init(t,e){(window.posthog??De()).init(t,e)}};for(let t of Pe)kt[t]=(...e)=>{let n=window.posthog;if(n===void 0)throw new TypeError(`posthog.${t} was called before posthog.init.`);n[t](...e)};Le=kt});var Be={};X(Be,{CONSENT_CHANGE_EVENT:()=>V,CONSENT_COOKIE_NAME:()=>A,captureAttribution:()=>_t,channels:()=>d,events:()=>s,getAttribution:()=>N,getConsent:()=>p,initConsent:()=>st,initSiteAnalytics:()=>Dt,loadTags:()=>Mt,onConsentChange:()=>_,registerEvents:()=>Ut,requiresOptIn:()=>ot,resolveAiSource:()=>O,resolveChannel:()=>C,saveConsent:()=>ct,setConsentRegion:()=>at,trackSiteEvent:()=>xt});var qt=["google","googleads","adwords","youtube"],Kt=["meta","facebook","fb","instagram","ig","messenger"],jt=["linkedin","lnkd"],Qt=["bing","microsoft","microsoftads","msn"],J=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"]]]),Yt=["bing.com","duckduckgo.com","search.yahoo.com","ecosia.org","search.brave.com"],Xt=["google","yandex"],Jt=["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"],d=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 C(t){if(!t)return d.DIRECT;let e=g(t.utmSource);if(e){let r=v(e);if(qt.includes(r))return d.GOOGLE;if(Kt.includes(r))return d.META;if(jt.includes(r))return d.LINKEDIN;if(Qt.includes(r))return d.MICROSOFT}if(g(t.fbclid))return d.META;if(g(t.gclid)||g(t.gbraid)||g(t.wbraid))return d.GOOGLE;if(g(t.liFatId))return d.LINKEDIN;if(g(t.msclkid))return d.MICROSOFT;if(Z(e))return d.AI_ASSISTANT;if(e||g(t.utmMedium)||g(t.utmCampaign)||g(t.utmContent)||g(t.utmTerm))return d.OTHER;let o=nt(t.referrer);return o?tt(o)?d.AI_ASSISTANT:Zt(o)?d.ORGANIC_SEARCH:Jt.some(r=>et(o,r))?d.ORGANIC_SOCIAL:d.REFERRAL:d.DIRECT}function O(t){if(!t)return"";let e=Z(g(t.utmSource));if(e)return e;let n=nt(t.referrer);return n?tt(n):""}function Z(t){if(!t)return"";let e=v(t);for(let[n,o]of J){let r=o;if(v(n)===e||r.some(i=>v(i)===e))return n}return""}function tt(t){for(let[e,n]of J)if(n.some(r=>et(t,r)))return e;return""}function Zt(t){return Yt.includes(t)?!0:Xt.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 et(t,e){return t===e||t.endsWith(`.${e}`)}function nt(t){let e=g(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 v(t){return String(t).toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}function g(t){return String(t??"").trim()}var x=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 te(t){return x.some(e=>e===t)}function ot(t){let e=typeof t=="string"?t.trim().toUpperCase():"";return e.length!==2||e==="XX"||e==="T1"?!0:te(e)}var A="webority_cookie_consent",V="webority-consent-change",it=365,ee=["eea","other"],U=new Set,a={initialized:!1,requiresOptIn:!0,strictOptIn:!1,adStorage:!0,cookieDays:it,cookieDomain:null,regionCookie:null,region:null,saved:null};function st(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.');a.initialized=!0,a.strictOptIn=e,a.requiresOptIn=e||t.requiresOptIn===!0,a.adStorage=t.adStorage??!e,a.cookieDays=t.cookieDays??it,a.cookieDomain=t.cookieDomain?.trim()??null,a.regionCookie=t.regionCookie??null,a.region=a.regionCookie?ie(a.regionCookie):null;let{saved:n,entryCount:o}=re();a.saved=n,a.cookieDomain&&o>1&&n&>(n),ne(),oe(),a.saved?W(a.saved):dt()&&pt()}function at(t){if(F("setConsentRegion"),!ft(t))throw new Error('@webority/analytics: setConsentRegion needs "eea" or "other".');let e=p();if(a.region=t,a.saved)return;let n=p();e.analytics===n.analytics&&e.functional===n.functional&&e.marketing===n.marketing||(pt(),ut(n))}function E(){return a.initialized}function lt(){return a.strictOptIn}function M(){return a.adStorage}function p(){F("getConsent");let t=a.saved;if(t)return{essential:!0,analytics:t.analytics,functional:t.functional,marketing:t.marketing,decided:!0};if(dt())return{essential:!0,analytics:!0,functional:!0,marketing:!1,decided:!1};let e=!a.requiresOptIn;return{essential:!0,analytics:e,functional:e,marketing:e,decided:!1}}function ct(t){F("saveConsent");let e={essential:!0,analytics:t?.analytics===!0,functional:t?.functional===!0,marketing:t?.marketing===!0,timestamp:new Date().toISOString()};gt(e),a.saved=e,W(e),ut(p())}function _(t){return U.add(t),()=>U.delete(t)}function ut(t){for(let e of U)try{e(t)}catch(n){queueMicrotask(()=>{throw n})}typeof window?.dispatchEvent=="function"&&typeof CustomEvent=="function"&&window.dispatchEvent(new CustomEvent(V,{detail:t}))}function F(t){if(!a.initialized)throw new Error(`@webority/analytics: call initConsent before ${t}.`)}function S(...t){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}function ne(){if(a.strictOptIn){S("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}S("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:[...x]});let t=a.adStorage?"granted":"denied";S("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 oe(){S("set","ads_data_redaction",!0),S("set","url_passthrough",!0)}function dt(){return a.requiresOptIn&&!a.strictOptIn&&a.region==="other"}function pt(){let t=p();W(t,t.analytics&&a.adStorage)}function W(t,e=t.marketing&&a.adStorage){let n=o=>o?"granted":"denied";S("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 re(){let t=`${A}=`,e=(document.cookie||"").split(";").map(o=>o.trim()).filter(o=>o.startsWith(t)),n=e.map(o=>se(o.slice(t.length))).filter(o=>o!==null);return{saved:ae(n),entryCount:e.length}}function ie(t){let e=`${t}=`,o=(document.cookie||"").split(";").map(r=>r.trim()).find(r=>r.startsWith(e))?.slice(e.length);return ft(o)?o:null}function ft(t){return ee.some(e=>e===t)}function se(t){try{let e=JSON.parse(decodeURIComponent(t));return le(e)?{essential:!0,analytics:e.analytics===!0,functional:e.functional===!0,marketing:e.marketing===!0,timestamp:e.timestamp??null}:null}catch{return null}}function ae(t){let e=t.map(i=>({choice:i,time:typeof i.timestamp=="string"?Date.parse(i.timestamp):Number.NaN}));if(e.some(i=>Number.isNaN(i.time)))return t.at(-1)??null;let[n,...o]=e;if(!n)return null;let r=n;for(let i of o)i.time>=r.time&&(r=i);return r.choice}function gt(t){let e=typeof t.timestamp=="string"?Date.parse(t.timestamp):Number.NaN,n=(Number.isNaN(e)?Date.now():e)+a.cookieDays*24*60*60*1e3,o=window.location?.protocol==="https:"?";Secure":"";a.cookieDomain&&rt(`${A}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;max-age=0;path=/;SameSite=Lax${o}`);let r=a.cookieDomain?`;domain=${a.cookieDomain}`:"";rt(`${A}=${encodeURIComponent(JSON.stringify(t))};expires=${new Date(n).toUTCString()};path=/${r};SameSite=Lax${o}`)}function rt(t){document.cookie=t}function le(t){return typeof t=="object"&&t!==null}var k="webority_attribution",ce=2160*60*60*1e3,ue=200,H=500,de=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"}),pe=["utmSource","utmMedium","utmCampaign","utmContent","utmTerm","gclid","gbraid","wbraid","fbclid","msclkid","liFatId","referrer","aiSource","landingPage"],mt=!1;function _t(){Ct("captureAttribution"),ye();let t=ge();if(!t)return;let e=B($());bt($(),{firstTouch:e?.firstTouch??t,lastTouch:t}),fe(t)}function fe(t){let e={event:"acquisition_touch",acquisition_channel:C(t)};t.aiSource&&(e.ai_source=t.aiSource),window.dataLayer=window.dataLayer||[],window.dataLayer.push(e)}function N(){return Ct("getAttribution"),B($())}function ge(){let t=new URLSearchParams(window.location.search),e={};for(let[r,i]of Object.entries(de)){let l=R(t.get(r),ue);l&&(e[i]=l)}let n=R(t.get("referrer"),H)||me();if(n&&(e.referrer=n),Object.keys(e).length===0)return null;let o=O(e);return o&&(e.aiSource=o),{...e,landingPage:R(window.location.pathname,H),capturedDateTimeUtc:new Date().toISOString()}}function me(){let t=document.referrer;if(!t)return"";try{return new URL(t).hostname===window.location.hostname?"":R(t,H)}catch{return""}}function ye(){mt||(mt=!0,_(t=>{let e=t.marketing?G():z(),n=t.marketing?z():G(),o=B(e);_e(e),o&&bt(n,o)}))}function $(){return p().marketing?z():G()}function z(){try{return window.localStorage}catch{return null}}function G(){try{return window.sessionStorage}catch{return null}}function B(t){try{let e=t?.getItem(k);if(!e)return null;let n=JSON.parse(e),o=ht(n)?n:{},r=yt(o.firstTouch),i=yt(o.lastTouch),l=r??i,u=i??r;return!l||!u?(t?.removeItem(k),null):{firstTouch:l,lastTouch:u}}catch{return null}}function bt(t,e){try{t?.setItem(k,JSON.stringify(e))}catch{}}function _e(t){try{t?.removeItem(k)}catch{}}function yt(t){if(!be(t))return null;let e=Date.parse(t.capturedDateTimeUtc);return Number.isFinite(e)&&Date.now()-e<=ce?t:null}function be(t){return!ht(t)||typeof t.capturedDateTimeUtc!="string"?!1:pe.every(e=>t[e]===void 0||typeof t[e]=="string")}function ht(t){return typeof t=="object"&&t!==null}function R(t,e){let n=String(t??"").trim();return n?n.slice(0,e):""}function Ct(t){if(!E())throw new Error(`@webority/analytics: call initConsent before ${t}.`)}var he="webority-analytics-web-vitals.global.js",q=globalThis.document?.currentScript,Ce=(q&&"src"in q?q.src:null)||null;function St(t,e,{base:n=Ce,doc:o=globalThis.document}={}){return!n||!o?.head?Promise.resolve():new Promise(r=>{let i=o.createElement("script");i.async=!0,i.src=new URL(he,n).href,i.onload=()=>r(globalThis.WeborityAnalyticsWebVitals?.startWebVitals(t,e)),i.onerror=()=>r(),o.head.appendChild(i)})}var Se=["scroll","mousemove","touchstart","keydown","pointerdown"];function P(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,1500):window.addEventListener("load",()=>setTimeout(n,1500),{once:!0})}var s=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",LEAD_WON:"lead_won",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",REPORT_VERIFIED:"report_verified",CONTENT_ENGAGED:"content_engaged",EMAIL_CLICK:"email_click",PAGE_NOT_FOUND:"page_not_found",CHAT_OPENED:"chat_opened",CHAT_STARTED:"chat_started",CHAT_INPUT_SUBMITTED:"chat_input_submitted",CHAT_HANDOFF_REQUESTED:"chat_handoff_requested",CHAT_RATED:"chat_rated",CHAT_ACTION_REPEATED:"chat_action_repeated",TOUR_STARTED:"tour_started",TOUR_STEP_VIEWED:"tour_step_viewed",TOUR_COMPLETED:"tour_completed",TOUR_SKIPPED:"tour_skipped"}),nn=Object.freeze({signupStarted:s.SIGNUP_STARTED,signupCompleted:s.SIGNUP_COMPLETED,loginSucceeded:s.LOGIN_SUCCEEDED,onboardingStarted:s.ONBOARDING_STARTED,onboardingStepCompleted:s.ONBOARDING_STEP_COMPLETED,onboardingCompleted:s.ONBOARDING_COMPLETED,subscriptionActivated:s.SUBSCRIPTION_ACTIVATED,subscriptionCancelled:s.SUBSCRIPTION_CANCELLED,paymentSucceeded:s.PAYMENT_SUCCEEDED,paymentFailed:s.PAYMENT_FAILED,feedbackSubmitted:s.FEEDBACK_SUBMITTED,leadSubmitted:s.LEAD_SUBMITTED,leadQualified:s.LEAD_QUALIFIED,leadWon:s.LEAD_WON,whatsappClick:s.WHATSAPP_CLICK,calculatorUse:s.CALCULATOR_USE,phoneClick:s.PHONE_CLICK,demoBooked:s.DEMO_BOOKED,contactSubmitted:s.CONTACT_SUBMITTED,trialStartClick:s.TRIAL_START_CLICK,sampleReportDownload:s.SAMPLE_REPORT_DOWNLOAD,reportVerified:s.REPORT_VERIFIED,contentEngaged:s.CONTENT_ENGAGED,emailClick:s.EMAIL_CLICK,pageNotFound:s.PAGE_NOT_FOUND,chatOpened:s.CHAT_OPENED,chatStarted:s.CHAT_STARTED,chatInputSubmitted:s.CHAT_INPUT_SUBMITTED,chatHandoffRequested:s.CHAT_HANDOFF_REQUESTED,chatRated:s.CHAT_RATED,chatActionRepeated:s.CHAT_ACTION_REPEATED,tourStarted:s.TOUR_STARTED,tourStepViewed:s.TOUR_STEP_VIEWED,tourCompleted:s.TOUR_COMPLETED,tourSkipped:s.TOUR_SKIPPED}),Et=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;function Tt(){let t=new Set(Object.values(s));return{register(e){for(let n of e){if(!Et.test(n))throw new Error(`@webority/analytics: invalid event name "${n}". Expected snake_case.`);t.add(n)}},assertRegistered(e){if(!t.has(e))throw new Error(`@webority/analytics: event "${e}" is not registered. Call registerEvents() first.`)}}}var K=Tt();var Ee=new Set(["token","code","email","access_token","id_token","state","session_state","password","search","q","query"]),Te=/(?:access_token|id_token|session_state|token|code|state|email|password)=/i,we=["$current_url","$referrer","$pathname","$initial_current_url","$initial_referrer","$initial_pathname","$session_entry_url","$session_entry_referrer","$session_entry_pathname"],Ie=4,Ae=5,ve=6;function T(t){if(typeof t!="string")return t;let e=t.indexOf("#"),n=e===-1?t:t.slice(0,e),o=e===-1||Te.test(t.slice(e))?"":t.slice(e),r=n.indexOf("?");if(r===-1)return n+o;let i=n.slice(r+1).split("&"),l=i.filter(f=>!Ee.has(Ne(f))).map(ke);if(l.length===i.length&&l.every((f,w)=>f===i[w]))return n+o;let u=n.slice(0,r),m=l.filter(f=>f!=="").join("&");return(m?`${u}?${m}`:u)+o}function wt(t){if(!b(t))return t;let e=t.properties,n=b(e)?e:void 0;for(let i of[e,t.$set,t.$set_once,n?.$set,n?.$set_once])Re(i);let o=n?.$heatmap_data;if(n&&b(o)){let i={};for(let[l,u]of Object.entries(o)){let m=T(l),f=i[m];i[m]=Array.isArray(f)?f.concat(u):u}n.$heatmap_data=i}if(n){for(let[i,l]of Object.entries(n))if(i.startsWith("$web_vitals_")&&i.endsWith("_event")&&b(l))for(let u of["$current_url","navigationURL"]){let m=l[u];typeof m=="string"&&(l[u]=T(m))}}let r=n?.$snapshot_data;if(t.event==="$snapshot"&&r&&typeof r=="object"){let i=Array.isArray(r)?r:[r];for(let l of i)Oe(l)}return t}function Oe(t){if(!b(t))return;let e=t.data;if(b(e)){if(t.type===Ie)D(e,["href"]);else if(t.type===Ae)D(e.payload,["href"]);else if(t.type===ve){let n=e.payload;if(b(n)&&Array.isArray(n.requests))for(let o of n.requests)D(o,["name","url"])}}}function D(t,e){if(b(t))for(let n of e){let o=t[n];typeof o=="string"&&(t[n]=T(o))}}function Re(t){D(t,we)}function ke(t){let e=t.indexOf("=");if(e===-1)return t;let n=t.slice(e+1).replace(/\+/g," "),o;try{o=decodeURIComponent(n)}catch{o=It(n)}if(!o.startsWith("/")&&!/^https?:\/\//i.test(o))return t;let r=T(o);return r===o?t:`${t.slice(0,e)}=${encodeURIComponent(r)}`}function Ne(t){let e=t.replace(/\+/g," "),n;try{n=decodeURIComponent(e)}catch{n=It(e)}return(n.split("=",1)[0]??"").toLowerCase()}function It(t){return t.replace(/%([0-9a-f]{2})/gi,(e,n)=>{let o=Number.parseInt(n,16);return o<128?String.fromCharCode(o):e})}function b(t){return typeof t=="object"&&t!==null}function At(t,e,n=!1){return e?t:{...t,opt_out_capturing_by_default:!0,...n?{advanced_disable_feature_flags_on_first_load:!0}:{}}}function vt(t){let e=t.sessionRecording??{enabled:!1,maskAllInputs:!0,maskTextSelector:null},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,enable_heatmaps:t.heatmaps===!0,capture_exceptions:t.captureExceptions===!0,capture_performance:{web_vitals:!1},disable_surveys:!0,disable_product_tours:!0,disable_conversations:!0,advanced_disable_feature_flags:!(e.enabled||t.featureFlags===!0),before_send:wt};if(e.enabled){let o={maskAllInputs:e.maskAllInputs??!0,...e.maskTextSelector?{maskTextSelector:e.maskTextSelector}:{},maskCapturedNetworkRequestFn:r=>({...r,name:T(r.name)}),recordBody:!1,recordHeaders:!1};n.session_recording=o}return n}var Ot={sampleRate:1,softNavigations:!0,deployVersion:null,pageTemplate:null};function Rt(t){if(t==null||t===!1)return null;if(t===!0)return{...Ot};if(typeof t!="object")throw new Error("@webority/analytics: webVitals takes true or { sampleRate, softNavigations, deployVersion, pageTemplate }.");let e=t.sampleRate??Ot.sampleRate;if(typeof e!="number"||!(e>0&&e<=1))throw new Error("@webority/analytics: webVitals.sampleRate must be a number above 0 and at most 1.");let n=t.deployVersion??null;if(n!==null&&typeof n!="string")throw new Error("@webority/analytics: webVitals.deployVersion must be a string.");let o=t.pageTemplate??null;if(o!==null&&(typeof o!="string"||o.length>120))throw new Error("@webority/analytics: webVitals.pageTemplate must be a string of at most 120 characters.");return{sampleRate:e,softNavigations:t.softNavigations!==!1,deployVersion:n,pageTemplate:o}}var xe=()=>Promise.resolve().then(()=>(Pt(),Nt)),Ue=100,c={config:null,posthog:null,pending:[],failed:!1,loadPosthog:xe,startVitals:St,stopFollowingConsent:null};function Dt({host:t,clientKey:e,product:n,surface:o,environment:r,enabled:i=!0,sessionRecording:l,heatmaps:u=!1,captureExceptions:m=!1,webVitals:f=!1}={}){if(!E())throw new Error("@webority/analytics: call initConsent before initSiteAnalytics.");let w=Rt(f);if(!i||!t||!e||r==="Local"||c.config)return;let I={host:t,clientKey:e,product:n,surface:o,environment:r,sessionRecording:l,heatmaps:u,captureExceptions:m,webVitals:w};c.config=I,c.stopFollowingConsent=_(h=>Me(h.analytics)),P(()=>{Promise.resolve().then(c.loadPosthog).then(h=>Ve(h.default??h,I)).catch(()=>{c.failed=!0,c.pending=[]})})}function Ve(t,e){let n=p().analytics;t.init(e.clientKey,At(Fe(e),n)),t.register({product:e.product,surface:e.surface,environment:e.environment}),n?t.opt_in_capturing({captureEventName:!1}):t.opt_out_capturing(),c.posthog=t;let o=c.pending;c.pending=[];for(let[r,i]of o)j(t,r,i);e.webVitals&&c.startVitals(e.webVitals,(r,i)=>j(t,r,i))}function Me(t){c.posthog&&(t?c.posthog.opt_in_capturing():c.posthog.opt_out_capturing())}function Fe(t){return{...vt({host:t.host,sessionRecording:t.sessionRecording,heatmaps:t.heatmaps,captureExceptions:t.captureExceptions}),capture_pageview:!0}}function Lt(t,e){let n=c.config;if(!n)return;let o={...e,product:n.product,surface:n.surface,environment:n.environment};c.posthog?j(c.posthog,t,o):!c.failed&&c.pending.length<Ue&&c.pending.push([t,o])}function j(t,e,n){try{t.capture(e,n)}catch{}}function xt(t,e={}){K.assertRegistered(t);let n=p().analytics,o=N(),r={...e};for(let[i,l]of[["first",o?.firstTouch],["last",o?.lastTouch]])l&&(r[`${i}_touch_channel`]=C(l),l.aiSource&&(r[`${i}_touch_ai_source`]=l.aiSource));return Lt(t,r),n?(window.dataLayer=window.dataLayer||[],window.dataLayer.push({...r,event:t}),!0):!1}function Ut(t){K.register(t)}var We="https://www.googletagmanager.com/gtm.js",He=3e3,$e=100,y={loaded:!1,clarityId:null,clarityLoaded:!1,cancelClaritySchedule:null};function Mt(t={}){if(!E())throw new Error("@webority/analytics: call initConsent before loadTags.");if(y.loaded)return;y.loaded=!0;let{gtmId:e,gtmUrl:n=We,clarityId:o,ahrefsKey:r}=t;if(typeof n!="string"||n.trim()==="")throw new Error("@webority/analytics: gtmUrl must be a non-empty string.");let i=lt();if(r){let l=()=>Y("https://analytics.ahrefs.com/analytics.js",{"data-key":r});i?Vt(u=>u.analytics,l):l()}if(e){let l=M(),u=h=>h.analytics||h.marketing&&l,m=()=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({"gtm.start":Date.now(),event:"gtm.js"}),Y(`${n}${n.includes("?")?"&":"?"}id=${encodeURIComponent(e)}`)},f=p(),w=f.decided&&u(f)?ze:P,I=()=>w(m);i?Vt(u,I):I()}o&&(y.clarityId=o,p().analytics&&Ge(),_(l=>{l.analytics&&!y.clarityLoaded?Q():y.clarityLoaded&&Ft(l)}))}function Vt(t,e){if(t(p())){e();return}let n=_(o=>{t(o)&&(n(),e())})}function ze(t){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()}function Ge(){let t=()=>{window.scrollY>$e&&Q()};window.addEventListener("scroll",t,{passive:!0});let e=setTimeout(Q,He);y.cancelClaritySchedule=()=>{window.removeEventListener("scroll",t),clearTimeout(e)}}function Q(){if(y.cancelClaritySchedule?.(),y.cancelClaritySchedule=null,y.clarityLoaded||!y.clarityId)return;y.clarityLoaded=!0;let t=function(){t.q=t.q||[],t.q.push(arguments)};window.clarity=window.clarity||t,Ft(p()),Y(`https://www.clarity.ms/tag/${encodeURIComponent(y.clarityId)}`,{crossorigin:"anonymous"})}function Ft(t){window.clarity?.("consentv2",{ad_Storage:t.marketing&&M()?"granted":"denied",analytics_Storage:t.analytics?"granted":"denied"})}function Y(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 Bt(Be);})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var WeborityAnalyticsWebVitals=(()=>{var J=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var zt=Object.prototype.hasOwnProperty;var Wt=(e,t,i)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;var qt=(e,t,i)=>()=>{if(i)throw i[0];try{return e&&(t=e(e=0)),t}catch(r){throw i=[r],r}};var It=(e,t)=>{for(var i in t)J(e,i,{get:t[i],enumerable:!0})},Ht=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of jt(t))!zt.call(e,a)&&a!==i&&J(e,a,{get:()=>t[a],enumerable:!(r=Ut(t,a))||r.enumerable});return e};var $t=e=>Ht(J({},"__esModule",{value:!0}),e);var C=(e,t,i)=>Wt(e,typeof t!="symbol"?t+"":t,i);var Rt={};It(Rt,{CLSThresholds:()=>gt,FCPThresholds:()=>Q,INPThresholds:()=>mt,LCPThresholds:()=>X,TTFBThresholds:()=>Z,onCLS:()=>Jt,onFCP:()=>Kt,onINP:()=>Yt,onLCP:()=>Zt,onTTFB:()=>te});function A(e,t){let i=_t.get(t);return i||(i=new WeakMap,_t.set(t,i)),i.get(e)||i.set(e,new t),i.get(e)}var tt,V,W,Gt,vt,_t,Mt,N,O,I,Tt,H,R,Dt,Ct,dt,q,w,P,B,kt,Pt,et,it,Q,Ft,gt,wt,Jt,Kt,At,ut,K,Qt,pt,Lt,Xt,nt,ft,mt,Yt,at,X,xt,Y,Zt,Z,ht,te,Bt=qt(()=>{tt=class{constructor(){C(this,"t");C(this,"o",0);C(this,"i",[])}l(t){if(t.hadRecentInput)return;let i=this.i[0],r=this.i.at(-1);this.o&&i&&r&&t.startTime-r.startTime<1e3&&t.startTime-i.startTime<5e3?(this.o+=t.value,this.i.push(t)):(this.o=t.value,this.i=[t]),this.t?.(t)}},V=()=>{let e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},W=e=>{if(document.readyState==="loading")return"loading";let t=V();if(t){if(e<t.domInteractive)return"loading";if(t.domContentLoadedEventStart===0||e<t.domContentLoadedEventStart)return"dom-interactive";if(t.domComplete===0||e<t.domComplete)return"dom-content-loaded"}return"complete"},Gt=e=>{let t=e.nodeName;return e.nodeType===1?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},vt=e=>{let t="";try{for(;e?.nodeType!==9;){let i=e,r=i.id?"#"+i.id:[Gt(i),...Array.from(i.classList??[]).sort()].join(".");if(t.length+r.length>99)return t||r;if(t=t?r+">"+t:r,i.id)break;e=i.parentNode}}catch{}return t},_t=new WeakMap;Mt=-1,N=()=>Mt,O=e=>{addEventListener("pageshow",t=>{t.persisted&&(Mt=t.timeStamp,e(t))},!0)},I=(e,t,i,r)=>{let a,n;return o=>{t.value>=0&&(o||r)&&(n=t.value-(a??0),(n||a===void 0)&&(a=t.value,t.delta=n,t.rating=((s,l)=>s>l[1]?"poor":s>l[0]?"needs-improvement":"good")(t.value,i),e(t)))}},Tt=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))},H=()=>V()?.activationStart??0,R=-1,Dt=new Set,Ct=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,dt=e=>{if(document.visibilityState==="hidden"){if(e.type==="visibilitychange")for(let t of Dt)t();isFinite(R)||(R=e.type==="visibilitychange"?e.timeStamp:0,removeEventListener("prerenderingchange",dt,!0))}},q=(e=!1)=>{if(e&&(R=1/0),R<0){let t=H();R=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").find(r=>r.name==="hidden"&&r.startTime>=t)?.startTime)??Ct(),addEventListener("visibilitychange",dt,!0),addEventListener("prerenderingchange",dt,!0),O(()=>{setTimeout(()=>{R=Ct()})})}return{get firstHiddenTime(){return R},onHidden(t){Dt.add(t)}}},w=(e,t=-1,i,r=0,a,n,o)=>{let s=V(),l=s?.navigationId||0,c="navigate";return i?c=i:N()>=0?c="back-forward-cache":s&&(document.prerendering||H()>0?c="prerender":document.wasDiscarded?c="restore":s.type&&(c=s.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v6-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:c,navigationId:r||l,navigationInteractionId:a,navigationURL:n||s?.name,navigationStartTime:o||0}},P=(e,t,i={})=>{try{let r=e.filter(a=>PerformanceObserver.supportedEntryTypes.includes(a));if(r.length>0){let a=new PerformanceObserver(n=>{queueMicrotask(()=>{let o=n.getEntries();r.length>1&&o.sort((s,l)=>s.startTime+s.duration-(l.startTime+l.duration)),t(o)})});for(let n of r)a.observe({type:n,buffered:!0,...i});return a}}catch{}},B=e=>globalThis.PerformanceObserver?.supportedEntryTypes?.includes("soft-navigation")&&typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint=="function"&&e&&e.reportSoftNavs,kt=(e,t)=>{if(e.set(t.navigationId,t),e.size>2){let i=e.keys().next().value;i!==void 0&&e.delete(i)}},Pt=e=>{let t=!1;return()=>{t||(e(),t=!0)}},et=class{constructor(){C(this,"u")}},it=e=>{document.prerendering?addEventListener("prerenderingchange",e,!0):e()},Q=[1800,3e3],Ft=(e,t={})=>{let i=B(t);it(()=>{let r=A(t,et),a=q(),n,o=w("FCP"),s=P(["paint"],l=>{for(let c of l)c.name==="first-contentful-paint"&&(s.disconnect(),c.startTime<a.firstHiddenTime&&(o.value=Math.max(c.startTime-H(),0),o.entries.push(c),o.navigationId=c.navigationId||o.navigationId,n(!0)))});s&&(n=I(e,o,Q,t.reportAllChanges),O(l=>{o=w("FCP",-1,"back-forward-cache",o.navigationId,o.navigationInteractionId,o.navigationURL,N()),n=I(e,o,Q,t.reportAllChanges),Tt(()=>{o.value=performance.now()-l.timeStamp,n(!0)})})),i&&P(["soft-navigation"],l=>{l.forEach(c=>{r.u&&c.navigationId&&kt(r.u,c);let g=Math.max((c.presentationTime||c.paintTime||0)-c.startTime,0);o=w("FCP",g,"soft-navigation",c.navigationId,c.interactionId,c.name,c.startTime),n=I(e,o,Q,t.reportAllChanges),n(!0)})},t)})},gt=[.1,.25],wt=e=>e.find(t=>t.node?.nodeType===1)||e[0],Jt=(e,t={})=>{let i=A(t=Object.assign({},t),tt),r=new WeakMap;i.t=a=>{if(a?.sources?.length){let n=wt(a.sources),o=n?.node;if(o){let s=t.generateTarget?.(o)??vt(o);r.set(n,s)}}},((a,n={})=>{let o=q();Ft(Pt(()=>{let s,l=w("CLS",0),c=A(n,tt),g=(m,u,h,v,S)=>{l=w("CLS",0,m,u,h,v,S),c.o=0,s=I(a,l,gt,n.reportAllChanges)},b=(m=!1)=>{c.o>l.value&&(l.value=c.o,l.entries=c.i),s(m)},D=m=>{b(!0),g("soft-navigation",m.navigationId,m.interactionId,m.name,m.startTime)},d=m=>{for(let u of m)u.entryType!=="soft-navigation"?c.l(u):D(u);b()},f=["layout-shift"];B(n)&&f.push("soft-navigation");let p=P(f,d);p&&(s=I(a,l,gt,n.reportAllChanges),o.onHidden(()=>{d(p.takeRecords()),s(!0)}),O(()=>{g("back-forward-cache",l.navigationId,l.navigationInteractionId,l.navigationURL,N()),Tt(s)}),setTimeout(s))}))})(a=>{e((n=>{let o={};if(n.entries.length){let s=n.entries.reduce((l,c)=>l.value>c.value?l:c);if(s?.sources?.length){let l=wt(s.sources);l&&(o={largestShiftTarget:r.get(l),largestShiftTime:s.startTime,largestShiftValue:s.value,largestShiftSource:l,largestShiftEntry:s,loadState:W(s.startTime)})}}return Object.assign(n,{attribution:o})})(a))},t)},Kt=(e,t={})=>{let i=A(t=Object.assign({},t),et);B(t)&&(i.u=new Map),Ft(r=>{e((a=>{let n={timeToFirstByte:0,firstByteToFCP:a.value,loadState:W(N())};if(a.navigationType!=="soft-navigation"){if(a.entries.length){let o=V(),s=a.entries.at(-1);if(o){let l=o.responseStart,c=o.activationStart||0,g=Math.max(0,l-c);n={timeToFirstByte:g,firstByteToFCP:a.value-g,loadState:W(a.entries[0].startTime),navigationEntry:o,fcpEntry:s}}}}else{let o=i.u?.get(a.navigationId);o&&(n={timeToFirstByte:0,firstByteToFCP:a.value,loadState:"complete",navigationEntry:o})}return Object.assign(a,{attribution:n})})(r))},t)},At=0,ut=1/0,K=0,Qt=e=>{for(let t of e)t.interactionId&&(ut=Math.min(ut,t.interactionId),K=Math.max(K,t.interactionId),At=K?(K-ut)/7+1:0)},Lt=()=>pt?At:performance.interactionCount??0,Xt=()=>{"interactionCount"in performance||pt||(pt=P(["event"],Qt,{durationThreshold:0}))},nt=class{constructor(){C(this,"h",0);C(this,"v",[]);C(this,"p",new Map);C(this,"m");C(this,"M")}T(){return Lt()-this.h}D(){this.h=Lt(),this.v.length=0,this.p.clear()}S(t){let i=this.T(),r=Math.min(this.v.length-1,Math.floor(i/50));return!i||r!==-1||t!=="soft-navigation"&&t!=="back-forward-cache"?this.v[r]:{k:8,id:-1,entries:[]}}l(t){if(this.m?.(t),!t.interactionId)return;let i=this.v.at(-1),r=this.p.get(t.interactionId);if(r||this.v.length<10||t.duration>i.k){if(r?t.duration>r.k?(r.entries=[t],r.k=t.duration):t.duration===r.k&&t.startTime===r.entries[0].startTime&&r.entries.push(t):(r={id:t.interactionId,entries:[t],k:t.duration},this.p.set(r.id,r),this.v.push(r)),this.v.sort((a,n)=>n.k-a.k),this.v.length>10){let a=this.v.splice(10);for(let n of a)this.p.delete(n.id)}this.M?.(r)}}},ft=e=>{let t="requestIdleCallback"in globalThis?1e3:0,i=globalThis.requestIdleCallback||setTimeout,r=globalThis.cancelIdleCallback||clearTimeout;if(document.visibilityState==="hidden")e();else{let a=Pt(e),n=-1,o=()=>{r(n),a()};addEventListener("visibilitychange",o,{once:!0,capture:!0}),n=i(()=>{removeEventListener("visibilitychange",o,{capture:!0}),a()},{timeout:t})}},mt=[200,500],Yt=(e,t={})=>{let i=A(t=Object.assign({},t),nt),r=[],a=[],n=0,o=new WeakMap,s=new WeakMap,l=!1,c=()=>{l||(l=!0,ft(g))},g=()=>{let d=new Set(i.v.map(u=>o.get(u.entries[0]))),f=a.length-10;a=a.filter((u,h)=>h>=f||d.has(u));let p=new Set;for(let u of a){let h=b(u.startTime,u.processingEnd);for(let v of h)p.add(v)}let m=r.length-10;r=r.filter((u,h)=>p.has(u)||h>=m&&u.startTime>n),l=!1};i.m=d=>{let f=d.startTime+d.duration,p;n=Math.max(n,d.processingEnd);for(let m=a.length-1;m>=0;m--){let u=a[m];if(Math.abs(f-u.renderTime)<=8){p=u,p.startTime=Math.min(d.startTime,p.startTime),p.processingStart=Math.min(d.processingStart,p.processingStart),p.processingEnd=Math.max(d.processingEnd,p.processingEnd),t.includeProcessedEventEntries&&p.entries.push(d);break}}p||(p={startTime:d.startTime,processingStart:d.processingStart,processingEnd:d.processingEnd,renderTime:f,entries:t.includeProcessedEventEntries?[d]:[]},a.push(p)),d.interactionId&&o.set(d,p),c()},i.M=d=>{if(!s.get(d)){let f=d.entries.find(p=>p.target)?.target;if(f){let p=t.generateTarget?.(f)??vt(f);s.set(d,p)}else{let p=d.entries.find(m=>m.targetSelector)?.targetSelector;p&&s.set(d,p)}}};let b=(d,f)=>{let p=[];for(let m of r)if(!(m.startTime+m.duration<d)){if(m.startTime>f)break;p.push(m)}return p},D=d=>{if(d.entries.length===0){let T=d.navigationStartTime||0,E={processedEventEntries:[],longAnimationFrameEntries:[],inputDelay:0,processingDuration:0,presentationDelay:d.value,loadState:W(T)};return Object.assign(d,{attribution:E})}let f=d.entries[0],p=o.get(f),m=Math.max(p.processingStart,f.startTime),u=Math.max(f.startTime+f.duration,m),h=Math.min(p.processingEnd,u),v=p.entries.sort((T,E)=>T.processingStart-E.processingStart),S=b(f.startTime,h),L=i.p.get(f.interactionId),_={interactionTarget:s.get(L),interactionType:f.name.startsWith("key")?"keyboard":"pointer",interactionTime:f.startTime,nextPaintTime:u,processedEventEntries:v,longAnimationFrameEntries:S,inputDelay:m-f.startTime,processingDuration:h-m,presentationDelay:u-h,loadState:W(f.startTime),longestScript:void 0,totalScriptDuration:void 0,totalStyleAndLayoutDuration:void 0,totalPaintDuration:void 0,totalUnattributedDuration:void 0};return(T=>{let E=T.interactionTime,y=T.nextPaintTime;if(!T.longAnimationFrameEntries?.length||!E||!y)return;let x=T.inputDelay,F=T.processingDuration,U,j,ot=0,z=0,st=0,lt=0;for(let $ of T.longAnimationFrameEntries){z=z+$.startTime+$.duration-$.styleAndLayoutStart;for(let k of $.scripts){let St=k.startTime+k.duration;if(St<E)continue;let G=St-Math.max(E,k.startTime),Et=k.duration?G/k.duration*k.forcedStyleAndLayoutDuration:0;ot+=G-Et,z+=Et,G>lt&&(j=k.startTime<E+x?"input-delay":k.startTime>=E+x+F?"presentation-delay":"processing-duration",U=k,lt=G)}}let ct=T.longAnimationFrameEntries.at(-1),bt=ct?ct.startTime+ct.duration:0;bt>=E+x+F&&(st=y-bt),U&&j&&(T.longestScript={entry:U,subpart:j,intersectingDuration:lt}),T.totalScriptDuration=ot,T.totalStyleAndLayoutDuration=z,T.totalPaintDuration=st,T.totalUnattributedDuration=y-E-ot-z-st})(_),Object.assign(d,{attribution:_})};P(["long-animation-frame"],d=>{r=r.concat(d),c()},t),((d,f={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;let p=q();it(()=>{Xt();let m,u=w("INP"),h=A(f,nt),v=(y,x,F,U,j)=>{h.D(),u=w("INP",-1,y,x,F,U,j),m=I(d,u,mt,f.reportAllChanges)},S=()=>{let y=h.S(u.navigationType);y&&y.k!==u.value&&(u.value=y.k,u.entries=y.entries,m())},L=y=>{S(),m(!0),v("soft-navigation",y.navigationId,y.interactionId,y.name,y.startTime)},_=(y,x=!1)=>{ft(()=>{for(let F of y)F.entryType!=="soft-navigation"?h.l(F):L(F);S(),x&&m(!0)})},T=["event","first-input"];B(f)&&T.push("soft-navigation");let E=P(T,_,{...f,durationThreshold:f.durationThreshold??40});m=I(d,u,mt,f.reportAllChanges),E&&(p.onHidden(()=>{_(E.takeRecords(),!0)}),O(()=>{v("back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,N())}))})})(d=>{e(D(d))},t)},at=class{constructor(){C(this,"m");C(this,"u")}l(t){this.m?.(t)}},X=[2500,4e3],xt=50,Y=[];P(["resource"],e=>{for(let t of e)Y.push(t),Y.length>xt&&Y.shift()});Zt=(e,t={})=>{(t=Object.assign({},t)).resourceBufferSize!=null&&(xt=t.resourceBufferSize);let i=A(t,at),r=new WeakMap;B(t)&&(i.u=new Map),i.m=a=>{let n=a.element;if(n){let o=t.generateTarget?.(n)??vt(n);r.set(a,o)}else a.id&&r.set(a,`#${a.id}`)},((a,n={})=>{let o=!1,s=B(n);it(()=>{let l,c=q(),g=w("LCP"),b=A(n,at),D=(u,h,v,S,L)=>{g=w("LCP",-1,u,h,v,S,L),l=I(a,g,X,n.reportAllChanges),o=!1,u==="soft-navigation"&&(c=q(!0))},d=u=>{b.u&&u.navigationId&&kt(b.u,u),o||l(!0),D("soft-navigation",u.navigationId,u.interactionId,u.name,u.startTime);let h=u.getLargestInteractionContentfulPaint?.();h&&f([h])},f=u=>{n.reportAllChanges||s||(u=u.slice(-1));for(let h of u){if(!h)continue;if(h.entryType==="soft-navigation"){d(h);continue}let v=0,S=[],L=h.startTime;if(h.entryType==="largest-contentful-paint")v=Math.max(h.startTime-H(),0),b.l(h),S=[h];else if(h.entryType==="interaction-contentful-paint"){let _=h;if(!g.navigationId||"interactionId"in _&&_.interactionId!=g.navigationInteractionId)continue;L=_.largestContentfulPaint?.renderTime||0,v=Math.max(L-h.startTime,0),_.largestContentfulPaint&&(b.l(_.largestContentfulPaint),S=[_.largestContentfulPaint])}L<c.firstHiddenTime&&(g.value=v,g.entries=S,l())}},p=["largest-contentful-paint"];s&&p.push("interaction-contentful-paint","soft-navigation");let m=P(p,f);if(m){l=I(a,g,X,n.reportAllChanges);let u=["keydown","click","visibilitychange"],h=v=>{if(v.isTrusted&&!o){let S=g.id;ft(()=>{if(!o){if(!s){m.disconnect();for(let L of u)removeEventListener(L,h,{capture:!0})}S===g.id&&(o=!0,l(!0))}})}};for(let v of u)addEventListener(v,h,{capture:!0});O(v=>{D("back-forward-cache",g.navigationId,g.navigationInteractionId,g.navigationURL,N()),l=I(a,g,X,n.reportAllChanges),Tt(()=>{g.value=performance.now()-v.timeStamp,o=!0,l(!0)})})}})})(a=>{e((n=>{let o={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:n.value};if(n.entries.length){let s=n.entries.at(-1),l=d=>d.name===s.url&&(d.requestStart||d.startTime)<=s.startTime,c=s.url&&(Y.findLast(l)||performance.getEntriesByType("resource").findLast(l)),g;o.target=r.get(s),o.lcpEntry=s,s.url&&(o.url=s.url),c&&(o.lcpResourceEntry=c);let b=0,D=0;if(n.navigationType!=="soft-navigation"?(g=V(),b=g?.activationStart??0,D=g?.responseStart??0):(b=n.navigationStartTime||0,g=i.u?.get(n.navigationId)),g){let d=Math.max(0,D-b),f=Math.max(d,c?(c.requestStart||c.startTime)-b:0),p=Math.min(n.value,Math.max(f,c?c.responseEnd-b:0));o={...o,timeToFirstByte:d,resourceLoadDelay:f-d,resourceLoadDuration:p-f,elementRenderDelay:n.value-p,navigationEntry:g}}}return Object.assign(n,{attribution:o})})(a))},t)},Z=[800,1800],ht=e=>{document.prerendering?it(()=>ht(e)):document.readyState!=="complete"?addEventListener("load",()=>ht(e),!0):setTimeout(e)},te=(e,t={})=>{((i,r={})=>{let a=B(r),n=w("TTFB"),o=I(i,n,Z,r.reportAllChanges);ht(()=>{let s=V();if(s){let l=s.responseStart;n.value=Math.max(l-H(),0),n.entries=[s],o(!0),O(()=>{n=w("TTFB",0,"back-forward-cache",n.navigationId,n.navigationInteractionId,n.navigationURL,N()),o=I(i,n,Z,r.reportAllChanges),o(!0)}),a&&P(["soft-navigation"],c=>{c.forEach(g=>{g.navigationId&&(n=w("TTFB",0,"soft-navigation",g.navigationId,g.interactionId,g.name,g.startTime),n.entries=[g],o=I(i,n,Z,r.reportAllChanges),o(!0))})},r)}})})(i=>{e((r=>{let a=r.entries[0],n={waitingDuration:0,cacheDuration:0,dnsDuration:0,connectionDuration:0,requestDuration:0,navigationEntry:a};if(r.entries.length&&a instanceof PerformanceNavigationTiming){let o=a.activationStart||0,s=Math.max((a.workerStart||a.fetchStart||0)-o,0),l=Math.max(a.domainLookupStart-o,0),c=Math.max(a.connectStart-o,0),g=Math.max(a.connectEnd-o,0);n={waitingDuration:s,cacheDuration:l-s,dnsDuration:c-l,connectionDuration:g-c,requestDuration:r.value-g,navigationEntry:a}}return Object.assign(r,{attribution:n})})(i))},t)}});var se={};It(se,{startWebVitals:()=>Ot});function ee(e,t){return t<e}function ne({mobileHint:e,screenWidth:t}){return e===!0?"mobile":typeof t!="number"||t<=0?"unknown":t<768?"mobile":t<1024?"tablet":"desktop"}function ae(e,t){if(typeof e!="string"||!e)return null;try{return new URL(e,t).pathname}catch{return null}}function yt(e){return typeof e=="string"&&e?e.split(/[?#]/,1)[0]:null}var M=e=>typeof e=="number"&&Number.isFinite(e)?Math.round(e):null,Nt=(e,t)=>typeof e=="string"&&e?e.slice(0,t):null;function Vt(e){return typeof e?.transferSize!="number"||typeof e?.decodedBodySize!="number"?null:e.transferSize===0&&e.decodedBodySize>0?!0:e.transferSize>0?!1:null}function ie(e){return{url:Nt(yt(e.sourceURL),200),function:Nt(e.sourceFunctionName,80),invoker_type:e.invokerType??null,duration_ms:M(e.duration),forced_style_layout_ms:M(e.forcedStyleAndLayoutDuration)}}function re(e){let t=(e?.longAnimationFrameEntries??[]).flatMap(i=>i.scripts??[]);return t.length===0&&(t=[e?.longestScript?.entry].filter(Boolean)),t.length===0?null:(t.sort((i,r)=>(r.duration??0)-(i.duration??0)),t.slice(0,3).map(ie))}function oe(e,t){let i=e.name,r=i==="CLS"?Math.round(e.value*1e4)/1e4:M(e.value),a={[`$web_vitals_${i}_value`]:r,vital:i,value:r,rating:e.rating,metric_id:e.id,navigation_type:e.navigationType??null,path:ae(e.navigationURL??t.pageUrl,t.pageUrl),deploy_version:t.deployVersion??null,device_class:t.deviceClass,page_template:e.navigationType==="soft-navigation"?null:t.pageTemplate??null},n=e.attribution??{};return i==="INP"&&(a.inp_target=n.interactionTarget||null,a.inp_longest_script_url=yt(n.longestScript?.entry?.sourceURL),a.inp_input_delay_ms=M(n.inputDelay),a.inp_processing_ms=M(n.processingDuration),a.inp_presentation_delay_ms=M(n.presentationDelay),a.inp_interaction_type=n.interactionType??null,a.inp_load_state=n.loadState??null,a.inp_scripts=re(n)),i==="LCP"&&(a.lcp_ttfb_ms=M(n.timeToFirstByte),a.lcp_resource_load_delay_ms=M(n.resourceLoadDelay),a.lcp_resource_load_duration_ms=M(n.resourceLoadDuration),a.lcp_element_render_delay_ms=M(n.elementRenderDelay),a.lcp_target=n.target??null,a.lcp_url=/^(?:data|blob):/.test(n.url??"")?"data:":yt(n.url),a.lcp_element_tag=n.lcpEntry?.element?.tagName?.toLowerCase()??null,a.lcp_nav_cached=Vt(n.navigationEntry),a.lcp_resource_cached=Vt(n.lcpResourceEntry)),i==="CLS"&&(a.cls_target=n.largestShiftTarget??null,a.cls_largest_shift=Number.isFinite(n.largestShiftValue)?Math.round(n.largestShiftValue*1e4)/1e4:null,a.cls_largest_shift_time_ms=M(n.largestShiftTime),a.cls_load_state=n.loadState??null),a}var rt={started:!1,send:null};function Ot(e,t,{load:i=()=>Promise.resolve().then(()=>(Bt(),Rt)),roll:r=Math.random()}={}){if(rt.send=t,rt.started||(rt.started=!0,!ee(e.sampleRate,r)))return Promise.resolve();let a={deployVersion:e.deployVersion,pageTemplate:e.pageTemplate,deviceClass:ne({mobileHint:globalThis.navigator?.userAgentData?.mobile,screenWidth:globalThis.screen?.width})},n=s=>{try{rt.send?.("$web_vitals",oe(s,{...a,pageUrl:globalThis.location?.href}))}catch{}},o={reportSoftNavs:e.softNavigations};return Promise.resolve().then(i).then(s=>{for(let l of[s.onLCP,s.onINP,s.onCLS,s.onFCP,s.onTTFB])l(n,o)}).catch(()=>{})}return $t(se);})();
|
|
1
|
+
"use strict";var WeborityAnalyticsWebVitals=(()=>{var J=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Ot=Object.getOwnPropertyNames;var jt=Object.prototype.hasOwnProperty;var zt=(e,t,a)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var Ht=(e,t,a)=>()=>{if(a)throw a[0];try{return e&&(t=e(e=0)),t}catch(r){throw a=[r],r}};var It=(e,t)=>{for(var a in t)J(e,a,{get:t[a],enumerable:!0})},qt=(e,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ot(t))!jt.call(e,i)&&i!==a&&J(e,i,{get:()=>t[i],enumerable:!(r=Ut(t,i))||r.enumerable});return e};var $t=e=>qt(J({},"__esModule",{value:!0}),e);var C=(e,t,a)=>zt(e,typeof t!="symbol"?t+"":t,a);var xt={};It(xt,{CLSThresholds:()=>gt,FCPThresholds:()=>Q,INPThresholds:()=>ft,LCPThresholds:()=>X,TTFBThresholds:()=>Z,onCLS:()=>Jt,onFCP:()=>Kt,onINP:()=>Yt,onLCP:()=>Zt,onTTFB:()=>te});function F(e,t){let a=wt.get(t);return a||(a=new WeakMap,wt.set(t,a)),a.get(e)||a.set(e,new t),a.get(e)}var tt,B,z,Gt,vt,wt,Lt,R,W,I,yt,q,x,Mt,Ct,dt,H,P,D,N,kt,Dt,et,at,Q,At,gt,Pt,Jt,Kt,Ft,ut,K,Qt,pt,_t,Xt,nt,mt,ft,Yt,it,X,Vt,Y,Zt,Z,ht,te,Nt=Ht(()=>{tt=class{constructor(){C(this,"t");C(this,"o",0);C(this,"i",[])}l(t){if(t.hadRecentInput)return;let a=this.i[0],r=this.i.at(-1);this.o&&a&&r&&t.startTime-r.startTime<1e3&&t.startTime-a.startTime<5e3?(this.o+=t.value,this.i.push(t)):(this.o=t.value,this.i=[t]),this.t?.(t)}},B=()=>{let e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},z=e=>{if(document.readyState==="loading")return"loading";let t=B();if(t){if(e<t.domInteractive)return"loading";if(t.domContentLoadedEventStart===0||e<t.domContentLoadedEventStart)return"dom-interactive";if(t.domComplete===0||e<t.domComplete)return"dom-content-loaded"}return"complete"},Gt=e=>{let t=e.nodeName;return e.nodeType===1?t.toLowerCase():t.toUpperCase().replace(/^#/,"")},vt=e=>{let t="";try{for(;e?.nodeType!==9;){let a=e,r=a.id?"#"+a.id:[Gt(a),...Array.from(a.classList??[]).sort()].join(".");if(t.length+r.length>99)return t||r;if(t=t?r+">"+t:r,a.id)break;e=a.parentNode}}catch{}return t},wt=new WeakMap;Lt=-1,R=()=>Lt,W=e=>{addEventListener("pageshow",t=>{t.persisted&&(Lt=t.timeStamp,e(t))},!0)},I=(e,t,a,r)=>{let i,n;return o=>{t.value>=0&&(o||r)&&(n=t.value-(i??0),(n||i===void 0)&&(i=t.value,t.delta=n,t.rating=((l,s)=>l>s[1]?"poor":l>s[0]?"needs-improvement":"good")(t.value,a),e(t)))}},yt=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))},q=()=>B()?.activationStart??0,x=-1,Mt=new Set,Ct=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,dt=e=>{if(document.visibilityState==="hidden"){if(e.type==="visibilitychange")for(let t of Mt)t();isFinite(x)||(x=e.type==="visibilitychange"?e.timeStamp:0,removeEventListener("prerenderingchange",dt,!0))}},H=(e=!1)=>{if(e&&(x=1/0),x<0){let t=q();x=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").find(r=>r.name==="hidden"&&r.startTime>=t)?.startTime)??Ct(),addEventListener("visibilitychange",dt,!0),addEventListener("prerenderingchange",dt,!0),W(()=>{setTimeout(()=>{x=Ct()})})}return{get firstHiddenTime(){return x},onHidden(t){Mt.add(t)}}},P=(e,t=-1,a,r=0,i,n,o)=>{let l=B(),s=l?.navigationId||0,c="navigate";return a?c=a:R()>=0?c="back-forward-cache":l&&(document.prerendering||q()>0?c="prerender":document.wasDiscarded?c="restore":l.type&&(c=l.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v6-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:c,navigationId:r||s,navigationInteractionId:i,navigationURL:n||l?.name,navigationStartTime:o||0}},D=(e,t,a={})=>{try{let r=e.filter(i=>PerformanceObserver.supportedEntryTypes.includes(i));if(r.length>0){let i=new PerformanceObserver(n=>{queueMicrotask(()=>{let o=n.getEntries();r.length>1&&o.sort((l,s)=>l.startTime+l.duration-(s.startTime+s.duration)),t(o)})});for(let n of r)i.observe({type:n,buffered:!0,...a});return i}}catch{}},N=e=>globalThis.PerformanceObserver?.supportedEntryTypes?.includes("soft-navigation")&&typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint=="function"&&e&&e.reportSoftNavs,kt=(e,t)=>{if(e.set(t.navigationId,t),e.size>2){let a=e.keys().next().value;a!==void 0&&e.delete(a)}},Dt=e=>{let t=!1;return()=>{t||(e(),t=!0)}},et=class{constructor(){C(this,"u")}},at=e=>{document.prerendering?addEventListener("prerenderingchange",e,!0):e()},Q=[1800,3e3],At=(e,t={})=>{let a=N(t);at(()=>{let r=F(t,et),i=H(),n,o=P("FCP"),l=D(["paint"],s=>{for(let c of s)c.name==="first-contentful-paint"&&(l.disconnect(),c.startTime<i.firstHiddenTime&&(o.value=Math.max(c.startTime-q(),0),o.entries.push(c),o.navigationId=c.navigationId||o.navigationId,n(!0)))});l&&(n=I(e,o,Q,t.reportAllChanges),W(s=>{o=P("FCP",-1,"back-forward-cache",o.navigationId,o.navigationInteractionId,o.navigationURL,R()),n=I(e,o,Q,t.reportAllChanges),yt(()=>{o.value=performance.now()-s.timeStamp,n(!0)})})),a&&D(["soft-navigation"],s=>{s.forEach(c=>{r.u&&c.navigationId&&kt(r.u,c);let g=Math.max((c.presentationTime||c.paintTime||0)-c.startTime,0);o=P("FCP",g,"soft-navigation",c.navigationId,c.interactionId,c.name,c.startTime),n=I(e,o,Q,t.reportAllChanges),n(!0)})},t)})},gt=[.1,.25],Pt=e=>e.find(t=>t.node?.nodeType===1)||e[0],Jt=(e,t={})=>{let a=F(t=Object.assign({},t),tt),r=new WeakMap;a.t=i=>{if(i?.sources?.length){let n=Pt(i.sources),o=n?.node;if(o){let l=t.generateTarget?.(o)??vt(o);r.set(n,l)}}},((i,n={})=>{let o=H();At(Dt(()=>{let l,s=P("CLS",0),c=F(n,tt),g=(f,u,h,v,S)=>{s=P("CLS",0,f,u,h,v,S),c.o=0,l=I(i,s,gt,n.reportAllChanges)},b=(f=!1)=>{c.o>s.value&&(s.value=c.o,s.entries=c.i),l(f)},M=f=>{b(!0),g("soft-navigation",f.navigationId,f.interactionId,f.name,f.startTime)},d=f=>{for(let u of f)u.entryType!=="soft-navigation"?c.l(u):M(u);b()},m=["layout-shift"];N(n)&&m.push("soft-navigation");let p=D(m,d);p&&(l=I(i,s,gt,n.reportAllChanges),o.onHidden(()=>{d(p.takeRecords()),l(!0)}),W(()=>{g("back-forward-cache",s.navigationId,s.navigationInteractionId,s.navigationURL,R()),yt(l)}),setTimeout(l))}))})(i=>{e((n=>{let o={};if(n.entries.length){let l=n.entries.reduce((s,c)=>s.value>c.value?s:c);if(l?.sources?.length){let s=Pt(l.sources);s&&(o={largestShiftTarget:r.get(s),largestShiftTime:l.startTime,largestShiftValue:l.value,largestShiftSource:s,largestShiftEntry:l,loadState:z(l.startTime)})}}return Object.assign(n,{attribution:o})})(i))},t)},Kt=(e,t={})=>{let a=F(t=Object.assign({},t),et);N(t)&&(a.u=new Map),At(r=>{e((i=>{let n={timeToFirstByte:0,firstByteToFCP:i.value,loadState:z(R())};if(i.navigationType!=="soft-navigation"){if(i.entries.length){let o=B(),l=i.entries.at(-1);if(o){let s=o.responseStart,c=o.activationStart||0,g=Math.max(0,s-c);n={timeToFirstByte:g,firstByteToFCP:i.value-g,loadState:z(i.entries[0].startTime),navigationEntry:o,fcpEntry:l}}}}else{let o=a.u?.get(i.navigationId);o&&(n={timeToFirstByte:0,firstByteToFCP:i.value,loadState:"complete",navigationEntry:o})}return Object.assign(i,{attribution:n})})(r))},t)},Ft=0,ut=1/0,K=0,Qt=e=>{for(let t of e)t.interactionId&&(ut=Math.min(ut,t.interactionId),K=Math.max(K,t.interactionId),Ft=K?(K-ut)/7+1:0)},_t=()=>pt?Ft:performance.interactionCount??0,Xt=()=>{"interactionCount"in performance||pt||(pt=D(["event"],Qt,{durationThreshold:0}))},nt=class{constructor(){C(this,"h",0);C(this,"v",[]);C(this,"p",new Map);C(this,"m");C(this,"M")}T(){return _t()-this.h}D(){this.h=_t(),this.v.length=0,this.p.clear()}S(t){let a=this.T(),r=Math.min(this.v.length-1,Math.floor(a/50));return!a||r!==-1||t!=="soft-navigation"&&t!=="back-forward-cache"?this.v[r]:{k:8,id:-1,entries:[]}}l(t){if(this.m?.(t),!t.interactionId)return;let a=this.v.at(-1),r=this.p.get(t.interactionId);if(r||this.v.length<10||t.duration>a.k){if(r?t.duration>r.k?(r.entries=[t],r.k=t.duration):t.duration===r.k&&t.startTime===r.entries[0].startTime&&r.entries.push(t):(r={id:t.interactionId,entries:[t],k:t.duration},this.p.set(r.id,r),this.v.push(r)),this.v.sort((i,n)=>n.k-i.k),this.v.length>10){let i=this.v.splice(10);for(let n of i)this.p.delete(n.id)}this.M?.(r)}}},mt=e=>{let t="requestIdleCallback"in globalThis?1e3:0,a=globalThis.requestIdleCallback||setTimeout,r=globalThis.cancelIdleCallback||clearTimeout;if(document.visibilityState==="hidden")e();else{let i=Dt(e),n=-1,o=()=>{r(n),i()};addEventListener("visibilitychange",o,{once:!0,capture:!0}),n=a(()=>{removeEventListener("visibilitychange",o,{capture:!0}),i()},{timeout:t})}},ft=[200,500],Yt=(e,t={})=>{let a=F(t=Object.assign({},t),nt),r=[],i=[],n=0,o=new WeakMap,l=new WeakMap,s=!1,c=()=>{s||(s=!0,mt(g))},g=()=>{let d=new Set(a.v.map(u=>o.get(u.entries[0]))),m=i.length-10;i=i.filter((u,h)=>h>=m||d.has(u));let p=new Set;for(let u of i){let h=b(u.startTime,u.processingEnd);for(let v of h)p.add(v)}let f=r.length-10;r=r.filter((u,h)=>p.has(u)||h>=f&&u.startTime>n),s=!1};a.m=d=>{let m=d.startTime+d.duration,p;n=Math.max(n,d.processingEnd);for(let f=i.length-1;f>=0;f--){let u=i[f];if(Math.abs(m-u.renderTime)<=8){p=u,p.startTime=Math.min(d.startTime,p.startTime),p.processingStart=Math.min(d.processingStart,p.processingStart),p.processingEnd=Math.max(d.processingEnd,p.processingEnd),t.includeProcessedEventEntries&&p.entries.push(d);break}}p||(p={startTime:d.startTime,processingStart:d.processingStart,processingEnd:d.processingEnd,renderTime:m,entries:t.includeProcessedEventEntries?[d]:[]},i.push(p)),d.interactionId&&o.set(d,p),c()},a.M=d=>{if(!l.get(d)){let m=d.entries.find(p=>p.target)?.target;if(m){let p=t.generateTarget?.(m)??vt(m);l.set(d,p)}else{let p=d.entries.find(f=>f.targetSelector)?.targetSelector;p&&l.set(d,p)}}};let b=(d,m)=>{let p=[];for(let f of r)if(!(f.startTime+f.duration<d)){if(f.startTime>m)break;p.push(f)}return p},M=d=>{if(d.entries.length===0){let y=d.navigationStartTime||0,E={processedEventEntries:[],longAnimationFrameEntries:[],inputDelay:0,processingDuration:0,presentationDelay:d.value,loadState:z(y)};return Object.assign(d,{attribution:E})}let m=d.entries[0],p=o.get(m),f=Math.max(p.processingStart,m.startTime),u=Math.max(m.startTime+m.duration,f),h=Math.min(p.processingEnd,u),v=p.entries.sort((y,E)=>y.processingStart-E.processingStart),S=b(m.startTime,h),_=a.p.get(m.interactionId),w={interactionTarget:l.get(_),interactionType:m.name.startsWith("key")?"keyboard":"pointer",interactionTime:m.startTime,nextPaintTime:u,processedEventEntries:v,longAnimationFrameEntries:S,inputDelay:f-m.startTime,processingDuration:h-f,presentationDelay:u-h,loadState:z(m.startTime),longestScript:void 0,totalScriptDuration:void 0,totalStyleAndLayoutDuration:void 0,totalPaintDuration:void 0,totalUnattributedDuration:void 0};return(y=>{let E=y.interactionTime,T=y.nextPaintTime;if(!y.longAnimationFrameEntries?.length||!E||!T)return;let V=y.inputDelay,A=y.processingDuration,U,O,ot=0,j=0,st=0,lt=0;for(let $ of y.longAnimationFrameEntries){j=j+$.startTime+$.duration-$.styleAndLayoutStart;for(let k of $.scripts){let St=k.startTime+k.duration;if(St<E)continue;let G=St-Math.max(E,k.startTime),Et=k.duration?G/k.duration*k.forcedStyleAndLayoutDuration:0;ot+=G-Et,j+=Et,G>lt&&(O=k.startTime<E+V?"input-delay":k.startTime>=E+V+A?"presentation-delay":"processing-duration",U=k,lt=G)}}let ct=y.longAnimationFrameEntries.at(-1),bt=ct?ct.startTime+ct.duration:0;bt>=E+V+A&&(st=T-bt),U&&O&&(y.longestScript={entry:U,subpart:O,intersectingDuration:lt}),y.totalScriptDuration=ot,y.totalStyleAndLayoutDuration=j,y.totalPaintDuration=st,y.totalUnattributedDuration=T-E-ot-j-st})(w),Object.assign(d,{attribution:w})};D(["long-animation-frame"],d=>{r=r.concat(d),c()},t),((d,m={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;let p=H();at(()=>{Xt();let f,u=P("INP"),h=F(m,nt),v=(T,V,A,U,O)=>{h.D(),u=P("INP",-1,T,V,A,U,O),f=I(d,u,ft,m.reportAllChanges)},S=()=>{let T=h.S(u.navigationType);T&&T.k!==u.value&&(u.value=T.k,u.entries=T.entries,f())},_=T=>{S(),f(!0),v("soft-navigation",T.navigationId,T.interactionId,T.name,T.startTime)},w=(T,V=!1)=>{mt(()=>{for(let A of T)A.entryType!=="soft-navigation"?h.l(A):_(A);S(),V&&f(!0)})},y=["event","first-input"];N(m)&&y.push("soft-navigation");let E=D(y,w,{...m,durationThreshold:m.durationThreshold??40});f=I(d,u,ft,m.reportAllChanges),E&&(p.onHidden(()=>{w(E.takeRecords(),!0)}),W(()=>{v("back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,R())}))})})(d=>{e(M(d))},t)},it=class{constructor(){C(this,"m");C(this,"u")}l(t){this.m?.(t)}},X=[2500,4e3],Vt=50,Y=[];D(["resource"],e=>{for(let t of e)Y.push(t),Y.length>Vt&&Y.shift()});Zt=(e,t={})=>{(t=Object.assign({},t)).resourceBufferSize!=null&&(Vt=t.resourceBufferSize);let a=F(t,it),r=new WeakMap;N(t)&&(a.u=new Map),a.m=i=>{let n=i.element;if(n){let o=t.generateTarget?.(n)??vt(n);r.set(i,o)}else i.id&&r.set(i,`#${i.id}`)},((i,n={})=>{let o=!1,l=N(n);at(()=>{let s,c=H(),g=P("LCP"),b=F(n,it),M=(u,h,v,S,_)=>{g=P("LCP",-1,u,h,v,S,_),s=I(i,g,X,n.reportAllChanges),o=!1,u==="soft-navigation"&&(c=H(!0))},d=u=>{b.u&&u.navigationId&&kt(b.u,u),o||s(!0),M("soft-navigation",u.navigationId,u.interactionId,u.name,u.startTime);let h=u.getLargestInteractionContentfulPaint?.();h&&m([h])},m=u=>{n.reportAllChanges||l||(u=u.slice(-1));for(let h of u){if(!h)continue;if(h.entryType==="soft-navigation"){d(h);continue}let v=0,S=[],_=h.startTime;if(h.entryType==="largest-contentful-paint")v=Math.max(h.startTime-q(),0),b.l(h),S=[h];else if(h.entryType==="interaction-contentful-paint"){let w=h;if(!g.navigationId||"interactionId"in w&&w.interactionId!=g.navigationInteractionId)continue;_=w.largestContentfulPaint?.renderTime||0,v=Math.max(_-h.startTime,0),w.largestContentfulPaint&&(b.l(w.largestContentfulPaint),S=[w.largestContentfulPaint])}_<c.firstHiddenTime&&(g.value=v,g.entries=S,s())}},p=["largest-contentful-paint"];l&&p.push("interaction-contentful-paint","soft-navigation");let f=D(p,m);if(f){s=I(i,g,X,n.reportAllChanges);let u=["keydown","click","visibilitychange"],h=v=>{if(v.isTrusted&&!o){let S=g.id;mt(()=>{if(!o){if(!l){f.disconnect();for(let _ of u)removeEventListener(_,h,{capture:!0})}S===g.id&&(o=!0,s(!0))}})}};for(let v of u)addEventListener(v,h,{capture:!0});W(v=>{M("back-forward-cache",g.navigationId,g.navigationInteractionId,g.navigationURL,R()),s=I(i,g,X,n.reportAllChanges),yt(()=>{g.value=performance.now()-v.timeStamp,o=!0,s(!0)})})}})})(i=>{e((n=>{let o={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:n.value};if(n.entries.length){let l=n.entries.at(-1),s=d=>d.name===l.url&&(d.requestStart||d.startTime)<=l.startTime,c=l.url&&(Y.findLast(s)||performance.getEntriesByType("resource").findLast(s)),g;o.target=r.get(l),o.lcpEntry=l,l.url&&(o.url=l.url),c&&(o.lcpResourceEntry=c);let b=0,M=0;if(n.navigationType!=="soft-navigation"?(g=B(),b=g?.activationStart??0,M=g?.responseStart??0):(b=n.navigationStartTime||0,g=a.u?.get(n.navigationId)),g){let d=Math.max(0,M-b),m=Math.max(d,c?(c.requestStart||c.startTime)-b:0),p=Math.min(n.value,Math.max(m,c?c.responseEnd-b:0));o={...o,timeToFirstByte:d,resourceLoadDelay:m-d,resourceLoadDuration:p-m,elementRenderDelay:n.value-p,navigationEntry:g}}}return Object.assign(n,{attribution:o})})(i))},t)},Z=[800,1800],ht=e=>{document.prerendering?at(()=>ht(e)):document.readyState!=="complete"?addEventListener("load",()=>ht(e),!0):setTimeout(e)},te=(e,t={})=>{((a,r={})=>{let i=N(r),n=P("TTFB"),o=I(a,n,Z,r.reportAllChanges);ht(()=>{let l=B();if(l){let s=l.responseStart;n.value=Math.max(s-q(),0),n.entries=[l],o(!0),W(()=>{n=P("TTFB",0,"back-forward-cache",n.navigationId,n.navigationInteractionId,n.navigationURL,R()),o=I(a,n,Z,r.reportAllChanges),o(!0)}),i&&D(["soft-navigation"],c=>{c.forEach(g=>{g.navigationId&&(n=P("TTFB",0,"soft-navigation",g.navigationId,g.interactionId,g.name,g.startTime),n.entries=[g],o=I(a,n,Z,r.reportAllChanges),o(!0))})},r)}})})(a=>{e((r=>{let i=r.entries[0],n={waitingDuration:0,cacheDuration:0,dnsDuration:0,connectionDuration:0,requestDuration:0,navigationEntry:i};if(r.entries.length&&i instanceof PerformanceNavigationTiming){let o=i.activationStart||0,l=Math.max((i.workerStart||i.fetchStart||0)-o,0),s=Math.max(i.domainLookupStart-o,0),c=Math.max(i.connectStart-o,0),g=Math.max(i.connectEnd-o,0);n={waitingDuration:l,cacheDuration:s-l,dnsDuration:c-s,connectionDuration:g-c,requestDuration:r.value-g,navigationEntry:i}}return Object.assign(r,{attribution:n})})(a))},t)}});var se={};It(se,{startWebVitals:()=>Wt});function ee(e,t){return t<e}function ne({mobileHint:e,screenWidth:t}){return e===!0?"mobile":typeof t!="number"||t<=0?"unknown":t<768?"mobile":t<1024?"tablet":"desktop"}function ie(e,t){if(typeof e!="string"||!e)return null;try{return new URL(e,t).pathname}catch{return null}}function Tt(e){return typeof e=="string"&&e?e.split(/[?#]/,1)[0]??null:null}var L=e=>typeof e=="number"&&Number.isFinite(e)?Math.round(e):null,Rt=(e,t)=>typeof e=="string"&&e?e.slice(0,t):null;function Bt(e){return typeof e?.transferSize!="number"||typeof e?.decodedBodySize!="number"?null:e.transferSize===0&&e.decodedBodySize>0?!0:e.transferSize>0?!1:null}function ae(e){return{url:Rt(Tt(e.sourceURL),200),function:Rt(e.sourceFunctionName,80),invoker_type:e.invokerType??null,duration_ms:L(e.duration),forced_style_layout_ms:L(e.forcedStyleAndLayoutDuration)}}function re(e){let t=(e?.longAnimationFrameEntries??[]).flatMap(a=>a.scripts??[]);return t.length===0&&(t=[e?.longestScript?.entry].filter(a=>!!a)),t.length===0?null:(t.sort((a,r)=>(r.duration??0)-(a.duration??0)),t.slice(0,3).map(ae))}function oe(e,t){let a=e.name,r=a==="CLS"?Math.round(e.value*1e4)/1e4:L(e.value),i={[`$web_vitals_${a}_value`]:r,vital:a,value:r,rating:e.rating,metric_id:e.id,navigation_type:e.navigationType??null,path:ie(e.navigationURL??t.pageUrl,t.pageUrl),deploy_version:t.deployVersion??null,device_class:t.deviceClass,page_template:e.navigationType==="soft-navigation"?null:t.pageTemplate??null};if(e.name==="INP"){let n=e.attribution??{};i.inp_target=n.interactionTarget||null,i.inp_longest_script_url=Tt(n.longestScript?.entry?.sourceURL),i.inp_input_delay_ms=L(n.inputDelay),i.inp_processing_ms=L(n.processingDuration),i.inp_presentation_delay_ms=L(n.presentationDelay),i.inp_interaction_type=n.interactionType??null,i.inp_load_state=n.loadState??null,i.inp_scripts=re(n)}if(e.name==="LCP"){let n=e.attribution??{};i.lcp_ttfb_ms=L(n.timeToFirstByte),i.lcp_resource_load_delay_ms=L(n.resourceLoadDelay),i.lcp_resource_load_duration_ms=L(n.resourceLoadDuration),i.lcp_element_render_delay_ms=L(n.elementRenderDelay),i.lcp_target=n.target??null,i.lcp_url=/^(?:data|blob):/.test(n.url??"")?"data:":Tt(n.url),i.lcp_element_tag=n.lcpEntry?.element?.tagName?.toLowerCase()??null,i.lcp_nav_cached=Bt(n.navigationEntry),i.lcp_resource_cached=Bt(n.lcpResourceEntry)}if(e.name==="CLS"){let n=e.attribution??{};i.cls_target=n.largestShiftTarget??null,i.cls_largest_shift=typeof n.largestShiftValue=="number"&&Number.isFinite(n.largestShiftValue)?Math.round(n.largestShiftValue*1e4)/1e4:null,i.cls_largest_shift_time_ms=L(n.largestShiftTime),i.cls_load_state=n.loadState??null}return i}var rt={started:!1,send:null};function Wt(e,t,{load:a=()=>Promise.resolve().then(()=>(Nt(),xt)),roll:r=Math.random()}={}){if(rt.send=t,rt.started||(rt.started=!0,!ee(e.sampleRate,r)))return Promise.resolve();let i=globalThis.navigator,n={deployVersion:e.deployVersion,pageTemplate:e.pageTemplate,deviceClass:ne({mobileHint:i?.userAgentData?.mobile,screenWidth:globalThis.screen?.width})},o=s=>{try{rt.send?.("$web_vitals",oe(s,{...n,pageUrl:globalThis.location?.href}))}catch{}},l={reportSoftNavs:e.softNavigations};return Promise.resolve().then(a).then(s=>{for(let c of[s.onLCP,s.onINP,s.onCLS,s.onFCP,s.onTTFB])c(o,l)}).catch(()=>{})}return $t(se);})();
|