UNPKG

tuain-ng-forms-lib

Version:

Componentes y Clases Angular para la gestión de formularios TUAIN

55 lines 8.56 kB
import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs'; export class LibEventManagerService { eventSubjects = {}; eventSubjectParams = {}; constructor(eventSet) { eventSet.forEach((event) => { this.addEventName(event); }); } addEventName(event, rebuild = false) { const eventObject = (typeof event === 'string') ? { name: event } : event; const { name, type, initialValue, windowTime, timestampProvider } = eventObject; const currentSubject = this.eventSubjects[name]; if (rebuild && currentSubject) { currentSubject.complete(); } if (rebuild || !currentSubject) { if (type === 'behaviour') { this.eventSubjects[name] = new BehaviorSubject(initialValue); } else if (type === 'subject') { this.eventSubjects[name] = new Subject(); } else { this.eventSubjects[name] = new ReplaySubject(initialValue, windowTime, timestampProvider); } this.eventSubjectParams[name] = { name, windowTime, timestampProvider }; } } resetSubject(eventClassName) { const { name, windowTime, timestampProvider } = this.eventSubjectParams[eventClassName]; this.addEventName({ name, windowTime, timestampProvider }); } getEventNames() { return Object.keys(this.eventSubjects); } getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] ?? null : null; } subscribe(eventClassName, callback) { return this.getSubject(eventClassName).subscribe(callback); } next(eventClassName, data) { const subject = this.getSubject(eventClassName); if (!subject) { console.error(`No se encontró subject ${eventClassName}`); return; } subject.next(data); } destroy() { Object.values(this.eventSubjects).forEach((subject) => { subject.complete(); }); this.eventSubjects = {}; this.eventSubjectParams = {}; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvc2VydmljZXMvZXZlbnQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFVN0UsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxhQUFhLEdBQTZFLEVBQUUsQ0FBQztJQUM3RixrQkFBa0IsR0FBb0MsRUFBRSxDQUFDO0lBRXpELFlBQVksUUFBc0M7UUFDaEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBK0IsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUMzRCxNQUFNLFdBQVcsR0FBb0IsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQ2hGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7WUFDOUIsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9CLElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9ELENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDNUYsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxjQUFzQjtRQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWEsS0FBZSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyRSxVQUFVLENBQUMsY0FBc0I7UUFDL0IsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUUsQ0FBQztJQUVELFNBQVMsQ0FBQyxjQUFzQixFQUFFLFFBQTZCO1FBQzdELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFzQixFQUFFLElBQVM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BELE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudERlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU/OiAnYmVoYXZpb3VyJyB8ICdzdWJqZWN0JyB8ICdyZXBsYXknO1xuICBpbml0aWFsVmFsdWU/OiBhbnk7XG4gIHdpbmRvd1RpbWU/OiBudW1iZXI7XG4gIHRpbWVzdGFtcFByb3ZpZGVyPzogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgTGliRXZlbnRNYW5hZ2VyU2VydmljZSB7XG4gIGV2ZW50U3ViamVjdHM6IFJlY29yZDxzdHJpbmcsIFN1YmplY3Q8YW55PiB8IEJlaGF2aW9yU3ViamVjdDxhbnk+IHwgUmVwbGF5U3ViamVjdDxhbnk+PiA9IHt9O1xuICBldmVudFN1YmplY3RQYXJhbXM6IFJlY29yZDxzdHJpbmcsIEV2ZW50RGVmaW5pdGlvbj4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihldmVudFNldDogKHN0cmluZyB8IEV2ZW50RGVmaW5pdGlvbilbXSkge1xuICAgIGV2ZW50U2V0LmZvckVhY2goKGV2ZW50KSA9PiB7IHRoaXMuYWRkRXZlbnROYW1lKGV2ZW50KTsgfSk7XG4gIH1cblxuICBhZGRFdmVudE5hbWUoZXZlbnQ6IHN0cmluZyB8IEV2ZW50RGVmaW5pdGlvbiwgcmVidWlsZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRPYmplY3Q6IEV2ZW50RGVmaW5pdGlvbiA9ICh0eXBlb2YgZXZlbnQgPT09ICdzdHJpbmcnKSA/IHsgbmFtZTogZXZlbnQgfSA6IGV2ZW50O1xuICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgaW5pdGlhbFZhbHVlLCB3aW5kb3dUaW1lLCB0aW1lc3RhbXBQcm92aWRlciB9ID0gZXZlbnRPYmplY3Q7XG4gICAgY29uc3QgY3VycmVudFN1YmplY3QgPSB0aGlzLmV2ZW50U3ViamVjdHNbbmFtZV07XG4gICAgaWYgKHJlYnVpbGQgJiYgY3VycmVudFN1YmplY3QpIHtcbiAgICAgIGN1cnJlbnRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfVxuICAgIGlmIChyZWJ1aWxkIHx8ICFjdXJyZW50U3ViamVjdCkge1xuICAgICAgaWYgKHR5cGUgPT09ICdiZWhhdmlvdXInKSB7XG4gICAgICAgIHRoaXMuZXZlbnRTdWJqZWN0c1tuYW1lXSA9IG5ldyBCZWhhdmlvclN1YmplY3QoaW5pdGlhbFZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N1YmplY3QnKSB7XG4gICAgICAgIHRoaXMuZXZlbnRTdWJqZWN0c1tuYW1lXSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV2ZW50U3ViamVjdHNbbmFtZV0gPSBuZXcgUmVwbGF5U3ViamVjdChpbml0aWFsVmFsdWUsIHdpbmRvd1RpbWUsIHRpbWVzdGFtcFByb3ZpZGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXZlbnRTdWJqZWN0UGFyYW1zW25hbWVdID0geyBuYW1lLCB3aW5kb3dUaW1lLCB0aW1lc3RhbXBQcm92aWRlciB9O1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U3ViamVjdChldmVudENsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgeyBuYW1lLCB3aW5kb3dUaW1lLCB0aW1lc3RhbXBQcm92aWRlciB9ID0gdGhpcy5ldmVudFN1YmplY3RQYXJhbXNbZXZlbnRDbGFzc05hbWVdO1xuICAgIHRoaXMuYWRkRXZlbnROYW1lKHsgbmFtZSwgd2luZG93VGltZSwgdGltZXN0YW1wUHJvdmlkZXIgfSk7XG4gIH1cblxuICBnZXRFdmVudE5hbWVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZXZlbnRTdWJqZWN0cyk7IH1cblxuICBnZXRTdWJqZWN0KGV2ZW50Q2xhc3NOYW1lOiBzdHJpbmcpOiBTdWJqZWN0PGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gZXZlbnRDbGFzc05hbWUgPyB0aGlzLmV2ZW50U3ViamVjdHNbZXZlbnRDbGFzc05hbWVdID8/IG51bGwgOiBudWxsO1xuICB9XG5cbiAgc3Vic2NyaWJlKGV2ZW50Q2xhc3NOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJqZWN0KGV2ZW50Q2xhc3NOYW1lKSEuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIG5leHQoZXZlbnRDbGFzc05hbWU6IHN0cmluZywgZGF0YTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3ViamVjdCA9IHRoaXMuZ2V0U3ViamVjdChldmVudENsYXNzTmFtZSk7XG4gICAgaWYgKCFzdWJqZWN0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBObyBzZSBlbmNvbnRyw7Mgc3ViamVjdCAke2V2ZW50Q2xhc3NOYW1lfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdWJqZWN0Lm5leHQoZGF0YSk7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5ldmVudFN1YmplY3RzKS5mb3JFYWNoKChzdWJqZWN0KSA9PiB7XG4gICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudFN1YmplY3RzID0ge307XG4gICAgdGhpcy5ldmVudFN1YmplY3RQYXJhbXMgPSB7fTtcbiAgfVxufVxuIl19