payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
88 lines (87 loc) • 8.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const reducer = (state, action)=>{
const newState = [
...state
];
const { andIndex, orIndex } = action;
switch(action.type){
case 'add':
{
const { field, relation } = action;
if (relation === 'and') {
newState[orIndex].and.splice(andIndex, 0, {
[field]: {}
});
return newState;
}
return [
...newState,
{
and: [
{
[field]: {}
}
]
}
];
}
case 'remove':
{
newState[orIndex].and.splice(andIndex, 1);
if (newState[orIndex].and.length === 0) {
newState.splice(orIndex, 1);
}
return newState;
}
case 'update':
{
const { field, operator, value } = action;
if (typeof newState[orIndex].and[andIndex] === 'object') {
newState[orIndex].and[andIndex] = {
...newState[orIndex].and[andIndex]
};
const [existingFieldName, existingCondition] = Object.entries(newState[orIndex].and[andIndex])[0] || [
undefined,
undefined
];
if (operator) {
newState[orIndex].and[andIndex] = {
[existingFieldName]: {
[operator]: Object.values(existingCondition)[0]
}
};
}
if (field) {
newState[orIndex].and[andIndex] = {
[field]: operator ? {
[operator]: value
} : {}
};
}
if (value !== undefined) {
newState[orIndex].and[andIndex] = {
[existingFieldName]: Object.keys(existingCondition)[0] ? {
[Object.keys(existingCondition)[0]]: value
} : {}
};
}
}
return newState;
}
default:
{
return newState;
}
}
};
const _default = reducer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1doZXJlQnVpbGRlci9yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV2hlcmUgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogV2hlcmVbXSwgYWN0aW9uOiBBY3Rpb24pOiBXaGVyZVtdID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSBbLi4uc3RhdGVdXG5cbiAgY29uc3QgeyBhbmRJbmRleCwgb3JJbmRleCB9ID0gYWN0aW9uXG5cbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ2FkZCc6IHtcbiAgICAgIGNvbnN0IHsgZmllbGQsIHJlbGF0aW9uIH0gPSBhY3Rpb25cblxuICAgICAgaWYgKHJlbGF0aW9uID09PSAnYW5kJykge1xuICAgICAgICBuZXdTdGF0ZVtvckluZGV4XS5hbmQuc3BsaWNlKGFuZEluZGV4LCAwLCB7IFtmaWVsZF06IHt9IH0pXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAge1xuICAgICAgICAgIGFuZDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbZmllbGRdOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBjYXNlICdyZW1vdmUnOiB7XG4gICAgICBuZXdTdGF0ZVtvckluZGV4XS5hbmQuc3BsaWNlKGFuZEluZGV4LCAxKVxuXG4gICAgICBpZiAobmV3U3RhdGVbb3JJbmRleF0uYW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBuZXdTdGF0ZS5zcGxpY2Uob3JJbmRleCwgMSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAndXBkYXRlJzoge1xuICAgICAgY29uc3QgeyBmaWVsZCwgb3BlcmF0b3IsIHZhbHVlIH0gPSBhY3Rpb25cblxuICAgICAgaWYgKHR5cGVvZiBuZXdTdGF0ZVtvckluZGV4XS5hbmRbYW5kSW5kZXhdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBuZXdTdGF0ZVtvckluZGV4XS5hbmRbYW5kSW5kZXhdID0ge1xuICAgICAgICAgIC4uLm5ld1N0YXRlW29ySW5kZXhdLmFuZFthbmRJbmRleF0sXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbZXhpc3RpbmdGaWVsZE5hbWUsIGV4aXN0aW5nQ29uZGl0aW9uXSA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgIG5ld1N0YXRlW29ySW5kZXhdLmFuZFthbmRJbmRleF0sXG4gICAgICAgIClbMF0gfHwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuXG4gICAgICAgIGlmIChvcGVyYXRvcikge1xuICAgICAgICAgIG5ld1N0YXRlW29ySW5kZXhdLmFuZFthbmRJbmRleF0gPSB7XG4gICAgICAgICAgICBbZXhpc3RpbmdGaWVsZE5hbWVdOiB7XG4gICAgICAgICAgICAgIFtvcGVyYXRvcl06IE9iamVjdC52YWx1ZXMoZXhpc3RpbmdDb25kaXRpb24pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtvckluZGV4XS5hbmRbYW5kSW5kZXhdID0ge1xuICAgICAgICAgICAgW2ZpZWxkXTogb3BlcmF0b3IgPyB7IFtvcGVyYXRvcl06IHZhbHVlIH0gOiB7fSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1N0YXRlW29ySW5kZXhdLmFuZFthbmRJbmRleF0gPSB7XG4gICAgICAgICAgICBbZXhpc3RpbmdGaWVsZE5hbWVdOiBPYmplY3Qua2V5cyhleGlzdGluZ0NvbmRpdGlvbilbMF1cbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBbT2JqZWN0LmtleXMoZXhpc3RpbmdDb25kaXRpb24pWzBdXTogdmFsdWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IHt9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVkdWNlclxuIl0sIm5hbWVzIjpbInJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsIm5ld1N0YXRlIiwiYW5kSW5kZXgiLCJvckluZGV4IiwidHlwZSIsImZpZWxkIiwicmVsYXRpb24iLCJhbmQiLCJzcGxpY2UiLCJsZW5ndGgiLCJvcGVyYXRvciIsInZhbHVlIiwiZXhpc3RpbmdGaWVsZE5hbWUiLCJleGlzdGluZ0NvbmRpdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJ2YWx1ZXMiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7OytCQXFGQTs7O2VBQUE7OztBQWxGQSxNQUFNQSxVQUFVLENBQUNDLE9BQWdCQztJQUMvQixNQUFNQyxXQUFXO1dBQUlGO0tBQU07SUFFM0IsTUFBTSxFQUFFRyxRQUFRLEVBQUVDLE9BQU8sRUFBRSxHQUFHSDtJQUU5QixPQUFRQSxPQUFPSSxJQUFJO1FBQ2pCLEtBQUs7WUFBTztnQkFDVixNQUFNLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFLEdBQUdOO2dCQUU1QixJQUFJTSxhQUFhLE9BQU87b0JBQ3RCTCxRQUFRLENBQUNFLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDQyxNQUFNLENBQUNOLFVBQVUsR0FBRzt3QkFBRSxDQUFDRyxNQUFNLEVBQUUsQ0FBQztvQkFBRTtvQkFDeEQsT0FBT0o7Z0JBQ1Q7Z0JBRUEsT0FBTzt1QkFDRkE7b0JBQ0g7d0JBQ0VNLEtBQUs7NEJBQ0g7Z0NBQ0UsQ0FBQ0YsTUFBTSxFQUFFLENBQUM7NEJBQ1o7eUJBQ0Q7b0JBQ0g7aUJBQ0Q7WUFDSDtRQUVBLEtBQUs7WUFBVTtnQkFDYkosUUFBUSxDQUFDRSxRQUFRLENBQUNJLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDTixVQUFVO2dCQUV2QyxJQUFJRCxRQUFRLENBQUNFLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDRSxNQUFNLEtBQUssR0FBRztvQkFDdENSLFNBQVNPLE1BQU0sQ0FBQ0wsU0FBUztnQkFDM0I7Z0JBRUEsT0FBT0Y7WUFDVDtRQUVBLEtBQUs7WUFBVTtnQkFDYixNQUFNLEVBQUVJLEtBQUssRUFBRUssUUFBUSxFQUFFQyxLQUFLLEVBQUUsR0FBR1g7Z0JBRW5DLElBQUksT0FBT0MsUUFBUSxDQUFDRSxRQUFRLENBQUNJLEdBQUcsQ0FBQ0wsU0FBUyxLQUFLLFVBQVU7b0JBQ3ZERCxRQUFRLENBQUNFLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDTCxTQUFTLEdBQUc7d0JBQ2hDLEdBQUdELFFBQVEsQ0FBQ0UsUUFBUSxDQUFDSSxHQUFHLENBQUNMLFNBQVM7b0JBQ3BDO29CQUVBLE1BQU0sQ0FBQ1UsbUJBQW1CQyxrQkFBa0IsR0FBR0MsT0FBT0MsT0FBTyxDQUMzRGQsUUFBUSxDQUFDRSxRQUFRLENBQUNJLEdBQUcsQ0FBQ0wsU0FBUyxDQUNoQyxDQUFDLEVBQUUsSUFBSTt3QkFBQ2M7d0JBQVdBO3FCQUFVO29CQUU5QixJQUFJTixVQUFVO3dCQUNaVCxRQUFRLENBQUNFLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDTCxTQUFTLEdBQUc7NEJBQ2hDLENBQUNVLGtCQUFrQixFQUFFO2dDQUNuQixDQUFDRixTQUFTLEVBQUVJLE9BQU9HLE1BQU0sQ0FBQ0osa0JBQWtCLENBQUMsRUFBRTs0QkFDakQ7d0JBQ0Y7b0JBQ0Y7b0JBRUEsSUFBSVIsT0FBTzt3QkFDVEosUUFBUSxDQUFDRSxRQUFRLENBQUNJLEdBQUcsQ0FBQ0wsU0FBUyxHQUFHOzRCQUNoQyxDQUFDRyxNQUFNLEVBQUVLLFdBQVc7Z0NBQUUsQ0FBQ0EsU0FBUyxFQUFFQzs0QkFBTSxJQUFJLENBQUM7d0JBQy9DO29CQUNGO29CQUVBLElBQUlBLFVBQVVLLFdBQVc7d0JBQ3ZCZixRQUFRLENBQUNFLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDTCxTQUFTLEdBQUc7NEJBQ2hDLENBQUNVLGtCQUFrQixFQUFFRSxPQUFPSSxJQUFJLENBQUNMLGtCQUFrQixDQUFDLEVBQUUsR0FDbEQ7Z0NBQ0UsQ0FBQ0MsT0FBT0ksSUFBSSxDQUFDTCxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRUY7NEJBQ3ZDLElBQ0EsQ0FBQzt3QkFDUDtvQkFDRjtnQkFDRjtnQkFFQSxPQUFPVjtZQUNUO1FBRUE7WUFBUztnQkFDUCxPQUFPQTtZQUNUO0lBQ0Y7QUFDRjtNQUVBLFdBQWVIIn0=