@agilemotion/oui-react-js 1.3.7 → 1.3.9

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 (214) hide show
  1. package/README.TXT +1 -0
  2. package/dist/ApplicationContext.js +161 -284
  3. package/dist/BasicApp.js +1 -1
  4. package/dist/BasicAppHome.js +17 -4
  5. package/dist/BusinessPortalApp.js +4 -4
  6. package/dist/BusinessPortalAppHome.js +10 -39
  7. package/dist/DynamicJS.js +20 -52
  8. package/dist/RestUtils.js +86 -111
  9. package/dist/Utils.js +36 -30
  10. package/dist/assets/jss/components/authNavbarStyle.js +34 -35
  11. package/dist/assets/jss/components/cardHeaderStyle.js +12 -12
  12. package/dist/assets/jss/components/customDropdownStyle.js +26 -26
  13. package/dist/assets/jss/components/customInputStyle.js +2 -8
  14. package/dist/assets/jss/components/dropdownStyle.js +10 -15
  15. package/dist/assets/jss/components/footerStyle.js +12 -18
  16. package/dist/assets/jss/components/headerLinksStyle.js +7 -13
  17. package/dist/assets/jss/components/headerStyle.js +24 -25
  18. package/dist/assets/jss/components/navbarLinksStyle.js +7 -13
  19. package/dist/assets/jss/components/navbarStyle.js +24 -25
  20. package/dist/assets/jss/components/sidebarStyle.js +41 -43
  21. package/dist/assets/jss/components/typographyStyle.js +2 -8
  22. package/dist/assets/jss/rootStyle.js +32 -47
  23. package/dist/assets/jss/views/layoutStyle.js +6 -11
  24. package/dist/assets/jss/views/loginStyle.js +4 -10
  25. package/dist/assets/lotties/call-loading.json +1 -0
  26. package/dist/assets/lotties/calling-2.json +1 -0
  27. package/dist/assets/lotties/calling.json +1 -0
  28. package/dist/assets/lotties/calling2.json +1 -0
  29. package/dist/assets/lotties/chat.json +1 -0
  30. package/dist/assets/lotties/join.json +1 -0
  31. package/dist/assets/lotties/loading.json +1 -0
  32. package/dist/assets/lotties/msg2.json +1 -0
  33. package/dist/assets/lotties/recording.json +1 -0
  34. package/dist/assets/lotties/waiting.json +1 -0
  35. package/dist/assets/scss/black-dashboard-react/bootstrap/_card.scss +5 -5
  36. package/dist/assets/scss/black-dashboard-react/bootstrap/_carousel.scss +2 -2
  37. package/dist/assets/scss/black-dashboard-react/bootstrap/_custom-forms.scss +3 -3
  38. package/dist/assets/scss/black-dashboard-react/bootstrap/_functions.scss +1 -1
  39. package/dist/assets/scss/black-dashboard-react/bootstrap/_images.scss +1 -1
  40. package/dist/assets/scss/black-dashboard-react/bootstrap/_jumbotron.scss +1 -1
  41. package/dist/assets/scss/black-dashboard-react/bootstrap/_popover.scss +7 -5
  42. package/dist/assets/scss/black-dashboard-react/bootstrap/_tooltip.scss +4 -4
  43. package/dist/assets/scss/black-dashboard-react/bootstrap/_variables.scss +5 -5
  44. package/dist/assets/scss/black-dashboard-react/bootstrap/mixins/_grid-framework.scss +2 -2
  45. package/dist/assets/scss/black-dashboard-react/bootstrap/mixins/_grid.scss +11 -9
  46. package/dist/assets/scss/black-dashboard-react/bootstrap/utilities/_embed.scss +6 -4
  47. package/dist/assets/scss/black-dashboard-react/custom/_variables.scss +1 -1
  48. package/dist/components/AlertBar.js +39 -80
  49. package/dist/components/AlertItem.js +4 -26
  50. package/dist/components/Button.js +24 -36
  51. package/dist/components/Calendar.js +478 -0
  52. package/dist/components/Calender.css +244 -0
  53. package/dist/components/ConfirmationDialog.js +5 -29
  54. package/dist/components/DataGrid.js +169 -338
  55. package/dist/components/DataGridColumn.js +5 -28
  56. package/dist/components/DataGridFilter.js +46 -114
  57. package/dist/components/DataGridHeading.js +11 -19
  58. package/dist/components/Dialog.js +27 -121
  59. package/dist/components/DocumentViewer.js +15 -35
  60. package/dist/components/DocumentViewerComponent.js +2 -20
  61. package/dist/components/FileThumb.js +115 -0
  62. package/dist/components/Graph.js +25 -75
  63. package/dist/components/GraphNode.js +4 -21
  64. package/dist/components/HtmlPanel.js +59 -78
  65. package/dist/components/Icon.js +99 -1
  66. package/dist/components/LoadingIndicator.js +4 -4
  67. package/dist/components/LottieIcon.js +134 -0
  68. package/dist/components/PopupView.js +2 -20
  69. package/dist/components/RegularButton.js +15 -19
  70. package/dist/components/SignaturePanel.js +9 -40
  71. package/dist/components/SocketManager.js +170 -0
  72. package/dist/components/StepperTitleBar.js +30 -56
  73. package/dist/components/TabPage.js +6 -9
  74. package/dist/components/TabPanel.js +41 -98
  75. package/dist/components/TableCellContent.js +30 -38
  76. package/dist/components/TemplateDesigner.css +0 -1
  77. package/dist/components/TemplateDesigner.js +107 -151
  78. package/dist/components/TemplateItemEventHandler.js +33 -100
  79. package/dist/components/TemplateTable.js +6 -42
  80. package/dist/components/TitleBar.js +35 -52
  81. package/dist/components/Toolbar.js +33 -179
  82. package/dist/components/Tree.js +27 -64
  83. package/dist/components/card/Card.js +16 -20
  84. package/dist/components/card/CardAvatar.js +9 -13
  85. package/dist/components/card/CardBody.js +13 -17
  86. package/dist/components/card/CardFooter.js +12 -16
  87. package/dist/components/card/CardHeader.js +13 -17
  88. package/dist/components/card/CardIcon.js +6 -10
  89. package/dist/components/card/CardText.js +6 -10
  90. package/dist/components/customInput/CustomInput.js +12 -10
  91. package/dist/components/dashboard/BasicBusinessAppDashboard.js +81 -158
  92. package/dist/components/dashboard/BusinessPortalAppDashboard.js +33 -79
  93. package/dist/components/dashboard/components/Header.js +8 -25
  94. package/dist/components/dashboard/components/LeftDrawer.js +3 -1
  95. package/dist/components/dashboard/components/blackDashboard/fixedPlugin/FixedPlugin.js +1 -1
  96. package/dist/components/dashboard/components/blackDashboard/sidebar/Sidebar.js +143 -36
  97. package/dist/components/footer/Footer.js +6 -18
  98. package/dist/components/form/AddressSearch.js +32 -66
  99. package/dist/components/form/AutoComplete.js +160 -0
  100. package/dist/components/form/BaseField.js +66 -96
  101. package/dist/components/form/DatePicker.js +3 -21
  102. package/dist/components/form/FieldSet.js +158 -180
  103. package/dist/components/form/Form.css +1 -1
  104. package/dist/components/form/Form.js +137 -471
  105. package/dist/components/form/GridField.js +46 -146
  106. package/dist/components/form/IconField.js +35 -0
  107. package/dist/components/form/ImageEditor.js +19 -57
  108. package/dist/components/form/LookupField.js +8 -29
  109. package/dist/components/form/MultiFileUploadField.js +186 -0
  110. package/dist/components/form/RadioGroup.js +1 -16
  111. package/dist/components/form/Section.js +31 -92
  112. package/dist/components/form/SelectItem.js +14 -33
  113. package/dist/components/form/SignatureTemplateDesignerField.js +4 -2
  114. package/dist/components/form/Switch.js +53 -0
  115. package/dist/components/form/TextField.js +10 -17
  116. package/dist/components/form/TimePicker.js +7 -1
  117. package/dist/components/form/TransferList.css +2 -2
  118. package/dist/components/form/TransferList.js +67 -125
  119. package/dist/components/form/UploadField.js +27 -79
  120. package/dist/components/form/fieldset.css +8 -0
  121. package/dist/components/grid/GridContainer.js +5 -9
  122. package/dist/components/grid/GridItem.js +5 -9
  123. package/dist/components/layout/CollapsiblePanel.js +11 -33
  124. package/dist/components/layout/Layout.js +175 -290
  125. package/dist/components/layout/VC.css +17 -0
  126. package/dist/components/layout/View.css +17 -1
  127. package/dist/components/layout/View.js +77 -194
  128. package/dist/components/loader.css +1 -1
  129. package/dist/components/media/ClosablePanel.css +37 -0
  130. package/dist/components/media/ClosablePanel.js +53 -0
  131. package/dist/components/media/LobbyWaitingList.js +91 -0
  132. package/dist/components/media/MediaSoupHelper.js +223 -0
  133. package/dist/components/media/Recorder.js +235 -0
  134. package/dist/components/media/SideBarContent.css +54 -0
  135. package/dist/components/media/SideBarContent.js +46 -0
  136. package/dist/components/media/SocketRequest.js +20 -0
  137. package/dist/components/media/SocketResponse.js +16 -0
  138. package/dist/components/media/Timer.css +30 -0
  139. package/dist/components/media/Timer.js +88 -0
  140. package/dist/components/media/Toolbar.css +20 -0
  141. package/dist/components/media/Toolbar.js +470 -0
  142. package/dist/components/media/Tracks.js +39 -0
  143. package/dist/components/media/TrainingRoom.js +531 -0
  144. package/dist/components/media/Transports.js +35 -0
  145. package/dist/components/media/VCEventManager.js +74 -0
  146. package/dist/components/media/VCEventType.js +164 -0
  147. package/dist/components/media/VCParticipantList.css +72 -0
  148. package/dist/components/media/VCParticipantList.js +56 -0
  149. package/dist/components/media/VCParticipantListItem.css +73 -0
  150. package/dist/components/media/VCParticipantListItem.js +319 -0
  151. package/dist/components/media/VCRoom.css +42 -0
  152. package/dist/components/media/VCRoom.js +90 -0
  153. package/dist/components/media/VCRoomParticipant.css +25 -0
  154. package/dist/components/media/VCRoomParticipant.js +806 -0
  155. package/dist/components/media/VCRoomWorkspace.css +86 -0
  156. package/dist/components/media/VCRoomWorkspace.js +653 -0
  157. package/dist/components/media/Video.css +4 -0
  158. package/dist/components/media/Video.js +131 -0
  159. package/dist/components/media/chat/ChatRoom.js +926 -0
  160. package/dist/components/media/chat/ChatRoomItem.js +83 -0
  161. package/dist/components/media/chat/ChatRoomList.js +78 -0
  162. package/dist/components/media/chat/ChatRooms.scss +567 -0
  163. package/dist/components/menu/CollapsibleMenu.js +2 -19
  164. package/dist/components/menu/MenuBars.js +6 -33
  165. package/dist/components/menu/MenuButton.js +7 -35
  166. package/dist/components/menu/MenuItem.js +3 -20
  167. package/dist/components/menu/MenuLink.js +18 -12
  168. package/dist/components/navbars/AuthNavbar.js +5 -18
  169. package/dist/components/navbars/HomeNavbar.js +3 -5
  170. package/dist/components/navbars/PortalNavbar.js +4 -22
  171. package/dist/components/signatures/AgilitySignaturePanel.js +35 -101
  172. package/dist/components/signatures/AlertItem.js +3 -24
  173. package/dist/components/signatures/DocumentContainer.js +47 -135
  174. package/dist/components/signatures/ImageSignatureInput.js +8 -35
  175. package/dist/components/signatures/MenuButton.js +1 -16
  176. package/dist/components/signatures/Prompt.js +3 -24
  177. package/dist/components/signatures/ResponsiveTable.js +75 -96
  178. package/dist/components/signatures/SearchView.js +14 -50
  179. package/dist/components/signatures/SignatorySearch.js +83 -98
  180. package/dist/components/signatures/SignatorySearchForm.js +11 -17
  181. package/dist/components/signatures/SignatureInput.js +15 -44
  182. package/dist/components/signatures/SignatureInputProps.js +20 -60
  183. package/dist/components/signatures/SignatureTemplateDesigner.js +148 -235
  184. package/dist/components/signatures/Toolbar.js +7 -34
  185. package/dist/components/signatures/ViewUtils.js +2 -6
  186. package/dist/components/typography/Danger.js +3 -1
  187. package/dist/components/typography/Info.js +3 -1
  188. package/dist/components/typography/Link.js +6 -2
  189. package/dist/event/ActionHandlers.js +3 -3
  190. package/dist/event/EventType.js +7 -1
  191. package/dist/event/LoadDataActionHandler.js +1 -1
  192. package/dist/event/Observable.js +56 -168
  193. package/dist/event/RouteActionHandler.js +45 -11
  194. package/dist/event/ServiceCallActionHandler.js +34 -24
  195. package/dist/js/Addresses.js +10 -8
  196. package/dist/js/Media.js +157 -0
  197. package/dist/redux/store/ConfigureStore.js +3 -9
  198. package/dist/redux/store/DashboardStore.js +42 -94
  199. package/dist/redux/store/SecurityStore.js +15 -50
  200. package/dist/view/Dashboard.js +242 -163
  201. package/dist/view/security/ChangePasswordBasic.js +23 -76
  202. package/dist/view/security/ForgotPassword.js +9 -42
  203. package/dist/view/security/ForgotPasswordBasic.js +8 -41
  204. package/dist/view/security/Login.js +11 -47
  205. package/dist/view/security/LoginBasic.js +8 -41
  206. package/dist/view/security/LoginBusinessPortal.js +8 -41
  207. package/dist/view/security/ResetPassword.js +9 -47
  208. package/dist/view/security/ResetPasswordBasic.js +21 -71
  209. package/dist/view/security/Security.js +1 -0
  210. package/package.json +29 -13
  211. package/README.md +0 -1623
  212. package/dist/components/dashboard/BasicApp.js +0 -140
  213. package/dist/components/navbars/NavbarLinks.js +0 -212
  214. package/dist/components/signatures/OLD.js +0 -1138
