diff options
Diffstat (limited to 'src/background')
-rw-r--r-- | src/background/index.js | 54 | ||||
-rw-r--r-- | src/background/keys.js | 21 |
2 files changed, 4 insertions, 71 deletions
diff --git a/src/background/index.js b/src/background/index.js index bf89a33..e968c82 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -1,16 +1,11 @@ -import * as keys from './keys'; -import * as inputActions from '../actions/input'; -import * as operationActions from '../actions/operation'; import * as consoleActions from '../actions/console'; import * as settingsActions from '../actions/setting'; import BackgroundComponent from '../components/background'; +import BackgroundInputComponent from '../components/background-input'; import reducers from '../reducers'; import messages from '../content/messages'; import * as store from '../store'; -let prevInput = []; -let settings = {}; - const backgroundStore = store.createStore(reducers, (e, sender) => { console.error('Vim-Vixen:', e); if (sender) { @@ -18,22 +13,10 @@ const backgroundStore = store.createStore(reducers, (e, sender) => { } }); const backgroundComponent = new BackgroundComponent(backgroundStore); +const backgroundInputComponent = new BackgroundInputComponent(backgroundStore); backgroundStore.subscribe((sender) => { backgroundComponent.update(sender); -}); -backgroundStore.subscribe((sender) => { - let currentInput = backgroundStore.getState().input; - if (JSON.stringify(prevInput) === JSON.stringify(currentInput)) { - return; - } - prevInput = currentInput; - - if (currentInput.keys.length === 0) { - return; - } - if (sender) { - return keyQueueChanged(backgroundStore.getState(), sender); - } + backgroundInputComponent.update(sender); }); backgroundStore.subscribe((sender) => { if (sender) { @@ -43,34 +26,5 @@ backgroundStore.subscribe((sender) => { }); } }); -backgroundStore.subscribe(() => { - let state = backgroundStore.getState().setting; - if (!state.settings.json) { - return; - } - settings = JSON.parse(backgroundStore.getState().setting.settings.json); -}); - -const keyQueueChanged = (state, sender) => { - let prefix = keys.asKeymapChars(state.input.keys); - let matched = Object.keys(settings.keymaps).filter((keyStr) => { - return keyStr.startsWith(prefix); - }); - if (matched.length === 0) { - backgroundStore.dispatch(inputActions.clearKeys(), sender); - return Promise.resolve(); - } else if (matched.length > 1 || - matched.length === 1 && prefix !== matched[0]) { - return Promise.resolve(); - } - let action = settings.keymaps[matched]; - backgroundStore.dispatch( - operationActions.exec(action, sender.tab, settings), sender); - backgroundStore.dispatch(inputActions.clearKeys(), sender); -}; - -const initializeSettings = () => { - backgroundStore.dispatch(settingsActions.load()); -}; -initializeSettings(); +backgroundStore.dispatch(settingsActions.load()); diff --git a/src/background/keys.js b/src/background/keys.js deleted file mode 100644 index aca050e..0000000 --- a/src/background/keys.js +++ /dev/null @@ -1,21 +0,0 @@ -const asKeymapChars = (keys) => { - return keys.map((k) => { - let c = String.fromCharCode(k.code); - if (k.ctrl) { - return '<C-' + c.toUpperCase() + '>'; - } - return c; - }).join(''); -}; - -const asCaretChars = (keys) => { - return keys.map((k) => { - let c = String.fromCharCode(k.code); - if (k.ctrl) { - return '^' + c.toUpperCase(); - } - return c; - }).join(''); -}; - -export { asKeymapChars, asCaretChars }; |