Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1x 1x 2x 1x 1x 1x 1x 1x 1x | import { createReducer, on } from '@ngrx/store'; import { ThemeVariants } from '../../shared/theme'; import * as DefaultDarkTheme from '../../shared/theme/default-dark-theme.json'; import * as DefaultTheme from '../../shared/theme/default-theme.json'; import * as ThemeActions from './theme.actions'; const defaultTheme: ThemeVariants = DefaultTheme; const defaultDarkTheme: ThemeVariants = DefaultDarkTheme; const unwrap = (theme: any): ThemeVariants => theme.default; export interface State { themes: { [name: string]: ThemeVariants }; currentTheme: string; } export const initialState: State = { themes: { default: unwrap(defaultTheme), defaultDark: unwrap(defaultDarkTheme) }, currentTheme: 'default' }; export const reducer = createReducer( initialState, on(ThemeActions.add, (state, { name, theme }) => { const themes = { ...state.themes }; themes[name] = { ...themes[name], ...theme }; return { ...state, themes }; }), on(ThemeActions.select, (state, { name }) => ({ ...state, currentTheme: name })) ); |