show error on find and wrap search

This commit is contained in:
Shin'ya Ueoka 2017-11-11 15:53:46 +09:00
parent 6db2458929
commit 12db4943ee
4 changed files with 83 additions and 15 deletions

View file

@ -6,6 +6,13 @@
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find
import actions from 'content/actions';
import * as consoleFrames from '../console-frames';
const postPatternNotFound = (pattern) => {
return consoleFrames.postError(
window.document,
'Pattern not found: ' + pattern);
};
const show = () => {
return { type: actions.FIND_SHOW };
@ -15,22 +22,42 @@ const hide = () => {
return { type: actions.FIND_HIDE };
};
const next = (keyword) => {
// TODO Error on no matched
window.find(keyword, false, false, true, false, true);
const find = (string, backwards) => {
let caseSensitive = false;
let wrapScan = true;
// NOTE: aWholeWord dows not implemented, and aSearchInFrames does not work
// because of same origin policy
return window.find(string, caseSensitive, backwards, wrapScan);
};
const findNext = (keyword, reset, backwards) => {
if (reset) {
window.getSelection().removeAllRanges();
}
let found = find(keyword, backwards);
if (!found) {
window.getSelection().removeAllRanges();
found = find(keyword, backwards);
}
if (!found) {
postPatternNotFound(keyword);
}
return {
type: actions.FIND_SET_KEYWORD,
keyword,
found,
};
};
const prev = (keyword) => {
// TODO Error on no matched
window.find(keyword, false, true, true, false, true);
return {
type: actions.FIND_SET_KEYWORD,
keyword,
};
const next = (keyword, reset) => {
return findNext(keyword, reset, false);
};
const prev = (keyword, reset) => {
return findNext(keyword, reset, true);
};
export { show, hide, next, prev };