diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/content/actions/find.js | 36 | ||||
-rw-r--r-- | src/content/actions/index.js | 5 | ||||
-rw-r--r-- | src/content/reducers/find.js | 25 | ||||
-rw-r--r-- | src/content/reducers/index.js | 3 |
4 files changed, 69 insertions, 0 deletions
diff --git a/src/content/actions/find.js b/src/content/actions/find.js new file mode 100644 index 0000000..90c9de9 --- /dev/null +++ b/src/content/actions/find.js @@ -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 }; diff --git a/src/content/actions/index.js b/src/content/actions/index.js index 8cc2303..a727e13 100644 --- a/src/content/actions/index.js +++ b/src/content/actions/index.js @@ -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', }; diff --git a/src/content/reducers/find.js b/src/content/reducers/find.js new file mode 100644 index 0000000..6042f50 --- /dev/null +++ b/src/content/reducers/find.js @@ -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; + } +} diff --git a/src/content/reducers/index.js b/src/content/reducers/index.js index 17c0429..2487d85 100644 --- a/src/content/reducers/index.js +++ b/src/content/reducers/index.js @@ -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), |