import * as React from "react"; import { useState } from "react"; import * as ReactDOM from "react-dom" import { useFetch } from "react-async"; const formatter = new Intl.NumberFormat(undefined, { maximumFractionDigits: 2 }); type Language = { name: string; class: string; embeddable: boolean; standalone: boolean; } type LanguageSelectorProps = { language: string; onSelect(language: Language): void; } const LanguageSelector = ({ language, onSelect }: LanguageSelectorProps) => { const { data: languages, isPending } = useFetch("/languages", { headers: { "Accept": "application/json" }}); const regex = language && new RegExp(`${language}`); const matching = languages && languages.filter(current => !language || current.name.match(regex)); const isValidLanguage = languages && typeof languages.find(current => current.name === language) !== "undefined"; return isPending ? null : }; type HighlightFormProps = { onSubmit(code: string, language: string); } const HighlightForm = ({ onSubmit }: HighlightFormProps) => { const [code, setCode] = useState(""); const [language, setLanguage] = useState(""); const handleReset = () => { setCode(""); setLanguage(""); }; const handleSubmit = () => onSubmit && onSubmit(code, language); const handleLanguageSelection = language => setLanguage(language.name); return (