@grainql/analytics-web 2.3.0 → 2.5.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/dist/cjs/countries.d.ts +13 -0
- package/dist/cjs/countries.d.ts.map +1 -0
- package/dist/cjs/countries.js +2907 -0
- package/dist/cjs/countries.js.map +1 -0
- package/dist/cjs/index.d.ts +29 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction-tracking.d.ts +71 -0
- package/dist/cjs/interaction-tracking.d.ts.map +1 -0
- package/dist/cjs/interaction-tracking.js +270 -0
- package/dist/cjs/interaction-tracking.js.map +1 -0
- package/dist/cjs/page-tracking.d.ts.map +1 -1
- package/dist/cjs/page-tracking.js +5 -1
- package/dist/cjs/page-tracking.js.map +1 -1
- package/dist/cjs/section-tracking.d.ts +91 -0
- package/dist/cjs/section-tracking.d.ts.map +1 -0
- package/dist/cjs/section-tracking.js +373 -0
- package/dist/cjs/section-tracking.js.map +1 -0
- package/dist/cjs/types/auto-tracking.d.ts +55 -0
- package/dist/cjs/types/auto-tracking.d.ts.map +1 -0
- package/dist/cjs/types/auto-tracking.js +6 -0
- package/dist/cjs/types/auto-tracking.js.map +1 -0
- package/dist/countries.d.ts +13 -0
- package/dist/countries.d.ts.map +1 -0
- package/dist/countries.js +2907 -0
- package/dist/esm/countries.d.ts +13 -0
- package/dist/esm/countries.d.ts.map +1 -0
- package/dist/esm/countries.js +2902 -0
- package/dist/esm/countries.js.map +1 -0
- package/dist/esm/index.d.ts +29 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction-tracking.d.ts +71 -0
- package/dist/esm/interaction-tracking.d.ts.map +1 -0
- package/dist/esm/interaction-tracking.js +266 -0
- package/dist/esm/interaction-tracking.js.map +1 -0
- package/dist/esm/page-tracking.d.ts.map +1 -1
- package/dist/esm/page-tracking.js +5 -1
- package/dist/esm/page-tracking.js.map +1 -1
- package/dist/esm/section-tracking.d.ts +91 -0
- package/dist/esm/section-tracking.d.ts.map +1 -0
- package/dist/esm/section-tracking.js +369 -0
- package/dist/esm/section-tracking.js.map +1 -0
- package/dist/esm/types/auto-tracking.d.ts +55 -0
- package/dist/esm/types/auto-tracking.d.ts.map +1 -0
- package/dist/esm/types/auto-tracking.js +5 -0
- package/dist/esm/types/auto-tracking.js.map +1 -0
- package/dist/index.d.ts +29 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.global.dev.js +3609 -2
- 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 +130 -1
- package/dist/index.mjs +93 -0
- package/dist/interaction-tracking.d.ts +71 -0
- package/dist/interaction-tracking.d.ts.map +1 -0
- package/dist/interaction-tracking.js +270 -0
- package/dist/page-tracking.d.ts.map +1 -1
- package/dist/page-tracking.js +5 -1
- package/dist/section-tracking.d.ts +91 -0
- package/dist/section-tracking.d.ts.map +1 -0
- package/dist/section-tracking.js +373 -0
- package/dist/types/auto-tracking.d.ts +55 -0
- package/dist/types/auto-tracking.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Section Tracking Manager for Grain Analytics
|
|
4
|
+
* Intelligent scroll tracking with viewport metrics, visible sections, and engagement analysis
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SectionTrackingManager = void 0;
|
|
8
|
+
const DEFAULT_OPTIONS = {
|
|
9
|
+
minDwellTime: 1000, // 1 second minimum
|
|
10
|
+
scrollVelocityThreshold: 500, // 500px/s
|
|
11
|
+
intersectionThreshold: 0.1, // 10% visible
|
|
12
|
+
debounceDelay: 100,
|
|
13
|
+
batchDelay: 2000, // 2 seconds
|
|
14
|
+
debug: false,
|
|
15
|
+
};
|
|
16
|
+
class SectionTrackingManager {
|
|
17
|
+
constructor(tracker, sections, options = {}) {
|
|
18
|
+
this.isDestroyed = false;
|
|
19
|
+
// Tracking state
|
|
20
|
+
this.sectionStates = new Map();
|
|
21
|
+
this.intersectionObserver = null;
|
|
22
|
+
this.xpathCache = new Map();
|
|
23
|
+
// Scroll tracking
|
|
24
|
+
this.lastScrollPosition = 0;
|
|
25
|
+
this.lastScrollTime = Date.now();
|
|
26
|
+
this.scrollVelocity = 0;
|
|
27
|
+
this.scrollDebounceTimer = null;
|
|
28
|
+
// Event batching
|
|
29
|
+
this.pendingEvents = [];
|
|
30
|
+
this.batchTimer = null;
|
|
31
|
+
this.tracker = tracker;
|
|
32
|
+
this.sections = sections;
|
|
33
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
34
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
35
|
+
// Initialize after DOM is ready
|
|
36
|
+
if (document.readyState === 'loading') {
|
|
37
|
+
document.addEventListener('DOMContentLoaded', () => this.initialize());
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
setTimeout(() => this.initialize(), 0);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Initialize section tracking
|
|
46
|
+
*/
|
|
47
|
+
initialize() {
|
|
48
|
+
if (this.isDestroyed)
|
|
49
|
+
return;
|
|
50
|
+
this.log('Initializing section tracking for', this.sections.length, 'sections');
|
|
51
|
+
// Setup intersection observer
|
|
52
|
+
this.setupIntersectionObserver();
|
|
53
|
+
// Setup scroll listener for velocity tracking
|
|
54
|
+
this.setupScrollListener();
|
|
55
|
+
// Initialize sections
|
|
56
|
+
this.initializeSections();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Setup IntersectionObserver for section visibility
|
|
60
|
+
*/
|
|
61
|
+
setupIntersectionObserver() {
|
|
62
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
63
|
+
this.log('IntersectionObserver not supported');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
67
|
+
entries.forEach((entry) => {
|
|
68
|
+
this.handleIntersection(entry);
|
|
69
|
+
});
|
|
70
|
+
}, {
|
|
71
|
+
threshold: [0, 0.1, 0.25, 0.5, 0.75, 1.0],
|
|
72
|
+
rootMargin: '0px',
|
|
73
|
+
});
|
|
74
|
+
this.log('IntersectionObserver created');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Setup scroll listener for velocity calculation
|
|
78
|
+
*/
|
|
79
|
+
setupScrollListener() {
|
|
80
|
+
if (typeof window === 'undefined')
|
|
81
|
+
return;
|
|
82
|
+
const scrollHandler = () => {
|
|
83
|
+
if (this.scrollDebounceTimer !== null) {
|
|
84
|
+
clearTimeout(this.scrollDebounceTimer);
|
|
85
|
+
}
|
|
86
|
+
this.scrollDebounceTimer = window.setTimeout(() => {
|
|
87
|
+
this.updateScrollVelocity();
|
|
88
|
+
this.scrollDebounceTimer = null;
|
|
89
|
+
}, this.options.debounceDelay);
|
|
90
|
+
};
|
|
91
|
+
window.addEventListener('scroll', scrollHandler, { passive: true });
|
|
92
|
+
this.log('Scroll listener attached');
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Initialize sections and start observing
|
|
96
|
+
*/
|
|
97
|
+
initializeSections() {
|
|
98
|
+
for (const section of this.sections) {
|
|
99
|
+
const element = this.findElementByXPath(section.selector);
|
|
100
|
+
if (!element) {
|
|
101
|
+
this.log('Section element not found:', section.sectionName, 'selector:', section.selector);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Initialize state
|
|
105
|
+
const state = {
|
|
106
|
+
element,
|
|
107
|
+
config: section,
|
|
108
|
+
entryTime: null,
|
|
109
|
+
exitTime: null,
|
|
110
|
+
isVisible: false,
|
|
111
|
+
lastScrollPosition: window.scrollY,
|
|
112
|
+
lastScrollTime: Date.now(),
|
|
113
|
+
entryScrollSpeed: 0,
|
|
114
|
+
exitScrollSpeed: 0,
|
|
115
|
+
maxVisibleArea: 0,
|
|
116
|
+
};
|
|
117
|
+
this.sectionStates.set(section.sectionName, state);
|
|
118
|
+
// Start observing
|
|
119
|
+
if (this.intersectionObserver) {
|
|
120
|
+
this.intersectionObserver.observe(element);
|
|
121
|
+
}
|
|
122
|
+
this.log('Section initialized and observed:', section.sectionName);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Handle intersection observer entry
|
|
127
|
+
*/
|
|
128
|
+
handleIntersection(entry) {
|
|
129
|
+
if (this.isDestroyed)
|
|
130
|
+
return;
|
|
131
|
+
// Find which section this element belongs to
|
|
132
|
+
const state = Array.from(this.sectionStates.values()).find((s) => s.element === entry.target);
|
|
133
|
+
if (!state)
|
|
134
|
+
return;
|
|
135
|
+
const isVisible = entry.isIntersecting && entry.intersectionRatio >= this.options.intersectionThreshold;
|
|
136
|
+
const visibleArea = entry.intersectionRatio;
|
|
137
|
+
// Update max visible area
|
|
138
|
+
if (visibleArea > state.maxVisibleArea) {
|
|
139
|
+
state.maxVisibleArea = visibleArea;
|
|
140
|
+
}
|
|
141
|
+
// Handle visibility change
|
|
142
|
+
if (isVisible && !state.isVisible) {
|
|
143
|
+
// Section became visible
|
|
144
|
+
this.handleSectionEntry(state);
|
|
145
|
+
}
|
|
146
|
+
else if (!isVisible && state.isVisible) {
|
|
147
|
+
// Section became invisible
|
|
148
|
+
this.handleSectionExit(state);
|
|
149
|
+
}
|
|
150
|
+
state.isVisible = isVisible;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Handle section entry (became visible)
|
|
154
|
+
*/
|
|
155
|
+
handleSectionEntry(state) {
|
|
156
|
+
this.log('Section entered view:', state.config.sectionName);
|
|
157
|
+
state.entryTime = Date.now();
|
|
158
|
+
state.entryScrollSpeed = this.scrollVelocity;
|
|
159
|
+
state.lastScrollPosition = window.scrollY;
|
|
160
|
+
state.lastScrollTime = Date.now();
|
|
161
|
+
state.maxVisibleArea = 0;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Handle section exit (became invisible)
|
|
165
|
+
*/
|
|
166
|
+
handleSectionExit(state) {
|
|
167
|
+
this.log('Section exited view:', state.config.sectionName);
|
|
168
|
+
if (state.entryTime === null)
|
|
169
|
+
return;
|
|
170
|
+
state.exitTime = Date.now();
|
|
171
|
+
state.exitScrollSpeed = this.scrollVelocity;
|
|
172
|
+
const duration = state.exitTime - state.entryTime;
|
|
173
|
+
// Create section view data
|
|
174
|
+
const viewData = {
|
|
175
|
+
sectionName: state.config.sectionName,
|
|
176
|
+
sectionType: state.config.sectionType,
|
|
177
|
+
entryTime: state.entryTime,
|
|
178
|
+
exitTime: state.exitTime,
|
|
179
|
+
duration,
|
|
180
|
+
viewportWidth: window.innerWidth,
|
|
181
|
+
viewportHeight: window.innerHeight,
|
|
182
|
+
scrollDepth: this.calculateScrollDepth(),
|
|
183
|
+
visibleAreaPercentage: Math.round(state.maxVisibleArea * 100),
|
|
184
|
+
scrollSpeedAtEntry: state.entryScrollSpeed,
|
|
185
|
+
scrollSpeedAtExit: state.exitScrollSpeed,
|
|
186
|
+
};
|
|
187
|
+
// Apply sanitization and track if valid
|
|
188
|
+
if (this.shouldTrackSection(viewData)) {
|
|
189
|
+
this.queueSectionView(viewData);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.log('Section view filtered out:', state.config.sectionName, 'duration:', duration);
|
|
193
|
+
}
|
|
194
|
+
// Reset entry time
|
|
195
|
+
state.entryTime = null;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Update scroll velocity
|
|
199
|
+
*/
|
|
200
|
+
updateScrollVelocity() {
|
|
201
|
+
const now = Date.now();
|
|
202
|
+
const currentPosition = window.scrollY;
|
|
203
|
+
const timeDelta = now - this.lastScrollTime;
|
|
204
|
+
const positionDelta = Math.abs(currentPosition - this.lastScrollPosition);
|
|
205
|
+
if (timeDelta > 0) {
|
|
206
|
+
this.scrollVelocity = (positionDelta / timeDelta) * 1000; // pixels per second
|
|
207
|
+
}
|
|
208
|
+
this.lastScrollPosition = currentPosition;
|
|
209
|
+
this.lastScrollTime = now;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Calculate current scroll depth as percentage
|
|
213
|
+
*/
|
|
214
|
+
calculateScrollDepth() {
|
|
215
|
+
if (typeof window === 'undefined' || typeof document === 'undefined')
|
|
216
|
+
return 0;
|
|
217
|
+
const windowHeight = window.innerHeight;
|
|
218
|
+
const documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);
|
|
219
|
+
const scrollTop = window.scrollY;
|
|
220
|
+
const scrollableHeight = documentHeight - windowHeight;
|
|
221
|
+
if (scrollableHeight <= 0)
|
|
222
|
+
return 100;
|
|
223
|
+
return Math.round((scrollTop / scrollableHeight) * 100);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Determine if section view should be tracked (sanitization)
|
|
227
|
+
*/
|
|
228
|
+
shouldTrackSection(viewData) {
|
|
229
|
+
// Minimum dwell time check
|
|
230
|
+
if (viewData.duration < this.options.minDwellTime) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
// Check if user was rapidly scrolling through
|
|
234
|
+
const avgScrollSpeed = (viewData.scrollSpeedAtEntry + viewData.scrollSpeedAtExit) / 2;
|
|
235
|
+
if (avgScrollSpeed > this.options.scrollVelocityThreshold * 2) {
|
|
236
|
+
// Very fast scroll - likely not engaged
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
// Must have had some meaningful visible area
|
|
240
|
+
if (viewData.visibleAreaPercentage < 10) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Queue section view for batching
|
|
247
|
+
*/
|
|
248
|
+
queueSectionView(viewData) {
|
|
249
|
+
this.pendingEvents.push(viewData);
|
|
250
|
+
this.log('Queued section view:', viewData.sectionName, 'duration:', viewData.duration);
|
|
251
|
+
// Setup batch timer if not already set
|
|
252
|
+
if (this.batchTimer === null) {
|
|
253
|
+
this.batchTimer = window.setTimeout(() => {
|
|
254
|
+
this.flushPendingEvents();
|
|
255
|
+
}, this.options.batchDelay);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Flush pending section view events
|
|
260
|
+
*/
|
|
261
|
+
flushPendingEvents() {
|
|
262
|
+
if (this.isDestroyed || this.pendingEvents.length === 0)
|
|
263
|
+
return;
|
|
264
|
+
if (!this.tracker.hasConsent('analytics')) {
|
|
265
|
+
this.pendingEvents = [];
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
this.log('Flushing', this.pendingEvents.length, 'section view events');
|
|
269
|
+
// Track each section view
|
|
270
|
+
for (const viewData of this.pendingEvents) {
|
|
271
|
+
this.tracker.trackSystemEvent('_grain_section_view', {
|
|
272
|
+
section_name: viewData.sectionName,
|
|
273
|
+
section_type: viewData.sectionType,
|
|
274
|
+
duration_ms: viewData.duration,
|
|
275
|
+
viewport_width: viewData.viewportWidth,
|
|
276
|
+
viewport_height: viewData.viewportHeight,
|
|
277
|
+
scroll_depth_percent: viewData.scrollDepth,
|
|
278
|
+
visible_area_percent: viewData.visibleAreaPercentage,
|
|
279
|
+
scroll_speed_entry: Math.round(viewData.scrollSpeedAtEntry || 0),
|
|
280
|
+
scroll_speed_exit: Math.round(viewData.scrollSpeedAtExit || 0),
|
|
281
|
+
entry_timestamp: viewData.entryTime,
|
|
282
|
+
exit_timestamp: viewData.exitTime,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
// Clear pending events
|
|
286
|
+
this.pendingEvents = [];
|
|
287
|
+
this.batchTimer = null;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Find element by XPath selector
|
|
291
|
+
*/
|
|
292
|
+
findElementByXPath(xpath) {
|
|
293
|
+
// Check cache first
|
|
294
|
+
if (this.xpathCache.has(xpath)) {
|
|
295
|
+
const cached = this.xpathCache.get(xpath);
|
|
296
|
+
if (cached && document.contains(cached)) {
|
|
297
|
+
return cached;
|
|
298
|
+
}
|
|
299
|
+
this.xpathCache.delete(xpath);
|
|
300
|
+
}
|
|
301
|
+
try {
|
|
302
|
+
const result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
|
|
303
|
+
const element = result.singleNodeValue;
|
|
304
|
+
if (element) {
|
|
305
|
+
this.xpathCache.set(xpath, element);
|
|
306
|
+
}
|
|
307
|
+
return element;
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
this.log('Error evaluating XPath:', xpath, error);
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Log debug messages
|
|
316
|
+
*/
|
|
317
|
+
log(...args) {
|
|
318
|
+
if (this.options.debug) {
|
|
319
|
+
console.log('[SectionTracking]', ...args);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Update sections configuration
|
|
324
|
+
*/
|
|
325
|
+
updateSections(sections) {
|
|
326
|
+
if (this.isDestroyed)
|
|
327
|
+
return;
|
|
328
|
+
this.log('Updating sections configuration');
|
|
329
|
+
// Disconnect observer
|
|
330
|
+
if (this.intersectionObserver) {
|
|
331
|
+
this.intersectionObserver.disconnect();
|
|
332
|
+
}
|
|
333
|
+
// Clear state
|
|
334
|
+
this.sectionStates.clear();
|
|
335
|
+
this.xpathCache.clear();
|
|
336
|
+
// Update configuration
|
|
337
|
+
this.sections = sections;
|
|
338
|
+
// Reinitialize
|
|
339
|
+
this.setupIntersectionObserver();
|
|
340
|
+
this.initializeSections();
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Cleanup and destroy
|
|
344
|
+
*/
|
|
345
|
+
destroy() {
|
|
346
|
+
if (this.isDestroyed)
|
|
347
|
+
return;
|
|
348
|
+
this.log('Destroying section tracking manager');
|
|
349
|
+
this.isDestroyed = true;
|
|
350
|
+
// Flush any pending events
|
|
351
|
+
this.flushPendingEvents();
|
|
352
|
+
// Clear timers
|
|
353
|
+
if (this.scrollDebounceTimer !== null) {
|
|
354
|
+
clearTimeout(this.scrollDebounceTimer);
|
|
355
|
+
this.scrollDebounceTimer = null;
|
|
356
|
+
}
|
|
357
|
+
if (this.batchTimer !== null) {
|
|
358
|
+
clearTimeout(this.batchTimer);
|
|
359
|
+
this.batchTimer = null;
|
|
360
|
+
}
|
|
361
|
+
// Disconnect intersection observer
|
|
362
|
+
if (this.intersectionObserver) {
|
|
363
|
+
this.intersectionObserver.disconnect();
|
|
364
|
+
this.intersectionObserver = null;
|
|
365
|
+
}
|
|
366
|
+
// Clear state
|
|
367
|
+
this.sectionStates.clear();
|
|
368
|
+
this.xpathCache.clear();
|
|
369
|
+
this.pendingEvents = [];
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.SectionTrackingManager = SectionTrackingManager;
|
|
373
|
+
//# sourceMappingURL=section-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-tracking.js","sourceRoot":"","sources":["../../src/section-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-tracking types for Grain Analytics SDK
|
|
3
|
+
*/
|
|
4
|
+
export interface InteractionConfig {
|
|
5
|
+
eventName: string;
|
|
6
|
+
description: string;
|
|
7
|
+
selector: string;
|
|
8
|
+
priority: number;
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SectionConfig {
|
|
12
|
+
sectionName: string;
|
|
13
|
+
description: string;
|
|
14
|
+
sectionType: string;
|
|
15
|
+
selector: string;
|
|
16
|
+
importance: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AutoTrackingConfig {
|
|
19
|
+
interactions: InteractionConfig[];
|
|
20
|
+
sections: SectionConfig[];
|
|
21
|
+
}
|
|
22
|
+
export interface SectionViewData {
|
|
23
|
+
sectionName: string;
|
|
24
|
+
sectionType: string;
|
|
25
|
+
entryTime: number;
|
|
26
|
+
exitTime: number;
|
|
27
|
+
duration: number;
|
|
28
|
+
viewportWidth: number;
|
|
29
|
+
viewportHeight: number;
|
|
30
|
+
scrollDepth: number;
|
|
31
|
+
visibleAreaPercentage: number;
|
|
32
|
+
scrollSpeedAtEntry?: number;
|
|
33
|
+
scrollSpeedAtExit?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface SectionTrackingOptions {
|
|
36
|
+
minDwellTime: number;
|
|
37
|
+
scrollVelocityThreshold: number;
|
|
38
|
+
intersectionThreshold: number;
|
|
39
|
+
debounceDelay: number;
|
|
40
|
+
batchDelay: number;
|
|
41
|
+
debug?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface SectionTrackingState {
|
|
44
|
+
element: Element;
|
|
45
|
+
config: SectionConfig;
|
|
46
|
+
entryTime: number | null;
|
|
47
|
+
exitTime: number | null;
|
|
48
|
+
isVisible: boolean;
|
|
49
|
+
lastScrollPosition: number;
|
|
50
|
+
lastScrollTime: number;
|
|
51
|
+
entryScrollSpeed: number;
|
|
52
|
+
exitScrollSpeed: number;
|
|
53
|
+
maxVisibleArea: number;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=auto-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-tracking.d.ts","sourceRoot":"","sources":["../../../src/types/auto-tracking.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-tracking.js","sourceRoot":"","sources":["../../../src/types/auto-tracking.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get full country name from user's timezone
|
|
3
|
+
* @returns Full country name or null if timezone is unavailable
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCountry(): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Get country code (ISO 3166-1 alpha-2) from user's timezone
|
|
8
|
+
* Privacy-friendly alternative to IP geolocation
|
|
9
|
+
* @returns ISO 3166-1 alpha-2 country code (e.g., "US", "GB") or "Unknown"
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCountryCodeFromTimezone(): string;
|
|
12
|
+
export declare function getState(): string | null;
|
|
13
|
+
//# sourceMappingURL=countries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countries.d.ts","sourceRoot":"","sources":["../src/countries.ts"],"names":[],"mappings":"AAyyFA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAe1C;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAanD;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAUxC"}
|