add find action and reducer
This commit is contained in:
parent
be37c42d28
commit
e1c70769ea
6 changed files with 124 additions and 0 deletions
36
src/content/actions/find.js
Normal file
36
src/content/actions/find.js
Normal file
|
@ -0,0 +1,36 @@
|
|||
//
|
||||
// window.find(aString, aCaseSensitive, aBackwards, aWrapAround,
|
||||
// aWholeWord, aSearchInFrames, aShowDialog);
|
||||
//
|
||||
// NOTE: window.find is not standard API
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find
|
||||
|
||||
import actions from 'content/actions';
|
||||
|
||||
const show = () => {
|
||||
return { type: actions.FIND_SHOW };
|
||||
};
|
||||
|
||||
const hide = () => {
|
||||
return { type: actions.FIND_HIDE };
|
||||
};
|
||||
|
||||
const next = (keyword) => {
|
||||
// TODO Error on no matched
|
||||
window.find(keyword, false, false, true, false, true, false);
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
};
|
||||
};
|
||||
|
||||
const prev = (keyword) => {
|
||||
// TODO Error on no matched
|
||||
window.find(keyword, false, true, true, false, true, false);
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
};
|
||||
};
|
||||
|
||||
export { show, hide, next, prev };
|
|
@ -21,4 +21,9 @@ export default {
|
|||
FOLLOW_CONTROLLER_DISABLE: 'follow.controller.disable',
|
||||
FOLLOW_CONTROLLER_KEY_PRESS: 'follow.controller.key.press',
|
||||
FOLLOW_CONTROLLER_BACKSPACE: 'follow.controller.backspace',
|
||||
|
||||
// Find
|
||||
FIND_SHOW: 'find.show',
|
||||
FIND_HIDE: 'find.hide',
|
||||
FIND_SET_KEYWORD: 'find.set.keyword',
|
||||
};
|
||||
|
|
25
src/content/reducers/find.js
Normal file
25
src/content/reducers/find.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
import actions from 'content/actions';
|
||||
|
||||
const defaultState = {
|
||||
enabled: false,
|
||||
keyword: '',
|
||||
};
|
||||
|
||||
export default function reducer(state = defaultState, action = {}) {
|
||||
switch (action.type) {
|
||||
case actions.FIND_SHOW:
|
||||
return Object.assign({}, state, {
|
||||
enabled: true,
|
||||
});
|
||||
case actions.FIND_HIDE:
|
||||
return Object.assign({}, state, {
|
||||
enabled: false,
|
||||
});
|
||||
case actions.FIND_SET_KEYWORD:
|
||||
return Object.assign({}, state, {
|
||||
keyword: action.keyword,
|
||||
});
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
import addonReducer from './addon';
|
||||
import findReducer from './find';
|
||||
import settingReducer from './setting';
|
||||
import inputReducer from './input';
|
||||
import followControllerReducer from './follow-controller';
|
||||
|
@ -6,6 +7,7 @@ import followControllerReducer from './follow-controller';
|
|||
// Make setting reducer instead of re-use
|
||||
const defaultState = {
|
||||
addon: addonReducer(undefined, {}),
|
||||
find: findReducer(undefined, {}),
|
||||
setting: settingReducer(undefined, {}),
|
||||
input: inputReducer(undefined, {}),
|
||||
followController: followControllerReducer(undefined, {}),
|
||||
|
@ -14,6 +16,7 @@ const defaultState = {
|
|||
export default function reducer(state = defaultState, action = {}) {
|
||||
return Object.assign({}, state, {
|
||||
addon: addonReducer(state.addon, action),
|
||||
find: findReducer(state.find, action),
|
||||
setting: settingReducer(state.setting, action),
|
||||
input: inputReducer(state.input, action),
|
||||
followController: followControllerReducer(state.followController, action),
|
||||
|
|
Reference in a new issue