UNPKG

@raona/sp

Version:

Raona utilities to work with Sharepoint using pnp/sp

49 lines (48 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Notifier /* extends Singleton<Notifier>() */ = /** @class */ (function () { function Notifier() { this.subscribers = {}; this.subscriptionCount = 0; } /* public constructor(){ super('notifier'); } */ Notifier.initialize = function () { window.notifier = window.notifier || new Notifier(); }; Notifier.getInstance = function () { this.initialize(); return window.notifier; }; Notifier.prototype.subscribe = function (subscriptionName, callback) { var subscriberList = this.subscribers[subscriptionName]; var subscriptionId = this.subscriptionCount++; // TODO: search a better way of getting a unique id if (typeof subscriberList !== 'undefined') { subscriberList[subscriptionId] = callback; } else { subscriberList = { subscriptionId: callback }; } this.subscribers[subscriptionName] = subscriberList; return { subscriptionName: subscriptionName, subscriptionId: subscriptionId }; }; Notifier.prototype.unsubscribe = function (_a) { var subscriptionName = _a.subscriptionName, subscriptionId = _a.subscriptionId; delete this.subscribers[subscriptionName][subscriptionId]; }; Notifier.prototype.notify = function (subscriptionName) { var values = []; for (var _i = 1; _i < arguments.length; _i++) { values[_i - 1] = arguments[_i]; } var subscriberList = this.subscribers[subscriptionName]; if (subscriberList) { Object.keys(subscriberList).map(function (sKey) { subscriberList[sKey].apply(subscriberList, values); }); } }; return Notifier; }()); exports.Notifier = Notifier;