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