import {ComponentType} from 'react'; import {Subject, Observable, firstValueFrom} from 'rxjs'; import {nanoid} from 'nanoid'; export class ModalRef { reactKey: string = nanoid(6); constructor( public closeEmitter: Subject, public ModalComponent: ComponentType ) {} get afterClose(): Promise { return firstValueFrom(this.closeEmitter.asObservable()); } get afterCloseAsObservable(): Observable { return this.closeEmitter.asObservable(); } close(out: Out) { this.closeEmitter.next(out); } }