import React, { ComponentType } from 'react'; import { WidgetKind } from '@livelike/javascript'; import { LLPollWidget, LLPollWidgetProps } from '../LLPollWidget'; import { LLPredictionFollowUpWidget, LLPredictionFollowUpWidgetProps, LLPredictionWidget, LLPredictionWidgetProps, } from '../LLPredictionWidget'; import { LLQuizWidget, LLQuizWidgetBodyProps, LLQuizWidgetProps, } from '../LLQuizWidget'; import { LLNumberPredictionFollowUpWidget, LLNumberPredictionFollowUpWidgetProps, LLNumberPredictionWidget, LLNumberPredictionWidgetProps, } from '../LLNumberPredictionWidget'; import { LLEmojiSliderWidgetProps, LLEmojiSliderWidget, } from '../LLEmojiSliderWidget'; import { LLCheerMeterWidget, LLCheerMeterWidgetProps, } from '../LLCheerMeterWidget'; import { LLAlertWidget, LLAlertWidgetProps } from '../LLAlertWidget'; import { LLTextAskWidget, LLTextAskWidgetProps } from '../LLTextAskWidget'; import { LLSocialEmbedWidget } from '../LLSocialEmbedWidget'; type LLAllWidgetProps = | LLPollWidgetProps | LLPredictionWidgetProps | LLPredictionFollowUpWidgetProps | LLQuizWidgetBodyProps | LLNumberPredictionWidgetProps | LLNumberPredictionFollowUpWidgetProps | LLEmojiSliderWidgetProps | LLCheerMeterWidgetProps | LLAlertWidgetProps | LLTextAskWidgetProps; export type LLWidgetProps = LLAllWidgetProps & { widgetKind: WidgetKind; PollWidgetComponent?: typeof LLPollWidget; QuizWidgetComponent?: typeof LLQuizWidget; PredictionWidgetComponent?: typeof LLPredictionWidget; PredictionFollowUpWidgetComponent?: typeof LLPredictionFollowUpWidget; NumberPredictionWidgetComponent?: typeof LLNumberPredictionWidget; NumberPredictionFollowUpWidgetComponent?: typeof LLNumberPredictionFollowUpWidget; EmojiSliderWidgetComponent?: typeof LLEmojiSliderWidget; CheerMeterWidgetComponent?: typeof LLCheerMeterWidget; AlertComponent?: typeof LLAlertWidget; TextAskComponent?: typeof LLTextAskWidget; VideoAlertComponent?: ComponentType; SocialEmbedComponent?: ComponentType; }; export function LLWidget({ widgetKind, PollWidgetComponent = LLPollWidget, QuizWidgetComponent = LLQuizWidget, PredictionWidgetComponent = LLPredictionWidget, PredictionFollowUpWidgetComponent = LLPredictionFollowUpWidget, NumberPredictionWidgetComponent = LLNumberPredictionWidget, NumberPredictionFollowUpWidgetComponent = LLNumberPredictionFollowUpWidget, EmojiSliderWidgetComponent = LLEmojiSliderWidget, CheerMeterWidgetComponent = LLCheerMeterWidget, AlertComponent = LLAlertWidget, TextAskComponent = LLTextAskWidget, VideoAlertComponent, SocialEmbedComponent = LLSocialEmbedWidget, ...rest }: LLWidgetProps) { switch (widgetKind) { case WidgetKind.TEXT_POLL: case WidgetKind.IMAGE_POLL: return ( ); case WidgetKind.TEXT_QUIZ: case WidgetKind.IMAGE_QUIZ: return ( ); case WidgetKind.TEXT_PREDICTION: case WidgetKind.IMAGE_PREDICTION: return ( ); case WidgetKind.TEXT_PREDICTION_FOLLOW_UP: case WidgetKind.IMAGE_PREDICTION_FOLLOW_UP: return ( ); case WidgetKind.TEXT_NUMBER_PREDICTION: case WidgetKind.IMAGE_NUMBER_PREDICTION: return ( ); case WidgetKind.TEXT_NUMBER_PREDICTION_FOLLOW_UP: case WidgetKind.IMAGE_NUMBER_PREDICTION_FOLLOW_UP: return ( ); case WidgetKind.EMOJI_SLIDER: return ( ); case WidgetKind.CHEER_METER: return ( ); case WidgetKind.ALERT: return ; case WidgetKind.TEXT_ASK: { return ; } case WidgetKind.VIDEO_ALERT: { if (VideoAlertComponent) { return ; } break; } case WidgetKind.SOCIAL_EMBED: { if (SocialEmbedComponent) { return ; } break; } default: return undefined; } }