fcr-ui-scene 3.8.0-alpha → 3.8.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 (54) hide show
  1. package/lib/fragments/whiteboard/store.js +1 -1
  2. package/lib/modules/caption/draggable-container/index.js +34 -12
  3. package/lib/modules/caption/store.d.ts +1 -4
  4. package/lib/modules/caption/store.js +10 -18
  5. package/lib/modules/caption/view.js +16 -27
  6. package/lib/modules/chat/store.d.ts +1 -0
  7. package/lib/modules/chat/store.js +2 -2
  8. package/lib/modules/components/caption-menu/index.d.ts +2 -0
  9. package/lib/modules/components/caption-menu/index.js +13 -10
  10. package/lib/modules/components/caption-menu/participants-privilege-control-options.js +5 -19
  11. package/lib/modules/components/caption-menu/translation-setting-options.js +31 -24
  12. package/lib/modules/control-bar/components/carmera/index.js +7 -39
  13. package/lib/modules/control-bar/components/cloud-recording-buttons.js +18 -33
  14. package/lib/modules/control-bar/components/microphone/index.js +3 -43
  15. package/lib/modules/control-bar/components/share-audio/index.d.ts +2 -0
  16. package/lib/modules/control-bar/components/share-audio/index.js +4 -10
  17. package/lib/modules/control-bar/hooks.d.ts +1 -0
  18. package/lib/modules/control-bar/hooks.js +140 -1
  19. package/lib/modules/control-bar/store.d.ts +3 -4
  20. package/lib/modules/control-bar/store.js +37 -30
  21. package/lib/modules/control-bar/type.d.ts +3 -0
  22. package/lib/modules/control-bar/view.js +40 -57
  23. package/lib/modules/dialog/components/confirm/index.js +0 -1
  24. package/lib/modules/dialog/components/dialog-container/index.js +1 -0
  25. package/lib/modules/event-toast/index.js +7 -1
  26. package/lib/modules/layout/store.base.d.ts +1 -1
  27. package/lib/modules/layout/store.electron.d.ts +0 -1
  28. package/lib/modules/layout/store.electron.js +37 -133
  29. package/lib/modules/participant/store.base.js +8 -10
  30. package/lib/modules/secondary-window/store.js +1 -3
  31. package/lib/modules/setting/audio-whiteList/audio-device-adaptation.d.ts +28 -0
  32. package/lib/modules/setting/audio-whiteList/audio-device-adaptation.js +41 -5
  33. package/lib/modules/setting/audio-whiteList/audio-whiteList-manager.d.ts +3 -14
  34. package/lib/modules/setting/audio-whiteList/audio-whiteList-manager.js +45 -24
  35. package/lib/modules/setting/index.js +4 -2
  36. package/lib/modules/setting/store.base.d.ts +5 -3
  37. package/lib/modules/setting/store.base.js +64 -43
  38. package/lib/modules/setting/store.electron.d.ts +1 -1
  39. package/lib/modules/setting/store.electron.js +3 -7
  40. package/lib/modules/setting/view.js +3 -2
  41. package/lib/modules/share-screen/store.electron.js +51 -23
  42. package/lib/modules/subtitles-history/components/list-item.js +4 -7
  43. package/lib/modules/subtitles-history/store.base.d.ts +3 -1
  44. package/lib/modules/subtitles-history/store.base.js +11 -1
  45. package/lib/providers/screen-share/provider.base.d.ts +2 -13
  46. package/lib/providers/screen-share/provider.base.js +5 -12
  47. package/lib/providers/screen-share/provider.electron.d.ts +0 -5
  48. package/lib/providers/screen-share/provider.electron.js +31 -18
  49. package/lib/providers/screen-share/type.d.ts +0 -16
  50. package/lib/providers/stt-provider/stt-provider.d.ts +3 -4
  51. package/lib/providers/stt-provider/stt-provider.js +145 -146
  52. package/lib/providers/stt-provider/type.d.ts +2 -10
  53. package/lib/providers/stt-provider/type.js +3 -3
  54. package/package.json +8 -8
@@ -388,7 +388,7 @@ var FragmentWhiteboardStore = exports.FragmentWhiteboardStore = /*#__PURE__*/fun
388
388
  _JSON$parse2 = JSON.parse(boardOptions || '{}'), boardAppId = _JSON$parse2.boardAppId, boardId = _JSON$parse2.boardId, boardRegion = _JSON$parse2.boardRegion, boardToken = _JSON$parse2.boardToken, userId = _JSON$parse2.boardUserUuid;
