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,

187 lines (186 loc) 5.37 kB
import { AdvancedBeautyPanelLevel, AdvancedBeautyType } from "../../type/AdvancedBeauty.mjs"; import { getResourcePath } from "./usePluginConfig.mjs"; import { plugin } from "./usePlugin.mjs"; import { ref, reactive } from "vue"; const virtualBackgroundImages = ref([]); const beautyConfigs = reactive(/* @__PURE__ */ new Map()); const beautyLicenseInfo = { panelLevel: AdvancedBeautyPanelLevel.S1_00, licenseUrl: "", licenseKey: "" }; function setAdvancedBeautyLicenseInfo(licenseInfo) { beautyLicenseInfo.panelLevel = licenseInfo.panelLevel; beautyLicenseInfo.licenseUrl = licenseInfo.licenseUrl; beautyLicenseInfo.licenseKey = licenseInfo.licenseKey; plugin.initPlugin(licenseInfo.licenseUrl, licenseInfo.licenseKey); } function setVirtualBackgroundImages(images) { virtualBackgroundImages.value = images; } function setAdvancedBeauty(type, config) { const newConfig = { ...config }; if (newConfig.effectKey.length === 0) { clearBeautyConfigsByBeautyKey(type, newConfig.beautyPanelKey); } else { cacheBeautyConfigs(type, newConfig); } } function cacheBeautyConfigs(type, config) { var _a; let configArray = (_a = beautyConfigs.get(type)) == null ? void 0 : _a.get(config.beautyPanelKey); if (configArray) { if (isReplaceConfig(type)) { configArray.length = 0; configArray.push(config); } else { let needToAdd = true; configArray.forEach((cachedConfig) => { if (config.effectKey === cachedConfig.effectKey) { cachedConfig.effectValue = config.effectValue; needToAdd = false; } }); if (needToAdd) { configArray.push(config); } } } else { let panelMap = beautyConfigs.get(type); if (!panelMap) { panelMap = /* @__PURE__ */ new Map(); beautyConfigs.set(type, panelMap); } configArray = []; configArray.push(config); panelMap.set(config.beautyPanelKey, configArray); } clearConflictBeautyConfigs(type); setBeauty(type, config); } function clearConflictBeautyConfigs(type) { const conflictBeauty = [ AdvancedBeautyType.motion, AdvancedBeautyType.virtualBackground, AdvancedBeautyType.advancedMakeup ]; if (!conflictBeauty.includes(type)) { return; } conflictBeauty.forEach((beautyType) => { var _a; if (beautyType !== type) { const configArray = (_a = beautyConfigs.get(beautyType)) == null ? void 0 : _a.get(beautyType); if (configArray) { configArray.length = 0; } } }); } function clearBeautyConfigsByBeautyKey(type, beautyKey) { var _a; clearConflictBeautyConfigs(type); const configArray = (_a = beautyConfigs.get(type)) == null ? void 0 : _a.get(beautyKey); if (configArray) { configArray == null ? void 0 : configArray.forEach((config) => { config.effectValue = 0; setBeauty(type, config); }); } } function isReplaceConfig(type) { switch (type) { case AdvancedBeautyType.basicBeauty: case AdvancedBeautyType.makeup: case AdvancedBeautyType.advancedMakeup: case AdvancedBeautyType.filters: case AdvancedBeautyType.motion: case AdvancedBeautyType.virtualBackground: return true; default: return false; } } function setBeauty(type, config) { const beautySetting = [ { category: getBeautyCategory(type), effKey: config.effectKey, effValue: config.effectValue, resPath: generateResourcePath(type, config), bgPath: config.backgroundPath } ]; const param = JSON.stringify({ beautySetting }); plugin.setParameter(param); } function generateResourcePath(type, config) { if (config.resourcePath && type !== AdvancedBeautyType.makeup) { return getResourcePath() + config.resourcePath; } return config.resourcePath; } function clearBeautySetting() { const beautySetting = []; beautyConfigs.forEach((configPanel, type) => { configPanel.forEach((configs) => { configs.forEach((config) => { if (config.effectValue !== 0) { const setting = { category: getBeautyCategory(type), effKey: config.effectKey, effValue: 0, resPath: generateResourcePath(type, config), bgPath: config.backgroundPath }; beautySetting.push(setting); } }); }); }); if (beautySetting.length > 0) { const param = JSON.stringify({ beautySetting }); plugin.setParameter(param); } beautyConfigs.clear(); plugin.clearBeautyEffect(); } function getBeautyCategory(type) { switch (type) { case AdvancedBeautyType.basicBeauty: case AdvancedBeautyType.advancedBeauty: case AdvancedBeautyType.imageQuality: case AdvancedBeautyType.makeup: return 0; case AdvancedBeautyType.bodyBeauty: return 1; case AdvancedBeautyType.filters: return 2; case AdvancedBeautyType.motion: return 3; case AdvancedBeautyType.virtualBackground: return 4; case AdvancedBeautyType.advancedMakeup: return 5; default: return -1; } } function useAdvancedBeautyState() { return { beautyConfigs, beautyLicenseInfo, virtualBackgroundImages, setAdvancedBeautyLicenseInfo, setAdvancedBeauty, clearBeautySetting, setVirtualBackgroundImages }; } export { useAdvancedBeautyState as default };