fcr-ui-scene 3.2.0 → 3.3.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 (219) hide show
  1. package/installer/icons/favicon.ico +0 -0
  2. package/installer/icons/favicon.png +0 -0
  3. package/installer/mac/entitlements.mac.plist +16 -0
  4. package/lib/common/device-store.d.ts +1 -1
  5. package/lib/common/device-store.js +11 -3
  6. package/lib/common/event-store.d.ts +17 -1
  7. package/lib/common/event-store.js +38 -5
  8. package/lib/common/security-store.d.ts +14 -4
  9. package/lib/common/security-store.js +149 -30
  10. package/lib/electron/bootstrap-dev.d.ts +1 -0
  11. package/lib/electron/bootstrap-dev.js +51 -0
  12. package/lib/electron/bootstrap-sdk.d.ts +1 -0
  13. package/lib/electron/bootstrap-sdk.js +56 -0
  14. package/lib/electron/bootstrap.d.ts +1 -0
  15. package/lib/electron/bootstrap.js +56 -0
  16. package/lib/electron/default-options.js +1 -1
  17. package/lib/electron/dev.d.ts +1 -0
  18. package/lib/electron/dev.js +51 -0
  19. package/lib/electron/injections.d.ts +1 -1
  20. package/lib/electron/injections.js +3 -6
  21. package/lib/electron/main.js +4 -16
  22. package/lib/electron/plugins/meeting-state.d.ts +2 -0
  23. package/lib/electron/plugins/meeting-state.js +39 -0
  24. package/lib/electron/preload.js +1 -1
  25. package/lib/fragments/control-bar/control-bar-store.d.ts +34 -1
  26. package/lib/fragments/control-bar/control-bar-store.js +371 -79
  27. package/lib/fragments/control-bar/device/index.js +5 -3
  28. package/lib/fragments/control-bar/index.css +15 -10
  29. package/lib/fragments/control-bar/index.js +18 -0
  30. package/lib/fragments/control-bar/meeting-details/meeting-detail.css +109 -0
  31. package/lib/fragments/control-bar/meeting-details/meeting-details-portal.d.ts +3 -0
  32. package/lib/fragments/control-bar/meeting-details/meeting-details-portal.js +60 -0
  33. package/lib/fragments/control-bar/meeting-details/meeting-details.d.ts +2 -0
  34. package/lib/fragments/control-bar/meeting-details/meeting-details.js +179 -0
  35. package/lib/fragments/control-bar/more-actions/index.css +53 -0
  36. package/lib/fragments/control-bar/more-actions/index.js +72 -37
  37. package/lib/fragments/control-bar/security-content/index.css +10 -0
  38. package/lib/fragments/control-bar/security-content/index.js +40 -18
  39. package/lib/fragments/control-bar/view.js +8 -2
  40. package/lib/login-confirm-dialog.d.ts +12 -0
  41. package/lib/login-confirm-dialog.js +80 -0
  42. package/lib/modules/action-bar/action-bar-collapes-items.js +5 -5
  43. package/lib/modules/action-bar/chat/index.js +5 -5
  44. package/lib/modules/action-bar/device/index.css +7 -2
  45. package/lib/modules/action-bar/device/index.js +4 -4
  46. package/lib/modules/action-bar/index.css +59 -12
  47. package/lib/modules/action-bar/index.d.ts +3 -2
  48. package/lib/modules/action-bar/index.dev.js +1 -1
  49. package/lib/modules/action-bar/index.js +21 -0
  50. package/lib/modules/action-bar/leave/assign-host.d.ts +3 -0
  51. package/lib/modules/action-bar/leave/assign-host.js +2 -4
  52. package/lib/modules/action-bar/leave/index.js +29 -6
  53. package/lib/modules/action-bar/leave/leave-meeting.d.ts +11 -0
  54. package/lib/modules/action-bar/leave/leave-meeting.js +25 -16
  55. package/lib/modules/action-bar/more/poppover-content.js +4 -4
  56. package/lib/modules/action-bar/participants/index.css +12 -0
  57. package/lib/modules/action-bar/participants/index.js +21 -14
  58. package/lib/modules/action-bar/screen-share/index.js +5 -1
  59. package/lib/modules/action-bar/screen-share/submenu.js +16 -22
  60. package/lib/modules/action-bar/security/drop-menu.js +90 -13
  61. package/lib/modules/action-bar/store.d.ts +38 -6
  62. package/lib/modules/action-bar/store.js +487 -95
  63. package/lib/modules/action-bar/view.js +65 -42
  64. package/lib/modules/chat/chat-bar/index.js +39 -27
  65. package/lib/modules/chat/chat-select/index.css +14 -4
  66. package/lib/modules/chat/chat.d.ts +1 -2
  67. package/lib/modules/chat/chat.js +184 -105
  68. package/lib/modules/chat/index.css +49 -0
  69. package/lib/modules/chat/index.d.ts +2 -2
  70. package/lib/modules/chat/index.dev.js +1 -1
  71. package/lib/modules/chat/index.js +13 -8
  72. package/lib/modules/chat/message-list.js +59 -48
  73. package/lib/modules/chat/store.d.ts +48 -2
  74. package/lib/modules/chat/store.js +258 -45
  75. package/lib/modules/connection-gateway/index.d.ts +2 -1
  76. package/lib/modules/connection-gateway/store.d.ts +6 -3
  77. package/lib/modules/connection-gateway/store.js +5 -1
  78. package/lib/modules/device-pretest/audio-preview/speaker-control.js +1 -1
  79. package/lib/modules/device-pretest/index.css +0 -4
  80. package/lib/modules/device-pretest/settings/beauty.js +17 -6
  81. package/lib/modules/device-pretest/store.js +7 -11
  82. package/lib/modules/dialog/components/chat/electron.js +2 -1
  83. package/lib/modules/dialog/components/confirm/electron.js +5 -3
  84. package/lib/modules/dialog/components/connection-gateway/electron.js +3 -1
  85. package/lib/modules/dialog/components/connection-gateway/index.css +0 -2
  86. package/lib/modules/dialog/components/device-setting/electron.js +3 -1
  87. package/lib/modules/dialog/components/device-setting/index.css +0 -1
  88. package/lib/modules/dialog/components/operation-waiting-room/electron.d.ts +5 -0
  89. package/lib/modules/dialog/components/operation-waiting-room/electron.js +89 -0
  90. package/lib/modules/dialog/components/operation-waiting-room/index.css +44 -0
  91. package/lib/modules/dialog/components/operation-waiting-room/index.d.ts +5 -0
  92. package/lib/modules/dialog/components/operation-waiting-room/index.js +156 -0
  93. package/lib/modules/dialog/components/participant/electron.js +2 -1
  94. package/lib/modules/dialog/components/remove-admit-waiting-room/electron.d.ts +5 -0
  95. package/lib/modules/dialog/components/remove-admit-waiting-room/electron.js +89 -0
  96. package/lib/modules/dialog/components/remove-admit-waiting-room/index.css +50 -0
  97. package/lib/modules/dialog/components/remove-admit-waiting-room/index.d.ts +5 -0
  98. package/lib/modules/dialog/components/remove-admit-waiting-room/index.js +90 -0
  99. package/lib/modules/dialog/components/whiteboard/index.js +2 -1
  100. package/lib/modules/dialog/dialogs.js +17 -13
  101. package/lib/modules/dialog/index.css +2 -0
  102. package/lib/modules/dialog/store.d.ts +4 -0
  103. package/lib/modules/dialog/store.js +16 -2
  104. package/lib/modules/event-notification/context.d.ts +2 -0
  105. package/lib/modules/event-notification/context.js +9 -0
  106. package/lib/modules/event-notification/index.css +58 -0
  107. package/lib/modules/event-notification/index.d.ts +13 -0
  108. package/lib/modules/event-notification/index.js +48 -0
  109. package/lib/modules/event-notification/store.d.ts +17 -0
  110. package/lib/modules/event-notification/store.js +133 -0
  111. package/lib/modules/event-notification/view.d.ts +5 -0
  112. package/lib/modules/event-notification/view.js +114 -0
  113. package/lib/modules/invite/index.css +4 -4
  114. package/lib/modules/invite/pstn-invite.js +1 -0
  115. package/lib/modules/layout/components/Gallery.js +7 -1
  116. package/lib/modules/layout/components/Layout.js +82 -57
  117. package/lib/modules/layout/components/index.css +33 -6
  118. package/lib/modules/layout/index.css +30 -0
  119. package/lib/modules/layout/member-window/index.js +9 -3
  120. package/lib/modules/layout/store.d.ts +19 -2
  121. package/lib/modules/layout/store.js +177 -70
  122. package/lib/modules/layout/video-window-datasource.d.ts +1 -1
  123. package/lib/modules/layout/video-window-datasource.js +1 -1
  124. package/lib/modules/live-streaming/index.dev.js +1 -1
  125. package/lib/modules/participant/attendee/index.d.ts +12 -3
  126. package/lib/modules/participant/attendee/index.js +132 -30
  127. package/lib/modules/participant/index.css +20 -0
  128. package/lib/modules/participant/index.d.ts +5 -2
  129. package/lib/modules/participant/index.dev.js +1 -1
  130. package/lib/modules/participant/index.js +27 -0
  131. package/lib/modules/participant/room-control-drop-menu/index.css +37 -0
  132. package/lib/modules/participant/store.d.ts +30 -5
  133. package/lib/modules/participant/store.js +347 -74
  134. package/lib/modules/participant/view.js +133 -34
  135. package/lib/modules/setting/index.css +1 -5
  136. package/lib/modules/setting/index.dev.js +1 -1
  137. package/lib/modules/setting/store.d.ts +2 -2
  138. package/lib/modules/setting/store.js +3 -8
  139. package/lib/modules/setting/translate-settings/translate-settings.js +1 -1
  140. package/lib/modules/setting/video-settings/index.css +9 -6
  141. package/lib/modules/share-screen/index.d.ts +2 -0
  142. package/lib/modules/share-screen/index.dev.js +3 -2
  143. package/lib/modules/share-screen/selection/index.css +2 -0
  144. package/lib/modules/share-screen/store.d.ts +6 -3
  145. package/lib/modules/share-screen/store.js +170 -129
  146. package/lib/modules/state-bar/index.css +2 -2
  147. package/lib/modules/state-bar/index.d.ts +2 -2
  148. package/lib/modules/state-bar/index.dev.js +1 -1
  149. package/lib/modules/state-bar/meeting-detail.css +6 -4
  150. package/lib/modules/state-bar/meeting-details.js +29 -3
  151. package/lib/modules/state-bar/meeting-network-state.css +14 -3
  152. package/lib/modules/state-bar/meeting-network-state.js +10 -4
  153. package/lib/modules/state-bar/recording.js +3 -5
  154. package/lib/modules/state-bar/store.d.ts +4 -2
  155. package/lib/modules/state-bar/store.js +18 -3
  156. package/lib/modules/state-bar/view.js +1 -6
  157. package/lib/modules/video-window/index.css +1 -0
  158. package/lib/modules/video-window/store.d.ts +2 -2
  159. package/lib/modules/video-window/store.js +14 -11
  160. package/lib/modules/waiting-room-layout/context.d.ts +2 -0
  161. package/lib/modules/waiting-room-layout/context.js +9 -0
  162. package/lib/modules/waiting-room-layout/index.css +71 -0
  163. package/lib/modules/waiting-room-layout/index.d.ts +8 -0
  164. package/lib/modules/waiting-room-layout/index.js +47 -0
  165. package/lib/modules/waiting-room-layout/store.d.ts +30 -0
  166. package/lib/modules/waiting-room-layout/store.js +189 -0
  167. package/lib/modules/waiting-room-layout/type.d.ts +0 -0
  168. package/lib/modules/waiting-room-layout/type.js +1 -0
  169. package/lib/modules/waiting-room-layout/view.d.ts +3 -0
  170. package/lib/modules/waiting-room-layout/view.js +67 -0
  171. package/lib/modules/whiteboard/app.js +0 -6
  172. package/lib/modules/whiteboard/components/control-bar/index.css +3 -0
  173. package/lib/modules/whiteboard/components/multi-window/index.js +6 -1
  174. package/lib/modules/whiteboard/components/progress/electron.js +2 -1
  175. package/lib/modules/whiteboard/components/switch-theme/index.css +4 -0
  176. package/lib/modules/whiteboard/components/switch-theme/index.d.ts +2 -1
  177. package/lib/modules/whiteboard/components/switch-theme/index.js +20 -15
  178. package/lib/modules/whiteboard/components/switch-theme/item.d.ts +1 -0
  179. package/lib/modules/whiteboard/components/switch-theme/item.js +9 -2
  180. package/lib/modules/whiteboard/components/toolbar/components/shape-picker.js +14 -10
  181. package/lib/modules/whiteboard/components/toolbar/store.d.ts +1 -0
  182. package/lib/modules/whiteboard/components/toolbar/store.js +3 -0
  183. package/lib/modules/whiteboard/context.d.ts +4 -0
  184. package/lib/modules/whiteboard/context.js +4 -2
  185. package/lib/modules/whiteboard/index.js +22 -6
  186. package/lib/plugins/browser-runtime-plugin.js +1 -1
  187. package/lib/plugins/module-dev-plugin.js +8 -6
  188. package/lib/runtime.d.ts +1 -1
  189. package/lib/translations/enUS.d.ts +449 -6
  190. package/lib/translations/enUS.js +485 -32
  191. package/lib/translations/zhCN.d.ts +447 -6
  192. package/lib/translations/zhCN.js +468 -17
  193. package/lib/type.d.ts +6 -2
  194. package/lib/ui-manager.d.ts +7 -3
  195. package/lib/ui-manager.js +576 -139
  196. package/lib/ui-scene.d.ts +1 -0
  197. package/lib/ui-scene.js +26 -21
  198. package/lib/utilities/constant.d.ts +43 -4
  199. package/lib/utilities/constant.js +41 -1
  200. package/lib/utilities/parameters.js +2 -2
  201. package/lib/utilities/renderer.d.ts +1 -0
  202. package/lib/utilities/renderer.js +6 -2
  203. package/package.json +14 -14
  204. package/public/assets/fcr_defaultpage.png +0 -0
  205. package/public/assets/login_confirm.png +0 -0
  206. package/public/index.html +29 -11
  207. package/dist/132.js +0 -2
  208. package/dist/132.js.LICENSE.txt +0 -311
  209. package/dist/651.js +0 -2
  210. package/dist/651.js.LICENSE.txt +0 -1
  211. package/dist/73.js +0 -1
  212. package/dist/index.html +0 -13
  213. package/dist/main.da7c203ab32d15742cfe.css +0 -11760
  214. package/dist/main.js +0 -2
  215. package/dist/main.js.LICENSE.txt +0 -254
  216. package/dist/worker-entry.worker.js.LICENSE.txt +0 -13
  217. package/lib/modules/device-pretest/settings/index.css +0 -15
  218. package/lib/modules/participant/attendee/participants-more-action.d.ts +0 -18
  219. package/lib/modules/participant/attendee/participants-more-action.js +0 -278
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.object.define-property.js");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -26,6 +27,8 @@ var _type2 = require("agora-edu-core/lib/type");
26
27
  var _copyText = require("../../../utilities/copyText");
