Files
payload/packages/live-preview/src/subscribe.ts
2023-10-17 12:11:55 -04:00

22 lines
542 B
TypeScript

import { handleMessage } from '.'
export const subscribe = <T>(args: {
callback: (data: T) => void
depth: number
initialData: T
serverURL: string
}): ((event: MessageEvent) => void) => {
const { callback, depth, initialData, serverURL } = args
const onMessage = async (event: MessageEvent) => {
const mergedData = await handleMessage<T>({ depth, event, initialData, serverURL })
callback(mergedData)
}
if (typeof window !== 'undefined') {
window.addEventListener('message', onMessage)
}
return onMessage
}