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.
35 lines
825 B
35 lines
825 B
import Mark from '../Mark'; |
|
import * as actions from '../actions'; |
|
|
|
export interface State { |
|
setMode: boolean; |
|
jumpMode: boolean; |
|
marks: { [key: string]: Mark }; |
|
} |
|
|
|
const defaultState: State = { |
|
setMode: false, |
|
jumpMode: false, |
|
marks: {}, |
|
}; |
|
|
|
export default function reducer( |
|
state: State = defaultState, |
|
action: actions.MarkAction, |
|
): State { |
|
switch (action.type) { |
|
case actions.MARK_START_SET: |
|
return { ...state, setMode: true }; |
|
case actions.MARK_START_JUMP: |
|
return { ...state, jumpMode: true }; |
|
case actions.MARK_CANCEL: |
|
return { ...state, setMode: false, jumpMode: false }; |
|
case actions.MARK_SET_LOCAL: { |
|
let marks = { ...state.marks }; |
|
marks[action.key] = { x: action.x, y: action.y }; |
|
return { ...state, setMode: false, marks }; |
|
} |
|
default: |
|
return state; |
|
} |
|
}
|
|
|