organic_ast_explorer/src/Editor.tsx

45 lines
1.0 KiB
TypeScript
Raw Normal View History

import React, { useState } from 'react';
2024-01-13 03:07:59 +00:00
import './Editor.css';
import {Highlight} from './highlight';
2024-01-13 03:07:59 +00:00
function Editor({
defaultValue = "I have a text value."
}) {
2024-01-13 02:42:12 +00:00
function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>) {
console.log(event.target.value);
setValue(event.target.value);
2024-01-13 02:42:12 +00:00
}
const [value, setValue] = useState(defaultValue);
const [highlights, setHighlights] = useState<Array<Highlight>>([]);
function addHighlight(start: number, end: number) {
setHighlights([...highlights, new Highlight(start, end)]);
}
function clearHighlights() {
setHighlights([]);
}
2024-01-21 23:52:40 +00:00
function buildShadow() {
// foo
}
if (highlights.length === 0) {
addHighlight(1,5);
}
2024-01-13 02:42:12 +00:00
return (
2024-01-13 03:07:59 +00:00
<div className="Editor">
2024-01-13 03:16:31 +00:00
<div className="Editor-textwrapper">
<textarea onChange={handleChange} className="Editor-textarea" value={value} />
<div className="Editor-underlay">{value}</div>
2024-01-13 03:16:31 +00:00
</div>
2024-01-13 03:07:59 +00:00
<div className="Editor-ast"></div>
</div>
2024-01-13 02:42:12 +00:00
);
}
export default Editor;