diff --git a/src/components/phrase-builder/PhraseBuilder.tsx b/src/components/phrase-builder/PhraseBuilder.tsx index cebf9d7..0f40184 100644 --- a/src/components/phrase-builder/PhraseBuilder.tsx +++ b/src/components/phrase-builder/PhraseBuilder.tsx @@ -33,6 +33,20 @@ function showRole(VP: VPRendered | undefined, member: "subject" | "object") { : ""; } +type soClump = { subject: NPSelection | undefined, verb: VerbSelection | undefined }; +function switchSubjObj({ subject, verb }: soClump): soClump { + if (!subject|| !verb || !verb.object || !(typeof verb.object === "object")) { + return { subject, verb }; + } + return { + subject: verb.object, + verb: { + ...verb, + object: subject, + } + }; +} + // TODO: BIG ISSUE, IF YOU OPEN THE OBJECT PRONOUN BOX AND IT CONFLICTS WITH THE SUBJECT // IT CAN SAY THE COMBO IS NOT ALLOWED AND SHOW SOMETHING BLANK // TODO: error handling on error with rendering etc @@ -71,6 +85,11 @@ export function PhraseBuilder() { object, }); } + function handleSubjObjSwap() { + const output = switchSubjObj({ subject, verb }); + setSubject(output.subject); + setVerb(output.verb); + } const verbPhrase: VPSelection | undefined = verbPhraseComplete({ subject, verb }); const VPRendered = verbPhrase && renderVP(verbPhrase); return
@@ -78,6 +97,9 @@ export function PhraseBuilder() {
{kingEmoji} = king of phrase
{servantEmoji} = servant of phrase
+ {verb && (typeof verb.object === "object") &&
+ +
}
Subject {showRole(VPRendered, "subject")}