@ashetm/ng-broadcast-channel
Version:
``@ashetm/ng-broadcast-channel`` is a library that simplify manipulation of ``BroadcastChannel`` API.
26 lines • 3.52 kB
JavaScript
import { Observable } from "rxjs";
export class BroadcastChannelRef {
get name() {
return this._broadcastChannel.name;
}
constructor(_ngZone, _name) {
this._ngZone = _ngZone;
this._name = _name;
this.data$ = new Observable((subscriber) => {
this._broadcastChannel.onmessage = (event) => {
this._ngZone.run(() => subscriber.next(event.data));
};
this._broadcastChannel.onmessageerror = (event) => {
this._ngZone.run(() => subscriber.error(event.data));
};
});
this._broadcastChannel = new BroadcastChannel(_name);
}
close() {
this._broadcastChannel.close();
}
send(data) {
this._broadcastChannel.postMessage(data);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0LWNoYW5uZWwucmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYnJvYWRjYXN0LWNoYW5uZWwvc3JjL2xpYi9icm9hZGNhc3QtY2hhbm5lbC5yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUc5QyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFDbUIsT0FBZSxFQUNmLEtBQWE7UUFEYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQWpCdkIsVUFBSyxHQUFrQixJQUFJLFVBQVUsQ0FBSSxDQUFDLFVBQXlCLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBc0IsRUFBRSxFQUFFO2dCQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxLQUFzQixFQUFFLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFZRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQU87UUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIjtcblxuXG5leHBvcnQgY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZjxUPiB7XG5cbiAgcmVhZG9ubHkgZGF0YSQ6IE9ic2VydmFibGU8VD4gPSBuZXcgT2JzZXJ2YWJsZTxUPigoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxUPikgPT4ge1xuICAgIHRoaXMuX2Jyb2FkY2FzdENoYW5uZWwub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQ8VD4pID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gc3Vic2NyaWJlci5uZXh0KGV2ZW50LmRhdGEpKTtcbiAgICB9O1xuICAgIHRoaXMuX2Jyb2FkY2FzdENoYW5uZWwub25tZXNzYWdlZXJyb3IgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudDxUPikgPT4ge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiBzdWJzY3JpYmVyLmVycm9yKGV2ZW50LmRhdGEpKTtcbiAgICB9O1xuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9icm9hZGNhc3RDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb2FkY2FzdENoYW5uZWwubmFtZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hbWU6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLl9icm9hZGNhc3RDaGFubmVsID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoX25hbWUpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fYnJvYWRjYXN0Q2hhbm5lbC5jbG9zZSgpO1xuICB9XG5cbiAgc2VuZChkYXRhOiBUKTogdm9pZCB7XG4gICAgdGhpcy5fYnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZShkYXRhKTtcbiAgfVxuXG59XG4iXX0=