aboutsummaryrefslogtreecommitdiff
path: root/src/content/actions/operation.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-04-30 14:00:07 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2019-05-02 11:14:19 +0900
commitc60d0e7392fc708e961614d6b756a045de74f458 (patch)
tree0b9a5fce1879e38a92d5dbb2915779aee0ad22d6 /src/content/actions/operation.ts
parent257162e5b6b4993e1dff0d705ffa6f0d809033eb (diff)
Rename .js/.jsx to .ts/.tsx
Diffstat (limited to 'src/content/actions/operation.ts')
-rw-r--r--src/content/actions/operation.ts104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/content/actions/operation.ts b/src/content/actions/operation.ts
new file mode 100644
index 0000000..ed9b2cf
--- /dev/null
+++ b/src/content/actions/operation.ts
@@ -0,0 +1,104 @@
+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 markActions from './mark';
+import * as properties from 'shared/settings/properties';
+
+// eslint-disable-next-line complexity, max-lines-per-function
+const exec = (operation, settings, addonEnabled) => {
+ let smoothscroll = settings.properties.smoothscroll ||
+ properties.defaults.smoothscroll;
+ switch (operation.type) {
+ case operations.ADDON_ENABLE:
+ return addonActions.enable();
+ case operations.ADDON_DISABLE:
+ return addonActions.disable();
+ case operations.ADDON_TOGGLE_ENABLED:
+ return addonActions.setEnabled(!addonEnabled);
+ case operations.FIND_NEXT:
+ window.top.postMessage(JSON.stringify({
+ type: messages.FIND_NEXT,
+ }), '*');
+ break;
+ case operations.FIND_PREV:
+ window.top.postMessage(JSON.stringify({
+ type: messages.FIND_PREV,
+ }), '*');
+ break;
+ case operations.SCROLL_VERTICALLY:
+ scrolls.scrollVertically(operation.count, smoothscroll);
+ break;
+ case operations.SCROLL_HORIZONALLY:
+ scrolls.scrollHorizonally(operation.count, smoothscroll);
+ break;
+ case operations.SCROLL_PAGES:
+ scrolls.scrollPages(operation.count, smoothscroll);
+ break;
+ case operations.SCROLL_TOP:
+ scrolls.scrollToTop(smoothscroll);
+ break;
+ case operations.SCROLL_BOTTOM:
+ scrolls.scrollToBottom(smoothscroll);
+ break;
+ case operations.SCROLL_HOME:
+ scrolls.scrollToHome(smoothscroll);
+ break;
+ case operations.SCROLL_END:
+ scrolls.scrollToEnd(smoothscroll);
+ break;
+ case operations.FOLLOW_START:
+ window.top.postMessage(JSON.stringify({
+ type: messages.FOLLOW_START,
+ newTab: operation.newTab,
+ background: operation.background,
+ }), '*');
+ break;
+ case operations.MARK_SET_PREFIX:
+ return markActions.startSet();
+ case operations.MARK_JUMP_PREFIX:
+ return markActions.startJump();
+ case operations.NAVIGATE_HISTORY_PREV:
+ navigates.historyPrev(window);
+ break;
+ case operations.NAVIGATE_HISTORY_NEXT:
+ navigates.historyNext(window);
+ break;
+ case operations.NAVIGATE_LINK_PREV:
+ navigates.linkPrev(window);
+ break;
+ case operations.NAVIGATE_LINK_NEXT:
+ navigates.linkNext(window);
+ break;
+ case operations.NAVIGATE_PARENT:
+ navigates.parent(window);
+ break;
+ case operations.NAVIGATE_ROOT:
+ navigates.root(window);
+ break;
+ case operations.FOCUS_INPUT:
+ focuses.focusInput();
+ break;
+ case operations.URLS_YANK:
+ urls.yank(window);
+ consoleFrames.postInfo('Yanked ' + window.location.href);
+ break;
+ case operations.URLS_PASTE:
+ urls.paste(
+ window, operation.newTab ? operation.newTab : false, settings.search
+ );
+ break;
+ default:
+ browser.runtime.sendMessage({
+ type: messages.BACKGROUND_OPERATION,
+ operation,
+ });
+ }
+ return { type: '' };
+};
+
+export { exec };