100 lines
12 KiB
JavaScript
100 lines
12 KiB
JavaScript
|
"use strict";
|
||
|
/**
|
||
|
* 存储 enum 管理
|
||
|
*/
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.removeEnumObserver = exports.addEnumObserver = exports.clearDynamicEnum = exports.clearEnum = exports.declareEnum = exports.removeDynamicEnumToType = exports.changeDynamicEnumValue = exports.declareDynamicEnumToType = exports.getDynamicEnumByType = exports.getEnumByType = void 0;
|
||
|
const enumMap = new Map();
|
||
|
const dynamicEnumMap = new Map();
|
||
|
const enumEventMap = new Map();
|
||
|
function getEnumByType(type) {
|
||
|
return enumMap.get(type) || [];
|
||
|
}
|
||
|
exports.getEnumByType = getEnumByType;
|
||
|
function getDynamicEnumByType(type) {
|
||
|
return dynamicEnumMap.get(type) || [];
|
||
|
}
|
||
|
exports.getDynamicEnumByType = getDynamicEnumByType;
|
||
|
function emitEventByType(type) {
|
||
|
const eventList = enumEventMap.get(type) || [];
|
||
|
eventList.forEach((event) => event());
|
||
|
}
|
||
|
/**
|
||
|
* 用于动态声明枚举
|
||
|
* @param options
|
||
|
*/
|
||
|
function declareDynamicEnumToType(options) {
|
||
|
const enumList = dynamicEnumMap.get(options.type) || [];
|
||
|
if (!enumList.find((item) => item.name === options.name)) {
|
||
|
enumList.push({
|
||
|
name: options.name,
|
||
|
value: enumList.length,
|
||
|
});
|
||
|
updateDynamicEnumMap(options.type, enumList);
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
exports.declareDynamicEnumToType = declareDynamicEnumToType;
|
||
|
function changeDynamicEnumValue(type, newValue, oldValue) {
|
||
|
const enumList = dynamicEnumMap.get(type) || [];
|
||
|
const index = enumList.findIndex((item) => item.name === oldValue);
|
||
|
if (index !== -1) {
|
||
|
enumList[index].name = newValue;
|
||
|
updateDynamicEnumMap(type, enumList);
|
||
|
}
|
||
|
}
|
||
|
exports.changeDynamicEnumValue = changeDynamicEnumValue;
|
||
|
function removeDynamicEnumToType(type, singleEnum) {
|
||
|
const enumList = dynamicEnumMap.get(type) || [];
|
||
|
const index = enumList.findIndex((item) => item.name === singleEnum);
|
||
|
if (index !== -1) {
|
||
|
enumList.splice(index, 1);
|
||
|
updateDynamicEnumMap(type, enumList);
|
||
|
}
|
||
|
}
|
||
|
exports.removeDynamicEnumToType = removeDynamicEnumToType;
|
||
|
function declareEnum(type, ccEnum) {
|
||
|
updateEnumMap(type, ccEnumToList(ccEnum));
|
||
|
}
|
||
|
exports.declareEnum = declareEnum;
|
||
|
function clearEnum() {
|
||
|
enumMap.clear();
|
||
|
enumMap.forEach((value, type) => removeEnumObserver(type));
|
||
|
}
|
||
|
exports.clearEnum = clearEnum;
|
||
|
function clearDynamicEnum() {
|
||
|
dynamicEnumMap.clear();
|
||
|
dynamicEnumMap.forEach((value, type) => removeEnumObserver(type));
|
||
|
}
|
||
|
exports.clearDynamicEnum = clearDynamicEnum;
|
||
|
function addEnumObserver(type, func) {
|
||
|
const eventList = enumEventMap.get(type) || [];
|
||
|
eventList.push(func);
|
||
|
enumEventMap.set(type, eventList);
|
||
|
}
|
||
|
exports.addEnumObserver = addEnumObserver;
|
||
|
function removeEnumObserver(type) {
|
||
|
enumEventMap.delete(type);
|
||
|
}
|
||
|
exports.removeEnumObserver = removeEnumObserver;
|
||
|
function ccEnumToList(ccEnum) {
|
||
|
const enums = [];
|
||
|
for (const name in ccEnum) {
|
||
|
const v = ccEnum[name];
|
||
|
if (Number.isInteger(v)) {
|
||
|
enums.push({ name, value: v });
|
||
|
}
|
||
|
}
|
||
|
enums.sort((a, b) => a.value - b.value);
|
||
|
return enums;
|
||
|
}
|
||
|
function updateEnumMap(type, enumList) {
|
||
|
enumMap.set(type, enumList);
|
||
|
emitEventByType(type);
|
||
|
}
|
||
|
function updateDynamicEnumMap(type, enumList) {
|
||
|
dynamicEnumMap.set(type, enumList);
|
||
|
emitEventByType(type);
|
||
|
}
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9jay1mb3JnZS9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBWUgsTUFBTSxPQUFPLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxjQUFjLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDMUQsTUFBTSxZQUFZLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFFeEQsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRkQsc0NBRUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFZO0lBQzdDLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUZELG9EQUVDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBWTtJQUNqQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUE0QjtJQUNqRSxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RELFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDVixJQUFJLEVBQUUs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
|