11import React , { ReactElement , useEffect , useState } from "react"
22import { DragDropContext , Droppable , Draggable } from "@hello-pangea/dnd"
33import { Alert , Input } from "reactstrap"
4- import ReactMarkdown from "react-markdown"
5- import remarkGfm from "remark-gfm"
6- import remarkBreaks from "remark-breaks"
74import Card from "./Card"
85import Section from "./Section"
96import Add from "./Add"
7+ import MarkdownDescriptionInput from "./MarkdownDescriptionInput"
108import {
119 parse ,
1210 stringify ,
@@ -23,55 +21,6 @@ import {
2321import DEFAULT_FORM_INPUTS from "./defaults/defaultFormInputs"
2422import type { Mods , InitParameters , AddFormObjectParametersType } from "./types"
2523
26- function MarkdownDescriptionInput ( {
27- value,
28- onChange,
29- } : {
30- value : string
31- onChange : ( v : string ) => void
32- } ) {
33- const [ mode , setMode ] = useState < "edit" | "preview" > ( "edit" )
34-
35- return (
36- < div className = "form-description-wrapper" >
37- < div className = "form-desc-toolbar flex items-center gap-2 mb-1" >
38- < div className = "join" >
39- < button
40- type = "button"
41- className = { `btn btn-sm join-item ${ mode === "edit" ? "btn-primary" : "btn-ghost" } ` }
42- onClick = { ( ) => setMode ( "edit" ) }
43- >
44- Edit
45- </ button >
46- < button
47- type = "button"
48- className = { `btn btn-sm join-item ${ mode === "preview" ? "btn-primary" : "btn-ghost" } ` }
49- onClick = { ( ) => setMode ( "preview" ) }
50- >
51- Preview
52- </ button >
53- </ div >
54- < span className = "text-sm opacity-60 italic" > Supports Markdown</ span >
55- </ div >
56- { mode === "edit" ? (
57- < textarea
58- value = { value }
59- placeholder = "Description"
60- rows = { 4 }
61- className = "form-description w-full"
62- onChange = { ( ev ) => onChange ( ev . target . value ) }
63- />
64- ) : (
65- < div className = "markdown-display prose max-w-none dark:prose-invert p-2 bg-base-200 rounded border border-base-300 min-h-[6rem]" >
66- < ReactMarkdown remarkPlugins = { [ remarkGfm , remarkBreaks ] } >
67- { value || "_Nothing to preview yet…_" }
68- </ ReactMarkdown >
69- </ div >
70- ) }
71- </ div >
72- )
73- }
74-
7524export default function FormBuilder ( {
7625 schema,
7726 uischema,
0 commit comments