@nuxt/scripts 1.1.0 → 1.2.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.
Files changed (69) hide show
  1. package/dist/devtools-client/200.html +1 -1
  2. package/dist/devtools-client/404.html +1 -1
  3. package/dist/devtools-client/_nuxt/BTXw0v4h.js +1 -0
  4. package/dist/devtools-client/_nuxt/Bf6N2ObH.js +1 -0
  5. package/dist/devtools-client/_nuxt/C5Bq9Qgz.js +1 -0
  6. package/dist/devtools-client/_nuxt/CSw0kWhI.js +1 -0
  7. package/dist/devtools-client/_nuxt/DWvCkA0U.js +195 -0
  8. package/dist/devtools-client/_nuxt/TPgAGQc8.js +1 -0
  9. package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
  10. package/dist/devtools-client/_nuxt/builds/meta/df290ad6-a770-4973-bb7f-110a630b368c.json +1 -0
  11. package/dist/devtools-client/_nuxt/dvDf1_6X.js +1 -0
  12. package/dist/devtools-client/_nuxt/entry.VwiedW44.css +1 -0
  13. package/dist/devtools-client/_nuxt/error-404.DBJH6QEN.css +1 -0
  14. package/dist/devtools-client/_nuxt/error-500.BIIPjeaA.css +1 -0
  15. package/dist/devtools-client/_nuxt/{first-party.C8Ha4JLM.css → first-party.D_SBdnka.css} +1 -1
  16. package/dist/devtools-client/_nuxt/index.DIj4bh55.css +1 -0
  17. package/dist/devtools-client/_nuxt/{registry.B9lnjF_b.css → registry.CDbTq1x3.css} +1 -1
  18. package/dist/devtools-client/docs/index.html +1 -1
  19. package/dist/devtools-client/first-party/index.html +1 -1
  20. package/dist/devtools-client/index.html +1 -1
  21. package/dist/devtools-client/registry/index.html +1 -1
  22. package/dist/module.d.mts +5 -1
  23. package/dist/module.d.ts +5 -1
  24. package/dist/module.json +1 -1
  25. package/dist/module.mjs +35 -4
  26. package/dist/registry.mjs +16 -3
  27. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.d.vue.ts +18 -1
  28. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue +7 -1
  29. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue.d.ts +18 -1
  30. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.d.vue.ts +9 -0
  31. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue +6 -5
  32. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue.d.ts +9 -0
  33. package/dist/runtime/components/ScriptGravatar.vue +2 -0
  34. package/dist/runtime/components/ScriptLoadingIndicator.vue +1 -1
  35. package/dist/runtime/components/ScriptVimeoPlayer.vue +27 -4
  36. package/dist/runtime/components/ScriptYouTubePlayer.vue +25 -4
  37. package/dist/runtime/composables/useScript.js +4 -3
  38. package/dist/runtime/registry/schemas.d.ts +76 -0
  39. package/dist/runtime/registry/schemas.js +82 -2
  40. package/dist/runtime/registry/speedcurve.d.ts +21 -0
  41. package/dist/runtime/registry/speedcurve.js +93 -0
  42. package/dist/runtime/registry/stripe.js +1 -1
  43. package/dist/runtime/registry/tiktok-pixel.d.ts +52 -13
  44. package/dist/runtime/registry/tiktok-pixel.js +46 -29
  45. package/dist/runtime/server/instagram-embed.js +37 -10
  46. package/dist/runtime/server/proxy-handler.d.ts +1 -0
  47. package/dist/runtime/server/proxy-handler.js +16 -0
  48. package/dist/runtime/server/utils/instagram-embed.d.ts +1 -0
  49. package/dist/runtime/server/utils/instagram-embed.js +5 -0
  50. package/dist/runtime/types.d.ts +3 -1
  51. package/dist/runtime/utils/after-next-paint.d.ts +1 -0
  52. package/dist/runtime/utils/after-next-paint.js +3 -0
  53. package/dist/stats.d.mts +1 -1
  54. package/dist/stats.d.ts +1 -1
  55. package/dist/stats.mjs +5 -0
  56. package/dist/types-source.mjs +127 -6
  57. package/package.json +12 -7
  58. package/dist/devtools-client/_nuxt/1wb58MKb.js +0 -1
  59. package/dist/devtools-client/_nuxt/BbLmrp_o.js +0 -1
  60. package/dist/devtools-client/_nuxt/Cx46cS8a.js +0 -1
  61. package/dist/devtools-client/_nuxt/D-M51CV3.js +0 -1
  62. package/dist/devtools-client/_nuxt/D4HTNcLU.js +0 -188
  63. package/dist/devtools-client/_nuxt/DU3BlAm5.js +0 -1
  64. package/dist/devtools-client/_nuxt/DiaY4J4_.js +0 -1
  65. package/dist/devtools-client/_nuxt/builds/meta/0b4ab733-07a6-40b2-b25e-aca95fa55188.json +0 -1
  66. package/dist/devtools-client/_nuxt/entry.XOvcedFq.css +0 -1
  67. package/dist/devtools-client/_nuxt/error-404.D2T48gBS.css +0 -1
  68. package/dist/devtools-client/_nuxt/error-500.sMTZJbsP.css +0 -1
  69. package/dist/devtools-client/_nuxt/index.DZD1lwyI.css +0 -1
@@ -13,6 +13,16 @@ import {
13
13
  const COMPRESSION_RE = /gzip|deflate|br|compress|base64/i;
14
14
  const CLIENT_HINT_VERSION_RE = /;v="(\d+)\.[^"]*"/g;
15
15
  const SKIP_RESPONSE_HEADERS = /* @__PURE__ */ new Set(["set-cookie", "transfer-encoding", "content-encoding", "content-length"]);
