super-hero/extensions/shader-graph/dist/block-forge/enum.js

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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QUM7UUFDdkIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEM7S0FDSjtJQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFVLEVBQUUsQ0FBRSxDQUFDLENBQUMsS0FBZ0IsR0FBSSxDQUFDLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFZLEVBQUUsUUFBb0I7SUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUIsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLElBQVksRUFBRSxRQUFvQjtJQUM1RCxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5a2Y5YKoIGVudW0g566h55CGXG4gKi9cblxuZXhwb3J0IHR5cGUgRW51bVR5cGUgPSB7XG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY2xhcmVSZWdpc3RlckVudW0ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IGVudW1NYXA6IE1hcDxzdHJpbmcsIEVudW1UeXBlW10+ID0gbmV3IE1hcCgpO1xuY29uc3QgZHluYW1pY0VudW1NYXA6IE1hcDxzdHJpbmcsIEVudW1UeXBlW10+ID0gbmV3IE1hcCgpO1xuY29uc3QgZW51bUV2ZW50TWFwOiBNYXA8c3RyaW5nLCBGdW5jdGlvbltdPiA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1CeVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGVudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHluYW1pY0VudW1CeVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNFbnVtTWFwLmdldCh0eXBlKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gZW1pdEV2ZW50QnlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGV2ZW50TGlzdCA9IGVudW1FdmVudE1hcC5nZXQodHlwZSkgfHwgW107XG4gICAgZXZlbnRMaXN0LmZvckVhY2goKGV2ZW50KSA9PiBldmVudCgpKTtcbn1cblxuLyoqXG4gKiDnlKjkuo7liqjmgIHlo7DmmI7mnprkuL5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlRHluYW1pY0VudW1Ub1R5cGUob3B0aW9uczogRGVjbGFyZVJlZ2lzdGVyRW51bSkge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KG9wdGlvbnMudHlwZSkgfHwgW107XG4gICAgaWYgKCFlbnVtTGlzdC5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG9wdGlvbnMubmFtZSkpIHtcbiAgICAgICAgZW51bUxpc3QucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogZW51bUxpc3QubGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgICAgdXBkYXRlRHluYW1pY0VudW1NYXAob3B0aW9ucy50eXBlLCBlbnVtTGlzdCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VEeW5hbWljRW51bVZhbHVlKHR5cGU6IHN0cmluZywgbmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGNvbnN0IGluZGV4ID0gZW51bUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG9sZFZhbHVlKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGVudW1MaXN0W2luZGV4XS5uYW1lID0gbmV3VmFsdWU7XG4gICAgICAgIHVwZGF0ZUR5bmFtaWNFbnVtTWFwKHR5cGUsIGVudW1MaXN0KTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEeW5hbWljRW51bVRvVHlwZSh0eXBlOiBzdHJpbmcsIHNpbmdsZUVudW06IHN0cmluZykge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGNvbnN0IGluZGV4ID0gZW51bUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHNpbmdsZUVudW0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZW51bUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdXBkYXRlRHluYW1pY0VudW1NYXAodHlwZSwgZW51bUxpc3QpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVFbnVtKHR5cGU6IHN0cmluZywgY2NFbnVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdXBkYXRlRW51bU1hcCh0eXBlLCBjY0VudW1Ub0xpc3QoY2NFbnVtKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckVudW0oKSB7XG4gICAgZW51bU1hcC5jbGVhcigpO1xuICAgIGVudW1NYXAuZm9yRWFjaCgodmFsdWUsIHR5cGUpID0+IHJlbW92ZUVudW1PYnNlcnZlcih0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckR5bmFtaWNFbnVtKCkge1xuICAgIGR5bmFtaWNFbnVtTWFwLmNsZWFyKCk7XG4gICAgZHluYW1pY0VudW1NYXAuZm9yRWFjaCgodmFsdWUsIHR5cGUpID0+IHJlbW92ZUVudW1PYnNlcnZlcih0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRFbnVtT2JzZXJ2ZXIodHlwZTogc3RyaW5nLCBmdW5jOiBhbnkpIHtcbiAgICBjb25zdCBldmVudExpc3QgPSBlbnVtRXZlbnRNYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGV2ZW50TGlzdC5wdXNoKGZ1bmMpO1xuICAgIGVudW1FdmVudE1hcC5zZXQodHlwZSwgZXZlbnRMaXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudW1PYnNlcnZlcih0eXBlOiBzdHJpbmcpIHtcbiAgICBlbnVtRXZlbnRNYXAuZGVsZXRlKHR5cGUpO1xufVxuXG5mdW5jdGlvbiBjY0VudW1Ub0xpc3QoY2NFbnVtOiBhbnkpIHtcbiAgICBjb25zdCBlbnVtcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBjY0VudW0pIHtcbiAgICAgICAgY29uc3QgdiA9IGNjRW51bVtuYW1lXTtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodikpIHtcbiAgICAgICAgICAgIGVudW1zLnB1c2goeyBuYW1lLCB2YWx1ZTogdiB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbnVtcy5zb3J0KChhLCBiKTogbnVtYmVyID0+IChhLnZhbHVlIGFzIG51bWJlcikgLSAoYi52YWx1ZSBhcyBudW1iZXIpKTtcbiAgICByZXR1cm4gZW51bXM7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUVudW1NYXAodHlwZTogc3RyaW5nLCBlbnVtTGlzdDogRW51bVR5cGVbXSkge1xuICAgIGVudW1NYXAuc2V0KHR5cGUsIGVudW1MaXN0KTtcbiAgICBlbWl0RXZlbnRCeVR5cGUodHlwZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUR5bmFtaWNFbnVtTWFwKHR5cGU6IHN0cmluZywgZW51bUxpc3Q6IEVudW1UeXBlW10pIHtcbiAgICBkeW5hbWljRW51bU1hcC5zZXQodHlwZSwgZW51bUxpc3QpO1xuICAgIGVtaXRFdmVudEJ5VHlwZSh0eXBlKTtcbn1cbiJdfQ==