fcr-ui-scene 3.7.6 → 3.7.7-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/creator/index.js +12 -6
- package/lib/creator/provider-initializer.browser.js +0 -3
- package/lib/creator/provider-initializer.electron.js +0 -4
- package/lib/electron/bootstrap-sdk.js +70 -20
- package/lib/electron/struct.d.ts +7 -1
- package/lib/electron/struct.js +8 -1
- package/lib/electron/until.d.ts +3 -1
- package/lib/electron/until.js +7 -2
- package/lib/modules/action-bar/components/item/index.js +1 -0
- package/lib/modules/action-bar/components/screen-share/submenu.js +1 -1
- package/lib/modules/chat/index.css +5 -1
- package/lib/modules/chat/view.js +6 -1
- package/lib/modules/components/control-bar/components/switch-theme/index.css +2 -0
- package/lib/modules/components/control-bar/components/switch-theme/index.js +5 -7
- package/lib/modules/components/control-bar/index.js +26 -7
- package/lib/modules/components/toolbar/components/capture-tool/index.d.ts +0 -1
- package/lib/modules/components/toolbar/components/capture-tool/index.js +1 -2
- package/lib/modules/components/toolbar/components/vertical-frame/index.js +2 -2
- package/lib/modules/components/toolbar/hooks/use-resize-visible.js +43 -42
- package/lib/modules/components/toolbar/index.js +6 -24
- package/lib/modules/control-bar/components/cloud-recording-buttons.d.ts +3 -0
- package/lib/modules/control-bar/components/cloud-recording-buttons.js +65 -3
- package/lib/modules/control-bar/store.js +11 -6
- package/lib/modules/dialog/components/dialog-container/component/body.d.ts +1 -0
- package/lib/modules/dialog/components/dialog-container/component/body.js +3 -2
- package/lib/modules/dialog/components/dialog-container/index.css +1 -1
- package/lib/modules/dialog/components/dialog-container/index.d.ts +1 -0
- package/lib/modules/dialog/components/dialog-container/index.js +4 -1
- package/lib/modules/dialog/components/normal-window/index.d.ts +1 -0
- package/lib/modules/dialog/components/normal-window/index.js +3 -1
- package/lib/modules/dialog/dialogs/chat/index.js +2 -1
- package/lib/modules/dialog/dialogs/control-bar-leave-meeting/index.js +0 -1
- package/lib/modules/dialog/dialogs/end-meeting/index.d.ts +1 -0
- package/lib/modules/dialog/dialogs/end-meeting/index.js +2 -1
- package/lib/modules/dialog/dialogs/participant/index.js +2 -1
- package/lib/modules/layout/store.electron.js +1 -1
- package/lib/modules/secondary-window/store.d.ts +0 -1
- package/lib/modules/secondary-window/store.js +9 -22
- package/lib/modules/secondary-window/view.js +6 -5
- package/lib/modules/setting/index.css +0 -1
- package/lib/modules/setting/store.base.js +6 -0
- package/lib/modules/setting/view.js +0 -3
- package/lib/modules/share-screen/store.electron.js +1 -1
- package/lib/modules/state-bar/layout-config.js +6 -0
- package/lib/modules/state-bar/main-scene/store.base.d.ts +2 -0
- package/lib/modules/state-bar/main-scene/store.base.js +6 -0
- package/lib/modules/video-window/index.css +6 -0
- package/lib/modules/video-window/popover-watcher.d.ts +4 -1
- package/lib/modules/video-window/popover-watcher.js +15 -2
- package/lib/modules/video-window/store.d.ts +18 -1
- package/lib/modules/video-window/store.js +55 -7
- package/lib/modules/whiteboard/store.js +20 -2
- package/lib/object-manager.d.ts +0 -1
- package/lib/object-manager.js +0 -1
- package/lib/providers/board-share/bar-control/base.d.ts +1 -1
- package/lib/providers/board-share/bar-control/base.js +37 -28
- package/lib/providers/board-share/bar-control/electron.d.ts +1 -1
- package/lib/providers/board-share/bar-control/electron.js +19 -16
- package/lib/providers/board-share/provider.browser.d.ts +3 -0
- package/lib/providers/board-share/provider.browser.js +21 -3
- package/lib/providers/device-provider.js +5 -1
- package/lib/providers/dialog/provider.electron.js +6 -0
- package/lib/providers/mouse-detect/provider.d.ts +5 -0
- package/lib/providers/mouse-detect/provider.js +74 -49
- package/lib/providers/multi-display-provider.d.ts +3 -5
- package/lib/providers/multi-display-provider.js +0 -9
- package/lib/providers/room-provider/room-provider.d.ts +3 -14
- package/lib/providers/room-provider/room-provider.js +5 -26
- package/lib/providers/screen-share/stream-state-sync.js +19 -12
- package/lib/providers/window/main-window.d.ts +0 -5
- package/lib/providers/window/main-window.js +0 -44
- package/lib/providers/window/renderer-window.d.ts +1 -0
- package/lib/providers/window/renderer-window.js +9 -1
- package/lib/scenes/main-scene.js +0 -2
- package/lib/ui-scene.js +4 -2
- package/package.json +5 -5
- package/public/index.html +22 -1
- package/lib/providers/board-share/bar-control.d.ts +0 -51
- package/lib/providers/board-share/bar-control.js +0 -390
package/lib/creator/index.js
CHANGED
|
@@ -113,7 +113,7 @@ var FcrUISceneCreator = exports.FcrUISceneCreator = /*#__PURE__*/function () {
|
|
|
113
113
|
(0, _defineProperty2["default"])(this, "_registeredWidgetConfigs", new Map([]));
|
|
114
114
|
(0, _defineProperty2["default"])(this, "_released", false);
|
|
115
115
|
(0, _defineProperty2["default"])(this, "_scene", null);
|
|
116
|
-
(0, _defineProperty2["default"])(this, "_microphoneKeepRecording",
|
|
116
|
+
(0, _defineProperty2["default"])(this, "_microphoneKeepRecording", true);
|
|
117
117
|
(0, _defineProperty2["default"])(this, "_sceneObserver", null);
|
|
118
118
|
(0, _defineProperty2["default"])(this, "_settingModule", null);
|
|
119
119
|
(0, _defineProperty2["default"])(this, "_eventToastModule", null);
|
|
@@ -183,11 +183,17 @@ var FcrUISceneCreator = exports.FcrUISceneCreator = /*#__PURE__*/function () {
|
|
|
183
183
|
type: _type.FcrUIGlobalNodeEventType.LAUNCH_SUCCESS,
|
|
184
184
|
data: args
|
|
185
185
|
});
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
186
|
+
|
|
187
|
+
// if (isElectron()) {
|
|
188
|
+
// const windowProvider = this._objectManager.getObject<FcrUIWindowProvider>(
|
|
189
|
+
// FcrUIObjectKeys.P_WINDOW_PROVIDER,
|
|
190
|
+
// );
|
|
191
|
+
|
|
192
|
+
// const mainWindow = windowProvider.getCurrentWindow();
|
|
193
|
+
|
|
194
|
+
// focusWindow(mainWindow);
|
|
195
|
+
// }
|
|
196
|
+
|
|
191
197
|
onSuccess.apply(void 0, args);
|
|
192
198
|
},
|
|
193
199
|
onLaunchFailure: function onLaunchFailure() {
|
|
@@ -176,8 +176,6 @@ var FcrUIBrowserProviderInitializer = exports.FcrUIBrowserProviderInitializer =
|
|
|
176
176
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_INTERPRETER_PROVIDER, interpreterProvider);
|
|
177
177
|
var currentRoomControlProvider = new _roomProvider.FcrUICurrentRoomControlProviderImpl(mainRoomControl);
|
|
178
178
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_CURRENT_ROOM_CONTROL_PROVIDER, currentRoomControlProvider);
|
|
179
|
-
var connectionProvider = new _roomProvider.FcrUIConnectionProviderImpl(engine);
|
|
180
|
-
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_CONNECTION_PROVIDER, connectionProvider);
|
|
181
179
|
var sessionProvider = new _sessionProvider.FcrUISessionProviderImpl(engine);
|
|
182
180
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_SESSION_PROVIDER, sessionProvider);
|
|
183
181
|
var sharedDevicePrivilegeDataSource = new _devicePrivilegeData.FcrUISharedDevicePrivilegeDataSourceImpl();
|
|
@@ -236,7 +234,6 @@ var FcrUIBrowserProviderInitializer = exports.FcrUIBrowserProviderInitializer =
|
|
|
236
234
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_PRIVILEGE_PROVIDER);
|
|
237
235
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_INTERPRETER_PROVIDER);
|
|
238
236
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_CURRENT_ROOM_CONTROL_PROVIDER);
|
|
239
|
-
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_CONNECTION_PROVIDER);
|
|
240
237
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_SESSION_PROVIDER);
|
|
241
238
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_DEVICE_STREAM_PROVIDER);
|
|
242
239
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_WAITING_ROOM_CONTROL_PROVIDER);
|
|
@@ -203,8 +203,6 @@ var FcrUIElectronProviderInitializer = exports.FcrUIElectronProviderInitializer
|
|
|
203
203
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_INTERPRETER_PROVIDER, interpreterProvider);
|
|
204
204
|
var currentRoomControlProvider = new _roomProvider.FcrUICurrentRoomControlProviderImpl(mainRoomControl);
|
|
205
205
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_CURRENT_ROOM_CONTROL_PROVIDER, currentRoomControlProvider);
|
|
206
|
-
var connectionProvider = new _roomProvider.FcrUIConnectionProviderImpl(engine);
|
|
207
|
-
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_CONNECTION_PROVIDER, connectionProvider);
|
|
208
206
|
var sessionProvider = new _sessionProvider.FcrUISessionProviderImpl(engine);
|
|
209
207
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_SESSION_PROVIDER, sessionProvider);
|
|
210
208
|
var sharedDevicePrivilegeDataSource = new _devicePrivilegeData.FcrUISharedDevicePrivilegeDataSourceImpl();
|
|
@@ -256,7 +254,6 @@ var FcrUIElectronProviderInitializer = exports.FcrUIElectronProviderInitializer
|
|
|
256
254
|
windowProvider: windowProvider,
|
|
257
255
|
sharingControl: sharingControl,
|
|
258
256
|
whiteboardProvider: whiteboardProvider,
|
|
259
|
-
fcrUIMainWindowRenderer: fcrUIMainWindowRenderer,
|
|
260
257
|
screenShareProvider: screenShareProvider
|
|
261
258
|
});
|
|
262
259
|
objectManager.setObject(_objectManager.FcrUIObjectKeys.P_MULTI_DISPLAY_PROVIDER, multiDisplayProvider);
|
|
@@ -277,7 +274,6 @@ var FcrUIElectronProviderInitializer = exports.FcrUIElectronProviderInitializer
|
|
|
277
274
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_PRIVILEGE_PROVIDER);
|
|
278
275
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_INTERPRETER_PROVIDER);
|
|
279
276
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_CURRENT_ROOM_CONTROL_PROVIDER);
|
|
280
|
-
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_CONNECTION_PROVIDER);
|
|
281
277
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_SESSION_PROVIDER);
|
|
282
278
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_DEVICE_STREAM_PROVIDER);
|
|
283
279
|
objectManager.deleteObject(_objectManager.FcrUIObjectKeys.P_WAITING_ROOM_CONTROL_PROVIDER);
|
|
@@ -49,6 +49,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
49
49
|
var mainWindow;
|
|
50
50
|
var mainWindowReady = false;
|
|
51
51
|
var userMinimize = false;
|
|
52
|
+
var mainWindowDisplayState = _struct.DisplayState.HIDE;
|
|
52
53
|
(0, _main.initialize)();
|
|
53
54
|
var port = (_process$argv$find = process.argv.find(function (arg) {
|
|
54
55
|
return arg.startsWith('--port=');
|
|
@@ -103,15 +104,17 @@ ipcClient.addObserver({
|
|
|
103
104
|
mainWindow.moveTop();
|
|
104
105
|
var platform = _os["default"].platform();
|
|
105
106
|
if (platform === 'win32') {
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
(0, _logger.getLogger)().info('windows_index setAlwaysOnTop in bootstrap-sdk');
|
|
108
|
+
mainWindow.setAlwaysOnTop(true, 'pop-up-menu');
|
|
108
109
|
setTimeout(function () {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
(0, _logger.getLogger)().info("windows_index set main window in bootstrap-sdk,current display state: ".concat(mainWindowDisplayState));
|
|
111
|
+
if (mainWindowDisplayState === _struct.DisplayState.SHOW) {
|
|
112
|
+
mainWindow.moveTop();
|
|
113
|
+
mainWindow.show();
|
|
114
|
+
mainWindow.focus();
|
|
115
|
+
}
|
|
114
116
|
}, 300);
|
|
117
|
+
mainWindow.setAlwaysOnTop(false, 'pop-up-menu');
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
120
|
break;
|
|
@@ -272,10 +275,12 @@ _electron.app.addListener('ready', function () {
|
|
|
272
275
|
});
|
|
273
276
|
mainWindow.addListener('minimize', function () {
|
|
274
277
|
(0, _logger.getLogger)().info('windows_release main window minimized');
|
|
278
|
+
mainWindowDisplayState = _struct.DisplayState.MINIMIZE;
|
|
275
279
|
userMinimize = true;
|
|
276
280
|
});
|
|
277
281
|
mainWindow.addListener('show', function () {
|
|
278
282
|
(0, _logger.getLogger)().info('windows_release main window show');
|
|
283
|
+
mainWindowDisplayState = _struct.DisplayState.SHOW;
|
|
279
284
|
mainWindow.focus();
|
|
280
285
|
userMinimize = false;
|
|
281
286
|
});
|
|
@@ -284,22 +289,31 @@ _electron.app.addListener('ready', function () {
|
|
|
284
289
|
});
|
|
285
290
|
mainWindow.addListener('hide', function () {
|
|
286
291
|
(0, _logger.getLogger)().info("windows_release main window hidden, current launch state: ".concat(_struct.FcrUISceneLaunchState[_eventManager.eventManager.launchState]));
|
|
292
|
+
mainWindowDisplayState = _struct.DisplayState.HIDE;
|
|
287
293
|
if (userMinimize) {
|
|
288
294
|
(0, _logger.getLogger)().info('windows_release main window hidden, but user minimize, ignore this event');
|
|
289
295
|
return;
|
|
290
296
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
297
|
+
|
|
298
|
+
// if (
|
|
299
|
+
// eventManager.launchState === LaunchState.END &&
|
|
300
|
+
// eventManager.endReason === FcrUISceneLaunchEndReason.LAUNCH_SUCCESS
|
|
301
|
+
// ) {
|
|
302
|
+
// getLogger().info(
|
|
303
|
+
// 'windows_release main window hidden, but launch state is END, send error Event',
|
|
304
|
+
// );
|
|
305
|
+
|
|
306
|
+
// ipcClient.sendMessage({
|
|
307
|
+
// cmd: IPCMessageCMD.Error,
|
|
308
|
+
// data: {
|
|
309
|
+
// roomId: eventManager.roomId,
|
|
310
|
+
// errorCode: mainWindowHiddenOnLaunchSuccessErrorCode,
|
|
311
|
+
// message: 'main window hidden on launch success',
|
|
312
|
+
// },
|
|
313
|
+
// });
|
|
314
|
+
// return;
|
|
315
|
+
// }
|
|
316
|
+
|
|
303
317
|
if (_eventManager.eventManager.launchState !== _struct.FcrUISceneLaunchState.PROCESSING) {
|
|
304
318
|
return;
|
|
305
319
|
}
|
|
@@ -319,6 +333,7 @@ _electron.app.addListener('ready', function () {
|
|
|
319
333
|
_electron.app.exit(_exitCodes.AppExitCode.NORMAL_EXIT);
|
|
320
334
|
});
|
|
321
335
|
mainWindow.addListener('close', function (e) {
|
|
336
|
+
mainWindowDisplayState = _struct.DisplayState.HIDE;
|
|
322
337
|
var closeListenerCount = mainWindow.listenerCount('close');
|
|
323
338
|
(0, _logger.getLogger)().info("windows_release main window close listener count: ".concat(closeListenerCount, ", isInMeeting: ").concat(_meetingState.isInMeeting));
|
|
324
339
|
if (_meetingState.isInMeeting === 0) {
|
|
@@ -344,6 +359,14 @@ _electron.app.addListener('ready', function () {
|
|
|
344
359
|
}, 300);
|
|
345
360
|
}
|
|
346
361
|
});
|
|
362
|
+
mainWindow.addListener('unresponsive', function () {
|
|
363
|
+
(0, _logger.getLogger)().warn("main window unresponsive in bootstrap-sdk");
|
|
364
|
+
handleUnresponsive();
|
|
365
|
+
});
|
|
366
|
+
mainWindow.addListener('responsive', function () {
|
|
367
|
+
(0, _logger.getLogger)().warn("main window responsive in bootstrap-sdk");
|
|
368
|
+
handleResponsive();
|
|
369
|
+
});
|
|
347
370
|
if (_env.isDev) {
|
|
348
371
|
mainWindow.webContents.openDevTools({
|
|
349
372
|
mode: 'detach'
|
|
@@ -370,4 +393,31 @@ _electron.app.addListener('quit', function (event, exitCode) {
|
|
|
370
393
|
(0, _logger.getLogger)().info("app quit event triggered with exit code: ".concat(exitCode));
|
|
371
394
|
// 清理 EventManager 资源
|
|
372
395
|
_eventManager.eventManager.dispose();
|
|
373
|
-
});
|
|
396
|
+
});
|
|
397
|
+
var HANG_DETECTION_TIMEOUT = 60 * 1000; // 1分钟(毫s秒)
|
|
398
|
+
var hangDetectionTimer = null;
|
|
399
|
+
function handleUnresponsive() {
|
|
400
|
+
(0, _logger.getLogger)().warn('Window became unresponsive, starting hang detection timer');
|
|
401
|
+
clearHangDetectionTimer();
|
|
402
|
+
hangDetectionTimer = setTimeout(function () {
|
|
403
|
+
(0, _logger.getLogger)().error('Window has been unresponsive for 1 minute, forcing application exit');
|
|
404
|
+
_eventManager.eventManager.onExitedMeeting(_eventManager.eventManager.roomId, _struct.FcrUISceneLaunchEndReason.HANG_DETECTION);
|
|
405
|
+
ipcClient.sendMessage({
|
|
406
|
+
cmd: _type.IPCMessageCMD.ExitedMeeting,
|
|
407
|
+
data: {
|
|
408
|
+
roomId: _eventManager.eventManager.roomId,
|
|
409
|
+
reason: _until.hangDetectionErrorCode
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
}, HANG_DETECTION_TIMEOUT);
|
|
413
|
+
}
|
|
414
|
+
function handleResponsive() {
|
|
415
|
+
(0, _logger.getLogger)().info('Window became responsive again, clearing hang detection timer');
|
|
416
|
+
clearHangDetectionTimer();
|
|
417
|
+
}
|
|
418
|
+
function clearHangDetectionTimer() {
|
|
419
|
+
if (hangDetectionTimer) {
|
|
420
|
+
clearTimeout(hangDetectionTimer);
|
|
421
|
+
hangDetectionTimer = null;
|
|
422
|
+
}
|
|
423
|
+
}
|
package/lib/electron/struct.d.ts
CHANGED
|
@@ -8,5 +8,11 @@ export declare enum FcrUISceneLaunchEndReason {
|
|
|
8
8
|
LAUNCH_FAILURE = "launchFailure",
|
|
9
9
|
CLOSE_WINDOW = "closeWindow",
|
|
10
10
|
EXITED = "exited",
|
|
11
|
-
CRASHED = "crashed"
|
|
11
|
+
CRASHED = "crashed",
|
|
12
|
+
HANG_DETECTION = "hangDetection"
|
|
13
|
+
}
|
|
14
|
+
export declare enum DisplayState {
|
|
15
|
+
SHOW = "show",
|
|
16
|
+
HIDE = "hide",
|
|
17
|
+
MINIMIZE = "minimize"
|
|
12
18
|
}
|
package/lib/electron/struct.js
CHANGED
|
@@ -4,7 +4,7 @@ require("core-js/modules/es.object.define-property.js");
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.FcrUISceneLaunchState = exports.FcrUISceneLaunchEndReason = void 0;
|
|
7
|
+
exports.FcrUISceneLaunchState = exports.FcrUISceneLaunchEndReason = exports.DisplayState = void 0;
|
|
8
8
|
var FcrUISceneLaunchState = exports.FcrUISceneLaunchState = /*#__PURE__*/function (FcrUISceneLaunchState) {
|
|
9
9
|
FcrUISceneLaunchState[FcrUISceneLaunchState["DEFAULT"] = 0] = "DEFAULT";
|
|
10
10
|
FcrUISceneLaunchState[FcrUISceneLaunchState["PROCESSING"] = 1] = "PROCESSING";
|
|
@@ -17,5 +17,12 @@ var FcrUISceneLaunchEndReason = exports.FcrUISceneLaunchEndReason = /*#__PURE__*
|
|
|
17
17
|
FcrUISceneLaunchEndReason["CLOSE_WINDOW"] = "closeWindow";
|
|
18
18
|
FcrUISceneLaunchEndReason["EXITED"] = "exited";
|
|
19
19
|
FcrUISceneLaunchEndReason["CRASHED"] = "crashed";
|
|
20
|
+
FcrUISceneLaunchEndReason["HANG_DETECTION"] = "hangDetection";
|
|
20
21
|
return FcrUISceneLaunchEndReason;
|
|
22
|
+
}({});
|
|
23
|
+
var DisplayState = exports.DisplayState = /*#__PURE__*/function (DisplayState) {
|
|
24
|
+
DisplayState["SHOW"] = "show";
|
|
25
|
+
DisplayState["HIDE"] = "hide";
|
|
26
|
+
DisplayState["MINIMIZE"] = "minimize";
|
|
27
|
+
return DisplayState;
|
|
21
28
|
}({});
|
package/lib/electron/until.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ declare enum DetailErrorCode {
|
|
|
21
21
|
closeWindowBeforeLaunchSuccess = 83,
|
|
22
22
|
meetingLaunchProcessing = 84,
|
|
23
23
|
mainWindowHiddenAfterLaunchSuccess = 85,
|
|
24
|
-
crashed = 86
|
|
24
|
+
crashed = 86,
|
|
25
|
+
hangDetection = 87
|
|
25
26
|
}
|
|
26
27
|
export declare const generaErrorCode: (serviceCode: ServiceErrorCode, uiSceneCode: UISceneErrorCode, detailCode: DetailErrorCode) => number;
|
|
27
28
|
export declare const windowHideErrorCode: number;
|
|
@@ -29,4 +30,5 @@ export declare const closeWindowBeforeLaunchSuccessErrorCode: number;
|
|
|
29
30
|
export declare const meetingLaunchProcessingErrorCode: number;
|
|
30
31
|
export declare const mainWindowHiddenOnLaunchSuccessErrorCode: number;
|
|
31
32
|
export declare const crashedErrorCode: number;
|
|
33
|
+
export declare const hangDetectionErrorCode: number;
|
|
32
34
|
export {};
|
package/lib/electron/until.js
CHANGED
|
@@ -4,7 +4,7 @@ require("core-js/modules/es.object.define-property.js");
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.windowHideErrorCode = exports.meetingLaunchProcessingErrorCode = exports.mainWindowHiddenOnLaunchSuccessErrorCode = exports.generaErrorCode = exports.crashedErrorCode = exports.closeWindowBeforeLaunchSuccessErrorCode = void 0;
|
|
7
|
+
exports.windowHideErrorCode = exports.meetingLaunchProcessingErrorCode = exports.mainWindowHiddenOnLaunchSuccessErrorCode = exports.hangDetectionErrorCode = exports.generaErrorCode = exports.crashedErrorCode = exports.closeWindowBeforeLaunchSuccessErrorCode = void 0;
|
|
8
8
|
// 错误代码枚举定义
|
|
9
9
|
var ServiceErrorCode = /*#__PURE__*/function (ServiceErrorCode) {
|
|
10
10
|
ServiceErrorCode[ServiceErrorCode["FcrUIScene"] = 800] = "FcrUIScene";
|
|
@@ -44,8 +44,12 @@ var DetailErrorCode = /*#__PURE__*/function (DetailErrorCode) {
|
|
|
44
44
|
DetailErrorCode[DetailErrorCode["closeWindowBeforeLaunchSuccess"] = 83] = "closeWindowBeforeLaunchSuccess";
|
|
45
45
|
// 会议启动中
|
|
46
46
|
DetailErrorCode[DetailErrorCode["meetingLaunchProcessing"] = 84] = "meetingLaunchProcessing";
|
|
47
|
+
// 窗口在会议启动后隐藏
|
|
47
48
|
DetailErrorCode[DetailErrorCode["mainWindowHiddenAfterLaunchSuccess"] = 85] = "mainWindowHiddenAfterLaunchSuccess";
|
|
49
|
+
// 窗口崩溃
|
|
48
50
|
DetailErrorCode[DetailErrorCode["crashed"] = 86] = "crashed";
|
|
51
|
+
// 窗口无响应
|
|
52
|
+
DetailErrorCode[DetailErrorCode["hangDetection"] = 87] = "hangDetection";
|
|
49
53
|
return DetailErrorCode;
|
|
50
54
|
}(DetailErrorCode || {}); // 格式:ServiceErrorCode(3位) + UISceneErrorCode(3位) + DetailErrorCode(3位)
|
|
51
55
|
var generaErrorCode = exports.generaErrorCode = function generaErrorCode(serviceCode, uiSceneCode, detailCode) {
|
|
@@ -55,4 +59,5 @@ var windowHideErrorCode = exports.windowHideErrorCode = generaErrorCode(ServiceE
|
|
|
55
59
|
var closeWindowBeforeLaunchSuccessErrorCode = exports.closeWindowBeforeLaunchSuccessErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.closeWindowBeforeLaunchSuccess);
|
|
56
60
|
var meetingLaunchProcessingErrorCode = exports.meetingLaunchProcessingErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.meetingLaunchProcessing);
|
|
57
61
|
var mainWindowHiddenOnLaunchSuccessErrorCode = exports.mainWindowHiddenOnLaunchSuccessErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.mainWindowHiddenAfterLaunchSuccess);
|
|
58
|
-
var crashedErrorCode = exports.crashedErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.crashed);
|
|
62
|
+
var crashedErrorCode = exports.crashedErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.crashed);
|
|
63
|
+
var hangDetectionErrorCode = exports.hangDetectionErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.hangDetection);
|
|
@@ -108,6 +108,7 @@ var ActionBarItem = exports.ActionBarItem = function ActionBarItem(props) {
|
|
|
108
108
|
}), props.submenu && /*#__PURE__*/(0, _jsxRuntime.jsx)(_popover.FcrPopover, {
|
|
109
109
|
showArrow: false,
|
|
110
110
|
overlayClassName: "fcr-action-bar--popover",
|
|
111
|
+
visible: props.submenu.active,
|
|
111
112
|
onVisibleChange: props.submenu.onVisibleChange,
|
|
112
113
|
trigger: "click",
|
|
113
114
|
content: props.submenu.children,
|
|
@@ -165,8 +165,8 @@ var SubMenu = exports.SubMenu = (0, _mobxReact.observer)(function (_ref) {
|
|
|
165
165
|
key: 'enable_whiteboard',
|
|
166
166
|
classNames: 'fcr-drop-menu-option-primary-no-hover',
|
|
167
167
|
onButtonClick: function onButtonClick() {
|
|
168
|
-
// TODO: 主持人停用别人的共享后,应该把菜单关闭或者是更新菜单项
|
|
169
168
|
closeWhiteboard();
|
|
169
|
+
setMenuVisible(false);
|
|
170
170
|
}
|
|
171
171
|
}];
|
|
172
172
|
var shareScreenControlMenus = [{
|
package/lib/modules/chat/view.js
CHANGED
|
@@ -50,6 +50,8 @@ var _fcrCore = require("fcr-core");
|
|
|
50
50
|
var _types = require("./types");
|
|
51
51
|
var _chatTabs = _interopRequireDefault(require("./components/chat-tabs"));
|
|
52
52
|
var _browserApi = require("../../utilities/browser-api");
|
|
53
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
54
|
+
var _env = require("agora-foundation/lib/utilities/env");
|
|
53
55
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
54
56
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
55
57
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -195,7 +197,10 @@ var Chat = exports.Chat = (0, _mobxReact.observer)(function (_ref) {
|
|
|
195
197
|
});
|
|
196
198
|
};
|
|
197
199
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
198
|
-
className: "
|
|
200
|
+
className: (0, _classnames["default"])({
|
|
201
|
+
'fcr-chat-container-box-web': !(0, _env.isElectron)(),
|
|
202
|
+
'fcr-chat-container-box-electron': (0, _env.isElectron)()
|
|
203
|
+
}),
|
|
199
204
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_chatTabs["default"], {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
200
205
|
style: _objectSpread({}, styles),
|
|
201
206
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chatWrapper.ChatWrapper, {
|
|
@@ -38,13 +38,11 @@ var WhiteboardSwitchTheme = function WhiteboardSwitchTheme(props) {
|
|
|
38
38
|
width: '100%'
|
|
39
39
|
},
|
|
40
40
|
overlayOffset: 4,
|
|
41
|
-
showArrow: false
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// }}
|
|
47
|
-
,
|
|
41
|
+
showArrow: false,
|
|
42
|
+
getTooltipContainer: function getTooltipContainer() {
|
|
43
|
+
var target = document.getElementById('fcr-whiteboard-controlbar');
|
|
44
|
+
return target;
|
|
45
|
+
},
|
|
48
46
|
visible: whiteboardVisible,
|
|
49
47
|
content: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
50
48
|
className: "fcr-whiteboard-switch-theme",
|
|
@@ -90,6 +90,10 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
90
90
|
setContianHeight(height);
|
|
91
91
|
}, []);
|
|
92
92
|
var resetHeightDebounce = (0, _react.useCallback)((0, _debounce["default"])(resetHeight, 100), []);
|
|
93
|
+
var ratio = (0, _react.useMemo)(function () {
|
|
94
|
+
var ratio = contianHeight / initHeight;
|
|
95
|
+
return ratio;
|
|
96
|
+
}, [contianHeight, initHeight]);
|
|
93
97
|
(0, _react.useEffect)(function () {
|
|
94
98
|
window.addEventListener('resize', resetHeightDebounce);
|
|
95
99
|
return function () {
|
|
@@ -117,16 +121,18 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
117
121
|
setIsMaxmum(false);
|
|
118
122
|
setIsAdaptived(false);
|
|
119
123
|
setIsOriginal(false);
|
|
120
|
-
var
|
|
124
|
+
var max = 3;
|
|
125
|
+
var step = 0.5;
|
|
121
126
|
if (oprate === _type2.WhiteboardControlbarEvents.ZOOMIN) {
|
|
122
127
|
if (onZoomIn) {
|
|
123
128
|
var result = onZoomIn();
|
|
124
129
|
setIsMaxmum(!result);
|
|
125
130
|
return;
|
|
126
131
|
}
|
|
127
|
-
if (scaleValue <
|
|
132
|
+
if (scaleValue < max) {
|
|
128
133
|
setIsMaxmum(false);
|
|
129
|
-
|
|
134
|
+
var zoomIn = scaleValue + step;
|
|
135
|
+
setScaleValue(zoomIn);
|
|
130
136
|
} else {
|
|
131
137
|
setIsMaxmum(true);
|
|
132
138
|
}
|
|
@@ -138,7 +144,9 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
138
144
|
return;
|
|
139
145
|
}
|
|
140
146
|
if (scaleValue > 1) {
|
|
141
|
-
|
|
147
|
+
var zoomOut = scaleValue - step;
|
|
148
|
+
var diff = zoomOut % step;
|
|
149
|
+
setScaleValue(diff === 0 ? zoomOut : zoomOut - diff);
|
|
142
150
|
} else {
|
|
143
151
|
setIsMinimum(true);
|
|
144
152
|
}
|
|
@@ -149,8 +157,11 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
149
157
|
setIsOriginal(!_result2);
|
|
150
158
|
return;
|
|
151
159
|
}
|
|
160
|
+
// 如果容器高和画布原始高度的比值小于1,代表画布原始高比容器大,则设置放大倍率用 1 + 比率
|
|
161
|
+
// 如果容器高和画布原始告诉的比值大于1,代表容器比画布原始高度大,则设置放大倍率为原始高度和容器高度的比率
|
|
162
|
+
var origin = ratio < 1 ? 1 + ratio : initHeight / contianHeight;
|
|
152
163
|
setIsOriginal(true);
|
|
153
|
-
setScaleValue(
|
|
164
|
+
setScaleValue(origin);
|
|
154
165
|
}
|
|
155
166
|
if (oprate === _type2.WhiteboardControlbarEvents.ADAPTIVE) {
|
|
156
167
|
if (onAdaptive) {
|
|
@@ -159,15 +170,23 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
159
170
|
return;
|
|
160
171
|
}
|
|
161
172
|
setIsAdaptived(true);
|
|
162
|
-
setScaleValue(
|
|
173
|
+
setScaleValue(1);
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
176
|
var width = (0, _react.useMemo)(function () {
|
|
177
|
+
if (scaleValue === ratio) return initWidth;
|
|
166
178
|
return initWidth * (contianHeight / initHeight) * scaleValue;
|
|
167
179
|
}, [contianHeight, scaleValue]);
|
|
168
180
|
var height = (0, _react.useMemo)(function () {
|
|
181
|
+
if (scaleValue === ratio) return initHeight;
|
|
169
182
|
return initHeight * (contianHeight / initHeight) * scaleValue;
|
|
170
183
|
}, [contianHeight, scaleValue]);
|
|
184
|
+
var top = (0, _react.useMemo)(function () {
|
|
185
|
+
if (contianHeight > height) return (contianHeight - height) / 2;
|
|
186
|
+
if (height === contianHeight) return 0;
|
|
187
|
+
if (scaleValue === 1) return 0;
|
|
188
|
+
return "-".concat((height - contianHeight) / 2, "px");
|
|
189
|
+
}, [height, contianHeight, scaleValue]);
|
|
171
190
|
var preventAction = (0, _react.useMemo)(function () {
|
|
172
191
|
var prevent = true;
|
|
173
192
|
|
|
@@ -334,7 +353,7 @@ var WhiteboardControlbar = exports.WhiteboardControlbar = function WhiteboardCon
|
|
|
334
353
|
position: 'absolute',
|
|
335
354
|
left: "-".concat(width / 2, "px"),
|
|
336
355
|
marginLeft: '50%',
|
|
337
|
-
top:
|
|
356
|
+
top: top
|
|
338
357
|
},
|
|
339
358
|
children: [onBoardDomLoaded && preventAction && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
340
359
|
className: "whiteboard-action-prevent"
|
|
@@ -17,7 +17,6 @@ var AnnotationCaptureTool = exports.AnnotationCaptureTool = function AnnotationC
|
|
|
17
17
|
var t = (0, _i18n.useI18n)();
|
|
18
18
|
var size = props.size,
|
|
19
19
|
hideTitle = props.hideTitle,
|
|
20
|
-
popoverVisible = props.popoverVisible,
|
|
21
20
|
placement = props.placement,
|
|
22
21
|
direction = props.direction,
|
|
23
22
|
setPopoverVisible = props.setPopoverVisible,
|
|
@@ -43,7 +42,7 @@ var AnnotationCaptureTool = exports.AnnotationCaptureTool = function AnnotationC
|
|
|
43
42
|
iconType: _type.FcrIconType.FCR_WHITEBOARD_SLICE,
|
|
44
43
|
title: t('fmt_screenshare_whiteboard_button_cutting'),
|
|
45
44
|
lineColor: "transparent",
|
|
46
|
-
visible: visible
|
|
45
|
+
visible: visible,
|
|
47
46
|
onVisibleChange: handleVisibleChange,
|
|
48
47
|
showArrow: true,
|
|
49
48
|
content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_panel.AnnotationToolPanel, {
|
|
@@ -126,7 +126,7 @@ function VerticalBar(props) {
|
|
|
126
126
|
api.start(_position);
|
|
127
127
|
}
|
|
128
128
|
}, []);
|
|
129
|
-
var handleRefMount = function
|
|
129
|
+
var handleRefMount = (0, _react2.useCallback)(function (dom) {
|
|
130
130
|
if (dom) {
|
|
131
131
|
var top = dom.getBoundingClientRect().top;
|
|
132
132
|
if (topTemp !== top) {
|
|
@@ -135,7 +135,7 @@ function VerticalBar(props) {
|
|
|
135
135
|
toolbarDom.current = dom;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
};
|
|
138
|
+
}, []);
|
|
139
139
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
140
140
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
141
141
|
onClick: function onClick() {
|
|
@@ -6,62 +6,63 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.useResizeVisible = void 0;
|
|
9
|
-
require("core-js/modules/web.timers.js");
|
|
10
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
10
|
var _react = require("react");
|
|
12
11
|
var _item = require("../components/item");
|
|
13
|
-
var
|
|
12
|
+
var _lodash = require("lodash");
|
|
14
13
|
var useResizeVisible = exports.useResizeVisible = function useResizeVisible() {
|
|
15
|
-
var
|
|
16
|
-
var _useState = (0, _react.useState)(0),
|
|
14
|
+
var _useState = (0, _react.useState)(-1),
|
|
17
15
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var _useState3 = (0, _react.useState)(-1),
|
|
21
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
22
|
-
coverCount = _useState4[0],
|
|
23
|
-
setCoverCount = _useState4[1];
|
|
24
|
-
var _useState5 = (0, _react.useState)(0),
|
|
25
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
26
|
-
itemHeight = _useState6[0],
|
|
27
|
-
setItemHeight = _useState6[1];
|
|
28
|
-
var actionbar = document.querySelector(".".concat(_constants.actionBarClassName));
|
|
29
|
-
var actionBarHeight = (actionbar === null || actionbar === void 0 ? void 0 : actionbar.getBoundingClientRect().height) || 0;
|
|
16
|
+
coverCount = _useState2[0],
|
|
17
|
+
setCoverCount = _useState2[1];
|
|
30
18
|
var bottomHeight = 20;
|
|
31
|
-
var
|
|
19
|
+
var toolbarRef = (0, _react.useRef)();
|
|
20
|
+
var containerRef = (0, _react.useRef)(null);
|
|
21
|
+
var thresholdRef = (0, _react.useRef)(0);
|
|
22
|
+
var itemHeightRef = (0, _react.useRef)(0);
|
|
32
23
|
var handleResize = (0, _react.useCallback)(function () {
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
var container = containerRef.current;
|
|
25
|
+
var _ref = (container === null || container === void 0 ? void 0 : container.getBoundingClientRect()) || document.documentElement.getBoundingClientRect(),
|
|
26
|
+
height = _ref.height;
|
|
27
|
+
var threshold = thresholdRef.current;
|
|
28
|
+
var itemHeight = itemHeightRef.current;
|
|
29
|
+
var coverSize = 0;
|
|
30
|
+
var coverCountTemp = -1;
|
|
31
|
+
coverSize = threshold - height;
|
|
32
|
+
coverCountTemp = Math.round(coverSize / itemHeight);
|
|
33
|
+
setCoverCount(coverCountTemp);
|
|
34
|
+
}, []);
|
|
35
|
+
(0, _react.useEffect)(function () {
|
|
36
|
+
handleResize();
|
|
37
|
+
}, []);
|
|
38
|
+
var handleResizeDebounce = (0, _react.useCallback)((0, _lodash.debounce)(handleResize, 200), []);
|
|
39
39
|
(0, _react.useEffect)(function () {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
window.clearTimeout(timer.current);
|
|
40
|
+
var container = containerRef.current;
|
|
41
|
+
if (container) {
|
|
42
|
+
container.addEventListener('transitionend', handleResizeDebounce);
|
|
44
43
|
}
|
|
45
|
-
timer.current = window.setTimeout(handleResize);
|
|
46
44
|
return function () {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (timer.current) {
|
|
50
|
-
window.clearTimeout(timer.current);
|
|
45
|
+
if (container) {
|
|
46
|
+
container.removeEventListener('transitionend', handleResizeDebounce);
|
|
51
47
|
}
|
|
52
48
|
};
|
|
53
|
-
}, [
|
|
49
|
+
}, []);
|
|
50
|
+
var reCalcThreshold = (0, _react.useCallback)(function () {
|
|
51
|
+
var toolbar = toolbarRef.current;
|
|
52
|
+
if (toolbar) {
|
|
53
|
+
var _toolbar$getBoundingC = toolbar.getBoundingClientRect(),
|
|
54
|
+
height = _toolbar$getBoundingC.height;
|
|
55
|
+
var items = toolbar.querySelectorAll(".".concat(_item.toolBarItemClassName));
|
|
56
|
+
itemHeightRef.current = items[0].getBoundingClientRect().height;
|
|
57
|
+
var threshold = height + bottomHeight;
|
|
58
|
+
thresholdRef.current = threshold;
|
|
59
|
+
}
|
|
60
|
+
}, []);
|
|
54
61
|
var setToolbarDom = (0, _react.useCallback)(function (dom) {
|
|
55
62
|
if (dom) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
top = _dom$getBoundingClien.top,
|
|
60
|
-
height = _dom$getBoundingClien.height;
|
|
61
|
-
var items = dom.querySelectorAll(".".concat(_item.toolBarItemClassName));
|
|
62
|
-
setItemHeight((_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.getBoundingClientRect().height);
|
|
63
|
-
var _threshold = height + top + actionBarHeight + bottomHeight;
|
|
64
|
-
setThreshold(_threshold);
|
|
63
|
+
toolbarRef.current = dom;
|
|
64
|
+
containerRef.current = document.querySelector('.fcr-whiteboard-controlbar-body-content');
|
|
65
|
+
reCalcThreshold();
|
|
65
66
|
}
|
|
66
67
|
}, []);
|
|
67
68
|
return {
|