UNPKG

@casual-simulation/aux-common

Version:
68 lines 1.97 kB
/* CasualOS is a set of web-based tools designed to facilitate the creation of real-time, multi-user, context-aware interactive experiences. * * Copyright (c) 2019-2025 Casual Simulation, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ /** * Event that has no arguments. */ export class Event { constructor() { this._listeners = []; } addListener(listener) { this._listeners.push(listener); } removeListener(listener) { const index = this._listeners.indexOf(listener); if (index !== -1) { this._listeners.splice(index, 1); } } removeAllListeners() { this._listeners = []; } invoke() { this._listeners.forEach((l) => { l(); }); } } /** * Event that takes typed argument. */ export class ArgEvent { constructor() { this._listeners = []; } addListener(listener) { this._listeners.push(listener); } removeListener(listener) { const index = this._listeners.indexOf(listener); if (index !== -1) { this._listeners.splice(index, 1); } } removeAllListeners() { this._listeners = []; } invoke(arg) { this._listeners.forEach((l) => { l(arg); }); } } //# sourceMappingURL=Event.js.map