aboutsummaryrefslogtreecommitdiff
path: root/src/content/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/index.js')
-rw-r--r--src/content/index.js69
1 files changed, 45 insertions, 24 deletions
diff --git a/src/content/index.js b/src/content/index.js
index 12d079f..5d3735c 100644
--- a/src/content/index.js
+++ b/src/content/index.js
@@ -1,40 +1,61 @@
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';
+import * as scrolls from '../content/scrolls';
+import * as histories from '../content/histories';
+import Follow from '../content/follow';
+import operations from '../operations';
+import messages from '../messages';
consoleFrames.initialize(window.document);
-browser.runtime.onMessage.addListener((action) => {
- contentReducer(undefined, action);
- return Promise.resolve();
-});
-
window.addEventListener("keypress", (e) => {
if (e.target instanceof HTMLInputElement) {
return;
}
- browser.runtime.sendMessage(inputActions.keyPress(e.which, e.ctrlKey))
- .catch((err) => {
- console.error("Vim Vixen:", err);
- return consoleFrames.showError(err.message);
- });
+ browser.runtime.sendMessage({
+ type: messages.KEYDOWN,
+ code: e.which,
+ ctrl: e.ctrl
+ });
});
+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);
+ }
+}
+
+const update = (state) => {
+ if (!state.console.commandShown) {
+ window.focus();
+ consoleFrames.blur(window.document);
+ }
+}
+
browser.runtime.onMessage.addListener((action) => {
switch (action.type) {
- case actions.CONSOLE_HIDE:
- window.focus();
- return consoleFrames.blur(window.document);
- case 'vimvixen.command.enter':
- return browser.runtime.sendMessage({
- type: 'event.cmd.enter',
- text: action.value
- }).catch((err) => {
- console.error("Vim Vixen:", err);
- return consoleFrames.showError(err.message);
- });
+ case messages.STATE_UPDATE:
+ return update(action.state);
+ case messages.CONTENT_OPERATION:
+ execOperation(action.operation);
+ return Promise.resolve();
default:
return Promise.resolve();
}