# event-utility

> An utility for handling events

Latest version **0.0.3** (published 2018-04-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install event-utility
pnpm add event-utility
yarn add event-utility
bun add event-utility
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2018-04-11 |
| First published | 2018-03-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 16.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | David Perez Alvarez |
| Maintainers | theiades |
| Keywords | event, utility |

## Links

- npm: https://www.npmjs.com/package/event-utility
- npm.io page: https://npm.io/package/event-utility

## Alternatives

- [async-exit-hook](https://npm.io/package/async-exit-hook.md) — 3.7M weekly downloads
- [evnty](https://npm.io/package/evnty.md) — 7.2K weekly downloads
- [eleventy-plugin-asciidoc](https://npm.io/package/eleventy-plugin-asciidoc.md) — 3.5K weekly downloads
- [@jswork/next-get2get](https://npm.io/package/@jswork/next-get2get.md) — 945 weekly downloads
- [@dashersw/axon](https://npm.io/package/@dashersw/axon.md) — 934 weekly downloads

## Recent versions

- 0.0.3 (latest) — 2018-04-11
- 0.0.2 — 2018-04-11
- 0.0.1 — 2018-03-26

## README

# event-utility
A utility for easily managing events

## Installation

```console
$ npm install --save event-utility 
```

## Usage

### Adding and removing events
```js
const EventManager = require("event-utility");

const eventManager = new EventManager();

const id = eventManager.addEvent(target, eventName, callback);

eventManager.removeEvent(target, eventName, callback);
// or
eventManager.removeEventById(id);

```

#### Examples

```js
const id1 = eventManager.addEvent(window, "click", () => {
  console.log("hi 1");
});
const id2 = eventManager.addEvent(window, "click", () => {
  console.log("hi 2");
});
eventManager.removeEventById(id1);
```
When window's click event is fired it will output "hi 2"

```js
function sayHi() {
  console.log("hi");
}
eventManager.addEvent(window, "click", sayHi);
eventManager.removeEvent(window, "click", sayHi);
```
When window's click event is fired it will not have logged anything

### Advance removing events

```js
const props = {
  target?,
  eventName?,
  callback?,
};
eventManager.clearAll(props?);
```
If not prop specified it will remove all events added with that `eventManager` instance.
Otherwise it will remove all events that match every one of the params.

#### Examples

```js
eventManager.addEvent(document.body, "click", () => {
  console.log("will not");
});
eventManager.addEvent(window, "click", () => {
  console.log("click");
});
eventManager.clearAll({
  target: document.body,
});
```
Here it should log only "click"

```js
eventManager.addEvent(window, "keyup", () => {
  console.log("keyup");
});
eventManager.addEvent(window, "click", () => {
  console.log("click");
});
eventManager.clearAll({
  eventName: "click",
});
```
Clicking will not log anything. Typing keys will do instead

```js
eventManager.addEvent(document.body, "keyup", () => {
  console.log("keyup");
});
eventManager.addEvent(document.body, "click", () => {
  console.log("click body");
});
eventManager.addEvent(window, "click", () => {
  console.log("click window");
});
eventManager.clearAll({
  target: document.body,
  eventName: "click",
});
```
Here it will log "click window" and "keyup".

---
_Source: https://npm.io/package/event-utility · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
