import React, { useState, useEffect } from "react"; import PropTypes from "prop-types"; import Box from "@mui/material/Box"; import * as Juce from "juce-framework-frontend"; import Select from "@mui/material/Select"; import InputLabel from "@mui/material/InputLabel"; import MenuItem from "@mui/material/MenuItem"; import FormControl from "@mui/material/FormControl"; import { controlParameterIndexAnnotation } from "../types/JuceTypes.js"; export default function JuceComboBox({ identifier }) { JuceComboBox.propTypes = { identifier: PropTypes.string, }; const comboBoxState = Juce.getComboBoxState(identifier); const [value, setValue] = useState(comboBoxState.getChoiceIndex()); const [properties, setProperties] = useState(comboBoxState.properties); const handleChange = (event) => { comboBoxState.setChoiceIndex(event.target.value); setValue(event.target.value); }; useEffect(() => { const valueListenerId = comboBoxState.valueChangedEvent.addListener(() => { setValue(comboBoxState.getChoiceIndex()); }); const propertiesListenerId = comboBoxState.propertiesChangedEvent.addListener(() => { setProperties(comboBoxState.properties); }); return function cleanup() { comboBoxState.valueChangedEvent.removeListener(valueListenerId); comboBoxState.propertiesChangedEvent.removeListener(propertiesListenerId); }; }); return ( {properties.name} ); }