import React, { useRef } from 'react' import { ipc } from '../../wailsjs/wailsjs/go/models' import classNames from '../../utils/classNames' import onEnterHandler from '../../utils/onEnterHandler' import { useProject } from '../../context/Project/provider' type Props = { zoomLevel: number processedArea?: ipc.ProcessedArea wordToEdit?: ipc.ProcessedWord setWordToEdit: (props?: { word: ipc.ProcessedWord, areaId: string }) => void setHoveredProcessedArea: (area?: ipc.ProcessedArea) => void } const EditProcessedWord = ({ setWordToEdit, zoomLevel, wordToEdit, processedArea, setHoveredProcessedArea }: Props) => { const { requestUpdateProcessedWordById, getProcessedAreaById, } = useProject() const editWordInput = useRef(null) if (!wordToEdit || !processedArea) return <> const width = Math.floor((wordToEdit.boundingBox.x1 - wordToEdit.boundingBox.x0) * zoomLevel) + 2 const height = Math.floor(((wordToEdit.boundingBox.y1 - wordToEdit.boundingBox.y0) * zoomLevel) * 2) + 4 const handleWordCorrectionSubmit = (wordId: string, newWordValue: string) => { requestUpdateProcessedWordById(wordId, newWordValue) .then(res => { getProcessedAreaById(processedArea.id || '').then(response => { setHoveredProcessedArea(response) }) }) .catch(console.error) setWordToEdit(undefined) } return
setWordToEdit(undefined)} >
{wordToEdit.fullText}
e.currentTarget.select()} onBlur={(e) => handleWordCorrectionSubmit(wordToEdit.id, e.currentTarget.value)} onKeyDown={(e) => onEnterHandler(e, () => handleWordCorrectionSubmit(wordToEdit.id, e.currentTarget.value))} />
} export default EditProcessedWord