https://github.com/dy/emmy
Events toolkit
https://github.com/dy/emmy
Last synced: 9 months ago
JSON representation
Events toolkit
- Host: GitHub
- URL: https://github.com/dy/emmy
- Owner: dy
- License: other
- Created: 2014-08-27T18:12:03.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-10-18T00:42:09.000Z (over 1 year ago)
- Last Synced: 2025-08-18T05:28:02.196Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 396 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: license.md
Awesome Lists containing this project
README
# Emmy [](https://github.com/dy/emmy/actions/workflows/test.js.yml)
Universal events binder.
* [x] Multiple events `on(el, 'click touchstart', cb)`
* [x] Event classes `on(el, 'click.x', cb), off(el, '.x')`
* [x] Uses native events, if available.
* [x] Delegate `on('.subel', 'click', cb, { target: container })`
## Usage
[](https://npmjs.org/package/emmy)
```js
import {on, off, emit} from 'emmy'
on(el, 'evt.foo', e => {})
emit(el, 'evt', {x: 1})
off(el, '.foo')
```
## API
### `off = on(target, event, handler, opts?)`
Bind `event` handler to `target` events.
* `event` can be a string or an array, optionally with class suffixes `click.tag1.tag2`
* `target` can be an element, list, or a string to delegate events.
* `opts` can provide `opts.target` for delegate target and listener props.
```js
// dragging
on(el, 'mousedown touchstart', () => {
// ...init drag
on(el, 'mousemove.drag touchmove.drag', () => {
// ...handle drag
})
on(el, 'mouseup.drag touchend.drag', () => {
off(el, '.drag')
// ...end drag
})
})
// delegate
let off = on('.selector', 'click', handler, { target: container })
// remove listener
off()
```
---
### `off(target, event?, callback?)`
Remove `event` handler from a `target`. If `callback` isn't passed - all registered listeners are removed. If `event` isn't passed - all registered callbacks for all known events are removed (useful on destroying the target).
```js
// remove handler the standard way
off(target, 'click', handler)
// remove handler for all registered events
off(target, handler)
// remove all events with provided suffix[es]
off(target, '.special')
```
---
### `emit(target, event, data?, options?)`
Emit an `event` on a `target`. `event` can be a string or an _Event_ instance. If `target` is an element then `data` is placed to `e.details`. `options` can define triggering params, eg. `{bubbles: true}`.
## License
MIT © Dmitry Ivanov.