detect-tab
Version:
A comprehensive tab detection and management library for web applications
104 lines • 2.59 kB
TypeScript
import { TabState, TabEvent, DetectTabOptions, TabInfo, TabEventCallback, TabStateChangeCallback, TabFocusCallback } from './types';
/**
* Main DetectTab class for tab detection and management
*/
export declare class DetectTab {
private options;
private listeners;
private stateChangeListeners;
private focusListeners;
private info;
private startTime;
private lastStateChange;
private visibilityProperties;
private isActive;
constructor(options?: DetectTabOptions);
/**
* Start tab detection
*/
start(): void;
/**
* Stop tab detection
*/
stop(): void;
/**
* Get current tab information
*/
getTabInfo(): TabInfo;
/**
* Check if tab is currently visible
*/
isVisible(): boolean;
/**
* Check if tab is currently focused
*/
isFocused(): boolean;
/**
* Get current tab state
*/
getState(): TabState;
/**
* Get formatted time statistics
*/
getTimeStats(): {
totalVisibleTime: string;
totalHiddenTime: string;
timeInCurrentState: string;
};
/**
* Add event listener for specific tab events
*/
on(event: TabEvent, callback: TabEventCallback): void;
/**
* Remove event listener
*/
off(event: TabEvent, callback: TabEventCallback): void;
/**
* Add state change listener
*/
onStateChange(callback: TabStateChangeCallback): void;
/**
* Remove state change listener
*/
offStateChange(callback: TabStateChangeCallback): void;
/**
* Add focus change listener
*/
onFocusChange(callback: TabFocusCallback): void;
/**
* Remove focus change listener
*/
offFocusChange(callback: TabFocusCallback): void;
/**
* Clear all persisted data
*/
clearPersistedData(): void;
/**
* Reset all statistics
*/
reset(): void;
/**
* Destroy the instance and clean up
*/
destroy(): void;
private createInitialTabInfo;
private getCurrentState;
private getCurrentFocus;
private attachEventListeners;
private detachEventListeners;
private handleVisibilityChange;
private handleFocus;
private handleBlur;
private handleBeforeUnload;
private handleUnload;
private handlePageShow;
private handlePageHide;
private updateState;
private updateFocus;
private updateTimeInState;
private emitEvent;
private savePersistedData;
private loadPersistedData;
private log;
}
//# sourceMappingURL=DetectTab.d.ts.map