Overlay 2.0 (#12)

This commit is contained in:
2026-03-01 02:36:51 -08:00
committed by GitHub
parent 45df3c466b
commit 44c7761c7c
397 changed files with 15139 additions and 7127 deletions

View File

@@ -19,15 +19,14 @@ export const IPC_CHANNELS = {
refreshKnownWords: 'anki:refresh-known-words',
kikuFieldGroupingRespond: 'kiku:field-grouping-respond',
reportOverlayContentBounds: 'overlay-content-bounds:report',
overlayModalOpened: 'overlay:modal-opened',
},
request: {
getOverlayVisibility: 'get-overlay-visibility',
getVisibleOverlayVisibility: 'get-visible-overlay-visibility',
getInvisibleOverlayVisibility: 'get-invisible-overlay-visibility',
getCurrentSubtitle: 'get-current-subtitle',
getCurrentSubtitleRaw: 'get-current-subtitle-raw',
getCurrentSubtitleAss: 'get-current-subtitle-ass',
getMpvSubtitleRenderMetrics: 'get-mpv-subtitle-render-metrics',
getPlaybackPaused: 'get-playback-paused',
getSubtitlePosition: 'get-subtitle-position',
getSubtitleStyle: 'get-subtitle-style',
getMecabStatus: 'get-mecab-status',
@@ -57,9 +56,7 @@ export const IPC_CHANNELS = {
subtitleSet: 'subtitle:set',
subtitleVisibility: 'mpv:subVisibility',
subtitlePositionSet: 'subtitle-position:set',
mpvSubtitleRenderMetricsSet: 'mpv-subtitle-render-metrics:set',
subtitleAssSet: 'subtitle-ass:set',
overlayDebugVisualizationSet: 'overlay-debug-visualization:set',
secondarySubtitleSet: 'secondary-subtitle:set',
secondarySubtitleMode: 'secondary-subtitle:mode',
subsyncOpenManual: 'subsync:open-manual',

View File

@@ -13,6 +13,9 @@ import { OVERLAY_HOSTED_MODALS, type OverlayHostedModal } from './contracts';
const RUNTIME_OPTION_IDS: RuntimeOptionId[] = [
'anki.autoUpdateNewCards',
'subtitle.annotation.nPlusOne',
'subtitle.annotation.jlpt',
'subtitle.annotation.frequency',
'anki.kikuFieldGrouping',
'anki.nPlusOneMatchMode',
];
@@ -40,18 +43,8 @@ export function parseSubtitlePosition(value: unknown): SubtitlePosition | null {
if (!isObject(value) || !isFiniteNumber(value.yPercent)) {
return null;
}
const hasX = value.invisibleOffsetXPx !== undefined;
if (hasX && !isFiniteNumber(value.invisibleOffsetXPx)) {
return null;
}
const hasY = value.invisibleOffsetYPx !== undefined;
if (hasY && !isFiniteNumber(value.invisibleOffsetYPx)) {
return null;
}
return {
yPercent: value.yPercent,
invisibleOffsetXPx: hasX ? (value.invisibleOffsetXPx as number) : undefined,
invisibleOffsetYPx: hasY ? (value.invisibleOffsetYPx as number) : undefined,
};
}