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