@alauda-fe/common
Version:
Alauda frontend team common codes.
38 lines • 4.81 kB
JavaScript
import { isDevMode } from '@angular/core';
export class BaseWindowChannel {
constructor() {
this.self = window;
this.listeners = {};
}
init(window) {
this.otherSide = window;
const listener = ({ data, }) => {
this.listeners[data.type]?.forEach(callback => {
callback(data.payload);
});
};
this.self.addEventListener('message', listener);
return () => {
this.self.removeEventListener('message', listener);
};
}
send(type, payload) {
if (!this.otherSide) {
return;
}
this.otherSide.postMessage({
type,
payload,
}, isDevMode() ? '*' : document.location.origin);
}
listen(type, callback) {
if (!this.listeners[type]) {
this.listeners[type] = new Set();
}
this.listeners[type].add(callback);
return () => {
this.listeners[type].delete(callback);
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aW5kb3ctY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy93aW5kb3ctY2hhbm5lbC9iYXNlLXdpbmRvdy1jaGFubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUMsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNtQixTQUFJLEdBQUcsTUFBTSxDQUFDO1FBR3ZCLGNBQVMsR0FJYixFQUFFLENBQUM7SUFxRFQsQ0FBQztJQW5EVyxJQUFJLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUV4QixNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQ2hCLElBQUksR0FNTCxFQUFFLEVBQUU7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVoRCxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQXdCLElBQU8sRUFBRSxPQUE4QjtRQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3hCO1lBQ0UsSUFBSTtZQUNKLE9BQU87U0FDUixFQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FDSixJQUFPLEVBQ1AsUUFBaUQ7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZXNzYWdlUGF5bG9hZE1hcCwgTWVzc2FnZVR5cGUgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEJhc2VXaW5kb3dDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxmID0gd2luZG93O1xuICBwcml2YXRlIG90aGVyU2lkZT86IFdpbmRvdztcblxuICBwcml2YXRlIGxpc3RlbmVyczoge1xuICAgIFtrZXkgaW4ga2V5b2YgTWVzc2FnZVBheWxvYWRNYXBdPzogU2V0PFxuICAgICAgKHBheWxvYWQ6IE1lc3NhZ2VQYXlsb2FkTWFwW2tleV0pID0+IHZvaWRcbiAgICA+O1xuICB9ID0ge307XG5cbiAgcHJvdGVjdGVkIGluaXQod2luZG93OiBXaW5kb3cpIHtcbiAgICB0aGlzLm90aGVyU2lkZSA9IHdpbmRvdztcblxuICAgIGNvbnN0IGxpc3RlbmVyID0gKHtcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgZGF0YToge1xuICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZTtcbiAgICAgICAgcGF5bG9hZDogYW55O1xuICAgICAgfTtcbiAgICB9KSA9PiB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1tkYXRhLnR5cGVdPy5mb3JFYWNoKGNhbGxiYWNrID0+IHtcbiAgICAgICAgY2FsbGJhY2soZGF0YS5wYXlsb2FkKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLnNlbGYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgc2VuZDxUIGV4dGVuZHMgTWVzc2FnZVR5cGU+KHR5cGU6IFQsIHBheWxvYWQ/OiBNZXNzYWdlUGF5bG9hZE1hcFtUXSkge1xuICAgIGlmICghdGhpcy5vdGhlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm90aGVyU2lkZS5wb3N0TWVzc2FnZShcbiAgICAgIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgIH0sXG4gICAgICBpc0Rldk1vZGUoKSA/ICcqJyA6IGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbixcbiAgICApO1xuICB9XG5cbiAgbGlzdGVuPFQgZXh0ZW5kcyBrZXlvZiBNZXNzYWdlUGF5bG9hZE1hcD4oXG4gICAgdHlwZTogVCxcbiAgICBjYWxsYmFjazogKHBheWxvYWQ6IE1lc3NhZ2VQYXlsb2FkTWFwW1RdKSA9PiB2b2lkLFxuICApIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1t0eXBlXSA9IG5ldyBTZXQoKSBhcyAodHlwZW9mIHRoaXMubGlzdGVuZXJzKVtUXTtcbiAgICB9XG5cbiAgICB0aGlzLmxpc3RlbmVyc1t0eXBlXS5hZGQoY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgfTtcbiAgfVxufVxuIl19