UNPKG

@talend/react-faceted-search

Version:
88 lines (86 loc) 2.73 kB
"use strict"; 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