You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
2 years ago
|
import styles from './styles.module.css'
|
||
|
import {useContext, useEffect, useState} from "react";
|
||
|
import Argument, {ArgumentInterface} from "../argument";
|
||
|
import Context, {ContextInterface} from "../command/context";
|
||
|
|
||
|
interface ArgumentsInterface {
|
||
|
argumentList: ArgumentInterface[]
|
||
|
}
|
||
|
|
||
|
export default function Arguments({argumentList}: ArgumentsInterface) {
|
||
|
let {argumentList: al} = useContext<ContextInterface>(Context)
|
||
|
let [availableArguments, setAvailableArguments] = useState<ArgumentInterface[]>(argumentList);
|
||
|
|
||
|
useEffect(() => {
|
||
|
let result: ArgumentInterface[] = [];
|
||
|
for (let argument of argumentList) {
|
||
|
result.push(argument)
|
||
|
if (!al[argument.name]) {
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
setAvailableArguments(result)
|
||
|
}, [al]);
|
||
|
|
||
|
if (!argumentList.length) {
|
||
|
return <></>
|
||
|
}
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
--
|
||
|
{availableArguments.map((argument: ArgumentInterface, index: number) => {
|
||
|
return (
|
||
|
<Argument key={index} {...argument} />
|
||
|
)
|
||
|
})}
|
||
|
</>
|
||
|
)
|
||
|
}
|