@tencentcloud/roomkit-electron-vue3 2.7.0 → 2.7.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 (50) hide show
  1. package/es/components/AITools/AISubtitles.vue.mjs +1 -1
  2. package/es/components/AITools/AISubtitles.vue2.mjs +18 -19
  3. package/es/components/AITools/AITranscription.vue.mjs +1 -1
  4. package/es/components/AITools/AITranscription.vue2.mjs +65 -76
  5. package/es/components/ManageMember/MemberControl/index.vue.mjs +1 -1
  6. package/es/components/ManageMember/MemberControl/index.vue2.mjs +6 -4
  7. package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue.mjs +1 -1
  8. package/es/components/RoomFooter/BasicBeauty.vue.mjs +1 -1
  9. package/es/components/RoomFooter/BasicBeauty.vue2.mjs +3 -1
  10. package/es/components/RoomFooter/ChatControl.vue.mjs +2 -0
  11. package/es/components/ScheduleConference/ScheduleConferencePanel/index.vue2.mjs +1 -1
  12. package/es/components/ScheduleConference/ScheduleRoomControl.vue2.mjs +1 -1
  13. package/es/components/ScheduleConference/ScheduleRoomList.vue2.mjs +1 -1
  14. package/es/index.mjs +118 -110
  15. package/es/services/function/aiTask.d.ts +13 -17
  16. package/es/services/function/aiTask.mjs +63 -100
  17. package/es/services/manager/dataReportManager.d.ts +4 -1
  18. package/es/services/manager/dataReportManager.mjs +3 -0
  19. package/es/utils/utils.d.ts +2 -0
  20. package/es/utils/utils.mjs +33 -0
  21. package/lib/components/AITools/AISubtitles.vue.js +1 -1
  22. package/lib/components/AITools/AISubtitles.vue2.js +17 -18
  23. package/lib/components/AITools/AITranscription.vue.js +1 -1
  24. package/lib/components/AITools/AITranscription.vue2.js +64 -75
  25. package/lib/components/ManageMember/MemberControl/index.vue.js +1 -1
  26. package/lib/components/ManageMember/MemberControl/index.vue2.js +5 -3
  27. package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue.js +1 -1
  28. package/lib/components/RoomFooter/BasicBeauty.vue.js +1 -1
  29. package/lib/components/RoomFooter/BasicBeauty.vue2.js +3 -1
  30. package/lib/components/RoomFooter/ChatControl.vue.js +2 -0
  31. package/lib/components/ScheduleConference/ScheduleConferencePanel/index.vue2.js +1 -1
  32. package/lib/components/ScheduleConference/ScheduleRoomControl.vue2.js +1 -1
  33. package/lib/components/ScheduleConference/ScheduleRoomList.vue2.js +1 -1
  34. package/lib/index.js +118 -110
  35. package/lib/services/function/aiTask.d.ts +13 -17
  36. package/lib/services/function/aiTask.js +63 -100
  37. package/lib/services/manager/dataReportManager.d.ts +4 -1
  38. package/lib/services/manager/dataReportManager.js +3 -0
  39. package/lib/utils/utils.d.ts +2 -0
  40. package/lib/utils/utils.js +33 -0
  41. package/package.json +2 -2
  42. package/src/TUIRoom/components/AITools/AISubtitles.vue +26 -23
  43. package/src/TUIRoom/components/AITools/AITranscription.vue +106 -101
  44. package/src/TUIRoom/components/ManageMember/MemberControl/index.vue +8 -3
  45. package/src/TUIRoom/components/ManageMember/MemberItemCommon/MemberInfo.vue +1 -1
  46. package/src/TUIRoom/components/RoomFooter/BasicBeauty.vue +2 -1
  47. package/src/TUIRoom/components/RoomFooter/ChatControl.vue +2 -1
  48. package/src/TUIRoom/services/function/aiTask.ts +79 -113
  49. package/src/TUIRoom/services/manager/dataReportManager.ts +3 -0
  50. package/src/TUIRoom/utils/utils.ts +47 -0
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./AISubtitles.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const AISubtitlesOverlay = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-720279c8"]]);
4
+ const AISubtitlesOverlay = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c187363f"]]);
5
5
  export {
6
6
  AISubtitlesOverlay as default
7
7
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, onUnmounted, openBlock, createElementBlock, Fragment, renderList, toDisplayString, createCommentVNode } from "vue";
1
+ import { defineComponent, ref, computed, onMounted, onUnmounted, openBlock, createElementBlock, Fragment, renderList, toDisplayString, unref, createCommentVNode } from "vue";
2
2
  import "../../services/main.mjs";
