perf: merge Translate Popup/Selected shortcut
This commit is contained in:
@@ -15,9 +15,6 @@
|
|||||||
"message": "Open Options (Alt+O)"
|
"message": "Open Options (Alt+O)"
|
||||||
},
|
},
|
||||||
"open_tranbox": {
|
"open_tranbox": {
|
||||||
"message": "Open Translate Popup (Alt+B)"
|
"message": "Translate Popup/Selected (Alt+S)"
|
||||||
},
|
|
||||||
"translate_selected": {
|
|
||||||
"message": "Translate Selected Text (Alt+S)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,6 @@
|
|||||||
"message": "打开设置 (Alt+O)"
|
"message": "打开设置 (Alt+O)"
|
||||||
},
|
},
|
||||||
"open_tranbox": {
|
"open_tranbox": {
|
||||||
"message": "打开翻译弹窗 (Alt+B)"
|
"message": "翻译弹窗/选中文字 (Alt+S)"
|
||||||
},
|
|
||||||
"translate_selected": {
|
|
||||||
"message": "翻译选中文字 (Alt+S)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,13 +7,11 @@ import {
|
|||||||
MSG_OPEN_OPTIONS,
|
MSG_OPEN_OPTIONS,
|
||||||
MSG_SAVE_RULE,
|
MSG_SAVE_RULE,
|
||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
MSG_TRANSLATE_SELECTED,
|
|
||||||
MSG_OPEN_TRANBOX,
|
MSG_OPEN_TRANBOX,
|
||||||
CMD_TOGGLE_TRANSLATE,
|
CMD_TOGGLE_TRANSLATE,
|
||||||
CMD_TOGGLE_STYLE,
|
CMD_TOGGLE_STYLE,
|
||||||
CMD_OPEN_OPTIONS,
|
CMD_OPEN_OPTIONS,
|
||||||
CMD_OPEN_TRANBOX,
|
CMD_OPEN_TRANBOX,
|
||||||
CMD_TRANSLATE_SELECTED,
|
|
||||||
} from "./config";
|
} from "./config";
|
||||||
import { getSettingWithDefault, tryInitDefaultData } from "./libs/storage";
|
import { getSettingWithDefault, tryInitDefaultData } from "./libs/storage";
|
||||||
import { trySyncSettingAndRules } from "./libs/sync";
|
import { trySyncSettingAndRules } from "./libs/sync";
|
||||||
@@ -32,16 +30,6 @@ browser.runtime.onInstalled.addListener(() => {
|
|||||||
tryInitDefaultData();
|
tryInitDefaultData();
|
||||||
|
|
||||||
// 右键菜单
|
// 右键菜单
|
||||||
browser.contextMenus.create({
|
|
||||||
id: CMD_TRANSLATE_SELECTED,
|
|
||||||
title: browser.i18n.getMessage("translate_selected"),
|
|
||||||
contexts: ["selection"],
|
|
||||||
});
|
|
||||||
browser.contextMenus.create({
|
|
||||||
id: "selection_separator",
|
|
||||||
type: "separator",
|
|
||||||
contexts: ["selection"],
|
|
||||||
});
|
|
||||||
browser.contextMenus.create({
|
browser.contextMenus.create({
|
||||||
id: CMD_TOGGLE_TRANSLATE,
|
id: CMD_TOGGLE_TRANSLATE,
|
||||||
title: browser.i18n.getMessage("toggle_translate"),
|
title: browser.i18n.getMessage("toggle_translate"),
|
||||||
@@ -53,13 +41,13 @@ browser.runtime.onInstalled.addListener(() => {
|
|||||||
contexts: ["all"],
|
contexts: ["all"],
|
||||||
});
|
});
|
||||||
browser.contextMenus.create({
|
browser.contextMenus.create({
|
||||||
id: "options_separator",
|
id: CMD_OPEN_TRANBOX,
|
||||||
type: "separator",
|
title: browser.i18n.getMessage("open_tranbox"),
|
||||||
contexts: ["all"],
|
contexts: ["all"],
|
||||||
});
|
});
|
||||||
browser.contextMenus.create({
|
browser.contextMenus.create({
|
||||||
id: CMD_OPEN_TRANBOX,
|
id: "options_separator",
|
||||||
title: browser.i18n.getMessage("open_tranbox"),
|
type: "separator",
|
||||||
contexts: ["all"],
|
contexts: ["all"],
|
||||||
});
|
});
|
||||||
browser.contextMenus.create({
|
browser.contextMenus.create({
|
||||||
@@ -151,9 +139,6 @@ browser.contextMenus.onClicked.addListener(({ menuItemId }) => {
|
|||||||
case CMD_TOGGLE_STYLE:
|
case CMD_TOGGLE_STYLE:
|
||||||
sendTabMsg(MSG_TRANS_TOGGLE_STYLE);
|
sendTabMsg(MSG_TRANS_TOGGLE_STYLE);
|
||||||
break;
|
break;
|
||||||
case CMD_TRANSLATE_SELECTED:
|
|
||||||
sendTabMsg(MSG_TRANSLATE_SELECTED);
|
|
||||||
break;
|
|
||||||
case CMD_OPEN_TRANBOX:
|
case CMD_OPEN_TRANBOX:
|
||||||
sendTabMsg(MSG_OPEN_TRANBOX);
|
sendTabMsg(MSG_OPEN_TRANBOX);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
MSG_TRANS_TOGGLE_STYLE,
|
MSG_TRANS_TOGGLE_STYLE,
|
||||||
MSG_TRANS_GETRULE,
|
MSG_TRANS_GETRULE,
|
||||||
MSG_TRANS_PUTRULE,
|
MSG_TRANS_PUTRULE,
|
||||||
MSG_TRANSLATE_SELECTED,
|
|
||||||
MSG_OPEN_TRANBOX,
|
MSG_OPEN_TRANBOX,
|
||||||
APP_LCNAME,
|
APP_LCNAME,
|
||||||
DEFAULT_TRANBOX_SETTING,
|
DEFAULT_TRANBOX_SETTING,
|
||||||
@@ -67,9 +66,6 @@ function runtimeListener(translator) {
|
|||||||
translator.updateRule(args);
|
translator.updateRule(args);
|
||||||
sendIframeMsg(MSG_TRANS_PUTRULE, args);
|
sendIframeMsg(MSG_TRANS_PUTRULE, args);
|
||||||
break;
|
break;
|
||||||
case MSG_TRANSLATE_SELECTED:
|
|
||||||
window.dispatchEvent(new CustomEvent(MSG_TRANSLATE_SELECTED));
|
|
||||||
break;
|
|
||||||
case MSG_OPEN_TRANBOX:
|
case MSG_OPEN_TRANBOX:
|
||||||
window.dispatchEvent(new CustomEvent(MSG_OPEN_TRANBOX));
|
window.dispatchEvent(new CustomEvent(MSG_OPEN_TRANBOX));
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -636,12 +636,8 @@ export const I18N = {
|
|||||||
en: `Use Selection Translate`,
|
en: `Use Selection Translate`,
|
||||||
},
|
},
|
||||||
trigger_tranbox_shortcut: {
|
trigger_tranbox_shortcut: {
|
||||||
zh: `显示翻译框快捷键`,
|
zh: `显示翻译框/翻译选中文字快捷键`,
|
||||||
en: `Toggle Translate Box Shortcut`,
|
en: `Open Translate Popup/Translate Selected Shortcut`,
|
||||||
},
|
|
||||||
trigger_transel_shortcut: {
|
|
||||||
zh: `翻译选中文字快捷键`,
|
|
||||||
en: `Translate Selected Shortcut`,
|
|
||||||
},
|
},
|
||||||
tranbtn_offset_x: {
|
tranbtn_offset_x: {
|
||||||
zh: `翻译按钮偏移X(0-100)`,
|
zh: `翻译按钮偏移X(0-100)`,
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ export const CMD_TOGGLE_TRANSLATE = "toggleTranslate";
|
|||||||
export const CMD_TOGGLE_STYLE = "toggleStyle";
|
export const CMD_TOGGLE_STYLE = "toggleStyle";
|
||||||
export const CMD_OPEN_OPTIONS = "openOptions";
|
export const CMD_OPEN_OPTIONS = "openOptions";
|
||||||
export const CMD_OPEN_TRANBOX = "openTranbox";
|
export const CMD_OPEN_TRANBOX = "openTranbox";
|
||||||
export const CMD_TRANSLATE_SELECTED = "translateSelected";
|
|
||||||
|
|
||||||
export const CLIENT_WEB = "web";
|
export const CLIENT_WEB = "web";
|
||||||
export const CLIENT_CHROME = "chrome";
|
export const CLIENT_CHROME = "chrome";
|
||||||
@@ -60,7 +59,6 @@ export const MSG_OPEN_OPTIONS = "open_options";
|
|||||||
export const MSG_SAVE_RULE = "save_rule";
|
export const MSG_SAVE_RULE = "save_rule";
|
||||||
export const MSG_TRANS_TOGGLE = "trans_toggle";
|
export const MSG_TRANS_TOGGLE = "trans_toggle";
|
||||||
export const MSG_TRANS_TOGGLE_STYLE = "trans_toggle_style";
|
export const MSG_TRANS_TOGGLE_STYLE = "trans_toggle_style";
|
||||||
export const MSG_TRANSLATE_SELECTED = "translate_selected";
|
|
||||||
export const MSG_OPEN_TRANBOX = "open_tranbox";
|
export const MSG_OPEN_TRANBOX = "open_tranbox";
|
||||||
export const MSG_TRANS_GETRULE = "trans_getrule";
|
export const MSG_TRANS_GETRULE = "trans_getrule";
|
||||||
export const MSG_TRANS_PUTRULE = "trans_putrule";
|
export const MSG_TRANS_PUTRULE = "trans_putrule";
|
||||||
@@ -340,15 +338,13 @@ export const DEFAULT_INPUT_RULE = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 划词翻译
|
// 划词翻译
|
||||||
export const DEFAULT_TRANBOX_SHORTCUT = ["AltLeft", "KeyB"];
|
export const DEFAULT_TRANBOX_SHORTCUT = ["AltLeft", "KeyS"];
|
||||||
export const DEFAULT_TRANSEL_SHORTCUT = ["AltLeft", "KeyS"];
|
|
||||||
export const DEFAULT_TRANBOX_SETTING = {
|
export const DEFAULT_TRANBOX_SETTING = {
|
||||||
transOpen: true,
|
transOpen: true,
|
||||||
translator: OPT_TRANS_MICROSOFT,
|
translator: OPT_TRANS_MICROSOFT,
|
||||||
fromLang: "auto",
|
fromLang: "auto",
|
||||||
toLang: "zh-CN",
|
toLang: "zh-CN",
|
||||||
tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT,
|
tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT,
|
||||||
transelShortcut: DEFAULT_TRANSEL_SHORTCUT,
|
|
||||||
btnOffsetX: 10,
|
btnOffsetX: 10,
|
||||||
btnOffsetY: 10,
|
btnOffsetY: 10,
|
||||||
hideTranBtn: false,
|
hideTranBtn: false,
|
||||||
|
|||||||
@@ -3,12 +3,7 @@ import Stack from "@mui/material/Stack";
|
|||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import MenuItem from "@mui/material/MenuItem";
|
import MenuItem from "@mui/material/MenuItem";
|
||||||
import { useI18n } from "../../hooks/I18n";
|
import { useI18n } from "../../hooks/I18n";
|
||||||
import {
|
import { OPT_TRANS_ALL, OPT_LANGS_FROM, OPT_LANGS_TO } from "../../config";
|
||||||
OPT_TRANS_ALL,
|
|
||||||
OPT_LANGS_FROM,
|
|
||||||
OPT_LANGS_TO,
|
|
||||||
DEFAULT_TRANSEL_SHORTCUT,
|
|
||||||
} from "../../config";
|
|
||||||
import ShortcutInput from "./ShortcutInput";
|
import ShortcutInput from "./ShortcutInput";
|
||||||
import FormControlLabel from "@mui/material/FormControlLabel";
|
import FormControlLabel from "@mui/material/FormControlLabel";
|
||||||
import Switch from "@mui/material/Switch";
|
import Switch from "@mui/material/Switch";
|
||||||
@@ -44,20 +39,12 @@ export default function Tranbox() {
|
|||||||
[updateTranbox]
|
[updateTranbox]
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleShortcutTransel = useCallback(
|
|
||||||
(val) => {
|
|
||||||
updateTranbox({ transelShortcut: val });
|
|
||||||
},
|
|
||||||
[updateTranbox]
|
|
||||||
);
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
transOpen,
|
transOpen,
|
||||||
translator,
|
translator,
|
||||||
fromLang,
|
fromLang,
|
||||||
toLang,
|
toLang,
|
||||||
tranboxShortcut,
|
tranboxShortcut,
|
||||||
transelShortcut = DEFAULT_TRANSEL_SHORTCUT,
|
|
||||||
btnOffsetX,
|
btnOffsetX,
|
||||||
btnOffsetY,
|
btnOffsetY,
|
||||||
hideTranBtn = false,
|
hideTranBtn = false,
|
||||||
@@ -160,12 +147,6 @@ export default function Tranbox() {
|
|||||||
onChange={handleShortcutInput}
|
onChange={handleShortcutInput}
|
||||||
label={i18n("trigger_tranbox_shortcut")}
|
label={i18n("trigger_tranbox_shortcut")}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ShortcutInput
|
|
||||||
value={transelShortcut}
|
|
||||||
onChange={handleShortcutTransel}
|
|
||||||
label={i18n("trigger_transel_shortcut")}
|
|
||||||
/>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,11 +4,7 @@ import TranBox from "./TranBox";
|
|||||||
import { shortcutRegister } from "../../libs/shortcut";
|
import { shortcutRegister } from "../../libs/shortcut";
|
||||||
import { sleep } from "../../libs/utils";
|
import { sleep } from "../../libs/utils";
|
||||||
import { isGm } from "../../libs/client";
|
import { isGm } from "../../libs/client";
|
||||||
import {
|
import { MSG_OPEN_TRANBOX, DEFAULT_TRANBOX_SHORTCUT } from "../../config";
|
||||||
MSG_TRANSLATE_SELECTED,
|
|
||||||
MSG_OPEN_TRANBOX,
|
|
||||||
DEFAULT_TRANSEL_SHORTCUT,
|
|
||||||
} from "../../config";
|
|
||||||
|
|
||||||
export default function Slection({ tranboxSetting, transApis }) {
|
export default function Slection({ tranboxSetting, transApis }) {
|
||||||
const [showBox, setShowBox] = useState(false);
|
const [showBox, setShowBox] = useState(false);
|
||||||
@@ -30,11 +26,12 @@ export default function Slection({ tranboxSetting, transApis }) {
|
|||||||
setShowBox(true);
|
setShowBox(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTranSelected = useCallback(() => {
|
const handleTranbox = useCallback(() => {
|
||||||
setShowBtn(false);
|
setShowBtn(false);
|
||||||
|
|
||||||
const selectedText = window.getSelection()?.toString()?.trim() || "";
|
const selectedText = window.getSelection()?.toString()?.trim() || "";
|
||||||
if (!selectedText) {
|
if (!selectedText) {
|
||||||
|
setShowBox((pre) => !pre);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,44 +63,21 @@ export default function Slection({ tranboxSetting, transApis }) {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const clearShortcut = shortcutRegister(
|
const clearShortcut = shortcutRegister(
|
||||||
tranboxSetting.tranboxShortcut,
|
tranboxSetting.tranboxShortcut || DEFAULT_TRANBOX_SHORTCUT,
|
||||||
() => {
|
handleTranbox
|
||||||
setShowBox((pre) => !pre);
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
clearShortcut();
|
clearShortcut();
|
||||||
};
|
};
|
||||||
}, [tranboxSetting.tranboxShortcut]);
|
}, [tranboxSetting.tranboxShortcut, handleTranbox]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const clearShortcut = shortcutRegister(
|
window.addEventListener(MSG_OPEN_TRANBOX, handleTranbox);
|
||||||
tranboxSetting.transelShortcut || DEFAULT_TRANSEL_SHORTCUT,
|
|
||||||
handleTranSelected
|
|
||||||
);
|
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
clearShortcut();
|
window.removeEventListener(MSG_OPEN_TRANBOX, handleTranbox);
|
||||||
};
|
};
|
||||||
}, [tranboxSetting.transelShortcut, handleTranSelected]);
|
}, [handleTranbox]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
window.addEventListener(MSG_TRANSLATE_SELECTED, handleTranSelected);
|
|
||||||
return () => {
|
|
||||||
window.removeEventListener(MSG_TRANSLATE_SELECTED, handleTranSelected);
|
|
||||||
};
|
|
||||||
}, [handleTranSelected]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const handleOpenTranbox = () => {
|
|
||||||
setShowBox((pre) => !pre);
|
|
||||||
};
|
|
||||||
window.addEventListener(MSG_OPEN_TRANBOX, handleOpenTranbox);
|
|
||||||
return () => {
|
|
||||||
window.removeEventListener(MSG_OPEN_TRANBOX, handleOpenTranbox);
|
|
||||||
};
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isGm) {
|
if (!isGm) {
|
||||||
@@ -117,16 +91,9 @@ export default function Slection({ tranboxSetting, transApis }) {
|
|||||||
GM.registerMenuCommand(
|
GM.registerMenuCommand(
|
||||||
"Translate Selected Text (Alt+S)",
|
"Translate Selected Text (Alt+S)",
|
||||||
(event) => {
|
(event) => {
|
||||||
handleTranSelected();
|
handleTranbox();
|
||||||
},
|
},
|
||||||
"S"
|
"S"
|
||||||
),
|
|
||||||
GM.registerMenuCommand(
|
|
||||||
"Open Translate Popup (Alt+B)",
|
|
||||||
(event) => {
|
|
||||||
setShowBox((pre) => !pre);
|
|
||||||
},
|
|
||||||
"B"
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -138,7 +105,7 @@ export default function Slection({ tranboxSetting, transApis }) {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log("[registerMenuCommand]", err);
|
console.log("[registerMenuCommand]", err);
|
||||||
}
|
}
|
||||||
}, [handleTranSelected]);
|
}, [handleTranbox]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
Reference in New Issue
Block a user