/** * User interaction class to track user interactions on the page * @author [Vivek Sudarsan] * @version 0.1.0 */ import { INTERACTION_TYPES } from './util/constants'; export declare class UserInteraction { private startTimestamp; private isScrolling; private batcher; /** * Create a new UserInteraction instance * with a null start timestamp and batcher */ constructor(); /** * Initialize the UserInteraction class * and add event listeners for user interactions */ init: () => void; /** * Gets all visible elements that match our criteria * and returns the text content of those elements * @param element * @returns */ getVisibleElementsText: (element: any) => unknown[]; /** * Gets the text content of button and link elements * @param element * @returns */ getHoverElementsText: () => unknown[]; /** * Checks if a given element is visible in the viewport * @param element * @param tagName * @returns */ isElementVisible: (element: any, tagName: any) => boolean; /** * Construct full payload with text and interaction data * @param element * @param textContent * @param eventType * @returns */ constructPayload: (eventType: string, element?: any, textContent?: string | undefined) => { interaction: { contact_id: any; type: string; event_type: any; dist_from_center_percent: number; dist_from_top_abs: any; dist_from_left_abs: any; touch_id: any; url_params: string; start_timestamp: any; end_timestamp: number; }; text: any; }; /** * Create text payload for the given element * @param element */ createTextPayload: (element?: any, textContent?: string | undefined) => any; /** * Create interaction payload for the given element * @param element */ createInteractionPayload: (element: any, eventType: typeof INTERACTION_TYPES) => { contact_id: any; type: string; event_type: any; dist_from_center_percent: number; dist_from_top_abs: any; dist_from_left_abs: any; touch_id: any; url_params: string; start_timestamp: any; end_timestamp: number; }; calculateDistanceFromCenter: (element: any) => number; calculateDistanceFromTop: (element: any) => any; calculateDistanceFromLeft: (element: any) => any; calculateElementScreenCoverage: (rect: any, viewHeight: number, viewWidth: number) => number; isPositionAllowed: (style: any, screenCoveragePercent: number, maxCoverageThreshold?: number) => boolean; startTimer: () => void; /** * Event listener for scrollend event * @param element */ scrollListener: () => void; /** * Event listener for copy event */ copyListener: () => void; /** * Event listener for select event */ selectListener: () => void; /** * Event listener for hover event */ hoverListener: () => void; /** * Event listener for screenshot keystroke pattern * (Command + Shift) */ screenshotListener: () => void; visibilityChangeListener: () => void; /** * Queues interaction data to be sent to server * @param data */ sendInteractionData(data: any, keepAlive?: boolean): Promise; }