@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
JavaScript
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
};