UNPKG

vasille

Version:

The same framework which is designed to build bulletproof frontends (core library).

65 lines (64 loc) 1.56 kB
/** * Represent a listener for a model * @class Listener */ export class Listener { /** * Functions to run on adding new items * @type Set */ onAdded = new Set(); /** * Functions to run on item removing * @type Set */ 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 a handler from added event * @param handler {function} handler to remove */ offAdd(handler) { this.onAdded.delete(handler); } /** * Removes a handler form removed event * @param handler {function} handler to remove */ offRemove(handler) { this.onRemoved.delete(handler); } }