@agilemotion/oui-react-js 1.3.9 → 1.4.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.
Files changed (93) 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 +8 -14
@@ -75,7 +75,7 @@ const Toolbar = props => {
75
75
 
76
76
  _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.eventHandler, props.viewId);
77
77
 
78
- _Observable.default.addSystemSubscriptions(parsedConfig);
78
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
79
79
 
80
80
  return () => {};
81
81
  }, []);
@@ -98,7 +98,6 @@ const Toolbar = props => {
98
98
  const {
99
99
  participants,
100
100
  hasUnreadChats,
101
- hasUnseenWhiteboardEvent,
102
101
  whiteBoardShown,
103
102
  displayState,
104
103
  eventHandler,
@@ -173,11 +172,13 @@ const Toolbar = props => {
173
172
  };
174
173
 
175
174
  const shareScreen = () => {
176
- eventHandler.shareScreen(); //setScreenShared(true);
175
+ eventHandler.shareScreen();
176
+ setScreenShared(true);
177
177
  };
178
178
 
179
179
  const stopShareScreen = () => {
180
- eventHandler.stopShareScreen(); //setScreenShared(false);
180
+ eventHandler.stopShareScreen();
181
+ setScreenShared(false);
181
182
  };
182
183
 
183
184
  const endCall = () => {
@@ -196,8 +197,7 @@ const Toolbar = props => {
196
197
  eventHandler.showChat();
197
198
  };
198
199
 
199
- const raiseHand = () => {
200
- eventHandler.raiseHand();
200
+ const raiseHand = () => {//eventHandler.raiseHand();
201
201
  };
202
202
 
203
203
  const lowerHand = () => {
@@ -217,7 +217,7 @@ const Toolbar = props => {
217
217
  style: {
218
218
  width: '100%'
219
219
  },
220
- className: 'centered-flex-box'
220
+ className: 'centered-flex-box vc-toolbar'
221
221
  }, roomStatus === 'SESSION_ENDED' ? /*#__PURE__*/_react.default.createElement("div", {
222
222
  className: 'row centered-flex-box'
223
223
  }, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
@@ -257,18 +257,22 @@ const Toolbar = props => {
257
257
  toggleRecorder();
258
258
  },
259
259
  style: {
260
- color: isRecording ? 'white' : '#404239',
260
+ color: '#404239',
261
261
  marginRight: '4px'
262
262
  }
263
- }, /*#__PURE__*/_react.default.createElement("span", {
263
+ }, /*#__PURE__*/_react.default.createElement("div", {
264
264
  style: {
265
- marginRight: '8px'
265
+ height: '100%'
266
266
  }
267
- }, "Record"), isRecording ? /*#__PURE__*/_react.default.createElement(_LottieIcon.default, {
267
+ }, /*#__PURE__*/_react.default.createElement("div", {
268
+ className: 'icon'
269
+ }, isRecording ? /*#__PURE__*/_react.default.createElement(_LottieIcon.default, {
268
270
  id: 'recording'
269
271
  }) : /*#__PURE__*/_react.default.createElement(_Icon.default, {
270
272
  id: 'RECORD'
271
- }))), (roomStatus === 'SESSION' || roomStatus === 'LOBBY') && !videoDisabled && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
273
+ })), /*#__PURE__*/_react.default.createElement("div", {
274
+ className: 'text'
275
+ }, isRecording ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Recording") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Record"))))), (roomStatus === 'SESSION' || roomStatus === 'LOBBY') && !videoDisabled && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
272
276
  title: "Video"
273
277
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
274
278
  onClick: () => {
@@ -278,15 +282,19 @@ const Toolbar = props => {
278
282
  color: videoMuted ? '#eb3f21' : '#404239',
279
283
  marginRight: '4px'
280
284
  }
281
- }, /*#__PURE__*/_react.default.createElement("span", {
285
+ }, /*#__PURE__*/_react.default.createElement("div", {
282
286
  style: {
283
- marginRight: '8px'
287
+ height: '100%'
284
288
  }
285
- }, "Camera"), videoMuted ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
289
+ }, /*#__PURE__*/_react.default.createElement("div", {
290
+ className: 'icon'
291
+ }, videoMuted ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
286
292
  id: 'CAMERA_OFF'
287
293
  }) : /*#__PURE__*/_react.default.createElement(_Icon.default, {
288
294
  id: 'CAMERA'
289
- }))), (roomStatus === 'SESSION' || roomStatus === 'LOBBY') && !audioDisabled && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
295
+ })), /*#__PURE__*/_react.default.createElement("div", {
296
+ className: 'text'
297
+ }, "Camera")))), (roomStatus === 'SESSION' || roomStatus === 'LOBBY') && !audioDisabled && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
290
298
  title: "Audio"
