Merge remote-tracking branch 'origin/master' into background-adjacent-tabs
This commit is contained in:
commit
4d7c24f38a
120 changed files with 14625 additions and 1641 deletions
|
@ -5,6 +5,7 @@
|
|||
// NOTE: window.find is not standard API
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Window/find
|
||||
|
||||
import messages from 'shared/messages';
|
||||
import actions from 'content/actions';
|
||||
import * as consoleFrames from '../console-frames';
|
||||
|
||||
|
@ -14,6 +15,13 @@ const postPatternNotFound = (pattern) => {
|
|||
'Pattern not found: ' + pattern);
|
||||
};
|
||||
|
||||
const postPatternFound = (pattern) => {
|
||||
return consoleFrames.postInfo(
|
||||
window.document,
|
||||
'Pattern found: ' + pattern,
|
||||
);
|
||||
};
|
||||
|
||||
const find = (string, backwards) => {
|
||||
let caseSensitive = false;
|
||||
let wrapScan = true;
|
||||
|
@ -24,32 +32,49 @@ const find = (string, backwards) => {
|
|||
return window.find(string, caseSensitive, backwards, wrapScan);
|
||||
};
|
||||
|
||||
const findNext = (keyword, reset, backwards) => {
|
||||
const findNext = (currentKeyword, reset, backwards) => {
|
||||
if (reset) {
|
||||
window.getSelection().removeAllRanges();
|
||||
}
|
||||
|
||||
let found = find(keyword, backwards);
|
||||
if (!found) {
|
||||
window.getSelection().removeAllRanges();
|
||||
found = find(keyword, backwards);
|
||||
let promise = Promise.resolve(currentKeyword);
|
||||
if (currentKeyword) {
|
||||
browser.runtime.sendMessage({
|
||||
type: messages.FIND_SET_KEYWORD,
|
||||
keyword: currentKeyword,
|
||||
});
|
||||
} else {
|
||||
promise = browser.runtime.sendMessage({
|
||||
type: messages.FIND_GET_KEYWORD,
|
||||
});
|
||||
}
|
||||
if (!found) {
|
||||
postPatternNotFound(keyword);
|
||||
}
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
found,
|
||||
};
|
||||
|
||||
return promise.then((keyword) => {
|
||||
let found = find(keyword, backwards);
|
||||
if (!found) {
|
||||
window.getSelection().removeAllRanges();
|
||||
found = find(keyword, backwards);
|
||||
}
|
||||
if (found) {
|
||||
postPatternFound(keyword);
|
||||
} else {
|
||||
postPatternNotFound(keyword);
|
||||
}
|
||||
|
||||
return {
|
||||
type: actions.FIND_SET_KEYWORD,
|
||||
keyword,
|
||||
found,
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
const next = (keyword, reset) => {
|
||||
return findNext(keyword, reset, false);
|
||||
const next = (currentKeyword, reset) => {
|
||||
return findNext(currentKeyword, reset, false);
|
||||
};
|
||||
|
||||
const prev = (keyword, reset) => {
|
||||
return findNext(keyword, reset, true);
|
||||
const prev = (currentKeyword, reset) => {
|
||||
return findNext(currentKeyword, reset, true);
|
||||
};
|
||||
|
||||
export { next, prev };
|
||||
|
|
|
@ -2,12 +2,16 @@ import operations from 'shared/operations';
|
|||
import messages from 'shared/messages';
|
||||
import * as scrolls from 'content/scrolls';
|
||||
import * as navigates from 'content/navigates';
|
||||
import * as focuses from 'content/focuses';
|
||||
import * as urls from 'content/urls';
|
||||
import * as consoleFrames from 'content/console-frames';
|
||||
import * as addonActions from './addon';
|
||||
import * as properties from 'shared/settings/properties';
|
||||
|
||||
// eslint-disable-next-line complexity
|
||||
const exec = (operation) => {
|
||||
const exec = (operation, repeat, settings) => {
|
||||
let smoothscroll = settings.properties.smoothscroll ||
|
||||
properties.defaults.smoothscroll;
|
||||
switch (operation.type) {
|
||||
case operations.ADDON_ENABLE:
|
||||
return addonActions.enable();
|
||||
|
@ -24,19 +28,19 @@ const exec = (operation) => {
|
|||
type: messages.FIND_PREV,
|
||||
}), '*');
|
||||
case operations.SCROLL_VERTICALLY:
|
||||
return scrolls.scrollVertically(window, operation.count);
|
||||
return scrolls.scrollVertically(operation.count, smoothscroll, repeat);
|
||||
case operations.SCROLL_HORIZONALLY:
|
||||
return scrolls.scrollHorizonally(window, operation.count);
|
||||
return scrolls.scrollHorizonally(operation.count, smoothscroll, repeat);
|
||||
case operations.SCROLL_PAGES:
|
||||
return scrolls.scrollPages(window, operation.count);
|
||||
return scrolls.scrollPages(operation.count, smoothscroll, repeat);
|
||||
case operations.SCROLL_TOP:
|
||||
return scrolls.scrollTop(window);
|
||||
return scrolls.scrollTop(smoothscroll, repeat);
|
||||
case operations.SCROLL_BOTTOM:
|
||||
return scrolls.scrollBottom(window);
|
||||
return scrolls.scrollBottom(smoothscroll, repeat);
|
||||
case operations.SCROLL_HOME:
|
||||
return scrolls.scrollHome(window);
|
||||
return scrolls.scrollHome(smoothscroll, repeat);
|
||||
case operations.SCROLL_END:
|
||||
return scrolls.scrollEnd(window);
|
||||
return scrolls.scrollEnd(smoothscroll, repeat);
|
||||
case operations.FOLLOW_START:
|
||||
return window.top.postMessage(JSON.stringify({
|
||||
type: messages.FOLLOW_START,
|
||||
|
@ -55,12 +59,13 @@ const exec = (operation) => {
|
|||
return navigates.parent(window);
|
||||
case operations.NAVIGATE_ROOT:
|
||||
return navigates.root(window);
|
||||
case operations.FOCUS_INPUT:
|
||||
return focuses.focusInput();
|
||||
case operations.URLS_YANK:
|
||||
urls.yank(window);
|
||||
return consoleFrames.postMessage(window.document, {
|
||||
type: messages.CONSOLE_SHOW_INFO,
|
||||
text: 'Current url yanked',
|
||||
});
|
||||
return consoleFrames.postInfo(window.document, 'Current url yanked');
|
||||
case operations.URLS_PASTE:
|
||||
return urls.paste(window, operation.newTab ? operation.newTab : false);
|
||||
default:
|
||||
browser.runtime.sendMessage({
|
||||
type: messages.BACKGROUND_OPERATION,
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
import actions from 'content/actions';
|
||||
import * as keyUtils from 'shared/utils/keys';
|
||||
import operations from 'shared/operations';
|
||||
|
||||
const reservedKeymaps = {
|
||||
'<Esc>': { type: operations.CANCEL },
|
||||
'<C-[>': { type: operations.CANCEL },
|
||||
};
|
||||
|
||||
const set = (value) => {
|
||||
let entries = [];
|
||||
if (value.keymaps) {
|
||||
entries = Object.entries(value.keymaps).map((entry) => {
|
||||
let keymaps = Object.assign({}, value.keymaps, reservedKeymaps);
|
||||
entries = Object.entries(keymaps).map((entry) => {
|
||||
return [
|
||||
keyUtils.fromMapKeys(entry[0]),
|
||||
entry[1],
|
||||
|
|
Reference in a new issue