import { UseFrameAppReturn, UseFrameAppOptions } from '../use-frame-app.js'; import { HostEndpointEmitter } from './types.js'; import 'frames.js/frame-parsers'; import '@farcaster/frame-host'; import 'ox/Provider'; import 'ox/RpcSchema'; type UseFrameAppReturnSuccess = Extract; type UseFrameAppInIframeReturn = Exclude | ({ iframeProps: { src: string | undefined; ref: React.MutableRefObject; }; emitter: HostEndpointEmitter; } & Omit); /** * Handles frame app in iframe. * * On unmount it automatically unregisters the endpoint listener. * * @example * ``` * import { useFrameAppInIframe } from '@frames.js/render/frame-app/iframe'; * import { useWagmiProvider } from '@frames.js/render/frame-app/provider/wagmi'; * import { useFarcasterSigner } from '@frames.js/render/identity/farcaster'; * * function MyAppDialog() { * const provider = useWagmiProvider(); * const farcasterSigner = useFarcasterSigner({ * // ... * }); * const frameApp = useFrameAppInIframe({ * provider, * farcasterSigner, * // frame returned by useFrame() hook * frame: frameState.frame, * // ... handlers for frame app actions * }); * * if (frameApp.status !== 'success') { * // render loading or error * return null; * } * * return