const React = window.React; const {Fragment, useRef, useState} = React; export default function EventFragmentContainer({children}) { const fragmentRef = useRef(null); const [eventLog, setEventLog] = useState([]); const [listenerAdded, setListenerAdded] = useState(false); const [bubblesState, setBubblesState] = useState(true); const logEvent = message => { setEventLog(prev => [...prev, message]); }; const fragmentClickHandler = () => { logEvent('Fragment event listener fired'); }; const addListener = () => { fragmentRef.current.addEventListener('click', fragmentClickHandler); setListenerAdded(true); logEvent('Added click listener to fragment'); }; const removeListener = () => { fragmentRef.current.removeEventListener('click', fragmentClickHandler); setListenerAdded(false); logEvent('Removed click listener from fragment'); }; const dispatchClick = () => { fragmentRef.current.dispatchEvent( new MouseEvent('click', {bubbles: bubblesState}) ); logEvent(`Dispatched click event (bubbles: ${bubblesState})`); }; const clearLog = () => { setEventLog([]); }; return (
logEvent('Parent div clicked')} style={{ padding: '12px', border: '1px dashed #ccc', borderRadius: '4px', backgroundColor: '#fff', }}> {children}
{eventLog.length > 0 && (
Event Log:
)}
); }