diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-09-13 21:55:09 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-09-13 21:55:09 +0900 |
commit | a61f37ad61da8766bf74d5a8b26e53390cb5b6c9 (patch) | |
tree | ffe92ab075915a0fd27bf9cde5dec5e4afcd1f66 /src/content | |
parent | b6e5153c1f67a68434ad3db7d3726f129cc14aa4 (diff) |
content operations
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/index.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/content/index.js b/src/content/index.js index 12d079f..1bba656 100644 --- a/src/content/index.js +++ b/src/content/index.js @@ -1,7 +1,11 @@ import '../console/console-frame.scss'; import * as inputActions from '../actions/input'; import * as consoleFrames from '../console/frames'; +import * as scrolls from '../content/scrolls'; +import * as histories from '../content/histories'; import actions from '../actions'; +import Follow from '../content/follow'; +import operations from '../operations'; import contentReducer from '../reducers/content'; consoleFrames.initialize(window.document); @@ -22,11 +26,37 @@ window.addEventListener("keypress", (e) => { }); }); +const execOperation = (operation) => { + switch (operation.type) { + case operations.SCROLL_LINES: + return scrolls.scrollLines(window, operation.count); + case operations.SCROLL_PAGES: + return scrolls.scrollPages(window, operation.count); + case operations.SCROLL_TOP: + return scrolls.scrollTop(window); + case operations.SCROLL_BOTTOM: + return scrolls.scrollBottom(window); + case operations.SCROLL_LEFT: + return scrolls.scrollLeft(window); + case operations.SCROLL_RIGHT: + return scrolls.scrollRight(window); + case operations.FOLLOW_START: + return new Follow(window.document, operation.newTab); + case operations.HISTORY_PREV: + return histories.prev(window); + case operations.HISTORY_NEXT: + return histories.next(window); + } +} + browser.runtime.onMessage.addListener((action) => { switch (action.type) { case actions.CONSOLE_HIDE: window.focus(); return consoleFrames.blur(window.document); + case 'require.content.operation': + execOperation(action.operation); + return Promise.resolve(); case 'vimvixen.command.enter': return browser.runtime.sendMessage({ type: 'event.cmd.enter', |