aboutsummaryrefslogtreecommitdiff
path: root/src/content/components/top-content/find.ts
diff options
context:
space:
mode:
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));
+ }
+}