@talend/react-faceted-search
Version:
88 lines (86 loc) • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateBadge = exports.deleteBadge = exports.createBadgeWithValue = exports.createBadge = exports.closeInitOpenedBadge = exports.applyBadgeTransform = void 0;
var _lodash = require("lodash");
const findByMetadataBadgeId = badgeId => ({
metadata
}) => (0, _lodash.get)(metadata, 'badgeId') === badgeId;
// eslint-disable-next-line testing-library/await-async-queries
const getBadgeIndexFromId = badgeId => badges => badges.findIndex(findByMetadataBadgeId(badgeId));
const getBadge = index => badges => badges[index];
const setBadgeValue = ({
properties,
metadata
}) => badge => ({
properties: {
...badge.properties,
...properties
},
metadata: {
...badge.metadata,
...metadata
}
});
const setBadge = (newProperties, newMetadata) => getIndexFn => badges => {
const index = getIndexFn(badges);
if (index >= 0) {
const newBadge = setBadgeValue({
properties: newProperties,
metadata: newMetadata
})(getBadge(index)(badges));
// eslint-disable-next-line no-param-reassign
badges[index] = newBadge;
}
return badges;
};
const spliceBadge = getIndexFn => badges => {
const index = getIndexFn(badges);
if (index >= 0) {
badges.splice(index, 1);
}
return badges;
};
const pushBadge = badge => badges => {
badges.push(badge);
return badges;
};
const applyBadgeTransform = transformFn => badges => {
const clonedBadges = (0, _lodash.cloneDeep)(badges);
return transformFn(clonedBadges).map(Object.freeze);
};
exports.applyBadgeTransform = applyBadgeTransform;
const updateBadge = (badgeId, newProperties, newMetadata) => applyBadgeTransform((0, _lodash.flow)([getBadgeIndexFromId, setBadge(newProperties, newMetadata)])(badgeId));
exports.updateBadge = updateBadge;
const deleteBadge = badgeId => applyBadgeTransform((0, _lodash.flow)([getBadgeIndexFromId, spliceBadge])(badgeId));
exports.deleteBadge = deleteBadge;
const createBadge = badge => applyBadgeTransform(pushBadge({
...badge,
metadata: {
...badge.metadata,
isInCreation: true
}
}));
exports.createBadge = createBadge;
const closeInitOpenedBadge = badgeId => updateBadge(badgeId, {
initialOperatorOpened: false,
initialValueOpened: false
});
exports.closeInitOpenedBadge = closeInitOpenedBadge;
const createBadgeWithValue = (badge, operator, value) => applyBadgeTransform(pushBadge({
...badge,
properties: {
...badge.properties,
initialOperatorOpened: false,
initialValueOpened: false,
value,
operator
},
metadata: {
...badge.metadata,
isInCreation: false
}
}));
exports.createBadgeWithValue = createBadgeWithValue;
//# sourceMappingURL=CRUDBadges.js.map