UNPKG

vasille

Version:

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

57 lines (56 loc) 1.31 kB
import { Listener } from "./listener.js"; /** * A Set based model * @class SetModel * @extends Set * @implements IModel */ export class SetModel extends Set { /** * Constructs a set model based on a set * @param set {Set} input data */ constructor(set) { super(); this.listener = new Listener(); set?.forEach(item => { super.add(item); }); } /** * Calls Set.add and notify abut changes * @param value {*} value * @return {this} a pointer to this */ add(value) { /* istanbul ignore else */ if (!super.has(value)) { this.listener.emitAdded(value, value); super.add(value); } return this; } /** * Calls Set.clear and notify abut changes */ clear() { this.forEach(item => { this.listener.emitRemoved(item, item); }); super.clear(); } /** * Calls Set.delete and notify abut changes * @param value {*} * @return {boolean} true if a value was deleted, otherwise false */ delete(value) { if (super.has(value)) { this.listener.emitRemoved(value, value); } return super.delete(value); } destroy() { this.clear(); } }