mobx-view-model
Version:
MobX ViewModel power for ReactJS
38 lines (37 loc) • 1.46 kB
JavaScript
import { viewModelsConfig } from '../global-config.js';
/**
* [**Documentation**](https://js2me.github.io/mobx-view-model/api/view-models/view-models-config)
*/
export const mergeVMConfigs = (...configs) => {
const result = {
...viewModelsConfig,
startViewTransitions: structuredClone(viewModelsConfig.startViewTransitions),
};
configs.forEach((config) => {
if (!config) {
return;
}
const { startViewTransitions, comparePayload, observable, ...otherConfigUpdates } = config;
if (startViewTransitions) {
const startViewTransitonsUpdate = typeof startViewTransitions === 'boolean'
? {
mount: startViewTransitions,
payloadChange: startViewTransitions,
unmount: startViewTransitions,
}
: startViewTransitions;
Object.assign(result.startViewTransitions, startViewTransitonsUpdate);
}
if (observable?.viewModels) {
Object.assign(result.observable.viewModels, observable.viewModels || {});
}
if (observable?.viewModelStores) {
Object.assign(result.observable.viewModelStores, observable.viewModelStores || {});
}
if (comparePayload != null) {
result.comparePayload = comparePayload;
}
Object.assign(result, otherConfigUpdates);
});
return result;
};