feat(core): add Electron runtime, services, and app composition

This commit is contained in:
2026-02-22 21:43:43 -08:00
parent 448ce03fd4
commit d3fd47f0ec
562 changed files with 69719 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
export function createSetVisibleOverlayVisibleHandler(deps: {
setVisibleOverlayVisibleCore: (options: {
visible: boolean;
setVisibleOverlayVisibleState: (visible: boolean) => void;
updateVisibleOverlayVisibility: () => void;
updateInvisibleOverlayVisibility: () => void;
syncInvisibleOverlayMousePassthrough: () => void;
shouldBindVisibleOverlayToMpvSubVisibility: () => boolean;
isMpvConnected: () => boolean;
setMpvSubVisibility: (visible: boolean) => void;
}) => void;
setVisibleOverlayVisibleState: (visible: boolean) => void;
updateVisibleOverlayVisibility: () => void;
updateInvisibleOverlayVisibility: () => void;
syncInvisibleOverlayMousePassthrough: () => void;
shouldBindVisibleOverlayToMpvSubVisibility: () => boolean;
isMpvConnected: () => boolean;
setMpvSubVisibility: (visible: boolean) => void;
}) {
return (visible: boolean): void => {
deps.setVisibleOverlayVisibleCore({
visible,
setVisibleOverlayVisibleState: deps.setVisibleOverlayVisibleState,
updateVisibleOverlayVisibility: deps.updateVisibleOverlayVisibility,
updateInvisibleOverlayVisibility: deps.updateInvisibleOverlayVisibility,
syncInvisibleOverlayMousePassthrough: deps.syncInvisibleOverlayMousePassthrough,
shouldBindVisibleOverlayToMpvSubVisibility:
deps.shouldBindVisibleOverlayToMpvSubVisibility,
isMpvConnected: deps.isMpvConnected,
setMpvSubVisibility: deps.setMpvSubVisibility,
});
};
}
export function createSetInvisibleOverlayVisibleHandler(deps: {
setInvisibleOverlayVisibleCore: (options: {
visible: boolean;
setInvisibleOverlayVisibleState: (visible: boolean) => void;
updateInvisibleOverlayVisibility: () => void;
syncInvisibleOverlayMousePassthrough: () => void;
}) => void;
setInvisibleOverlayVisibleState: (visible: boolean) => void;
updateInvisibleOverlayVisibility: () => void;
syncInvisibleOverlayMousePassthrough: () => void;
}) {
return (visible: boolean): void => {
deps.setInvisibleOverlayVisibleCore({
visible,
setInvisibleOverlayVisibleState: deps.setInvisibleOverlayVisibleState,
updateInvisibleOverlayVisibility: deps.updateInvisibleOverlayVisibility,
syncInvisibleOverlayMousePassthrough: deps.syncInvisibleOverlayMousePassthrough,
});
};
}
export function createToggleVisibleOverlayHandler(deps: {
getVisibleOverlayVisible: () => boolean;
setVisibleOverlayVisible: (visible: boolean) => void;
}) {
return (): void => {
deps.setVisibleOverlayVisible(!deps.getVisibleOverlayVisible());
};
}
export function createToggleInvisibleOverlayHandler(deps: {
getInvisibleOverlayVisible: () => boolean;
setInvisibleOverlayVisible: (visible: boolean) => void;
}) {
return (): void => {
deps.setInvisibleOverlayVisible(!deps.getInvisibleOverlayVisible());
};
}