Fix overwritten of non-object in CONFIG (#279)

This commit is contained in:
2021-05-31 20:12:19 +08:00 committed by GitHub
parent 0d84de6513
commit f03b7ce306
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,20 +36,31 @@ if (!window.NexT) window.NexT = {};
existing = variableConfig[name]; existing = variableConfig[name];
} }
let override = overrideConfig[name]; // For unset override and mixable existing
if (override === undefined && typeof existing === 'object') { if (!(name in overrideConfig) && typeof existing === 'object') {
override = {}; // Get ready to mix.
overrideConfig[name] = override; overrideConfig[name] = {};
} }
if (typeof override === 'object') { if (name in overrideConfig) {
return new Proxy({...existing, ...override}, { const override = overrideConfig[name];
set(target, prop, value) {
override[prop] = value; // When mixable
return true; if (typeof override === 'object' && typeof existing === 'object') {
} // Mix, proxy changes to the override.
}); return new Proxy({...existing, ...override}, {
set(target, prop, value) {
target[prop] = value;
override[prop] = value;
return true;
}
});
}
return override;
} }
// Only when not mixable and override hasn't been set.
return existing; return existing;
} }
}); });