E$
A lightweight, isomorphic event emitter.
Overview
E$ can be used standalone or inherited by other classes.
const emoney = E$({
handleE$() { ... }
});
class E$Extended extends E$ {
handleE$() { ... }
}
E$ provides a clean way to interface with object instances.
emoney
.$when('loading', (e, pct) => console.log('loading... (%s%)', pct))
.$when('ready', () => console.log('ready!'))
.$when('error', (e, err) => console.error(err.stack));
E$ instances can communicate via the handleE$
method.
const emitter = E$();
const watcher = E$({
handleE$(e, str, obj) {
expect(str).to.eql('awesome');
expect(obj).to.eql({ rad: true });
}
});
watcher.$watch(emitter);
emitter.$emit('gnarly', ['awesome', { rad: true }]);
expect(watcher.handleE$).to.have.been.called.once;
E$ can be used to create a DOM-like event tree.
const emitter = E$();
const watcher1 = E$();
const watcher2 = E$();
const spy = sinon.spy();
watcher2
.$watch(watcher1)
.$when('gnarly', spy);
watcher1
.$watch(emitter)
.$when('gnarly', e => e.stopPropagation());
emitter.$emit('gnarly', () => expect(spy).to.have.not.been.called);
Methods
(static)
E$.is(subject) → {boolean}
Returns true if subject is E$-ish, false otherwise.
const emoney = E$();
const emoneyIsh = new E$Extended();
const somethingElse = new SomethingElse();
emoney instanceof E$;
E$.is(emoney);
emoneyIsh instanceof E$;
E$.is(emoneyIsh);
E$.is(somethingElse);
.$when(events, argsopt, fnopt) → {instance}
Adds an event listener.
Parameter | Type | Description | Required |
---|
events | string
array | The event(s) to be handled. | yes |
args | variant
array | The argument(s) to be bound to the event handler. | no |
fn | function
E$ | The event handler. If E$.is(fn) == true , the event will be bound to instance.handleE$ . If fn is falsy, the event will be bound to emoney.handleE$ . | no |
emoney.$when('gnarly', () => { ... });
emoney.$when(['gnarly', 'rad'], 'arg', () => { ... });
.$once(events, argsopt, fnopt) → {instance}
Adds an event listener that is removed after the first time it is invoked.
Parameter | Type | Description | Required |
---|
events | string
array | The event(s) to be handled. | yes |
args | variant
array | The argument(s) to be bound to the event fn. | no |
fn | function
E$ | The event handler. | no |
emoney.$once('gnarly', () => { ... });
emoney.$once(['gnarly', 'rad'], 'arg', () => { ... });
.$emit(events, argsopt, callbackopt) → {instance}
Emits an event.
Parameter | Type | Description | Required |
---|
events | string
array | The event(s) to be emitted. | yes |
args | variant
array | The argument(s) to be passed to the event handler. | no |
callback | function | A function to be executed at the end of the event chain (see event behavior). | no |
emoney.$emit('gnarly', () => { ... });
emoney.$emit(['gnarly', 'rad'], 'arg', () => { ... });
emoney.$emit('gnarly', ['arg1', 'arg2'], () => { ... });
.$dispel(events, wildopt, fnopt) → {instance}
Removes an event listener.
Parameter | Type | Description | Required |
---|
events | string
array
null | The event(s) to be removed. | yes |
wild | boolean | A boolean value denoting whether handlers bound to the wildcard event should be removed. | no |
fn | function
E$ | The event handler. | no |
emoney.$dispel('gnarly', fn);
emoney.$dispel(['gnarly', 'rad']);
emoney.$dispel(null, fn);
emoney.$dispel(null, true, fn);
emoney.$dispel(null, true);
.$watch(emitters) → {instance}
Starts watching E$ instance(s).
Parameter | Type | Description | Required |
---|
emitters | E$
array | The E$ instance(s) to watch. | yes |
listener.$watch(emitter1);
listener.$watch([emitter1, emitter2]);
.$unwatch(emitters) → {instance}
Stops watching E$ instance(s).
Parameter | Type | Description | Required |
---|
emitters | E$
array | The E$ instance(s) to stop watching. | yes |
listener.$unwatch(emitter1);
listener.$unwatch([emitter1, emitter2]);
Events
Properties
Property | Type | Default | Description |
---|
target | E$ | n/a | The event target. |
type | string | n/a | The event type. |
defaultPrevented | boolean | false | A flag denoting whether default was prevented. |
cancelBubble | boolean | false | A flag denoting whether propagation was stopped. |
timeStamp | number | n/a | The time at which the event was first triggered. |
Methods
.preventDefault()
Prevents the $emit callback from being executed.
emoney
.$when('gnarly', (e) => {
e.preventDefault();
console.log('fn1');
})
.$when('gnarly', () => console.log('fn2'))
.$emit('gnarly', () => console.log('cb'));
.stopPropagation()
Stops execution of the event chain and executes the emit callback.
emoney
.$when('gnarly', (e) => {
e.stopPropagation();
console.log('fn1');
})
.$when('gnarly', () => console.log('fn2'))
.$emit('gnarly', () => console.log('cb'));
Behavior
Build & Test
npm i && npm run build