import React from 'react'; import { LLWidgetHeader } from '../LLWidgetHeader'; import { LLWidgetFooter } from '../LLWidgetFooter'; import { useWidgetInteractiveTimeout, useWidgetExpiryEffect, usePredictionWidgetEffect, } from '../../hooks'; import { LLCoreWidget } from '../LLCoreWidget'; import { LLVoteWidgetBody, LLVoteWidgetBodyProps } from '../LLVoteWidgetBody'; import { LLPredictionFollowUpWidget } from './LLPredictionFollowUpWidget'; import { LLBaseWidgetProps } from '../LLBaseWidgetProps'; import { LLPredictionWidgetActionInfo } from './LLPredictionWidgetActionInfo'; export type LLPredictionWidgetProps = LLBaseWidgetProps & { inlineFollowUp?: boolean; BodyComponent?: typeof LLVoteWidgetBody; BodyComponentStyles?: LLVoteWidgetBodyProps['styles']; }; export function LLPredictionWidget({ programId, widgetId, widgetKind, inlineFollowUp, onDismiss: onDismissProp, interactiveTimeout: interactiveTimeoutProp, onInteractiveTimeout: onInteractiveTimeoutProp, WidgetComponent = LLCoreWidget, HeaderComponent = LLWidgetHeader, BodyComponent = LLVoteWidgetBody, FooterComponent = LLWidgetFooter, WidgetComponentStyles, HeaderComponentStyles, BodyComponentStyles, FooterComponentStyles, }: LLPredictionWidgetProps) { const { interactiveTimeout, onInteractiveTimeout } = useWidgetInteractiveTimeout({ widgetId, interactiveTimeout: interactiveTimeoutProp, onInteractiveTimeout: onInteractiveTimeoutProp, }); useWidgetExpiryEffect({ widgetId }); const { followUpWidget } = usePredictionWidgetEffect({ widgetId, programId, inlineFollowUp, }); if (followUpWidget && inlineFollowUp) { return ( ); } return ( {({ widget, onDismiss }) => ( <> )} ); }