fix: tranbox shortcut in usserscript

This commit is contained in:
Gabe Yuan
2024-01-04 12:18:36 +08:00
parent c0ba654678
commit 5efd2517e7
3 changed files with 39 additions and 2 deletions

View File

@@ -347,12 +347,14 @@ export const DEFAULT_INPUT_RULE = {
}; };
// 划词翻译 // 划词翻译
export const DEFAULT_TRANBOX_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",
toLang2: "en", toLang2: "en",
tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT,
btnOffsetX: 10, btnOffsetX: 10,
btnOffsetY: 10, btnOffsetY: 10,
hideTranBtn: false, hideTranBtn: false,

View File

@@ -4,10 +4,13 @@ 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 { OPT_TRANS_ALL, OPT_LANGS_FROM, OPT_LANGS_TO } from "../../config"; import { OPT_TRANS_ALL, OPT_LANGS_FROM, OPT_LANGS_TO } from "../../config";
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";
import { useCallback } from "react";
import { limitNumber } from "../../libs/utils"; import { limitNumber } from "../../libs/utils";
import { useTranbox } from "../../hooks/Tranbox"; import { useTranbox } from "../../hooks/Tranbox";
import { isExt } from "../../libs/client";
export default function Tranbox() { export default function Tranbox() {
const i18n = useI18n(); const i18n = useI18n();
@@ -30,12 +33,20 @@ export default function Tranbox() {
}); });
}; };
const handleShortcutInput = useCallback(
(val) => {
updateTranbox({ tranboxShortcut: val });
},
[updateTranbox]
);
const { const {
transOpen, transOpen,
translator, translator,
fromLang, fromLang,
toLang, toLang,
toLang2 = "en", toLang2 = "en",
tranboxShortcut,
btnOffsetX, btnOffsetX,
btnOffsetY, btnOffsetY,
hideTranBtn = false, hideTranBtn = false,
@@ -148,6 +159,14 @@ export default function Tranbox() {
<MenuItem value={false}>{i18n("show")}</MenuItem> <MenuItem value={false}>{i18n("show")}</MenuItem>
<MenuItem value={true}>{i18n("hide")}</MenuItem> <MenuItem value={true}>{i18n("hide")}</MenuItem>
</TextField> </TextField>
{!isExt && (
<ShortcutInput
value={tranboxShortcut}
onChange={handleShortcutInput}
label={i18n("trigger_tranbox_shortcut")}
/>
)}
</Stack> </Stack>
</Box> </Box>
); );

View File

@@ -1,9 +1,10 @@
import { useState, useEffect, useCallback } from "react"; import { useState, useEffect, useCallback } from "react";
import TranBtn from "./TranBtn"; import TranBtn from "./TranBtn";
import TranBox from "./TranBox"; import TranBox from "./TranBox";
import { shortcutRegister } from "../../libs/shortcut";
import { sleep, limitNumber } from "../../libs/utils"; import { sleep, limitNumber } from "../../libs/utils";
import { isGm } from "../../libs/client"; import { isGm, isExt } from "../../libs/client";
import { MSG_OPEN_TRANBOX } from "../../config"; import { MSG_OPEN_TRANBOX, DEFAULT_TRANBOX_SHORTCUT } from "../../config";
import { isMobile } from "../../libs/mobile"; import { isMobile } from "../../libs/mobile";
export default function Slection({ contextMenus, tranboxSetting, transApis }) { export default function Slection({ contextMenus, tranboxSetting, transApis }) {
@@ -75,6 +76,21 @@ export default function Slection({ contextMenus, tranboxSetting, transApis }) {
}; };
}, [tranboxSetting.hideTranBtn]); }, [tranboxSetting.hideTranBtn]);
useEffect(() => {
if (isExt) {
return;
}
const clearShortcut = shortcutRegister(
tranboxSetting.tranboxShortcut || DEFAULT_TRANBOX_SHORTCUT,
handleTranbox
);
return () => {
clearShortcut();
};
}, [tranboxSetting.tranboxShortcut, handleTranbox]);
useEffect(() => { useEffect(() => {
window.addEventListener(MSG_OPEN_TRANBOX, handleTranbox); window.addEventListener(MSG_OPEN_TRANBOX, handleTranbox);
return () => { return () => {