fcr-ui-scene 3.9.0-alpha → 3.9.1-alpha

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 (208) hide show
  1. package/lib/creator/provider-initializer.browser.js +4 -2
  2. package/lib/creator/provider-initializer.electron.js +13 -5
  3. package/lib/electron/injections.d.ts +1 -0
  4. package/lib/electron/injections.js +4 -1
  5. package/lib/electron/preload.js +1 -0
  6. package/lib/fragments/annotation/style.css +1 -0
  7. package/lib/fragments/whiteboard/style.css +4 -0
  8. package/lib/modules/action-bar/main-scene/store.base.d.ts +1 -0
  9. package/lib/modules/action-bar/main-scene/store.base.js +5 -0
  10. package/lib/modules/audio-stream/index.d.ts +2 -0
  11. package/lib/modules/audio-stream/index.js +33 -1
  12. package/lib/modules/chat/chat-room-store.js +4 -2
  13. package/lib/modules/chat/index.js +1 -1
  14. package/lib/modules/chat/store.d.ts +1 -1
  15. package/lib/modules/chat/store.js +4 -2
  16. package/lib/modules/components/device-control/store.base.d.ts +1 -0
  17. package/lib/modules/components/device-control/store.base.js +22 -3
  18. package/lib/modules/components/leave-meeting/index.js +3 -2
  19. package/lib/modules/components/leave-meeting/main-scene/store.d.ts +1 -0
  20. package/lib/modules/components/leave-meeting/main-scene/store.js +6 -1
  21. package/lib/modules/components/leave-meeting/store.base.d.ts +1 -0
  22. package/lib/modules/components/leave-meeting/store.base.js +1 -1
  23. package/lib/modules/components/leave-meeting/waiting-scene/store.d.ts +1 -0
  24. package/lib/modules/components/leave-meeting/waiting-scene/store.js +6 -1
  25. package/lib/modules/components/member-window/components/member-actions/components/icon-status.js +7 -10
  26. package/lib/modules/components/member-window/components/member-actions/components/more-actions.js +2 -2
  27. package/lib/modules/components/member-window/components/member-actions/index.js +0 -7
  28. package/lib/modules/components/member-window/components/member-actions/store.js +1 -1
  29. package/lib/modules/components/member-window/index.js +1 -1
  30. package/lib/modules/components/tab-frame/index.css +12 -1
  31. package/lib/modules/components/tab-frame/index.js +4 -1
  32. package/lib/modules/control-bar/components/share-state-nav/index.js +1 -3
  33. package/lib/modules/control-bar/mouse-event-bridge.d.ts +23 -0
  34. package/lib/modules/control-bar/mouse-event-bridge.js +87 -0
  35. package/lib/modules/control-bar/store.d.ts +3 -2
  36. package/lib/modules/control-bar/store.js +17 -29
  37. package/lib/modules/control-bar/type.d.ts +0 -1
  38. package/lib/modules/control-bar/view.js +21 -17
  39. package/lib/modules/dialog/dialogs/connection-gateway/tabs.js +3 -2
  40. package/lib/modules/dialog/dialogs/invite/index.js +6 -24
  41. package/lib/modules/invite/components/copy-info.css +72 -0
  42. package/lib/modules/invite/components/copy-info.d.ts +3 -0
  43. package/lib/modules/invite/components/copy-info.js +144 -0
  44. package/lib/modules/invite/components/pstn-invite.js +3 -15
  45. package/lib/modules/invite/components/voip-invite.js +10 -1
  46. package/lib/modules/invite/enums.d.ts +3 -1
  47. package/lib/modules/invite/enums.js +2 -0
  48. package/lib/modules/invite/store.d.ts +4 -1
  49. package/lib/modules/invite/store.js +37 -13
  50. package/lib/modules/invite/view.js +41 -20
  51. package/lib/modules/layout/store.base.d.ts +2 -1
  52. package/lib/modules/layout/store.base.js +20 -23
  53. package/lib/modules/participant/components/confirm-input/index.css +67 -1
  54. package/lib/modules/participant/components/confirm-input/index.js +16 -13
  55. package/lib/modules/participant/components/participants/components/render-user/components/attendee/index.css +4 -0
  56. package/lib/modules/participant/store.base.d.ts +1 -0
  57. package/lib/modules/participant/store.base.js +34 -7
  58. package/lib/modules/pc-audio-connect/main-scene/store.d.ts +2 -0
  59. package/lib/modules/pc-audio-connect/main-scene/store.js +12 -2
  60. package/lib/modules/pc-audio-connect/view.js +4 -2
  61. package/lib/modules/phone-audio-connect/store.d.ts +6 -4
  62. package/lib/modules/phone-audio-connect/store.js +12 -1
  63. package/lib/modules/phone-audio-connect/view.js +6 -4
  64. package/lib/modules/secondary-window/index.js +2 -2
  65. package/lib/modules/secondary-window/store.d.ts +3 -0
  66. package/lib/modules/secondary-window/store.js +16 -1
  67. package/lib/modules/secondary-window/view.js +96 -72
  68. package/lib/modules/toast-manager/type.d.ts +2 -1
  69. package/lib/modules/toast-manager/type.js +4 -1
  70. package/lib/plugins/module-dev-plugin.js +4 -4
  71. package/lib/providers/ability-provider.d.ts +15 -0
  72. package/lib/providers/ability-provider.js +13 -1
  73. package/lib/providers/mouse-detect/provider.d.ts +2 -0
  74. package/lib/providers/mouse-detect/provider.empty.d.ts +14 -0
  75. package/lib/providers/mouse-detect/provider.empty.js +47 -0
  76. package/lib/providers/mouse-detect/provider.js +13 -4
  77. package/lib/providers/mouse-detect/type.d.ts +2 -0
  78. package/lib/providers/phone-audio-provider.d.ts +31 -5
  79. package/lib/providers/phone-audio-provider.js +83 -22
  80. package/lib/providers/user-audio-volume-provider.d.ts +6 -0
  81. package/lib/providers/user-audio-volume-provider.js +3 -2
  82. package/lib/runtime.d.ts +1 -0
  83. package/lib/scenes/main-scene.js +2 -1
  84. package/lib/shared-data/chat-data.d.ts +19 -0
  85. package/lib/shared-data/chat-data.js +54 -7
  86. package/lib/shared-data/member-data.d.ts +9 -1
  87. package/lib/shared-data/member-data.js +46 -17
  88. package/lib/shared-data/video-window.js +8 -4
  89. package/lib/translations/enUS.d.ts +245 -1
  90. package/lib/translations/enUS.js +247 -3
  91. package/lib/translations/zhCN.d.ts +245 -1
  92. package/lib/translations/zhCN.js +246 -2
  93. package/lib/utilities/os.d.ts +1 -0
  94. package/lib/utilities/os.js +15 -0
  95. package/lib/utilities/renderer.d.ts +1 -0
  96. package/lib/utilities/renderer.js +7 -1
  97. package/lib-es/creator/provider-initializer.browser.js +4 -2
  98. package/lib-es/creator/provider-initializer.electron.js +11 -3
  99. package/lib-es/electron/injections.js +3 -0
  100. package/lib-es/electron/preload.js +2 -1
  101. package/lib-es/fragments/annotation/style.css +1 -0
  102. package/lib-es/fragments/whiteboard/style.css +4 -0
  103. package/lib-es/modules/action-bar/main-scene/store.base.js +5 -0
  104. package/lib-es/modules/audio-stream/index.js +33 -1
  105. package/lib-es/modules/chat/chat-room-store.js +4 -2
  106. package/lib-es/modules/chat/index.js +1 -1
  107. package/lib-es/modules/chat/store.js +4 -2
  108. package/lib-es/modules/components/device-control/store.base.js +22 -3
  109. package/lib-es/modules/components/leave-meeting/index.js +3 -2
  110. package/lib-es/modules/components/leave-meeting/main-scene/store.js +6 -1
  111. package/lib-es/modules/components/leave-meeting/store.base.js +1 -1
  112. package/lib-es/modules/components/leave-meeting/waiting-scene/store.js +6 -1
  113. package/lib-es/modules/components/member-window/components/member-actions/components/icon-status.js +7 -10
  114. package/lib-es/modules/components/member-window/components/member-actions/components/more-actions.js +2 -2
  115. package/lib-es/modules/components/member-window/components/member-actions/index.js +0 -7
  116. package/lib-es/modules/components/member-window/components/member-actions/store.js +1 -1
  117. package/lib-es/modules/components/member-window/index.js +1 -1
  118. package/lib-es/modules/components/tab-frame/index.css +12 -1
  119. package/lib-es/modules/components/tab-frame/index.js +4 -1
  120. package/lib-es/modules/control-bar/components/share-state-nav/index.js +1 -3
  121. package/lib-es/modules/control-bar/mouse-event-bridge.js +79 -0
  122. package/lib-es/modules/control-bar/store.js +18 -30
  123. package/lib-es/modules/control-bar/view.js +21 -17
  124. package/lib-es/modules/dialog/dialogs/connection-gateway/tabs.js +3 -2
  125. package/lib-es/modules/dialog/dialogs/invite/index.js +6 -24
  126. package/lib-es/modules/invite/components/copy-info.css +72 -0
  127. package/lib-es/modules/invite/components/copy-info.js +137 -0
  128. package/lib-es/modules/invite/components/pstn-invite.js +3 -15
  129. package/lib-es/modules/invite/components/voip-invite.js +10 -1
  130. package/lib-es/modules/invite/enums.js +2 -0
  131. package/lib-es/modules/invite/store.js +38 -14
  132. package/lib-es/modules/invite/view.js +43 -22
  133. package/lib-es/modules/layout/store.base.js +20 -23
  134. package/lib-es/modules/participant/components/confirm-input/index.css +67 -1
  135. package/lib-es/modules/participant/components/confirm-input/index.js +16 -13
  136. package/lib-es/modules/participant/components/participants/components/render-user/components/attendee/index.css +4 -0
  137. package/lib-es/modules/participant/store.base.js +34 -7
  138. package/lib-es/modules/pc-audio-connect/main-scene/store.js +12 -2
  139. package/lib-es/modules/pc-audio-connect/view.js +4 -2
  140. package/lib-es/modules/phone-audio-connect/store.js +12 -1
  141. package/lib-es/modules/phone-audio-connect/view.js +6 -4
  142. package/lib-es/modules/secondary-window/index.js +2 -2
  143. package/lib-es/modules/secondary-window/store.js +16 -1
  144. package/lib-es/modules/secondary-window/view.js +97 -73
  145. package/lib-es/modules/toast-manager/type.js +4 -1
  146. package/lib-es/plugins/module-dev-plugin.js +4 -4
  147. package/lib-es/providers/ability-provider.js +13 -1
  148. package/lib-es/providers/mouse-detect/provider.empty.js +39 -0
  149. package/lib-es/providers/mouse-detect/provider.js +13 -4
  150. package/lib-es/providers/phone-audio-provider.js +109 -48
  151. package/lib-es/providers/user-audio-volume-provider.js +3 -2
  152. package/lib-es/scenes/main-scene.js +3 -2
  153. package/lib-es/shared-data/chat-data.js +55 -8
  154. package/lib-es/shared-data/member-data.js +46 -17
  155. package/lib-es/shared-data/video-window.js +8 -4
  156. package/lib-es/translations/enUS.js +247 -3
  157. package/lib-es/translations/zhCN.js +246 -2
  158. package/lib-es/utilities/os.js +8 -0
  159. package/lib-es/utilities/renderer.js +7 -1
  160. package/lib-es/utilities/shared-storage.js +2 -2
  161. package/package.json +6 -6
  162. package/lib/modules/connection-gateway/components/computer/index.css +0 -12
  163. package/lib/modules/connection-gateway/components/computer/index.d.ts +0 -3
  164. package/lib/modules/connection-gateway/components/computer/index.js +0 -66
  165. package/lib/modules/connection-gateway/components/phone/components/callinfo/index.css +0 -36
  166. package/lib/modules/connection-gateway/components/phone/components/callinfo/index.d.ts +0 -10
  167. package/lib/modules/connection-gateway/components/phone/components/callinfo/index.js +0 -78
  168. package/lib/modules/connection-gateway/components/phone/components/calling/index.css +0 -72
  169. package/lib/modules/connection-gateway/components/phone/components/calling/index.d.ts +0 -7
  170. package/lib/modules/connection-gateway/components/phone/components/calling/index.js +0 -58
  171. package/lib/modules/connection-gateway/components/phone/components/remeber/index.css +0 -10
  172. package/lib/modules/connection-gateway/components/phone/components/remeber/index.d.ts +0 -5
  173. package/lib/modules/connection-gateway/components/phone/components/remeber/index.js +0 -24
  174. package/lib/modules/connection-gateway/components/phone/components/useing/index.css +0 -46
  175. package/lib/modules/connection-gateway/components/phone/components/useing/index.d.ts +0 -3
  176. package/lib/modules/connection-gateway/components/phone/components/useing/index.js +0 -36
  177. package/lib/modules/connection-gateway/components/phone/index.css +0 -49
  178. package/lib/modules/connection-gateway/components/phone/index.d.ts +0 -3
  179. package/lib/modules/connection-gateway/components/phone/index.js +0 -185
  180. package/lib/modules/connection-gateway/enums.d.ts +0 -4
  181. package/lib/modules/connection-gateway/enums.js +0 -12
  182. package/lib/modules/connection-gateway/index.css +0 -6
  183. package/lib/modules/connection-gateway/index.d.ts +0 -10
  184. package/lib/modules/connection-gateway/index.js +0 -78
  185. package/lib/modules/connection-gateway/store.d.ts +0 -68
  186. package/lib/modules/connection-gateway/store.js +0 -713
  187. package/lib/modules/connection-gateway/types.d.ts +0 -8
  188. package/lib/modules/connection-gateway/types.js +0 -6
  189. package/lib/modules/connection-gateway/view.d.ts +0 -1
  190. package/lib/modules/connection-gateway/view.js +0 -39
  191. package/lib-es/modules/connection-gateway/components/computer/index.css +0 -12
  192. package/lib-es/modules/connection-gateway/components/computer/index.js +0 -59
  193. package/lib-es/modules/connection-gateway/components/phone/components/callinfo/index.css +0 -36
  194. package/lib-es/modules/connection-gateway/components/phone/components/callinfo/index.js +0 -71
  195. package/lib-es/modules/connection-gateway/components/phone/components/calling/index.css +0 -72
  196. package/lib-es/modules/connection-gateway/components/phone/components/calling/index.js +0 -51
  197. package/lib-es/modules/connection-gateway/components/phone/components/remeber/index.css +0 -10
  198. package/lib-es/modules/connection-gateway/components/phone/components/remeber/index.js +0 -17
  199. package/lib-es/modules/connection-gateway/components/phone/components/useing/index.css +0 -46
  200. package/lib-es/modules/connection-gateway/components/phone/components/useing/index.js +0 -29
  201. package/lib-es/modules/connection-gateway/components/phone/index.css +0 -49
  202. package/lib-es/modules/connection-gateway/components/phone/index.js +0 -177
  203. package/lib-es/modules/connection-gateway/enums.js +0 -5
  204. package/lib-es/modules/connection-gateway/index.css +0 -6
  205. package/lib-es/modules/connection-gateway/index.js +0 -60
  206. package/lib-es/modules/connection-gateway/store.js +0 -707
  207. package/lib-es/modules/connection-gateway/types.js +0 -1
  208. package/lib-es/modules/connection-gateway/view.js +0 -31