27
28
  var _toast = require("agora-ui-foundation/lib/components/toast");
28
29
  var _i18n = require("agora-ui-foundation/lib/i18n");
30
+ var _classnames = _interopRequireDefault(require("classnames"));
31
+ var _leaveMeeting = require("../../../modules/action-bar/leave/leave-meeting");
29
32
  var _jsxRuntime = require("react/jsx-runtime");
30
33
  var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(function (props) {
31
34
  var ref = (0, _react.useRef)(null);
@@ -41,7 +44,18 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
41
44
  hasStartCloudRecordingPermission = _useContext.hasStartCloudRecordingPermission,
42
45
  hasStartLiveStreamingPermission = _useContext.hasStartLiveStreamingPermission,
43
46
  hasGetLiveStreamingUrlPermission = _useContext.hasGetLiveStreamingUrlPermission,
44
- hasStopLiveStreamingPermission = _useContext.hasStopLiveStreamingPermission;
47
+ hasStopLiveStreamingPermission = _useContext.hasStopLiveStreamingPermission,
48
+ setShowMeetingDetailPortal = _useContext.setShowMeetingDetailPortal,
49
+ setMeetingDetailPortalPosition = _useContext.setMeetingDetailPortalPosition,
50
+ localUserRole = _useContext.localUserRole,
51
+ hasAssignHostBeforeLeavingPermission = _useContext.hasAssignHostBeforeLeavingPermission,
52
+ isPstnUser = _useContext.isPstnUser,
53
+ remoteUsers = _useContext.remoteUsers,
54
+ hasEndRoomPermission = _useContext.hasEndRoomPermission,
55
+ sendLeave = _useContext.sendLeave,
56
+ sendEnd = _useContext.sendEnd,
57
+ keepPhoneAudioConnection = _useContext.keepPhoneAudioConnection,
58
+ sendAssign = _useContext.sendAssign;
45
59
  var transI18n = (0, _i18n.useI18n)();
46
60
  var onItemClick = function onItemClick(item) {
47
61
  if (item.onClick) {
@@ -75,6 +89,7 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
75
89
  children: transI18n('fmt_popup_button_endmeeting')
76
90
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.FcrButton, {
77
91
  size: "S",
92
+ type: "secondary-bordered",
78
93
  onClick: function onClick() {
79
94
  _dialog.FcrDialogApi.close('leave-room');
80
95
  window.runtime.browserWindow.setIgnoreMouseEvents(true, {
@@ -85,6 +100,7 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
85
100
  children: transI18n('fmt_popup_button_leavemeeting')
86
101
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.FcrButton, {
87
102
  size: "S",
103
+ type: "secondary-bordered",
88
104
  onClick: function onClick() {
89
105
  window.runtime.browserWindow.setIgnoreMouseEvents(true, {
90
106
  forward: true
@@ -121,11 +137,15 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
121
137
  })]
122
138
  });
123
139
  };
140
+
141
+ // 分割线
124
142
  var moreOptions = [{
143
+ icon: _type.FcrIconType.FCR_WEB_CHAT,
125
144
  text: transI18n('fmt_chat_label_chat'),
126
145
  displayWhenNoPermission: 'hidden',
127
146
  key: _constant.RendererEventAction.OPEN_CHAT,
128
- hasPermission: hasChatPermission
147
+ hasPermission: hasChatPermission,
148
+ classNames: 'share-action-nav__media-list-item-with-divider'
129
149
  }, {
130
150
  icon: _type.FcrIconType.FCR_EMO,
131
151
  text: transI18n('fmt_popup_label_expression'),
@@ -133,6 +153,8 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
133
153
  key: 'emoji',
134
154
  hasPermission: false
135
155
  }, {
156
+ icon: _type.FcrIconType.FCR_CLOUDRECORD,
157
+ classNames: 'share-action-nav__media-list-item-with-divider',
136
158
  text: transI18n('fmt_screenshare_controlbar_button_more_cloudRecord'),
137
159
  displayWhenNoPermission: 'hidden',
138
160
  key: cloudRecordingState === _type2.FcrRecordingState.Stopped ? _constant.RendererEventAction.CLOUD_RECORDING_START : _constant.RendererEventAction.CLOUD_RECORDING_STOP,
@@ -147,6 +169,7 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
147
169
  // hasStartCloudRecordingPermission && cloudRecordingState === FcrRecordingState.Stopped,
148
170
  // },
149
171
  {
172
+ classNames: 'share-action-nav__media-list-item-with-divider',
150
173
  icon: _type.FcrIconType.FCR_LIVE,
151
174
  text: transI18n('fmt_screenshare_controlbar_button_more_live'),
152
175
  displayWhenNoPermission: 'hidden',
@@ -158,14 +181,29 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
158
181
  });
159
182
  handleMoreClick(_constant.RendererEventAction.OPEN_LIVE_STEAMING_DIALOG);
160
183
  }
184
+ }, {
185
+ icon: _type.FcrIconType.FCR_EXCLAMATIONMASK,
186
+ text: transI18n('fmt_popup_button_meetinginfor'),
187
+ classNames: 'share-action-nav__media-list-item-with-divider',
188
+ displayWhenNoPermission: 'hidden',
189
+ key: 'copyMeetingInfo',
190
+ hasPermission: true,
191
+ onClick: function onClick() {
192
+ closePopover();
193
+ var currentPopoverPosition = document.getElementsByClassName('share-action-nav__popover')[0].getBoundingClientRect();
194
+ setMeetingDetailPortalPosition(currentPopoverPosition.x || 0, currentPopoverPosition.y || 0);
195
+ setShowMeetingDetailPortal(true);
196
+ }
161
197
  }, {
162
198
  icon: _type.FcrIconType.FCR_SETTING,
199
+ classNames: 'share-action-nav__media-list-item-with-divider',
163
200
  text: transI18n('fmt_screenshare_controlbar_button_more_setting'),
164
201
  displayWhenNoPermission: 'hidden',
165
202
  key: _constant.RendererEventAction.OPEN_SETTING,
166
203
  hasPermission: true
167
204
  }, {
168
205
  icon: _type.FcrIconType.FCR_ATTACH,
206
+ classNames: 'share-action-nav__media-list-item-with-divider',
169
207
  text: transI18n('fmt_live_label_copylink'),
170
208
  displayWhenNoPermission: 'hidden',
171
209
  key: 'copyLiveLink',
@@ -182,43 +220,40 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
182
220
  });
183
221
  }
184
222
  }, {
185
- icon: _type.FcrIconType.FCR_ATTACH,
186
- text: transI18n('fmt_popup_button_meetinginfor'),
187
- displayWhenNoPermission: 'hidden',
188
- key: 'copyMeetingInfo',
189
- hasPermission: false,
223
+ icon: _type.FcrIconType.FCR_ENDMEETING,
224
+ key: _constant.RendererEventAction.LEAVE_ROOM,
225
+ classNames: 'share-action-nav__popover-inner-content-leave-option',
226
+ text: isHost ? transI18n('fmt_popup_button_endmeeting') : transI18n('fmt_popup_button_leavemeeting'),
227
+ hasPermission: true,
190
228
  onClick: function onClick() {
191
- closePopover();
192
- (0, _copyText.copyText)('TODO 会议信息').then(function () {
193
- _toast.FcrToastApi.open({
194
- id: 'copy-live-link',
195
- toastProps: {
196
- type: 'info',
197
- content: transI18n('fmt_statusbar_status_coppied')
198
- }
199
- });
229
+ window.runtime.browserWindow.setIgnoreMouseEvents(false);
230
+ _dialog.FcrDialogApi.info({
231
+ id: 'leave-room',
232
+ dialogProps: {
233
+ content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_leaveMeeting.LeaveMeeting, {
234
+ setPopoverOpened: function setPopoverOpened(value) {
235
+ if (!value) {
236
+ _dialog.FcrDialogApi.close('leave-room');
237
+ }
238
+ },
239
+ localUserRole: localUserRole,
240
+ leave: sendLeave,
241
+ isLocked: false,
242
+ hasAssignHostBeforeLeavingPermission: hasAssignHostBeforeLeavingPermission,
243
+ hasEndRoomPermission: hasEndRoomPermission,
244
+ keepPhoneAudioConnection: keepPhoneAudioConnection,
245
+ isPstnUser: isPstnUser,
246
+ remoteUsers: remoteUsers,
247
+ end: sendEnd,
248
+ assignHost: sendAssign
249
+ }),
250
+ width: 255,
251
+ closable: false,
252
+ rootClassName: 'leave-room-dialog'
253
+ }
200
254
  });
201
255
  }
202
- }
203
- // {
204
- // icon: FcrIconType.FCR_ENDMEETING,
205
- // key: RendererEventAction.LEAVE_ROOM,
206
- // text: isHost ? '结束会议' : '离开会议',
207
- // hasPermission: true,
208
- // onClick: () => {
209
- // window.runtime.browserWindow.setIgnoreMouseEvents(false);
210
- // FcrDialogApi.info({
211
- // id: 'leave-room',
212
- // dialogProps: {
213
- // content: <LeaveRoomContent />,
214
- // width: 256,
215
- // closable: false,
216
- // rootClassName: 'leave-room-dialog',
217
- // },
218
- // });
219
- // },
220
- // },
221
- ];
256
+ }];
222
257
  (0, _react.useEffect)(function () {
223
258
  function handleClickOutside(event) {
224
259
  if (ref.current && !ref.current.contains(event.target)) {
@@ -239,7 +274,7 @@ var MorePopoverContent = exports.MorePopoverContent = (0, _mobxReact.observer)(f
239
274
  className: "share-action-nav__popover-inner-content share-action-nav__not-draggable",
240
275
  children: moreOptionsFilter.map(function (item, index) {
241
276
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
242
- className: "share-action-nav__media-list-group",
277
+ className: (0, _classnames["default"])('share-action-nav__media-list-group', item.classNames),
243
278
  onClick: function onClick(e) {
244
279
  e.stopPropagation();
245
280
  onItemClick(item);
@@ -8,6 +8,7 @@
8
8
  }
9
9
  .security-content .fcr-drop-menu-title {
10
10
  text-align: left;
11
+ font-size: 500;
11
12
  }
12
13
  .security-content .fcr-checkbox-inner {
13
14
  background-color: transparent;
@@ -21,4 +22,13 @@
21
22
  .security-content .fcr-checkbox-label {
22
23
  display: inline-block;
23
24
  flex: 1;
25
+ font-weight: 500;
26
+ }
27
+
28
+ .security-content .fcr-checkbox path {
29
+ fill: var(--fcr_ui_scene_mainicon1);
30
+ }
31
+
32
+ .fcr-drop-menu-option-primary:hover path {
33
+ fill: var(--fcr_ui_scene_ramp_brand6);
24
34
  }
@@ -24,6 +24,8 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
24
24
  isLockRoomEnabled = _useContext.isLockRoomEnabled,
25
25
  allowShareScreen = _useContext.allowShareScreen,
26
26
  updateAllowShareScreen = _useContext.updateAllowShareScreen,
27
+ allowBoardWrite = _useContext.allowBoardWrite,
28
+ updateBoardWriteEnabled = _useContext.updateBoardWriteEnabled,
27
29
  allowChat = _useContext.allowChat,
28
30
  updateAllowChat = _useContext.updateAllowChat,
29
31
  allowUnmuteSelfAudio = _useContext.allowUnmuteSelfAudio,
@@ -35,7 +37,11 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
35
37
  hasEnableStartAudioPermission = _useContext.hasEnableStartAudioPermission,
36
38
  hasEnableChangeNamePermission = _useContext.hasEnableChangeNamePermission,
37
39
  hasEnableStartVideoPermission = _useContext.hasEnableStartVideoPermission,
38
- hasLockRoomPermission = _useContext.hasLockRoomPermission;
40
+ hasLockRoomPermission = _useContext.hasLockRoomPermission,
41
+ hasAllowWriteBoardPermission = _useContext.hasAllowWriteBoardPermission,
42
+ hasWaitingRoomPermission = _useContext.hasWaitingRoomPermission,
43
+ updateWaitingRoomEnabled = _useContext.updateWaitingRoomEnabled,
44
+ isWaitingRoomEnabled = _useContext.isWaitingRoomEnabled;
39
45
  var transI18n = (0, _i18n.useI18n)();
40
46
  var allActions = [{
41
47
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
@@ -51,14 +57,15 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
51
57
  }
52
58
  }, {
53
59
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
54
- checked: false,
60
+ checked: isWaitingRoomEnabled,
55
61
  label: transI18n('fmt_security_options_activatewaitingroom'),
56
62
  styleType: "white"
57
63
  }),
58
64
  key: 'enable_waiting_room',
59
- type: 'disabled',
60
- hasPermission: true,
61
- onButtonClick: function onButtonClick() {},
65
+ hasPermission: hasWaitingRoomPermission,
66
+ onButtonClick: function onButtonClick() {
67
+ return updateWaitingRoomEnabled(!isWaitingRoomEnabled);
68
+ },
62
69
  classNames: 'room-control-drop-with-under-line'
63
70
  }, {
64
71
  title: transI18n('fmt_screenshare_options_allow'),
@@ -68,7 +75,7 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
68
75
  }, {
69
76
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
70
77
  checked: allowShareScreen,
71
- label: transI18n('fmt_screenshare_controlbar_security_list_participant_screenshare'),
78
+ label: transI18n('fmt_screenshare_screen_and_board'),
72
79
  styleType: "white"
73
80
  }),
74
81
  key: 'share_screen',
@@ -77,6 +84,16 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
77
84
  onButtonClick: function onButtonClick() {
78
85
  updateAllowShareScreen(!allowShareScreen);
79
86
  }
87
+ }, {
88
+ title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
89
+ checked: allowBoardWrite,
90
+ label: transI18n('fmt_screenshare_options_editable'),
91
+ styleType: "white"
92
+ }),
93
+ key: 'enable_whiteboard',
94
+ type: 'primary',
95
+ hasPermission: hasAllowWriteBoardPermission,
96
+ onButtonClick: updateBoardWriteEnabled
80
97
  }, {
81
98
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
82
99
  checked: allowChat,
@@ -124,18 +141,23 @@ var SecurityContent = exports.SecurityContent = (0, _mobxReact.observer)(functio
124
141
  updateAllowUnmuteSelfVideo(!allowUnmuteSelfVideo);
125
142
  },
126
143
  classNames: 'room-control-drop-with-under-line'
127
- }, {
128
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.FcrCheckbox, {
129
- checked: false,
130
- label: transI18n('fmt_security_options_removemultiple'),
131
- styleType: "white"
132
- }),
133
- key: 'remove_fcr-participants',
134
- type: 'danger',
135
- hasPermission: true,
136
- onButtonClick: function onButtonClick() {},
137
- classNames: 'room-control-drop-disable'
138
- }];
144
+ }
145
+ // 功能没实现,暂时注释
146
+ // {
147
+ // title: (
148
+ // <FcrCheckbox
149
+ // checked={false}
150
+ // label={transI18n('fmt_security_options_removemultiple')}
151
+ // styleType="white"
152
+ // />
153
+ // ),
154
+ // key: 'remove_fcr-participants',
155
+ // type: 'danger',
156
+ // hasPermission: true,
157
+ // onButtonClick: () => {},
158
+ // classNames: 'room-control-drop-disable',
159
+ // },
160
+ ];
139
161
  var securityHasPermissionActions = allActions.filter(function (item) {
140
162
  return item.hasPermission;
141
163
  });
