@100mslive/roomkit-react 0.1.19-alpha.0 → 0.1.19-alpha.2

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.
Files changed (43) hide show
  1. package/dist/{HLSView-GG4WVUQY.js → HLSView-7X5BVAZE.js} +2 -2
  2. package/dist/Prebuilt/App.d.ts +1 -0
  3. package/dist/Prebuilt/common/constants.d.ts +1 -1
  4. package/dist/Prebuilt/components/Chat/EmptyChat.d.ts +2 -0
  5. package/dist/Prebuilt/components/Polls/Voting/{Leaderboard.d.ts → LeaderboardSummary.d.ts} +1 -1
  6. package/dist/Prebuilt/components/Polls/Voting/StatisticBox.d.ts +5 -0
  7. package/dist/Prebuilt/components/VirtualBackground/VBCollection.d.ts +3 -4
  8. package/dist/Prebuilt/components/VirtualBackground/VBHandler.d.ts +13 -0
  9. package/dist/Prebuilt/components/VirtualBackground/VBPicker.d.ts +4 -2
  10. package/dist/Prebuilt/components/VirtualBackground/constants.d.ts +0 -2
  11. package/dist/{chunk-GXJIUWTP.js → chunk-H3B4ARYV.js} +1399 -1296
  12. package/dist/chunk-H3B4ARYV.js.map +7 -0
  13. package/dist/index.cjs.js +1744 -1612
  14. package/dist/index.cjs.js.map +4 -4
  15. package/dist/index.js +1 -1
  16. package/dist/meta.cjs.json +228 -91
  17. package/dist/meta.esbuild.json +235 -98
  18. package/package.json +6 -6
  19. package/src/Prebuilt/App.tsx +2 -1
  20. package/src/Prebuilt/common/constants.ts +1 -1
  21. package/src/Prebuilt/components/Chat/ChatActions.tsx +3 -3
  22. package/src/Prebuilt/components/Chat/ChatBody.tsx +28 -46
  23. package/src/Prebuilt/components/Chat/EmptyChat.tsx +51 -0
  24. package/src/Prebuilt/components/Footer/PollsToggle.tsx +7 -1
  25. package/src/Prebuilt/components/Notifications/Notifications.tsx +0 -29
  26. package/src/Prebuilt/components/Polls/Polls.tsx +2 -2
  27. package/src/Prebuilt/components/Polls/Voting/LeaderboardEntry.tsx +2 -2
  28. package/src/Prebuilt/components/Polls/Voting/LeaderboardSummary.tsx +162 -0
  29. package/src/Prebuilt/components/Polls/Voting/PeerParticipationSummary.tsx +2 -9
  30. package/src/Prebuilt/components/Polls/Voting/StatisticBox.tsx +15 -0
  31. package/src/Prebuilt/components/Polls/Voting/Voting.jsx +1 -17
  32. package/src/Prebuilt/components/TileMenu/TileMenuContent.tsx +1 -1
  33. package/src/Prebuilt/components/VirtualBackground/VBCollection.tsx +5 -11
  34. package/src/Prebuilt/components/VirtualBackground/VBHandler.tsx +72 -0
  35. package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +48 -83
  36. package/src/Prebuilt/components/VirtualBackground/constants.ts +0 -4
  37. package/src/Prebuilt/layouts/SidePane.tsx +11 -2
  38. package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +5 -3
  39. package/src/Theme/stitches.config.ts +2 -10
  40. package/dist/chunk-GXJIUWTP.js.map +0 -7
  41. package/src/Prebuilt/components/Polls/Voting/Leaderboard.tsx +0 -123
  42. package/src/Prebuilt/components/Polls/Voting/PollResultSummary.jsx +0 -125
  43. /package/dist/{HLSView-GG4WVUQY.js.map → HLSView-7X5BVAZE.js.map} +0 -0
