UNPKG

@gechiui/nux

Version:
83 lines (72 loc) 1.99 kB
/** * GeChiUI dependencies */ import { combineReducers } from '@gechiui/data'; /** * Reducer that tracks which tips are in a guide. Each guide is represented by * an array which contains the tip identifiers contained within that guide. * * @param {Array} state Current state. * @param {Object} action Dispatched action. * * @return {Array} Updated state. */ export function guides() { let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; let action = arguments.length > 1 ? arguments[1] : undefined; switch (action.type) { case 'TRIGGER_GUIDE': return [...state, action.tipIds]; } return state; } /** * Reducer that tracks whether or not tips are globally enabled. * * @param {boolean} state Current state. * @param {Object} action Dispatched action. * * @return {boolean} Updated state. */ export function areTipsEnabled() { let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; let action = arguments.length > 1 ? arguments[1] : undefined; switch (action.type) { case 'DISABLE_TIPS': return false; case 'ENABLE_TIPS': return true; } return state; } /** * Reducer that tracks which tips have been dismissed. If the state object * contains a tip identifier, then that tip is dismissed. * * @param {Object} state Current state. * @param {Object} action Dispatched action. * * @return {Object} Updated state. */ export function dismissedTips() { let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let action = arguments.length > 1 ? arguments[1] : undefined; switch (action.type) { case 'DISMISS_TIP': return { ...state, [action.id]: true }; case 'ENABLE_TIPS': return {}; } return state; } const preferences = combineReducers({ areTipsEnabled, dismissedTips }); export default combineReducers({ guides, preferences }); //# sourceMappingURL=reducer.js.map