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.
62 lines
1.7 KiB
62 lines
1.7 KiB
import '../console/console-frame.scss'; |
|
import * as consoleFrames from '../console/frames'; |
|
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); |
|
|
|
window.addEventListener('keypress', (e) => { |
|
if (e.target instanceof HTMLInputElement) { |
|
return; |
|
} |
|
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 messages.STATE_UPDATE: |
|
return update(action.state); |
|
case messages.CONTENT_OPERATION: |
|
execOperation(action.operation); |
|
return Promise.resolve(); |
|
default: |
|
return Promise.resolve(); |
|
} |
|
});
|
|
|