diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/index.js | 130 |
1 files changed, 21 insertions, 109 deletions
diff --git a/src/content/index.js b/src/content/index.js index fdc7e89..12d079f 100644 --- a/src/content/index.js +++ b/src/content/index.js @@ -1,129 +1,41 @@ -import * as scrolls from './scrolls'; -import * as histories from './histories'; -import * as actions from '../shared/actions'; -import * as messages from '../shared/messages'; -import ConsoleFrame from '../console/console-frame'; -import Follow from './follow'; +import '../console/console-frame.scss'; +import * as inputActions from '../actions/input'; +import * as consoleFrames from '../console/frames'; +import actions from '../actions'; +import contentReducer from '../reducers/content'; -let vvConsole = new ConsoleFrame(window); +consoleFrames.initialize(window.document); -const doAction = (action) => { - if (typeof action === 'undefined' || action === null) { - return; - } - - switch (action[0]) { - case actions.CMD_OPEN: - vvConsole.showCommand(''); - break; - case actions.CMD_TABS_OPEN: - if (action[1] || false) { - // alter url - vvConsole.showCommand('open ' + window.location.href); - } else { - vvConsole.showCommand('open '); - } - break; - case actions.CMD_BUFFER: - vvConsole.showCommand('buffer '); - break; - case actions.SCROLL_LINES: - scrolls.scrollLines(window, action[1]); - break; - case actions.SCROLL_PAGES: - scrolls.scrollPages(window, action[1]); - break; - case actions.SCROLL_TOP: - scrolls.scrollTop(window); - break; - case actions.SCROLL_BOTTOM: - scrolls.scrollBottom(window); - break; - case actions.SCROLL_LEFT: - scrolls.scrollLeft(window); - break; - case actions.SCROLL_RIGHT: - scrolls.scrollRight(window); - break; - case actions.FOLLOW_START: - new Follow(window.document, action[1] || false); - break; - case actions.HISTORY_PREV: - histories.prev(window); - break; - case actions.HISTORY_NEXT: - histories.next(window); - break; - } -} - -const handleResponse = (response) => { - if (!response) { - return; - } - - switch(response.type) { - case 'response.action': - doAction(response.action); - break; - } -}; +browser.runtime.onMessage.addListener((action) => { + contentReducer(undefined, action); + return Promise.resolve(); +}); window.addEventListener("keypress", (e) => { if (e.target instanceof HTMLInputElement) { return; } - - let request = { - type: 'event.keypress', - code: e.which, - ctrl: e.ctrlKey, - } - - browser.runtime.sendMessage(request) - .then(handleResponse) + browser.runtime.sendMessage(inputActions.keyPress(e.which, e.ctrlKey)) .catch((err) => { console.error("Vim Vixen:", err); - vvConsole.showError(err.message); + return consoleFrames.showError(err.message); }); }); -const doCompletion = (line) => { - if (line.startsWith('buffer ')) { - let keyword = line.replace('buffer ', ''); - - browser.runtime.sendMessage({ - type: 'event.cmd.tabs.completion', - text: keyword - }).then((completions) => { - vvConsole.setCompletions([completions]); - }).catch((err) => { - console.error("Vim Vixen:", err); - vvConsole.showError(err.message); - }); - } -}; - -messages.receive(window, (message) => { - switch (message.type) { - case 'vimvixen.command.blur': - if (!vvConsole.isErrorShown()) { - vvConsole.hide(); - } - break; +browser.runtime.onMessage.addListener((action) => { + switch (action.type) { + case actions.CONSOLE_HIDE: + window.focus(); + return consoleFrames.blur(window.document); case 'vimvixen.command.enter': - browser.runtime.sendMessage({ + return browser.runtime.sendMessage({ type: 'event.cmd.enter', - text: message.value + text: action.value }).catch((err) => { console.error("Vim Vixen:", err); - vvConsole.showError(err.message); + return consoleFrames.showError(err.message); }); - break; - case 'vimvixen.command.change': - doCompletion(message.value); - break; default: - return; + return Promise.resolve(); } }); |