lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
42 lines • 1.81 kB
JavaScript
import Appendable from "../../display/core/Appendable";
import DefaultMethod from "./DefaultMethod";
import NullableCallback from "./NullableCallback";
import NullableDefault from "./NullableDefault";
const getDefaultValue = (manager, key, fillNullableDefault, fillFunctionArgs, functionPtr) => {
const constructorDefaults = manager.constructor.defaults;
const runtimeManager = constructorDefaults ? manager : undefined;
if (runtimeManager instanceof Appendable) {
const { runtimeDefaults } = runtimeManager;
if (runtimeDefaults && key in runtimeDefaults)
return runtimeDefaults[key];
}
const result = (constructorDefaults ?? manager)[key];
if (result instanceof NullableDefault)
return fillNullableDefault ? result.value : undefined;
if (result instanceof NullableCallback) {
if (functionPtr)
functionPtr[0] = result;
return fillFunctionArgs ? result.param : undefined;
}
if (result instanceof DefaultMethod) {
if (functionPtr)
functionPtr[0] = result;
return fillFunctionArgs ? result.arg : undefined;
}
if (fillNullableDefault)
return result ?? "";
return result;
};
export default getDefaultValue;
const isEqual = (val0, val1) => val0 === val1 ||
(typeof val0 === typeof val1 &&
JSON.stringify(val0) === JSON.stringify(val1));
export const equalsValue = (manager, val0, val1, key) => {
const defaultValue = getDefaultValue(manager, key, true, false);
return isEqual(val0 ?? defaultValue, val1 ?? defaultValue);
};
export const equalsDefaultValue = (val, manager, key) => {
const defaultValue = getDefaultValue(manager, key, true, false);
return isEqual(val ?? defaultValue, defaultValue);
};
//# sourceMappingURL=getDefaultValue.js.map