54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
import * as findActions from 'content/actions/find';
|
|
import messages from 'shared/messages';
|
|
import * as consoleFrames from '../../console-frames';
|
|
|
|
export default class FindComponent {
|
|
constructor(win, store) {
|
|
this.win = win;
|
|
this.store = store;
|
|
|
|
messages.onMessage(this.onMessage.bind(this));
|
|
}
|
|
|
|
onMessage(message) {
|
|
switch (message.type) {
|
|
case messages.CONSOLE_ENTER_FIND:
|
|
return this.start(message.text);
|
|
case messages.FIND_NEXT:
|
|
return this.next();
|
|
case messages.FIND_PREV:
|
|
return this.prev();
|
|
}
|
|
}
|
|
|
|
start(text) {
|
|
let state = this.store.getState().find;
|
|
|
|
if (text.length === 0) {
|
|
return this.store.dispatch(findActions.next(state.keyword, true));
|
|
}
|
|
return this.store.dispatch(findActions.next(text, true));
|
|
}
|
|
|
|
next() {
|
|
let state = this.store.getState().find;
|
|
if (!state.keyword) {
|
|
return this.postNoPrevious();
|
|
}
|
|
return this.store.dispatch(findActions.next(state.keyword, false));
|
|
}
|
|
|
|
prev() {
|
|
let state = this.store.getState().find;
|
|
if (!state.keyword) {
|
|
return this.postNoPrevious();
|
|
}
|
|
return this.store.dispatch(findActions.prev(state.keyword, false));
|
|
}
|
|
|
|
postNoPrevious() {
|
|
return consoleFrames.postError(
|
|
window.document,
|
|
'No previous search keypards');
|
|
}
|
|
}
|