UNPKG

@protorians/signalable

Version:

Signal's Events Manager

137 lines (136 loc) 4.97 kB
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _Signalable_options, _Signalable_status, _Signalable_signalable, _Signalables_entries, _Signalables_signalable; /** * Signal Manager */ export class Signalable { constructor(signalable) { _Signalable_options.set(this, []); _Signalable_status.set(this, true); _Signalable_signalable.set(this, void 0); __classPrivateFieldSet(this, _Signalable_signalable, signalable, "f"); } /** * Get the object on which the signal management is grafted */ get signalable() { return __classPrivateFieldGet(this, _Signalable_signalable, "f"); } /** * Add a listener callback * @param options */ listen(options) { __classPrivateFieldGet(this, _Signalable_options, "f").push(options); return this; } /** * Dispatch all listen callback * @param payload */ dispatch(payload) { const status = __classPrivateFieldGet(this, _Signalable_status, "f"); for (let index = 0; index < __classPrivateFieldGet(this, _Signalable_options, "f").length; index++) { const option = __classPrivateFieldGet(this, _Signalable_options, "f")[index]; if (!__classPrivateFieldGet(this, _Signalable_status, "f")) break; if (typeof option == "function") option({ signal: this, signalable: this.signalable, payload, }); } this.status(status); return this; } /** * Cancel signal execution */ cancel() { return this.status(false); } status(status) { __classPrivateFieldSet(this, _Signalable_status, status, "f"); return this; } /** * Signal option * @param index */ option(index) { return __classPrivateFieldGet(this, _Signalable_options, "f")[index] || undefined; } get options() { return __classPrivateFieldGet(this, _Signalable_options, "f"); } } _Signalable_options = new WeakMap(), _Signalable_status = new WeakMap(), _Signalable_signalable = new WeakMap(); /** * Signal Managers */ export class Signalables { constructor(signalable) { _Signalables_entries.set(this, {}); _Signalables_signalable.set(this, void 0); __classPrivateFieldSet(this, _Signalables_signalable, signalable, "f"); } /** * Get Signalable all entries */ get entries() { return __classPrivateFieldGet(this, _Signalables_entries, "f"); } /** * Get the object on which the signal management is grafted */ get signalable() { return __classPrivateFieldGet(this, _Signalables_signalable, "f"); } /** * Add a listener callback * @param type * @param callback */ listen(type, callback) { __classPrivateFieldGet(this, _Signalables_entries, "f")[type] = __classPrivateFieldGet(this, _Signalables_entries, "f")[type] || (new Signalable(this.signalable)); __classPrivateFieldGet(this, _Signalables_entries, "f")[type].listen(callback); return this; } /** * Dispatch all listen callback * @param type * @param payload */ dispatch(type, payload) { if (__classPrivateFieldGet(this, _Signalables_entries, "f")[type]) { __classPrivateFieldGet(this, _Signalables_entries, "f")[type].dispatch(payload); } return this; } /** * Clean Signalable */ reset() { __classPrivateFieldSet(this, _Signalables_entries, {}, "f"); return this; } /** * Get Signalable entry * @param type */ entry(type) { return __classPrivateFieldGet(this, _Signalables_entries, "f")[type] || undefined; } } _Signalables_entries = new WeakMap(), _Signalables_signalable = new WeakMap();