import { OnnxExecutionProvider, Protocol, Framework, fileSelector } from "@dannadori/voice-changer-client-js" import React from "react" import { useMemo } from "react" import { ClientState } from "./hooks/useClient" export type UseServerSettingProps = { clientState: ClientState } export type ServerSettingState = { serverSetting: JSX.Element; } export const useServerSettingArea = (props: UseServerSettingProps): ServerSettingState => { const uploadeModelRow = useMemo(() => { const onPyTorchFileLoadClicked = async () => { const file = await fileSelector("") if (file.name.endsWith(".pth") == false) { alert("モデルファイルの拡張子はpthである必要があります。") return } props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, pyTorchModel: file }) } const onPyTorchFileClearClicked = () => { props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, pyTorchModel: null }) } const onConfigFileLoadClicked = async () => { const file = await fileSelector("") if (file.name.endsWith(".json") == false) { alert("モデルファイルの拡張子はjsonである必要があります。") return } props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, configFile: file }) } const onConfigFileClearClicked = () => { props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, configFile: null }) } const onOnnxFileLoadClicked = async () => { const file = await fileSelector("") if (file.name.endsWith(".onnx") == false) { alert("モデルファイルの拡張子はonnxである必要があります。") return } props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, onnxModel: file }) } const onOnnxFileClearClicked = () => { props.clientState.serverSetting.setFileUploadSetting({ ...props.clientState.serverSetting.fileUploadSetting, onnxModel: null }) } const onModelUploadClicked = async () => { props.clientState.serverSetting.loadModel() } return ( <>