ventana
TypeScript icon, indicating that this package has built-in type declarations

0.6.2 • Public • Published

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.

Readme

Keywords

Package Sidebar

Install

npm i ventana

Weekly Downloads

2

Version

0.6.2

License

none

Last publish

Collaborators

  • asakusuma