import { wrap, windowEndpoint } from 'comlink'; type MagicAPI = { inputPrompt: (promptString: string) => Promise; onPromptChange(cb: (prompt: string) => void): Promise; combinePrompt: (promptString: string) => Promise; getPrompt: () => Promise; }; export const useMagicAPI = (ifr: HTMLIFrameElement) => { let prepare = new Promise((resolve) => { ifr.onload = resolve; }).then(() => { return wrap(windowEndpoint(ifr.contentWindow)); }); return { async getMagicAPI() { return prepare; }, }; };