UNPKG

vasille

Version:

The first Developer eXperience Orientated front-end framework (core library).

67 lines (66 loc) 1.64 kB
/** * Represent a listener for a model * @class Listener */ export class Listener { constructor() { /** * Functions to run on adding new items * @type Set */ this.onAdded = new Set(); /** * Functions to run on item removing * @type Set */ this.onRemoved = new Set(); } /** * Emits added event to listeners * @param index {*} index of value * @param value {*} value of added item */ emitAdded(index, value) { this.onAdded.forEach(handler => { handler(index, value); }); } /** * Emits removed event to listeners * @param index {*} index of removed value * @param value {*} value of removed item */ emitRemoved(index, value) { this.onRemoved.forEach(handler => { handler(index, value); }); } /** * Adds a handler to added event * @param handler {function} function to run on event emitting */ onAdd(handler) { this.onAdded.add(handler); } /** * Adds a handler to removed event * @param handler {function} function to run on event emitting */ onRemove(handler) { this.onRemoved.add(handler); } /** * Removes an handler from added event * @param handler {function} handler to remove */ offAdd(handler) { this.onAdded.delete(handler); } /** * Removes an handler form removed event * @param handler {function} handler to remove */ offRemove(handler) { this.onRemoved.delete(handler); } }