@grainql/analytics-web 2.5.4 → 2.7.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 (99) hide show
  1. package/README.md +3 -1
  2. package/dist/activity.js +1 -1
  3. package/dist/attention-quality.d.ts +128 -0
  4. package/dist/attention-quality.d.ts.map +1 -0
  5. package/dist/attention-quality.js +246 -0
  6. package/dist/cjs/activity.js +1 -1
  7. package/dist/cjs/activity.js.map +1 -1
  8. package/dist/cjs/attention-quality.d.ts +128 -0
  9. package/dist/cjs/attention-quality.d.ts.map +1 -0
  10. package/dist/cjs/attention-quality.js +246 -0
  11. package/dist/cjs/attention-quality.js.map +1 -0
  12. package/dist/cjs/consent.js +4 -4
  13. package/dist/cjs/consent.js.map +1 -1
  14. package/dist/cjs/heartbeat.d.ts.map +1 -1
  15. package/dist/cjs/heartbeat.js +0 -6
  16. package/dist/cjs/heartbeat.js.map +1 -1
  17. package/dist/cjs/heatmap-tracking.d.ts +93 -0
  18. package/dist/cjs/heatmap-tracking.d.ts.map +1 -0
  19. package/dist/cjs/heatmap-tracking.js +499 -0
  20. package/dist/cjs/heatmap-tracking.js.map +1 -0
  21. package/dist/cjs/index.d.ts +11 -0
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/interaction-tracking.d.ts.map +1 -1
  25. package/dist/cjs/interaction-tracking.js +9 -18
  26. package/dist/cjs/interaction-tracking.js.map +1 -1
  27. package/dist/cjs/page-tracking.d.ts.map +1 -1
  28. package/dist/cjs/page-tracking.js +0 -9
  29. package/dist/cjs/page-tracking.js.map +1 -1
  30. package/dist/cjs/section-tracking.d.ts +3 -0
  31. package/dist/cjs/section-tracking.d.ts.map +1 -1
  32. package/dist/cjs/section-tracking.js +30 -7
  33. package/dist/cjs/section-tracking.js.map +1 -1
  34. package/dist/cjs/types/auto-tracking.d.ts +3 -0
  35. package/dist/cjs/types/auto-tracking.d.ts.map +1 -1
  36. package/dist/cjs/types/heatmap-tracking.d.ts +44 -0
  37. package/dist/cjs/types/heatmap-tracking.d.ts.map +1 -0
  38. package/dist/cjs/types/heatmap-tracking.js +6 -0
  39. package/dist/cjs/types/heatmap-tracking.js.map +1 -0
  40. package/dist/consent.js +4 -4
  41. package/dist/esm/activity.js +1 -1
  42. package/dist/esm/activity.js.map +1 -1
  43. package/dist/esm/attention-quality.d.ts +128 -0
  44. package/dist/esm/attention-quality.d.ts.map +1 -0
  45. package/dist/esm/attention-quality.js +242 -0
  46. package/dist/esm/attention-quality.js.map +1 -0
  47. package/dist/esm/consent.js +4 -4
  48. package/dist/esm/consent.js.map +1 -1
  49. package/dist/esm/heartbeat.d.ts.map +1 -1
  50. package/dist/esm/heartbeat.js +0 -6
  51. package/dist/esm/heartbeat.js.map +1 -1
  52. package/dist/esm/heatmap-tracking.d.ts +93 -0
  53. package/dist/esm/heatmap-tracking.d.ts.map +1 -0
  54. package/dist/esm/heatmap-tracking.js +495 -0
  55. package/dist/esm/heatmap-tracking.js.map +1 -0
  56. package/dist/esm/index.d.ts +11 -0
  57. package/dist/esm/index.d.ts.map +1 -1
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/interaction-tracking.d.ts.map +1 -1
  60. package/dist/esm/interaction-tracking.js +9 -18
  61. package/dist/esm/interaction-tracking.js.map +1 -1
  62. package/dist/esm/page-tracking.d.ts.map +1 -1
  63. package/dist/esm/page-tracking.js +0 -9
  64. package/dist/esm/page-tracking.js.map +1 -1
  65. package/dist/esm/section-tracking.d.ts +3 -0
  66. package/dist/esm/section-tracking.d.ts.map +1 -1
  67. package/dist/esm/section-tracking.js +30 -7
  68. package/dist/esm/section-tracking.js.map +1 -1
  69. package/dist/esm/types/auto-tracking.d.ts +3 -0
  70. package/dist/esm/types/auto-tracking.d.ts.map +1 -1
  71. package/dist/esm/types/heatmap-tracking.d.ts +44 -0
  72. package/dist/esm/types/heatmap-tracking.d.ts.map +1 -0
  73. package/dist/esm/types/heatmap-tracking.js +5 -0
  74. package/dist/esm/types/heatmap-tracking.js.map +1 -0
  75. package/dist/heartbeat.d.ts.map +1 -1
  76. package/dist/heartbeat.js +0 -6
  77. package/dist/heatmap-tracking.d.ts +93 -0
  78. package/dist/heatmap-tracking.d.ts.map +1 -0
  79. package/dist/heatmap-tracking.js +499 -0
  80. package/dist/index.d.ts +11 -0
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.global.dev.js +801 -80
  83. package/dist/index.global.dev.js.map +4 -4
  84. package/dist/index.global.js +2 -2
  85. package/dist/index.global.js.map +4 -4
  86. package/dist/index.js +70 -38
  87. package/dist/index.mjs +70 -38
  88. package/dist/interaction-tracking.d.ts.map +1 -1
  89. package/dist/interaction-tracking.js +9 -18
  90. package/dist/page-tracking.d.ts.map +1 -1
  91. package/dist/page-tracking.js +0 -9
  92. package/dist/section-tracking.d.ts +3 -0
  93. package/dist/section-tracking.d.ts.map +1 -1
  94. package/dist/section-tracking.js +30 -7
  95. package/dist/types/auto-tracking.d.ts +3 -0
  96. package/dist/types/auto-tracking.d.ts.map +1 -1
  97. package/dist/types/heatmap-tracking.d.ts +44 -0
  98. package/dist/types/heatmap-tracking.d.ts.map +1 -0
  99. package/package.json +1 -1
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /**
3
+ * Attention Quality Manager for Grain Analytics
4
+ * Enforces policies to ensure tracked data represents genuine user attention
5
+ *
6
+ * Policies:
7
+ * 1. Page Visibility: Stop tracking when tab is hidden/backgrounded
8
+ * 2. User Activity: Stop tracking when user is idle (no mouse/keyboard/touch)
9
+ * 3. Section Duration Cap: Max attention per section before requiring transition
10
+ * 4. Scroll Distance: Minimum scroll distance to count as meaningful engagement
11
+ *
12
+ * See: ATTENTION_QUALITY_POLICY.md for detailed policy documentation
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AttentionQualityManager = void 0;
16
+ const DEFAULT_OPTIONS = {
17
+ maxSectionDuration: 9000, // 9 seconds
18
+ minScrollDistance: 100, // 100 pixels
19
+ idleThreshold: 30000, // 30 seconds
20
+ };
21
+ class AttentionQualityManager {
22
+ constructor(activityDetector, options = {}) {
23
+ this.isDestroyed = false;
24
+ // Page visibility tracking
25
+ this.isPageVisible = true;
26
+ this.visibilityChangeHandler = null;
27
+ // Section attention state
28
+ this.sectionStates = new Map();
29
+ // Policies applied reasons (for debugging/traceability)
30
+ this.lastFilterReason = null;
31
+ this.activityDetector = activityDetector;
32
+ this.options = {
33
+ ...DEFAULT_OPTIONS,
34
+ ...options,
35
+ debug: options.debug ?? false,
36
+ };
37
+ this.setupPageVisibilityTracking();
38
+ }
39
+ /**
40
+ * Setup page visibility tracking
41
+ */
42
+ setupPageVisibilityTracking() {
43
+ if (typeof document === 'undefined')
44
+ return;
45
+ this.isPageVisible = document.visibilityState === 'visible';
46
+ this.visibilityChangeHandler = () => {
47
+ const wasVisible = this.isPageVisible;
48
+ this.isPageVisible = document.visibilityState === 'visible';
49
+ if (!this.isPageVisible && wasVisible) {
50
+ this.log('Page hidden - tracking paused');
51
+ }
52
+ else if (this.isPageVisible && !wasVisible) {
53
+ this.log('Page visible - tracking resumed');
54
+ // Reset all section states when page becomes visible again
55
+ this.resetAllSections();
56
+ }
57
+ };
58
+ document.addEventListener('visibilitychange', this.visibilityChangeHandler);
59
+ }
60
+ /**
61
+ * Check if tracking should be allowed (global check)
62
+ * Returns true if tracking is allowed, false if it should be paused
63
+ */
64
+ shouldTrack() {
65
+ // Policy 1: Page Visibility
66
+ if (!this.isPageVisible) {
67
+ this.lastFilterReason = 'page_hidden';
68
+ return false;
69
+ }
70
+ // Policy 2: User Activity
71
+ if (!this.activityDetector.isActive(this.options.idleThreshold)) {
72
+ this.lastFilterReason = 'user_idle';
73
+ return false;
74
+ }
75
+ this.lastFilterReason = null;
76
+ return true;
77
+ }
78
+ /**
79
+ * Check if section view tracking should be allowed for a specific section
80
+ * @param sectionName - Section identifier
81
+ * @param currentScrollY - Current scroll position
82
+ * @returns Object with shouldTrack boolean and optional reason
83
+ */
84
+ shouldTrackSection(sectionName, currentScrollY) {
85
+ // First check global tracking state
86
+ if (!this.shouldTrack()) {
87
+ return {
88
+ shouldTrack: false,
89
+ reason: this.lastFilterReason || 'global_policy',
90
+ };
91
+ }
92
+ // Get or create section state
93
+ let state = this.sectionStates.get(sectionName);
94
+ if (!state) {
95
+ state = {
96
+ sectionName,
97
+ currentDuration: 0,
98
+ lastScrollPosition: currentScrollY,
99
+ lastResetTime: Date.now(),
100
+ };
101
+ this.sectionStates.set(sectionName, state);
102
+ }
103
+ // Policy 4: Scroll Distance - Check if user has scrolled enough to reset attention
104
+ const scrollDistance = Math.abs(currentScrollY - state.lastScrollPosition);
105
+ const hasScrolledEnough = scrollDistance >= this.options.minScrollDistance;
106
+ if (hasScrolledEnough) {
107
+ // Reset attention timer due to meaningful scroll
108
+ this.log(`Section "${sectionName}": Attention reset due to ${Math.round(scrollDistance)}px scroll`);
109
+ state.currentDuration = 0;
110
+ state.lastScrollPosition = currentScrollY;
111
+ state.lastResetTime = Date.now();
112
+ return {
113
+ shouldTrack: true,
114
+ resetAttention: true,
115
+ };
116
+ }
117
+ // Policy 3: Section Duration Cap
118
+ if (state.currentDuration >= this.options.maxSectionDuration) {
119
+ return {
120
+ shouldTrack: false,
121
+ reason: 'max_duration_reached',
122
+ };
123
+ }
124
+ return {
125
+ shouldTrack: true,
126
+ };
127
+ }
128
+ /**
129
+ * Update section duration (call this when tracking a section view event)
130
+ * @param sectionName - Section identifier
131
+ * @param durationMs - Duration to add to current attention block
132
+ */
133
+ updateSectionDuration(sectionName, durationMs) {
134
+ const state = this.sectionStates.get(sectionName);
135
+ if (state) {
136
+ state.currentDuration += durationMs;
137
+ if (state.currentDuration >= this.options.maxSectionDuration) {
138
+ this.log(`Section "${sectionName}": Max duration cap reached (${state.currentDuration}ms)`);
139
+ }
140
+ }
141
+ }
142
+ /**
143
+ * Reset attention for a specific section (call when user navigates to different section)
144
+ * @param sectionName - Section identifier
145
+ */
146
+ resetSection(sectionName) {
147
+ const state = this.sectionStates.get(sectionName);
148
+ if (state) {
149
+ this.log(`Section "${sectionName}": Attention reset (section exit)`);
150
+ state.currentDuration = 0;
151
+ state.lastResetTime = Date.now();
152
+ }
153
+ }
154
+ /**
155
+ * Reset all section attention states
156
+ */
157
+ resetAllSections() {
158
+ this.log('Resetting all section attention states');
159
+ for (const state of this.sectionStates.values()) {
160
+ state.currentDuration = 0;
161
+ state.lastResetTime = Date.now();
162
+ }
163
+ }
164
+ /**
165
+ * Get current attention state for a section (for debugging/monitoring)
166
+ */
167
+ getSectionState(sectionName) {
168
+ return this.sectionStates.get(sectionName);
169
+ }
170
+ /**
171
+ * Get reason why last tracking attempt was filtered
172
+ */
173
+ getLastFilterReason() {
174
+ return this.lastFilterReason;
175
+ }
176
+ /**
177
+ * Check if scroll tracking should be allowed
178
+ * Similar to shouldTrack() but also checks scroll-specific conditions
179
+ */
180
+ shouldTrackScroll(previousScrollY, currentScrollY) {
181
+ // First check global tracking state
182
+ if (!this.shouldTrack()) {
183
+ return {
184
+ shouldTrack: false,
185
+ reason: this.lastFilterReason || 'global_policy',
186
+ };
187
+ }
188
+ // Check if scroll is meaningful
189
+ const scrollDistance = Math.abs(currentScrollY - previousScrollY);
190
+ if (scrollDistance < 10) { // Minimum 10px to count as scroll
191
+ return {
192
+ shouldTrack: false,
193
+ reason: 'scroll_too_small',
194
+ };
195
+ }
196
+ return {
197
+ shouldTrack: true,
198
+ };
199
+ }
200
+ /**
201
+ * Get all active policies as object (for monitoring/debugging)
202
+ */
203
+ getPolicies() {
204
+ return {
205
+ maxSectionDuration: this.options.maxSectionDuration,
206
+ minScrollDistance: this.options.minScrollDistance,
207
+ idleThreshold: this.options.idleThreshold,
208
+ };
209
+ }
210
+ /**
211
+ * Get current tracking state (for monitoring/debugging)
212
+ */
213
+ getTrackingState() {
214
+ return {
215
+ isPageVisible: this.isPageVisible,
216
+ isUserActive: this.activityDetector.isActive(this.options.idleThreshold),
217
+ timeSinceLastActivity: this.activityDetector.getTimeSinceLastActivity(),
218
+ activeSections: this.sectionStates.size,
219
+ };
220
+ }
221
+ /**
222
+ * Log debug messages
223
+ */
224
+ log(...args) {
225
+ if (this.options.debug) {
226
+ console.log('[AttentionQuality]', ...args);
227
+ }
228
+ }
229
+ /**
230
+ * Destroy and cleanup
231
+ */
232
+ destroy() {
233
+ if (this.isDestroyed)
234
+ return;
235
+ this.isDestroyed = true;
236
+ // Remove visibility change listener
237
+ if (this.visibilityChangeHandler && typeof document !== 'undefined') {
238
+ document.removeEventListener('visibilitychange', this.visibilityChangeHandler);
239
+ this.visibilityChangeHandler = null;
240
+ }
241
+ // Clear section states
242
+ this.sectionStates.clear();
243
+ }
244
+ }
245
+ exports.AttentionQualityManager = AttentionQualityManager;
246
+ //# sourceMappingURL=attention-quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention-quality.js","sourceRoot":"","sources":["../../src/attention-quality.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ class ConsentManager {
50
50
  // Note: In opt-in mode without stored consent, consentState remains null (no consent)
