2022-06-04 03:13:19 +00:00
|
|
|
import { HTMLProps } from "react";
|
2022-06-08 16:00:39 +00:00
|
|
|
import { EditingContext } from "./EditingContext";
|
2022-06-04 03:13:19 +00:00
|
|
|
import { useDefinedContext } from "../../utils/definedContext";
|
|
|
|
import { FestaMarkdown } from "../extensions/FestaMarkdown";
|
|
|
|
|
2022-06-08 16:00:39 +00:00
|
|
|
/**
|
|
|
|
* Controlled input component which displays a `textarea` in editing mode, and renders the input in Markdown using {@link FestaMarkdown} in preview mode.
|
|
|
|
*/
|
2022-06-04 03:13:19 +00:00
|
|
|
export function EditableMarkdown({value, ...props}: HTMLProps<HTMLTextAreaElement>) {
|
|
|
|
const [editing,] = useDefinedContext(EditingContext)
|
|
|
|
|
|
|
|
return editing ? (
|
|
|
|
<textarea value={value} {...props}/>
|
|
|
|
) : (
|
|
|
|
<FestaMarkdown markdown={value as string}/>
|
|
|
|
)
|
|
|
|
}
|