npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

focus-interval

v1.2.0

Published

Run a function on an interval while an element is focused

Downloads

12

Readme

Build Status Coverage Status npm

focus-interval

Run a function on an interval while an element is focused.

$ npm install --save focus-interval

Usage

Executes a function at a defined interval only while an element is focused. When the element recieves focus again:

  • if the interval has elapsed, the function will be fired again and a new interval started.
  • if the interval has not elapsed, an interval will be set for the remaining time, after which the function will fire and a new interval started, e.g.
    • 10 minute interval
    • 4 minutes pass
    • Element looses focus
    • 2 minutes pass
    • Element receives focus
    • Interval gets set for 4 minutes
    • 4 minutes pass
    • Function fires
    • 10 minute interval begins
Setting an interval
focusInterval(<fn>, <ms>, <element>);
  • fn: The function to be fired on interval
  • ms: The duration of the interval in milliseconds
  • element: The DOM node to monitor for focus/blur events
Cancelling

focusInterval returns a function to remove the event handler from the element and cancels any active intervals.

import focusInterval from 'focus-interval';

const cancelInterval = focusInterval(() => {}, 1000, element);

cancelInterval();

Examples

Focus on a field

Save/persist the contents of a <textarea> every 3 seconds while the text area is focused

import focusInterval from 'focus-interval';

const savePost = () => {
  request
    .post('/story/save')
    .send(storyData);
};
const textArea = document.querySelector('textarea');

focusInterval(savePost, 3000, textArea);
Focus on a window or tab

Refresh your api authentication token every 30 minutes while the window is in focus.

import focusInterval from 'focus-interval';

const refreshToken = () => {
  request.get('/token');
};

focusInterval(refreshToken, 30000, window);

In this example leaving the window (e.g. the browser tab) for a period longer than the interval would mean when you refocus, the refreshToken function fires instantly, authenticating or logging them out.

License

MIT