@@ -0,0 +1,653 @@
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
+ require("./VCRoomWorkspace.css");
11
+
12
+ var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
13
+
14
+ var _VCRoomParticipant = _interopRequireDefault(require("./VCRoomParticipant"));
15
+
16
+ var _Box = _interopRequireDefault(require("@material-ui/core/Box"));
17
+
18
+ var _VCEventManager = _interopRequireDefault(require("./VCEventManager"));
19
+
20
+ var _MediaSoupHelper = _interopRequireDefault(require("./MediaSoupHelper"));
21
+
22
+ var _Transports = _interopRequireDefault(require("./Transports"));
23
+
24
+ var _VCEventType = require("./VCEventType");
25
+
26
+ var _Icon = _interopRequireDefault(require("../Icon"));
27
+
28
+ var _SocketManager = _interopRequireDefault(require("../SocketManager"));
29
+
30
+ var _LobbyWaitingList = _interopRequireDefault(require("./LobbyWaitingList"));
31
+
32
+ var _VCRoom = require("./VCRoom");
33
+
34
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
+
36
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
37
+
38
+ 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; }
39
+
40
+ /* eslint-disable react-hooks/exhaustive-deps */
41
+ const MAX_COLS = 3;
42
+ const MAX_ROWS = 2; // TODO : Clean-up all tracks and producers and consumers when the component closes
43
+
44
+ const VCRoomWorkspace = props => {
45
+ const [currentUserParticipant, setCurrentUserParticipant] = _react.default.useState(null);
46
+
47
+ const [inViewParticipants, setInViewParticipants] = _react.default.useState([]);
48
+
49
+ const [consumerTransport, setConsumerTransport] = _react.default.useState(null); //const [videoRefresher, setVideoRefresher] = React.useState(false);
50
+
51
+
52
+ const [device, setDevice] = _react.default.useState(null);
53
+
54
+ const [shareScreenProducer, setShareScreenProducer] = _react.default.useState(null);
55
+
56
+ const [producerTransport, setProducerTransport] = _react.default.useState(null);
57
+
58
+ const [shareScreenSource, setShareScreenSource] = _react.default.useState(null);
59
+
60
+ const [screenShared, setScreenShared] = _react.default.useState(null);
61
+
62
+ const [someoneSharing, setSomeoneSharing] = _react.default.useState(null);
63
+
64
+ const [showSharedScreen, setShowSharedScreen] = _react.default.useState(false);
65
+
66
+ const [message, setMessage] = _react.default.useState('');
67
+
68
+ const [shareScreenConsumer, setShareScreenConsumer] = _react.default.useState(null);
69
+
70
+ const [grid, setGrid] = _react.default.useState(null);
71
+
72
+ const [eventHandler] = (0, _react.useState)({});
73
+ const transports = (0, _react.useRef)(new _Transports.default());
74
+ const shareScreenVideoRef = (0, _react.useRef)();
75
+ const shareScreenStream = (0, _react.useRef)();
76
+ const {
77
+ waitingList,
78
+ roomStatus,
79
+ meetingId,
80
+ meetingTitle,
81
+ whiteBoardShown,
82
+ videoMuted,
83
+ audioMuted,
84
+ isHost,
85
+ autoPermit,
86
+ rtpCapabilities,
87
+ onloadScreenShareData
88
+ } = props;
89
+
90
+ const produceScreenShare = async () => {
91
+ if (!device) {
92
+ console.error('No available device');
93
+ return;
94
+ }
95
+
96
+ if (!device.canProduce('video')) {
97
+ console.error('Cannot produce screen share');
98
+ return;
99
+ }
100
+
101
+ if (shareScreenProducer) {
102
+ console.log('Share screen producer already exist');
103
+ return;
104
+ }
105
+
106
+ const videoConstraints = {
107
+ cursor: true,
108
+ audio: false,
109
+ video: {
110
+ mandatory: {
111
+ chromeMediaSource: 'desktop',
112
+ chromeMediaSourceId: shareScreenSource.id,
113
+ width: {
114
+ min: 160,
115
+ ideal: 320,
116
+ max: 640
117
+ },
118
+ height: {
119
+ min: 120,
120
+ ideal: 240,
121
+ max: 480
122
+ },
123
+ frameRate: {
124
+ min: 15,
125
+ max: 15
126
+ },
127
+ googCpuOveruseDetection: true,
128
+ googCpuOveruseEncodeUsage: true,
129
+ googCpuOveruseThreshold: 70
130
+ }
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
+ }
140
+ };
141
+ let producer = await producerTransport.produce(params);
142
+ setShareScreenProducer(producer);
143
+ shareScreenStream.current = stream;
144
+
145
+ if (showSharedScreen) {
146
+ shareScreenVideoRef.current.srcObject = stream;
147
+ }
148
+
149
+ producer.on('transportclose', () => {
150
+ stream.srcObject.getTracks().forEach(function (track) {
151
+ track.stop();
152
+ });
153
+ setShareScreenProducer(null);
154
+ });
155
+ producer.on('close', () => {
156
+ stream.srcObject.getTracks().forEach(function (track) {
157
+ track.stop();
158
+ });
159
+ setShareScreenProducer(null);
160
+ });
161
+ };
162
+
163
+ const stopProducingScreenShare = async () => {
164
+ if (!shareScreenProducer) {
165
+ console.log('There is no share screen producer');
166
+ return;
167
+ }
168
+
169
+ let producerId = shareScreenProducer.id;
170
+ console.log('Close producer', producerId);
171
+
172
+ _SocketManager.default.emitEvent(_VCEventType.VCEventType.PRODUCER_CLOSED, {
173
+ userId: sessionStorage.getItem("username"),
174
+ producerId,
175
+ roomId: meetingId
176
+ }).catch(e => console.log("PRODUCER_CLOSED ERROR : ", e));
177
+
178
+ shareScreenProducer.close();
179
+ stopShareScreenConsumerTracks();
180
+ setShareScreenProducer(null);
181
+ setSomeoneSharing(false);
182
+ setShareScreenSource(null);
183
+ setScreenShared(false);
184
+
185
+ if (shareScreenStream.current) {
186
+ for (const track of shareScreenStream.current.getTracks()) {
187
+ track.stop();
188
+ }
189
+ }
190
+ };
191
+
192
+ const onNewProducers = producers => {
193
+ let screenShareProducer = producers.find(p => p.screenSharing);
194
+
195
+ if (screenShareProducer) {
196
+ consume(screenShareProducer);
197
+ }
198
+ };
199
+
200
+ const stopShareScreenConsumerTracks = () => {
201
+ let el = document.getElementById('share-screen-video');
202
+
203
+ if (el) {
204
+ for (const track of el.srcObject.getTracks()) {
205
+ track.stop();
206
+ }
207
+
208
+ el.parentNode.removeChild(el);
209
+ }
210
+ };
211
+
212
+ const consume = async producer => {
213
+ _MediaSoupHelper.default.getConsumeStream(producer.producerId, device.rtpCapabilities, consumerTransport, props.meetingId, sessionStorage.getItem("username"), 'video').then(({
214
+ consumer,
215
+ stream,
216
+ kind
217
+ }) => {
218
+ if (consumer) {
219
+ setShareScreenConsumer(consumer);
220
+ console.log("=====================================SHARING CONSUME=====================================");
221
+ props.sharingHandler(true);
222
+ setScreenShared(true);
223
+ setSomeoneSharing(true); //setShowSharedScreen(true);
224
+
225
+ setShareScreenSource(null);
226
+ setMessage(producer.username + " is sharing");
227
+ shareScreenVideoRef.current.srcObject = stream;
228
+ shareScreenStream.current = stream; //setVideoRefresher(!videoRefresher);
229
+
230
+ consumer.on('trackended', () => {
231
+ stopShareScreenConsumerTracks();
232
+ });
233
+ consumer.on('transportclose', () => {
234
+ stopShareScreenConsumerTracks();
235
+ });
236
+ }
237
+ });
238
+ };
239
+
240
+ const handler = () => {
241
+ return {
242
+ get id() {
243
+ return 'meeting-participant-grid';
244
+ },
245
+
246
+ on: (eventType, be) => {
247
+ switch (eventType) {
248
+ case _VCEventType.VCEventType.PARTICIPANT_IN_VIEW:
249
+ onBringToView(be);
250
+ break;
251
+
252
+ case _VCEventType.VCEventType.NEW_PRODUCERS:
253
+ onNewProducers(be.payload);
254
+ break;
255
+
256
+ case _VCEventType.VCEventType.CONSUMER_CLOSED:
257
+ if (shareScreenConsumer && shareScreenConsumer.id === be.payload.consumerId) {
258
+ stopShareScreenConsumerTracks();
259
+ setMessage(null);
260
+ props.sharingHandler(false);
261
+ setSomeoneSharing(false);
262
+ setScreenShared(false);
263
+ setShowSharedScreen(false);
264
+ }
265
+
266
+ break;
267
+ }
268
+ }
269
+ };
270
+ };
271
+
272
+ const onBringToView = payload => {
273
+ if (!inViewParticipants.find(p => p.userId === payload.userId)) {
274
+ if (inViewParticipants.length === MAX_COLS * MAX_ROWS) {
275
+ let offViewParticipant = inViewParticipants[inViewParticipants.length - 1];
276
+
277
+ _VCEventManager.default.fireEvent(_VCEventType.VCEventType.PARTICIPANT_OFF_VIEW, offViewParticipant);
278
+
279
+ inViewParticipants.splice(inViewParticipants.length - 1, 1);
280
+ offViewParticipant.inView = false;
281
+ }
282
+
283
+ let participant = props.participants.find(p => p.userId === payload.userId);
284
+ inViewParticipants.push(participant); // Refresh the list
285
+
286
+ setInViewParticipants([].concat(inViewParticipants));
287
+ }
288
+ };
289
+
290
+ const removeFromView = participant => {
291
+ participant.inView = false;
292
+ setInViewParticipants(inViewParticipants.filter(p => p.userId !== participant.userId));
293
+
294
+ _VCEventManager.default.fireEvent(_VCEventType.VCEventType.PARTICIPANT_OFF_VIEW, participant);
295
+ };
296
+
297
+ const setupSelfDevices = async () => {
298
+ let device = await _MediaSoupHelper.default.getParticipantDevice(rtpCapabilities);
299
+ 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"));
302
+ setConsumerTransport(consumerTransport);
303
+ setProducerTransport(producerTransport);
304
+ transports.current.setConsumerTransport(consumerTransport);
305
+ transports.current.setProducerTransport(producerTransport);
306
+ };
307
+
308
+ (0, _react.useEffect)(() => {
309
+ eventHandler.api = handler();
310
+ });
311
+ (0, _react.useEffect)(() => {}, [props.audioMuted]);
312
+ (0, _react.useEffect)(() => {
313
+ setupGrid();
314
+ }, [inViewParticipants]);
315
+ /*useEffect(() => {
316
+ if(grid === null) {
317
+ setupGrid();
318
+ }
319
+ }, [grid]);*/
320
+
321
+ (0, _react.useEffect)(() => {
322
+ if (screenShared && shareScreenSource) {
323
+ produceScreenShare();
324
+ } else {
325
+ stopProducingScreenShare();
326
+ }
327
+ }, [screenShared, shareScreenSource]);
328
+ (0, _react.useEffect)(() => {
329
+ if (onloadScreenShareData && device && consumerTransport) {
330
+ consume(onloadScreenShareData);
331
+ }
332
+ }, [onloadScreenShareData, device, consumerTransport]);
333
+ (0, _react.useEffect)(() => {
334
+ setShareScreenSource(props.shareScreenSource);
335
+
336
+ if (props.shareScreenSource && props.shareScreenSource.name) {
337
+ var _props$shareScreenSou;
338
+
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');
340
+ }
341
+ }, [props.shareScreenSource]);
342
+ (0, _react.useEffect)(() => {
343
+ setScreenShared(props.screenShared);
344
+ }, [props.screenShared]);
345
+ (0, _react.useEffect)(() => {
346
+ _VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.NEW_PRODUCERS, _VCEventType.VCEventType.CONSUMER_CLOSED, _VCEventType.VCEventType.PARTICIPANT_IN_VIEW);
347
+
348
+ setupSelfDevices();
349
+ return () => {
350
+ _VCEventManager.default.removeSubscriptions(eventHandler);
351
+
352
+ transports.current.closeConsumerTransport();
353
+ transports.current.closeProducerTransport();
354
+ };
355
+ }, []);
356
+ (0, _react.useEffect)(() => {
357
+ if (grid) {
358
+ props.onGridSetup();
359
+ }
360
+ }, [grid]);
361
+ (0, _react.useEffect)(() => {
362
+ if (props.participants && props.currentUserFullName) {
363
+ setCurrentUserParticipant({
364
+ isCurrentUser: true,
365
+ userId: sessionStorage.getItem("username"),
366
+ peer: null,
367
+ name: props.currentUserFullName,
368
+ avatarId: sessionStorage.getItem("userAvatarId"),
369
+ videoMuted,
370
+ audioMuted
371
+ });
372
+ let counter = 0;
373
+ inViewParticipants.splice(0, inViewParticipants.length);
374
+
375
+ for (const participant of props.participants) {
376
+ participant.inView = true;
377
+ inViewParticipants.push(participant);
378
+
379
+ if (++counter >= MAX_ROWS * MAX_COLS) {
380
+ break;
381
+ }
382
+ }
383
+
384
+ setupGrid(inViewParticipants);
385
+ }
386
+ }, [props.participants, props.currentUserFullName]);
387
+
388
+ const setupGrid = () => {
389
+ let inViewGrid = [];
390
+ let numRows = inViewParticipants.length < MAX_ROWS ? inViewParticipants.length : MAX_ROWS;
391
+ let rows = inViewParticipants.length === 2 ? 1 : numRows;
392
+
393
+ for (let i = 0; i < rows; i++) {
394
+ inViewGrid.push([]);
395
+ }
396
+
397
+ let currentRowIndex = 0;
398
+
399
+ for (let i = 0; i < inViewParticipants.length; i++) {
400
+ inViewGrid[currentRowIndex].push(inViewParticipants[i]);
401
+
402
+ if (currentRowIndex++ === rows - 1) {
403
+ currentRowIndex = 0;
404
+ }
405
+ }
406
+
407
+ setGrid(inViewGrid);
408
+ };
409
+
410
+ function renderStrip() {
411
+ return inViewParticipants && inViewParticipants.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
412
+ style: {
413
+ overflowX: 'auto',
414
+ maxWidth: '100%',
415
+ width: '100%',
416
+ borderRadius: '4px',
417
+ height: '148px',
418
+ overflowY: 'hidden',
419
+ alignItems: 'center'
420
+ },
421
+ className: "row flex-row flex-nowrap no-margin no-padding"
422
+ }, inViewParticipants.map((participant, index) => {
423
+ return /*#__PURE__*/_react.default.createElement("div", {
424
+ className: 'col-*-*',
425
+ key: index + "-" + participant.userId,
426
+ style: {
427
+ borderRadius: '4px',
428
+ minWidth: "200px",
429
+ padding: '4px',
430
+ height: '148px'
431
+ }
432
+ }, /*#__PURE__*/_react.default.createElement(_VCRoomParticipant.default, {
433
+ data: participant,
434
+ device: device,
435
+ meetingId: meetingId,
436
+ audioMuted: participant.audioMuted,
437
+ videoMuted: participant.videoMuted,
438
+ onRemoveFromView: participant => removeFromView(participant),
439
+ consumerTransport: consumerTransport,
440
+ rtpCapabilities: rtpCapabilities,
441
+ numberOfInViewParticipants: inViewParticipants.length,
442
+ sizing: 'sm',
443
+ onHostAudioMute: () => props.onHostAudioMute(participant),
444
+ onHostVideoMute: () => props.onHostVideoMute(participant),
445
+ isHost: isHost
446
+ }));
447
+ }));
448
+ }
449
+
450
+ const renderRow = (row, index) => {
451
+ return /*#__PURE__*/_react.default.createElement(_Grid.default, {
452
+ style: {
453
+ height: '100%',
454
+ justifyContent: "center",
455
+ alignItems: "center"
456
+ },
457
+ key: index,
458
+ direction: "row",
459
+ justifyContent: "center",
460
+ alignItems: "center",
461
+ container: true,
462
+ item: true,
463
+ spacing: 2
464
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, row.map((participant, index) => {
465
+ return /*#__PURE__*/_react.default.createElement(_Grid.default, {
466
+ item: true,
467
+ xs: 4,
468
+ key: index + "-" + participant.userId,
469
+ className: 'meetingParticipantContainer',
470
+ style: {
471
+ borderRadius: '4px',
472
+ width: 100 / row.length + "%",
473
+ height: "100%",
474
+ flexBasis: null,
475
+ maxWidth: null
476
+ }
477
+ }, /*#__PURE__*/_react.default.createElement(_VCRoomParticipant.default, {
478
+ data: participant,
479
+ device: device,
480
+ meetingId: meetingId,
481
+ audioMuted: participant.audioMuted,
482
+ videoMuted: participant.videoMuted,
483
+ onRemoveFromView: participant => removeFromView(participant),
484
+ consumerTransport: consumerTransport,
485
+ numberOfInViewParticipants: inViewParticipants.length,
486
+ rtpCapabilities: rtpCapabilities,
487
+ onHostAudioMute: () => props.onHostAudioMute(participant),
488
+ onHostVideoMute: () => props.onHostVideoMute(participant),
489
+ isHost: isHost
490
+ }));
491
+ })));
492
+ };
493
+
494
+ return device ? /*#__PURE__*/_react.default.createElement("div", {
495
+ className: 'row-*-* grid',
496
+ style: {
497
+ height: '100%',
498
+ width: '100%'
499
+ }
500
+ }, roomStatus !== "LOBBY" && /*#__PURE__*/_react.default.createElement("div", {
501
+ className: 'row-*-* messages',
502
+ style: {
503
+ 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'
513
+ }
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", {
520
+ style: {
521
+ height: 'calc(100% - 216px)',
522
+ fontSize: '28px',
523
+ width: '100%',
524
+ justifyContent: 'center',
525
+ alignItems: 'center',
526
+ display: 'flex'
527
+ }
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,
540
+ style: {
541
+ width: '100%',
542
+ display: 'flex',
543
+ alignItems: 'center',
544
+ maxHeight: '100%',
545
+ height: "100%",
546
+ overflowY: 'auto',
547
+ overflowX: 'hidden'
548
+ }
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", {
560
+ className: 'content-box',
561
+ style: {
562
+ display: !(screenShared && showSharedScreen || someoneSharing) ? 'none' : null
563
+ }
564
+ }, /*#__PURE__*/_react.default.createElement("video", {
565
+ id: 'screen-share-video',
566
+ width: 640,
567
+ height: 320,
568
+ autoPlay: true,
569
+ ref: shareScreenVideoRef,
570
+ muted: true,
571
+ style: {
572
+ width: '100%',
573
+ height: '100%',
574
+ zIndex: '0'
575
+ }
576
+ })), whiteBoardShown && /*#__PURE__*/_react.default.createElement("div", {
577
+ className: 'content-box'
578
+ }, "Whiteboard...")), roomStatus !== "LOBBY" && /*#__PURE__*/_react.default.createElement("div", {
579
+ className: 'row-*-*',
580
+ style: {
581
+ width: '100%',
582
+ height: '40px',
583
+ marginLeft: '0',
584
+ marginRight: '0',
585
+ display: 'flex',
586
+ 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'
599
+ }
600
+ }, /*#__PURE__*/_react.default.createElement("div", {
601
+ style: {
602
+ width: 'calc(100% - 232px)',
603
+ height: '148px',
604
+ borderRadius: '4px',
605
+ marginRight: '16px',
606
+ paddingLeft: '16px'
607
+ }
608
+ }, (screenShared && showSharedScreen || whiteBoardShown || roomStatus === "LOBBY" || someoneSharing) && grid && /*#__PURE__*/_react.default.createElement("div", {
609
+ style: {
610
+ width: '100%',
611
+ height: '100%'
612
+ }
613
+ }, renderStrip())), /*#__PURE__*/_react.default.createElement("div", {
614
+ className: 'col no-margin no-padding',
615
+ style: {
616
+ width: '200px',
617
+ height: '148px'
618
+ }
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", {
637
+ className: 'no-side-margin no-side-padding grid-side-bar',
638
+ style: {
639
+ backgroundColor: 'transparent',
640
+ position: 'absolute',
641
+ top: '0',
642
+ right: '16px'
643
+ }
644
+ }, waitingList && waitingList.length > 0 && /*#__PURE__*/_react.default.createElement(_LobbyWaitingList.default, {
645
+ waitingList: waitingList,
646
+ autoHeight: true,
647
+ rejectUserHandler: props.rejectUserHandler,
648
+ acceptUserHandler: props.acceptUserHandler
649
+ }))) : null;
650
+ };
651
+
652
+ var _default = VCRoomWorkspace;
653
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ .user-video {
2
+ min-width: 280px;
3
+ height: 280px;
4
+ }