47 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-01-21 21:11:38 -05:00
import React, { useState } from "react";
import "./Editor.css";
import { Highlight } from "./highlight";
2024-01-12 22:07:59 -05:00
2024-01-21 21:11:38 -05:00
function Editor({ defaultValue = "I have a text value." }) {
2024-01-12 21:42:12 -05:00
function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>) {
console.log(event.target.value);
setValue(event.target.value);
2024-01-12 21:42:12 -05: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 18:52:40 -05:00
function buildShadow() {
// foo
}
if (highlights.length === 0) {
2024-01-21 21:11:38 -05:00
addHighlight(1, 5);
2024-01-21 18:52:40 -05:00
}
2024-01-12 21:42:12 -05:00
return (
2024-01-12 22:07:59 -05:00
<div className="Editor">
2024-01-12 22:16:31 -05:00
<div className="Editor-textwrapper">
2024-01-21 21:11:38 -05:00
<textarea
onChange={handleChange}
className="Editor-textarea"
value={value}
/>
<div className="Editor-underlay">{value}</div>
2024-01-12 22:16:31 -05:00
</div>
2024-01-12 22:07:59 -05:00
<div className="Editor-ast"></div>
</div>
2024-01-12 21:42:12 -05:00
);
}
export default Editor;