@grainql/analytics-web 3.1.2 → 3.2.1

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.
@@ -11,6 +11,8 @@ export interface HeatmapTracker {
11
11
  trackSystemEvent(eventName: string, properties?: Record<string, unknown>, options?: SendEventOptions): void | Promise<void>;
12
12
  hasConsent(category: 'analytics' | 'marketing' | 'functional'): boolean;
13
13
  getActivityDetector(): ActivityDetector;
14
+ getConfigAsync(key: string): Promise<string | undefined>;
15
+ getEffectiveUserId(): string;
14
16
  log(...args: unknown[]): void;
15
17
  }
16
18
  export declare class HeatmapTrackingManager {
@@ -28,11 +30,50 @@ export declare class HeatmapTrackingManager {
28
30
  private lastScrollTime;
29
31
  private readonly SPLIT_DURATION;
30
32
  private attentionQuality;
33
+ private snapshotCaptured;
34
+ private snapshotEnabled;
35
+ private deviceType;
31
36
  constructor(tracker: HeatmapTracker, options?: Partial<HeatmapTrackingOptions>);
32
37
  /**
33
38
  * Initialize heatmap tracking
34
39
  */
35
40
  private initialize;
41
+ /**
42
+ * Check remote config for snapshot capture enablement
43
+ */
44
+ /**
45
+ * Detect device type based on viewport width and user agent
46
+ * Mobile: width < 768px OR mobile user agent
47
+ * Desktop: width >= 768px AND non-mobile user agent
48
+ */
49
+ private detectDeviceType;
50
+ /**
51
+ * Normalize URL by removing query params and hash, and stripping www prefix
52
+ * This ensures heatmap data is aggregated by page, not by URL variations
53
+ * Subdomains (other than www) are preserved: api.example.com != app.example.com
54
+ */
55
+ private normalizeUrl;
56
+ private checkSnapshotConfig;
57
+ /**
58
+ * Capture DOM snapshot using rrweb-snapshot
59
+ */
60
+ private captureSnapshot;
61
+ /**
62
+ * Upload snapshot to backend
63
+ */
64
+ private uploadSnapshot;
65
+ /**
66
+ * Get API URL from tracker configuration
67
+ */
68
+ private getApiUrl;
69
+ /**
70
+ * Get tenant ID from tracker configuration
71
+ */
72
+ private getTenantId;
73
+ /**
74
+ * Get auth headers from tracker
75
+ */
76
+ private getAuthHeaders;
36
77
  /**
37
78
  * Setup click event tracking
38
79
  */
@@ -65,6 +106,10 @@ export declare class HeatmapTrackingManager {
65
106
  * Update current scroll state
66
107
  */
67
108
  private updateScrollState;
109
+ /**
110
+ * Generate CSS selector for an element (for element-relative positioning)
111
+ */
112
+ private generateCSSSelector;
68
113
  /**
69
114
  * Generate XPath for an element
70
115
  */
@@ -1 +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;AAGnD,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;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyEnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAyDnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsDzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA0CpC;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,IAAI,IAAI;CA8BhB"}
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;AAGnD,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,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACzD,kBAAkB,IAAI,MAAM,CAAC;IAC7B,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;IAGlD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,UAAU,CAAmC;gBAGnD,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAM;IA6B/C;;OAEG;YACW,UAAU;IA0BxB;;OAEG;IACH;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;YAkBN,mBAAmB;IAWjC;;OAEG;YACW,eAAe;IA6B7B;;OAEG;YACW,cAAc;IA0D5B;;OAEG;YACW,SAAS;IAQvB;;OAEG;YACW,WAAW;IAQzB;;OAEG;YACW,cAAc;IAW5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA2EnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAiFnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuDzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkD3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsD1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA+CpC;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,IAAI,IAAI;CA8BhB"}
@@ -3,6 +3,39 @@
3
3
  * Heatmap Tracking Manager for Grain Analytics
4
4
  * Tracks click interactions and scroll depth across all pages
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
6
39
  Object.defineProperty(exports, "__esModule", { value: true });
7
40
  exports.HeatmapTrackingManager = void 0;
8
41
  const attention_quality_1 = require("./attention-quality");
@@ -29,8 +62,15 @@ class HeatmapTrackingManager {
29
62
  this.lastScrollPosition = 0;
30
63
  this.lastScrollTime = Date.now();
31
64
  this.SPLIT_DURATION = 3000; // 3 seconds - same as section tracking
65
+ // Snapshot capture state
66
+ this.snapshotCaptured = false;
67
+ this.snapshotEnabled = false;
68
+ // Device type detection
69
+ this.deviceType = 'desktop';
32
70
  this.tracker = tracker;
33
71
  this.options = { ...DEFAULT_OPTIONS, ...options };
72
+ // Detect device type on initialization
73
+ this.deviceType = this.detectDeviceType();
34
74
  // Initialize attention quality manager
35
75
  this.attentionQuality = new attention_quality_1.AttentionQualityManager(tracker.getActivityDetector(), {
36
76
  maxSectionDuration: 9000, // 9 seconds per viewport section
@@ -51,10 +91,12 @@ class HeatmapTrackingManager {
51
91
  /**
52
92
  * Initialize heatmap tracking
53
93
  */
54
- initialize() {
94
+ async initialize() {
55
95
  if (this.isDestroyed)
56
96
  return;
57
97
  this.log('Initializing heatmap tracking');
98
+ // Check remote config for snapshot capture
99
+ await this.checkSnapshotConfig();
58
100
  // Setup click tracking
59
101
  this.setupClickTracking();
60
102
  // Setup scroll tracking
@@ -63,6 +105,187 @@ class HeatmapTrackingManager {
63
105
  this.startScrollTracking();
64
106
  // Setup page unload handler for beaconing
65
107
  this.setupUnloadHandler();
108
+ // Initialize snapshot capture if enabled
109
+ if (this.snapshotEnabled && !this.snapshotCaptured) {
110
+ this.captureSnapshot();
111
+ }
112
+ }
113
+ /**
114
+ * Check remote config for snapshot capture enablement
115
+ */
116
+ /**
117
+ * Detect device type based on viewport width and user agent
118
+ * Mobile: width < 768px OR mobile user agent
119
+ * Desktop: width >= 768px AND non-mobile user agent
120
+ */
121
+ detectDeviceType() {
122
+ if (typeof window === 'undefined' || typeof navigator === 'undefined') {
123
+ return 'desktop'; // SSR default
124
+ }
125
+ // Check viewport width
126
+ const width = window.innerWidth || window.screen?.width || 0;
127
+ const isMobileWidth = width < 768;
128
+ // Check user agent for mobile indicators
129
+ const userAgent = navigator.userAgent.toLowerCase();
130
+ const mobileKeywords = [
131
+ 'mobile',
132
+ 'android',
133
+ 'iphone',
134
+ 'ipad',
135
+ 'ipod',
136
+ 'blackberry',
137
+ 'windows phone',
138
+ 'webos',
139
+ ];
140
+ const isMobileUserAgent = mobileKeywords.some((keyword) => userAgent.includes(keyword));
141
+ // Device is mobile if either width OR user agent indicates mobile
142
+ return isMobileWidth || isMobileUserAgent ? 'mobile' : 'desktop';
143
+ }
144
+ /**
145
+ * Normalize URL by removing query params and hash, and stripping www prefix
146
+ * This ensures heatmap data is aggregated by page, not by URL variations
147
+ * Subdomains (other than www) are preserved: api.example.com != app.example.com
148
+ */
149
+ normalizeUrl(url) {
150
+ try {
151
+ const urlObj = new URL(url);
152
+ let hostname = urlObj.hostname.toLowerCase();
153
+ // Strip www prefix but keep other subdomains
154
+ if (hostname.startsWith('www.')) {
155
+ hostname = hostname.substring(4);
156
+ }
157
+ // Return protocol + normalized hostname + pathname only
158
+ return `${urlObj.protocol}//${hostname}${urlObj.pathname}`;
159
+ }
160
+ catch {
161
+ // If URL parsing fails, return as-is
162
+ return url;
163
+ }
164
+ }
165
+ async checkSnapshotConfig() {
166
+ try {
167
+ const enableSnapshot = await this.tracker.getConfigAsync('enableHeatmapSnapshot');
168
+ this.snapshotEnabled = enableSnapshot === 'true';
169
+ this.log('Heatmap snapshot capture enabled:', this.snapshotEnabled);
170
+ }
171
+ catch (error) {
172
+ this.log('Failed to check snapshot config, defaulting to disabled:', error);
173
+ this.snapshotEnabled = false;
174
+ }
175
+ }
176
+ /**
177
+ * Capture DOM snapshot using rrweb-snapshot
178
+ */
179
+ async captureSnapshot() {
180
+ if (this.snapshotCaptured || !this.snapshotEnabled)
181
+ return;
182
+ try {
183
+ this.log('Capturing DOM snapshot...');
184
+ // Dynamically import rrweb-snapshot (only if enabled)
185
+ // @ts-ignore - rrweb-snapshot is an optional dependency, may not be resolvable during React build
186
+ const rrwebSnapshot = await Promise.resolve().then(() => __importStar(require('rrweb-snapshot')));
187
+ // Capture full DOM snapshot with PII masking
188
+ const snapshot = rrwebSnapshot.snapshot(document, {
189
+ maskAllInputs: true,
190
+ maskTextFn: (text) => {
191
+ // Basic PII masking - mask anything that looks like email or sensitive data
192
+ return text.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, '*****');
193
+ },
194
+ });
195
+ this.snapshotCaptured = true;
196
+ this.log('DOM snapshot captured successfully');
197
+ // Upload snapshot to backend
198
+ await this.uploadSnapshot(snapshot);
199
+ }
200
+ catch (error) {
201
+ this.log('Failed to capture DOM snapshot:', error);
202
+ }
203
+ }
204
+ /**
205
+ * Upload snapshot to backend
206
+ */
207
+ async uploadSnapshot(snapshot) {
208
+ try {
209
+ const sessionId = this.tracker.getEffectiveUserId();
210
+ const pageUrl = this.normalizeUrl(window.location.href);
211
+ this.log('Uploading snapshot to backend - sessionId:', sessionId);
212
+ // Note: The actual API call would need the tenantId from the tracker
213
+ // For now, we'll log that the snapshot is ready to be uploaded
214
+ // The tracker would need to expose tenantId for this to work
215
+ const snapshotData = {
216
+ sessionId,
217
+ pageUrl,
218
+ snapshot
219
+ };
220
+ this.log('Snapshot data prepared:', { sessionId, pageUrl, snapshotSize: JSON.stringify(snapshot).length });
221
+ // Get API configuration from tracker
222
+ const apiUrl = await this.getApiUrl();
223
+ const tenantId = await this.getTenantId();
224
+ const headers = await this.getAuthHeaders();
225
+ if (!apiUrl || !tenantId) {
226
+ this.log('Cannot upload snapshot: missing API URL or tenant ID');
227
+ return;
228
+ }
229
+ // Upload to backend
230
+ const response = await fetch(`${apiUrl}/v1/events/${encodeURIComponent(tenantId)}/snapshot`, {
231
+ method: 'POST',
232
+ headers: {
233
+ 'Content-Type': 'application/json',
234
+ ...headers
235
+ },
236
+ body: JSON.stringify({
237
+ sessionId,
238
+ pageUrl,
239
+ snapshot: JSON.stringify(snapshot),
240
+ timestamp: Date.now(),
241
+ deviceType: this.deviceType
242
+ })
243
+ });
244
+ if (!response.ok) {
245
+ throw new Error(`Snapshot upload failed: ${response.status}`);
246
+ }
247
+ const result = await response.json();
248
+ this.log('Snapshot uploaded successfully:', result);
249
+ }
250
+ catch (error) {
251
+ this.log('Failed to upload snapshot:', error);
252
+ }
253
+ }
254
+ /**
255
+ * Get API URL from tracker configuration
256
+ */
257
+ async getApiUrl() {
258
+ try {
259
+ return this.tracker.config?.apiUrl || 'https://api.grainql.com';
260
+ }
261
+ catch {
262
+ return 'https://api.grainql.com';
263
+ }
264
+ }
265
+ /**
266
+ * Get tenant ID from tracker configuration
267
+ */
268
+ async getTenantId() {
269
+ try {
270
+ return this.tracker.config?.tenantId;
271
+ }
272
+ catch {
273
+ return undefined;
274
+ }
275
+ }
276
+ /**
277
+ * Get auth headers from tracker
278
+ */
279
+ async getAuthHeaders() {
280
+ try {
281
+ if (typeof this.tracker.getAuthHeaders === 'function') {
282
+ return await this.tracker.getAuthHeaders();
283
+ }
284
+ return {};
285
+ }
286
+ catch {
287
+ return {};
288
+ }
66
289
  }
67
290
  /**
68
291
  * Setup click event tracking
@@ -151,7 +374,7 @@ class HeatmapTrackingManager {
151
374
  return;
152
375
  }
153
376
  const scrollData = {
154
- pageUrl: window.location.href,
377
+ pageUrl: this.normalizeUrl(window.location.href),
155
378
  viewportSection: this.currentScrollState.viewportSection,
156
379
  scrollDepthPx: scrollY,
157
380
  durationMs: duration,
@@ -159,6 +382,7 @@ class HeatmapTrackingManager {
159
382
  exitTimestamp: currentTime,
160
383
  pageHeight,
161
384
  viewportHeight,
385
+ deviceType: this.deviceType,
162
386
  };
163
387
  // Send immediately using beacon to ensure delivery
164
388
  this.tracker.trackSystemEvent('_grain_heatmap_scroll', {
@@ -170,6 +394,7 @@ class HeatmapTrackingManager {
170
394
  exit_timestamp: scrollData.exitTimestamp,
171
395
  page_height: scrollData.pageHeight,
172
396
  viewport_height: scrollData.viewportHeight,
397
+ device_type: scrollData.deviceType,
173
398
  is_split: true, // Flag to indicate periodic tracking, not final exit
174
399
  }, { flush: true });
175
400
  // Update attention quality duration tracker
@@ -192,7 +417,7 @@ class HeatmapTrackingManager {
192
417
  const duration = currentTime - this.currentScrollState.entryTime;
193
418
  if (duration > 100) {
194
419
  const scrollData = {
195
- pageUrl: window.location.href,
420
+ pageUrl: this.normalizeUrl(window.location.href),
196
421
  viewportSection: this.currentScrollState.viewportSection,
197
422
  scrollDepthPx: this.currentScrollState.scrollDepthPx,
198
423
  durationMs: duration,
@@ -200,6 +425,7 @@ class HeatmapTrackingManager {
200
425
  exitTimestamp: currentTime,
201
426
  pageHeight: document.documentElement.scrollHeight,
202
427
  viewportHeight: window.innerHeight,
428
+ deviceType: this.deviceType,
203
429
  };
204
430
  this.pendingScrolls.push(scrollData);
205
431
  }
@@ -220,8 +446,23 @@ class HeatmapTrackingManager {
220
446
  const element = event.target;
221
447
  if (!element)
222
448
  return;
223
- const pageUrl = window.location.href;
449
+ const pageUrl = this.normalizeUrl(window.location.href);
224
450
  const xpath = this.generateXPath(element);
451
+ // Generate CSS selector for element-relative positioning
452
+ const selector = this.generateCSSSelector(element);
453
+ // Calculate element-relative coordinates
454
+ let relX;
455
+ let relY;
456
+ try {
457
+ const rect = element.getBoundingClientRect();
458
+ if (rect.width > 0 && rect.height > 0) {
459
+ relX = Math.max(0, Math.min(1, (event.clientX - rect.left) / rect.width));
460
+ relY = Math.max(0, Math.min(1, (event.clientY - rect.top) / rect.height));
461
+ }
462
+ }
463
+ catch (error) {
464
+ this.log('Failed to calculate relative coordinates:', error);
465
+ }
225
466
  // Get viewport coordinates
226
467
  const viewportX = Math.round(event.clientX);
227
468
  const viewportY = Math.round(event.clientY);
@@ -233,6 +474,9 @@ class HeatmapTrackingManager {
233
474
  const clickData = {
234
475
  pageUrl,
235
476
  xpath,
477
+ selector,
478
+ relX,
479
+ relY,
236
480
  viewportX,
237
481
  viewportY,
238
482
  pageX,
@@ -240,6 +484,7 @@ class HeatmapTrackingManager {
240
484
  elementTag,
241
485
  elementText: elementText || undefined,
242
486
  timestamp: Date.now(),
487
+ deviceType: this.deviceType,
243
488
  };
244
489
  // Check if this is a navigation link
245
490
  const isNavigationLink = element instanceof HTMLAnchorElement && element.href;
@@ -248,6 +493,9 @@ class HeatmapTrackingManager {
248
493
  this.tracker.trackSystemEvent('_grain_heatmap_click', {
249
494
  page_url: clickData.pageUrl,
250
495
  xpath: clickData.xpath,
496
+ selector: clickData.selector,
497
+ rel_x: clickData.relX,
498
+ rel_y: clickData.relY,
251
499
  viewport_x: clickData.viewportX,
252
500
  viewport_y: clickData.viewportY,
253
501
  page_x: clickData.pageX,
@@ -255,6 +503,7 @@ class HeatmapTrackingManager {
255
503
  element_tag: clickData.elementTag,
256
504
  element_text: clickData.elementText,
257
505
  timestamp: clickData.timestamp,
506
+ device_type: clickData.deviceType,
258
507
  }, { flush: true });
259
508
  }
260
509
  else {
@@ -291,7 +540,7 @@ class HeatmapTrackingManager {
291
540
  // Only record if duration is meaningful (> 100ms)
292
541
  if (duration > 100) {
293
542
  const scrollData = {
294
- pageUrl: window.location.href,
543
+ pageUrl: this.normalizeUrl(window.location.href),
295
544
  viewportSection: this.currentScrollState.viewportSection,
296
545
  scrollDepthPx: this.currentScrollState.scrollDepthPx,
297
546
  durationMs: duration,
@@ -299,6 +548,7 @@ class HeatmapTrackingManager {
299
548
  exitTimestamp: currentTime,
300
549
  pageHeight,
301
550
  viewportHeight,
551
+ deviceType: this.deviceType,
302
552
  };
303
553
  this.pendingScrolls.push(scrollData);
304
554
  }
@@ -319,6 +569,50 @@ class HeatmapTrackingManager {
319
569
  // Check if we should flush
320
570
  this.considerBatchFlush();
321
571
  }
572
+ /**
573
+ * Generate CSS selector for an element (for element-relative positioning)
574
+ */
575
+ generateCSSSelector(element) {
576
+ if (!element)
577
+ return '';
578
+ // Prefer ID if available
579
+ if (element.id) {
580
+ return `#${element.id}`;
581
+ }
582
+ // Try data attributes
583
+ const dataAttrs = Array.from(element.attributes).filter(attr => attr.name.startsWith('data-'));
584
+ if (dataAttrs.length > 0) {
585
+ const attr = dataAttrs[0];
586
+ return `${element.tagName.toLowerCase()}[${attr.name}="${attr.value}"]`;
587
+ }
588
+ // Try class names (pick first meaningful class)
589
+ if (element.className && typeof element.className === 'string') {
590
+ const classes = element.className.split(' ').filter(c => c && !c.match(/^(active|hover|focus)/));
591
+ if (classes.length > 0) {
592
+ return `${element.tagName.toLowerCase()}.${classes[0]}`;
593
+ }
594
+ }
595
+ // Fall back to nth-child path
596
+ const path = [];
597
+ let current = element;
598
+ while (current && current !== document.body) {
599
+ let selector = current.tagName.toLowerCase();
600
+ if (current.parentElement) {
601
+ const siblings = Array.from(current.parentElement.children);
602
+ const sameTagSiblings = siblings.filter(s => s.tagName === current.tagName);
603
+ if (sameTagSiblings.length > 1) {
604
+ const index = sameTagSiblings.indexOf(current) + 1;
605
+ selector += `:nth-child(${index})`;
606
+ }
607
+ }
608
+ path.unshift(selector);
609
+ current = current.parentElement;
610
+ // Limit path depth to avoid overly long selectors
611
+ if (path.length >= 5)
612
+ break;
613
+ }
614
+ return path.join(' > ');
615
+ }
322
616
  /**
323
617
  * Generate XPath for an element
324
618
  */
@@ -380,6 +674,9 @@ class HeatmapTrackingManager {
380
674
  this.tracker.trackSystemEvent('_grain_heatmap_click', {
381
675
  page_url: clickData.pageUrl,
382
676
  xpath: clickData.xpath,
677
+ selector: clickData.selector,
678
+ rel_x: clickData.relX,
679
+ rel_y: clickData.relY,
383
680
  viewport_x: clickData.viewportX,
384
681
  viewport_y: clickData.viewportY,
385
682
  page_x: clickData.pageX,
@@ -387,6 +684,7 @@ class HeatmapTrackingManager {
387
684
  element_tag: clickData.elementTag,
388
685
  element_text: clickData.elementText,
389
686
  timestamp: clickData.timestamp,
687
+ device_type: clickData.deviceType,
390
688
  });
391
689
  }
392
690
  this.pendingClicks = [];
@@ -403,6 +701,7 @@ class HeatmapTrackingManager {
403
701
  exit_timestamp: scrollData.exitTimestamp,
404
702
  page_height: scrollData.pageHeight,
405
703
  viewport_height: scrollData.viewportHeight,
704
+ device_type: scrollData.deviceType,
406
705
  });
407
706
  }
408
707
  this.pendingScrolls = [];
@@ -425,6 +724,9 @@ class HeatmapTrackingManager {
425
724
  this.tracker.trackSystemEvent('_grain_heatmap_click', {
426
725
  page_url: clickData.pageUrl,
427
726
  xpath: clickData.xpath,
727
+ selector: clickData.selector,
728
+ rel_x: clickData.relX,
729
+ rel_y: clickData.relY,
428
730
  viewport_x: clickData.viewportX,
429
731
  viewport_y: clickData.viewportY,
430
732
  page_x: clickData.pageX,
@@ -432,6 +734,7 @@ class HeatmapTrackingManager {
432
734
  element_tag: clickData.elementTag,
433
735
  element_text: clickData.elementText,
434
736
  timestamp: clickData.timestamp,
737
+ device_type: clickData.deviceType,
435
738
  }, { flush: true });
436
739
  }
437
740
  this.pendingClicks = [];
@@ -448,6 +751,7 @@ class HeatmapTrackingManager {
448
751
  exit_timestamp: scrollData.exitTimestamp,
449
752
  page_height: scrollData.pageHeight,
450
753
  viewport_height: scrollData.viewportHeight,
754
+ device_type: scrollData.deviceType,
451
755
  }, { flush: true });
452
756
  }
453
757
  this.pendingScrolls = [];
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap-tracking.js","sourceRoot":"","sources":["../../src/heatmap-tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heatmap-tracking.js","sourceRoot":"","sources":["../../src/heatmap-tracking.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-tracking.d.ts","sourceRoot":"","sources":["../../src/page-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,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;CACxB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,oBAAoB,CAA4C;IACxE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB;IAY5D;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,OAAO,CAAC,cAAc,CAGpB;IAEF;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAGtB;IAEF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4GxB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,KAAK;IAUb;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqCnE;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAqBhB"}
1
+ {"version":3,"file":"page-tracking.d.ts","sourceRoot":"","sources":["../../src/page-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,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;CACxB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,oBAAoB,CAA4C;IACxE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB;IAY5D;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,OAAO,CAAC,cAAc,CAGpB;IAEF;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAGtB;IAEF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmHxB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,KAAK;IAUb;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqCnE;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAqBhB"}
@@ -128,6 +128,12 @@ class PageTrackingManager {
128
128
  // Add previous page if available
129
129
  if (this.previousPage) {
130
130
  properties.previous_page = this.previousPage;
131
+ // Track navigation edge for Project Vanguard (minimal Phase 1)
132
+ this.tracker.trackSystemEvent('_grain_navigation', {
133
+ from_page: this.previousPage,
134
+ to_page: page,
135
+ timestamp: Date.now()
136
+ });
131
137
  }
132
138
  // Add UTM parameters if present (from session)
133
139
  if (sessionUTMs.utm_source)