@@ -35,7 +35,7 @@ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
35
35
  import _createClass from "@babel/runtime/helpers/createClass";
36
36
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
37
37
  var _DeviceControlStoreBase;
38
- var _initProto, _init_isPstnUser, _init_phoneMicEnabled, _openDeviceSettingDialogDecs, _openConnectionDecs, _closeConnectionDecs, _checkMediaPermissionDecs, _setSpeakerIdDecs, _setMicrophoneIdDecs, _setCameraIdDecs, _ref;
38
+ var _initProto, _init_isPstnUser, _init_phoneMicEnabled, _init_isVolteUser, _openDeviceSettingDialogDecs, _openConnectionDecs, _closeConnectionDecs, _checkMediaPermissionDecs, _setSpeakerIdDecs, _setMicrophoneIdDecs, _setCameraIdDecs, _ref;
39
39
  import "core-js/modules/es.array.find.js";
40
40
  import "core-js/modules/es.array.iterator.js";
41
41
  import "core-js/modules/es.object.to-string.js";
@@ -65,6 +65,7 @@ import { FcrUIDialogKey } from '../../../utilities/constant';
65
65
  import { FcrUIObjectKeys } from '../../../object-manager';
66
66
  var _A = /*#__PURE__*/new WeakMap();
67
67
  var _B = /*#__PURE__*/new WeakMap();
