import React, { useState, useEffect } from 'react'; import type { ConfirmableProps, ConfirmDialog, ConfirmableDialog } from './types'; const confirmable: (Component: ConfirmDialog) => ConfirmableDialog = (Component: ConfirmDialog) => ({ dispose, reject, resolve, registerSetShow, ...other }: ConfirmableProps) => { const [show, setShow] = useState(true); // Register setShow for external control useEffect(() => { registerSetShow?.(setShow); }, [registerSetShow]); const dismiss = () => { setShow(false); dispose(); }; const cancel = (value?: any) => { setShow(false); reject(value); }; const proceed = (value: R) => { setShow(false); resolve(value); }; return ( ); }; export default confirmable;