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

ventana

v0.6.2

Published

Viewport and window event utility microlibrary

Downloads

9

Readme

ventana Build Status

Window event microlibrary. Exposes a pretty API for window events and utilities.

ventana.on('scroll', function() {
  console.log('User scrolled');
});

Usage

Ventana is available as a standard npm module. Additionally, you can use the minified UMD file.

API

ventana.on(Object target, Function callback)

Bind to window events:

  • move - Triggered when the user scrolls on either axis.
  • resize
  • destroy (close tab or entire window)
  • hide (move to another tab)
  • show

move and resize callbacks receive an object parameter with timestamp, scrollTop, scrollLeft, width, and height.

Performance note

For performance reasons, the move event (aka scroll) is implemented via requestAnimationFrame.

ventana.queue(Function callback)

Queue up a function to be called after the next requestAnimationFrame loop completes.

Primitive Abstractions

Under the hood, there are two main abstractions used to implement Ventana: streams and queues.

Streams

The Ventana stream is a simple abstraction around lists of listeners with the ability to filter on values and work nicely with queues. Listeners can be functions, other streams, or queues. You write a single value to the stream, and each listener gets called with that value. Streams are used to represent a single type of repeatable event, like the user scrolling or the window being re-sized. In the later case, the value being passed by the stream could be the updated dimensions of the window.

Queues

Ventana queues represent a set of objects that can receive a stream of values, i.e. a Stream. Queues are usually an abstraction above a paired stream. For instance, a queue can represent a list of DOM objects that need to be modified when the user scrolls. In this example, a stream representing scroll events could be piped into the queue representing the DOM objects.