@azure/communication-react 1.5.1-alpha-202302050015 → 1.5.1-alpha-202302080014

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.
@@ -159,7 +159,7 @@ const _toCommunicationIdentifier = (id) => {
159
159
  // Copyright (c) Microsoft Corporation.
160
160
  // Licensed under the MIT license.
161
161
  // GENERATED FILE. DO NOT EDIT MANUALLY.
162
- var telemetryVersion = '1.5.1-alpha-202302050015';
162
+ var telemetryVersion = '1.5.1-alpha-202302080014';
163
163
 
164
164
  // Copyright (c) Microsoft Corporation.
165
165
  /**
@@ -594,10 +594,6 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
594
594
  }
595
595
  if (call && call.localVideoStreams.find((s) => areStreamsEqual(s, stream))) {
596
596
  yield call.stopVideo(stream);
597
- yield callClient.disposeView(callId, undefined, {
598
- source: stream.source,
599
- mediaStreamType: stream.mediaStreamType
600
- });
601
597
  }
602
598
  });
603
599
  const onToggleCamera = (options) => __awaiter$C(void 0, void 0, void 0, function* () {
@@ -2006,6 +2002,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2006
2002
  return __awaiter$x(this, void 0, void 0, function* () {
2007
2003
  // Render RemoteVideoStream that is part of a Call
2008
2004
  const streamId = stream.id;
2005
+ const streamType = stream.mediaStreamType;
2009
2006
  let participantKey;
2010
2007
  if (typeof participantId === 'string') {
2011
2008
  participantKey = participantId;
@@ -2013,7 +2010,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2013
2010
  else {
2014
2011
  participantKey = toFlatCommunicationIdentifier(participantId);
2015
2012
  }
2016
- const streamLogInfo = { callId, participantKey, streamId };
2013
+ const streamLogInfo = { callId, participantKey, streamId, streamType };
2017
2014
  _logEvent(callingStatefulLogger, {
2018
2015
  name: EventNames.CREATING_REMOTE_VIEW,
2019
2016
  level: 'info',
@@ -2058,7 +2055,8 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2058
2055
  _logEvent(callingStatefulLogger, {
2059
2056
  name: EventNames.REMOTE_STREAM_STOPPING,
2060
2057
  level: 'warning',
2061
- message: 'RemoteVideoStream was marked as stopping by dispose view. Resetting state to "Rendering".'
2058
+ message: 'RemoteVideoStream was marked as stopping by dispose view. Resetting state to "Rendering".',
2059
+ data: streamLogInfo
2062
2060
  });
2063
2061
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'Rendering', renderInfo.renderer);
2064
2062
  return;
@@ -2129,18 +2127,22 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2129
2127
  }
2130
2128
  function createViewLocalVideo(context, internalContext, callId, options) {
2131
2129
  return __awaiter$x(this, void 0, void 0, function* () {
2130
+ // Render LocalVideoStream that is part of a Call
2131
+ const renderInfo = internalContext.getLocalRenderInfo(callId);
2132
+ const streamType = renderInfo === null || renderInfo === void 0 ? void 0 : renderInfo.stream.mediaStreamType;
2133
+ const streamLogInfo = { callId, streamType };
2132
2134
  _logEvent(callingStatefulLogger, {
2133
2135
  name: EventNames.START_LOCAL_STREAM_RENDERING,
2134
2136
  level: 'info',
2135
- message: 'Start creating view for local video.'
2137
+ message: 'Start creating view for local video.',
2138
+ data: streamLogInfo
2136
2139
  });
2137
- // Render LocalVideoStream that is part of a Call
2138
- const renderInfo = internalContext.getLocalRenderInfo(callId);
2139
2140
  if (!renderInfo) {
2140
2141
  _logEvent(callingStatefulLogger, {
2141
2142
  name: EventNames.LOCAL_STREAM_NOT_FOUND,
2142
2143
  level: 'error',
2143
- message: 'LocalVideoStream not found in state.'
2144
+ message: 'LocalVideoStream not found in state.',
2145
+ data: { callId }
2144
2146
  });
2145
2147
  console.warn('LocalVideoStream not found in state');
2146
2148
  return;
@@ -2149,7 +2151,8 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2149
2151
  _logEvent(callingStatefulLogger, {
2150
2152
  name: EventNames.LOCAL_STREAM_ALREADY_RENDERED,
2151
2153
  level: 'warning',
2152
- message: 'LocalVideoStream is already rendered.'
2154
+ message: 'LocalVideoStream is already rendered.',
2155
+ data: streamLogInfo
2153
2156
  });
2154
2157
  console.warn('LocalVideoStream is already rendered');
2155
2158
  return;
@@ -2160,7 +2163,8 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2160
2163
  _logEvent(callingStatefulLogger, {
2161
2164
  name: EventNames.LOCAL_STREAM_RENDERING,
2162
2165
  level: 'warning',
2163
- message: 'LocalVideoStream is rendering.'
2166
+ message: 'LocalVideoStream is rendering.',
2167
+ data: streamLogInfo
2164
2168
  });
2165
2169
  return;
2166
2170
  }
@@ -2170,7 +2174,8 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2170
2174
  _logEvent(callingStatefulLogger, {
2171
2175
  name: EventNames.LOCAL_STREAM_STOPPING,
2172
2176
  level: 'warning',
2173
- message: 'LocalVideoStream was marked as stopping by dispose view. Resetting state to "Rendering".'
2177
+ message: 'LocalVideoStream was marked as stopping by dispose view. Resetting state to "Rendering".',
2178
+ data: streamLogInfo
2174
2179
  });
2175
2180
  internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'Rendering', renderInfo.renderer);
2176
2181
  return;
@@ -2187,7 +2192,9 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2187
2192
  level: 'error',
2188
2193
  message: 'Failed to create view.',
2189
2194
  data: {
2190
- error: e
2195
+ error: e,
2196
+ streamType,
2197
+ callId
2191
2198
  }
2192
2199
  });
2193
2200
  internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'NotRendered', undefined);
@@ -2203,9 +2210,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2203
2210
  name: EventNames.LOCAL_RENDER_INFO_NOT_FOUND,
2204
2211
  level: 'error',
2205
2212
  message: 'Cannot find local render info after create the view. ',
2206
- data: {
2207
- callId
2208
- }
2213
+ data: streamLogInfo
2209
2214
  });
2210
2215
  renderer.dispose();
2211
2216
  context.setLocalVideoStreamRendererView(callId, undefined);
@@ -2218,9 +2223,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2218
2223
  name: EventNames.LOCAL_CREATED_STREAM_STOPPING,
2219
2224
  level: 'warning',
2220
2225
  message: 'Render info status is stopping, dispose renderer.',
2221
- data: {
2222
- callId
2223
- }
2226
+ data: streamLogInfo
2224
2227
  });
2225
2228
  renderer.dispose();
2226
2229
  internalContext.setLocalRenderInfo(callId, refreshedRenderInfo.stream, 'NotRendered', undefined);
@@ -2235,9 +2238,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2235
2238
  name: EventNames.LOCAL_VIEW_RENDER_SUCCEED,
2236
2239
  level: 'info',
2237
2240
  message: `Successfully render the local view.`,
2238
- data: {
2239
- callId
2240
- }
2241
+ data: streamLogInfo
2241
2242
  });
2242
2243
  return {
2243
2244
  renderer,
@@ -2306,6 +2307,7 @@ function createViewUnparentedVideo(context, internalContext, stream, options) {
2306
2307
  }
2307
2308
  function disposeViewRemoteVideo(context, internalContext, callId, participantId, stream) {
2308
2309
  const streamId = stream.id;
2310
+ const streamType = stream.mediaStreamType;
2309
2311
  let participantKey;
2310
2312
  if (typeof participantId === 'string') {
2311
2313
  participantKey = participantId;
@@ -2313,7 +2315,7 @@ function disposeViewRemoteVideo(context, internalContext, callId, participantId,
2313
2315
  else {
2314
2316
  participantKey = toFlatCommunicationIdentifier(participantId);
2315
2317
  }
2316
- const streamLogInfo = { callId, participantKey, streamId };
2318
+ const streamLogInfo = { callId, participantKey, streamId, streamType };
2317
2319
  _logEvent(callingStatefulLogger, {
2318
2320
  name: EventNames.START_DISPOSE_REMOTE_STREAM,
2319
2321
  level: 'info',
@@ -2387,15 +2389,15 @@ function disposeViewRemoteVideo(context, internalContext, callId, participantId,
2387
2389
  }
2388
2390
  }
2389
2391
  function disposeViewLocalVideo(context, internalContext, callId) {
2390
- const streamLogInfo = { callId };
2392
+ const renderInfo = internalContext.getLocalRenderInfo(callId);
2393
+ const streamType = renderInfo === null || renderInfo === void 0 ? void 0 : renderInfo.stream.mediaStreamType;
2394
+ const streamLogInfo = { callId, streamType };
2391
2395
  _logEvent(callingStatefulLogger, {
2392
2396
  name: EventNames.START_DISPOSE_LOCAL_STREAM,
2393
2397
  level: 'info',
2394
2398
  message: 'Start disposing local stream.',
2395
2399
  data: streamLogInfo
2396
2400
  });
2397
- context.setLocalVideoStreamRendererView(callId, undefined);
2398
- const renderInfo = internalContext.getLocalRenderInfo(callId);
2399
2401
  if (!renderInfo) {
2400
2402
  _logEvent(callingStatefulLogger, {
2401
2403
  name: EventNames.LOCAL_DISPOSE_INFO_NOT_FOUND,
@@ -2410,7 +2412,8 @@ function disposeViewLocalVideo(context, internalContext, callId) {
2410
2412
  _logEvent(callingStatefulLogger, {
2411
2413
  name: EventNames.LOCAL_STREAM_ALREADY_DISPOSED,
2412
2414
  level: 'info',
2413
- message: 'LocalVideoStream is already disposed.'
2415
+ message: 'LocalVideoStream is already disposed.',
2416
+ data: streamLogInfo
2414
2417
  });
2415
2418
  return;
2416
2419
  }
@@ -2439,8 +2442,6 @@ function disposeViewLocalVideo(context, internalContext, callId) {
2439
2442
  internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'Stopping', renderInfo.renderer);
2440
2443
  return;
2441
2444
  }
2442
- // Else the state must be in the "Rendered" state, so we can dispose the renderer and clean up the state.
2443
- internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'NotRendered', undefined);
2444
2445
  if (renderInfo.renderer) {
2445
2446
  _logEvent(callingStatefulLogger, {
2446
2447
  name: EventNames.DISPOSING_LOCAL_RENDERER,
@@ -2449,6 +2450,10 @@ function disposeViewLocalVideo(context, internalContext, callId) {
2449
2450
  data: streamLogInfo
2450
2451
  });
2451
2452
  renderInfo.renderer.dispose();
2453
+ // We will after disposing of the renderer tell the internal context and context that the
2454
+ // local view is gone so we need to update their states.
2455
+ internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'NotRendered', undefined);
2456
+ context.setLocalVideoStreamRendererView(callId, undefined);
2452
2457
  }
2453
2458
  else {
2454
2459
  _logEvent(callingStatefulLogger, {
@@ -2460,10 +2465,13 @@ function disposeViewLocalVideo(context, internalContext, callId) {
2460
2465
  }
2461
2466
  }
2462
2467
  function disposeViewUnparentedVideo(context, internalContext, stream) {
2468
+ const streamType = stream.mediaStreamType;
2469
+ const streamLogInfo = { streamType };
2463
2470
  _logEvent(callingStatefulLogger, {
2464
2471
  name: EventNames.START_DISPOSE_LOCAL_STREAM,
2465
2472
  level: 'info',
2466
- message: 'Start disposing unparented local stream.'
2473
+ message: 'Start disposing unparented local stream.',
2474
+ data: streamLogInfo
2467
2475
  });
2468
2476
  context.deleteDeviceManagerUnparentedView(stream);
2469
2477
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
@@ -2471,7 +2479,8 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
2471
2479
  _logEvent(callingStatefulLogger, {
2472
2480
  name: EventNames.LOCAL_DISPOSE_INFO_NOT_FOUND,
2473
2481
  level: 'error',
2474
- message: 'Cannot find render info when disposing unparented local stream.'
2482
+ message: 'Cannot find render info when disposing unparented local stream.',
2483
+ data: streamLogInfo
2475
2484
  });
2476
2485
  return;
2477
2486
  }
@@ -2479,7 +2488,8 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
2479
2488
  _logEvent(callingStatefulLogger, {
2480
2489
  name: EventNames.LOCAL_STREAM_STOPPING,
2481
2490
  level: 'info',
2482
- message: 'Unparented local stream is still rendering. Changing status to stopping.'
2491
+ message: 'Unparented local stream is still rendering. Changing status to stopping.',
2492
+ data: streamLogInfo
2483
2493
  });
2484
2494
  internalContext.setUnparentedRenderInfo(stream, renderInfo.stream, 'Stopping', undefined);
2485
2495
  }
@@ -2490,7 +2500,8 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
2490
2500
  _logEvent(callingStatefulLogger, {
2491
2501
  name: EventNames.DISPOSING_LOCAL_RENDERER,
2492
2502
  level: 'info',
2493
- message: 'Disposing unparented local view renderer.'
2503
+ message: 'Disposing unparented local view renderer.',
2504
+ data: streamLogInfo
2494
2505
  });
2495
2506
  renderInfo.renderer.dispose();
2496
2507
  }
@@ -2498,7 +2509,8 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
2498
2509
  _logEvent(callingStatefulLogger, {
2499
2510
  name: EventNames.LOCAL_RENDERER_NOT_FOUND,
2500
2511
  level: 'error',
2501
- message: 'Cannot find renderer when disposing unparented local stream.'
2512
+ message: 'Cannot find renderer when disposing unparented local stream.',
2513
+ data: streamLogInfo
2502
2514
  });
2503
2515
  }
2504
2516
  }
@@ -2506,6 +2518,7 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
2506
2518
  * @private
2507
2519
  */
2508
2520
  function createView(context, internalContext, callId, participantId, stream, options) {
2521
+ const streamType = stream.mediaStreamType;
2509
2522
  if ('id' in stream && callId && participantId) {
2510
2523
  // Render RemoteVideoStream that is part of a Call
2511
2524
  return createViewRemoteVideo(context, internalContext, callId, participantId, stream, options);
@@ -2524,7 +2537,8 @@ function createView(context, internalContext, callId, participantId, stream, opt
2524
2537
  _logEvent(callingStatefulLogger, {
2525
2538
  name: EventNames.CREATE_STREAM_INVALID_PARAMS,
2526
2539
  level: 'warning',
2527
- message: 'Create View invalid combination of parameters.'
2540
+ message: 'Create View invalid combination of parameters.',
2541
+ data: { streamType }
2528
2542
  });
2529
2543
  return Promise.resolve(undefined);
2530
2544
  }
@@ -2533,6 +2547,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
2533
2547
  * @private
2534
2548
  */
2535
2549
  function disposeView(context, internalContext, callId, participantId, stream) {
2550
+ const streamType = stream.mediaStreamType;
2536
2551
  if ('id' in stream && callId && participantId) {
2537
2552
  // Stop rendering RemoteVideoStream that is part of a Call
2538
2553
  disposeViewRemoteVideo(context, internalContext, callId, participantId, stream);
@@ -2551,7 +2566,8 @@ function disposeView(context, internalContext, callId, participantId, stream) {
2551
2566
  _logEvent(callingStatefulLogger, {
2552
2567
  name: EventNames.DISPOSE_STREAM_INVALID_PARAMS,
2553
2568
  level: 'warning',
2554
- message: 'Dispose View invalid combination of parameters.'
2569
+ message: 'Dispose View invalid combination of parameters.',
2570
+ data: { streamType }
2555
2571
  });
2556
2572
  return;
2557
2573
  }
@@ -8543,8 +8559,6 @@ const DefaultPlaceholder = (props) => {
8543
8559
  };
8544
8560
  const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
8545
8561
  /* @conditional-compile-remove(pinned-participants) */
8546
- const videoTileMoreIconProps = { iconName: 'VideoTileMoreOptions' };
8547
- /* @conditional-compile-remove(pinned-participants) */
8548
8562
  const videoTileMoreMenuIconProps = { iconName: undefined, style: { display: 'none' } };
8549
8563
  /* @conditional-compile-remove(pinned-participants) */
8550
8564
  const videoTileMoreMenuProps = {
@@ -8554,11 +8568,12 @@ const videoTileMoreMenuProps = {
8554
8568
  };
8555
8569
  /* @conditional-compile-remove(pinned-participants) */
8556
8570
  const VideoTileMoreOptionsButton = (props) => {
8557
- const { contextualMenu } = props;
8571
+ const { contextualMenu, canShowContextMenuButton } = props;
8558
8572
  if (!contextualMenu) {
8559
8573
  return React__default['default'].createElement(React__default['default'].Fragment, null);
8560
8574
  }
8561
- return (React__default['default'].createElement(react.IconButton, { "data-ui-id": "video-tile-more-options-button", styles: moreButtonStyles, iconProps: videoTileMoreIconProps, menuIconProps: videoTileMoreMenuIconProps, menuProps: Object.assign(Object.assign({}, videoTileMoreMenuProps), contextualMenu) }));
8575
+ const optionsIcon = canShowContextMenuButton ? 'VideoTileMoreOptions' : undefined;
8576
+ return (React__default['default'].createElement(react.IconButton, { "data-ui-id": "video-tile-more-options-button", styles: moreButtonStyles, menuIconProps: videoTileMoreMenuIconProps, menuProps: Object.assign(Object.assign({}, videoTileMoreMenuProps), contextualMenu), iconProps: { iconName: optionsIcon } }));
8562
8577
  };
8563
8578
  /**
8564
8579
  * A component to render the video stream for a single call participant.
@@ -8654,7 +8669,7 @@ const VideoTile = (props) => {
8654
8669
  height: '100%'
8655
8670
  }
8656
8671
  }, styles === null || styles === void 0 ? void 0 : styles.root) }, longPressHandlersTrampoline),
8657
- React__default['default'].createElement("div", Object.assign({ ref: videoTileRef, style: { width: '100%', height: '100%' } }, hoverHandlers),
8672
+ React__default['default'].createElement("div", Object.assign({ ref: videoTileRef, style: { width: '100%', height: '100%' } }, hoverHandlers, { "data-is-focusable": true }),
8658
8673
  isVideoRendered ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, isMirrored && { transform: 'scaleX(-1)' }, styles === null || styles === void 0 ? void 0 : styles.videoContainer) }, renderElement)) : (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, {
8659
8674
  opacity: participantStateString ||
8660
8675
  /* @conditional-compile-remove(PSTN-calls) */ props.participantState === 'Idle'
@@ -8668,7 +8683,7 @@ const VideoTile = (props) => {
8668
8683
  showMuteIndicator && isMuted && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(iconContainerStyle) },
8669
8684
  React__default['default'].createElement(react.Icon, { iconName: "VideoTileMicOff" }))),
8670
8685
  /* @conditional-compile-remove(pinned-participants) */
8671
- canShowContextMenuButton && React__default['default'].createElement(VideoTileMoreOptionsButton, { contextualMenu: contextualMenu }),
8686
+ React__default['default'].createElement(VideoTileMoreOptionsButton, { contextualMenu: contextualMenu, canShowContextMenuButton: canShowContextMenuButton }),
8672
8687
  /* @conditional-compile-remove(pinned-participants) */
8673
8688
  isPinned && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(iconContainerStyle) },
8674
8689
  React__default['default'].createElement(react.Icon, { iconName: "VideoTilePinned", className: react.mergeStyles(pinIconStyle) })))))),
@@ -9038,7 +9053,7 @@ react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
9038
9053
  /**
9039
9054
  * Small floating modal width and height in rem for small screen
9040
9055
  */
9041
- const SMALL_FLOATING_MODAL_SIZE_PX = { width: 64, height: 88 };
9056
+ const SMALL_FLOATING_MODAL_SIZE_PX = { width: 64, height: 113 };
9042
9057
  /**
9043
9058
  * Large floating modal width and height in rem for large screen
9044
9059
  * Aspect ratio: 16:9
@@ -9137,7 +9152,7 @@ const horizontalGalleryStyle = (isNarrow) => {
9137
9152
  * Small horizontal gallery tile size in rem
9138
9153
  * @private
9139
9154
  */
9140
- const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 5.5, width: 5.5 };
9155
+ const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 7.0625, width: 7.0625 };
9141
9156
  /**
9142
9157
  * Large horizontal gallery tile size in rem
9143
9158
  * @private