UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

52 lines (51 loc) 1.54 kB
"use strict"; // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. Object.defineProperty(exports, "__esModule", { value: true }); function isFunction(obj) { return typeof obj === 'function'; } class EventEmitter { listeners; constructor() { this.listeners = new Map(); } addListener(label, callback) { if (!this.listeners.has(label)) { this.listeners.set(label, []); } this.listeners.get(label).push(callback); } on(label, callback) { this.addListener(label, callback); } removeListener(label, callback) { const listeners = this.listeners.get(label); let index; if (listeners && listeners.length) { index = listeners.reduce((i, listener, idx) => { return isFunction(listener) && listener === callback ? idx : i; }, -1); if (index > -1) { listeners.splice(index, 1); this.listeners.set(label, listeners); return true; } } return false; } off(label, callback) { this.removeListener(label, callback); } emit(label, ...args) { const listeners = this.listeners.get(label); if (listeners && listeners.length) { listeners.forEach((listener) => { listener(...args); }); return true; } return false; } } exports.default = new EventEmitter();