68
+ var _C = /*#__PURE__*/new WeakMap();
68
69
  _ref = (_openDeviceSettingDialogDecs = [action, action.bound], _openConnectionDecs = [action, action.bound], _closeConnectionDecs = [action, action.bound], _checkMediaPermissionDecs = [action, action.bound], _setSpeakerIdDecs = [action, action.bound], _setMicrophoneIdDecs = [action, action.bound], _setCameraIdDecs = [action, action.bound], "_deviceProvider");
69
70
  export var DeviceControlStoreBase = /*#__PURE__*/function () {
70
71
  function DeviceControlStoreBase(_ref2) {
@@ -78,6 +79,7 @@ export var DeviceControlStoreBase = /*#__PURE__*/function () {
78
79
  });
79
80
  _classPrivateFieldInitSpec(this, _A, _init_isPstnUser(this, false));
80
81
  _classPrivateFieldInitSpec(this, _B, _init_phoneMicEnabled(this, false));
82
+ _classPrivateFieldInitSpec(this, _C, _init_isVolteUser(this, false));
81
83
  this._dialogProvider = objectManager.getObject(FcrUIObjectKeys.P_DIALOG_PROVIDER);
82
84
  this._deviceProvider = objectManager.getObject(FcrUIObjectKeys.P_DEVICE_PROVIDER);
83
85
  this._abilityProvider = objectManager.getObject(FcrUIObjectKeys.P_ABILITY_PROVIDER);
@@ -103,6 +105,14 @@ export var DeviceControlStoreBase = /*#__PURE__*/function () {
103
105
  set: function set(v) {
104
106
  _classPrivateFieldSet(_B, this, v);
105
107
  }
108
+ }, {
109
+ key: "isVolteUser",
110
+ get: function get() {
111
+ return _classPrivateFieldGet(_C, this);
112
+ },
113
+ set: function set(v) {
114
+ _classPrivateFieldSet(_C, this, v);
115
+ }
106
116
  }, {
107
117
  key: "microphoneId",
108
118
  get: function get() {
@@ -242,17 +252,26 @@ export var DeviceControlStoreBase = /*#__PURE__*/function () {
242
252
  var connectorType = _ref3.connectorType;
243
253
  return connectorType === FcrRoomConnectorType.PSTN;
244
254
  });
255
+ var volteStream = streams.find(function (_ref4) {
256
+ var connectorType = _ref4.connectorType;
257
+ return connectorType === FcrRoomConnectorType.VOLTE;
258
+ });
245
259
  var hasPstnStream = !!pstnStream;
260
+ var hasVolteStream = !!volteStream;
246
261
  this.isPstnUser = hasPstnStream;
262
+ this.isVolteUser = hasVolteStream;
247
263
  if (hasPstnStream) {
248
264
  this.phoneMicEnabled = pstnStream.streamType === FcrStreamType.BOTH || pstnStream.audioSourceState === FcrMediaSourceState.OPEN;
265
+ } else if (hasVolteStream) {
266
+ this.phoneMicEnabled = volteStream.streamType === FcrStreamType.BOTH || volteStream.audioSourceState === FcrMediaSourceState.OPEN;
249
267
  }
250
268
  }
251
269
  }]);
252
270
  }();
253
271
  _DeviceControlStoreBase = DeviceControlStoreBase;
