@100mslive/roomkit-react 0.3.25-alpha.9 → 0.3.26-alpha.1

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.
@@ -1359,7 +1359,7 @@
1359
1359
  "format": "esm"
1360
1360
  },
1361
1361
  "src/Stats/Stats.tsx": {
1362
- "bytes": 8401,
1362
+ "bytes": 8508,
1363
1363
  "imports": [
1364
1364
  {
1365
1365
  "path": "react",
@@ -3102,7 +3102,7 @@
3102
3102
  "format": "esm"
3103
3103
  },
3104
3104
  "src/Prebuilt/components/AudioVideoToggle.tsx": {
3105
- "bytes": 13759,
3105
+ "bytes": 13760,
3106
3106
  "imports": [
3107
3107
  {
3108
3108
  "path": "react",
@@ -4739,7 +4739,7 @@
4739
4739
  "format": "esm"
4740
4740
  },
4741
4741
  "src/Prebuilt/components/StatsForNerds.jsx": {
4742
- "bytes": 13474,
4742
+ "bytes": 13543,
4743
4743
  "imports": [
4744
4744
  {
4745
4745
  "path": "react",
@@ -5779,7 +5779,7 @@
5779
5779
  "format": "cjs"
5780
5780
  },
5781
5781
  "../hms-video-store/dist/index.js": {
5782
- "bytes": 375693,
5782
+ "bytes": 375761,
5783
5783
  "imports": [
5784
5784
  {
5785
5785
  "path": "../../node_modules/reselect/es/index.js",
@@ -8324,7 +8324,7 @@
8324
8324
  "format": "esm"
8325
8325
  },
8326
8326
  "src/Prebuilt/components/Polls/Voting/QuestionCard.jsx": {
8327
- "bytes": 7266,
8327
+ "bytes": 7496,
8328
8328
  "imports": [
8329
8329
  {
8330
8330
  "path": "react",
@@ -11321,7 +11321,7 @@
11321
11321
  ],
11322
11322
  "format": "esm"
11323
11323
  },
11324
- "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fc332/tldraw.css": {
11324
+ "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b98190f22/tldraw.css": {
11325
11325
  "bytes": 80111,
11326
11326
  "imports": [
11327
11327
  {
@@ -11371,7 +11371,7 @@
11371
11371
  }
11372
11372
  ]
11373
11373
  },
11374
- "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fbc80/index.css": {
11374
+ "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b981908a0/index.css": {
11375
11375
  "bytes": 597,
11376
11376
  "imports": [
11377
11377
  {
@@ -11380,7 +11380,7 @@
11380
11380
  "external": true
11381
11381
  },
11382
11382
  {
11383
- "path": "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fc332/tldraw.css",
11383
+ "path": "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b98190f22/tldraw.css",
11384
11384
  "kind": "import-rule",
11385
11385
  "original": "@tldraw/tldraw/tldraw.css"
11386
11386
  }
@@ -11455,7 +11455,7 @@
11455
11455
  "original": "../../common/constants"
11456
11456
  },
11457
11457
  {
11458
- "path": "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fbc80/index.css",
11458
+ "path": "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b981908a0/index.css",
11459
11459
  "kind": "import-statement",
11460
11460
  "original": "@100mslive/hms-whiteboard/index.css"
11461
11461
  },
@@ -15714,7 +15714,7 @@
15714
15714
  "imports": [],
15715
15715
  "exports": [],
15716
15716
  "inputs": {},
15717
- "bytes": 3624491
15717
+ "bytes": 3625378
15718
15718
  },
15719
15719
  "dist/index.cjs.js": {
15720
15720
  "imports": [
@@ -19052,7 +19052,7 @@
19052
19052
  "cssBundle": "dist/index.cjs.css",
19053
19053
  "inputs": {
19054
19054
  "<define:process.env>": {
19055
- "bytesInOutput": 18042
19055
+ "bytesInOutput": 18054
19056
19056
  },
19057
19057
  "../../node_modules/lodash/lodash.js": {
19058
19058
  "bytesInOutput": 224306
@@ -19274,7 +19274,7 @@
19274
19274
  "bytesInOutput": 27
19275
19275
  },
19276
19276
  "src/Stats/Stats.tsx": {
19277
- "bytesInOutput": 9337
19277
+ "bytesInOutput": 9431
19278
19278
  },
19279
19279
  "src/Stats/formatBytes.ts": {
19280
19280
  "bytesInOutput": 471
@@ -19406,7 +19406,7 @@
19406
19406
  "bytesInOutput": 3740
19407
19407
  },
19408
19408
  "src/Prebuilt/components/AudioVideoToggle.tsx": {
19409
- "bytesInOutput": 15351
19409
+ "bytesInOutput": 15352
19410
19410
  },
19411
19411
  "src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.tsx": {
19412
19412
  "bytesInOutput": 3499
@@ -19544,7 +19544,7 @@
19544
19544
  "bytesInOutput": 8368
19545
19545
  },
19546
19546
  "src/Prebuilt/components/StatsForNerds.jsx": {
19547
- "bytesInOutput": 15803
19547
+ "bytesInOutput": 15919
19548
19548
  },
19549
19549
  "src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx": {
19550
19550
  "bytesInOutput": 5478
@@ -19781,7 +19781,7 @@
19781
19781
  "bytesInOutput": 1383
19782
19782
  },
19783
19783
  "src/Prebuilt/components/Polls/Voting/QuestionCard.jsx": {
19784
- "bytesInOutput": 7868
19784
+ "bytesInOutput": 8123
19785
19785
  },
19786
19786
  "src/Prebuilt/components/Polls/Voting/TimedVoting.tsx": {
19787
19787
  "bytesInOutput": 1786
@@ -19930,7 +19930,7 @@
19930
19930
  "src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx": {
19931
19931
  "bytesInOutput": 3051
19932
19932
  },
19933
- "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fbc80/index.css": {
19933
+ "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b981908a0/index.css": {
19934
19934
  "bytesInOutput": 0
19935
19935
  },
19936
19936
  "src/Prebuilt/common/PeersSorter.ts": {
@@ -20159,13 +20159,13 @@
20159
20159
  "bytesInOutput": 4736
20160
20160
  },
20161
20161
  "src/Diagnostics/ConnectivityTest.tsx": {
20162
- "bytesInOutput": 15474
20162
+ "bytesInOutput": 15472
20163
20163
  },
20164
20164
  "src/Diagnostics/VideoTest.tsx": {
20165
20165
  "bytesInOutput": 2777
20166
20166
  }
20167
20167
  },
20168
- "bytes": 1504648
20168
+ "bytes": 1505124
20169
20169
  },
20170
20170
  "dist/index.cjs.css.map": {
20171
20171
  "imports": [],
@@ -20227,10 +20227,10 @@
20227
20227
  }
20228
20228
  ],
20229
20229
  "inputs": {
20230
- "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fc332/tldraw.css": {
20230
+ "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b98190f22/tldraw.css": {
20231
20231
  "bytesInOutput": 75223
20232
20232
  },
20233
- "../../../../../../../tmp/tmp-2753-VUNFsMls4FlC/1939b41fbc80/index.css": {
20233
+ "../../../../../../../tmp/tmp-2748-1OMZvrJdpQSE/193b981908a0/index.css": {
20234
20234
  "bytesInOutput": 401
20235
20235
  }
20236
20236
  },
@@ -1359,7 +1359,7 @@
1359
1359
  "format": "esm"
1360
1360
  },
1361
1361
  "src/Stats/Stats.tsx": {
1362
- "bytes": 8401,
1362
+ "bytes": 8508,
1363
1363
  "imports": [
1364
1364
  {
1365
1365
  "path": "react",
@@ -3102,7 +3102,7 @@
3102
3102
  "format": "esm"
3103
3103
  },
3104
3104
  "src/Prebuilt/components/AudioVideoToggle.tsx": {
3105
- "bytes": 13759,
3105
+ "bytes": 13760,
3106
3106
  "imports": [
3107
3107
  {
3108
3108
  "path": "react",
@@ -4739,7 +4739,7 @@
4739
4739
  "format": "esm"
4740
4740
  },
4741
4741
  "src/Prebuilt/components/StatsForNerds.jsx": {
4742
- "bytes": 13474,
4742
+ "bytes": 13543,
4743
4743
  "imports": [
4744
4744
  {
4745
4745
  "path": "react",
@@ -5779,7 +5779,7 @@
5779
5779
  "format": "cjs"
5780
5780
  },
5781
5781
  "../hms-video-store/dist/index.js": {
5782
- "bytes": 375693,
5782
+ "bytes": 375761,
5783
5783
  "imports": [
5784
5784
  {
5785
5785
  "path": "../../node_modules/reselect/es/index.js",
@@ -8324,7 +8324,7 @@
8324
8324
  "format": "esm"
8325
8325
  },
8326
8326
  "src/Prebuilt/components/Polls/Voting/QuestionCard.jsx": {
8327
- "bytes": 7266,
8327
+ "bytes": 7496,
8328
8328
  "imports": [
8329
8329
  {
8330
8330
  "path": "react",
@@ -11321,7 +11321,7 @@
11321
11321
  ],
11322
11322
  "format": "esm"
11323
11323
  },
11324
- "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc8f3/tldraw.css": {
11324
+ "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190f33/tldraw.css": {
11325
11325
  "bytes": 80111,
11326
11326
  "imports": [
11327
11327
  {
@@ -11371,7 +11371,7 @@
11371
11371
  }
11372
11372
  ]
11373
11373
  },
11374
- "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc2a1/index.css": {
11374
+ "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190e51/index.css": {
11375
11375
  "bytes": 597,
11376
11376
  "imports": [
11377
11377
  {
@@ -11380,7 +11380,7 @@
11380
11380
  "external": true
11381
11381
  },
11382
11382
  {
11383
- "path": "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc8f3/tldraw.css",
11383
+ "path": "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190f33/tldraw.css",
11384
11384
  "kind": "import-rule",
11385
11385
  "original": "@tldraw/tldraw/tldraw.css"
11386
11386
  }
@@ -11455,7 +11455,7 @@
11455
11455
  "original": "../../common/constants"
11456
11456
  },
11457
11457
  {
11458
- "path": "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc2a1/index.css",
11458
+ "path": "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190e51/index.css",
11459
11459
  "kind": "import-statement",
11460
11460
  "original": "@100mslive/hms-whiteboard/index.css"
11461
11461
  },
@@ -15714,7 +15714,7 @@
15714
15714
  "imports": [],
15715
15715
  "exports": [],
15716
15716
  "inputs": {},
15717
- "bytes": 3664414
15717
+ "bytes": 3665423
15718
15718
  },
15719
15719
  "dist/index.js": {
15720
15720
  "imports": [
@@ -19118,7 +19118,7 @@
19118
19118
  "cssBundle": "dist/index.css",
19119
19119
  "inputs": {
19120
19120
  "<define:process.env>": {
19121
- "bytesInOutput": 18042
19121
+ "bytesInOutput": 18054
19122
19122
  },
19123
19123
  "../../node_modules/lodash/lodash.js": {
19124
19124
  "bytesInOutput": 224301
@@ -19340,7 +19340,7 @@
19340
19340
  "bytesInOutput": 27
19341
19341
  },
19342
19342
  "src/Stats/Stats.tsx": {
19343
- "bytesInOutput": 8580
19343
+ "bytesInOutput": 8674
19344
19344
  },
19345
19345
  "src/Stats/formatBytes.ts": {
19346
19346
  "bytesInOutput": 471
@@ -19472,7 +19472,7 @@
19472
19472
  "bytesInOutput": 3306
19473
19473
  },
19474
19474
  "src/Prebuilt/components/AudioVideoToggle.tsx": {
19475
- "bytesInOutput": 14235
19475
+ "bytesInOutput": 14236
19476
19476
  },
19477
19477
  "src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.tsx": {
19478
19478
  "bytesInOutput": 3293
@@ -19610,7 +19610,7 @@
19610
19610
  "bytesInOutput": 7700
19611
19611
  },
19612
19612
  "src/Prebuilt/components/StatsForNerds.jsx": {
19613
- "bytesInOutput": 14466
19613
+ "bytesInOutput": 14582
19614
19614
  },
19615
19615
  "src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx": {
19616
19616
  "bytesInOutput": 5008
@@ -19847,7 +19847,7 @@
19847
19847
  "bytesInOutput": 1304
19848
19848
  },
19849
19849
  "src/Prebuilt/components/Polls/Voting/QuestionCard.jsx": {
19850
- "bytesInOutput": 7598
19850
+ "bytesInOutput": 7875
19851
19851
  },
19852
19852
  "src/Prebuilt/components/Polls/Voting/TimedVoting.tsx": {
19853
19853
  "bytesInOutput": 1738
@@ -19996,7 +19996,7 @@
19996
19996
  "src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx": {
19997
19997
  "bytesInOutput": 2830
19998
19998
  },
19999
- "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc2a1/index.css": {
19999
+ "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190e51/index.css": {
20000
20000
  "bytesInOutput": 0
20001
20001
  },
20002
20002
  "src/Prebuilt/common/PeersSorter.ts": {
@@ -20132,7 +20132,7 @@
20132
20132
  "bytesInOutput": 1686
20133
20133
  },
20134
20134
  "src/Prebuilt/components/Notifications/HandRaisedNotifications.tsx": {
20135
- "bytesInOutput": 3074
20135
+ "bytesInOutput": 3079
20136
20136
  },
20137
20137
  "src/Prebuilt/components/Toast/ToastBatcher.js": {
20138
20138
  "bytesInOutput": 1983
@@ -20225,13 +20225,13 @@
20225
20225
  "bytesInOutput": 4418
20226
20226
  },
20227
20227
  "src/Diagnostics/ConnectivityTest.tsx": {
20228
- "bytesInOutput": 13776
20228
+ "bytesInOutput": 13774
20229
20229
  },
20230
20230
  "src/Diagnostics/VideoTest.tsx": {
20231
20231
  "bytesInOutput": 2632
20232
20232
  }
20233
20233
  },
20234
- "bytes": 1449703
20234
+ "bytes": 1450206
20235
20235
  },
20236
20236
  "dist/index.css.map": {
20237
20237
  "imports": [],
@@ -20293,10 +20293,10 @@
20293
20293
  }
20294
20294
  ],
20295
20295
  "inputs": {
20296
- "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc8f3/tldraw.css": {
20296
+ "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190f33/tldraw.css": {
20297
20297
  "bytesInOutput": 75223
20298
20298
  },
20299
- "../../../../../../../tmp/tmp-2753-5MlpEP9SW0c7/1939b41fc2a1/index.css": {
20299
+ "../../../../../../../tmp/tmp-2748-0N4i0vvstTKq/193b98190e51/index.css": {
20300
20300
  "bytesInOutput": 401
20301
20301
  }
20302
20302
  },
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "prebuilt",
11
11
  "roomkit"
12
12
  ],
13
- "version": "0.3.25-alpha.9",
13
+ "version": "0.3.26-alpha.1",
14
14
  "author": "100ms",
15
15
  "license": "MIT",
16
16
  "repository": {
@@ -75,12 +75,12 @@
75
75
  "react": ">=17.0.2 <19.0.0"
76
76
  },
77
77
  "dependencies": {
78
- "@100mslive/hls-player": "0.3.25-alpha.9",
78
+ "@100mslive/hls-player": "0.3.26-alpha.1",
79
79
  "@100mslive/hms-noise-cancellation": "0.0.1",
80
- "@100mslive/hms-virtual-background": "1.13.25-alpha.9",
81
- "@100mslive/hms-whiteboard": "0.0.15-alpha.9",
82
- "@100mslive/react-icons": "0.10.25-alpha.9",
83
- "@100mslive/react-sdk": "0.10.25-alpha.9",
80
+ "@100mslive/hms-virtual-background": "1.13.26-alpha.1",
81
+ "@100mslive/hms-whiteboard": "0.0.15-alpha.15",
82
+ "@100mslive/react-icons": "0.10.26-alpha.1",
83
+ "@100mslive/react-sdk": "0.10.26-alpha.1",
84
84
  "@100mslive/types-prebuilt": "0.12.12",
85
85
  "@emoji-mart/data": "^1.0.6",
86
86
  "@emoji-mart/react": "^1.0.1",
@@ -117,5 +117,5 @@
117
117
  "uuid": "^8.3.2",
118
118
  "worker-timers": "^7.0.40"
119
119
  },
120
- "gitHead": "bf1ea5c8a4ade738ea19a95fd3d5f05f4e7e0c2b"
120
+ "gitHead": "47edda2d774cd4f278d4e6c566c89f4395696314"
121
121
  }
@@ -11,7 +11,6 @@ import { DiagnosticsStep, useDiagnostics } from './DiagnosticsContext';
11
11
 
12
12
  const Regions = {
13
13
  in: 'India',
14
- eu: 'Europe',
15
14
  us: 'United States',
16
15
  };
17
16
 
@@ -164,7 +163,7 @@ const AudioStats = ({ stats }: { stats: DiagnosticsRTCStats | undefined }) => {
164
163
  <DetailedInfo title="Bitrate Sent" value={formatBytes(stats.bitrateSent, 'b/s')} />
165
164
  <DetailedInfo title="Bitrate Received" value={formatBytes(stats.bitrateReceived, 'b/s')} />
166
165
  <DetailedInfo title="Round Trip Time" value={`${stats.roundTripTime} ms`} />
167
- <DetailedInfo title="Jitter" value={`${stats.jitter} s`} />
166
+ <DetailedInfo title="Jitter" value={`${stats.jitter * 1000} ms`} />
168
167
  </Flex>
169
168
  )}
170
169
  </ConnectivityTestStepResult>
@@ -183,7 +182,7 @@ const VideoStats = ({ stats }: { stats: DiagnosticsRTCStats | undefined }) => {
183
182
  <DetailedInfo title="Bitrate Sent" value={formatBytes(stats.bitrateSent, 'b/s')} />
184
183
  <DetailedInfo title="Bitrate Received" value={formatBytes(stats.bitrateReceived, 'b/s')} />
185
184
  <DetailedInfo title="Round Trip Time" value={`${stats.roundTripTime} ms`} />
186
- <DetailedInfo title="Jitter" value={`${stats.jitter} s`} />
185
+ <DetailedInfo title="Jitter" value={`${stats.jitter * 1000} ms`} />
187
186
  </Flex>
188
187
  )}
189
188
  </ConnectivityTestStepResult>
@@ -155,7 +155,7 @@ export const NoiseCancellation = ({
155
155
  return (
156
156
  <ActionTile.Root
157
157
  active={isNoiseCancellationEnabled && isKrispPluginAdded}
158
- disable={inProgress}
158
+ disabled={inProgress}
159
159
  onClick={async () => {
160
160
  await setNoiseCancellationWithPlugin(!isNoiseCancellationEnabled);
161
161
  setOpenOptionsSheet?.(false);
@@ -1,7 +1,14 @@
1
1
  // @ts-check
2
2
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { match } from 'ts-pattern';
4
- import { selectLocalPeer, selectLocalPeerRoleName, useHMSActions, useHMSStore } from '@100mslive/react-sdk';
4
+ import {
5
+ HMSRoomState,
6
+ selectLocalPeer,
7
+ selectLocalPeerRoleName,
8
+ selectRoomState,
9
+ useHMSActions,
10
+ useHMSStore,
11
+ } from '@100mslive/react-sdk';
5
12
  import { CheckCircleIcon, ChevronDownIcon, CrossCircleIcon } from '@100mslive/react-icons';
6
13
  import { Box, Button, Flex, Text } from '../../../../';
7
14
  import { checkCorrectAnswer } from '../../../common/utils';
@@ -27,7 +34,7 @@ export const QuestionCard = ({
27
34
  }) => {
28
35
  const actions = useHMSActions();
29
36
  const localPeer = useHMSStore(selectLocalPeer);
30
-
37
+ const roomState = useHMSStore(selectRoomState);
31
38
  const isLocalPeerCreator = localPeer?.id === startedBy;
32
39
  const localPeerRoleName = useHMSStore(selectLocalPeerRoleName);
33
40
  const roleCanViewResponse =
@@ -183,13 +190,19 @@ export const QuestionCard = ({
183
190
  ) : null}
184
191
  </Box>
185
192
  {isLive && (
186
- <QuestionActions isValidVote={isValidVote} onVote={handleVote} response={localPeerChoice} isQuiz={isQuiz} />
193
+ <QuestionActions
194
+ disableVote={roomState !== HMSRoomState.Connected}
195
+ isValidVote={isValidVote}
196
+ onVote={handleVote}
197
+ response={localPeerChoice}
198
+ isQuiz={isQuiz}
199
+ />
187
200
  )}
188
201
  </Box>
189
202
  );
190
203
  };
191
204
 
192
- const QuestionActions = ({ isValidVote, response, isQuiz, onVote }) => {
205
+ const QuestionActions = ({ isValidVote, response, isQuiz, onVote, disableVote }) => {
193
206
  return (
194
207
  <Flex align="center" justify="end" css={{ gap: '$4', w: '100%' }}>
195
208
  {response ? (
@@ -199,7 +212,7 @@ const QuestionActions = ({ isValidVote, response, isQuiz, onVote }) => {
199
212
  {!isQuiz && !response.skipped ? 'Voted' : null}
200
213
  </Text>
201
214
  ) : (
202
- <Button css={{ p: '$xs $10', fontWeight: '$semiBold' }} disabled={!isValidVote} onClick={onVote}>
215
+ <Button css={{ p: '$xs $10', fontWeight: '$semiBold' }} disabled={!isValidVote || disableVote} onClick={onVote}>
203
216
  {isQuiz ? 'Answer' : 'Vote'}
204
217
  </Button>
205
218
  )}
@@ -275,7 +275,7 @@ const LocalPeerStats = () => {
275
275
  return (
276
276
  <Flex css={{ flexWrap: 'wrap', gap: '$10' }}>
277
277
  <StatsRow label="Packets Lost" value={stats.subscribe?.packetsLost} />
278
- <StatsRow label="Jitter" value={stats.subscribe?.jitter} />
278
+ <StatsRow label="Jitter" value={`${((stats.subscribe?.jitter ?? 0) * 1000).toFixed(2)} ms`} />
279
279
  <StatsRow label="Publish Bitrate" value={formatBytes(stats.publish?.bitrate, 'b/s')} />
280
280
  <StatsRow label="Subscribe Bitrate" value={formatBytes(stats.subscribe?.bitrate, 'b/s')} />
281
281
  <StatsRow
@@ -316,7 +316,7 @@ const TrackStats = ({ trackID, layer, local }) => {
316
316
  <StatsRow label="Type" value={stats.type + ' ' + stats.kind} />
317
317
  <StatsRow label="Bitrate" value={formatBytes(stats.bitrate, 'b/s')} />
318
318
  <StatsRow label="Packets Lost" value={stats.packetsLost} />
319
- <StatsRow label="Jitter" value={stats.jitter?.toFixed(3)} />
319
+ <StatsRow label="Jitter" value={`${((stats.subscribe?.jitter ?? 0) * 1000).toFixed(2)} ms`} />
320
320
  <StatsRow
321
321
  label={inbound ? 'Bytes Received' : 'Bytes Sent'}
322
322
  value={formatBytes(inbound ? stats.bytesReceived : stats.bytesSent)}
@@ -159,12 +159,21 @@ const PacketLostAndJitter = ({
159
159
  const isLocalPeer = audioTrackStats?.type.includes('outbound') || videoTrackStats?.type.includes('outbound');
160
160
  const audioStats = isLocalPeer ? audioTrackStats?.remote : audioTrackStats;
161
161
  const videoStats = isLocalPeer ? videoTrackStats?.remote : videoTrackStats;
162
+
162
163
  return (
163
164
  <>
164
165
  <TrackPacketsLostRow label="Packet Loss(V)" stats={videoStats} />
165
166
  <TrackPacketsLostRow label="Packet Loss(A)" stats={audioStats} />
166
- <StatsRow show={isNotNullish(videoStats?.jitter)} label="Jitter(V)" value={videoStats?.jitter?.toFixed(4)} />
167
- <StatsRow show={isNotNullish(audioStats?.jitter)} label="Jitter(A)" value={audioStats?.jitter?.toFixed(4)} />
167
+ <StatsRow
168
+ show={isNotNullish(videoStats?.jitter)}
169
+ label="Jitter(V)"
170
+ value={`${((videoStats?.jitter ?? 0) * 1000).toFixed(2)} ms`}
171
+ />
172
+ <StatsRow
173
+ show={isNotNullish(audioStats?.jitter)}
174
+ label="Jitter(A)"
175
+ value={`${((audioStats?.jitter ?? 0) * 1000).toFixed(2)} ms`}
176
+ />
168
177
  </>
169
178
  );
170
179
  };