saltfish 0.3.63 → 0.3.65

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.
@@ -6346,6 +6346,7 @@ class VideoManager {
6346
6346
  if (activeVideo.paused) {
6347
6347
  return;
6348
6348
  }
6349
+ activeVideo.muted = true;
6349
6350
  if (this.controls) {
6350
6351
  this.controls.updateProgressImmediate(activeVideo.currentTime, activeVideo.duration);
6351
6352
  }
@@ -8434,6 +8435,101 @@ class CursorManager {
8434
8435
  }
8435
8436
  }
8436
8437
  }
8438
+ const TRACKING_PARAMS = [
8439
+ // UTM parameters (Google Analytics standard)
8440
+ "utm_source",
8441
+ "utm_medium",
8442
+ "utm_campaign",
8443
+ "utm_term",
8444
+ "utm_content",
8445
+ "utm_id",
8446
+ // Google Ads
8447
+ "gclid",
8448
+ // Google Click ID
8449
+ "gclsrc",
8450
+ // Google Click Source
8451
+ "gad_source",
8452
+ // Google Ads source
8453
+ "dclid",
8454
+ // Google Display Click ID
8455
+ "gbraid",
8456
+ // Google iOS App campaign ID (for privacy)
8457
+ "wbraid",
8458
+ // Google Web-to-App campaign ID (for privacy)
8459
+ // Facebook/Meta Ads
8460
+ "fbclid",
8461
+ // Facebook Click ID
8462
+ // Microsoft Ads
8463
+ "msclkid",
8464
+ // Microsoft Click ID
8465
+ // LinkedIn Ads
8466
+ "li_fat_id",
8467
+ // LinkedIn First-Party Ad Tracking ID
8468
+ // Twitter/X Ads
8469
+ "twclid",
8470
+ // Twitter Click ID
8471
+ // TikTok Ads
8472
+ "ttclid",
8473
+ // TikTok Click ID
8474
+ // Other common tracking params
8475
+ "ref",
8476
+ // Referral parameter
8477
+ "_ga",
8478
+ // Google Analytics client ID
8479
+ "_gl"
8480
+ // Google cross-domain linker
8481
+ ];
8482
+ function getCurrentTrackingParams() {
8483
+ const params = /* @__PURE__ */ new Map();
8484
+ try {
8485
+ const currentUrl = new URL(window.location.href);
8486
+ for (const param of TRACKING_PARAMS) {
8487
+ const value = currentUrl.searchParams.get(param);
8488
+ if (value !== null) {
8489
+ params.set(param, value);
8490
+ }
8491
+ }
8492
+ if (params.size > 0) {
8493
+ log(`urlParams: Found ${params.size} tracking params in current URL: ${Array.from(params.keys()).join(", ")}`);
8494
+ }
8495
+ } catch (error2) {
8496
+ }
8497
+ return params;
8498
+ }
8499
+ function appendTrackingParams(targetUrl) {
8500
+ if (!targetUrl) {
8501
+ return targetUrl;
8502
+ }
8503
+ try {
8504
+ let url;
8505
+ if (targetUrl.startsWith("/") || !targetUrl.includes("://")) {
8506
+ url = new URL(targetUrl, window.location.origin);
8507
+ } else {
8508
+ url = new URL(targetUrl);
8509
+ }
8510
+ const trackingParams = getCurrentTrackingParams();
8511
+ if (trackingParams.size === 0) {
8512
+ log("urlParams: No tracking params to append");
8513
+ return targetUrl;
8514
+ }
8515
+ let addedParams = 0;
8516
+ for (const [key, value] of trackingParams) {
8517
+ if (!url.searchParams.has(key)) {
8518
+ url.searchParams.set(key, value);
8519
+ addedParams++;
8520
+ } else {
8521
+ log(`urlParams: Skipping ${key} - already exists in target URL`);
8522
+ }
8523
+ }
8524
+ if (addedParams > 0) {
8525
+ log(`urlParams: Appended ${addedParams} tracking params to URL`);
8526
+ return url.toString();
8527
+ }
8528
+ return targetUrl;
8529
+ } catch (error2) {
8530
+ return targetUrl;
8531
+ }
8532
+ }
8437
8533
  class InteractionManager {
8438
8534
  constructor() {
8439
8535
  __publicField(this, "container", null);
@@ -8701,8 +8797,8 @@ class InteractionManager {
8701
8797
  }
8702
8798
  }
8703
8799
  }
8704
- log(`InteractionManager: Redirecting to ${buttonConfig.action.url}`);
8705
- window.location.href = buttonConfig.action.url;
8800
+ const redirectUrl = appendTrackingParams(buttonConfig.action.url);
8801
+ window.location.href = redirectUrl;
8706
8802
  } else {
8707
8803
  log(`InteractionManager: Goto button clicked, going to step "${buttonConfig.action.target}"`);
8708
8804
  store.goToStep(buttonConfig.action.target);
@@ -8721,7 +8817,8 @@ class InteractionManager {
8721
8817
  await new Promise((resolve) => setTimeout(resolve, TIMING.STATE_PROCESSING_DELAY_MS));
8722
8818
  }
8723
8819
  }
8724
- window.open(buttonConfig.action.target, "_blank");
8820
+ const openUrl = appendTrackingParams(buttonConfig.action.target);
8821
+ window.open(openUrl, "_blank");
8725
8822
  const { SaltfishPlayer: SaltfishPlayer2 } = await Promise.resolve().then(() => SaltfishPlayer$1);
8726
8823
  const player = SaltfishPlayer2.getInstance();
8727
8824
  if (player) {
@@ -12469,7 +12566,7 @@ const SaltfishPlayer$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.de
12469
12566
  __proto__: null,
12470
12567
  SaltfishPlayer
12471
12568
  }, Symbol.toStringTag, { value: "Module" }));
12472
- const version = "0.3.63";
12569
+ const version = "0.3.65";
12473
12570
  const packageJson = {
12474
12571
  version
12475
12572
  };