3
3
  import { roomService } from "../../services/roomService.mjs";
4
4
  import "../../locales/index.mjs";
@@ -6,6 +6,7 @@ import "@tencentcloud/tuiroom-engine-electron";
6
6
  import "mitt";
7
7
  import "../../services/manager/roomActionManager.mjs";
8
8
  import "@tencentcloud/tui-core";
9
+ import { MetricsKey } from "../../services/manager/dataReportManager.mjs";
9
10
  import { AI_TASK } from "../../services/function/aiTask.mjs";
10
11
  const _hoisted_1 = {
11
12
  key: 0,
@@ -14,32 +15,30 @@ const _hoisted_1 = {
14
15
  const _sfc_main = /* @__PURE__ */ defineComponent({
15
16
  __name: "AISubtitles",
16
17
  setup(__props) {
17
- const rawSubtitleText = ref("");
18
- const subtitleLines = computed(
19
- () => rawSubtitleText.value.split("\n").filter((item) => item)
20
- );
21
- let subtitleTimeout = null;
22
- const resetSubtitleTimeout = () => {
23
- if (subtitleTimeout) {
24
- clearTimeout(subtitleTimeout);
25
- }
26
- subtitleTimeout = setTimeout(() => {
27
- rawSubtitleText.value = "";
28
- }, 3e3);
29
- };
18
+ const subtitleMessages = ref({});
19
+ const subtitleLines = computed(() => {
20
+ const arr = Object.keys(subtitleMessages.value).map((userId) => {
21
+ return subtitleMessages.value[userId];
22
+ });
23
+ return arr.sort((a, b) => a.startMsTs - b.startMsTs);
24
+ });
30
25
  const handleAISubtitles = (data) => {
31
26
  if (!data) return;
32
- rawSubtitleText.value = data.subtitleText.value;
33
- resetSubtitleTimeout();
27
+ subtitleMessages.value = Object.assign({}, data.subtitleMessages);
34
28
  };
35
- roomService.aiTask.on(AI_TASK.TRANSCRIPTION_TASK, handleAISubtitles);
29
+ onMounted(() => {
30
+ roomService.dataReportManager.reportCount(MetricsKey.AITask);
31
+ roomService.aiTask.on(AI_TASK.TRANSCRIPTION_TASK, handleAISubtitles);
32
+ });
36
33
  onUnmounted(() => {
37
34
  roomService.aiTask.off(AI_TASK.TRANSCRIPTION_TASK, handleAISubtitles);
38
35
  });
39
36
  return (_ctx, _cache) => {
40
37
  return subtitleLines.value.length ? (openBlock(), createElementBlock("div", _hoisted_1, [
41
- (openBlock(true), createElementBlock(Fragment, null, renderList(subtitleLines.value, (line, index) => {
42
- return openBlock(), createElementBlock("div", { key: index }, toDisplayString(line), 1);
38
+ (openBlock(true), createElementBlock(Fragment, null, renderList(subtitleLines.value, (line) => {
39
+ return openBlock(), createElementBlock("div", {
40
+ key: line.sender
41
+ }, toDisplayString(`${unref(roomService).roomStore.getDisplayName(line.sender)}: ${line == null ? void 0 : line.text}`), 1);
43
42
  }), 128))
44
43
  ])) : createCommentVNode("", true);
45
44
  };
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./AITranscription.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const AITranscription = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ef9f284c"]]);
4
+ const AITranscription = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-631b02ec"]]);
5
5
  export {
6
6
  AITranscription as default
7
7
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, onMounted, nextTick, computed, openBlock, createElementBlock, Fragment, renderList, createElementVNode, toDisplayString } from "vue";
1
+ import { defineComponent, ref, onMounted, nextTick, computed, watch, onUnmounted, openBlock, createElementBlock, Fragment, renderList, createElementVNode, toDisplayString, unref } from "vue";
2
2
  import "../../services/main.mjs";
3
3
  import { roomService } from "../../services/roomService.mjs";
4
4
  import "../../locales/index.mjs";
@@ -6,108 +6,97 @@ import "@tencentcloud/tuiroom-engine-electron";
6
6
  import "mitt";
7
7
  import "../../services/manager/roomActionManager.mjs";
8
8
  import "@tencentcloud/tui-core";
9
+ import { MetricsKey } from "../../services/manager/dataReportManager.mjs";
9
10
  import { AI_TASK } from "../../services/function/aiTask.mjs";
11
+ import { formatTimestampToTime } from "../../utils/utils.mjs";
10
12
  const _hoisted_1 = { class: "title" };
11
13
  const _hoisted_2 = { class: "speaker" };
12
14
  const _hoisted_3 = { class: "timestamp" };
13
- const _hoisted_4 = { class: "content" };
15
+ const timeInterval = 60 * 1e3;
14
16
  const _sfc_main = /* @__PURE__ */ defineComponent({
15
17
  __name: "AITranscription",
16
18
  setup(__props) {
17
- const conversationContainer = ref(null);
18
- onMounted(() => scrollToBottom());
19
- const processedConversations = ref(processConversation(roomService.aiTask.transcriptionText.value));
19
+ const conversationContainerRef = ref();
20
+ const isUserScrolling = ref(false);
21
+ const rawTranscribedMessageList = ref(
22
+ roomService.aiTask.transcribedMessageList
23
+ );
24
+ onMounted(() => {
25
+ scrollToBottom();
26
+ });
20
27
  const scrollToBottom = async () => {
21
- if (conversationContainer.value) {
28
+ if (conversationContainerRef.value && !isUserScrolling.value) {
22
29
  await nextTick();
23
- conversationContainer.value.scrollIntoView({ block: "end" });
30
+ conversationContainerRef.value.scrollTop = conversationContainerRef.value.scrollHeight;
31
+ }
32
+ };
33
+ const handleScroll = () => {
34
+ if (conversationContainerRef.value) {
35
+ const isAtBottom = conversationContainerRef.value.scrollTop + conversationContainerRef.value.clientHeight >= conversationContainerRef.value.scrollHeight - 5;
36
+ if (isAtBottom) {
37
+ isUserScrolling.value = false;
38
+ scrollToBottom();
39
+ } else {
40
+ isUserScrolling.value = true;
41
+ }
24
42
  }
25
43
  };
26
- const conversations = computed(() => {
27
- const result = [];
28
- let currentSpeaker = null;
29
- let currentTimestamp = null;
30
- let currentMessages = [];
31
- processedConversations.value.forEach((item) => {
32
- const [start, end] = item.timestamp.split("->");
33
- const timestampMinute = start.slice(0, 5);
34
- if (item.speaker === currentSpeaker && timestampMinute === currentTimestamp) {
35
- currentMessages.push(item.content);
44
+ const transcribedMessageList = computed(() => {
45
+ const aggregatedMessageList = [];
46
+ let currentAggregatedMessage = null;
47
+ for (const message of rawTranscribedMessageList.value) {
48
+ if (!currentAggregatedMessage || message.sender !== currentAggregatedMessage.sender || message.startMsTs - currentAggregatedMessage.startMsTs > timeInterval) {
49
+ currentAggregatedMessage = {
50
+ messages: [message],
51
+ sender: message.sender,
52
+ startMsTs: message.startMsTs
53
+ };
54
+ aggregatedMessageList.push(currentAggregatedMessage);
36
55
  } else {
37
- if (currentSpeaker !== null) {
38
- result.push({
39
- timestamp: currentTimestamp,
40
- speaker: currentSpeaker,
41
- messages: currentMessages
42
- });
43
- }
44
- currentSpeaker = item.speaker;
45
- currentTimestamp = timestampMinute;
46
- currentMessages = [item.content];
56
+ currentAggregatedMessage.messages.push(message);
47
57
  }
48
- });
49
- if (currentSpeaker !== null) {
50
- result.push({
51
- timestamp: currentTimestamp,
52
- speaker: currentSpeaker,
53
- messages: currentMessages
54
- });
55
58
  }
56
- return result;
59
+ return aggregatedMessageList;
57
60
  });
58
- roomService.aiTask.on(AI_TASK.TRANSCRIPTION_TASK, (data) => {
61
+ watch(rawTranscribedMessageList, () => {
62
+ scrollToBottom();
63
+ });
64
+ const handleAITranscriptionTask = async (data) => {
59
65
  if (!data) return;
60
- processedConversations.value = processConversation(
61
- data.transcriptionText.value
62
- );
66
+ rawTranscribedMessageList.value = [...data.transcribedMessageList];
67
+ };
68
+ onMounted(() => {
69
+ roomService.dataReportManager.reportCount(MetricsKey.AITask);
70
+ roomService.aiTask.on(AI_TASK.TRANSCRIPTION_TASK, handleAITranscriptionTask);
71
+ });
72
+ onUnmounted(() => {
73
+ roomService.aiTask.off(AI_TASK.TRANSCRIPTION_TASK, handleAITranscriptionTask);
63
74
  });
64
- function processConversation(data) {
65
- const pattern = /(\d{2}:\d{2}:\d{2}->\d{2}:\d{2}:\d{2})\s+([\u4e00-\u9fa5\w]+):\s*(.*)/;
66
- const conversations2 = [];
67
- const lines = data.split("\n");
68
- lines.forEach((line) => {
69
- const match = pattern.exec(line);
70
- if (match) {
71
- const timestamp = match[1];
72
- const speaker = match[2];
73
- const content = match[3];
74
- conversations2.push({
75
- timestamp,
76
- speaker,
77
- content
78
- });
79
- }
80
- });
81
- conversations2.sort((a, b) => {
82
- const timeA = a.timestamp.split("->")[0];
83
- const timeB = b.timestamp.split("->")[0];
84
- return timeA.localeCompare(timeB);
85
- });
86
- return conversations2;
87
- }
88
75
  return (_ctx, _cache) => {
89
76
  return openBlock(), createElementBlock("div", {
90
77
  class: "conversation",
91
- ref_key: "conversationContainer",
92
- ref: conversationContainer
78
+ ref_key: "conversationContainerRef",
79
+ ref: conversationContainerRef,
80
+ onScroll: handleScroll
93
81
  }, [
94
- (openBlock(true), createElementBlock(Fragment, null, renderList(conversations.value, (item, index) => {
82
+ (openBlock(true), createElementBlock(Fragment, null, renderList(transcribedMessageList.value, (group) => {
95
83
  return openBlock(), createElementBlock("div", {
96
- key: index,
97
- class: "conversation-item"
84
+ key: group.startMsTs,
85
+ class: "conversation-group"
98
86
  }, [
99
87
  createElementVNode("div", _hoisted_1, [
100
- createElementVNode("span", _hoisted_2, toDisplayString(item.speaker), 1),
101
- createElementVNode("span", _hoisted_3, toDisplayString(item.timestamp), 1)
88
+ createElementVNode("span", _hoisted_2, toDisplayString(unref(roomService).roomStore.getDisplayName(group.sender)), 1),
89
+ createElementVNode("span", _hoisted_3, toDisplayString(unref(formatTimestampToTime)(group.startMsTs)), 1)
102
90
  ]),
103
- createElementVNode("div", _hoisted_4, [
104
- (openBlock(true), createElementBlock(Fragment, null, renderList(item.messages, (msg, msgIndex) => {
105
- return openBlock(), createElementBlock("div", { key: msgIndex }, toDisplayString(msg), 1);
106
- }), 128))
107
- ])
91
+ (openBlock(true), createElementBlock(Fragment, null, renderList(group.messages, (message, messageIndex) => {
92
+ return openBlock(), createElementBlock("div", {
93
+ key: messageIndex,
94
+ class: "content"
95
+ }, toDisplayString(message.text), 1);
96
+ }), 128))
108
97
  ]);
109
98
  }), 128))
110
- ], 512);
99
+ ], 544);
111
100
  };
112
101
  }
113
102
  });
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./index.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const MemberControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6cb30e2c"]]);
4
+ const MemberControl = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7b4cb2fa"]]);
5
5
  export {
6
6
  MemberControl as default
7
7
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, ref, watch, openBlock, createElementBlock, unref, createBlock, withCtx, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, createVNode, normalizeClass, withDirectives, Fragment, renderList, vShow, isRef, nextTick } from "vue";
1
+ import { defineComponent, computed, ref, watch, openBlock, createElementBlock, createBlock, withCtx, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, createVNode, unref, normalizeClass, withDirectives, Fragment, renderList, vShow, isRef, nextTick } from "vue";
2
2
  import { useI18n } from "../../../locales/index.mjs";
3
3
  import TuiButton from "../../common/base/Button.vue.mjs";
4
4
  import Dialog from "../../common/base/Dialog/index.vue.mjs";
@@ -29,9 +29,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
29
29
  tempUserName
30
30
  } = useMemberControl(props);
31
31
  const { isCanOperateMySelf } = useMemberItem(props.userInfo);
32
- const singleControl = computed(() => controlList.value[0]);
32
+ const singleControl = computed(() => {
33
+ return isCanOperateMySelf.value ? null : controlList.value[0];
34
+ });
33
35
  const moreControlList = computed(() => {
34
- return isCanOperateMySelf ? controlList.value : controlList.value.slice(1);
36
+ return isCanOperateMySelf.value ? controlList.value : controlList.value.slice(1);
35
37
  });
36
38
  const dropdownClass = ref("down");
37
39
  const moreBtnRef = ref();
@@ -80,7 +82,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
80
82
  }
81
83
  return (_ctx, _cache) => {
82
84
  return openBlock(), createElementBlock("div", _hoisted_1, [
83
- !unref(isCanOperateMySelf) ? (openBlock(), createBlock(TuiButton, {
85
+ singleControl.value ? (openBlock(), createBlock(TuiButton, {
84
86
  key: 0,
85
87
  class: "button",
86
88
  size: "default",
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./MemberInfo.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const MemberInfo = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-cba7feb3"]]);
4
+ const MemberInfo = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8d1bfc30"]]);
5
5
  export {
6
6
  MemberInfo as default
7
7
  };
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./BasicBeauty.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const BasicBeauty = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-211cd54c"]]);
4
+ const BasicBeauty = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2e9e258c"]]);
5
5
  export {
6
6
  BasicBeauty as default
7
7
  };
@@ -10,7 +10,9 @@ import { TRTCVideoMirrorType, TRTCVideoRotation, TRTCVideoFillMode } from "@tenc
10
10
  import "mitt";
11
11
  import "../../services/manager/roomActionManager.mjs";
12
12
  import "@tencentcloud/tui-core";
13
+ import { MetricsKey } from "../../services/manager/dataReportManager.mjs";
13
14
  import { isMobile } from "../../utils/environment.mjs";
15
+ import { throttle } from "../../utils/utils.mjs";
14
16
  import Dialog from "../common/base/Dialog/index.vue.mjs";
15
17
  import TuiButton from "../common/base/Button.vue.mjs";
16
18
  import Slider from "../common/base/Slider.vue.mjs";
@@ -23,7 +25,6 @@ import CompareIcon from "../common/icons/CompareIcon.vue.mjs";
23
25
  import useGetRoomEngine from "../../hooks/useRoomEngine.mjs";
24
26
  import { useBasicStore } from "../../stores/basic.mjs";
25
27
  import { TRTCBeautyStyle } from "../../constants/room.mjs";
26
- import { throttle } from "../../utils/utils.mjs";
27
28
  const _hoisted_1 = {
28
29
  key: 0,
29
30
  class: "basicBeauty-control-container"
@@ -114,6 +115,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
114
115
  view: "test-preview"
115
116
  }));
116
117
  isLoading.value = false;
118
+ roomService.dataReportManager.reportCount(MetricsKey.setBasicBeauty);
117
119
  };
118
120
  const closeBeautySettingPanel = async () => {
119
121
  var _a;
@@ -12,6 +12,7 @@ import "@tencentcloud/tuiroom-engine-electron";
12
12
  import "mitt";
13
13
  import "../../services/manager/roomActionManager.mjs";
14
14
  import "@tencentcloud/tui-core";
15
+ import { MetricsKey } from "../../services/manager/dataReportManager.mjs";
15
16
  import "../../utils/environment.mjs";
16
17
  const _hoisted_1 = {
17
18
  key: 0,
@@ -34,6 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
34
35
  basicStore.setSidebarOpenStatus(true);
35
36
  basicStore.setSidebarName("chat");
36
37
  chatStore.updateUnReadCount(0);
38
+ roomService.dataReportManager.reportCount(MetricsKey.openChat);
37
39
  }
38
40
  return (_ctx, _cache) => {
39
41
  return unref(chatControlConfig).visible ? (openBlock(), createElementBlock("div", _hoisted_1, [
@@ -25,8 +25,8 @@ import "mitt";
25
25
  import "../../../services/manager/roomActionManager.mjs";
26
26
  import "@tencentcloud/tui-core";
27
27
  import "../../../utils/environment.mjs";
28
- import { PASSWORD_MAX_LENGTH_LIMIT } from "../../../constants/room.mjs";
29
28
  import { deepClone, calculateByteLength } from "../../../utils/utils.mjs";
29
+ import { PASSWORD_MAX_LENGTH_LIMIT } from "../../../constants/room.mjs";
30
30
  import { invalidDigitalPasswordRegex } from "../../../utils/common.mjs";
31
31
  import { getDateAndTime, convertToTimestamp, calculateEndTime } from "../scheduleUtils.mjs";
32
32
  import SvgIcon from "../../common/base/SvgIcon.vue.mjs";
@@ -8,6 +8,7 @@ import "mitt";
8
8
  import "../../services/manager/roomActionManager.mjs";
9
9
  import "@tencentcloud/tui-core";
10
10
  import { isMobile } from "../../utils/environment.mjs";
11
+ import { convertSecondsToHMS, getUrlWithRoomId } from "../../utils/utils.mjs";
11
12
  import useRoomInfo from "../RoomHeader/RoomInfo/useRoomInfoHooks.mjs";
12
13
  import SvgIcon from "../common/base/SvgIcon.vue.mjs";
13
14
  import Dialog from "../common/base/Dialog/index.vue.mjs";
@@ -20,7 +21,6 @@ import WarningIcon from "../common/icons/WarningIcon.vue.mjs";
20
21
  import TuiButton from "../common/base/Button.vue.mjs";
21
22
  import vClickOutside from "../../directives/vClickOutside.mjs";
22
23
  import ScheduleConferencePanel from "./ScheduleConferencePanel/index.vue.mjs";
23
- import { convertSecondsToHMS, getUrlWithRoomId } from "../../utils/utils.mjs";
24
24
  import { useBasicStore } from "../../stores/basic.mjs";
25
25
  import { storeToRefs } from "pinia";
26
26
  import ConferenceDetail from "./ConferenceDetail.vue.mjs";
@@ -8,12 +8,12 @@ import "mitt";
8
8
  import "../../services/manager/roomActionManager.mjs";
9
9
  import "@tencentcloud/tui-core";
10
10
  import { isMobile } from "../../utils/environment.mjs";
11
+ import { objectMerge } from "../../utils/utils.mjs";
11
12
  import SvgIcon from "../common/base/SvgIcon.vue.mjs";
12
13
  import CalendarIcon from "../common/icons/CalendarIcon.vue.mjs";
13
14
  import ApplyStageLabelIcon from "../common/icons/ApplyStageLabelIcon.vue.mjs";
14
15
  import ScheduleRoomControl from "./ScheduleRoomControl.vue.mjs";
15
16
  import LoadingScheduleIcon from "../common/icons/LoadingScheduleIcon.vue.mjs";
16
- import { objectMerge } from "../../utils/utils.mjs";
17
17
  const _hoisted_1 = {
18
18
  key: 0,
19
19
  class: "schedule-loading"