package/src/reducers/ui.js (115 lines of code) (raw):
import { handleActions } from 'redux-actions'
import {
setMarkupObjectsFilter,
setExpandedListKeys,
toggleExpandedListKey,
setActiveSidebar,
addTemporaryFieldIndex,
deleteTemporaryFieldIndex,
setAssignToFieldsFilter,
resetDefault
} from '@/actions/ui'
import { SidebarContent } from '@/enums/SidebarContent'
const defaultState = {
markupObjectsFilter: '',
assignToFieldsFilter: '',
expandedListKeys: [],
activeSidebar: SidebarContent.MARKUP,
temporaryFieldsIndexes: {}
}
const setMarkupObjectsFilterHandler = (state, action) => ({
...state,
markupObjectsFilter: action.payload
})
const assignToFieldsFilterHandler = (state, action) => ({
...state,
assignToFieldsFilter: action.payload
})
const setExpandedListKeysHandler = (state, action) => ({
...state,
expandedListKeys: action.payload
})
const setActiveSidebarHandler = (state, action) => ({
...state,
activeSidebar: action.payload
})
const toggleExpandedListKeyHandler = (state, action) => {
const key = state.expandedListKeys.find((k) => k === action.payload)
if (key) {
return {
...state,
expandedListKeys: state.expandedListKeys.filter((key) => key !== action.payload)
}
}
return ({
...state,
expandedListKeys: [...state.expandedListKeys, action.payload]
})
}
const addTemporaryFieldIndexHandler = (state, action) => {
const { code, index } = action.payload
return {
...state,
temporaryFieldsIndexes: {
...state.temporaryFieldsIndexes,
[code]: state.temporaryFieldsIndexes[code]
? [...state.temporaryFieldsIndexes[code], index]
: [index]
}
}
}
const deleteTemporaryFieldIndexHandler = (state, action) => {
const { code, index } = action.payload
const filteredIndexes = state.temporaryFieldsIndexes[code]?.filter((i) => i !== index)
return filteredIndexes
? {
...state,
temporaryFieldsIndexes: {
...state.temporaryFieldsIndexes,
[code]: filteredIndexes
}
}
: state
}
const resetDefaultHandler = () => defaultState
const uiReducerMap = new Map([
[
setMarkupObjectsFilter,
setMarkupObjectsFilterHandler
],
[
setAssignToFieldsFilter,
assignToFieldsFilterHandler
],
[
setExpandedListKeys,
setExpandedListKeysHandler
],
[
toggleExpandedListKey,
toggleExpandedListKeyHandler
],
[
setActiveSidebar,
setActiveSidebarHandler
],
[
addTemporaryFieldIndex,
addTemporaryFieldIndexHandler
],
[
deleteTemporaryFieldIndex,
deleteTemporaryFieldIndexHandler
],
[
resetDefault,
resetDefaultHandler
]
])
const uiReducer = handleActions(
uiReducerMap,
defaultState
)
export {
uiReducer
}