aboutsummaryrefslogtreecommitdiff
path: root/src/content/components/top-content/find.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-05-07 21:16:47 +0900
committerGitHub <noreply@github.com>2019-05-07 21:16:47 +0900
commit05ef6a8ca35aaa801c11eb6b4896caa3690058af (patch)
tree2c7708ca91ac2b462cc86aa28612e3d3943496f3 /src/content/components/top-content/find.ts
parent457d954e08923b4accd28a919c72d0b61db1bb98 (diff)
parent27d0a7f37d24a0ad68a8ccb7dee18fc1d00eea58 (diff)
Merge pull request #578 from ueokande/move-to-typescript
Move to TypeScript
Diffstat (limited to 'src/content/components/top-content/find.ts')
-rw-r--r--src/content/components/top-content/find.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/content/components/top-content/find.ts b/src/content/components/top-content/find.ts
new file mode 100644
index 0000000..74b95bc
--- /dev/null
+++ b/src/content/components/top-content/find.ts
@@ -0,0 +1,46 @@
+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));
+ }
+}