import React, { useEffect, useState } from "react"; import Select from "react-select"; import ReactTooltip from "react-tooltip"; import { themeChange } from "theme-change"; interface IProps { progress: string; selectImageHandler: () => Promise; selectFolderHandler: () => Promise; handleModelChange: (e: any) => void; handleDrop: (e: any) => void; outputHandler: () => Promise; upscaylHandler: () => Promise; batchMode: boolean; setBatchMode: React.Dispatch>; imagePath: string; outputPath: string; doubleUpscayl: boolean; setDoubleUpscayl: React.Dispatch>; model: string; setModel: React.Dispatch>; isVideo: boolean; setIsVideo: React.Dispatch>; saveImageAs: string; setSaveImageAs: React.Dispatch>; gpuId: string; setGpuId: React.Dispatch>; dimensions: { width: number | null; height: number | null; }; } function SettingsTab({ progress, selectImageHandler, selectFolderHandler, handleModelChange, handleDrop, outputHandler, upscaylHandler, batchMode, setBatchMode, imagePath, outputPath, doubleUpscayl, setDoubleUpscayl, model, setModel, isVideo, setIsVideo, gpuId, setGpuId, saveImageAs, setSaveImageAs, dimensions, }: IProps) { const [currentModel, setCurrentModel] = useState<{ label: string; value: string; }>({ label: null, value: null, }); useEffect(() => { themeChange(false); if (!localStorage.getItem("saveImageAs")) { localStorage.setItem("saveImageAs", "png"); } else { const currentlySavedImageFormat = localStorage.getItem("saveImageAs"); setSaveImageAs(currentlySavedImageFormat); } if (!localStorage.getItem("model")) { setCurrentModel(modelOptions[0]); setModel(modelOptions[0].value); localStorage.setItem("model", JSON.stringify(modelOptions[0])); } else { const currentlySavedModel = JSON.parse( localStorage.getItem("model") ) as typeof modelOptions[0]; setCurrentModel(currentlySavedModel); setModel(currentlySavedModel.value); } if (!localStorage.getItem("gpuId")) { localStorage.setItem("gpuId", ""); } else { const currentlySavedGpuId = localStorage.getItem("gpuId"); setGpuId(currentlySavedGpuId); } }, []); useEffect(() => { console.log("Current Model: ", currentModel); }, [currentModel]); const setExportType = (format: string) => { setSaveImageAs(format); localStorage.setItem("saveImageAs", format); }; const handleBatchMode = () => { setBatchMode((oldValue) => !oldValue); }; const handleGpuIdChange = (e) => { setGpuId(e.target.value); localStorage.setItem("gpuId", e.target.value); }; const customStyles = { option: (provided, state) => ({ ...provided, borderBottom: "1px dotted pink", color: state.isSelected ? "red" : "blue", padding: 20, }), control: () => ({ // none of react-select's styles are passed to width: 200, }), singleValue: (provided, state) => { const opacity = state.isDisabled ? 0.5 : 1; const transition = "opacity 300ms"; return { ...provided, opacity, transition }; }, }; const modelOptions = [ { label: "General Photo (Real-ESRGAN)", value: "realesrgan-x4plus" }, { label: "General Photo (Remacri)", value: "remacri" }, { label: "General Photo (Ultramix Balanced)", value: "ultramix_balanced" }, { label: "General Photo (Ultrasharp)", value: "ultrasharp" }, { label: "Digital Art", value: "realesrgan-x4plus-anime" }, ]; const availableThemes = [ { label: "light", value: "light" }, { label: "dark", value: "dark" }, { label: "cupcake", value: "cupcake" }, { label: "bumblebee", value: "bumblebee" }, { label: "emerald", value: "emerald" }, { label: "corporate", value: "corporate" }, { label: "synthwave", value: "synthwave" }, { label: "retro", value: "retro" }, { label: "cyberpunk", value: "cyberpunk" }, { label: "valentine", value: "valentine" }, { label: "halloween", value: "halloween" }, { label: "garden", value: "garden" }, { label: "forest", value: "forest" }, { label: "aqua", value: "aqua" }, { label: "lofi", value: "lofi" }, { label: "pastel", value: "pastel" }, { label: "fantasy", value: "fantasy" }, { label: "wireframe", value: "wireframe" }, { label: "black", value: "black" }, { label: "luxury", value: "luxury" }, { label: "dracula", value: "dracula" }, { label: "cmyk", value: "cmyk" }, { label: "autumn", value: "autumn" }, { label: "business", value: "business" }, { label: "acid", value: "acid" }, { label: "lemonade", value: "lemonade" }, { label: "night", value: "night" }, { label: "coffee", value: "coffee" }, { label: "winter", value: "winter" }, ]; useEffect(() => {}, [imagePath]); return (
{/* IMAGE FORMAT BUTTONS */}

Save Image As:

{batchMode && (

Only PNG is supported in Batch Upscale

)}
{/* PNG */} {/* JPG */} {/* WEBP */}
{/* THEME SELECTOR */}

Upscayl Theme:

{/* GPU ID INPUT */}

GPU ID:

Logs

Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti, odit autem eos eius explicabo optio minima ducimus est id similique distinctio, sit natus! Harum, tempora saepe ipsam ipsa at, tenetur tempore dolorem dolore officiis, soluta voluptate! Officia repellendus, eligendi sunt voluptates inventore maxime expedita autem fuga dignissimos atque aliquid amet, sequi in cupiditate? Nulla reprehenderit labore quas quis natus dolor quos qui repellendus rerum ducimus, unde, porro placeat deserunt maiores ex aliquam. Assumenda laborum atque iure, nulla unde repudiandae cum odit libero magni vero veritatis voluptates quaerat tempore quod ex sint iusto. Illum, repudiandae id consequatur facere molestiae itaque asperiores.
{/* DONATE BUTTON */}

If you like what we do :)

); } export default SettingsTab;