UNPKG

@arayutw/emitter

Version:

Functional Event Emitter(Pubsub).

63 lines (61 loc) 2.13 kB
/**! * emitter 0.0.1 * MIT License * Copyright (c) 2023 Yuta Arai **/ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Emitter = factory()); })(this, function () { 'use strict'; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); class Emitter { constructor() { this.Emitter$items = []; } on(name, handler, options) { this.off(name, handler); this.Emitter$items.push([name, handler, { once: !!(options == null ? void 0 : options.once) }]); } off(name, handler) { for (let a = this.Emitter$items, i = 0; a.length > i; i++) { if ("*" === name || a[i][0] === name && a[i][1] === handler) { a.splice(i--, 1); } } } emit(name, event) { this.Emitter$items.forEach(entry => { var _a; if (name === entry[0]) { entry[1](__spreadProps(__spreadValues({}, event), { target: this, type: name })); if ((_a = entry[2]) == null ? void 0 : _a.once) this.off(name, entry[1]); } }); } } return Emitter; });