UNPKG

smart-idle

Version:

Lightweight browser library to detect user inactivity with event dispatching

179 lines (127 loc) โ€ข 4.34 kB
# ๐Ÿ’ค smart-idle **smart-idle** is a lightweight, customizable JavaScript library that detects user inactivity (idle state) in the browser. It helps you implement features like auto-logout, UI hiding, session timeout, or analytics triggers with ease. - ๐Ÿ”ง Framework-agnostic (works with React, Vue, Angular, Vanilla JS, etc.) - ๐ŸŽ›๏ธ Fully customizable idle timeout and activity events - ๐Ÿ’ก Built-in event listeners and manual control methods - ๐Ÿงช Minimal dependencies and small size --- ## ๐Ÿ“ฆ Installation ### Using npm ``` npm install smart-idle ``` ### Using CDN (for browser use) ``` <script type="module"> import { SmartIdle } from 'https://cdn.jsdelivr.net/npm/smart-idle/+esm'; const idle = new SmartIdle({ timeout: 10000 }); idle.start(); </script> ``` --- ## ๐Ÿš€ Getting Started ### Basic Example ``` import { SmartIdle } from 'smart-idle'; const idle = new SmartIdle({ timeout: 60000, // 1 minute onIdle: () => console.log('User is idle'), onActive: () => console.log('User is active again'), }); idle.start(); ``` --- ## โš™๏ธ Configuration Options When you create a `SmartIdle` instance, you can pass these options: | Option | Type | Default | Description | |------------|------------|-----------------------------|------------------------------------------| | `timeout` | `number` | `60000` (ms) | Time (in milliseconds) before becoming idle | | `onIdle` | `Function` | `() => {}` | Callback fired when user becomes idle | | `onActive` | `Function` | `() => {}` | Callback fired when user returns | | `events` | `string[]` | See below | DOM events to listen to | ### Default `events` listened to: ``` [ 'mousemove', 'scroll', 'keydown', 'touchstart', 'visibilitychange' ] ``` You can override this like so: ``` const idle = new SmartIdle({ timeout: 15000, events: ['click', 'keydown', 'pointermove'], // custom events }); ``` --- ## ๐Ÿ“š API Reference | Method | Description | |------------------|-------------------------------------------------| | `start()` | Start tracking user activity | | `stop()` | Stop tracking and clear timers | | `pause()` | Temporarily pause idle tracking | | `resume()` | Resume tracking after pause | | `reset()` | Reset the internal idle timer | | `destroy()` | Remove all listeners and stop everything | | `triggerIdle()` | Manually set the state to idle immediately | --- ## ๐Ÿ’ก Use Cases - ๐Ÿ” Auto logout users after inactivity - ๐Ÿ›‘ Pause video/audio when the user is idle - ๐Ÿงผ Dim or hide UI after a period of no input - ๐Ÿ“Š Trigger analytics or session tracking - ๐Ÿ“‰ Conserve resources in low-interaction tabs --- ## ๐Ÿ”Œ Framework Examples ### React ``` useEffect(() => { const idle = new SmartIdle({ timeout: 10000, onIdle: () => console.log('Idle'), onActive: () => console.log('Active'), }); idle.start(); return () => idle.destroy(); }, []); ``` ### Vue (Composition API) ``` onMounted(() => { const idle = new SmartIdle({ timeout: 10000, onIdle: () => console.log("Idle"), onActive: () => console.log("Back"), }); idle.start(); }); onUnmounted(() => idle.destroy()); ``` --- ## ๐Ÿ–ฅ๏ธ CLI Support (Optional) This package comes with a CLI entry point for developer information. ### Install globally: ``` npm install -g smart-idle ``` ### Use: ``` smart-idle --help ``` > โš ๏ธ Note: The CLI is informational only; this is not a Node-based runtime tool. --- ## ๐ŸŒ Browser Compatibility | Browser | Supported | |---------------|-----------| | Chrome | โœ… | | Firefox | โœ… | | Safari | โœ… | | Edge | โœ… | | Internet Explorer | โŒ | > This library is **not designed** for Node.js usage. --- ## ๐Ÿ“ License MIT License ยฉ 2025 ward-00