@tinytapanalytics/sdk
Version:
Behavioral psychology platform that detects visitor frustration, predicts abandonment, and helps you save at-risk conversions in real-time
126 lines • 2.69 kB
TypeScript
/**
* Heatmap features for visual user behavior analysis
* Dynamically imported to reduce core bundle size
*/
import { TinyTapAnalyticsConfig } from '../types/index';
interface HeatmapPoint {
x: number;
y: number;
intensity: number;
timestamp: number;
type: 'click' | 'move' | 'scroll';
}
interface HeatmapData {
url: string;
viewport: {
width: number;
height: number;
};
points: HeatmapPoint[];
sessionId: string;
userId?: string;
}
export declare class Heatmap {
private config;
private sdk;
private clickPoints;
private movePoints;
private scrollPoints;
private isActive;
private samplingRate;
private maxPoints;
private debounceTimer?;
constructor(config: TinyTapAnalyticsConfig, sdk: any);
/**
* Start heatmap tracking
*/
start(): void;
/**
* Stop heatmap tracking
*/
stop(): void;
/**
* Setup click tracking
*/
private setupClickTracking;
/**
* Setup mouse movement tracking
*/
private setupMoveTracking;
/**
* Setup scroll tracking
*/
private setupScrollTracking;
/**
* Setup page unload tracking
*/
private setupPageUnloadTracking;
/**
* Add click point with clustering
*/
private addClickPoint;
/**
* Add move point with sampling
*/
private addMovePoint;
/**
* Add scroll point
*/
private addScrollPoint;
/**
* Find nearby point for clustering
*/
private findNearbyPoint;
/**
* Trim points array to prevent memory issues
*/
private trimPointsArray;
/**
* Debounced send to reduce API calls
*/
private debouncedSend;
/**
* Send heatmap data to API
*/
private sendHeatmapData;
/**
* Generate heatmap visualization
*/
generateHeatmapVisualization(containerId: string): void;
/**
* Draw heatmap points on canvas
*/
private drawHeatmapPoints;
/**
* Get scroll depth percentage
*/
private getScrollDepth;
/**
* Check if should track heatmap for this user
*/
private shouldTrackHeatmap;
/**
* Get current heatmap statistics
*/
getStats(): {
isActive: boolean;
clickPoints: number;
movePoints: number;
scrollPoints: number;
totalPoints: number;
};
/**
* Clear all heatmap data
*/
clearData(): void;
/**
* Set sampling rate
*/
setSamplingRate(rate: number): void;
/**
* Export heatmap data
*/
exportData(): HeatmapData;
}
export {};
//# sourceMappingURL=Heatmap.d.ts.map