You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			TypeScript
		
	
| import { TTSConfig, TTSConfigValidator } from "../store";
 | |
| 
 | |
| import Locale from "../locales";
 | |
| import { ListItem, Select } from "./ui-lib";
 | |
| import {
 | |
|   DEFAULT_TTS_ENGINE,
 | |
|   DEFAULT_TTS_ENGINES,
 | |
|   DEFAULT_TTS_MODELS,
 | |
|   DEFAULT_TTS_VOICES,
 | |
| } from "../constant";
 | |
| import { InputRange } from "./input-range";
 | |
| 
 | |
| export function TTSConfigList(props: {
 | |
|   ttsConfig: TTSConfig;
 | |
|   updateConfig: (updater: (config: TTSConfig) => void) => void;
 | |
| }) {
 | |
|   return (
 | |
|     <>
 | |
|       <ListItem
 | |
|         title={Locale.Settings.TTS.Enable.Title}
 | |
|         subTitle={Locale.Settings.TTS.Enable.SubTitle}
 | |
|       >
 | |
|         <input
 | |
|           type="checkbox"
 | |
|           checked={props.ttsConfig.enable}
 | |
|           onChange={(e) =>
 | |
|             props.updateConfig(
 | |
|               (config) => (config.enable = e.currentTarget.checked),
 | |
|             )
 | |
|           }
 | |
|         ></input>
 | |
|       </ListItem>
 | |
|       {/* <ListItem
 | |
|         title={Locale.Settings.TTS.Autoplay.Title}
 | |
|         subTitle={Locale.Settings.TTS.Autoplay.SubTitle}
 | |
|       >
 | |
|         <input
 | |
|           type="checkbox"
 | |
|           checked={props.ttsConfig.autoplay}
 | |
|           onChange={(e) =>
 | |
|             props.updateConfig(
 | |
|               (config) => (config.autoplay = e.currentTarget.checked),
 | |
|             )
 | |
|           }
 | |
|         ></input>
 | |
|       </ListItem> */}
 | |
|       <ListItem title={Locale.Settings.TTS.Engine}>
 | |
|         <Select
 | |
|           value={props.ttsConfig.engine}
 | |
|           onChange={(e) => {
 | |
|             props.updateConfig(
 | |
|               (config) =>
 | |
|                 (config.engine = TTSConfigValidator.engine(
 | |
|                   e.currentTarget.value,
 | |
|                 )),
 | |
|             );
 | |
|           }}
 | |
|         >
 | |
|           {DEFAULT_TTS_ENGINES.map((v, i) => (
 | |
|             <option value={v} key={i}>
 | |
|               {v}
 | |
|             </option>
 | |
|           ))}
 | |
|         </Select>
 | |
|       </ListItem>
 | |
|       {props.ttsConfig.engine === DEFAULT_TTS_ENGINE && (
 | |
|         <>
 | |
|           <ListItem title={Locale.Settings.TTS.Model}>
 | |
|             <Select
 | |
|               value={props.ttsConfig.model}
 | |
|               onChange={(e) => {
 | |
|                 props.updateConfig(
 | |
|                   (config) =>
 | |
|                     (config.model = TTSConfigValidator.model(
 | |
|                       e.currentTarget.value,
 | |
|                     )),
 | |
|                 );
 | |
|               }}
 | |
|             >
 | |
|               {DEFAULT_TTS_MODELS.map((v, i) => (
 | |
|                 <option value={v} key={i}>
 | |
|                   {v}
 | |
|                 </option>
 | |
|               ))}
 | |
|             </Select>
 | |
|           </ListItem>
 | |
|           <ListItem
 | |
|             title={Locale.Settings.TTS.Voice.Title}
 | |
|             subTitle={Locale.Settings.TTS.Voice.SubTitle}
 | |
|           >
 | |
|             <Select
 | |
|               value={props.ttsConfig.voice}
 | |
|               onChange={(e) => {
 | |
|                 props.updateConfig(
 | |
|                   (config) =>
 | |
|                     (config.voice = TTSConfigValidator.voice(
 | |
|                       e.currentTarget.value,
 | |
|                     )),
 | |
|                 );
 | |
|               }}
 | |
|             >
 | |
|               {DEFAULT_TTS_VOICES.map((v, i) => (
 | |
|                 <option value={v} key={i}>
 | |
|                   {v}
 | |
|                 </option>
 | |
|               ))}
 | |
|             </Select>
 | |
|           </ListItem>
 | |
|           <ListItem
 | |
|             title={Locale.Settings.TTS.Speed.Title}
 | |
|             subTitle={Locale.Settings.TTS.Speed.SubTitle}
 | |
|           >
 | |
|             <InputRange
 | |
|               aria={Locale.Settings.TTS.Speed.Title}
 | |
|               value={props.ttsConfig.speed?.toFixed(1)}
 | |
|               min="0.3"
 | |
|               max="4.0"
 | |
|               step="0.1"
 | |
|               onChange={(e) => {
 | |
|                 props.updateConfig(
 | |
|                   (config) =>
 | |
|                     (config.speed = TTSConfigValidator.speed(
 | |
|                       e.currentTarget.valueAsNumber,
 | |
|                     )),
 | |
|                 );
 | |
|               }}
 | |
|             ></InputRange>
 | |
|           </ListItem>
 | |
|         </>
 | |
|       )}
 | |
|     </>
 | |
|   );
 | |
| }
 |