UNPKG

react-native-canvas

Version:
78 lines (77 loc) 2.07 kB
"use strict"; /** * @typedef {Object} Message * @property {string} id */ Object.defineProperty(exports, "__esModule", { value: true }); var Bus = /** @class */ (function () { /** * @param {function} send */ function Bus(send) { this._paused = false; /** * @type {Object.<string, function>} */ this._messageListeners = {}; /** * @type {Message[]} */ this._queue = []; this._send = send; } /** * @param {Message} message * @return {Promise.<Message>} */ Bus.prototype.post = function (message) { var _this = this; return new Promise(function (resolve) { /** * Currently, 'set' is the only message type that's not resolved * back to the caller. If we store it here, it will leak memory * because the entry won't get removed from this._messageListeners. */ if (message.type !== "set") { _this._messageListeners[message.id] = resolve; } if (!_this._paused) { _this._send(message); } else { _this._queue.push(message); } }); }; /** * @param {Message} message * @return {void} */ Bus.prototype.handle = function (message) { var handler = this._messageListeners[message.id]; // Delete the message listener from the cache as soon as it's handled. delete this._messageListeners[message.id]; if (handler) { handler(message); } else { console.warn("Received unexpected message", message); } }; /** * @returns {void} */ Bus.prototype.pause = function () { this._paused = true; }; /** * @returns {void} */ Bus.prototype.resume = function () { this._paused = false; this._send(this._queue); this._queue = []; }; return Bus; }()); exports.default = Bus;