@talend/react-faceted-search
Version:
119 lines (118 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useFacetedBadges = exports.BADGES_ACTIONS_KEYS = exports.BADGES_ACTIONS = void 0;
var _react = require("react");
var _CRUDBadges = require("../CRUDBadges");
const BADGES_ACTIONS_KEYS = exports.BADGES_ACTIONS_KEYS = {
ADD_BADGE: 'ADD_BADGE',
ADD_BADGE_WITH_VALUE: 'ADD_BADGE_WITH_VALUE',
UPDATE_BADGE: 'UPDATE_BADGE',
DELETE_BADGE: 'DELETE_BADGE',
DELETE_ALL_BADGES: 'DELETE_ALL_BADGES',
CLOSE_INIT_OPENED: 'CLOSE_INIT_OPENED',
RESET_STATE: 'RESET_STATE'
};
const BADGES_ACTIONS = exports.BADGES_ACTIONS = {
add: badge => ({
type: BADGES_ACTIONS_KEYS.ADD_BADGE,
payload: {
badge
}
}),
update: (badgeId, properties, metadata) => ({
type: BADGES_ACTIONS_KEYS.UPDATE_BADGE,
payload: {
badgeId,
properties,
metadata
}
}),
addWithValue: (badge, operator, value) => ({
type: BADGES_ACTIONS_KEYS.ADD_BADGE_WITH_VALUE,
payload: {
badge,
operator,
value
}
}),
delete: badgeId => ({
type: BADGES_ACTIONS_KEYS.DELETE_BADGE,
payload: {
badgeId
}
}),
deleteAll: () => ({
type: BADGES_ACTIONS_KEYS.DELETE_ALL_BADGES
}),
closeInitialOpened: badgeId => ({
type: BADGES_ACTIONS_KEYS.CLOSE_INIT_OPENED,
payload: {
badgeId
}
}),
resetState: state => ({
type: BADGES_ACTIONS_KEYS.RESET_STATE,
payload: state
})
};
const reducer = (state, {
type,
payload
}) => {
switch (type) {
case BADGES_ACTIONS_KEYS.ADD_BADGE:
return {
...state,
badges: (0, _CRUDBadges.createBadge)(payload.badge)(state.badges)
};
case BADGES_ACTIONS_KEYS.UPDATE_BADGE:
return {
...state,
badges: (0, _CRUDBadges.updateBadge)(payload.badgeId, payload.properties, payload.metadata)(state.badges)
};
case BADGES_ACTIONS_KEYS.ADD_BADGE_WITH_VALUE:
return {
...state,
badges: (0, _CRUDBadges.createBadgeWithValue)(payload.badge, payload.operator, payload.value)(state.badges)
};
case BADGES_ACTIONS_KEYS.DELETE_BADGE:
return {
...state,
badges: (0, _CRUDBadges.deleteBadge)(payload.badgeId)(state.badges)
};
case BADGES_ACTIONS_KEYS.DELETE_ALL_BADGES:
return {
...state,
badges: []
};
case BADGES_ACTIONS_KEYS.CLOSE_INIT_OPENED:
return {
...state,
badges: (0, _CRUDBadges.closeInitOpenedBadge)(payload.badgeId)(state.badges)
};
case BADGES_ACTIONS_KEYS.RESET_STATE:
return payload;
default:
return state;
}
};
const useFacetedBadges = (externalState, setExternalState) => {
const [state, dispatch] = (0, _react.useReducer)(reducer, !externalState ? {
badges: []
} : externalState);
(0, _react.useEffect)(() => {
if (setExternalState) {
setExternalState(state);
}
}, [setExternalState, state]);
(0, _react.useEffect)(() => {
if (externalState) {
dispatch(BADGES_ACTIONS.resetState(externalState));
}
}, [externalState]);
return [state, dispatch];
};
exports.useFacetedBadges = useFacetedBadges;
//# sourceMappingURL=facetedBadges.hook.js.map