import * as React from "react"; import {useEffect, useMemo} from "react"; import {ControlBar2} from "tc-shared/ui/frames/control-bar/Renderer"; import {IpcRegistryDescription, Registry} from "tc-shared/events"; import {ConnectionHandlerList} from "tc-shared/ui/frames/connection-handler-list/Renderer"; import {ErrorBoundary} from "tc-shared/ui/react-elements/ErrorBoundary"; import {ContextDivider} from "tc-shared/ui/react-elements/ContextDivider"; import {SideBarRenderer} from "tc-shared/ui/frames/SideBarRenderer"; import {ServerLogFrame} from "tc-shared/ui/frames/log/Renderer"; import {FooterRenderer} from "tc-shared/ui/frames/footer/Renderer"; import {HostBanner} from "tc-shared/ui/frames/HostBannerRenderer"; import {AppUiVariables} from "tc-shared/ui/AppDefinitions"; import {ChannelTreeRenderer} from "tc-shared/ui/tree/Renderer"; import {ImagePreviewHook} from "tc-shared/ui/frames/ImagePreview"; import {InternalModalHook} from "tc-shared/ui/react-elements/modal/internal"; import {TooltipHook} from "tc-shared/ui/react-elements/Tooltip"; import {ChannelVideoRenderer} from "tc-shared/ui/frames/video/Renderer"; import { createIpcUiVariableConsumer, IpcVariableDescriptor } from "tc-shared/ui/utils/IpcVariable"; import {UiVariableConsumer} from "tc-shared/ui/utils/Variable"; import {useRegistry} from "tc-shared/ui/react-elements/Helper"; const cssStyle = require("./AppRenderer.scss"); const VideoFrame = React.memo((props: { variables: UiVariableConsumer }) => { const data = props.variables.useReadOnly("channelVideo", undefined, { handlerId: undefined, events: undefined }); const events = useRegistry(data.events); if(!data.events) { return null; } return ; }); const ChannelTree = React.memo((props: { variables: UiVariableConsumer }) => { const data = props.variables.useReadOnly("channelTree", undefined, { handlerId: undefined, events: undefined }); const events = useRegistry(data.events); if(!events) { return null; } return ; }); const SideBar = React.memo((props: { variables: UiVariableConsumer }) => ( {sidebarRegistry => ( {sidebarHeaderRegistry => sidebarRegistry && sidebarHeaderRegistry ? ( ) : null} )} )); function EventProvider(props: { registry: IpcRegistryDescription | undefined, children: (registry: Registry | undefined) => React.ReactElement }) : React.ReactElement { return props.children(useRegistry(props.registry)); } export const TeaAppMainView = (props: { variables: IpcVariableDescriptor, }) => { const variables = useMemo(() => createIpcUiVariableConsumer(props.variables), [ props.variables ]); useEffect(() => () => variables.destroy(), [ props.variables ]); return (
{registry => registry ? ( ) : null} {registry => registry ? ( ) : null}
{registry => registry ? ( ) : null}
{registry => registry ? ( ) : null}
); }