cocori-ng
Version:
Cocori-ng is an Angular full of great components & utilites based on Material
42 lines • 6.38 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
export class BroadcastEventService {
constructor() {
this._broadcastedEvents = [];
this._eventBus = new Subject();
}
broadcast(event) {
this._eventBus.next(event);
}
listen(keys) {
const eventKey = keys.join("-");
if (!this.isEventKnown(eventKey)) {
const newEvent = this._eventBus.asObservable()
.pipe(filter(event => (event.eventKeys.join("-")) === eventKey), map(event => event.eventData));
this._broadcastedEvents.push({ eventKey: eventKey, event: newEvent });
return newEvent;
}
else {
return this.returnEvent(eventKey);
}
}
isEventKnown(eventKey) {
const index = this._broadcastedEvents.findIndex(entrée => entrée.eventKey === eventKey);
return index >= 0;
}
returnEvent(eventKey) {
const event = this._broadcastedEvents.find(event => event.eventKey === eventKey);
return event.event;
}
}
BroadcastEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BroadcastEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
BroadcastEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BroadcastEventService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: BroadcastEventService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0LWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Nvcmktbmcvc3JjL2ZlYXR1cmUtY29yZS9zZXJ2aWNlL2Jyb2FkY2FzdC1ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWlCN0MsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QjtRQUZRLHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFHMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXFCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUksSUFBZTtRQUNyQixNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXZDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sUUFBUSxHQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtpQkFDeEQsSUFBSSxDQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsRUFDekQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUNoQyxDQUFDO1lBRU4sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFaEYsT0FBTyxRQUFRLENBQUM7U0FDbkI7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsUUFBZ0I7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFeEYsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTyxXQUFXLENBQUksUUFBZ0I7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFakYsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7O2tIQXhDUSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbnRlcmZhY2UgQnJvYWRjYXN0RXZlbnQge1xyXG4gICAgZXZlbnRLZXlzOiBFdmVudEtleXM7XHJcbiAgICBldmVudERhdGE/OiBhbnk7XHJcbn1cclxuXHJcbmludGVyZmFjZSBFdmVudDxUPiB7XHJcbiAgICBldmVudEtleTogc3RyaW5nO1xyXG4gICAgZXZlbnQ6IE9ic2VydmFibGU8VD47XHJcbn1cclxuXHJcbnR5cGUgRXZlbnRLZXlzID0gKHN0cmluZyB8IG51bWJlcilbXTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyb2FkY2FzdEV2ZW50U2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9ldmVudEJ1czogU3ViamVjdDxCcm9hZGNhc3RFdmVudD47XHJcbiAgICBwcml2YXRlIF9icm9hZGNhc3RlZEV2ZW50czogRXZlbnQ8YW55PltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5fZXZlbnRCdXMgPSBuZXcgU3ViamVjdDxCcm9hZGNhc3RFdmVudD4oKTtcclxuICAgIH1cclxuXHJcbiAgICBicm9hZGNhc3QoZXZlbnQ6IEJyb2FkY2FzdEV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fZXZlbnRCdXMubmV4dChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdGVuPFQ+KGtleXM6IEV2ZW50S2V5cyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5OiBzdHJpbmcgPSBrZXlzLmpvaW4oXCItXCIpXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0V2ZW50S25vd24oZXZlbnRLZXkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0V2ZW50OiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fZXZlbnRCdXMuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiAoZXZlbnQuZXZlbnRLZXlzLmpvaW4oXCItXCIpKSA9PT0gZXZlbnRLZXkpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcChldmVudCA9PiBldmVudC5ldmVudERhdGEpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2Jyb2FkY2FzdGVkRXZlbnRzLnB1c2goPEV2ZW50PFQ+PnsgZXZlbnRLZXk6IGV2ZW50S2V5LCBldmVudDogbmV3RXZlbnQgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbmV3RXZlbnQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRXZlbnQoZXZlbnRLZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzRXZlbnRLbm93bihldmVudEtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9icm9hZGNhc3RlZEV2ZW50cy5maW5kSW5kZXgoZW50csOpZSA9PiBlbnRyw6llLmV2ZW50S2V5ID09PSBldmVudEtleSk7XHJcblxyXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmV0dXJuRXZlbnQ8VD4oZXZlbnRLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fYnJvYWRjYXN0ZWRFdmVudHMuZmluZChldmVudCA9PiBldmVudC5ldmVudEtleSA9PT0gZXZlbnRLZXkpO1xyXG5cclxuICAgICAgICByZXR1cm4gZXZlbnQuZXZlbnQ7XHJcbiAgICB9XHJcbn1cclxuIl19