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

ui-event-observer

v2.0.0

Published

Provide performant way to subscribe to browser UI Events.

Downloads

2,078

Readme

ui-event-observer Build Status

Provide performant/simple way to subscribe to browser DOM UI Events.

You can use a single addEventListener instead of multiple addEventListener for DOM UI Events by UIEventObserver.

Example project show that add 100 "scroll" event handler to window.

addEventListener vs, UIEventObserver

  • Left: 100x addEventListener
  • Right: 1 UIEventObserver

Features

  • Provide Observer for addEventListener
    • With UIEventObserver, instead of calling multiple window.addEventListener('scroll', eventHandler) by different components, call subscribe(window, 'scroll', eventHandler).
    • It will only add a single event listener and dispatch event to those who subscribe the event via EventEmitter.
  • Lightweight: 5kb(gzip)

Related library:

Install

Install with npm:

npm install ui-event-observer

Example

// singleton
import { eventObserver } from "ui-event-observer";
const handler = (event) => {
    // do something
};
// subscribe "scroll" event
eventObserver.subscribe(window, "scroll", handler);
// fire by interaction
const event = new Event("scroll");
window.dispatchEvent(event);
// unsubscribe
eventObserver.unsubscribe(window, "scroll", handler);
// unsubscribe all
eventObserver.unsubscribeAll();

You can also use UIEventObserver class:

import { UIEventObserver } from "ui-event-observer";

Usage

UIEventObserver

UIEventObserver class provide performant/simple way to subscribe to browser DOM UI Events.

subscribe(target: Object, eventName: string, handler: Function): Function

registers the specified handler on the target element it's called eventName.

Parameters

Returns: Function - unsubscribe handler

subscribeOnce(target: Object, eventName: string, handler: Function): Function

registers the specified handler on the target element it's called eventName. It is called at once difference from UIEventObserver#subscribe

Parameters

Returns: Function - unsubscribe handler

unsubscribe(target: Object, eventName: string, handler: Function)

removes the event handler previously registered with UIEventObserver#subscribe

Parameters

unsubscribeAll()

unsubscribe all events with DOM Event

hasSubscriber(targetElement: Object, domEventName: string): boolean

if has a subscriber at least one, return true

Parameters

Returns: boolean

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu