diff options
Diffstat (limited to 'src/console/reducers')
-rw-r--r-- | src/console/reducers/index.ts | 128 |
1 files changed, 68 insertions, 60 deletions
diff --git a/src/console/reducers/index.ts b/src/console/reducers/index.ts index f1508bb..f2ffed7 100644 --- a/src/console/reducers/index.ts +++ b/src/console/reducers/index.ts @@ -1,4 +1,4 @@ -import * as actions from '../actions'; +import * as actions from "../actions"; import Completions from "../Completions"; import CompletionType from "../../shared/CompletionType"; @@ -14,11 +14,11 @@ export interface State { } const defaultState = { - mode: '', - messageText: '', - consoleText: '', + mode: "", + messageText: "", + consoleText: "", completionTypes: [], - completionSource: '', + completionSource: "", completions: [], select: -1, viewIndex: 0, @@ -33,7 +33,7 @@ const nextSelection = (state: State): number => { } const length = state.completions - .map(g => g.items.length) + .map((g) => g.items.length) .reduce((x, y) => x + y); if (state.select + 1 < length) { return state.select + 1; @@ -43,7 +43,7 @@ const nextSelection = (state: State): number => { const prevSelection = (state: State): number => { const length = state.completions - .map(g => g.items.length) + .map((g) => g.items.length) .reduce((x, y) => x + y); if (state.select < 0) { return length - 1; @@ -55,66 +55,74 @@ const nextConsoleText = (completions: any[], select: number, defaults: any) => { if (select < 0) { return defaults; } - const items = completions.map(g => g.items).reduce((g1, g2) => g1.concat(g2)); + const items = completions + .map((g) => g.items) + .reduce((g1, g2) => g1.concat(g2)); return items[select].content; }; // eslint-disable-next-line max-lines-per-function export default function reducer( state: State = defaultState, - action: actions.ConsoleAction, + action: actions.ConsoleAction ): State { switch (action.type) { - case actions.CONSOLE_HIDE: - return { ...state, - mode: '', }; - case actions.CONSOLE_SHOW_COMMAND: - return { ...state, - mode: 'command', - consoleText: action.text, - completionTypes: action.completionTypes, - completions: []}; - case actions.CONSOLE_SHOW_FIND: - return { ...state, - mode: 'find', - consoleText: '', - completions: []}; - case actions.CONSOLE_SHOW_ERROR: - return { ...state, - mode: 'error', - messageText: action.text, }; - case actions.CONSOLE_SHOW_INFO: - return { ...state, - mode: 'info', - messageText: action.text, }; - case actions.CONSOLE_HIDE_COMMAND: - return { - ...state, - mode: state.mode === 'command' || state.mode === 'find' ? '' : state.mode, - }; - case actions.CONSOLE_SET_CONSOLE_TEXT: - return { ...state, - consoleText: action.consoleText, }; - case actions.CONSOLE_SET_COMPLETIONS: - return { ...state, - completions: action.completions, - completionSource: action.completionSource, - select: -1 }; - case actions.CONSOLE_COMPLETION_NEXT: { - const select = nextSelection(state); - return { ...state, - select: select, - consoleText: nextConsoleText( - state.completions, select, state.completionSource) }; - } - case actions.CONSOLE_COMPLETION_PREV: { - const select = prevSelection(state); - return { ...state, - select: select, - consoleText: nextConsoleText( - state.completions, select, state.completionSource) }; - } - default: - return state; + case actions.CONSOLE_HIDE: + return { ...state, mode: "" }; + case actions.CONSOLE_SHOW_COMMAND: + return { + ...state, + mode: "command", + consoleText: action.text, + completionTypes: action.completionTypes, + completions: [], + }; + case actions.CONSOLE_SHOW_FIND: + return { ...state, mode: "find", consoleText: "", completions: [] }; + case actions.CONSOLE_SHOW_ERROR: + return { ...state, mode: "error", messageText: action.text }; + case actions.CONSOLE_SHOW_INFO: + return { ...state, mode: "info", messageText: action.text }; + case actions.CONSOLE_HIDE_COMMAND: + return { + ...state, + mode: + state.mode === "command" || state.mode === "find" ? "" : state.mode, + }; + case actions.CONSOLE_SET_CONSOLE_TEXT: + return { ...state, consoleText: action.consoleText }; + case actions.CONSOLE_SET_COMPLETIONS: + return { + ...state, + completions: action.completions, + completionSource: action.completionSource, + select: -1, + }; + case actions.CONSOLE_COMPLETION_NEXT: { + const select = nextSelection(state); + return { + ...state, + select: select, + consoleText: nextConsoleText( + state.completions, + select, + state.completionSource + ), + }; + } + case actions.CONSOLE_COMPLETION_PREV: { + const select = prevSelection(state); + return { + ...state, + select: select, + consoleText: nextConsoleText( + state.completions, + select, + state.completionSource + ), + }; + } + default: + return state; } } |