@grainql/analytics-web 2.5.3 → 2.6.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.
- package/README.md +3 -1
- package/dist/activity.js +1 -1
- package/dist/cjs/activity.js +1 -1
- package/dist/cjs/activity.js.map +1 -1
- package/dist/cjs/consent.js +4 -4
- package/dist/cjs/consent.js.map +1 -1
- package/dist/cjs/heartbeat.d.ts.map +1 -1
- package/dist/cjs/heartbeat.js +0 -6
- package/dist/cjs/heartbeat.js.map +1 -1
- package/dist/cjs/heatmap-tracking.d.ts +90 -0
- package/dist/cjs/heatmap-tracking.d.ts.map +1 -0
- package/dist/cjs/heatmap-tracking.js +465 -0
- package/dist/cjs/heatmap-tracking.js.map +1 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction-tracking.d.ts.map +1 -1
- package/dist/cjs/interaction-tracking.js +9 -18
- package/dist/cjs/interaction-tracking.js.map +1 -1
- package/dist/cjs/page-tracking.d.ts.map +1 -1
- package/dist/cjs/page-tracking.js +0 -9
- package/dist/cjs/page-tracking.js.map +1 -1
- package/dist/cjs/section-tracking.d.ts.map +1 -1
- package/dist/cjs/section-tracking.js +1 -7
- package/dist/cjs/section-tracking.js.map +1 -1
- package/dist/cjs/types/heatmap-tracking.d.ts +41 -0
- package/dist/cjs/types/heatmap-tracking.d.ts.map +1 -0
- package/dist/cjs/types/heatmap-tracking.js +6 -0
- package/dist/cjs/types/heatmap-tracking.js.map +1 -0
- package/dist/consent.js +4 -4
- package/dist/esm/activity.js +1 -1
- package/dist/esm/activity.js.map +1 -1
- package/dist/esm/consent.js +4 -4
- package/dist/esm/consent.js.map +1 -1
- package/dist/esm/heartbeat.d.ts.map +1 -1
- package/dist/esm/heartbeat.js +0 -6
- package/dist/esm/heartbeat.js.map +1 -1
- package/dist/esm/heatmap-tracking.d.ts +90 -0
- package/dist/esm/heatmap-tracking.d.ts.map +1 -0
- package/dist/esm/heatmap-tracking.js +461 -0
- package/dist/esm/heatmap-tracking.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction-tracking.d.ts.map +1 -1
- package/dist/esm/interaction-tracking.js +9 -18
- package/dist/esm/interaction-tracking.js.map +1 -1
- package/dist/esm/page-tracking.d.ts.map +1 -1
- package/dist/esm/page-tracking.js +0 -9
- package/dist/esm/page-tracking.js.map +1 -1
- package/dist/esm/section-tracking.d.ts.map +1 -1
- package/dist/esm/section-tracking.js +1 -7
- package/dist/esm/section-tracking.js.map +1 -1
- package/dist/esm/types/heatmap-tracking.d.ts +41 -0
- package/dist/esm/types/heatmap-tracking.d.ts.map +1 -0
- package/dist/esm/types/heatmap-tracking.js +5 -0
- package/dist/esm/types/heatmap-tracking.js.map +1 -0
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +0 -6
- package/dist/heatmap-tracking.d.ts +90 -0
- package/dist/heatmap-tracking.d.ts.map +1 -0
- package/dist/heatmap-tracking.js +465 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.global.dev.js +534 -80
- package/dist/index.global.dev.js.map +4 -4
- package/dist/index.global.js +2 -2
- package/dist/index.global.js.map +4 -4
- package/dist/index.js +98 -39
- package/dist/index.mjs +99 -40
- package/dist/interaction-tracking.d.ts.map +1 -1
- package/dist/interaction-tracking.js +9 -18
- package/dist/page-tracking.d.ts.map +1 -1
- package/dist/page-tracking.js +0 -9
- package/dist/section-tracking.d.ts.map +1 -1
- package/dist/section-tracking.js +1 -7
- package/dist/types/heatmap-tracking.d.ts +41 -0
- package/dist/types/heatmap-tracking.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -40,7 +40,7 @@ class InteractionTrackingManager {
|
|
|
40
40
|
attachAllListeners() {
|
|
41
41
|
if (this.isDestroyed)
|
|
42
42
|
return;
|
|
43
|
-
this.log('Attaching interaction listeners
|
|
43
|
+
this.log('Attaching interaction listeners');
|
|
44
44
|
for (const interaction of this.interactions) {
|
|
45
45
|
this.attachInteractionListener(interaction);
|
|
46
46
|
}
|
|
@@ -73,7 +73,6 @@ class InteractionTrackingManager {
|
|
|
73
73
|
handlers.push({ event: 'focus', handler: focusHandler });
|
|
74
74
|
}
|
|
75
75
|
this.attachedListeners.set(element, handlers);
|
|
76
|
-
this.log('Attached listeners to element for:', interaction.eventName);
|
|
77
76
|
}
|
|
78
77
|
/**
|
|
79
78
|
* Handle click event on interaction
|
|
@@ -98,21 +97,15 @@ class InteractionTrackingManager {
|
|
|
98
97
|
...(isNavigationLink && { href: element.href }),
|
|
99
98
|
timestamp: Date.now(),
|
|
100
99
|
};
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.tracker.track(interaction.eventName, eventProperties);
|
|
100
|
+
// Always use flush for auto-tracked clicks to ensure delivery
|
|
101
|
+
// This is especially important for navigation links and quick interactions
|
|
102
|
+
const result = this.tracker.track(interaction.eventName, eventProperties, { flush: true });
|
|
103
|
+
if (result instanceof Promise) {
|
|
104
|
+
result.catch((error) => {
|
|
105
|
+
// Log error but don't block interaction
|
|
106
|
+
this.log('Failed to track click:', error);
|
|
107
|
+
});
|
|
114
108
|
}
|
|
115
|
-
this.log('Tracked click interaction:', interaction.eventName);
|
|
116
109
|
}
|
|
117
110
|
/**
|
|
118
111
|
* Handle focus event on interaction (for form fields)
|
|
@@ -133,7 +126,6 @@ class InteractionTrackingManager {
|
|
|
133
126
|
element_class: element.className || undefined,
|
|
134
127
|
timestamp: Date.now(),
|
|
135
128
|
});
|
|
136
|
-
this.log('Tracked focus interaction:', interaction.eventName);
|
|
137
129
|
}
|
|
138
130
|
/**
|
|
139
131
|
* Find element by XPath selector
|
|
@@ -233,7 +225,6 @@ class InteractionTrackingManager {
|
|
|
233
225
|
element.removeEventListener(event, handler);
|
|
234
226
|
});
|
|
235
227
|
this.attachedListeners.delete(element);
|
|
236
|
-
this.log('Detached listeners from element');
|
|
237
228
|
}
|
|
238
229
|
/**
|
|
239
230
|
* Log debug messages
|
|
@@ -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,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;
|
|
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,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;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;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"}
|
package/dist/page-tracking.js
CHANGED
|
@@ -159,9 +159,6 @@ class PageTrackingManager {
|
|
|
159
159
|
}
|
|
160
160
|
// Track the page view event
|
|
161
161
|
this.tracker.trackSystemEvent('page_view', properties);
|
|
162
|
-
if (this.config.debug) {
|
|
163
|
-
console.log('[Page Tracking] Tracked page view:', properties);
|
|
164
|
-
}
|
|
165
162
|
}
|
|
166
163
|
/**
|
|
167
164
|
* Extract domain from URL
|
|
@@ -293,9 +290,6 @@ class PageTrackingManager {
|
|
|
293
290
|
}
|
|
294
291
|
}
|
|
295
292
|
this.tracker.trackSystemEvent('page_view', baseProperties);
|
|
296
|
-
if (this.config.debug) {
|
|
297
|
-
console.log('[Page Tracking] Manually tracked page:', baseProperties);
|
|
298
|
-
}
|
|
299
293
|
}
|
|
300
294
|
/**
|
|
301
295
|
* Get page view count for current session
|
|
@@ -324,9 +318,6 @@ class PageTrackingManager {
|
|
|
324
318
|
window.removeEventListener('hashchange', this.handleHashChange);
|
|
325
319
|
}
|
|
326
320
|
this.isDestroyed = true;
|
|
327
|
-
if (this.config.debug) {
|
|
328
|
-
console.log('[Page Tracking] Destroyed');
|
|
329
|
-
}
|
|
330
321
|
}
|
|
331
322
|
}
|
|
332
323
|
exports.PageTrackingManager = PageTrackingManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-tracking.d.ts","sourceRoot":"","sources":["../src/section-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAmB,sBAAsB,EAAwB,MAAM,uBAAuB,CAAC;AAE1H,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IACxE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/B;AAWD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,UAAU,CAA0C;IAG5D,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAuB;IAGlD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAGrC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAM;IAgB/C;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"section-tracking.d.ts","sourceRoot":"","sources":["../src/section-tracking.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAmB,sBAAsB,EAAwB,MAAM,uBAAuB,CAAC;AAE1H,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IACxE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/B;AAWD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,UAAU,CAA0C;IAG5D,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAuB;IAGlD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAGrC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,GAAE,OAAO,CAAC,sBAAsB,CAAM;IAgB/C;;OAEG;IACH,OAAO,CAAC,UAAU;IAelB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyD7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IAsB/C;;OAEG;IACH,OAAO,IAAI,IAAI;CAsChB"}
|
package/dist/section-tracking.js
CHANGED
|
@@ -50,7 +50,7 @@ class SectionTrackingManager {
|
|
|
50
50
|
initialize() {
|
|
51
51
|
if (this.isDestroyed)
|
|
52
52
|
return;
|
|
53
|
-
this.log('Initializing section tracking
|
|
53
|
+
this.log('Initializing section tracking');
|
|
54
54
|
// Setup intersection observer
|
|
55
55
|
this.setupIntersectionObserver();
|
|
56
56
|
// Setup scroll listener for velocity tracking
|
|
@@ -122,7 +122,6 @@ class SectionTrackingManager {
|
|
|
122
122
|
if (this.intersectionObserver) {
|
|
123
123
|
this.intersectionObserver.observe(element);
|
|
124
124
|
}
|
|
125
|
-
this.log('Section initialized and observed:', section.sectionName);
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
/**
|
|
@@ -156,7 +155,6 @@ class SectionTrackingManager {
|
|
|
156
155
|
* Handle section entry (became visible)
|
|
157
156
|
*/
|
|
158
157
|
handleSectionEntry(state) {
|
|
159
|
-
this.log('Section entered view:', state.config.sectionName);
|
|
160
158
|
state.entryTime = Date.now();
|
|
161
159
|
state.entryScrollSpeed = this.scrollVelocity;
|
|
162
160
|
state.lastScrollPosition = window.scrollY;
|
|
@@ -210,7 +208,6 @@ class SectionTrackingManager {
|
|
|
210
208
|
exit_timestamp: viewData.exitTime,
|
|
211
209
|
is_split: true, // Flag to indicate this is a periodic split, not final exit
|
|
212
210
|
});
|
|
213
|
-
this.log('Tracked periodic section view split:', state.config.sectionName, 'duration:', duration);
|
|
214
211
|
// Reset entry time for next split (but keep tracking)
|
|
215
212
|
state.entryTime = now;
|
|
216
213
|
state.entryScrollSpeed = this.scrollVelocity;
|
|
@@ -233,7 +230,6 @@ class SectionTrackingManager {
|
|
|
233
230
|
* Handle section exit (became invisible)
|
|
234
231
|
*/
|
|
235
232
|
handleSectionExit(state) {
|
|
236
|
-
this.log('Section exited view:', state.config.sectionName);
|
|
237
233
|
// Stop periodic tracking
|
|
238
234
|
this.stopPeriodicTracking(state.config.sectionName);
|
|
239
235
|
if (state.entryTime === null)
|
|
@@ -318,7 +314,6 @@ class SectionTrackingManager {
|
|
|
318
314
|
*/
|
|
319
315
|
queueSectionView(viewData) {
|
|
320
316
|
this.pendingEvents.push(viewData);
|
|
321
|
-
this.log('Queued section view:', viewData.sectionName, 'duration:', viewData.duration);
|
|
322
317
|
// Setup batch timer if not already set
|
|
323
318
|
if (this.batchTimer === null) {
|
|
324
319
|
this.batchTimer = window.setTimeout(() => {
|
|
@@ -336,7 +331,6 @@ class SectionTrackingManager {
|
|
|
336
331
|
this.pendingEvents = [];
|
|
337
332
|
return;
|
|
338
333
|
}
|
|
339
|
-
this.log('Flushing', this.pendingEvents.length, 'section view events');
|
|
340
334
|
// Track each section view
|
|
341
335
|
for (const viewData of this.pendingEvents) {
|
|
342
336
|
this.tracker.trackSystemEvent('_grain_section_view', {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Heatmap Tracking
|
|
3
|
+
*/
|
|
4
|
+
export interface HeatmapClickData {
|
|
5
|
+
pageUrl: string;
|
|
6
|
+
xpath: string;
|
|
7
|
+
viewportX: number;
|
|
8
|
+
viewportY: number;
|
|
9
|
+
pageX: number;
|
|
10
|
+
pageY: number;
|
|
11
|
+
elementTag: string;
|
|
12
|
+
elementText?: string;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
}
|
|
15
|
+
export interface HeatmapScrollData {
|
|
16
|
+
pageUrl: string;
|
|
17
|
+
viewportSection: number;
|
|
18
|
+
scrollDepthPx: number;
|
|
19
|
+
durationMs: number;
|
|
20
|
+
entryTimestamp: number;
|
|
21
|
+
exitTimestamp: number;
|
|
22
|
+
pageHeight: number;
|
|
23
|
+
viewportHeight: number;
|
|
24
|
+
}
|
|
25
|
+
export interface HeatmapTrackingOptions {
|
|
26
|
+
scrollDebounceDelay: number;
|
|
27
|
+
batchDelay: number;
|
|
28
|
+
maxBatchSize: number;
|
|
29
|
+
debug?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface HeatmapScrollState {
|
|
32
|
+
viewportSection: number;
|
|
33
|
+
entryTime: number;
|
|
34
|
+
scrollDepthPx: number;
|
|
35
|
+
}
|
|
36
|
+
export interface HeatmapTrackingState {
|
|
37
|
+
currentScrollState: HeatmapScrollState | null;
|
|
38
|
+
pendingClicks: HeatmapClickData[];
|
|
39
|
+
pendingScrolls: HeatmapScrollData[];
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=heatmap-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap-tracking.d.ts","sourceRoot":"","sources":["../../src/types/heatmap-tracking.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grainql/analytics-web",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "Lightweight TypeScript SDK for sending analytics events and managing remote configurations via Grain's REST API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|