import React, { FC, useEffect, useState } from 'react'; import './index.scss'; export interface CreateModeProps { onCreate?: (ranges: { fromStartLine: number; fromEndLine: number; toStartLine: number; toEndLine: number; }) => void; } const CreateMode: FC = ({ onCreate }) => { const [checked, setChecked] = useState(false); const [fromStartLine, setFromStartLine] = useState(); const [fromEndLine, setFromEndLine] = useState(); const [toStartLine, setToStartLine] = useState(); const [toEndLine, setToEndLine] = useState(); const submit = () => { if ( fromStartLine === undefined || fromEndLine === undefined || toStartLine === undefined || toEndLine === undefined ) { throw Error('submit fail'); } onCreate?.({ fromStartLine, fromEndLine, toStartLine, toEndLine, }); }; useEffect(() => { setFromStartLine(undefined); setFromEndLine(undefined); setToStartLine(undefined); setToEndLine(undefined); const listener = (event: any) => { if (!checked) { return; } setFromStartLine(event.detail.fromStartLine); setFromEndLine(event.detail.fromEndLine); setToStartLine(event.detail.toStartLine); setToEndLine(event.detail.toEndLine); }; // TODO: multiple diff editor document.addEventListener('relationCreateRangeChange', listener); return () => { document.addEventListener('relationCreateRangeChange', listener); }; }, [checked]); return ( {checked && fromStartLine && fromEndLine && toStartLine && toEndLine && ( L{fromStartLine},{fromEndLine}-L{toStartLine},{toEndLine} )} ); }; export default CreateMode;