mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-16 15:40:11 +01:00
25 lines
711 B
TypeScript
25 lines
711 B
TypeScript
import { Inject, Injectable } from '@angular/core';
|
|
import { Observable, fromEvent as observableFromEvent } from 'rxjs';
|
|
import { filter, map } from 'rxjs/operators';
|
|
import { NB_WINDOW } from '@nebular/theme';
|
|
|
|
@Injectable()
|
|
export class NgxIframeCommunicatorService {
|
|
|
|
constructor(@Inject(NB_WINDOW) private window) {
|
|
}
|
|
|
|
public send(payload: any, target: Window = this.window.parent) {
|
|
if (target !== this.window) {
|
|
target.postMessage(payload, '*');
|
|
}
|
|
}
|
|
|
|
public receive(id: string): Observable<any> {
|
|
return observableFromEvent(this.window, 'message')
|
|
.pipe(
|
|
filter((msg: any) => msg.data && msg.data.id === id),
|
|
map((msg: any) => msg.data),
|
|
);
|
|
}
|
|
}
|