Unlisted
Back
Version 13
9/24/2024
/** @jsxImportSource https://esm.sh/react */
import React from "https://esm.sh/react@18.2.0";
import ReactDOM from "https://esm.sh/react-dom@18.2.0";
import { marked } from "https://esm.sh/marked@4.3.0";
function App() {
const [state, setState] = React.useState({
sport: "",
skillLevel: "",
ageGroup: "",
regenerateKey: 0,
selectedTopics: [],
groupSize: "",
trainingPlan: "",
loading: false,
showSpinner: false,
annotations: {},
showEmailInput: false,
emailAddress: "",
sharing: false
});
React.useEffect(() => {
let timer;
if (state.loading) {
timer = setTimeout(() => setState(s => ({ ...s, showSpinner: true })), 2000);
} else {
setState(s => ({ ...s, showSpinner: false }));
}
return () => clearTimeout(timer);
}, [state.loading]);
const handleSubmit = async (e, isRegenerate = false) => {
if (e) e.preventDefault();
setState(s => ({ ...s, loading: true, trainingPlan: "" }));
const response = await fetch("/generate-training", {
coachcompanion-coachcompanionv3.web.val.run
Updated: September 24, 2024