import { DialogButton, Focusable, PanelSectionRow } from "@decky/ui"; import { useEffect, useRef } from "react"; import { ConfigurationData } from "../config/configSchema"; import { MULTIPLIER } from "../config/generatedConfigSchema"; import t from "../i18n/i18n"; interface FpsMultiplierControlProps { config: ConfigurationData; onConfigChange: (fieldName: keyof ConfigurationData, value: boolean | number | string | string[]) => Promise; autoFocus?: boolean; onAutoFocus?: () => void; } export function FpsMultiplierControl({ config, onConfigChange, autoFocus = false, onAutoFocus, }: FpsMultiplierControlProps) { const focusableRef = useRef(null); useEffect(() => { if (!autoFocus) return; const frame = requestAnimationFrame(() => { const target = focusableRef.current?.querySelector( '[role="button"], [role="slider"]', ); target?.focus(); onAutoFocus?.(); }); return () => cancelAnimationFrame(frame); }, [autoFocus, onAutoFocus]); return ( void onConfigChange(MULTIPLIER, Math.max(1, config.multiplier - 1))} disabled={config.multiplier <= 1} > −
4 ? "red" : "white", minWidth: "60px", textAlign: "center", }} > {config.multiplier < 2 ? t("MULTIPLIER_OFF", "OFF") : `${config.multiplier}X`}
void onConfigChange(MULTIPLIER, Math.min(4, config.multiplier + 1))} disabled={config.multiplier >= 4} > +
); }