SYMBOL INDEX (47 symbols across 6 files) FILE: main/index.js function log (line 9) | function log(...args) { function openWeb (line 15) | function openWeb(url) { function fetchData (line 19) | function fetchData(url) { function debounce (line 49) | function debounce(fn, time) { function hexToRGB (line 64) | function hexToRGB(hex) { function RGBToHex (line 77) | function RGBToHex(rgb) { function blendColors (line 91) | function blendColors(color1, color2, ratio) { function luminance (line 106) | function luminance(r, g, b) { function getBestTextColor (line 119) | function getBestTextColor(hexColor) { function updateStyle (line 127) | async function updateStyle(webContents, settingsPath) { function watchCSSChange (line 186) | function watchCSSChange(webContents, settingsPath) { function watchSettingsChange (line 209) | function watchSettingsChange(webContents, settingsPath) { function cleanupWatchers (line 407) | function cleanupWatchers(webContents) { function browserWindowCreated (line 423) | function browserWindowCreated(window) { FILE: renderer/features.js function insertHeti (line 2) | async function insertHeti(messageListElement, selector, mspring_theme, p... function compareVersions (line 87) | function compareVersions(v1, v2) { function setupThemeFeatures (line 104) | async function setupThemeFeatures(settings, { log, mspring_theme, framew... FILE: renderer/index.js function log (line 9) | function log(...args) { function observeElement (line 22) | function observeElement(selector, callback, callbackEnable = true, inter... function main (line 47) | async function main() { function handleSettingWindowCreated (line 62) | async function handleSettingWindowCreated(view) { FILE: renderer/settings.js function settingWindowCreated (line 3) | async function settingWindowCreated(view, { log, mspring_theme, framewor... FILE: renderer/theme.js function initTheme (line 2) | async function initTheme({ log, mspring_theme }) { FILE: vendor/heti/js/heti-addon.js constant HETI_NON_CONTIGUOUS_ELEMENTS (line 12) | const HETI_NON_CONTIGUOUS_ELEMENTS = Object.assign({}, Finder.NON_CONTIG... constant HETI_SKIPPED_ELEMENTS (line 19) | const HETI_SKIPPED_ELEMENTS = Object.assign({}, Finder.NON_PROSE_ELEMENT... constant HETI_SKIPPED_CLASS (line 29) | const HETI_SKIPPED_CLASS = 'heti-skip'; constant CJK (line 33) | const CJK = '\u2e80-\u2eff\u2f00-\u2fdf\u3040-\u309f\u30a0-\u30fa\u30fc-... constant ANS (line 37) | const ANS = `${A}${N}${S}`; constant REG_CJK_FULL (line 39) | const REG_CJK_FULL = `(?<=[${CJK}])( *[${ANS}]+(?: +[${ANS}]+)* *)(?=[${... constant REG_CJK_START (line 40) | const REG_CJK_START = `([${ANS}]+(?: +[${ANS}]+)* *)(?=[${CJK}])`; constant REG_CJK_END (line 41) | const REG_CJK_END = `(?<=[${CJK}])( *[${ANS}]+(?: +[${ANS}]+)*)`; constant REG_CJK_FULL_WITHOUT_LOOKBEHIND (line 43) | const REG_CJK_FULL_WITHOUT_LOOKBEHIND = `(?:[${CJK}])( *[${ANS}]+(?: +[$... constant REG_CJK_END_WITHOUT_LOOKBEHIND (line 44) | const REG_CJK_END_WITHOUT_LOOKBEHIND = `(?:[${CJK}])( *[${ANS}]+(?: +[${... constant REG_BD_STOP (line 46) | const REG_BD_STOP = `。.,、:;!‼?⁇`; constant REG_BD_SEP (line 47) | const REG_BD_SEP = `·・‧`; constant REG_BD_OPEN (line 48) | const REG_BD_OPEN = `「『(《〈【〖〔[{`; constant REG_BD_CLOSE (line 49) | const REG_BD_CLOSE = `」』)》〉】〗〕]}`; constant REG_BD_START (line 50) | const REG_BD_START = `${REG_BD_OPEN}${REG_BD_CLOSE}`; constant REG_BD_END (line 51) | const REG_BD_END = `${REG_BD_STOP}${REG_BD_OPEN}${REG_BD_CLOSE}`; constant REG_BD_HALF_OPEN (line 52) | const REG_BD_HALF_OPEN = `“‘`; constant REG_BD_HALF_CLOSE (line 53) | const REG_BD_HALF_CLOSE = `”’`; constant REG_BD_HALF_START (line 54) | const REG_BD_HALF_START = `${REG_BD_HALF_OPEN}${REG_BD_HALF_CLOSE}`; class Heti (line 56) | class Heti { method constructor (line 57) | constructor(rootSelector) { method spacingElements (line 91) | spacingElements(elementList) { method spacingElement (line 97) | spacingElement(element) { method autoSpacing (line 156) | autoSpacing() {