291
299
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
292
300
  onClick: () => {
@@ -296,15 +304,19 @@ const Toolbar = props => {
296
304
  color: audioMuted ? '#eb3f21' : '#404239',
297
305
  marginRight: '4px'
298
306
  }
299
- }, /*#__PURE__*/_react.default.createElement("span", {
307
+ }, /*#__PURE__*/_react.default.createElement("div", {
300
308
  style: {
301
- marginRight: '8px'
309
+ height: '100%'
302
310
  }
303
- }, "Mic"), audioMuted ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
311
+ }, /*#__PURE__*/_react.default.createElement("div", {
312
+ className: 'icon'
313
+ }, audioMuted ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
304
314
  id: 'MIC_OFF'
305
315
  }) : /*#__PURE__*/_react.default.createElement(_Icon.default, {
306
316
  id: 'MIC'
307
- }))), ' ', roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && !whiteBoardShown && (!someoneSharing || screenShared) && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
317
+ })), /*#__PURE__*/_react.default.createElement("div", {
318
+ className: 'text'
319
+ }, "Mic")))), ' ', roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && !whiteBoardShown && (!someoneSharing || screenShared) && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
308
320
  title: "Share"
309
321
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
310
322
  onClick: () => {
@@ -316,17 +328,30 @@ const Toolbar = props => {
316
328
  },
317
329
  style: {
318
330
  color: screenShared ? '#8eb2f5' : '#404239',
319
- marginRight: '4px'
331
+ marginRight: '4px',
332
+ minWidth: '104px'
320
333
  }
321
- }, /*#__PURE__*/_react.default.createElement("span", {
334
+ }, /*#__PURE__*/_react.default.createElement("div", {
322
335
  style: {
323
- marginRight: '8px'
336
+ height: '100%'
324
337
  }
325
- }, "Share screen"), screenShared ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
338
+ }, /*#__PURE__*/_react.default.createElement("div", {
339
+ className: 'icon'
340
+ }, screenShared ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
326
341
  id: 'CANCEL_PRESENTATION'
327
- }) : /*#__PURE__*/_react.default.createElement(_Icon.default, {
342
+ })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
328
343
  id: 'PRESENT_TO_ALL'
329
- }))), roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
344
+ }))), /*#__PURE__*/_react.default.createElement("div", {
345
+ className: 'text'
346
+ }, screenShared ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
347
+ style: {
348
+ marginRight: '8px'
349
+ }
350
+ }, "Stop sharing")) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
351
+ style: {
352
+ marginRight: '8px'
353
+ }
354
+ }, "Share screen")))))), roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
330
355
  title: "Chat"
