import React, { useEffect, useMemo } from 'react'; import { useMedia } from 'react-use'; import { Whiteboard } from '@100mslive/hms-whiteboard'; import { selectPeerByCondition, selectWhiteboard, useHMSStore, useWhiteboard } from '@100mslive/react-sdk'; import { Box } from '../../../Layout'; import { config as cssConfig } from '../../../Theme'; import { InsetTile } from '../InsetTile'; import { SecondaryTiles } from '../SecondaryTiles'; import { LayoutMode } from '../Settings/LayoutSettings'; import { LayoutProps } from './interface'; import { ProminenceLayout } from './ProminenceLayout'; // @ts-ignore: No implicit Any import { useSetUiSettings } from '../AppData/useUISettings'; import { UI_SETTINGS } from '../../common/constants'; // eslint-disable-next-line import/no-unresolved import '@100mslive/hms-whiteboard/index.css'; const WhiteboardEmbed = () => { const isMobile = useMedia(cssConfig.media.md); const { token, endpoint, zoomToContent } = useWhiteboard(isMobile); if (!token) { return null; } return ( ); }; export const WhiteboardLayout = ({ peers, onPageChange, onPageSize, edgeToEdge }: LayoutProps) => { const whiteboard = useHMSStore(selectWhiteboard); const whiteboardOwner = useHMSStore(selectPeerByCondition(peer => peer.customerUserId === whiteboard?.owner)); const [layoutMode, setLayoutMode] = useSetUiSettings(UI_SETTINGS.layoutMode); const isMobile = useMedia(cssConfig.media.md); const hasSidebar = !isMobile && layoutMode === LayoutMode.SIDEBAR; const secondaryPeers = useMemo(() => { if (layoutMode === LayoutMode.SPOTLIGHT) { return []; } if (isMobile || layoutMode === LayoutMode.SIDEBAR) { return whiteboardOwner ? [whiteboardOwner, ...peers.filter(p => p.id !== whiteboardOwner?.id)] //keep active sharing peer as first tile : peers; } return peers.filter(p => p.id !== whiteboardOwner?.id); }, [whiteboardOwner, peers, isMobile, layoutMode]); useEffect(() => { if (isMobile) { setLayoutMode(LayoutMode.GALLERY); return; } if (layoutMode === LayoutMode.SIDEBAR) { return; } setLayoutMode(LayoutMode.SIDEBAR); return () => { // reset to gallery once whiteboard is stopped setLayoutMode(LayoutMode.GALLERY); }; }, [isMobile]); // eslint-disable-line react-hooks/exhaustive-deps return ( {layoutMode === LayoutMode.SPOTLIGHT && whiteboardOwner && } ); };