first find implementation
This commit is contained in:
parent
956dd937d3
commit
e021504356
8 changed files with 74 additions and 25 deletions
|
@ -1,6 +1,6 @@
|
|||
//
|
||||
// window.find(aString, aCaseSensitive, aBackwards, aWrapAround,
|
||||
// aWholeWord, aSearchInFrames, aShowDialog);
|
||||
// aWholeWord, aSearchInFrames);
|
||||
//
|
||||
// NOTE: window.find is not standard API
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find
|
||||
|
@ -17,7 +17,7 @@ const hide = () => {
|
|||
|
||||
const next = (keyword) => {
|
||||
// TODO Error on no matched
|
||||
window.find(keyword, false, false, true, false, true, false);
|
||||
window.find(keyword, false, false, true, false, true);
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
|
@ -26,7 +26,7 @@ const next = (keyword) => {
|
|||
|
||||
const prev = (keyword) => {
|
||||
// TODO Error on no matched
|
||||
window.find(keyword, false, true, true, false, true, false);
|
||||
window.find(keyword, false, true, true, false, true);
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
|
|
|
@ -6,6 +6,7 @@ import * as urls from 'content/urls';
|
|||
import * as consoleFrames from 'content/console-frames';
|
||||
import * as addonActions from './addon';
|
||||
|
||||
// eslint-disable-next-line complexity
|
||||
const exec = (operation) => {
|
||||
switch (operation.type) {
|
||||
case operations.ADDON_ENABLE:
|
||||
|
@ -14,6 +15,14 @@ const exec = (operation) => {
|
|||
return addonActions.disable();
|
||||
case operations.ADDON_TOGGLE_ENABLED:
|
||||
return addonActions.toggleEnabled();
|
||||
case operations.FIND_NEXT:
|
||||
return window.top.postMessage(JSON.stringify({
|
||||
type: messages.FIND_NEXT,
|
||||
}), '*');
|
||||
case operations.FIND_PREV:
|
||||
return window.top.postMessage(JSON.stringify({
|
||||
type: messages.FIND_PREV,
|
||||
}), '*');
|
||||
case operations.SCROLL_VERTICALLY:
|
||||
return scrolls.scrollVertically(window, operation.count);
|
||||
case operations.SCROLL_HORIZONALLY:
|
||||
|
|
23
src/content/components/top-content/find.js
Normal file
23
src/content/components/top-content/find.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
import * as findActions from 'content/actions/find';
|
||||
import messages from 'shared/messages';
|
||||
|
||||
export default class FindComponent {
|
||||
constructor(win, store) {
|
||||
this.win = win;
|
||||
this.store = store;
|
||||
|
||||
messages.onMessage(this.onMessage.bind(this));
|
||||
}
|
||||
|
||||
onMessage(message) {
|
||||
let state = this.store.getState().find;
|
||||
switch (message.type) {
|
||||
case messages.CONSOLE_ENTER_FIND:
|
||||
return this.store.dispatch(findActions.next(message.text));
|
||||
case messages.FIND_NEXT:
|
||||
return this.store.dispatch(findActions.next(state.keyword));
|
||||
case messages.FIND_PREV:
|
||||
return this.store.dispatch(findActions.prev(state.keyword));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
import CommonComponent from '../common';
|
||||
import FollowController from './follow-controller';
|
||||
import FindComponent from './find';
|
||||
import * as consoleFrames from '../../console-frames';
|
||||
import * as addonActions from '../../actions/addon';
|
||||
import messages from 'shared/messages';
|
||||
|
@ -14,6 +15,7 @@ export default class TopContent {
|
|||
|
||||
new CommonComponent(win, store); // eslint-disable-line no-new
|
||||
new FollowController(win, store); // eslint-disable-line no-new
|
||||
new FindComponent(win, store); // eslint-disable-line no-new
|
||||
|
||||
// TODO make component
|
||||
consoleFrames.initialize(this.win.document);
|
||||
|
@ -47,7 +49,7 @@ export default class TopContent {
|
|||
|
||||
onMessage(message) {
|
||||
switch (message.type) {
|
||||
case messages.CONSOLE_HIDE_COMMAND:
|
||||
case messages.CONSOLE_UNFOCUS:
|
||||
this.win.focus();
|
||||
consoleFrames.blur(window.document);
|
||||
return Promise.resolve();
|
||||
|
|
Reference in a new issue