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.
97 lines
3.8 KiB
97 lines
3.8 KiB
import MessageListener from './MessageListener'; |
|
import FindController from './controllers/FindController'; |
|
import MarkController from './controllers/MarkController'; |
|
import FollowMasterController from './controllers/FollowMasterController'; |
|
import FollowSlaveController from './controllers/FollowSlaveController'; |
|
import FollowKeyController from './controllers/FollowKeyController'; |
|
import InputDriver from './InputDriver'; |
|
import KeymapController from './controllers/KeymapController'; |
|
import AddonEnabledUseCase from './usecases/AddonEnabledUseCase'; |
|
import MarkKeyController from './controllers/MarkKeyController'; |
|
import AddonEnabledController from './controllers/AddonEnabledController'; |
|
import SettingController from './controllers/SettingController'; |
|
import ConsoleFrameController from './controllers/ConsoleFrameController'; |
|
import * as messages from '../shared/messages'; |
|
|
|
export const routeComponents = () => { |
|
let listener = new MessageListener(); |
|
|
|
let followSlaveController = new FollowSlaveController(); |
|
listener.onWebMessage((message: messages.Message) => { |
|
switch (message.type) { |
|
case messages.FOLLOW_REQUEST_COUNT_TARGETS: |
|
return followSlaveController.countTargets(message); |
|
case messages.FOLLOW_CREATE_HINTS: |
|
return followSlaveController.createHints(message); |
|
case messages.FOLLOW_SHOW_HINTS: |
|
return followSlaveController.showHints(message); |
|
case messages.FOLLOW_ACTIVATE: |
|
return followSlaveController.activate(message); |
|
case messages.FOLLOW_REMOVE_HINTS: |
|
return followSlaveController.clear(message); |
|
} |
|
return undefined; |
|
}); |
|
|
|
let keymapController = new KeymapController(); |
|
let markKeyController = new MarkKeyController(); |
|
let followKeyController = new FollowKeyController(); |
|
let inputDriver = new InputDriver(document.body); |
|
inputDriver.onKey(key => followKeyController.press(key)); |
|
inputDriver.onKey(key => markKeyController.press(key)); |
|
inputDriver.onKey(key => keymapController.press(key)); |
|
|
|
let settingController = new SettingController(); |
|
settingController.initSettings(); |
|
|
|
listener.onBackgroundMessage((message: messages.Message): any => { |
|
let addonEnabledUseCase = new AddonEnabledUseCase(); |
|
|
|
switch (message.type) { |
|
case messages.SETTINGS_CHANGED: |
|
return settingController.reloadSettings(message); |
|
case messages.ADDON_TOGGLE_ENABLED: |
|
return addonEnabledUseCase.toggle(); |
|
} |
|
}); |
|
}; |
|
|
|
export const routeMasterComponents = () => { |
|
let listener = new MessageListener(); |
|
|
|
let findController = new FindController(); |
|
let followMasterController = new FollowMasterController(); |
|
let markController = new MarkController(); |
|
let addonEnabledController = new AddonEnabledController(); |
|
let consoleFrameController = new ConsoleFrameController(); |
|
|
|
listener.onWebMessage((message: messages.Message, sender: Window) => { |
|
switch (message.type) { |
|
case messages.CONSOLE_ENTER_FIND: |
|
return findController.start(message); |
|
case messages.FIND_NEXT: |
|
return findController.next(message); |
|
case messages.FIND_PREV: |
|
return findController.prev(message); |
|
case messages.CONSOLE_UNFOCUS: |
|
return consoleFrameController.unfocus(message); |
|
case messages.FOLLOW_START: |
|
return followMasterController.followStart(message); |
|
case messages.FOLLOW_RESPONSE_COUNT_TARGETS: |
|
return followMasterController.responseCountTargets(message, sender); |
|
case messages.FOLLOW_KEY_PRESS: |
|
return followMasterController.keyPress(message); |
|
} |
|
return undefined; |
|
}); |
|
|
|
listener.onBackgroundMessage((message: messages.Message) => { |
|
switch (message.type) { |
|
case messages.ADDON_ENABLED_QUERY: |
|
return addonEnabledController.getAddonEnabled(message); |
|
case messages.TAB_SCROLL_TO: |
|
return markController.scrollTo(message); |
|
} |
|
return undefined; |
|
}); |
|
};
|
|
|