@@ -1,123 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { HMSPollLeaderboardResponse, selectPollByID, useHMSActions, useHMSStore } from '@100mslive/react-sdk';
3
- import { ChevronLeftIcon, CrossIcon } from '@100mslive/react-icons';
4
- import { Box, Flex } from '../../../../Layout';
5
- import { Loading } from '../../../../Loading';
6
- import { Text } from '../../../../Text';
7
- import { LeaderboardEntry } from './LeaderboardEntry';
8
- // @ts-ignore
9
- import { useSidepaneToggle } from '../../AppData/useSidepane';
10
- // @ts-ignore
11
- import { usePollViewState } from '../../AppData/useUISettings';
12
- // @ts-ignore
13
- import { StatusIndicator } from '../common/StatusIndicator';
14
- import { POLL_VIEWS } from '../../../common/constants';
15
-
16
- export const Leaderboard = ({ pollID }: { pollID: string }) => {
17
- const hmsActions = useHMSActions();
18
- const poll = useHMSStore(selectPollByID(pollID));
19
- const [pollLeaderboard, setPollLeaderboard] = useState<HMSPollLeaderboardResponse | undefined>();
20
- const { setPollView } = usePollViewState();
21
- const toggleSidepane = useSidepaneToggle();
22
-
23
- /*
24
- const sharedLeaderboardRef = useRef(false);
25
- const sharedLeaderboards = useHMSStore(selectSessionStore(SESSION_STORE_KEY.SHARED_LEADERBOARDS));
26
- const { sendEvent } = useCustomEvent({
27
- type: HMSNotificationTypes.POLL_LEADERBOARD_SHARED,
28
- onEvent: () => {
29
- return;
30
- },
31
- });
32
- */
33
-
34
- useEffect(() => {
35
- const fetchLeaderboardData = async () => {
36
- if (poll) {
37
- const leaderboardData = await hmsActions.interactivityCenter.fetchLeaderboard(poll, 0, 50);
38
- setPollLeaderboard(leaderboardData);
39
- }
40
- };
41
- fetchLeaderboardData();
42
- }, [poll, hmsActions.interactivityCenter]);
43
-
44
- if (!poll || !pollLeaderboard)
45
- return (
46
- <Flex align="center" justify="center" css={{ size: '100%' }}>
47
- <Loading />
48
- </Flex>
49
- );
50
- const maxPossibleScore = poll.questions?.reduce((total, question) => (total += question.weight || 0), 0) || 0;
51
- const questionCount = poll.questions?.length || 0;
52
-
53
- return (
54
- <Flex direction="column" css={{ size: '100%' }}>
55
- <Flex justify="between" align="center" css={{ pb: '$6', borderBottom: '1px solid $border_bright', mb: '$8' }}>
56
- <Flex align="center" css={{ gap: '$4' }}>
57
- <Flex
58
- css={{ color: '$on_surface_medium', '&:hover': { color: '$on_surface_high', cursor: 'pointer' } }}
59
- onClick={() => setPollView(POLL_VIEWS.VOTE)}
60
- >
61
- <ChevronLeftIcon />
62
- </Flex>
63
- <Text variant="lg" css={{ fontWeight: '$semiBold' }}>
64
- {poll.title}
65
- </Text>
66
- <StatusIndicator isLive={false} />
67
- </Flex>
68
- <Flex
69
- css={{ color: '$on_surface_medium', '&:hover': { color: '$on_surface_high', cursor: 'pointer' } }}
70
- onClick={toggleSidepane}
71
- >
72
- <CrossIcon />
73
- </Flex>
74
- </Flex>
75
- <Text variant="sm" css={{ fontWeight: '$semiBold' }}>
76
- Leaderboard
77
- </Text>
78
- <Text variant="xs" css={{ color: '$on_surface_medium' }}>
79
- Based on score and time taken to cast the correct answer
80
- </Text>
81
- <Box
82
- css={{
83
- mt: '$8',
84
- overflowY: 'auto',
85
- flex: '1 1 0',
86
- mr: '-$6',
87
- pr: '$6',
88
- }}
89
- >
90
- {pollLeaderboard?.entries &&
91
- pollLeaderboard.entries.map(question => (
92
- <LeaderboardEntry
93
- key={question.position}
94
- position={question.position}
95
- score={question.score}
96
- questionCount={questionCount}
97
- correctResponses={question.correctResponses}
98
- userName={question.peer.username || ''}
99
- maxPossibleScore={maxPossibleScore}
100
- />
101
- ))}
102
- </Box>
103
-
104
- {/* {!sharedLeaderboardRef.current ? (
105
- <Button
106
- css={{ ml: 'auto', mt: '$8' }}
107
- onClick={() => {
108
- const currentlySharedLeaderboards = sharedLeaderboards || [];
109
- hmsActions.sessionStore.set(SESSION_STORE_KEY.SHARED_LEADERBOARDS, [
110
- ...currentlySharedLeaderboards,
111
- pollID,
112
- ]);
113
- const pollDetails = { initiatorName: '', startedBy: poll.startedBy, id: pollID };
114
- sendEvent();
115
- sharedLeaderboardRef.current = true;
116
- }}
117
- >
118
- Share Results
119
- </Button>
120
- ) : null} */}
121
- </Flex>
122
- );
123
- };
@@ -1,125 +0,0 @@
1
- // @ts-check
2
- import React, { useMemo } from 'react';
3
- import { selectLocalPeerID, useHMSStore } from '@100mslive/react-sdk';
4
- import { Box, Text } from '../../../../';
5
- import { checkCorrectAnswer } from '../../../common/utils';
6
-
7
- /**
8
- * @param {{ isQuiz: boolean;
9
- * isAdmin: boolean;
10
- * pollResult: import("@100mslive/react-sdk").HMSPoll['result'];
11
- * questions: import("@100mslive/react-sdk").HMSPoll['questions'] }} param0
12
- */
13
- export const PollResultSummary = ({ isQuiz, isAdmin, pollResult, questions }) => {
14
- const localPeerID = useHMSStore(selectLocalPeerID);
15
- const noAnswers = pollResult?.maxUsers || 0 - (pollResult?.totalUsers || 0);
16
- const participationPercentage =
17
- pollResult?.maxUsers && pollResult?.maxUsers > 0 ? ((pollResult?.totalUsers || 0) * 100) / pollResult.maxUsers : 0;
18
-
19
- const totalCorrectAnswers = useMemo(() => {
20
- let correctAnswers = 0;
21
- questions?.forEach(question => {
22
- correctAnswers += question.result?.correctResponses || 0;
23
- });
24
- return correctAnswers;
25
- }, [questions]);
26
-
27
- const totalIncorrectAnswers = useMemo(() => {
28
- let incorrectAnswers = 0;
29
- questions?.forEach(question => {
30
- incorrectAnswers +=
31
- (question.result?.totalResponses || 0) -
32
- (question.result?.correctResponses || 0) -
33
- (question.result?.skippedCount || 0);
34
- });
35
- return incorrectAnswers;
36
- }, [questions]);
37
-
38
- const localCorrectAnswers = useMemo(() => {
39
- let correctAnswers = 0;
40
- questions?.forEach(question => {
41
- const localResponse = question.responses?.find(response => response.peer?.peerid === localPeerID);
42
- if (checkCorrectAnswer(question.answer, localResponse, question.type)) {
43
- correctAnswers++;
44
- }
45
- });
46
- return correctAnswers;
47
- }, [localPeerID, questions]);
48
-
49
- const localIncorrectAnswers = useMemo(() => {
50
- let incorrectAnswers = 0;
51
- questions?.forEach(question => {
52
- const localResponse = question.responses?.find(response => response.peer?.peerid === localPeerID);
53
- if (!checkCorrectAnswer(question.answer, localResponse, question.type) && localResponse) {
54
- incorrectAnswers++;
55
- }
56
- });
57
- return incorrectAnswers;
58
- }, [localPeerID, questions]);
59
-
60
- if (!pollResult) {
61
- return null;
62
- }
63
-
64
- let StatsComponents;
65
-
66
- if (isQuiz && isAdmin) {
67
- StatsComponents = (
68
- <>
69
- <PollStat label="No. of correct answers" value={totalCorrectAnswers} />
70
- <PollStat label="No. of wrong answerss" value={totalIncorrectAnswers} />
71
- <PollStat label="Peers who didn't answer" value={noAnswers} />
72
- <PollStat label="Participation Percentage" value={participationPercentage.toFixed(2) + '%'} />
73
- </>
74
- );
75
- } else if (isQuiz && !isAdmin) {
76
- StatsComponents = (
77
- <>
78
- <PollStat label="No. of correct answers" value={localCorrectAnswers} />
79
- <PollStat label="No. of wrong answers" value={localIncorrectAnswers} />
80
- </>
81
- );
82
- } else if (!isQuiz && isAdmin) {
83
- StatsComponents = (
84
- <>
85
- <PollStat label="Peers who didn't answer" value={noAnswers} />
86
- <PollStat label="Participation Percentage" value={participationPercentage.toFixed(2) + '%'} />
87
- </>
88
- );
89
- } else {
90
- return null;
91
- }
92
-
93
- return (
94
- <Box
95
- css={{
96
- display: 'grid',
97
- 'grid-template-columns': 'repeat(2, 2fr)',
98
- gap: '$4',
99
- mt: '$3',
100
- }}
101
- >
102
- {StatsComponents}
103
- </Box>
104
- );
105
- };
106
-
107
- const PollStat = ({ label, value }) => {
108
- return (
109
- <Box css={{ bg: '$surface_bright', p: '$8', r: '$1' }}>
110
- <Text
111
- variant="overline"
112
- css={{
113
- fontWeight: '$semiBold',
114
- color: '$on_surface_medium',
115
- textTransform: 'uppercase',
116
- }}
117
- >
118
- {label}
119
- </Text>
120
- <Text variant="sub1" css={{ fontWeight: '$semiBold', color: '$on_surface_medium' }}>
121
- {value}
122
- </Text>
123
- </Box>
124
- );
125
- };