@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.81 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const AdvancedBeauty = require("../../type/AdvancedBeauty.js");
const usePluginConfig = require("./usePluginConfig.js");
const usePlugin = require("./usePlugin.js");
const Vue = require("vue");
const virtualBackgroundImages = Vue.ref([]);
const beautyConfigs = Vue.reactive(/* @__PURE__ */ new Map());
const beautyLicenseInfo = {
panelLevel: AdvancedBeauty.AdvancedBeautyPanelLevel.S1_00,
licenseUrl: "",
licenseKey: ""
};
function setAdvancedBeautyLicenseInfo(licenseInfo) {
beautyLicenseInfo.panelLevel = licenseInfo.panelLevel;
beautyLicenseInfo.licenseUrl = licenseInfo.licenseUrl;
beautyLicenseInfo.licenseKey = licenseInfo.licenseKey;
usePlugin.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 = [
AdvancedBeauty.AdvancedBeautyType.motion,
AdvancedBeauty.AdvancedBeautyType.virtualBackground,
AdvancedBeauty.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 AdvancedBeauty.AdvancedBeautyType.basicBeauty:
case AdvancedBeauty.AdvancedBeautyType.makeup:
case AdvancedBeauty.AdvancedBeautyType.advancedMakeup:
case AdvancedBeauty.AdvancedBeautyType.filters:
case AdvancedBeauty.AdvancedBeautyType.motion:
case AdvancedBeauty.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
});
usePlugin.plugin.setParameter(param);
}
function generateResourcePath(type, config) {
if (config.resourcePath && type !== AdvancedBeauty.AdvancedBeautyType.makeup) {
return usePluginConfig.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
});
usePlugin.plugin.setParameter(param);
}
beautyConfigs.clear();
usePlugin.plugin.clearBeautyEffect();
}
function getBeautyCategory(type) {
switch (type) {
case AdvancedBeauty.AdvancedBeautyType.basicBeauty:
case AdvancedBeauty.AdvancedBeautyType.advancedBeauty:
case AdvancedBeauty.AdvancedBeautyType.imageQuality:
case AdvancedBeauty.AdvancedBeautyType.makeup:
return 0;
case AdvancedBeauty.AdvancedBeautyType.bodyBeauty:
return 1;
case AdvancedBeauty.AdvancedBeautyType.filters:
return 2;
case AdvancedBeauty.AdvancedBeautyType.motion:
return 3;
case AdvancedBeauty.AdvancedBeautyType.virtualBackground:
return 4;
case AdvancedBeauty.AdvancedBeautyType.advancedMakeup:
return 5;
default:
return -1;
}
}
function useAdvancedBeautyState() {
return {
beautyConfigs,
beautyLicenseInfo,
virtualBackgroundImages,
setAdvancedBeautyLicenseInfo,
setAdvancedBeauty,
clearBeautySetting,
setVirtualBackgroundImages
};
}
exports.default = useAdvancedBeautyState;