331
356
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
332
357
  style: {
@@ -336,13 +361,17 @@ const Toolbar = props => {
336
361
  onClick: e => showChat()
337
362
  }, hasUnreadChats && /*#__PURE__*/_react.default.createElement("div", {
338
363
  className: 'unread-dot'
339
- }), /*#__PURE__*/_react.default.createElement("span", {
364
+ }), /*#__PURE__*/_react.default.createElement("div", {
340
365
  style: {
341
- marginRight: '8px'
366
+ height: '100%'
342
367
  }
343
- }, "Chat"), /*#__PURE__*/_react.default.createElement(_Icon.default, {
368
+ }, /*#__PURE__*/_react.default.createElement("div", {
369
+ className: 'icon'
370
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
344
371
  id: 'CHAT_BUBBLE'
345
- }))), roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && /*#__PURE__*/_react.default.createElement("div", {
372
+ })), /*#__PURE__*/_react.default.createElement("div", {
373
+ className: 'text'
374
+ }, "Chat")))), roomStatus === 'SESSION' && displayState === 'MAXIMIZED' && /*#__PURE__*/_react.default.createElement("div", {
346
375
  className: 'centered-flex-box'
347
376
  }, /*#__PURE__*/_react.default.createElement("div", {
348
377
  className: 'marker'
@@ -354,13 +383,17 @@ const Toolbar = props => {
354
383
  color: '#404239',
355
384
  marginRight: '4px'
356
385
  }
357
- }, /*#__PURE__*/_react.default.createElement("span", {
386
+ }, /*#__PURE__*/_react.default.createElement("div", {
358
387
  style: {
359
- marginRight: '8px'
388
+ height: '100%'
360
389
  }
361
- }, "People"), /*#__PURE__*/_react.default.createElement(_Icon.default, {
390
+ }, /*#__PURE__*/_react.default.createElement("div", {
391
+ className: 'icon'
392
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
362
393
  id: 'PEOPLE'
363
- }))))), roomStatus === 'SESSION' && /*#__PURE__*/_react.default.createElement("div", {
394
+ })), /*#__PURE__*/_react.default.createElement("div", {
395
+ className: 'text'
396
+ }, "People")))))), roomStatus === 'SESSION' && /*#__PURE__*/_react.default.createElement("div", {
364
397
  className: 'centered-flex-box'
365
398
  }, numberOfHandsRaised > 0 && /*#__PURE__*/_react.default.createElement("div", {
366
399
  className: 'marker'
@@ -378,40 +411,31 @@ const Toolbar = props => {
378
411
  color: handRaised ? '#e2b030' : '#404239',
379
412
  marginRight: '4px'
380
413
  }
381
- }, /*#__PURE__*/_react.default.createElement("span", {
382
- style: {
383
- marginRight: '8px'
384
- }
385
- }, "Raise"), /*#__PURE__*/_react.default.createElement(_Icon.default, {
386
- id: 'PAN_TOOL'
387
- }))))), roomStatus === 'SESSION' && /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
388
- title: "More Actions"
389
- }, /*#__PURE__*/_react.default.createElement(_Button.default, {
390
- onClick: handleClick,
391
- sx: {
392
- ml: 2
393
- },
394
- "aria-controls": openMoreActions ? 'account-menu' : undefined,
395
- "aria-haspopup": "true",
396
- "aria-expanded": openMoreActions ? 'true' : undefined,
414
+ }, /*#__PURE__*/_react.default.createElement("div", {
397
415
  style: {
398
- color: '#404239',
399
- marginRight: '4px'
416
+ height: '100%'
400
417
  }
418
+ }, /*#__PURE__*/_react.default.createElement("div", {
419
+ className: 'icon'
401
420
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
402
- id: 'MORE'
403
- }))), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
421
+ id: 'PAN_TOOL'
422
+ })), /*#__PURE__*/_react.default.createElement("div", {
423
+ className: 'text'
424
+ }, handRaised ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Lower") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Raise"))))))), /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
404
425
  title: "Hang up"
405
426
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
406
427
  onClick: endCall,
407
428
  style: {
408
429
  backgroundColor: '#eb3f21',
409
430
  color: 'white',
410
- marginRight: '4px'
431
+ marginRight: '4px',
432
+ minWidth: '120px',
433
+ width: '120px'
411
434
  }
