diff --git a/content.html b/content.html
index c0b214f..0455678 100644
--- a/content.html
+++ b/content.html
@@ -84,6 +84,11 @@
>
+
+
+
+
+
Shadow 1
diff --git a/kiss-translator-ios-safari.user.js b/kiss-translator-ios-safari.user.js
index cf07248..4415000 100644
--- a/kiss-translator-ios-safari.user.js
+++ b/kiss-translator-ios-safari.user.js
@@ -1,7 +1,7 @@
// ==UserScript==
// @name KISS Translator
// @namespace https://github.com/fishjar/kiss-translator
-// @version 1.7.0
+// @version 1.7.1
// @description A minimalist bilingual translation Extension & Greasemonkey Script (一个简约的双语网页翻译扩展 & 油猴脚本)
// @author Gabe
// @homepageURL https://github.com/fishjar/kiss-translator
@@ -3087,7 +3087,7 @@ function useControlled(_ref) {
/* harmony export */ });
/* harmony import */ var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3320);
/**
- * @mui/styled-engine v5.14.8
+ * @mui/styled-engine v5.14.9
*
* @license MIT
* This source code is licensed under the MIT license found in the
@@ -17550,125 +17550,10 @@ var esm_extends = __webpack_require__(7462);
var clsx = __webpack_require__(4146);
// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/composeClasses/composeClasses.js
var composeClasses = __webpack_require__(1921);
-// EXTERNAL MODULE: ./node_modules/@mui/system/esm/colorManipulator.js
-var colorManipulator = __webpack_require__(7551);
// EXTERNAL MODULE: ./node_modules/@mui/material/styles/styled.js
var styled = __webpack_require__(7592);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/styles/getOverlayAlpha.js
-// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61
-var getOverlayAlpha = function getOverlayAlpha(elevation) {
- var alphaValue;
- if (elevation < 1) {
- alphaValue = 5.11916 * Math.pow(elevation, 2);
- } else {
- alphaValue = 4.5 * Math.log(elevation + 1) + 2;
- }
- return (alphaValue / 100).toFixed(2);
-};
-/* harmony default export */ var styles_getOverlayAlpha = (getOverlayAlpha);
// EXTERNAL MODULE: ./node_modules/@mui/material/styles/useThemeProps.js
var styles_useThemeProps = __webpack_require__(7342);
-// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js
-var generateUtilityClasses = __webpack_require__(7430);
-// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js
-var generateUtilityClass_generateUtilityClass = __webpack_require__(2298);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/paperClasses.js
-
-
-function getPaperUtilityClass(slot) {
- return (0,generateUtilityClass_generateUtilityClass/* default */.Z)('MuiPaper', slot);
-}
-var paperClasses = (0,generateUtilityClasses/* default */.Z)('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);
-/* harmony default export */ var Paper_paperClasses = ((/* unused pure expression or super */ null && (paperClasses)));
-// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
-var jsx_runtime = __webpack_require__(6417);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/Paper.js
-'use client';
-
-
-
-var _excluded = ["className", "component", "elevation", "square", "variant"];
-
-
-
-
-
-
-
-
-
-
-
-
-var useUtilityClasses = function useUtilityClasses(ownerState) {
- var square = ownerState.square,
- elevation = ownerState.elevation,
- variant = ownerState.variant,
- classes = ownerState.classes;
- var slots = {
- root: ['root', variant, !square && 'rounded', variant === 'elevation' && "elevation".concat(elevation)]
- };
- return (0,composeClasses/* default */.Z)(slots, getPaperUtilityClass, classes);
-};
-var PaperRoot = (0,styled/* default */.ZP)('div', {
- name: 'MuiPaper',
- slot: 'Root',
- overridesResolver: function overridesResolver(props, styles) {
- var ownerState = props.ownerState;
- return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles["elevation".concat(ownerState.elevation)]];
- }
-})(function (_ref) {
- var theme = _ref.theme,
- ownerState = _ref.ownerState;
- var _theme$vars$overlays;
- return (0,esm_extends/* default */.Z)({
- backgroundColor: (theme.vars || theme).palette.background.paper,
- color: (theme.vars || theme).palette.text.primary,
- transition: theme.transitions.create('box-shadow')
- }, !ownerState.square && {
- borderRadius: theme.shape.borderRadius
- }, ownerState.variant === 'outlined' && {
- border: "1px solid ".concat((theme.vars || theme).palette.divider)
- }, ownerState.variant === 'elevation' && (0,esm_extends/* default */.Z)({
- boxShadow: (theme.vars || theme).shadows[ownerState.elevation]
- }, !theme.vars && theme.palette.mode === 'dark' && {
- backgroundImage: "linear-gradient(".concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ", ").concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ")")
- }, theme.vars && {
- backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]
- }));
-});
-var Paper = /*#__PURE__*/react.forwardRef(function Paper(inProps, ref) {
- var props = (0,styles_useThemeProps/* default */.Z)({
- props: inProps,
- name: 'MuiPaper'
- });
- var className = props.className,
- _props$component = props.component,
- component = _props$component === void 0 ? 'div' : _props$component,
- _props$elevation = props.elevation,
- elevation = _props$elevation === void 0 ? 1 : _props$elevation,
- _props$square = props.square,
- square = _props$square === void 0 ? false : _props$square,
- _props$variant = props.variant,
- variant = _props$variant === void 0 ? 'elevation' : _props$variant,
- other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, _excluded);
- var ownerState = (0,esm_extends/* default */.Z)({}, props, {
- component: component,
- elevation: elevation,
- square: square,
- variant: variant
- });
- var classes = useUtilityClasses(ownerState);
- if (false) { var theme; }
- return /*#__PURE__*/(0,jsx_runtime.jsx)(PaperRoot, (0,esm_extends/* default */.Z)({
- as: component,
- ownerState: ownerState,
- className: (0,clsx/* default */.Z)(classes.root, className),
- ref: ref
- }, other));
-});
- false ? 0 : void 0;
-/* harmony default export */ var Paper_Paper = (Paper);
// EXTERNAL MODULE: ./node_modules/@mui/material/utils/useForkRef.js
var useForkRef = __webpack_require__(6983);
// EXTERNAL MODULE: ./node_modules/@mui/material/utils/useEventCallback.js
@@ -18308,6 +18193,8 @@ var ClassNames = /* #__PURE__ */(/* unused pure expression or super */ null && (
if (false) {}
if (false) { var globalKey, globalContext, isTestEnv, isBrowser; }
+// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
+var jsx_runtime = __webpack_require__(6417);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/Ripple.js
'use client';
@@ -18366,6 +18253,8 @@ function Ripple(props) {
}
false ? 0 : void 0;
/* harmony default export */ var ButtonBase_Ripple = (Ripple);
+// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js
+var generateUtilityClasses = __webpack_require__(7430);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/touchRippleClasses.js
@@ -18383,7 +18272,7 @@ var touchRippleClasses = (0,generateUtilityClasses/* default */.Z)('MuiTouchRipp
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
-var TouchRipple_excluded = ["center", "classes", "className"];
+var _excluded = ["center", "classes", "className"];
var _ = function _(t) {
return t;
},
@@ -18455,7 +18344,7 @@ var TouchRipple = /*#__PURE__*/react.forwardRef(function TouchRipple(inProps, re
_props$classes = props.classes,
classes = _props$classes === void 0 ? {} : _props$classes,
className = props.className,
- other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, TouchRipple_excluded);
+ other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, _excluded);
var _React$useState = react.useState([]),
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
ripples = _React$useState2[0],
@@ -18644,6 +18533,8 @@ var TouchRipple = /*#__PURE__*/react.forwardRef(function TouchRipple(inProps, re
});
false ? 0 : void 0;
/* harmony default export */ var ButtonBase_TouchRipple = (TouchRipple);
+// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js
+var generateUtilityClass_generateUtilityClass = __webpack_require__(2298);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js
@@ -18675,7 +18566,7 @@ var ButtonBase_excluded = ["action", "centerRipple", "children", "className", "c
-var ButtonBase_useUtilityClasses = function useUtilityClasses(ownerState) {
+var useUtilityClasses = function useUtilityClasses(ownerState) {
var disabled = ownerState.disabled,
focusVisible = ownerState.focusVisible,
focusVisibleClassName = ownerState.focusVisibleClassName,
@@ -18947,7 +18838,7 @@ var ButtonBase = /*#__PURE__*/react.forwardRef(function ButtonBase(inProps, ref)
tabIndex: tabIndex,
focusVisible: focusVisible
});
- var classes = ButtonBase_useUtilityClasses(ownerState);
+ var classes = useUtilityClasses(ownerState);
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonBaseRoot, (0,esm_extends/* default */.Z)({
as: ComponentProp,
className: (0,clsx/* default */.Z)(classes.root, className),
@@ -19472,9 +19363,9 @@ var els="li, p, h1, h2, h3, h4, h5, h6, dd, blockquote";var DEFAULT_SELECTOR=":i
;// CONCATENATED MODULE: ./src/config/app.js
var APP_NAME="KISS Translator".trim().split(/\s+/).join("-");var APP_LCNAME=APP_NAME.toLowerCase();
;// CONCATENATED MODULE: ./src/config/i18n.js
-var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"}};
+var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"},input_setting:{zh:"\u8F93\u5165\u6846\u8BBE\u7F6E",en:"Input Box Setting"},input_box_translation:{zh:"\u542F\u7528\u8F93\u5165\u6846\u7FFB\u8BD1",en:"Input Box Translation"},input_selector:{zh:"\u8F93\u5165\u6846\u9009\u62E9\u5668",en:"Input Selector"},input_selector_helper:{zh:"\u7528\u4E8E\u8F93\u5165\u6846\u7FFB\u8BD1\u3002",en:"Used for input box translation."},trigger_trans_shortcut:{zh:"\u89E6\u53D1\u7FFB\u8BD1\u5FEB\u6377\u952E",en:"Trigger Translation Shortcut Keys"},trigger_trans_shortcut_help:{zh:"\u9ED8\u8BA4\u4E3A\u5355\u51FB\u201CAlt+i\u201D",en:"Default is \"Alt+i\""},shortcut_press_count:{zh:"\u5FEB\u6377\u952E\u8FDE\u51FB\u6B21\u6570",en:"Shortcut Press Number"},combo_timeout:{zh:"\u8FDE\u51FB\u8D85\u65F6\u65F6\u95F4 (10-1000ms)",en:"Combo Timeout (10-1000ms)"},input_trans_start_sign:{zh:"\u7FFB\u8BD1\u8D77\u59CB\u6807\u8BC6",en:"Translation Start Sign"},input_trans_start_sign_help:{zh:"\u6807\u8BC6\u540E\u9762\u53EF\u4EE5\u52A0\u76EE\u6807\u8BED\u8A00\u4EE3\u7801\uFF0C\u5982\uFF1A \u201C/en \u4F60\u597D\u201D\u3001\u201C/zh hello\u201D",en:"The target language code can be added after the sign, such as: \"/en \u4F60\u597D\", \"/zh hello\""}};
;// CONCATENATED MODULE: ./src/config/index.js
-var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var config_KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var config_KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var config_URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_STYLE_NONE="style_none";// 无
+var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var config_KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var config_KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var config_URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_LANGS_LIST=OPT_LANGS_TO.map(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,1),lang=_ref6[0];return lang;});var OPT_STYLE_NONE="style_none";// 无
var OPT_STYLE_LINE="under_line";// 下划线
var OPT_STYLE_DOTLINE="dot_line";// 点状线
var OPT_STYLE_DASHLINE="dash_line";// 虚线
@@ -19488,7 +19379,8 @@ var PROMPT_PLACE_FROM="{{from}}";// 占位符
var PROMPT_PLACE_TO="{{to}}";// 占位符
var DEFAULT_COLOR="#209CEE";// 默认高亮背景色/线条颜色
// 全局规则
-var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 订阅列表
+var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 输入框翻译
+var OPT_INPUT_TRANS_SIGNS=["/","//","\\","\\\\",">",">>"];var DEFAULT_INPUT_SHORTCUT=["Alt","i"];var DEFAULT_INPUT_RULE={transOpen:true,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"en",triggerShortcut:DEFAULT_INPUT_SHORTCUT,triggerCount:1,triggerTime:200,transSign:OPT_INPUT_TRANS_SIGNS[0]};// 订阅列表
var DEFAULT_SUBRULES_LIST=[{url:"https://fishjar.github.io/kiss-rules/kiss-rules.json",selected:false},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on.json",selected:true},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off.json",selected:false}];// 翻译接口
var DEFAULT_TRANS_APIS=(_DEFAULT_TRANS_APIS={},(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_GOOGLE,{url:"https://translate.googleapis.com/translate_a/single",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_MICROSOFT,{url:"https://api-edge.cognitive.microsofttranslator.com/translate",authUrl:"https://edge.microsoft.com/translate/auth"}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_DEEPL,{url:"https://api-free.deepl.com/v2/translate",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_OPENAI,{url:"https://api.openai.com/v1/chat/completion",key:"",model:"gpt-4",prompt:"You will be provided with a sentence in ".concat(PROMPT_PLACE_FROM,", and your task is to translate it into ").concat(PROMPT_PLACE_TO,".")}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_CUSTOMIZE,{url:"",key:""}),_DEFAULT_TRANS_APIS);// 默认快捷键
var OPT_SHORTCUT_TRANSLATE="toggleTranslate";var OPT_SHORTCUT_STYLE="toggleStyle";var OPT_SHORTCUT_POPUP="togglePopup";var OPT_SHORTCUT_SETTING="openSetting";var DEFAULT_SHORTCUTS=(_DEFAULT_SHORTCUTS={},(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_TRANSLATE,["Alt","q"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_STYLE,["Alt","c"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_POPUP,["Alt","k"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_SETTING,["Alt","o"]),_DEFAULT_SHORTCUTS);var TRANS_MIN_LENGTH=5;// 最短翻译长度
@@ -19506,7 +19398,8 @@ owSubrule:DEFAULT_OW_RULE,// 覆写订阅规则
transApis:DEFAULT_TRANS_APIS,// 翻译接口
mouseKey:OPT_MOUSEKEY_DISABLE,// 鼠标悬停翻译
shortcuts:DEFAULT_SHORTCUTS,// 快捷键
-hideFab:false// 是否隐藏按钮
+hideFab:false,// 是否隐藏按钮
+inputRule:DEFAULT_INPUT_RULE// 输入框设置
};var config_DEFAULT_RULES=[GLOBLA_RULE];var config_DEFAULT_SYNC={syncUrl:"",// 数据同步接口
syncKey:"",// 数据同步密钥
settingUpdateAt:0,settingSyncAt:0,rulesUpdateAt:0,rulesSyncAt:0,subRulesSyncAt:0,// 订阅规则同步时间
@@ -19527,7 +19420,7 @@ var _set,_get,_del,_setObj,_trySetObj,_getObj,_putObj,_ref,_ref2,_ref3,_ref4,_re
*/var storage={get:get,set:set,del:del,setObj:setObj,trySetObj:trySetObj,getObj:getObj,putObj:putObj// onChanged,
};/**
* 设置信息
- */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var updateSetting=function updateSetting(obj){return putObj(config_STOKEY_SETTING,obj);};/**
+ */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var updateSetting=function updateSetting(obj){return putObj(STOKEY_SETTING,obj);};/**
* 规则列表
*/var getRules=function getRules(){return getObj(config_STOKEY_RULES);};var getRulesWithDefault=function getRulesWithDefault(){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee9(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:_context9.next=2;return getRules();case 2:_context9.t0=_context9.sent;if(_context9.t0){_context9.next=5;break;}_context9.t0=config_DEFAULT_RULES;case 5:return _context9.abrupt("return",_context9.t0);case 6:case"end":return _context9.stop();}},_callee9);}))).apply(this,arguments);};var setRules=function setRules(val){return setObj(config_STOKEY_RULES,val);};/**
* 订阅规则
@@ -20343,7 +20236,18 @@ var utils_ref;/**
* @param {*} a
* @param {*} b
* @returns
- */var isSameSet=function isSameSet(a,b){var s=new Set([].concat((0,toConsumableArray/* default */.Z)(a),(0,toConsumableArray/* default */.Z)(b)));return s.size===a.size&&s.size===b.size;};
+ */var isSameSet=function isSameSet(a,b){var s=new Set([].concat((0,toConsumableArray/* default */.Z)(a),(0,toConsumableArray/* default */.Z)(b)));return s.size===a.size&&s.size===b.size;};/**
+ * 去掉字符串末尾某个字符
+ * @param {*} s
+ * @param {*} c
+ * @param {*} count
+ * @returns
+ */var removeEndchar=function removeEndchar(s,c){var count=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var i=s.length;while(i>s.length-count&&s[i-1]===c){i--;}return s.slice(0,i);};/**
+ * 匹配字符串及语言标识
+ * @param {*} str
+ * @param {*} sign
+ * @returns
+ */var matchInputStr=function matchInputStr(str,sign){var reg=/\/([\w-]+)\s+([^]+)/;switch(sign){case"//":reg=/\/\/([\w-]+)\s+([^]+)/;break;case"\\":reg=/\\([\w-]+)\s+([^]+)/;break;case"\\\\":reg=/\\\\([\w-]+)\s+([^]+)/;break;case">":reg=/>([\w-]+)\s+([^]+)/;break;case">>":reg=/>>([\w-]+)\s+([^]+)/;break;default:}return str.match(reg);};
;// CONCATENATED MODULE: ./src/apis/index.js
var apis_ref,apis_ref3,apis_ref5,apis_ref7,_ref9,_ref11;/**
* 同步数据
@@ -20424,8 +20328,117 @@ var _updateSetting,_reloadSetting;var SettingContext=/*#__PURE__*/(0,react.creat
*/function Theme(_ref){var children=_ref.children,options=_ref.options;var _useDarkMode=useDarkMode(),darkMode=_useDarkMode.darkMode;var theme=(0,react.useMemo)(function(){return (0,createTheme/* default */.Z)(_objectSpread2({palette:{mode:darkMode?THEME_DARK:THEME_LIGHT}},options));},[darkMode,options]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(styles_ThemeProvider_ThemeProvider,{theme:theme,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(CssBaseline_CssBaseline,{}),children]});}
;// CONCATENATED MODULE: ./src/libs/mobile.js
var isMobile=("ontouchstart"in document.documentElement);
+// EXTERNAL MODULE: ./node_modules/@mui/system/esm/colorManipulator.js
+var colorManipulator = __webpack_require__(7551);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/styles/getOverlayAlpha.js
+// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61
+var getOverlayAlpha = function getOverlayAlpha(elevation) {
+ var alphaValue;
+ if (elevation < 1) {
+ alphaValue = 5.11916 * Math.pow(elevation, 2);
+ } else {
+ alphaValue = 4.5 * Math.log(elevation + 1) + 2;
+ }
+ return (alphaValue / 100).toFixed(2);
+};
+/* harmony default export */ var styles_getOverlayAlpha = (getOverlayAlpha);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/paperClasses.js
+
+
+function getPaperUtilityClass(slot) {
+ return (0,generateUtilityClass_generateUtilityClass/* default */.Z)('MuiPaper', slot);
+}
+var paperClasses = (0,generateUtilityClasses/* default */.Z)('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);
+/* harmony default export */ var Paper_paperClasses = ((/* unused pure expression or super */ null && (paperClasses)));
+;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/Paper.js
+'use client';
+
+
+
+var Paper_excluded = ["className", "component", "elevation", "square", "variant"];
+
+
+
+
+
+
+
+
+
+
+
+
+var Paper_useUtilityClasses = function useUtilityClasses(ownerState) {
+ var square = ownerState.square,
+ elevation = ownerState.elevation,
+ variant = ownerState.variant,
+ classes = ownerState.classes;
+ var slots = {
+ root: ['root', variant, !square && 'rounded', variant === 'elevation' && "elevation".concat(elevation)]
+ };
+ return (0,composeClasses/* default */.Z)(slots, getPaperUtilityClass, classes);
+};
+var PaperRoot = (0,styled/* default */.ZP)('div', {
+ name: 'MuiPaper',
+ slot: 'Root',
+ overridesResolver: function overridesResolver(props, styles) {
+ var ownerState = props.ownerState;
+ return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles["elevation".concat(ownerState.elevation)]];
+ }
+})(function (_ref) {
+ var theme = _ref.theme,
+ ownerState = _ref.ownerState;
+ var _theme$vars$overlays;
+ return (0,esm_extends/* default */.Z)({
+ backgroundColor: (theme.vars || theme).palette.background.paper,
+ color: (theme.vars || theme).palette.text.primary,
+ transition: theme.transitions.create('box-shadow')
+ }, !ownerState.square && {
+ borderRadius: theme.shape.borderRadius
+ }, ownerState.variant === 'outlined' && {
+ border: "1px solid ".concat((theme.vars || theme).palette.divider)
+ }, ownerState.variant === 'elevation' && (0,esm_extends/* default */.Z)({
+ boxShadow: (theme.vars || theme).shadows[ownerState.elevation]
+ }, !theme.vars && theme.palette.mode === 'dark' && {
+ backgroundImage: "linear-gradient(".concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ", ").concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ")")
+ }, theme.vars && {
+ backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]
+ }));
+});
+var Paper = /*#__PURE__*/react.forwardRef(function Paper(inProps, ref) {
+ var props = (0,styles_useThemeProps/* default */.Z)({
+ props: inProps,
+ name: 'MuiPaper'
+ });
+ var className = props.className,
+ _props$component = props.component,
+ component = _props$component === void 0 ? 'div' : _props$component,
+ _props$elevation = props.elevation,
+ elevation = _props$elevation === void 0 ? 1 : _props$elevation,
+ _props$square = props.square,
+ square = _props$square === void 0 ? false : _props$square,
+ _props$variant = props.variant,
+ variant = _props$variant === void 0 ? 'elevation' : _props$variant,
+ other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, Paper_excluded);
+ var ownerState = (0,esm_extends/* default */.Z)({}, props, {
+ component: component,
+ elevation: elevation,
+ square: square,
+ variant: variant
+ });
+ var classes = Paper_useUtilityClasses(ownerState);
+ if (false) { var theme; }
+ return /*#__PURE__*/(0,jsx_runtime.jsx)(PaperRoot, (0,esm_extends/* default */.Z)({
+ as: component,
+ ownerState: ownerState,
+ className: (0,clsx/* default */.Z)(classes.root, className),
+ ref: ref
+ }, other));
+});
+ false ? 0 : void 0;
+/* harmony default export */ var Paper_Paper = (Paper);
;// CONCATENATED MODULE: ./src/views/Action/Draggable.js
-var getEdgePosition=function getEdgePosition(_ref,windowWidth,windowHeight,width,height){var left=_ref.x,top=_ref.y,edge=_ref.edge;var right=windowWidth-left-width;var bottom=windowHeight-top-height;var min=Math.min(left,top,right,bottom);switch(min){case right:edge="right";left=windowWidth-width;break;case left:edge="left";left=0;break;case bottom:edge="bottom";top=windowHeight-height;break;default:edge="top";top=0;}left=limitNumber(left,0,windowWidth-width);top=limitNumber(top,0,windowHeight-height);return{x:left,y:top,edge:edge,hide:false};};var getHidePosition=function getHidePosition(_ref2,windowWidth,windowHeight,width,height){var left=_ref2.x,top=_ref2.y,edge=_ref2.edge;switch(edge){case"right":left=windowWidth-width/2;break;case"left":left=-width/2;break;case"bottom":top=windowHeight-height/2;break;default:top=-height/2;}return{x:left,y:top,edge:edge,hide:true};};function Draggable(_ref3){var windowSize=_ref3.windowSize,width=_ref3.width,height=_ref3.height,left=_ref3.left,top=_ref3.top,show=_ref3.show,snapEdge=_ref3.snapEdge,onStart=_ref3.onStart,onMove=_ref3.onMove,handler=_ref3.handler,children=_ref3.children;var _useState=(0,react.useState)({x:left,y:top,px:left,py:top}),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),origin=_useState2[0],setOrigin=_useState2[1];var _useState3=(0,react.useState)({x:left,y:top,edge:null,hide:false}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),position=_useState4[0],setPosition=_useState4[1];var _useState5=(0,react.useState)(null),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),edgeTimer=_useState6[0],setEdgeTimer=_useState6[1];var goEdge=(0,react.useCallback)(function(w,h,width,height){setPosition(function(pre){return getEdgePosition(pre,w,h,width,height);});setEdgeTimer(setTimeout(function(){setPosition(function(pre){return getHidePosition(pre,w,h,width,height);});},1500));},[]);var handlePointerDown=function handlePointerDown(e){!isMobile&&e.target.setPointerCapture(e.pointerId);onStart&&onStart();edgeTimer&&clearTimeout(edgeTimer);var _ref4=isMobile?e.targetTouches[0]:e,clientX=_ref4.clientX,clientY=_ref4.clientY;setOrigin({x:position.x,y:position.y,px:clientX,py:clientY});};var handlePointerMove=function handlePointerMove(e){onMove&&onMove();var _ref5=isMobile?e.targetTouches[0]:e,clientX=_ref5.clientX,clientY=_ref5.clientY;if(origin){var dx=clientX-origin.px;var dy=clientY-origin.py;var x=origin.x+dx;var y=origin.y+dy;var w=windowSize.w,h=windowSize.h;x=limitNumber(x,0,w-width);y=limitNumber(y,0,h-height);setPosition({x:x,y:y,edge:null,hide:false});}};var handlePointerUp=function handlePointerUp(e){e.stopPropagation();setOrigin(null);if(!snapEdge){return;}goEdge(windowSize.w,windowSize.h,width,height);};var handleClick=function handleClick(e){e.stopPropagation();};var handleMouseEnter=function handleMouseEnter(e){e.stopPropagation();if(snapEdge&&position.hide){edgeTimer&&clearTimeout(edgeTimer);goEdge(windowSize.w,windowSize.h,width,height);}};(0,react.useEffect)(function(){setOrigin(null);if(!snapEdge){return;}goEdge(windowSize.w,windowSize.h,width,height);},[snapEdge,goEdge,windowSize.w,windowSize.h,width,height]);(0,react.useEffect)(function(){if(position.hide){setFab({x:position.x,y:position.y});}},[position.x,position.y,position.hide]);var opacity=(0,react.useMemo)(function(){if(snapEdge){return position.hide?0.2:1;}return origin?0.8:1;},[origin,snapEdge,position.hide]);var touchProps=isMobile?{onTouchStart:handlePointerDown,onTouchMove:handlePointerMove,onTouchEnd:handlePointerUp}:{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp};return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{opacity:opacity,position:"fixed",left:position.x,top:position.y,zIndex:2147483647,display:show?"block":"none"},onMouseEnter:handleMouseEnter,onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({style:{touchAction:"none"}},touchProps),{},{children:handler})),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:children})]});}
+var Draggable_excluded=["children","usePaper"];var getEdgePosition=function getEdgePosition(_ref){var left=_ref.x,top=_ref.y,width=_ref.width,height=_ref.height,windowWidth=_ref.windowWidth,windowHeight=_ref.windowHeight,hover=_ref.hover;var right=windowWidth-left-width;var bottom=windowHeight-top-height;var min=Math.min(left,top,right,bottom);switch(min){case right:left=hover?windowWidth-width:windowWidth-width/2;break;case left:left=hover?0:-width/2;break;case bottom:top=hover?windowHeight-height:windowHeight-height/2;break;default:top=hover?0:-height/2;}return{x:left,y:top};};function DraggableWrapper(_ref2){var children=_ref2.children,usePaper=_ref2.usePaper,props=_objectWithoutProperties(_ref2,Draggable_excluded);if(usePaper){return/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,_objectSpread2(_objectSpread2({},props),{},{elevation:4,children:children}));}return/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({},props),{},{children:children}));}function Draggable(_ref3){var _ref3$windowSize=_ref3.windowSize,windowWidth=_ref3$windowSize.w,windowHeight=_ref3$windowSize.h,width=_ref3.width,height=_ref3.height,left=_ref3.left,top=_ref3.top,show=_ref3.show,snapEdge=_ref3.snapEdge,onStart=_ref3.onStart,onMove=_ref3.onMove,handler=_ref3.handler,children=_ref3.children,usePaper=_ref3.usePaper;var _useState=(0,react.useState)(false),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),hover=_useState2[0],setHover=_useState2[1];var _useState3=(0,react.useState)(null),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),origin=_useState4[0],setOrigin=_useState4[1];var _useState5=(0,react.useState)({x:left,y:top}),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),position=_useState6[0],setPosition=_useState6[1];var setFabPosition=(0,react.useMemo)(function(){return debounce(setFab,500);},[]);var handlePointerDown=function handlePointerDown(e){!isMobile&&e.target.setPointerCapture(e.pointerId);onStart&&onStart();var x=position.x,y=position.y;var _ref4=isMobile?e.targetTouches[0]:e,clientX=_ref4.clientX,clientY=_ref4.clientY;setOrigin({x:x,y:y,clientX:clientX,clientY:clientY});};var handlePointerMove=function handlePointerMove(e){onMove&&onMove();var _ref5=isMobile?e.targetTouches[0]:e,clientX=_ref5.clientX,clientY=_ref5.clientY;if(origin){var dx=clientX-origin.clientX;var dy=clientY-origin.clientY;var x=origin.x+dx;var y=origin.y+dy;x=limitNumber(x,-width/2,windowWidth-width/2);y=limitNumber(y,0,windowHeight-height/2);setPosition({x:x,y:y});}};var handlePointerUp=function handlePointerUp(e){e.stopPropagation();setOrigin(null);};var handleClick=function handleClick(e){e.stopPropagation();};var handleMouseEnter=function handleMouseEnter(e){e.stopPropagation();setHover(true);};var handleMouseLeave=function handleMouseLeave(e){e.stopPropagation();setHover(false);};(0,react.useEffect)(function(){if(!snapEdge||!!origin){return;}setPosition(function(pre){var edgePosition=getEdgePosition(_objectSpread2(_objectSpread2({},pre),{},{width:width,height:height,windowWidth:windowWidth,windowHeight:windowHeight,hover:hover}));setFabPosition(edgePosition);return edgePosition;});},[origin,hover,width,height,windowWidth,windowHeight,snapEdge,setFabPosition]);var opacity=(0,react.useMemo)(function(){if(snapEdge){return hover||origin?1:0.2;}return origin?0.8:1;},[origin,snapEdge,hover]);var touchProps=isMobile?{onTouchStart:handlePointerDown,onTouchMove:handlePointerMove,onTouchEnd:handlePointerUp}:{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp};return/*#__PURE__*/(0,jsx_runtime.jsxs)(DraggableWrapper,{usePaper:usePaper,style:{opacity:opacity,position:"fixed",left:position.x,top:position.y,zIndex:2147483647,display:show?"block":"none"},onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({style:{touchAction:"none"}},touchProps),{},{children:handler})),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:children})]});}
// EXTERNAL MODULE: ./node_modules/@mui/styled-engine/index.js
var styled_engine = __webpack_require__(564);
// EXTERNAL MODULE: ./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js
@@ -21738,6 +21751,14 @@ var buttonClasses = (0,generateUtilityClasses/* default */.Z)('MuiButton', ['roo
var ButtonGroupContext = /*#__PURE__*/react.createContext({});
if (false) {}
/* harmony default export */ var ButtonGroup_ButtonGroupContext = (ButtonGroupContext);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js
+
+/**
+ * @ignore - internal component.
+ */
+var ButtonGroupButtonContext = /*#__PURE__*/react.createContext(undefined);
+if (false) {}
+/* harmony default export */ var ButtonGroup_ButtonGroupButtonContext = (ButtonGroupButtonContext);
;// CONCATENATED MODULE: ./node_modules/@mui/material/Button/Button.js
'use client';
@@ -21759,6 +21780,7 @@ var Button_excluded = ["children", "color", "component", "className", "disabled"
+
var Button_useUtilityClasses = function useUtilityClasses(ownerState) {
var color = ownerState.color,
disableElevation = ownerState.disableElevation,
@@ -21958,6 +21980,7 @@ var ButtonEndIcon = (0,styled/* default */.ZP)('span', {
var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
// props priority: `inProps` > `contextProps` > `themeDefaultProps`
var contextProps = react.useContext(ButtonGroup_ButtonGroupContext);
+ var buttonGroupButtonContextPositionClassName = react.useContext(ButtonGroup_ButtonGroupButtonContext);
var resolvedProps = (0,resolveProps/* default */.Z)(contextProps, inProps);
var props = (0,styles_useThemeProps/* default */.Z)({
props: resolvedProps,
@@ -22008,9 +22031,10 @@ var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
ownerState: ownerState,
children: endIconProp
});
+ var positionClassName = buttonGroupButtonContextPositionClassName || '';
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonRoot, (0,esm_extends/* default */.Z)({
ownerState: ownerState,
- className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className),
+ className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className, positionClassName),
component: component,
disabled: disabled,
focusRipple: !disableFocusRipple,
@@ -25658,7 +25682,7 @@ function useModal(parameters) {
var createHandleKeyDown = function createHandleKeyDown(otherHandlers) {
return function (event) {
var _otherHandlers$onKeyD;
- (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null ? void 0 : _otherHandlers$onKeyD.call(otherHandlers, event);
+ (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
// The handler doesn't take event.defaultPrevented into account:
//
@@ -25681,7 +25705,7 @@ function useModal(parameters) {
var createHandleBackdropClick = function createHandleBackdropClick(otherHandlers) {
return function (event) {
var _otherHandlers$onClic;
- (_otherHandlers$onClic = otherHandlers.onClick) == null ? void 0 : _otherHandlers$onClic.call(otherHandlers, event);
+ (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.target !== event.currentTarget) {
return;
}
@@ -25732,8 +25756,8 @@ function useModal(parameters) {
}
};
return {
- onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children.props.onEnter),
- onExited: (0,createChainedFunction/* default */.Z)(handleExited, children.props.onExited)
+ onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children == null ? void 0 : children.props.onEnter),
+ onExited: (0,createChainedFunction/* default */.Z)(handleExited, children == null ? void 0 : children.props.onExited)
};
};
return {
@@ -25909,49 +25933,6 @@ function FocusTrap(props) {
return;
}
var doc = (0,ownerDocument_ownerDocument/* default */.Z)(rootRef.current);
- var contain = function contain(nativeEvent) {
- var rootElement = rootRef.current;
-
- // Cleanup functions are executed lazily in React 17.
- // Contain can be called between the component being unmounted and its cleanup function being run.
- if (rootElement === null) {
- return;
- }
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
- ignoreNextEnforceFocus.current = false;
- return;
- }
- if (!rootElement.contains(doc.activeElement)) {
- // if the focus event is not coming from inside the children's react tree, reset the refs
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
- reactFocusEventTarget.current = null;
- } else if (reactFocusEventTarget.current !== null) {
- return;
- }
- if (!activated.current) {
- return;
- }
- var tabbable = [];
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
- tabbable = getTabbable(rootRef.current);
- }
- if (tabbable.length > 0) {
- var _lastKeydown$current, _lastKeydown$current2;
- var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
- var focusNext = tabbable[0];
- var focusPrevious = tabbable[tabbable.length - 1];
- if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
- if (isShiftTab) {
- focusPrevious.focus();
- } else {
- focusNext.focus();
- }
- }
- } else {
- rootElement.focus();
- }
- }
- };
var loopFocus = function loopFocus(nativeEvent) {
lastKeydown.current = nativeEvent;
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
@@ -25969,6 +25950,62 @@ function FocusTrap(props) {
}
}
};
+ var contain = function contain() {
+ var rootElement = rootRef.current;
+
+ // Cleanup functions are executed lazily in React 17.
+ // Contain can be called between the component being unmounted and its cleanup function being run.
+ if (rootElement === null) {
+ return;
+ }
+ if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
+ ignoreNextEnforceFocus.current = false;
+ return;
+ }
+
+ // The focus is already inside
+ if (rootElement.contains(doc.activeElement)) {
+ return;
+ }
+
+ // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)
+ if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
+ return;
+ }
+
+ // if the focus event is not coming from inside the children's react tree, reset the refs
+ if (doc.activeElement !== reactFocusEventTarget.current) {
+ reactFocusEventTarget.current = null;
+ } else if (reactFocusEventTarget.current !== null) {
+ return;
+ }
+ if (!activated.current) {
+ return;
+ }
+ var tabbable = [];
+ if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
+ tabbable = getTabbable(rootRef.current);
+ }
+
+ // one of the sentinel nodes was focused, so move the focus
+ // to the first/last tabbable element inside the focus trap
+ if (tabbable.length > 0) {
+ var _lastKeydown$current, _lastKeydown$current2;
+ var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
+ var focusNext = tabbable[0];
+ var focusPrevious = tabbable[tabbable.length - 1];
+ if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
+ if (isShiftTab) {
+ focusPrevious.focus();
+ } else {
+ focusNext.focus();
+ }
+ }
+ // no tabbable elements in the trap focus or the focus was outside of the focus trap
+ } else {
+ rootElement.focus();
+ }
+ };
doc.addEventListener('focusin', contain);
doc.addEventListener('keydown', loopFocus, true);
@@ -25980,7 +26017,7 @@ function FocusTrap(props) {
// https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
var interval = setInterval(function () {
if (doc.activeElement && doc.activeElement.tagName === 'BODY') {
- contain(null);
+ contain();
}
}, 50);
return function () {
@@ -26347,7 +26384,7 @@ var modalClasses = (0,generateUtilityClasses/* default */.Z)('MuiModal', ['root'
-var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "open", "slotProps", "slots", "theme"];
+var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onTransitionEnter", "onTransitionExited", "open", "slotProps", "slots", "theme"];
@@ -28544,133 +28581,9 @@ var DarkMode = __webpack_require__(45);
;// CONCATENATED MODULE: ./src/views/Options/DarkModeButton.js
function DarkModeButton(){var _useDarkMode=useDarkMode(),darkMode=_useDarkMode.darkMode,toggleDarkMode=_useDarkMode.toggleDarkMode;return/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:toggleDarkMode,color:"inherit",children:darkMode?/*#__PURE__*/(0,jsx_runtime.jsx)(LightMode/* default */.Z,{}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkMode/* default */.Z,{})});}
;// CONCATENATED MODULE: ./src/views/Popup/Header.js
-function Header(_ref){var setShowPopup=_ref.setShowPopup;var handleHomepage=function handleHomepage(){window.open("https://github.com/fishjar/kiss-translator","_blank");};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:handleHomepage,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Home/* default */.Z,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{children:"".concat("KISS Translator"," v").concat("1.7.0")})]}),setShowPopup?/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:function onClick(){setShowPopup(false);},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Close/* default */.Z,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkModeButton,{})]});}
+function Header(_ref){var setShowPopup=_ref.setShowPopup;var handleHomepage=function handleHomepage(){window.open("https://github.com/fishjar/kiss-translator","_blank");};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:handleHomepage,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Home/* default */.Z,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{sx:{userSelect:"none",WebkitUserSelect:"none"},children:"".concat("KISS Translator"," v").concat("1.7.1")})]}),setShowPopup?/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:function onClick(){setShowPopup(false);},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Close/* default */.Z,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkModeButton,{})]});}
;// CONCATENATED MODULE: ./src/libs/iframe.js
var isIframe=window.self!==window.top;var sendIframeMsg=function sendIframeMsg(action,args){document.querySelectorAll("iframe").forEach(function(iframe){iframe.contentWindow.postMessage({action:action,args:args},"*");});};
-;// CONCATENATED MODULE: ./src/libs/subRules.js
-var subRules_ref,subRules_ref2,subRules_ref4,subRules_ref6,subRules_ref7;/**
- * 更新缓存同步时间
- * @param {*} url
- */var updateSyncDataCache=function updateSyncDataCache(_x){return(subRules_ref=subRules_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(url){var _yield$getSyncWithDef,_yield$getSyncWithDef2,dataCaches;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return getSyncWithDefault();case 2:_yield$getSyncWithDef=_context.sent;_yield$getSyncWithDef2=_yield$getSyncWithDef.dataCaches;dataCaches=_yield$getSyncWithDef2===void 0?{}:_yield$getSyncWithDef2;dataCaches[url]=Date.now();_context.next=8;return updateSync({dataCaches:dataCaches});case 8:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);};/**
- * 同步订阅规则
- * @param {*} url
- * @returns
- */var syncSubRules=function syncSubRules(_x2){return(subRules_ref2=subRules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var isBg,res,rules,_args2=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:isBg=_args2.length>1&&_args2[1]!==undefined?_args2[1]:false;_context2.next=3;return apiFetch(url,isBg);case 3:res=_context2.sent;rules=checkRules(res).filter(function(_ref3){var pattern=_ref3.pattern;return!isAllchar(pattern,GLOBAL_KEY);});if(!(rules.length>0)){_context2.next=8;break;}_context2.next=8;return setSubRules(url,rules);case 8:return _context2.abrupt("return",rules);case 9:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};/**
- * 同步所有订阅规则
- * @param {*} url
- * @returns
- */var syncAllSubRules=function syncAllSubRules(_x3){return(subRules_ref4=subRules_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(subrulesList){var isBg,_iterator,_step,subrules,_args3=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:isBg=_args3.length>1&&_args3[1]!==undefined?_args3[1]:false;_iterator=_createForOfIteratorHelper(subrulesList);_context3.prev=2;_iterator.s();case 4:if((_step=_iterator.n()).done){_context3.next=18;break;}subrules=_step.value;_context3.prev=6;_context3.next=9;return syncSubRules(subrules.url,isBg);case 9:_context3.next=11;return updateSyncDataCache(subrules.url);case 11:_context3.next=16;break;case 13:_context3.prev=13;_context3.t0=_context3["catch"](6);console.log("[sync subrule error]: ".concat(subrules.url),_context3.t0);case 16:_context3.next=4;break;case 18:_context3.next=23;break;case 20:_context3.prev=20;_context3.t1=_context3["catch"](2);_iterator.e(_context3.t1);case 23:_context3.prev=23;_iterator.f();return _context3.finish(23);case 26:case"end":return _context3.stop();}},_callee3,null,[[2,20,23,26],[6,13]]);}))).apply(this,arguments);};/**
- * 根据时间同步所有订阅规则
- * @param {*} url
- * @returns
- */var trySyncAllSubRules=function trySyncAllSubRules(_x4){return(subRules_ref6=subRules_ref6||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(_ref5){var subrulesList,isBg,_yield$getSyncWithDef3,subRulesSyncAt,now,interval,_args4=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:subrulesList=_ref5.subrulesList;isBg=_args4.length>1&&_args4[1]!==undefined?_args4[1]:false;_context4.prev=2;_context4.next=5;return getSyncWithDefault();case 5:_yield$getSyncWithDef3=_context4.sent;subRulesSyncAt=_yield$getSyncWithDef3.subRulesSyncAt;now=Date.now();interval=24*60*60*1000;// 间隔一天
-if(!(now-subRulesSyncAt>interval)){_context4.next=14;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:subrulesList.forEach(function(item){item.syncAt=now;});_context4.next=17;return updateSetting({subrulesList:subrulesList});case 17:_context4.next=22;break;case 19:_context4.prev=19;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 22:case"end":return _context4.stop();}},_callee4,null,[[2,19]]);}))).apply(this,arguments);};/**
- * 从缓存或远程加载订阅规则
- * @param {*} url
- * @returns
- */var loadOrFetchSubRules=function loadOrFetchSubRules(_x5){return(subRules_ref7=subRules_ref7||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee5(url){var rules;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.next=2;return getSubRules(url);case 2:rules=_context5.sent;if(!(!rules||rules.length===0)){_context5.next=9;break;}_context5.next=6;return syncSubRules(url);case 6:rules=_context5.sent;_context5.next=9;return updateSyncDataCache(url);case 9:return _context5.abrupt("return",rules||[]);case 10:case"end":return _context5.stop();}},_callee5);}))).apply(this,arguments);};
-;// CONCATENATED MODULE: ./src/libs/rules.js
-var rules_ref2,rules_ref9;/**
- * 根据href匹配规则
- * @param {*} rules
- * @param {string} href
- * @returns
- */var matchRule=function matchRule(_x,_x2,_x3){return(rules_ref2=rules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(rules,href,_ref){var _rule$selector;var _ref$injectRules,injectRules,_ref$subrulesList,subrulesList,_ref$owSubrule,owSubrule,selectedSub,_rules,mixRule,subRules,rule,globalRule,_rule$bgColor,_rule$textDiyStyle;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_ref$injectRules=_ref.injectRules,injectRules=_ref$injectRules===void 0?true:_ref$injectRules,_ref$subrulesList=_ref.subrulesList,subrulesList=_ref$subrulesList===void 0?DEFAULT_SUBRULES_LIST:_ref$subrulesList,_ref$owSubrule=_ref.owSubrule,owSubrule=_ref$owSubrule===void 0?DEFAULT_OW_RULE:_ref$owSubrule;rules=(0,toConsumableArray/* default */.Z)(rules);if(!injectRules){_context.next=18;break;}_context.prev=3;selectedSub=subrulesList.find(function(item){return item.selected;});if(!(selectedSub!==null&&selectedSub!==void 0&&selectedSub.url)){_context.next=13;break;}mixRule={};Object.entries(owSubrule).filter(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];if(owSubrule.textStyle===REMAIN_KEY&&(key==="bgColor"||key==="textDiyStyle")){return false;}return val!==REMAIN_KEY;}).forEach(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,2),key=_ref6[0],val=_ref6[1];mixRule[key]=val;});_context.next=10;return loadOrFetchSubRules(selectedSub.url);case 10:subRules=_context.sent;subRules=subRules.map(function(item){return _objectSpread2(_objectSpread2({},item),mixRule);});(_rules=rules).splice.apply(_rules,[-1,0].concat((0,toConsumableArray/* default */.Z)(subRules)));case 13:_context.next=18;break;case 15:_context.prev=15;_context.t0=_context["catch"](3);console.log("[load injectRules]",_context.t0);case 18:rule=rules.find(function(r){return r.pattern.split(",").some(function(p){return isMatch(href,p.trim());});});globalRule=rules.find(function(r){return r.pattern===GLOBAL_KEY;})||GLOBLA_RULE;if(rule){_context.next=22;break;}return _context.abrupt("return",globalRule);case 22:rule.selector=((_rule$selector=rule.selector)===null||_rule$selector===void 0?void 0:_rule$selector.trim())||globalRule.selector;if(rule.textStyle===GLOBAL_KEY){rule.textStyle=globalRule.textStyle;rule.bgColor=globalRule.bgColor;rule.textDiyStyle=globalRule.textDiyStyle;}else{rule.bgColor=((_rule$bgColor=rule.bgColor)===null||_rule$bgColor===void 0?void 0:_rule$bgColor.trim())||globalRule.bgColor;rule.textDiyStyle=((_rule$textDiyStyle=rule.textDiyStyle)===null||_rule$textDiyStyle===void 0?void 0:_rule$textDiyStyle.trim())||globalRule.textDiyStyle;}["translator","fromLang","toLang","transOpen"].forEach(function(key){if(rule[key]===GLOBAL_KEY){rule[key]=globalRule[key];}});return _context.abrupt("return",rule);case 26:case"end":return _context.stop();}},_callee,null,[[3,15]]);}))).apply(this,arguments);};/**
- * 检查过滤rules
- * @param {*} rules
- * @returns
- */var checkRules=function checkRules(rules){if(type(rules)==="string"){rules=JSON.parse(rules);}if(type(rules)!=="array"){throw new Error("data error");}var fromLangs=OPT_LANGS_FROM.map(function(item){return item[0];});var toLangs=OPT_LANGS_TO.map(function(item){return item[0];});var patternSet=new Set();rules=rules.filter(function(rule){return type(rule)==="object";}).filter(function(_ref7){var pattern=_ref7.pattern;if(type(pattern)!=="string"||patternSet.has(pattern.trim())){return false;}patternSet.add(pattern.trim());return true;}).map(function(_ref8){var pattern=_ref8.pattern,selector=_ref8.selector,translator=_ref8.translator,fromLang=_ref8.fromLang,toLang=_ref8.toLang,textStyle=_ref8.textStyle,transOpen=_ref8.transOpen,bgColor=_ref8.bgColor,textDiyStyle=_ref8.textDiyStyle;return{pattern:pattern.trim(),selector:type(selector)==="string"?selector:"",bgColor:type(bgColor)==="string"?bgColor:"",textDiyStyle:type(textDiyStyle)==="string"?textDiyStyle:"",translator:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_TRANS_ALL)),translator),fromLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(fromLangs)),fromLang),toLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(toLangs)),toLang),textStyle:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_STYLE_ALL)),textStyle),transOpen:matchValue([GLOBAL_KEY,"true","false"],transOpen)};});return rules;};/**
- * 保存或更新rule
- * @param {*} newRule
- */var saveRule=function saveRule(_x4){return(rules_ref9=rules_ref9||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(newRule){var rules,rule;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return getRulesWithDefault();case 2:rules=_context2.sent;rule=rules.find(function(item){return isMatch(newRule.pattern,item.pattern);});if(rule&&rule.pattern!==GLOBAL_KEY){Object.assign(rule,_objectSpread2(_objectSpread2({},newRule),{},{pattern:rule.pattern}));}else{rules.unshift(newRule);}_context2.next=7;return setRules(rules);case 7:trySyncRules(false,true);case 8:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};
-;// CONCATENATED MODULE: ./src/views/Popup/index.js
-function Popup(_ref){var _ref2,_ref3,_ref4;var setShowPopup=_ref.setShowPopup,tran=_ref.translator;var i18n=useI18n();var _useState=(0,react.useState)(tran===null||tran===void 0?void 0:tran.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var handleOpenSetting=function handleOpenSetting(){if(isExt){browser===null||browser===void 0?void 0:browser.runtime.openOptionsPage();}else{window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");}setShowPopup&&setShowPopup(false);};var handleTransToggle=function handleTransToggle(_x){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(e){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setRule(_objectSpread2(_objectSpread2({},rule),{},{transOpen:e.target.checked?"true":"false"}));if(!isExt){_context.next=7;break;}_context.next=5;return sendTabMsg(MSG_TRANS_TOGGLE);case 5:_context.next=9;break;case 7:tran.toggle();sendIframeMsg(MSG_TRANS_TOGGLE);case 9:_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](0);console.log("[toggle trans]",_context.t0);case 14:case"end":return _context.stop();}},_callee,null,[[0,11]]);}))).apply(this,arguments);};var handleChange=function handleChange(_x2){return(_ref3=_ref3||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$target,name,value;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_e$target=e.target,name=_e$target.name,value=_e$target.value;setRule(function(pre){return _objectSpread2(_objectSpread2({},pre),{},(0,defineProperty/* default */.Z)({},name,value));});if(!isExt){_context2.next=8;break;}_context2.next=6;return sendTabMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 6:_context2.next=10;break;case 8:tran.updateRule((0,defineProperty/* default */.Z)({},name,value));sendIframeMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 10:_context2.next=15;break;case 12:_context2.prev=12;_context2.t0=_context2["catch"](0);console.log("[update rule]",_context2.t0);case 15:case"end":return _context2.stop();}},_callee2,null,[[0,12]]);}))).apply(this,arguments);};var handleClearCache=function handleClearCache(){try{caches.delete(config_CACHE_NAME);}catch(err){console.log("[clear cache]",err);}};var handleSaveRule=function handleSaveRule(){return(_ref4=_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(){var host,tab,url;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;host=window.location.host;if(!isExt){_context3.next=8;break;}_context3.next=5;return getTabInfo();case 5:tab=_context3.sent;url=new URL(tab.url);host=url.host;case 8:saveRule(_objectSpread2(_objectSpread2({},rule),{},{pattern:host}));_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](0);console.log("[save rule]",_context3.t0);case 14:case"end":return _context3.stop();}},_callee3,null,[[0,11]]);}))).apply(this,arguments);};(0,react.useEffect)(function(){if(!isExt){return;}asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(){var res;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;_context4.next=3;return sendTabMsg(MSG_TRANS_GETRULE);case 3:res=_context4.sent;if(!res.error){setRule(res.data);}_context4.next=10;break;case 7:_context4.prev=7;_context4.t0=_context4["catch"](0);console.log("[query rule]",_context4.t0);case 10:case"end":return _context4.stop();}},_callee4,null,[[0,7]]);}))();},[]);if(!rule){return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{sx:{p:2},spacing:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})})]});}var transOpen=rule.transOpen,translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang,textStyle=rule.textStyle,bgColor=rule.bgColor;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{sx:{p:2},spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(FormControlLabel_FormControlLabel,{control:/*#__PURE__*/(0,jsx_runtime.jsx)(Switch_Switch,{checked:transOpen==="true",onChange:handleTransToggle}),label:i18n("translate_alt")}),!isExt&&/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleClearCache,children:i18n("clear_cache")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:translator,name:"translator",label:i18n("translate_service"),onChange:handleChange,children:OPT_TRANS_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:item},item);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:fromLang,name:"fromLang",label:i18n("from_lang"),onChange:handleChange,children:OPT_LANGS_FROM.map(function(_ref6){var _ref7=(0,slicedToArray/* default */.Z)(_ref6,2),lang=_ref7[0],name=_ref7[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:toLang,name:"toLang",label:i18n("to_lang"),onChange:handleChange,children:OPT_LANGS_TO.map(function(_ref8){var _ref9=(0,slicedToArray/* default */.Z)(_ref8,2),lang=_ref9[0],name=_ref9[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:textStyle,name:"textStyle",label:i18n("text_style_alt"),onChange:handleChange,children:OPT_STYLE_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:i18n(item)},item);})}),OPT_STYLE_USE_COLOR.includes(textStyle)&&/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",name:"bgColor",value:bgColor,label:i18n("bg_color"),onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleSaveRule,children:i18n("save_rule")}),/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})]})]})]});}
-;// CONCATENATED MODULE: ./src/libs/shortcut.js
-/**
- * 键盘快捷键监听
- * @param {*} fn
- * @param {*} target
- * @param {*} timeout
- * @returns
- */var shortcutListener=function shortcutListener(fn){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3000;var allkeys=new Set();var curkeys=new Set();var timer=null;var handleKeydown=function handleKeydown(e){timer&&clearTimeout(timer);timer=setTimeout(function(){allkeys.clear();curkeys.clear();clearTimeout(timer);timer=null;},timeout);if(e.code){allkeys.add(e.key);curkeys.add(e.key);fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));}};var handleKeyup=function handleKeyup(e){curkeys.delete(e.key);if(curkeys.size===0){fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));allkeys.clear();}};target.addEventListener("keydown",handleKeydown);target.addEventListener("keyup",handleKeyup);return function(){if(timer){clearTimeout(timer);timer=null;}target.removeEventListener("keydown",handleKeydown);target.removeEventListener("keyup",handleKeyup);};};/**
- * 注册键盘快捷键
- * @param {*} targetKeys
- * @param {*} fn
- * @param {*} target
- * @returns
- */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};
-;// CONCATENATED MODULE: ./src/views/Action/index.js
-function Action(_ref){var _fab$x,_fab$y;var translator=_ref.translator,fab=_ref.fab;var fabWidth=40;var _useState=(0,react.useState)(false),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),showPopup=_useState2[0],setShowPopup=_useState2[1];var _useState3=(0,react.useState)({w:window.innerWidth,h:window.innerHeight}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),windowSize=_useState4[0],setWindowSize=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),moved=_useState6[0],setMoved=_useState6[1];var handleWindowResize=(0,react.useMemo)(function(){return debounce(function(){setWindowSize({w:window.innerWidth,h:window.innerHeight});});},[]);var handleWindowClick=function handleWindowClick(e){setShowPopup(false);};var handleStart=(0,react.useCallback)(function(){setMoved(false);},[]);var handleMove=(0,react.useCallback)(function(){setMoved(true);},[]);(0,react.useEffect)(function(){// 注册快捷键
-var shortcuts=translator.setting.shortcuts||DEFAULT_SHORTCUTS;var clearShortcuts=[shortcutRegister(shortcuts[OPT_SHORTCUT_TRANSLATE],function(){translator.toggle();setShowPopup(false);}),shortcutRegister(shortcuts[OPT_SHORTCUT_STYLE],function(){translator.toggleStyle();setShowPopup(false);}),shortcutRegister(shortcuts[OPT_SHORTCUT_POPUP],function(){setShowPopup(function(pre){return!pre;});}),shortcutRegister(shortcuts[OPT_SHORTCUT_SETTING],function(){window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");})];return function(){clearShortcuts.forEach(function(fn){fn();});};},[translator]);(0,react.useEffect)(function(){// 注册菜单
-var menuCommandIds=[];if(isGm){try{menuCommandIds.push(GM.registerMenuCommand("Toggle Translate (Alt+q)",function(event){translator.toggle();setShowPopup(false);},"Q"),GM.registerMenuCommand("Toggle Style (Alt+c)",function(event){translator.toggleStyle();setShowPopup(false);},"C"),GM.registerMenuCommand("Open Menu (Alt+k)",function(event){setShowPopup(function(pre){return!pre;});},"K"),GM.registerMenuCommand("Open Setting (Alt+o)",function(event){window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");},"O"));}catch(err){console.log("[registerMenuCommand]",err);}}return function(){if(isGm){try{menuCommandIds.forEach(function(id){GM.unregisterMenuCommand(id);});}catch(err){//
-}}};},[translator]);(0,react.useEffect)(function(){window.addEventListener("resize",handleWindowResize);return function(){window.removeEventListener("resize",handleWindowResize);};},[handleWindowResize]);(0,react.useEffect)(function(){window.addEventListener("click",handleWindowClick);return function(){window.removeEventListener("click",handleWindowClick);};},[]);var popProps=(0,react.useMemo)(function(){var width=Math.min(windowSize.w,300);var height=Math.min(windowSize.h,442);var left=(windowSize.w-width)/2;var top=(windowSize.h-height)/2;return{windowSize:windowSize,width:width,height:height,left:left,top:top};},[windowSize]);var fabProps={windowSize:windowSize,width:fabWidth,height:fabWidth,left:(_fab$x=fab.x)!==null&&_fab$x!==void 0?_fab$x:0,top:(_fab$y=fab.y)!==null&&_fab$y!==void 0?_fab$y:windowSize.h/2};return/*#__PURE__*/(0,jsx_runtime.jsx)(SettingProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Theme,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Draggable,_objectSpread2(_objectSpread2({},popProps),{},{show:showPopup,onStart:handleStart,onMove:handleMove,handler:/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,{style:{cursor:"move"},elevation:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{setShowPopup:setShowPopup})}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,{children:showPopup&&/*#__PURE__*/(0,jsx_runtime.jsx)(Popup,{setShowPopup:setShowPopup,translator:translator})})}),"pop"),/*#__PURE__*/(0,jsx_runtime.jsx)(Draggable,_objectSpread2(_objectSpread2({snapEdge:true},fabProps),{},{show:translator.setting.hideFab?false:!showPopup,onStart:handleStart,onMove:handleMove,handler:/*#__PURE__*/(0,jsx_runtime.jsx)(Fab_Fab,{size:"small",color:"primary",onClick:function onClick(e){if(!moved){setShowPopup(function(pre){return!pre;});}},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.Z,{})})}),"fab")]})});}
-;// CONCATENATED MODULE: ./src/views/Content/LoadingIcon.js
-function LoadingIcon(){return/*#__PURE__*/(0,jsx_runtime.jsxs)("svg",{viewBox:"0 0 100 100",style:{maxWidth:"1.2em",maxHeight:"1.2em"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"6",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 15 ; 0 -15; 0 15",repeatCount:"indefinite",begin:"0.1"})}),/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"30",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 10 ; 0 -10; 0 10",repeatCount:"indefinite",begin:"0.2"})}),/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"54",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 5 ; 0 -5; 0 5",repeatCount:"indefinite",begin:"0.3"})})]});}
-;// CONCATENATED MODULE: ./src/hooks/Translate.js
-/**
- * 翻译hook
- * @param {*} q
- * @param {*} rule
- * @param {*} setting
- * @returns
- */function useTranslate(q,rule,setting){var _useState=(0,react.useState)(""),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),text=_useState2[0],setText=_useState2[1];var _useState3=(0,react.useState)(false),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),loading=_useState4[0],setLoading=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),sameLang=_useState6[0],setSamelang=_useState6[1];var translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang;(0,react.useEffect)(function(){asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setLoading(true);_context.next=4;return tryDetectLang(q);case 4:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=9;break;}setSamelang(true);_context.next=17;break;case 9:_context.next=11;return apiTranslate({translator:translator,text:q,fromLang:fromLang,toLang:toLang,apiSetting:(setting.transApis||DEFAULT_TRANS_APIS)[translator]});case 11:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];setText(trText);setSamelang(isSame);case 17:_context.next=22;break;case 19:_context.prev=19;_context.t0=_context["catch"](0);console.log("[translate]",_context.t0);case 22:_context.prev=22;setLoading(false);return _context.finish(22);case 25:case"end":return _context.stop();}},_callee,null,[[0,19,22,25]]);}))();},[q,translator,fromLang,toLang,setting]);return{text:text,sameLang:sameLang,loading:loading};}
-;// CONCATENATED MODULE: ./src/views/Content/index.js
-var Content_templateObject,Content_templateObject2,Content_templateObject3,Content_templateObject4;var LineSpan=(0,styled/* default */.ZP)("span")(Content_templateObject||(Content_templateObject=_taggedTemplateLiteral(["\n opacity: 0.6;\n -webkit-opacity: 0.6;\n text-decoration-line: underline;\n text-decoration-style: ",";\n text-decoration-color: ",";\n text-decoration-thickness: 2px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ",";\n -webkit-text-decoration-color: ",";\n -webkit-text-decoration-thickness: 2px;\n -webkit-text-underline-offset: 0.3em;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n"])),function(props){return props.$lineStyle;},function(props){return props.$lineColor;},function(props){return props.$lineStyle;},function(props){return props.$lineColor;});var FuzzySpan=(0,styled/* default */.ZP)("span")(Content_templateObject2||(Content_templateObject2=_taggedTemplateLiteral(["\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n"])));var HighlightSpan=(0,styled/* default */.ZP)("span")(Content_templateObject3||(Content_templateObject3=_taggedTemplateLiteral(["\n color: #fff;\n background-color: ",";\n"])),function(props){return props.$bgColor;});var DiySpan=(0,styled/* default */.ZP)("span")(Content_templateObject4||(Content_templateObject4=_taggedTemplateLiteral(["\n ","\n"])),function(props){return props.$diyStyle;});function StyledSpan(_ref){var textStyle=_ref.textStyle,textDiyStyle=_ref.textDiyStyle,bgColor=_ref.bgColor,children=_ref.children;switch(textStyle){case OPT_STYLE_LINE:// 下划线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"solid",$lineColor:bgColor,children:children});case OPT_STYLE_DOTLINE:// 点状线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dotted",$lineColor:bgColor,children:children});case OPT_STYLE_DASHLINE:// 虚线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dashed",$lineColor:bgColor,children:children});case OPT_STYLE_WAVYLINE:// 波浪线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"wavy",$lineColor:bgColor,children:children});case OPT_STYLE_FUZZY:// 模糊
-return/*#__PURE__*/(0,jsx_runtime.jsx)(FuzzySpan,{children:children});case OPT_STYLE_HIGHLIGHT:// 高亮
-return/*#__PURE__*/(0,jsx_runtime.jsx)(HighlightSpan,{$bgColor:bgColor||DEFAULT_COLOR,children:children});case OPT_STYLE_DIY:// 自定义
-return/*#__PURE__*/(0,jsx_runtime.jsx)(DiySpan,{$diyStyle:textDiyStyle,children:children});default:return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:children});}}function Content(_ref2){var q=_ref2.q,translator=_ref2.translator;var _useState=(0,react.useState)(translator.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var _useTranslate=useTranslate(q,rule,translator.setting),text=_useTranslate.text,sameLang=_useTranslate.sameLang,loading=_useTranslate.loading;var textStyle=rule.textStyle,_rule$bgColor=rule.bgColor,bgColor=_rule$bgColor===void 0?"":_rule$bgColor,_rule$textDiyStyle=rule.textDiyStyle,textDiyStyle=_rule$textDiyStyle===void 0?"":_rule$textDiyStyle;var _translator$setting$n=translator.setting.newlineLength,newlineLength=_translator$setting$n===void 0?TRANS_NEWLINE_LENGTH:_translator$setting$n;var handleKissEvent=function handleKissEvent(e){var _e$detail=e.detail,action=_e$detail.action,args=_e$detail.args;switch(action){case MSG_TRANS_CURRULE:setRule(args);break;default:}};(0,react.useEffect)(function(){window.addEventListener(translator.eventName,handleKissEvent);return function(){window.removeEventListener(translator.eventName,handleKissEvent);};},[translator.eventName]);if(loading){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(LoadingIcon,{})]});}if(text&&!sameLang){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(StyledSpan,{textStyle:textStyle,textDiyStyle:textDiyStyle,bgColor:bgColor,children:text})]});}}
-;// CONCATENATED MODULE: ./src/libs/translator.js
-/**
- * 翻译类
- */var Translator=/*#__PURE__*/function(){function Translator(rule,setting){var _this2=this;_classCallCheck(this,Translator);this._rule={};this._setting={};this._rootNodes=new Set();this._tranNodes=new Map();this._skipNodeNames=[APP_LCNAME,"style","svg","img","audio","video","textarea","input","button","select","option","head","script","iframe"];this._eventName=utils_genEventName();// 显示
-this._interseObserver=new IntersectionObserver(function(intersections){intersections.forEach(function(intersection){if(intersection.isIntersecting){_this2._render(intersection.target);_this2._interseObserver.unobserve(intersection.target);}});},{threshold:0.1});// 变化
-this._mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(!_this2._skipNodeNames.includes(mutation.target.localName)&&mutation.addedNodes.length>0){var nodes=Array.from(mutation.addedNodes).filter(function(node){if(_this2._skipNodeNames.includes(node.localName)||node.id===APP_LCNAME){return false;}return true;});if(nodes.length>0){// const rootNode = mutation.target.getRootNode();
-// todo
-_this2._reTranslate();}}});});// 插入 shadowroot
-this._overrideAttachShadow=function(){var _this=_this2;var _attachShadow=HTMLElement.prototype.attachShadow;HTMLElement.prototype.attachShadow=function(){_this._reTranslate();return _attachShadow.apply(this,arguments);};};this.updateRule=function(obj){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),obj);};this.toggle=function(){if(_this2.rule.transOpen==="true"){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"false"});_this2._unRegister();}else{_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"true"});_this2._register();}};this.toggleStyle=function(){var textStyle=_this2.rule.textStyle===OPT_STYLE_FUZZY?OPT_STYLE_DASHLINE:OPT_STYLE_FUZZY;_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{textStyle:textStyle});};this._querySelectorAll=function(selector,node){try{return Array.from(node.querySelectorAll(selector));}catch(err){console.log("[querySelectorAll err]: ".concat(selector));}return[];};this._queryFilter=function(selector,rootNode){return _this2._querySelectorAll(selector,rootNode).filter(function(node){return _this2._queryFilter(selector,node).length===0;});};this._queryNodes=function(){var rootNode=arguments.length>0&&arguments[0]!==undefined?arguments[0]:document;// const childRoots = Array.from(rootNode.querySelectorAll("*"))
-// .map((item) => item.shadowRoot)
-// .filter(Boolean);
-// const childNodes = childRoots.map((item) => this._queryNodes(item));
-// const nodes = Array.from(rootNode.querySelectorAll(this.rule.selector));
-// return nodes.concat(childNodes).flat();
-_this2._rootNodes.add(rootNode);_this2._rule.selector.split(";").map(function(item){return item.trim();}).filter(Boolean).forEach(function(selector){if(selector.includes(SHADOW_KEY)){var _selector$split$map=selector.split(SHADOW_KEY).map(function(item){return item.trim();}),_selector$split$map2=(0,slicedToArray/* default */.Z)(_selector$split$map,2),outSelector=_selector$split$map2[0],inSelector=_selector$split$map2[1];if(outSelector&&inSelector){var outNodes=_this2._querySelectorAll(outSelector,rootNode);outNodes.forEach(function(outNode){if(outNode.shadowRoot){_this2._rootNodes.add(outNode.shadowRoot);_this2._queryFilter(inSelector,outNode.shadowRoot).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});}}else{_this2._queryFilter(selector,rootNode).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});};this._register=function(){if(_this2._rule.fromLang===_this2._rule.toLang){return;}// 搜索节点
-_this2._queryNodes();_this2._rootNodes.forEach(function(node){// 监听节点变化;
-_this2._mutaObserver.observe(node,{childList:true,subtree:true// characterData: true,
-});});_this2._tranNodes.forEach(function(_,node){if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 监听节点显示
-_this2._interseObserver.observe(node);}else{// 监听鼠标悬停
-node.addEventListener("mouseover",_this2._handleMouseover);}});};this._handleMouseover=function(e){var key=_this2._setting.mouseKey.slice(3);if(_this2._setting.mouseKey===OPT_MOUSEKEY_MOUSEOVER||e[key]){e.target.removeEventListener("mouseover",_this2._handleMouseover);_this2._render(e.target);}};this._unRegister=function(){// 解除节点变化监听
-_this2._mutaObserver.disconnect();// 解除节点显示监听
-// this._interseObserver.disconnect();
-_this2._tranNodes.forEach(function(_,node){var _node$querySelector;if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 解除节点显示监听
-_this2._interseObserver.unobserve(node);}else{// 移除鼠标悬停监听
-node.removeEventListener("mouseover",_this2._handleMouseover);}// 移除已插入元素
-(_node$querySelector=node.querySelector(APP_LCNAME))===null||_node$querySelector===void 0?void 0:_node$querySelector.remove();});// 清空节点集合
-_this2._rootNodes.clear();_this2._tranNodes.clear();// 清空任务池
-clearFetchPool();};this._reTranslate=debounce(function(){if(_this2._rule.transOpen==="true"){_this2._register();}},500);this._render=function(el){var _this2$_setting$minLe,_this2$_setting$maxLe;var traEl=el.querySelector(APP_LCNAME);// 已翻译
-if(traEl){var preText=_this2._tranNodes.get(el);var curText=el.innerText.trim();// const traText = traEl.innerText.trim();
-// todo
-// 1. traText when loading
-// 2. replace startsWith
-if(curText.startsWith(preText)){return;}traEl.remove();}var q=el.innerText.trim();_this2._tranNodes.set(el,q);// 太长或太短
-if(!q||q.length<((_this2$_setting$minLe=_this2._setting.minLength)!==null&&_this2$_setting$minLe!==void 0?_this2$_setting$minLe:TRANS_MIN_LENGTH)||q.length>((_this2$_setting$maxLe=_this2._setting.maxLength)!==null&&_this2$_setting$maxLe!==void 0?_this2$_setting$maxLe:TRANS_MAX_LENGTH)){return;}// console.log("---> ", q);
-traEl=document.createElement(APP_LCNAME);traEl.style.visibility="visible";el.appendChild(traEl);el.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";if(el.parentElement){el.parentElement.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";}var root=(0,client.createRoot)(traEl);root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{q:q,translator:_this2}));};var fetchInterval=setting.fetchInterval,fetchLimit=setting.fetchLimit;updateFetchPool(fetchInterval,fetchLimit);this._overrideAttachShadow();this._setting=setting;this._rule=rule;if(rule.transOpen==="true"){this._register();}}_createClass(Translator,[{key:"setting",get:function get(){return this._setting;}},{key:"eventName",get:function get(){return this._eventName;}},{key:"rule",get:function get(){// console.log("get rule", this._rule);
-return this._rule;},set:function set(rule){// console.log("set rule", rule);
-this._rule=rule;// 广播消息
-var eventName=this._eventName;window.dispatchEvent(new CustomEvent(eventName,{detail:{action:MSG_TRANS_CURRULE,args:rule}}));}}]);return Translator;}();
-;// CONCATENATED MODULE: ./src/libs/gm.js
-var gm_ref;var MSG_GM_xmlHttpRequest="xmlHttpRequest";var MSG_GM_setValue="setValue";var MSG_GM_getValue="getValue";var MSG_GM_deleteValue="deleteValue";var MSG_GM_info="info";/**
- * 注入页面的脚本,请求并接受GM接口信息
- * @param {*} param0
- */var injectScript=function injectScript(ping){window.APP_INFO={name:"KISS Translator",version:"1.7.0",eventName:ping};};/**
- * 适配GM脚本
- */var adaptScript=function adaptScript(ping){var _getInfo;var promiseGM=function promiseGM(action,args){var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:5000;return new Promise(function(resolve,reject){var pong=genEventName();var handleEvent=function handleEvent(e){window.removeEventListener(pong,handleEvent);var _e$detail=e.detail,data=_e$detail.data,error=_e$detail.error;if(error){reject(new Error(error));}else{resolve(data);}};window.addEventListener(pong,handleEvent);window.dispatchEvent(new CustomEvent(ping,{detail:{action:action,args:args,pong:pong}}));setTimeout(function(){window.removeEventListener(pong,handleEvent);reject(new Error("timeout"));},timeout);});};window.KISS_GM={fetch:function fetch(input,init){return promiseGM(MSG_GM_xmlHttpRequest,{input:input,init:init});},setValue:function setValue(key,val){return promiseGM(MSG_GM_setValue,{key:key,val:val});},getValue:function getValue(key){return promiseGM(MSG_GM_getValue,{key:key});},deleteValue:function deleteValue(key){return promiseGM(MSG_GM_deleteValue,{key:key});},getInfo:function getInfo(){return(_getInfo=_getInfo||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(window.GM_info){_context.next=4;break;}_context.next=3;return promiseGM(MSG_GM_info);case 3:window.GM_info=_context.sent;case 4:return _context.abrupt("return",window.GM_info);case 5:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);}};};/**
- * 监听并回应页面对GM接口的请求
- * @param {*} param0
- */var handlePing=function handlePing(_x){return(gm_ref=gm_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$detail2,action,args,pong,res,input,init,key,val;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_e$detail2=e.detail,action=_e$detail2.action,args=_e$detail2.args,pong=_e$detail2.pong;_context2.prev=1;_context2.t0=action;_context2.next=_context2.t0===MSG_GM_xmlHttpRequest?5:_context2.t0===MSG_GM_setValue?10:_context2.t0===MSG_GM_getValue?15:_context2.t0===MSG_GM_deleteValue?19:_context2.t0===MSG_GM_info?23:25;break;case 5:input=args.input,init=args.init;_context2.next=8;return fetchGM(input,init);case 8:res=_context2.sent;return _context2.abrupt("break",26);case 10:key=args.key,val=args.val;_context2.next=13;return GM.setValue(key,val);case 13:res=val;return _context2.abrupt("break",26);case 15:_context2.next=17;return GM.getValue(args.key);case 17:res=_context2.sent;return _context2.abrupt("break",26);case 19:_context2.next=21;return GM.deleteValue(args.key);case 21:res="ok";return _context2.abrupt("break",26);case 23:res=GM.info;return _context2.abrupt("break",26);case 25:throw new Error("message action is unavailable: ".concat(action));case 26:window.dispatchEvent(new CustomEvent(pong,{detail:{data:res}}));_context2.next=32;break;case 29:_context2.prev=29;_context2.t1=_context2["catch"](1);window.dispatchEvent(new CustomEvent(pong,{detail:{error:_context2.t1.message}}));case 32:case"end":return _context2.stop();}},_callee2,null,[[1,29]]);}))).apply(this,arguments);};
;// CONCATENATED MODULE: ./src/libs/webfix.js
var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
* 修复程序类型
@@ -28708,10 +28621,145 @@ var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
*/var loadOrFetchWebfix=function loadOrFetchWebfix(_x2){return(webfix_ref2=webfix_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=3;return getWebfix(url);case 3:sites=_context2.sent;if(!(sites!==null&&sites!==void 0&&sites.length)){_context2.next=6;break;}return _context2.abrupt("return",sites);case 6:return _context2.abrupt("return",syncWebfix(url));case 9:_context2.prev=9;_context2.t0=_context2["catch"](0);console.log("[load webfix]",_context2.t0.message);return _context2.abrupt("return",DEFAULT_SITES);case 13:case"end":return _context2.stop();}},_callee2,null,[[0,9]]);}))).apply(this,arguments);};/**
* 匹配站点
*/function webfix(_x3,_x4){return(_webfix=_webfix||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(href,_ref3){var injectWebfix,sites,i,site;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:injectWebfix=_ref3.injectWebfix;_context3.prev=1;if(injectWebfix){_context3.next=4;break;}return _context3.abrupt("return");case 4:_context3.next=6;return loadOrFetchWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 6:sites=_context3.sent;i=0;case 8:if(!(i1&&_args2[1]!==undefined?_args2[1]:false;_context2.next=3;return apiFetch(url,isBg);case 3:res=_context2.sent;rules=checkRules(res).filter(function(_ref3){var pattern=_ref3.pattern;return!isAllchar(pattern,GLOBAL_KEY);});if(!(rules.length>0)){_context2.next=8;break;}_context2.next=8;return setSubRules(url,rules);case 8:return _context2.abrupt("return",rules);case 9:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};/**
+ * 同步所有订阅规则
+ * @param {*} url
+ * @returns
+ */var syncAllSubRules=function syncAllSubRules(_x3){return(subRules_ref4=subRules_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(subrulesList){var isBg,_iterator,_step,subrules,_args3=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:isBg=_args3.length>1&&_args3[1]!==undefined?_args3[1]:false;_iterator=_createForOfIteratorHelper(subrulesList);_context3.prev=2;_iterator.s();case 4:if((_step=_iterator.n()).done){_context3.next=18;break;}subrules=_step.value;_context3.prev=6;_context3.next=9;return syncSubRules(subrules.url,isBg);case 9:_context3.next=11;return updateSyncDataCache(subrules.url);case 11:_context3.next=16;break;case 13:_context3.prev=13;_context3.t0=_context3["catch"](6);console.log("[sync subrule error]: ".concat(subrules.url),_context3.t0);case 16:_context3.next=4;break;case 18:_context3.next=23;break;case 20:_context3.prev=20;_context3.t1=_context3["catch"](2);_iterator.e(_context3.t1);case 23:_context3.prev=23;_iterator.f();return _context3.finish(23);case 26:case"end":return _context3.stop();}},_callee3,null,[[2,20,23,26],[6,13]]);}))).apply(this,arguments);};/**
+ * 根据时间同步所有订阅规则
+ * @param {*} url
+ * @returns
+ */var trySyncAllSubRules=function trySyncAllSubRules(_x4){return(subRules_ref6=subRules_ref6||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(_ref5){var subrulesList,isBg,_yield$getSyncWithDef3,subRulesSyncAt,now,interval,_args4=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:subrulesList=_ref5.subrulesList;isBg=_args4.length>1&&_args4[1]!==undefined?_args4[1]:false;_context4.prev=2;_context4.next=5;return getSyncWithDefault();case 5:_yield$getSyncWithDef3=_context4.sent;subRulesSyncAt=_yield$getSyncWithDef3.subRulesSyncAt;now=Date.now();interval=24*60*60*1000;// 间隔一天
+if(!(now-subRulesSyncAt>interval)){_context4.next=16;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:_context4.next=16;return syncWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 16:_context4.next=21;break;case 18:_context4.prev=18;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 21:case"end":return _context4.stop();}},_callee4,null,[[2,18]]);}))).apply(this,arguments);};/**
+ * 从缓存或远程加载订阅规则
+ * @param {*} url
+ * @returns
+ */var loadOrFetchSubRules=function loadOrFetchSubRules(_x5){return(subRules_ref7=subRules_ref7||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee5(url){var rules;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.next=2;return getSubRules(url);case 2:rules=_context5.sent;if(!(!rules||rules.length===0)){_context5.next=9;break;}_context5.next=6;return syncSubRules(url);case 6:rules=_context5.sent;_context5.next=9;return updateSyncDataCache(url);case 9:return _context5.abrupt("return",rules||[]);case 10:case"end":return _context5.stop();}},_callee5);}))).apply(this,arguments);};
+;// CONCATENATED MODULE: ./src/libs/rules.js
+var rules_ref2,rules_ref9;/**
+ * 根据href匹配规则
+ * @param {*} rules
+ * @param {string} href
+ * @returns
+ */var matchRule=function matchRule(_x,_x2,_x3){return(rules_ref2=rules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(rules,href,_ref){var _rule$selector;var _ref$injectRules,injectRules,_ref$subrulesList,subrulesList,_ref$owSubrule,owSubrule,selectedSub,_rules,mixRule,subRules,rule,globalRule,_rule$bgColor,_rule$textDiyStyle;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_ref$injectRules=_ref.injectRules,injectRules=_ref$injectRules===void 0?true:_ref$injectRules,_ref$subrulesList=_ref.subrulesList,subrulesList=_ref$subrulesList===void 0?DEFAULT_SUBRULES_LIST:_ref$subrulesList,_ref$owSubrule=_ref.owSubrule,owSubrule=_ref$owSubrule===void 0?DEFAULT_OW_RULE:_ref$owSubrule;rules=(0,toConsumableArray/* default */.Z)(rules);if(!injectRules){_context.next=18;break;}_context.prev=3;selectedSub=subrulesList.find(function(item){return item.selected;});if(!(selectedSub!==null&&selectedSub!==void 0&&selectedSub.url)){_context.next=13;break;}mixRule={};Object.entries(owSubrule).filter(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];if(owSubrule.textStyle===REMAIN_KEY&&(key==="bgColor"||key==="textDiyStyle")){return false;}return val!==REMAIN_KEY;}).forEach(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,2),key=_ref6[0],val=_ref6[1];mixRule[key]=val;});_context.next=10;return loadOrFetchSubRules(selectedSub.url);case 10:subRules=_context.sent;subRules=subRules.map(function(item){return _objectSpread2(_objectSpread2({},item),mixRule);});(_rules=rules).splice.apply(_rules,[-1,0].concat((0,toConsumableArray/* default */.Z)(subRules)));case 13:_context.next=18;break;case 15:_context.prev=15;_context.t0=_context["catch"](3);console.log("[load injectRules]",_context.t0);case 18:rule=rules.find(function(r){return r.pattern.split(",").some(function(p){return isMatch(href,p.trim());});});globalRule=rules.find(function(r){return r.pattern===GLOBAL_KEY;})||GLOBLA_RULE;if(rule){_context.next=22;break;}return _context.abrupt("return",globalRule);case 22:rule.selector=((_rule$selector=rule.selector)===null||_rule$selector===void 0?void 0:_rule$selector.trim())||globalRule.selector;if(rule.textStyle===GLOBAL_KEY){rule.textStyle=globalRule.textStyle;rule.bgColor=globalRule.bgColor;rule.textDiyStyle=globalRule.textDiyStyle;}else{rule.bgColor=((_rule$bgColor=rule.bgColor)===null||_rule$bgColor===void 0?void 0:_rule$bgColor.trim())||globalRule.bgColor;rule.textDiyStyle=((_rule$textDiyStyle=rule.textDiyStyle)===null||_rule$textDiyStyle===void 0?void 0:_rule$textDiyStyle.trim())||globalRule.textDiyStyle;}["translator","fromLang","toLang","transOpen"].forEach(function(key){if(rule[key]===GLOBAL_KEY){rule[key]=globalRule[key];}});return _context.abrupt("return",rule);case 26:case"end":return _context.stop();}},_callee,null,[[3,15]]);}))).apply(this,arguments);};/**
+ * 检查过滤rules
+ * @param {*} rules
+ * @returns
+ */var checkRules=function checkRules(rules){if(type(rules)==="string"){rules=JSON.parse(rules);}if(type(rules)!=="array"){throw new Error("data error");}var fromLangs=OPT_LANGS_FROM.map(function(item){return item[0];});var toLangs=OPT_LANGS_TO.map(function(item){return item[0];});var patternSet=new Set();rules=rules.filter(function(rule){return type(rule)==="object";}).filter(function(_ref7){var pattern=_ref7.pattern;if(type(pattern)!=="string"||patternSet.has(pattern.trim())){return false;}patternSet.add(pattern.trim());return true;}).map(function(_ref8){var pattern=_ref8.pattern,selector=_ref8.selector,translator=_ref8.translator,fromLang=_ref8.fromLang,toLang=_ref8.toLang,textStyle=_ref8.textStyle,transOpen=_ref8.transOpen,bgColor=_ref8.bgColor,textDiyStyle=_ref8.textDiyStyle;return{pattern:pattern.trim(),selector:type(selector)==="string"?selector:"",bgColor:type(bgColor)==="string"?bgColor:"",textDiyStyle:type(textDiyStyle)==="string"?textDiyStyle:"",translator:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_TRANS_ALL)),translator),fromLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(fromLangs)),fromLang),toLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(toLangs)),toLang),textStyle:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_STYLE_ALL)),textStyle),transOpen:matchValue([GLOBAL_KEY,"true","false"],transOpen)};});return rules;};/**
+ * 保存或更新rule
+ * @param {*} newRule
+ */var saveRule=function saveRule(_x4){return(rules_ref9=rules_ref9||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(newRule){var rules,rule;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return getRulesWithDefault();case 2:rules=_context2.sent;rule=rules.find(function(item){return isMatch(newRule.pattern,item.pattern);});if(rule&&rule.pattern!==GLOBAL_KEY){Object.assign(rule,_objectSpread2(_objectSpread2({},newRule),{},{pattern:rule.pattern}));}else{rules.unshift(newRule);}_context2.next=7;return setRules(rules);case 7:trySyncRules(false,true);case 8:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};
+;// CONCATENATED MODULE: ./src/views/Popup/index.js
+function Popup(_ref){var _ref2,_ref3,_ref4;var setShowPopup=_ref.setShowPopup,tran=_ref.translator;var i18n=useI18n();var _useState=(0,react.useState)(tran===null||tran===void 0?void 0:tran.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var handleOpenSetting=function handleOpenSetting(){if(isExt){browser===null||browser===void 0?void 0:browser.runtime.openOptionsPage();}else{window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");}setShowPopup&&setShowPopup(false);};var handleTransToggle=function handleTransToggle(_x){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(e){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setRule(_objectSpread2(_objectSpread2({},rule),{},{transOpen:e.target.checked?"true":"false"}));if(!isExt){_context.next=7;break;}_context.next=5;return sendTabMsg(MSG_TRANS_TOGGLE);case 5:_context.next=9;break;case 7:tran.toggle();sendIframeMsg(MSG_TRANS_TOGGLE);case 9:_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](0);console.log("[toggle trans]",_context.t0);case 14:case"end":return _context.stop();}},_callee,null,[[0,11]]);}))).apply(this,arguments);};var handleChange=function handleChange(_x2){return(_ref3=_ref3||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$target,name,value;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_e$target=e.target,name=_e$target.name,value=_e$target.value;setRule(function(pre){return _objectSpread2(_objectSpread2({},pre),{},(0,defineProperty/* default */.Z)({},name,value));});if(!isExt){_context2.next=8;break;}_context2.next=6;return sendTabMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 6:_context2.next=10;break;case 8:tran.updateRule((0,defineProperty/* default */.Z)({},name,value));sendIframeMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 10:_context2.next=15;break;case 12:_context2.prev=12;_context2.t0=_context2["catch"](0);console.log("[update rule]",_context2.t0);case 15:case"end":return _context2.stop();}},_callee2,null,[[0,12]]);}))).apply(this,arguments);};var handleClearCache=function handleClearCache(){try{caches.delete(config_CACHE_NAME);}catch(err){console.log("[clear cache]",err);}};var handleSaveRule=function handleSaveRule(){return(_ref4=_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(){var href,tab;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;href=window.location.href;if(!isExt){_context3.next=7;break;}_context3.next=5;return getTabInfo();case 5:tab=_context3.sent;href=tab.url;case 7:saveRule(_objectSpread2(_objectSpread2({},rule),{},{pattern:href}));_context3.next=13;break;case 10:_context3.prev=10;_context3.t0=_context3["catch"](0);console.log("[save rule]",_context3.t0);case 13:case"end":return _context3.stop();}},_callee3,null,[[0,10]]);}))).apply(this,arguments);};(0,react.useEffect)(function(){if(!isExt){return;}asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(){var res;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;_context4.next=3;return sendTabMsg(MSG_TRANS_GETRULE);case 3:res=_context4.sent;if(!res.error){setRule(res.data);}_context4.next=10;break;case 7:_context4.prev=7;_context4.t0=_context4["catch"](0);console.log("[query rule]",_context4.t0);case 10:case"end":return _context4.stop();}},_callee4,null,[[0,7]]);}))();},[]);if(!rule){return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{sx:{p:2},spacing:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})})]});}var transOpen=rule.transOpen,translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang,textStyle=rule.textStyle,bgColor=rule.bgColor;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{sx:{p:2},spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(FormControlLabel_FormControlLabel,{control:/*#__PURE__*/(0,jsx_runtime.jsx)(Switch_Switch,{checked:transOpen==="true",onChange:handleTransToggle}),label:i18n("translate_alt")}),!isExt&&/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleClearCache,children:i18n("clear_cache")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:translator,name:"translator",label:i18n("translate_service"),onChange:handleChange,children:OPT_TRANS_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:item},item);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:fromLang,name:"fromLang",label:i18n("from_lang"),onChange:handleChange,children:OPT_LANGS_FROM.map(function(_ref6){var _ref7=(0,slicedToArray/* default */.Z)(_ref6,2),lang=_ref7[0],name=_ref7[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:toLang,name:"toLang",label:i18n("to_lang"),onChange:handleChange,children:OPT_LANGS_TO.map(function(_ref8){var _ref9=(0,slicedToArray/* default */.Z)(_ref8,2),lang=_ref9[0],name=_ref9[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:textStyle,name:"textStyle",label:i18n("text_style_alt"),onChange:handleChange,children:OPT_STYLE_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:i18n(item)},item);})}),OPT_STYLE_USE_COLOR.includes(textStyle)&&/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",name:"bgColor",value:bgColor,label:i18n("bg_color"),onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleSaveRule,children:i18n("save_rule")}),/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})]})]})]});}
+;// CONCATENATED MODULE: ./src/libs/shortcut.js
+/**
+ * 键盘快捷键监听
+ * @param {*} fn
+ * @param {*} target
+ * @param {*} timeout
+ * @returns
+ */var shortcutListener=function shortcutListener(fn){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3000;var allkeys=new Set();var curkeys=new Set();var timer=null;var handleKeydown=function handleKeydown(e){timer&&clearTimeout(timer);timer=setTimeout(function(){allkeys.clear();curkeys.clear();clearTimeout(timer);timer=null;},timeout);if(e.code){allkeys.add(e.key);curkeys.add(e.key);fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));}};var handleKeyup=function handleKeyup(e){curkeys.delete(e.key);if(curkeys.size===0){fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));allkeys.clear();}};target.addEventListener("keydown",handleKeydown);target.addEventListener("keyup",handleKeyup);return function(){if(timer){clearTimeout(timer);timer=null;}target.removeEventListener("keydown",handleKeydown);target.removeEventListener("keyup",handleKeyup);};};/**
+ * 注册键盘快捷键
+ * @param {*} targetKeys
+ * @param {*} fn
+ * @param {*} target
+ * @returns
+ */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};/**
+ * 注册连续快捷键
+ * @param {*} targetKeys
+ * @param {*} fn
+ * @param {*} step
+ * @param {*} timeout
+ * @param {*} target
+ * @returns
+ */var stepShortcutRegister=function stepShortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var step=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3;var timeout=arguments.length>3&&arguments[3]!==undefined?arguments[3]:500;var target=arguments.length>4&&arguments[4]!==undefined?arguments[4]:document;var count=0;var pre=Date.now();var timer;return shortcutListener(function(curkeys,allkeys){timer&&clearTimeout(timer);timer=setTimeout(function(){clearTimeout(timer);count=0;},timeout);if(targetKeys.length>0&&curkeys.length===0){var now=Date.now();if((count===0||now-pre\n \n \n \n \n \n \n \n \n \n\n";
+;// CONCATENATED MODULE: ./src/views/Content/LoadingIcon.js
+function LoadingIcon(){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{style:{display:"inline-block",width:"1.2em",height:"1em"},dangerouslySetInnerHTML:{__html:loadingSvg}});}
+;// CONCATENATED MODULE: ./src/hooks/Translate.js
+/**
+ * 翻译hook
+ * @param {*} q
+ * @param {*} rule
+ * @param {*} setting
+ * @returns
+ */function useTranslate(q,rule,setting){var _useState=(0,react.useState)(""),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),text=_useState2[0],setText=_useState2[1];var _useState3=(0,react.useState)(false),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),loading=_useState4[0],setLoading=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),sameLang=_useState6[0],setSamelang=_useState6[1];var translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang;(0,react.useEffect)(function(){asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setLoading(true);_context.next=4;return tryDetectLang(q);case 4:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=9;break;}setSamelang(true);_context.next=17;break;case 9:_context.next=11;return apiTranslate({translator:translator,text:q,fromLang:fromLang,toLang:toLang,apiSetting:(setting.transApis||DEFAULT_TRANS_APIS)[translator]});case 11:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];setText(trText);setSamelang(isSame);case 17:_context.next=22;break;case 19:_context.prev=19;_context.t0=_context["catch"](0);console.log("[translate]",_context.t0);case 22:_context.prev=22;setLoading(false);return _context.finish(22);case 25:case"end":return _context.stop();}},_callee,null,[[0,19,22,25]]);}))();},[q,translator,fromLang,toLang,setting]);return{text:text,sameLang:sameLang,loading:loading};}
+;// CONCATENATED MODULE: ./src/views/Content/index.js
+var Content_templateObject,Content_templateObject2,Content_templateObject3,Content_templateObject4;var LineSpan=(0,styled/* default */.ZP)("span")(Content_templateObject||(Content_templateObject=_taggedTemplateLiteral(["\n opacity: 0.6;\n -webkit-opacity: 0.6;\n text-decoration-line: underline;\n text-decoration-style: ",";\n text-decoration-color: ",";\n text-decoration-thickness: 2px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ",";\n -webkit-text-decoration-color: ",";\n -webkit-text-decoration-thickness: 2px;\n -webkit-text-underline-offset: 0.3em;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n"])),function(props){return props.$lineStyle;},function(props){return props.$lineColor;},function(props){return props.$lineStyle;},function(props){return props.$lineColor;});var FuzzySpan=(0,styled/* default */.ZP)("span")(Content_templateObject2||(Content_templateObject2=_taggedTemplateLiteral(["\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n"])));var HighlightSpan=(0,styled/* default */.ZP)("span")(Content_templateObject3||(Content_templateObject3=_taggedTemplateLiteral(["\n color: #fff;\n background-color: ",";\n"])),function(props){return props.$bgColor;});var DiySpan=(0,styled/* default */.ZP)("span")(Content_templateObject4||(Content_templateObject4=_taggedTemplateLiteral(["\n ","\n"])),function(props){return props.$diyStyle;});function StyledSpan(_ref){var textStyle=_ref.textStyle,textDiyStyle=_ref.textDiyStyle,bgColor=_ref.bgColor,children=_ref.children;switch(textStyle){case OPT_STYLE_LINE:// 下划线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"solid",$lineColor:bgColor,children:children});case OPT_STYLE_DOTLINE:// 点状线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dotted",$lineColor:bgColor,children:children});case OPT_STYLE_DASHLINE:// 虚线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dashed",$lineColor:bgColor,children:children});case OPT_STYLE_WAVYLINE:// 波浪线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"wavy",$lineColor:bgColor,children:children});case OPT_STYLE_FUZZY:// 模糊
+return/*#__PURE__*/(0,jsx_runtime.jsx)(FuzzySpan,{children:children});case OPT_STYLE_HIGHLIGHT:// 高亮
+return/*#__PURE__*/(0,jsx_runtime.jsx)(HighlightSpan,{$bgColor:bgColor||DEFAULT_COLOR,children:children});case OPT_STYLE_DIY:// 自定义
+return/*#__PURE__*/(0,jsx_runtime.jsx)(DiySpan,{$diyStyle:textDiyStyle,children:children});default:return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:children});}}function Content(_ref2){var q=_ref2.q,translator=_ref2.translator;var _useState=(0,react.useState)(translator.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var _useTranslate=useTranslate(q,rule,translator.setting),text=_useTranslate.text,sameLang=_useTranslate.sameLang,loading=_useTranslate.loading;var textStyle=rule.textStyle,_rule$bgColor=rule.bgColor,bgColor=_rule$bgColor===void 0?"":_rule$bgColor,_rule$textDiyStyle=rule.textDiyStyle,textDiyStyle=_rule$textDiyStyle===void 0?"":_rule$textDiyStyle;var _translator$setting$n=translator.setting.newlineLength,newlineLength=_translator$setting$n===void 0?TRANS_NEWLINE_LENGTH:_translator$setting$n;var handleKissEvent=function handleKissEvent(e){var _e$detail=e.detail,action=_e$detail.action,args=_e$detail.args;switch(action){case MSG_TRANS_CURRULE:setRule(args);break;default:}};(0,react.useEffect)(function(){window.addEventListener(translator.eventName,handleKissEvent);return function(){window.removeEventListener(translator.eventName,handleKissEvent);};},[translator.eventName]);if(loading){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(LoadingIcon,{})]});}if(text&&!sameLang){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(StyledSpan,{textStyle:textStyle,textDiyStyle:textDiyStyle,bgColor:bgColor,children:text})]});}}
+;// CONCATENATED MODULE: ./src/libs/translator.js
+function isInputNode(node){return node.nodeName==="INPUT"||node.nodeName==="TEXTAREA";}function isEditAbleNode(node){return node.hasAttribute("contenteditable");}function selectContent(node){node.focus();var range=document.createRange();range.selectNodeContents(node);var selection=window.getSelection();selection.removeAllRanges();selection.addRange(range);}function pasteContentEvent(node,text){node.focus();var data=new DataTransfer();data.setData("text/plain",text);var event=new ClipboardEvent("paste",{clipboardData:data});document.dispatchEvent(event);data.clearData();}function pasteContentCommand(node,text){node.focus();document.execCommand("insertText",false,text);}function collapseToEnd(node){node.focus();var selection=window.getSelection();selection.collapseToEnd();}function getNodeText(node){if(isInputNode(node)){return node.value;}return node.innerText||node.textContent||"";}function addLoading(node,loadingId){var _node$offsetParent;var div=document.createElement("div");div.id=loadingId;div.innerHTML=loadingSvg;div.style.cssText="\n width: ".concat(node.offsetWidth,"px;\n height: ").concat(node.offsetHeight,"px;\n line-height: ").concat(node.offsetHeight,"px;\n position: absolute;\n text-align: center;\n left: ").concat(node.offsetLeft,"px;\n top: ").concat(node.offsetTop,"px;\n z-index: 2147483647;\n ");(_node$offsetParent=node.offsetParent)===null||_node$offsetParent===void 0?void 0:_node$offsetParent.appendChild(div);}function removeLoading(loadingId){var div=document.getElementById(loadingId);if(div){div.remove();}}/**
+ * 翻译类
+ */var Translator=/*#__PURE__*/function(){function Translator(rule,setting){var _this2=this;_classCallCheck(this,Translator);this._rule={};this._inputRule={};this._setting={};this._rootNodes=new Set();this._tranNodes=new Map();this._skipNodeNames=[APP_LCNAME,"style","svg","img","audio","video","textarea","input","button","select","option","head","script","iframe"];this._eventName=utils_genEventName();// 显示
+this._interseObserver=new IntersectionObserver(function(intersections){intersections.forEach(function(intersection){if(intersection.isIntersecting){_this2._render(intersection.target);_this2._interseObserver.unobserve(intersection.target);}});},{threshold:0.1});// 变化
+this._mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(!_this2._skipNodeNames.includes(mutation.target.localName)&&mutation.addedNodes.length>0){var nodes=Array.from(mutation.addedNodes).filter(function(node){if(_this2._skipNodeNames.includes(node.localName)||node.id===APP_LCNAME){return false;}return true;});if(nodes.length>0){// const rootNode = mutation.target.getRootNode();
+// todo
+_this2._reTranslate();}}});});// 插入 shadowroot
+this._overrideAttachShadow=function(){var _this=_this2;var _attachShadow=HTMLElement.prototype.attachShadow;HTMLElement.prototype.attachShadow=function(){_this._reTranslate();return _attachShadow.apply(this,arguments);};};this.updateRule=function(obj){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),obj);};this.toggle=function(){if(_this2.rule.transOpen==="true"){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"false"});_this2._unRegister();}else{_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"true"});_this2._register();}};this.toggleStyle=function(){var textStyle=_this2.rule.textStyle===OPT_STYLE_FUZZY?OPT_STYLE_DASHLINE:OPT_STYLE_FUZZY;_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{textStyle:textStyle});};this._querySelectorAll=function(selector,node){try{return Array.from(node.querySelectorAll(selector));}catch(err){console.log("[querySelectorAll err]: ".concat(selector));}return[];};this._queryFilter=function(selector,rootNode){return _this2._querySelectorAll(selector,rootNode).filter(function(node){return _this2._queryFilter(selector,node).length===0;});};this._queryNodes=function(){var rootNode=arguments.length>0&&arguments[0]!==undefined?arguments[0]:document;// const childRoots = Array.from(rootNode.querySelectorAll("*"))
+// .map((item) => item.shadowRoot)
+// .filter(Boolean);
+// const childNodes = childRoots.map((item) => this._queryNodes(item));
+// const nodes = Array.from(rootNode.querySelectorAll(this.rule.selector));
+// return nodes.concat(childNodes).flat();
+_this2._rootNodes.add(rootNode);_this2._rule.selector.split(";").map(function(item){return item.trim();}).filter(Boolean).forEach(function(selector){if(selector.includes(SHADOW_KEY)){var _selector$split$map=selector.split(SHADOW_KEY).map(function(item){return item.trim();}),_selector$split$map2=(0,slicedToArray/* default */.Z)(_selector$split$map,2),outSelector=_selector$split$map2[0],inSelector=_selector$split$map2[1];if(outSelector&&inSelector){var outNodes=_this2._querySelectorAll(outSelector,rootNode);outNodes.forEach(function(outNode){if(outNode.shadowRoot){_this2._rootNodes.add(outNode.shadowRoot);_this2._queryFilter(inSelector,outNode.shadowRoot).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});}}else{_this2._queryFilter(selector,rootNode).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});};this._register=function(){if(_this2._rule.fromLang===_this2._rule.toLang){return;}// 搜索节点
+_this2._queryNodes();_this2._rootNodes.forEach(function(node){// 监听节点变化;
+_this2._mutaObserver.observe(node,{childList:true,subtree:true// characterData: true,
+});});_this2._tranNodes.forEach(function(_,node){if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 监听节点显示
+_this2._interseObserver.observe(node);}else{// 监听鼠标悬停
+node.addEventListener("mouseover",_this2._handleMouseover);}});};this._registerInput=function(){var _this2$_inputRule=_this2._inputRule,initTriggerShortcut=_this2$_inputRule.triggerShortcut,translator=_this2$_inputRule.translator,fromLang=_this2$_inputRule.fromLang,initToLang=_this2$_inputRule.toLang,initTriggerCount=_this2$_inputRule.triggerCount,triggerTime=_this2$_inputRule.triggerTime,transSign=_this2$_inputRule.transSign;var apiSetting=(_this2._setting.transApis||DEFAULT_TRANS_APIS)[translator];var triggerShortcut=initTriggerShortcut;var triggerCount=initTriggerCount;if(triggerShortcut.length===0){triggerShortcut=DEFAULT_INPUT_SHORTCUT;triggerCount=1;}stepShortcutRegister(triggerShortcut,/*#__PURE__*/asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var node,initText,text,toLang,res,lang,loadingId,deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:node=document.activeElement;if(!(!node||!(isInputNode(node)||isEditAbleNode(node)))){_context.next=3;break;}return _context.abrupt("return");case 3:initText=getNodeText(node);if(triggerShortcut.length===1&&triggerShortcut[0].length===1){// todo: remove multiple char
+initText=removeEndchar(initText,triggerShortcut[0],triggerCount);}if(initText.trim()){_context.next=7;break;}return _context.abrupt("return");case 7:text=initText;toLang=initToLang;if(transSign){res=matchInputStr(text,transSign);if(res){lang=res[1];if(lang==="zh"||lang==="cn"){lang="zh-CN";}else if(lang==="tw"||lang==="hk"){lang="zh-TW";}if(lang&&OPT_LANGS_LIST.includes(lang)){toLang=lang;}text=res[2];}}// console.log("input -->", text);
+loadingId="kiss-"+utils_genEventName();_context.prev=11;addLoading(node,loadingId);_context.next=15;return tryDetectLang(text);case 15:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=18;break;}return _context.abrupt("return");case 18:_context.next=20;return apiTranslate({translator:translator,text:text,fromLang:fromLang,toLang:toLang,apiSetting:apiSetting});case 20:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];if(!(!trText||isSame)){_context.next=26;break;}return _context.abrupt("return");case 26:if(!isInputNode(node)){_context.next=30;break;}node.value=trText;node.dispatchEvent(new Event("input",{bubbles:true,cancelable:true}));return _context.abrupt("return");case 30:selectContent(node);_context.next=33;return sleep(200);case 33:pasteContentEvent(node,trText);_context.next=36;return sleep(200);case 36:if(!getNodeText(node).startsWith(initText)){_context.next=42;break;}pasteContentCommand(node,trText);_context.next=40;return sleep(100);case 40:_context.next=43;break;case 42:collapseToEnd(node);case 43:_context.next=48;break;case 45:_context.prev=45;_context.t0=_context["catch"](11);console.log("[translate input]",_context.t0.message);case 48:_context.prev=48;removeLoading(loadingId);return _context.finish(48);case 51:case"end":return _context.stop();}},_callee,null,[[11,45,48,51]]);})),triggerCount,triggerTime);};this._handleMouseover=function(e){var key=_this2._setting.mouseKey.slice(3);if(_this2._setting.mouseKey===OPT_MOUSEKEY_MOUSEOVER||e[key]){e.target.removeEventListener("mouseover",_this2._handleMouseover);_this2._render(e.target);}};this._unRegister=function(){// 解除节点变化监听
+_this2._mutaObserver.disconnect();// 解除节点显示监听
+// this._interseObserver.disconnect();
+_this2._tranNodes.forEach(function(_,node){var _node$querySelector;if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 解除节点显示监听
+_this2._interseObserver.unobserve(node);}else{// 移除鼠标悬停监听
+node.removeEventListener("mouseover",_this2._handleMouseover);}// 移除已插入元素
+(_node$querySelector=node.querySelector(APP_LCNAME))===null||_node$querySelector===void 0?void 0:_node$querySelector.remove();});// 清空节点集合
+_this2._rootNodes.clear();_this2._tranNodes.clear();// 清空任务池
+clearFetchPool();};this._reTranslate=debounce(function(){if(_this2._rule.transOpen==="true"){_this2._register();}},500);this._render=function(el){var _this2$_setting$minLe,_this2$_setting$maxLe;var traEl=el.querySelector(APP_LCNAME);// 已翻译
+if(traEl){var preText=_this2._tranNodes.get(el);var curText=el.innerText.trim();// const traText = traEl.innerText.trim();
+// todo
+// 1. traText when loading
+// 2. replace startsWith
+if(curText.startsWith(preText)){return;}traEl.remove();}var q=el.innerText.trim();_this2._tranNodes.set(el,q);// 太长或太短
+if(!q||q.length<((_this2$_setting$minLe=_this2._setting.minLength)!==null&&_this2$_setting$minLe!==void 0?_this2$_setting$minLe:TRANS_MIN_LENGTH)||q.length>((_this2$_setting$maxLe=_this2._setting.maxLength)!==null&&_this2$_setting$maxLe!==void 0?_this2$_setting$maxLe:TRANS_MAX_LENGTH)){return;}// console.log("---> ", q);
+traEl=document.createElement(APP_LCNAME);traEl.style.visibility="visible";el.appendChild(traEl);el.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";if(el.parentElement){el.parentElement.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";}var root=(0,client.createRoot)(traEl);root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{q:q,translator:_this2}));};var fetchInterval=setting.fetchInterval,fetchLimit=setting.fetchLimit;updateFetchPool(fetchInterval,fetchLimit);this._overrideAttachShadow();this._setting=setting;this._rule=rule;if(rule.transOpen==="true"){this._register();}this._inputRule=setting.inputRule||DEFAULT_INPUT_RULE;if(this._inputRule.transOpen){this._registerInput();}}_createClass(Translator,[{key:"setting",get:function get(){return this._setting;}},{key:"eventName",get:function get(){return this._eventName;}},{key:"rule",get:function get(){// console.log("get rule", this._rule);
+return this._rule;},set:function set(rule){// console.log("set rule", rule);
+this._rule=rule;// 广播消息
+var eventName=this._eventName;window.dispatchEvent(new CustomEvent(eventName,{detail:{action:MSG_TRANS_CURRULE,args:rule}}));}}]);return Translator;}();
+;// CONCATENATED MODULE: ./src/libs/gm.js
+var gm_ref;var MSG_GM_xmlHttpRequest="xmlHttpRequest";var MSG_GM_setValue="setValue";var MSG_GM_getValue="getValue";var MSG_GM_deleteValue="deleteValue";var MSG_GM_info="info";/**
+ * 注入页面的脚本,请求并接受GM接口信息
+ * @param {*} param0
+ */var injectScript=function injectScript(ping){window.APP_INFO={name:"KISS Translator",version:"1.7.1",eventName:ping};};/**
+ * 适配GM脚本
+ */var adaptScript=function adaptScript(ping){var _getInfo;var promiseGM=function promiseGM(action,args){var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:5000;return new Promise(function(resolve,reject){var pong=genEventName();var handleEvent=function handleEvent(e){window.removeEventListener(pong,handleEvent);var _e$detail=e.detail,data=_e$detail.data,error=_e$detail.error;if(error){reject(new Error(error));}else{resolve(data);}};window.addEventListener(pong,handleEvent);window.dispatchEvent(new CustomEvent(ping,{detail:{action:action,args:args,pong:pong}}));setTimeout(function(){window.removeEventListener(pong,handleEvent);reject(new Error("timeout"));},timeout);});};window.KISS_GM={fetch:function fetch(input,init){return promiseGM(MSG_GM_xmlHttpRequest,{input:input,init:init});},setValue:function setValue(key,val){return promiseGM(MSG_GM_setValue,{key:key,val:val});},getValue:function getValue(key){return promiseGM(MSG_GM_getValue,{key:key});},deleteValue:function deleteValue(key){return promiseGM(MSG_GM_deleteValue,{key:key});},getInfo:function getInfo(){return(_getInfo=_getInfo||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(window.GM_info){_context.next=4;break;}_context.next=3;return promiseGM(MSG_GM_info);case 3:window.GM_info=_context.sent;case 4:return _context.abrupt("return",window.GM_info);case 5:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);}};};/**
+ * 监听并回应页面对GM接口的请求
+ * @param {*} param0
+ */var handlePing=function handlePing(_x){return(gm_ref=gm_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$detail2,action,args,pong,res,input,init,key,val;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_e$detail2=e.detail,action=_e$detail2.action,args=_e$detail2.args,pong=_e$detail2.pong;_context2.prev=1;_context2.t0=action;_context2.next=_context2.t0===MSG_GM_xmlHttpRequest?5:_context2.t0===MSG_GM_setValue?10:_context2.t0===MSG_GM_getValue?15:_context2.t0===MSG_GM_deleteValue?19:_context2.t0===MSG_GM_info?23:25;break;case 5:input=args.input,init=args.init;_context2.next=8;return fetchGM(input,init);case 8:res=_context2.sent;return _context2.abrupt("break",26);case 10:key=args.key,val=args.val;_context2.next=13;return GM.setValue(key,val);case 13:res=val;return _context2.abrupt("break",26);case 15:_context2.next=17;return GM.getValue(args.key);case 17:res=_context2.sent;return _context2.abrupt("break",26);case 19:_context2.next=21;return GM.deleteValue(args.key);case 21:res="ok";return _context2.abrupt("break",26);case 23:res=GM.info;return _context2.abrupt("break",26);case 25:throw new Error("message action is unavailable: ".concat(action));case 26:window.dispatchEvent(new CustomEvent(pong,{detail:{data:res}}));_context2.next=32;break;case 29:_context2.prev=29;_context2.t1=_context2["catch"](1);window.dispatchEvent(new CustomEvent(pong,{detail:{error:_context2.t1.message}}));case 32:case"end":return _context2.stop();}},_callee2,null,[[1,29]]);}))).apply(this,arguments);};
;// CONCATENATED MODULE: ./src/userscript.js
var userscript_ref;/**
* 入口函数
- */var init=function init(){return(userscript_ref=userscript_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var _GM,_GM$info,_GM$info$script,_GM$info$script$grant,ping,script,href,setting,rules,rule,translator,fab,$action,shadowContainer,emotionRoot,shadowRootElement,cache;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(document.location.href.includes("http://localhost:3000/options.html")||document.location.href.includes("https://fishjar.github.io/kiss-translator/options.html")||document.location.href.includes("https://kiss-translator.rayjar.com/options"))){_context.next=3;break;}if((_GM=GM)!==null&&_GM!==void 0&&(_GM$info=_GM.info)!==null&&_GM$info!==void 0&&(_GM$info$script=_GM$info.script)!==null&&_GM$info$script!==void 0&&(_GM$info$script$grant=_GM$info$script.grant)!==null&&_GM$info$script$grant!==void 0&&_GM$info$script$grant.includes("unsafeWindow")){unsafeWindow.GM=GM;unsafeWindow.APP_INFO={name:"KISS Translator",version:"1.7.0"};}else{ping=utils_genEventName();window.addEventListener(ping,handlePing);// window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line
+ */var init=function init(){return(userscript_ref=userscript_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var _GM,_GM$info,_GM$info$script,_GM$info$script$grant,ping,script,href,setting,rules,rule,translator,fab,$action,shadowContainer,emotionRoot,shadowRootElement,cache;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(document.location.href.includes("http://localhost:3000/options.html")||document.location.href.includes("https://fishjar.github.io/kiss-translator/options.html")||document.location.href.includes("https://kiss-translator.rayjar.com/options"))){_context.next=3;break;}if((_GM=GM)!==null&&_GM!==void 0&&(_GM$info=_GM.info)!==null&&_GM$info!==void 0&&(_GM$info$script=_GM$info.script)!==null&&_GM$info$script!==void 0&&(_GM$info$script$grant=_GM$info$script.grant)!==null&&_GM$info$script$grant!==void 0&&_GM$info$script$grant.includes("unsafeWindow")){unsafeWindow.GM=GM;unsafeWindow.APP_INFO={name:"KISS Translator",version:"1.7.1"};}else{ping=utils_genEventName();window.addEventListener(ping,handlePing);// window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line
script=document.createElement("script");script.textContent="(".concat(injectScript,")(\"").concat(ping,"\")");document.head.append(script);}return _context.abrupt("return");case 3:// 翻译页面
href=isIframe?document.referrer:document.location.href;_context.next=6;return getSettingWithDefault();case 6:setting=_context.sent;_context.next=9;return getRulesWithDefault();case 9:rules=_context.sent;_context.next=12;return matchRule(rules,href,setting);case 12:rule=_context.sent;translator=new Translator(rule,setting);webfix(href,setting);if(!isIframe){_context.next=18;break;}// iframe
window.addEventListener("message",function(e){var _e$data;var action=e===null||e===void 0?void 0:(_e$data=e.data)===null||_e$data===void 0?void 0:_e$data.action;switch(action){case MSG_TRANS_TOGGLE:translator.toggle();break;case MSG_TRANS_PUTRULE:translator.updateRule(e.data.args||{});break;default:}});return _context.abrupt("return");case 18:_context.next=20;return getFabWithDefault();case 20:fab=_context.sent;$action=document.createElement("div");$action.setAttribute("id","kiss-translator");document.body.parentElement.appendChild($action);shadowContainer=$action.attachShadow({mode:"closed"});emotionRoot=document.createElement("style");shadowRootElement=document.createElement("div");shadowContainer.appendChild(emotionRoot);shadowContainer.appendChild(shadowRootElement);cache=(0,emotion_cache_browser_esm/* default */.Z)({key:"css",prepend:true,container:emotionRoot});client.createRoot(shadowRootElement).render(/*#__PURE__*/(0,jsx_runtime.jsx)(react.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(emotion_element_c39617d8_browser_esm.C,{value:cache,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Action,{translator:translator,fab:fab})})}));// 同步订阅规则
diff --git a/kiss-translator.user.js b/kiss-translator.user.js
index fcddb71..0f2de92 100644
--- a/kiss-translator.user.js
+++ b/kiss-translator.user.js
@@ -1,7 +1,7 @@
// ==UserScript==
// @name KISS Translator
// @namespace https://github.com/fishjar/kiss-translator
-// @version 1.7.0
+// @version 1.7.1
// @description A minimalist bilingual translation Extension & Greasemonkey Script (一个简约的双语网页翻译扩展 & 油猴脚本)
// @author Gabe
// @homepageURL https://github.com/fishjar/kiss-translator
@@ -3087,7 +3087,7 @@ function useControlled(_ref) {
/* harmony export */ });
/* harmony import */ var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3320);
/**
- * @mui/styled-engine v5.14.8
+ * @mui/styled-engine v5.14.9
*
* @license MIT
* This source code is licensed under the MIT license found in the
@@ -17550,125 +17550,10 @@ var esm_extends = __webpack_require__(7462);
var clsx = __webpack_require__(4146);
// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/composeClasses/composeClasses.js
var composeClasses = __webpack_require__(1921);
-// EXTERNAL MODULE: ./node_modules/@mui/system/esm/colorManipulator.js
-var colorManipulator = __webpack_require__(7551);
// EXTERNAL MODULE: ./node_modules/@mui/material/styles/styled.js
var styled = __webpack_require__(7592);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/styles/getOverlayAlpha.js
-// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61
-var getOverlayAlpha = function getOverlayAlpha(elevation) {
- var alphaValue;
- if (elevation < 1) {
- alphaValue = 5.11916 * Math.pow(elevation, 2);
- } else {
- alphaValue = 4.5 * Math.log(elevation + 1) + 2;
- }
- return (alphaValue / 100).toFixed(2);
-};
-/* harmony default export */ var styles_getOverlayAlpha = (getOverlayAlpha);
// EXTERNAL MODULE: ./node_modules/@mui/material/styles/useThemeProps.js
var styles_useThemeProps = __webpack_require__(7342);
-// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js
-var generateUtilityClasses = __webpack_require__(7430);
-// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js
-var generateUtilityClass_generateUtilityClass = __webpack_require__(2298);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/paperClasses.js
-
-
-function getPaperUtilityClass(slot) {
- return (0,generateUtilityClass_generateUtilityClass/* default */.Z)('MuiPaper', slot);
-}
-var paperClasses = (0,generateUtilityClasses/* default */.Z)('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);
-/* harmony default export */ var Paper_paperClasses = ((/* unused pure expression or super */ null && (paperClasses)));
-// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
-var jsx_runtime = __webpack_require__(6417);
-;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/Paper.js
-'use client';
-
-
-
-var _excluded = ["className", "component", "elevation", "square", "variant"];
-
-
-
-
-
-
-
-
-
-
-
-
-var useUtilityClasses = function useUtilityClasses(ownerState) {
- var square = ownerState.square,
- elevation = ownerState.elevation,
- variant = ownerState.variant,
- classes = ownerState.classes;
- var slots = {
- root: ['root', variant, !square && 'rounded', variant === 'elevation' && "elevation".concat(elevation)]
- };
- return (0,composeClasses/* default */.Z)(slots, getPaperUtilityClass, classes);
-};
-var PaperRoot = (0,styled/* default */.ZP)('div', {
- name: 'MuiPaper',
- slot: 'Root',
- overridesResolver: function overridesResolver(props, styles) {
- var ownerState = props.ownerState;
- return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles["elevation".concat(ownerState.elevation)]];
- }
-})(function (_ref) {
- var theme = _ref.theme,
- ownerState = _ref.ownerState;
- var _theme$vars$overlays;
- return (0,esm_extends/* default */.Z)({
- backgroundColor: (theme.vars || theme).palette.background.paper,
- color: (theme.vars || theme).palette.text.primary,
- transition: theme.transitions.create('box-shadow')
- }, !ownerState.square && {
- borderRadius: theme.shape.borderRadius
- }, ownerState.variant === 'outlined' && {
- border: "1px solid ".concat((theme.vars || theme).palette.divider)
- }, ownerState.variant === 'elevation' && (0,esm_extends/* default */.Z)({
- boxShadow: (theme.vars || theme).shadows[ownerState.elevation]
- }, !theme.vars && theme.palette.mode === 'dark' && {
- backgroundImage: "linear-gradient(".concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ", ").concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ")")
- }, theme.vars && {
- backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]
- }));
-});
-var Paper = /*#__PURE__*/react.forwardRef(function Paper(inProps, ref) {
- var props = (0,styles_useThemeProps/* default */.Z)({
- props: inProps,
- name: 'MuiPaper'
- });
- var className = props.className,
- _props$component = props.component,
- component = _props$component === void 0 ? 'div' : _props$component,
- _props$elevation = props.elevation,
- elevation = _props$elevation === void 0 ? 1 : _props$elevation,
- _props$square = props.square,
- square = _props$square === void 0 ? false : _props$square,
- _props$variant = props.variant,
- variant = _props$variant === void 0 ? 'elevation' : _props$variant,
- other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, _excluded);
- var ownerState = (0,esm_extends/* default */.Z)({}, props, {
- component: component,
- elevation: elevation,
- square: square,
- variant: variant
- });
- var classes = useUtilityClasses(ownerState);
- if (false) { var theme; }
- return /*#__PURE__*/(0,jsx_runtime.jsx)(PaperRoot, (0,esm_extends/* default */.Z)({
- as: component,
- ownerState: ownerState,
- className: (0,clsx/* default */.Z)(classes.root, className),
- ref: ref
- }, other));
-});
- false ? 0 : void 0;
-/* harmony default export */ var Paper_Paper = (Paper);
// EXTERNAL MODULE: ./node_modules/@mui/material/utils/useForkRef.js
var useForkRef = __webpack_require__(6983);
// EXTERNAL MODULE: ./node_modules/@mui/material/utils/useEventCallback.js
@@ -18308,6 +18193,8 @@ var ClassNames = /* #__PURE__ */(/* unused pure expression or super */ null && (
if (false) {}
if (false) { var globalKey, globalContext, isTestEnv, isBrowser; }
+// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
+var jsx_runtime = __webpack_require__(6417);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/Ripple.js
'use client';
@@ -18366,6 +18253,8 @@ function Ripple(props) {
}
false ? 0 : void 0;
/* harmony default export */ var ButtonBase_Ripple = (Ripple);
+// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js
+var generateUtilityClasses = __webpack_require__(7430);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/touchRippleClasses.js
@@ -18383,7 +18272,7 @@ var touchRippleClasses = (0,generateUtilityClasses/* default */.Z)('MuiTouchRipp
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
-var TouchRipple_excluded = ["center", "classes", "className"];
+var _excluded = ["center", "classes", "className"];
var _ = function _(t) {
return t;
},
@@ -18455,7 +18344,7 @@ var TouchRipple = /*#__PURE__*/react.forwardRef(function TouchRipple(inProps, re
_props$classes = props.classes,
classes = _props$classes === void 0 ? {} : _props$classes,
className = props.className,
- other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, TouchRipple_excluded);
+ other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, _excluded);
var _React$useState = react.useState([]),
_React$useState2 = (0,slicedToArray/* default */.Z)(_React$useState, 2),
ripples = _React$useState2[0],
@@ -18644,6 +18533,8 @@ var TouchRipple = /*#__PURE__*/react.forwardRef(function TouchRipple(inProps, re
});
false ? 0 : void 0;
/* harmony default export */ var ButtonBase_TouchRipple = (TouchRipple);
+// EXTERNAL MODULE: ./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js
+var generateUtilityClass_generateUtilityClass = __webpack_require__(2298);
;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js
@@ -18675,7 +18566,7 @@ var ButtonBase_excluded = ["action", "centerRipple", "children", "className", "c
-var ButtonBase_useUtilityClasses = function useUtilityClasses(ownerState) {
+var useUtilityClasses = function useUtilityClasses(ownerState) {
var disabled = ownerState.disabled,
focusVisible = ownerState.focusVisible,
focusVisibleClassName = ownerState.focusVisibleClassName,
@@ -18947,7 +18838,7 @@ var ButtonBase = /*#__PURE__*/react.forwardRef(function ButtonBase(inProps, ref)
tabIndex: tabIndex,
focusVisible: focusVisible
});
- var classes = ButtonBase_useUtilityClasses(ownerState);
+ var classes = useUtilityClasses(ownerState);
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonBaseRoot, (0,esm_extends/* default */.Z)({
as: ComponentProp,
className: (0,clsx/* default */.Z)(classes.root, className),
@@ -19472,9 +19363,9 @@ var els="li, p, h1, h2, h3, h4, h5, h6, dd, blockquote";var DEFAULT_SELECTOR=":i
;// CONCATENATED MODULE: ./src/config/app.js
var APP_NAME="KISS Translator".trim().split(/\s+/).join("-");var APP_LCNAME=APP_NAME.toLowerCase();
;// CONCATENATED MODULE: ./src/config/i18n.js
-var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"}};
+var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"},input_setting:{zh:"\u8F93\u5165\u6846\u8BBE\u7F6E",en:"Input Box Setting"},input_box_translation:{zh:"\u542F\u7528\u8F93\u5165\u6846\u7FFB\u8BD1",en:"Input Box Translation"},input_selector:{zh:"\u8F93\u5165\u6846\u9009\u62E9\u5668",en:"Input Selector"},input_selector_helper:{zh:"\u7528\u4E8E\u8F93\u5165\u6846\u7FFB\u8BD1\u3002",en:"Used for input box translation."},trigger_trans_shortcut:{zh:"\u89E6\u53D1\u7FFB\u8BD1\u5FEB\u6377\u952E",en:"Trigger Translation Shortcut Keys"},trigger_trans_shortcut_help:{zh:"\u9ED8\u8BA4\u4E3A\u5355\u51FB\u201CAlt+i\u201D",en:"Default is \"Alt+i\""},shortcut_press_count:{zh:"\u5FEB\u6377\u952E\u8FDE\u51FB\u6B21\u6570",en:"Shortcut Press Number"},combo_timeout:{zh:"\u8FDE\u51FB\u8D85\u65F6\u65F6\u95F4 (10-1000ms)",en:"Combo Timeout (10-1000ms)"},input_trans_start_sign:{zh:"\u7FFB\u8BD1\u8D77\u59CB\u6807\u8BC6",en:"Translation Start Sign"},input_trans_start_sign_help:{zh:"\u6807\u8BC6\u540E\u9762\u53EF\u4EE5\u52A0\u76EE\u6807\u8BED\u8A00\u4EE3\u7801\uFF0C\u5982\uFF1A \u201C/en \u4F60\u597D\u201D\u3001\u201C/zh hello\u201D",en:"The target language code can be added after the sign, such as: \"/en \u4F60\u597D\", \"/zh hello\""}};
;// CONCATENATED MODULE: ./src/config/index.js
-var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var config_KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var config_KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var config_URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_STYLE_NONE="style_none";// 无
+var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var config_KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var config_KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var config_URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_LANGS_LIST=OPT_LANGS_TO.map(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,1),lang=_ref6[0];return lang;});var OPT_STYLE_NONE="style_none";// 无
var OPT_STYLE_LINE="under_line";// 下划线
var OPT_STYLE_DOTLINE="dot_line";// 点状线
var OPT_STYLE_DASHLINE="dash_line";// 虚线
@@ -19488,7 +19379,8 @@ var PROMPT_PLACE_FROM="{{from}}";// 占位符
var PROMPT_PLACE_TO="{{to}}";// 占位符
var DEFAULT_COLOR="#209CEE";// 默认高亮背景色/线条颜色
// 全局规则
-var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 订阅列表
+var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 输入框翻译
+var OPT_INPUT_TRANS_SIGNS=["/","//","\\","\\\\",">",">>"];var DEFAULT_INPUT_SHORTCUT=["Alt","i"];var DEFAULT_INPUT_RULE={transOpen:true,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"en",triggerShortcut:DEFAULT_INPUT_SHORTCUT,triggerCount:1,triggerTime:200,transSign:OPT_INPUT_TRANS_SIGNS[0]};// 订阅列表
var DEFAULT_SUBRULES_LIST=[{url:"https://fishjar.github.io/kiss-rules/kiss-rules.json",selected:false},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on.json",selected:true},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off.json",selected:false}];// 翻译接口
var DEFAULT_TRANS_APIS=(_DEFAULT_TRANS_APIS={},(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_GOOGLE,{url:"https://translate.googleapis.com/translate_a/single",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_MICROSOFT,{url:"https://api-edge.cognitive.microsofttranslator.com/translate",authUrl:"https://edge.microsoft.com/translate/auth"}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_DEEPL,{url:"https://api-free.deepl.com/v2/translate",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_OPENAI,{url:"https://api.openai.com/v1/chat/completion",key:"",model:"gpt-4",prompt:"You will be provided with a sentence in ".concat(PROMPT_PLACE_FROM,", and your task is to translate it into ").concat(PROMPT_PLACE_TO,".")}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_CUSTOMIZE,{url:"",key:""}),_DEFAULT_TRANS_APIS);// 默认快捷键
var OPT_SHORTCUT_TRANSLATE="toggleTranslate";var OPT_SHORTCUT_STYLE="toggleStyle";var OPT_SHORTCUT_POPUP="togglePopup";var OPT_SHORTCUT_SETTING="openSetting";var DEFAULT_SHORTCUTS=(_DEFAULT_SHORTCUTS={},(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_TRANSLATE,["Alt","q"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_STYLE,["Alt","c"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_POPUP,["Alt","k"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_SETTING,["Alt","o"]),_DEFAULT_SHORTCUTS);var TRANS_MIN_LENGTH=5;// 最短翻译长度
@@ -19506,7 +19398,8 @@ owSubrule:DEFAULT_OW_RULE,// 覆写订阅规则
transApis:DEFAULT_TRANS_APIS,// 翻译接口
mouseKey:OPT_MOUSEKEY_DISABLE,// 鼠标悬停翻译
shortcuts:DEFAULT_SHORTCUTS,// 快捷键
-hideFab:false// 是否隐藏按钮
+hideFab:false,// 是否隐藏按钮
+inputRule:DEFAULT_INPUT_RULE// 输入框设置
};var config_DEFAULT_RULES=[GLOBLA_RULE];var config_DEFAULT_SYNC={syncUrl:"",// 数据同步接口
syncKey:"",// 数据同步密钥
settingUpdateAt:0,settingSyncAt:0,rulesUpdateAt:0,rulesSyncAt:0,subRulesSyncAt:0,// 订阅规则同步时间
@@ -19527,7 +19420,7 @@ var _set,_get,_del,_setObj,_trySetObj,_getObj,_putObj,_ref,_ref2,_ref3,_ref4,_re
*/var storage={get:get,set:set,del:del,setObj:setObj,trySetObj:trySetObj,getObj:getObj,putObj:putObj// onChanged,
};/**
* 设置信息
- */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var updateSetting=function updateSetting(obj){return putObj(config_STOKEY_SETTING,obj);};/**
+ */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var updateSetting=function updateSetting(obj){return putObj(STOKEY_SETTING,obj);};/**
* 规则列表
*/var getRules=function getRules(){return getObj(config_STOKEY_RULES);};var getRulesWithDefault=function getRulesWithDefault(){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee9(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:_context9.next=2;return getRules();case 2:_context9.t0=_context9.sent;if(_context9.t0){_context9.next=5;break;}_context9.t0=config_DEFAULT_RULES;case 5:return _context9.abrupt("return",_context9.t0);case 6:case"end":return _context9.stop();}},_callee9);}))).apply(this,arguments);};var setRules=function setRules(val){return setObj(config_STOKEY_RULES,val);};/**
* 订阅规则
@@ -20343,7 +20236,18 @@ var utils_ref;/**
* @param {*} a
* @param {*} b
* @returns
- */var isSameSet=function isSameSet(a,b){var s=new Set([].concat((0,toConsumableArray/* default */.Z)(a),(0,toConsumableArray/* default */.Z)(b)));return s.size===a.size&&s.size===b.size;};
+ */var isSameSet=function isSameSet(a,b){var s=new Set([].concat((0,toConsumableArray/* default */.Z)(a),(0,toConsumableArray/* default */.Z)(b)));return s.size===a.size&&s.size===b.size;};/**
+ * 去掉字符串末尾某个字符
+ * @param {*} s
+ * @param {*} c
+ * @param {*} count
+ * @returns
+ */var removeEndchar=function removeEndchar(s,c){var count=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var i=s.length;while(i>s.length-count&&s[i-1]===c){i--;}return s.slice(0,i);};/**
+ * 匹配字符串及语言标识
+ * @param {*} str
+ * @param {*} sign
+ * @returns
+ */var matchInputStr=function matchInputStr(str,sign){var reg=/\/([\w-]+)\s+([^]+)/;switch(sign){case"//":reg=/\/\/([\w-]+)\s+([^]+)/;break;case"\\":reg=/\\([\w-]+)\s+([^]+)/;break;case"\\\\":reg=/\\\\([\w-]+)\s+([^]+)/;break;case">":reg=/>([\w-]+)\s+([^]+)/;break;case">>":reg=/>>([\w-]+)\s+([^]+)/;break;default:}return str.match(reg);};
;// CONCATENATED MODULE: ./src/apis/index.js
var apis_ref,apis_ref3,apis_ref5,apis_ref7,_ref9,_ref11;/**
* 同步数据
@@ -20424,8 +20328,117 @@ var _updateSetting,_reloadSetting;var SettingContext=/*#__PURE__*/(0,react.creat
*/function Theme(_ref){var children=_ref.children,options=_ref.options;var _useDarkMode=useDarkMode(),darkMode=_useDarkMode.darkMode;var theme=(0,react.useMemo)(function(){return (0,createTheme/* default */.Z)(_objectSpread2({palette:{mode:darkMode?THEME_DARK:THEME_LIGHT}},options));},[darkMode,options]);return/*#__PURE__*/(0,jsx_runtime.jsxs)(styles_ThemeProvider_ThemeProvider,{theme:theme,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(CssBaseline_CssBaseline,{}),children]});}
;// CONCATENATED MODULE: ./src/libs/mobile.js
var isMobile=("ontouchstart"in document.documentElement);
+// EXTERNAL MODULE: ./node_modules/@mui/system/esm/colorManipulator.js
+var colorManipulator = __webpack_require__(7551);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/styles/getOverlayAlpha.js
+// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61
+var getOverlayAlpha = function getOverlayAlpha(elevation) {
+ var alphaValue;
+ if (elevation < 1) {
+ alphaValue = 5.11916 * Math.pow(elevation, 2);
+ } else {
+ alphaValue = 4.5 * Math.log(elevation + 1) + 2;
+ }
+ return (alphaValue / 100).toFixed(2);
+};
+/* harmony default export */ var styles_getOverlayAlpha = (getOverlayAlpha);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/paperClasses.js
+
+
+function getPaperUtilityClass(slot) {
+ return (0,generateUtilityClass_generateUtilityClass/* default */.Z)('MuiPaper', slot);
+}
+var paperClasses = (0,generateUtilityClasses/* default */.Z)('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);
+/* harmony default export */ var Paper_paperClasses = ((/* unused pure expression or super */ null && (paperClasses)));
+;// CONCATENATED MODULE: ./node_modules/@mui/material/Paper/Paper.js
+'use client';
+
+
+
+var Paper_excluded = ["className", "component", "elevation", "square", "variant"];
+
+
+
+
+
+
+
+
+
+
+
+
+var Paper_useUtilityClasses = function useUtilityClasses(ownerState) {
+ var square = ownerState.square,
+ elevation = ownerState.elevation,
+ variant = ownerState.variant,
+ classes = ownerState.classes;
+ var slots = {
+ root: ['root', variant, !square && 'rounded', variant === 'elevation' && "elevation".concat(elevation)]
+ };
+ return (0,composeClasses/* default */.Z)(slots, getPaperUtilityClass, classes);
+};
+var PaperRoot = (0,styled/* default */.ZP)('div', {
+ name: 'MuiPaper',
+ slot: 'Root',
+ overridesResolver: function overridesResolver(props, styles) {
+ var ownerState = props.ownerState;
+ return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles["elevation".concat(ownerState.elevation)]];
+ }
+})(function (_ref) {
+ var theme = _ref.theme,
+ ownerState = _ref.ownerState;
+ var _theme$vars$overlays;
+ return (0,esm_extends/* default */.Z)({
+ backgroundColor: (theme.vars || theme).palette.background.paper,
+ color: (theme.vars || theme).palette.text.primary,
+ transition: theme.transitions.create('box-shadow')
+ }, !ownerState.square && {
+ borderRadius: theme.shape.borderRadius
+ }, ownerState.variant === 'outlined' && {
+ border: "1px solid ".concat((theme.vars || theme).palette.divider)
+ }, ownerState.variant === 'elevation' && (0,esm_extends/* default */.Z)({
+ boxShadow: (theme.vars || theme).shadows[ownerState.elevation]
+ }, !theme.vars && theme.palette.mode === 'dark' && {
+ backgroundImage: "linear-gradient(".concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ", ").concat((0,colorManipulator/* alpha */.Fq)('#fff', styles_getOverlayAlpha(ownerState.elevation)), ")")
+ }, theme.vars && {
+ backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]
+ }));
+});
+var Paper = /*#__PURE__*/react.forwardRef(function Paper(inProps, ref) {
+ var props = (0,styles_useThemeProps/* default */.Z)({
+ props: inProps,
+ name: 'MuiPaper'
+ });
+ var className = props.className,
+ _props$component = props.component,
+ component = _props$component === void 0 ? 'div' : _props$component,
+ _props$elevation = props.elevation,
+ elevation = _props$elevation === void 0 ? 1 : _props$elevation,
+ _props$square = props.square,
+ square = _props$square === void 0 ? false : _props$square,
+ _props$variant = props.variant,
+ variant = _props$variant === void 0 ? 'elevation' : _props$variant,
+ other = (0,objectWithoutPropertiesLoose/* default */.Z)(props, Paper_excluded);
+ var ownerState = (0,esm_extends/* default */.Z)({}, props, {
+ component: component,
+ elevation: elevation,
+ square: square,
+ variant: variant
+ });
+ var classes = Paper_useUtilityClasses(ownerState);
+ if (false) { var theme; }
+ return /*#__PURE__*/(0,jsx_runtime.jsx)(PaperRoot, (0,esm_extends/* default */.Z)({
+ as: component,
+ ownerState: ownerState,
+ className: (0,clsx/* default */.Z)(classes.root, className),
+ ref: ref
+ }, other));
+});
+ false ? 0 : void 0;
+/* harmony default export */ var Paper_Paper = (Paper);
;// CONCATENATED MODULE: ./src/views/Action/Draggable.js
-var getEdgePosition=function getEdgePosition(_ref,windowWidth,windowHeight,width,height){var left=_ref.x,top=_ref.y,edge=_ref.edge;var right=windowWidth-left-width;var bottom=windowHeight-top-height;var min=Math.min(left,top,right,bottom);switch(min){case right:edge="right";left=windowWidth-width;break;case left:edge="left";left=0;break;case bottom:edge="bottom";top=windowHeight-height;break;default:edge="top";top=0;}left=limitNumber(left,0,windowWidth-width);top=limitNumber(top,0,windowHeight-height);return{x:left,y:top,edge:edge,hide:false};};var getHidePosition=function getHidePosition(_ref2,windowWidth,windowHeight,width,height){var left=_ref2.x,top=_ref2.y,edge=_ref2.edge;switch(edge){case"right":left=windowWidth-width/2;break;case"left":left=-width/2;break;case"bottom":top=windowHeight-height/2;break;default:top=-height/2;}return{x:left,y:top,edge:edge,hide:true};};function Draggable(_ref3){var windowSize=_ref3.windowSize,width=_ref3.width,height=_ref3.height,left=_ref3.left,top=_ref3.top,show=_ref3.show,snapEdge=_ref3.snapEdge,onStart=_ref3.onStart,onMove=_ref3.onMove,handler=_ref3.handler,children=_ref3.children;var _useState=(0,react.useState)({x:left,y:top,px:left,py:top}),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),origin=_useState2[0],setOrigin=_useState2[1];var _useState3=(0,react.useState)({x:left,y:top,edge:null,hide:false}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),position=_useState4[0],setPosition=_useState4[1];var _useState5=(0,react.useState)(null),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),edgeTimer=_useState6[0],setEdgeTimer=_useState6[1];var goEdge=(0,react.useCallback)(function(w,h,width,height){setPosition(function(pre){return getEdgePosition(pre,w,h,width,height);});setEdgeTimer(setTimeout(function(){setPosition(function(pre){return getHidePosition(pre,w,h,width,height);});},1500));},[]);var handlePointerDown=function handlePointerDown(e){!isMobile&&e.target.setPointerCapture(e.pointerId);onStart&&onStart();edgeTimer&&clearTimeout(edgeTimer);var _ref4=isMobile?e.targetTouches[0]:e,clientX=_ref4.clientX,clientY=_ref4.clientY;setOrigin({x:position.x,y:position.y,px:clientX,py:clientY});};var handlePointerMove=function handlePointerMove(e){onMove&&onMove();var _ref5=isMobile?e.targetTouches[0]:e,clientX=_ref5.clientX,clientY=_ref5.clientY;if(origin){var dx=clientX-origin.px;var dy=clientY-origin.py;var x=origin.x+dx;var y=origin.y+dy;var w=windowSize.w,h=windowSize.h;x=limitNumber(x,0,w-width);y=limitNumber(y,0,h-height);setPosition({x:x,y:y,edge:null,hide:false});}};var handlePointerUp=function handlePointerUp(e){e.stopPropagation();setOrigin(null);if(!snapEdge){return;}goEdge(windowSize.w,windowSize.h,width,height);};var handleClick=function handleClick(e){e.stopPropagation();};var handleMouseEnter=function handleMouseEnter(e){e.stopPropagation();if(snapEdge&&position.hide){edgeTimer&&clearTimeout(edgeTimer);goEdge(windowSize.w,windowSize.h,width,height);}};(0,react.useEffect)(function(){setOrigin(null);if(!snapEdge){return;}goEdge(windowSize.w,windowSize.h,width,height);},[snapEdge,goEdge,windowSize.w,windowSize.h,width,height]);(0,react.useEffect)(function(){if(position.hide){setFab({x:position.x,y:position.y});}},[position.x,position.y,position.hide]);var opacity=(0,react.useMemo)(function(){if(snapEdge){return position.hide?0.2:1;}return origin?0.8:1;},[origin,snapEdge,position.hide]);var touchProps=isMobile?{onTouchStart:handlePointerDown,onTouchMove:handlePointerMove,onTouchEnd:handlePointerUp}:{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp};return/*#__PURE__*/(0,jsx_runtime.jsxs)("div",{style:{opacity:opacity,position:"fixed",left:position.x,top:position.y,zIndex:2147483647,display:show?"block":"none"},onMouseEnter:handleMouseEnter,onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({style:{touchAction:"none"}},touchProps),{},{children:handler})),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:children})]});}
+var Draggable_excluded=["children","usePaper"];var getEdgePosition=function getEdgePosition(_ref){var left=_ref.x,top=_ref.y,width=_ref.width,height=_ref.height,windowWidth=_ref.windowWidth,windowHeight=_ref.windowHeight,hover=_ref.hover;var right=windowWidth-left-width;var bottom=windowHeight-top-height;var min=Math.min(left,top,right,bottom);switch(min){case right:left=hover?windowWidth-width:windowWidth-width/2;break;case left:left=hover?0:-width/2;break;case bottom:top=hover?windowHeight-height:windowHeight-height/2;break;default:top=hover?0:-height/2;}return{x:left,y:top};};function DraggableWrapper(_ref2){var children=_ref2.children,usePaper=_ref2.usePaper,props=_objectWithoutProperties(_ref2,Draggable_excluded);if(usePaper){return/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,_objectSpread2(_objectSpread2({},props),{},{elevation:4,children:children}));}return/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({},props),{},{children:children}));}function Draggable(_ref3){var _ref3$windowSize=_ref3.windowSize,windowWidth=_ref3$windowSize.w,windowHeight=_ref3$windowSize.h,width=_ref3.width,height=_ref3.height,left=_ref3.left,top=_ref3.top,show=_ref3.show,snapEdge=_ref3.snapEdge,onStart=_ref3.onStart,onMove=_ref3.onMove,handler=_ref3.handler,children=_ref3.children,usePaper=_ref3.usePaper;var _useState=(0,react.useState)(false),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),hover=_useState2[0],setHover=_useState2[1];var _useState3=(0,react.useState)(null),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),origin=_useState4[0],setOrigin=_useState4[1];var _useState5=(0,react.useState)({x:left,y:top}),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),position=_useState6[0],setPosition=_useState6[1];var setFabPosition=(0,react.useMemo)(function(){return debounce(setFab,500);},[]);var handlePointerDown=function handlePointerDown(e){!isMobile&&e.target.setPointerCapture(e.pointerId);onStart&&onStart();var x=position.x,y=position.y;var _ref4=isMobile?e.targetTouches[0]:e,clientX=_ref4.clientX,clientY=_ref4.clientY;setOrigin({x:x,y:y,clientX:clientX,clientY:clientY});};var handlePointerMove=function handlePointerMove(e){onMove&&onMove();var _ref5=isMobile?e.targetTouches[0]:e,clientX=_ref5.clientX,clientY=_ref5.clientY;if(origin){var dx=clientX-origin.clientX;var dy=clientY-origin.clientY;var x=origin.x+dx;var y=origin.y+dy;x=limitNumber(x,-width/2,windowWidth-width/2);y=limitNumber(y,0,windowHeight-height/2);setPosition({x:x,y:y});}};var handlePointerUp=function handlePointerUp(e){e.stopPropagation();setOrigin(null);};var handleClick=function handleClick(e){e.stopPropagation();};var handleMouseEnter=function handleMouseEnter(e){e.stopPropagation();setHover(true);};var handleMouseLeave=function handleMouseLeave(e){e.stopPropagation();setHover(false);};(0,react.useEffect)(function(){if(!snapEdge||!!origin){return;}setPosition(function(pre){var edgePosition=getEdgePosition(_objectSpread2(_objectSpread2({},pre),{},{width:width,height:height,windowWidth:windowWidth,windowHeight:windowHeight,hover:hover}));setFabPosition(edgePosition);return edgePosition;});},[origin,hover,width,height,windowWidth,windowHeight,snapEdge,setFabPosition]);var opacity=(0,react.useMemo)(function(){if(snapEdge){return hover||origin?1:0.2;}return origin?0.8:1;},[origin,snapEdge,hover]);var touchProps=isMobile?{onTouchStart:handlePointerDown,onTouchMove:handlePointerMove,onTouchEnd:handlePointerUp}:{onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp};return/*#__PURE__*/(0,jsx_runtime.jsxs)(DraggableWrapper,{usePaper:usePaper,style:{opacity:opacity,position:"fixed",left:position.x,top:position.y,zIndex:2147483647,display:show?"block":"none"},onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onClick:handleClick,children:[/*#__PURE__*/(0,jsx_runtime.jsx)("div",_objectSpread2(_objectSpread2({style:{touchAction:"none"}},touchProps),{},{children:handler})),/*#__PURE__*/(0,jsx_runtime.jsx)("div",{children:children})]});}
// EXTERNAL MODULE: ./node_modules/@mui/styled-engine/index.js
var styled_engine = __webpack_require__(564);
// EXTERNAL MODULE: ./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js
@@ -21738,6 +21751,14 @@ var buttonClasses = (0,generateUtilityClasses/* default */.Z)('MuiButton', ['roo
var ButtonGroupContext = /*#__PURE__*/react.createContext({});
if (false) {}
/* harmony default export */ var ButtonGroup_ButtonGroupContext = (ButtonGroupContext);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js
+
+/**
+ * @ignore - internal component.
+ */
+var ButtonGroupButtonContext = /*#__PURE__*/react.createContext(undefined);
+if (false) {}
+/* harmony default export */ var ButtonGroup_ButtonGroupButtonContext = (ButtonGroupButtonContext);
;// CONCATENATED MODULE: ./node_modules/@mui/material/Button/Button.js
'use client';
@@ -21759,6 +21780,7 @@ var Button_excluded = ["children", "color", "component", "className", "disabled"
+
var Button_useUtilityClasses = function useUtilityClasses(ownerState) {
var color = ownerState.color,
disableElevation = ownerState.disableElevation,
@@ -21958,6 +21980,7 @@ var ButtonEndIcon = (0,styled/* default */.ZP)('span', {
var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
// props priority: `inProps` > `contextProps` > `themeDefaultProps`
var contextProps = react.useContext(ButtonGroup_ButtonGroupContext);
+ var buttonGroupButtonContextPositionClassName = react.useContext(ButtonGroup_ButtonGroupButtonContext);
var resolvedProps = (0,resolveProps/* default */.Z)(contextProps, inProps);
var props = (0,styles_useThemeProps/* default */.Z)({
props: resolvedProps,
@@ -22008,9 +22031,10 @@ var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
ownerState: ownerState,
children: endIconProp
});
+ var positionClassName = buttonGroupButtonContextPositionClassName || '';
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonRoot, (0,esm_extends/* default */.Z)({
ownerState: ownerState,
- className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className),
+ className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className, positionClassName),
component: component,
disabled: disabled,
focusRipple: !disableFocusRipple,
@@ -25658,7 +25682,7 @@ function useModal(parameters) {
var createHandleKeyDown = function createHandleKeyDown(otherHandlers) {
return function (event) {
var _otherHandlers$onKeyD;
- (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null ? void 0 : _otherHandlers$onKeyD.call(otherHandlers, event);
+ (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
// The handler doesn't take event.defaultPrevented into account:
//
@@ -25681,7 +25705,7 @@ function useModal(parameters) {
var createHandleBackdropClick = function createHandleBackdropClick(otherHandlers) {
return function (event) {
var _otherHandlers$onClic;
- (_otherHandlers$onClic = otherHandlers.onClick) == null ? void 0 : _otherHandlers$onClic.call(otherHandlers, event);
+ (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.target !== event.currentTarget) {
return;
}
@@ -25732,8 +25756,8 @@ function useModal(parameters) {
}
};
return {
- onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children.props.onEnter),
- onExited: (0,createChainedFunction/* default */.Z)(handleExited, children.props.onExited)
+ onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children == null ? void 0 : children.props.onEnter),
+ onExited: (0,createChainedFunction/* default */.Z)(handleExited, children == null ? void 0 : children.props.onExited)
};
};
return {
@@ -25909,49 +25933,6 @@ function FocusTrap(props) {
return;
}
var doc = (0,ownerDocument_ownerDocument/* default */.Z)(rootRef.current);
- var contain = function contain(nativeEvent) {
- var rootElement = rootRef.current;
-
- // Cleanup functions are executed lazily in React 17.
- // Contain can be called between the component being unmounted and its cleanup function being run.
- if (rootElement === null) {
- return;
- }
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
- ignoreNextEnforceFocus.current = false;
- return;
- }
- if (!rootElement.contains(doc.activeElement)) {
- // if the focus event is not coming from inside the children's react tree, reset the refs
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
- reactFocusEventTarget.current = null;
- } else if (reactFocusEventTarget.current !== null) {
- return;
- }
- if (!activated.current) {
- return;
- }
- var tabbable = [];
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
- tabbable = getTabbable(rootRef.current);
- }
- if (tabbable.length > 0) {
- var _lastKeydown$current, _lastKeydown$current2;
- var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
- var focusNext = tabbable[0];
- var focusPrevious = tabbable[tabbable.length - 1];
- if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
- if (isShiftTab) {
- focusPrevious.focus();
- } else {
- focusNext.focus();
- }
- }
- } else {
- rootElement.focus();
- }
- }
- };
var loopFocus = function loopFocus(nativeEvent) {
lastKeydown.current = nativeEvent;
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
@@ -25969,6 +25950,62 @@ function FocusTrap(props) {
}
}
};
+ var contain = function contain() {
+ var rootElement = rootRef.current;
+
+ // Cleanup functions are executed lazily in React 17.
+ // Contain can be called between the component being unmounted and its cleanup function being run.
+ if (rootElement === null) {
+ return;
+ }
+ if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
+ ignoreNextEnforceFocus.current = false;
+ return;
+ }
+
+ // The focus is already inside
+ if (rootElement.contains(doc.activeElement)) {
+ return;
+ }
+
+ // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)
+ if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
+ return;
+ }
+
+ // if the focus event is not coming from inside the children's react tree, reset the refs
+ if (doc.activeElement !== reactFocusEventTarget.current) {
+ reactFocusEventTarget.current = null;
+ } else if (reactFocusEventTarget.current !== null) {
+ return;
+ }
+ if (!activated.current) {
+ return;
+ }
+ var tabbable = [];
+ if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
+ tabbable = getTabbable(rootRef.current);
+ }
+
+ // one of the sentinel nodes was focused, so move the focus
+ // to the first/last tabbable element inside the focus trap
+ if (tabbable.length > 0) {
+ var _lastKeydown$current, _lastKeydown$current2;
+ var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
+ var focusNext = tabbable[0];
+ var focusPrevious = tabbable[tabbable.length - 1];
+ if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
+ if (isShiftTab) {
+ focusPrevious.focus();
+ } else {
+ focusNext.focus();
+ }
+ }
+ // no tabbable elements in the trap focus or the focus was outside of the focus trap
+ } else {
+ rootElement.focus();
+ }
+ };
doc.addEventListener('focusin', contain);
doc.addEventListener('keydown', loopFocus, true);
@@ -25980,7 +26017,7 @@ function FocusTrap(props) {
// https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
var interval = setInterval(function () {
if (doc.activeElement && doc.activeElement.tagName === 'BODY') {
- contain(null);
+ contain();
}
}, 50);
return function () {
@@ -26347,7 +26384,7 @@ var modalClasses = (0,generateUtilityClasses/* default */.Z)('MuiModal', ['root'
-var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "open", "slotProps", "slots", "theme"];
+var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onTransitionEnter", "onTransitionExited", "open", "slotProps", "slots", "theme"];
@@ -28544,133 +28581,9 @@ var DarkMode = __webpack_require__(45);
;// CONCATENATED MODULE: ./src/views/Options/DarkModeButton.js
function DarkModeButton(){var _useDarkMode=useDarkMode(),darkMode=_useDarkMode.darkMode,toggleDarkMode=_useDarkMode.toggleDarkMode;return/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:toggleDarkMode,color:"inherit",children:darkMode?/*#__PURE__*/(0,jsx_runtime.jsx)(LightMode/* default */.Z,{}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkMode/* default */.Z,{})});}
;// CONCATENATED MODULE: ./src/views/Popup/Header.js
-function Header(_ref){var setShowPopup=_ref.setShowPopup;var handleHomepage=function handleHomepage(){window.open("https://github.com/fishjar/kiss-translator","_blank");};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:handleHomepage,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Home/* default */.Z,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{children:"".concat("KISS Translator"," v").concat("1.7.0")})]}),setShowPopup?/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:function onClick(){setShowPopup(false);},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Close/* default */.Z,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkModeButton,{})]});}
+function Header(_ref){var setShowPopup=_ref.setShowPopup;var handleHomepage=function handleHomepage(){window.open("https://github.com/fishjar/kiss-translator","_blank");};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:handleHomepage,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Home/* default */.Z,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{sx:{userSelect:"none",WebkitUserSelect:"none"},children:"".concat("KISS Translator"," v").concat("1.7.1")})]}),setShowPopup?/*#__PURE__*/(0,jsx_runtime.jsx)(IconButton_IconButton,{onClick:function onClick(){setShowPopup(false);},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Close/* default */.Z,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(DarkModeButton,{})]});}
;// CONCATENATED MODULE: ./src/libs/iframe.js
var isIframe=window.self!==window.top;var sendIframeMsg=function sendIframeMsg(action,args){document.querySelectorAll("iframe").forEach(function(iframe){iframe.contentWindow.postMessage({action:action,args:args},"*");});};
-;// CONCATENATED MODULE: ./src/libs/subRules.js
-var subRules_ref,subRules_ref2,subRules_ref4,subRules_ref6,subRules_ref7;/**
- * 更新缓存同步时间
- * @param {*} url
- */var updateSyncDataCache=function updateSyncDataCache(_x){return(subRules_ref=subRules_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(url){var _yield$getSyncWithDef,_yield$getSyncWithDef2,dataCaches;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return getSyncWithDefault();case 2:_yield$getSyncWithDef=_context.sent;_yield$getSyncWithDef2=_yield$getSyncWithDef.dataCaches;dataCaches=_yield$getSyncWithDef2===void 0?{}:_yield$getSyncWithDef2;dataCaches[url]=Date.now();_context.next=8;return updateSync({dataCaches:dataCaches});case 8:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);};/**
- * 同步订阅规则
- * @param {*} url
- * @returns
- */var syncSubRules=function syncSubRules(_x2){return(subRules_ref2=subRules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var isBg,res,rules,_args2=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:isBg=_args2.length>1&&_args2[1]!==undefined?_args2[1]:false;_context2.next=3;return apiFetch(url,isBg);case 3:res=_context2.sent;rules=checkRules(res).filter(function(_ref3){var pattern=_ref3.pattern;return!isAllchar(pattern,GLOBAL_KEY);});if(!(rules.length>0)){_context2.next=8;break;}_context2.next=8;return setSubRules(url,rules);case 8:return _context2.abrupt("return",rules);case 9:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};/**
- * 同步所有订阅规则
- * @param {*} url
- * @returns
- */var syncAllSubRules=function syncAllSubRules(_x3){return(subRules_ref4=subRules_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(subrulesList){var isBg,_iterator,_step,subrules,_args3=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:isBg=_args3.length>1&&_args3[1]!==undefined?_args3[1]:false;_iterator=_createForOfIteratorHelper(subrulesList);_context3.prev=2;_iterator.s();case 4:if((_step=_iterator.n()).done){_context3.next=18;break;}subrules=_step.value;_context3.prev=6;_context3.next=9;return syncSubRules(subrules.url,isBg);case 9:_context3.next=11;return updateSyncDataCache(subrules.url);case 11:_context3.next=16;break;case 13:_context3.prev=13;_context3.t0=_context3["catch"](6);console.log("[sync subrule error]: ".concat(subrules.url),_context3.t0);case 16:_context3.next=4;break;case 18:_context3.next=23;break;case 20:_context3.prev=20;_context3.t1=_context3["catch"](2);_iterator.e(_context3.t1);case 23:_context3.prev=23;_iterator.f();return _context3.finish(23);case 26:case"end":return _context3.stop();}},_callee3,null,[[2,20,23,26],[6,13]]);}))).apply(this,arguments);};/**
- * 根据时间同步所有订阅规则
- * @param {*} url
- * @returns
- */var trySyncAllSubRules=function trySyncAllSubRules(_x4){return(subRules_ref6=subRules_ref6||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(_ref5){var subrulesList,isBg,_yield$getSyncWithDef3,subRulesSyncAt,now,interval,_args4=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:subrulesList=_ref5.subrulesList;isBg=_args4.length>1&&_args4[1]!==undefined?_args4[1]:false;_context4.prev=2;_context4.next=5;return getSyncWithDefault();case 5:_yield$getSyncWithDef3=_context4.sent;subRulesSyncAt=_yield$getSyncWithDef3.subRulesSyncAt;now=Date.now();interval=24*60*60*1000;// 间隔一天
-if(!(now-subRulesSyncAt>interval)){_context4.next=14;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:subrulesList.forEach(function(item){item.syncAt=now;});_context4.next=17;return updateSetting({subrulesList:subrulesList});case 17:_context4.next=22;break;case 19:_context4.prev=19;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 22:case"end":return _context4.stop();}},_callee4,null,[[2,19]]);}))).apply(this,arguments);};/**
- * 从缓存或远程加载订阅规则
- * @param {*} url
- * @returns
- */var loadOrFetchSubRules=function loadOrFetchSubRules(_x5){return(subRules_ref7=subRules_ref7||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee5(url){var rules;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.next=2;return getSubRules(url);case 2:rules=_context5.sent;if(!(!rules||rules.length===0)){_context5.next=9;break;}_context5.next=6;return syncSubRules(url);case 6:rules=_context5.sent;_context5.next=9;return updateSyncDataCache(url);case 9:return _context5.abrupt("return",rules||[]);case 10:case"end":return _context5.stop();}},_callee5);}))).apply(this,arguments);};
-;// CONCATENATED MODULE: ./src/libs/rules.js
-var rules_ref2,rules_ref9;/**
- * 根据href匹配规则
- * @param {*} rules
- * @param {string} href
- * @returns
- */var matchRule=function matchRule(_x,_x2,_x3){return(rules_ref2=rules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(rules,href,_ref){var _rule$selector;var _ref$injectRules,injectRules,_ref$subrulesList,subrulesList,_ref$owSubrule,owSubrule,selectedSub,_rules,mixRule,subRules,rule,globalRule,_rule$bgColor,_rule$textDiyStyle;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_ref$injectRules=_ref.injectRules,injectRules=_ref$injectRules===void 0?true:_ref$injectRules,_ref$subrulesList=_ref.subrulesList,subrulesList=_ref$subrulesList===void 0?DEFAULT_SUBRULES_LIST:_ref$subrulesList,_ref$owSubrule=_ref.owSubrule,owSubrule=_ref$owSubrule===void 0?DEFAULT_OW_RULE:_ref$owSubrule;rules=(0,toConsumableArray/* default */.Z)(rules);if(!injectRules){_context.next=18;break;}_context.prev=3;selectedSub=subrulesList.find(function(item){return item.selected;});if(!(selectedSub!==null&&selectedSub!==void 0&&selectedSub.url)){_context.next=13;break;}mixRule={};Object.entries(owSubrule).filter(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];if(owSubrule.textStyle===REMAIN_KEY&&(key==="bgColor"||key==="textDiyStyle")){return false;}return val!==REMAIN_KEY;}).forEach(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,2),key=_ref6[0],val=_ref6[1];mixRule[key]=val;});_context.next=10;return loadOrFetchSubRules(selectedSub.url);case 10:subRules=_context.sent;subRules=subRules.map(function(item){return _objectSpread2(_objectSpread2({},item),mixRule);});(_rules=rules).splice.apply(_rules,[-1,0].concat((0,toConsumableArray/* default */.Z)(subRules)));case 13:_context.next=18;break;case 15:_context.prev=15;_context.t0=_context["catch"](3);console.log("[load injectRules]",_context.t0);case 18:rule=rules.find(function(r){return r.pattern.split(",").some(function(p){return isMatch(href,p.trim());});});globalRule=rules.find(function(r){return r.pattern===GLOBAL_KEY;})||GLOBLA_RULE;if(rule){_context.next=22;break;}return _context.abrupt("return",globalRule);case 22:rule.selector=((_rule$selector=rule.selector)===null||_rule$selector===void 0?void 0:_rule$selector.trim())||globalRule.selector;if(rule.textStyle===GLOBAL_KEY){rule.textStyle=globalRule.textStyle;rule.bgColor=globalRule.bgColor;rule.textDiyStyle=globalRule.textDiyStyle;}else{rule.bgColor=((_rule$bgColor=rule.bgColor)===null||_rule$bgColor===void 0?void 0:_rule$bgColor.trim())||globalRule.bgColor;rule.textDiyStyle=((_rule$textDiyStyle=rule.textDiyStyle)===null||_rule$textDiyStyle===void 0?void 0:_rule$textDiyStyle.trim())||globalRule.textDiyStyle;}["translator","fromLang","toLang","transOpen"].forEach(function(key){if(rule[key]===GLOBAL_KEY){rule[key]=globalRule[key];}});return _context.abrupt("return",rule);case 26:case"end":return _context.stop();}},_callee,null,[[3,15]]);}))).apply(this,arguments);};/**
- * 检查过滤rules
- * @param {*} rules
- * @returns
- */var checkRules=function checkRules(rules){if(type(rules)==="string"){rules=JSON.parse(rules);}if(type(rules)!=="array"){throw new Error("data error");}var fromLangs=OPT_LANGS_FROM.map(function(item){return item[0];});var toLangs=OPT_LANGS_TO.map(function(item){return item[0];});var patternSet=new Set();rules=rules.filter(function(rule){return type(rule)==="object";}).filter(function(_ref7){var pattern=_ref7.pattern;if(type(pattern)!=="string"||patternSet.has(pattern.trim())){return false;}patternSet.add(pattern.trim());return true;}).map(function(_ref8){var pattern=_ref8.pattern,selector=_ref8.selector,translator=_ref8.translator,fromLang=_ref8.fromLang,toLang=_ref8.toLang,textStyle=_ref8.textStyle,transOpen=_ref8.transOpen,bgColor=_ref8.bgColor,textDiyStyle=_ref8.textDiyStyle;return{pattern:pattern.trim(),selector:type(selector)==="string"?selector:"",bgColor:type(bgColor)==="string"?bgColor:"",textDiyStyle:type(textDiyStyle)==="string"?textDiyStyle:"",translator:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_TRANS_ALL)),translator),fromLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(fromLangs)),fromLang),toLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(toLangs)),toLang),textStyle:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_STYLE_ALL)),textStyle),transOpen:matchValue([GLOBAL_KEY,"true","false"],transOpen)};});return rules;};/**
- * 保存或更新rule
- * @param {*} newRule
- */var saveRule=function saveRule(_x4){return(rules_ref9=rules_ref9||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(newRule){var rules,rule;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return getRulesWithDefault();case 2:rules=_context2.sent;rule=rules.find(function(item){return isMatch(newRule.pattern,item.pattern);});if(rule&&rule.pattern!==GLOBAL_KEY){Object.assign(rule,_objectSpread2(_objectSpread2({},newRule),{},{pattern:rule.pattern}));}else{rules.unshift(newRule);}_context2.next=7;return setRules(rules);case 7:trySyncRules(false,true);case 8:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};
-;// CONCATENATED MODULE: ./src/views/Popup/index.js
-function Popup(_ref){var _ref2,_ref3,_ref4;var setShowPopup=_ref.setShowPopup,tran=_ref.translator;var i18n=useI18n();var _useState=(0,react.useState)(tran===null||tran===void 0?void 0:tran.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var handleOpenSetting=function handleOpenSetting(){if(isExt){browser===null||browser===void 0?void 0:browser.runtime.openOptionsPage();}else{window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");}setShowPopup&&setShowPopup(false);};var handleTransToggle=function handleTransToggle(_x){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(e){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setRule(_objectSpread2(_objectSpread2({},rule),{},{transOpen:e.target.checked?"true":"false"}));if(!isExt){_context.next=7;break;}_context.next=5;return sendTabMsg(MSG_TRANS_TOGGLE);case 5:_context.next=9;break;case 7:tran.toggle();sendIframeMsg(MSG_TRANS_TOGGLE);case 9:_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](0);console.log("[toggle trans]",_context.t0);case 14:case"end":return _context.stop();}},_callee,null,[[0,11]]);}))).apply(this,arguments);};var handleChange=function handleChange(_x2){return(_ref3=_ref3||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$target,name,value;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_e$target=e.target,name=_e$target.name,value=_e$target.value;setRule(function(pre){return _objectSpread2(_objectSpread2({},pre),{},(0,defineProperty/* default */.Z)({},name,value));});if(!isExt){_context2.next=8;break;}_context2.next=6;return sendTabMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 6:_context2.next=10;break;case 8:tran.updateRule((0,defineProperty/* default */.Z)({},name,value));sendIframeMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 10:_context2.next=15;break;case 12:_context2.prev=12;_context2.t0=_context2["catch"](0);console.log("[update rule]",_context2.t0);case 15:case"end":return _context2.stop();}},_callee2,null,[[0,12]]);}))).apply(this,arguments);};var handleClearCache=function handleClearCache(){try{caches.delete(config_CACHE_NAME);}catch(err){console.log("[clear cache]",err);}};var handleSaveRule=function handleSaveRule(){return(_ref4=_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(){var host,tab,url;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;host=window.location.host;if(!isExt){_context3.next=8;break;}_context3.next=5;return getTabInfo();case 5:tab=_context3.sent;url=new URL(tab.url);host=url.host;case 8:saveRule(_objectSpread2(_objectSpread2({},rule),{},{pattern:host}));_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](0);console.log("[save rule]",_context3.t0);case 14:case"end":return _context3.stop();}},_callee3,null,[[0,11]]);}))).apply(this,arguments);};(0,react.useEffect)(function(){if(!isExt){return;}asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(){var res;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;_context4.next=3;return sendTabMsg(MSG_TRANS_GETRULE);case 3:res=_context4.sent;if(!res.error){setRule(res.data);}_context4.next=10;break;case 7:_context4.prev=7;_context4.t0=_context4["catch"](0);console.log("[query rule]",_context4.t0);case 10:case"end":return _context4.stop();}},_callee4,null,[[0,7]]);}))();},[]);if(!rule){return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{sx:{p:2},spacing:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})})]});}var transOpen=rule.transOpen,translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang,textStyle=rule.textStyle,bgColor=rule.bgColor;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{sx:{p:2},spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(FormControlLabel_FormControlLabel,{control:/*#__PURE__*/(0,jsx_runtime.jsx)(Switch_Switch,{checked:transOpen==="true",onChange:handleTransToggle}),label:i18n("translate_alt")}),!isExt&&/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleClearCache,children:i18n("clear_cache")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:translator,name:"translator",label:i18n("translate_service"),onChange:handleChange,children:OPT_TRANS_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:item},item);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:fromLang,name:"fromLang",label:i18n("from_lang"),onChange:handleChange,children:OPT_LANGS_FROM.map(function(_ref6){var _ref7=(0,slicedToArray/* default */.Z)(_ref6,2),lang=_ref7[0],name=_ref7[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:toLang,name:"toLang",label:i18n("to_lang"),onChange:handleChange,children:OPT_LANGS_TO.map(function(_ref8){var _ref9=(0,slicedToArray/* default */.Z)(_ref8,2),lang=_ref9[0],name=_ref9[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:textStyle,name:"textStyle",label:i18n("text_style_alt"),onChange:handleChange,children:OPT_STYLE_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:i18n(item)},item);})}),OPT_STYLE_USE_COLOR.includes(textStyle)&&/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",name:"bgColor",value:bgColor,label:i18n("bg_color"),onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleSaveRule,children:i18n("save_rule")}),/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})]})]})]});}
-;// CONCATENATED MODULE: ./src/libs/shortcut.js
-/**
- * 键盘快捷键监听
- * @param {*} fn
- * @param {*} target
- * @param {*} timeout
- * @returns
- */var shortcutListener=function shortcutListener(fn){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3000;var allkeys=new Set();var curkeys=new Set();var timer=null;var handleKeydown=function handleKeydown(e){timer&&clearTimeout(timer);timer=setTimeout(function(){allkeys.clear();curkeys.clear();clearTimeout(timer);timer=null;},timeout);if(e.code){allkeys.add(e.key);curkeys.add(e.key);fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));}};var handleKeyup=function handleKeyup(e){curkeys.delete(e.key);if(curkeys.size===0){fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));allkeys.clear();}};target.addEventListener("keydown",handleKeydown);target.addEventListener("keyup",handleKeyup);return function(){if(timer){clearTimeout(timer);timer=null;}target.removeEventListener("keydown",handleKeydown);target.removeEventListener("keyup",handleKeyup);};};/**
- * 注册键盘快捷键
- * @param {*} targetKeys
- * @param {*} fn
- * @param {*} target
- * @returns
- */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};
-;// CONCATENATED MODULE: ./src/views/Action/index.js
-function Action(_ref){var _fab$x,_fab$y;var translator=_ref.translator,fab=_ref.fab;var fabWidth=40;var _useState=(0,react.useState)(false),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),showPopup=_useState2[0],setShowPopup=_useState2[1];var _useState3=(0,react.useState)({w:window.innerWidth,h:window.innerHeight}),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),windowSize=_useState4[0],setWindowSize=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),moved=_useState6[0],setMoved=_useState6[1];var handleWindowResize=(0,react.useMemo)(function(){return debounce(function(){setWindowSize({w:window.innerWidth,h:window.innerHeight});});},[]);var handleWindowClick=function handleWindowClick(e){setShowPopup(false);};var handleStart=(0,react.useCallback)(function(){setMoved(false);},[]);var handleMove=(0,react.useCallback)(function(){setMoved(true);},[]);(0,react.useEffect)(function(){// 注册快捷键
-var shortcuts=translator.setting.shortcuts||DEFAULT_SHORTCUTS;var clearShortcuts=[shortcutRegister(shortcuts[OPT_SHORTCUT_TRANSLATE],function(){translator.toggle();setShowPopup(false);}),shortcutRegister(shortcuts[OPT_SHORTCUT_STYLE],function(){translator.toggleStyle();setShowPopup(false);}),shortcutRegister(shortcuts[OPT_SHORTCUT_POPUP],function(){setShowPopup(function(pre){return!pre;});}),shortcutRegister(shortcuts[OPT_SHORTCUT_SETTING],function(){window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");})];return function(){clearShortcuts.forEach(function(fn){fn();});};},[translator]);(0,react.useEffect)(function(){// 注册菜单
-var menuCommandIds=[];if(isGm){try{menuCommandIds.push(GM.registerMenuCommand("Toggle Translate (Alt+q)",function(event){translator.toggle();setShowPopup(false);},"Q"),GM.registerMenuCommand("Toggle Style (Alt+c)",function(event){translator.toggleStyle();setShowPopup(false);},"C"),GM.registerMenuCommand("Open Menu (Alt+k)",function(event){setShowPopup(function(pre){return!pre;});},"K"),GM.registerMenuCommand("Open Setting (Alt+o)",function(event){window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");},"O"));}catch(err){console.log("[registerMenuCommand]",err);}}return function(){if(isGm){try{menuCommandIds.forEach(function(id){GM.unregisterMenuCommand(id);});}catch(err){//
-}}};},[translator]);(0,react.useEffect)(function(){window.addEventListener("resize",handleWindowResize);return function(){window.removeEventListener("resize",handleWindowResize);};},[handleWindowResize]);(0,react.useEffect)(function(){window.addEventListener("click",handleWindowClick);return function(){window.removeEventListener("click",handleWindowClick);};},[]);var popProps=(0,react.useMemo)(function(){var width=Math.min(windowSize.w,300);var height=Math.min(windowSize.h,442);var left=(windowSize.w-width)/2;var top=(windowSize.h-height)/2;return{windowSize:windowSize,width:width,height:height,left:left,top:top};},[windowSize]);var fabProps={windowSize:windowSize,width:fabWidth,height:fabWidth,left:(_fab$x=fab.x)!==null&&_fab$x!==void 0?_fab$x:0,top:(_fab$y=fab.y)!==null&&_fab$y!==void 0?_fab$y:windowSize.h/2};return/*#__PURE__*/(0,jsx_runtime.jsx)(SettingProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Theme,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Draggable,_objectSpread2(_objectSpread2({},popProps),{},{show:showPopup,onStart:handleStart,onMove:handleMove,handler:/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,{style:{cursor:"move"},elevation:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{setShowPopup:setShowPopup})}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(Paper_Paper,{children:showPopup&&/*#__PURE__*/(0,jsx_runtime.jsx)(Popup,{setShowPopup:setShowPopup,translator:translator})})}),"pop"),/*#__PURE__*/(0,jsx_runtime.jsx)(Draggable,_objectSpread2(_objectSpread2({snapEdge:true},fabProps),{},{show:translator.setting.hideFab?false:!showPopup,onStart:handleStart,onMove:handleMove,handler:/*#__PURE__*/(0,jsx_runtime.jsx)(Fab_Fab,{size:"small",color:"primary",onClick:function onClick(e){if(!moved){setShowPopup(function(pre){return!pre;});}},children:/*#__PURE__*/(0,jsx_runtime.jsx)(Translate/* default */.Z,{})})}),"fab")]})});}
-;// CONCATENATED MODULE: ./src/views/Content/LoadingIcon.js
-function LoadingIcon(){return/*#__PURE__*/(0,jsx_runtime.jsxs)("svg",{viewBox:"0 0 100 100",style:{maxWidth:"1.2em",maxHeight:"1.2em"},children:[/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"6",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 15 ; 0 -15; 0 15",repeatCount:"indefinite",begin:"0.1"})}),/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"30",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 10 ; 0 -10; 0 10",repeatCount:"indefinite",begin:"0.2"})}),/*#__PURE__*/(0,jsx_runtime.jsx)("circle",{fill:DEFAULT_COLOR,stroke:"none",cx:"54",cy:"50",r:"6",children:/*#__PURE__*/(0,jsx_runtime.jsx)("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:"0 5 ; 0 -5; 0 5",repeatCount:"indefinite",begin:"0.3"})})]});}
-;// CONCATENATED MODULE: ./src/hooks/Translate.js
-/**
- * 翻译hook
- * @param {*} q
- * @param {*} rule
- * @param {*} setting
- * @returns
- */function useTranslate(q,rule,setting){var _useState=(0,react.useState)(""),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),text=_useState2[0],setText=_useState2[1];var _useState3=(0,react.useState)(false),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),loading=_useState4[0],setLoading=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),sameLang=_useState6[0],setSamelang=_useState6[1];var translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang;(0,react.useEffect)(function(){asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setLoading(true);_context.next=4;return tryDetectLang(q);case 4:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=9;break;}setSamelang(true);_context.next=17;break;case 9:_context.next=11;return apiTranslate({translator:translator,text:q,fromLang:fromLang,toLang:toLang,apiSetting:(setting.transApis||DEFAULT_TRANS_APIS)[translator]});case 11:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];setText(trText);setSamelang(isSame);case 17:_context.next=22;break;case 19:_context.prev=19;_context.t0=_context["catch"](0);console.log("[translate]",_context.t0);case 22:_context.prev=22;setLoading(false);return _context.finish(22);case 25:case"end":return _context.stop();}},_callee,null,[[0,19,22,25]]);}))();},[q,translator,fromLang,toLang,setting]);return{text:text,sameLang:sameLang,loading:loading};}
-;// CONCATENATED MODULE: ./src/views/Content/index.js
-var Content_templateObject,Content_templateObject2,Content_templateObject3,Content_templateObject4;var LineSpan=(0,styled/* default */.ZP)("span")(Content_templateObject||(Content_templateObject=_taggedTemplateLiteral(["\n opacity: 0.6;\n -webkit-opacity: 0.6;\n text-decoration-line: underline;\n text-decoration-style: ",";\n text-decoration-color: ",";\n text-decoration-thickness: 2px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ",";\n -webkit-text-decoration-color: ",";\n -webkit-text-decoration-thickness: 2px;\n -webkit-text-underline-offset: 0.3em;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n"])),function(props){return props.$lineStyle;},function(props){return props.$lineColor;},function(props){return props.$lineStyle;},function(props){return props.$lineColor;});var FuzzySpan=(0,styled/* default */.ZP)("span")(Content_templateObject2||(Content_templateObject2=_taggedTemplateLiteral(["\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n"])));var HighlightSpan=(0,styled/* default */.ZP)("span")(Content_templateObject3||(Content_templateObject3=_taggedTemplateLiteral(["\n color: #fff;\n background-color: ",";\n"])),function(props){return props.$bgColor;});var DiySpan=(0,styled/* default */.ZP)("span")(Content_templateObject4||(Content_templateObject4=_taggedTemplateLiteral(["\n ","\n"])),function(props){return props.$diyStyle;});function StyledSpan(_ref){var textStyle=_ref.textStyle,textDiyStyle=_ref.textDiyStyle,bgColor=_ref.bgColor,children=_ref.children;switch(textStyle){case OPT_STYLE_LINE:// 下划线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"solid",$lineColor:bgColor,children:children});case OPT_STYLE_DOTLINE:// 点状线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dotted",$lineColor:bgColor,children:children});case OPT_STYLE_DASHLINE:// 虚线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dashed",$lineColor:bgColor,children:children});case OPT_STYLE_WAVYLINE:// 波浪线
-return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"wavy",$lineColor:bgColor,children:children});case OPT_STYLE_FUZZY:// 模糊
-return/*#__PURE__*/(0,jsx_runtime.jsx)(FuzzySpan,{children:children});case OPT_STYLE_HIGHLIGHT:// 高亮
-return/*#__PURE__*/(0,jsx_runtime.jsx)(HighlightSpan,{$bgColor:bgColor||DEFAULT_COLOR,children:children});case OPT_STYLE_DIY:// 自定义
-return/*#__PURE__*/(0,jsx_runtime.jsx)(DiySpan,{$diyStyle:textDiyStyle,children:children});default:return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:children});}}function Content(_ref2){var q=_ref2.q,translator=_ref2.translator;var _useState=(0,react.useState)(translator.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var _useTranslate=useTranslate(q,rule,translator.setting),text=_useTranslate.text,sameLang=_useTranslate.sameLang,loading=_useTranslate.loading;var textStyle=rule.textStyle,_rule$bgColor=rule.bgColor,bgColor=_rule$bgColor===void 0?"":_rule$bgColor,_rule$textDiyStyle=rule.textDiyStyle,textDiyStyle=_rule$textDiyStyle===void 0?"":_rule$textDiyStyle;var _translator$setting$n=translator.setting.newlineLength,newlineLength=_translator$setting$n===void 0?TRANS_NEWLINE_LENGTH:_translator$setting$n;var handleKissEvent=function handleKissEvent(e){var _e$detail=e.detail,action=_e$detail.action,args=_e$detail.args;switch(action){case MSG_TRANS_CURRULE:setRule(args);break;default:}};(0,react.useEffect)(function(){window.addEventListener(translator.eventName,handleKissEvent);return function(){window.removeEventListener(translator.eventName,handleKissEvent);};},[translator.eventName]);if(loading){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(LoadingIcon,{})]});}if(text&&!sameLang){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(StyledSpan,{textStyle:textStyle,textDiyStyle:textDiyStyle,bgColor:bgColor,children:text})]});}}
-;// CONCATENATED MODULE: ./src/libs/translator.js
-/**
- * 翻译类
- */var Translator=/*#__PURE__*/function(){function Translator(rule,setting){var _this2=this;_classCallCheck(this,Translator);this._rule={};this._setting={};this._rootNodes=new Set();this._tranNodes=new Map();this._skipNodeNames=[APP_LCNAME,"style","svg","img","audio","video","textarea","input","button","select","option","head","script","iframe"];this._eventName=utils_genEventName();// 显示
-this._interseObserver=new IntersectionObserver(function(intersections){intersections.forEach(function(intersection){if(intersection.isIntersecting){_this2._render(intersection.target);_this2._interseObserver.unobserve(intersection.target);}});},{threshold:0.1});// 变化
-this._mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(!_this2._skipNodeNames.includes(mutation.target.localName)&&mutation.addedNodes.length>0){var nodes=Array.from(mutation.addedNodes).filter(function(node){if(_this2._skipNodeNames.includes(node.localName)||node.id===APP_LCNAME){return false;}return true;});if(nodes.length>0){// const rootNode = mutation.target.getRootNode();
-// todo
-_this2._reTranslate();}}});});// 插入 shadowroot
-this._overrideAttachShadow=function(){var _this=_this2;var _attachShadow=HTMLElement.prototype.attachShadow;HTMLElement.prototype.attachShadow=function(){_this._reTranslate();return _attachShadow.apply(this,arguments);};};this.updateRule=function(obj){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),obj);};this.toggle=function(){if(_this2.rule.transOpen==="true"){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"false"});_this2._unRegister();}else{_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"true"});_this2._register();}};this.toggleStyle=function(){var textStyle=_this2.rule.textStyle===OPT_STYLE_FUZZY?OPT_STYLE_DASHLINE:OPT_STYLE_FUZZY;_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{textStyle:textStyle});};this._querySelectorAll=function(selector,node){try{return Array.from(node.querySelectorAll(selector));}catch(err){console.log("[querySelectorAll err]: ".concat(selector));}return[];};this._queryFilter=function(selector,rootNode){return _this2._querySelectorAll(selector,rootNode).filter(function(node){return _this2._queryFilter(selector,node).length===0;});};this._queryNodes=function(){var rootNode=arguments.length>0&&arguments[0]!==undefined?arguments[0]:document;// const childRoots = Array.from(rootNode.querySelectorAll("*"))
-// .map((item) => item.shadowRoot)
-// .filter(Boolean);
-// const childNodes = childRoots.map((item) => this._queryNodes(item));
-// const nodes = Array.from(rootNode.querySelectorAll(this.rule.selector));
-// return nodes.concat(childNodes).flat();
-_this2._rootNodes.add(rootNode);_this2._rule.selector.split(";").map(function(item){return item.trim();}).filter(Boolean).forEach(function(selector){if(selector.includes(SHADOW_KEY)){var _selector$split$map=selector.split(SHADOW_KEY).map(function(item){return item.trim();}),_selector$split$map2=(0,slicedToArray/* default */.Z)(_selector$split$map,2),outSelector=_selector$split$map2[0],inSelector=_selector$split$map2[1];if(outSelector&&inSelector){var outNodes=_this2._querySelectorAll(outSelector,rootNode);outNodes.forEach(function(outNode){if(outNode.shadowRoot){_this2._rootNodes.add(outNode.shadowRoot);_this2._queryFilter(inSelector,outNode.shadowRoot).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});}}else{_this2._queryFilter(selector,rootNode).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});};this._register=function(){if(_this2._rule.fromLang===_this2._rule.toLang){return;}// 搜索节点
-_this2._queryNodes();_this2._rootNodes.forEach(function(node){// 监听节点变化;
-_this2._mutaObserver.observe(node,{childList:true,subtree:true// characterData: true,
-});});_this2._tranNodes.forEach(function(_,node){if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 监听节点显示
-_this2._interseObserver.observe(node);}else{// 监听鼠标悬停
-node.addEventListener("mouseover",_this2._handleMouseover);}});};this._handleMouseover=function(e){var key=_this2._setting.mouseKey.slice(3);if(_this2._setting.mouseKey===OPT_MOUSEKEY_MOUSEOVER||e[key]){e.target.removeEventListener("mouseover",_this2._handleMouseover);_this2._render(e.target);}};this._unRegister=function(){// 解除节点变化监听
-_this2._mutaObserver.disconnect();// 解除节点显示监听
-// this._interseObserver.disconnect();
-_this2._tranNodes.forEach(function(_,node){var _node$querySelector;if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 解除节点显示监听
-_this2._interseObserver.unobserve(node);}else{// 移除鼠标悬停监听
-node.removeEventListener("mouseover",_this2._handleMouseover);}// 移除已插入元素
-(_node$querySelector=node.querySelector(APP_LCNAME))===null||_node$querySelector===void 0?void 0:_node$querySelector.remove();});// 清空节点集合
-_this2._rootNodes.clear();_this2._tranNodes.clear();// 清空任务池
-clearFetchPool();};this._reTranslate=debounce(function(){if(_this2._rule.transOpen==="true"){_this2._register();}},500);this._render=function(el){var _this2$_setting$minLe,_this2$_setting$maxLe;var traEl=el.querySelector(APP_LCNAME);// 已翻译
-if(traEl){var preText=_this2._tranNodes.get(el);var curText=el.innerText.trim();// const traText = traEl.innerText.trim();
-// todo
-// 1. traText when loading
-// 2. replace startsWith
-if(curText.startsWith(preText)){return;}traEl.remove();}var q=el.innerText.trim();_this2._tranNodes.set(el,q);// 太长或太短
-if(!q||q.length<((_this2$_setting$minLe=_this2._setting.minLength)!==null&&_this2$_setting$minLe!==void 0?_this2$_setting$minLe:TRANS_MIN_LENGTH)||q.length>((_this2$_setting$maxLe=_this2._setting.maxLength)!==null&&_this2$_setting$maxLe!==void 0?_this2$_setting$maxLe:TRANS_MAX_LENGTH)){return;}// console.log("---> ", q);
-traEl=document.createElement(APP_LCNAME);traEl.style.visibility="visible";el.appendChild(traEl);el.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";if(el.parentElement){el.parentElement.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";}var root=(0,client.createRoot)(traEl);root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{q:q,translator:_this2}));};var fetchInterval=setting.fetchInterval,fetchLimit=setting.fetchLimit;updateFetchPool(fetchInterval,fetchLimit);this._overrideAttachShadow();this._setting=setting;this._rule=rule;if(rule.transOpen==="true"){this._register();}}_createClass(Translator,[{key:"setting",get:function get(){return this._setting;}},{key:"eventName",get:function get(){return this._eventName;}},{key:"rule",get:function get(){// console.log("get rule", this._rule);
-return this._rule;},set:function set(rule){// console.log("set rule", rule);
-this._rule=rule;// 广播消息
-var eventName=this._eventName;window.dispatchEvent(new CustomEvent(eventName,{detail:{action:MSG_TRANS_CURRULE,args:rule}}));}}]);return Translator;}();
-;// CONCATENATED MODULE: ./src/libs/gm.js
-var gm_ref;var MSG_GM_xmlHttpRequest="xmlHttpRequest";var MSG_GM_setValue="setValue";var MSG_GM_getValue="getValue";var MSG_GM_deleteValue="deleteValue";var MSG_GM_info="info";/**
- * 注入页面的脚本,请求并接受GM接口信息
- * @param {*} param0
- */var injectScript=function injectScript(ping){window.APP_INFO={name:"KISS Translator",version:"1.7.0",eventName:ping};};/**
- * 适配GM脚本
- */var adaptScript=function adaptScript(ping){var _getInfo;var promiseGM=function promiseGM(action,args){var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:5000;return new Promise(function(resolve,reject){var pong=genEventName();var handleEvent=function handleEvent(e){window.removeEventListener(pong,handleEvent);var _e$detail=e.detail,data=_e$detail.data,error=_e$detail.error;if(error){reject(new Error(error));}else{resolve(data);}};window.addEventListener(pong,handleEvent);window.dispatchEvent(new CustomEvent(ping,{detail:{action:action,args:args,pong:pong}}));setTimeout(function(){window.removeEventListener(pong,handleEvent);reject(new Error("timeout"));},timeout);});};window.KISS_GM={fetch:function fetch(input,init){return promiseGM(MSG_GM_xmlHttpRequest,{input:input,init:init});},setValue:function setValue(key,val){return promiseGM(MSG_GM_setValue,{key:key,val:val});},getValue:function getValue(key){return promiseGM(MSG_GM_getValue,{key:key});},deleteValue:function deleteValue(key){return promiseGM(MSG_GM_deleteValue,{key:key});},getInfo:function getInfo(){return(_getInfo=_getInfo||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(window.GM_info){_context.next=4;break;}_context.next=3;return promiseGM(MSG_GM_info);case 3:window.GM_info=_context.sent;case 4:return _context.abrupt("return",window.GM_info);case 5:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);}};};/**
- * 监听并回应页面对GM接口的请求
- * @param {*} param0
- */var handlePing=function handlePing(_x){return(gm_ref=gm_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$detail2,action,args,pong,res,input,init,key,val;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_e$detail2=e.detail,action=_e$detail2.action,args=_e$detail2.args,pong=_e$detail2.pong;_context2.prev=1;_context2.t0=action;_context2.next=_context2.t0===MSG_GM_xmlHttpRequest?5:_context2.t0===MSG_GM_setValue?10:_context2.t0===MSG_GM_getValue?15:_context2.t0===MSG_GM_deleteValue?19:_context2.t0===MSG_GM_info?23:25;break;case 5:input=args.input,init=args.init;_context2.next=8;return fetchGM(input,init);case 8:res=_context2.sent;return _context2.abrupt("break",26);case 10:key=args.key,val=args.val;_context2.next=13;return GM.setValue(key,val);case 13:res=val;return _context2.abrupt("break",26);case 15:_context2.next=17;return GM.getValue(args.key);case 17:res=_context2.sent;return _context2.abrupt("break",26);case 19:_context2.next=21;return GM.deleteValue(args.key);case 21:res="ok";return _context2.abrupt("break",26);case 23:res=GM.info;return _context2.abrupt("break",26);case 25:throw new Error("message action is unavailable: ".concat(action));case 26:window.dispatchEvent(new CustomEvent(pong,{detail:{data:res}}));_context2.next=32;break;case 29:_context2.prev=29;_context2.t1=_context2["catch"](1);window.dispatchEvent(new CustomEvent(pong,{detail:{error:_context2.t1.message}}));case 32:case"end":return _context2.stop();}},_callee2,null,[[1,29]]);}))).apply(this,arguments);};
;// CONCATENATED MODULE: ./src/libs/webfix.js
var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
* 修复程序类型
@@ -28708,10 +28621,145 @@ var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
*/var loadOrFetchWebfix=function loadOrFetchWebfix(_x2){return(webfix_ref2=webfix_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=3;return getWebfix(url);case 3:sites=_context2.sent;if(!(sites!==null&&sites!==void 0&&sites.length)){_context2.next=6;break;}return _context2.abrupt("return",sites);case 6:return _context2.abrupt("return",syncWebfix(url));case 9:_context2.prev=9;_context2.t0=_context2["catch"](0);console.log("[load webfix]",_context2.t0.message);return _context2.abrupt("return",DEFAULT_SITES);case 13:case"end":return _context2.stop();}},_callee2,null,[[0,9]]);}))).apply(this,arguments);};/**
* 匹配站点
*/function webfix(_x3,_x4){return(_webfix=_webfix||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(href,_ref3){var injectWebfix,sites,i,site;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:injectWebfix=_ref3.injectWebfix;_context3.prev=1;if(injectWebfix){_context3.next=4;break;}return _context3.abrupt("return");case 4:_context3.next=6;return loadOrFetchWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 6:sites=_context3.sent;i=0;case 8:if(!(i1&&_args2[1]!==undefined?_args2[1]:false;_context2.next=3;return apiFetch(url,isBg);case 3:res=_context2.sent;rules=checkRules(res).filter(function(_ref3){var pattern=_ref3.pattern;return!isAllchar(pattern,GLOBAL_KEY);});if(!(rules.length>0)){_context2.next=8;break;}_context2.next=8;return setSubRules(url,rules);case 8:return _context2.abrupt("return",rules);case 9:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};/**
+ * 同步所有订阅规则
+ * @param {*} url
+ * @returns
+ */var syncAllSubRules=function syncAllSubRules(_x3){return(subRules_ref4=subRules_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(subrulesList){var isBg,_iterator,_step,subrules,_args3=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:isBg=_args3.length>1&&_args3[1]!==undefined?_args3[1]:false;_iterator=_createForOfIteratorHelper(subrulesList);_context3.prev=2;_iterator.s();case 4:if((_step=_iterator.n()).done){_context3.next=18;break;}subrules=_step.value;_context3.prev=6;_context3.next=9;return syncSubRules(subrules.url,isBg);case 9:_context3.next=11;return updateSyncDataCache(subrules.url);case 11:_context3.next=16;break;case 13:_context3.prev=13;_context3.t0=_context3["catch"](6);console.log("[sync subrule error]: ".concat(subrules.url),_context3.t0);case 16:_context3.next=4;break;case 18:_context3.next=23;break;case 20:_context3.prev=20;_context3.t1=_context3["catch"](2);_iterator.e(_context3.t1);case 23:_context3.prev=23;_iterator.f();return _context3.finish(23);case 26:case"end":return _context3.stop();}},_callee3,null,[[2,20,23,26],[6,13]]);}))).apply(this,arguments);};/**
+ * 根据时间同步所有订阅规则
+ * @param {*} url
+ * @returns
+ */var trySyncAllSubRules=function trySyncAllSubRules(_x4){return(subRules_ref6=subRules_ref6||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(_ref5){var subrulesList,isBg,_yield$getSyncWithDef3,subRulesSyncAt,now,interval,_args4=arguments;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:subrulesList=_ref5.subrulesList;isBg=_args4.length>1&&_args4[1]!==undefined?_args4[1]:false;_context4.prev=2;_context4.next=5;return getSyncWithDefault();case 5:_yield$getSyncWithDef3=_context4.sent;subRulesSyncAt=_yield$getSyncWithDef3.subRulesSyncAt;now=Date.now();interval=24*60*60*1000;// 间隔一天
+if(!(now-subRulesSyncAt>interval)){_context4.next=16;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:_context4.next=16;return syncWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 16:_context4.next=21;break;case 18:_context4.prev=18;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 21:case"end":return _context4.stop();}},_callee4,null,[[2,18]]);}))).apply(this,arguments);};/**
+ * 从缓存或远程加载订阅规则
+ * @param {*} url
+ * @returns
+ */var loadOrFetchSubRules=function loadOrFetchSubRules(_x5){return(subRules_ref7=subRules_ref7||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee5(url){var rules;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.next=2;return getSubRules(url);case 2:rules=_context5.sent;if(!(!rules||rules.length===0)){_context5.next=9;break;}_context5.next=6;return syncSubRules(url);case 6:rules=_context5.sent;_context5.next=9;return updateSyncDataCache(url);case 9:return _context5.abrupt("return",rules||[]);case 10:case"end":return _context5.stop();}},_callee5);}))).apply(this,arguments);};
+;// CONCATENATED MODULE: ./src/libs/rules.js
+var rules_ref2,rules_ref9;/**
+ * 根据href匹配规则
+ * @param {*} rules
+ * @param {string} href
+ * @returns
+ */var matchRule=function matchRule(_x,_x2,_x3){return(rules_ref2=rules_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(rules,href,_ref){var _rule$selector;var _ref$injectRules,injectRules,_ref$subrulesList,subrulesList,_ref$owSubrule,owSubrule,selectedSub,_rules,mixRule,subRules,rule,globalRule,_rule$bgColor,_rule$textDiyStyle;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_ref$injectRules=_ref.injectRules,injectRules=_ref$injectRules===void 0?true:_ref$injectRules,_ref$subrulesList=_ref.subrulesList,subrulesList=_ref$subrulesList===void 0?DEFAULT_SUBRULES_LIST:_ref$subrulesList,_ref$owSubrule=_ref.owSubrule,owSubrule=_ref$owSubrule===void 0?DEFAULT_OW_RULE:_ref$owSubrule;rules=(0,toConsumableArray/* default */.Z)(rules);if(!injectRules){_context.next=18;break;}_context.prev=3;selectedSub=subrulesList.find(function(item){return item.selected;});if(!(selectedSub!==null&&selectedSub!==void 0&&selectedSub.url)){_context.next=13;break;}mixRule={};Object.entries(owSubrule).filter(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];if(owSubrule.textStyle===REMAIN_KEY&&(key==="bgColor"||key==="textDiyStyle")){return false;}return val!==REMAIN_KEY;}).forEach(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,2),key=_ref6[0],val=_ref6[1];mixRule[key]=val;});_context.next=10;return loadOrFetchSubRules(selectedSub.url);case 10:subRules=_context.sent;subRules=subRules.map(function(item){return _objectSpread2(_objectSpread2({},item),mixRule);});(_rules=rules).splice.apply(_rules,[-1,0].concat((0,toConsumableArray/* default */.Z)(subRules)));case 13:_context.next=18;break;case 15:_context.prev=15;_context.t0=_context["catch"](3);console.log("[load injectRules]",_context.t0);case 18:rule=rules.find(function(r){return r.pattern.split(",").some(function(p){return isMatch(href,p.trim());});});globalRule=rules.find(function(r){return r.pattern===GLOBAL_KEY;})||GLOBLA_RULE;if(rule){_context.next=22;break;}return _context.abrupt("return",globalRule);case 22:rule.selector=((_rule$selector=rule.selector)===null||_rule$selector===void 0?void 0:_rule$selector.trim())||globalRule.selector;if(rule.textStyle===GLOBAL_KEY){rule.textStyle=globalRule.textStyle;rule.bgColor=globalRule.bgColor;rule.textDiyStyle=globalRule.textDiyStyle;}else{rule.bgColor=((_rule$bgColor=rule.bgColor)===null||_rule$bgColor===void 0?void 0:_rule$bgColor.trim())||globalRule.bgColor;rule.textDiyStyle=((_rule$textDiyStyle=rule.textDiyStyle)===null||_rule$textDiyStyle===void 0?void 0:_rule$textDiyStyle.trim())||globalRule.textDiyStyle;}["translator","fromLang","toLang","transOpen"].forEach(function(key){if(rule[key]===GLOBAL_KEY){rule[key]=globalRule[key];}});return _context.abrupt("return",rule);case 26:case"end":return _context.stop();}},_callee,null,[[3,15]]);}))).apply(this,arguments);};/**
+ * 检查过滤rules
+ * @param {*} rules
+ * @returns
+ */var checkRules=function checkRules(rules){if(type(rules)==="string"){rules=JSON.parse(rules);}if(type(rules)!=="array"){throw new Error("data error");}var fromLangs=OPT_LANGS_FROM.map(function(item){return item[0];});var toLangs=OPT_LANGS_TO.map(function(item){return item[0];});var patternSet=new Set();rules=rules.filter(function(rule){return type(rule)==="object";}).filter(function(_ref7){var pattern=_ref7.pattern;if(type(pattern)!=="string"||patternSet.has(pattern.trim())){return false;}patternSet.add(pattern.trim());return true;}).map(function(_ref8){var pattern=_ref8.pattern,selector=_ref8.selector,translator=_ref8.translator,fromLang=_ref8.fromLang,toLang=_ref8.toLang,textStyle=_ref8.textStyle,transOpen=_ref8.transOpen,bgColor=_ref8.bgColor,textDiyStyle=_ref8.textDiyStyle;return{pattern:pattern.trim(),selector:type(selector)==="string"?selector:"",bgColor:type(bgColor)==="string"?bgColor:"",textDiyStyle:type(textDiyStyle)==="string"?textDiyStyle:"",translator:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_TRANS_ALL)),translator),fromLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(fromLangs)),fromLang),toLang:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(toLangs)),toLang),textStyle:matchValue([GLOBAL_KEY].concat((0,toConsumableArray/* default */.Z)(OPT_STYLE_ALL)),textStyle),transOpen:matchValue([GLOBAL_KEY,"true","false"],transOpen)};});return rules;};/**
+ * 保存或更新rule
+ * @param {*} newRule
+ */var saveRule=function saveRule(_x4){return(rules_ref9=rules_ref9||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(newRule){var rules,rule;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return getRulesWithDefault();case 2:rules=_context2.sent;rule=rules.find(function(item){return isMatch(newRule.pattern,item.pattern);});if(rule&&rule.pattern!==GLOBAL_KEY){Object.assign(rule,_objectSpread2(_objectSpread2({},newRule),{},{pattern:rule.pattern}));}else{rules.unshift(newRule);}_context2.next=7;return setRules(rules);case 7:trySyncRules(false,true);case 8:case"end":return _context2.stop();}},_callee2);}))).apply(this,arguments);};
+;// CONCATENATED MODULE: ./src/views/Popup/index.js
+function Popup(_ref){var _ref2,_ref3,_ref4;var setShowPopup=_ref.setShowPopup,tran=_ref.translator;var i18n=useI18n();var _useState=(0,react.useState)(tran===null||tran===void 0?void 0:tran.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var handleOpenSetting=function handleOpenSetting(){if(isExt){browser===null||browser===void 0?void 0:browser.runtime.openOptionsPage();}else{window.open("https://fishjar.github.io/kiss-translator/options.html","_blank");}setShowPopup&&setShowPopup(false);};var handleTransToggle=function handleTransToggle(_x){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(e){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setRule(_objectSpread2(_objectSpread2({},rule),{},{transOpen:e.target.checked?"true":"false"}));if(!isExt){_context.next=7;break;}_context.next=5;return sendTabMsg(MSG_TRANS_TOGGLE);case 5:_context.next=9;break;case 7:tran.toggle();sendIframeMsg(MSG_TRANS_TOGGLE);case 9:_context.next=14;break;case 11:_context.prev=11;_context.t0=_context["catch"](0);console.log("[toggle trans]",_context.t0);case 14:case"end":return _context.stop();}},_callee,null,[[0,11]]);}))).apply(this,arguments);};var handleChange=function handleChange(_x2){return(_ref3=_ref3||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$target,name,value;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_e$target=e.target,name=_e$target.name,value=_e$target.value;setRule(function(pre){return _objectSpread2(_objectSpread2({},pre),{},(0,defineProperty/* default */.Z)({},name,value));});if(!isExt){_context2.next=8;break;}_context2.next=6;return sendTabMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 6:_context2.next=10;break;case 8:tran.updateRule((0,defineProperty/* default */.Z)({},name,value));sendIframeMsg(MSG_TRANS_PUTRULE,(0,defineProperty/* default */.Z)({},name,value));case 10:_context2.next=15;break;case 12:_context2.prev=12;_context2.t0=_context2["catch"](0);console.log("[update rule]",_context2.t0);case 15:case"end":return _context2.stop();}},_callee2,null,[[0,12]]);}))).apply(this,arguments);};var handleClearCache=function handleClearCache(){try{caches.delete(config_CACHE_NAME);}catch(err){console.log("[clear cache]",err);}};var handleSaveRule=function handleSaveRule(){return(_ref4=_ref4||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee3(){var href,tab;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;href=window.location.href;if(!isExt){_context3.next=7;break;}_context3.next=5;return getTabInfo();case 5:tab=_context3.sent;href=tab.url;case 7:saveRule(_objectSpread2(_objectSpread2({},rule),{},{pattern:href}));_context3.next=13;break;case 10:_context3.prev=10;_context3.t0=_context3["catch"](0);console.log("[save rule]",_context3.t0);case 13:case"end":return _context3.stop();}},_callee3,null,[[0,10]]);}))).apply(this,arguments);};(0,react.useEffect)(function(){if(!isExt){return;}asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee4(){var res;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;_context4.next=3;return sendTabMsg(MSG_TRANS_GETRULE);case 3:res=_context4.sent;if(!res.error){setRule(res.data);}_context4.next=10;break;case 7:_context4.prev=7;_context4.t0=_context4["catch"](0);console.log("[query rule]",_context4.t0);case 10:case"end":return _context4.stop();}},_callee4,null,[[0,7]]);}))();},[]);if(!rule){return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{sx:{p:2},spacing:3,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})})]});}var transOpen=rule.transOpen,translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang,textStyle=rule.textStyle,bgColor=rule.bgColor;return/*#__PURE__*/(0,jsx_runtime.jsxs)(Box_Box,{minWidth:300,children:[isExt&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Header,{}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{sx:{p:2},spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(FormControlLabel_FormControlLabel,{control:/*#__PURE__*/(0,jsx_runtime.jsx)(Switch_Switch,{checked:transOpen==="true",onChange:handleTransToggle}),label:i18n("translate_alt")}),!isExt&&/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleClearCache,children:i18n("clear_cache")})]}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:translator,name:"translator",label:i18n("translate_service"),onChange:handleChange,children:OPT_TRANS_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:item},item);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:fromLang,name:"fromLang",label:i18n("from_lang"),onChange:handleChange,children:OPT_LANGS_FROM.map(function(_ref6){var _ref7=(0,slicedToArray/* default */.Z)(_ref6,2),lang=_ref7[0],name=_ref7[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:toLang,name:"toLang",label:i18n("to_lang"),onChange:handleChange,children:OPT_LANGS_TO.map(function(_ref8){var _ref9=(0,slicedToArray/* default */.Z)(_ref8,2),lang=_ref9[0],name=_ref9[1];return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:lang,children:name},lang);})}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{select:true,SelectProps:{MenuProps:{disablePortal:true}},size:"small",value:textStyle,name:"textStyle",label:i18n("text_style_alt"),onChange:handleChange,children:OPT_STYLE_ALL.map(function(item){return/*#__PURE__*/(0,jsx_runtime.jsx)(MenuItem_MenuItem,{value:item,children:i18n(item)},item);})}),OPT_STYLE_USE_COLOR.includes(textStyle)&&/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",name:"bgColor",value:bgColor,label:i18n("bg_color"),onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleSaveRule,children:i18n("save_rule")}),/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:handleOpenSetting,children:i18n("setting")})]})]})]});}
+;// CONCATENATED MODULE: ./src/libs/shortcut.js
+/**
+ * 键盘快捷键监听
+ * @param {*} fn
+ * @param {*} target
+ * @param {*} timeout
+ * @returns
+ */var shortcutListener=function shortcutListener(fn){var target=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3000;var allkeys=new Set();var curkeys=new Set();var timer=null;var handleKeydown=function handleKeydown(e){timer&&clearTimeout(timer);timer=setTimeout(function(){allkeys.clear();curkeys.clear();clearTimeout(timer);timer=null;},timeout);if(e.code){allkeys.add(e.key);curkeys.add(e.key);fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));}};var handleKeyup=function handleKeyup(e){curkeys.delete(e.key);if(curkeys.size===0){fn((0,toConsumableArray/* default */.Z)(curkeys),(0,toConsumableArray/* default */.Z)(allkeys));allkeys.clear();}};target.addEventListener("keydown",handleKeydown);target.addEventListener("keyup",handleKeyup);return function(){if(timer){clearTimeout(timer);timer=null;}target.removeEventListener("keydown",handleKeydown);target.removeEventListener("keyup",handleKeyup);};};/**
+ * 注册键盘快捷键
+ * @param {*} targetKeys
+ * @param {*} fn
+ * @param {*} target
+ * @returns
+ */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};/**
+ * 注册连续快捷键
+ * @param {*} targetKeys
+ * @param {*} fn
+ * @param {*} step
+ * @param {*} timeout
+ * @param {*} target
+ * @returns
+ */var stepShortcutRegister=function stepShortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var step=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3;var timeout=arguments.length>3&&arguments[3]!==undefined?arguments[3]:500;var target=arguments.length>4&&arguments[4]!==undefined?arguments[4]:document;var count=0;var pre=Date.now();var timer;return shortcutListener(function(curkeys,allkeys){timer&&clearTimeout(timer);timer=setTimeout(function(){clearTimeout(timer);count=0;},timeout);if(targetKeys.length>0&&curkeys.length===0){var now=Date.now();if((count===0||now-pre\n \n \n \n \n \n \n \n \n \n\n";
+;// CONCATENATED MODULE: ./src/views/Content/LoadingIcon.js
+function LoadingIcon(){return/*#__PURE__*/(0,jsx_runtime.jsx)("div",{style:{display:"inline-block",width:"1.2em",height:"1em"},dangerouslySetInnerHTML:{__html:loadingSvg}});}
+;// CONCATENATED MODULE: ./src/hooks/Translate.js
+/**
+ * 翻译hook
+ * @param {*} q
+ * @param {*} rule
+ * @param {*} setting
+ * @returns
+ */function useTranslate(q,rule,setting){var _useState=(0,react.useState)(""),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),text=_useState2[0],setText=_useState2[1];var _useState3=(0,react.useState)(false),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),loading=_useState4[0],setLoading=_useState4[1];var _useState5=(0,react.useState)(false),_useState6=(0,slicedToArray/* default */.Z)(_useState5,2),sameLang=_useState6[0],setSamelang=_useState6[1];var translator=rule.translator,fromLang=rule.fromLang,toLang=rule.toLang;(0,react.useEffect)(function(){asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setLoading(true);_context.next=4;return tryDetectLang(q);case 4:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=9;break;}setSamelang(true);_context.next=17;break;case 9:_context.next=11;return apiTranslate({translator:translator,text:q,fromLang:fromLang,toLang:toLang,apiSetting:(setting.transApis||DEFAULT_TRANS_APIS)[translator]});case 11:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];setText(trText);setSamelang(isSame);case 17:_context.next=22;break;case 19:_context.prev=19;_context.t0=_context["catch"](0);console.log("[translate]",_context.t0);case 22:_context.prev=22;setLoading(false);return _context.finish(22);case 25:case"end":return _context.stop();}},_callee,null,[[0,19,22,25]]);}))();},[q,translator,fromLang,toLang,setting]);return{text:text,sameLang:sameLang,loading:loading};}
+;// CONCATENATED MODULE: ./src/views/Content/index.js
+var Content_templateObject,Content_templateObject2,Content_templateObject3,Content_templateObject4;var LineSpan=(0,styled/* default */.ZP)("span")(Content_templateObject||(Content_templateObject=_taggedTemplateLiteral(["\n opacity: 0.6;\n -webkit-opacity: 0.6;\n text-decoration-line: underline;\n text-decoration-style: ",";\n text-decoration-color: ",";\n text-decoration-thickness: 2px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ",";\n -webkit-text-decoration-color: ",";\n -webkit-text-decoration-thickness: 2px;\n -webkit-text-underline-offset: 0.3em;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n"])),function(props){return props.$lineStyle;},function(props){return props.$lineColor;},function(props){return props.$lineStyle;},function(props){return props.$lineColor;});var FuzzySpan=(0,styled/* default */.ZP)("span")(Content_templateObject2||(Content_templateObject2=_taggedTemplateLiteral(["\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n"])));var HighlightSpan=(0,styled/* default */.ZP)("span")(Content_templateObject3||(Content_templateObject3=_taggedTemplateLiteral(["\n color: #fff;\n background-color: ",";\n"])),function(props){return props.$bgColor;});var DiySpan=(0,styled/* default */.ZP)("span")(Content_templateObject4||(Content_templateObject4=_taggedTemplateLiteral(["\n ","\n"])),function(props){return props.$diyStyle;});function StyledSpan(_ref){var textStyle=_ref.textStyle,textDiyStyle=_ref.textDiyStyle,bgColor=_ref.bgColor,children=_ref.children;switch(textStyle){case OPT_STYLE_LINE:// 下划线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"solid",$lineColor:bgColor,children:children});case OPT_STYLE_DOTLINE:// 点状线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dotted",$lineColor:bgColor,children:children});case OPT_STYLE_DASHLINE:// 虚线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"dashed",$lineColor:bgColor,children:children});case OPT_STYLE_WAVYLINE:// 波浪线
+return/*#__PURE__*/(0,jsx_runtime.jsx)(LineSpan,{$lineStyle:"wavy",$lineColor:bgColor,children:children});case OPT_STYLE_FUZZY:// 模糊
+return/*#__PURE__*/(0,jsx_runtime.jsx)(FuzzySpan,{children:children});case OPT_STYLE_HIGHLIGHT:// 高亮
+return/*#__PURE__*/(0,jsx_runtime.jsx)(HighlightSpan,{$bgColor:bgColor||DEFAULT_COLOR,children:children});case OPT_STYLE_DIY:// 自定义
+return/*#__PURE__*/(0,jsx_runtime.jsx)(DiySpan,{$diyStyle:textDiyStyle,children:children});default:return/*#__PURE__*/(0,jsx_runtime.jsx)("span",{children:children});}}function Content(_ref2){var q=_ref2.q,translator=_ref2.translator;var _useState=(0,react.useState)(translator.rule),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),rule=_useState2[0],setRule=_useState2[1];var _useTranslate=useTranslate(q,rule,translator.setting),text=_useTranslate.text,sameLang=_useTranslate.sameLang,loading=_useTranslate.loading;var textStyle=rule.textStyle,_rule$bgColor=rule.bgColor,bgColor=_rule$bgColor===void 0?"":_rule$bgColor,_rule$textDiyStyle=rule.textDiyStyle,textDiyStyle=_rule$textDiyStyle===void 0?"":_rule$textDiyStyle;var _translator$setting$n=translator.setting.newlineLength,newlineLength=_translator$setting$n===void 0?TRANS_NEWLINE_LENGTH:_translator$setting$n;var handleKissEvent=function handleKissEvent(e){var _e$detail=e.detail,action=_e$detail.action,args=_e$detail.args;switch(action){case MSG_TRANS_CURRULE:setRule(args);break;default:}};(0,react.useEffect)(function(){window.addEventListener(translator.eventName,handleKissEvent);return function(){window.removeEventListener(translator.eventName,handleKissEvent);};},[translator.eventName]);if(loading){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(LoadingIcon,{})]});}if(text&&!sameLang){return/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[q.length>newlineLength?/*#__PURE__*/(0,jsx_runtime.jsx)("br",{}):" ",/*#__PURE__*/(0,jsx_runtime.jsx)(StyledSpan,{textStyle:textStyle,textDiyStyle:textDiyStyle,bgColor:bgColor,children:text})]});}}
+;// CONCATENATED MODULE: ./src/libs/translator.js
+function isInputNode(node){return node.nodeName==="INPUT"||node.nodeName==="TEXTAREA";}function isEditAbleNode(node){return node.hasAttribute("contenteditable");}function selectContent(node){node.focus();var range=document.createRange();range.selectNodeContents(node);var selection=window.getSelection();selection.removeAllRanges();selection.addRange(range);}function pasteContentEvent(node,text){node.focus();var data=new DataTransfer();data.setData("text/plain",text);var event=new ClipboardEvent("paste",{clipboardData:data});document.dispatchEvent(event);data.clearData();}function pasteContentCommand(node,text){node.focus();document.execCommand("insertText",false,text);}function collapseToEnd(node){node.focus();var selection=window.getSelection();selection.collapseToEnd();}function getNodeText(node){if(isInputNode(node)){return node.value;}return node.innerText||node.textContent||"";}function addLoading(node,loadingId){var _node$offsetParent;var div=document.createElement("div");div.id=loadingId;div.innerHTML=loadingSvg;div.style.cssText="\n width: ".concat(node.offsetWidth,"px;\n height: ").concat(node.offsetHeight,"px;\n line-height: ").concat(node.offsetHeight,"px;\n position: absolute;\n text-align: center;\n left: ").concat(node.offsetLeft,"px;\n top: ").concat(node.offsetTop,"px;\n z-index: 2147483647;\n ");(_node$offsetParent=node.offsetParent)===null||_node$offsetParent===void 0?void 0:_node$offsetParent.appendChild(div);}function removeLoading(loadingId){var div=document.getElementById(loadingId);if(div){div.remove();}}/**
+ * 翻译类
+ */var Translator=/*#__PURE__*/function(){function Translator(rule,setting){var _this2=this;_classCallCheck(this,Translator);this._rule={};this._inputRule={};this._setting={};this._rootNodes=new Set();this._tranNodes=new Map();this._skipNodeNames=[APP_LCNAME,"style","svg","img","audio","video","textarea","input","button","select","option","head","script","iframe"];this._eventName=utils_genEventName();// 显示
+this._interseObserver=new IntersectionObserver(function(intersections){intersections.forEach(function(intersection){if(intersection.isIntersecting){_this2._render(intersection.target);_this2._interseObserver.unobserve(intersection.target);}});},{threshold:0.1});// 变化
+this._mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(!_this2._skipNodeNames.includes(mutation.target.localName)&&mutation.addedNodes.length>0){var nodes=Array.from(mutation.addedNodes).filter(function(node){if(_this2._skipNodeNames.includes(node.localName)||node.id===APP_LCNAME){return false;}return true;});if(nodes.length>0){// const rootNode = mutation.target.getRootNode();
+// todo
+_this2._reTranslate();}}});});// 插入 shadowroot
+this._overrideAttachShadow=function(){var _this=_this2;var _attachShadow=HTMLElement.prototype.attachShadow;HTMLElement.prototype.attachShadow=function(){_this._reTranslate();return _attachShadow.apply(this,arguments);};};this.updateRule=function(obj){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),obj);};this.toggle=function(){if(_this2.rule.transOpen==="true"){_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"false"});_this2._unRegister();}else{_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{transOpen:"true"});_this2._register();}};this.toggleStyle=function(){var textStyle=_this2.rule.textStyle===OPT_STYLE_FUZZY?OPT_STYLE_DASHLINE:OPT_STYLE_FUZZY;_this2.rule=_objectSpread2(_objectSpread2({},_this2.rule),{},{textStyle:textStyle});};this._querySelectorAll=function(selector,node){try{return Array.from(node.querySelectorAll(selector));}catch(err){console.log("[querySelectorAll err]: ".concat(selector));}return[];};this._queryFilter=function(selector,rootNode){return _this2._querySelectorAll(selector,rootNode).filter(function(node){return _this2._queryFilter(selector,node).length===0;});};this._queryNodes=function(){var rootNode=arguments.length>0&&arguments[0]!==undefined?arguments[0]:document;// const childRoots = Array.from(rootNode.querySelectorAll("*"))
+// .map((item) => item.shadowRoot)
+// .filter(Boolean);
+// const childNodes = childRoots.map((item) => this._queryNodes(item));
+// const nodes = Array.from(rootNode.querySelectorAll(this.rule.selector));
+// return nodes.concat(childNodes).flat();
+_this2._rootNodes.add(rootNode);_this2._rule.selector.split(";").map(function(item){return item.trim();}).filter(Boolean).forEach(function(selector){if(selector.includes(SHADOW_KEY)){var _selector$split$map=selector.split(SHADOW_KEY).map(function(item){return item.trim();}),_selector$split$map2=(0,slicedToArray/* default */.Z)(_selector$split$map,2),outSelector=_selector$split$map2[0],inSelector=_selector$split$map2[1];if(outSelector&&inSelector){var outNodes=_this2._querySelectorAll(outSelector,rootNode);outNodes.forEach(function(outNode){if(outNode.shadowRoot){_this2._rootNodes.add(outNode.shadowRoot);_this2._queryFilter(inSelector,outNode.shadowRoot).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});}}else{_this2._queryFilter(selector,rootNode).forEach(function(item){if(!_this2._tranNodes.has(item)){_this2._tranNodes.set(item,"");}});}});};this._register=function(){if(_this2._rule.fromLang===_this2._rule.toLang){return;}// 搜索节点
+_this2._queryNodes();_this2._rootNodes.forEach(function(node){// 监听节点变化;
+_this2._mutaObserver.observe(node,{childList:true,subtree:true// characterData: true,
+});});_this2._tranNodes.forEach(function(_,node){if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 监听节点显示
+_this2._interseObserver.observe(node);}else{// 监听鼠标悬停
+node.addEventListener("mouseover",_this2._handleMouseover);}});};this._registerInput=function(){var _this2$_inputRule=_this2._inputRule,initTriggerShortcut=_this2$_inputRule.triggerShortcut,translator=_this2$_inputRule.translator,fromLang=_this2$_inputRule.fromLang,initToLang=_this2$_inputRule.toLang,initTriggerCount=_this2$_inputRule.triggerCount,triggerTime=_this2$_inputRule.triggerTime,transSign=_this2$_inputRule.transSign;var apiSetting=(_this2._setting.transApis||DEFAULT_TRANS_APIS)[translator];var triggerShortcut=initTriggerShortcut;var triggerCount=initTriggerCount;if(triggerShortcut.length===0){triggerShortcut=DEFAULT_INPUT_SHORTCUT;triggerCount=1;}stepShortcutRegister(triggerShortcut,/*#__PURE__*/asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var node,initText,text,toLang,res,lang,loadingId,deLang,_yield$apiTranslate,_yield$apiTranslate2,trText,isSame;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:node=document.activeElement;if(!(!node||!(isInputNode(node)||isEditAbleNode(node)))){_context.next=3;break;}return _context.abrupt("return");case 3:initText=getNodeText(node);if(triggerShortcut.length===1&&triggerShortcut[0].length===1){// todo: remove multiple char
+initText=removeEndchar(initText,triggerShortcut[0],triggerCount);}if(initText.trim()){_context.next=7;break;}return _context.abrupt("return");case 7:text=initText;toLang=initToLang;if(transSign){res=matchInputStr(text,transSign);if(res){lang=res[1];if(lang==="zh"||lang==="cn"){lang="zh-CN";}else if(lang==="tw"||lang==="hk"){lang="zh-TW";}if(lang&&OPT_LANGS_LIST.includes(lang)){toLang=lang;}text=res[2];}}// console.log("input -->", text);
+loadingId="kiss-"+utils_genEventName();_context.prev=11;addLoading(node,loadingId);_context.next=15;return tryDetectLang(text);case 15:deLang=_context.sent;if(!(deLang&&toLang.includes(deLang))){_context.next=18;break;}return _context.abrupt("return");case 18:_context.next=20;return apiTranslate({translator:translator,text:text,fromLang:fromLang,toLang:toLang,apiSetting:apiSetting});case 20:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,2);trText=_yield$apiTranslate2[0];isSame=_yield$apiTranslate2[1];if(!(!trText||isSame)){_context.next=26;break;}return _context.abrupt("return");case 26:if(!isInputNode(node)){_context.next=30;break;}node.value=trText;node.dispatchEvent(new Event("input",{bubbles:true,cancelable:true}));return _context.abrupt("return");case 30:selectContent(node);_context.next=33;return sleep(200);case 33:pasteContentEvent(node,trText);_context.next=36;return sleep(200);case 36:if(!getNodeText(node).startsWith(initText)){_context.next=42;break;}pasteContentCommand(node,trText);_context.next=40;return sleep(100);case 40:_context.next=43;break;case 42:collapseToEnd(node);case 43:_context.next=48;break;case 45:_context.prev=45;_context.t0=_context["catch"](11);console.log("[translate input]",_context.t0.message);case 48:_context.prev=48;removeLoading(loadingId);return _context.finish(48);case 51:case"end":return _context.stop();}},_callee,null,[[11,45,48,51]]);})),triggerCount,triggerTime);};this._handleMouseover=function(e){var key=_this2._setting.mouseKey.slice(3);if(_this2._setting.mouseKey===OPT_MOUSEKEY_MOUSEOVER||e[key]){e.target.removeEventListener("mouseover",_this2._handleMouseover);_this2._render(e.target);}};this._unRegister=function(){// 解除节点变化监听
+_this2._mutaObserver.disconnect();// 解除节点显示监听
+// this._interseObserver.disconnect();
+_this2._tranNodes.forEach(function(_,node){var _node$querySelector;if(!_this2._setting.mouseKey||_this2._setting.mouseKey===OPT_MOUSEKEY_DISABLE){// 解除节点显示监听
+_this2._interseObserver.unobserve(node);}else{// 移除鼠标悬停监听
+node.removeEventListener("mouseover",_this2._handleMouseover);}// 移除已插入元素
+(_node$querySelector=node.querySelector(APP_LCNAME))===null||_node$querySelector===void 0?void 0:_node$querySelector.remove();});// 清空节点集合
+_this2._rootNodes.clear();_this2._tranNodes.clear();// 清空任务池
+clearFetchPool();};this._reTranslate=debounce(function(){if(_this2._rule.transOpen==="true"){_this2._register();}},500);this._render=function(el){var _this2$_setting$minLe,_this2$_setting$maxLe;var traEl=el.querySelector(APP_LCNAME);// 已翻译
+if(traEl){var preText=_this2._tranNodes.get(el);var curText=el.innerText.trim();// const traText = traEl.innerText.trim();
+// todo
+// 1. traText when loading
+// 2. replace startsWith
+if(curText.startsWith(preText)){return;}traEl.remove();}var q=el.innerText.trim();_this2._tranNodes.set(el,q);// 太长或太短
+if(!q||q.length<((_this2$_setting$minLe=_this2._setting.minLength)!==null&&_this2$_setting$minLe!==void 0?_this2$_setting$minLe:TRANS_MIN_LENGTH)||q.length>((_this2$_setting$maxLe=_this2._setting.maxLength)!==null&&_this2$_setting$maxLe!==void 0?_this2$_setting$maxLe:TRANS_MAX_LENGTH)){return;}// console.log("---> ", q);
+traEl=document.createElement(APP_LCNAME);traEl.style.visibility="visible";el.appendChild(traEl);el.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";if(el.parentElement){el.parentElement.style.cssText+="-webkit-line-clamp: unset; max-height: none; height: auto;";}var root=(0,client.createRoot)(traEl);root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(Content,{q:q,translator:_this2}));};var fetchInterval=setting.fetchInterval,fetchLimit=setting.fetchLimit;updateFetchPool(fetchInterval,fetchLimit);this._overrideAttachShadow();this._setting=setting;this._rule=rule;if(rule.transOpen==="true"){this._register();}this._inputRule=setting.inputRule||DEFAULT_INPUT_RULE;if(this._inputRule.transOpen){this._registerInput();}}_createClass(Translator,[{key:"setting",get:function get(){return this._setting;}},{key:"eventName",get:function get(){return this._eventName;}},{key:"rule",get:function get(){// console.log("get rule", this._rule);
+return this._rule;},set:function set(rule){// console.log("set rule", rule);
+this._rule=rule;// 广播消息
+var eventName=this._eventName;window.dispatchEvent(new CustomEvent(eventName,{detail:{action:MSG_TRANS_CURRULE,args:rule}}));}}]);return Translator;}();
+;// CONCATENATED MODULE: ./src/libs/gm.js
+var gm_ref;var MSG_GM_xmlHttpRequest="xmlHttpRequest";var MSG_GM_setValue="setValue";var MSG_GM_getValue="getValue";var MSG_GM_deleteValue="deleteValue";var MSG_GM_info="info";/**
+ * 注入页面的脚本,请求并接受GM接口信息
+ * @param {*} param0
+ */var injectScript=function injectScript(ping){window.APP_INFO={name:"KISS Translator",version:"1.7.1",eventName:ping};};/**
+ * 适配GM脚本
+ */var adaptScript=function adaptScript(ping){var _getInfo;var promiseGM=function promiseGM(action,args){var timeout=arguments.length>2&&arguments[2]!==undefined?arguments[2]:5000;return new Promise(function(resolve,reject){var pong=genEventName();var handleEvent=function handleEvent(e){window.removeEventListener(pong,handleEvent);var _e$detail=e.detail,data=_e$detail.data,error=_e$detail.error;if(error){reject(new Error(error));}else{resolve(data);}};window.addEventListener(pong,handleEvent);window.dispatchEvent(new CustomEvent(ping,{detail:{action:action,args:args,pong:pong}}));setTimeout(function(){window.removeEventListener(pong,handleEvent);reject(new Error("timeout"));},timeout);});};window.KISS_GM={fetch:function fetch(input,init){return promiseGM(MSG_GM_xmlHttpRequest,{input:input,init:init});},setValue:function setValue(key,val){return promiseGM(MSG_GM_setValue,{key:key,val:val});},getValue:function getValue(key){return promiseGM(MSG_GM_getValue,{key:key});},deleteValue:function deleteValue(key){return promiseGM(MSG_GM_deleteValue,{key:key});},getInfo:function getInfo(){return(_getInfo=_getInfo||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(window.GM_info){_context.next=4;break;}_context.next=3;return promiseGM(MSG_GM_info);case 3:window.GM_info=_context.sent;case 4:return _context.abrupt("return",window.GM_info);case 5:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);}};};/**
+ * 监听并回应页面对GM接口的请求
+ * @param {*} param0
+ */var handlePing=function handlePing(_x){return(gm_ref=gm_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(e){var _e$detail2,action,args,pong,res,input,init,key,val;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_e$detail2=e.detail,action=_e$detail2.action,args=_e$detail2.args,pong=_e$detail2.pong;_context2.prev=1;_context2.t0=action;_context2.next=_context2.t0===MSG_GM_xmlHttpRequest?5:_context2.t0===MSG_GM_setValue?10:_context2.t0===MSG_GM_getValue?15:_context2.t0===MSG_GM_deleteValue?19:_context2.t0===MSG_GM_info?23:25;break;case 5:input=args.input,init=args.init;_context2.next=8;return fetchGM(input,init);case 8:res=_context2.sent;return _context2.abrupt("break",26);case 10:key=args.key,val=args.val;_context2.next=13;return GM.setValue(key,val);case 13:res=val;return _context2.abrupt("break",26);case 15:_context2.next=17;return GM.getValue(args.key);case 17:res=_context2.sent;return _context2.abrupt("break",26);case 19:_context2.next=21;return GM.deleteValue(args.key);case 21:res="ok";return _context2.abrupt("break",26);case 23:res=GM.info;return _context2.abrupt("break",26);case 25:throw new Error("message action is unavailable: ".concat(action));case 26:window.dispatchEvent(new CustomEvent(pong,{detail:{data:res}}));_context2.next=32;break;case 29:_context2.prev=29;_context2.t1=_context2["catch"](1);window.dispatchEvent(new CustomEvent(pong,{detail:{error:_context2.t1.message}}));case 32:case"end":return _context2.stop();}},_callee2,null,[[1,29]]);}))).apply(this,arguments);};
;// CONCATENATED MODULE: ./src/userscript.js
var userscript_ref;/**
* 入口函数
- */var init=function init(){return(userscript_ref=userscript_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var _GM,_GM$info,_GM$info$script,_GM$info$script$grant,ping,script,href,setting,rules,rule,translator,fab,$action,shadowContainer,emotionRoot,shadowRootElement,cache;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(document.location.href.includes("http://localhost:3000/options.html")||document.location.href.includes("https://fishjar.github.io/kiss-translator/options.html")||document.location.href.includes("https://kiss-translator.rayjar.com/options"))){_context.next=3;break;}if((_GM=GM)!==null&&_GM!==void 0&&(_GM$info=_GM.info)!==null&&_GM$info!==void 0&&(_GM$info$script=_GM$info.script)!==null&&_GM$info$script!==void 0&&(_GM$info$script$grant=_GM$info$script.grant)!==null&&_GM$info$script$grant!==void 0&&_GM$info$script$grant.includes("unsafeWindow")){unsafeWindow.GM=GM;unsafeWindow.APP_INFO={name:"KISS Translator",version:"1.7.0"};}else{ping=utils_genEventName();window.addEventListener(ping,handlePing);// window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line
+ */var init=function init(){return(userscript_ref=userscript_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var _GM,_GM$info,_GM$info$script,_GM$info$script$grant,ping,script,href,setting,rules,rule,translator,fab,$action,shadowContainer,emotionRoot,shadowRootElement,cache;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(document.location.href.includes("http://localhost:3000/options.html")||document.location.href.includes("https://fishjar.github.io/kiss-translator/options.html")||document.location.href.includes("https://kiss-translator.rayjar.com/options"))){_context.next=3;break;}if((_GM=GM)!==null&&_GM!==void 0&&(_GM$info=_GM.info)!==null&&_GM$info!==void 0&&(_GM$info$script=_GM$info.script)!==null&&_GM$info$script!==void 0&&(_GM$info$script$grant=_GM$info$script.grant)!==null&&_GM$info$script$grant!==void 0&&_GM$info$script$grant.includes("unsafeWindow")){unsafeWindow.GM=GM;unsafeWindow.APP_INFO={name:"KISS Translator",version:"1.7.1"};}else{ping=utils_genEventName();window.addEventListener(ping,handlePing);// window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line
script=document.createElement("script");script.textContent="(".concat(injectScript,")(\"").concat(ping,"\")");document.head.append(script);}return _context.abrupt("return");case 3:// 翻译页面
href=isIframe?document.referrer:document.location.href;_context.next=6;return getSettingWithDefault();case 6:setting=_context.sent;_context.next=9;return getRulesWithDefault();case 9:rules=_context.sent;_context.next=12;return matchRule(rules,href,setting);case 12:rule=_context.sent;translator=new Translator(rule,setting);webfix(href,setting);if(!isIframe){_context.next=18;break;}// iframe
window.addEventListener("message",function(e){var _e$data;var action=e===null||e===void 0?void 0:(_e$data=e.data)===null||_e$data===void 0?void 0:_e$data.action;switch(action){case MSG_TRANS_TOGGLE:translator.toggle();break;case MSG_TRANS_PUTRULE:translator.updateRule(e.data.args||{});break;default:}});return _context.abrupt("return");case 18:_context.next=20;return getFabWithDefault();case 20:fab=_context.sent;$action=document.createElement("div");$action.setAttribute("id","kiss-translator");document.body.parentElement.appendChild($action);shadowContainer=$action.attachShadow({mode:"closed"});emotionRoot=document.createElement("style");shadowRootElement=document.createElement("div");shadowContainer.appendChild(emotionRoot);shadowContainer.appendChild(shadowRootElement);cache=(0,emotion_cache_browser_esm/* default */.Z)({key:"css",prepend:true,container:emotionRoot});client.createRoot(shadowRootElement).render(/*#__PURE__*/(0,jsx_runtime.jsx)(react.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(emotion_element_c39617d8_browser_esm.C,{value:cache,children:/*#__PURE__*/(0,jsx_runtime.jsx)(Action,{translator:translator,fab:fab})})}));// 同步订阅规则
diff --git a/main.js b/main.js
index 6ae43a9..892b677 100644
--- a/main.js
+++ b/main.js
@@ -13991,7 +13991,7 @@ tags.forEach(function (tagName) {
;// CONCATENATED MODULE: ./node_modules/@mui/styled-engine/index.js
/**
- * @mui/styled-engine v5.14.8
+ * @mui/styled-engine v5.14.9
*
* @license MIT
* This source code is licensed under the MIT license found in the
@@ -33255,6 +33255,14 @@ var buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textIn
var ButtonGroupContext = /*#__PURE__*/react.createContext({});
if (false) {}
/* harmony default export */ var ButtonGroup_ButtonGroupContext = (ButtonGroupContext);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js
+
+/**
+ * @ignore - internal component.
+ */
+var ButtonGroupButtonContext = /*#__PURE__*/react.createContext(undefined);
+if (false) {}
+/* harmony default export */ var ButtonGroup_ButtonGroupButtonContext = (ButtonGroupButtonContext);
;// CONCATENATED MODULE: ./node_modules/@mui/material/Button/Button.js
'use client';
@@ -33276,6 +33284,7 @@ var Button_excluded = ["children", "color", "component", "className", "disabled"
+
var Button_useUtilityClasses = function useUtilityClasses(ownerState) {
var color = ownerState.color,
disableElevation = ownerState.disableElevation,
@@ -33475,6 +33484,7 @@ var ButtonEndIcon = styles_styled('span', {
var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
// props priority: `inProps` > `contextProps` > `themeDefaultProps`
var contextProps = react.useContext(ButtonGroup_ButtonGroupContext);
+ var buttonGroupButtonContextPositionClassName = react.useContext(ButtonGroup_ButtonGroupButtonContext);
var resolvedProps = resolveProps(contextProps, inProps);
var props = useThemeProps_useThemeProps({
props: resolvedProps,
@@ -33525,9 +33535,10 @@ var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
ownerState: ownerState,
children: endIconProp
});
+ var positionClassName = buttonGroupButtonContextPositionClassName || '';
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonRoot, extends_extends({
ownerState: ownerState,
- className: dist_clsx(contextProps.className, classes.root, className),
+ className: dist_clsx(contextProps.className, classes.root, className, positionClassName),
component: component,
disabled: disabled,
focusRipple: !disableFocusRipple,
@@ -34212,9 +34223,9 @@ var els="li, p, h1, h2, h3, h4, h5, h6, dd, blockquote";var DEFAULT_SELECTOR=":i
;// CONCATENATED MODULE: ./src/config/app.js
var APP_NAME="KISS Translator".trim().split(/\s+/).join("-");var APP_LCNAME=APP_NAME.toLowerCase();
;// CONCATENATED MODULE: ./src/config/i18n.js
-var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"}};
+var UI_LANGS=(/* unused pure expression or super */ null && ([["en","English"],["zh","中文"]]));var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"},input_setting:{zh:"\u8F93\u5165\u6846\u8BBE\u7F6E",en:"Input Box Setting"},input_box_translation:{zh:"\u542F\u7528\u8F93\u5165\u6846\u7FFB\u8BD1",en:"Input Box Translation"},input_selector:{zh:"\u8F93\u5165\u6846\u9009\u62E9\u5668",en:"Input Selector"},input_selector_helper:{zh:"\u7528\u4E8E\u8F93\u5165\u6846\u7FFB\u8BD1\u3002",en:"Used for input box translation."},trigger_trans_shortcut:{zh:"\u89E6\u53D1\u7FFB\u8BD1\u5FEB\u6377\u952E",en:"Trigger Translation Shortcut Keys"},trigger_trans_shortcut_help:{zh:"\u9ED8\u8BA4\u4E3A\u5355\u51FB\u201CAlt+i\u201D",en:"Default is \"Alt+i\""},shortcut_press_count:{zh:"\u5FEB\u6377\u952E\u8FDE\u51FB\u6B21\u6570",en:"Shortcut Press Number"},combo_timeout:{zh:"\u8FDE\u51FB\u8D85\u65F6\u65F6\u95F4 (10-1000ms)",en:"Combo Timeout (10-1000ms)"},input_trans_start_sign:{zh:"\u7FFB\u8BD1\u8D77\u59CB\u6807\u8BC6",en:"Translation Start Sign"},input_trans_start_sign_help:{zh:"\u6807\u8BC6\u540E\u9762\u53EF\u4EE5\u52A0\u76EE\u6807\u8BED\u8A00\u4EE3\u7801\uFF0C\u5982\uFF1A \u201C/en \u4F60\u597D\u201D\u3001\u201C/zh hello\u201D",en:"The target language code can be added after the sign, such as: \"/en \u4F60\u597D\", \"/zh hello\""}};
;// CONCATENATED MODULE: ./src/config/index.js
-var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var STOKEY_SETTING="".concat(APP_NAME,"_setting");var STOKEY_RULES="".concat(APP_NAME,"_rules");var STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var KV_SALT_SHARE="KISS-Translator-SHARE";var CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat(toConsumableArray_toConsumableArray(OPT_LANGS_FROM.map(function(_ref){var _ref2=_slicedToArray(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=_slicedToArray(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_STYLE_NONE="style_none";// 无
+var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var STOKEY_SETTING="".concat(APP_NAME,"_setting");var STOKEY_RULES="".concat(APP_NAME,"_rules");var STOKEY_SYNC="".concat(APP_NAME,"_sync");var STOKEY_FAB="".concat(APP_NAME,"_fab");var STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var KV_SALT_SHARE="KISS-Translator-SHARE";var CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var MSG_FETCH_LIMIT="fetch_limit";var MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat(toConsumableArray_toConsumableArray(OPT_LANGS_FROM.map(function(_ref){var _ref2=_slicedToArray(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=_slicedToArray(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),_defineProperty(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_LANGS_LIST=OPT_LANGS_TO.map(function(_ref5){var _ref6=_slicedToArray(_ref5,1),lang=_ref6[0];return lang;});var OPT_STYLE_NONE="style_none";// 无
var OPT_STYLE_LINE="under_line";// 下划线
var OPT_STYLE_DOTLINE="dot_line";// 点状线
var OPT_STYLE_DASHLINE="dash_line";// 虚线
@@ -34228,7 +34239,8 @@ var PROMPT_PLACE_FROM="{{from}}";// 占位符
var PROMPT_PLACE_TO="{{to}}";// 占位符
var DEFAULT_COLOR="#209CEE";// 默认高亮背景色/线条颜色
// 全局规则
-var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 订阅列表
+var GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 输入框翻译
+var OPT_INPUT_TRANS_SIGNS=["/","//","\\","\\\\",">",">>"];var DEFAULT_INPUT_SHORTCUT=["Alt","i"];var DEFAULT_INPUT_RULE={transOpen:true,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"en",triggerShortcut:DEFAULT_INPUT_SHORTCUT,triggerCount:1,triggerTime:200,transSign:OPT_INPUT_TRANS_SIGNS[0]};// 订阅列表
var DEFAULT_SUBRULES_LIST=[{url:"https://fishjar.github.io/kiss-rules/kiss-rules.json",selected:false},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on.json",selected:true},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off.json",selected:false}];// 翻译接口
var DEFAULT_TRANS_APIS=(_DEFAULT_TRANS_APIS={},_defineProperty(_DEFAULT_TRANS_APIS,OPT_TRANS_GOOGLE,{url:"https://translate.googleapis.com/translate_a/single",key:""}),_defineProperty(_DEFAULT_TRANS_APIS,OPT_TRANS_MICROSOFT,{url:"https://api-edge.cognitive.microsofttranslator.com/translate",authUrl:"https://edge.microsoft.com/translate/auth"}),_defineProperty(_DEFAULT_TRANS_APIS,OPT_TRANS_DEEPL,{url:"https://api-free.deepl.com/v2/translate",key:""}),_defineProperty(_DEFAULT_TRANS_APIS,OPT_TRANS_OPENAI,{url:"https://api.openai.com/v1/chat/completion",key:"",model:"gpt-4",prompt:"You will be provided with a sentence in ".concat(PROMPT_PLACE_FROM,", and your task is to translate it into ").concat(PROMPT_PLACE_TO,".")}),_defineProperty(_DEFAULT_TRANS_APIS,OPT_TRANS_CUSTOMIZE,{url:"",key:""}),_DEFAULT_TRANS_APIS);// 默认快捷键
var OPT_SHORTCUT_TRANSLATE="toggleTranslate";var OPT_SHORTCUT_STYLE="toggleStyle";var OPT_SHORTCUT_POPUP="togglePopup";var OPT_SHORTCUT_SETTING="openSetting";var DEFAULT_SHORTCUTS=(_DEFAULT_SHORTCUTS={},_defineProperty(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_TRANSLATE,["Alt","q"]),_defineProperty(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_STYLE,["Alt","c"]),_defineProperty(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_POPUP,["Alt","k"]),_defineProperty(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_SETTING,["Alt","o"]),_DEFAULT_SHORTCUTS);var TRANS_MIN_LENGTH=5;// 最短翻译长度
@@ -34246,14 +34258,15 @@ owSubrule:DEFAULT_OW_RULE,// 覆写订阅规则
transApis:DEFAULT_TRANS_APIS,// 翻译接口
mouseKey:OPT_MOUSEKEY_DISABLE,// 鼠标悬停翻译
shortcuts:DEFAULT_SHORTCUTS,// 快捷键
-hideFab:false// 是否隐藏按钮
+hideFab:false,// 是否隐藏按钮
+inputRule:DEFAULT_INPUT_RULE// 输入框设置
};var DEFAULT_RULES=[GLOBLA_RULE];var DEFAULT_SYNC={syncUrl:"",// 数据同步接口
syncKey:"",// 数据同步密钥
settingUpdateAt:0,settingSyncAt:0,rulesUpdateAt:0,rulesSyncAt:0,subRulesSyncAt:0,// 订阅规则同步时间
dataCaches:{}// 缓存同步时间
};
;// CONCATENATED MODULE: ./src/index.js
-function App(){var _I18N$about_md;var _useState=(0,react.useState)("zh"),_useState2=_slicedToArray(_useState,2),lang=_useState2[0],setLang=_useState2[1];var _useFetch=useFetch("".concat(URL_RAW_PREFIX,"/").concat(I18N===null||I18N===void 0?void 0:(_I18N$about_md=I18N["about_md"])===null||_I18N$about_md===void 0?void 0:_I18N$about_md[lang])),_useFetch2=_slicedToArray(_useFetch,3),data=_useFetch2[0],loading=_useFetch2[1],error=_useFetch2[2];return/*#__PURE__*/(0,jsx_runtime.jsxs)(Paper_Paper,{sx:{padding:2,margin:2},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{spacing:2,direction:"row",justifyContent:"flex-end",children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:function onClick(){setLang(function(pre){return pre==="zh"?"en":"zh";});},children:lang==="zh"?"ENGLISH":"中文"})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.0")})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:2,direction:"row",useFlexGap:true,flexWrap:"wrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator.user.js",children:"Install Userscript 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator.user.js",children:"Install Userscript 2"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js",children:"Install Userscript Safari 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",children:"Install Userscript Safari 2"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/options.html",children:"Open Options Page 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/options",children:"Open Options Page 2"})]}),loading?/*#__PURE__*/(0,jsx_runtime.jsx)("center",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(CircularProgress_CircularProgress,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(ReactMarkdown,{children:error?error.message:data})]});}var src_root=client.createRoot(document.getElementById("root"));src_root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(react.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(App,{})}));
+function App(){var _I18N$about_md;var _useState=(0,react.useState)("zh"),_useState2=_slicedToArray(_useState,2),lang=_useState2[0],setLang=_useState2[1];var _useFetch=useFetch("".concat(URL_RAW_PREFIX,"/").concat(I18N===null||I18N===void 0?void 0:(_I18N$about_md=I18N["about_md"])===null||_I18N$about_md===void 0?void 0:_I18N$about_md[lang])),_useFetch2=_slicedToArray(_useFetch,3),data=_useFetch2[0],loading=_useFetch2[1],error=_useFetch2[2];return/*#__PURE__*/(0,jsx_runtime.jsxs)(Paper_Paper,{sx:{padding:2,margin:2},children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Stack_Stack,{spacing:2,direction:"row",justifyContent:"flex-end",children:/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{variant:"text",onClick:function onClick(){setLang(function(pre){return pre==="zh"?"en":"zh";});},children:lang==="zh"?"ENGLISH":"中文"})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.1")})}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:2,direction:"row",useFlexGap:true,flexWrap:"wrap",children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator.user.js",children:"Install Userscript 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator.user.js",children:"Install Userscript 2"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js",children:"Install Userscript Safari 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",children:"Install Userscript Safari 2"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://fishjar.github.io/kiss-translator/options.html",children:"Open Options Page 1"}),/*#__PURE__*/(0,jsx_runtime.jsx)(Link_Link,{href:"https://kiss-translator.rayjar.com/options",children:"Open Options Page 2"})]}),loading?/*#__PURE__*/(0,jsx_runtime.jsx)("center",{children:/*#__PURE__*/(0,jsx_runtime.jsx)(CircularProgress_CircularProgress,{})}):/*#__PURE__*/(0,jsx_runtime.jsx)(ReactMarkdown,{children:error?error.message:data})]});}var src_root=client.createRoot(document.getElementById("root"));src_root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(react.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(App,{})}));
}();
/******/ })()
;
\ No newline at end of file
diff --git a/manifest.firefox.json b/manifest.firefox.json
index efb6b3f..01a6ab6 100644
--- a/manifest.firefox.json
+++ b/manifest.firefox.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "__MSG_app_name__",
"description": "__MSG_app_description__",
- "version": "1.7.0",
+ "version": "1.7.1",
"default_locale": "en",
"author": "Gabe",
"homepage_url": "https://github.com/fishjar/kiss-translator",
diff --git a/manifest.json b/manifest.json
index 51b15b6..e9c390a 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "__MSG_app_name__",
"description": "__MSG_app_description__",
- "version": "1.7.0",
+ "version": "1.7.1",
"default_locale": "en",
"author": "Gabe",
"homepage_url": "https://github.com/fishjar/kiss-translator",
diff --git a/options.js b/options.js
index 4dbbd74..ab7d396 100644
--- a/options.js
+++ b/options.js
@@ -1719,6 +1719,28 @@ exports.Z = _default;
/***/ }),
+/***/ 7030:
+/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
+
+"use strict";
+var __webpack_unused_export__;
+
+"use client";
+
+var _interopRequireDefault = __webpack_require__(4836);
+__webpack_unused_export__ = ({
+ value: true
+});
+exports.Z = void 0;
+var _createSvgIcon = _interopRequireDefault(__webpack_require__(5045));
+var _jsxRuntime = __webpack_require__(6417);
+var _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
+ d: "M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4v3H1v2h10v3z"
+}), 'Input');
+exports.Z = _default;
+
+/***/ }),
+
/***/ 3544:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
@@ -3317,7 +3339,7 @@ function useControlled(_ref) {
/* harmony export */ });
/* harmony import */ var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3320);
/**
- * @mui/styled-engine v5.14.8
+ * @mui/styled-engine v5.14.9
*
* @license MIT
* This source code is licensed under the MIT license found in the
@@ -18557,7 +18579,7 @@ function createForOfIteratorHelper_createForOfIteratorHelper(o, allowArrayLike)
var _loadLazyRouteModule, _callLoaderOrAction, _resolveDeferredResults, _resolveDeferredData;
/**
- * @remix-run/router v1.8.0
+ * @remix-run/router v1.9.0
*
* Copyright (c) Remix Software Inc.
*
@@ -18810,7 +18832,7 @@ function warning(cond, message) {
try {
// Welcome to debugging history!
//
- // This error is thrown as a convenience so you can more easily
+ // This error is thrown as a convenience, so you can more easily
// find the source for a warning that appears in the console by
// enabling "pause on exceptions" in your JavaScript debugger.
throw new Error(message);
@@ -19036,7 +19058,7 @@ var immutableRouteKeys = new Set(["lazy", "caseSensitive", "path", "id", "index"
function isIndexRoute(route) {
return route.index === true;
}
-// Walk the route tree generating unique IDs where necessary so we are working
+// Walk the route tree generating unique IDs where necessary, so we are working
// solely with AgnosticDataRouteObject's within the Router
function convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {
if (parentPath === void 0) {
@@ -19098,6 +19120,18 @@ function matchRoutes(routes, locationArg, basename) {
}
return matches;
}
+function convertRouteMatchToUiMatch(match, loaderData) {
+ var route = match.route,
+ pathname = match.pathname,
+ params = match.params;
+ return {
+ id: route.id,
+ pathname: pathname,
+ params: params,
+ data: loaderData[route.id],
+ handle: route.handle
+ };
+}
function flattenRoutes(routes, branches, parentsMeta, parentPath) {
if (branches === void 0) {
branches = [];
@@ -19121,7 +19155,7 @@ function flattenRoutes(routes, branches, parentsMeta, parentPath) {
}
var path = router_joinPaths([parentPath, meta.relativePath]);
var routesMeta = parentsMeta.concat(meta);
- // Add the children before adding this route to the array so we traverse the
+ // Add the children before adding this route to the array, so we traverse the
// route tree depth-first and child routes appear before their parents in
// the "flattened" version.
if (route.children && route.children.length > 0) {
@@ -19196,16 +19230,16 @@ function explodeOptionalSegments(path) {
var restExploded = explodeOptionalSegments(rest.join("/"));
var result = [];
// All child paths with the prefix. Do this for all children before the
- // optional version for all children so we get consistent ordering where the
+ // optional version for all children, so we get consistent ordering where the
// parent optional aspect is preferred as required. Otherwise, we can get
// child sections interspersed where deeper optional segments are higher than
- // parent optional segments, where for example, /:two would explodes _earlier_
+ // parent optional segments, where for example, /:two would explode _earlier_
// then /:one. By always including the parent as required _for all children_
// first, we avoid this issue
result.push.apply(result, (0,toConsumableArray/* default */.Z)(restExploded.map(function (subpath) {
return subpath === "" ? required : [required, subpath].join("/");
})));
- // Then if this is an optional value, add all child versions without
+ // Then, if this is an optional value, add all child versions without
if (isOptional) {
result.push.apply(result, (0,toConsumableArray/* default */.Z)(restExploded));
}
@@ -19402,7 +19436,7 @@ function compilePath(path, caseSensitive, end) {
regexpSource += "\\/*$";
} else if (path !== "" && path !== "/") {
// If our path is non-empty and contains anything beyond an initial slash,
- // then we have _some_ form of path in our regex so we should expect to
+ // then we have _some_ form of path in our regex, so we should expect to
// match only if we find the end of this path segment. Look for an optional
// non-captured trailing slash (to match a portion of the URL) or the end
// of the path (if we've matched to the end). We used to do this with a
@@ -19880,8 +19914,8 @@ var redirectDocument = function redirectDocument(url, init) {
* @private
* Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies
*/
-var router_ErrorResponse = /*#__PURE__*/(/* unused pure expression or super */ null && (_createClass(function ErrorResponse(status, statusText, data, internal) {
- _classCallCheck(this, ErrorResponse);
+var ErrorResponseImpl = /*#__PURE__*/(/* unused pure expression or super */ null && (_createClass(function ErrorResponseImpl(status, statusText, data, internal) {
+ _classCallCheck(this, ErrorResponseImpl);
if (internal === void 0) {
internal = false;
}
@@ -20856,8 +20890,7 @@ function router_createRouter(init) {
fetchers: new Map(state.fetchers)
});
return _context6.abrupt("return", startRedirectNavigation(state, actionResult, {
- submission: submission,
- isFetchActionRedirect: true
+ fetcherSubmission: submission
}));
case 34:
if (!isErrorResult(actionResult)) {
@@ -21105,21 +21138,17 @@ function router_createRouter(init) {
*/
function startRedirectNavigation(_x33, _x34, _x35) {
return (_startRedirectNavigation = _startRedirectNavigation || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(state, redirect, _temp) {
- var _ref7, submission, replace, isFetchActionRedirect, redirectLocation, isDocumentReload, url, redirectHistoryAction, activeSubmission, overrideNavigation;
+ var _ref7, submission, fetcherSubmission, replace, redirectLocation, isDocumentReload, url, redirectHistoryAction, _state$navigation, formMethod, formAction, formEncType, activeSubmission, overrideNavigation;
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
- _ref7 = _temp === void 0 ? {} : _temp, submission = _ref7.submission, replace = _ref7.replace, isFetchActionRedirect = _ref7.isFetchActionRedirect;
+ _ref7 = _temp === void 0 ? {} : _temp, submission = _ref7.submission, fetcherSubmission = _ref7.fetcherSubmission, replace = _ref7.replace;
if (redirect.revalidate) {
isRevalidationRequired = true;
}
- redirectLocation = createLocation(state.location, redirect.location,
- // TODO: This can be removed once we get rid of useTransition in Remix v2
- _extends({
+ redirectLocation = createLocation(state.location, redirect.location, {
_isRedirect: true
- }, isFetchActionRedirect ? {
- _isFetchActionRedirect: true
- } : {}));
+ });
invariant(redirectLocation, "Expected a location on the redirect navigation");
if (!isBrowser) {
_context8.next = 10;
@@ -21153,14 +21182,19 @@ function router_createRouter(init) {
pendingNavigationController = null;
redirectHistoryAction = replace === true ? Action.Replace : Action.Push; // Use the incoming submission if provided, fallback on the active one in
// state.navigation
- activeSubmission = submission || getSubmissionFromNavigation(state.navigation); // If this was a 307/308 submission we want to preserve the HTTP method and
+ _state$navigation = state.navigation, formMethod = _state$navigation.formMethod, formAction = _state$navigation.formAction, formEncType = _state$navigation.formEncType;
+ if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {
+ submission = getSubmissionFromNavigation(state.navigation);
+ }
+ // If this was a 307/308 submission we want to preserve the HTTP method and
// re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the
// redirected location
+ activeSubmission = submission || fetcherSubmission;
if (!(redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod))) {
- _context8.next = 18;
+ _context8.next = 20;
break;
}
- _context8.next = 16;
+ _context8.next = 18;
return startNavigation(redirectHistoryAction, redirectLocation, {
submission: _extends({}, activeSubmission, {
formAction: redirect.location
@@ -21168,34 +21202,22 @@ function router_createRouter(init) {
// Preserve this flag across redirects
preventScrollReset: pendingPreventScrollReset
});
- case 16:
- _context8.next = 26;
- break;
case 18:
- if (!isFetchActionRedirect) {
- _context8.next = 23;
- break;
- }
- _context8.next = 21;
- return startNavigation(redirectHistoryAction, redirectLocation, {
- overrideNavigation: getLoadingNavigation(redirectLocation),
- fetcherSubmission: activeSubmission,
- // Preserve this flag across redirects
- preventScrollReset: pendingPreventScrollReset
- });
- case 21:
- _context8.next = 26;
+ _context8.next = 23;
break;
- case 23:
- // If we have a submission, we will preserve it through the redirect navigation
- overrideNavigation = getLoadingNavigation(redirectLocation, activeSubmission);
- _context8.next = 26;
+ case 20:
+ // If we have a navigation submission, we will preserve it through the
+ // redirect navigation
+ overrideNavigation = getLoadingNavigation(redirectLocation, submission);
+ _context8.next = 23;
return startNavigation(redirectHistoryAction, redirectLocation, {
overrideNavigation: overrideNavigation,
+ // Send fetcher submissions through for shouldRevalidate
+ fetcherSubmission: fetcherSubmission,
// Preserve this flag across redirects
preventScrollReset: pendingPreventScrollReset
});
- case 26:
+ case 23:
case "end":
return _context8.stop();
}
@@ -21454,7 +21476,7 @@ function router_createRouter(init) {
function getScrollKey(location, matches) {
if (getScrollRestorationKey) {
var key = getScrollRestorationKey(location, matches.map(function (m) {
- return createUseMatchesMatch(m, state.loaderData);
+ return convertRouteMatchToUiMatch(m, state.loaderData);
}));
return key || location.key;
}
@@ -21839,7 +21861,7 @@ function createStaticHandler(routes, opts) {
break;
}
method = isRouteRequest ? "queryRoute" : "query";
- throw new Error(method + "() call aborted");
+ throw new Error(method + "() call aborted: " + request.method + " " + request.url);
case 13:
if (!isRedirectResult(result)) {
_context14.next = 15;
@@ -21985,7 +22007,7 @@ function createStaticHandler(routes, opts) {
break;
}
method = isRouteRequest ? "queryRoute" : "query";
- throw new Error(method + "() call aborted");
+ throw new Error(method + "() call aborted: " + request.method + " " + request.url);
case 13:
// Process and commit output from loaders
activeDeferreds = new Map();
@@ -22437,7 +22459,7 @@ function loadLazyRouteModule(_x60, _x61, _x62) {
}
function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
return (_callLoaderOrAction = _callLoaderOrAction || _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16(type, request, match, matches, manifest, mapRouteProperties, basename, opts) {
- var resultType, result, onReject, runHandler, handler, values, url, pathname, _url, _pathname, status, location, currentUrl, _url2, isSameBasename, queryRouteResponse, data, contentType, _result$init, _result$init2;
+ var resultType, result, onReject, runHandler, handler, handlerError, values, url, pathname, _url, _pathname, status, location, currentUrl, _url2, isSameBasename, queryRouteResponse, data, contentType, _result$init, _result$init2;
return _regeneratorRuntime().wrap(function _callee16$(_context17) {
while (1) switch (_context17.prev = _context17.next) {
case 0:
@@ -22463,38 +22485,50 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
_context17.prev = 2;
handler = match.route[type];
if (!match.route.lazy) {
- _context17.next = 30;
+ _context17.next = 32;
break;
}
if (!handler) {
- _context17.next = 12;
+ _context17.next = 14;
break;
}
_context17.next = 8;
- return Promise.all([runHandler(handler), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);
+ return Promise.all([
+ // If the handler throws, don't let it immediately bubble out,
+ // since we need to let the lazy() execution finish so we know if this
+ // route has a boundary that can handle the error
+ runHandler(handler).catch(function (e) {
+ handlerError = e;
+ }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);
case 8:
values = _context17.sent;
- result = values[0];
- _context17.next = 28;
- break;
- case 12:
- _context17.next = 14;
- return loadLazyRouteModule(match.route, mapRouteProperties, manifest);
- case 14:
- handler = match.route[type];
- if (!handler) {
- _context17.next = 21;
+ if (!handlerError) {
+ _context17.next = 11;
break;
}
- _context17.next = 18;
- return runHandler(handler);
- case 18:
- result = _context17.sent;
- _context17.next = 28;
+ throw handlerError;
+ case 11:
+ result = values[0];
+ _context17.next = 30;
break;
- case 21:
+ case 14:
+ _context17.next = 16;
+ return loadLazyRouteModule(match.route, mapRouteProperties, manifest);
+ case 16:
+ handler = match.route[type];
+ if (!handler) {
+ _context17.next = 23;
+ break;
+ }
+ _context17.next = 20;
+ return runHandler(handler);
+ case 20:
+ result = _context17.sent;
+ _context17.next = 30;
+ break;
+ case 23:
if (!(type === "action")) {
- _context17.next = 27;
+ _context17.next = 29;
break;
}
url = new URL(request.url);
@@ -22504,17 +22538,17 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
pathname: pathname,
routeId: match.route.id
});
- case 27:
+ case 29:
return _context17.abrupt("return", {
type: ResultType.data,
data: undefined
});
- case 28:
- _context17.next = 39;
- break;
case 30:
+ _context17.next = 41;
+ break;
+ case 32:
if (handler) {
- _context17.next = 36;
+ _context17.next = 38;
break;
}
_url = new URL(request.url);
@@ -22522,34 +22556,34 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
throw getInternalRouterError(404, {
pathname: _pathname
});
- case 36:
- _context17.next = 38;
- return runHandler(handler);
case 38:
+ _context17.next = 40;
+ return runHandler(handler);
+ case 40:
result = _context17.sent;
- case 39:
+ case 41:
invariant(result !== undefined, "You defined " + (type === "action" ? "an action" : "a loader") + " for route " + ("\"" + match.route.id + "\" but didn't return anything from your `" + type + "` ") + "function. Please return a value or `null`.");
- _context17.next = 46;
+ _context17.next = 48;
break;
- case 42:
- _context17.prev = 42;
+ case 44:
+ _context17.prev = 44;
_context17.t0 = _context17["catch"](2);
resultType = ResultType.error;
result = _context17.t0;
- case 46:
- _context17.prev = 46;
+ case 48:
+ _context17.prev = 48;
if (onReject) {
request.signal.removeEventListener("abort", onReject);
}
- return _context17.finish(46);
- case 49:
+ return _context17.finish(48);
+ case 51:
if (!isResponse(result)) {
- _context17.next = 75;
+ _context17.next = 77;
break;
}
status = result.status; // Process redirects
if (!redirectStatusCodes.has(status)) {
- _context17.next = 59;
+ _context17.next = 61;
break;
}
location = result.headers.get("Location");
@@ -22573,12 +22607,12 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
// redirect. We also update the Location header in place in this flow so
// basename and relative routing is taken into account
if (!opts.isStaticRequest) {
- _context17.next = 58;
+ _context17.next = 60;
break;
}
result.headers.set("Location", location);
throw result;
- case 58:
+ case 60:
return _context17.abrupt("return", {
type: ResultType.redirect,
status: status,
@@ -22586,9 +22620,9 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
revalidate: result.headers.get("X-Remix-Revalidate") !== null,
reloadDocument: result.headers.get("X-Remix-Reload-Document") !== null
});
- case 59:
+ case 61:
if (!opts.isRouteRequest) {
- _context17.next = 62;
+ _context17.next = 64;
break;
}
queryRouteResponse = {
@@ -22596,53 +22630,53 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
response: result
};
throw queryRouteResponse;
- case 62:
+ case 64:
contentType = result.headers.get("Content-Type"); // Check between word boundaries instead of startsWith() due to the last
// paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type
if (!(contentType && /\bapplication\/json\b/.test(contentType))) {
- _context17.next = 69;
+ _context17.next = 71;
break;
}
- _context17.next = 66;
+ _context17.next = 68;
return result.json();
- case 66:
+ case 68:
data = _context17.sent;
- _context17.next = 72;
+ _context17.next = 74;
break;
- case 69:
- _context17.next = 71;
- return result.text();
case 71:
+ _context17.next = 73;
+ return result.text();
+ case 73:
data = _context17.sent;
- case 72:
+ case 74:
if (!(resultType === ResultType.error)) {
- _context17.next = 74;
+ _context17.next = 76;
break;
}
return _context17.abrupt("return", {
type: resultType,
- error: new router_ErrorResponse(status, result.statusText, data),
+ error: new ErrorResponseImpl(status, result.statusText, data),
headers: result.headers
});
- case 74:
+ case 76:
return _context17.abrupt("return", {
type: ResultType.data,
data: data,
statusCode: result.status,
headers: result.headers
});
- case 75:
+ case 77:
if (!(resultType === ResultType.error)) {
- _context17.next = 77;
+ _context17.next = 79;
break;
}
return _context17.abrupt("return", {
type: resultType,
error: result
});
- case 77:
+ case 79:
if (!isDeferredData(result)) {
- _context17.next = 79;
+ _context17.next = 81;
break;
}
return _context17.abrupt("return", {
@@ -22651,16 +22685,16 @@ function callLoaderOrAction(_x63, _x64, _x65, _x66, _x67, _x68, _x69, _x70) {
statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,
headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)
});
- case 79:
+ case 81:
return _context17.abrupt("return", {
type: ResultType.data,
data: result
});
- case 80:
+ case 82:
case "end":
return _context17.stop();
}
- }, _callee16, null, [[2, 42, 46, 49]]);
+ }, _callee16, null, [[2, 44, 48, 51]]);
}))).apply(this, arguments);
} // Utility method for creating the Request instances for loaders/actions during
// client-side navigations and fetches. During SSR we will always have a
@@ -22930,7 +22964,7 @@ function getInternalRouterError(status, _temp4) {
errorMessage = "Invalid request method \"" + method.toUpperCase() + "\"";
}
}
- return new router_ErrorResponse(status || 500, statusText, new Error(errorMessage), true);
+ return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);
}
// Find any returned redirect errors, starting from the lowest match
function findRedirect(results) {
@@ -23123,20 +23157,6 @@ function hasNakedIndexQuery(search) {
return v === "";
});
}
-// Note: This should match the format exported by useMatches, so if you change
-// this please also change that :) Eventually we'll DRY this up
-function createUseMatchesMatch(match, loaderData) {
- var route = match.route,
- pathname = match.pathname,
- params = match.params;
- return {
- id: route.id,
- pathname: pathname,
- params: params,
- data: loaderData[route.id],
- handle: route.handle
- };
-}
function getTargetMatch(matches, location) {
var search = typeof location === "string" ? parsePath(location).search : location.search;
if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || "")) {
@@ -23237,8 +23257,7 @@ function getLoadingFetcher(submission, data) {
formData: submission.formData,
json: submission.json,
text: submission.text,
- data: data,
- " _hasFetcherDoneAnything ": true
+ data: data
};
return fetcher;
} else {
@@ -23250,8 +23269,7 @@ function getLoadingFetcher(submission, data) {
formData: undefined,
json: undefined,
text: undefined,
- data: data,
- " _hasFetcherDoneAnything ": true
+ data: data
};
return _fetcher;
}
@@ -23265,8 +23283,7 @@ function getSubmittingFetcher(submission, existingFetcher) {
formData: submission.formData,
json: submission.json,
text: submission.text,
- data: existingFetcher ? existingFetcher.data : undefined,
- " _hasFetcherDoneAnything ": true
+ data: existingFetcher ? existingFetcher.data : undefined
};
return fetcher;
}
@@ -23279,8 +23296,7 @@ function getDoneFetcher(data) {
formData: undefined,
json: undefined,
text: undefined,
- data: data,
- " _hasFetcherDoneAnything ": true
+ data: data
};
return fetcher;
}
@@ -23296,7 +23312,7 @@ function getDoneFetcher(data) {
/**
- * React Router v6.15.0
+ * React Router v6.16.0
*
* Copyright (c) Remix Software Inc.
*
@@ -23921,19 +23937,8 @@ function dist_useMatches() {
matches = _useDataRouterState.matches,
loaderData = _useDataRouterState.loaderData;
return React.useMemo(function () {
- return matches.map(function (match) {
- var pathname = match.pathname,
- params = match.params;
- // Note: This structure matches that created by createUseMatchesMatch
- // in the @remix-run/router , so if you change this please also change
- // that :) Eventually we'll DRY this up
- return {
- id: match.route.id,
- pathname: pathname,
- params: params,
- data: loaderData[match.route.id],
- handle: match.route.handle
- };
+ return matches.map(function (m) {
+ return UNSAFE_convertRouteMatchToUiMatch(m, loaderData);
});
}, [matches, loaderData]);
}
@@ -24648,7 +24653,7 @@ function createMemoryRouter(routes, opts) {
/**
- * React Router DOM v6.15.0
+ * React Router DOM v6.16.0
*
* Copyright (c) Remix Software Inc.
*
@@ -24904,7 +24909,7 @@ function deserializeErrors(errors) {
// Hey you! If you change this, please change the corresponding logic in
// serializeErrors in react-router-dom/server.tsx :)
if (val && val.__type === "RouteErrorResponse") {
- serialized[key] = new ErrorResponse(val.status, val.statusText, val.data, val.internal === true);
+ serialized[key] = new UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);
} else if (val && val.__type === "Error") {
// Attempt to reconstruct the right type of Error (i.e., ReferenceError)
if (val.__subType) {
@@ -25494,6 +25499,7 @@ function createFetcherForm(fetcherKey, routeId) {
return FetcherForm;
}
var fetcherId = 0;
+// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`
/**
* Interacts with route loaders and actions without causing a navigation. Great
* for any interaction that stays on the same page.
@@ -43221,9 +43227,9 @@ var els="li, p, h1, h2, h3, h4, h5, h6, dd, blockquote";var DEFAULT_SELECTOR=":i
;// CONCATENATED MODULE: ./src/config/app.js
var APP_NAME="KISS Translator".trim().split(/\s+/).join("-");var APP_LCNAME=APP_NAME.toLowerCase();
;// CONCATENATED MODULE: ./src/config/i18n.js
-var UI_LANGS=[["en","English"],["zh","中文"]];var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"}};
+var UI_LANGS=[["en","English"],["zh","中文"]];var customApiLangs="[\"en\", \"English - English\"],\n[\"zh-CN\", \"Simplified Chinese - \u7B80\u4F53\u4E2D\u6587\"],\n[\"zh-TW\", \"Traditional Chinese - \u7E41\u9AD4\u4E2D\u6587\"],\n[\"ar\", \"Arabic - \u0627\u0644\u0639\u0631\u0628\u064A\u0629\"],\n[\"bg\", \"Bulgarian - \u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438\"],\n[\"ca\", \"Catalan - Catal\xE0\"],\n[\"hr\", \"Croatian - Hrvatski\"],\n[\"cs\", \"Czech - \u010Ce\u0161tina\"],\n[\"da\", \"Danish - Dansk\"],\n[\"nl\", \"Dutch - Nederlands\"],\n[\"fi\", \"Finnish - Suomi\"],\n[\"fr\", \"French - Fran\xE7ais\"],\n[\"de\", \"German - Deutsch\"],\n[\"el\", \"Greek - \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\"],\n[\"hi\", \"Hindi - \u0939\u093F\u0928\u094D\u0926\u0940\"],\n[\"hu\", \"Hungarian - Magyar\"],\n[\"id\", \"Indonesian - Indonesia\"],\n[\"it\", \"Italian - Italiano\"],\n[\"ja\", \"Japanese - \u65E5\u672C\u8A9E\"],\n[\"ko\", \"Korean - \uD55C\uAD6D\uC5B4\"],\n[\"ms\", \"Malay - Melayu\"],\n[\"mt\", \"Maltese - Malti\"],\n[\"nb\", \"Norwegian - Norsk Bokm\xE5l\"],\n[\"pl\", \"Polish - Polski\"],\n[\"pt\", \"Portuguese - Portugu\xEAs\"],\n[\"ro\", \"Romanian - Rom\xE2n\u0103\"],\n[\"ru\", \"Russian - \u0420\u0443\u0441\u0441\u043A\u0438\u0439\"],\n[\"sk\", \"Slovak - Sloven\u010Dina\"],\n[\"sl\", \"Slovenian - Sloven\u0161\u010Dina\"],\n[\"es\", \"Spanish - Espa\xF1ol\"],\n[\"sv\", \"Swedish - Svenska\"],\n[\"ta\", \"Tamil - \u0BA4\u0BAE\u0BBF\u0BB4\u0BCD\"],\n[\"te\", \"Telugu - \u0C24\u0C46\u0C32\u0C41\u0C17\u0C41\"],\n[\"th\", \"Thai - \u0E44\u0E17\u0E22\"],\n[\"tr\", \"Turkish - T\xFCrk\xE7e\"],\n[\"uk\", \"Ukrainian - \u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430\"],\n[\"vi\", \"Vietnamese - Ti\u1EBFng Vi\u1EC7t\"],\n";var customApiHelpZH="/// \u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6E90\u63A5\u53E3\u8BF4\u660E\n\n// \u8BF7\u6C42\uFF08Request\uFF09\u6570\u636E\u5C06\u6309\u4E0B\u9762\u89C4\u8303\u53D1\u9001\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // \u9700\u8981\u7FFB\u8BD1\u7684\u6587\u5B57\n from, // \u6E90\u8BED\u8A00\uFF0C\u53EF\u80FD\u4E3A\u7A7A\uFF0C\u8868\u793A\u9700\u8981\u63A5\u53E3\u81EA\u52A8\u8BC6\u522B\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\n }\n}\n\n// \u8FD4\u56DE\uFF08Response\uFF09\u6570\u636E\u9700\u7B26\u5408\u4E0B\u9762\u7684JSON\u89C4\u8303\n{\n text, // \u7FFB\u8BD1\u540E\u7684\u6587\u5B57\n from, // \u8BC6\u522B\u7684\u6E90\u8BED\u8A00\n to, // \u76EE\u6807\u8BED\u8A00\uFF08\u53EF\u9009\uFF09\n}\n\n// \u652F\u6301\u7684\u8BED\u8A00\u4EE3\u7801\u5982\u4E0B\n".concat(customApiLangs,"\n");var customApiHelpEN="/// Custom translation source interface description\n\n// Request data will be sent according to the following specifications\n{\n url: {{YOUR_URL}},\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n \"Authorization\" = \"Bearer {{YOUR_KEY}}\"\n },\n body: {\n text, // text to be translated\n from, // Source language, may be empty\n to, // Target language\n }\n}\n\n// The returned data must conform to the following JSON specification\n{\n text, // translated text\n from, // Recognized source language\n to, // Target language (optional)\n}\n\n// The supported language codes are as follows\n".concat(customApiLangs,"\n");var I18N={app_name:{zh:"\u7B80\u7EA6\u7FFB\u8BD1",en:"KISS Translator"},translate:{zh:"\u7FFB\u8BD1",en:"Translate"},custom_api_help:{zh:customApiHelpZH,en:customApiHelpEN},translate_alt:{zh:"\u7FFB\u8BD1 (Alt+Q)",en:"Translate (Alt+Q)"},basic_setting:{zh:"\u57FA\u672C\u8BBE\u7F6E",en:"Basic Setting"},rules_setting:{zh:"\u89C4\u5219\u8BBE\u7F6E",en:"Rules Setting"},apis_setting:{zh:"\u63A5\u53E3\u8BBE\u7F6E",en:"Apis Setting"},sync_setting:{zh:"\u540C\u6B65\u8BBE\u7F6E",en:"Sync Setting"},patch_setting:{zh:"\u8865\u4E01\u8BBE\u7F6E",en:"Patch Setting"},patch_setting_help:{zh:"\u9488\u5BF9\u4E00\u4E9B\u7279\u6B8A\u7F51\u7AD9\u7684\u4FEE\u6B63\u811A\u672C\uFF0C\u4EE5\u4FBF\u7FFB\u8BD1\u8F6F\u4EF6\u5F97\u5230\u66F4\u597D\u7684\u5C55\u793A\u6548\u679C\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results."},inject_webfix:{zh:"\u6CE8\u5165\u4FEE\u590D\u8865\u4E01",en:"Inject Webfix"},about:{zh:"\u5173\u4E8E",en:"About"},about_md:{zh:"README.md",en:"README.en.md"},about_md_local:{zh:"\u8BF7 [\u70B9\u51FB\u8FD9\u91CC](".concat("https://github.com/fishjar/kiss-translator",") \u67E5\u770B\u8BE6\u60C5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details.")},ui_lang:{zh:"\u754C\u9762\u8BED\u8A00",en:"Interface Language"},fetch_limit:{zh:"\u6700\u5927\u8BF7\u6C42\u6570\u91CF (1-100)",en:"Maximum Number Of Request (1-100)"},fetch_interval:{zh:"\u8BF7\u6C42\u95F4\u9694\u65F6\u95F4 (0-5000ms)",en:"Request Interval (0-5000ms)"},min_translate_length:{zh:"\u6700\u5C0F\u7FFB\u8BD1\u957F\u5EA6 (1-100)",en:"Min Translate Length (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7FFB\u8BD1\u957F\u5EA6 (100-10000)",en:"Max Translate Length (100-10000)"},num_of_newline_characters:{zh:"\u6362\u884C\u5B57\u7B26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)"},translate_service:{zh:"\u7FFB\u8BD1\u670D\u52A1",en:"Translate Service"},mouseover_translation:{zh:"\u9F20\u6807\u60AC\u505C\u7FFB\u8BD1",en:"Mouseover translation"},mk_disable:{zh:"\u7981\u7528",en:"Disable"},mk_mouseover:{zh:"\u9F20\u6807\u60AC\u505C",en:"Mouseover"},mk_ctrlKey:{zh:"Control + \u9F20\u6807\u60AC\u505C",en:"Control + Mouseover"},mk_shiftKey:{zh:"Shift + \u9F20\u6807\u60AC\u505C",en:"Shift + Mouseover"},mk_altKey:{zh:"Alt + \u9F20\u6807\u60AC\u505C",en:"Alt + Mouseover"},from_lang:{zh:"\u539F\u6587\u8BED\u8A00",en:"Source Language"},to_lang:{zh:"\u76EE\u6807\u8BED\u8A00",en:"Target Language"},text_style:{zh:"\u6587\u5B57\u6837\u5F0F",en:"Text Style"},text_style_alt:{zh:"\u6587\u5B57\u6837\u5F0F (Alt+C)",en:"Text Style (Alt+C)"},bg_color:{zh:"\u6837\u5F0F\u989C\u8272",en:"Style Color"},remain_unchanged:{zh:"\u4FDD\u7559\u4E0D\u53D8",en:"Remain Unchanged"},google_api:{zh:"\u8C37\u6B4C\u7FFB\u8BD1\u63A5\u53E3",en:"Google Translate API"},default_selector:{zh:"\u9ED8\u8BA4\u9009\u62E9\u5668",en:"Default selector"},selector_rules:{zh:"\u9009\u62E9\u5668\u89C4\u5219",en:"Selector Rules"},save:{zh:"\u4FDD\u5B58",en:"Save"},edit:{zh:"\u7F16\u8F91",en:"Edit"},cancel:{zh:"\u53D6\u6D88",en:"Cancel"},delete:{zh:"\u5220\u9664",en:"Delete"},reset:{zh:"\u91CD\u7F6E",en:"Reset"},add:{zh:"\u6DFB\u52A0",en:"Add"},inject_rules:{zh:"\u6CE8\u5165\u8BA2\u9605\u89C4\u5219",en:"Inject Subscribe Rules"},personal_rules:{zh:"\u4E2A\u4EBA\u89C4\u5219",en:"Rules"},subscribe_rules:{zh:"\u8BA2\u9605\u89C4\u5219",en:"Subscribe"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8BA2\u9605\u89C4\u5219",en:"Overwrite"},subscribe_url:{zh:"\u8BA2\u9605\u5730\u5740",en:"Subscribe URL"},rules_warn_1:{zh:"1\u3001\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4E00\u76F4\u751F\u6548\uFF0C\u9009\u62E9\u201C\u6CE8\u5165\u8BA2\u9605\u89C4\u5219\u201D\u540E\uFF0C\u201C\u8BA2\u9605\u89C4\u5219\u201D\u624D\u4F1A\u751F\u6548\u3002",en:"1. The \"Personal Rules\" are always in effect. After selecting \"Inject Subscription Rules\", the \"Subscription Rules\" will take effect."},rules_warn_2:{zh:"2\u3001\u201C\u8BA2\u9605\u89C4\u5219\u201D\u7684\u6CE8\u5165\u4F4D\u7F6E\u662F\u5012\u6570\u7B2C\u4E8C\u7684\u4F4D\u7F6E\uFF0C\u56E0\u6B64\u9664\u5168\u5C40\u89C4\u5219(*)\u5916\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u4F18\u5148\u7EA7\u6BD4\u201C\u8BA2\u9605\u89C4\u5219\u201D\u9AD8\uFF0C\u201C\u4E2A\u4EBA\u89C4\u5219\u201D\u586B\u5199\u540C\u6837\u7684\u7F51\u5740\u4F1A\u8986\u76D6\u201D\u8BA2\u9605\u89C4\u5219\u201C\u7684\u6761\u76EE\u3002",en:"2. The injection position of \"Subscription Rules\" is the penultimate position. Therefore, except for the global rules (*), the priority of \"Personal Rules\" is higher than that of \"Subscription Rules\". Filling in the same url in \"Personal Rules\" will overwrite \"Subscription Rules\" entry."},sync_warn:{zh:"\u5982\u679C\u670D\u52A1\u5668\u5B58\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u540C\u6B65\u7684\u6570\u636E\uFF0C\u7B2C\u4E00\u6B21\u540C\u6B65\u5C06\u76F4\u63A5\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF0C\u540E\u9762\u5219\u6839\u636E\u4FEE\u6539\u65F6\u95F4\uFF0C\u65B0\u7684\u8986\u76D6\u65E7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one."},about_sync_api:{zh:"\u67E5\u770B\u5173\u4E8E\u6570\u636E\u540C\u6B65\u63A5\u53E3\u90E8\u7F72",en:"View About Data Synchronization Interface Deployment"},about_api_proxy:{zh:"\u67E5\u770B\u81EA\u5EFA\u4E00\u4E2A\u7FFB\u8BD1\u63A5\u53E3\u4EE3\u7406",en:"Check out the self-built translation interface proxy"},style_none:{zh:"\u65E0",en:"None"},under_line:{zh:"\u4E0B\u5212\u76F4\u7EBF",en:"Underline"},dot_line:{zh:"\u4E0B\u5212\u70B9\u72B6\u7EBF",en:"Dotted Underline"},dash_line:{zh:"\u4E0B\u5212\u865A\u7EBF",en:"Dashed Underline"},wavy_line:{zh:"\u4E0B\u5212\u6CE2\u6D6A\u7EBF",en:"Wavy Underline"},fuzzy:{zh:"\u6A21\u7CCA",en:"Fuzzy"},highlight:{zh:"\u9AD8\u4EAE",en:"Highlight"},diy_style:{zh:"\u81EA\u5B9A\u4E49\u6837\u5F0F",en:"Custom Style"},diy_style_helper:{zh:"\u9075\u5FAA\u201CCSS\u201D\u7684\u8BED\u6CD5",en:"Follow the syntax of \"CSS\""},setting:{zh:"\u8BBE\u7F6E (Alt+O)",en:"Setting (Alt+O)"},pattern:{zh:"\u5339\u914D\u7F51\u5740",en:"URL pattern"},pattern_helper:{zh:"1\u3001\u652F\u6301\u661F\u53F7(*)\u901A\u914D\u7B26\u30022\u3001\u591A\u4E2AURL\u652F\u6301\u82F1\u6587\u9017\u53F7\u201C,\u201D\u5206\u9694\u3002",en:"1. The asterisk (*) wildcard is supported. 2. Multiple URLs can be separated by English commas \",\"."},selector_helper:{zh:"1\u3001\u9075\u5FAACSS\u9009\u62E9\u5668\u8BED\u6CD5\u30022\u3001\u7559\u7A7A\u8868\u793A\u91C7\u7528\u5168\u5C40\u8BBE\u7F6E\u30023\u3001\u591A\u4E2ACSS\u9009\u62E9\u5668\u4E4B\u95F4\u7528\u201C;\u201D\u9694\u5F00\u30024\u3001\u201Cshadow root\u201D\u9009\u62E9\u5668\u548C\u5185\u90E8\u9009\u62E9\u5668\u7528\u201C>>>\u201D\u9694\u5F00\u3002",en:"1. Follow CSS selector syntax. 2. Leave blank to adopt the global setting. 3. Separate multiple CSS selectors with \";\". 4. The \"shadow root\" selector and the internal selector are separated by \">>>\"."},translate_switch:{zh:"\u5F00\u542F\u7FFB\u8BD1",en:"Translate Switch"},default_enabled:{zh:"\u9ED8\u8BA4\u5F00\u542F",en:"Enabled"},default_disabled:{zh:"\u9ED8\u8BA4\u5173\u95ED",en:"Disabled"},selector:{zh:"\u9009\u62E9\u5668",en:"Selector"},import:{zh:"\u5BFC\u5165",en:"Import"},export:{zh:"\u5BFC\u51FA",en:"Export"},error_cant_be_blank:{zh:"\u4E0D\u80FD\u4E3A\u7A7A",en:"Can not be blank"},error_duplicate_values:{zh:"\u5B58\u5728\u91CD\u590D\u7684\u503C",en:"There are duplicate values"},error_wrong_file_type:{zh:"\u9519\u8BEF\u7684\u6587\u4EF6\u7C7B\u578B",en:"Wrong file type"},error_fetch_url:{zh:"\u8BF7\u68C0\u67E5url\u5730\u5740\u662F\u5426\u6B63\u786E\u6216\u7A0D\u540E\u518D\u8BD5\u3002",en:"Please check if the url address is correct or try again later."},deepl_api:{zh:"DeepL \u63A5\u53E3",en:"DeepL API"},deepl_key:{zh:"DeepL \u5BC6\u94A5",en:"DeepL Key"},openai_api:{zh:"OpenAI \u63A5\u53E3",en:"OpenAI API"},openai_key:{zh:"OpenAI \u5BC6\u94A5",en:"OpenAI Key"},openai_model:{zh:"OpenAI \u6A21\u578B",en:"OpenAI Model"},openai_prompt:{zh:"OpenAI \u63D0\u793A\u8BCD",en:"OpenAI Prompt"},if_clear_cache:{zh:"\u662F\u5426\u6E05\u9664\u7F13\u5B58",en:"Whether clear cache"},clear_cache_never:{zh:"\u4E0D\u6E05\u9664\u7F13\u5B58",en:"Never clear cache"},clear_cache_restart:{zh:"\u91CD\u542F\u6D4F\u89C8\u5668\u65F6\u6E05\u9664\u7F13\u5B58",en:"Clear cache when restarting browser"},data_sync_url:{zh:"\u6570\u636E\u540C\u6B65\u63A5\u53E3",en:"Data Sync API"},data_sync_key:{zh:"\u6570\u636E\u540C\u6B65\u5BC6\u94A5",en:"Data Sync Key"},sync_now:{zh:"\u7ACB\u5373\u540C\u6B65",en:"Sync Now"},sync_success:{zh:"\u540C\u6B65\u6210\u529F\uFF01",en:"Sync Success"},sync_failed:{zh:"\u540C\u6B65\u5931\u8D25\uFF01",en:"Sync Error"},error_got_some_wrong:{zh:"\u62B1\u6B49\uFF0C\u51FA\u9519\u4E86\uFF01",en:"Sorry, something went wrong!"},error_sync_setting:{zh:"\u60A8\u7684\u540C\u6B65\u8BBE\u7F6E\u672A\u586B\u5199\uFF0C\u65E0\u6CD5\u5728\u7EBF\u5206\u4EAB\u3002",en:"Your sync settings are missing and cannot be shared online."},click_test:{zh:"\u70B9\u51FB\u6D4B\u8BD5",en:"Click Test"},test_success:{zh:"\u6D4B\u8BD5\u6210\u529F",en:"Test success"},test_failed:{zh:"\u6D4B\u8BD5\u5931\u8D25",en:"Test failed"},clear_all_cache_now:{zh:"\u7ACB\u5373\u6E05\u9664\u5168\u90E8\u7F13\u5B58",en:"Clear all cache now"},clear_cache:{zh:"\u6E05\u9664\u7F13\u5B58",en:"Clear Cache"},clear_success:{zh:"\u6E05\u9664\u6210\u529F",en:"Clear success"},clear_failed:{zh:"\u6E05\u9664\u5931\u8D25",en:"Clear failed"},share:{zh:"\u5206\u4EAB",en:"Share"},clear_all:{zh:"\u6E05\u7A7A",en:"Clear All"},help:{zh:"\u6C42\u52A9",en:"Help"},restore_default:{zh:"\u6062\u590D\u9ED8\u8BA4",en:"Restore Default"},shortcuts_setting:{zh:"\u5FEB\u6377\u952E\u8BBE\u7F6E",en:"Shortcuts Setting"},toggle_translate_shortcut:{zh:"\"\u5F00\u542F\u7FFB\u8BD1\"\u5FEB\u6377\u952E",en:"\"Toggle Translate\" Shortcut"},toggle_style_shortcut:{zh:"\"\u5207\u6362\u6837\u5F0F\"\u5FEB\u6377\u952E",en:"\"Toggle Style\" Shortcut"},toggle_popup_shortcut:{zh:"\"\u6253\u5F00\u5F39\u7A97\"\u5FEB\u6377\u952E",en:"\"Open Popup\" Shortcut"},open_setting_shortcut:{zh:"\"\u6253\u5F00\u8BBE\u7F6E\"\u5FEB\u6377\u952E",en:"\"Open Setting\" Shortcut"},hide_fab_button:{zh:"\u9690\u85CF\u60AC\u6D6E\u6309\u94AE",en:"Hide Fab Button"},show:{zh:"\u663E\u793A",en:"Show"},hide:{zh:"\u9690\u85CF",en:"Hide"},save_rule:{zh:"\u4FDD\u5B58\u89C4\u5219",en:"Save Rule"},global_rule:{zh:"\u5168\u5C40\u89C4\u5219",en:"Global Rule"},input_setting:{zh:"\u8F93\u5165\u6846\u8BBE\u7F6E",en:"Input Box Setting"},input_box_translation:{zh:"\u542F\u7528\u8F93\u5165\u6846\u7FFB\u8BD1",en:"Input Box Translation"},input_selector:{zh:"\u8F93\u5165\u6846\u9009\u62E9\u5668",en:"Input Selector"},input_selector_helper:{zh:"\u7528\u4E8E\u8F93\u5165\u6846\u7FFB\u8BD1\u3002",en:"Used for input box translation."},trigger_trans_shortcut:{zh:"\u89E6\u53D1\u7FFB\u8BD1\u5FEB\u6377\u952E",en:"Trigger Translation Shortcut Keys"},trigger_trans_shortcut_help:{zh:"\u9ED8\u8BA4\u4E3A\u5355\u51FB\u201CAlt+i\u201D",en:"Default is \"Alt+i\""},shortcut_press_count:{zh:"\u5FEB\u6377\u952E\u8FDE\u51FB\u6B21\u6570",en:"Shortcut Press Number"},combo_timeout:{zh:"\u8FDE\u51FB\u8D85\u65F6\u65F6\u95F4 (10-1000ms)",en:"Combo Timeout (10-1000ms)"},input_trans_start_sign:{zh:"\u7FFB\u8BD1\u8D77\u59CB\u6807\u8BC6",en:"Translation Start Sign"},input_trans_start_sign_help:{zh:"\u6807\u8BC6\u540E\u9762\u53EF\u4EE5\u52A0\u76EE\u6807\u8BED\u8A00\u4EE3\u7801\uFF0C\u5982\uFF1A \u201C/en \u4F60\u597D\u201D\u3001\u201C/zh hello\u201D",en:"The target language code can be added after the sign, such as: \"/en \u4F60\u597D\", \"/zh hello\""}};
;// CONCATENATED MODULE: ./src/config/index.js
-var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var config_STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var config_MSG_FETCH_LIMIT="fetch_limit";var config_MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_STYLE_NONE="style_none";// 无
+var _OPT_LANGS_SPECIAL,_DEFAULT_TRANS_APIS,_DEFAULT_SHORTCUTS;var STOKEY_MSAUTH="".concat(APP_NAME,"_msauth");var config_STOKEY_SETTING="".concat(APP_NAME,"_setting");var config_STOKEY_RULES="".concat(APP_NAME,"_rules");var config_STOKEY_SYNC="".concat(APP_NAME,"_sync");var config_STOKEY_FAB="".concat(APP_NAME,"_fab");var config_STOKEY_RULESCACHE_PREFIX="".concat(APP_NAME,"_rulescache_");var STOKEY_WEBFIXCACHE_PREFIX="".concat(APP_NAME,"_webfixcache_");var CMD_TOGGLE_TRANSLATE="toggleTranslate";var CMD_TOGGLE_STYLE="toggleStyle";var CMD_OPEN_OPTIONS="openOptions";var CLIENT_WEB="web";var CLIENT_CHROME="chrome";var CLIENT_EDGE="edge";var CLIENT_FIREFOX="firefox";var CLIENT_USERSCRIPT="userscript";var CLIENT_EXTS=[CLIENT_CHROME,CLIENT_EDGE,CLIENT_FIREFOX];var KV_RULES_KEY="KT_RULES";var KV_RULES_SHARE_KEY="KT_RULES_SHARE";var KV_SETTING_KEY="KT_SETTING";var KV_SALT_SYNC="KISS-Translator-SYNC";var KV_SALT_SHARE="KISS-Translator-SHARE";var config_CACHE_NAME="".concat(APP_NAME,"_cache");var MSG_FETCH="fetch";var config_MSG_FETCH_LIMIT="fetch_limit";var config_MSG_FETCH_CLEAR="fetch_clear";var MSG_TRANS_TOGGLE="trans_toggle";var MSG_TRANS_TOGGLE_STYLE="trans_toggle_style";var MSG_TRANS_GETRULE="trans_getrule";var MSG_TRANS_PUTRULE="trans_putrule";var MSG_TRANS_CURRULE="trans_currule";var THEME_LIGHT="light";var THEME_DARK="dark";var URL_KISS_WORKER="https://github.com/fishjar/kiss-worker";var URL_KISS_PROXY="https://github.com/fishjar/kiss-proxy";var URL_KISS_RULES="https://github.com/fishjar/kiss-rules";var URL_KISS_RULES_NEW_ISSUE="https://github.com/fishjar/kiss-rules/issues/new";var URL_RAW_PREFIX="https://raw.githubusercontent.com/fishjar/kiss-translator/master";var URL_MICROSOFT_AUTH="https://edge.microsoft.com/translate/auth";var OPT_TRANS_GOOGLE="Google";var OPT_TRANS_MICROSOFT="Microsoft";var OPT_TRANS_DEEPL="DeepL";var OPT_TRANS_OPENAI="OpenAI";var OPT_TRANS_CUSTOMIZE="Custom";var OPT_TRANS_ALL=[OPT_TRANS_GOOGLE,OPT_TRANS_MICROSOFT,OPT_TRANS_DEEPL,OPT_TRANS_OPENAI,OPT_TRANS_CUSTOMIZE];var OPT_LANGS_TO=[["en","English - English"],["zh-CN","Simplified Chinese - 简体中文"],["zh-TW","Traditional Chinese - 繁體中文"],["ar","Arabic - العربية"],["bg","Bulgarian - Български"],["ca","Catalan - Català"],["hr","Croatian - Hrvatski"],["cs","Czech - Čeština"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fi","Finnish - Suomi"],["fr","French - Français"],["de","German - Deutsch"],["el","Greek - Ελληνικά"],["hi","Hindi - हिन्दी"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - 日本語"],["ko","Korean - 한국어"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokmål"],["pl","Polish - Polski"],["pt","Portuguese - Português"],["ro","Romanian - Română"],["ru","Russian - Русский"],["sk","Slovak - Slovenčina"],["sl","Slovenian - Slovenščina"],["es","Spanish - Español"],["sv","Swedish - Svenska"],["ta","Tamil - தமிழ்"],["te","Telugu - తెలుగు"],["th","Thai - ไทย"],["tr","Turkish - Türkçe"],["uk","Ukrainian - Українська"],["vi","Vietnamese - Tiếng Việt"]];var OPT_LANGS_FROM=[["auto","Auto-detect"]].concat(OPT_LANGS_TO);var OPT_LANGS_SPECIAL=(_OPT_LANGS_SPECIAL={},(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_MICROSOFT,new Map([["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]])),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_DEEPL,new Map([].concat((0,toConsumableArray/* default */.Z)(OPT_LANGS_FROM.map(function(_ref){var _ref2=(0,slicedToArray/* default */.Z)(_ref,1),key=_ref2[0];return[key,key.toUpperCase()];})),[["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_OPENAI,new Map(OPT_LANGS_FROM.map(function(_ref3){var _ref4=(0,slicedToArray/* default */.Z)(_ref3,2),key=_ref4[0],val=_ref4[1];return[key,val.split(" - ")[0]];}))),(0,defineProperty/* default */.Z)(_OPT_LANGS_SPECIAL,OPT_TRANS_CUSTOMIZE,new Map([["auto",""]])),_OPT_LANGS_SPECIAL);var OPT_LANGS_LIST=OPT_LANGS_TO.map(function(_ref5){var _ref6=(0,slicedToArray/* default */.Z)(_ref5,1),lang=_ref6[0];return lang;});var OPT_STYLE_NONE="style_none";// 无
var OPT_STYLE_LINE="under_line";// 下划线
var OPT_STYLE_DOTLINE="dot_line";// 点状线
var OPT_STYLE_DASHLINE="dash_line";// 虚线
@@ -43237,7 +43243,8 @@ var PROMPT_PLACE_FROM="{{from}}";// 占位符
var PROMPT_PLACE_TO="{{to}}";// 占位符
var DEFAULT_COLOR="#209CEE";// 默认高亮背景色/线条颜色
// 全局规则
-var config_GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 订阅列表
+var config_GLOBLA_RULE={pattern:"*",selector:DEFAULT_SELECTOR,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"zh-CN",textStyle:OPT_STYLE_DASHLINE,transOpen:"false",bgColor:"",textDiyStyle:""};// 输入框翻译
+var OPT_INPUT_TRANS_SIGNS=["/","//","\\","\\\\",">",">>"];var DEFAULT_INPUT_SHORTCUT=["Alt","i"];var DEFAULT_INPUT_RULE={transOpen:true,translator:OPT_TRANS_MICROSOFT,fromLang:"auto",toLang:"en",triggerShortcut:DEFAULT_INPUT_SHORTCUT,triggerCount:1,triggerTime:200,transSign:OPT_INPUT_TRANS_SIGNS[0]};// 订阅列表
var config_DEFAULT_SUBRULES_LIST=[{url:"https://fishjar.github.io/kiss-rules/kiss-rules.json",selected:false},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on.json",selected:true},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off.json",selected:false}];// 翻译接口
var DEFAULT_TRANS_APIS=(_DEFAULT_TRANS_APIS={},(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_GOOGLE,{url:"https://translate.googleapis.com/translate_a/single",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_MICROSOFT,{url:"https://api-edge.cognitive.microsofttranslator.com/translate",authUrl:"https://edge.microsoft.com/translate/auth"}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_DEEPL,{url:"https://api-free.deepl.com/v2/translate",key:""}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_OPENAI,{url:"https://api.openai.com/v1/chat/completion",key:"",model:"gpt-4",prompt:"You will be provided with a sentence in ".concat(PROMPT_PLACE_FROM,", and your task is to translate it into ").concat(PROMPT_PLACE_TO,".")}),(0,defineProperty/* default */.Z)(_DEFAULT_TRANS_APIS,OPT_TRANS_CUSTOMIZE,{url:"",key:""}),_DEFAULT_TRANS_APIS);// 默认快捷键
var OPT_SHORTCUT_TRANSLATE="toggleTranslate";var OPT_SHORTCUT_STYLE="toggleStyle";var OPT_SHORTCUT_POPUP="togglePopup";var OPT_SHORTCUT_SETTING="openSetting";var DEFAULT_SHORTCUTS=(_DEFAULT_SHORTCUTS={},(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_TRANSLATE,["Alt","q"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_STYLE,["Alt","c"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_POPUP,["Alt","k"]),(0,defineProperty/* default */.Z)(_DEFAULT_SHORTCUTS,OPT_SHORTCUT_SETTING,["Alt","o"]),_DEFAULT_SHORTCUTS);var TRANS_MIN_LENGTH=5;// 最短翻译长度
@@ -43255,7 +43262,8 @@ owSubrule:rules_DEFAULT_OW_RULE,// 覆写订阅规则
transApis:DEFAULT_TRANS_APIS,// 翻译接口
mouseKey:OPT_MOUSEKEY_DISABLE,// 鼠标悬停翻译
shortcuts:DEFAULT_SHORTCUTS,// 快捷键
-hideFab:false// 是否隐藏按钮
+hideFab:false,// 是否隐藏按钮
+inputRule:DEFAULT_INPUT_RULE// 输入框设置
};var config_DEFAULT_RULES=[config_GLOBLA_RULE];var config_DEFAULT_SYNC={syncUrl:"",// 数据同步接口
syncKey:"",// 数据同步密钥
settingUpdateAt:0,settingSyncAt:0,rulesUpdateAt:0,rulesSyncAt:0,subRulesSyncAt:0,// 订阅规则同步时间
@@ -43276,7 +43284,7 @@ var _set,_get,_del,_setObj,_trySetObj,_getObj,_putObj,_ref,_ref2,_ref3,_ref4,_re
*/var storage={get:get,set:set,del:del,setObj:setObj,trySetObj:trySetObj,getObj:getObj,putObj:putObj// onChanged,
};/**
* 设置信息
- */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var storage_updateSetting=function updateSetting(obj){return putObj(STOKEY_SETTING,obj);};/**
+ */var getSetting=function getSetting(){return getObj(config_STOKEY_SETTING);};var getSettingWithDefault=function getSettingWithDefault(){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee8(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.next=2;return getSetting();case 2:_context8.t0=_context8.sent;if(_context8.t0){_context8.next=5;break;}_context8.t0=config_DEFAULT_SETTING;case 5:return _context8.abrupt("return",_context8.t0);case 6:case"end":return _context8.stop();}},_callee8);}))).apply(this,arguments);};var setSetting=function setSetting(val){return setObj(config_STOKEY_SETTING,val);};var updateSetting=function updateSetting(obj){return putObj(STOKEY_SETTING,obj);};/**
* 规则列表
*/var getRules=function getRules(){return getObj(config_STOKEY_RULES);};var storage_getRulesWithDefault=function getRulesWithDefault(){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee9(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:_context9.next=2;return getRules();case 2:_context9.t0=_context9.sent;if(_context9.t0){_context9.next=5;break;}_context9.t0=config_DEFAULT_RULES;case 5:return _context9.abrupt("return",_context9.t0);case 6:case"end":return _context9.stop();}},_callee9);}))).apply(this,arguments);};var storage_setRules=function setRules(val){return setObj(config_STOKEY_RULES,val);};/**
* 订阅规则
@@ -44037,7 +44045,18 @@ var utils_ref;/**
* @param {*} a
* @param {*} b
* @returns
- */var utils_isSameSet=function isSameSet(a,b){var s=new Set([].concat(_toConsumableArray(a),_toConsumableArray(b)));return s.size===a.size&&s.size===b.size;};
+ */var utils_isSameSet=function isSameSet(a,b){var s=new Set([].concat(_toConsumableArray(a),_toConsumableArray(b)));return s.size===a.size&&s.size===b.size;};/**
+ * 去掉字符串末尾某个字符
+ * @param {*} s
+ * @param {*} c
+ * @param {*} count
+ * @returns
+ */var removeEndchar=function removeEndchar(s,c){var count=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var i=s.length;while(i>s.length-count&&s[i-1]===c){i--;}return s.slice(0,i);};/**
+ * 匹配字符串及语言标识
+ * @param {*} str
+ * @param {*} sign
+ * @returns
+ */var matchInputStr=function matchInputStr(str,sign){var reg=/\/([\w-]+)\s+([^]+)/;switch(sign){case"//":reg=/\/\/([\w-]+)\s+([^]+)/;break;case"\\":reg=/\\([\w-]+)\s+([^]+)/;break;case"\\\\":reg=/\\\\([\w-]+)\s+([^]+)/;break;case">":reg=/>([\w-]+)\s+([^]+)/;break;case">>":reg=/>>([\w-]+)\s+([^]+)/;break;default:}return str.match(reg);};
;// CONCATENATED MODULE: ./src/apis/index.js
var apis_ref,apis_ref3,apis_ref5,apis_ref7,_ref9,_ref11;/**
* 同步数据
@@ -48042,7 +48061,7 @@ function useModal(parameters) {
var createHandleKeyDown = function createHandleKeyDown(otherHandlers) {
return function (event) {
var _otherHandlers$onKeyD;
- (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null ? void 0 : _otherHandlers$onKeyD.call(otherHandlers, event);
+ (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
// The handler doesn't take event.defaultPrevented into account:
//
@@ -48065,7 +48084,7 @@ function useModal(parameters) {
var createHandleBackdropClick = function createHandleBackdropClick(otherHandlers) {
return function (event) {
var _otherHandlers$onClic;
- (_otherHandlers$onClic = otherHandlers.onClick) == null ? void 0 : _otherHandlers$onClic.call(otherHandlers, event);
+ (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.target !== event.currentTarget) {
return;
}
@@ -48116,8 +48135,8 @@ function useModal(parameters) {
}
};
return {
- onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children.props.onEnter),
- onExited: (0,createChainedFunction/* default */.Z)(handleExited, children.props.onExited)
+ onEnter: (0,createChainedFunction/* default */.Z)(handleEnter, children == null ? void 0 : children.props.onEnter),
+ onExited: (0,createChainedFunction/* default */.Z)(handleExited, children == null ? void 0 : children.props.onExited)
};
};
return {
@@ -48293,49 +48312,6 @@ function FocusTrap(props) {
return;
}
var doc = (0,ownerDocument_ownerDocument/* default */.Z)(rootRef.current);
- var contain = function contain(nativeEvent) {
- var rootElement = rootRef.current;
-
- // Cleanup functions are executed lazily in React 17.
- // Contain can be called between the component being unmounted and its cleanup function being run.
- if (rootElement === null) {
- return;
- }
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
- ignoreNextEnforceFocus.current = false;
- return;
- }
- if (!rootElement.contains(doc.activeElement)) {
- // if the focus event is not coming from inside the children's react tree, reset the refs
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
- reactFocusEventTarget.current = null;
- } else if (reactFocusEventTarget.current !== null) {
- return;
- }
- if (!activated.current) {
- return;
- }
- var tabbable = [];
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
- tabbable = getTabbable(rootRef.current);
- }
- if (tabbable.length > 0) {
- var _lastKeydown$current, _lastKeydown$current2;
- var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
- var focusNext = tabbable[0];
- var focusPrevious = tabbable[tabbable.length - 1];
- if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
- if (isShiftTab) {
- focusPrevious.focus();
- } else {
- focusNext.focus();
- }
- }
- } else {
- rootElement.focus();
- }
- }
- };
var loopFocus = function loopFocus(nativeEvent) {
lastKeydown.current = nativeEvent;
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
@@ -48353,6 +48329,62 @@ function FocusTrap(props) {
}
}
};
+ var contain = function contain() {
+ var rootElement = rootRef.current;
+
+ // Cleanup functions are executed lazily in React 17.
+ // Contain can be called between the component being unmounted and its cleanup function being run.
+ if (rootElement === null) {
+ return;
+ }
+ if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
+ ignoreNextEnforceFocus.current = false;
+ return;
+ }
+
+ // The focus is already inside
+ if (rootElement.contains(doc.activeElement)) {
+ return;
+ }
+
+ // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)
+ if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
+ return;
+ }
+
+ // if the focus event is not coming from inside the children's react tree, reset the refs
+ if (doc.activeElement !== reactFocusEventTarget.current) {
+ reactFocusEventTarget.current = null;
+ } else if (reactFocusEventTarget.current !== null) {
+ return;
+ }
+ if (!activated.current) {
+ return;
+ }
+ var tabbable = [];
+ if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
+ tabbable = getTabbable(rootRef.current);
+ }
+
+ // one of the sentinel nodes was focused, so move the focus
+ // to the first/last tabbable element inside the focus trap
+ if (tabbable.length > 0) {
+ var _lastKeydown$current, _lastKeydown$current2;
+ var isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
+ var focusNext = tabbable[0];
+ var focusPrevious = tabbable[tabbable.length - 1];
+ if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
+ if (isShiftTab) {
+ focusPrevious.focus();
+ } else {
+ focusNext.focus();
+ }
+ }
+ // no tabbable elements in the trap focus or the focus was outside of the focus trap
+ } else {
+ rootElement.focus();
+ }
+ };
doc.addEventListener('focusin', contain);
doc.addEventListener('keydown', loopFocus, true);
@@ -48364,7 +48396,7 @@ function FocusTrap(props) {
// https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
var interval = setInterval(function () {
if (doc.activeElement && doc.activeElement.tagName === 'BODY') {
- contain(null);
+ contain();
}
}, 50);
return function () {
@@ -48731,7 +48763,7 @@ var modalClasses = (0,generateUtilityClasses/* default */.Z)('MuiModal', ['root'
-var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "open", "slotProps", "slots", "theme"];
+var Modal_excluded = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onTransitionEnter", "onTransitionExited", "open", "slotProps", "slots", "theme"];
@@ -51623,6 +51655,14 @@ var buttonClasses = (0,generateUtilityClasses/* default */.Z)('MuiButton', ['roo
var ButtonGroupContext = /*#__PURE__*/react.createContext({});
if (false) {}
/* harmony default export */ var ButtonGroup_ButtonGroupContext = (ButtonGroupContext);
+;// CONCATENATED MODULE: ./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js
+
+/**
+ * @ignore - internal component.
+ */
+var ButtonGroupButtonContext = /*#__PURE__*/react.createContext(undefined);
+if (false) {}
+/* harmony default export */ var ButtonGroup_ButtonGroupButtonContext = (ButtonGroupButtonContext);
;// CONCATENATED MODULE: ./node_modules/@mui/material/Button/Button.js
'use client';
@@ -51644,6 +51684,7 @@ var Button_excluded = ["children", "color", "component", "className", "disabled"
+
var Button_useUtilityClasses = function useUtilityClasses(ownerState) {
var color = ownerState.color,
disableElevation = ownerState.disableElevation,
@@ -51843,6 +51884,7 @@ var ButtonEndIcon = (0,styled/* default */.ZP)('span', {
var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
// props priority: `inProps` > `contextProps` > `themeDefaultProps`
var contextProps = react.useContext(ButtonGroup_ButtonGroupContext);
+ var buttonGroupButtonContextPositionClassName = react.useContext(ButtonGroup_ButtonGroupButtonContext);
var resolvedProps = (0,resolveProps/* default */.Z)(contextProps, inProps);
var props = (0,styles_useThemeProps/* default */.Z)({
props: resolvedProps,
@@ -51893,9 +51935,10 @@ var Button = /*#__PURE__*/react.forwardRef(function Button(inProps, ref) {
ownerState: ownerState,
children: endIconProp
});
+ var positionClassName = buttonGroupButtonContextPositionClassName || '';
return /*#__PURE__*/(0,jsx_runtime.jsxs)(ButtonRoot, (0,esm_extends/* default */.Z)({
ownerState: ownerState,
- className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className),
+ className: (0,clsx/* default */.Z)(contextProps.className, classes.root, className, positionClassName),
component: component,
disabled: disabled,
focusRipple: !disableFocusRipple,
@@ -53209,6 +53252,43 @@ var AccordionDetails = /*#__PURE__*/react.forwardRef(function AccordionDetails(i
/* harmony default export */ var AccordionDetails_AccordionDetails = (AccordionDetails);
// EXTERNAL MODULE: ./node_modules/@mui/icons-material/ExpandMore.js
var ExpandMore = __webpack_require__(6306);
+;// CONCATENATED MODULE: ./src/libs/webfix.js
+var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
+ * 修复程序类型
+ */var FIXER_BR="br";var FIXER_FONTSIZE="fontSize";/**
+ * 需要修复的站点列表
+ * - pattern 匹配网址
+ * - selector 需要修复的选择器
+ * - rootSelector 需要监听的选择器,可留空
+ * - fixer 修复函数,可针对不同网址,选用不同修复函数
+ */var DEFAULT_SITES=[{pattern:"www.phoronix.com",selector:".content",rootSelector:"",fixer:FIXER_BR},{pattern:"t.me/s/",selector:".tgme_widget_message_text",rootSelector:".tgme_channel_history",fixer:FIXER_BR},{pattern:"baidu.com",selector:"html",rootSelector:"",fixer:FIXER_FONTSIZE}];/**
+ * 修复过的标记
+ */var fixedSign="kissfixed";/**
+ * 采用 `br` 换行网站的修复函数
+ * 目标是将 `br` 替换成 `p`
+ * @param {*} node
+ * @returns
+ */function brFixer(node){if(node.hasAttribute(fixedSign)){return;}node.setAttribute(fixedSign,"true");var gapTags=["BR","WBR"];var newlineTags=["DIV","UL","OL","LI","H1","H2","H3","H4","H5","H6","P","HR","PRE","TABLE"];var html="";node.childNodes.forEach(function(child,index){if(index===0){html+="";}if(gapTags.indexOf(child.nodeName)!==-1){html+="
";}else if(newlineTags.indexOf(child.nodeName)!==-1){html+="
"+child.outerHTML+"";}else if(child.outerHTML){html+=child.outerHTML;}else if(child.nodeValue){html+=child.nodeValue;}if(index===node.childNodes.length-1){html+="
";}});node.innerHTML=html;}/**
+ * 修复字体大小问题,如 baidu.com
+ * @param {*} node
+ */function fontSizeFixer(node){node.style.cssText+="font-size:1em;";}/**
+ * 修复程序映射
+ */var fixerMap=(_fixerMap={},(0,defineProperty/* default */.Z)(_fixerMap,FIXER_BR,brFixer),(0,defineProperty/* default */.Z)(_fixerMap,FIXER_FONTSIZE,fontSizeFixer),_fixerMap);/**
+ * 查找、监听节点,并执行修复函数
+ * @param {*} selector
+ * @param {*} fixer
+ * @param {*} rootSelector
+ */function run(selector,fixer,rootSelector){var mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){mutation.addedNodes.forEach(function(addNode){addNode.querySelectorAll(selector).forEach(fixer);});});});var rootNodes=[document];if(rootSelector){rootNodes=document.querySelectorAll(rootSelector);}rootNodes.forEach(function(rootNode){rootNode.querySelectorAll(selector).forEach(fixer);mutaObserver.observe(rootNode,{childList:true});});}/**
+ * 同步远程数据
+ * @param {*} url
+ * @returns
+ */var webfix_syncWebfix=function syncWebfix(_x){return(webfix_ref=webfix_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return apiFetch(url);case 2:sites=_context.sent;_context.next=5;return setWebfix(url,sites);case 5:return _context.abrupt("return",sites);case 6:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);};/**
+ * 从缓存或远程加载修复站点
+ * @param {*} url
+ * @returns
+ */var loadOrFetchWebfix=function loadOrFetchWebfix(_x2){return(webfix_ref2=webfix_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=3;return getWebfix(url);case 3:sites=_context2.sent;if(!(sites!==null&&sites!==void 0&&sites.length)){_context2.next=6;break;}return _context2.abrupt("return",sites);case 6:return _context2.abrupt("return",webfix_syncWebfix(url));case 9:_context2.prev=9;_context2.t0=_context2["catch"](0);console.log("[load webfix]",_context2.t0.message);return _context2.abrupt("return",DEFAULT_SITES);case 13:case"end":return _context2.stop();}},_callee2,null,[[0,9]]);}))).apply(this,arguments);};/**
+ * 匹配站点
+ */function webfix(_x3,_x4){return(_webfix=_webfix||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(href,_ref3){var injectWebfix,sites,i,site;return _regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:injectWebfix=_ref3.injectWebfix;_context3.prev=1;if(injectWebfix){_context3.next=4;break;}return _context3.abrupt("return");case 4:_context3.next=6;return loadOrFetchWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 6:sites=_context3.sent;i=0;case 8:if(!(i1&&_args4[1]!==undefined?_args4[1]:false;_context4.prev=2;_context4.next=5;return getSyncWithDefault();case 5:_yield$getSyncWithDef3=_context4.sent;subRulesSyncAt=_yield$getSyncWithDef3.subRulesSyncAt;now=Date.now();interval=24*60*60*1000;// 间隔一天
-if(!(now-subRulesSyncAt>interval)){_context4.next=14;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:subrulesList.forEach(function(item){item.syncAt=now;});_context4.next=17;return updateSetting({subrulesList:subrulesList});case 17:_context4.next=22;break;case 19:_context4.prev=19;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 22:case"end":return _context4.stop();}},_callee4,null,[[2,19]]);}))).apply(this,arguments);};/**
+if(!(now-subRulesSyncAt>interval)){_context4.next=16;break;}_context4.next=12;return syncAllSubRules(subrulesList,isBg);case 12:_context4.next=14;return updateSync({subRulesSyncAt:now});case 14:_context4.next=16;return syncWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 16:_context4.next=21;break;case 18:_context4.prev=18;_context4.t0=_context4["catch"](2);console.log("[try sync all subrules]",_context4.t0);case 21:case"end":return _context4.stop();}},_callee4,null,[[2,18]]);}))).apply(this,arguments);};/**
* 从缓存或远程加载订阅规则
* @param {*} url
* @returns
@@ -55000,10 +55080,7 @@ var TabsIndicator = (0,styled/* default */.ZP)('span', {
right: 0
});
});
-var TabsScrollbarSize = (0,styled/* default */.ZP)(ScrollbarSize, {
- name: 'MuiTabs',
- slot: 'ScrollbarSize'
-})({
+var TabsScrollbarSize = (0,styled/* default */.ZP)(ScrollbarSize)({
overflowX: 'auto',
overflowY: 'hidden',
// Hide dimensionless scrollbar on macOS
@@ -56242,7 +56319,6 @@ if (false) {}
-
/**
* The basic building block for creating custom snackbar.
*
@@ -56254,7 +56330,8 @@ if (false) {}
*
* - [useSnackbar API](https://mui.com/base-ui/react-snackbar/hooks-api/#use-snackbar)
*/
-function useSnackbar(parameters) {
+function useSnackbar() {
+ var parameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _parameters$autoHideD = parameters.autoHideDuration,
autoHideDuration = _parameters$autoHideD === void 0 ? null : _parameters$autoHideD,
_parameters$disableWi = parameters.disableWindowBlurListener,
@@ -56276,7 +56353,7 @@ function useSnackbar(parameters) {
// IE11, Edge (prior to using Blink?) use 'Esc'
if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {
// not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar
- onClose == null ? void 0 : onClose(nativeEvent, 'escapeKeyDown');
+ onClose == null || onClose(nativeEvent, 'escapeKeyDown');
}
}
}
@@ -56286,7 +56363,7 @@ function useSnackbar(parameters) {
};
}, [open, onClose]);
var handleClose = (0,useEventCallback/* default */.Z)(function (event, reason) {
- onClose == null ? void 0 : onClose(event, reason);
+ onClose == null || onClose(event, reason);
});
var setAutoHideTimer = (0,useEventCallback/* default */.Z)(function (autoHideDurationParam) {
if (!onClose || autoHideDurationParam == null) {
@@ -56306,7 +56383,7 @@ function useSnackbar(parameters) {
};
}, [open, autoHideDuration, setAutoHideTimer]);
var handleClickAway = function handleClickAway(event) {
- onClose == null ? void 0 : onClose(event, 'clickaway');
+ onClose == null || onClose(event, 'clickaway');
};
// Pause the timer when the user is interacting with the Snackbar
@@ -56325,28 +56402,28 @@ function useSnackbar(parameters) {
var createHandleBlur = function createHandleBlur(otherHandlers) {
return function (event) {
var onBlurCallback = otherHandlers.onBlur;
- onBlurCallback == null ? void 0 : onBlurCallback(event);
+ onBlurCallback == null || onBlurCallback(event);
handleResume();
};
};
var createHandleFocus = function createHandleFocus(otherHandlers) {
return function (event) {
var onFocusCallback = otherHandlers.onFocus;
- onFocusCallback == null ? void 0 : onFocusCallback(event);
+ onFocusCallback == null || onFocusCallback(event);
handlePause();
};
};
var createMouseEnter = function createMouseEnter(otherHandlers) {
return function (event) {
var onMouseEnterCallback = otherHandlers.onMouseEnter;
- onMouseEnterCallback == null ? void 0 : onMouseEnterCallback(event);
+ onMouseEnterCallback == null || onMouseEnterCallback(event);
handlePause();
};
};
var createMouseLeave = function createMouseLeave(otherHandlers) {
return function (event) {
var onMouseLeaveCallback = otherHandlers.onMouseLeave;
- onMouseLeaveCallback == null ? void 0 : onMouseLeaveCallback(event);
+ onMouseLeaveCallback == null || onMouseLeaveCallback(event);
handleResume();
};
};
@@ -56363,14 +56440,13 @@ function useSnackbar(parameters) {
return undefined;
}, [disableWindowBlurListener, handleResume, open]);
var getRootProps = function getRootProps() {
- var otherHandlers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var propsEventHandlers = extractEventHandlers(parameters);
- var externalEventHandlers = (0,esm_extends/* default */.Z)({}, propsEventHandlers, otherHandlers);
+ var externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var externalEventHandlers = (0,esm_extends/* default */.Z)({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
return (0,esm_extends/* default */.Z)({
// ClickAwayListener adds an `onClick` prop which results in the alert not being announced.
// See https://github.com/mui/material-ui/issues/29080
role: 'presentation'
- }, externalEventHandlers, {
+ }, externalProps, externalEventHandlers, {
onBlur: createHandleBlur(externalEventHandlers),
onFocus: createHandleFocus(externalEventHandlers),
onMouseEnter: createMouseEnter(externalEventHandlers),
@@ -56906,10 +56982,10 @@ var Link_Link = /*#__PURE__*/react.forwardRef(function Link(inProps, ref) {
});
false ? 0 : void 0;
/* harmony default export */ var material_Link_Link = (Link_Link);
-// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Edit.js
-var Edit = __webpack_require__(5954);
;// CONCATENATED MODULE: ./src/hooks/Shortcut.js
function useShortcut(action){var _ref;var _useSetting=useSetting(),setting=_useSetting.setting,updateSetting=_useSetting.updateSetting;var shortcuts=(setting===null||setting===void 0?void 0:setting.shortcuts)||DEFAULT_SHORTCUTS;var shortcut=shortcuts[action]||[];var setShortcut=(0,react.useCallback)(function(_x){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(val){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:Object.assign(shortcuts,(0,defineProperty/* default */.Z)({},action,val));_context.next=3;return updateSetting({shortcuts:shortcuts});case 3:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);},[action,shortcuts,updateSetting]);return{shortcut:shortcut,setShortcut:setShortcut};}
+// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Edit.js
+var Edit = __webpack_require__(5954);
;// CONCATENATED MODULE: ./src/libs/shortcut.js
/**
* 键盘快捷键监听
@@ -56923,9 +56999,19 @@ function useShortcut(action){var _ref;var _useSetting=useSetting(),setting=_useS
* @param {*} fn
* @param {*} target
* @returns
- */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};
+ */var shortcutRegister=function shortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var target=arguments.length>2&&arguments[2]!==undefined?arguments[2]:document;return shortcutListener(function(curkeys){if(targetKeys.length>0&&isSameSet(new Set(targetKeys),new Set(curkeys))){fn();}},target);};/**
+ * 注册连续快捷键
+ * @param {*} targetKeys
+ * @param {*} fn
+ * @param {*} step
+ * @param {*} timeout
+ * @param {*} target
+ * @returns
+ */var stepShortcutRegister=function stepShortcutRegister(){var targetKeys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var fn=arguments.length>1?arguments[1]:undefined;var step=arguments.length>2&&arguments[2]!==undefined?arguments[2]:3;var timeout=arguments.length>3&&arguments[3]!==undefined?arguments[3]:500;var target=arguments.length>4&&arguments[4]!==undefined?arguments[4]:document;var count=0;var pre=Date.now();var timer;return shortcutListener(function(curkeys,allkeys){timer&&clearTimeout(timer);timer=setTimeout(function(){clearTimeout(timer);count=0;},timeout);if(targetKeys.length>0&&curkeys.length===0){var now=Date.now();if((count===0||now-pre2&&arguments[2]!==undefined?arguments[2]:5000;return new Promise(function(resolve,reject){var pong=genEventName();var handleEvent=function handleEvent(e){window.removeEventListener(pong,handleEvent);var _e$detail=e.detail,data=_e$detail.data,error=_e$detail.error;if(error){reject(new Error(error));}else{resolve(data);}};window.addEventListener(pong,handleEvent);window.dispatchEvent(new CustomEvent(ping,{detail:{action:action,args:args,pong:pong}}));setTimeout(function(){window.removeEventListener(pong,handleEvent);reject(new Error("timeout"));},timeout);});};window.KISS_GM={fetch:function fetch(input,init){return promiseGM(MSG_GM_xmlHttpRequest,{input:input,init:init});},setValue:function setValue(key,val){return promiseGM(MSG_GM_setValue,{key:key,val:val});},getValue:function getValue(key){return promiseGM(MSG_GM_getValue,{key:key});},deleteValue:function deleteValue(key){return promiseGM(MSG_GM_deleteValue,{key:key});},getInfo:function getInfo(){return(_getInfo=_getInfo||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(window.GM_info){_context.next=4;break;}_context.next=3;return promiseGM(MSG_GM_info);case 3:window.GM_info=_context.sent;case 4:return _context.abrupt("return",window.GM_info);case 5:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);}};};/**
* 监听并回应页面对GM接口的请求
@@ -58609,51 +58697,18 @@ var gm_ref;var MSG_GM_xmlHttpRequest="xmlHttpRequest";var MSG_GM_setValue="setVa
function useApi(translator){var _ref;var _useSetting=useSetting(),setting=_useSetting.setting,updateSetting=_useSetting.updateSetting;var transApis=(setting===null||setting===void 0?void 0:setting.transApis)||DEFAULT_TRANS_APIS;var updateApi=(0,react.useCallback)(function(_x){return(_ref=_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(obj){var api;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:api=transApis[translator]||{};Object.assign(transApis,(0,defineProperty/* default */.Z)({},translator,_objectSpread2(_objectSpread2({},api),obj)));_context.next=4;return updateSetting({transApis:transApis});case 4:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);},[translator,transApis,updateSetting]);var resetApi=(0,react.useCallback)(/*#__PURE__*/asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(){return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:Object.assign(transApis,(0,defineProperty/* default */.Z)({},translator,DEFAULT_TRANS_APIS[translator]));_context2.next=3;return updateSetting({transApis:transApis});case 3:case"end":return _context2.stop();}},_callee2);})),[translator,transApis,updateSetting]);return{api:transApis[translator]||{},updateApi:updateApi,resetApi:resetApi};}
;// CONCATENATED MODULE: ./src/views/Options/Apis.js
function TestButton(_ref){var _ref2;var translator=_ref.translator,api=_ref.api;var i18n=useI18n();var alert=useAlert();var _useState=(0,react.useState)(false),_useState2=(0,slicedToArray/* default */.Z)(_useState,2),loading=_useState2[0],setLoading=_useState2[1];var handleApiTest=function handleApiTest(){return(_ref2=_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(){var _yield$apiTranslate,_yield$apiTranslate2,text;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;setLoading(true);_context.next=4;return apiTranslate({translator:translator,text:"hello world",fromLang:"en",toLang:"zh-CN",apiSetting:_objectSpread2(_objectSpread2({},api),{},{useCache:false})});case 4:_yield$apiTranslate=_context.sent;_yield$apiTranslate2=(0,slicedToArray/* default */.Z)(_yield$apiTranslate,1);text=_yield$apiTranslate2[0];if(text){_context.next=9;break;}throw new Error("empty reault");case 9:alert.success(i18n("test_success"));_context.next=15;break;case 12:_context.prev=12;_context.t0=_context["catch"](0);alert.error("".concat(i18n("test_failed"),": ").concat(_context.t0.message));case 15:_context.prev=15;setLoading(false);return _context.finish(15);case 18:case"end":return _context.stop();}},_callee,null,[[0,12,15,18]]);}))).apply(this,arguments);};if(loading){return/*#__PURE__*/(0,jsx_runtime.jsx)(CircularProgress_CircularProgress,{size:16});}return/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{size:"small",variant:"contained",onClick:handleApiTest,children:i18n("click_test")});}function ApiFields(_ref3){var translator=_ref3.translator;var i18n=useI18n();var _useApi=useApi(translator),api=_useApi.api,updateApi=_useApi.updateApi,resetApi=_useApi.resetApi;var _api$url=api.url,url=_api$url===void 0?"":_api$url,_api$key=api.key,key=_api$key===void 0?"":_api$key,_api$model=api.model,model=_api$model===void 0?"":_api$model,_api$prompt=api.prompt,prompt=_api$prompt===void 0?"":_api$prompt;var handleChange=function handleChange(e){var _e$target=e.target,name=_e$target.name,value=_e$target.value;updateApi((0,defineProperty/* default */.Z)({},name,value));};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:3,children:[translator!==OPT_TRANS_MICROSOFT&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",label:"URL",name:"url",value:url,onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",label:"KEY",name:"key",value:key,onChange:handleChange})]}),translator===OPT_TRANS_OPENAI&&/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment,{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",label:"MODEL",name:"model",value:model,onChange:handleChange}),/*#__PURE__*/(0,jsx_runtime.jsx)(TextField_TextField,{size:"small",label:"PROMPT",name:"prompt",value:prompt,onChange:handleChange,multiline:true})]}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{direction:"row",spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(TestButton,{translator:translator,api:api}),translator!==OPT_TRANS_MICROSOFT&&/*#__PURE__*/(0,jsx_runtime.jsx)(Button_Button,{size:"small",variant:"outlined",onClick:function onClick(){resetApi();},children:i18n("restore_default")})]}),translator===OPT_TRANS_CUSTOMIZE&&/*#__PURE__*/(0,jsx_runtime.jsx)("pre",{children:i18n("custom_api_help")})]});}function ApiAccordion(_ref4){var translator=_ref4.translator;var _useState3=(0,react.useState)(false),_useState4=(0,slicedToArray/* default */.Z)(_useState3,2),expanded=_useState4[0],setExpanded=_useState4[1];var handleChange=function handleChange(e){setExpanded(function(pre){return!pre;});};return/*#__PURE__*/(0,jsx_runtime.jsxs)(Accordion_Accordion,{expanded:expanded,onChange:handleChange,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(AccordionSummary_AccordionSummary,{expandIcon:/*#__PURE__*/(0,jsx_runtime.jsx)(ExpandMore/* default */.Z,{}),children:/*#__PURE__*/(0,jsx_runtime.jsx)(Typography_Typography,{children:translator})}),/*#__PURE__*/(0,jsx_runtime.jsx)(AccordionDetails_AccordionDetails,{children:expanded&&/*#__PURE__*/(0,jsx_runtime.jsx)(ApiFields,{translator:translator})})]});}function Apis(){var i18n=useI18n();return/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:3,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Alert_Alert,{severity:"info",children:/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:URL_KISS_PROXY,target:"_blank",children:i18n("about_api_proxy")})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Box_Box,{children:OPT_TRANS_ALL.map(function(translator){return/*#__PURE__*/(0,jsx_runtime.jsx)(ApiAccordion,{translator:translator},translator);})})]})});}
-;// CONCATENATED MODULE: ./src/libs/webfix.js
-var _fixerMap,webfix_ref,webfix_ref2,_webfix;/**
- * 修复程序类型
- */var FIXER_BR="br";var FIXER_FONTSIZE="fontSize";/**
- * 需要修复的站点列表
- * - pattern 匹配网址
- * - selector 需要修复的选择器
- * - rootSelector 需要监听的选择器,可留空
- * - fixer 修复函数,可针对不同网址,选用不同修复函数
- */var DEFAULT_SITES=[{pattern:"www.phoronix.com",selector:".content",rootSelector:"",fixer:FIXER_BR},{pattern:"t.me/s/",selector:".tgme_widget_message_text",rootSelector:".tgme_channel_history",fixer:FIXER_BR},{pattern:"baidu.com",selector:"html",rootSelector:"",fixer:FIXER_FONTSIZE}];/**
- * 修复过的标记
- */var fixedSign="kissfixed";/**
- * 采用 `br` 换行网站的修复函数
- * 目标是将 `br` 替换成 `p`
- * @param {*} node
- * @returns
- */function brFixer(node){if(node.hasAttribute(fixedSign)){return;}node.setAttribute(fixedSign,"true");var gapTags=["BR","WBR"];var newlineTags=["DIV","UL","OL","LI","H1","H2","H3","H4","H5","H6","P","HR","PRE","TABLE"];var html="";node.childNodes.forEach(function(child,index){if(index===0){html+="";}if(gapTags.indexOf(child.nodeName)!==-1){html+="
";}else if(newlineTags.indexOf(child.nodeName)!==-1){html+="
"+child.outerHTML+"";}else if(child.outerHTML){html+=child.outerHTML;}else if(child.nodeValue){html+=child.nodeValue;}if(index===node.childNodes.length-1){html+="
";}});node.innerHTML=html;}/**
- * 修复字体大小问题,如 baidu.com
- * @param {*} node
- */function fontSizeFixer(node){node.style.cssText+="font-size:1em;";}/**
- * 修复程序映射
- */var fixerMap=(_fixerMap={},(0,defineProperty/* default */.Z)(_fixerMap,FIXER_BR,brFixer),(0,defineProperty/* default */.Z)(_fixerMap,FIXER_FONTSIZE,fontSizeFixer),_fixerMap);/**
- * 查找、监听节点,并执行修复函数
- * @param {*} selector
- * @param {*} fixer
- * @param {*} rootSelector
- */function run(selector,fixer,rootSelector){var mutaObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){mutation.addedNodes.forEach(function(addNode){addNode.querySelectorAll(selector).forEach(fixer);});});});var rootNodes=[document];if(rootSelector){rootNodes=document.querySelectorAll(rootSelector);}rootNodes.forEach(function(rootNode){rootNode.querySelectorAll(selector).forEach(fixer);mutaObserver.observe(rootNode,{childList:true});});}/**
- * 同步远程数据
- * @param {*} url
- * @returns
- */var syncWebfix=function syncWebfix(_x){return(webfix_ref=webfix_ref||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return apiFetch(url);case 2:sites=_context.sent;_context.next=5;return setWebfix(url,sites);case 5:return _context.abrupt("return",sites);case 6:case"end":return _context.stop();}},_callee);}))).apply(this,arguments);};/**
- * 从缓存或远程加载修复站点
- * @param {*} url
- * @returns
- */var loadOrFetchWebfix=function loadOrFetchWebfix(_x2){return(webfix_ref2=webfix_ref2||asyncToGenerator_asyncToGenerator(/*#__PURE__*/regeneratorRuntime_regeneratorRuntime().mark(function _callee2(url){var sites;return regeneratorRuntime_regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=3;return getWebfix(url);case 3:sites=_context2.sent;if(!(sites!==null&&sites!==void 0&&sites.length)){_context2.next=6;break;}return _context2.abrupt("return",sites);case 6:return _context2.abrupt("return",syncWebfix(url));case 9:_context2.prev=9;_context2.t0=_context2["catch"](0);console.log("[load webfix]",_context2.t0.message);return _context2.abrupt("return",DEFAULT_SITES);case 13:case"end":return _context2.stop();}},_callee2,null,[[0,9]]);}))).apply(this,arguments);};/**
- * 匹配站点
- */function webfix(_x3,_x4){return(_webfix=_webfix||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(href,_ref3){var injectWebfix,sites,i,site;return _regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:injectWebfix=_ref3.injectWebfix;_context3.prev=1;if(injectWebfix){_context3.next=4;break;}return _context3.abrupt("return");case 4:_context3.next=6;return loadOrFetchWebfix("https://fishjar.github.io/kiss-rules/kiss-webfix.json");case 6:sites=_context3.sent;i=0;case 8:if(!(i8)){_context.next=15;break;}setError("Time out. (连接超时)");return _context.abrupt("break",19);case 15:_context.next=17;return sleep(1000);case 17:_context.next=2;break;case 19:_context.next=24;break;case 21:_context.next=23;return trySyncSettingAndRules();case 23:setReady(true);case 24:case"end":return _context.stop();}},_callee);}))();},[]);if(error){return/*#__PURE__*/(0,jsx_runtime.jsxs)("center",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Alert_Alert,{severity:"error",children:error}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.0")})}),/*#__PURE__*/(0,jsx_runtime.jsx)("h2",{children:"Please confirm whether to install or enable KISS Translator GreaseMonkey script? (\u8BF7\u68C0\u67E5\u662F\u5426\u5B89\u88C5\u6216\u542F\u7528\u7B80\u7EA6\u7FFB\u8BD1\u6CB9\u7334\u811A\u672C)"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator.user.js",children:"Install Userscript for Tampermonkey/Violentmonkey 1 (\u6CB9\u7334\u811A\u672C \u5B89\u88C5\u5730\u5740 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator.user.js",children:"Install Userscript for Tampermonkey/Violentmonkey 2 (\u6CB9\u7334\u811A\u672C \u5B89\u88C5\u5730\u5740 2)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js",children:"Install Userscript for iOS Safari 1 (\u6CB9\u7334\u811A\u672C iOS Safari\u4E13\u7528 \u5B89\u88C5\u5730\u5740 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",children:"Install Userscript for iOS Safari 2 (\u6CB9\u7334\u811A\u672C iOS Safari\u4E13\u7528 \u5B89\u88C5\u5730\u5740 2)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/options.html",children:"Open Options Page 1 (\u6253\u5F00\u8BBE\u7F6E\u9875\u9762 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/options",children:"Open Options Page 2 (\u6253\u5F00\u8BBE\u7F6E\u9875\u9762 2)"})]})]});}if(!ready){return/*#__PURE__*/(0,jsx_runtime.jsxs)("center",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.0")})}),/*#__PURE__*/(0,jsx_runtime.jsx)(CircularProgress_CircularProgress,{})]});}return/*#__PURE__*/(0,jsx_runtime.jsx)(SettingProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Theme,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(AlertProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(HashRouter,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Routes,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Route,{path:"/",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Layout,{}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{index:true,element:/*#__PURE__*/(0,jsx_runtime.jsx)(Settings,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"rules",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Rules,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"apis",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Apis,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"sync",element:/*#__PURE__*/(0,jsx_runtime.jsx)(SyncSetting,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"webfix",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Webfix,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"about",element:/*#__PURE__*/(0,jsx_runtime.jsx)(About,{})})]})})})})})});}
+_context.next=10;return trySyncSettingAndRules();case 10:setReady(true);return _context.abrupt("break",19);case 12:if(!(++i>8)){_context.next=15;break;}setError("Time out. (连接超时)");return _context.abrupt("break",19);case 15:_context.next=17;return sleep(1000);case 17:_context.next=2;break;case 19:_context.next=24;break;case 21:_context.next=23;return trySyncSettingAndRules();case 23:setReady(true);case 24:case"end":return _context.stop();}},_callee);}))();},[]);if(error){return/*#__PURE__*/(0,jsx_runtime.jsxs)("center",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Alert_Alert,{severity:"error",children:error}),/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.1")})}),/*#__PURE__*/(0,jsx_runtime.jsx)("h2",{children:"Please confirm whether to install or enable KISS Translator GreaseMonkey script? (\u8BF7\u68C0\u67E5\u662F\u5426\u5B89\u88C5\u6216\u542F\u7528\u7B80\u7EA6\u7FFB\u8BD1\u6CB9\u7334\u811A\u672C)"}),/*#__PURE__*/(0,jsx_runtime.jsxs)(Stack_Stack,{spacing:2,children:[/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator.user.js",children:"Install Userscript for Tampermonkey/Violentmonkey 1 (\u6CB9\u7334\u811A\u672C \u5B89\u88C5\u5730\u5740 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator.user.js",children:"Install Userscript for Tampermonkey/Violentmonkey 2 (\u6CB9\u7334\u811A\u672C \u5B89\u88C5\u5730\u5740 2)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/kiss-translator-ios-safari.user.js",children:"Install Userscript for iOS Safari 1 (\u6CB9\u7334\u811A\u672C iOS Safari\u4E13\u7528 \u5B89\u88C5\u5730\u5740 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",children:"Install Userscript for iOS Safari 2 (\u6CB9\u7334\u811A\u672C iOS Safari\u4E13\u7528 \u5B89\u88C5\u5730\u5740 2)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://fishjar.github.io/kiss-translator/options.html",children:"Open Options Page 1 (\u6253\u5F00\u8BBE\u7F6E\u9875\u9762 1)"}),/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://kiss-translator.rayjar.com/options",children:"Open Options Page 2 (\u6253\u5F00\u8BBE\u7F6E\u9875\u9762 2)"})]})]});}if(!ready){return/*#__PURE__*/(0,jsx_runtime.jsxs)("center",{children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Divider_Divider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(material_Link_Link,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("1.7.1")})}),/*#__PURE__*/(0,jsx_runtime.jsx)(CircularProgress_CircularProgress,{})]});}return/*#__PURE__*/(0,jsx_runtime.jsx)(SettingProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Theme,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(AlertProvider,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(HashRouter,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Routes,{children:/*#__PURE__*/(0,jsx_runtime.jsxs)(Route,{path:"/",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Layout,{}),children:[/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{index:true,element:/*#__PURE__*/(0,jsx_runtime.jsx)(Settings,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"rules",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Rules,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"input",element:/*#__PURE__*/(0,jsx_runtime.jsx)(InputSetting,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"apis",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Apis,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"sync",element:/*#__PURE__*/(0,jsx_runtime.jsx)(SyncSetting,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"webfix",element:/*#__PURE__*/(0,jsx_runtime.jsx)(Webfix,{})}),/*#__PURE__*/(0,jsx_runtime.jsx)(Route,{path:"about",element:/*#__PURE__*/(0,jsx_runtime.jsx)(About,{})})]})})})})})});}
;// CONCATENATED MODULE: ./src/options.js
var options_root=client.createRoot(document.getElementById("root"));options_root.render(/*#__PURE__*/(0,jsx_runtime.jsx)(react.StrictMode,{children:/*#__PURE__*/(0,jsx_runtime.jsx)(Options,{})}));
}();
diff --git a/version.txt b/version.txt
index 9dbb0c0..081af9a 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-1.7.0
\ No newline at end of file
+1.7.1
\ No newline at end of file