51
51
  }
52
52
  catch (error) {
53
- console.error('[Grain Consent] Failed to load consent state:', error);
53
+ // Silent failure - consent will be requested when needed
54
54
  }
55
55
  }
56
56
  /**
@@ -63,7 +63,7 @@ class ConsentManager {
63
63
  localStorage.setItem(this.storageKey, JSON.stringify(this.consentState));
64
64
  }
65
65
  catch (error) {
66
- console.error('[Grain Consent] Failed to save consent state:', error);
66
+ // Silent failure - consent state won't persist
67
67
  }
68
68
  }
69
69
  /**
@@ -173,7 +173,7 @@ class ConsentManager {
173
173
  listener(this.consentState);
174
174
  }
175
175
  catch (error) {
176
- console.error('[Grain Consent] Listener error:', error);
176
+ // Silent failure - listener threw an error
177
177
  }
178
178
  });
179
179
  }
@@ -188,7 +188,7 @@ class ConsentManager {
188
188
  this.consentState = null;
189
189
  }
190
190
  catch (error) {
191
- console.error('[Grain Consent] Failed to clear consent:', error);
191
+ // Silent failure - consent state may not be fully cleared
192
192
  }
193
193
  }
194
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/consent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/consent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,kBAAkB,IAAI,MAAM,CAAC;IAC7B,qBAAqB,IAAI,MAAM,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAChC,+BAA+B,IAAI,MAAM,CAAC;IAC1C,iCAAiC,IAAI,IAAI,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAS;gBAGvC,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,eAAe;IAezB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IA2CrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAchB"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,kBAAkB,IAAI,MAAM,CAAC;IAC7B,qBAAqB,IAAI,MAAM,CAAC;IAChC,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAChC,+BAA+B,IAAI,MAAM,CAAC;IAC1C,iCAAiC,IAAI,IAAI,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAS;gBAGvC,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,eAAe;IAezB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAUhB"}
@@ -96,9 +96,6 @@ class HeartbeatManager {
96
96
  // Track the heartbeat event
97
97
  this.tracker.trackSystemEvent('_grain_heartbeat', properties);
98
98
  this.lastHeartbeatTime = now;
99
- if (this.config.debug) {
100
- console.log('[Heartbeat] Sent heartbeat:', properties);
101
- }
102
99
  }
103
100
  /**
104
101
  * Destroy the heartbeat manager
@@ -111,9 +108,6 @@ class HeartbeatManager {
111
108
  this.heartbeatTimer = null;
112
109
  }
113
110
  this.isDestroyed = true;
114
- if (this.config.debug) {
115
- console.log('[Heartbeat] Destroyed');
116
- }
117
111
  }
118
112
  }
119
113
  exports.HeartbeatManager = HeartbeatManager;
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Heatmap Tracking Manager for Grain Analytics
3
+ * Tracks click interactions and scroll depth across all pages
4
+ */
5
+ import type { HeatmapTrackingOptions } from './types/heatmap-tracking';
6
+ import type { ActivityDetector } from './activity';
7
+ export interface SendEventOptions {
8
+ flush?: boolean;
9
+ }
10
+ export interface HeatmapTracker {
11
+ trackSystemEvent(eventName: string, properties?: Record<string, unknown>, options?: SendEventOptions): void | Promise<void>;
12
+ hasConsent(category: 'analytics' | 'marketing' | 'functional'): boolean;
13
+ getActivityDetector(): ActivityDetector;
14
+ log(...args: unknown[]): void;
15
+ }
16
+ export declare class HeatmapTrackingManager {
17
+ private tracker;
18
+ private options;
19
+ private isDestroyed;
20
+ private currentScrollState;
21
+ private pendingClicks;
22
+ private pendingScrolls;
23
+ private scrollDebounceTimer;
24
+ private batchTimer;
25
+ private scrollTrackingTimer;
26
+ private periodicScrollTimer;
27
+ private lastScrollPosition;
28
+ private lastScrollTime;
29
+ private readonly SPLIT_DURATION;
30
+ private attentionQuality;
31
+ constructor(tracker: HeatmapTracker, options?: Partial<HeatmapTrackingOptions>);
32
+ /**
33
+ * Initialize heatmap tracking
34
+ */
35
+ private initialize;
36
+ /**
37
+ * Setup click event tracking
38
+ */
39
+ private setupClickTracking;
40
+ /**
41
+ * Setup scroll event tracking
42
+ */
43
+ private setupScrollTracking;
44
+ /**
45
+ * Start periodic scroll state tracking
46
+ */
47
+ private startScrollTracking;
48
+ /**
49
+ * Start periodic scroll tracking (sends events every 3 seconds)
50
+ */
51
+ private startPeriodicScrollTracking;
52
+ /**
53
+ * Setup page unload handler to beacon remaining data
54
+ */
55
+ private setupUnloadHandler;
56
+ /**
57
+ * Handle click event
58
+ */
59
+ private handleClick;
60
+ /**
61
+ * Handle scroll event
62
+ */
63
+ private handleScroll;
64
+ /**
65
+ * Update current scroll state
66
+ */
67
+ private updateScrollState;
68
+ /**
69
+ * Generate XPath for an element
70
+ */
71
+ private generateXPath;
72
+ /**
73
+ * Consider flushing batched events
74
+ */
75
+ private considerBatchFlush;
76
+ /**
77
+ * Flush pending events
78
+ */
79
+ private flushPendingEvents;
80
+ /**
81
+ * Flush pending events with beacon (for page unload)
82
+ */
83
+ private flushPendingEventsWithBeacon;
84
+ /**
85
+ * Log debug message
86
+ */
87
+ private log;
88
+ /**
89
+ * Destroy the tracking manager
90
+ */
91
+ destroy(): void;
92
+ }
93
+ //# sourceMappingURL=heatmap-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heatmap-tracking.d.ts","sourceRoot":"","sources":["../../src/heatmap-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAGV,sBAAsB,EAEvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5H,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IACxE,mBAAmB,IAAI,gBAAgB,CAAC;IACxC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/B;AASD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,cAAc,CAA2B;IAGjD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,mBAAmB,CAAuB;IAGlD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAGvC,OAAO,CAAC,gBAAgB,CAA0B;gBAGhD,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAM;IA0B/C;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAwEnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqDzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqD1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA6CpC;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,IAAI,IAAI;CA8BhB"}