412
435
  }, /*#__PURE__*/_react.default.createElement("span", {
413
436
  style: {
414
- marginRight: '8px'
437
+ marginRight: '8px',
438
+ fontSize: '12px'
415
439
  }
416
440
  }, "Hang up"), /*#__PURE__*/_react.default.createElement(_Icon.default, {
417
441
  id: 'CALL_END'
@@ -13,12 +13,10 @@ require("./Video.css");
13
13
 
14
14
  var _Icon = _interopRequireDefault(require("../Icon"));
15
15
 
16
- var _ApplicationContext = _interopRequireDefault(require("../../ApplicationContext"));
16
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
17
17
 
18
18
  var _Toolbar = _interopRequireDefault(require("./Toolbar"));
19
19
 
20
- var _Media = _interopRequireDefault(require("../../js/Media"));
21
-
22
20
  var _VCRoom = require("./VCRoom");
23
21
 
24
22
  var _VCRoomWorkspace = _interopRequireDefault(require("./VCRoomWorkspace"));
@@ -35,8 +33,14 @@ var _ClosablePanel = _interopRequireDefault(require("./ClosablePanel"));
35
33
 
36
34
  var _SideBarContent = _interopRequireDefault(require("./SideBarContent"));
37
35
 
36
+ var _VCRoomRecorder = _interopRequireDefault(require("./VCRoomRecorder"));
37
+
38
38
  var _RestUtils = require("../../RestUtils");
39
39
 
40
+ var _Media = _interopRequireDefault(require("../../js/Media"));
41
+
42
+ var _Observable = _interopRequireDefault(require("../../event/Observable"));
43
+
40
44
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
45
 
42
46
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -59,12 +63,11 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
59
63
  const [participants, setParticipants] = (0, _react.useState)([]);
60
64
  const [handRaised, setHandRaised] = (0, _react.useState)(false);
61
65
  const [isRecording, setIsRecording] = (0, _react.useState)(false);
62
- const [screenShared, setScreenShared] = (0, _react.useState)(null);
63
66
  const [videoDisabled] = (0, _react.useState)(props.videoDisabled);
64
67
  const [audioDisabled, setAudioDisabled] = (0, _react.useState)(props.audioDisabled);
65
68
  const [videoMuted, setVideoMuted] = (0, _react.useState)(true);
66
69
  const [audioMuted, setAudioMuted] = (0, _react.useState)(true);
67
- const [displayState, setDisplayState] = (0, _react.useState)('MAXIMIZED');
70
+ const [displayState, setDisplayState] = (0, _react.useState)(null);
68
71
  const [roomStatus, setRoomStatus] = (0, _react.useState)(null);
69
72
  const [someoneSharing, setSomeoneSharing] = (0, _react.useState)(null);
70
73
  const [sideBarOpen, setSideBarOpen] = (0, _react.useState)(false);
@@ -82,7 +85,8 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
82
85
  const [currentUserFullName, setCurrentUserFullName] = (0, _react.useState)(null);
83
86
  const [eventHandler] = (0, _react.useState)({});
84
87
  const [meetingChat, setMeetingChat] = (0, _react.useState)(null);
85
- const shareScreenSource = (0, _react.useRef)();
88
+
89
+ const [screenShared, setScreenShared] = _react.default.useState(null);
86
90
 
87
91
  const handler = () => {
88
92
  return {
@@ -233,27 +237,45 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
233
237
  (0, _react.useEffect)(() => {
234
238
  _VCEventManager.default.removeSubscriptions(eventHandler);
235
239
 
240
+ _ApplicationManager.default.addApplicationContextSubscription({
241
+ handler: {
242
+ get id() {
243
+ return 'training-room';
244
+ },
245
+
246
+ onContextChange: (context, newValues) => {
247
+ if (Object.keys(newValues).find(key => key === 'windowDisplayState')) {
248
+ setDisplayState(newValues.windowDisplayState);
249
+ }
250
+ }
251
+ }
252
+ }).then(initialContext => {
253
+ setDisplayState(initialContext ? initialContext.windowDisplayState : 'MAXIMIZED');
254
+ });
255
+
236
256
  _VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.REQUEST_TO_JOIN_MEETING, _VCEventType.VCEventType.USER_JOINED, _VCEventType.VCEventType.USER_LEFT_MEETING, _VCEventType.VCEventType.SYSTEM_EVENT, _VCEventType.VCEventType.SOCKET_CONNECT, _VCEventType.VCEventType.SOCKET_DISCONNECT, _VCEventType.VCEventType.PEER_DISCONNECT, _VCEventType.VCEventType.CONSUMER_TRANSPORT_FAILED, _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED);
237
257
 
238
258
  document.addEventListener('sideBarToggleEvent', handleSidebarToggle);
239
259
 
240
- _ApplicationContext.default.setHasActiveMeeting(true);
260
+ _ApplicationManager.default.setHasActiveMeeting(true);
241
261
 
242
262
  return () => {
243
263
  _VCEventManager.default.removeSubscriptions(eventHandler);
244
264
 
265
+ _Observable.default.removeApplicationContextSubscriptions('training-room');
266
+
245
267
  document.removeEventListener('sideBarToggleEvent', handleSidebarToggle);
246
268
 
247
- if (_ApplicationContext.default.hasActiveMeeting()) {
269
+ if (_ApplicationManager.default.hasActiveMeeting()) {
248
270
  _SocketManager.default.leaveMeeting(props.calendarEvent.id);
249
271
 
250
- _ApplicationContext.default.setHasActiveMeeting(false);
272
+ _ApplicationManager.default.setHasActiveMeeting(false);
251
273
  }
252
274
  };
253
275
  }, []);
254
276
 
255
277
  _react.default.useEffect(() => {
256
- _ApplicationContext.default.setHasActiveMeeting(true);
278
+ _ApplicationManager.default.setHasActiveMeeting(true);
257
279
 
258
280
  let userFullName;
259
281
 
@@ -281,7 +303,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
281
303
  }
282
304
 
283
305
  return () => {
284
- _ApplicationContext.default.setHasActiveMeeting(false);
306
+ _ApplicationManager.default.setHasActiveMeeting(false);
285
307
  };
286
308
  }, []);
287
309
 
@@ -334,14 +356,59 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
334
356
  const hangUp = () => {
335
357
  _SocketManager.default.leaveMeeting(props.calendarEvent.id);
336
358
 
337
- _ApplicationContext.default.setHasActiveMeeting(false);
359
+ _ApplicationManager.default.setHasActiveMeeting(false);
338
360
 
339
- _ApplicationContext.default.removeLoadedGraph(true);
361
+ _ApplicationManager.default.removeLoadedGraph(false);
340
362
 
341
363
  setSideBarOpen(false);
342
364
  setSideBarTab('');
343
365
  };
344
366
 
367
+ const emitSystemEvent = (eventType, data, toParticipantIds = null) => {
368
+ let participantIds = [];
369
+
370
+ if (!toParticipantIds) {
371
+ for (const participant of participants) {
372
+ if (participant.userId !== sessionStorage.getItem("username")) {
373
+ participantIds.push(participant.userId);
374
+ }
375
+ }
376
+ } else {
377
+ participantIds = participantIds.concat(toParticipantIds);
378
+ }
379
+
380
+ _SocketManager.default.emitEvent(_VCEventType.VCEventType.SYSTEM_EVENT, {
381
+ systemEventType: eventType,
382
+ recipients: participantIds,
383
+ data: data
384
+ }).catch(error => {});
385
+ };
386
+
387
+ const recordMeeting = () => {
388
+ _VCRoomRecorder.default.init(props.calendarEvent.id, props.calendarEvent.title);
389
+
390
+ setIsRecording(true);
391
+ emitSystemEvent("MEETING_RECORDING", {
392
+ recording: true,
393
+ userId: sessionStorage.getItem("username")
394
+ });
395
+
396
+ _VCRoomRecorder.default.recordMeeting();
397
+ };
398
+
399
+ const stopRecordingMeeting = (publish = true) => {
400
+ setIsRecording(false);
401
+
402
+ if (publish) {
403
+ emitSystemEvent("MEETING_RECORDING", {
404
+ recording: false,
405
+ userId: sessionStorage.getItem("username")
406
+ });
407
+ }
408
+
409
+ _VCRoomRecorder.default.stopRecordingMeeting();
410
+ };
411
+
345
412
  return /*#__PURE__*/_react.default.createElement("div", {
346
413
  style: {
347
414
  width: '100%',
@@ -352,10 +419,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
352
419
  }, /*#__PURE__*/_react.default.createElement("div", {
353
420
  className: 'row no-margin no-padding w-100 h-100'
354
421
  }, /*#__PURE__*/_react.default.createElement("div", {
355
- className: 'col no-margin no-padding',
356
- style: {
357
- display: displayState === 'MAXIMIZED' ? 'inherit' : 'none'
358
- }
422
+ className: 'col no-margin no-padding'
359
423
  }, /*#__PURE__*/_react.default.createElement("div", {
360
424
  className: 'row no-margin no-padding w-100 h-100'
361
425
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -380,6 +444,18 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
380
444
  showPeople: () => {
381
445
  setSideBarTab('People');
382
446
  setSideBarOpen(true);
447
+ },
448
+ shareScreen: () => {
449
+ setScreenShared(true);
450
+ },
451
+ stopShareScreen: () => {
452
+ setScreenShared(false);
453
+ },
454
+ recordMeeting: () => {
455
+ recordMeeting();
456
+ },
457
+ stopRecording: () => {
458
+ stopRecordingMeeting();
383
459
  }
384
460
  },
385
461
  hasUnreadChats: hasUnreadChats,
@@ -390,11 +466,11 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
390
466
  videoMuted: videoMuted,
391
467
  audioMuted: audioMuted,
392
468
  displayState: displayState,
469
+ screenShared: screenShared,
393
470
  roomStatus: roomStatus,
394
471
  isHost: props.calendarEvent.host.username === sessionStorage.getItem('username'),
395
472
  autoPermit: !props.calendarEvent.host.askToJoin,
396
473
  someoneSharing: someoneSharing,
397
- screenShared: screenShared,
398
474
  isRecording: isRecording
399
475
  })), roomStatus === Status.SYSTEM_ERROR && /*#__PURE__*/_react.default.createElement("div", {
400
476
  style: {
@@ -420,7 +496,6 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
420
496
  audioMuted: audioMuted,
421
497
  videoMuted: videoMuted,
422
498
  meetingTitle: props.calendarEvent.title,
423
- shareScreenSource: shareScreenSource.current,
424
499
  meetingId: props.calendarEvent.id,
425
500
  currentUserFullName: currentUserFullName,
426
501
  onGridSetup: () => {
@@ -428,10 +503,12 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.defau
428
503
  },
429
504
  roomStatus: roomStatus,
430
505
  isHost: isHost,
431
- screenShared: screenShared,
432
506
  sharingHandler: someoneSharing => setSomeoneSharing(someoneSharing),
507
+ onStopSharing: () => setScreenShared(false),
433
508
  autoPermit: autoPermit,
434
509
  rtpCapabilities: rtpCapabilities,
510
+ screenShared: screenShared,
511
+ displayState: displayState,
435
512
  onloadScreenShareData: onloadScreenShareData,
436
513
  allUserParticipantsLeft: allUserParticipantsLeft,
437
514
  onAudioDeviceChange: device => {
@@ -44,7 +44,7 @@ const VCRoom = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.for
44
44
 
45
45
  _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
46
46
 
47
- _Observable.default.addSystemSubscriptions(parsedConfig);
47
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
48
48
  }, []);
49
49
 
50
50
  const api = () => {
@@ -35,7 +35,7 @@ var _SocketManager = _interopRequireDefault(require("../SocketManager"));
35
35
 
36
36
  var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
37
37
 
38
- var _ApplicationContext = _interopRequireDefault(require("../../ApplicationContext"));
38
+ var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
39
39
 
40
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
41
 
@@ -77,7 +77,7 @@ const VIDEO_ENCODINGS = [{
77
77
  scalabilityMode: 'S1T3'
78
78
  }];
79
79
  exports.VIDEO_ENCODINGS = VIDEO_ENCODINGS;
80
- const location = window.location.protocol + "//" + window.location.hostname;
80
+ const location = window.location.protocol + '//' + window.location.hostname;
81
81
 
82
82
  const VCRoomParticipant = props => {
83
83
  const [handRaised, setHandRaised] = _react.default.useState(false);
@@ -237,7 +237,7 @@ const VCRoomParticipant = props => {
237
237
 
238
238
  (0, _react.useEffect)(() => {
239
239
  if (props.data && !_Utils.default.isNull(props.data.avatarId) && props.data.avatarId !== 'undefined' && props.data.avatarId !== 'null') {
240
- setDownloadUrl(location + _ApplicationContext.default.getContextRoot() + '/docs/api/v1/manager/download/' + props.data.avatarId + '?access_token=' + sessionStorage.getItem("accessToken") + '&idToken=' + sessionStorage.getItem("idToken"));
240
+ setDownloadUrl(location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download/' + props.data.avatarId + '?access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken'));
241
241
  }
242
242
  }, [props.data]);
243
243
  (0, _react.useEffect)(() => {
@@ -280,7 +280,7 @@ const VCRoomParticipant = props => {
280
280
  }, [selectedAudioDevice]);
281
281
  (0, _react.useEffect)(() => {
282
282
  if (consumerTransport) {
283
- console.log("TRANSI ARRIVED WITH PRODUCERS : ", props.data.producers);
283
+ console.log('TRANSI ARRIVED WITH PRODUCERS : ', props.data.producers);
284
284
 
285
285
  if (props.data.producers) {
286
286
  onNewProducers(props.data.producers, true);
@@ -290,15 +290,15 @@ const VCRoomParticipant = props => {
290
290
  failedProducersDueToNullTransport.splice(0, failedProducersDueToNullTransport.length);
291
291
 
292
292
  if (producers) {
293
- console.log("RE-INSTATING CONSUMERS");
293
+ console.log('RE-INSTATING CONSUMERS');
294
294
 
295
295
  for (let [key, value] of producers) {
296
- console.log("PROCESSING PRODUCER OF TYPE : " + key + " : " + value.id);
296
+ console.log('PROCESSING PRODUCER OF TYPE : ' + key + ' : ' + value.id);
297
297
 
298
298
  if (!(props.data.producers && (void 0).props.data.producers.find(p => p.producerId === value.id))) {
299
299
  consume(value.id, key, true, value.userId);
300
300
  } else {
301
- console.log("PRODUCER ALREADY PROCESSED");
301
+ console.log('PRODUCER ALREADY PROCESSED');
302
302
  }
303
303
  }
304
304
  }
@@ -306,7 +306,7 @@ const VCRoomParticipant = props => {
306
306
  }, [consumerTransport]);
307
307
 
308
308
  const createProducerTransport = async () => {
309
- setProducerTransport(await _MediaSoupHelper.default.initProducerTransport(props.device, props.meetingId, sessionStorage.getItem("username")));
309
+ setProducerTransport(await _MediaSoupHelper.default.initProducerTransport(props.device, props.meetingId, sessionStorage.getItem('username')));
310
310
  };
311
311
 
312
312
  const handleDevicesChanged = devices => {
@@ -346,7 +346,7 @@ const VCRoomParticipant = props => {
346
346
  }
347
347
 
348
348
  return () => {
349
- console.log("======================DESTROYING PARTICIPANT========================= : " + props.data.userId);
349
+ console.log('======================DESTROYING PARTICIPANT========================= : ' + props.data.userId);
350
350
 
351
351
  if (props.isCurrentUser) {
352
352
  stopProducing('audio');
@@ -468,13 +468,13 @@ const VCRoomParticipant = props => {
468
468
  callback();
469
469
  }
470
470
 
471
- console.log("CLOSING PRODUCER OF ID : " + producerId);
471
+ console.log('CLOSING PRODUCER OF ID : ' + producerId);
472
472
 
473
473
  _SocketManager.default.emitEvent(_VCEventType.VCEventType.PRODUCER_CLOSED, {
474
474
  userId: props.data.userId,
475
475
  producerId,
476
476
  roomId: props.meetingId
477
- }).then(data => {}).catch(e => console.log("PRODUCER_CLOSED ERROR : ", e));
477
+ }).then(data => {}).catch(e => console.log('PRODUCER_CLOSED ERROR : ', e));
478
478
  };
479
479
 
480
480
  const onNewProducers = (producers, loading = false) => {
@@ -482,7 +482,7 @@ const VCRoomParticipant = props => {
482
482
  if (consumerTransport) {
483
483
  if (producer.userId === props.data.userId) {
484
484
  if (producer.kind === 'video' && !producer.screenSharing) {
485
- console.log("CALLING CONSUME FROM ON NEW PRODUCERS FOR : " + props.data.userId + " - " + producer.producerId);
485
+ console.log('CALLING CONSUME FROM ON NEW PRODUCERS FOR : ' + props.data.userId + ' - ' + producer.producerId);
486
486
  consume(producer.producerId, producer.kind, loading, producer.userId);
487
487
  }
488
488
  }
@@ -533,14 +533,14 @@ const VCRoomParticipant = props => {
533
533
  };
534
534
 
535
535
  const consume = async (producerId, kind, loading, userId) => {
536
- _MediaSoupHelper.default.getConsumeStream(producerId, device.rtpCapabilities, consumerTransport, props.meetingId, sessionStorage.getItem("username"), kind).then(({
536
+ _MediaSoupHelper.default.getConsumeStream(producerId, device.rtpCapabilities, consumerTransport, props.meetingId, sessionStorage.getItem('username'), kind).then(({
537
537
  consumer,
538
538
  stream,
539
539
  kind
540
540
  }) => {
541
541
  if (consumer) {
542
542
  consumers.set(consumer.id, consumer);
543
- console.log("\n\n\n=====================================CONSUME===================================== : " + kind + " FOR : " + userId);
543
+ console.log('=====================================CONSUME===================================== : ' + kind + ' FOR : ' + userId);
544
544
 
545
545
  if (kind === 'video') {
546
546
  if (videoRef.current) {
@@ -591,7 +591,9 @@ const VCRoomParticipant = props => {
591
591
  style: {
592
592
  padding: props.padding ? props.padding : null,
593
593
  height: props.height ? props.height : null,
594
- position: 'relative'
594
+ position: 'relative',
595
+ minWidth: '150px',
596
+ minHeight: '150px'
595
597
  }
596
598
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (videoMuted || !videoRef.current || !videoRef.current.srcObject) && /*#__PURE__*/_react.default.createElement("div", {
597
599
  className: 'centered-flex-box',