@@ -32,6 +32,7 @@ var _type = require("agora-edu-core/lib/type");
32
32
  var _toast = require("agora-ui-foundation/lib/components/toast");
33
33
  var _platform = require("../../utilities/platform");
34
34
  var _type2 = require("../../modules/action-bar/type");
35
+ var _meetingDetailsPortal = _interopRequireDefault(require("./meeting-details/meeting-details-portal"));
35
36
  var _jsxRuntime = require("react/jsx-runtime");
36
37
  var ControlBarView = exports.ControlBarView = (0, _mobxReact.observer)(function () {
37
38
  var _screenBounds$availTo;
@@ -71,7 +72,9 @@ var ControlBarView = exports.ControlBarView = (0, _mobxReact.observer)(function
71
72
  screenBounds = _useContext.screenBounds,
72
73
  connectType = _useContext.connectType,
73
74
  phoneMicEnabled = _useContext.phoneMicEnabled,
74
- hasSecurityPermission = _useContext.hasSecurityPermission;
75
+ hasSecurityPermission = _useContext.hasSecurityPermission,
76
+ setShowMeetingDetailPortal = _useContext.setShowMeetingDetailPortal,
77
+ fetchLeavingRoomPropsAfterInit = _useContext.fetchLeavingRoomPropsAfterInit;
75
78
  // 控制栏本身的高度
76
79
  var NAV_HEIGHT = 84;
77
80
  // 鼠标移开后自动隐藏的时间
@@ -184,6 +187,7 @@ var ControlBarView = exports.ControlBarView = (0, _mobxReact.observer)(function
184
187
  (0, _react.useEffect)(function () {
185
188
  function handleBlur(event) {
186
189
  setMoreVisible(false);
190
+ setShowMeetingDetailPortal(false);
187
191
  setShowSecurityPopover(false);
188
192
  }
189
193
  window.addEventListener('blur', handleBlur);
@@ -193,6 +197,8 @@ var ControlBarView = exports.ControlBarView = (0, _mobxReact.observer)(function
193
197
  }, []);
194
198
  (0, _react.useEffect)(function () {
195
199
  window.runtime.browserWindow.setAlwaysOnTop(false);
200
+ /** control-bar初始化后补偿发起一次store数据同步 */
201
+ fetchLeavingRoomPropsAfterInit();
196
202
  setTimeout(function () {
197
203
  window.runtime.browserWindow.setAlwaysOnTop(true, 'screen-saver');
198
204
  }, 500);
@@ -315,7 +321,7 @@ var ControlBarView = exports.ControlBarView = (0, _mobxReact.observer)(function
315
321
  onShareStateNavTransferPosition: handlerShareNavTransferPosition,
316
322
  currentPosition: navCurrentPosition,
317
323
  onStopShare: handlerStopShare
318
- })]
324
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_meetingDetailsPortal["default"], {})]
319
325
  })
320
326
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
321
327
  });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ type LoginConfirmDialogProps = {
3
+ title?: string;
4
+ desc: string;
5
+ id: string;
6
+ btnTxt: string;
7
+ isShowCoutDown?: boolean;
8
+ onConfirm?: () => void;
9
+ showImg?: boolean;
10
+ };
11
+ export declare const LoginConfirmDialog: React.FC<LoginConfirmDialogProps>;
12
+ export {};
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.iterator.js");
4
+ require("core-js/modules/es.object.define-property.js");
5
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
6
+ require("core-js/modules/es.object.to-string.js");
7
+ require("core-js/modules/es.string.iterator.js");
8
+ require("core-js/modules/es.weak-map.js");
9
+ require("core-js/modules/esnext.weak-map.delete-all.js");
10
+ require("core-js/modules/esnext.weak-map.emplace.js");
11
+ require("core-js/modules/web.dom-collections.iterator.js");
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+ var _typeof = require("@babel/runtime/helpers/typeof");
14
+ Object.defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports.LoginConfirmDialog = void 0;
18
+ require("core-js/modules/web.timers.js");
19
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
20
+ var _react = _interopRequireWildcard(require("react"));
21
+ var _i18n = require("agora-ui-foundation/lib/i18n");
22
+ var _button = require("agora-ui-foundation/lib/components/button");
23
+ var _dialog = require("agora-ui-foundation/lib/components/dialog");
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
26
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
27
+ var LoginConfirmDialog = exports.LoginConfirmDialog = function LoginConfirmDialog(_ref) {
28
+ var title = _ref.title,
29
+ desc = _ref.desc,
30
+ id = _ref.id,
31
+ btnTxt = _ref.btnTxt,
32
+ isShowCoutDown = _ref.isShowCoutDown,
33
+ onConfirm = _ref.onConfirm,
34
+ _ref$showImg = _ref.showImg,
35
+ showImg = _ref$showImg === void 0 ? true : _ref$showImg;
36
+ var t = (0, _i18n.useI18n)();
37
+ var _useState = (0, _react.useState)(6),
38
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
39
+ countDown = _useState2[0],
40
+ setCountDown = _useState2[1];
41
+ (0, _react.useEffect)(function () {
42
+ var timer;
43
+ if (isShowCoutDown) {
44
+ timer = setInterval(function () {
45
+ if (countDown === 0) {
46
+ clearInterval(timer);
47
+ onConfirm && onConfirm();
48
+ _dialog.FcrDialogApi.close(id);
49
+ }
50
+ setCountDown(countDown - 1);
51
+ }, 1000);
52
+ }
53
+ return function () {
54
+ clearInterval(timer);
55
+ };
56
+ }, [countDown, isShowCoutDown]);
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
58
+ className: "login-confirm-dialog-content",
59
+ children: [showImg && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
60
+ className: "login-confirm-dialog-img"
61
+ }), title && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
62
+ className: "login-confirm-dialog-title",
63
+ children: title
64
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
65
+ className: "login-confirm-dialog-desc",
66
+ children: desc
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
68
+ className: "login-confirm-dialog-btn",
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_button.FcrButton, {
70
+ size: "S",
71
+ shape: "rounded",
72
+ onClick: function onClick() {
73
+ onConfirm && onConfirm();
74
+ _dialog.FcrDialogApi.close(id);
75
+ },
76
+ children: [btnTxt, isShowCoutDown && "(".concat(countDown, "s)")]
77
+ })
78
+ })]
79
+ });
80
+ };
@@ -69,13 +69,13 @@ var midActionOrderMap = exports.midActionOrderMap = [/*#__PURE__*/(0, _jsxRuntim
69
69
  // <Board id="Whiteboard" key="Whiteboard" order={6} />,
70
70
  // <BreakoutRoom id="BreakoutRoom" key="BreakoutRoom" order={7} />,
71
71
  // <Respond id="Respond" key="Respond" order={8} />,
72
- (0, _jsxRuntime.jsx)(_settings.Settings, {
73
- id: "Settings",
74
- order: 9
75
- }, "Settings"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_liveStreaming.LiveStreaming, {
72
+ (0, _jsxRuntime.jsx)(_liveStreaming.LiveStreaming, {
76
73
  id: "LiveStreaming",
74
+ order: 9
75
+ }, "LiveStreaming"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_settings.Settings, {
76
+ id: "Settings",
77
77
  order: 10
78
- }, "LiveStreaming"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_more.More, {
78
+ }, "Settings"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_more.More, {
79
79
  id: "More",
80
80
  order: 11
81
81
  }, "More")];
@@ -28,10 +28,10 @@ var Chat = exports.Chat = (0, _mobxReact.observer)(function (_ref) {
28
28
  var tooltip = transI18n('fmt_screenshare_controlbar_button_more_chat');
29
29
  var _useContext = (0, _react.useContext)(_context.ActionBarContext),
30
30
  toggleChat = _useContext.toggleChat,
31
- newMessageCount = _useContext.newMessageCount,
32
31
  latestMessage = _useContext.latestMessage,
33
32
  newMessageTooltipVisible = _useContext.newMessageTooltipVisible,
34
- hideNewMessageTooltip = _useContext.hideNewMessageTooltip;
33
+ hideNewMessageTooltip = _useContext.hideNewMessageTooltip,
34
+ allNewMessage = _useContext.allNewMessage;
35
35
  var _useState = (0, _react.useState)(false),
36
36
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
37
  tooltipVisible = _useState2[0],
@@ -50,11 +50,11 @@ var Chat = exports.Chat = (0, _mobxReact.observer)(function (_ref) {
50
50
  }, [newMessageTooltipVisible]);
51
51
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
52
52
  className: "fcr-action-bar-chat-wrapper",
53
- children: [newMessageCount > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
53
+ children: [allNewMessage > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
54
54
  className: "fcr-action-bar-chat-unread-count",
55
- children: newMessageCount > 99 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
55
+ children: allNewMessage > 99 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
56
56
  src: _fcr_chat_reddot["default"]
57
- }) : newMessageCount
57
+ }) : allNewMessage
58
58
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.FcrToolTip, {
59
59
  overlayClassName: "fcr-chatroom-tooltip",
60
60
  overlayInnerStyle: {
@@ -1,7 +1,7 @@
1
1
  .fcr-action-bar-device {
2
2
  border-radius: var(--fcr_cornerradius_s);
3
3
  position: relative;
4
- width: 71px;
4
+ min-width: 71px;
5
5
  cursor: pointer;
6
6
  }
7
7
  .fcr-action-bar-device:hover {
@@ -25,7 +25,7 @@
25
25
  stop-color: var(--fcr_web_ui_scene_mainicon1);
26
26
  }
27
27
  .fcr-action-bar-device-text {
28
- color: var(--fcr_ui_scene_icontext1);
28
+ color: var(--fcr_ui_scene_icontext2);
29
29
  line-height: 12px;
30
30
  font-size: 12px;
31
31
  text-align: center;
@@ -155,3 +155,8 @@
155
155
  white-space: nowrap;
156
156
  text-overflow: ellipsis;
157
157
  }
158
+
159
+ .fcr-device-popover-content-more-item--danger:hover {
160
+ color: var(--fcr_ui_scene_ramp_red6);
161
+ background: var(--fcr_ui_scene_ramp_red1);
162
+ }
@@ -52,11 +52,9 @@ var MicrophoneDevice = exports.MicrophoneDevice = (0, _mobxReact.observer)(funct
52
52
  microphoneEnabled = _useContext2.microphoneEnabled,
53
53
  enableMicrophone = _useContext2.enableMicrophone,
54
54
  toggleLayoutBarLock = _useContext2.toggleLayoutBarLock,
55
- toggleConnection = _useContext2.toggleConnection,
56
55
  openConnection = _useContext2.openConnection,
57
56
  connectType = _useContext2.connectType,
58
57
  microphoneList = _useContext2.microphoneList,
59
- microphoneVolumeLevel = _useContext2.microphoneVolumeLevel,
60
58
  phoneMicEnabled = _useContext2.phoneMicEnabled;
61
59
  var _useDeviceTooltipVisi = useDeviceTooltipVisible(toggleLayoutBarLock),
62
60
  tooltipVisible = _useDeviceTooltipVisi.tooltipVisible,
@@ -393,7 +391,8 @@ var AudioDeviceListPopoverContent = (0, _mobxReact.observer)(function (_ref3) {
393
391
  speakerList = _useContext5.speakerList,
394
392
  openConnection = _useContext5.openConnection,
395
393
  connectType = _useContext5.connectType,
396
- closeConnection = _useContext5.closeConnection;
394
+ closeConnection = _useContext5.closeConnection,
395
+ closeSpeaker = _useContext5.closeSpeaker;
397
396
  var microphoneOptions = microphoneList.map(function (device) {
398
397
  return {
399
398
  text: device.deviceName,
@@ -480,10 +479,11 @@ var AudioDeviceListPopoverContent = (0, _mobxReact.observer)(function (_ref3) {
480
479
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
481
480
  className: "fcr-device-popover-content-more",
482
481
  children: [connectType === _type2.ConnectType.COMPUTER && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
483
- className: "fcr-device-popover-content-more-item",
482
+ className: "fcr-device-popover-content-more-item fcr-device-popover-content-more-item--danger",
484
483
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
485
484
  onClick: function onClick() {
486
485
  setMicrophoneId('');
486
+ closeSpeaker();
487
487
  closeConnection();
488
488
  },
489
489
  children: transI18n('fmt_device_label_audio_list_leaveComputerAudio')