mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { CSSVariableAction, CSSVariableActionTypes } from './css-variable.actions';
|
|
import { KeyValuePair } from '../key-value-pair.model';
|
|
|
|
export interface CSSVariablesState {
|
|
[name: string]: string;
|
|
}
|
|
|
|
const initialState: CSSVariablesState = Object.create({});
|
|
|
|
/**
|
|
* Reducer that handles the state of CSS variables in the store
|
|
* @param state The current state of the store
|
|
* @param action The action to apply onto the current state of the store
|
|
*/
|
|
export function cssVariablesReducer(state = initialState, action: CSSVariableAction): CSSVariablesState {
|
|
switch (action.type) {
|
|
case CSSVariableActionTypes.ADD: {
|
|
const variable = action.payload;
|
|
return Object.assign({}, state, { [variable.name]: variable.value });
|
|
} case CSSVariableActionTypes.ADD_ALL: {
|
|
const variables = action.payload;
|
|
return Object.assign({}, state, ...variables.map(({ key, value }: KeyValuePair<string, string>) => {return {[key]: value};}));
|
|
} case CSSVariableActionTypes.CLEAR: {
|
|
return initialState;
|
|
}
|
|
default: {
|
|
return state;
|
|
}
|
|
}
|
|
}
|