@100mslive/roomkit-react 0.3.3-alpha.3 → 0.3.3-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion/Accordion.d.ts +0 -1
- package/dist/Accordion/index.d.ts +0 -1
- package/dist/{HLSView-BCIIVR2T.js → HLSView-VUANLYLS.js} +166 -331
- package/dist/HLSView-VUANLYLS.js.map +7 -0
- package/dist/IconButton/IconButton.d.ts +1 -1
- package/dist/Modal/Dialog.d.ts +1 -1
- package/dist/Prebuilt/IconButton.d.ts +3 -2
- package/dist/Prebuilt/components/Footer/ChatToggle.d.ts +1 -3
- package/dist/Prebuilt/components/HMSVideo/PlayPauseButton.d.ts +2 -2
- package/dist/Prebuilt/components/HMSVideo/{SeekControl.d.ts → SeekControls.d.ts} +2 -2
- package/dist/Prebuilt/components/HMSVideo/index.d.ts +11 -15
- package/dist/Prebuilt/components/Leave/LeaveAtoms.d.ts +2 -2
- package/dist/Prebuilt/components/RaiseHand.d.ts +1 -1
- package/dist/Prebuilt/layouts/WhiteboardView.d.ts +2 -0
- package/dist/Sheet/Sheet.d.ts +1 -1
- package/dist/{chunk-W47ZJGSD.js → chunk-5WTUTVRO.js} +540 -617
- package/dist/chunk-5WTUTVRO.js.map +7 -0
- package/dist/index.cjs.js +1426 -1686
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.js +1 -1
- package/dist/meta.cjs.json +169 -248
- package/dist/meta.esbuild.json +180 -260
- package/package.json +7 -7
- package/src/Accordion/Accordion.tsx +4 -4
- package/src/IconButton/IconButton.tsx +7 -2
- package/src/Prebuilt/IconButton.tsx +10 -6
- package/src/Prebuilt/components/Chat/ChatBody.tsx +0 -10
- package/src/Prebuilt/components/Chat/ChatFooter.tsx +4 -2
- package/src/Prebuilt/components/ConferenceScreen.tsx +4 -1
- package/src/Prebuilt/components/Footer/ChatToggle.tsx +2 -2
- package/src/Prebuilt/components/Footer/Footer.tsx +4 -1
- package/src/Prebuilt/components/Footer/ParticipantList.tsx +1 -4
- package/src/Prebuilt/components/Footer/RoleAccordion.tsx +6 -6
- package/src/Prebuilt/components/Footer/WhiteboardToggle.tsx +3 -17
- package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +0 -1
- package/src/Prebuilt/components/HMSVideo/PlayPauseButton.tsx +2 -2
- package/src/Prebuilt/components/HMSVideo/{SeekControl.tsx → SeekControls.tsx} +2 -2
- package/src/Prebuilt/components/HMSVideo/VideoProgress.tsx +3 -7
- package/src/Prebuilt/components/HMSVideo/index.ts +4 -5
- package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.tsx +7 -7
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +1 -0
- package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.tsx +5 -1
- package/src/Prebuilt/components/PreviousRoleInMetadata.tsx +1 -0
- package/src/Prebuilt/components/RaiseHand.tsx +1 -7
- package/src/Prebuilt/components/RoleChangeRequest/RoleChangeRequestModal.tsx +1 -0
- package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +4 -27
- package/src/Prebuilt/components/hooks/useCloseScreenshareWhiteboard.tsx +5 -13
- package/src/Prebuilt/components/hooks/{useMetadata.tsx → useMetadata.jsx} +8 -2
- package/src/Prebuilt/layouts/HLSView.jsx +78 -115
- package/src/Prebuilt/layouts/VideoStreamingSection.tsx +17 -1
- package/src/Prebuilt/layouts/WhiteboardView.tsx +69 -0
- package/dist/HLSView-BCIIVR2T.js.map +0 -7
- package/dist/Prebuilt/components/HMSVideo/PlayPauseSeekControls.d.ts +0 -14
- package/dist/Prebuilt/components/VideoLayouts/WhiteboardLayout.d.ts +0 -3
- package/dist/Prebuilt/components/hooks/useMetadata.d.ts +0 -8
- package/dist/chunk-W47ZJGSD.js.map +0 -7
- package/src/Prebuilt/components/HMSVideo/PlayPauseSeekControls.tsx +0 -158
- package/src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx +0 -95
@@ -15,7 +15,7 @@ export const useMyMetadata = () => {
|
|
15
15
|
const metaData = useHMSStore(selectPeerMetadata(localPeerId));
|
16
16
|
const isHandRaised = useHMSStore(selectHasPeerHandRaised(localPeerId));
|
17
17
|
|
18
|
-
const update = async
|
18
|
+
const update = async updatedFields => {
|
19
19
|
try {
|
20
20
|
// get current state from store and merge updated fields
|
21
21
|
const currentMetadata = vanillaStore.getState(selectPeerMetadata(localPeerId));
|
@@ -24,7 +24,6 @@ export const useMyMetadata = () => {
|
|
24
24
|
} catch (error) {
|
25
25
|
console.error('failed to update metadata ', updatedFields);
|
26
26
|
}
|
27
|
-
return false;
|
28
27
|
};
|
29
28
|
|
30
29
|
const toggleHandRaise = useCallback(async () => {
|
@@ -44,6 +43,12 @@ export const useMyMetadata = () => {
|
|
44
43
|
}
|
45
44
|
}, [metaData?.isBRBOn]); //eslint-disable-line
|
46
45
|
|
46
|
+
const setPrevRole = async role => {
|
47
|
+
await update({
|
48
|
+
prevRole: role,
|
49
|
+
});
|
50
|
+
};
|
51
|
+
|
47
52
|
return {
|
48
53
|
isHandRaised,
|
49
54
|
isBRBOn: !!metaData?.isBRBOn,
|
@@ -51,5 +56,6 @@ export const useMyMetadata = () => {
|
|
51
56
|
updateMetaData: update,
|
52
57
|
toggleHandRaise,
|
53
58
|
toggleBRB,
|
59
|
+
setPrevRole,
|
54
60
|
};
|
55
61
|
};
|
@@ -15,7 +15,7 @@ import {
|
|
15
15
|
useHMSStore,
|
16
16
|
useHMSVanillaStore,
|
17
17
|
} from '@100mslive/react-sdk';
|
18
|
-
import { ColoredHandIcon, GoLiveIcon } from '@100mslive/react-icons';
|
18
|
+
import { BackwardArrowIcon, ColoredHandIcon, ForwardArrowIcon, GoLiveIcon } from '@100mslive/react-icons';
|
19
19
|
import { ChatToggle } from '../components/Footer/ChatToggle';
|
20
20
|
import { HlsStatsOverlay } from '../components/HlsStatsOverlay';
|
21
21
|
import { HMSVideoPlayer } from '../components/HMSVideo';
|
@@ -42,7 +42,7 @@ import { APP_DATA, EMOJI_REACTION_TYPE, POLL_STATE, POLL_VIEWS, SIDE_PANE_OPTION
|
|
42
42
|
let hlsPlayer;
|
43
43
|
const toastMap = {};
|
44
44
|
|
45
|
-
const ToggleChat = (
|
45
|
+
const ToggleChat = () => {
|
46
46
|
const { elements } = useRoomLayoutConferencingScreen();
|
47
47
|
const sidepane = useHMSStore(selectAppData(APP_DATA.sidePane));
|
48
48
|
const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
|
@@ -51,10 +51,7 @@ const ToggleChat = ({ isFullScreen = false }) => {
|
|
51
51
|
const hmsActions = useHMSActions();
|
52
52
|
|
53
53
|
useEffect(() => {
|
54
|
-
match({ sidepane, isMobile, showChat
|
55
|
-
.with({ isFullScreen: true }, () => {
|
56
|
-
hmsActions.setAppData(APP_DATA.sidePane, '');
|
57
|
-
})
|
54
|
+
match({ sidepane, isMobile, showChat })
|
58
55
|
.with({ isMobile: true, showChat: true, sidepane: P.when(value => !value) }, () => {
|
59
56
|
toggleChat();
|
60
57
|
})
|
@@ -64,13 +61,12 @@ const ToggleChat = ({ isFullScreen = false }) => {
|
|
64
61
|
.otherwise(() => {
|
65
62
|
//do nothing
|
66
63
|
});
|
67
|
-
}, [sidepane, isMobile, toggleChat, showChat, hmsActions
|
64
|
+
}, [sidepane, isMobile, toggleChat, showChat, hmsActions]);
|
68
65
|
return null;
|
69
66
|
};
|
70
67
|
const HLSView = () => {
|
71
68
|
const videoRef = useRef(null);
|
72
69
|
const hlsViewRef = useRef();
|
73
|
-
const { elements } = useRoomLayoutConferencingScreen();
|
74
70
|
const hlsState = useHMSStore(selectHLSState);
|
75
71
|
const enablHlsStats = useHMSStore(selectAppData(APP_DATA.hlsStats));
|
76
72
|
const notification = useHMSNotifications(HMSNotificationTypes.POLL_STOPPED);
|
@@ -85,11 +81,7 @@ const HLSView = () => {
|
|
85
81
|
const [hasCaptions, setHasCaptions] = useState(false);
|
86
82
|
const [currentSelectedQuality, setCurrentSelectedQuality] = useState(null);
|
87
83
|
const [isHlsAutoplayBlocked, setIsHlsAutoplayBlocked] = useState(false);
|
88
|
-
const [
|
89
|
-
seekForward: false,
|
90
|
-
pausePlay: false,
|
91
|
-
seekBackward: false,
|
92
|
-
});
|
84
|
+
const [isSeekEnabled, setIsSeekEnabled] = useState(false);
|
93
85
|
const [isPaused, setIsPaused] = useState(false);
|
94
86
|
const [show, toggle] = useToggle(false);
|
95
87
|
const lastHlsUrl = usePrevious(hlsUrl);
|
@@ -101,8 +93,6 @@ const HLSView = () => {
|
|
101
93
|
const controlsTimerRef = useRef();
|
102
94
|
const [seekProgress, setSeekProgress] = useState(false);
|
103
95
|
const isFullScreenSupported = screenfull.isEnabled;
|
104
|
-
const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
|
105
|
-
const showChat = !!elements?.chat;
|
106
96
|
|
107
97
|
const isMobile = useMedia(config.media.md);
|
108
98
|
const isLandscape = useIsLandscape();
|
@@ -243,19 +233,7 @@ const HLSView = () => {
|
|
243
233
|
setIsVideoLive(isLive);
|
244
234
|
};
|
245
235
|
|
246
|
-
const playbackEventHandler = data =>
|
247
|
-
setIsPaused(data.state === HLSPlaybackState.paused);
|
248
|
-
setHoverControlsVisible({
|
249
|
-
...hoverControlsVisible,
|
250
|
-
pausePlay: true,
|
251
|
-
});
|
252
|
-
setTimeout(() => {
|
253
|
-
setHoverControlsVisible({
|
254
|
-
...hoverControlsVisible,
|
255
|
-
pausePlay: false,
|
256
|
-
});
|
257
|
-
}, 2000);
|
258
|
-
};
|
236
|
+
const playbackEventHandler = data => setIsPaused(data.state === HLSPlaybackState.paused);
|
259
237
|
const captionEnabledEventHandler = isCaptionEnabled => {
|
260
238
|
setIsCaptionEnabled(isCaptionEnabled);
|
261
239
|
};
|
@@ -336,63 +314,28 @@ const HLSView = () => {
|
|
336
314
|
};
|
337
315
|
}, [controlsVisible, isFullScreen, seekProgress, qualityDropDownOpen]);
|
338
316
|
|
339
|
-
const onSeekTo = useCallback(
|
340
|
-
|
341
|
-
|
342
|
-
.with({ seek: -10, isMobile: false, isLandscape: false }, () => {
|
343
|
-
setHoverControlsVisible({ ...hoverControlsVisible, seekBackward: true });
|
344
|
-
setTimeout(() => {
|
345
|
-
setHoverControlsVisible({
|
346
|
-
...hoverControlsVisible,
|
347
|
-
seekBackward: false,
|
348
|
-
});
|
349
|
-
}, 1000);
|
350
|
-
})
|
351
|
-
.with({ seek: 10, isMobile: false, isLandscape: false }, () => {
|
352
|
-
setHoverControlsVisible({ ...hoverControlsVisible, seekForward: true });
|
353
|
-
setTimeout(() => {
|
354
|
-
setHoverControlsVisible({
|
355
|
-
...hoverControlsVisible,
|
356
|
-
seekForward: false,
|
357
|
-
});
|
358
|
-
}, 1000);
|
359
|
-
})
|
360
|
-
.otherwise(() => null);
|
361
|
-
hlsPlayer?.seekTo(videoRef.current?.currentTime + seek);
|
362
|
-
},
|
363
|
-
[hoverControlsVisible, isLandscape, isMobile],
|
364
|
-
);
|
317
|
+
const onSeekTo = useCallback(seek => {
|
318
|
+
hlsPlayer?.seekTo(videoRef.current?.currentTime + seek);
|
319
|
+
}, []);
|
365
320
|
const onDoubleClickHandler = useCallback(
|
366
321
|
event => {
|
367
322
|
if (!(isMobile || isLandscape) || hlsState?.variants[0]?.playlist_type !== HLSPlaylistType.DVR) {
|
368
323
|
return;
|
369
324
|
}
|
370
325
|
const sidePercentage = (event.screenX * 100) / event.target.clientWidth;
|
326
|
+
setIsSeekEnabled(true);
|
371
327
|
// there is space for pause/unpause button
|
372
328
|
if (sidePercentage < 45) {
|
373
|
-
setHoverControlsVisible({
|
374
|
-
...hoverControlsVisible,
|
375
|
-
seekBackward: true,
|
376
|
-
});
|
377
329
|
onSeekTo(-10);
|
378
330
|
} else {
|
379
|
-
setHoverControlsVisible({
|
380
|
-
...hoverControlsVisible,
|
381
|
-
seekForward: true,
|
382
|
-
});
|
383
331
|
onSeekTo(10);
|
384
332
|
}
|
385
333
|
setTimeout(() => {
|
386
|
-
|
387
|
-
|
388
|
-
seekForward: false,
|
389
|
-
seekBackward: false,
|
390
|
-
});
|
391
|
-
}, 1000);
|
334
|
+
setIsSeekEnabled(false);
|
335
|
+
}, 200);
|
392
336
|
},
|
393
|
-
[hlsState?.variants,
|
337
|
+
[hlsState?.variants, isLandscape, isMobile, onSeekTo],
|
394
338
|
);
|
395
|
-
|
396
339
|
const onClickHandler = useCallback(async () => {
|
397
340
|
match({ isMobile, isLandscape, playlist_type: hlsState?.variants[0]?.playlist_type })
|
398
341
|
.with({ playlist_type: HLSPlaylistType.DVR, isMobile: false, isLandscape: false }, async () => {
|
@@ -413,7 +356,6 @@ const HLSView = () => {
|
|
413
356
|
)
|
414
357
|
.otherwise(() => null);
|
415
358
|
}, [hlsState?.variants, isLandscape, isMobile, isPaused]);
|
416
|
-
|
417
359
|
const onHoverHandler = useCallback(
|
418
360
|
event => {
|
419
361
|
event.preventDefault();
|
@@ -481,7 +423,6 @@ const HLSView = () => {
|
|
481
423
|
justify="center"
|
482
424
|
css={{
|
483
425
|
flex: isLandscape ? '2 1 0' : '1 1 0',
|
484
|
-
transition: 'all 0.3s ease-in-out',
|
485
426
|
'&:fullscreen': {
|
486
427
|
'& video': {
|
487
428
|
height: 'unset !important',
|
@@ -543,37 +484,53 @@ const HLSView = () => {
|
|
543
484
|
}}
|
544
485
|
>
|
545
486
|
<>
|
546
|
-
{!(isMobile || isLandscape) && (
|
547
|
-
<Flex
|
548
|
-
align="center"
|
549
|
-
justify="between"
|
550
|
-
css={{
|
551
|
-
position: 'absolute',
|
552
|
-
bg: '#00000066',
|
553
|
-
display: 'inline-flex',
|
554
|
-
gap: '$2',
|
555
|
-
zIndex: 1,
|
556
|
-
size: '100%',
|
557
|
-
}}
|
558
|
-
>
|
559
|
-
{!showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && (
|
560
|
-
<HMSVideoPlayer.PlayPauseSeekControls.Overlay
|
561
|
-
isPaused={isPaused}
|
562
|
-
showControls={controlsVisible}
|
563
|
-
hoverControlsVisible={hoverControlsVisible}
|
564
|
-
/>
|
565
|
-
)}
|
566
|
-
</Flex>
|
567
|
-
)}
|
568
487
|
{isMobile || isLandscape ? (
|
569
488
|
<>
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
489
|
+
<Flex
|
490
|
+
align="center"
|
491
|
+
justify="center"
|
492
|
+
css={{
|
493
|
+
position: 'absolute',
|
494
|
+
bg: '#00000066',
|
495
|
+
display: 'inline-flex',
|
496
|
+
gap: '$2',
|
497
|
+
zIndex: 1,
|
498
|
+
size: '100%',
|
499
|
+
visibility: controlsVisible ? `` : `hidden`,
|
500
|
+
opacity: controlsVisible ? `1` : '0',
|
501
|
+
}}
|
502
|
+
>
|
503
|
+
{!showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && (
|
504
|
+
<>
|
505
|
+
<HMSVideoPlayer.Seeker
|
506
|
+
title="backward"
|
507
|
+
css={{
|
508
|
+
visibility: isSeekEnabled ? `` : `hidden`,
|
509
|
+
opacity: isSeekEnabled ? `1` : '0',
|
510
|
+
}}
|
511
|
+
>
|
512
|
+
<BackwardArrowIcon width={32} height={32} />
|
513
|
+
</HMSVideoPlayer.Seeker>
|
514
|
+
<Box
|
515
|
+
css={{
|
516
|
+
bg: 'rgba(0, 0, 0, 0.6)',
|
517
|
+
r: '$round',
|
518
|
+
}}
|
519
|
+
>
|
520
|
+
<HMSVideoPlayer.PlayPauseButton isPaused={isPaused} width={48} height={48} />
|
521
|
+
</Box>
|
522
|
+
<HMSVideoPlayer.Seeker
|
523
|
+
title="forward"
|
524
|
+
css={{
|
525
|
+
visibility: isSeekEnabled ? `` : `hidden`,
|
526
|
+
opacity: isSeekEnabled ? `1` : '0',
|
527
|
+
}}
|
528
|
+
>
|
529
|
+
<ForwardArrowIcon width={32} height={32} />
|
530
|
+
</HMSVideoPlayer.Seeker>
|
531
|
+
</>
|
532
|
+
)}
|
533
|
+
</Flex>
|
577
534
|
<Flex
|
578
535
|
ref={controlsRef}
|
579
536
|
direction="column"
|
@@ -596,16 +553,7 @@ const HLSView = () => {
|
|
596
553
|
}}
|
597
554
|
>
|
598
555
|
<HMSVideoPlayer.Controls.Right>
|
599
|
-
{
|
600
|
-
<ChatToggle
|
601
|
-
onClick={() => {
|
602
|
-
if (isFullScreen) {
|
603
|
-
toggle();
|
604
|
-
}
|
605
|
-
toggleChat();
|
606
|
-
}}
|
607
|
-
/>
|
608
|
-
)}
|
556
|
+
{isLandscape && <ChatToggle />}
|
609
557
|
{hasCaptions && !isHlsAutoplayBlocked && <HLSCaptionSelector isEnabled={isCaptionEnabled} />}
|
610
558
|
{hlsViewRef.current && availableLayers.length > 0 && !isHlsAutoplayBlocked ? (
|
611
559
|
<HLSQualitySelector
|
@@ -658,7 +606,23 @@ const HLSView = () => {
|
|
658
606
|
<>
|
659
607
|
{hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? (
|
660
608
|
<>
|
661
|
-
<HMSVideoPlayer.
|
609
|
+
<HMSVideoPlayer.Seeker
|
610
|
+
onClick={() => {
|
611
|
+
onSeekTo(-10);
|
612
|
+
}}
|
613
|
+
title="backward"
|
614
|
+
>
|
615
|
+
<BackwardArrowIcon width={20} height={20} />
|
616
|
+
</HMSVideoPlayer.Seeker>
|
617
|
+
<HMSVideoPlayer.PlayPauseButton isPaused={isPaused} />
|
618
|
+
<HMSVideoPlayer.Seeker
|
619
|
+
onClick={() => {
|
620
|
+
onSeekTo(10);
|
621
|
+
}}
|
622
|
+
title="forward"
|
623
|
+
>
|
624
|
+
<ForwardArrowIcon width={20} height={20} />
|
625
|
+
</HMSVideoPlayer.Seeker>
|
662
626
|
{!isVideoLive ? <HMSVideoPlayer.Duration /> : null}
|
663
627
|
</>
|
664
628
|
) : null}
|
@@ -667,8 +631,7 @@ const HLSView = () => {
|
|
667
631
|
)}
|
668
632
|
<IconButton
|
669
633
|
css={{ px: '$2' }}
|
670
|
-
onClick={async
|
671
|
-
e.stopPropagation();
|
634
|
+
onClick={async () => {
|
672
635
|
await hlsPlayer?.seekToLivePosition();
|
673
636
|
setIsVideoLive(true);
|
674
637
|
}}
|
@@ -727,7 +690,7 @@ const HLSView = () => {
|
|
727
690
|
</HMSVideoPlayer.Root>
|
728
691
|
</Flex>
|
729
692
|
</HMSPlayerContext.Provider>
|
730
|
-
<ToggleChat
|
693
|
+
<ToggleChat />
|
731
694
|
{isMobile && !isFullScreen && <HLSViewTitle />}
|
732
695
|
</Flex>
|
733
696
|
);
|
@@ -5,7 +5,14 @@ import {
|
|
5
5
|
HLSLiveStreamingScreen_Elements,
|
6
6
|
} from '@100mslive/types-prebuilt';
|
7
7
|
import { match } from 'ts-pattern';
|
8
|
-
import {
|
8
|
+
import {
|
9
|
+
selectIsConnectedToRoom,
|
10
|
+
selectLocalPeerRoleName,
|
11
|
+
selectPeerScreenSharing,
|
12
|
+
selectWhiteboard,
|
13
|
+
useHMSActions,
|
14
|
+
useHMSStore,
|
15
|
+
} from '@100mslive/react-sdk';
|
9
16
|
// @ts-ignore: No implicit Any
|
10
17
|
import FullPageProgress from '../components/FullPageProgress';
|
11
18
|
import { GridLayout } from '../components/VideoLayouts/GridLayout';
|
@@ -17,6 +24,7 @@ import { PDFView } from './PDFView';
|
|
17
24
|
import SidePane from './SidePane';
|
18
25
|
// @ts-ignore: No implicit Any
|
19
26
|
import { WaitingView } from './WaitingView';
|
27
|
+
import { WhiteboardView } from './WhiteboardView';
|
20
28
|
import {
|
21
29
|
usePDFConfig,
|
22
30
|
useUrlToEmbed,
|
@@ -42,6 +50,8 @@ export const VideoStreamingSection = ({
|
|
42
50
|
}) => {
|
43
51
|
const localPeerRole = useHMSStore(selectLocalPeerRoleName);
|
44
52
|
const isConnected = useHMSStore(selectIsConnectedToRoom);
|
53
|
+
const peerSharing = useHMSStore(selectPeerScreenSharing);
|
54
|
+
const isWhiteboardOpen = useHMSStore(selectWhiteboard)?.open;
|
45
55
|
|
46
56
|
const hmsActions = useHMSActions();
|
47
57
|
const waitingViewerRole = useWaitingViewerRole();
|
@@ -79,6 +89,12 @@ export const VideoStreamingSection = ({
|
|
79
89
|
ViewComponent = <PDFView />;
|
80
90
|
} else if (urlToIframe) {
|
81
91
|
ViewComponent = <EmbedView />;
|
92
|
+
} else if (peerSharing) {
|
93
|
+
// screen share should take preference over whiteboard
|
94
|
+
//@ts-ignore
|
95
|
+
ViewComponent = <GridLayout {...(elements as DefaultConferencingScreen_Elements)?.video_tile_layout?.grid} />;
|
96
|
+
} else if (isWhiteboardOpen) {
|
97
|
+
ViewComponent = <WhiteboardView />;
|
82
98
|
} else {
|
83
99
|
//@ts-ignore
|
84
100
|
ViewComponent = <GridLayout {...(elements as DefaultConferencingScreen_Elements)?.video_tile_layout?.grid} />;
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import React, { useEffect, useMemo } from 'react';
|
2
|
+
import { useMedia } from 'react-use';
|
3
|
+
import { selectPeers, selectWhiteboard, useHMSStore, useWhiteboard } from '@100mslive/react-sdk';
|
4
|
+
import { SecondaryTiles } from '../components/SecondaryTiles';
|
5
|
+
import { ProminenceLayout } from '../components/VideoLayouts/ProminenceLayout';
|
6
|
+
import { config as cssConfig } from '../../';
|
7
|
+
import { Box } from '../../Layout';
|
8
|
+
// @ts-ignore: No implicit Any
|
9
|
+
import { useSetAppDataByKey } from '../components/AppData/useUISettings';
|
10
|
+
import { APP_DATA } from '../common/constants';
|
11
|
+
|
12
|
+
const EmbedComponent = () => {
|
13
|
+
const isMobile = useMedia(cssConfig.media.md);
|
14
|
+
const { iframeRef } = useWhiteboard(isMobile);
|
15
|
+
|
16
|
+
return (
|
17
|
+
<Box
|
18
|
+
css={{
|
19
|
+
mx: '$8',
|
20
|
+
flex: '3 1 0',
|
21
|
+
'@lg': {
|
22
|
+
flex: '2 1 0',
|
23
|
+
display: 'flex',
|
24
|
+
alignItems: 'center',
|
25
|
+
},
|
26
|
+
}}
|
27
|
+
>
|
28
|
+
<iframe
|
29
|
+
title="Whiteboard View"
|
30
|
+
ref={iframeRef}
|
31
|
+
style={{
|
32
|
+
width: '100%',
|
33
|
+
height: '100%',
|
34
|
+
border: 0,
|
35
|
+
borderRadius: '0.75rem',
|
36
|
+
}}
|
37
|
+
allow="autoplay; clipboard-write;"
|
38
|
+
referrerPolicy="no-referrer"
|
39
|
+
/>
|
40
|
+
</Box>
|
41
|
+
);
|
42
|
+
};
|
43
|
+
|
44
|
+
export const WhiteboardView = () => {
|
45
|
+
const peers = useHMSStore(selectPeers);
|
46
|
+
const whiteboard = useHMSStore(selectWhiteboard);
|
47
|
+
const [, setActiveScreenSharePeer] = useSetAppDataByKey(APP_DATA.activeScreensharePeerId);
|
48
|
+
|
49
|
+
const smallTilePeers = useMemo(() => {
|
50
|
+
const smallTilePeers = peers.filter(peer => peer.id !== whiteboard?.owner);
|
51
|
+
return smallTilePeers;
|
52
|
+
}, [peers, whiteboard?.owner]);
|
53
|
+
|
54
|
+
useEffect(() => {
|
55
|
+
setActiveScreenSharePeer(whiteboard?.owner || '');
|
56
|
+
return () => {
|
57
|
+
setActiveScreenSharePeer('');
|
58
|
+
};
|
59
|
+
}, [whiteboard?.owner, setActiveScreenSharePeer]);
|
60
|
+
|
61
|
+
return (
|
62
|
+
<ProminenceLayout.Root>
|
63
|
+
<ProminenceLayout.ProminentSection>
|
64
|
+
<EmbedComponent />
|
65
|
+
</ProminenceLayout.ProminentSection>
|
66
|
+
<SecondaryTiles peers={smallTilePeers} />
|
67
|
+
</ProminenceLayout.Root>
|
68
|
+
);
|
69
|
+
};
|