@tencentcloud/roomkit-electron-vue3 2.3.3 → 2.4.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.
Files changed (130) hide show
  1. package/es/components/Chat/ChatEditor/index.vue.mjs +1 -1
  2. package/es/components/Chat/ChatEditor/index.vue2.mjs +4 -4
  3. package/es/components/Chat/ChatEditor/useChatEditor.d.ts +1 -2
  4. package/es/components/Chat/ChatEditor/useChatEditor.mjs +4 -12
  5. package/es/components/ManageMember/MemberControl/index.vue.mjs +1 -1
  6. package/es/components/ManageMember/MemberControl/index.vue2.mjs +5 -4
  7. package/es/components/ManageMember/MemberControl/useMemberControlHooks.mjs +35 -12
  8. package/es/components/ManageMember/useIndexHooks.mjs +2 -1
  9. package/es/components/RoomFooter/ApplyControl/MemberApplyControl.vue.mjs +1 -1
  10. package/es/components/RoomFooter/ApplyControl/MemberApplyControl.vue2.mjs +2 -2
  11. package/es/components/RoomFooter/EndControl/useEndControlHooks.mjs +1 -1
  12. package/es/components/RoomFooter/VirtualBackground.vue.mjs +1 -1
  13. package/es/components/RoomFooter/VirtualBackground.vue2.mjs +87 -27
  14. package/es/components/RoomFooter/index/index.vue.mjs +1 -1
  15. package/es/components/RoomFooter/index/index.vue2.mjs +0 -2
  16. package/es/components/RoomHeader/RoomInfo/useRoomInfoHooks.mjs +2 -2
  17. package/es/components/RoomHeader/index/LayoutControl.vue.mjs +1 -1
  18. package/es/components/RoomHeader/index/LayoutControl.vue2.mjs +1 -3
  19. package/es/components/RoomHeader/index/NetworkInfo.vue.mjs +1 -1
  20. package/es/components/RoomHeader/index/NetworkInfo.vue2.mjs +0 -2
  21. package/es/components/common/base/MessageBox/index.mjs +3 -1
  22. package/es/conference.d.ts +1 -1
  23. package/es/conference.mjs +9 -0
  24. package/es/conference.vue.mjs +1 -1
  25. package/es/conference.vue2.mjs +1 -14
  26. package/es/constants/room.d.ts +3 -1
  27. package/es/extension/RoomMessageCard/RoomMessageCard.vue.mjs +1 -1
  28. package/es/extension/RoomMessageCard/RoomMessageCard.vue2.mjs +2 -2
  29. package/es/extension/chatExtension.mjs +4 -2
  30. package/es/hooks/useDeviceManager.d.ts +3 -1
  31. package/es/hooks/useMasterApplyControl.mjs +16 -10
  32. package/es/hooks/useRoomEngine.d.ts +3 -1
  33. package/es/index.d.ts +3 -2
  34. package/es/index.mjs +1519 -1456
  35. package/es/locales/en-US.d.ts +9 -9
  36. package/es/locales/en-US.mjs +10 -10
  37. package/es/locales/zh-CN.d.ts +11 -11
  38. package/es/locales/zh-CN.mjs +12 -12
  39. package/es/services/function/virtualBackground.d.ts +2 -0
  40. package/es/services/function/virtualBackground.mjs +19 -9
  41. package/es/services/function/waterMark.mjs +3 -0
  42. package/es/services/manager/componentManager.mjs +1 -1
  43. package/es/services/manager/roomActionManager.mjs +1 -1
  44. package/es/services/roomService.d.ts +3 -4
  45. package/es/services/roomService.mjs +2 -26
  46. package/es/stores/chat.mjs +3 -3
  47. package/es/stores/room.d.ts +1 -1
  48. package/es/stores/room.mjs +11 -10
  49. package/lib/components/Chat/ChatEditor/index.vue.js +1 -1
  50. package/lib/components/Chat/ChatEditor/index.vue2.js +4 -4
  51. package/lib/components/Chat/ChatEditor/useChatEditor.d.ts +1 -2
  52. package/lib/components/Chat/ChatEditor/useChatEditor.js +3 -11
  53. package/lib/components/ManageMember/MemberControl/index.vue.js +1 -1
  54. package/lib/components/ManageMember/MemberControl/index.vue2.js +4 -3
  55. package/lib/components/ManageMember/MemberControl/useMemberControlHooks.js +35 -12
  56. package/lib/components/ManageMember/useIndexHooks.js +2 -1
  57. package/lib/components/RoomFooter/ApplyControl/MemberApplyControl.vue.js +1 -1
  58. package/lib/components/RoomFooter/ApplyControl/MemberApplyControl.vue2.js +2 -2
  59. package/lib/components/RoomFooter/EndControl/useEndControlHooks.js +1 -1
  60. package/lib/components/RoomFooter/VirtualBackground.vue.js +1 -1
  61. package/lib/components/RoomFooter/VirtualBackground.vue2.js +86 -26
  62. package/lib/components/RoomFooter/index/index.vue.js +1 -1
  63. package/lib/components/RoomFooter/index/index.vue2.js +0 -2
  64. package/lib/components/RoomHeader/RoomInfo/useRoomInfoHooks.js +2 -2
  65. package/lib/components/RoomHeader/index/LayoutControl.vue.js +1 -1
  66. package/lib/components/RoomHeader/index/LayoutControl.vue2.js +1 -3
  67. package/lib/components/RoomHeader/index/NetworkInfo.vue.js +1 -1
  68. package/lib/components/RoomHeader/index/NetworkInfo.vue2.js +0 -2
  69. package/lib/components/common/base/MessageBox/index.js +3 -1
  70. package/lib/conference.d.ts +1 -1
  71. package/lib/conference.js +9 -0
  72. package/lib/conference.vue.js +1 -1
  73. package/lib/conference.vue2.js +10 -23
  74. package/lib/constants/room.d.ts +3 -1
  75. package/lib/extension/RoomMessageCard/RoomMessageCard.vue.js +1 -1
  76. package/lib/extension/RoomMessageCard/RoomMessageCard.vue2.js +2 -2
  77. package/lib/extension/chatExtension.js +4 -2
  78. package/lib/hooks/useDeviceManager.d.ts +3 -1
  79. package/lib/hooks/useMasterApplyControl.js +16 -10
  80. package/lib/hooks/useRoomEngine.d.ts +3 -1
  81. package/lib/index.d.ts +3 -2
  82. package/lib/index.js +1517 -1454
  83. package/lib/locales/en-US.d.ts +9 -9
  84. package/lib/locales/en-US.js +10 -10
  85. package/lib/locales/zh-CN.d.ts +11 -11
  86. package/lib/locales/zh-CN.js +12 -12
  87. package/lib/services/function/virtualBackground.d.ts +2 -0
  88. package/lib/services/function/virtualBackground.js +19 -9
  89. package/lib/services/function/waterMark.js +3 -0
  90. package/lib/services/manager/componentManager.js +1 -1
  91. package/lib/services/manager/roomActionManager.js +1 -1
  92. package/lib/services/roomService.d.ts +3 -4
  93. package/lib/services/roomService.js +2 -26
  94. package/lib/stores/chat.js +3 -3
  95. package/lib/stores/room.d.ts +1 -1
  96. package/lib/stores/room.js +11 -10
  97. package/package.json +2 -2
  98. package/src/TUIRoom/assets/style/global.scss +1 -1
  99. package/src/TUIRoom/components/Chat/ChatEditor/index.vue +4 -4
  100. package/src/TUIRoom/components/Chat/ChatEditor/useChatEditor.ts +4 -13
  101. package/src/TUIRoom/components/ManageMember/MemberControl/index.vue +5 -4
  102. package/src/TUIRoom/components/ManageMember/MemberControl/useMemberControlHooks.ts +36 -13
  103. package/src/TUIRoom/components/ManageMember/useIndexHooks.ts +3 -2
  104. package/src/TUIRoom/components/RoomFooter/ApplyControl/MemberApplyControl.vue +2 -2
  105. package/src/TUIRoom/components/RoomFooter/EndControl/useEndControlHooks.ts +1 -1
  106. package/src/TUIRoom/components/RoomFooter/VirtualBackground.vue +100 -16
  107. package/src/TUIRoom/components/RoomFooter/index/index.vue +0 -3
  108. package/src/TUIRoom/components/RoomHeader/RoomInfo/useRoomInfoHooks.ts +2 -2
  109. package/src/TUIRoom/components/RoomHeader/index/LayoutControl.vue +0 -2
  110. package/src/TUIRoom/components/RoomHeader/index/NetworkInfo.vue +0 -2
  111. package/src/TUIRoom/components/common/base/MessageBox/index.ts +2 -1
  112. package/src/TUIRoom/conference.vue +8 -13
  113. package/src/TUIRoom/extension/RoomMessageCard/RoomMessageCard.vue +1 -1
  114. package/src/TUIRoom/extension/RoomMessageCard/roomMessageCard.scss +3 -0
  115. package/src/TUIRoom/extension/chatExtension.ts +3 -1
  116. package/src/TUIRoom/hooks/useMasterApplyControl.ts +15 -10
  117. package/src/TUIRoom/index.ts +12 -3
  118. package/src/TUIRoom/locales/en-US.ts +9 -9
  119. package/src/TUIRoom/locales/zh-CN.ts +11 -11
  120. package/src/TUIRoom/services/function/virtualBackground.ts +21 -9
  121. package/src/TUIRoom/services/function/waterMark.ts +6 -0
  122. package/src/TUIRoom/services/manager/componentManager.ts +1 -1
  123. package/src/TUIRoom/services/manager/roomActionManager.ts +1 -1
  124. package/src/TUIRoom/services/roomService.ts +0 -29
  125. package/src/TUIRoom/stores/chat.ts +5 -6
  126. package/src/TUIRoom/stores/room.ts +13 -12
  127. package/es/utils/aegis/config.mjs +0 -12
  128. package/es/utils/aegis/index.mjs +0 -63
  129. package/lib/utils/aegis/config.js +0 -12
  130. package/lib/utils/aegis/index.js +0 -63
