import React, { useState } from "react"; import Select from "react-select"; import { isEOL, MonitorSettings, PluggableMonitor } from "./utils"; export default React.memo(function MessageToBoard({ config, wsSend, }: { config: Partial; wsSend: ( clientCommand: PluggableMonitor.Protocol.ClientCommandMessage ) => void; }): React.ReactElement { const [message, setMessage] = useState(""); const baudRate = config?.pluggableMonitorSettings?.baudrate?.selectedValue; const disabled = !config?.monitorUISettings?.connected; const lineEnding = config?.monitorUISettings?.lineEnding; const lineendings = [ { value: "", label: "No Line Ending" }, { value: "\n", label: "New Line" }, { value: "\r", label: "Carriage Return" }, { value: "\r\n", label: "Both NL & CR" }, ]; const baudrates = config?.pluggableMonitorSettings?.baudrate?.values?.map( (baud) => ({ value: baud, label: `${baud} baud`, }) ); return (
{ wsSend({ command: PluggableMonitor.Protocol.ClientCommand.SEND_MESSAGE, data: message + lineEnding, }); setMessage(""); e.preventDefault(); e.stopPropagation(); }} > setMessage(event.target.value)} placeholder="Type Message" /> b.value === baudRate)] } name="baudrate" options={baudrates} menuPlacement="top" onChange={(val) => { if (val) { wsSend({ command: PluggableMonitor.Protocol.ClientCommand.CHANGE_SETTINGS, data: { pluggableMonitorSettings: { baudrate: { ...config?.pluggableMonitorSettings?.baudrate, selectedValue: val.value, }, }, }, }); } }} /> )}
); });