(negativePromptRef, () => {
if (negativePromptRef?.current) {
const input = negativePromptRef.current as HTMLInputElement
input.blur()
}
})
const onKeyUp = (e: React.KeyboardEvent) => {
// negativePrompt 回车触发 inpainting
if (e.key === "Enter" && e.ctrlKey && settings.prompt.length !== 0) {
runInpainting()
}
}
const renderCropper = () => {
return (
{
updateSettings({ showCropper: value })
if (value) {
updateSettings({ showExtender: false })
}
}}
/>
)
}
const renderConterNetSetting = () => {
if (!settings.model.support_controlnet) {
return null
}
return (
{
updateSettings({ enableControlnet: value })
}}
/>
updateSettings({ controlnetConditioningScale: vals[0] / 100 })
}
/>
{
updateSettings({ controlnetConditioningScale: val })
}}
/>
)
}
const renderLCMLora = () => {
if (!settings.model.support_lcm_lora) {
return null
}
return (
<>
{
updateSettings({ enableLCMLora: value })
}}
/>
>
)
}
const renderFreeu = () => {
if (!settings.model.support_freeu) {
return null
}
return (
{
updateSettings({ enableFreeu: value })
}}
/>
{
updateSettings({
freeuConfig: { ...settings.freeuConfig, s1: value },
})
}}
/>
{
updateSettings({
freeuConfig: { ...settings.freeuConfig, s2: value },
})
}}
/>
{
updateSettings({
freeuConfig: { ...settings.freeuConfig, b1: value },
})
}}
/>
{
updateSettings({
freeuConfig: { ...settings.freeuConfig, b2: value },
})
}}
/>
)
}
const renderNegativePrompt = () => {
if (!settings.model.need_prompt) {
return null
}
return (
)
}
const renderPaintByExample = () => {
if (settings.model.name !== PAINT_BY_EXAMPLE) {
return null
}
return (
{
updateAppState({ paintByExampleFile: file })
}}
>
{isExampleImageLoaded ? (
) : (
<>>
)}
)
}
const renderP2PImageGuidanceScale = () => {
if (settings.model.name !== INSTRUCT_PIX2PIX) {
return null
}
return (
updateSettings({ p2pImageGuidanceScale: vals[0] / 100 })
}
/>
{
updateSettings({ p2pImageGuidanceScale: val })
}}
/>
)
}
const renderStrength = () => {
if (!settings.model.support_strength) {
return null
}
return (
updateSettings({ sdStrength: vals[0] / 100 })
}
/>
{
updateSettings({ sdStrength: val })
}}
/>
)
}
const renderExtender = () => {
if (!settings.model.support_outpainting) {
return null
}
return (
<>
{
updateSettings({ showExtender: value })
if (value) {
updateSettings({ showCropper: false })
}
}}
/>
updateExtenderByBuiltIn(settings.extenderDirection, 1.25)
}
/>
updateExtenderByBuiltIn(settings.extenderDirection, 1.5)
}
/>
updateExtenderByBuiltIn(settings.extenderDirection, 1.75)
}
/>
updateExtenderByBuiltIn(settings.extenderDirection, 2.0)
}
/>
>
)
}
const renderPowerPaintTaskType = () => {
if (settings.model.name !== POWERPAINT) {
return null
}
return (
)
}
const renderSteps = () => {
return (
updateSettings({ sdSteps: vals[0] })}
/>
{
updateSettings({ sdSteps: val })
}}
/>
)
}
const renderGuidanceScale = () => {
return (
updateSettings({ sdGuidanceScale: vals[0] / 100 })
}
/>
{
updateSettings({ sdGuidanceScale: val })
}}
/>
)
}
const renderSampler = () => {
return (
)
}
const renderSeed = () => {
return (
{/* 每次会从服务器返回更新该值 */}
{/* */}
{
updateSettings({ seedFixed: value })
}}
/>
{
updateSettings({ seed: val })
}}
/>
)
}
const renderMaskBlur = () => {
return (
updateSettings({ sdMaskBlur: vals[0] })}
/>
{
updateSettings({ sdMaskBlur: value })
}}
/>
)
}
const renderMatchHistograms = () => {
return (
<>
{
updateSettings({ sdMatchHistograms: value })
}}
/>
>
)
}
const renderMaskAdjuster = () => {
return (
<>
updateSettings({ adjustMaskKernelSize: vals[0] })
}
/>
{
updateSettings({ adjustMaskKernelSize: val })
}}
/>
>
)
}
return (
{renderCropper()}
{renderExtender()}
{renderMaskAdjuster()}
{renderPowerPaintTaskType()}
{renderSteps()}
{renderGuidanceScale()}
{renderP2PImageGuidanceScale()}
{renderStrength()}
{renderSampler()}
{renderSeed()}
{renderNegativePrompt()}
{renderConterNetSetting()}
{renderLCMLora()}
{renderMaskBlur()}
{renderMatchHistograms()}
{renderFreeu()}
{renderPaintByExample()}
)
}
export default DiffusionOptions