UNPKG

@tencentcloud/roomkit-electron-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

150 lines (149 loc) 6.48 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const Vue = require("vue"); const pinia = require("pinia"); const electron = require("electron"); const SvgIcon = require("../../../common/base/SvgIcon.vue.js"); const ScreenSharingIcon = require("../../../common/icons/ScreenSharingIcon.vue.js"); const Button = require("../../../common/base/Button.vue.js"); const index$1 = require("../../../common/base/Dialog/index.vue.js"); const useMitt = require("../../../../hooks/useMitt.js"); const index = require("../../../../locales/index.js"); const room = require("../../../../stores/room.js"); const dataReportManager = require("../../../../services/manager/dataReportManager.js"); require("../../../../services/main.js"); const roomService = require("../../../../services/roomService.js"); require("@tencentcloud/tuiroom-engine-electron"); require("../../../../utils/environment.js"); require("mitt"); require("../../../../services/manager/roomActionManager.js"); require("@tencentcloud/tui-core"); const _hoisted_1 = { class: "local-screen-info" }; const _hoisted_2 = { class: "text" }; const _sfc_main = /* @__PURE__ */ Vue.defineComponent({ __name: "index", setup(__props) { var _a; const roomStore = room.useRoomStore(); const { t } = index.useI18n(); const showStopShareRegion = Vue.ref(false); const localScreenContainerRef = Vue.ref(); const isMiniRegion = Vue.ref(false); const { isAnnotationVisible, isSharingScreen } = pinia.storeToRefs(roomStore); const annotationSwitchLabel = Vue.computed(() => { return isAnnotationVisible.value ? t("End annotating") : t("Start annotating"); }); function openStopConfirmDialog() { showStopShareRegion.value = true; } function stopScreenSharing() { showStopShareRegion.value = false; useMitt.default.emit("ScreenShare:stopScreenShare"); } const resizeObserver = new ResizeObserver(() => { var _a2; isMiniRegion.value = ((_a2 = localScreenContainerRef.value) == null ? void 0 : _a2.offsetHeight) <= 200; }); Vue.onMounted(() => { resizeObserver.observe(localScreenContainerRef.value); isAnnotationVisible.value = false; }); Vue.onBeforeUnmount(() => { resizeObserver.unobserve(localScreenContainerRef.value); }); function toggleAnnotationWindow() { var _a2, _b; if (isAnnotationVisible.value) { (_a2 = electron.ipcRenderer) == null ? void 0 : _a2.send("annotation:stop-annotating"); isAnnotationVisible.value = false; roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating); } else { (_b = electron.ipcRenderer) == null ? void 0 : _b.send("annotation:start-annotating"); isAnnotationVisible.value = true; roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.startAnnotating); } } (_a = electron.ipcRenderer) == null ? void 0 : _a.on("annotation:stop-from-annotation-window", () => { isAnnotationVisible.value = false; roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating); }); return (_ctx, _cache) => { return Vue.openBlock(), Vue.createElementBlock("div", { class: "local-screen-container", ref_key: "localScreenContainerRef", ref: localScreenContainerRef }, [ Vue.createElementVNode("div", { class: Vue.normalizeClass(["local-screen-control-container", { mini: isMiniRegion.value }]) }, [ Vue.createElementVNode("div", _hoisted_1, [ Vue.createVNode(SvgIcon.default, { icon: ScreenSharingIcon.default }), Vue.createElementVNode("span", _hoisted_2, Vue.toDisplayString(Vue.unref(t)("You are sharing the screen...")), 1) ]), Vue.createVNode(Button.default, { size: "default", class: "stop-button", onClick: openStopConfirmDialog }, { default: Vue.withCtx(() => [ Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("End sharing")), 1) ]), _: 1 }), Vue.unref(isSharingScreen) ? (Vue.openBlock(), Vue.createBlock(Button.default, { key: 0, size: "default", class: "toggle-annotating-button", onClick: toggleAnnotationWindow }, { default: Vue.withCtx(() => [ Vue.createTextVNode(Vue.toDisplayString(annotationSwitchLabel.value), 1) ]), _: 1 })) : Vue.createCommentVNode("", true), Vue.createVNode(index$1.default, { modelValue: showStopShareRegion.value, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showStopShareRegion.value = $event), width: "420px", title: Vue.unref(t)("End sharing"), modal: true, "close-on-click-modal": true, "append-to-room-container": true }, { footer: Vue.withCtx(() => [ Vue.createElementVNode("span", null, [ Vue.createVNode(Button.default, { class: "dialog-button", size: "default", onClick: stopScreenSharing }, { default: Vue.withCtx(() => [ Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("End sharing")), 1) ]), _: 1 }), Vue.createVNode(Button.default, { type: "primary", size: "default", onClick: _cache[0] || (_cache[0] = ($event) => showStopShareRegion.value = false) }, { default: Vue.withCtx(() => [ Vue.createTextVNode(Vue.toDisplayString(Vue.unref(t)("Cancel")), 1) ]), _: 1 }) ]) ]), default: Vue.withCtx(() => [ Vue.createElementVNode("span", null, Vue.toDisplayString(Vue.unref(t)( "Others will no longer see your screen after you stop sharing. Are you sure you want to stop?" )), 1) ]), _: 1 }, 8, ["modelValue", "title"]) ], 2) ], 512); }; } }); exports.default = _sfc_main;