import { PropsWithChildren, useEffect, useRef } from 'react'; import { useIsFieldInputOnly } from '@/ui/field/hooks/useIsFieldInputOnly'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; import { isNonTextWritingKey } from '@/ui/utilities/hotkey/utils/isNonTextWritingKey'; import { TableHotkeyScope } from '../../types/TableHotkeyScope'; import { useTableCell } from '../hooks/useTableCell'; import { TableCellDisplayContainer } from './TableCellDisplayContainer'; type TableCellSoftFocusModeProps = PropsWithChildren; export const TableCellSoftFocusMode = ({ children, }: TableCellSoftFocusModeProps) => { const { openTableCell } = useTableCell(); const isFieldInputOnly = useIsFieldInputOnly(); const scrollRef = useRef(null); useEffect(() => { scrollRef.current?.scrollIntoView({ block: 'nearest' }); }, []); useScopedHotkeys( 'enter', () => { openTableCell(); }, TableHotkeyScope.TableSoftFocus, [openTableCell], { enabled: !isFieldInputOnly, }, ); useScopedHotkeys( '*', (keyboardEvent) => { const isWritingText = !isNonTextWritingKey(keyboardEvent.key) && !keyboardEvent.ctrlKey && !keyboardEvent.metaKey; if (!isWritingText) { return; } openTableCell(); }, TableHotkeyScope.TableSoftFocus, [openTableCell], { preventDefault: false, enabled: !isFieldInputOnly, }, ); const handleClick = () => { if (!isFieldInputOnly) { openTableCell(); } }; return ( {children} ); };