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.
46 lines
1.1 KiB
46 lines
1.1 KiB
import * as findActions from '../../actions/find'; |
|
import * as messages from '../../../shared/messages'; |
|
import MessageListener from '../../MessageListener'; |
|
|
|
export default class FindComponent { |
|
private store: any; |
|
|
|
constructor(store: any) { |
|
this.store = store; |
|
|
|
new MessageListener().onWebMessage(this.onMessage.bind(this)); |
|
} |
|
|
|
onMessage(message: messages.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: string) { |
|
let state = this.store.getState().find; |
|
|
|
if (text.length === 0) { |
|
return this.store.dispatch( |
|
findActions.next(state.keyword as string, true)); |
|
} |
|
return this.store.dispatch(findActions.next(text, true)); |
|
} |
|
|
|
next() { |
|
let state = this.store.getState().find; |
|
return this.store.dispatch( |
|
findActions.next(state.keyword as string, false)); |
|
} |
|
|
|
prev() { |
|
let state = this.store.getState().find; |
|
return this.store.dispatch( |
|
findActions.prev(state.keyword as string, false)); |
|
} |
|
}
|
|
|