ui-event-observer v2.0.0
ui-event-observer 
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.

- Left: 100x
addEventListener - Right: 1
UIEventObserver
Features
- Provide Observer for
addEventListener- With
UIEventObserver, instead of calling multiplewindow.addEventListener('scroll', eventHandler)by different components, callsubscribe(window, 'scroll', eventHandler). - It will only add a single event listener and dispatch event to those who subscribe the event via EventEmitter.
- With
- Lightweight: 5kb(gzip)
Related library:
Install
Install with npm:
npm install ui-event-observerExample
// 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 testContributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request :D
Author
License
MIT © azu