respect \n
This commit is contained in:
parent
cbd3698b58
commit
1545742950
|
|
@ -10,10 +10,16 @@ import { useObjectToEdit } from "../../zustand/ObjectToEditState";
|
||||||
import SpinContainer from "../Layout/SpinContainer";
|
import SpinContainer from "../Layout/SpinContainer";
|
||||||
import { areFieldPropsEqual } from "./areFieldPropsEqual";
|
import { areFieldPropsEqual } from "./areFieldPropsEqual";
|
||||||
import { useHandlePasteKeyDown } from "../../Hooks/useHandlePasteKeyDown";
|
import { useHandlePasteKeyDown } from "../../Hooks/useHandlePasteKeyDown";
|
||||||
import { getLatexOnCustomShortCut } from "../../utils/keyDownUtils";
|
import { getLatexOnCtrlShiftQkeyDown, getLatexOnCtrlShiftThKeyDown } from "../../utils/keyDownUtils";
|
||||||
|
import { InlineMath } from "react-katex";
|
||||||
|
import 'katex/dist/katex.min.css';
|
||||||
|
|
||||||
|
|
||||||
|
const AddLazyLatexModal = React.lazy(() => import("./AddLaTexModal"));
|
||||||
|
const EditLazyLatexModal = React.lazy(() => import("./EditLaTexModal"));
|
||||||
|
|
||||||
|
const AddLazyImageModal = React.lazy(() => import("./AddImageModal"));
|
||||||
|
|
||||||
const AddLazyModal = React.lazy(() => import("./AddLaTexModal"));
|
|
||||||
const EditLazyModal = React.lazy(() => import("./EditLaTexModal"));
|
|
||||||
|
|
||||||
const LaTeXInputMemo: React.FC<any> = React.memo(
|
const LaTeXInputMemo: React.FC<any> = React.memo(
|
||||||
({ field, form, label, ...props }) => {
|
({ field, form, label, ...props }) => {
|
||||||
|
|
@ -31,14 +37,21 @@ const LaTeXInputMemo: React.FC<any> = React.memo(
|
||||||
|
|
||||||
const [t] = useTranslation();
|
const [t] = useTranslation();
|
||||||
|
|
||||||
const [isModalOpen, setIsModalOpen] = useState(false);
|
const [isLatexModalOpen, setIsLatexModalOpen] = useState(false);
|
||||||
const [isEditModalOpen, setIsEditModalOpen] = useState(false);
|
const [isLatexEditModalOpen, setIsLatexEditModalOpen] = useState(false);
|
||||||
const [Latex, setLatex] = useState<string>("");
|
const [Latex, setLatex] = useState<string>("");
|
||||||
|
|
||||||
|
const [isImageModalOpen, setIsImageModalOpen] = useState(false);
|
||||||
|
|
||||||
const showModal = () => {
|
const showLatexModal = () => {
|
||||||
setIsModalOpen(true);
|
setIsLatexModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const showImageModal = () => {
|
||||||
|
setIsImageModalOpen(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleEditModal = (item: any) => {
|
const handleEditModal = (item: any) => {
|
||||||
// console.log(item);
|
// console.log(item);
|
||||||
// setLatex(item);
|
// setLatex(item);
|
||||||
|
|
@ -93,11 +106,15 @@ const LaTeXInputMemo: React.FC<any> = React.memo(
|
||||||
setFieldValue(metaName, { ...(meta ?? {}), direction: "ltr" });
|
setFieldValue(metaName, { ...(meta ?? {}), direction: "ltr" });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handlePaste = useHandlePasteKeyDown();
|
const handlePaste = useHandlePasteKeyDown();
|
||||||
const handleOnKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) =>{
|
const handleOnKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) =>{
|
||||||
if(!ShowLatexOption) return ;
|
if(!ShowLatexOption) return ;
|
||||||
handlePaste(e,name)
|
handlePaste(e,name)
|
||||||
getLatexOnCustomShortCut(e) && setFieldValue(name,getLatexOnCustomShortCut(e))
|
const latexOnCtrlSHiftQClick = getLatexOnCtrlShiftQkeyDown(e)
|
||||||
|
// const latexOnCtrlSHiftThClick = getLatexOnCtrlShiftThKeyDown(e)
|
||||||
|
latexOnCtrlSHiftQClick && document.execCommand('insertText', false,latexOnCtrlSHiftQClick);
|
||||||
|
// latexOnCtrlSHiftThClick && document.execCommand('insertText', false,latexOnCtrlSHiftThClick);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className="LaTeXInput">
|
<div className="LaTeXInput">
|
||||||
|
|
@ -133,56 +150,65 @@ const LaTeXInputMemo: React.FC<any> = React.memo(
|
||||||
<Checkbox onChange={onPreviewChange}>
|
<Checkbox onChange={onPreviewChange}>
|
||||||
{t("header.show_preview")}
|
{t("header.show_preview")}
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
<button type="button" className="addMML" onClick={showModal}>
|
<button type="button" className="addMML" onClick={showLatexModal}>
|
||||||
<FaPlus /> {t("MML")}
|
<FaPlus /> {t("MML")}
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" className="addMML mx-2" onClick={showImageModal}>
|
||||||
|
<FaPlus /> {t("practical.image")}
|
||||||
|
</button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{showPreview && (
|
{showPreview && (
|
||||||
<div className="showPreviewInput">
|
<div className="showPreviewInput">
|
||||||
{Preview?.map((item: any, index: number,items) => {
|
{Preview.map((item, idx) => {
|
||||||
if (item?.isLatex) {
|
if (item.isLatex) {
|
||||||
|
return <span dir="ltr" key={idx}><InlineMath >{item.text}</InlineMath></span>;
|
||||||
|
}else if(item.isImage){
|
||||||
|
return <img key={idx} alt="img" width={200} src={item.text}/>
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const lines = item.text.split('\n');
|
||||||
|
return (
|
||||||
|
<React.Fragment key={idx}>
|
||||||
|
{lines.map((line, i) => (
|
||||||
|
<React.Fragment key={`${idx}-${i}`}>
|
||||||
|
{line}
|
||||||
|
{i < lines.length - 1 && <br />}
|
||||||
|
</React.Fragment>
|
||||||
|
))}
|
||||||
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
dir="ltr"
|
|
||||||
key={index}
|
|
||||||
className="LatexPreview"
|
|
||||||
|
|
||||||
>
|
|
||||||
<LatexPreview latex={item?.text} />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return <div key={index}
|
|
||||||
style={{
|
|
||||||
width: item?.text?.includes("\n") && items.length > 1 ? "100%" : undefined,
|
|
||||||
whiteSpace: "pre-wrap",
|
|
||||||
}}
|
|
||||||
>{ items[index -1]?.isLatex ? item?.text?.replace(/\n/, ""):item?.text}</div>;
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Suspense fallback={<SpinContainer />}>
|
<Suspense fallback={<SpinContainer />}>
|
||||||
<AddLazyModal
|
<AddLazyLatexModal
|
||||||
name={name}
|
name={name}
|
||||||
Latex={Latex}
|
Latex={Latex}
|
||||||
isModalOpen={isModalOpen}
|
isModalOpen={isLatexModalOpen}
|
||||||
setIsModalOpen={setIsModalOpen}
|
setIsModalOpen={setIsLatexModalOpen}
|
||||||
setLatex={setLatex}
|
setLatex={setLatex}
|
||||||
setCurrentValue={setCurrentValue}
|
setCurrentValue={setCurrentValue}
|
||||||
/>
|
/>
|
||||||
<EditLazyModal
|
<EditLazyLatexModal
|
||||||
name={name}
|
name={name}
|
||||||
Latex={Latex}
|
Latex={Latex}
|
||||||
isModalOpen={isEditModalOpen}
|
isModalOpen={isLatexEditModalOpen}
|
||||||
setIsModalOpen={setIsEditModalOpen}
|
setIsModalOpen={setIsLatexEditModalOpen}
|
||||||
setLatex={setLatex}
|
setLatex={setLatex}
|
||||||
/>
|
/>
|
||||||
|
<AddLazyImageModal
|
||||||
|
name={name}
|
||||||
|
isModalOpen={isImageModalOpen}
|
||||||
|
setIsModalOpen={setIsImageModalOpen}
|
||||||
|
setCurrentValue={setCurrentValue}
|
||||||
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user