SYMBOL INDEX (671 symbols across 109 files) FILE: src/background.js function updateIcon (line 45) | async function updateIcon(isActive, tabId) { constant CSP_RULE_START_ID (line 66) | const CSP_RULE_START_ID = 1; constant ORI_RULE_START_ID (line 67) | const ORI_RULE_START_ID = 10000; constant CSP_REMOVE_HEADERS (line 68) | const CSP_REMOVE_HEADERS = [ constant DEFAULT_SEPARATE_WINDOW_BOUNDS (line 80) | const DEFAULT_SEPARATE_WINDOW_BOUNDS = { function persistSeparateWindowBounds (line 90) | async function persistSeparateWindowBounds(bounds) { function openSeparateWindowWithSavedBounds (line 103) | async function openSeparateWindowWithSavedBounds() { function updateCacheFromActual (line 151) | async function updateCacheFromActual(windowId) { function addContextMenus (line 214) | async function addContextMenus(contextMenuType = 1) { function updateCspRules (line 265) | async function updateCspRules({ csplist, orilist }) { function registerMsgDisplayScript (line 347) | async function registerMsgDisplayScript() { function handleStreamFetch (line 518) | async function handleStreamFetch(port, args) { FILE: src/common.js function runSettingPage (line 21) | function runSettingPage() { function showErr (line 43) | function showErr(message) { function getFavWords (line 101) | async function getFavWords(rule) { function run (line 119) | async function run(isUserscript = false) { FILE: src/components/Logo/icon.base64.js constant FAVICON_BASE64 (line 1) | const FAVICON_BASE64 = FILE: src/config/api.js constant DEFAULT_HTTP_TIMEOUT (line 1) | const DEFAULT_HTTP_TIMEOUT = 10000; constant DEFAULT_FETCH_LIMIT (line 2) | const DEFAULT_FETCH_LIMIT = 10; constant DEFAULT_FETCH_INTERVAL (line 3) | const DEFAULT_FETCH_INTERVAL = 100; constant DEFAULT_BATCH_INTERVAL (line 4) | const DEFAULT_BATCH_INTERVAL = 400; constant DEFAULT_BATCH_SIZE (line 5) | const DEFAULT_BATCH_SIZE = 10; constant DEFAULT_BATCH_LENGTH (line 6) | const DEFAULT_BATCH_LENGTH = 10000; constant DEFAULT_CONTEXT_SIZE (line 7) | const DEFAULT_CONTEXT_SIZE = 3; constant INPUT_PLACE_URL (line 9) | const INPUT_PLACE_URL = "{{url}}"; constant INPUT_PLACE_FROM (line 10) | const INPUT_PLACE_FROM = "{{from}}"; constant INPUT_PLACE_TO (line 11) | const INPUT_PLACE_TO = "{{to}}"; constant INPUT_PLACE_FROM_LANG (line 12) | const INPUT_PLACE_FROM_LANG = "{{fromLang}}"; constant INPUT_PLACE_TO_LANG (line 13) | const INPUT_PLACE_TO_LANG = "{{toLang}}"; constant INPUT_PLACE_TEXT (line 14) | const INPUT_PLACE_TEXT = "{{text}}"; constant INPUT_PLACE_TONE (line 15) | const INPUT_PLACE_TONE = "{{tone}}"; constant INPUT_PLACE_TITLE (line 16) | const INPUT_PLACE_TITLE = "{{title}}"; constant INPUT_PLACE_DESCRIPTION (line 17) | const INPUT_PLACE_DESCRIPTION = "{{description}}"; constant INPUT_PLACE_SUMMARY (line 18) | const INPUT_PLACE_SUMMARY = "{{summary}}"; constant INPUT_PLACE_KEY (line 19) | const INPUT_PLACE_KEY = "{{key}}"; constant INPUT_PLACE_MODEL (line 20) | const INPUT_PLACE_MODEL = "{{model}}"; constant OPT_DICT_BING (line 23) | const OPT_DICT_BING = "Bing"; constant OPT_DICT_YOUDAO (line 24) | const OPT_DICT_YOUDAO = "Youdao"; constant OPT_DICT_ALL (line 25) | const OPT_DICT_ALL = [OPT_DICT_BING, OPT_DICT_YOUDAO]; constant OPT_DICT_MAP (line 26) | const OPT_DICT_MAP = new Set(OPT_DICT_ALL); constant OPT_SUG_BAIDU (line 28) | const OPT_SUG_BAIDU = "Baidu"; constant OPT_SUG_YOUDAO (line 29) | const OPT_SUG_YOUDAO = "Youdao"; constant OPT_SUG_ALL (line 30) | const OPT_SUG_ALL = [OPT_SUG_BAIDU, OPT_SUG_YOUDAO]; constant OPT_SUG_MAP (line 31) | const OPT_SUG_MAP = new Set(OPT_SUG_ALL); constant OPT_TRANS_BUILTINAI (line 33) | const OPT_TRANS_BUILTINAI = "BuiltinAI"; constant OPT_TRANS_GOOGLE (line 34) | const OPT_TRANS_GOOGLE = "Google"; constant OPT_TRANS_GOOGLE_2 (line 35) | const OPT_TRANS_GOOGLE_2 = "Google2"; constant OPT_TRANS_MICROSOFT (line 36) | const OPT_TRANS_MICROSOFT = "Microsoft"; constant OPT_TRANS_AZUREAI (line 37) | const OPT_TRANS_AZUREAI = "AzureAI"; constant OPT_TRANS_DEEPL (line 38) | const OPT_TRANS_DEEPL = "DeepL"; constant OPT_TRANS_DEEPLX (line 39) | const OPT_TRANS_DEEPLX = "DeepLX"; constant OPT_TRANS_DEEPLFREE (line 40) | const OPT_TRANS_DEEPLFREE = "DeepLFree"; constant OPT_TRANS_NIUTRANS (line 41) | const OPT_TRANS_NIUTRANS = "NiuTrans"; constant OPT_TRANS_BAIDU (line 42) | const OPT_TRANS_BAIDU = "Baidu"; constant OPT_TRANS_TENCENT (line 43) | const OPT_TRANS_TENCENT = "Tencent"; constant OPT_TRANS_VOLCENGINE (line 44) | const OPT_TRANS_VOLCENGINE = "Volcengine"; constant OPT_TRANS_OPENAI (line 45) | const OPT_TRANS_OPENAI = "OpenAI"; constant OPT_TRANS_GEMINI (line 46) | const OPT_TRANS_GEMINI = "Gemini"; constant OPT_TRANS_GEMINI_2 (line 47) | const OPT_TRANS_GEMINI_2 = "Gemini2"; constant OPT_TRANS_CLAUDE (line 48) | const OPT_TRANS_CLAUDE = "Claude"; constant OPT_TRANS_CLOUDFLAREAI (line 49) | const OPT_TRANS_CLOUDFLAREAI = "CloudflareAI"; constant OPT_TRANS_OLLAMA (line 50) | const OPT_TRANS_OLLAMA = "Ollama"; constant OPT_TRANS_OPENROUTER (line 51) | const OPT_TRANS_OPENROUTER = "OpenRouter"; constant OPT_TRANS_CUSTOMIZE (line 52) | const OPT_TRANS_CUSTOMIZE = "Custom"; constant OPT_ALL_TRANS_TYPES (line 55) | const OPT_ALL_TRANS_TYPES = [ constant OPT_LANGDETECTOR_ALL (line 78) | const OPT_LANGDETECTOR_ALL = [ constant OPT_LANGDETECTOR_MAP (line 86) | const OPT_LANGDETECTOR_MAP = new Set(OPT_LANGDETECTOR_ALL); constant API_SPE_TYPES (line 89) | const API_SPE_TYPES = { constant BUILTIN_STONES (line 160) | const BUILTIN_STONES = [ constant BUILTIN_PLACEHOLDERS (line 175) | const BUILTIN_PLACEHOLDERS = ["{ }", "{{ }}", "[ ]", "[[ ]]"]; constant BUILTIN_PLACETAGS (line 176) | const BUILTIN_PLACETAGS = ["i", "a", "b", "x", "span"]; constant PLACETAG_FORMATS (line 177) | const PLACETAG_FORMATS = ["compact", "attribute"]; constant OPT_LANGS_TO (line 179) | const OPT_LANGS_TO = [ constant OPT_LANGS_LIST (line 219) | const OPT_LANGS_LIST = OPT_LANGS_TO.map(([lang]) => lang); constant OPT_LANGS_FROM (line 220) | const OPT_LANGS_FROM = [["auto", "Auto-detect"], ...OPT_LANGS_TO]; constant OPT_LANGS_MAP (line 221) | const OPT_LANGS_MAP = new Map(OPT_LANGS_TO); constant OPT_LANGS_SPEC_NAME (line 224) | const OPT_LANGS_SPEC_NAME = new Map( constant OPT_LANGS_SPEC_DEFAULT (line 227) | const OPT_LANGS_SPEC_DEFAULT = new Map( constant OPT_LANGS_SPEC_DEFAULT_UC (line 230) | const OPT_LANGS_SPEC_DEFAULT_UC = new Map( constant OPT_LANGS_TO_SPEC (line 233) | const OPT_LANGS_TO_SPEC = { constant OPT_LANGS_TO_CODE (line 361) | const OPT_LANGS_TO_CODE = {}; constant DEFAULT_API_LIST (line 662) | const DEFAULT_API_LIST = OPT_ALL_TRANS_TYPES.map((apiType) => ({ constant DEFAULT_API_TYPE (line 669) | const DEFAULT_API_TYPE = OPT_TRANS_MICROSOFT; constant DEFAULT_API_SETTING (line 670) | const DEFAULT_API_SETTING = DEFAULT_API_LIST.find( FILE: src/config/app.js constant APP_NAME (line 1) | const APP_NAME = process.env.REACT_APP_NAME.trim() constant APP_LCNAME (line 4) | const APP_LCNAME = APP_NAME.toLowerCase(); constant APP_UPNAME (line 5) | const APP_UPNAME = APP_NAME.toUpperCase(); constant APP_CONSTS (line 6) | const APP_CONSTS = { constant APP_VERSION (line 12) | const APP_VERSION = process.env.REACT_APP_VERSION.split("."); constant THEME_LIGHT (line 14) | const THEME_LIGHT = "light"; constant THEME_DARK (line 15) | const THEME_DARK = "dark"; FILE: src/config/client.js constant CLIENT_WEB (line 1) | const CLIENT_WEB = "web"; constant CLIENT_CHROME (line 2) | const CLIENT_CHROME = "chrome"; constant CLIENT_EDGE (line 3) | const CLIENT_EDGE = "edge"; constant CLIENT_FIREFOX (line 4) | const CLIENT_FIREFOX = "firefox"; constant CLIENT_USERSCRIPT (line 5) | const CLIENT_USERSCRIPT = "userscript"; constant CLIENT_THUNDERBIRD (line 6) | const CLIENT_THUNDERBIRD = "thunderbird"; constant CLIENT_EXTS (line 7) | const CLIENT_EXTS = [ constant DEFAULT_USER_AGENT (line 14) | const DEFAULT_USER_AGENT = FILE: src/config/i18n.js constant UI_LANGS (line 1) | const UI_LANGS = [ constant I18N (line 183) | const I18N = { FILE: src/config/msg.js constant CMD_TOGGLE_TRANSLATE (line 1) | const CMD_TOGGLE_TRANSLATE = "toggleTranslate"; constant CMD_TOGGLE_STYLE (line 2) | const CMD_TOGGLE_STYLE = "toggleStyle"; constant CMD_OPEN_OPTIONS (line 3) | const CMD_OPEN_OPTIONS = "openOptions"; constant CMD_OPEN_TRANBOX (line 4) | const CMD_OPEN_TRANBOX = "openTranbox"; constant CMD_OPEN_SEPARATE_WINDOW (line 5) | const CMD_OPEN_SEPARATE_WINDOW = "openSeparateWindow"; constant MSG_FETCH (line 7) | const MSG_FETCH = "kiss_fetch"; constant MSG_GET_HTTPCACHE (line 8) | const MSG_GET_HTTPCACHE = "get_httpcache"; constant MSG_PUT_HTTPCACHE (line 9) | const MSG_PUT_HTTPCACHE = "put_httpcache"; constant MSG_OPEN_OPTIONS (line 10) | const MSG_OPEN_OPTIONS = "open_options"; constant MSG_SAVE_RULE (line 11) | const MSG_SAVE_RULE = "save_rule"; constant MSG_TRANS_TOGGLE (line 12) | const MSG_TRANS_TOGGLE = "toggle_translate"; constant MSG_TRANS_TOGGLE_STYLE (line 13) | const MSG_TRANS_TOGGLE_STYLE = "toggle_styles"; constant MSG_OPEN_TRANBOX (line 14) | const MSG_OPEN_TRANBOX = "open_tranbox"; constant MSG_TRANS_GETRULE (line 15) | const MSG_TRANS_GETRULE = "trans_getrule"; constant MSG_TRANS_PUTRULE (line 16) | const MSG_TRANS_PUTRULE = "trans_putrule"; constant MSG_TRANS_CURRULE (line 17) | const MSG_TRANS_CURRULE = "trans_currule"; constant MSG_TRANSBOX_TOGGLE (line 18) | const MSG_TRANSBOX_TOGGLE = "toggle_transbox"; constant MSG_POPUP_TOGGLE (line 19) | const MSG_POPUP_TOGGLE = "toggle_popup"; constant MSG_MOUSEHOVER_TOGGLE (line 20) | const MSG_MOUSEHOVER_TOGGLE = "toggle_mousehover"; constant MSG_HOVERNODE_TOGGLE (line 21) | const MSG_HOVERNODE_TOGGLE = "toggle_hover_node"; constant MSG_TRANSINPUT_TOGGLE (line 22) | const MSG_TRANSINPUT_TOGGLE = "toggle_input_translation"; constant MSG_INPUT_TRANSLATE (line 23) | const MSG_INPUT_TRANSLATE = "input_translate"; constant MSG_CONTEXT_MENUS (line 24) | const MSG_CONTEXT_MENUS = "context_menus"; constant MSG_COMMAND_SHORTCUTS (line 25) | const MSG_COMMAND_SHORTCUTS = "command_shortcuts"; constant MSG_INJECT_JS (line 26) | const MSG_INJECT_JS = "inject_js"; constant MSG_INJECT_CSS (line 27) | const MSG_INJECT_CSS = "inject_css"; constant MSG_UPDATE_CSP (line 28) | const MSG_UPDATE_CSP = "update_csp"; constant MSG_BUILTINAI_DETECT (line 29) | const MSG_BUILTINAI_DETECT = "builtinai_detect"; constant MSG_BUILTINAI_TRANSLATE (line 30) | const MSG_BUILTINAI_TRANSLATE = "builtinai_translte"; constant MSG_SET_LOGLEVEL (line 31) | const MSG_SET_LOGLEVEL = "set_loglevel"; constant MSG_CLEAR_CACHES (line 32) | const MSG_CLEAR_CACHES = "clear_caches"; constant MSG_OPEN_SEPARATE_WINDOW (line 33) | const MSG_OPEN_SEPARATE_WINDOW = "open_separate_window"; constant PORT_STREAM_FETCH (line 34) | const PORT_STREAM_FETCH = "kiss_stream_fetch"; constant MSG_UPDATE_ICON (line 35) | const MSG_UPDATE_ICON = "update_icon"; constant EVENT_KISS_INNER (line 37) | const EVENT_KISS_INNER = "kiss_translator_inner"; constant EVENT_KISS_TRANSLATOR (line 38) | const EVENT_KISS_TRANSLATOR = "kiss_translator"; constant MSG_XHR_DATA_YOUTUBE (line 40) | const MSG_XHR_DATA_YOUTUBE = "KISS_XHR_DATA_YOUTUBE"; constant MSG_MENUS_PROGRESSED (line 44) | const MSG_MENUS_PROGRESSED = "progressed"; constant MSG_MENUS_UPDATEFORM (line 45) | const MSG_MENUS_UPDATEFORM = "updateFormData"; FILE: src/config/quotes.js function getRandomQuote (line 710) | function getRandomQuote() { FILE: src/config/rules.js constant GLOBAL_KEY (line 4) | const GLOBAL_KEY = "*"; constant REMAIN_KEY (line 5) | const REMAIN_KEY = "-"; constant SHADOW_KEY (line 6) | const SHADOW_KEY = ">>>"; constant DEFAULT_COLOR (line 8) | const DEFAULT_COLOR = "#209CEE"; constant DEFAULT_TRANS_TAG (line 10) | const DEFAULT_TRANS_TAG = "font"; constant DEFAULT_SELECT_STYLE (line 11) | const DEFAULT_SELECT_STYLE = constant OPT_TIMING_PAGESCROLL (line 14) | const OPT_TIMING_PAGESCROLL = "mk_pagescroll"; constant OPT_TIMING_PAGEOPEN (line 15) | const OPT_TIMING_PAGEOPEN = "mk_pageopen"; constant OPT_TIMING_MOUSEOVER (line 16) | const OPT_TIMING_MOUSEOVER = "mk_mouseover"; constant OPT_TIMING_CONTROL (line 17) | const OPT_TIMING_CONTROL = "mk_ctrlKey"; constant OPT_TIMING_SHIFT (line 18) | const OPT_TIMING_SHIFT = "mk_shiftKey"; constant OPT_TIMING_ALT (line 19) | const OPT_TIMING_ALT = "mk_altKey"; constant OPT_TIMING_ALL (line 20) | const OPT_TIMING_ALL = [ constant OPT_SPLIT_PARAGRAPH_DISABLE (line 29) | const OPT_SPLIT_PARAGRAPH_DISABLE = "split_disable"; constant OPT_SPLIT_PARAGRAPH_TEXTLENGTH (line 30) | const OPT_SPLIT_PARAGRAPH_TEXTLENGTH = "split_textlength"; constant OPT_SPLIT_PARAGRAPH_PUNCTUATION (line 31) | const OPT_SPLIT_PARAGRAPH_PUNCTUATION = "split_punctuation"; constant OPT_SPLIT_PARAGRAPH_ALL (line 32) | const OPT_SPLIT_PARAGRAPH_ALL = [ constant OPT_HIGHLIGHT_WORDS_DISABLE (line 38) | const OPT_HIGHLIGHT_WORDS_DISABLE = "highlight_disable"; constant OPT_HIGHLIGHT_WORDS_BEFORETRANS (line 39) | const OPT_HIGHLIGHT_WORDS_BEFORETRANS = "highlight_beforetrans"; constant OPT_HIGHLIGHT_WORDS_AFTERTRANS (line 40) | const OPT_HIGHLIGHT_WORDS_AFTERTRANS = "highlight_aftertrans"; constant OPT_HIGHLIGHT_WORDS_ALL (line 41) | const OPT_HIGHLIGHT_WORDS_ALL = [ constant DEFAULT_SELECTOR (line 47) | const DEFAULT_SELECTOR = constant DEFAULT_IGNORE_SELECTOR (line 49) | const DEFAULT_IGNORE_SELECTOR = "button, footer, pre, mark, nav"; constant DEFAULT_KEEP_SELECTOR (line 50) | const DEFAULT_KEEP_SELECTOR = `code, cite, math, .math, a:has(code)`; constant DEFAULT_RULE (line 51) | const DEFAULT_RULE = { constant GLOBLA_RULE (line 96) | const GLOBLA_RULE = { constant DEFAULT_RULES (line 140) | const DEFAULT_RULES = [GLOBLA_RULE]; constant RULES_MAP (line 143) | const RULES_MAP = { constant BUILTIN_RULES (line 187) | const BUILTIN_RULES = Object.entries(RULES_MAP).map( FILE: src/config/setting.js constant OPT_SHORTCUT_TRANSLATE (line 12) | const OPT_SHORTCUT_TRANSLATE = "toggleTranslate"; constant OPT_SHORTCUT_STYLE (line 13) | const OPT_SHORTCUT_STYLE = "toggleStyle"; constant OPT_SHORTCUT_POPUP (line 14) | const OPT_SHORTCUT_POPUP = "togglePopup"; constant OPT_SHORTCUT_SETTING (line 15) | const OPT_SHORTCUT_SETTING = "openSetting"; constant DEFAULT_SHORTCUTS (line 16) | const DEFAULT_SHORTCUTS = { constant TRANS_MIN_LENGTH (line 23) | const TRANS_MIN_LENGTH = 2; constant TRANS_MAX_LENGTH (line 24) | const TRANS_MAX_LENGTH = 100000; constant TRANS_NEWLINE_LENGTH (line 25) | const TRANS_NEWLINE_LENGTH = 20; constant DEFAULT_BLACKLIST (line 26) | const DEFAULT_BLACKLIST = [ constant DEFAULT_CSPLIST (line 31) | const DEFAULT_CSPLIST = []; constant DEFAULT_ORILIST (line 32) | const DEFAULT_ORILIST = ["https://dict.youdao.com"]; constant OPT_SYNCTYPE_WORKER (line 35) | const OPT_SYNCTYPE_WORKER = "KISS-Worker"; constant OPT_SYNCTYPE_WEBDAV (line 36) | const OPT_SYNCTYPE_WEBDAV = "WebDAV"; constant OPT_SYNCTOKEN_PERFIX (line 37) | const OPT_SYNCTOKEN_PERFIX = "kt_"; constant OPT_SYNCTYPE_ALL (line 38) | const OPT_SYNCTYPE_ALL = [OPT_SYNCTYPE_WORKER, OPT_SYNCTYPE_WEBDAV]; constant DEFAULT_SYNC (line 39) | const DEFAULT_SYNC = { constant OPT_INPUT_DOT_DISABLE (line 50) | const OPT_INPUT_DOT_DISABLE = "-"; constant OPT_INPUT_DOT_MOBILE (line 51) | const OPT_INPUT_DOT_MOBILE = "mobile"; constant OPT_INPUT_DOT_ALWAYS (line 52) | const OPT_INPUT_DOT_ALWAYS = "always"; constant OPT_INPUT_TRANS_SIGNS (line 55) | const OPT_INPUT_TRANS_SIGNS = ["/", "//", "\\", "\\\\", ">", ">>"]; constant DEFAULT_INPUT_SHORTCUT (line 56) | const DEFAULT_INPUT_SHORTCUT = ["AltLeft", "KeyI"]; constant DEFAULT_INPUT_RULE (line 57) | const DEFAULT_INPUT_RULE = { constant PHONIC_MAP (line 70) | const PHONIC_MAP = { constant OPT_TRANBOX_TRIGGER_CLICK (line 74) | const OPT_TRANBOX_TRIGGER_CLICK = "click"; constant OPT_TRANBOX_TRIGGER_HOVER (line 75) | const OPT_TRANBOX_TRIGGER_HOVER = "hover"; constant OPT_TRANBOX_TRIGGER_SELECT (line 76) | const OPT_TRANBOX_TRIGGER_SELECT = "select"; constant OPT_TRANBOX_TRIGGER_ALL (line 77) | const OPT_TRANBOX_TRIGGER_ALL = [ constant DEFAULT_TRANBOX_SHORTCUT (line 82) | const DEFAULT_TRANBOX_SHORTCUT = ["AltLeft", "KeyS"]; constant DEFAULT_TRANBOX_SETTING (line 83) | const DEFAULT_TRANBOX_SETTING = { constant SUBTITLE_WINDOW_STYLE (line 105) | const SUBTITLE_WINDOW_STYLE = `padding: 0.5em 1em; constant SUBTITLE_ORIGIN_STYLE (line 112) | const SUBTITLE_ORIGIN_STYLE = `font-size: clamp(1rem, 2cqw, 3rem);`; constant SUBTITLE_TRANSLATION_STYLE (line 113) | const SUBTITLE_TRANSLATION_STYLE = `font-size: clamp(1rem, 2cqw, 3rem);`; constant OPT_ENHANCE_ON (line 115) | const OPT_ENHANCE_ON = "on"; constant OPT_ENHANCE_OFF (line 116) | const OPT_ENHANCE_OFF = "off"; constant OPT_ENHANCE_MOBILE_OFF (line 117) | const OPT_ENHANCE_MOBILE_OFF = "mobile_off"; constant DEFAULT_SUBTITLE_SETTING (line 119) | const DEFAULT_SUBTITLE_SETTING = { constant DEFAULT_SUBRULES_LIST (line 138) | const DEFAULT_SUBRULES_LIST = [ constant DEFAULT_MOUSEHOVER_KEY (line 153) | const DEFAULT_MOUSEHOVER_KEY = ["ControlLeft"]; constant DEFAULT_MOUSE_HOVER_SETTING (line 154) | const DEFAULT_MOUSE_HOVER_SETTING = { constant DEFAULT_SETTING (line 159) | const DEFAULT_SETTING = { FILE: src/config/storage.js constant KV_RULES_KEY (line 3) | const KV_RULES_KEY = `kiss-rules_v${APP_VERSION[0]}.json`; constant KV_WORDS_KEY (line 4) | const KV_WORDS_KEY = "kiss-words.json"; constant KV_RULES_SHARE_KEY (line 5) | const KV_RULES_SHARE_KEY = `kiss-rules-share_v${APP_VERSION[0]}.json`; constant KV_SETTING_KEY (line 6) | const KV_SETTING_KEY = `kiss-setting_v${APP_VERSION[0]}.json`; constant KV_SALT_SYNC (line 7) | const KV_SALT_SYNC = "KISS-Translator-SYNC"; constant KV_SALT_SHARE (line 8) | const KV_SALT_SHARE = "KISS-Translator-SHARE"; constant STOKEY_MSAUTH (line 10) | const STOKEY_MSAUTH = `${APP_NAME}_msauth`; constant STOKEY_BDAUTH (line 11) | const STOKEY_BDAUTH = `${APP_NAME}_bdauth`; constant STOKEY_SETTING_OLD (line 12) | const STOKEY_SETTING_OLD = `${APP_NAME}_setting`; constant STOKEY_RULES_OLD (line 13) | const STOKEY_RULES_OLD = `${APP_NAME}_rules`; constant STOKEY_SETTING (line 14) | const STOKEY_SETTING = `${APP_NAME}_setting_v${APP_VERSION[0]}`; constant STOKEY_RULES (line 15) | const STOKEY_RULES = `${APP_NAME}_rules_v${APP_VERSION[0]}`; constant STOKEY_WORDS (line 16) | const STOKEY_WORDS = `${APP_NAME}_words`; constant STOKEY_SYNC (line 17) | const STOKEY_SYNC = `${APP_NAME}_sync`; constant STOKEY_FAB (line 18) | const STOKEY_FAB = `${APP_NAME}_fab`; constant STOKEY_TRANBOX (line 19) | const STOKEY_TRANBOX = `${APP_NAME}_tranbox`; constant STOKEY_SEPARATE_WINDOW (line 20) | const STOKEY_SEPARATE_WINDOW = `${APP_NAME}_separate_window`; constant STOKEY_RULESCACHE_PREFIX (line 21) | const STOKEY_RULESCACHE_PREFIX = `${APP_NAME}_rulescache_`; constant CACHE_NAME (line 23) | const CACHE_NAME = `${APP_NAME}_cache`; constant DEFAULT_CACHE_TIMEOUT (line 24) | const DEFAULT_CACHE_TIMEOUT = 3600 * 24 * 7; FILE: src/config/styles.js constant OPT_STYLE_NONE (line 1) | const OPT_STYLE_NONE = "style_none"; constant OPT_STYLE_LINE (line 2) | const OPT_STYLE_LINE = "under_line"; constant OPT_STYLE_DOTLINE (line 3) | const OPT_STYLE_DOTLINE = "dot_line"; constant OPT_STYLE_DASHLINE (line 4) | const OPT_STYLE_DASHLINE = "dash_line"; constant OPT_STYLE_DASHLINE_BOLD (line 5) | const OPT_STYLE_DASHLINE_BOLD = "dash_line_bold"; constant OPT_STYLE_DASHBOX (line 6) | const OPT_STYLE_DASHBOX = "dash_box"; constant OPT_STYLE_DASHBOX_BOLD (line 7) | const OPT_STYLE_DASHBOX_BOLD = "dash_box_bold"; constant OPT_STYLE_WAVYLINE (line 8) | const OPT_STYLE_WAVYLINE = "wavy_line"; constant OPT_STYLE_WAVYLINE_BOLD (line 9) | const OPT_STYLE_WAVYLINE_BOLD = "wavy_line_bold"; constant OPT_STYLE_MARKER (line 10) | const OPT_STYLE_MARKER = "marker"; constant OPT_STYLE_GRADIENT_MARKER (line 11) | const OPT_STYLE_GRADIENT_MARKER = "gradient_marker"; constant OPT_STYLE_FUZZY (line 12) | const OPT_STYLE_FUZZY = "fuzzy"; constant OPT_STYLE_HIGHLIGHT (line 13) | const OPT_STYLE_HIGHLIGHT = "highlight"; constant OPT_STYLE_BLOCKQUOTE (line 14) | const OPT_STYLE_BLOCKQUOTE = "blockquote"; constant OPT_STYLE_GRADIENT (line 15) | const OPT_STYLE_GRADIENT = "gradient"; constant OPT_STYLE_BLINK (line 16) | const OPT_STYLE_BLINK = "blink"; constant OPT_STYLE_GLOW (line 17) | const OPT_STYLE_GLOW = "glow"; constant OPT_STYLE_COLORFUL (line 18) | const OPT_STYLE_COLORFUL = "colorful"; constant OPT_STYLE_ALL (line 19) | const OPT_STYLE_ALL = [ constant DEFAULT_CUSTOM_STYLES (line 40) | const DEFAULT_CUSTOM_STYLES = [ FILE: src/config/url.js constant URL_CACHE_TRAN (line 3) | const URL_CACHE_TRAN = `https://${APP_LCNAME}/translate`; constant URL_CACHE_SUBTITLE (line 4) | const URL_CACHE_SUBTITLE = `https://${APP_LCNAME}/subtitle`; constant URL_CACHE_DELANG (line 5) | const URL_CACHE_DELANG = `https://${APP_LCNAME}/detectlang`; constant URL_CACHE_BINGDICT (line 6) | const URL_CACHE_BINGDICT = `https://${APP_LCNAME}/bingdict`; constant URL_KISS_WORKER (line 8) | const URL_KISS_WORKER = "https://github.com/fishjar/kiss-worker"; constant URL_KISS_PROXY (line 9) | const URL_KISS_PROXY = "https://github.com/fishjar/kiss-proxy"; constant URL_KISS_RULES (line 10) | const URL_KISS_RULES = "https://github.com/fishjar/kiss-rules"; constant URL_KISS_RULES_NEW_ISSUE (line 11) | const URL_KISS_RULES_NEW_ISSUE = constant URL_RAW_PREFIX (line 13) | const URL_RAW_PREFIX = FILE: src/hooks/Alert.js function AlertProvider (line 23) | function AlertProvider({ children }) { function useAlert (line 85) | function useAlert() { FILE: src/hooks/Api.js function useApiState (line 5) | function useApiState() { function useApiList (line 19) | function useApiList() { function useApiItem (line 121) | function useApiItem(apiSlug) { FILE: src/hooks/Audio.js function useAudio (line 10) | function useAudio(src) { FILE: src/hooks/ColorMode.js function useDarkMode (line 8) | function useDarkMode() { FILE: src/hooks/Confirm.js function ConfirmProvider (line 19) | function ConfirmProvider({ children }) { function useConfirm (line 91) | function useConfirm() { FILE: src/hooks/CustomStyles.js function useStyleState (line 7) | function useStyleState() { function useStyleList (line 14) | function useStyleList() { function useAllTextStyles (line 65) | function useAllTextStyles() { FILE: src/hooks/DebouncedCallback.js function useDebouncedCallback (line 4) | function useDebouncedCallback(callback, delay) { FILE: src/hooks/Fab.js constant DEFAULT_FAB (line 4) | const DEFAULT_FAB = {}; function useFab (line 10) | function useFab() { FILE: src/hooks/FavWords.js constant DEFAULT_FAVWORDS (line 6) | const DEFAULT_FAVWORDS = {}; function useFavWords (line 8) | function useFavWords() { FILE: src/hooks/InputRule.js function useInputRule (line 4) | function useInputRule() { FILE: src/hooks/Loading.js function Loading (line 5) | function Loading() { FILE: src/hooks/MouseHover.js function useMouseHoverSetting (line 4) | function useMouseHoverSetting() { FILE: src/hooks/Rules.js function useRules (line 11) | function useRules() { FILE: src/hooks/Setting.js function SettingProvider (line 28) | function SettingProvider({ children, context }) { function useSetting (line 118) | function useSetting() { FILE: src/hooks/Shortcut.js function useShortcut (line 5) | function useShortcut(action) { FILE: src/hooks/Storage.js function useStorage (line 22) | function useStorage(key, defaultVal = null, syncKey = "") { FILE: src/hooks/SubRules.js function useSubRules (line 11) | function useSubRules() { FILE: src/hooks/Subtitle.js function useSubtitle (line 4) | function useSubtitle() { FILE: src/hooks/Sync.js function useSync (line 9) | function useSync() { function useSyncMeta (line 18) | function useSyncMeta() { function useSyncCaches (line 45) | function useSyncCaches() { FILE: src/hooks/Theme.js function Theme (line 12) | function Theme({ children, options = {}, styles = {} }) { FILE: src/hooks/Tranbox.js function useTranbox (line 4) | function useTranbox() { FILE: src/hooks/ValidationInput.js function ValidationInput (line 5) | function ValidationInput({ FILE: src/hooks/WindowSize.js function useWindowSize (line 4) | function useWindowSize() { FILE: src/hooks/useAutoHideTranBtn.js function useAutoHideTranBtn (line 3) | function useAutoHideTranBtn( FILE: src/hooks/useSelectionController.js function useSelectionController (line 10) | function useSelectionController({ FILE: src/hooks/useTranBoxState.js function useTranBoxState (line 7) | function useTranBoxState(tranboxSetting) { FILE: src/hooks/useTranboxShortcuts.js function useTranboxShortcuts (line 12) | function useTranboxShortcuts({ FILE: src/index.js function App (line 13) | function App() { FILE: src/injectors/index.js constant INJECTOR (line 7) | const INJECTOR = { function injectJs (line 17) | function injectJs(name, id = "kiss-translator-inject-js") { FILE: src/libs/browser.js function _browser (line 7) | function _browser() { FILE: src/libs/builtinAI.js class ChromeTranslator (line 6) | class ChromeTranslator { method constructor (line 10) | constructor(options = {}) { method #defaultProgressHandler (line 14) | #defaultProgressHandler(type, progress) { method #getDetectorPromise (line 18) | #getDetectorPromise() { method #createTranslator (line 40) | #createTranslator(sourceLanguage, targetLanguage) { method _monitorProgress (line 76) | _monitorProgress(monitorable, type) { method detectLanguage (line 83) | async detectLanguage(text, confidenceThreshold = 0.4) { method translateText (line 113) | async translateText(text, targetLanguage, sourceLanguage = "auto") { FILE: src/libs/domManager.js class DomManager (line 12) | class DomManager { method constructor (line 24) | constructor({ method isVisible (line 41) | get isVisible() { method show (line 49) | show(props) { method hide (line 74) | hide() { method destroy (line 85) | destroy() { method toggle (line 108) | toggle(props) { method updateProps (line 120) | updateProps(newProps) { method #mount (line 141) | #mount(props) { FILE: src/libs/fabManager.js class FabManager (line 5) | class FabManager extends ShadowDomManager { method constructor (line 6) | constructor({ processActions, fabConfig }) { FILE: src/libs/inputTranslate.js function getDeepActiveElement (line 24) | function getDeepActiveElement() { function isEditableTarget (line 36) | function isEditableTarget(node) { function getNodeText (line 58) | function getNodeText(node) { function setNativeValue (line 72) | function setNativeValue(element, value) { function smartReplaceText (line 92) | async function smartReplaceText(node, newText) { function checkSuccess (line 174) | function checkSuccess(node, targetText) { function addLoading (line 183) | function addLoading(node, loadingId) { function removeLoading (line 211) | function removeLoading(loadingId) { class InputTranslator (line 220) | class InputTranslator { method constructor (line 237) | constructor({ inputRule = DEFAULT_INPUT_RULE, transApis = [] } = {}) { method enable (line 255) | enable() { method disable (line 289) | disable() { method toggle (line 323) | toggle() { method handleFocusIn (line 331) | handleFocusIn() { method handleFocusOut (line 350) | handleFocusOut() { method showFloatButton (line 370) | showFloatButton(inputNode) { method createFloatButtonDOM (line 393) | createFloatButtonDOM() { method hideFloatButton (line 438) | hideFloatButton() { method removeFloatButton (line 445) | removeFloatButton() { method updateBtnPosition (line 452) | updateBtnPosition() { method handleTranslate (line 491) | async handleTranslate({ isBtnTrigger = false } = {}) { method updateConfig (line 586) | updateConfig({ inputRule, transApis }) { FILE: src/libs/log.js function findLogLevelByValue (line 10) | function findLogLevelByValue(value) { function findLogLevelByName (line 14) | function findLogLevelByName(name) { class Logger (line 20) | class Logger { method constructor (line 26) | constructor(options = {}) { method setLevel (line 37) | setLevel(level) { method _log (line 79) | _log(level, ...args) { method _getConsoleMethod (line 114) | _getConsoleMethod(level) { method debug (line 131) | debug(...args) { method info (line 139) | info(...args) { method warn (line 147) | warn(...args) { method error (line 155) | error(...args) { FILE: src/libs/pool.js class TaskPool (line 7) | class TaskPool { method constructor (line 19) | constructor( method #scheduleNext (line 32) | #scheduleNext() { method #execute (line 65) | async #execute(task) { method push (line 94) | push(fn, args) { method update (line 106) | update(interval, limit) { method clear (line 120) | clear() { FILE: src/libs/popupManager.js class PopupManager (line 5) | class PopupManager extends ShadowDomManager { method constructor (line 6) | constructor({ translator, processActions }) { method toggle (line 15) | toggle(props) { FILE: src/libs/rules.js function mergeSelectors (line 16) | function mergeSelectors(defaultStr, userStr) { FILE: src/libs/shadowDomManager.js class ShadowDomManager (line 7) | class ShadowDomManager { method constructor (line 18) | constructor({ method isVisible (line 35) | get isVisible() { method show (line 39) | show(props) { method hide (line 61) | hide() { method destroy (line 69) | destroy() { method toggle (line 88) | toggle(props) { method #mount (line 96) | #mount(props) { FILE: src/libs/storage.js function set (line 23) | async function set(key, val) { function get (line 33) | async function get(key) { function del (line 44) | async function del(key) { function setObj (line 54) | async function setObj(key, obj) { function trySetObj (line 58) | async function trySetObj(key, obj) { function getObj (line 64) | async function getObj(key) { function putObj (line 75) | async function putObj(key, obj) { FILE: src/libs/stream.js method iterate (line 66) | async *iterate() { function getStreamDelta (line 88) | function getStreamDelta(json, apiType) { function createStreamingJsonParser (line 165) | function createStreamingJsonParser() { function detectStreamFormat (line 214) | function detectStreamFormat(content) { FILE: src/libs/svg.js function createSVGElement (line 15) | function createSVGElement(tag, attributes) { function createLoadingSVG (line 28) | function createLoadingSVG() { function createLogoSVG (line 69) | function createLogoSVG({ FILE: src/libs/touch.js function touchTapListener (line 1) | function touchTapListener(fn, options = {}) { FILE: src/libs/tranbox.js class TransboxManager (line 8) | class TransboxManager { method constructor (line 14) | constructor(initialProps = {}) { method isEnabled (line 23) | isEnabled() { method enable (line 27) | enable() { method disable (line 56) | disable() { method toggle (line 67) | toggle() { method update (line 75) | update(newProps) { FILE: src/libs/translator.js class Translator (line 46) | class Translator { method isElement (line 227) | static isElement(el) { method isElementOrFragment (line 231) | static isElementOrFragment(el) { method isBlockNode (line 236) | static isBlockNode(el) { method hasBlockNode (line 253) | static hasBlockNode(el) { method hasTextNode (line 264) | static hasTextNode(el) { method escapeRegex (line 275) | static escapeRegex(str) { method #ignoreSelector (line 336) | get #ignoreSelector() { method #apiSetting (line 356) | get #apiSetting() { method #placeholderConfig (line 366) | get #placeholderConfig() { method constructor (line 418) | constructor({ rule = {}, setting = {}, favWords = [] }) { method #run (line 461) | #run() { method #init (line 470) | #init() { method #handleWindowMessage (line 502) | #handleWindowMessage(event) { method #attachShadowRootListener (line 508) | #attachShadowRootListener() { method #removeShadowRootListener (line 519) | #removeShadowRootListener() { method #findAndObserveShadowRoot (line 524) | #findAndObserveShadowRoot() { method #createTextStyles (line 535) | #createTextStyles() { method #injectSheet (line 544) | #injectSheet(shadowRoot) { method #parseTerms (line 554) | #parseTerms(termsString) { method #parseAITerms (line 590) | #parseAITerms(termsString) { method #getDocDescription (line 609) | #getDocDescription() { method #createIntersectionObserver (line 621) | #createIntersectionObserver() { method #createMutationObserver (line 647) | #createMutationObserver() { method #createDebounceMouseMover (line 693) | #createDebounceMouseMover() { method #handleMouseMove (line 717) | #handleMouseMove(event) { method #handleKeyDown (line 723) | #handleKeyDown() { method toggleHoverNode (line 734) | toggleHoverNode() { method #toggleTargetNode (line 739) | #toggleTargetNode(targetNode) { method #getShadowRoot (line 748) | #getShadowRoot(element) { method #findAllShadowRoots (line 765) | #findAllShadowRoots(root = document.body, results = new Set()) { method #findChangeContainer (line 787) | #findChangeContainer(startNode) { method #queueForRescan (line 812) | #queueForRescan(target) { method #rescanContainer (line 825) | #rescanContainer(changedNode) { method #reIO (line 834) | #reIO(node) { method #reIOViewNodes (line 840) | #reIOViewNodes() { method #startObserveShadowRoot (line 845) | #startObserveShadowRoot(shadowRoot) { method #startObserveRoot (line 854) | #startObserveRoot(root) { method #startObserveNode (line 867) | #startObserveNode(node) { method #queryNode (line 899) | #queryNode(rootNode) { method #scanNode (line 913) | #scanNode(rootNode) { method #processNode (line 951) | async #processNode(node) { method #highlightTextNode (line 1021) | #highlightTextNode(textNode, wordRegex) { method #highlightWordsDeeply (line 1059) | #highlightWordsDeeply(parentNode) { method #splitTextNodesBySentence (line 1091) | #splitTextNodesBySentence(parentNode, splitParagraph, splitLength) { method #removeHighlights (line 1162) | #removeHighlights(parentNode) { method #removeBrTags (line 1178) | #removeBrTags(parentNode) { method #shouldBreak (line 1189) | #shouldBreak(node) { method #isInvalidText (line 1217) | #isInvalidText(text) { method #translateNodeGroup (line 1251) | async #translateNodeGroup(nodes, hostNode, deLang) { method #serializeForTranslation (line 1379) | #serializeForTranslation(nodes, termsStyle) { method #restoreFromTranslation (line 1498) | #restoreFromTranslation(translatedText, placeholderMap) { method #translateFetch (line 1555) | #translateFetch(text, deLang = "") { method #findTranslationWrappers (line 1590) | #findTranslationWrappers(parentNode) { method #cleanupAllNodes (line 1597) | #cleanupAllNodes() { method #cleanupAllTranslations (line 1602) | #cleanupAllTranslations(root) { method #cleanupDirectTranslations (line 1609) | #cleanupDirectTranslations(node) { method #removeTranslationElement (line 1616) | #removeTranslationElement(el) { method #restoreOriginal (line 1637) | #restoreOriginal(el, nodes) { method #removeNodes (line 1647) | #removeNodes(nodes) { method #toggleTranslationOnly (line 1655) | #toggleTranslationOnly(node, transOnly) { method #updateStyle (line 1674) | #updateStyle(node, oldStyle, newStyle) { method #refreshNode (line 1685) | #refreshNode(node) { method #performSyncNode (line 1691) | #performSyncNode(node) { method #resetOptions (line 1736) | #resetOptions() { method #enableMouseHover (line 1749) | #enableMouseHover() { method #disableMouseHover (line 1767) | #disableMouseHover() { method #initInjector (line 1777) | #initInjector() { method #removeInjector (line 1825) | #removeInjector() { method toggleMouseHover (line 1832) | toggleMouseHover() { method enable (line 1839) | enable() { method #translateTitle (line 1863) | async #translateTitle() { method disable (line 1878) | disable() { method rescan (line 1897) | rescan() { method toggle (line 1911) | toggle() { method toggleStyle (line 1916) | toggleStyle() { method toggleTransbox (line 1925) | toggleTransbox() { method toggleInputTranslate (line 1931) | toggleInputTranslate() { method stop (line 1936) | stop() { method updateRule (line 1945) | updateRule(newRule) { method setting (line 1980) | get setting() { method rule (line 1984) | get rule() { method eventName (line 1988) | get eventName() { FILE: src/libs/translatorManager.js class TranslatorManager (line 34) | class TranslatorManager { method constructor (line 52) | constructor({ setting, rule, fabConfig, favWords, isIframe, isUserscri... method start (line 83) | start() { method stop (line 101) | stop() { method #setupMessageListeners (line 146) | #setupMessageListeners() { method #setupTouchOperations (line 160) | #setupTouchOperations() { method #handleWindowMessage (line 200) | #handleWindowMessage(event) { method #handleInnerMessage (line 205) | #handleInnerMessage(event) { method #handleBrowserMessage (line 209) | #handleBrowserMessage(message, sender, sendResponse) { method #registerShortcuts (line 219) | #registerShortcuts() { method #registerMenus (line 237) | #registerMenus() { method #processActions (line 268) | #processActions({ action, args } = {}, fromExt = false) { FILE: src/libs/utils.js function stripMarkdownCodeBlock (line 7) | function stripMarkdownCodeBlock(text, startOnly = false) { function later (line 112) | function later() { function getMimeTypeFromFilename (line 440) | function getMimeTypeFromFilename(filename) { function downloadBlobFile (line 491) | function downloadBlobFile(str, filename = "kiss-file.txt") { function escapeHTML (line 509) | function escapeHTML(str) { FILE: src/scripts/build-safari.js function main (line 7) | async function main() { FILE: src/scripts/build-safari.mjs function main (line 11) | async function main() { function parseProjectVersion (line 147) | function parseProjectVersion(version) { FILE: src/subtitle/BilingualSubtitleManager.js class BilingualSubtitleManager (line 116) | class BilingualSubtitleManager { method constructor (line 138) | constructor({ videoEl, formattedSubtitles, setting }) { method start (line 164) | start() { method destroy (line 179) | destroy() { method setIsAdPlaying (line 201) | setIsAdPlaying(isPlaying) { method #createCaptionWindow (line 209) | #createCaptionWindow() { method #handleWordHover (line 289) | #handleWordHover(event) { method #handleWordHoverOut (line 312) | #handleWordHoverOut(event) { method #handleWordMouseMove (line 331) | #handleWordMouseMove(event) { method #attachSpanListeners (line 336) | #attachSpanListeners() { method #showWordTooltip (line 350) | async #showWordTooltip(word, x, y) { method #hideWordTooltip (line 516) | #hideWordTooltip() { method #enableDragging (line 526) | #enableDragging(dragElement, boundaryContainer, handleElement) { method #attachEventListeners (line 604) | #attachEventListeners() { method #removeEventListeners (line 612) | #removeEventListeners() { method onTimeUpdate (line 620) | onTimeUpdate() { method onSeek (line 637) | onSeek() { method #findSubtitleIndexForTime (line 648) | #findSubtitleIndexForTime(currentTimeMs) { method #updateCaptionDisplay (line 658) | #updateCaptionDisplay(subtitle) { method #wrapWordsWithSpans (line 710) | #wrapWordsWithSpans(text) { method #triggerTranslations (line 723) | #triggerTranslations(currentTimeMs) { method #translateAndStore (line 743) | async #translateAndStore(subtitle) { method appendSubtitles (line 778) | appendSubtitles(newSubtitlesChunk) { method updateSetting (line 799) | updateSetting(obj) { method #getCurrentSubtitleStartTime (line 804) | #getCurrentSubtitleStartTime() { FILE: src/subtitle/Menus.js function Label (line 4) | function Label({ children }) { function MenuItem (line 18) | function MenuItem({ children, onClick, disabled = false }) { function Switch (line 43) | function Switch({ label, name, value, onChange, disabled }) { function Select (line 79) | function Select({ label, name, value, options, onChange, disabled }) { function Button (line 164) | function Button({ label, onClick, disabled }) { function Menus (line 178) | function Menus({ FILE: src/subtitle/YouTubeCaptionProvider.js constant VIDEO_SELECT (line 23) | const VIDEO_SELECT = "#container video"; constant CONTORLS_SELECT (line 24) | const CONTORLS_SELECT = ".ytp-right-controls"; constant YT_CAPTION_SELECT (line 25) | const YT_CAPTION_SELECT = "#ytp-caption-window-container"; constant YT_AD_SELECT (line 26) | const YT_AD_SELECT = ".video-ads"; constant YT_SUBTITLE_BTN_SELECT (line 27) | const YT_SUBTITLE_BTN_SELECT = "button.ytp-subtitles-button"; class YouTubeCaptionProvider (line 29) | class YouTubeCaptionProvider { method constructor (line 51) | constructor(setting = {}) { method #videoId (line 56) | get #videoId() { method #videoEl (line 61) | get #videoEl() { method #progressed (line 65) | set #progressed(num) { method #progressed (line 70) | get #progressed() { method initialize (line 74) | initialize() { method #moAds (line 117) | #moAds(adContainer) { method #waitForElement (line 179) | #waitForElement(selector, callback) { method updateSetting (line 200) | updateSetting({ name, value }) { method #toggleShowOrigin (line 217) | #toggleShowOrigin() { method downloadSubtitle (line 225) | downloadSubtitle() { method #getMenuProps (line 246) | #getMenuProps() { method #updateMenuProps (line 268) | #updateMenuProps() { method #injectToggleButton (line 274) | #injectToggleButton(ytControls) { method #isSameLang (line 317) | #isSameLang(lang1, lang2) { method #findCaptionTrack (line 322) | #findCaptionTrack(captionTracks, lang) { method #getCaptionTracks (line 355) | async #getCaptionTracks(videoId) { method #getSubtitleEvents (line 368) | async #getSubtitleEvents(capUrl, potUrl, responseText) { method #aiSegment (line 409) | async #aiSegment({ videoId, fromLang, toLang, chunkEvents, segApiSetti... method #getFromLang (line 439) | #getFromLang(lang) { method #handleInterceptedRequest (line 453) | async #handleInterceptedRequest(url, responseText) { method #processEvents (line 537) | async #processEvents({ videoId, flatEvents, fromLang }) { method #reProcessEvents (line 571) | #reProcessEvents() { method #eventsToSubtitles (line 589) | async #eventsToSubtitles({ videoId, flatEvents, fromLang }) { method #startManager (line 645) | #startManager() { method #destroyManager (line 713) | #destroyManager() { method #hideYtCaption (line 732) | #hideYtCaption() { method #showYtCaption (line 737) | #showYtCaption() { method #formatSubtitles (line 742) | #formatSubtitles(flatEvents, lang) { method #isQualityPoor (line 807) | #isQualityPoor(lines, lengthThreshold = 250, percentageThreshold = 0.2) { method #processSubtitles (line 815) | #processSubtitles({ method #genFlatEvents (line 961) | #genFlatEvents(events = []) { method #splitEventsIntoChunks (line 994) | #splitEventsIntoChunks(flatEvents, chunkLength = 1000) { method #processRemainingChunksAsync (line 1042) | async #processRemainingChunksAsync({ method #createNotificationElement (line 1113) | #createNotificationElement() { method #showNotification (line 1142) | #showNotification(message, duration = 2000) { FILE: src/subtitle/YouTubeSubtitleList.js class YouTubeSubtitleList (line 14) | class YouTubeSubtitleList { method constructor (line 18) | constructor(videoElement) { method initialize (line 59) | initialize(subtitles) { method setBilingualSubtitles (line 71) | setBilingualSubtitles(subtitles) { method destroy (line 87) | destroy() { method jumpToTime (line 109) | jumpToTime(timeMs) { method handleWordAdded (line 121) | handleWordAdded(event) { method addWord (line 136) | addWord( method downloadSubtitles (line 167) | downloadSubtitles() { method createSubtitleList (line 193) | createSubtitleList() { method _ensureContainer (line 225) | _ensureContainer() { method _renderTabsAndStructure (line 314) | _renderTabsAndStructure() { method _createSubtitleListItem (line 450) | _createSubtitleListItem(sub, index) { method updateBilingualSubtitles (line 502) | updateBilingualSubtitles() { method _renderVocabulary (line 554) | _renderVocabulary() { method _createExportContainer (line 568) | _createExportContainer() { method _createVocabListContainer (line 606) | _createVocabListContainer() { method _createVocabItemElement (line 625) | _createVocabItemElement(item) { method exportVocabularyAsJson (line 689) | exportVocabularyAsJson() { method exportVocabularyAsCsv (line 719) | exportVocabularyAsCsv() { method exportVocabularyAsTxt (line 767) | exportVocabularyAsTxt() { method exportVocabularyAsMd (line 803) | exportVocabularyAsMd() { method setupEventListeners (line 845) | setupEventListeners() { method turnOnAutoSub (line 860) | turnOnAutoSub() { method _binarySearchSubtitle (line 919) | _binarySearchSubtitle(timeMs) { method turnOffAutoSub (line 940) | turnOffAutoSub() { method _downloadFile (line 954) | _downloadFile(content, mimeType, extension) { method millisToMinutesAndSeconds (line 965) | millisToMinutesAndSeconds(millis) { method _getYouTubeVideoId (line 972) | _getYouTubeVideoId() { method _getYouTubeVideoTitle (line 981) | _getYouTubeVideoTitle() { FILE: src/subtitle/subtitle.js function runSubtitle (line 12) | function runSubtitle({ href, setting }) { FILE: src/subtitle/vtt.js function parseTimestampToMilliseconds (line 14) | function parseTimestampToMilliseconds(timestamp) { function formatMillisecondsToTimestamp (line 63) | function formatMillisecondsToTimestamp(ms) { function parseBilingualVtt (line 81) | function parseBilingualVtt(vttText) { function buildBilingualVtt (line 125) | function buildBilingualVtt(cues) { FILE: src/views/Action/ContentFab.js function ContentFab (line 10) | function ContentFab({ FILE: src/views/Action/Draggable.js function DraggableWrapper (line 36) | function DraggableWrapper({ children, usePaper, ...props }) { function Draggable (line 47) | function Draggable({ FILE: src/views/Action/index.js function Action (line 18) | function Action({ translator, processActions }) { FILE: src/views/Options/About.js function About (line 6) | function About() { FILE: src/views/Options/Apis.js function TestButton (line 55) | function TestButton({ api }) { function ApiFields (line 112) | function ApiFields({ apiSlug, isUserApi, deleteApi, copyApi }) { function ApiAccordion (line 878) | function ApiAccordion({ api, isUserApi, deleteApi, copyApi }) { function Apis (line 911) | function Apis() { FILE: src/views/Options/DarkModeButton.js function DarkModeButton (line 7) | function DarkModeButton() { FILE: src/views/Options/DownloadButton.js function DownloadButton (line 7) | function DownloadButton({ handleData, text, fileName }) { FILE: src/views/Options/FavWords.js function FavAccordion (line 24) | function FavAccordion({ word, index, createdAt, timestamp }) { function FavWords (line 92) | function FavWords() { FILE: src/views/Options/Header.js function Header (line 11) | function Header(props) { FILE: src/views/Options/HelpButton.js function HelpButton (line 5) | function HelpButton({ url }) { FILE: src/views/Options/InputSetting.js function InputSetting (line 23) | function InputSetting() { FILE: src/views/Options/Layout.js function Layout (line 10) | function Layout() { FILE: src/views/Options/MouseHover.js function MouseHoverSetting (line 12) | function MouseHoverSetting() { FILE: src/views/Options/Navigator.js function LinkItem (line 22) | function LinkItem({ label, url, icon }) { function Navigator (line 32) | function Navigator(props) { FILE: src/views/Options/Playground.js function Playgound (line 6) | function Playgound() { FILE: src/views/Options/ReusableAutocomplete.js function ReusableAutocomplete (line 14) | function ReusableAutocomplete({ FILE: src/views/Options/Rules.js function RuleFields (line 70) | function RuleFields({ rule, rules, setShow, setKeyword }) { function RuleAccordion (line 780) | function RuleAccordion({ rule, rules, isExpanded = false }) { function ShareButton (line 809) | function ShareButton({ rules, injectRules, selectedUrl }) { function UserRules (line 851) | function UserRules({ subRules, rules }) { function SubRulesItem (line 989) | function SubRulesItem({ function SubRulesEdit (line 1067) | function SubRulesEdit({ subList, addSub, updateDataCache }) { function SubRules (line 1178) | function SubRules({ subRules }) { function GlobalRule (line 1240) | function GlobalRule({ rules }) { function Rules (line 1262) | function Rules() { FILE: src/views/Options/Setting.js function ShortcutItem (line 38) | function ShortcutItem({ action, label }) { function Settings (line 45) | function Settings() { FILE: src/views/Options/ShortcutInput.js function ShortcutInput (line 10) | function ShortcutInput({ FILE: src/views/Options/ShowMoreButton.js function ShowMoreButton (line 6) | function ShowMoreButton({ onChange, showMore }) { FILE: src/views/Options/StylesSetting.js function StyleFields (line 19) | function StyleFields({ customStyle, deleteStyle, updateStyle, isBuiltin ... function StyleAccordion (line 139) | function StyleAccordion({ customStyle, deleteStyle, updateStyle, isBuilt... function StylesSetting (line 171) | function StylesSetting() { FILE: src/views/Options/Subtitle.js function StyleVisualEditor (line 159) | function StyleVisualEditor({ label, cssValue, onChange, type }) { function SubtitleSetting (line 438) | function SubtitleSetting() { FILE: src/views/Options/SyncSetting.js function SyncSetting (line 27) | function SyncSetting() { FILE: src/views/Options/Tranbox.js function Tranbox (line 27) | function Tranbox() { FILE: src/views/Options/UploadButton.js function UploadButton (line 6) | function UploadButton({ FILE: src/views/Options/index.js function Options (line 30) | function Options() { FILE: src/views/Popup/Header.js function Header (line 11) | function Header({ onClose, toggleTab, openSeparateWindow }) { FILE: src/views/Popup/PopupCont.js function PopupCont (line 31) | function PopupCont({ FILE: src/views/Popup/index.js function Trantab (line 16) | function Trantab() { function Popup (line 45) | function Popup() { FILE: src/views/Selection/AudioBtn.js function AudioBtn (line 6) | function AudioBtn({ src }) { function BaiduAudioBtn (line 32) | function BaiduAudioBtn({ text, lan = "uk", spd = 3 }) { FILE: src/views/Selection/CopyBtn.js function CopyBtn (line 6) | function CopyBtn({ text, title = "copy" }) { FILE: src/views/Selection/DictCont.js function DictBody (line 13) | function DictBody({ text, setCopyText, setRealWord, dict }) { function DictCont (line 50) | function DictCont({ text, enDict }) { FILE: src/views/Selection/DraggableResizable.js function Pointer (line 8) | function Pointer({ function DraggableResizable (line 138) | function DraggableResizable({ FILE: src/views/Selection/FavBtn.js function FavBtn (line 8) | function FavBtn({ word, title }) { FILE: src/views/Selection/SugCont.js function SugBaidu (line 10) | function SugBaidu({ text }) { function SugYoudao (line 39) | function SugYoudao({ text }) { function SugCont (line 68) | function SugCont({ text, enSug }) { FILE: src/views/Selection/TranBox.js function TranBoxHeader (line 25) | function TranBoxHeader({ function TranBoxContent (line 260) | function TranBoxContent({ function TranBox (line 331) | function TranBox(props) { FILE: src/views/Selection/TranBtn.js function TranBtn (line 4) | function TranBtn({ FILE: src/views/Selection/TranCont.js function TranCont (line 12) | function TranCont({ FILE: src/views/Selection/TranForm.js function TranForm (line 30) | function TranForm({ FILE: src/views/Selection/index.js function Selection (line 7) | function Selection({