import type { Message, ViewerAPIMessageSource } from './types'; /** * @ignore */ type MessageHandler = (event: MessageEvent) => void; /** * @ignore */ export const listenToMessages = ( incomingMessageHandler: MessageHandler ): void => { window.addEventListener('message', incomingMessageHandler); }; /** * @ignore */ export const unListenToMessages = ( incomingMessageHandler: MessageHandler ): void => { window.removeEventListener('message', incomingMessageHandler); }; /** * @ignore */ export const parseIncomingMessage = ( event: MessageEvent, source: ViewerAPIMessageSource ): Message | undefined => { try { if (!event.data || typeof event.data !== 'string') { return undefined; } const message = JSON.parse(event.data) as Message; if (message?.source !== source) { return undefined; } return message; } catch (error) { console.error( `${source} - Could not parse the latest message`, event, error ); return undefined; } };