@agilemotion/oui-react-js 1.3.9 → 1.4.0

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 (94) hide show
  1. package/dist/{ApplicationContext.js → ApplicationManager.js} +196 -74
  2. package/dist/BasicApp.js +66 -63
  3. package/dist/BasicAppHome.js +85 -118
  4. package/dist/BusinessPortalAppHome.js +9 -15
  5. package/dist/DynamicJS.js +7 -3
  6. package/dist/RestUtils.js +13 -14
  7. package/dist/Utils.js +15 -9
  8. package/dist/WithRouter.js +34 -0
  9. package/dist/assets/scss/black-dashboard-react/custom/_sidebar-and-main-panel.scss +1 -1
  10. package/dist/components/AlertBar.js +1 -1
  11. package/dist/components/Button.js +34 -25
  12. package/dist/components/Calendar.js +9 -45
  13. package/dist/components/DataGrid.js +49 -18
  14. package/dist/components/DataGridColumn.js +1 -1
  15. package/dist/components/DataGridFilter.js +2 -2
  16. package/dist/components/Dialog.js +1 -1
  17. package/dist/components/DocumentViewer.js +5 -5
  18. package/dist/components/FileThumb.js +30 -19
  19. package/dist/components/Graph.js +10 -2
  20. package/dist/components/GraphNode.js +1 -1
  21. package/dist/components/HtmlPanel.js +10 -5
  22. package/dist/components/Icon.js +8 -0
  23. package/dist/components/PopupView.js +1 -1
  24. package/dist/components/Portlet.js +100 -0
  25. package/dist/components/SignaturePanel.js +1 -1
  26. package/dist/components/SocketManager.js +2 -2
  27. package/dist/components/StepperTitleBar.js +4 -4
  28. package/dist/components/TabPanel.js +11 -3
  29. package/dist/components/TableCellContent.js +1 -1
  30. package/dist/components/TemplateDesigner.js +11 -11
  31. package/dist/components/TitleBar.js +4 -3
  32. package/dist/components/Toolbar.js +42 -11
  33. package/dist/components/Tree.js +3 -3
  34. package/dist/components/dashboard/BasicBusinessAppDashboard.js +9 -7
  35. package/dist/components/dashboard/components/Header.js +1 -1
  36. package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.css +7 -0
  37. package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.js +74 -72
  38. package/dist/components/form/AutoComplete.js +31 -30
  39. package/dist/components/form/BaseField.js +38 -26
  40. package/dist/components/form/DatePicker.js +5 -2
  41. package/dist/components/form/FieldSet.js +11 -19
  42. package/dist/components/form/Form.js +24 -16
  43. package/dist/components/form/ImageEditor.js +4 -4
  44. package/dist/components/form/MultiFileUploadField.js +15 -14
  45. package/dist/components/form/RadioGroup.js +10 -11
  46. package/dist/components/form/Section.js +10 -0
  47. package/dist/components/form/TimePicker.js +1 -0
  48. package/dist/components/form/UploadField.js +115 -108
  49. package/dist/components/layout/Layout.js +65 -12
  50. package/dist/components/layout/View.css +1 -0
  51. package/dist/components/layout/View.js +20 -23
  52. package/dist/components/layout/ViewContainer.css +3 -0
  53. package/dist/components/layout/ViewContainer.js +59 -0
  54. package/dist/components/layout/ViewPort.js +50 -80
  55. package/dist/components/layout/Window.css +18 -0
  56. package/dist/components/layout/Window.js +287 -0
  57. package/dist/components/layout/WindowViewPort.js +71 -0
  58. package/dist/components/media/MediaSoupHelper.js +1 -1
  59. package/dist/components/media/Toolbar.css +18 -3
  60. package/dist/components/media/Toolbar.js +80 -56
  61. package/dist/components/media/TrainingRoom.js +97 -20
  62. package/dist/components/media/VCRoom.js +1 -1
  63. package/dist/components/media/VCRoomParticipant.js +17 -15
  64. package/dist/components/media/VCRoomRecorder.js +223 -0
  65. package/dist/components/media/VCRoomWorkspace.js +169 -156
  66. package/dist/components/media/VideoPlayer.css +10 -0
  67. package/dist/components/media/VideoPlayer.js +86 -0
  68. package/dist/components/menu/MenuButton.js +22 -6
  69. package/dist/components/menu/MenuLink.js +13 -10
  70. package/dist/components/navbars/HomeNavbar.js +2 -2
  71. package/dist/components/navbars/PortalNavbar.js +3 -3
  72. package/dist/components/signatures/AgilitySignaturePanel.js +4 -4
  73. package/dist/components/signatures/ImageSignatureInput.js +4 -4
  74. package/dist/components/signatures/SignatureInput.js +4 -4
  75. package/dist/components/signatures/SignatureTemplateDesigner.js +6 -6
  76. package/dist/event/ActionHandlers.js +3 -3
  77. package/dist/event/Observable.js +33 -15
  78. package/dist/event/RouteActionHandler.js +38 -29
  79. package/dist/event/ServiceCallActionHandler.js +4 -2
  80. package/dist/event/SignalGraphActionHandler.js +2 -2
  81. package/dist/js/Calendar.js +220 -0
  82. package/dist/js/Media.js +2 -2
  83. package/dist/view/Dashboard.js +34 -28
  84. package/dist/view/Views.js +30 -0
  85. package/dist/view/security/ChangePasswordBasic.js +6 -4
  86. package/dist/view/security/ForgotPassword.js +4 -4
  87. package/dist/view/security/ForgotPasswordBasic.js +4 -4
  88. package/dist/view/security/Login.js +4 -4
  89. package/dist/view/security/LoginBasic.js +5 -5
  90. package/dist/view/security/LoginBusinessPortal.js +4 -4
  91. package/dist/view/security/ResetPassword.js +4 -4
  92. package/dist/view/security/ResetPasswordBasic.js +6 -4
  93. package/package.json +6 -16
  94. package/gulpfile.js +0 -77
