import { useMemo } from 'react'; import { BedrockEvent, BedrockEventDefinition } from './abstract'; import { BackEventControls, useBackEvent } from '../use-back-event/useBackEvent'; class BackEvent extends BedrockEventDefinition { name = 'backEvent' as const; ref = { remove: () => {}, }; constructor(private backEventControls: BackEventControls) { super(); } remove() { this.ref.remove(); } listener(_: void, onEvent: (response: void) => void): void { this.backEventControls.addEventListener(onEvent); this.ref.remove = () => this.backEventControls.removeEventListener(onEvent); } } export function useBedrockEvent() { const backEvent = useBackEvent(); const bedrockEvent = useMemo(() => { return new BedrockEvent([new BackEvent(backEvent)]); }, [backEvent]); return bedrockEvent; }