Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
import { deepMergeWithReactComponents } from '../utilities/deepMerge.js';
|
|
import { fieldAffectsData, fieldHasSubFields } from './config/types.js';
|
|
export const mergeBaseFields = (fields, baseFields)=>{
|
|
const mergedFields = [
|
|
...fields || []
|
|
];
|
|
baseFields.forEach((baseField)=>{
|
|
let matchedIndex = null;
|
|
if (fieldAffectsData(baseField)) {
|
|
const match = mergedFields.find((field, i)=>{
|
|
if (fieldAffectsData(field) && field.name === baseField.name) {
|
|
matchedIndex = i;
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
if (match) {
|
|
const matchCopy = {
|
|
...match
|
|
};
|
|
mergedFields.splice(matchedIndex, 1);
|
|
const mergedField = deepMergeWithReactComponents(baseField, matchCopy);
|
|
if (fieldHasSubFields(baseField) && fieldHasSubFields(matchCopy)) {
|
|
;
|
|
mergedField.fields = mergeBaseFields(matchCopy.fields, baseField.fields);
|
|
}
|
|
mergedFields.push(mergedField);
|
|
} else {
|
|
mergedFields.push(baseField);
|
|
}
|
|
}
|
|
});
|
|
return mergedFields;
|
|
};
|
|
|
|
//# sourceMappingURL=mergeBaseFields.js.map |