diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-08 14:18:12 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-10-08 14:18:12 +0900 |
commit | 541449b1fced9eea15f415b023206b10724f5315 (patch) | |
tree | 996e207602e0c9f7d2d03fb1643339f441ebcefd /src/components | |
parent | 22db12f2a37529a560eda1839c3a23011f900fab (diff) |
separate console
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/completion.js | 61 | ||||
-rw-r--r-- | src/components/console.js | 148 |
2 files changed, 0 insertions, 209 deletions
diff --git a/src/components/completion.js b/src/components/completion.js deleted file mode 100644 index f527a84..0000000 --- a/src/components/completion.js +++ /dev/null @@ -1,61 +0,0 @@ -export default class Completion { - constructor(wrapper, store) { - this.wrapper = wrapper; - this.store = store; - this.prevState = {}; - } - - update() { - let state = this.store.getState().console; - if (JSON.stringify(this.prevState) === JSON.stringify(state)) { - return; - } - - this.wrapper.innerHTML = ''; - - for (let i = 0; i < state.completions.length; ++i) { - let group = state.completions[i]; - let title = this.createCompletionTitle(group.name); - this.wrapper.append(title); - - for (let j = 0; j < group.items.length; ++j) { - let item = group.items[j]; - let li = this.createCompletionItem(item.icon, item.caption, item.url); - this.wrapper.append(li); - - if (i === state.groupSelection && j === state.itemSelection) { - li.classList.add('vimvixen-completion-selected'); - } - } - } - - this.prevState = state; - } - - createCompletionTitle(text) { - let doc = this.wrapper.ownerDocument; - let li = doc.createElement('li'); - li.className = 'vimvixen-console-completion-title'; - li.textContent = text; - return li; - } - - createCompletionItem(icon, caption, url) { - let doc = this.wrapper.ownerDocument; - - let captionEle = doc.createElement('span'); - captionEle.className = 'vimvixen-console-completion-item-caption'; - captionEle.textContent = caption; - - let urlEle = doc.createElement('span'); - urlEle.className = 'vimvixen-console-completion-item-url'; - urlEle.textContent = url; - - let li = doc.createElement('li'); - li.style.backgroundImage = 'url(' + icon + ')'; - li.className = 'vimvixen-console-completion-item'; - li.append(captionEle); - li.append(urlEle); - return li; - } -} diff --git a/src/components/console.js b/src/components/console.js deleted file mode 100644 index 20d15c2..0000000 --- a/src/components/console.js +++ /dev/null @@ -1,148 +0,0 @@ -import messages from 'shared/messages'; -import * as consoleActions from 'actions/console'; - -export default class ConsoleComponent { - constructor(wrapper, store) { - this.wrapper = wrapper; - this.prevValue = ''; - this.prevState = {}; - this.completionOrigin = ''; - this.store = store; - - let doc = this.wrapper.ownerDocument; - let input = doc.querySelector('#vimvixen-console-command-input'); - input.addEventListener('blur', this.onBlur.bind(this)); - input.addEventListener('keydown', this.onKeyDown.bind(this)); - input.addEventListener('keyup', this.onKeyUp.bind(this)); - - this.hideCommand(); - this.hideError(); - } - - onBlur() { - return browser.runtime.sendMessage({ - type: messages.CONSOLE_BLURRED, - }); - } - - onKeyDown(e) { - let doc = this.wrapper.ownerDocument; - let input = doc.querySelector('#vimvixen-console-command-input'); - - switch (e.keyCode) { - case KeyboardEvent.DOM_VK_ESCAPE: - return input.blur(); - case KeyboardEvent.DOM_VK_RETURN: - return browser.runtime.sendMessage({ - type: messages.CONSOLE_ENTERED, - text: e.target.value - }).then(this.onBlur); - case KeyboardEvent.DOM_VK_TAB: - if (e.shiftKey) { - this.store.dispatch(consoleActions.completionPrev()); - } else { - this.store.dispatch(consoleActions.completionNext()); - } - e.stopPropagation(); - e.preventDefault(); - break; - } - } - - onKeyUp(e) { - if (e.keyCode === KeyboardEvent.DOM_VK_TAB) { - return; - } - if (e.target.value === this.prevValue) { - return; - } - - let doc = this.wrapper.ownerDocument; - let input = doc.querySelector('#vimvixen-console-command-input'); - this.completionOrigin = input.value; - - this.prevValue = e.target.value; - return browser.runtime.sendMessage({ - type: messages.CONSOLE_QUERY_COMPLETIONS, - text: e.target.value - }).then((completions) => { - this.store.dispatch(consoleActions.setCompletions(completions)); - }); - } - - update() { - let state = this.store.getState().console; - if (!this.prevState.commandShown && state.commandShown) { - this.showCommand(state.commandText); - } else if (!state.commandShown) { - this.hideCommand(); - } - - if (state.errorShown) { - this.setErrorText(state.errorText); - this.showError(); - } else { - this.hideError(); - } - - if (state.groupSelection >= 0 && state.itemSelection >= 0) { - let group = state.completions[state.groupSelection]; - let item = group.items[state.itemSelection]; - this.setCommandValue(item.content); - } else if (state.completions.length > 0 && - JSON.stringify(this.prevState.completions) === - JSON.stringify(state.completions)) { - // Reset input only completion groups not changed (unselected an item in - // completion) in order to avoid to override previous input - this.setCommandCompletionOrigin(); - } - - this.prevState = state; - } - - showCommand(text) { - let doc = this.wrapper.ownerDocument; - let command = doc.querySelector('#vimvixen-console-command'); - let input = doc.querySelector('#vimvixen-console-command-input'); - - command.style.display = 'block'; - input.value = text; - input.focus(); - } - - hideCommand() { - let doc = this.wrapper.ownerDocument; - let command = doc.querySelector('#vimvixen-console-command'); - command.style.display = 'none'; - } - - setCommandValue(value) { - let doc = this.wrapper.ownerDocument; - let input = doc.querySelector('#vimvixen-console-command-input'); - input.value = value; - } - - setCommandCompletionOrigin() { - let doc = this.wrapper.ownerDocument; - let input = doc.querySelector('#vimvixen-console-command-input'); - input.value = this.completionOrigin; - } - - setErrorText(text) { - let doc = this.wrapper.ownerDocument; - let error = doc.querySelector('#vimvixen-console-error'); - error.textContent = text; - } - - showError() { - let doc = this.wrapper.ownerDocument; - let error = doc.querySelector('#vimvixen-console-error'); - error.style.display = 'block'; - } - - hideError() { - let doc = this.wrapper.ownerDocument; - let error = doc.querySelector('#vimvixen-console-error'); - error.style.display = 'none'; - } -} |