aboutsummaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/messages.ts78
-rw-r--r--src/shared/urls.ts10
-rw-r--r--src/shared/utils/keys.ts99
3 files changed, 46 insertions, 141 deletions
diff --git a/src/shared/messages.ts b/src/shared/messages.ts
index 41b0f0b..fbd3478 100644
--- a/src/shared/messages.ts
+++ b/src/shared/messages.ts
@@ -42,162 +42,164 @@ export const SETTINGS_QUERY = 'settings.query';
export const CONSOLE_FRAME_MESSAGE = 'console.frame.message';
-interface BackgroundOperationMessage {
+export interface BackgroundOperationMessage {
type: typeof BACKGROUND_OPERATION;
operation: operations.Operation;
}
-interface ConsoleUnfocusMessage {
+export interface ConsoleUnfocusMessage {
type: typeof CONSOLE_UNFOCUS;
}
-interface ConsoleEnterCommandMessage {
+export interface ConsoleEnterCommandMessage {
type: typeof CONSOLE_ENTER_COMMAND;
text: string;
}
-interface ConsoleEnterFindMessage {
+export interface ConsoleEnterFindMessage {
type: typeof CONSOLE_ENTER_FIND;
- text: string;
+ text?: string;
}
-interface ConsoleQueryCompletionsMessage {
+export interface ConsoleQueryCompletionsMessage {
type: typeof CONSOLE_QUERY_COMPLETIONS;
text: string;
}
-interface ConsoleShowCommandMessage {
+export interface ConsoleShowCommandMessage {
type: typeof CONSOLE_SHOW_COMMAND;
command: string;
}
-interface ConsoleShowErrorMessage {
+export interface ConsoleShowErrorMessage {
type: typeof CONSOLE_SHOW_ERROR;
text: string;
}
-interface ConsoleShowInfoMessage {
+export interface ConsoleShowInfoMessage {
type: typeof CONSOLE_SHOW_INFO;
text: string;
}
-interface ConsoleShowFindMessage {
+export interface ConsoleShowFindMessage {
type: typeof CONSOLE_SHOW_FIND;
}
-interface ConsoleHideMessage {
+export interface ConsoleHideMessage {
type: typeof CONSOLE_HIDE;
}
-interface FollowStartMessage {
+export interface FollowStartMessage {
type: typeof FOLLOW_START;
newTab: boolean;
background: boolean;
}
-interface FollowRequestCountTargetsMessage {
+export interface FollowRequestCountTargetsMessage {
type: typeof FOLLOW_REQUEST_COUNT_TARGETS;
viewSize: { width: number, height: number };
framePosition: { x: number, y: number };
}
-interface FollowResponseCountTargetsMessage {
+export interface FollowResponseCountTargetsMessage {
type: typeof FOLLOW_RESPONSE_COUNT_TARGETS;
count: number;
}
-interface FollowCreateHintsMessage {
+export interface FollowCreateHintsMessage {
type: typeof FOLLOW_CREATE_HINTS;
- keysArray: string[];
- newTab: boolean;
- background: boolean;
+ tags: string[];
+ viewSize: { width: number, height: number };
+ framePosition: { x: number, y: number };
}
-interface FollowShowHintsMessage {
+export interface FollowShowHintsMessage {
type: typeof FOLLOW_SHOW_HINTS;
- keys: string;
+ prefix: string;
}
-interface FollowRemoveHintsMessage {
+export interface FollowRemoveHintsMessage {
type: typeof FOLLOW_REMOVE_HINTS;
}
-interface FollowActivateMessage {
+export interface FollowActivateMessage {
type: typeof FOLLOW_ACTIVATE;
- keys: string;
+ tag: string;
+ newTab: boolean;
+ background: boolean;
}
-interface FollowKeyPressMessage {
+export interface FollowKeyPressMessage {
type: typeof FOLLOW_KEY_PRESS;
key: string;
ctrlKey: boolean;
}
-interface MarkSetGlobalMessage {
+export interface MarkSetGlobalMessage {
type: typeof MARK_SET_GLOBAL;
key: string;
x: number;
y: number;
}
-interface MarkJumpGlobalMessage {
+export interface MarkJumpGlobalMessage {
type: typeof MARK_JUMP_GLOBAL;
key: string;
}
-interface TabScrollToMessage {
+export interface TabScrollToMessage {
type: typeof TAB_SCROLL_TO;
x: number;
y: number;
}
-interface FindNextMessage {
+export interface FindNextMessage {
type: typeof FIND_NEXT;
}
-interface FindPrevMessage {
+export interface FindPrevMessage {
type: typeof FIND_PREV;
}
-interface FindGetKeywordMessage {
+export interface FindGetKeywordMessage {
type: typeof FIND_GET_KEYWORD;
}
-interface FindSetKeywordMessage {
+export interface FindSetKeywordMessage {
type: typeof FIND_SET_KEYWORD;
keyword: string;
found: boolean;
}
-interface AddonEnabledQueryMessage {
+export interface AddonEnabledQueryMessage {
type: typeof ADDON_ENABLED_QUERY;
}
-interface AddonEnabledResponseMessage {
+export interface AddonEnabledResponseMessage {
type: typeof ADDON_ENABLED_RESPONSE;
enabled: boolean;
}
-interface AddonToggleEnabledMessage {
+export interface AddonToggleEnabledMessage {
type: typeof ADDON_TOGGLE_ENABLED;
}
-interface OpenUrlMessage {
+export interface OpenUrlMessage {
type: typeof OPEN_URL;
url: string;
newTab: boolean;
background: boolean;
}
-interface SettingsChangedMessage {
+export interface SettingsChangedMessage {
type: typeof SETTINGS_CHANGED;
}
-interface SettingsQueryMessage {
+export interface SettingsQueryMessage {
type: typeof SETTINGS_QUERY;
}
-interface ConsoleFrameMessageMessage {
+export interface ConsoleFrameMessageMessage {
type: typeof CONSOLE_FRAME_MESSAGE;
message: any;
}
diff --git a/src/shared/urls.ts b/src/shared/urls.ts
index 18349c8..bbdb1ea 100644
--- a/src/shared/urls.ts
+++ b/src/shared/urls.ts
@@ -1,3 +1,5 @@
+import { Search } from './Settings';
+
const trimStart = (str: string): string => {
// NOTE String.trimStart is available on Firefox 61
return str.replace(/^\s+/, '');
@@ -5,7 +7,7 @@ const trimStart = (str: string): string => {
const SUPPORTED_PROTOCOLS = ['http:', 'https:', 'ftp:', 'mailto:', 'about:'];
-const searchUrl = (keywords: string, searchSettings: any): string => {
+const searchUrl = (keywords: string, search: Search): string => {
try {
let u = new URL(keywords);
if (SUPPORTED_PROTOCOLS.includes(u.protocol.toLowerCase())) {
@@ -17,12 +19,12 @@ const searchUrl = (keywords: string, searchSettings: any): string => {
if (keywords.includes('.') && !keywords.includes(' ')) {
return 'http://' + keywords;
}
- let template = searchSettings.engines[searchSettings.default];
+ let template = search.engines[search.default];
let query = keywords;
let first = trimStart(keywords).split(' ')[0];
- if (Object.keys(searchSettings.engines).includes(first)) {
- template = searchSettings.engines[first];
+ if (Object.keys(search.engines).includes(first)) {
+ template = search.engines[first];
query = trimStart(trimStart(keywords).slice(first.length));
}
return template.replace('{}', encodeURIComponent(query));
diff --git a/src/shared/utils/keys.ts b/src/shared/utils/keys.ts
deleted file mode 100644
index e9b0365..0000000
--- a/src/shared/utils/keys.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-export interface Key {
- key: string;
- shiftKey: boolean | undefined;
- ctrlKey: boolean | undefined;
- altKey: boolean | undefined;
- metaKey: boolean | undefined;
-}
-
-const modifiedKeyName = (name: string): string => {
- if (name === ' ') {
- return 'Space';
- }
- if (name.length === 1) {
- return name;
- } else if (name === 'Escape') {
- return 'Esc';
- }
- return name;
-};
-
-const fromKeyboardEvent = (e: KeyboardEvent): Key => {
- let key = modifiedKeyName(e.key);
- let shift = e.shiftKey;
- if (key.length === 1 && key.toUpperCase() === key.toLowerCase()) {
- // make shift false for symbols to enable key bindings by symbold keys.
- // But this limits key bindings by symbol keys with Shift (such as Shift+$>.
- shift = false;
- }
-
- return {
- key: modifiedKeyName(e.key),
- shiftKey: shift,
- ctrlKey: e.ctrlKey,
- altKey: e.altKey,
- metaKey: e.metaKey,
- };
-};
-
-const fromMapKey = (key: string): Key => {
- if (key.startsWith('<') && key.endsWith('>')) {
- let inner = key.slice(1, -1);
- let shift = inner.includes('S-');
- let base = inner.slice(inner.lastIndexOf('-') + 1);
- if (shift && base.length === 1) {
- base = base.toUpperCase();
- } else if (!shift && base.length === 1) {
- base = base.toLowerCase();
- }
- return {
- key: base,
- shiftKey: inner.includes('S-'),
- ctrlKey: inner.includes('C-'),
- altKey: inner.includes('A-'),
- metaKey: inner.includes('M-'),
- };
- }
- return {
- key: key,
- shiftKey: key.toLowerCase() !== key,
- ctrlKey: false,
- altKey: false,
- metaKey: false,
- };
-};
-
-const fromMapKeys = (keys: string): Key[] => {
- const fromMapKeysRecursive = (
- remainings: string, mappedKeys: Key[],
- ): Key[] => {
- if (remainings.length === 0) {
- return mappedKeys;
- }
-
- let nextPos = 1;
- if (remainings.startsWith('<')) {
- let ltPos = remainings.indexOf('>');
- if (ltPos > 0) {
- nextPos = ltPos + 1;
- }
- }
-
- return fromMapKeysRecursive(
- remainings.slice(nextPos),
- mappedKeys.concat([fromMapKey(remainings.slice(0, nextPos))])
- );
- };
-
- return fromMapKeysRecursive(keys, []);
-};
-
-const equals = (e1: Key, e2: Key): boolean => {
- return e1.key === e2.key &&
- e1.ctrlKey === e2.ctrlKey &&
- e1.metaKey === e2.metaKey &&
- e1.altKey === e2.altKey &&
- e1.shiftKey === e2.shiftKey;
-};
-
-export { fromKeyboardEvent, fromMapKey, fromMapKeys, equals };