+
+
Data
-
- JSON data (an instance of the Concerto model) used to preview output
- from the template.
-
+
+
+
+
-
+
+ JSON data (an instance of the Concerto model) used to preview output from the template.
+
+
);
}
-export default AgreementData;
\ No newline at end of file
+export defaultĀ AgreementData;
\ No newline at end of file
diff --git a/src/editors/editorsContainer/TemplateMarkdown.tsx b/src/editors/editorsContainer/TemplateMarkdown.tsx
index 830bfdf6..230cfdf1 100644
--- a/src/editors/editorsContainer/TemplateMarkdown.tsx
+++ b/src/editors/editorsContainer/TemplateMarkdown.tsx
@@ -1,39 +1,48 @@
import MarkdownEditor from "../MarkdownEditor";
import useAppStore from "../../store/store";
+import useUndoRedo from "../../components/useUndoRedo";
import { useCallback } from "react";
import { debounce } from "ts-debounce";
+import { FaUndo, FaRedo } from "react-icons/fa";
function TemplateMarkdown() {
- const editorValue = useAppStore((state) => state.editorValue);
- const setEditorValue = useAppStore((state) => state.setEditorValue);
- const setTemplateMarkdown = useAppStore((state) => state.setTemplateMarkdown);
- const backgroundColor = useAppStore((state) => state.backgroundColor);
const textColor = useAppStore((state) => state.textColor);
-
+ const backgroundColor = useAppStore((state) => state.backgroundColor);
+ const setTemplateMarkdown = useAppStore((state) => state.setTemplateMarkdown);
+ const { value, setValue, undo, redo } = useUndoRedo(
+ useAppStore((state) => state.editorValue),
+ setTemplateMarkdown // Ensures preview updates when undo/redo happens
+ );
+
const debouncedSetTemplateMarkdown = useCallback(
debounce((value: string) => {
void setTemplateMarkdown(value);
}, 500),
- []
+ [setTemplateMarkdown]
);
const handleChange = (value: string | undefined) => {
if (value !== undefined) {
- setEditorValue(value);
+ setValue(value);
debouncedSetTemplateMarkdown(value);
}
};
return (
-
-
TemplateMark
+
+
- A natural language template with embedded variables, conditional
- sections, and TypeScript code.
+ A natural language template with embedded variables, conditional sections, and TypeScript code.
-
+
);
}
-export default TemplateMarkdown;
+export default TemplateMarkdown;
\ No newline at end of file
diff --git a/src/editors/editorsContainer/TemplateModel.tsx b/src/editors/editorsContainer/TemplateModel.tsx
index f4a83dff..8c1808c8 100644
--- a/src/editors/editorsContainer/TemplateModel.tsx
+++ b/src/editors/editorsContainer/TemplateModel.tsx
@@ -1,14 +1,18 @@
import ConcertoEditor from "../ConcertoEditor";
import useAppStore from "../../store/store";
+import useUndoRedo from "../../components/useUndoRedo";
import { useCallback } from "react";
import { debounce } from "ts-debounce";
+import { FaUndo, FaRedo } from "react-icons/fa";
function TemplateModel() {
- const editorModelCto = useAppStore((state) => state.editorModelCto);
- const setEditorModelCto = useAppStore((state) => state.setEditorModelCto);
- const setModelCto = useAppStore((state) => state.setModelCto);
const textColor = useAppStore((state) => state.textColor);
-
+ const setModelCto = useAppStore((state) => state.setModelCto);
+ const { value, setValue, undo, redo } = useUndoRedo(
+ useAppStore((state) => state.editorModelCto),
+ setModelCto // Ensures errors and preview update when undo/redo happens
+ );
+
const debouncedSetModelCto = useCallback(
debounce((value: string) => {
void setModelCto(value);
@@ -18,22 +22,26 @@ function TemplateModel() {
const handleChange = (value: string | undefined) => {
if (value !== undefined) {
- setEditorModelCto(value);
+ setValue(value);
debouncedSetModelCto(value);
}
};
return (
-
+
Concerto Model
-
- Defines the data model for the template and its logic.
-
+
+
+
+
-
+
+ Defines the data model for the template and its logic.
+
+
);
}
-export default TemplateModel;
\ No newline at end of file
+export defaultĀ TemplateModel;
\ No newline at end of file