A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
889 B
40 lines
889 B
import * as actions from '../actions'; |
|
|
|
export interface State { |
|
enabled: boolean; |
|
newTab: boolean; |
|
background: boolean; |
|
keys: string, |
|
} |
|
|
|
const defaultState: State = { |
|
enabled: false, |
|
newTab: false, |
|
background: false, |
|
keys: '', |
|
}; |
|
|
|
export default function reducer( |
|
state: State = defaultState, |
|
action: actions.FollowAction, |
|
): State { |
|
switch (action.type) { |
|
case actions.FOLLOW_CONTROLLER_ENABLE: |
|
return { ...state, |
|
enabled: true, |
|
newTab: action.newTab, |
|
background: action.background, |
|
keys: '', }; |
|
case actions.FOLLOW_CONTROLLER_DISABLE: |
|
return { ...state, |
|
enabled: false, }; |
|
case actions.FOLLOW_CONTROLLER_KEY_PRESS: |
|
return { ...state, |
|
keys: state.keys + action.key, }; |
|
case actions.FOLLOW_CONTROLLER_BACKSPACE: |
|
return { ...state, |
|
keys: state.keys.slice(0, -1), }; |
|
default: |
|
return state; |
|
} |
|
}
|
|
|