Default value : (itemMeta: PropertyItemMeta) =>
(target: any, key: PropertyKey) => {
// region [adjust]
(itemMeta as any).key = key;
if (typeof itemMeta.type === 'string') {
} else {
}
if (!itemMeta.type) {
itemMeta.type = 'text';
}
if (itemMeta.type === 'number' && !itemMeta.valueConvert) {
itemMeta.valueConvert = parseInt;
}
if (itemMeta.collapse === undefined) {
itemMeta.collapse = true;
}
if (!itemMeta.order) {
itemMeta.order = Number.MAX_VALUE;
}
if (itemMeta.showHelp === undefined) {
itemMeta.showHelp = true;
}
// endregion
let __meta__ = target.__meta__;
if (!__meta__) {
__meta__ = {};
target.__meta__ = __meta__;
} else if (target.__proto__.__meta__ === __meta__) {
const subMeta = Object.create(Object.getPrototypeOf(__meta__));
Object.getOwnPropertyNames(__meta__).forEach(name => {
Object.defineProperty(subMeta, name, Object.getOwnPropertyDescriptor(__meta__, name));
});
__meta__ = subMeta;
target.__meta__ = __meta__;
}
Object.defineProperty(__meta__, key, {
enumerable: true,
get: () => itemMeta,
set: (v) => itemMeta = v
});
}
|