active-detector
Detect whether browser user is still active.

Install
yarn add active-detector
Example
Demo here. Excute yarn && yarn start
and watch the log in console.
Usage
Quick Start
import { AD, USER_STATE, ActiveRange } from 'active-detector'
const ad = new AD()
ad.getState()
ad.ActiveRange()
ad.on('active', () => console.log('turn to active'))
ad.on('inactive', () => console.log('turn to inactive'))
ad.on('tick', (state) => console.log(`tick tick, user is ${state} now.`))
Options
Configuration of active-detector.
const ad = new ActiveDetector({
inactiveThresh: 10000,
throttleTimeout: 500,
})
Add Listener
The callbacks will be invoked when user from inactive to active, or from active to inactive.
active-detector use tiny-emitter as the callback controller.
on: (action: LISTENABLE_ACTION, cb: (ActiveRange[])=> any) => void
off: (action: LISTENABLE_ACTION, cb: (ActiveRange[])=> any) => void
once: (action: LISTENABLE_ACTION, cb: (ActiveRange[])=> any) => void
type LISTENABLE_ACTION =
| 'active'
| 'inactive'
| 'tick'
Get Current State
Get current user state.
getState: () => USER_STATE;
Get Active Time Ranges
Get current active time ranges. The start/end time is an Unix timestamp.
getRanges: () => ActiveRange[];
Clear Time Ranges
Clear time ranges immediately, it might be used in case you have reported number of ranges by time.
clearRanges: () => void;