import React, { useMemo } from "react" import { useAppState } from "./001_provider/001_AppStateProvider"; import { AnimationTypes, HeaderButton, HeaderButtonProps } from "./components/101_HeaderButton"; export type ConvertSettingState = { convertSetting: JSX.Element; } export const useConvertSetting = (): ConvertSettingState => { const appState = useAppState() const accodionButton = useMemo(() => { const accodionButtonProps: HeaderButtonProps = { stateControlCheckbox: appState.frontendManagerState.stateControls.openConverterSettingCheckbox, tooltip: "Open/Close", onIcon: ["fas", "caret-up"], offIcon: ["fas", "caret-up"], animation: AnimationTypes.spinner, tooltipClass: "tooltip-right", }; return ; }, []); const inputChunkNumRow = useMemo(() => { return (
Input Chunk Num(128sample/chunk)
{ appState.workletNodeSetting.updateWorkletNodeSetting({ ...appState.workletNodeSetting.workletNodeSetting, inputChunkNum: Number(e.target.value) }) appState.workletNodeSetting.trancateBuffer() }} />
buff: {(appState.workletNodeSetting.workletNodeSetting.inputChunkNum * 128 * 1000 / 48000).toFixed(1)}ms
) }, [appState.workletNodeSetting.workletNodeSetting.inputChunkNum, appState.workletNodeSetting.updateWorkletNodeSetting]) const gpuRow = useMemo(() => { return (
GPU
{ appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, gpu: Number(e.target.value) }) }} />
) }, [appState.serverSetting.serverSetting.gpu, appState.serverSetting.updateServerSettings]) const convertSetting = useMemo(() => { return ( <> {appState.frontendManagerState.stateControls.openConverterSettingCheckbox.trigger}
{accodionButton} { appState.frontendManagerState.stateControls.openConverterSettingCheckbox.updateState(!appState.frontendManagerState.stateControls.openConverterSettingCheckbox.checked()) }}> Converter Setting
{inputChunkNumRow} {gpuRow}
) }, [inputChunkNumRow, gpuRow]) return { convertSetting, } }