@@ -84,15 +84,38 @@ const VCRoomWorkspace = props => {
84
84
  isHost,
85
85
  autoPermit,
86
86
  rtpCapabilities,
87
- onloadScreenShareData
87
+ onloadScreenShareData,
88
+ displayState
88
89
  } = props;
89
90
 
91
+ const startShareScreen = () => {
92
+ produceScreenShare();
93
+ };
94
+
95
+ const stopShareScreen = () => {
96
+ if (shareScreenStream.current) {
97
+ for (const track of shareScreenStream.current.getTracks()) {
98
+ track.stop();
99
+ }
100
+
101
+ shareScreenStream.current = null;
102
+ removeShareScreenElement();
103
+ }
104
+
105
+ props.onStopSharing();
106
+ };
107
+
90
108
  const produceScreenShare = async () => {
91
109
  if (!device) {
92
110
  console.error('No available device');
93
111
  return;
94
112
  }
95
113
 
114
+ if (!producerTransport) {
115
+ console.error('No producer transport');
116
+ return;
117
+ }
118
+
96
119
  if (!device.canProduce('video')) {
97
120
  console.error('Cannot produce screen share');
98
121
  return;
@@ -108,8 +131,6 @@ const VCRoomWorkspace = props => {
108
131
  audio: false,
109
132
  video: {
110
133
  mandatory: {
111
- chromeMediaSource: 'desktop',
112
- chromeMediaSourceId: shareScreenSource.id,
113
134
  width: {
114
135
  min: 160,
115
136
  ideal: 320,
@@ -128,35 +149,49 @@ const VCRoomWorkspace = props => {
128
149
  googCpuOveruseEncodeUsage: true,
129
150
  googCpuOveruseThreshold: 70
130
151
  }
131
- }
132
- };
133
- let stream = await navigator.mediaDevices.getUserMedia(videoConstraints);
134
- const track = stream.getVideoTracks()[0];
135
- const params = {
136
- track,
137
- appData: {
138
- screenSharing: true
139
- }
152
+ },
153
+ preferCurrentTab: true,
154
+ selfBrowserSurface: 'include',
155
+ systemAudio: 'exclude',
156
+ surfaceSwitching: 'exclude',
157
+ monitorTypeSurfaces: 'exclude'
140
158
  };
141
- let producer = await producerTransport.produce(params);
142
- setShareScreenProducer(producer);
143
- shareScreenStream.current = stream;
159
+ navigator.mediaDevices.getDisplayMedia(videoConstraints).then(async stream => {
160
+ const track = stream.getVideoTracks()[0];
144
161
 
145
- if (showSharedScreen) {
146
- shareScreenVideoRef.current.srcObject = stream;
147
- }
148
-
149
- producer.on('transportclose', () => {
150
- stream.srcObject.getTracks().forEach(function (track) {
162
+ track.onended = e => {
151
163
  track.stop();
164
+ stopShareScreen();
165
+ };
166
+
167
+ const params = {
168
+ track,
169
+ appData: {
170
+ screenSharing: true
171
+ }
172
+ };
173
+ let producer = await producerTransport.produce(params);
174
+ setShareScreenProducer(producer);
175
+ shareScreenStream.current = stream;
176
+
177
+ if (showSharedScreen) {
178
+ shareScreenVideoRef.current.srcObject = stream;
179
+ }
180
+
181
+ producer.on('transportclose', () => {
182
+ stream.srcObject.getTracks().forEach(function (track) {
183
+ track.stop();
184
+ });
185
+ setShareScreenProducer(null);
152
186
  });
153
- setShareScreenProducer(null);
154
- });
155
- producer.on('close', () => {
156
- stream.srcObject.getTracks().forEach(function (track) {
157
- track.stop();
187
+ producer.on('close', () => {
188
+ stream.srcObject.getTracks().forEach(function (track) {
189
+ track.stop();
190
+ });
191
+ setShareScreenProducer(null);
158
192
  });
159
- setShareScreenProducer(null);
193
+ }).catch(e => {
194
+ console.error(e);
160
195
  });
161
196
  };
162
197
 
@@ -170,13 +205,13 @@ const VCRoomWorkspace = props => {
170
205
  console.log('Close producer', producerId);
171
206
 
172
207
  _SocketManager.default.emitEvent(_VCEventType.VCEventType.PRODUCER_CLOSED, {
173
- userId: sessionStorage.getItem("username"),
208
+ userId: sessionStorage.getItem('username'),
174
209
  producerId,
175
210
  roomId: meetingId
176
- }).catch(e => console.log("PRODUCER_CLOSED ERROR : ", e));
211
+ }).catch(e => console.log('PRODUCER_CLOSED ERROR : ', e));
177
212
 
178
213
  shareScreenProducer.close();
179
- stopShareScreenConsumerTracks();
214
+ stopShareScreen();
180
215
  setShareScreenProducer(null);
181
216
  setSomeoneSharing(false);
182
217
  setShareScreenSource(null);
@@ -197,41 +232,37 @@ const VCRoomWorkspace = props => {
197
232
  }
198
233
  };
199
234
 
200
- const stopShareScreenConsumerTracks = () => {
235
+ const removeShareScreenElement = () => {
201
236
  let el = document.getElementById('share-screen-video');
202
237
 
203
238
  if (el) {
204
- for (const track of el.srcObject.getTracks()) {
205
- track.stop();
206
- }
207
-
208
239
  el.parentNode.removeChild(el);
209
240
  }
210
241
  };
211
242
 
212
243
  const consume = async producer => {
213
- _MediaSoupHelper.default.getConsumeStream(producer.producerId, device.rtpCapabilities, consumerTransport, props.meetingId, sessionStorage.getItem("username"), 'video').then(({
244
+ _MediaSoupHelper.default.getConsumeStream(producer.producerId, device.rtpCapabilities, consumerTransport, props.meetingId, sessionStorage.getItem('username'), 'video').then(({
214
245
  consumer,
215
246
  stream,
216
247
  kind
217
248
  }) => {
218
249
  if (consumer) {
219
250
  setShareScreenConsumer(consumer);
220
- console.log("=====================================SHARING CONSUME=====================================");
251
+ console.log('=====================================SHARING CONSUME=====================================');
221
252
  props.sharingHandler(true);
222
253
  setScreenShared(true);
223
254
  setSomeoneSharing(true); //setShowSharedScreen(true);
224
255
 
225
256
  setShareScreenSource(null);
226
- setMessage(producer.username + " is sharing");
257
+ setMessage(producer.username + ' is sharing');
227
258
  shareScreenVideoRef.current.srcObject = stream;
228
259
  shareScreenStream.current = stream; //setVideoRefresher(!videoRefresher);
229
260
 
230
261
  consumer.on('trackended', () => {
231
- stopShareScreenConsumerTracks();
262
+ removeShareScreenElement();
232
263
  });
233
264
  consumer.on('transportclose', () => {
234
- stopShareScreenConsumerTracks();
265
+ removeShareScreenElement();
235
266
  });
236
267
  }
237
268
  });
@@ -255,7 +286,7 @@ const VCRoomWorkspace = props => {
255
286
 
256
287
  case _VCEventType.VCEventType.CONSUMER_CLOSED:
257
288
  if (shareScreenConsumer && shareScreenConsumer.id === be.payload.consumerId) {
258
- stopShareScreenConsumerTracks();
289
+ removeShareScreenElement();
259
290
  setMessage(null);
260
291
  props.sharingHandler(false);
261
292
  setSomeoneSharing(false);
@@ -297,8 +328,8 @@ const VCRoomWorkspace = props => {
297
328
  const setupSelfDevices = async () => {
298
329
  let device = await _MediaSoupHelper.default.getParticipantDevice(rtpCapabilities);
299
330
  setDevice(device);
300
- let consumerTransport = await _MediaSoupHelper.default.initConsumerTransport(device, meetingId, sessionStorage.getItem("username"));
301
- let producerTransport = await _MediaSoupHelper.default.initProducerTransport(device, meetingId, sessionStorage.getItem("username"));
331
+ let consumerTransport = await _MediaSoupHelper.default.initConsumerTransport(device, meetingId, sessionStorage.getItem('username'));
332
+ let producerTransport = await _MediaSoupHelper.default.initProducerTransport(device, meetingId, sessionStorage.getItem('username'));
302
333
  setConsumerTransport(consumerTransport);
303
334
  setProducerTransport(producerTransport);
304
335
  transports.current.setConsumerTransport(consumerTransport);
@@ -331,16 +362,13 @@ const VCRoomWorkspace = props => {
331
362
  }
332
363
  }, [onloadScreenShareData, device, consumerTransport]);
333
364
  (0, _react.useEffect)(() => {
334
- setShareScreenSource(props.shareScreenSource);
335
-
336
- if (props.shareScreenSource && props.shareScreenSource.name) {
337
- var _props$shareScreenSou;
365
+ setScreenShared(props.screenShared);
338
366
 
339
- setShowSharedScreen(((_props$shareScreenSou = props.shareScreenSource.name) === null || _props$shareScreenSou === void 0 ? void 0 : _props$shareScreenSou.toLowerCase()) !== 'entire screen' && props.shareScreenSource.name.toLowerCase() !== 'armscor connect');
367
+ if (props.screenShared) {
368
+ startShareScreen();
369
+ } else {
370
+ stopShareScreen();
340
371
  }
341
- }, [props.shareScreenSource]);
342
- (0, _react.useEffect)(() => {
343
- setScreenShared(props.screenShared);
344
372
  }, [props.screenShared]);
345
373
  (0, _react.useEffect)(() => {
346
374
  _VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.NEW_PRODUCERS, _VCEventType.VCEventType.CONSUMER_CLOSED, _VCEventType.VCEventType.PARTICIPANT_IN_VIEW);
@@ -362,10 +390,10 @@ const VCRoomWorkspace = props => {
362
390
  if (props.participants && props.currentUserFullName) {
363
391
  setCurrentUserParticipant({
364
392
  isCurrentUser: true,
365
- userId: sessionStorage.getItem("username"),
393
+ userId: sessionStorage.getItem('username'),
366
394
  peer: null,
367
395
  name: props.currentUserFullName,
368
- avatarId: sessionStorage.getItem("userAvatarId"),
396
+ avatarId: sessionStorage.getItem('userAvatarId'),
369
397
  videoMuted,
370
398
  audioMuted
371
399
  });
@@ -422,10 +450,10 @@ const VCRoomWorkspace = props => {
422
450
  }, inViewParticipants.map((participant, index) => {
423
451
  return /*#__PURE__*/_react.default.createElement("div", {
424
452
  className: 'col-*-*',
425
- key: index + "-" + participant.userId,
453
+ key: index + '-' + participant.userId,
426
454
  style: {
427
455
  borderRadius: '4px',
428
- minWidth: "200px",
456
+ minWidth: '200px',
429
457
  padding: '4px',
430
458
  height: '148px'
431
459
  }
@@ -433,6 +461,7 @@ const VCRoomWorkspace = props => {
433
461
  data: participant,
434
462
  device: device,
435
463
  meetingId: meetingId,
464
+ displayState: displayState,
436
465
  audioMuted: participant.audioMuted,
437
466
  videoMuted: participant.videoMuted,
438
467
  onRemoveFromView: participant => removeFromView(participant),
@@ -451,8 +480,8 @@ const VCRoomWorkspace = props => {
451
480
  return /*#__PURE__*/_react.default.createElement(_Grid.default, {
452
481
  style: {
453
482
  height: '100%',
454
- justifyContent: "center",
455
- alignItems: "center"
483
+ justifyContent: 'center',
484
+ alignItems: 'center'
456
485
  },
457
486
  key: index,
458
487
  direction: "row",
@@ -465,12 +494,12 @@ const VCRoomWorkspace = props => {
465
494
  return /*#__PURE__*/_react.default.createElement(_Grid.default, {
466
495
  item: true,
467
496
  xs: 4,
468
- key: index + "-" + participant.userId,
497
+ key: index + '-' + participant.userId,
469
498
  className: 'meetingParticipantContainer',
470
499
  style: {
471
500
  borderRadius: '4px',
472
- width: 100 / row.length + "%",
473
- height: "100%",
501
+ width: 100 / row.length + '%',
502
+ height: '100%',
474
503
  flexBasis: null,
475
504
  maxWidth: null
476
505
  }
@@ -478,6 +507,7 @@ const VCRoomWorkspace = props => {
478
507
  data: participant,
479
508
  device: device,
480
509
  meetingId: meetingId,
510
+ sizing: displayState === 'MINIMIZED' ? 'sm' : 'md',
481
511
  audioMuted: participant.audioMuted,
482
512
  videoMuted: participant.videoMuted,
483
513
  onRemoveFromView: participant => removeFromView(participant),
@@ -491,149 +521,132 @@ const VCRoomWorkspace = props => {
491
521
  })));
492
522
  };
493
523
 
524
+ function renderCurrentParticipant() {
525
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, currentUserParticipant && /*#__PURE__*/_react.default.createElement(_VCRoomParticipant.default, {
526
+ data: currentUserParticipant,
527
+ device: device,
528
+ meetingId: meetingId,
529
+ meetingTitle: meetingTitle,
530
+ rtpCapabilities: rtpCapabilities,
531
+ isCurrentUser: true,
532
+ onAudioDeviceChange: props.onAudioDeviceChange,
533
+ consumerTransport: consumerTransport,
534
+ producerTransport: producerTransport,
535
+ audioMuted: audioMuted,
536
+ videoMuted: videoMuted,
537
+ numberOfInViewParticipants: inViewParticipants.length,
538
+ onHostAudioMute: () => props.onHostAudioMute(currentUserParticipant),
539
+ onHostVideoMute: () => props.onHostVideoMute(currentUserParticipant),
540
+ isHost: isHost
541
+ }));
542
+ }
543
+
544
+ function renderParticipantGrid() {
545
+ return (!screenShared && !whiteBoardShown || screenShared && !showSharedScreen && !someoneSharing) && /*#__PURE__*/_react.default.createElement(_Box.default, {
546
+ style: {
547
+ flexGrow: 1,
548
+ height: displayState === 'MAXIMIZED' ? 'calc(100% - 216px)' : '100%',
549
+ width: '100%',
550
+ justifyContent: 'center',
551
+ alignItems: 'center',
552
+ display: 'flex'
553
+ }
554
+ }, /*#__PURE__*/_react.default.createElement(_Grid.default, {
555
+ container: true,
556
+ spacing: 1,
557
+ style: {
558
+ width: '100%',
559
+ display: 'flex',
560
+ alignItems: 'center',
561
+ maxHeight: '100%',
562
+ height: '100%',
563
+ overflowY: 'auto',
564
+ overflowX: 'hidden'
565
+ }
566
+ }, grid.map((row, index) => {
567
+ return /*#__PURE__*/_react.default.createElement("div", {
568
+ style: {
569
+ width: '100%',
570
+ height: 100 / grid.length + '%',
571
+ maxHeight: '50%'
572
+ }
573
+ }, /*#__PURE__*/_react.default.createElement(_react.Fragment, {
574
+ key: index
575
+ }, renderRow(row, index)));
576
+ })));
577
+ }
578
+
494
579
  return device ? /*#__PURE__*/_react.default.createElement("div", {
495
580
  className: 'row-*-* grid',
496
581
  style: {
497
- height: '100%',
498
- width: '100%'
499
- }
500
- }, roomStatus !== "LOBBY" && /*#__PURE__*/_react.default.createElement("div", {
501
- className: 'row-*-* messages',
502
- style: {
582
+ height: displayState === 'MAXIMIZED' ? '100%' : 'calc(100% - 100px)',
503
583
  width: '100%',
504
- height: '40px',
505
- marginLeft: '0',
506
- marginRight: '0',
507
- display: 'flex',
508
- alignItems: 'center',
509
- color: 'white',
510
- fontSize: '16px',
511
- padding: '4px',
512
- overflowY: 'auto'
584
+ display: displayState === 'MAXIMIZED' ? null : 'table'
513
585
  }
514
- }, (screenShared && shareScreenSource && !showSharedScreen || someoneSharing) && /*#__PURE__*/_react.default.createElement("div", {
515
- className: 'row-*-*'
516
- }, shareScreenSource && shareScreenSource.name && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
517
- id: 'WARNING',
518
- color: 'rgb(235, 63, 33)'
519
- })), /*#__PURE__*/_react.default.createElement("div", null, (shareScreenSource.name.toLowerCase() === 'entire screen' ? 'Your entire screen' : 'The ' + shareScreenSource.name + ' window') + ' is being shared with other participants')), message && /*#__PURE__*/_react.default.createElement("span", null, message))), (roomStatus === "LOBBY" || props.allUserParticipantsLeft) && /*#__PURE__*/_react.default.createElement("div", {
586
+ }, (roomStatus === 'LOBBY' || props.allUserParticipantsLeft) && /*#__PURE__*/_react.default.createElement("div", {
520
587
  style: {
521
- height: 'calc(100% - 216px)',
588
+ height: displayState === 'MAXIMIZED' ? 'calc(100% - 216px)' : '100%',
522
589
  fontSize: '28px',
523
590
  width: '100%',
524
591
  justifyContent: 'center',
525
592
  alignItems: 'center',
526
593
  display: 'flex'
527
594
  }
528
- }, _VCRoom.WAITING_FOR_OTHERS_TO_JOIN_MESSAGE), grid && roomStatus !== "LOBBY" && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (!screenShared && !whiteBoardShown || screenShared && !showSharedScreen && !someoneSharing) && /*#__PURE__*/_react.default.createElement(_Box.default, {
529
- style: {
530
- flexGrow: 1,
531
- height: 'calc(100% - 296px)',
532
- width: '100%',
533
- justifyContent: 'center',
534
- alignItems: 'center',
535
- display: 'flex'
536
- }
537
- }, /*#__PURE__*/_react.default.createElement(_Grid.default, {
538
- container: true,
539
- spacing: 1,
595
+ }, _VCRoom.WAITING_FOR_OTHERS_TO_JOIN_MESSAGE), grid && roomStatus !== 'LOBBY' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, displayState === 'MAXIMIZED' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderParticipantGrid()), displayState === 'MINIMIZED' && /*#__PURE__*/_react.default.createElement("div", {
540
596
  style: {
541
- width: '100%',
542
- display: 'flex',
543
- alignItems: 'center',
544
- maxHeight: '100%',
545
- height: "100%",
546
- overflowY: 'auto',
547
- overflowX: 'hidden'
597
+ width: 'calc(100% - 200px)',
598
+ display: 'table-cell'
548
599
  }
549
- }, grid.map((row, index) => {
550
- return /*#__PURE__*/_react.default.createElement("div", {
551
- style: {
552
- width: "100%",
553
- height: 100 / grid.length + "%",
554
- maxHeight: "50%"
555
- }
556
- }, /*#__PURE__*/_react.default.createElement(_react.Fragment, {
557
- key: index
558
- }, renderRow(row, index)));
559
- }))), /*#__PURE__*/_react.default.createElement("div", {
600
+ }, renderParticipantGrid()), /*#__PURE__*/_react.default.createElement("div", {
560
601
  className: 'content-box',
561
602
  style: {
562
603
  display: !(screenShared && showSharedScreen || someoneSharing) ? 'none' : null
563
604
  }
605
+ }, /*#__PURE__*/_react.default.createElement("div", {
606
+ style: {
607
+ width: '100%',
608
+ maxHeight: '100%'
609
+ }
564
610
  }, /*#__PURE__*/_react.default.createElement("video", {
565
611
  id: 'screen-share-video',
566
- width: 640,
567
- height: 320,
568
612
  autoPlay: true,
569
613
  ref: shareScreenVideoRef,
570
614
  muted: true,
571
615
  style: {
572
616
  width: '100%',
573
- height: '100%',
617
+ maxHeight: '100%',
574
618
  zIndex: '0'
575
619
  }
576
- })), whiteBoardShown && /*#__PURE__*/_react.default.createElement("div", {
577
- className: 'content-box'
578
- }, "Whiteboard...")), roomStatus !== "LOBBY" && /*#__PURE__*/_react.default.createElement("div", {
579
- className: 'row-*-*',
620
+ })))), /*#__PURE__*/_react.default.createElement("div", {
621
+ className: "".concat(displayState === 'MAXIMIZED' ? 'row-*-*' : ''),
580
622
  style: {
581
- width: '100%',
582
- height: '40px',
583
- marginLeft: '0',
623
+ width: displayState === 'MAXIMIZED' ? '100%' : '200px',
624
+ height: displayState === 'MAXIMIZED' ? '152px' : '100%',
584
625
  marginRight: '0',
585
- display: 'flex',
626
+ display: screenShared && showSharedScreen || someoneSharing ? 'none' : displayState === 'MAXIMIZED' ? 'flex' : 'table-cell',
586
627
  alignItems: 'center',
587
- color: 'white',
588
- fontSize: '16px',
589
- padding: '4px'
590
- }
591
- }), /*#__PURE__*/_react.default.createElement("div", {
592
- className: 'row-*-*',
593
- style: {
594
- width: '100%',
595
- height: '152px',
596
- marginRight: '0',
597
- display: 'flex',
598
- alignItems: 'center'
628
+ verticalAlign: 'top'
599
629
  }
600
630
  }, /*#__PURE__*/_react.default.createElement("div", {
601
631
  style: {
602
- width: 'calc(100% - 232px)',
632
+ width: displayState === 'MAXIMIZED' ? 'calc(100% - 232px)' : '100%',
603
633
  height: '148px',
604
634
  borderRadius: '4px',
605
635
  marginRight: '16px',
606
636
  paddingLeft: '16px'
607
637
  }
608
- }, (screenShared && showSharedScreen || whiteBoardShown || roomStatus === "LOBBY" || someoneSharing) && grid && /*#__PURE__*/_react.default.createElement("div", {
638
+ }, (whiteBoardShown || roomStatus === 'LOBBY') && grid && /*#__PURE__*/_react.default.createElement("div", {
609
639
  style: {
610
640
  width: '100%',
611
641
  height: '100%'
612
642
  }
613
643
  }, renderStrip())), /*#__PURE__*/_react.default.createElement("div", {
614
- className: 'col no-margin no-padding',
644
+ className: "".concat((displayState === 'MAXIMIZED' ? 'col ' : '') + 'no-margin no-padding'),
615
645
  style: {
616
646
  width: '200px',
617
647
  height: '148px'
618
648
  }
619
- }, currentUserParticipant && /*#__PURE__*/_react.default.createElement(_VCRoomParticipant.default, {
620
- data: currentUserParticipant,
621
- device: device,
622
- meetingId: meetingId,
623
- meetingTitle: meetingTitle,
624
- rtpCapabilities: rtpCapabilities,
625
- isCurrentUser: true,
626
- onAudioDeviceChange: props.onAudioDeviceChange,
627
- consumerTransport: consumerTransport,
628
- producerTransport: producerTransport,
629
- audioMuted: audioMuted,
630
- videoMuted: videoMuted,
631
- numberOfInViewParticipants: inViewParticipants.length,
632
- sizing: 'md',
633
- onHostAudioMute: () => props.onHostAudioMute(currentUserParticipant),
634
- onHostVideoMute: () => props.onHostVideoMute(currentUserParticipant),
635
- isHost: isHost
636
- }))), waitingList && waitingList.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
649
+ }, renderCurrentParticipant())), waitingList && waitingList.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
637
650
  className: 'no-side-margin no-side-padding grid-side-bar',
638
651
  style: {
639
652
  backgroundColor: 'transparent',
@@ -0,0 +1,10 @@
1
+ .player-wrapper {
2
+ position: relative;
3
+ padding-top: 56.25%; /* 720 / 1280 = 0.5625 */;
4
+ }
5
+
6
+ .react-player {
7
+ position: absolute;
8
+ top: 0;
9
+ left: 0;
10
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _Utils = _interopRequireDefault(require("../../Utils"));
11
+
12
+ require("./VideoPlayer.css");
13
+
14
+ var _reactPlayer = _interopRequireDefault(require("react-player"));
15
+
16
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
21
+
22
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ const location = window.location.protocol + '//' + window.location.hostname;
25
+
26
+ const VideoPlayer = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef((props, ref) => {
27
+ const [playing, setPlaying] = (0, _react.useState)(false);
28
+ const [documentId, setDocumentId] = (0, _react.useState)(false);
29
+ const [downloadUrl, setDownloadUrl] = (0, _react.useState)(null);
30
+
31
+ _react.default.useEffect(() => {
32
+ props.handle.api = api();
33
+ });
34
+
35
+ _react.default.useEffect(() => {}, [playing]);
36
+
37
+ _react.default.useEffect(() => {
38
+ if (documentId) {
39
+ setDownloadUrl(location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + documentId + '?access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken'));
40
+ console.log(location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + documentId + '?access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken'));
41
+ } else {
42
+ setDownloadUrl(null);
43
+ }
44
+ }, [documentId]);
45
+
46
+ const api = () => {
47
+ return {
48
+ get id() {
49
+ return props.config.id;
50
+ },
51
+
52
+ set playing(playing) {
53
+ setPlaying(playing);
54
+ },
55
+
56
+ set documentId(documentId) {
57
+ setDocumentId(documentId);
58
+ },
59
+
60
+ getChildren: () => {
61
+ return [];
62
+ }
63
+ };
64
+ };
65
+
66
+ return /*#__PURE__*/_react.default.createElement("div", {
67
+ style: _Utils.default.mergeStyles({}, props.config)
68
+ }, downloadUrl && /*#__PURE__*/_react.default.createElement("div", {
69
+ className: "player-wrapper"
70
+ }, /*#__PURE__*/_react.default.createElement(_reactPlayer.default, {
71
+ style: {
72
+ borderRadius: '4px'
73
+ },
74
+ url: downloadUrl,
75
+ className: "react-player",
76
+ playing: playing,
77
+ controls: true,
78
+ width: "100%",
79
+ height: "100%",
80
+ onPlay: () => setPlaying(true),
81
+ onPause: () => setPlaying(false)
82
+ })));
83
+ }));
84
+
85
+ var _default = VideoPlayer;
86
+ exports.default = _default;
@@ -69,17 +69,29 @@ const MenuButton = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
69
69
 
70
70
  _react.default.useEffect(() => {
71
71
  props.handle.api = api();
72
+ });
72
73
 
73
- if (_Utils.default.isNull(config)) {
74
- let parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
74
+ _react.default.useEffect(() => {
75
+ if (config) {
76
+ props.handle.api = api();
75
77
 
76
- setConfig(parsedConfig);
78
+ let parsedConfig = _Utils.default.parseConfig(config, props.viewId);
77
79
 
78
80
  _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
79
81
 
80
- _Observable.default.addSystemSubscriptions(parsedConfig);
82
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
83
+
84
+ props.handle.api.refresh();
81
85
  }
82
- });
86
+ }, [config]);
87
+
88
+ _react.default.useEffect(() => {
89
+ var _props$tableRow$id;
90
+
91
+ setConfig(props.tableRow ? { ...props.config,
92
+ id: props.config.id + '_' + ((_props$tableRow$id = props.tableRow.id) === null || _props$tableRow$id === void 0 ? void 0 : _props$tableRow$id.replaceAll('-', ''))
93
+ } : props.config);
94
+ }, []);
83
95
 
84
96
  const handleToggle = () => {
85
97
  setOpen(prevOpen => !prevOpen);
@@ -103,7 +115,11 @@ const MenuButton = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
103
115
  const api = () => {
104
116
  return {
105
117
  get id() {
106
- return props.config.id;
118
+ return config ? config.id : props.config.id;
119
+ },
120
+
121
+ get tableRow() {
122
+ return props.tableRow;
107
123
  },
108
124
 
109
125
  getChildren: () => {