@amplifyup/sdk 0.1.20 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -300,6 +300,7 @@ function isComposerPreview() {
300
300
  }
301
301
 
302
302
  // src/index.ts
303
+ var SESSION_IDLE_GAP_MS = 30 * 60 * 1e3;
303
304
  function readPreviewQueryOverrides() {
304
305
  if (typeof window === "undefined") return {};
305
306
  const params = new URLSearchParams(window.location.search);
@@ -366,7 +367,9 @@ var AmplifyUpSDK = class {
366
367
  reached: /* @__PURE__ */ new Set(),
367
368
  visibleMs: 0,
368
369
  visibleSince: null,
369
- lastDwellSecondsSent: 0
370
+ lastDwellSecondsSent: 0,
371
+ /** When the tab last became hidden — used for idle-resume re-page. */
372
+ hiddenAt: null
370
373
  };
371
374
  this.adapter = adapter || new AWSAdapter();
372
375
  if (typeof window !== "undefined") {
@@ -597,6 +600,7 @@ var AmplifyUpSDK = class {
597
600
  state.visibleMs = 0;
598
601
  state.visibleSince = document.visibilityState === "visible" ? Date.now() : null;
599
602
  state.lastDwellSecondsSent = 0;
603
+ state.hiddenAt = document.visibilityState === "hidden" ? Date.now() : null;
600
604
  let scrollRaf = null;
601
605
  const path = () => this.currentPath();
602
606
  const measureScrollPercent = () => {
@@ -639,12 +643,12 @@ var AmplifyUpSDK = class {
639
643
  state.visibleMs += Date.now() - state.visibleSince;
640
644
  state.visibleSince = Date.now();
641
645
  };
642
- const emitDwell = (force = false) => {
646
+ const emitDwell = (_force = false) => {
643
647
  if (this.isPreviewMode()) return;
644
648
  accumulateVisible();
645
649
  const seconds = Math.floor(state.visibleMs / 1e3);
646
650
  if (seconds <= 0) return;
647
- if (!force && seconds <= state.lastDwellSecondsSent) return;
651
+ if (seconds <= state.lastDwellSecondsSent) return;
648
652
  state.lastDwellSecondsSent = seconds;
649
653
  this.track("Time on Page", {
650
654
  seconds,
@@ -654,14 +658,34 @@ var AmplifyUpSDK = class {
654
658
  this._emitPageDwell = emitDwell;
655
659
  const onVisibility = () => {
656
660
  if (document.visibilityState === "visible") {
661
+ const idleMs = state.hiddenAt != null ? Date.now() - state.hiddenAt : 0;
662
+ state.hiddenAt = null;
663
+ if (idleMs >= SESSION_IDLE_GAP_MS) {
664
+ this.resetEngagementQuiet();
665
+ const resumePath = path();
666
+ this.page(resumePath, { resumed: true });
667
+ this.lastTrackedPath = resumePath;
668
+ if (this.config?.debug) {
669
+ console.log(
670
+ "[AmplifyUp SDK] Idle resume page view",
671
+ resumePath,
672
+ `(hidden ${Math.round(idleMs / 6e4)}m)`
673
+ );
674
+ }
675
+ }
657
676
  state.visibleSince = Date.now();
658
677
  } else {
659
678
  emitDwell(true);
679
+ state.hiddenAt = Date.now();
660
680
  state.visibleSince = null;
661
681
  }
662
682
  };
663
683
  const onPageHide = () => {
664
684
  emitDwell(true);
685
+ if (state.hiddenAt == null) {
686
+ state.hiddenAt = Date.now();
687
+ }
688
+ state.visibleSince = null;
665
689
  };
666
690
  window.addEventListener("scroll", onScroll, { passive: true });
667
691
  document.addEventListener("visibilitychange", onVisibility);
@@ -690,13 +714,19 @@ var AmplifyUpSDK = class {
690
714
  console.log("[AmplifyUp SDK] Page engagement tracking enabled");
691
715
  }
692
716
  }
717
+ /** Flush dwell then reset — used on SPA route changes. */
693
718
  resetEngagementForNewPage() {
694
719
  const emit = this._emitPageDwell;
695
720
  emit?.(true);
721
+ this.resetEngagementQuiet();
722
+ }
723
+ /** Reset dwell/scroll state without emitting (idle resume already flushed on hide). */
724
+ resetEngagementQuiet() {
696
725
  const state = this.pageEngagementState;
697
726
  state.reached = /* @__PURE__ */ new Set();
698
727
  state.visibleMs = 0;
699
728
  state.lastDwellSecondsSent = 0;
729
+ state.hiddenAt = null;
700
730
  state.visibleSince = typeof document !== "undefined" && document.visibilityState === "visible" ? Date.now() : null;
701
731
  this.componentViewSeen.clear();
702
732
  }
@@ -2393,6 +2423,6 @@ var verifyAWSConnection = () => {
2393
2423
  };
2394
2424
  var index_default = getSDK();
2395
2425
 
2396
- export { AmplifyUpSDK, buildLayoutProviderUrl, buildPageRenderUrl, cleanupEventTracking, index_default as default, fetchPageConfig, getDiagnostics, getInstanceId2 as getInstanceId, getOrchestratorUrl, getSDK, getStatus, getTarget, getTrackingId, getUserId2 as getUserId, identify, init, isAmplifyUpTarget, isComposerPreview, isPreviewRequest, normalizeAmplifyUpTarget, page, refreshEventTracking, reset, resolveAmplifyUpTarget, resolveAmplifyUpUrls, routeChange, setupComponentViewTracking, setupEventTracking, testTracking, track, trackClick, trackContentEngagement, trackContentView, trackFormFieldInteraction, trackFormSubmit, verifyAWSConnection };
2426
+ export { AmplifyUpSDK, SESSION_IDLE_GAP_MS, buildLayoutProviderUrl, buildPageRenderUrl, cleanupEventTracking, index_default as default, fetchPageConfig, getDiagnostics, getInstanceId2 as getInstanceId, getOrchestratorUrl, getSDK, getStatus, getTarget, getTrackingId, getUserId2 as getUserId, identify, init, isAmplifyUpTarget, isComposerPreview, isPreviewRequest, normalizeAmplifyUpTarget, page, refreshEventTracking, reset, resolveAmplifyUpTarget, resolveAmplifyUpUrls, routeChange, setupComponentViewTracking, setupEventTracking, testTracking, track, trackClick, trackContentEngagement, trackContentView, trackFormFieldInteraction, trackFormSubmit, verifyAWSConnection };
2397
2427
  //# sourceMappingURL=index.mjs.map
2398
2428
  //# sourceMappingURL=index.mjs.map