@@ -17,22 +17,15 @@ function useChatEditor() {
17
17
  const chatStore = chat.useChatStore();
18
18
  const roomStore = room.useRoomStore();
19
19
  const { roomId } = pinia.storeToRefs(basicStore);
20
- const { isMessageDisableByAdmin } = pinia.storeToRefs(chatStore);
21
- const { isMessageDisableForAllUser } = pinia.storeToRefs(roomStore);
20
+ const { isMessageDisabled } = pinia.storeToRefs(chatStore);
22
21
  const editorInputEle = Vue.ref();
23
22
  const sendMsg = Vue.ref("");
24
23
  const isEmojiToolbarVisible = Vue.ref(false);
25
- Vue.watch(isMessageDisableByAdmin, (value) => {
24
+ Vue.watch(isMessageDisabled, (value) => {
26
25
  if (value) {
27
26
  sendMsg.value = "";
28
27
  }
29
28
  });
30
- Vue.watch(isMessageDisableForAllUser, (value) => {
31
- if (value) {
32
- sendMsg.value = "";
33
- }
34
- });
35
- const cannotSendMessage = Vue.computed(() => Boolean(isMessageDisableByAdmin.value || isMessageDisableForAllUser.value));
36
29
  const sendMessage = async () => {
37
30
  var _a;
38
31
  const result = util.decodeSendTextMsg(sendMsg.value);
@@ -80,8 +73,7 @@ function useChatEditor() {
80
73
  t,
81
74
  editorInputEle,
82
75
  sendMsg,
83
- isMessageDisableByAdmin,
84
- cannotSendMessage,
76
+ isMessageDisabled,
85
77
  sendMessage,
86
78
  handleChooseEmoji,
87
79
  isEmojiToolbarVisible,
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const index_vue_vue_type_script_setup_true_lang = require("./index.vue2.js");
4
4
  require("./index.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
6
- const MemberControl = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-bee0d25c"]]);
6
+ const MemberControl = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-4309b988"]]);
7
7
  exports.default = MemberControl;
@@ -41,15 +41,15 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
41
41
  showMoreControl.value = false;
42
42
  }
43
43
  });
44
- function toggleClickMoreBtn() {
44
+ async function toggleClickMoreBtn() {
45
45
  if (showMoreControl.value) {
46
46
  showMoreControl.value = false;
47
47
  } else {
48
- handleDropDownPosition();
48
+ await handleDropDownPosition();
49
49
  showMoreControl.value = true;
50
50
  }
51
51
  }
52
- function handleDropDownPosition() {
52
+ async function handleDropDownPosition() {
53
53
  var _a, _b, _c;
54
54
  const { top, bottom } = (_a = moreBtnRef.value) == null ? void 0 : _a.getBoundingClientRect();
55
55
  const { top: containerTop, bottom: containerBottom } = (_b = document.getElementById("memberListContainer")) == null ? void 0 : _b.getBoundingClientRect();
@@ -61,6 +61,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
61
61
  let dropDownContainerHeight = 0;
62
62
  if (!showMoreControl.value) {
63
63
  operateListRef.value.style = "display:block;position:absolute;z-index:-1000";
64
+ await Vue.nextTick();
64
65
  dropDownContainerHeight = operateListRef.value.offsetHeight;
65
66
  operateListRef.value.style = "";
66
67
  } else {
@@ -35,7 +35,14 @@ function useMemberControl(props) {
35
35
  });
36
36
  const kickOffDialogContent = Vue.computed(() => t("whether to kick sb off the room", { name: props.userInfo.userName || props.userInfo.userId }));
37
37
  const transferOwnerTitle = Vue.computed(() => t("Transfer the roomOwner to sb", { name: props.userInfo.userName || props.userInfo.userId }));
38
- const { isFreeSpeakMode, isSpeakAfterTakingSeatMode, localUser, isGeneralUser } = pinia.storeToRefs(roomStore);
38
+ const {
39
+ isFreeSpeakMode,
40
+ isSpeakAfterTakingSeatMode,
41
+ localUser,
42
+ isGeneralUser,
43
+ anchorUserList,
44
+ maxSeatCount
45
+ } = pinia.storeToRefs(roomStore);
39
46
  const {
40
47
  agreeUserOnStage,
41
48
  denyUserOnStage,
@@ -105,19 +112,19 @@ function useMemberControl(props) {
105
112
  const chatControl = Vue.computed(() => ({
106
113
  key: "chatControl",
107
114
  icon: ChatForbiddenIcon.default,
108
- title: props.userInfo.isChatMutedByMasterOrAdmin ? t("Enable chat") : t("Disable chat"),
115
+ title: props.userInfo.isMessageDisabled ? t("Enable chat") : t("Disable chat"),
109
116
  func: disableUserChat
110
117
  }));
111
118
  const transferOwner = Vue.computed(() => ({
112
119
  key: "transferOwner",
113
120
  icon: TransferOwnerIcon.default,
114
- title: t("Transfer owner"),
121
+ title: t("Make host"),
115
122
  func: () => handleOpenDialog("transferOwner")
116
123
  }));
117
124
  const setOrRevokeAdmin = Vue.computed(() => ({
118
125
  key: "setOrRevokeAdmin",
119
126
  icon: props.userInfo.userRole === TUIRoomEngine.TUIRole.kAdministrator ? RevokeAdminIcon.default : SetAdminIcon.default,
120
- title: props.userInfo.userRole === TUIRoomEngine.TUIRole.kAdministrator ? t("Revoke administrator") : t("Set as administrator"),
127
+ title: props.userInfo.userRole === TUIRoomEngine.TUIRole.kAdministrator ? t("Remove administrator") : t("Set as administrator"),
121
128
  func: handleSetOrRevokeAdmin
122
129
  }));
123
130
  const kickUser = Vue.computed(() => ({
@@ -145,6 +152,14 @@ function useMemberControl(props) {
145
152
  if (isInvitingUserToAnchor) {
146
153
  cancelInviteUserOnStage(userInfo);
147
154
  } else {
155
+ if (anchorUserList.value.length === maxSeatCount.value) {
156
+ Message.default({
157
+ type: "warning",
158
+ message: `${t("The stage is full")}`,
159
+ duration: message.MESSAGE_DURATION.NORMAL
160
+ });
161
+ return;
162
+ }
148
163
  inviteUserOnStage(userInfo);
149
164
  }
150
165
  }
@@ -240,14 +255,22 @@ function useMemberControl(props) {
240
255
  }
241
256
  }
242
257
  }
243
- function disableUserChat(userInfo) {
258
+ async function disableUserChat(userInfo) {
244
259
  var _a;
245
- const currentState = userInfo.isChatMutedByMasterOrAdmin;
246
- roomStore.setMuteUserChat(userInfo.userId, !currentState);
247
- (_a = roomEngine.instance) == null ? void 0 : _a.disableSendingMessageByAdmin({
248
- userId: userInfo.userId,
249
- isDisable: !currentState
250
- });
260
+ const { isMessageDisabled } = userInfo;
261
+ try {
262
+ await ((_a = roomEngine.instance) == null ? void 0 : _a.disableSendingMessageByAdmin({
263
+ userId: userInfo.userId,
264
+ isDisable: !isMessageDisabled
265
+ }));
266
+ roomStore.setMuteUserChat(userInfo.userId, !isMessageDisabled);
267
+ } catch (error) {
268
+ Message.default({
269
+ type: "error",
270
+ message: t("Failed to disable chat"),
271
+ duration: message.MESSAGE_DURATION.NORMAL
272
+ });
273
+ }
251
274
  }
252
275
  async function kickOffUser(userInfo) {
253
276
  var _a;
@@ -273,7 +296,7 @@ function useMemberControl(props) {
273
296
  } catch (error) {
274
297
  Message.default({
275
298
  type: "error",
276
- message: t("Transfer owner failed, please try again."),
299
+ message: t("Make host failed, please try again."),
277
300
  duration: message.MESSAGE_DURATION.NORMAL
278
301
  });
279
302
  }
@@ -139,7 +139,8 @@ function useIndex() {
139
139
  }
140
140
  const applyToAnchorUserContent = Vue.computed(() => {
141
141
  var _a, _b;
142
- const userName = ((_a = applyToAnchorList.value[0]) == null ? void 0 : _a.userName) || ((_b = applyToAnchorList.value[0]) == null ? void 0 : _b.userId);
142
+ const lastIndex = applyToAnchorList.value.length - 1;
143
+ const userName = ((_a = applyToAnchorList.value[lastIndex]) == null ? void 0 : _a.userName) || ((_b = applyToAnchorList.value[lastIndex]) == null ? void 0 : _b.userId);
143
144
  if (applyToAnchorList.value.length === 1) {
144
145
  return `${userName} ${t("Applying for the stage")}`;
145
146
  }
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const MemberApplyControl_vue_vue_type_script_setup_true_lang = require("./MemberApplyControl.vue2.js");
4
4
  require("./MemberApplyControl.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
6
- const MemberApplyControl = /* @__PURE__ */ _pluginVue_exportHelper.default(MemberApplyControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-24ecea29"]]);
6
+ const MemberApplyControl = /* @__PURE__ */ _pluginVue_exportHelper.default(MemberApplyControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-915fbd92"]]);
7
7
  exports.default = MemberApplyControl;
@@ -109,7 +109,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
109
109
  Message.default({ type: "warning", message: t("Application to go on stage was rejected") });
110
110
  break;
111
111
  case TUIRoomEngine.TUIRequestCallbackType.kRequestTimeout:
112
- Message.default({ type: "warning", message: t("Failed to go on stage, invitation has timed out") });
112
+ Message.default({ type: "warning", message: t("The request to go on stage has timed out") });
113
113
  break;
114
114
  }
115
115
  }
@@ -179,7 +179,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
179
179
  }));
180
180
  } catch (error) {
181
181
  if (error.code === TUIRoomEngine.TUIErrorCode.ERR_ALL_SEAT_OCCUPIED) {
182
- Message.default({ type: "warning", message: t("The current number of people on stage has reached the limit") });
182
+ Message.default({ type: "warning", message: t("The stage is full, please contact the host") });
183
183
  } else {
184
184
  index$1.default.error("Failure of a user to accept/reject a roomOwner invitation", error);
185
185
  }
@@ -147,7 +147,7 @@ function useEndControl() {
147
147
  }
148
148
  handleUpdateSeatApplicationList();
149
149
  }
150
- if (chatStore.isMessageDisableByAdmin) {
150
+ if (chatStore.isMessageDisabled) {
151
151
  (_b = roomEngine.instance) == null ? void 0 : _b.disableSendingMessageByAdmin({
152
152
  userId,
153
153
  isDisable: false
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const VirtualBackground_vue_vue_type_script_setup_true_lang = require("./VirtualBackground.vue2.js");
4
4
  require("./VirtualBackground.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.js");
6
- const VirtualBackground = /* @__PURE__ */ _pluginVue_exportHelper.default(VirtualBackground_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-f058868a"]]);
6
+ const VirtualBackground = /* @__PURE__ */ _pluginVue_exportHelper.default(VirtualBackground_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-46cc60bc"]]);
7
7
  exports.default = VirtualBackground;
@@ -12,46 +12,75 @@ require("../../services/manager/roomActionManager.js");
12
12
  const index$1 = require("../common/base/Dialog/index.vue.js");
13
13
  const closeVirtualBackground = require("../../assets/imgs/close-virtual-background.png.js");
14
14
  const blurredBackground = require("../../assets/imgs/blurred-background.png.js");
15
- const _withScopeId = (n) => (Vue.pushScopeId("data-v-f058868a"), n = n(), Vue.popScopeId(), n);
15
+ const Button = require("../common/base/Button.vue.js");
16
16
  const _hoisted_1 = {
17
17
  key: 0,
18
18
  class: "virtualBackground-control-container"
19
19
  };
20
- const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ Vue.createElementVNode("div", {
20
+ const _hoisted_2 = {
21
21
  id: "stream-preview",
22
22
  class: "stream-preview"
23
- }, null, -1));
24
- const _hoisted_3 = { class: "setting" };
25
- const _hoisted_4 = { class: "setting-item-icon" };
26
- const _hoisted_5 = ["src"];
23
+ };
24
+ const _hoisted_3 = {
25
+ key: 0,
26
+ class: "mask"
27
+ };
28
+ const _hoisted_4 = {
29
+ key: 1,
30
+ class: "spinner"
31
+ };
32
+ const _hoisted_5 = { class: "setting" };
27
33
  const _hoisted_6 = { class: "setting-item-icon" };
28
34
  const _hoisted_7 = ["src"];
35
+ const _hoisted_8 = { class: "setting-item-icon" };
36
+ const _hoisted_9 = ["src"];
37
+ const _hoisted_10 = { class: "footer" };
29
38
  const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
30
39
  __name: "VirtualBackground",
31
40
  setup(__props) {
32
41
  const { t } = index.useI18n();
33
42
  const componentConfig = roomService.roomService.componentManager.getComponentConfig("VirtualBackground");
34
- const currentVirtualBackground = Vue.ref("close");
43
+ const isAllowed = Vue.computed(() => roomService.roomService.roomStore.localStream.hasVideoStream);
44
+ const appliedBackground = Vue.ref("close");
45
+ const selectedBackground = Vue.ref("close");
35
46
  const isDialogVisible = Vue.ref(false);
47
+ const isLoading = Vue.ref(false);
36
48
  const openSettingPanel = async () => {
37
49
  var _a;
38
50
  roomService.roomService.virtualBackground.initVirtualBackground();
39
51
  isDialogVisible.value = true;
52
+ isLoading.value = true;
40
53
  await Vue.nextTick();
41
- (_a = roomService.roomService.roomEngine.instance) == null ? void 0 : _a.startCameraDeviceTest({ view: "stream-preview" });
54
+ await ((_a = roomService.roomService.roomEngine.instance) == null ? void 0 : _a.startCameraDeviceTest({ view: "stream-preview" }));
55
+ await applyVirtualBackground(appliedBackground.value);
56
+ isLoading.value = false;
42
57
  };
43
- const closeSettingPanel = () => {
58
+ const closeSettingPanel = async () => {
44
59
  var _a;
45
60
  isDialogVisible.value = false;
46
61
  (_a = roomService.roomService.roomEngine.instance) == null ? void 0 : _a.stopCameraDeviceTest();
62
+ selectedBackground.value = appliedBackground.value;
47
63
  };
48
- const openBlurredBackground = () => {
49
- currentVirtualBackground.value = "blur";
50
- roomService.roomService.virtualBackground.toggleVirtualBackground(true);
64
+ const confirmVirtualBackground = async () => {
65
+ if (!isAllowed.value)
66
+ return;
67
+ appliedBackground.value = selectedBackground.value;
68
+ closeSettingPanel();
69
+ if (selectedBackground.value === "blur") {
70
+ await roomService.roomService.virtualBackground.toggleVirtualBackground(true);
71
+ }
72
+ if (selectedBackground.value === "close") {
73
+ await roomService.roomService.virtualBackground.toggleVirtualBackground(false);
74
+ }
51
75
  };
52
- const closeVirtualBackground$1 = () => {
53
- currentVirtualBackground.value = "close";
54
- roomService.roomService.virtualBackground.toggleVirtualBackground(false);
76
+ const applyVirtualBackground = async (type) => {
77
+ isLoading.value = true;
78
+ try {
79
+ selectedBackground.value = type;
80
+ await roomService.roomService.virtualBackground.toggleTestVirtualBackground(type === "blur");
81
+ } finally {
82
+ isLoading.value = false;
83
+ }
55
84
  };
56
85
  return (_ctx, _cache) => {
57
86
  return Vue.unref(componentConfig).visible ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
@@ -66,7 +95,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
66
95
  }, 8, ["title"]),
67
96
  Vue.createVNode(index$1.default, {
68
97
  modelValue: isDialogVisible.value,
69
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isDialogVisible.value = $event),
98
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isDialogVisible.value = $event),
70
99
  title: Vue.unref(t)("VirtualBackground"),
71
100
  width: "600px",
72
101
  modal: true,
@@ -74,33 +103,64 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
74
103
  onClose: closeSettingPanel
75
104
  }, {
76
105
  default: Vue.withCtx(() => [
77
- _hoisted_2,
78
- Vue.createElementVNode("div", _hoisted_3, [
106
+ Vue.createElementVNode("div", _hoisted_2, [
107
+ isLoading.value ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_3)) : Vue.createCommentVNode("", true),
108
+ isLoading.value ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_4)) : Vue.createCommentVNode("", true)
109
+ ]),
110
+ Vue.createElementVNode("div", _hoisted_5, [
79
111
  Vue.createElementVNode("div", {
80
- class: Vue.normalizeClass(["setting-item", currentVirtualBackground.value === "close" ? "active" : ""]),
81
- onClick: closeVirtualBackground$1
112
+ class: Vue.normalizeClass([
113
+ "setting-item",
114
+ selectedBackground.value === "close" ? "active" : ""
115
+ ]),
116
+ onClick: _cache[0] || (_cache[0] = ($event) => applyVirtualBackground("close"))
82
117
  }, [
83
- Vue.createElementVNode("i", _hoisted_4, [
118
+ Vue.createElementVNode("i", _hoisted_6, [
84
119
  Vue.createElementVNode("img", {
85
120
  src: Vue.unref(closeVirtualBackground.default),
86
121
  alt: "close",
87
122
  style: { "width": "32px" }
88
- }, null, 8, _hoisted_5)
123
+ }, null, 8, _hoisted_7)
89
124
  ]),
90
125
  Vue.createElementVNode("span", null, Vue.toDisplayString(Vue.unref(t)("Close")), 1)
91
126
  ], 2),
92
127
  Vue.createElementVNode("div", {
93
- class: Vue.normalizeClass(["setting-item", currentVirtualBackground.value === "blur" ? "active" : ""]),
94
- onClick: openBlurredBackground
128
+ class: Vue.normalizeClass([
129
+ "setting-item",
130
+ selectedBackground.value === "blur" ? "active" : ""
131
+ ]),
132
+ onClick: _cache[1] || (_cache[1] = ($event) => applyVirtualBackground("blur"))
95
133
  }, [
96
- Vue.createElementVNode("i", _hoisted_6, [
134
+ Vue.createElementVNode("i", _hoisted_8, [
97
135
  Vue.createElementVNode("img", {
98
136
  src: Vue.unref(blurredBackground.default),
99
137
  alt: "blurred"
100
- }, null, 8, _hoisted_7)
138
+ }, null, 8, _hoisted_9)
101
139
  ]),
102
140
  Vue.createElementVNode("span", null, Vue.toDisplayString(Vue.unref(t)("BlurredBackground")), 1)
103
141
  ], 2)
142
+ ]),
143
+ Vue.createElementVNode("div", _hoisted_10, [
144
+ Vue.createVNode(Button.default, {
145
+ class: "button",
146
+ disabled: !isAllowed.value,
147
+ onClick: confirmVirtualBackground
148
+ }, {
149
+ default: Vue.withCtx(() => [
150
+ Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("Save")), 1)
151
+ ]),
152
+ _: 1
153
+ }, 8, ["disabled"]),
154
+ Vue.createVNode(Button.default, {
155
+ class: "button",
156
+ type: "primary",
157
+ onClick: closeSettingPanel
158
+ }, {
159
+ default: Vue.withCtx(() => [
160
+ Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("Cancel")), 1)
161
+ ]),
162
+ _: 1
163
+ })
104
164
  ])
105
165
  ]),
106
166
  _: 1
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const index_vue_vue_type_script_setup_true_lang = require("./index.vue2.js");
4
4
  require("./index.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
6
- const RoomFooter = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-0175eb1f"]]);
6
+ const RoomFooter = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-cc1a7a3e"]]);
7
7
  exports.default = RoomFooter;
@@ -15,7 +15,6 @@ const index = require("../EndControl/index.vue.js");
15
15
  const SettingControl_vue_vue_type_script_setup_true_lang = require("../SettingControl.vue.js");
16
16
  const VirtualBackground = require("../VirtualBackground.vue.js");
17
17
  const useMitt = require("../../../hooks/useMitt.js");
18
- const index$1 = require("../../../utils/aegis/index.js");
19
18
  const useRoomFooterHooks = require("./useRoomFooterHooks.js");
20
19
  const _hoisted_1 = { class: "footer-container" };
21
20
  const _hoisted_2 = { class: "left-container" };
@@ -31,7 +30,6 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
31
30
  isAudience
32
31
  } = useRoomFooterHooks.default();
33
32
  function handleControlClick(name) {
34
- index$1.default.reportEvent({ name, ext1: name });
35
33
  useMitt.default.emit("experience-communication", name);
36
34
  }
37
35
  return (_ctx, _cache) => {
@@ -19,7 +19,7 @@ function useRoomInfo() {
19
19
  const basicStore = basic.useBasicStore();
20
20
  const roomStore = room.useRoomStore();
21
21
  const { roomId, isRoomLinkVisible } = pinia.storeToRefs(basicStore);
22
- const { masterUserId } = pinia.storeToRefs(roomStore);
22
+ const { masterUserId, roomName } = pinia.storeToRefs(roomStore);
23
23
  const { t } = index.useI18n();
24
24
  const isShowRoomInfo = Vue.ref(false);
25
25
  const roomType = Vue.computed(() => roomStore.isFreeSpeakMode ? t("Free Speech Room") : t("On-stage Speaking Room"));
@@ -27,7 +27,7 @@ function useRoomInfo() {
27
27
  const roomLinkConfig = roomService.roomService.getComponentConfig("RoomLink");
28
28
  const masterUserName = Vue.computed(() => roomStore.getUserName(masterUserId.value) || masterUserId.value);
29
29
  const isShowRoomInfoTitle = Vue.computed(() => masterUserName.value);
30
- const conferenceTitle = Vue.computed(() => `${masterUserName.value}${t("Quick Meeting")}`);
30
+ const conferenceTitle = Vue.computed(() => `${roomName.value}`);
31
31
  const roomInfoTabList = Vue.computed(() => [
32
32
  { id: 1, title: "Host", content: masterUserName.value, copyLink: "", isShowCopyIcon: false, visible: true },
33
33
  { id: 2, title: "Room Type", content: roomType.value, copyLink: "", isShowCopyIcon: false, visible: true },
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const LayoutControl_vue_vue_type_script_setup_true_lang = require("./LayoutControl.vue2.js");
4
4
  require("./LayoutControl.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
6
- const LayoutControl = /* @__PURE__ */ _pluginVue_exportHelper.default(LayoutControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-80cb6f9f"]]);
6
+ const LayoutControl = /* @__PURE__ */ _pluginVue_exportHelper.default(LayoutControl_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-7afa85d3"]]);
7
7
  exports.default = LayoutControl;
@@ -5,7 +5,6 @@ const render = require("../../../constants/render.js");
5
5
  const basic = require("../../../stores/basic.js");
6
6
  const room = require("../../../stores/room.js");
7
7
  const pinia = require("pinia");
8
- const index$1 = require("../../../utils/aegis/index.js");
9
8
  const index = require("../../../locales/index.js");
10
9
  const room$1 = require("../../../constants/room.js");
11
10
  const IconButton = require("../../common/base/IconButton.vue.js");
@@ -16,7 +15,7 @@ const roomService = require("../../../services/roomService.js");
16
15
  require("@tencentcloud/tuiroom-engine-electron");
17
16
  require("mitt");
18
17
  require("../../../services/manager/roomActionManager.js");
19
- const _withScopeId = (n) => (Vue.pushScopeId("data-v-80cb6f9f"), n = n(), Vue.popScopeId(), n);
18
+ const _withScopeId = (n) => (Vue.pushScopeId("data-v-7afa85d3"), n = n(), Vue.popScopeId(), n);
20
19
  const _hoisted_1 = {
21
20
  key: 0,
22
21
  class: "layout-container"
@@ -48,7 +47,6 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
48
47
  const layoutControlConfig = roomService.roomService.getComponentConfig("LayoutControl");
49
48
  function handleClick(layout2) {
50
49
  basicStore.setLayout(layout2);
51
- index$1.default.reportEvent({ name: "layout", ext1: layout2 });
52
50
  }
53
51
  function handleClickLayoutIcon() {
54
52
  if (isStreamNumberLessThanTwo.value) {
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const NetworkInfo_vue_vue_type_script_setup_true_lang = require("./NetworkInfo.vue2.js");
4
4
  require("./NetworkInfo.vue3.js");
5
5
  const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
6
- const NetworkInfo = /* @__PURE__ */ _pluginVue_exportHelper.default(NetworkInfo_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-7764fd2c"]]);
6
+ const NetworkInfo = /* @__PURE__ */ _pluginVue_exportHelper.default(NetworkInfo_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-4b8a18b9"]]);
7
7
  exports.default = NetworkInfo;
@@ -3,7 +3,6 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const Vue = require("vue");
4
4
  const basic = require("../../../stores/basic.js");
5
5
  const pinia = require("pinia");
6
- const index$1 = require("../../../utils/aegis/index.js");
7
6
  const index = require("../../../locales/index.js");
8
7
  const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-electron");
9
8
  const useRoomEngine = require("../../../hooks/useRoomEngine.js");
@@ -67,7 +66,6 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
67
66
  });
68
67
  function handleClickNetworkIcon() {
69
68
  showNetworkInfo.value = !showNetworkInfo.value;
70
- index$1.default.reportEvent({ name: "networkInfo", ext1: "networkInfo" });
71
69
  }
72
70
  function handleClickOutSide() {
73
71
  if (showNetworkInfo.value) {
@@ -4,7 +4,9 @@ const Vue = require("vue");
4
4
  const index = require("./index.vue.js");
5
5
  const MessageBox = ({ title, message, callback, confirmButtonText }) => {
6
6
  const container = document.createElement("div");
7
- const fullscreenElement = document.fullscreenElement || document.getElementById("roomContainer") || document.body;
7
+ const fullscreenElement = document.fullscreenElement || document.getElementById("roomContainer") || document.getElementById("pre-conference-container");
8
+ if (!fullscreenElement)
9
+ return;
8
10
  fullscreenElement.appendChild(container);
9
11
  const onRemove = () => {
10
12
  Vue.render(null, container);
@@ -55,7 +55,7 @@ declare class Conference implements IConference {
55
55
  tim?: ChatSDK;
56
56
  }): Promise<void>;
57
57
  logout(): Promise<void>;
58
- getRoomEngine(): any;
58
+ getRoomEngine(): TUIRoomEngine | null;
59
59
  on(eventType: RoomEvent, callback: () => any): void;
60
60
  off(eventType: RoomEvent, callback: () => void): void;
61
61
  start(roomId: string, params?: StartParams): Promise<void>;
package/lib/conference.js CHANGED
@@ -19,6 +19,14 @@ var RoomEvent = /* @__PURE__ */ ((RoomEvent2) => {
19
19
  RoomEvent2["USER_LOGOUT"] = "UserLogout";
20
20
  return RoomEvent2;
21
21
  })(RoomEvent || {});
22
+ var FeatureButton = /* @__PURE__ */ ((FeatureButton2) => {
23
+ FeatureButton2["SwitchTheme"] = "SwitchTheme";
24
+ FeatureButton2["SwitchLayout"] = "LayoutControl";
25
+ FeatureButton2["SwitchLanguage"] = "Language";
26
+ FeatureButton2["FullScreen"] = "FullScreen";
27
+ FeatureButton2["Invitation"] = "InviteControl";
28
+ return FeatureButton2;
29
+ })(FeatureButton || {});
22
30
  class Conference {
23
31
  login(params) {
24
32
  return roomService.roomService.initRoomKit(params);
@@ -77,5 +85,6 @@ class Conference {
77
85
  }
78
86
  }
79
87
  const conference = new Conference();
88
+ exports.FeatureButton = FeatureButton;
80
89
  exports.RoomEvent = RoomEvent;
81
90
  exports.conference = conference;
@@ -4,5 +4,5 @@ const conference_vue_vue_type_script_setup_true_lang = require("./conference.vue
4
4
  require("./conference.vue3.js");
5
5
  require("./conference.vue4.js");
6
6
  const _pluginVue_exportHelper = require("./_virtual/_plugin-vue_export-helper.js");
7
- const ConferenceMainView = /* @__PURE__ */ _pluginVue_exportHelper.default(conference_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-a415c478"]]);
7
+ const ConferenceMainView = /* @__PURE__ */ _pluginVue_exportHelper.default(conference_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-c315cc3d"]]);
8
8
  exports.default = ConferenceMainView;
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const Vue = require("vue");
4
- const index$1 = require("./components/RoomHeader/index/index.vue.js");
5
- const index$3 = require("./components/RoomFooter/index/index.vue.js");
4
+ const index = require("./components/RoomHeader/index/index.vue.js");
5
+ const index$2 = require("./components/RoomFooter/index/index.vue.js");
6
6
  const index_vue_vue_type_script_setup_true_lang = require("./components/RoomSidebar/index.vue.js");
7
- const index$2 = require("./components/RoomContent/index.vue.js");
8
- const index$4 = require("./components/RoomSetting/index.vue.js");
7
+ const index$1 = require("./components/RoomContent/index.vue.js");
8
+ const index$3 = require("./components/RoomSetting/index.vue.js");
9
9
  const utils = require("./utils/utils.js");
10
10
  const basic = require("./stores/basic.js");
11
11
  const environment = require("./utils/environment.js");
12
12
  const vTap = require("./directives/vTap.js");
13
- const index = require("./utils/aegis/index.js");
14
- const index$5 = require("./components/common/base/MessageBox/index.js");
13
+ const index$4 = require("./components/common/base/MessageBox/index.js");
15
14
  const Message = require("./components/common/base/Message/Message.js");
16
15
  require("./services/main.js");
17
16
  const roomService = require("./services/roomService.js");
@@ -60,7 +59,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
60
59
  callback = () => {
61
60
  }
62
61
  } = data;
63
- index$5.default({
62
+ index$4.default({
64
63
  title,
65
64
  message,
66
65
  confirmButtonText,
@@ -103,18 +102,6 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
103
102
  roomService.roomService.resetStore();
104
103
  });
105
104
  const { sdkAppId, showHeaderTool } = roomService.roomService.basicStore;
106
- Vue.watch(
107
- () => sdkAppId,
108
- (val) => {
109
- if (val) {
110
- index.default.setSdkAppId(val);
111
- index.default.reportEvent({
112
- name: "loaded",
113
- ext1: "loaded-success"
114
- });
115
- }
116
- }
117
- );
118
105
  const tuiRoomClass = Vue.computed(() => {
119
106
  const roomClassList = ["tui-room", `tui-theme-${roomService.roomService.basicStore.defaultTheme}`];
120
107
  if (environment.isMobile) {
@@ -232,13 +219,13 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
232
219
  ref: roomRef,
233
220
  class: Vue.normalizeClass(tuiRoomClass.value)
234
221
  }, [
235
- Vue.withDirectives(Vue.createVNode(index$1.default, {
222
+ Vue.withDirectives(Vue.createVNode(index.default, {
236
223
  class: "header",
237
224
  onLogOut: logOut
238
225
  }, null, 512), [
239
226
  [Vue.vShow, showRoomTool.value && Vue.unref(showHeaderTool)]
240
227
  ]),
241
- Vue.withDirectives(Vue.createVNode(index$2.default, {
228
+ Vue.withDirectives(Vue.createVNode(index$1.default, {
242
229
  ref_key: "roomContentRef",
243
230
  ref: roomContentRef,
244
231
  "show-room-tool": showRoomTool.value,
@@ -246,11 +233,11 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
246
233
  }, null, 8, ["show-room-tool"]), [
247
234
  [Vue.unref(vTap.default), handleRoomContentTap]
248
235
  ]),
249
- Vue.withDirectives(Vue.createVNode(index$3.default, { class: "footer" }, null, 512), [
236
+ Vue.withDirectives(Vue.createVNode(index$2.default, { class: "footer" }, null, 512), [
250
237
  [Vue.vShow, showRoomTool.value]
251
238
  ]),
252
239
  Vue.createVNode(index_vue_vue_type_script_setup_true_lang.default),
253
- Vue.createVNode(index$4.default)
240
+ Vue.createVNode(index$3.default)
254
241
  ], 2)) : Vue.createCommentVNode("", true);
255
242
  };
256
243
  }