import { FC, useCallback } from "react"; import { useObjectStateWrapper } from "@/hooks/useObjectState"; import { TEMPLATE_TYPES } from "@/constants/TemplateTypes"; import { SchemaEditAtom } from "@/recoil/atoms/schema"; import { useRecoilState } from "recoil"; import { Icon } from "@/components/Icon"; interface IProps { templateKey: string; update: (arg0: string, arg1: Template) => void; template: Template; } export const TemplateEditor: FC = ( { templateKey, update, template }, ) => { const [schema, setSchema] = useRecoilState(SchemaEditAtom); const updateTemplate = useCallback( (t: Template | ((arg: Template) => Template)) => { update(templateKey, typeof t === "function" ? t(template) : t); }, [templateKey, update, template], ); const { bindProperty } = useObjectStateWrapper( template, updateTemplate, ); const deleteTemplate = useCallback(() => { setSchema((s: Schema) => { const templates = { ...s.schema }; delete templates[templateKey]; return { ...s, schema: templates, }; }); }, [setSchema, templateKey]); return (
  • {templateKey}

  • ); };