// islands/AsyncYesNoPop.ts import { useState } from "preact/hooks"; import YesNoPopup from "./YesNoPopup.tsx"; export function AsyncYesNoPop() { const [popupKey, setPopupKey] = useState(0); const [popup, setPopup] = useState< { question: string; resolve: (value: boolean) => void; } | null >(null); // Show the popup and return a Promise for the answer const ask = (question: string, popupKey: number): Promise => { return new Promise((resolve) => { setPopupKey(popupKey); setPopup({ question, resolve }); }); }; // Render the popup if needed const popupElement = popup ? ( { popup.resolve(answer); setPopup(null); }} /> ) : null; return [ask, popupElement] as const; }