254
- var _applyDecs$e = _slicedToArray(_applyDecs(_DeviceControlStoreBase, [[observable, 1, "isPstnUser"], [observable, 1, "phoneMicEnabled"], [computed, 3, "microphoneId"], [computed, 3, "speakerId"], [computed, 3, "speakerList"], [computed, 3, "isCallOutAbilitySupported"], [computed, 3, "isVirtualBackgroundSupported"], [computed, 3, "isBeautyModeAbilitySupported"], [computed, 3, "microphoneEnabled"], [computed, 3, "microphoneState"], [computed, 3, "microphoneDetecting"], [computed, 3, "cameraId"], [computed, 3, "cameraEnabled"], [computed, 3, "microphoneVolumeLevel"], [computed, 3, "microphoneList"], [computed, 3, "cameraList"], [computed, 3, "connectType"], [_openDeviceSettingDialogDecs, 18, "openDeviceSettingDialog"], [_openConnectionDecs, 18, "openConnection"], [_closeConnectionDecs, 18, "closeConnection"], [_checkMediaPermissionDecs, 18, "checkMediaPermission"], [_setSpeakerIdDecs, 18, "setSpeakerId"], [_setMicrophoneIdDecs, 18, "setMicrophoneId"], [_setCameraIdDecs, 18, "setCameraId"], [bound, 2, "stopAudioByComputer"], [bound, 2, "release"], [bound, 2, "_handleStreamUpdate"]], []).e, 3);
272
+ var _applyDecs$e = _slicedToArray(_applyDecs(_DeviceControlStoreBase, [[observable, 1, "isPstnUser"], [observable, 1, "phoneMicEnabled"], [observable, 1, "isVolteUser"], [computed, 3, "microphoneId"], [computed, 3, "speakerId"], [computed, 3, "speakerList"], [computed, 3, "isCallOutAbilitySupported"], [computed, 3, "isVirtualBackgroundSupported"], [computed, 3, "isBeautyModeAbilitySupported"], [computed, 3, "microphoneEnabled"], [computed, 3, "microphoneState"], [computed, 3, "microphoneDetecting"], [computed, 3, "cameraId"], [computed, 3, "cameraEnabled"], [computed, 3, "microphoneVolumeLevel"], [computed, 3, "microphoneList"], [computed, 3, "cameraList"], [computed, 3, "connectType"], [_openDeviceSettingDialogDecs, 18, "openDeviceSettingDialog"], [_openConnectionDecs, 18, "openConnection"], [_closeConnectionDecs, 18, "closeConnection"], [_checkMediaPermissionDecs, 18, "checkMediaPermission"], [_setSpeakerIdDecs, 18, "setSpeakerId"], [_setMicrophoneIdDecs, 18, "setMicrophoneId"], [_setCameraIdDecs, 18, "setCameraId"], [bound, 2, "stopAudioByComputer"], [bound, 2, "release"], [bound, 2, "_handleStreamUpdate"]], []).e, 4);
255
273
  _init_isPstnUser = _applyDecs$e[0];
256
274
  _init_phoneMicEnabled = _applyDecs$e[1];
257
- _initProto = _applyDecs$e[2];
275
+ _init_isVolteUser = _applyDecs$e[2];
276
+ _initProto = _applyDecs$e[3];
258
277
  export var DeviceControlStoreContext = /*#__PURE__*/createContext(null);
