import { useLanguages } from "@/apis/hooks"; import { Selector, SelectorOption, SelectorProps } from "@/components"; import { FunctionComponent, useMemo } from "react"; interface TextProps { value: Language.Info; className?: string; long?: boolean; } declare type LanguageComponent = { Text: typeof LanguageText; Selector: typeof LanguageSelector; }; const LanguageText: FunctionComponent = ({ value, className, long, }) => { const result = useMemo(() => { let lang = value.code2; let hi = ":HI"; let forced = ":Forced"; if (long) { lang = value.name; hi = " HI"; forced = " Forced"; } let res = lang; if (value.hi) { res += hi; } else if (value.forced) { res += forced; } return res; }, [value, long]); return ( {result} ); }; type LanguageSelectorProps = Omit< SelectorProps, "label" | "options" > & { history?: boolean; }; function getLabel(lang: Language.Info) { return lang.name; } export function LanguageSelector( props: LanguageSelectorProps ) { const { history, ...rest } = props; const { data: options } = useLanguages(history); const items = useMemo[]>( () => options?.map((v) => ({ label: v.name, value: v, })) ?? [], [options] ); return ( ); } const Components: LanguageComponent = { Text: LanguageText, Selector: LanguageSelector, }; export default Components;