mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-09-23 05:16:23 -07:00
fix(dictionary): keep Hachidori lookup highlight on in SubMiner builds
Hachidori's overlay-mode first-install options turn off "Highlight the word on the page" because GSM-style hosts screenshot the see-through viewport. SubMiner captures media from mpv, and without the highlight the subtitle sidebar gave no sign of which word was looked up or where the match ended. The staged copy now seeds the highlight on; the fork source is unchanged.
This commit is contained in:
+24
-10
@@ -31,17 +31,31 @@ fs.rmSync(output, { recursive: true, force: true });
|
||||
fs.mkdirSync(output, { recursive: true });
|
||||
fs.cpSync(extension, output, { recursive: true });
|
||||
// Host configuration belongs in the staged copy, leaving the fork usable in Chrome.
|
||||
const overlayPath = path.join(output, 'overlay-mode.js');
|
||||
let overlay = fs.readFileSync(overlayPath, 'utf8');
|
||||
for (const [original, replacement] of [
|
||||
['export const OVERLAY_MODE = false;', 'export const OVERLAY_MODE = true;'],
|
||||
['customJavaScript: !IS_FIREFOX,', 'customJavaScript: false,'],
|
||||
]) {
|
||||
if (!overlay.includes(original))
|
||||
throw new Error(`Hachidori host configuration changed upstream: ${original}`);
|
||||
overlay = overlay.replace(original, replacement);
|
||||
const hostConfiguration = {
|
||||
'overlay-mode.js': [
|
||||
['export const OVERLAY_MODE = false;', 'export const OVERLAY_MODE = true;'],
|
||||
['customJavaScript: !IS_FIREFOX,', 'customJavaScript: false,'],
|
||||
],
|
||||
// Overlay hosts seed the lookup highlight off because their Anki screenshot is
|
||||
// the see-through viewport. SubMiner captures media from mpv, and without the
|
||||
// highlight the sidebar shows nothing for the word being looked up.
|
||||
'setup-state.js': [
|
||||
[
|
||||
'lookupMode: "hover",\n sourceHighlightEnabled: false,',
|
||||
'lookupMode: "hover",\n sourceHighlightEnabled: true,',
|
||||
],
|
||||
],
|
||||
};
|
||||
for (const [file, replacements] of Object.entries(hostConfiguration)) {
|
||||
const filePath = path.join(output, file);
|
||||
let text = fs.readFileSync(filePath, 'utf8');
|
||||
for (const [original, replacement] of replacements) {
|
||||
if (!text.includes(original))
|
||||
throw new Error(`Hachidori host configuration changed upstream: ${original}`);
|
||||
text = text.replace(original, replacement);
|
||||
}
|
||||
fs.writeFileSync(filePath, text);
|
||||
}
|
||||
fs.writeFileSync(overlayPath, overlay);
|
||||
manifest.permissions = manifest.permissions.filter((permission) => permission !== 'userScripts');
|
||||
fs.writeFileSync(path.join(output, 'manifest.json'), JSON.stringify(manifest, null, 2) + '\n');
|
||||
for (const file of ['LICENSE', 'SOURCE.json', 'README.md']) {
|
||||
|
||||
Reference in New Issue
Block a user