@@ -17,6 +17,7 @@ export var LeaveMeeting = observer(function (props) {
17
17
  isLocked = _useContext.isLocked,
18
18
  hasEndRoomPermission = _useContext.hasEndRoomPermission,
19
19
  isPstnUser = _useContext.isPstnUser,
20
+ isVolteUser = _useContext.isVolteUser,
20
21
  loading = _useContext.loading,
21
22
  exitMeeting = _useContext.exitMeeting,
22
23
  assignHost = _useContext.assignHost,
@@ -66,7 +67,7 @@ export var LeaveMeeting = observer(function (props) {
66
67
  onChange: function onChange(checked) {
67
68
  return setKeepConnect(checked);
68
69
  },
69
- isHidden: !isPstnUser
70
+ isHidden: !isPstnUser && !isVolteUser
70
71
  },
71
72
  confirmBtnProps: {
72
73
  text: t('fmt_popup_button_endmeeting'),
@@ -95,7 +96,7 @@ export var LeaveMeeting = observer(function (props) {
95
96
  onChange: function onChange(checked) {
96
97
  return setKeepConnect(checked);
97
98
  },
98
- isHidden: !isPstnUser
99
+ isHidden: !isPstnUser && !isVolteUser
99
100
  },
100
101
  confirmBtnProps: {
101
102
  text: t('fmt_actionbar__button_leaveyes'),
@@ -94,6 +94,11 @@ var LeaveMeetingStoreMain = /*#__PURE__*/function (_LeaveMeetingStoreBas) {
94
94
  get: function get() {
95
95
  return this._sharedMemberDataSource.hasOwnPstnStream;
96
96
  }
97
+ }, {
98
+ key: "isVolteUser",
99
+ get: function get() {
100
+ return this._sharedMemberDataSource.hasOwnVolteStream;
101
+ }
97
102
  }, {
98
103
  key: "isHostSupportedByPlatform",
99
104
  value: function isHostSupportedByPlatform(platform) {
@@ -102,6 +107,6 @@ var LeaveMeetingStoreMain = /*#__PURE__*/function (_LeaveMeetingStoreBas) {
102
107
  }]);
103
108
  }(LeaveMeetingStoreBase);
104
109
  _LeaveMeetingStoreMain = LeaveMeetingStoreMain;
105
- var _applyDecs$e = _slicedToArray(_applyDecs(_LeaveMeetingStoreMain, [[computed, 3, "hostAvailibleRemoteUsers"], [computed, 3, "isPstnUser"], [_isHostSupportedByPlatformDecs, 18, "isHostSupportedByPlatform"]], [], 0, void 0, LeaveMeetingStoreBase).e, 1);
110
+ var _applyDecs$e = _slicedToArray(_applyDecs(_LeaveMeetingStoreMain, [[computed, 3, "hostAvailibleRemoteUsers"], [computed, 3, "isPstnUser"], [computed, 3, "isVolteUser"], [_isHostSupportedByPlatformDecs, 18, "isHostSupportedByPlatform"]], [], 0, void 0, LeaveMeetingStoreBase).e, 1);
106
111
  _initProto = _applyDecs$e[0];
107
112
  export { LeaveMeetingStoreMain as default };
@@ -179,7 +179,7 @@ export var LeaveMeetingStoreBase = /*#__PURE__*/function () {
179
179
  return this._checkIfQuitFullScreen();
180
180
  case 1:
181
181
  this.loading = true;
182
- _t = this.keepConnect && this.isPstnUser;
182
+ _t = this.keepConnect && (this.isPstnUser || this.isVolteUser);
183
183
  if (!_t) {
184
184
  _context2.next = 2;
185
185
  break;
@@ -85,6 +85,11 @@ var LeaveMeetingStoreWaiting = /*#__PURE__*/function (_LeaveMeetingStoreBas) {
85
85
  get: function get() {
86
86
  return false;
87
87
  }
88
+ }, {
89
+ key: "isVolteUser",
90
+ get: function get() {
91
+ return false;
92
+ }
88
93
  }, {
89
94
  key: "isHostSupportedByPlatform",
90
95
  value: function isHostSupportedByPlatform(platform) {
@@ -93,6 +98,6 @@ var LeaveMeetingStoreWaiting = /*#__PURE__*/function (_LeaveMeetingStoreBas) {
93
98
  }]);
94
99
  }(LeaveMeetingStoreBase);
95
100
  _LeaveMeetingStoreWaiting = LeaveMeetingStoreWaiting;
96
- var _applyDecs$e = _slicedToArray(_applyDecs(_LeaveMeetingStoreWaiting, [[computed, 3, "hostAvailibleRemoteUsers"], [computed, 3, "isPstnUser"], [_isHostSupportedByPlatformDecs, 18, "isHostSupportedByPlatform"]], [], 0, void 0, LeaveMeetingStoreBase).e, 1);
101
+ var _applyDecs$e = _slicedToArray(_applyDecs(_LeaveMeetingStoreWaiting, [[computed, 3, "hostAvailibleRemoteUsers"], [computed, 3, "isPstnUser"], [computed, 3, "isVolteUser"], [_isHostSupportedByPlatformDecs, 18, "isHostSupportedByPlatform"]], [], 0, void 0, LeaveMeetingStoreBase).e, 1);
97
102
  _initProto = _applyDecs$e[0];
98
103
  export { LeaveMeetingStoreWaiting as default };
@@ -5,8 +5,8 @@ import { useI18n } from 'agora-ui-foundation/lib/i18n';
5
5
  import classNames from 'classnames';
6
6
  import { MicVolume } from '../../mic-volume';
7
7
  import { NoMuteIconButton, SipDeviceIconButton } from './icon-buttons';
8
- import { FcrIconPhoneCall } from 'agora-ui-foundation/lib/components/icon-phone-call';
9
8
  import { useMemberWindowActionsStore } from '../provider';
9
+ import { MicrophoneState } from 'agora-ui-foundation/lib/components/room-screen-share-state-bar/microphone-state';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  export var IconStatus = observer(function (_ref) {
12
12
  var iconSize = _ref.iconSize,
@@ -45,15 +45,12 @@ export var IconStatus = observer(function (_ref) {
45
45
  };
46
46
  var renderPhoneStatus = function renderPhoneStatus() {
47
47
  if (!isPurePhone) {
48
- return /*#__PURE__*/_jsx("button", {
49
- className: "fcr-user-window-actions-microphone",
50
- children: /*#__PURE__*/_jsx(FcrIconPhoneCall, {
51
- size: iconSize,
52
- isMuted: !phoneMicEnabled,
53
- iconColors: {
54
- iconPrimary: store.ownerRoleType === FcrUserRole.HOST ? 'var(--fcr_ui_scene_white10)' : 'var(--fcr_ui_scene_ramp_lightgreen6)'
55
- }
56
- })
48
+ return /*#__PURE__*/_jsx(MicrophoneState, {
49
+ isPhoneMic: true,
50
+ isMicrophoneMuted: !phoneMicEnabled,
51
+ size: iconSize,
52
+ voicePercent: volume,
53
+ activeColor: store.ownerRoleType === FcrUserRole.HOST ? 'var(--fcr_ui_scene_white10)' : 'var(--fcr_ui_scene_ramp_lightgreen6)'
57
54
  });
58
55
  }
59
56
  };
@@ -41,8 +41,8 @@ export var MoreActions = observer(function (_ref) {
41
41
  isShowActionAudio = _actionMute.isShowActionAudio,
42
42
  actionAudioTag = _actionMute.actionAudioTag;
43
43
  var connectorType = audioStreamConnectorType !== FcrRoomConnectorType.NONE ? audioStreamConnectorType : videoStreamConnectorType;
44
- var isPhone = connectorType === FcrRoomConnectorType.PSTN;
45
- var userType = audioStreamConnectorType === FcrRoomConnectorType.PSTN && !hasVideoStream ? 'phone' : isMeeting ? 'meeting-system' : 'normal';
44
+ var isPhone = connectorType === FcrRoomConnectorType.PSTN || connectorType === FcrRoomConnectorType.VOLTE;
45
+ var userType = (audioStreamConnectorType === FcrRoomConnectorType.PSTN || audioStreamConnectorType === FcrRoomConnectorType.VOLTE) && !hasVideoStream ? 'phone' : isMeeting ? 'meeting-system' : 'normal';
46
46
  var isHost = ownerRoleType === FcrUserRole.HOST;
47
47
  var audioDeviceType = isPhone ? 'phone-mic' : 'computer-mic';
48
48
  var userData = {
@@ -2,7 +2,6 @@ import "core-js/modules/es.array.find.js";
2
2
  import "core-js/modules/es.object.to-string.js";
3
3
  import "core-js/modules/esnext.iterator.constructor.js";
4
4
  import "core-js/modules/esnext.iterator.find.js";
5
- import { FcrRoomConnectorType } from 'fcr-core';
6
5
  import { MemberWindowActionsProvider } from './provider';
7
6
  import { MemberActionsLayout } from './components/layout/index';
8
7
  import { MoreActions } from './components/more-actions';
@@ -38,12 +37,6 @@ export var MemberWindowActions = function MemberWindowActions(_ref) {
38
37
  hasMutePermission = _ref.hasMutePermission,
39
38
  hasUnmutePermission = _ref.hasUnmutePermission,
40
39
  hasRequestStartAudioPermission = _ref.hasRequestStartAudioPermission;
41
- var audioStreamConnectorType = windowData.audioStreamConnectorType,
42
- videoStreamConnectorType = windowData.videoStreamConnectorType,
43
- hasMicrophoneAudioStream = windowData.hasMicrophoneAudioStream,
44
- phoneMicEnabled = windowData.phoneMicEnabled;
45
- var connectorType = audioStreamConnectorType !== FcrRoomConnectorType.NONE ? audioStreamConnectorType : videoStreamConnectorType;
46
- var hideAudioConnectIcon = !!(connectorType === FcrRoomConnectorType.NONE ? hasMicrophoneAudioStream : connectorType === FcrRoomConnectorType.PSTN ? phoneMicEnabled : false);
47
40
  return /*#__PURE__*/_jsx(MemberWindowActionsProvider, {
48
41
  windowData: windowData,
49
42
  sendParticipantEvent: sendParticipantEvent,
@@ -297,7 +297,7 @@ export var MemberWindowActionsStore = /*#__PURE__*/function () {
297
297
  }, {
298
298
  key: "isPhone",
299
299
  get: function get() {
300
- return this.connectorType === FcrRoomConnectorType.PSTN;
300
+ return this.connectorType === FcrRoomConnectorType.PSTN || this.connectorType === FcrRoomConnectorType.VOLTE;
301
301
  }
302
302
  }, {
303
303
  key: "isInterpreter",
@@ -80,7 +80,7 @@ export var MemberWindow = observer(function (_ref) {
80
80
  avatar = windowData.avatar;
81
81
  var t = useI18n();
82
82
  var connectorType = audioStreamConnectorType !== FcrRoomConnectorType.NONE ? audioStreamConnectorType : videoStreamConnectorType;
83
- var isPhone = audioStreamConnectorType === FcrRoomConnectorType.PSTN;
83
+ var isPhone = audioStreamConnectorType === FcrRoomConnectorType.PSTN || audioStreamConnectorType === FcrRoomConnectorType.VOLTE;
84
84
  var isPhoneOnlyAudio = isPhone && !videoStreamId;
85
85
  var isMeeting = meetingConnectorTypes.has(connectorType);
86
86
  var suffixedName = userName + (isMySelf ? t('fmt_attendies_labels_setting_mine') : '');
@@ -6,7 +6,7 @@
6
6
  }
7
7
 
8
8
  .fcr-tabs-frame-tabs {
9
- padding: 9px 0;
9
+ padding: 6px 0;
10
10
  display: flex;
11
11
  justify-content: center;
12
12
  -webkit-app-region: drag;
@@ -38,3 +38,14 @@
38
38
  justify-content: center;
39
39
  padding: 0px 12px 12px 12px;
40
40
  }
41
+
42
+ .fcr-tabs-frame-tabs-single {
43
+ font-weight: 600;
44
+ font-size: 14px;
45
+ line-height: 20px;
46
+ color: var(--fcr_ui_scene_icontext1);
47
+ height: 34px;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ }
@@ -28,7 +28,7 @@ function FcrDialogTabFrame(props) {
28
28
  className: "fcr-tabs-frame-tabs"
29
29
  // {...bind?.()}
30
30
  ,
31
- children: /*#__PURE__*/_jsx(FcrTabs, {
31
+ children: tabs.length > 1 ? /*#__PURE__*/_jsx(FcrTabs, {
32
32
  activeKey: currentKey,
33
33
  items: tabs,
34
34
  onChange: function onChange(key) {
@@ -37,6 +37,9 @@ function FcrDialogTabFrame(props) {
37
37
  return tab.key === key;
38
38
  })) === null || _tabs$find === void 0 ? void 0 : _tabs$find.content) && setCurrentKey(key);
39
39
  }
40
+ }) : /*#__PURE__*/_jsx("div", {
41
+ className: "fcr-tabs-frame-tabs-single",
42
+ children: tabs[0].label
40
43
  })
41
44
  }), tabs.map(function (_ref) {
42
45
  var key = _ref.key,
@@ -34,8 +34,7 @@ export var DragIcon = function DragIcon() {
34
34
  export var ShareStateNav = observer(function (props) {
35
35
  var onShareStateNavTransferPosition = props.onShareStateNavTransferPosition,
36
36
  currentPosition = props.currentPosition,
37
- onMouseEnter = props.onMouseEnter,
38
- onMouseLeave = props.onMouseLeave;
37
+ onMouseEnter = props.onMouseEnter;
39
38
  var _useContext = useContext(StoreContext),
40
39
  isMuteAudio = _useContext.isMuteAudio,
41
40
  isInSmoothMode = _useContext.isInSmoothMode,
@@ -45,7 +44,6 @@ export var ShareStateNav = observer(function (props) {
45
44
  var transI18n = useI18n();
46
45
  return /*#__PURE__*/_jsxs("div", {
47
46
  onMouseEnter: onMouseEnter,
48
- onMouseLeave: onMouseLeave,
49
47
  className: "share-state-nav fcr-flex fcr-items-center \n fcr-justify-center share-action-nav__can-draggable \n ".concat(currentPosition === TransferPosition.TOP ? 'share-state-nav-top' : 'share-state-nav-bottom'),
50
48
  children: [/*#__PURE__*/_jsx(DragIcon, {}), /*#__PURE__*/_jsx(TransferPositionIcon, {
51
49
  onTransferPositionButtonClick: onShareStateNavTransferPosition,
@@ -0,0 +1,79 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import { FcrUIDetectAreaID } from '../../providers/mouse-detect/struct';
4
+ export var ControlBarMouseEventBridge = /*#__PURE__*/function () {
5
+ function ControlBarMouseEventBridge(_ref) {
6
+ var _this = this;
7
+ var controlBarWindow = _ref.controlBarWindow,
8
+ mouseDetectProvider = _ref.mouseDetectProvider,
9
+ logger = _ref.logger;
10
+ _classCallCheck(this, ControlBarMouseEventBridge);
11
+ this._controlBarWindow = controlBarWindow;
12
+ this._mouseDetectProvider = mouseDetectProvider;
13
+ this._logger = logger;
14
+ this._mouseDetectObserver = {
15
+ onMouseEnterDetectArea: function onMouseEnterDetectArea(areaId) {
16
+ if (areaId !== FcrUIDetectAreaID.ControlBar) return;
17
+ if (!_this._shouldUseMouseDetect()) return;
18
+ _this._controlBarWindow.setIgnoreMouseEvents(false);
19
+ _this._controlBarWindow.focus();
20
+ },
21
+ onMouseLeaveDetectArea: function onMouseLeaveDetectArea(areaId) {
22
+ if (areaId !== FcrUIDetectAreaID.ControlBar) return;
23
+ if (!_this._shouldUseMouseDetect()) return;
24
+ _this._controlBarWindow.setIgnoreMouseEvents(true, {
25
+ forward: true
26
+ });
27
+ }
28
+ };
29
+ this._windowObserver = {
30
+ onBlurred: function onBlurred() {
31
+ if (!_this._shouldUseMouseDetect()) return;
32
+ _this._controlBarWindow.setIgnoreMouseEvents(true, {
33
+ forward: true
34
+ });
35
+ }
36
+ };
37
+ this._logger.info('should use dom mouse:', this._shouldUseDomMouse());
38
+ this._logger.info('should use mouse detect:', this._shouldUseMouseDetect());
39
+ }
40
+ return _createClass(ControlBarMouseEventBridge, [{
41
+ key: "initialize",
42
+ value: function initialize() {
43
+ this._mouseDetectProvider.addObserver(this._mouseDetectObserver);
44
+ this._controlBarWindow.addObserver(this._windowObserver);
45
+ }
46
+ }, {
47
+ key: "dispose",
48
+ value: function dispose() {
49
+ this._mouseDetectProvider.removeObserver(this._mouseDetectObserver);
50
+ this._controlBarWindow.removeObserver(this._windowObserver);
51
+ }
52
+ }, {
53
+ key: "handleDomMouseEnter",
54
+ value: function handleDomMouseEnter() {
55
+ if (!this._shouldUseDomMouse()) return;
56
+ this._logger.info('handleMouseEnter');
57
+ this._controlBarWindow.setIgnoreMouseEvents(false);
58
+ }
59
+ }, {
60
+ key: "handleDomMouseLeave",
61
+ value: function handleDomMouseLeave() {
62
+ if (!this._shouldUseDomMouse()) return;
63
+ this._logger.info('handleMouseLeave');
64
+ this._controlBarWindow.setIgnoreMouseEvents(true, {
65
+ forward: true
66
+ });
67
+ }
68
+ }, {
69
+ key: "_shouldUseMouseDetect",
70
+ value: function _shouldUseMouseDetect() {
71
+ return this._mouseDetectProvider.isMouseDetectEnabled();
72
+ }
73
+ }, {
74
+ key: "_shouldUseDomMouse",
75
+ value: function _shouldUseDomMouse() {
76
+ return !this._mouseDetectProvider.isMouseDetectEnabled();
77
+ }
78
+ }]);
79
+ }();
@@ -74,11 +74,12 @@ import { MoreAction } from './enums';
74
74
  import { cloudRecordingConfig } from '../../utilities/default-config';
75
75
  import { copyText } from 'agora-ui-foundation/lib/utilities/copy-text';
76
76
  import { electronWindowConfig as controlBarWindowConfig } from '../dialog/dialogs/control-bar';
77
- import { isWindows, isMac } from 'agora-foundation/lib/utilities/env';
77
+ import { isWindows } from 'agora-foundation/lib/utilities/env';
78
78
  import { FcrUIDetectAreaID } from '../../providers/mouse-detect/struct';
79
79
  import { FcrSharePermissionState } from 'fcr-core/lib/room-control/sharing-control/type';
80
80
  import { WhiteboardToolAction } from '../secondary-window/type';
81
81
  import { FcrUIToastKey } from '../../modules/toast-manager/type';
82
+ import { ControlBarMouseEventBridge } from './mouse-event-bridge';
82
83
  var _F = /*#__PURE__*/new WeakMap();
83
84
  var _G = /*#__PURE__*/new WeakMap();
84
85
  var _H = /*#__PURE__*/new WeakMap();
@@ -160,23 +161,6 @@ var ControlBarStore = /*#__PURE__*/function () {
160
161
  _this.updateWindowBounds(sharingDisplayBounds);
161
162
  }
162
163
  });
163
- _defineProperty(this, "_mouseDetectObserver", {
164
- onMouseEnterDetectArea: function onMouseEnterDetectArea(areaId) {
165
- if (areaId === FcrUIDetectAreaID.ControlBar) {
166
- _this._controlBarWindow.setIgnoreMouseEvents(false);
167
- if (isWindows()) {
168
- _this._controlBarWindow.focus();
169
- }
170
- }
171
- },
172
- onMouseLeaveDetectArea: function onMouseLeaveDetectArea(areaId) {
173
- if (areaId === FcrUIDetectAreaID.ControlBar) {
174
- _this._controlBarWindow.setIgnoreMouseEvents(true, {
175
- forward: true
176
- });
177
- }
178
- }
179
- });
180
164
  _defineProperty(this, "_stateNavArea", {
181
165
  x: 0,
182
166
  y: 0,
@@ -281,7 +265,12 @@ var ControlBarStore = /*#__PURE__*/function () {
281
265
  _this.boardOwnerUser = '';
282
266
  }
283
267
  };
284
- this._mouseDetectProvider.addObserver(this._mouseDetectObserver);
268
+ this._mouseEventBridge = new ControlBarMouseEventBridge({
269
+ controlBarWindow: this._controlBarWindow,
270
+ mouseDetectProvider: this._mouseDetectProvider,
271
+ logger: this.logger
272
+ });
273
+ this._mouseEventBridge.initialize();
285
274
  this._screenShareProvider.addObserver(this._screenShareObserver);
286
275
  this._mainRoomControl.addObserver(this._roomObserver);
287
276
  this._mainRoomControl.getSharingControl().getBoardControl().addObserver(this._boardObserver);
@@ -485,6 +474,11 @@ var ControlBarStore = /*#__PURE__*/function () {
485
474
  get: function get() {
486
475
  return this._abilityProvider.isRecordingSupported();
487
476
  }
477
+ }, {
478
+ key: "isAnnotationSupported",
479
+ get: function get() {
480
+ return this._abilityProvider.isAnnotationSupported();
481
+ }
488
482
  }, {
489
483
  key: "meetingTimeKey",
490
484
  get: function get() {
@@ -511,9 +505,9 @@ var ControlBarStore = /*#__PURE__*/function () {
511
505
  return this._privilegeProvider.hasAnnotationAllowWritePermission();
512
506
  }
513
507
  }, {
514
- key: "hasAnnotationStartPermission",
508
+ key: "hasAnnotationWritePermission",
515
509
  get: function get() {
516
- return this._privilegeProvider.hasAnnotationStartPermission();
510
+ return this._privilegeProvider.hasAnnotationWritePermission();
517
511
  }
518
512
  }, {
519
513
  key: "liveStreamingButtonVisible",
@@ -621,18 +615,12 @@ var ControlBarStore = /*#__PURE__*/function () {
621
615
  }, {
622
616
  key: "handleMouseEnter",
623
617
  value: function handleMouseEnter() {
624
- if (isMac()) {
625
- this._controlBarWindow.setIgnoreMouseEvents(false);
626
- }
618
+ this._mouseEventBridge.handleDomMouseEnter();
627
619
  }
628
620
  }, {
629
621
  key: "handleMouseLeave",
630
622
  value: function handleMouseLeave() {
631
- if (isMac()) {
632
- this._controlBarWindow.setIgnoreMouseEvents(true, {
633
- forward: true
634
- });
635
- }
623
+ this._mouseEventBridge.handleDomMouseLeave();
636
624
  }
637
625
  }, {
638
626
  key: "openLiveStreamingDialog",
@@ -710,7 +698,7 @@ var ControlBarStore = /*#__PURE__*/function () {
710
698
  this._mainRoomControl.getSharingControl().getBoardControl().removeObserver(this._boardObserver);
711
699
  this._mainRoomControl.removeObserver(this._roomObserver);
712
700
  this._screenShareProvider.removeObserver(this._screenShareObserver);
713
- this._mouseDetectProvider.removeObserver(this._mouseDetectObserver);
701
+ this._mouseEventBridge.dispose();
714
702
  this._mouseDetectProvider.deleteDetectArea(FcrUIDetectAreaID.ControlBar);
715
703
  }
716
704
  }, {
@@ -281,11 +281,13 @@ var ControlBar = observer(function () {
281
281
  currentShareDisplayId = _useContext5.currentShareDisplayId,
282
282
  updateWindowBounds = _useContext5.updateWindowBounds,
283
283
  setPopoverArea = _useContext5.setPopoverArea,
284
- resetPopoverArea = _useContext5.resetPopoverArea;
284
+ resetPopoverArea = _useContext5.resetPopoverArea,
285
+ handleMouseLeave = _useContext5.handleMouseLeave;
285
286
  var updatePosition = useContext(DragStateUpdaterContext);
286
287
  var _useContext6 = useContext(ControlBarCalculationUpdaterContext),
287
288
  setDimensions = _useContext6.setDimensions,
288
- setNavPosition = _useContext6.setNavPosition;
289
+ setNavPosition = _useContext6.setNavPosition,
290
+ restartActiveTask = _useContext6.restartActiveTask;
289
291
  var _useState9 = useState('hidden'),
290
292
  _useState0 = _slicedToArray(_useState9, 2),
291
293
  visibility = _useState0[0],
@@ -339,12 +341,17 @@ var ControlBar = observer(function () {
339
341
  }
340
342
  }, [visibility]);
341
343
  usePopoverWatcher(containerRef, setPopoverArea, resetPopoverArea);
344
+ var handleControlBarMouseLeave = useCallback(function () {
345
+ handleMouseLeave();
346
+ restartActiveTask();
347
+ }, [handleMouseLeave, restartActiveTask]);
342
348
  return /*#__PURE__*/_jsxs("div", {
343
349
  ref: containerRef,
344
350
  className: rootClassNames,
345
351
  style: {
346
352
  visibility: visibility
347
353
  },
354
+ onMouseLeave: handleControlBarMouseLeave,
348
355
  children: [/*#__PURE__*/_jsx(ControlBarContent, {}), /*#__PURE__*/_jsx(ShareStateNavigation, {})]
349
356
  });
350
357
  });
@@ -353,11 +360,9 @@ var ControlBar = observer(function () {
353
360
  var ControlBarContent = /*#__PURE__*/memo(function () {
354
361
  var _useContext7 = useContext(StoreContext),
355
362
  handleMouseEnter = _useContext7.handleMouseEnter,
356
- handleMouseLeave = _useContext7.handleMouseLeave,
357
363
  setControlBarContentArea = _useContext7.setControlBarContentArea;
358
364
  var _useContext8 = useContext(ControlBarCalculationUpdaterContext),
359
365
  setIsShareActionNavHidden = _useContext8.setIsShareActionNavHidden,
360
- restartActiveTask = _useContext8.restartActiveTask,
361
366
  cancelActiveTask = _useContext8.cancelActiveTask;
362
367
  var calculation = useContext(ControlBarCalculationContext);
363
368
  var navClassName = useMemo(function () {
@@ -368,10 +373,6 @@ var ControlBarContent = /*#__PURE__*/memo(function () {
368
373
  handleMouseEnter();
369
374
  cancelActiveTask();
370
375
  }, []);
371
- var handleMouseLeaveNav = useCallback(function () {
372
- handleMouseLeave();
373
- restartActiveTask();
374
- }, []);
375
376
  var handleBoundariesChanged = useCallback(function (boundaries) {
376
377
  console.log('ControlBarContent boundaries changed');
377
378
  setControlBarContentArea(boundaries);
@@ -407,7 +408,6 @@ var ControlBarContent = /*#__PURE__*/memo(function () {
407
408
  children: /*#__PURE__*/_jsxs("div", {
408
409
  className: navClassName,
409
410
  onMouseEnter: handleMouseEnterNav,
410
- onMouseLeave: handleMouseLeaveNav,
411
411
  children: [/*#__PURE__*/_jsx(MediaControlGroup, {}), /*#__PURE__*/_jsx(FcrDivider, {
412
412
  style: {
413
413
  marginRight: 24,
@@ -519,7 +519,8 @@ var AnnotationSection = observer(function () {
519
519
  clearAnnotation = _useContext11.clearAnnotation,
520
520
  isWriteAnnotationAllowed = _useContext11.isWriteAnnotationAllowed,
521
521
  hasPermissionAllowWriteAnnotation = _useContext11.hasPermissionAllowWriteAnnotation,
522
- hasAnnotationStartPermission = _useContext11.hasAnnotationStartPermission;
522
+ isAnnotationSupported = _useContext11.isAnnotationSupported,
523
+ hasAnnotationWritePermission = _useContext11.hasAnnotationWritePermission;
523
524
  var _useContext12 = useContext(ControlBarCalculationContext),
524
525
  isShareActionNavHidden = _useContext12.isShareActionNavHidden;
525
526
  var _useState11 = useState(false),
@@ -531,6 +532,16 @@ var AnnotationSection = observer(function () {
531
532
  setVisible(false);
532
533
  }
533
534
  }, [isShareActionNavHidden]);
535
+
536
+ // 不支持标注的能力, 不显示按钮
537
+ if (!isAnnotationSupported) {
538
+ return null;
539
+ }
540
+
541
+ // 没有标注写权限, 不显示按钮
542
+ if (!hasAnnotationWritePermission) {
543
+ return null;
544
+ }
534
545
  return /*#__PURE__*/_jsx(AnnotationButton, {
535
546
  onAllowWriteClick: allowWriteAnnotation,
536
547
  onCleanAnnotationClick: clearAnnotation,
@@ -634,7 +645,6 @@ var ShareStateNavigation = /*#__PURE__*/memo(function () {
634
645
  var _useContext17 = useContext(StoreContext),
635
646
  handlerStopShare = _useContext17.handlerStopShare,
636
647
  handleMouseEnter = _useContext17.handleMouseEnter,
637
- handleMouseLeave = _useContext17.handleMouseLeave,
638
648
  setStateNavArea = _useContext17.setStateNavArea;
639
649
  var calculation = useContext(ControlBarCalculationContext);
640
650
  var _useContext18 = useContext(ControlBarCalculationUpdaterContext),
@@ -642,7 +652,6 @@ var ShareStateNavigation = /*#__PURE__*/memo(function () {
642
652
  setNavPosition = _useContext18.setNavPosition,
643
653
  moveBottom = _useContext18.moveBottom,
644
654
  moveTop = _useContext18.moveTop,
645
- restartActiveTask = _useContext18.restartActiveTask,
646
655
  cancelActiveTask = _useContext18.cancelActiveTask;
647
656
 
648
657
  // 从store获取当前位置和相关方法
@@ -661,10 +670,6 @@ var ShareStateNavigation = /*#__PURE__*/memo(function () {
661
670
  handleMouseEnter();
662
671
  cancelActiveTask();
663
672
  }, [setIsShareActionNavHidden, handleMouseEnter, cancelActiveTask]);
664
- var handleMouseLeaveNav = useCallback(function () {
665
- handleMouseLeave();
666
- restartActiveTask();
667
- }, [handleMouseLeave, restartActiveTask]);
668
673
  var handleBoundariesChanged = useCallback(function (boundaries) {
669
674
  console.log('ShareStateNavigation boundaries changed');
670
675
  setStateNavArea(boundaries);
@@ -687,7 +692,6 @@ var ShareStateNavigation = /*#__PURE__*/memo(function () {
687
692
  ref: detector,
688
693
  children: /*#__PURE__*/_jsx(ShareStateNav, {
689
694
  onMouseEnter: handleMouseEnterNav,
690
- onMouseLeave: handleMouseLeaveNav,
691
695
  onShareStateNavTransferPosition: handleTransferPosition,
692
696
  currentPosition: navCurrentPosition,
693
697
  onStopShare: handlerStopShare
@@ -13,7 +13,8 @@ export var GatewayConnectorTabs = observer(function (props) {
13
13
  phoneChildren = props.phoneChildren;
14
14
  var _useContext = useContext(StoreContext),
15
15
  connectType = _useContext.connectType,
16
- hasOwnPstnStream = _useContext.hasOwnPstnStream;
16
+ hasOwnPstnStream = _useContext.hasOwnPstnStream,
17
+ hasOwnVolteStream = _useContext.hasOwnVolteStream;
17
18
  var _useState = useState("".concat(type)),
18
19
  _useState2 = _slicedToArray(_useState, 2),
19
20
  activeTabKey = _useState2[0],
@@ -23,7 +24,7 @@ export var GatewayConnectorTabs = observer(function (props) {
23
24
  key: 'computer',
24
25
  content: computerChildren
25
26
  }, {
26
- label: "".concat(transI18n('fmt_pstn_options_phoneaudio')).concat(hasOwnPstnStream ? "-".concat(transI18n('fmt_PSTN_status_connected')) : ''),
27
+ label: "".concat(transI18n('fmt_pstn_options_phoneaudio')).concat(hasOwnPstnStream || hasOwnVolteStream ? "-".concat(transI18n('fmt_PSTN_status_connected')) : ''),
27
28
  key: 'phone',
28
29
  content: phoneChildren
29
30
  }];