16
+ export const SKIP_REQUEST_HEADERS = /* @__PURE__ */ new Set([
17
+ "connection",
18
+ "keep-alive",
19
+ "proxy-authenticate",
20
+ "proxy-authorization",
21
+ "te",
22
+ "trailer",
23
+ "transfer-encoding",
24
+ "upgrade"
25
+ ]);
16
26
  function stripQueryFingerprinting(query, privacy) {
17
27
  const stripped = stripPayloadFingerprinting(query, privacy);
18
28
  const params = new URLSearchParams();
@@ -88,12 +98,18 @@ export default defineEventHandler(async (event) => {
88
98
  }
89
99
  }
90
100
  const headers = {};
101
+ const connectionHeaderValue = originalHeaders.connection;
102
+ const connectionNamedHeaders = connectionHeaderValue ? new Set(connectionHeaderValue.split(",").map((h) => h.trim().toLowerCase()).filter(Boolean)) : null;
91
103
  for (const [key, value] of Object.entries(originalHeaders)) {
92
104
  if (!value)
93
105
  continue;
94
106
  const lowerKey = key.toLowerCase();
95
107
  if (lowerKey === "host")
96
108
  continue;
109
+ if (SKIP_REQUEST_HEADERS.has(lowerKey))
110
+ continue;
111
+ if (connectionNamedHeaders?.has(lowerKey))
112
+ continue;
97
113
  if (SENSITIVE_HEADERS.includes(lowerKey))
98
114
  continue;
99
115
  if (lowerKey === "content-length") {
@@ -1,4 +1,5 @@
1
1
  export declare const RSRC_RE: RegExp;
2
+ export declare function isEmbedShell(html: string): boolean;
2
3
  export declare const AMP_RE: RegExp;
3
4
  export declare const SCONTENT_RE: RegExp;
4
5
  export declare const STATIC_CDN_RE: RegExp;
@@ -1,5 +1,10 @@
1
1
  import { buildProxyUrl } from "./proxy-url.js";
2
2
  export const RSRC_RE = /url\(\/rsrc\.php([^)]+)\)/g;
3
+ const SHELL_BODY_RE = /id=["'](?:splash-screen|has-finished-comet-page)["']/;
4
+ const HAS_POST_CONTENT_RE = /\bclass=(["'])[^"']*\b(?:Embed|EmbeddedMedia|EmbeddedMediaImage)\b[^"']*\1/i;
5
+ export function isEmbedShell(html) {
6
+ return SHELL_BODY_RE.test(html) && !HAS_POST_CONTENT_RE.test(html);
7
+ }
3
8
  export const AMP_RE = /&/g;
4
9
  export const SCONTENT_RE = /https:\/\/scontent[^"'\s),]+\.cdninstagram\.com[^"'\s),]+/g;
5
10
  export const STATIC_CDN_RE = /https:\/\/static\.cdninstagram\.com[^"'\s),]+/g;
@@ -35,6 +35,7 @@ import type { RedditPixelInput } from './registry/reddit-pixel.js';
35
35
  import type { RybbitAnalyticsInput } from './registry/rybbit-analytics.js';
36
36
  import type { SegmentInput } from './registry/segment.js';
37
37
  import type { SnapTrPixelInput } from './registry/snapchat-pixel.js';
38
+ import type { SpeedCurveInput } from './registry/speedcurve.js';
38
39
  import type { StripeInput } from './registry/stripe.js';
39
40
  import type { TikTokPixelInput } from './registry/tiktok-pixel.js';
40
41
  import type { UmamiAnalyticsInput } from './registry/umami-analytics.js';
@@ -263,6 +264,7 @@ export interface ScriptRegistry {
263
264
  rybbitAnalytics?: RybbitAnalyticsInput;
264
265
  redditPixel?: RedditPixelInput;
265
266
  segment?: SegmentInput;
267
+ speedcurve?: SpeedCurveInput;
266
268
  stripe?: StripeInput;
267
269
  tiktokPixel?: TikTokPixelInput;
268
270
  xEmbed?: XEmbedInput;
@@ -281,7 +283,7 @@ export interface ScriptRegistry {
281
283
  * Built-in registry script keys — not affected by module augmentation.
282
284
  * Use this to type-check records that must enumerate all built-in scripts (logos, meta, etc.).
283
285
  */
284
- export type BuiltInRegistryScriptKey = 'ahrefsAnalytics' | 'bingUet' | 'blueskyEmbed' | 'calendly' | 'carbonAds' | 'crisp' | 'clarity' | 'cloudflareWebAnalytics' | 'databuddyAnalytics' | 'metaPixel' | 'fathomAnalytics' | 'instagramEmbed' | 'plausibleAnalytics' | 'googleAdsense' | 'googleAnalytics' | 'googleMaps' | 'googleRecaptcha' | 'googleSignIn' | 'lemonSqueezy' | 'googleTagManager' | 'hotjar' | 'intercom' | 'linkedinInsight' | 'paypal' | 'posthog' | 'matomoAnalytics' | 'mixpanelAnalytics' | 'rybbitAnalytics' | 'redditPixel' | 'segment' | 'stripe' | 'tiktokPixel' | 'xEmbed' | 'xPixel' | 'snapchatPixel' | 'youtubePlayer' | 'vercelAnalytics' | 'vimeoPlayer' | 'umamiAnalytics' | 'usercentrics' | 'gravatar' | 'npm';
286
+ export type BuiltInRegistryScriptKey = 'ahrefsAnalytics' | 'bingUet' | 'blueskyEmbed' | 'calendly' | 'carbonAds' | 'crisp' | 'clarity' | 'cloudflareWebAnalytics' | 'databuddyAnalytics' | 'metaPixel' | 'fathomAnalytics' | 'instagramEmbed' | 'plausibleAnalytics' | 'googleAdsense' | 'googleAnalytics' | 'googleMaps' | 'googleRecaptcha' | 'googleSignIn' | 'lemonSqueezy' | 'googleTagManager' | 'hotjar' | 'intercom' | 'linkedinInsight' | 'paypal' | 'posthog' | 'matomoAnalytics' | 'mixpanelAnalytics' | 'rybbitAnalytics' | 'redditPixel' | 'segment' | 'stripe' | 'tiktokPixel' | 'xEmbed' | 'xPixel' | 'snapchatPixel' | 'speedcurve' | 'youtubePlayer' | 'vercelAnalytics' | 'vimeoPlayer' | 'umamiAnalytics' | 'usercentrics' | 'gravatar' | 'npm';
285
287
  /**
286
288
  * Union of all explicit registry script keys (excludes npm pattern).
287
289
  * Includes both built-in and augmented keys.
@@ -0,0 +1 @@
1
+ export declare function afterNextPaint(callback: () => void): void;
@@ -0,0 +1,3 @@
1
+ export function afterNextPaint(callback) {
2
+ requestAnimationFrame(() => requestAnimationFrame(callback));
3
+ }
package/dist/stats.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- type TrackedDataType = 'page-views' | 'events' | 'conversions' | 'user-identity' | 'session-replay' | 'heatmaps' | 'clicks' | 'scrolls' | 'retargeting' | 'audiences' | 'form-submissions' | 'video-engagement' | 'transactions' | 'errors' | 'tag-injection' | 'ab-testing';
1
+ type TrackedDataType = 'page-views' | 'events' | 'conversions' | 'user-identity' | 'session-replay' | 'heatmaps' | 'clicks' | 'scrolls' | 'retargeting' | 'audiences' | 'form-submissions' | 'video-engagement' | 'transactions' | 'errors' | 'tag-injection' | 'ab-testing' | 'performance-timings';
2
2
 
3
3
  interface ScriptPrivacy {
4
4
  ip: boolean;
package/dist/stats.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- type TrackedDataType = 'page-views' | 'events' | 'conversions' | 'user-identity' | 'session-replay' | 'heatmaps' | 'clicks' | 'scrolls' | 'retargeting' | 'audiences' | 'form-submissions' | 'video-engagement' | 'transactions' | 'errors' | 'tag-injection' | 'ab-testing';
1
+ type TrackedDataType = 'page-views' | 'events' | 'conversions' | 'user-identity' | 'session-replay' | 'heatmaps' | 'clicks' | 'scrolls' | 'retargeting' | 'audiences' | 'form-submissions' | 'video-engagement' | 'transactions' | 'errors' | 'tag-injection' | 'ab-testing' | 'performance-timings';
2
2
 
3
3
  interface ScriptPrivacy {
4
4
  ip: boolean;
package/dist/stats.mjs CHANGED
@@ -198,6 +198,11 @@ const scriptMeta = {
198
198
  gravatar: {
199
199
  urls: ["https://secure.gravatar.com/js/gprofiles.js"],
200
200
  trackedData: []
201
+ },
202
+ // Performance monitoring
203
+ speedcurve: {
204
+ urls: ["https://cdn.speedcurve.com/js/lux.js"],
205
+ trackedData: ["page-views", "performance-timings", "errors"]
201
206
  }
202
207
  };
203
208
 
@@ -382,7 +382,7 @@ const types = {
382
382
  {
383
383
  name: "ScriptGoogleMapsHeatmapLayerProps",
384
384
  kind: "interface",
385
- code: "interface ScriptGoogleMapsHeatmapLayerProps {\n /**\n * Configuration options for the heatmap layer visualization.\n * @see https://developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n options?: Omit<google.maps.visualization.HeatmapLayerOptions, 'map'>\n}"
385
+ code: "interface ScriptGoogleMapsHeatmapLayerProps {\n /**\n * Configuration options for the heatmap layer visualization.\n * @deprecated Google deprecated the Maps JavaScript API `HeatmapLayer` (May 2025) and removed it in v3.65 (May 2026). Consider [deck.gl HeatmapLayer](https://deck.gl/docs/api-reference/aggregation-layers/heatmap-layer) instead.\n * @see https://developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n options?: Omit<HeatmapLayerOptions, 'map'>\n}"
386
386
  },
387
387
  {
388
388
  name: "ScriptGoogleMapsInfoWindowProps",
@@ -965,11 +965,23 @@ const types = {
965
965
  code: "export interface SnapPixelApi {\n snaptr: SnapTrFns & {\n push: SnapTrFns\n loaded: boolean\n version: string\n queue: any[]\n }\n _snaptr: SnapPixelApi['snaptr']\n handleRequest?: SnapTrFns\n}"
966
966
  }
967
967
  ],
968
+ speedcurve: [
969
+ {
970
+ name: "SpeedCurveOptions",
971
+ kind: "const",
972
+ code: "export const SpeedCurveOptions = object({\n // -- Composable-only options (consumed by useScriptSpeedCurve, not forwarded to LUX) --\n /**\n * Your SpeedCurve customer ID.\n * @see https://support.speedcurve.com/docs/add-rum-to-your-site\n */\n id: pipe(string(), minLength(1)),\n /**\n * Enable SPA (single-page application) mode.\n * When true, lux.js tracks soft navigations instead of full page loads.\n * @see https://support.speedcurve.com/docs/single-page-applications\n */\n spaMode: optional(boolean()),\n /**\n * Automatically wire Vue Router hooks for SPA tracking when spaMode is true.\n * Set to false to instrument navigations manually.\n * @default true (when spaMode is true)\n */\n autoTrackSpaNavigations: optional(boolean()),\n\n // -- LUX UserConfig passthrough (forwarded onto window.LUX before lux.js loads) --\n // Property names match upstream LUX UserConfig casing exactly. Keep this list in\n // sync with the LUX_USER_CONFIG_KEYS filter in speedcurve.ts.\n /**\n * Page label shown in the SpeedCurve dashboard.\n * Accepts a static string, a function `(to) => string | false` for per-navigation labels,\n * or `false` to disable labeling entirely. A callback returning `false` skips updating\n * the label for that navigation.\n * @default String(to.name ?? to.path)\n */\n label: optional(union([string(), function_(), literal(false)])),\n /**\n * Sampling rate (0–100). Percentage of sessions that send beacons.\n * Upstream spelling is lowercase — matches LUX UserConfig.\n */\n samplerate: optional(pipe(number(), minValue(0), maxValue(100))),\n /**\n * Send the beacon when the page is hidden (pagehide event).\n * @default true\n */\n sendBeaconOnPageHidden: optional(boolean()),\n /**\n * Track JavaScript errors.\n * @default true\n */\n trackErrors: optional(boolean()),\n /**\n * Maximum number of errors to track per page view.\n * @default 5\n */\n maxErrors: optional(number()),\n /**\n * Minimum time (ms) before a beacon can be sent.\n */\n minMeasureTime: optional(number()),\n /**\n * Maximum time (ms) after which the beacon is sent regardless of load state.\n * @default 60000\n */\n maxMeasureTime: optional(number()),\n /**\n * Start a new beacon when the page becomes visible after being hidden.\n */\n newBeaconOnPageShow: optional(boolean()),\n /**\n * Track pages loaded in background tabs.\n * @default false\n */\n trackHiddenPages: optional(boolean()),\n /**\n * Cookie domain for cross-subdomain session tracking.\n */\n cookieDomain: optional(string()),\n})"
973
+ },
974
+ {
975
+ name: "SpeedCurveApi",
976
+ kind: "interface",
977
+ code: "export interface SpeedCurveApi {\n LUX: LuxGlobal\n}"
978
+ }
979
+ ],
968
980
  stripe: [
969
981
  {
970
982
  name: "StripeOptions",
971
983
  kind: "const",
972
- code: "export const StripeOptions = object({\n /**\n * Whether to load Stripe's advanced fraud detection signals.\n * Set to `false` to opt out.\n * @default true\n * @see https://docs.stripe.com/disputes/prevention/advanced-fraud-detection\n */\n advancedFraudSignals: optional(boolean()),\n})"
984
+ code: "export const StripeOptions = object({\n /**\n * Whether to load Stripe's advanced fraud detection signals.\n * Set to `false` to opt out.\n * @default true\n * @see https://docs.stripe.com/disputes/prevention/advanced-fraud-detection\n */\n advancedFraudSignals: optional(boolean()),\n /**\n * The Stripe.js SDK version to load.\n * Named releases get autocomplete; any future codename is also accepted.\n * @default 'basil'\n * @see https://docs.stripe.com/sdks/stripejs-versioning\n */\n version: optional(union([literal('v3'), literal('acacia'), literal('basil'), literal('clover'), literal('dahlia'), string()])),\n})"
973
985
  },
974
986
  {
975
987
  name: "StripeApi",
@@ -1014,14 +1026,29 @@ const types = {
1014
1026
  code: "interface TrackOptions {\n /** Used to deduplicate events sent from both the browser Pixel and the server-side Events API. */\n event_id?: string\n /**\n * Sandbox test-event identifier. When set, events route to TikTok's Test Events panel\n * without affecting production reporting.\n */\n test_event_code?: string\n [key: string]: any\n}"
1015
1027
  },
1016
1028
  {
1017
- name: "TtqFns",
1029
+ name: "TtqInstance",
1030
+ kind: "interface",
1031
+ code: "export interface TtqInstance {\n /** Track a page view. */\n page: () => void\n /** Track a standard or custom conversion event. */\n track: (event: StandardEvents | (string & {}), properties?: EventProperties, options?: TrackOptions) => void\n /** Associate advanced-matching identifiers with the current user. */\n identify: (properties: IdentifyProperties) => void\n /** Opt user in to tracking. Queued before the script loads; live once `events.js` binds. */\n grantConsent: () => void\n /** Opt user out of tracking. Queued before the script loads; live once `events.js` binds. */\n revokeConsent: () => void\n /** Defer consent until an explicit grant/revoke. Queued before the script loads; live once `events.js` binds. */\n holdConsent: () => void\n enableCookie: () => void\n disableCookie: () => void\n}"
1032
+ },
1033
+ {
1034
+ name: "TtqCallable",
1018
1035
  kind: "type",
1019
- code: "type TtqFns\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties, options?: TrackOptions) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
1036
+ code: "type TtqCallable\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties, options?: TrackOptions) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
1037
+ },
1038
+ {
1039
+ name: "Ttq",
1040
+ kind: "type",
1041
+ code: "export type Ttq = TtqCallable & TtqInstance & {\n /** Resolve the per-pixel method bag for a specific pixel id. */\n instance: (id: string) => TtqInstance\n}"
1020
1042
  },
1021
1043
  {
1022
1044
  name: "TikTokPixelApi",
1023
1045
  kind: "interface",
1024
- code: "export interface TikTokPixelApi {\n ttq: TtqFns & {\n push: TtqFns\n loaded: boolean\n queue: any[]\n /** Opt user in to tracking. Queued before the script loads; live once `events.js` binds. */\n grantConsent: () => void\n /** Opt user out of tracking. Queued before the script loads; live once `events.js` binds. */\n revokeConsent: () => void\n /** Defer consent until an explicit grant/revoke. Queued before the script loads; live once `events.js` binds. */\n holdConsent: () => void\n }\n}"
1046
+ code: "export interface TikTokPixelApi {\n ttq: Ttq\n}"
1047
+ },
1048
+ {
1049
+ name: "TtqArray",
1050
+ kind: "type",
1051
+ code: "type TtqArray = TtqInstance & Array<any[]> & {\n methods: string[]\n setAndDefer: (target: any, method: string) => void\n instance: (id: string) => TtqInstance\n _i?: Record<string, any[]>\n _t?: Record<string, number>\n _o?: Record<string, any>\n}"
1025
1052
  },
1026
1053
  {
1027
1054
  name: "TikTokPixelOptions",
@@ -2359,6 +2386,93 @@ const schemaFields = {
2359
2386
  description: "The user's age."
2360
2387
  }
2361
2388
  ],
2389
+ SpeedCurveOptions: [
2390
+ {
2391
+ name: "id",
2392
+ type: "string",
2393
+ required: true,
2394
+ description: "Your SpeedCurve customer ID."
2395
+ },
2396
+ {
2397
+ name: "spaMode",
2398
+ type: "boolean",
2399
+ required: false,
2400
+ description: "Enable SPA (single-page application) mode. When true, lux.js tracks soft navigations instead of full page loads."
2401
+ },
2402
+ {
2403
+ name: "autoTrackSpaNavigations",
2404
+ type: "boolean",
2405
+ required: false,
2406
+ description: "Automatically wire Vue Router hooks for SPA tracking when spaMode is true. Set to false to instrument navigations manually.",
2407
+ defaultValue: "true (when spaMode is true)"
2408
+ },
2409
+ {
2410
+ name: "label",
2411
+ type: "string | Function | false",
2412
+ required: false,
2413
+ description: "Page label shown in the SpeedCurve dashboard. Accepts a static string, a function `(to) => string | false` for per-navigation labels, or `false` to disable labeling entirely. A callback returning `false` skips updating the label for that navigation.",
2414
+ defaultValue: "String(to.name ?? to.path)"
2415
+ },
2416
+ {
2417
+ name: "samplerate",
2418
+ type: "number",
2419
+ required: false,
2420
+ description: "Sampling rate (0–100). Percentage of sessions that send beacons. Upstream spelling is lowercase — matches LUX UserConfig."
2421
+ },
2422
+ {
2423
+ name: "sendBeaconOnPageHidden",
2424
+ type: "boolean",
2425
+ required: false,
2426
+ description: "Send the beacon when the page is hidden (pagehide event).",
2427
+ defaultValue: "true"
2428
+ },
2429
+ {
2430
+ name: "trackErrors",
2431
+ type: "boolean",
2432
+ required: false,
2433
+ description: "Track JavaScript errors.",
2434
+ defaultValue: "true"
2435
+ },
2436
+ {
2437
+ name: "maxErrors",
2438
+ type: "number",
2439
+ required: false,
2440
+ description: "Maximum number of errors to track per page view.",
2441
+ defaultValue: "5"
2442
+ },
2443
+ {
2444
+ name: "minMeasureTime",
2445
+ type: "number",
2446
+ required: false,
2447
+ description: "Minimum time (ms) before a beacon can be sent."
2448
+ },
2449
+ {
2450
+ name: "maxMeasureTime",
2451
+ type: "number",
2452
+ required: false,
2453
+ description: "Maximum time (ms) after which the beacon is sent regardless of load state.",
2454
+ defaultValue: "60000"
2455
+ },
2456
+ {
2457
+ name: "newBeaconOnPageShow",
2458
+ type: "boolean",
2459
+ required: false,
2460
+ description: "Start a new beacon when the page becomes visible after being hidden."
2461
+ },
2462
+ {
2463
+ name: "trackHiddenPages",
2464
+ type: "boolean",
2465
+ required: false,
2466
+ description: "Track pages loaded in background tabs.",
2467
+ defaultValue: "false"
2468
+ },
2469
+ {
2470
+ name: "cookieDomain",
2471
+ type: "string",
2472
+ required: false,
2473
+ description: "Cookie domain for cross-subdomain session tracking."
2474
+ }
2475
+ ],
2362
2476
  SnapTrPixelOptions: [
2363
2477
  {
2364
2478
  name: "id",
@@ -2380,6 +2494,13 @@ const schemaFields = {
2380
2494
  required: false,
2381
2495
  description: "Whether to load Stripe's advanced fraud detection signals. Set to `false` to opt out.",
2382
2496
  defaultValue: "true"
2497
+ },
2498
+ {
2499
+ name: "version",
2500
+ type: "'v3' | 'acacia' | 'basil' | 'clover' | 'dahlia' | string",
2501
+ required: false,
2502
+ description: "The Stripe.js SDK version to load. Named releases get autocomplete; any future codename is also accepted.",
2503
+ defaultValue: "'basil'"
2383
2504
  }
2384
2505
  ],
2385
2506
  TikTokPixelOptions: [
@@ -2732,7 +2853,7 @@ const schemaFields = {
2732
2853
  ScriptGoogleMapsHeatmapLayerProps: [
2733
2854
  {
2734
2855
  name: "options",
2735
- type: "Omit<google.maps.visualization.HeatmapLayerOptions, 'map'>",
2856
+ type: "Omit<HeatmapLayerOptions, 'map'>",
2736
2857
  required: false,
2737
2858
  description: "Configuration options for the heatmap layer visualization."
2738
2859
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nuxt/scripts",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "Load third-party scripts with better performance, privacy and DX in Nuxt Apps.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",
@@ -71,11 +71,12 @@
71
71
  "peerDependencies": {
72
72
  "@googlemaps/markerclusterer": "^2.6.2",
73
73
  "@paypal/paypal-js": "^8.1.2 || ^9.0.0",
74
+ "@speedcurve/lux": "^4.4.3",
74
75
  "@stripe/stripe-js": "^7.0.0 || ^8.0.0 || ^9.0.0",
75
76
  "@types/google.maps": "^3.58.1",
76
77
  "@types/vimeo__player": "^2.18.3",
77
78
  "@types/youtube": "^0.1.0",
78
- "@unhead/vue": "^2.0.3",
79
+ "@unhead/vue": "^2.0.3 || ^3.0.0",
79
80
  "posthog-js": "^1.0.0"
80
81
  },
81
82
  "peerDependenciesMeta": {
@@ -85,6 +86,9 @@
85
86
  "@paypal/paypal-js": {
86
87
  "optional": true
87
88
  },
89
+ "@speedcurve/lux": {
90
+ "optional": true
91
+ },
88
92
  "@stripe/stripe-js": {
89
93
  "optional": true
90
94
  },
@@ -111,7 +115,7 @@
111
115
  "magic-string": "^0.30.21",
112
116
  "ofetch": "^1.5.1",
113
117
  "ohash": "^2.0.11",
114
- "oxc-parser": "^0.130.0",
118
+ "oxc-parser": "^0.134.0",
115
119
  "oxc-walker": "^1.0.0",
116
120
  "pathe": "^2.0.3",
117
121
  "pkg-types": "^2.3.1",
@@ -121,14 +125,15 @@
121
125
  "ultrahtml": "^1.6.0",
122
126
  "unplugin": "^3.0.0",
123
127
  "unstorage": "^1.17.5",
124
- "valibot": "^1.4.0"
128
+ "valibot": "^1.4.1"
125
129
  },
126
130
  "devDependencies": {
127
- "@nuxt/kit": "^4.4.5",
131
+ "@nuxt/kit": "^4.4.6",
128
132
  "@nuxt/module-builder": "^1.0.2",
129
- "rollup": "^4.60.3",
133
+ "@speedcurve/lux": "^4.4.3",
134
+ "rollup": "^4.60.4",
130
135
  "unbuild": "^3.6.1",
131
- "unimport": "^6.2.0"
136
+ "unimport": "^6.3.0"
132
137
  },
133
138
  "scripts": {
134
139
  "build": "nuxt-module-build build",
@@ -1 +0,0 @@
1
- import{f as j,o,c as s,h as m,s as p,a as t,b as n,j as C,F as d,k as N,r as u,g as v,t as r,m as k,w as _,n as w,l as L,d as y,_ as S}from"./D4HTNcLU.js";const T={class:"py-1"},V={key:0,class:"panel-grids rounded-xl flex flex-col items-center justify-center py-16 gap-3"},B={class:"w-12 h-12 rounded-xl bg-(--color-surface-elevated) border border-(--color-border) flex items-center justify-center"},M={class:"stagger-children space-y-1.5"},$={class:"px-3.5 py-2.5 flex items-center gap-3"},H={class:"w-7 h-7 rounded-lg bg-(--color-surface-sunken) border border-(--color-border-subtle) flex items-center justify-center flex-shrink-0 overflow-hidden"},D=["src"],P=["innerHTML"],A={class:"flex-1 min-w-0"},F={class:"flex items-center gap-2"},I={class:"text-[13px] font-semibold tracking-tight truncate"},U={class:"text-[10px] px-1.5 py-0.5 rounded-full bg-(--color-surface-sunken) text-(--color-text-subtle) font-medium flex-shrink-0"},W={key:0,class:"text-[10px] font-mono text-(--color-text-subtle) truncate mt-0.5"},q={key:1,class:"text-[10px] font-mono text-(--color-text-subtle) mt-0.5"},z={class:"flex items-center gap-1 flex-shrink-0"},E={class:"text-xs space-y-0.5"},R={class:"font-semibold"},G={class:"opacity-70"},J={class:"opacity-50 mt-1 max-w-48 text-[11px]"},K=["href"],O={key:0,class:"mt-5 card overflow-hidden"},Q={class:"px-4 py-2.5 border-b border-(--color-border-subtle)"},X={class:"text-xs font-semibold uppercase tracking-wider text-(--color-text-subtle) flex items-center gap-1.5"},Y={class:"overflow-x-auto"},Z={class:"w-full text-xs"},ee={class:"border-b border-(--color-border-subtle)"},te={class:"inline-flex items-center justify-center gap-1"},oe={class:"px-4 py-2 font-medium whitespace-nowrap"},se={class:"flex items-center gap-2"},ae=["src"],le=["innerHTML"],ne=j({__name:"registry",setup(re){const g=[{key:"bundle",label:"Bundle",icon:"i-carbon-archive",desc:"Downloaded at build time, served from your domain"},{key:"proxy",label:"Proxy",icon:"i-carbon-security",desc:"Collection requests routed through your server"},{key:"partytown",label:"Partytown",icon:"i-carbon-container-software",desc:"Can run in a web worker via Partytown"}];function f(c,a){return c.capabilities?.[a]?c.defaultCapability?.[a]?"active":"available":"off"}function h(c){return c==="active"?"Active by default":c==="available"?"Supported (opt-in)":"Not supported"}return(c,a)=>{const l=C,b=L;return o(),s("div",T,[m(p)?.length?(o(),s(d,{key:1},[a[3]||(a[3]=N('<div class="flex items-center gap-4 mb-3 px-0.5" data-v-3f8fca8a><div class="flex items-center gap-1.5 text-[10px] font-medium text-(--color-text-subtle)" data-v-3f8fca8a><span class="cap-dot cap-dot-active" data-v-3f8fca8a></span> Active by default </div><div class="flex items-center gap-1.5 text-[10px] font-medium text-(--color-text-subtle)" data-v-3f8fca8a><span class="cap-dot cap-dot-available" data-v-3f8fca8a></span> Supported (opt-in) </div><div class="flex items-center gap-1.5 text-[10px] font-medium text-(--color-text-subtle)" data-v-3f8fca8a><span class="cap-dot cap-dot-off" data-v-3f8fca8a></span> Not supported </div></div>',1)),t("div",M,[(o(!0),s(d,null,u(m(p),(e,x)=>(o(),s("div",{key:x,class:"registry-row group"},[t("div",$,[t("div",H,[e.logo&&typeof e.logo=="string"&&e.logo.startsWith("http")?(o(),s("img",{key:0,class:"w-5 h-5 object-contain",src:typeof e.logo=="object"?e.logo.dark||e.logo.light:e.logo,alt:""},null,8,D)):e.logo?(o(),s("div",{key:1,class:"w-5 h-5 flex items-center [&>svg]:max-h-5 [&>svg]:max-w-5",innerHTML:typeof e.logo=="object"?e.logo.dark||e.logo.light:e.logo},null,8,P)):(o(),v(l,{key:2,name:"i-carbon-script",class:"text-sm text-(--color-text-subtle)"}))]),t("div",A,[t("div",F,[t("span",I,r(e.label),1),t("span",U,r(e.category),1)]),e.src&&e.src!==!1?(o(),s("div",W,r(e.src),1)):e.src===!1?(o(),s("div",q," npm (no script download) ")):k("",!0)]),t("div",z,[(o(),s(d,null,u(g,i=>n(b,{key:i.key},{content:_(()=>[t("div",E,[t("div",R,r(i.label),1),t("div",G,r(h(f(e,i.key))),1),t("div",J,r(i.desc),1)])]),default:_(()=>[t("div",{class:w(["cap-indicator",`cap-${f(e,i.key)}`])},[n(l,{name:i.icon,class:"text-xs"},null,8,["name"])],2)]),_:2},1024)),64))]),t("a",{href:`https://scripts.nuxt.com/scripts/${e.label.toLowerCase().replace(/ /g,"-")}`,target:"_blank",class:"opacity-0 group-hover:opacity-60 focus-visible:opacity-60 transition-opacity flex-shrink-0","aria-label":"View documentation"},[n(l,{name:"i-carbon-launch",class:"text-sm"})],8,K)])]))),128))]),m(p).length>3?(o(),s("div",O,[t("div",Q,[t("h4",X,[n(l,{name:"i-carbon-data-table",class:"text-sm"}),a[1]||(a[1]=y(" Capability Matrix ",-1))])]),t("div",Y,[t("table",Z,[t("thead",null,[t("tr",ee,[a[2]||(a[2]=t("th",{class:"px-4 py-2 text-left font-medium text-(--color-text-subtle)"}," Script ",-1)),(o(),s(d,null,u(g,e=>t("th",{key:e.key,class:"px-3 py-2 text-center font-medium text-(--color-text-subtle) whitespace-nowrap"},[n(b,{text:e.desc},{default:_(()=>[t("span",te,[n(l,{name:e.icon,class:"text-xs"},null,8,["name"]),y(" "+r(e.label),1)])]),_:2},1032,["text"])])),64))])]),t("tbody",null,[(o(!0),s(d,null,u(m(p),e=>(o(),s("tr",{key:e.registryKey||e.label,class:"border-b border-(--color-border-subtle) last:border-b-0 hover:bg-(--color-surface-sunken) transition-colors"},[t("td",oe,[t("div",se,[e.logo&&typeof e.logo=="string"&&e.logo.startsWith("http")?(o(),s("img",{key:0,class:"w-4 h-4 object-contain",src:typeof e.logo=="object"?e.logo.dark||e.logo.light:e.logo,alt:""},null,8,ae)):e.logo?(o(),s("div",{key:1,class:"w-4 h-4 flex items-center [&>svg]:max-h-4 [&>svg]:max-w-4",innerHTML:typeof e.logo=="object"?e.logo.dark||e.logo.light:e.logo},null,8,le)):(o(),v(l,{key:2,name:"i-carbon-script",class:"text-xs text-(--color-text-subtle)"})),y(" "+r(e.label),1)])]),(o(),s(d,null,u(g,x=>t("td",{key:x.key,class:"px-3 py-2 text-center"},[n(b,{text:h(f(e,x.key))},{default:_(()=>[t("div",{class:w(["cap-dot mx-auto",`cap-dot-${f(e,x.key)}`])},null,2)]),_:2},1032,["text"])])),64))]))),128))])])])])):k("",!0)],64)):(o(),s("div",V,[t("div",B,[n(l,{name:"i-carbon-catalog",class:"text-2xl text-(--color-text-subtle)"})]),a[0]||(a[0]=t("p",{class:"text-sm font-medium text-(--color-text-muted)"}," No registry scripts available ",-1))]))])}}}),ie=S(ne,[["__scopeId","data-v-3f8fca8a"]]);export{ie as default};
@@ -1 +0,0 @@
1
- import{x as We,y as Ve,z as Ge,A,B as Be,C as me,D as fe,E as ge,G as R,H as oe,I as Je,J as _e,K as Xe,f as O,L,M as j,N as se,O as ae,P as Qe,Q as Ye,R as re,S as xe,o as n,g as P,w as x,T as $,h as o,U as J,q as Ze,V as et,W as $e,X as Ee,Y as Fe,Z as Te,$ as tt,a0 as M,a1 as U,a2 as he,a3 as Ae,a4 as Re,a5 as ot,b as S,a6 as De,a7 as Le,a8 as z,a9 as X,aa as ve,ab as Ne,ac as Ie,ad as Me,ae as Ue,af as st,ag as at,ah as rt,ai as nt,c as v,n as D,a as i,t as h,_ as H,j as Q,d as T,m as B,aj as lt,ak as it,al as ut,am as we,an as dt,ao as ne,ap as ct,aq as pt,ar as ke,F as E,as as le,at as ie,r as N,au as Y,av as ft,aw as ze,l as vt,ax as yt,ay as ue,az as W,aA as mt,aB as qe,aC as V,aD as gt,aE as Ce,aF as _t,aG as ht,aH as Z,aI as bt,i as xt,aJ as de,aK as wt}from"./D4HTNcLU.js";const kt=Ve(()=>{const e=A(new Map),a=A(),t=R(()=>{for(const y of e.value.values())if(y)return!0;return!1}),s=Ge({scrollBody:A(!0)}),p=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=a.value??"",a.value=void 0};return Be(t,(y,d)=>{if(!me)return;if(!y){d&&p();return}a.value===void 0&&(a.value=document.body.style.overflow);const u=window.innerWidth-document.documentElement.clientWidth,m={padding:u,margin:0},_=s.scrollBody?.value?typeof s.scrollBody.value=="object"?fe({padding:s.scrollBody.value.padding===!0?u:s.scrollBody.value.padding,margin:s.scrollBody.value.margin===!0?u:s.scrollBody.value.margin},m):m:{padding:0,margin:0};u>0&&(document.body.style.paddingRight=typeof _.padding=="number"?`${_.padding}px`:String(_.padding),document.body.style.marginRight=typeof _.margin=="number"?`${_.margin}px`:String(_.margin),document.documentElement.style.setProperty("--scrollbar-width",`${u}px`),document.body.style.overflow="hidden"),ge(()=>{t.value&&(document.body.style.pointerEvents="none",document.body.style.overflow="hidden")})},{immediate:!0,flush:"sync"}),e});function qt(e){const a=Math.random().toString(36).substring(2,7),t=kt();t.value.set(a,e);const s=R({get:()=>t.value.get(a)??!1,set:p=>t.value.set(a,p)});return We(()=>{t.value.delete(a)}),s}let ce=0;function Ct(){oe(e=>{if(!me)return;const a=document.querySelectorAll("[data-reka-focus-guard]");document.body.insertAdjacentElement("afterbegin",a[0]??Pe()),document.body.insertAdjacentElement("beforeend",a[1]??Pe()),ce++,e(()=>{ce===1&&document.querySelectorAll("[data-reka-focus-guard]").forEach(t=>t.remove()),ce--})})}function Pe(){const e=document.createElement("span");return e.setAttribute("data-reka-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Pt=function(e){if(typeof document>"u")return null;var a=Array.isArray(e)?e[0]:e;return a.ownerDocument.body},G=new WeakMap,ee=new WeakMap,te={},pe=0,je=function(e){return e&&(e.host||je(e.parentNode))},St=function(e,a){return a.map(function(t){if(e.contains(t))return t;var s=je(t);return s&&e.contains(s)?s:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)}).filter(function(t){return!!t})},Ot=function(e,a,t,s){var p=St(a,Array.isArray(e)?e:[e]);te[t]||(te[t]=new WeakMap);var y=te[t],d=[],u=new Set,m=new Set(p),_=function(f){!f||u.has(f)||(u.add(f),_(f.parentNode))};p.forEach(_);var g=function(f){!f||m.has(f)||Array.prototype.forEach.call(f.children,function(w){if(u.has(w))g(w);else try{var C=w.getAttribute(s),b=C!==null&&C!=="false",l=(G.get(w)||0)+1,c=(y.get(w)||0)+1;G.set(w,l),y.set(w,c),d.push(w),l===1&&b&&ee.set(w,!0),c===1&&w.setAttribute(t,"true"),b||w.setAttribute(s,"true")}catch(r){console.error("aria-hidden: cannot operate on ",w,r)}})};return g(a),u.clear(),pe++,function(){d.forEach(function(f){var w=G.get(f)-1,C=y.get(f)-1;G.set(f,w),y.set(f,C),w||(ee.has(f)||f.removeAttribute(s),ee.delete(f)),C||f.removeAttribute(t)}),pe--,pe||(G=new WeakMap,G=new WeakMap,ee=new WeakMap,te={})}},Bt=function(e,a,t){t===void 0&&(t="data-aria-hidden");var s=Array.from(Array.isArray(e)?e:[e]),p=Pt(e);return p?(s.push.apply(s,Array.from(p.querySelectorAll("[aria-live], script"))),Ot(s,p,t,"aria-hidden")):function(){return null}};function $t(e){let a;Be(()=>Je(e),t=>{let s=!1;try{s=!!t?.closest("[popover]:not(:popover-open)")}catch{}t&&!s?a=Bt(t):a&&a()}),_e(()=>{a&&a()})}const Et=Xe(()=>A([]));function Ft(){const e=Et();return{add(a){const t=e.value[0];a!==t&&t?.pause(),e.value=Se(e.value,a),e.value.unshift(a)},remove(a){e.value=Se(e.value,a),e.value[0]?.resume()}}}function Se(e,a){const t=[...e],s=t.indexOf(a);return s!==-1&&t.splice(s,1),t}var Tt=O({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(e,{emit:a}){const t=e,s=a,{currentRef:p,currentElement:y}=L(),d=A(null),u=Ft(),m=Ze({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});oe(g=>{if(!me)return;const f=y.value;if(!t.trapped)return;function w(c){if(m.paused||!f)return;const r=c.target;f.contains(r)?d.value=r:j(d.value,{select:!0})}function C(c){if(m.paused||!f)return;const r=c.relatedTarget;r!==null&&(f.contains(r)||j(d.value,{select:!0}))}function b(c){const r=d.value;if(r===null||!c.some(k=>k.removedNodes.length>0))return;f.contains(r)||j(f)}document.addEventListener("focusin",w),document.addEventListener("focusout",C);const l=new MutationObserver(b);f&&l.observe(f,{childList:!0,subtree:!0}),g(()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",C),l.disconnect()})}),oe(async g=>{const f=y.value;if(await ge(),!f)return;u.add(m);const w=se();if(!f.contains(w)){const b=new CustomEvent(ae,xe);f.addEventListener(ae,l=>s("mountAutoFocus",l)),f.dispatchEvent(b),b.defaultPrevented||(Qe(Ye(f),{select:!0}),se()===w&&j(f))}g(()=>{f.removeEventListener(ae,c=>s("mountAutoFocus",c));const b=new CustomEvent(re,xe),l=c=>{s("unmountAutoFocus",c)};f.addEventListener(re,l),f.dispatchEvent(b),setTimeout(()=>{b.defaultPrevented||j(w??document.body,{select:!0}),f.removeEventListener(re,l),u.remove(m)},0)})});function _(g){if(!t.loop&&!t.trapped||m.paused)return;const f=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,w=se();if(f&&w){const C=g.currentTarget,[b,l]=et(C);b&&l?!g.shiftKey&&w===l?(g.preventDefault(),t.loop&&j(b,{select:!0})):g.shiftKey&&w===b&&(g.preventDefault(),t.loop&&j(l,{select:!0})):w===C&&g.preventDefault()}}return(g,f)=>(n(),P(o(J),{ref_key:"currentRef",ref:p,tabindex:"-1","as-child":g.asChild,as:g.as,onKeydown:_},{default:x(()=>[$(g.$slots,"default")]),_:3},8,["as-child","as"]))}}),At=Tt;const[K,Rt]=Te("PopoverRoot");var Dt=O({__name:"PopoverRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:["update:open"],setup(e,{emit:a}){const t=e,s=a,{modal:p}=$e(t),y=Ee(t,"open",s,{defaultValue:t.defaultOpen,passive:t.open===void 0}),d=A(),u=A(!1);return Rt({contentId:"",triggerId:"",modal:p,open:y,onOpenChange:m=>{y.value=m},onOpenToggle:()=>{y.value=!y.value},triggerElement:d,hasCustomAnchor:u}),(m,_)=>(n(),P(o(Fe),null,{default:x(()=>[$(m.$slots,"default",{open:o(y),close:()=>y.value=!1})]),_:3}))}}),Lt=Dt,Nt=O({__name:"PopoverAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const a=e;L();const t=K();return tt(()=>{t.hasCustomAnchor.value=!0}),_e(()=>{t.hasCustomAnchor.value=!1}),(s,p)=>(n(),P(o(he),M(U(a)),{default:x(()=>[$(s.$slots,"default")]),_:3},16))}}),It=Nt,Mt=O({__name:"PopoverArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const a=e;return L(),(t,s)=>(n(),P(o(Ae),M(U(a)),{default:x(()=>[$(t.$slots,"default")]),_:3},16))}}),Ut=Mt,zt=O({__name:"PopoverClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const a=e;L();const t=K();return(s,p)=>(n(),P(o(J),{type:s.as==="button"?"button":void 0,as:s.as,"as-child":a.asChild,onClick:p[0]||(p[0]=y=>o(t).onOpenChange(!1))},{default:x(()=>[$(s.$slots,"default")]),_:3},8,["type","as","as-child"]))}}),jt=zt,Ht=O({__name:"PopoverContentImpl",props:{trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(e,{emit:a}){const t=e,s=a,p=Re(ot(t,"trapFocus","disableOutsidePointerEvents")),{forwardRef:y}=L(),d=K();return Ct(),(u,m)=>(n(),P(o(At),{"as-child":"",loop:"",trapped:u.trapFocus,onMountAutoFocus:m[5]||(m[5]=_=>s("openAutoFocus",_)),onUnmountAutoFocus:m[6]||(m[6]=_=>s("closeAutoFocus",_))},{default:x(()=>[S(o(De),{"as-child":"","disable-outside-pointer-events":u.disableOutsidePointerEvents,onPointerDownOutside:m[0]||(m[0]=_=>s("pointerDownOutside",_)),onInteractOutside:m[1]||(m[1]=_=>s("interactOutside",_)),onEscapeKeyDown:m[2]||(m[2]=_=>s("escapeKeyDown",_)),onFocusOutside:m[3]||(m[3]=_=>s("focusOutside",_)),onDismiss:m[4]||(m[4]=_=>o(d).onOpenChange(!1))},{default:x(()=>[S(o(Le),z(o(p),{id:o(d).contentId,ref:o(y),"data-state":o(d).open.value?"open":"closed","aria-labelledby":o(d).triggerId,style:{"--reka-popover-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-popover-content-available-width":"var(--reka-popper-available-width)","--reka-popover-content-available-height":"var(--reka-popper-available-height)","--reka-popover-trigger-width":"var(--reka-popper-anchor-width)","--reka-popover-trigger-height":"var(--reka-popper-anchor-height)"},role:"dialog"}),{default:x(()=>[$(u.$slots,"default")]),_:3},16,["id","data-state","aria-labelledby"])]),_:3},8,["disable-outside-pointer-events"])]),_:3},8,["trapped"]))}}),He=Ht,Kt=O({__name:"PopoverContentModal",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(e,{emit:a}){const t=e,s=a,p=K(),y=A(!1);qt(!0);const d=X(t,s),{forwardRef:u,currentElement:m}=L();return $t(m),(_,g)=>(n(),P(He,z(o(d),{ref:o(u),"trap-focus":o(p).open.value,"disable-outside-pointer-events":"",onCloseAutoFocus:g[0]||(g[0]=ve(f=>{s("closeAutoFocus",f),y.value||o(p).triggerElement.value?.focus()},["prevent"])),onPointerDownOutside:g[1]||(g[1]=f=>{s("pointerDownOutside",f);const w=f.detail.originalEvent,C=w.button===0&&w.ctrlKey===!0,b=w.button===2||C;y.value=b}),onFocusOutside:g[2]||(g[2]=ve(()=>{},["prevent"]))}),{default:x(()=>[$(_.$slots,"default")]),_:3},16,["trap-focus"]))}}),Wt=Kt,Vt=O({__name:"PopoverContentNonModal",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(e,{emit:a}){const t=e,s=a,p=K(),y=A(!1),d=A(!1),u=X(t,s);return(m,_)=>(n(),P(He,z(o(u),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:_[0]||(_[0]=g=>{s("closeAutoFocus",g),g.defaultPrevented||(y.value||o(p).triggerElement.value?.focus(),g.preventDefault()),y.value=!1,d.value=!1}),onInteractOutside:_[1]||(_[1]=async g=>{s("interactOutside",g),g.defaultPrevented||(y.value=!0,g.detail.originalEvent.type==="pointerdown"&&(d.value=!0));const f=g.target;o(p).triggerElement.value?.contains(f)&&g.preventDefault(),g.detail.originalEvent.type==="focusin"&&d.value&&g.preventDefault()})}),{default:x(()=>[$(m.$slots,"default")]),_:3},16))}}),Gt=Vt,Jt=O({__name:"PopoverContent",props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(e,{emit:a}){const t=e,s=a,p=K(),y=X(t,s),{forwardRef:d}=L();return p.contentId||=Ne(void 0,"reka-popover-content"),(u,m)=>(n(),P(o(Ie),{present:u.forceMount||o(p).open.value},{default:x(()=>[o(p).modal.value?(n(),P(Wt,z({key:0},o(y),{ref:o(d)}),{default:x(()=>[$(u.$slots,"default")]),_:3},16)):(n(),P(Gt,z({key:1},o(y),{ref:o(d)}),{default:x(()=>[$(u.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Xt=Jt,Qt=O({__name:"PopoverPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const a=e;return(t,s)=>(n(),P(o(Me),M(U(a)),{default:x(()=>[$(t.$slots,"default")]),_:3},16))}}),Yt=Qt,Zt=O({__name:"PopoverTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const a=e,t=K(),{forwardRef:s,currentElement:p}=L();return t.triggerId||=Ne(void 0,"reka-popover-trigger"),Ue(()=>{t.triggerElement.value=p.value}),(y,d)=>(n(),P(st(o(t).hasCustomAnchor.value?o(J):o(he)),{"as-child":""},{default:x(()=>[S(o(J),{id:o(t).triggerId,ref:o(s),type:y.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":o(t).open.value,"aria-controls":o(t).contentId,"data-state":o(t).open.value?"open":"closed",as:y.as,"as-child":a.asChild,onClick:o(t).onOpenToggle},{default:x(()=>[$(y.$slots,"default")]),_:3},8,["id","type","aria-expanded","aria-controls","data-state","as","as-child","onClick"])]),_:3}))}}),eo=Zt,to=O({__name:"HoverCardArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(e){const a=e;return L(),(t,s)=>(n(),P(o(Ae),M(U(a)),{default:x(()=>[$(t.$slots,"default")]),_:3},16))}}),oo=to;const[be,so]=Te("HoverCardRoot");var ao=O({__name:"HoverCardRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},openDelay:{type:Number,required:!1,default:700},closeDelay:{type:Number,required:!1,default:300}},emits:["update:open"],setup(e,{emit:a}){const t=e,s=a,{openDelay:p,closeDelay:y}=$e(t);L();const d=Ee(t,"open",s,{defaultValue:t.defaultOpen,passive:t.open===void 0}),u=A(0),m=A(0),_=A(!1),g=A(!1),f=A(!1),w=A();function C(){clearTimeout(m.value),u.value=window.setTimeout(()=>d.value=!0,p.value)}function b(){clearTimeout(u.value),!_.value&&!g.value&&(m.value=window.setTimeout(()=>d.value=!1,y.value))}function l(){d.value=!1}return so({open:d,onOpenChange(c){d.value=c},onOpen:C,onClose:b,onDismiss:l,hasSelectionRef:_,isPointerDownOnContentRef:g,isPointerInTransitRef:f,triggerElement:w}),(c,r)=>(n(),P(o(Fe),null,{default:x(()=>[$(c.$slots,"default",{open:o(d)})]),_:3}))}}),ro=ao;function ye(e){return a=>a.pointerType==="touch"?void 0:e()}function no(e){const a=[],t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();)a.push(t.currentNode);return a}var lo=O({__name:"HoverCardContentImpl",props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(e,{emit:a}){const t=e,s=a,p=Re(t),{forwardRef:y,currentElement:d}=L(),u=be(),{isPointerInTransit:m,onPointerExit:_}=at(u.triggerElement,d);rt(u.isPointerInTransitRef,m,{direction:"rtl"}),_(()=>{u.onClose()});const g=A(!1);let f;oe(C=>{if(g.value){const b=document.body;f=b.style.userSelect||b.style.webkitUserSelect,b.style.userSelect="none",b.style.webkitUserSelect="none",C(()=>{b.style.userSelect=f,b.style.webkitUserSelect=f})}});function w(){g.value=!1,u.isPointerDownOnContentRef.value=!1,ge(()=>{document.getSelection()?.toString()!==""&&(u.hasSelectionRef.value=!0)})}return Ue(()=>{d.value&&(document.addEventListener("pointerup",w),no(d.value).forEach(b=>b.setAttribute("tabindex","-1"))),nt(window,"scroll",C=>{C.target?.contains(u.triggerElement.value)&&u.onDismiss()},{capture:!0})}),_e(()=>{document.removeEventListener("pointerup",w),u.hasSelectionRef.value=!1,u.isPointerDownOnContentRef.value=!1}),(C,b)=>(n(),P(o(De),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:b[1]||(b[1]=l=>s("escapeKeyDown",l)),onPointerDownOutside:b[2]||(b[2]=l=>s("pointerDownOutside",l)),onFocusOutside:b[3]||(b[3]=ve(l=>s("focusOutside",l),["prevent"])),onDismiss:o(u).onDismiss},{default:x(()=>[S(o(Le),z({...o(p),...C.$attrs},{ref:o(y),"data-state":o(u).open.value?"open":"closed",style:{userSelect:g.value?"text":void 0,WebkitUserSelect:g.value?"text":void 0,"--reka-hover-card-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-hover-card-content-available-width":"var(--reka-popper-available-width)","--reka-hover-card-content-available-height":"var(--reka-popper-available-height)","--reka-hover-card-trigger-width":"var(--reka-popper-anchor-width)","--reka-hover-card-trigger-height":"var(--reka-popper-anchor-height)"},onPointerdown:b[0]||(b[0]=l=>{l.currentTarget.contains(l.target)&&(g.value=!0),o(u).hasSelectionRef.value=!1,o(u).isPointerDownOnContentRef.value=!0})}),{default:x(()=>[$(C.$slots,"default")]),_:3},16,["data-state","style"])]),_:3},8,["onDismiss"]))}}),io=lo,uo=O({__name:"HoverCardContent",props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(e,{emit:a}){const p=X(e,a),{forwardRef:y}=L(),d=be();return(u,m)=>(n(),P(o(Ie),{present:u.forceMount||o(d).open.value},{default:x(()=>[S(io,z(o(p),{ref:o(y),onPointerenter:m[0]||(m[0]=_=>o(ye)(o(d).onOpen)(_))}),{default:x(()=>[$(u.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),co=uo,po=O({__name:"HoverCardPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){const a=e;return(t,s)=>(n(),P(o(Me),M(U(a)),{default:x(()=>[$(t.$slots,"default")]),_:3},16))}}),fo=po,vo=O({__name:"HoverCardTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"a"}},setup(e){const{forwardRef:a,currentElement:t}=L(),s=be();s.triggerElement=t;function p(){setTimeout(()=>{!s.isPointerInTransitRef.value&&!s.open.value&&s.onClose()},0)}return(y,d)=>(n(),P(o(he),{"as-child":"",reference:y.reference},{default:x(()=>[S(o(J),{ref:o(a),"as-child":y.asChild,as:y.as,"data-state":o(s).open.value?"open":"closed","data-grace-area-trigger":"",onPointerenter:d[0]||(d[0]=u=>o(ye)(o(s).onOpen)(u)),onPointerleave:d[1]||(d[1]=u=>o(ye)(p)(u)),onFocus:d[2]||(d[2]=u=>o(s).onOpen()),onBlur:d[3]||(d[3]=u=>o(s).onClose())},{default:x(()=>[$(y.$slots,"default")]),_:3},8,["as-child","as","data-state"])]),_:3},8,["reference"]))}}),yo=vo;const mo={class:"capitalize"},go=O({__name:"ScriptStatus",props:{status:{},error:{}},setup(e){const a=R(()=>e.error?e.error==="TypeError: Failed to fetch"?"CORS Error":e.error:e.status||"unknown"),t=R(()=>{if(e.error||e.status==="error")return"status-error";switch(e.status){case"loaded":return"status-loaded";case"loading":return"status-loading";case"awaitingLoad":return"status-awaiting";case"validation-failed":return"status-validation";default:return"status-unknown"}});return(s,p)=>(n(),v("div",{class:D(["script-status",o(t)])},[p[0]||(p[0]=i("span",{class:"script-status-dot"},null,-1)),i("span",mo,h(o(a)),1)],2))}}),_o=Object.assign(H(go,[["__scopeId","data-v-5cf865ba"]]),{__name:"ScriptStatus"}),ho={key:0,class:"script-metric"},bo=O({__name:"ScriptSize",props:{size:{}},setup(e){return(a,t)=>{const s=Q;return e.size?(n(),v("span",ho,[S(s,{name:"i-carbon-meter",class:"text-[10px] opacity-50"}),T(" "+h(e.size),1)])):B("",!0)}}}),xo=Object.assign(H(bo,[["__scopeId","data-v-b147450b"]]),{__name:"ScriptSize"}),wo={key:0,class:"script-metric"},ko=O({__name:"ScriptLoadTime",props:{loadTime:{}},setup(e){return(a,t)=>{const s=Q;return e.loadTime?(n(),v("span",wo,[S(s,{name:"i-carbon-timer",class:"text-[10px] opacity-50"}),T(" "+h(e.loadTime),1)])):B("",!0)}}}),qo=Object.assign(H(ko,[["__scopeId","data-v-c6837c50"]]),{__name:"ScriptLoadTime"}),Co={Root:ro,Trigger:yo,Portal:fo,Content:co,Arrow:oo},Po={Root:Lt,Trigger:eo,Portal:Yt,Content:Xt,Arrow:Ut,Close:jt,Anchor:It};function So(e,a={}){const t=e.detail.originalEvent,s=t.target;if(!s?.isConnected){e.preventDefault();return}a.scrollable&&(t.offsetX>s.clientWidth||t.offsetY>s.clientHeight)&&e.preventDefault()}const Oo={slots:{content:"bg-default shadow-lg rounded-md ring ring-default data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-popover-content-transform-origin) focus:outline-none pointer-events-auto",arrow:"fill-bg stroke-default"}},Bo={__name:"UPopover",props:{mode:{type:null,required:!1,default:"click"},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:null,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},modal:{type:Boolean,required:!1},openDelay:{type:Number,required:!1,default:0},closeDelay:{type:Number,required:!1,default:0}},emits:["close:prevent","update:open"],setup(e,{emit:a}){const t=e,s=a,p=lt(),y=it(),d=ut("popover",t),u=t.mode==="hover"?we(t,"defaultOpen","open","openDelay","closeDelay"):we(t,"defaultOpen","open","modal"),m=X(u,s),_=dt(ne(()=>t.portal)),g=ne(()=>fe(t.content,{side:"bottom",sideOffset:8,collisionPadding:8})),f=R(()=>t.dismissible?{pointerDownOutside:So}:["interactOutside","escapeKeyDown"].reduce((c,r)=>(c[r]=q=>{q.preventDefault(),s("close:prevent")},c),{})),w=ne(()=>fe(t.arrow,{rounded:!0})),C=R(()=>ke({extend:ke(Oo),...y.ui?.popover||{}})({side:g.value.side})),b=R(()=>t.mode==="hover"?Co:Po);return(l,c)=>(n(),P(o(b).Root,M(U(o(m))),{default:x(({open:r,close:q})=>[p.default||e.reference?(n(),P(o(b).Trigger,{key:0,"as-child":"",reference:e.reference,class:D(t.class)},{default:x(()=>[$(l.$slots,"default",{open:r})]),_:2},1032,["reference","class"])):B("",!0),"Anchor"in b.value&&p.anchor?(n(),P(o(b).Anchor,{key:1,"as-child":""},{default:x(()=>[$(l.$slots,"anchor",M(U(q?{close:q}:{})))]),_:2},1024)):B("",!0),S(o(b).Portal,M(U(o(_))),{default:x(()=>[S(o(ct),null,{default:x(()=>[S(o(b).Content,z(g.value,{"data-slot":"content",class:C.value.content({class:[!p.default&&t.class,o(d)?.content]})},pt(f.value)),{default:x(()=>[$(l.$slots,"content",M(U(q?{close:q}:{}))),e.arrow?(n(),P(o(b).Arrow,z({key:0},w.value,{"data-slot":"arrow",class:C.value.arrow({class:o(d)?.arrow})}),null,16,["class"])):B("",!0)]),_:2},1040,["class"])]),_:2},1024)]),_:2},1040)]),_:3},16))}},$o={key:0,class:"inline-flex items-center gap-1"},Eo={class:"ui-tooltip-panel"},Fo={class:"font-semibold"},To={key:0,class:"text-(--color-text-muted) text-xs"},Ao={class:"ui-tooltip-panel"},Ro={class:"font-semibold"},Do={key:0,class:"text-(--color-text-muted) text-xs"},Oe={xs:"max-w-[80px]",sm:"max-w-[160px]",md:"max-w-[250px]",lg:"max-w-[440px]",xl:"max-w-[640px]"},Lo=O({__name:"UiTooltip",props:{text:{},title:{},description:{},label:{},size:{},iconSize:{},side:{default:"top"}},setup(e){const a=R(()=>({side:e.side}));return(t,s)=>{const p=Q,y=Bo;return e.label?(n(),v("span",$o,[i("span",null,h(e.label),1),S(y,{"data-ui":"UiTooltip",mode:"hover",role:"tooltip",content:o(a),class:"inline-flex"},{content:x(()=>[i("div",Eo,[i("div",{class:D(`w-max ${Oe[e.size||"md"]}`)},[e.title?(n(),v(E,{key:0},[i("div",Fo,h(e.title),1),e.description?(n(),v("div",To,h(e.description),1)):B("",!0)],64)):(n(),v(E,{key:1},[T(h(e.text),1)],64))],2)])]),default:x(()=>[S(p,{name:"i-carbon-help",class:"size-3 text-(--color-text-subtle) hover:text-(--color-text-muted) transition-colors"})]),_:1},8,["content"])])):(n(),P(y,{key:1,"data-ui":"UiTooltip",mode:"hover",role:"tooltip",content:o(a),class:D(t.$slots.default?"inline-block":"inline-flex")},{content:x(()=>[i("div",Ao,[i("div",{class:D(`w-max ${Oe[e.size||"md"]}`)},[t.$slots.text?$(t.$slots,"text",{key:0},void 0,!0):e.title?(n(),v(E,{key:1},[i("div",Ro,h(e.title),1),e.description?(n(),v("div",Do,h(e.description),1)):B("",!0)],64)):(n(),v(E,{key:2},[T(h(e.text),1)],64))],2)])]),default:x(()=>[t.$slots.default?$(t.$slots,"default",{key:0},void 0,!0):(n(),P(p,{key:1,name:"i-carbon-help",color:"primary",size:e.iconSize||"md"},null,8,["size"]))]),_:3},8,["content","class"]))}}}),No=Object.assign(H(Lo,[["__scopeId","data-v-16948115"]]),{__name:"UiTooltip"}),Io={key:0,class:"panel-grids flex flex-col items-center justify-center py-8 gap-1.5 rounded-b-xl"},Mo={key:1,class:"waterfall-container"},Uo={class:"waterfall-stats"},zo={class:"waterfall-stat"},jo={class:"waterfall-stat-value"},Ho={class:"waterfall-stat"},Ko={class:"waterfall-stat-value"},Wo={class:"waterfall-stat"},Vo={class:"waterfall-stat-value"},Go={class:"waterfall-proxied-badge"},Jo={class:"waterfall-stat-value"},Xo={class:"text-xs space-y-1 max-w-60"},Qo={class:"opacity-70"},Yo={class:"px-1 py-px rounded bg-white/10 text-[10px]"},Zo={key:0,class:"opacity-70"},es={class:"flex items-center gap-1"},ts={class:"text-xs space-y-0.5"},os={class:"font-mono font-semibold"},ss={class:"opacity-70"},as={key:0,class:"opacity-60"},rs={key:1,class:"text-emerald-400"},ns={class:"waterfall-table"},ls={class:"waterfall-legend"},is={class:"waterfall-rows"},us={class:"waterfall-url"},ds={class:"waterfall-bar-track"},cs={class:"waterfall-duration"},ps={class:"text-xs space-y-1.5 max-w-80"},fs={class:"font-mono text-[11px] break-all opacity-90"},vs={class:"flex items-center gap-2 opacity-70"},ys={class:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5"},ms={class:"flex items-center gap-1 opacity-60"},gs={class:"tabular-nums text-right"},_s={key:0,class:"flex items-center gap-1 text-emerald-400"},hs=O({__name:"NetworkWaterfall",props:{requests:{},domains:{default:()=>[]},proxyRoutes:{default:()=>[]},privacyLevel:{},proxyPrefix:{},isFirstParty:{type:Boolean,default:!1}},setup(e){const a=[{key:"dns",label:"DNS",color:"oklch(70% 0.15 165)"},{key:"connect",label:"Connect",color:"oklch(72% 0.14 75)"},{key:"ssl",label:"SSL",color:"oklch(65% 0.15 300)"},{key:"ttfb",label:"TTFB",color:"oklch(65% 0.13 250)"},{key:"download",label:"Download",color:"oklch(72% 0.12 200)"}],t=R(()=>[...e.requests].sort((c,r)=>c.startTime-r.startTime)),s=R(()=>{if(!t.value.length)return{min:0,max:1};const c=t.value[0].startTime,r=Math.max(...t.value.map(q=>q.startTime+q.duration));return{min:c,max:r||c+1}}),p=R(()=>e.requests.reduce((c,r)=>c+r.transferSize,0)),y=R(()=>s.value.max-s.value.min),d=R(()=>e.requests.filter(c=>c.isProxied).length),u=R(()=>{const c=new Map;for(const r of e.requests){const q=_(r.url),F=c.get(q)||{count:0,transfer:0,proxied:!1};F.count++,F.transfer+=r.transferSize,r.isProxied&&(F.proxied=!0),c.set(q,F)}return[...c.entries()].sort((r,q)=>q[1].transfer-r[1].transfer).map(([r,q])=>({domain:r,...q,isKnown:e.domains.includes(r),proxyRoute:e.proxyRoutes.find(F=>F.target.includes(r))}))}),m=/\/_scripts\/p\/([^/]+)/;function _(c){try{return new URL(c).hostname}catch{return c.match(m)?.[1]||"localhost"}}function g(c){const{min:r,max:q}=s.value,F=q-r;return{left:`${(c.startTime-r)/F*100}%`,width:`${Math.max(c.duration/F*100,.5)}%`}}function f(c,r){if(c.duration===0)return"0%";const q=c[r.key];return`${Math.max(q/c.duration*100,q>0?2:0)}%`}function w(c){try{const r=new URL(c),q=(r.pathname+r.search).replace("/_scripts","");return q.length>100?`${q.slice(0,97)}...`:q}catch{return c.length>100?`${c.slice(0,97)}...`:c}}function C(c){return{script:"Script",xmlhttprequest:"XHR",fetch:"Fetch",img:"Image",css:"Stylesheet",beacon:"Beacon"}[c]||c}function b(c){return{script:"i-carbon-code",xmlhttprequest:"i-carbon-send-alt",fetch:"i-carbon-send-alt",img:"i-carbon-image",css:"i-carbon-paint-brush",beacon:"i-carbon-satellite-radar"}[c]||"i-carbon-document"}function l(c){return c.transferSize===0&&c.decodedBodySize>0?304:200}return(c,r)=>{const q=Q,F=No;return e.requests.length?(n(),v("div",Mo,[i("div",Uo,[i("span",zo,[i("span",jo,h(e.requests.length),1),r[1]||(r[1]=i("span",{class:"waterfall-stat-label"},"req",-1))]),r[7]||(r[7]=i("span",{class:"waterfall-sep"},null,-1)),i("span",Ho,[i("span",Ko,h(o(le)(o(p))),1)]),r[8]||(r[8]=i("span",{class:"waterfall-sep"},null,-1)),i("span",Wo,[i("span",Vo,h(o(ie)(Math.round(o(y)))),1)]),e.isFirstParty&&o(d)>0?(n(),v(E,{key:0},[r[5]||(r[5]=i("span",{class:"waterfall-sep"},null,-1)),S(F,null,{content:x(()=>[i("div",Xo,[r[4]||(r[4]=i("div",{class:"font-semibold"}," First-Party Proxy ",-1)),i("div",Qo,[T(h(o(d))+" request"+h(o(d)!==1?"s":"")+" routed through ",1),i("code",Yo,h(e.proxyPrefix||"/_scripts/p"),1)]),e.privacyLevel?(n(),v("div",Zo,[r[3]||(r[3]=T(" Privacy: ",-1)),i("span",{class:D(e.privacyLevel==="full"?"text-emerald-400":e.privacyLevel==="partial"?"text-amber-400":"")},h(e.privacyLevel),3)])):B("",!0)])]),default:x(()=>[i("span",Go,[S(q,{name:"i-carbon-security",class:"text-[10px]"}),i("span",Jo,h(o(d))+"/"+h(e.requests.length),1),r[2]||(r[2]=T(" proxied ",-1))])]),_:1})],64)):B("",!0),o(u).length>1?(n(),v(E,{key:1},[r[6]||(r[6]=i("span",{class:"waterfall-sep"},null,-1)),i("div",es,[(n(!0),v(E,null,N(o(u),k=>(n(),P(F,{key:k.domain},{content:x(()=>[i("div",ts,[i("div",os,h(k.domain),1),i("div",ss,h(k.count)+" req · "+h(o(le)(k.transfer)),1),k.proxyRoute?(n(),v("div",as,h(k.proxyRoute.target)+" → "+h(k.proxyRoute.local),1)):B("",!0),k.proxied?(n(),v("div",rs," Proxied through first-party ")):B("",!0)])]),default:x(()=>[i("span",{class:D(["domain-pill",k.proxied?"domain-pill-proxied":""])},[k.proxied?(n(),P(q,{key:0,name:"i-carbon-security",class:"text-[8px]"})):B("",!0),T(" "+h(k.domain),1)],2)]),_:2},1024))),128))])],64)):B("",!0)]),i("div",ns,[i("div",ls,[(n(),v(E,null,N(a,k=>i("div",{key:k.key,class:"waterfall-legend-item"},[i("span",{class:"waterfall-legend-dot",style:Y({background:k.color})},null,4),T(" "+h(k.label),1)])),64))]),i("div",is,[(n(!0),v(E,null,N(o(t),(k,Ke)=>(n(),P(F,{key:Ke},{content:x(()=>[i("div",ps,[i("div",fs,h(k.url),1),i("div",vs,[i("span",null,h(C(k.initiatorType)),1),r[10]||(r[10]=i("span",{class:"opacity-30"},"·",-1)),i("span",null,h(o(ie)(Math.round(k.duration))),1),k.transferSize>0?(n(),v(E,{key:0},[r[9]||(r[9]=i("span",{class:"opacity-30"},"·",-1)),i("span",null,h(o(le)(k.transferSize)),1)],64)):B("",!0)]),i("div",ys,[(n(),v(E,null,N(a,I=>(n(),v(E,{key:I.key},[k[I.key]>.1?(n(),v(E,{key:0},[i("div",ms,[i("span",{class:"w-1.5 h-1.5 rounded-sm inline-block",style:Y({background:I.color})},null,4),T(" "+h(I.label),1)]),i("div",gs,h(k[I.key].toFixed(1))+"ms ",1)],64)):B("",!0)],64))),64))]),k.isProxied?(n(),v("div",_s,[S(q,{name:"i-carbon-security",class:"text-[10px]"}),r[11]||(r[11]=T(" Proxied through first-party ",-1))])):B("",!0)])]),default:x(()=>[i("div",{class:D(["waterfall-row",k.isProxied?"waterfall-row-proxied":""])},[i("div",{class:D(["waterfall-status",l(k)===304?"waterfall-status-304":"waterfall-status-200"])},h(l(k)),3),S(q,{name:k.isProxied?"i-carbon-security":b(k.initiatorType),class:D(["waterfall-row-icon",k.isProxied?"waterfall-row-icon-proxied":""])},null,8,["name","class"]),i("div",us,h(w(k.url)),1),i("div",ds,[i("div",{class:"waterfall-bar",style:Y(g(k))},[(n(),v(E,null,N(a,I=>i("div",{key:I.key,style:Y({width:f(k,I),background:I.color}),class:"h-full"},null,4)),64))],4)]),i("div",cs,h(o(ie)(Math.round(k.duration))),1)],2)]),_:2},1024))),128))])])])):(n(),v("div",Io,[S(q,{name:"i-carbon-network-4",class:"text-xl text-(--color-text-subtle)"}),r[0]||(r[0]=i("p",{class:"text-xs text-(--color-text-subtle)"}," Requests appear as the script loads ",-1))]))}}}),bs=Object.assign(H(hs,[["__scopeId","data-v-d16c88db"]]),{__name:"NetworkWaterfall"});function xs(e=2e3){const{copy:a,copied:t}=ft({legacy:!0,copiedDuring:e});return{copy:a,copied:t}}const ws=O({__name:"DevtoolsCopyButton",props:{text:{}},setup(e){const{copy:a,copied:t}=xs();return(s,p)=>{const y=ze,d=vt;return n(),P(d,{text:o(t)?"Copied!":"Copy"},{default:x(()=>[S(y,{icon:o(t)?"carbon:checkmark":"carbon:copy","aria-label":o(t)?"Copied":"Copy to clipboard",class:D(o(t)?"text-[var(--seo-green)]":""),onClick:p[0]||(p[0]=u=>o(a)(e.text))},null,8,["icon","aria-label","class"])]),_:1},8,["text"])}}}),ks=Object.assign(ws,{__name:"DevtoolsCopyButton"}),qs=["innerHTML"],Cs=O({__name:"OCodeBlock",props:{code:{},lang:{},lines:{type:Boolean,default:!1},transformRendered:{type:Function}},setup(e){const a=yt(()=>e.code,e.lang),t=R(()=>e.transformRendered?e.transformRendered(a.value||""):a.value);return(s,p)=>(n(),v("pre",{class:D(["code-block p-5",e.lines?"code-block-lines":""]),innerHTML:o(t)},null,10,qs))}}),Ps=Object.assign(Cs,{__name:"OCodeBlock"}),Ss={class:"devtools-snippet"},Os={key:0,class:"devtools-snippet-header"},Bs={class:"devtools-snippet-label"},$s=O({__name:"DevtoolsSnippet",props:{label:{},code:{},lang:{default:"js"}},setup(e){return(a,t)=>{const s=ks,p=Ps;return n(),v("div",Ss,[e.label||a.$slots.header?(n(),v("div",Os,[$(a.$slots,"header",{},()=>[i("code",Bs,h(e.label),1)],!0),S(s,{text:e.code},null,8,["text"])])):B("",!0),S(p,{code:e.code,lang:e.lang,class:"devtools-snippet-block"},null,8,["code","lang"])])}}}),Es=Object.assign(H($s,[["__scopeId","data-v-265ccc31"]]),{__name:"DevtoolsSnippet"}),Fs={class:"py-1"},Ts={key:0,class:"panel-grids rounded-xl flex flex-col items-center justify-center py-16 gap-3"},As={class:"w-12 h-12 rounded-xl bg-(--color-surface-elevated) border border-(--color-border) flex items-center justify-center"},Rs={class:"filter-bar"},Ds=["onClick"],Ls={class:"filter-chip-count"},Ns={class:"stagger-children space-y-3"},Is={class:"px-4 py-3 flex items-center justify-between gap-3"},Ms={class:"flex items-center gap-2.5 min-w-0"},Us={class:"w-7 h-7 rounded-lg bg-(--color-surface-sunken) border border-(--color-border-subtle) flex items-center justify-center flex-shrink-0 overflow-hidden"},zs=["src"],js=["innerHTML"],Hs=["src"],Ks={class:"min-w-0"},Ws={class:"flex items-center gap-2"},Vs=["href","title"],Gs=["href"],Js={class:"px-4 pb-3 flex items-center gap-2 flex-wrap"},Xs={key:0,class:"status-enabled"},Qs={key:1,class:"inline-flex items-center gap-1 text-[11px] text-(--color-text-subtle) font-mono"},Ys={class:"border-t border-(--color-border-subtle)"},Zs={class:"flex items-center border-b border-(--color-border-subtle)"},ea=["onClick"],ta={key:0,class:"text-[9px] px-1 py-px rounded-full bg-(--color-surface-sunken) tabular-nums font-mono"},oa={key:0,class:"p-3"},sa={key:0,class:"text-xs text-(--color-text-subtle) py-2 text-center"},aa={key:1,class:"event-timeline"},ra={class:"event-time"},na={key:0,class:"flex items-center gap-2 min-w-0"},la={class:"text-[11px] text-(--color-text-subtle) truncate"},ia={key:1,class:"event-fn"},ua={key:1},da={key:2,class:"p-3"},ca=O({__name:"index",setup(e){const a=[{label:"Events",value:"events",icon:"i-carbon-list"},{label:"Network",value:"network",icon:"i-carbon-network-4"},{label:"API",value:"api",icon:"i-carbon-code"}],t=A("all"),s=R(()=>{const d=Object.values(ue.value||{}),u=d.filter(_=>V(_)!=="awaitingLoad").length,m=d.filter(_=>V(_)==="awaitingLoad").length;return{total:d.length,active:u,awaiting:m}}),p=R(()=>{const d=ue.value||{};return t.value==="all"?d:Object.fromEntries(Object.entries(d).filter(([,u])=>{const m=V(u);return t.value==="active"?m!=="awaitingLoad":m==="awaitingLoad"}))});function y(d){switch(d){case"loaded":return"status-badge-loaded";case"loading":return"status-badge-loading";case"awaitingLoad":return"status-badge-awaiting";case"removed":case"error":return"status-badge-error";case"validation-failed":return"status-badge-validation";default:return"status-badge-default"}}return(d,u)=>{const m=Q,_=ze,g=_o,f=xo,w=qo,C=bs,b=Es;return n(),v("div",Fs,[Object.keys(o(ue)||{}).length?(n(),v(E,{key:1},[i("div",Rs,[(n(!0),v(E,null,N([{key:"all",label:"All",count:o(s).total},{key:"active",label:"Active",count:o(s).active},{key:"awaiting",label:"Awaiting",count:o(s).awaiting}],l=>(n(),v("button",{key:l.key,class:D(["filter-chip",o(t)===l.key?"filter-chip-active":""]),onClick:c=>t.value=l.key},[T(h(l.label)+" ",1),i("span",Ls,h(l.count),1)],10,Ds))),128))]),i("div",Ns,[(n(!0),v(E,null,N(o(p),(l,c)=>(n(),v("div",{key:c,class:"card overflow-hidden"},[i("div",Is,[i("div",Ms,[i("div",Us,[o(W)(l)&&typeof o(W)(l)=="string"&&o(W)(l).startsWith("http")?(n(),v("img",{key:0,class:"w-5 h-5 object-contain",src:o(W)(l),alt:""},null,8,zs)):o(W)(l)?(n(),v("div",{key:1,class:"w-5 h-5 flex items-center [&>svg]:max-w-5 [&>svg]:max-h-5",innerHTML:o(W)(l)},null,8,js)):l.src&&!l.src.startsWith("/")?(n(),v("img",{key:2,src:`https://www.google.com/s2/favicons?domain=${o(mt)(l.src)}`,class:"w-4 h-4 rounded-sm",alt:""},null,8,Hs)):(n(),P(m,{key:3,name:"i-carbon-script",class:"text-sm text-(--color-text-subtle)"}))]),i("div",Ks,[i("div",Ws,[i("a",{href:l.src,target:"_blank",class:"text-sm font-semibold tracking-tight truncate link-external",title:l.src},h(l.registry?.label||l.key||l.src),9,Vs),l.docs?(n(),v("a",{key:0,href:l.docs,target:"_blank",class:"text-[10px] font-medium text-(--color-text-subtle) hover:text-(--color-text-muted) transition-colors"}," docs ",8,Gs)):B("",!0)])])]),o(qe)(l)&&o(V)(l)==="awaitingLoad"?(n(),P(_,{key:0,size:"xs",color:"primary",variant:"soft",icon:"i-carbon-play-filled-alt",onClick:r=>l.$script.load()},{default:x(()=>[...u[2]||(u[2]=[T(" Load ",-1)])]),_:1},8,["onClick"])):o(qe)(l)&&o(V)(l)==="loaded"?(n(),P(_,{key:1,size:"xs",color:"neutral",variant:"ghost",icon:"i-carbon-close",onClick:r=>l.$script.remove()},{default:x(()=>[...u[3]||(u[3]=[T(" Remove ",-1)])]),_:1},8,["onClick"])):B("",!0)]),i("div",Js,[S(g,{status:o(V)(l),error:o(gt)[l.src]},null,8,["status","error"]),o(Ce)(l.registryKey)?(n(),v("span",Xs,[S(m,{name:"i-carbon-security",class:"text-xs"}),u[4]||(u[4]=T(" First-Party ",-1))])):B("",!0),S(f,{size:o(_t)[l.src]},null,8,["size"]),S(w,{"load-time":l.loadTime},null,8,["load-time"]),l.loadedFrom&&l.loadedFrom!=="unknown"?(n(),v("span",Qs,[u[5]||(u[5]=i("svg",{xmlns:"http://www.w3.org/2000/svg",height:"10",viewBox:"0 0 256 221",class:"opacity-60"},[i("path",{fill:"#41B883",d:"M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0z"}),i("path",{fill:"#41B883",d:"m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0z"}),i("path",{fill:"#35495E",d:"M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0z"})],-1)),T(" "+h(l.loadedFrom),1)])):B("",!0),(n(!0),v(E,null,N(Object.keys(l.registryMeta||{}),r=>(n(),v("span",{key:r,class:"text-[11px] text-(--color-text-subtle) font-mono"},h(r)+": "+h(l.registryMeta[r]),1))),128))]),i("div",Ys,[i("div",Zs,[(n(),v(E,null,N(a,r=>i("button",{key:r.value,class:D(["sub-tab",o(Z)(l.src)===r.value?"sub-tab-active":""]),onClick:q=>o(ht)(l.src,r.value)},[S(m,{name:r.icon,class:"text-xs"},null,8,["name"]),T(" "+h(r.label)+" ",1),r.value==="network"&&l.networkRequests?.length?(n(),v("span",ta,h(l.networkRequests.length),1)):B("",!0)],10,ea)),64))]),o(Z)(l.src)==="events"?(n(),v("div",oa,[l.events?.length?(n(),v("div",aa,[(n(!0),v(E,null,N(l.events,(r,q)=>(n(),v("div",{key:q,class:"event-row"},[i("div",ra,h(o(bt)(r.at)),1),r.type==="status"?(n(),v(E,{key:0},[r.status==="validation-failed"?(n(),v("div",na,[i("span",{class:D(["event-badge",y(r.status)])},h(r.status),3),i("span",la,h(r.args.issues.map(F=>`${F.path?.map(k=>k.key).join(".")}: ${F.message}`).join(", ")),1)])):(n(),v("span",{key:1,class:D(["event-badge",y(r.status)])},h(r.status),3))],64)):r.type==="fn-call"?(n(),v("span",ia,[r.args?(n(),v(E,{key:0},[T(h(`${r.fn}(${r.args?.map(F=>JSON.stringify(F,null,2)).join(", ")||""})`),1)],64)):(n(),v(E,{key:1},[u[6]||(u[6]=i("span",{class:"opacity-40"},"QUEUED",-1)),T(" "+h(r.fn),1)],64))])):B("",!0)]))),128))])):(n(),v("div",sa," No events recorded "))])):o(Z)(l.src)==="network"?(n(),v("div",ua,[S(C,{requests:l.networkRequests||[],domains:o(de)(l.registryKey)?.domains,"proxy-routes":o(de)(l.registryKey)?.routes,"privacy-level":o(de)(l.registryKey)?.privacyLevel,"proxy-prefix":o(xt)?.proxyPrefix,"is-first-party":o(Ce)(l.registryKey)},null,8,["requests","domains","proxy-routes","privacy-level","proxy-prefix","is-first-party"])])):o(Z)(l.src)==="api"?(n(),v("div",da,[S(b,{code:o(wt)(l.$script?.instance),lang:"js"},null,8,["code"])])):B("",!0)])]))),128))])],64)):(n(),v("div",Ts,[i("div",As,[S(m,{name:"i-carbon-script",class:"text-2xl text-(--color-text-subtle)"})]),u[0]||(u[0]=i("p",{class:"text-sm font-medium text-(--color-text-muted)"}," No scripts loaded ",-1)),u[1]||(u[1]=i("p",{class:"text-xs text-(--color-text-subtle)"}," Scripts will appear here as they are registered ",-1))]))])}}}),fa=H(ca,[["__scopeId","data-v-1d33b8c9"]]);export{fa as default};
@@ -1 +0,0 @@
1
- import{f as A,o as r,c as o,h as d,i as p,a as t,b as c,j as C,d as m,k as R,t as a,F as u,r as x,g as S,w as I,n as v,l as z,m as b,p as D,v as T,q as K,_ as V}from"./D4HTNcLU.js";const $={class:"py-1"},B={key:0,class:"panel-grids rounded-xl flex flex-col items-center justify-center py-16 gap-4"},M={class:"w-14 h-14 rounded-2xl bg-(--color-surface-elevated) border border-(--color-border) flex items-center justify-center"},N={class:"hint-callout text-xs max-w-sm"},H={key:1,class:"stagger-children space-y-4"},U={class:"flex flex-wrap gap-2.5"},q={class:"stat-card"},E={class:"stat-value"},W={class:"stat-card"},Z={class:"stat-value"},G={class:"stat-card"},J={class:"stat-value"},O={class:"stat-card"},Q={class:"stat-value capitalize text-sm"},X={class:"flex items-center gap-2 text-xs text-(--color-text-subtle)"},Y={class:"px-1.5 py-0.5 rounded text-[11px] font-mono bg-(--color-surface-sunken) border border-(--color-border-subtle) text-(--color-text-muted)"},tt={class:"space-y-3"},et={class:"p-4"},st={class:"flex items-start justify-between gap-4"},rt={class:"flex items-center gap-2.5 min-w-0"},ot={class:"w-7 h-7 rounded-lg bg-(--color-surface-sunken) border border-(--color-border-subtle) flex items-center justify-center flex-shrink-0 overflow-hidden"},at=["innerHTML"],nt={class:"text-sm font-semibold tracking-tight"},lt={class:"ml-2 text-[10px] px-1.5 py-0.5 rounded-full bg-(--color-surface-sunken) text-(--color-text-subtle) font-medium"},it={class:"flex gap-0.5 flex-shrink-0"},ct={class:"flex items-center gap-1.5 mt-2.5 flex-wrap"},dt={key:0,class:"fp-badge fp-badge-info"},pt={key:1,class:"fp-badge fp-badge-warn"},ut={key:2,class:"fp-badge fp-badge-muted"},xt={key:0,class:"px-4 pb-3 flex items-center gap-1.5 flex-wrap"},bt={key:1,class:"border-t border-(--color-border-subtle)"},mt=["onClick"],vt={class:"flex items-center gap-1.5"},ft={key:0,class:"opacity-50"},yt={class:"border-t border-(--color-border-subtle)"},ht={style:{color:"oklch(55% 0.12 250)"},class:"min-w-0 truncate"},gt={class:"text-(--color-text-subtle) min-w-0 truncate"},_t={key:0,class:"border-t border-(--color-border-subtle) px-4 py-2"},kt={style:{color:"oklch(55% 0.12 300)"},class:"truncate"},wt={class:"text-(--color-text-subtle) truncate"},Pt={key:0,class:"card overflow-hidden"},Lt={class:"px-4 py-2.5 border-b border-(--color-border-subtle)"},Ft={class:"text-xs font-semibold uppercase tracking-wider text-(--color-text-subtle) flex items-center gap-1.5"},jt={class:"overflow-x-auto"},At={class:"w-full text-xs"},Ct={class:"border-b border-(--color-border-subtle)"},Rt={class:"px-4 py-2 font-medium whitespace-nowrap"},St={class:"px-2.5 py-2 text-center"},It=A({__name:"first-party",setup(zt){const y=["ip","userAgent","language","screen","timezone","hardware"],_={ip:"IP Address",userAgent:"User Agent",language:"Language",screen:"Screen",timezone:"Timezone",hardware:"Hardware"},k={ip:"IP",userAgent:"UA",language:"Lang",screen:"Screen",timezone:"TZ",hardware:"HW"},w={ip:"i-carbon-location",userAgent:"i-carbon-user-profile",language:"i-carbon-translate",screen:"i-carbon-screen",timezone:"i-carbon-time",hardware:"i-carbon-chip"},f=K({});function P(l){f[l]=!f[l]}function g(l){return l==="full"?"privacy-full":l==="partial"?"privacy-partial":"privacy-none"}function L(l){return l==="bundle-rewrite-intercept"?"mechanism-bundle":"mechanism-config"}function F(l){return l==="bundle-rewrite-intercept"?"Bundle + Rewrite":"Config Injection"}return(l,s)=>{const i=C,j=z;return r(),o("div",$,[d(p)?.enabled?(r(),o("div",H,[t("div",U,[s[7]||(s[7]=R('<div class="stat-card" data-v-97e4a274><div class="stat-label" data-v-97e4a274> Status </div><div class="flex items-center gap-1.5" data-v-97e4a274><span class="stat-dot stat-dot-active" data-v-97e4a274></span><span class="text-sm font-semibold" style="color:oklch(55% 0.18 145);" data-v-97e4a274>Active</span></div></div>',1)),t("div",q,[s[3]||(s[3]=t("div",{class:"stat-label"}," Scripts ",-1)),t("div",E,a(d(p).scripts.length),1)]),t("div",W,[s[4]||(s[4]=t("div",{class:"stat-label"}," Routes ",-1)),t("div",Z,a(d(p).totalRoutes),1)]),t("div",G,[s[5]||(s[5]=t("div",{class:"stat-label"}," Domains ",-1)),t("div",J,a(d(p).totalDomains),1)]),t("div",O,[s[6]||(s[6]=t("div",{class:"stat-label"}," Privacy ",-1)),t("div",Q,a(d(p).privacyMode),1)])]),t("div",X,[c(i,{name:"i-carbon-direction-fork",class:"text-sm"}),s[8]||(s[8]=m(" Proxy prefix: ",-1)),t("code",Y,a(d(p).proxyPrefix),1)]),t("div",tt,[(r(!0),o(u,null,x(d(p).scripts,e=>(r(),o("div",{key:e.registryKey,class:"card overflow-hidden"},[t("div",et,[t("div",st,[t("div",rt,[t("div",ot,[e.logo?(r(),o("div",{key:0,class:"w-5 h-5 flex items-center justify-center [&>svg]:max-w-5 [&>svg]:max-h-5",innerHTML:e.logo},null,8,at)):(r(),S(i,{key:1,name:"i-carbon-script",class:"text-sm text-(--color-text-subtle)"}))]),t("div",null,[t("span",nt,a(e.label),1),t("span",lt,a(e.category),1)])]),t("div",it,[(r(),o(u,null,x(y,n=>c(j,{key:n,text:`${_[n]}: ${e.privacy[n]?"Anonymised":"Passthrough"}`},{default:I(()=>[t("div",{class:v(["privacy-flag",e.privacy[n]?"privacy-flag-on":"privacy-flag-off"])},[c(i,{name:w[n],class:"text-xs"},null,8,["name"])],2)]),_:2},1032,["text"])),64))])]),t("div",ct,[t("span",{class:v(["fp-badge",L(e.mechanism)])},a(F(e.mechanism)),3),t("span",{class:v(["fp-badge",g(e.privacyLevel)])},a(e.privacyLevel==="full"?"Full Privacy":e.privacyLevel==="partial"?"Partial":"Passthrough"),3),e.hasAutoInject?(r(),o("span",dt," Auto-inject"+a(e.autoInjectField?`: ${e.autoInjectField}`:""),1)):b("",!0),e.canvasFingerprinting?(r(),o("span",pt," Canvas FP neutralized ")):b("",!0),e.hasSdkPatches?(r(),o("span",ut," SDK patches ")):b("",!0)])]),e.domains?.length?(r(),o("div",xt,[s[9]||(s[9]=t("span",{class:"text-[10px] text-(--color-text-subtle) mr-0.5"},"Proxying:",-1)),(r(!0),o(u,null,x(e.domains,n=>(r(),o("span",{key:n,class:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-(--color-surface-sunken) text-(--color-text-muted) border border-(--color-border-subtle)"},a(n),1))),128))])):b("",!0),e.routes?.length?(r(),o("div",bt,[t("button",{class:"w-full px-4 py-2 flex items-center justify-between text-xs text-(--color-text-subtle) hover:text-(--color-text-muted) transition-colors cursor-pointer",onClick:n=>P(e.registryKey)},[t("span",vt,[c(i,{name:"i-carbon-arrows-horizontal",class:"text-xs"}),m(" "+a(e.routes.length)+" route"+a(e.routes.length>1?"s":"")+" ",1),e.interceptRules?.length?(r(),o("span",ft," · "+a(e.interceptRules.length)+" intercept rule"+a(e.interceptRules.length>1?"s":""),1)):b("",!0)]),c(i,{name:f[e.registryKey]?"i-carbon-chevron-up":"i-carbon-chevron-down",class:"text-xs transition-transform"},null,8,["name"])],8,mt),D(t("div",null,[t("div",yt,[(r(!0),o(u,null,x(e.routes,(n,h)=>(r(),o("div",{key:h,class:"px-4 py-1.5 flex items-center gap-2 text-[11px] font-mono hover:bg-(--color-surface-sunken) transition-colors"},[t("span",ht,a(n.local),1),c(i,{name:"i-carbon-arrow-right",class:"text-[9px] opacity-25 flex-shrink-0"}),t("span",gt,a(n.target),1)]))),128))]),e.interceptRules?.length?(r(),o("div",_t,[s[10]||(s[10]=t("div",{class:"text-[10px] uppercase tracking-wider text-(--color-text-subtle) mb-1 font-medium"}," Intercept Rules ",-1)),(r(!0),o(u,null,x(e.interceptRules,(n,h)=>(r(),o("div",{key:h,class:"py-1 flex items-center gap-2 text-[11px] font-mono"},[t("span",kt,a(n.pattern)+a(n.pathPrefix),1),c(i,{name:"i-carbon-arrow-right",class:"text-[9px] opacity-25 flex-shrink-0"}),t("span",wt,a(n.target),1)]))),128))])):b("",!0)],512),[[T,f[e.registryKey]]])])):b("",!0)]))),128))]),d(p).scripts.length>1?(r(),o("div",Pt,[t("div",Lt,[t("h4",Ft,[c(i,{name:"i-carbon-data-table",class:"text-sm"}),s[11]||(s[11]=m(" Privacy Matrix ",-1))])]),t("div",jt,[t("table",At,[t("thead",null,[t("tr",Ct,[s[12]||(s[12]=t("th",{class:"px-4 py-2 text-left font-medium text-(--color-text-subtle)"}," Script ",-1)),(r(),o(u,null,x(y,e=>t("th",{key:e,class:"px-2.5 py-2 text-center font-medium text-(--color-text-subtle) whitespace-nowrap"},a(k[e]),1)),64)),s[13]||(s[13]=t("th",{class:"px-2.5 py-2 text-center font-medium text-(--color-text-subtle)"}," Level ",-1))])]),t("tbody",null,[(r(!0),o(u,null,x(d(p).scripts,e=>(r(),o("tr",{key:e.registryKey,class:"border-b border-(--color-border-subtle) last:border-b-0 hover:bg-(--color-surface-sunken) transition-colors"},[t("td",Rt,a(e.label),1),(r(),o(u,null,x(y,n=>t("td",{key:n,class:"px-2.5 py-2 text-center"},[t("div",{class:v(["w-2.5 h-2.5 rounded-full mx-auto",e.privacy[n]?"matrix-dot-on":"matrix-dot-off"])},null,2)])),64)),t("td",St,[t("span",{class:v(["fp-badge text-[10px]",g(e.privacyLevel)])},a(e.privacyLevel),3)])]))),128))])])])])):b("",!0),s[14]||(s[14]=t("div",{class:"text-center pt-1 pb-3"},[t("a",{href:"https://scripts.nuxt.com/docs/guides/first-party",target:"_blank",class:"link-external text-xs"}," First-Party Mode: Privacy Focused Proxy ")],-1))])):(r(),o("div",B,[t("div",M,[c(i,{name:"i-carbon-security",class:"text-3xl text-(--color-text-subtle)"})]),s[1]||(s[1]=t("div",{class:"text-center space-y-1.5"},[t("p",{class:"text-sm font-semibold text-(--color-text-muted)"}," Privacy Proxy is not active "),t("p",{class:"text-xs text-(--color-text-subtle) max-w-sm"}," The reverse proxy is auto-enabled when scripts with proxy capabilities are configured in the registry. ")],-1)),t("div",N,[c(i,{name:"i-carbon-information",class:"hint-callout-icon text-base flex-shrink-0"}),s[0]||(s[0]=t("div",null,[m(" Check that your registry scripts have not set "),t("code",{class:"px-1 py-0.5 rounded text-[11px] font-mono bg-(--color-surface-sunken)"},"proxy: false"),m(" or "),t("code",{class:"px-1 py-0.5 rounded text-[11px] font-mono bg-(--color-surface-sunken)"},"bundle: false"),m(". ")],-1))]),s[2]||(s[2]=t("a",{href:"https://scripts.nuxt.com/docs/guides/first-party",target:"_blank",class:"link-external text-xs mt-1"}," View Documentation ",-1))]))])}}}),Tt=V(It,[["__scopeId","data-v-97e4a274"]]);export{Tt as default};
@@ -1 +0,0 @@
1
- import{_ as o,u as s,o as a,c as i,a as t,t as r}from"./D4HTNcLU.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},l={class:"max-w-520px text-center"},c=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return s({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(a(),i("div",u,[t("div",l,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,c),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},b=o(f,[["__scopeId","data-v-29f31f54"]]);export{b as default};