389
389
  config = {
390
390
  userId: userId,
391
- nickName: nickName,
391
+ userName: nickName,
392
392
  boardConfig: {
393
393
  boardAppId: boardAppId,
394
394
  boardId: boardId,
@@ -37,6 +37,7 @@ var minWidth = 440;
37
37
  var actionBarHeight = 55;
38
38
  var stateBarHeight = 34;
39
39
  var bottomOffsetCompensation = 22;
40
+ var offsetHeight = actionBarHeight + stateBarHeight + bottomOffsetCompensation;
40
41
  var style = {
41
42
  top: stateBarHeight,
42
43
  bottom: actionBarHeight,
@@ -55,6 +56,8 @@ var enableResizing = {
55
56
  var DraggableContainer = exports.DraggableContainer = (0, _mobxReact.observer)(function (_ref) {
56
57
  var children = _ref.children;
57
58
  var parentRef = (0, _react.useRef)(null);
59
+ var preParentHeight = (0, _react.useRef)(0);
60
+ var preParentWidth = (0, _react.useRef)(0);
58
61
  var _useState = (0, _react.useState)(null),
59
62
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
60
63
  position = _useState2[0],
@@ -84,18 +87,35 @@ var DraggableContainer = exports.DraggableContainer = (0, _mobxReact.observer)(f
84
87
  try {
85
88
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
86
89
  var entry = _step.value;
87
- var resizedParentWidth = entry.contentRect.width;
88
- if (position && resizedParentWidth < size.width + position.x) {
89
- var isResize = size.width > resizedParentWidth;
90
- setPosition({
91
- x: isResize ? 0 : resizedParentWidth - size.width,
92
- y: position.y
93
- });
94
- setSize({
95
- width: isResize ? resizedParentWidth : size.width,
96
- height: size.height
97
- });
90
+ var _entry$contentRect = entry.contentRect,
91
+ resizedParentWidth = _entry$contentRect.width,
92
+ resizedParentHeight = _entry$contentRect.height;
93
+ if (preParentWidth.current !== resizedParentWidth || preParentHeight.current !== resizedParentHeight) {
94
+ var defaultSizeHeight = 94;
95
+ if (position) {
96
+ var scaleX = (position.x + size.width / 2) / preParentWidth.current;
97
+ var scaley = (position.y + defaultSizeHeight / 2) / preParentHeight.current;
98
+ var newY = resizedParentHeight * scaley - defaultSizeHeight / 2;
99
+ setPosition({
100
+ x: resizedParentWidth * scaleX - size.width / 2,
101
+ y: resizedParentHeight - newY < offsetHeight ? resizedParentHeight - offsetHeight : newY
102
+ });
103
+ }
98
104
  }
105
+ preParentWidth.current = resizedParentWidth;
106
+ preParentHeight.current = resizedParentHeight;
107
+
108
+ // if (position && resizedParentWidth < size.width + position.x) {
109
+ // const isResize = size.width > resizedParentWidth;
110
+ // setPosition({
111
+ // x: isResize ? 0 : resizedParentWidth - size.width,
112
+ // y: position.y,
113
+ // });
114
+ // setSize({
115
+ // width: isResize ? resizedParentWidth : size.width,
116
+ // height: size.height,
117
+ // });
118
+ // }
99
119
  }
100
120
  } catch (err) {
101
121
  _iterator.e(err);
@@ -107,9 +127,11 @@ var DraggableContainer = exports.DraggableContainer = (0, _mobxReact.observer)(f
107
127
  if (parentRef.current) {
108
128
  var parentWidth = parentRef.current.offsetWidth;
109
129
  var parentHeight = parentRef.current.offsetHeight;
130
+ preParentWidth.current = parentWidth;
131
+ preParentHeight.current = parentHeight;
110
132
  setPosition({
111
133
  x: parentWidth / 2 - size.width / 2,
112
- y: parentHeight - actionBarHeight - stateBarHeight - bottomOffsetCompensation
134
+ y: parentHeight - offsetHeight
113
135
  });
114
136
  }
115
137
  }, [parentRef.current]);
@@ -1,5 +1,4 @@
1
1
  import { FcrUIObjectManager } from '../../object-manager';
2
- import { FcrUISttSentence } from '../../providers/stt-provider/type';
3
2
  import { FcrLanguage } from 'fcr-core/lib/type';
4
3
  import { FcrUICaptionFontSize } from '../../shared-data/stt-setting.ts/type';
5
4
  import { FcrUICaptionMessage } from './type';
@@ -19,7 +18,6 @@ export default class CaptionStore {
19
18
  objectManager: FcrUIObjectManager;
20
19
  });
21
20
  get captionSentence(): FcrUICaptionMessage | null;
22
- get preCaptionSentence(): FcrUICaptionMessage | null;
23
21
  get captionState(): boolean;
24
22
  get isCaptionOpening(): boolean;
25
23
  get transcribingState(): boolean;
@@ -35,7 +33,7 @@ export default class CaptionStore {
35
33
  get captionSettingProps(): import("../components/caption-menu").CaptionMenuProps;
36
34
  get isShowNoContentTips(): boolean;
37
35
  get isShowListeningTips(): boolean;
38
- get isCaptionVisible(): boolean | FcrUISttSentence;
36
+ get isCaptionVisible(): boolean;
39
37
  toggleTwoLineCaptionEnabled(): void;
40
38
  toggleTwoLineTranscribingEnabled(): void;
41
39
  startCaption(): Promise<void>;
@@ -44,7 +42,6 @@ export default class CaptionStore {
44
42
  subscribeTranslateLanguage(language: FcrLanguage | null): void;
45
43
  setCaptionFontSize(fontSize: FcrUICaptionFontSize): void;
46
44
  clearCaptionSentence(): void;
47
- clearPreCaptionSentence(): void;
48
45
  openSubtitlesHistoryDialog(): void;
49
46
  release(): void;
50
47
  setIsHovered(isHovered: boolean): void;
@@ -146,11 +146,13 @@ var CaptionStore = exports["default"] = /*#__PURE__*/function () {
146
146
  this._sharedSttSettingDataSource = sharedSttSettingDataSource;
147
147
  this._disposer.push((0, _mobx.reaction)(function () {
148
148
  return _this._sttProvider.captionState;
149
- }, this._handleCaptionStateUpdated), (0, _mobx.reaction)(function () {
150
- return _this.isCaptionVisible;
151
- }, this._handleIsCaptionVisibleUpdated), (0, _mobx.reaction)(function () {
152
- return _this._screenShareProvider.isLocalUserScreenSharing;
153
- }, this._handleScreenShareStateUpdated));
149
+ }, this._handleCaptionStateUpdated)
150
+ // reaction(() => this.isCaptionVisible, this._handleIsCaptionVisibleUpdated),
151
+ // reaction(
152
+ // () => this._screenShareProvider.isLocalUserScreenSharing,
153
+ // this._handleScreenShareStateUpdated,
154
+ // ),
155
+ );
154
156
  }
155
157
  return (0, _createClass2["default"])(CaptionStore, [{
156
158
  key: "_tooltipDuration",
@@ -181,11 +183,6 @@ var CaptionStore = exports["default"] = /*#__PURE__*/function () {
181
183
  get: function get() {
182
184
  return this._createCaptionMessage(this._sttProvider.captionSentence);
183
185
  }
184
- }, {
185
- key: "preCaptionSentence",
186
- get: function get() {
187
- return this._createCaptionMessage(this._sttProvider.preCaptionSentence);
188
- }
189
186
  }, {
190
187
  key: "captionState",
191
188
  get: function get() {
@@ -264,14 +261,14 @@ var CaptionStore = exports["default"] = /*#__PURE__*/function () {
264
261
  }, {
265
262
  key: "isCaptionVisible",
266
263
  get: function get() {
267
- if (this.isHovered) {
264
+ if (this.isHovered && this.captionState) {
268
265
  return true;
269
266
  }
270
267
  var _this$_sttProvider = this._sttProvider,
271
268
  isCaptionOpening = _this$_sttProvider.isCaptionOpening,
272
269
  captionSentence = _this$_sttProvider.captionSentence;
273
270
  var isShowTooltip = isCaptionOpening || captionSentence || this.isShowNoContentTips || this.isShowListeningTips;
274
- return isShowTooltip;
271
+ return isShowTooltip && !this._screenShareProvider.isLocalUserScreenSharing;
275
272
  }
276
273
  }, {
277
274
  key: "toggleTwoLineCaptionEnabled",
@@ -313,11 +310,6 @@ var CaptionStore = exports["default"] = /*#__PURE__*/function () {
313
310
  value: function clearCaptionSentence() {
314
311
  this._sttProvider.clearCaptionSentence();
315
312
  }
316
- }, {
317
- key: "clearPreCaptionSentence",
318
- value: function clearPreCaptionSentence() {
319
- this._sttProvider.clearPreCaptionSentence();
320
- }
321
313
  }, {
322
314
  key: "openSubtitlesHistoryDialog",
323
315
  value: function openSubtitlesHistoryDialog() {
@@ -358,7 +350,7 @@ var CaptionStore = exports["default"] = /*#__PURE__*/function () {
358
350
  }]);
359
351
  }(); // #endregion
360
352
  _CaptionStore = CaptionStore;
361
- var _applyDecs$e = (0, _slicedToArray2["default"])(_applyDecs(_CaptionStore, [[_mobx.observable, 1, "_tooltipDuration"], [_mobx.observable, 1, "_tooltipInterval"], [_mobx.observable, 1, "isHovered"], [_mobx.computed, 3, "captionStyle"], [_mobx.computed, 3, "isTwoLineCaptionEnabled"], [_mobx.computed, 3, "isTwoLineTranscribingEnabled"], [_mobx.computed, 3, "sourceLanguage"], [_mobx.computed, 3, "translateLanguage"], [_mobx.computed, 3, "hasSetSourceLanguagePermission"], [_mobx.computed, 3, "isPrivilegeControlOptionsVisible"], [_mobx.computed, 3, "captionSettingProps"], [_imports.bound, 2, "toggleTwoLineCaptionEnabled"], [_imports.bound, 2, "toggleTwoLineTranscribingEnabled"], [_imports.bound, 2, "startCaption"], [_imports.bound, 2, "stopCaption"], [_imports.bound, 2, "updateSourceLanguage"], [_imports.bound, 2, "subscribeTranslateLanguage"], [_imports.bound, 2, "setCaptionFontSize"], [_imports.bound, 2, "clearCaptionSentence"], [_imports.bound, 2, "clearPreCaptionSentence"], [_imports.bound, 2, "openSubtitlesHistoryDialog"], [_imports.bound, 2, "setIsHovered"]], []).e, 4);
353
+ var _applyDecs$e = (0, _slicedToArray2["default"])(_applyDecs(_CaptionStore, [[_mobx.observable, 1, "_tooltipDuration"], [_mobx.observable, 1, "_tooltipInterval"], [_mobx.observable, 1, "isHovered"], [_mobx.computed, 3, "captionStyle"], [_mobx.computed, 3, "isTwoLineCaptionEnabled"], [_mobx.computed, 3, "isTwoLineTranscribingEnabled"], [_mobx.computed, 3, "sourceLanguage"], [_mobx.computed, 3, "translateLanguage"], [_mobx.computed, 3, "hasSetSourceLanguagePermission"], [_mobx.computed, 3, "isPrivilegeControlOptionsVisible"], [_mobx.computed, 3, "captionSettingProps"], [_imports.bound, 2, "toggleTwoLineCaptionEnabled"], [_imports.bound, 2, "toggleTwoLineTranscribingEnabled"], [_imports.bound, 2, "startCaption"], [_imports.bound, 2, "stopCaption"], [_imports.bound, 2, "updateSourceLanguage"], [_imports.bound, 2, "subscribeTranslateLanguage"], [_imports.bound, 2, "setCaptionFontSize"], [_imports.bound, 2, "clearCaptionSentence"], [_imports.bound, 2, "openSubtitlesHistoryDialog"], [_imports.bound, 2, "setIsHovered"]], []).e, 4);
362
354
  _init__tooltipDuration = _applyDecs$e[0];
363
355
  _init__tooltipInterval = _applyDecs$e[1];
364
356
  _init_isHovered = _applyDecs$e[2];
@@ -28,8 +28,8 @@ exports.CaptionView = exports.CaptionDraggableView = void 0;
28
28
  require("core-js/modules/es.array.map.js");
29
29
  require("core-js/modules/es.object.to-string.js");
30
30
  require("core-js/modules/web.timers.js");
31
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
32
31
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
32
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
33
33
  var _react = _interopRequireWildcard(require("react"));
34
34
  var _mobxReact = require("mobx-react");
35
35
  var _icon = require("agora-ui-foundation/lib/components/icon");
@@ -49,6 +49,7 @@ var _jsxRuntime = require("react/jsx-runtime");
49
49
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
50
50
  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; }
51
51
  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; }
52
+ var initialCaptionSettingVisible = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _type2.FcrUICaptionButtonHoverType.transcribing, false), _type2.FcrUICaptionButtonHoverType.caption, false), _type2.FcrUICaptionButtonHoverType.permission, false), _type2.FcrUICaptionButtonHoverType.close, false);
52
53
  var CaptionMessage = (0, _mobxReact.observer)(function (_ref) {
53
54
  var captionMessage = _ref.captionMessage,
54
55
  isExiting = _ref.isExiting;
@@ -175,6 +176,13 @@ var ActionButtons = (0, _mobxReact.observer)(function () {
175
176
  var preventDragOnTarget = function preventDragOnTarget(e) {
176
177
  e.stopPropagation();
177
178
  };
179
+ var _useState3 = (0, _react.useState)(initialCaptionSettingVisible),
180
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
181
+ captionSettingVisible = _useState4[0],
182
+ setCaptionSettingVisible = _useState4[1];
183
+ var handleCaptionSettingVisible = function handleCaptionSettingVisible(id, visible) {
184
+ setCaptionSettingVisible(_objectSpread(_objectSpread({}, initialCaptionSettingVisible), {}, (0, _defineProperty2["default"])({}, id, visible)));
185
+ };
178
186
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
179
187
  className: "fcr-caption-action-buttons",
180
188
  onMouseDown: preventDragOnTarget,
@@ -190,6 +198,10 @@ var ActionButtons = (0, _mobxReact.observer)(function () {
190
198
  trigger: "click",
191
199
  content: item.popoverContent,
192
200
  disable: !item.popoverContent,
201
+ visible: captionSettingVisible[item.id],
202
+ onVisibleChange: function onVisibleChange(visible) {
203
+ return handleCaptionSettingVisible(item.id, visible);
204
+ },
193
205
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
194
206
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
195
207
  className: "fcr-caption-icon-button ".concat(buttonHover[item.id] ? 'fcr-caption-button-hovered' : ''),
@@ -217,33 +229,12 @@ var ActionButtons = (0, _mobxReact.observer)(function () {
217
229
  var CaptionView = exports.CaptionView = (0, _mobxReact.observer)(function () {
218
230
  var _useContext4 = (0, _react.useContext)(_store.StoreContext),
219
231
  captionSentence = _useContext4.captionSentence,
220
- clearPreCaptionSentence = _useContext4.clearPreCaptionSentence,
221
232
  clearCaptionSentence = _useContext4.clearCaptionSentence,
222
- preCaptionSentence = _useContext4.preCaptionSentence,
223
233
  isCaptionVisible = _useContext4.isCaptionVisible,
224
234
  isHovered = _useContext4.isHovered,
225
235
  setIsHovered = _useContext4.setIsHovered;
226
- var clearPreCaptionTimerRef = (0, _react.useRef)(null);
227
236
  var clearCaptionTimerRef = (0, _react.useRef)(null);
228
237
  var isShowMessage = captionSentence !== null;
229
- (0, _react.useEffect)(function () {
230
- if (preCaptionSentence) {
231
- if (clearPreCaptionTimerRef.current) {
232
- clearTimeout(clearPreCaptionTimerRef.current);
233
- clearPreCaptionTimerRef.current = null;
234
- }
235
- clearPreCaptionTimerRef.current = setTimeout(function () {
236
- clearPreCaptionTimerRef.current = null;
237
- clearPreCaptionSentence();
238
- }, 100);
239
- }
240
- return function () {
241
- if (clearPreCaptionTimerRef.current) {
242
- clearTimeout(clearPreCaptionTimerRef.current);
243
- clearPreCaptionTimerRef.current = null;
244
- }
245
- };
246
- }, [preCaptionSentence]);
247
238
  (0, _react.useEffect)(function () {
248
239
  if (captionSentence) {
249
240
  if (clearCaptionTimerRef.current) {
@@ -277,11 +268,9 @@ var CaptionView = exports.CaptionView = (0, _mobxReact.observer)(function () {
277
268
  return setIsHovered(true);
278
269
  },
279
270
  ref: mouseMoveRef,
280
- children: [isHovered && /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButtons, {}), !isShowMessage ? /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipTips, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
281
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CaptionMessage, {
282
- captionMessage: captionSentence,
283
- isExiting: false
284
- })
271
+ children: [isHovered && /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButtons, {}), !isShowMessage ? /*#__PURE__*/(0, _jsxRuntime.jsx)(TooltipTips, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(CaptionMessage, {
272
+ captionMessage: captionSentence,
273
+ isExiting: false
285
274
  })]
286
275
  });
287
276
  });
@@ -16,6 +16,7 @@ export default class ChatStore implements FcrUIManagedObject {
16
16
  private _messageProvider;
17
17
  private _roomControl;
18
18
  private _isMainRoom;
19
+ private _localUserId;
19
20
  accessor chatRoomStores: ChatRoomStoreMap;
20
21
  accessor activeTabIndex: FcrUIRoomType;
21
22
  accessor copyMap: Map<number, boolean>;
@@ -119,6 +119,7 @@ var ChatStore = exports["default"] = /*#__PURE__*/function () {
119
119
  this._roomControl = roomControl;
120
120
  this._messageProvider = messageProvider;
121
121
  this._dialogProvider = dialogProvider;
122
+ this._localUserId = roomControl.getUserControl().getLocalUser().userId;
122
123
  var roomObserver = {
123
124
  onJoinWaitingRoom: function onJoinWaitingRoom(room) {
124
125
  var userControl = room.getUserControl();
@@ -227,8 +228,7 @@ var ChatStore = exports["default"] = /*#__PURE__*/function () {
227
228
  }, {
228
229
  key: "localUserId",
229
230
  get: function get() {
230
- var userId = this._roomControl.getUserControl().getLocalUser().userId;
231
- return userId;
231
+ return this._localUserId;
232
232
  }
233
233
  }, {
234
234
  key: "hasWaitingRoomPermission",
@@ -8,6 +8,8 @@ export declare const line: FcrDropMenuOption;
8
8
  export declare const CaptionMenuContext: import("react").Context<CaptionMenuProps & {
9
9
  isSourceLanguageVisible: boolean;
10
10
  setIsSourceLanguageVisible: (visible: boolean) => void;
11
+ isTranslationVisible: boolean;
12
+ setIsTranslationVisible: (visible: boolean) => void;
11
13
  }>;
12
14
  export interface CaptionMenuProps {
13
15
  isFontSizeAdjustmentVisible?: boolean;
@@ -47,10 +47,16 @@ var CaptionMenu = exports.CaptionMenu = (0, _mobxReact.observer)(function (props
47
47
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
48
48
  isSourceLanguageVisible = _useState2[0],
49
49
  setIsSourceLanguageVisible = _useState2[1];
50
+ var _useState3 = (0, _react.useState)(false),
51
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
52
+ isTranslationVisible = _useState4[0],
53
+ setIsTranslationVisible = _useState4[1];
50
54
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(CaptionMenuContext.Provider, {
51
55
  value: _objectSpread(_objectSpread({}, props), {}, {
52
56
  isSourceLanguageVisible: isSourceLanguageVisible,
53
- setIsSourceLanguageVisible: setIsSourceLanguageVisible
57
+ setIsSourceLanguageVisible: setIsSourceLanguageVisible,
58
+ isTranslationVisible: isTranslationVisible,
59
+ setIsTranslationVisible: setIsTranslationVisible
54
60
  }),
55
61
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CaptionMenuView, {})
56
62
  });
@@ -64,25 +70,20 @@ var CaptionMenuView = (0, _mobxReact.observer)(function () {
64
70
  _useContext$isTransla = _useContext.isTranslationOptionsVisible,
65
71
  isTranslationOptionsVisible = _useContext$isTransla === void 0 ? true : _useContext$isTransla,
66
72
  isPrivilegeControlOptionsVisible = _useContext.isPrivilegeControlOptionsVisible,
67
- setIsSourceLanguageVisible = _useContext.setIsSourceLanguageVisible;
73
+ setIsSourceLanguageVisible = _useContext.setIsSourceLanguageVisible,
74
+ setIsTranslationVisible = _useContext.setIsTranslationVisible;
68
75
  var transI18n = (0, _i18n.useI18n)();
69
76
  var captionFontSizeMenuOptions = [{
70
77
  title: transI18n('fmt_ai_subtitles_setting_label_fontsize'),
71
78
  key: 'caption_font_size_title',
72
- type: 'title',
73
- onButtonClick: function onButtonClick() {
74
- setIsSourceLanguageVisible(false);
75
- }
79
+ type: 'title'
76
80
  }, {
77
81
  key: 'caption_font_size_steps',
78
82
  title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_steps.FcrSteps, {
79
83
  current: captionFontSize,
80
84
  stepsCount: 3,
81
85
  onChange: setCaptionFontSize
82
- }),
83
- onButtonClick: function onButtonClick() {
84
- setIsSourceLanguageVisible(false);
85
- }
86
+ })
86
87
  }];
87
88
  var translationSettingOptions = (0, _translationSettingOptions.useTranslationSettingOptions)();
88
89
  var participantsPrivilegeControlOptions = (0, _participantsPrivilegeControlOptions.useParticipantsPrivilegeControlOptions)();
@@ -103,6 +104,8 @@ var CaptionMenuView = (0, _mobxReact.observer)(function () {
103
104
  onClick: function onClick(e) {
104
105
  e.stopPropagation();
105
106
  e.preventDefault();
107
+ setIsSourceLanguageVisible(false);
108
+ setIsTranslationVisible(false);
106
109
  },
107
110
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dropMenu.FcrDropMenu, {
108
111
  className: "subtitles-menu",
@@ -28,36 +28,26 @@ var useParticipantsPrivilegeControlOptions = exports.useParticipantsPrivilegeCon
28
28
  allowSetSourceLanguage = _useContext.allowSetSourceLanguage,
29
29
  isStartTranscribeAllowed = _useContext.isStartTranscribeAllowed,
30
30
  isStartCaptionAllowed = _useContext.isStartCaptionAllowed,
31
- isSetSourceLanguageAllowed = _useContext.isSetSourceLanguageAllowed,
32
- setIsSourceLanguageVisible = _useContext.setIsSourceLanguageVisible;
31
+ isSetSourceLanguageAllowed = _useContext.isSetSourceLanguageAllowed;
33
32
  var transI18n = (0, _i18n.useI18n)();
34
33
  var participantsPrivilegeList = [{
35
34
  label: transI18n('fmt_security_mainwindow_option_start_stop_transcription'),
36
35
  key: 'open_and_close_realtime_transcribing',
37
36
  permission: hasEnableTranscribePermission,
38
37
  checked: isStartTranscribeAllowed,
39
- onChange: allowStartTranscribe,
40
- onButtonClick: function onButtonClick() {
41
- setIsSourceLanguageVisible(false);
42
- }
38
+ onChange: allowStartTranscribe
43
39
  }, {
44
40
  label: transI18n('fmt_security_mainwindow_option_use_captions'),
45
41
  key: 'use_caption_function',
46
42
  permission: hasEnableCaptionPermission,
47
43
  checked: isStartCaptionAllowed,
48
- onChange: allowStartCaption,
49
- onButtonClick: function onButtonClick() {
50
- setIsSourceLanguageVisible(false);
51
- }
44
+ onChange: allowStartCaption
52
45
  }, {
53
46
  label: transI18n('fmt_security_mainwindow_option_change_language'),
54
47
  key: 'modify_source_language',
55
48
  permission: hasEnableSourceLanguagePermission,
56
49
  checked: isSetSourceLanguageAllowed,
57
- onChange: allowSetSourceLanguage,
58
- onButtonClick: function onButtonClick() {
59
- setIsSourceLanguageVisible(false);
60
- }
50
+ onChange: allowSetSourceLanguage
61
51
  }];
62
52
  var participantsPrivilegeOptions = participantsPrivilegeList.map(function (item) {
63
53
  return {
@@ -70,17 +60,13 @@ var useParticipantsPrivilegeControlOptions = exports.useParticipantsPrivilegeCon
70
60
  }),
71
61
  onButtonClick: function onButtonClick() {
72
62
  item.onChange(!item.checked);
73
- setIsSourceLanguageVisible(false);
74
63
  }
75
64
  };
76
65
  });
77
66
  return [{
78
67
  title: transI18n('fmt_screenshare_options_allow'),
79
68
  key: 'participants_privilege_control_title',
80
- type: 'title',
81
- onButtonClick: function onButtonClick() {
82
- setIsSourceLanguageVisible(false);
83
- }
69
+ type: 'title'
84
70
  }].concat((0, _toConsumableArray2["default"])(participantsPrivilegeOptions.filter(function (item) {
85
71
  return !item.permission;
86
72
  })));
@@ -56,8 +56,7 @@ var useSourceLanguageMenuOptions = function useSourceLanguageMenuOptions() {
56
56
  var _useContext = (0, _react.useContext)(_.CaptionMenuContext),
57
57
  languageOptions = _useContext.languageOptions,
58
58
  updateSourceLanguage = _useContext.updateSourceLanguage,
59
- sourceLanguage = _useContext.sourceLanguage,
60
- setIsSourceLanguageVisible = _useContext.setIsSourceLanguageVisible;
59
+ sourceLanguage = _useContext.sourceLanguage;
61
60
  var getLanguageConfig = (0, _useLanguageConfig.useLanguageConfig)();
62
61
  var transI18n = (0, _i18n.useI18n)();
63
62
  var sourceLanguageOptions = languageOptions.sourceList.map(function (language) {
@@ -73,14 +72,17 @@ var useSourceLanguageMenuOptions = function useSourceLanguageMenuOptions() {
73
72
  }),
74
73
  onButtonClick: function onButtonClick() {
75
74
  updateSourceLanguage(language);
76
- setIsSourceLanguageVisible(false);
77
75
  }
78
76
  };
79
77
  });
80
78
  return [{
79
+ type: 'title',
81
80
  title: transI18n('fmt_ai_subtitles_setting_label_source_language'),
82
81
  key: 'source_language_title',
83
- type: 'title'
82
+ onButtonClick: function onButtonClick(e) {
83
+ e.stopPropagation();
84
+ e.preventDefault();
85
+ }
84
86
  }, _.line].concat((0, _toConsumableArray2["default"])(sourceLanguageOptions));
85
87
  };
86
88
  var useTranslationMenuOptions = function useTranslationMenuOptions() {
@@ -99,7 +101,9 @@ var useTranslationMenuOptions = function useTranslationMenuOptions() {
99
101
  checked: language === item.value
100
102
  }),
101
103
  key: item.value,
102
- onButtonClick: function onButtonClick() {
104
+ onButtonClick: function onButtonClick(e) {
105
+ e.stopPropagation();
106
+ e.preventDefault();
103
107
  var value = item.value === _type2.NONE ? null : item.value;
104
108
  subscribeTranslateLanguage(value);
105
109
  }
@@ -107,7 +111,12 @@ var useTranslationMenuOptions = function useTranslationMenuOptions() {
107
111
  });
108
112
  return [{
109
113
  title: transI18n('fmt_ai_subtitles_setting_label_translation_setting'),
110
- key: 'traslation_settings_title'
114
+ key: 'traslation_settings_title',
115
+ type: 'title',
116
+ onButtonClick: function onButtonClick(e) {
117
+ e.stopPropagation();
118
+ e.preventDefault();
119
+ }
111
120
  }, _.line].concat((0, _toConsumableArray2["default"])(translationLanguageOptions));
112
121
  };
113
122
  var useTranslationSettingOptions = exports.useTranslationSettingOptions = function useTranslationSettingOptions() {
@@ -119,12 +128,11 @@ var useTranslationSettingOptions = exports.useTranslationSettingOptions = functi
119
128
  isTwoLineTranscribingEnabled = _useContext3.isTwoLineTranscribingEnabled,
120
129
  toggleTwoLineTranscribingEnabled = _useContext3.toggleTwoLineTranscribingEnabled,
121
130
  hasSetSourceLanguagePermission = _useContext3.hasSetSourceLanguagePermission,
122
- captionState = _useContext3.captionState,
123
- transcribingState = _useContext3.transcribingState,
124
131
  isSourceLanguageVisible = _useContext3.isSourceLanguageVisible,
125
- setIsSourceLanguageVisible = _useContext3.setIsSourceLanguageVisible;
132
+ setIsSourceLanguageVisible = _useContext3.setIsSourceLanguageVisible,
133
+ isTranslationVisible = _useContext3.isTranslationVisible,
134
+ setIsTranslationVisible = _useContext3.setIsTranslationVisible;
126
135
  var transI18n = (0, _i18n.useI18n)();
127
- 0;
128
136
  var sourceLanguageOptions = useSourceLanguageMenuOptions();
129
137
  var translationLanguageOptions = useTranslationMenuOptions();
130
138
  var twoLineProps = menuType === FcrUICaptionMenuType.CAPTION ? {
@@ -134,31 +142,33 @@ var useTranslationSettingOptions = exports.useTranslationSettingOptions = functi
134
142
  value: isTwoLineTranscribingEnabled,
135
143
  onChange: toggleTwoLineTranscribingEnabled
136
144
  };
137
- var isDisabled = menuType === FcrUICaptionMenuType.CAPTION ? !captionState : !transcribingState;
138
145
  return [{
139
146
  key: 'translate_settings_title',
140
147
  title: transI18n('fmt_ai_subtitles_setting_label_translation_setting'),
141
- type: 'title',
142
- onButtonClick: function onButtonClick() {
143
- setIsSourceLanguageVisible(false);
144
- }
148
+ type: 'title'
145
149
  }, {
146
150
  title: transI18n('fmt_ai_subtitles_setting_label_source_language'),
147
151
  key: 'source_language',
148
152
  options: sourceLanguageOptions,
149
- disabled: !hasSetSourceLanguagePermission || isDisabled,
150
- onButtonClick: function onButtonClick() {
153
+ disabled: !hasSetSourceLanguagePermission,
154
+ onButtonClick: function onButtonClick(e) {
155
+ e.stopPropagation();
156
+ e.preventDefault();
151
157
  setIsSourceLanguageVisible(true);
158
+ setIsTranslationVisible(false);
152
159
  },
153
160
  visible: isSourceLanguageVisible
154
161
  }, {
155
162
  title: transI18n('fmt_ai_subtitles_setting_label_translations_display'),
156
163
  key: 'translate_display',
157
164
  options: translationLanguageOptions,
158
- disabled: isDisabled,
159
- onButtonClick: function onButtonClick() {
165
+ onButtonClick: function onButtonClick(e) {
166
+ e.stopPropagation();
167
+ e.preventDefault();
168
+ setIsTranslationVisible(true);
160
169
  setIsSourceLanguageVisible(false);
161
- }
170
+ },
171
+ visible: isTranslationVisible
162
172
  }, _.line, {
163
173
  key: 'two_line_caption_enabled',
164
174
  title: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
@@ -173,9 +183,6 @@ var useTranslationSettingOptions = exports.useTranslationSettingOptions = functi
173
183
  value: twoLineProps.value,
174
184
  onChange: twoLineProps.onChange
175
185
  })]
176
- }),
177
- onButtonClick: function onButtonClick() {
178
- setIsSourceLanguageVisible(false);
179
- }
186
+ })
180
187
  }];
181
188
  };
@@ -15,8 +15,6 @@ var _popover = require("agora-ui-foundation/lib/components/popover");
15
15
  var _videoMenu = _interopRequireDefault(require("../../../components/device-control/components/video-menu"));
16
16
  var _hooks = _interopRequireDefault(require("../../../components/device-control/hooks"));
17
17
  var _store = require("../../../components/device-control/store.base");
18
- var _boundaryDetector = require("../boundary-detector");
19
- var _store2 = require("../../store");
20
18
  var _context = require("../../context");
21
19
  var _tooltip = require("agora-ui-foundation/lib/components/tooltip");
22
20
  var _jsxRuntime = require("react/jsx-runtime");
@@ -27,10 +25,8 @@ var CameraControl = exports.CameraControl = (0, _mobxReact.observer)(function ()
27
25
  enableCamera = _useContext.enableCamera,
28
26
  cameraList = _useContext.cameraList,
29
27
  checkMediaPermission = _useContext.checkMediaPermission;
30
- var _useContext2 = (0, _react.useContext)(_store2.StoreContext),
31
- setPopoverArea = _useContext2.setPopoverArea;
32
- var _useContext3 = (0, _react.useContext)(_context.ControlBarCalculationContext),
33
- isShareActionNavHidden = _useContext3.isShareActionNavHidden;
28
+ var _useContext2 = (0, _react.useContext)(_context.ControlBarCalculationContext),
29
+ isShareActionNavHidden = _useContext2.isShareActionNavHidden;
34
30
  var _useDeviceTooltipVisi = (0, _hooks["default"])(),
35
31
  popoverOpened = _useDeviceTooltipVisi.popoverOpened,
36
32
  handlePopoverVisibleChanged = _useDeviceTooltipVisi.handlePopoverVisibleChanged,
@@ -46,18 +42,9 @@ var CameraControl = exports.CameraControl = (0, _mobxReact.observer)(function ()
46
42
  iconPrimary: "var(--fcr_web_ui_scene_mainicon1)",
47
43
  iconSecondary: 'var(--fcr_ui_scene_ramp_red6)'
48
44
  };
49
- var handleBoundariesChanged = (0, _react.useCallback)(function (boundaries) {
50
- setPopoverArea(boundaries);
51
- }, []);
52
45
  (0, _react.useEffect)(function () {
53
46
  if (isShareActionNavHidden) {
54
47
  _setPopoverOpened(false);
55
- setPopoverArea({
56
- x: 0,
57
- y: 0,
58
- width: 0,
59
- height: 0
60
- });
61
48
  }
62
49
  }, [isShareActionNavHidden]);
63
50
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -100,32 +87,13 @@ var CameraControl = exports.CameraControl = (0, _mobxReact.observer)(function ()
100
87
  visible: popoverOpened,
101
88
  onVisibleChange: function onVisibleChange(visible) {
102
89
  handlePopoverVisibleChanged(visible);
103
- if (!visible) {
104
- setPopoverArea({
105
- x: 0,
106
- y: 0,
107
- width: 0,
108
- height: 0
109
- });
110
- }
111
90
  },
112
91
  overlayClassName: "device-control--device-popover",
113
- content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_boundaryDetector.BoundaryDetector, {
114
- onBoundariesChanged: handleBoundariesChanged,
115
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_videoMenu["default"], {
116
- setPopoverOpened: function setPopoverOpened(opened) {
117
- _setPopoverOpened(opened);
118
- if (!opened) {
119
- setPopoverArea({
120
- x: 0,
121
- y: 0,
122
- width: 0,
123
- height: 0
124
- });
125
- }
126
- },
127
- onMoreClick: function onMoreClick() {}
128
- })
92
+ content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_videoMenu["default"], {
93
+ setPopoverOpened: function setPopoverOpened(opened) {
94
+ _setPopoverOpened(opened);
95
+ },
96
+ onMoreClick: function onMoreClick() {}
129
97
  }),
130
98
  trigger: "click",
131
99
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {