import { FC, useCallback, useState } from 'react' import { AnyOperation } from '../../../../../types/change' import { useCodeMirrorStateContext, useCodeMirrorViewContext, } from '@/features/source-editor/components/codemirror-context' import { isSelectionWithinOp } from '../utils/is-selection-within-op' import classNames from 'classnames' import { clearHighlightRanges, highlightRanges, } from '@/features/source-editor/extensions/ranges' import { useEditorManagerContext } from '@/features/ide-react/context/editor-manager-context' export const ReviewPanelEntry: FC<{ position: number op: AnyOperation docId: string top?: number className?: string selectLineOnFocus?: boolean hoverRanges?: boolean }> = ({ children, position, top, op, className, selectLineOnFocus = true, docId, hoverRanges = true, }) => { const state = useCodeMirrorStateContext() const view = useCodeMirrorViewContext() const { openDocId } = useEditorManagerContext() const [focused, setFocused] = useState(false) const highlighted = isSelectionWithinOp(op, state.selection.main) const focusHandler = useCallback(() => { if (selectLineOnFocus) { openDocId(docId, { gotoOffset: position, keepCurrentView: true }) } setFocused(true) }, [selectLineOnFocus, docId, openDocId, position]) return (