@ecip/shared
Version:
60 lines • 3.21 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from "@angular/core";
import { Subject } from "rxjs/Rx";
/**
* @record
*/
function BroadcastEvent() { }
if (false) {
/** @type {?} */
BroadcastEvent.prototype.key;
/** @type {?|undefined} */
BroadcastEvent.prototype.data;
}
export class Broadcaster {
constructor() {
this._eventBus = new Subject();
}
/**
* @param {?} key
* @param {?=} data
* @return {?}
*/
broadcast(key, data) {
this._eventBus.next({ key, data });
}
/**
* @template T
* @param {?} key
* @return {?}
*/
on(key) {
return this._eventBus.asObservable()
.filter((/**
* @param {?} event
* @return {?}
*/
event => event.key === key))
.map((/**
* @param {?} event
* @return {?}
*/
event => (/** @type {?} */ (event.data))));
}
}
Broadcaster.decorators = [
{ type: Injectable }
];
/** @nocollapse */
Broadcaster.ctorParameters = () => [];
if (false) {
/**
* @type {?}
* @private
*/
Broadcaster.prototype._eventBus;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZWNpcC9zaGFyZWQvIiwic291cmNlcyI6WyJzcmMvYnJvYWRjYXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLFNBQVMsQ0FBQzs7OztBQUU1Qyw2QkFHQzs7O0lBRkMsNkJBQVM7O0lBQ1QsOEJBQVc7O0FBSWIsTUFBTSxPQUFPLFdBQVc7SUFHdEI7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO0lBQ2pELENBQUM7Ozs7OztJQUVELFNBQVMsQ0FBQyxHQUFRLEVBQUUsSUFBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7OztJQUVELEVBQUUsQ0FBSSxHQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTthQUNqQyxNQUFNOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBQzthQUNsQyxHQUFHOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxtQkFBRyxLQUFLLENBQUMsSUFBSSxFQUFBLEVBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUFoQkYsVUFBVTs7Ozs7Ozs7O0lBRVQsZ0NBQTJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gXCJyeGpzL1J4XCI7XHJcblxyXG5pbnRlcmZhY2UgQnJvYWRjYXN0RXZlbnQge1xyXG4gIGtleTogYW55O1xyXG4gIGRhdGE/OiBhbnk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJyb2FkY2FzdGVyIHtcclxuICBwcml2YXRlIF9ldmVudEJ1czogU3ViamVjdDxCcm9hZGNhc3RFdmVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fZXZlbnRCdXMgPSBuZXcgU3ViamVjdDxCcm9hZGNhc3RFdmVudD4oKTtcclxuICB9XHJcblxyXG4gIGJyb2FkY2FzdChrZXk6IGFueSwgZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5fZXZlbnRCdXMubmV4dCh7a2V5LCBkYXRhfSk7XHJcbiAgfVxyXG5cclxuICBvbjxUPihrZXk6IGFueSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50QnVzLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gZXZlbnQua2V5ID09PSBrZXkpXHJcbiAgICAgIC5tYXAoZXZlbnQgPT4gPFQ+ZXZlbnQuZGF0YSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==