import React, {useState} from "react";
import {updateEntry, getPassword} from "./requests";
import {declineSaimiar} from "./saimiar_morphology";
import {SaiEntryProps, JutEntryProps, ElesuEntryProps, TukEntryProps, Conlang} from "./types";
interface BaseProps {
id: number;
conlang: Conlang;
conlangEntry: string;
english: string;
langSpecific: React.ReactNode;
}
const EntryBase = (props: BaseProps) => {
const [editing, setEditing] = useState(false);
const [english, setEnglish] = useState(props.english);
const mainEntryStyle = {
display: "flex",
justifyContent: "space-between",
flexDirection: "row",
flexWrap: "wrap",
};
const controlStyle = {
display: "flex",
justifyContent: "space-between",
flexDirection: "row",
minWidth: "20%",
marginTop: "10px",
};
const save = () => {
updateEntry(props.conlang, props.id, english);
};
const engTranslation = editing ?
setEnglish(evt.target.value) }
style={{ width: "100%", marginTop: "5px" }}
/> : english;
const EditControls = ({onSave}: { onSave: () => void }) => {
const cancel = () => setEditing(false);
const edit = (evt) => {
evt.preventDefault();
setEditing(true);
};
if (!getPassword()) {
return null;
}
return (editing ? (
)
: Edit);
};
return (
{ props.conlangEntry } { engTranslation }
{ props.langSpecific }
);
};
const SaiEntry = (props: {entry: SaiEntryProps}) => {
const {entry} = props;
const synCategory = entry.syn_category;
const isNominal = synCategory === "nominal";
const barStyle = {
display: "inline-flex",
gap: "1em",
};
let morphology = null;
if (isNominal) {
const decl = declineSaimiar(entry);
if (decl) {
morphology = (
Abs: {decl.abs}, Erg: {decl.erg}, Adp: {decl.adp},
All: {decl.all}, Loc: {decl.loc}, Ell: {decl.ell},
Inst: {decl.inst}, Rel: {decl.rel}
);
}
}
const langSpecific = (
{ entry.syn_category }
{ entry.morph_type ? `\t\t${entry.morph_type}` : null }
{ entry.etym ? etym.: {entry.etym}
: null
}
{ entry.semantic_field ? {entry.semantic_field} : null }
{ morphology }
);
return ;
};
const JutEntry = (props: {entry: JutEntryProps}) => {
const {entry} = props;
const langSpecific = (
{entry.syn_category} { entry.syn_category === "noun" ? `- ${entry.gender}` : null }
);
return ;
};
const ElesuEntry = (props: {entry: ElesuEntryProps}) => {
const {entry} = props;
const langSpecific =
{ entry.syn_category }
;
return ;
};
const TukEntry = (props: {entry: TukEntryProps}) => {
const {entry} = props;
const langSpecific =
{ entry.syn_category }
;
return ;
};
export {SaiEntry, ElesuEntry, JutEntry, TukEntry};