diff --git a/src/hooks/useEventsAdapter.ts b/src/hooks/useEventsAdapter.ts new file mode 100644 index 0000000..fe7d68b --- /dev/null +++ b/src/hooks/useEventsAdapter.ts @@ -0,0 +1,30 @@ +import { useCallback, useEffect } from 'react'; + +export const useEventsAdapter = () => { + const handleKeydown = useCallback(({ code, target }: KeyboardEvent) => { + switch (code) { + case 'Enter': + if ((target as HTMLElement).tagName === 'BUTTON') { + break; + } + + (target as HTMLElement).click(); + break; + + case 'Escape': + window.history.back(); + break; + + default: + break; + } + }, []); + + useEffect(() => { + document.addEventListener('keydown', handleKeydown); + + return () => { + document.removeEventListener('keydown', handleKeydown); + }; + }, [handleKeydown]); +}; diff --git a/src/index.ts b/src/index.ts index 1c434fa..0c6a073 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,3 +8,4 @@ export { AssistantEvents as AssistantClientEvents, createAssistant as createAssistantClient, } from './assistantSdk/assistant'; +export * from './hooks/useEventsAdapter';