chore: bump version to 0.3.0

This commit is contained in:
2026-03-05 20:18:53 -08:00
parent a5554ec530
commit 2f07c3407a
20 changed files with 160 additions and 75 deletions

View File

@@ -174,7 +174,8 @@ export function applySubtitleDomainConfig(context: ResolveContext): void {
}
const autoPauseVideoOnYomitanPopup = asBoolean(
(src.subtitleStyle as { autoPauseVideoOnYomitanPopup?: unknown }).autoPauseVideoOnYomitanPopup,
(src.subtitleStyle as { autoPauseVideoOnYomitanPopup?: unknown })
.autoPauseVideoOnYomitanPopup,
);
if (autoPauseVideoOnYomitanPopup !== undefined) {
resolved.subtitleStyle.autoPauseVideoOnYomitanPopup = autoPauseVideoOnYomitanPopup;

View File

@@ -328,7 +328,9 @@ test('keyboard mode: up/down/j/k do not open or close lookup when popup is close
await wait(0);
const openEvents = testGlobals.commandEvents.filter((event) => event.type === 'scanSelectedText');
const openEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'scanSelectedText',
);
assert.equal(openEvents.length, 0);
const closeEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'setVisible' && event.visible === false,
@@ -355,16 +357,28 @@ test('keyboard mode: up/down/j/k forward keydown to yomitan popup when open', as
testGlobals.dispatchKeydown({ key: 'j', code: 'KeyJ' });
testGlobals.dispatchKeydown({ key: 'k', code: 'KeyK' });
const forwarded = testGlobals.commandEvents.filter(
(event) => event.type === 'forwardKeyDown',
);
const forwarded = testGlobals.commandEvents.filter((event) => event.type === 'forwardKeyDown');
assert.equal(forwarded.length, 4);
assert.equal(forwarded.some((event) => event.code === 'ArrowUp'), true);
assert.equal(forwarded.some((event) => event.code === 'ArrowDown'), true);
assert.equal(forwarded.some((event) => event.code === 'KeyJ'), true);
assert.equal(forwarded.some((event) => event.code === 'KeyK'), true);
assert.equal(
forwarded.some((event) => event.code === 'ArrowUp'),
true,
);
assert.equal(
forwarded.some((event) => event.code === 'ArrowDown'),
true,
);
assert.equal(
forwarded.some((event) => event.code === 'KeyJ'),
true,
);
assert.equal(
forwarded.some((event) => event.code === 'KeyK'),
true,
);
const openEvents = testGlobals.commandEvents.filter((event) => event.type === 'scanSelectedText');
const openEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'scanSelectedText',
);
assert.equal(openEvents.length, 0);
const closeEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'setVisible' && event.visible === false,
@@ -389,9 +403,7 @@ test('keyboard mode: repeated popup navigation keys are forwarded while popup is
testGlobals.dispatchKeydown({ key: 'j', code: 'KeyJ', repeat: true });
testGlobals.dispatchKeydown({ key: 'ArrowDown', code: 'ArrowDown', repeat: true });
const forwarded = testGlobals.commandEvents.filter(
(event) => event.type === 'forwardKeyDown',
);
const forwarded = testGlobals.commandEvents.filter((event) => event.type === 'forwardKeyDown');
assert.equal(forwarded.length, 2);
assert.deepEqual(
forwarded.map((event) => ({ code: event.code, repeat: event.repeat })),
@@ -445,7 +457,9 @@ test('keyboard mode: h moves left while popup is open and keeps lookup active',
await wait(80);
assert.equal(ctx.state.keyboardSelectedWordIndex, 1);
const openEvents = testGlobals.commandEvents.filter((event) => event.type === 'scanSelectedText');
const openEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'scanSelectedText',
);
assert.equal(openEvents.length > 0, true);
const closeEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'setVisible' && event.visible === false,
@@ -546,7 +560,9 @@ test('keyboard mode: popup-open edge jump refreshes lookup on the new subtitle s
await wait(80);
assert.equal(ctx.state.keyboardSelectedWordIndex, 0);
const openEvents = testGlobals.commandEvents.filter((event) => event.type === 'scanSelectedText');
const openEvents = testGlobals.commandEvents.filter(
(event) => event.type === 'scanSelectedText',
);
assert.equal(openEvents.length > 0, true);
} finally {
ctx.state.keyboardDrivenModeEnabled = false;

View File

@@ -130,7 +130,9 @@ export function createKeyboardHandlers(
}
function getSubtitleWordNodes(): HTMLElement[] {
return Array.from(ctx.dom.subtitleRoot.querySelectorAll<HTMLElement>('.word[data-token-index]'));
return Array.from(
ctx.dom.subtitleRoot.querySelectorAll<HTMLElement>('.word[data-token-index]'),
);
}
function syncKeyboardTokenSelection(): void {
@@ -188,7 +190,9 @@ export function createKeyboardHandlers(
setKeyboardDrivenModeEnabled(!ctx.state.keyboardDrivenModeEnabled);
}
function moveKeyboardSelection(delta: -1 | 1): 'moved' | 'start-boundary' | 'end-boundary' | 'no-words' {
function moveKeyboardSelection(
delta: -1 | 1,
): 'moved' | 'start-boundary' | 'end-boundary' | 'no-words' {
const wordNodes = getSubtitleWordNodes();
if (wordNodes.length === 0) {
ctx.state.keyboardSelectedWordIndex = null;

View File

@@ -2,10 +2,7 @@ import assert from 'node:assert/strict';
import test from 'node:test';
import { createMouseHandlers } from './mouse.js';
import {
YOMITAN_POPUP_HIDDEN_EVENT,
YOMITAN_POPUP_SHOWN_EVENT,
} from '../yomitan-popup.js';
import { YOMITAN_POPUP_HIDDEN_EVENT, YOMITAN_POPUP_SHOWN_EVENT } from '../yomitan-popup.js';
function createClassList() {
const classes = new Set<string>();