2 const channel: BroadcastChannel = new BroadcastChannel("odlux_map");
3 const listeners: { [key: string]: ((data: any) => void)[] } = {};
5 channel.onmessage = (eventMessage: MessageEvent<any>) => {
6 const { key, data } = eventMessage.data;
8 listeners[key].forEach(listener => listener(data));
12 export const sendMapMessage = (data: any, key: string) => {
13 channel.postMessage({ key, data });
16 export const addMapMessageListener = (key: string, listener: (data: any) => void) => {
17 if (!listeners[key]) {
21 if (!listeners[key].find(l => l === listener)) {
22 listeners[key].push(listener);
26 listeners[key] = listeners[key].filter(l => l !== listener);