UNPKG

@dannyfranca/any-chat

Version:

Universal, extensible and improved JS API for Chats, like TawkTo, Jivochat, and others.

94 lines 3.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var rxjs_1 = require("rxjs"); var EventHandler = /** @class */ (function () { function EventHandler() { this._subscriptions = {}; this._events = {}; } EventHandler.prototype.on = function (eventString, callback) { var namespaces = eventString.split('.'); var eventName = namespaces[0]; var event = this._events[eventName]; if (!event) return; var subscription = event.subject.subscribe({ next: function (data) { callback(data); } }); this.storeSubscription(namespaces, subscription); }; EventHandler.prototype.off = function (eventString) { var namespaces = eventString.split('.'); for (var _i = 0, namespaces_1 = namespaces; _i < namespaces_1.length; _i++) { var namespace = namespaces_1[_i]; this.removeNamespaceSubscriptions(namespace); } }; EventHandler.prototype.init = function () { this.mapEvents(); }; EventHandler.prototype.mapEvents = function () { for (var _i = 0, _a = Object.keys(this._eventMap); _i < _a.length; _i++) { var prop = _a[_i]; var callbackTuple = this._eventMap[prop]; if (!callbackTuple) continue; var callbackName = void 0; var callback = void 0; if (typeof callbackTuple === 'string') { callbackName = callbackTuple; callback = function () { }; } else { callbackName = callbackTuple[0]; callback = callbackTuple[1]; } this._events[prop] = { subject: new rxjs_1.Subject(), callbackName: callbackName, callback: callback }; } }; EventHandler.prototype.trigger = function (eventName) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var event = this._events[eventName]; if (!event) return; event.subject.next(event.callback.apply(event, args)); }; EventHandler.prototype.hasEvent = function (eventName) { return Boolean(this._events[eventName]); }; EventHandler.prototype.storeSubscription = function (namespaces, subscription) { for (var _i = 0, namespaces_2 = namespaces; _i < namespaces_2.length; _i++) { var namespace = namespaces_2[_i]; this._subscriptions[namespace] = this._subscriptions[namespace] || []; this._subscriptions[namespace].push(subscription); } }; EventHandler.prototype.removeNamespaceSubscriptions = function (namespace) { var subscriptions = this._subscriptions[namespace]; if (subscriptions) { for (var _i = 0, subscriptions_1 = subscriptions; _i < subscriptions_1.length; _i++) { var subscription = subscriptions_1[_i]; subscription.unsubscribe(); } this._subscriptions[namespace] = []; } }; EventHandler.setError = function (message, error) { if (error) message += " -> " + error.message; return new Error(message); }; return EventHandler; }()); exports.default = EventHandler; //# sourceMappingURL=EventHandler.js.map