diff --git a/.prettierignore b/.prettierignore
index ac336ae..37b9bf0 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,3 +1,9 @@
server/python_server/output/*
*.md
-manifest.json
\ No newline at end of file
+manifest.json
+jimp/**
+server_env/**
+.github\workflows\wiki-sync-action.yml
+**/dist
+.github\workflows\wiki-sync-action.yml
+tsconfig.json
\ No newline at end of file
diff --git a/index.html b/index.html
index cef182f..5efd63b 100644
--- a/index.html
+++ b/index.html
@@ -991,7 +991,6 @@
-
{
try {
_log(data, ...optional_param)
-
+
// const error = new Error({ data, ...optional_param });
- const formattedOutput = logger.formateLog(data,...optional_param)
- io.IOLog.saveLogToFile({log:formattedOutput }, 'log.txt')
-
- } catch (e) {
+ const formattedOutput = logger.formateLog(data, ...optional_param)
+ io.IOLog.saveLogToFile({ log: formattedOutput }, 'log.txt')
+ } catch (e) {
_warn('error while logging: ')
_warn(e)
}
-
}
console.warn = (data, ...optional_param) => {
try {
- _warn(data, ...optional_param);
- const error = new Error();
- const stackTrace = error.stack;
- const formattedOutput = logger.formateLog(data,...optional_param)
- io.IOLog.saveLogToFile({ warning: formattedOutput,stackTrace }, 'log.txt');
+ _warn(data, ...optional_param)
+ const error = new Error()
+ const stackTrace = error.stack
+ const formattedOutput = logger.formateLog(data, ...optional_param)
+ io.IOLog.saveLogToFile(
+ { warning: formattedOutput, stackTrace },
+ 'log.txt'
+ )
} catch (e) {
- _warn('error while logging: ');
- _warn(e);
+ _warn('error while logging: ')
+ _warn(e)
}
}
-
-
+
console.error = (data, ...optional_param) => {
try {
- _error(data, ...optional_param);
- const error = new Error();
- const stackTrace = error.stack;
- const formattedOutput = logger.formateLog(data,...optional_param)
- io.IOLog.saveLogToFile({ error: formattedOutput,stackTrace }, 'log.txt');
+ _error(data, ...optional_param)
+ const error = new Error()
+ const stackTrace = error.stack
+ const formattedOutput = logger.formateLog(data, ...optional_param)
+ io.IOLog.saveLogToFile(
+ { error: formattedOutput, stackTrace },
+ 'log.txt'
+ )
} catch (e) {
- _error('error while logging: ');
- _error(e);
+ _error('error while logging: ')
+ _error(e)
}
-
}
}
-
-
-
-
-
-
-
-
-
-
-
-
// const ultimate_sd_upscaler_script_test = require('./ultimate_sd_upscaler/dist/main')
// const {
@@ -4817,4 +4810,4 @@ Array.from(document.querySelectorAll('.rbSubTab')).forEach((rb) => {
// this.shadowRoot.innerHTML = '
Hello World!
'
// }
// }
-// customElements.define('custom-element', CustomElement)
\ No newline at end of file
+// customElements.define('custom-element', CustomElement)
diff --git a/sdapi_py_re.js b/sdapi_py_re.js
index 2079602..8b96c91 100644
--- a/sdapi_py_re.js
+++ b/sdapi_py_re.js
@@ -4,11 +4,8 @@ const { getExtensionType } = require('./utility/html_manip')
const py_re = require('./utility/sdapi/python_replacement')
const Enum = require('./enum')
const { control_net } = require('./typescripts/dist/bundle')
-const {
- mapPluginSettingsToControlNet,
- getEnableControlNet,
- getModuleDetail,
-} = control_net
+const { mapPluginSettingsToControlNet, getEnableControlNet, getModuleDetail } =
+ control_net
const api = require('./utility/api')
//javascript plugin can't read images from local directory so we send a request to local server to read the image file and send it back to plugin as image string base64
@@ -483,13 +480,13 @@ async function requestControlNetTxt2Img(plugin_settings) {
app.showAlert('you need to select a valid ControlNet Module')
throw 'you need to select a valid ControlNet Module'
}
-
+
if (
- !control_net_settings['controlnet_units'][index]['model'] &&
- !getModuleDetail()[
- control_net_settings['controlnet_units'][index]['module']
- ].model_free
- || control_net_settings['controlnet_units'][index]['model'] === 'none'
+ (!control_net_settings['controlnet_units'][index]['model'] &&
+ !getModuleDetail()[
+ control_net_settings['controlnet_units'][index]['module']
+ ].model_free) ||
+ control_net_settings['controlnet_units'][index]['model'] === 'none'
) {
app.showAlert('you need to select a valid ControlNet Model')
throw 'you need to select a valid ControlNet Model'
@@ -525,10 +522,7 @@ async function requestControlNetTxt2Img(plugin_settings) {
mask_index >= numberOfAnnotations
)
continue
- control_net.setControlMaskSrc(
- base64_mask[mask_index],
- index
- )
+ control_net.setControlMaskSrc(base64_mask[mask_index], index)
g_generation_session.controlNetMask[index] = base64_mask[mask_index]
mask_index++
}
@@ -569,10 +563,10 @@ async function requestControlNetImg2Img(plugin_settings) {
throw 'you need to select a valid ControlNet Module'
}
if (
- !control_net_settings['controlnet_units'][index]['model'] &&
- !getModuleDetail()[
- control_net_settings['controlnet_units'][index]['module']
- ].model_free ||
+ (!control_net_settings['controlnet_units'][index]['model'] &&
+ !getModuleDetail()[
+ control_net_settings['controlnet_units'][index]['module']
+ ].model_free) ||
control_net_settings['controlnet_units'][index]['model'] === 'none'
) {
app.showAlert('you need to select a valid ControlNet Model')
@@ -618,10 +612,7 @@ async function requestControlNetImg2Img(plugin_settings) {
mask_index >= numberOfAnnotations
)
continue
- control_net.setControlMaskSrc(
- base64_mask[mask_index],
- index
- )
+ control_net.setControlMaskSrc(base64_mask[mask_index], index)
g_generation_session.controlNetMask[index] = base64_mask[mask_index]
mask_index++
}
diff --git a/typescripts/@types/custom.d.ts b/typescripts/@types/custom.d.ts
index ad8db2e..1028c74 100644
--- a/typescripts/@types/custom.d.ts
+++ b/typescripts/@types/custom.d.ts
@@ -1,6 +1,8 @@
declare module '*.svg' {
- import React = require('react');
- export const ReactComponent: React.FunctionComponent
>;
- const src: string;
- export default src;
+ import React = require('react')
+ export const ReactComponent: React.FunctionComponent<
+ React.SVGProps
+ >
+ const src: string
+ export default src
}
diff --git a/typescripts/@types/sdapi_py_re.d.ts b/typescripts/@types/sdapi_py_re.d.ts
index 337cdc7..3f901e5 100644
--- a/typescripts/@types/sdapi_py_re.d.ts
+++ b/typescripts/@types/sdapi_py_re.d.ts
@@ -1,5 +1,4 @@
-
declare module 'sdapi_py_re' {
- const exports: any;
- export = exports;
+ const exports: any
+ export = exports
}
diff --git a/typescripts/@types/uxp.d.ts b/typescripts/@types/uxp.d.ts
index 3d65465..151d550 100644
--- a/typescripts/@types/uxp.d.ts
+++ b/typescripts/@types/uxp.d.ts
@@ -1,5 +1,5 @@
declare module 'uxp' {
- // Add type declarations for the uxp module here
- export const storage: any;
- export const versions: any;
+ // Add type declarations for the uxp module here
+ export const storage: any
+ export const versions: any
}
diff --git a/typescripts/after_detailer/after_detailer.tsx b/typescripts/after_detailer/after_detailer.tsx
index 8098936..12680b2 100644
--- a/typescripts/after_detailer/after_detailer.tsx
+++ b/typescripts/after_detailer/after_detailer.tsx
@@ -4,11 +4,7 @@ import ReactDOM from 'react-dom/client'
// import { action, makeAutoObservable, reaction, toJS } from 'mobx'
import { observer } from 'mobx-react'
-import {
- SliderType,
- SpMenu,
- SpSliderWithLabel,
-} from '../util/elements'
+import { SliderType, SpMenu, SpSliderWithLabel } from '../util/elements'
// import * as sdapi from '../../sdapi_py_re'
import { api } from '../util/oldSystem'
import { AStore } from '../main/astore'
diff --git a/typescripts/after_detailer/config.ts b/typescripts/after_detailer/config.ts
index 5fd2bbd..9175e4b 100644
--- a/typescripts/after_detailer/config.ts
+++ b/typescripts/after_detailer/config.ts
@@ -9,7 +9,7 @@ export const model_list = [
'person_yolov8n-seg.pt',
'person_yolov8s-seg.pt',
- 'None'
+ 'None',
]
export let ui_config = {
ad_model: {
diff --git a/typescripts/after_detailer/style/after_detailer.css b/typescripts/after_detailer/style/after_detailer.css
index 6a17902..89e93ad 100644
--- a/typescripts/after_detailer/style/after_detailer.css
+++ b/typescripts/after_detailer/style/after_detailer.css
@@ -25,4 +25,4 @@
.triangle {
background-color: transparent;
-}
\ No newline at end of file
+}
diff --git a/typescripts/controlnet/ControlNetTab.tsx b/typescripts/controlnet/ControlNetTab.tsx
index 8185b7f..446d5a4 100644
--- a/typescripts/controlnet/ControlNetTab.tsx
+++ b/typescripts/controlnet/ControlNetTab.tsx
@@ -1,56 +1,81 @@
-import { observer } from 'mobx-react';
-import React from 'react';
-import ControlNetUnit from './ControlNetUnit';
-import { store as ControlNetStore } from './main';
-import { DefaultControlNetUnitData } from './store';
-import { Enum, controlnet_preset, note, preset, selection } from '../util/oldSystem';
-import {SpMenuComponent} from '../util/elements';
+import { observer } from 'mobx-react'
+import React from 'react'
+import ControlNetUnit from './ControlNetUnit'
+import { store as ControlNetStore } from './main'
+import { DefaultControlNetUnitData } from './store'
+import {
+ Enum,
+ controlnet_preset,
+ note,
+ preset,
+ selection,
+} from '../util/oldSystem'
+import { SpMenuComponent } from '../util/elements'
-let g_controlnet_presets: any;
-declare const g_generation_session: any;
+let g_controlnet_presets: any
+declare const g_generation_session: any
@observer
-class ControlNetTab extends React.Component<{ appState: typeof ControlNetStore }>{
+class ControlNetTab extends React.Component<{
+ appState: typeof ControlNetStore
+}> {
state = {
maxControlNet: 0,
- presetMenuChildren: []
+ presetMenuChildren: [],
}
// private presetMenuChildren: JSX.Element[] = []
onPresetMenuChange(evt: any) {
-
const preset_index = evt.target.selectedIndex
const preset_name = evt.target.options[preset_index].textContent
ControlNetStore.controlNetUnitData.forEach((dataitem, index) => {
const presetData = g_controlnet_presets[preset_name][index] || {}
- dataitem.enabled = presetData.enabled || DefaultControlNetUnitData.enabled
- dataitem.input_image = presetData.input_image || DefaultControlNetUnitData.input_image
+ dataitem.enabled =
+ presetData.enabled || DefaultControlNetUnitData.enabled
+ dataitem.input_image =
+ presetData.input_image || DefaultControlNetUnitData.input_image
dataitem.mask = presetData.mask || DefaultControlNetUnitData.mask
- dataitem.module = presetData.module || DefaultControlNetUnitData.module
+ dataitem.module =
+ presetData.module || DefaultControlNetUnitData.module
dataitem.model = presetData.model || DefaultControlNetUnitData.model
- dataitem.weight = presetData.weight || DefaultControlNetUnitData.weight
- dataitem.resize_mode = presetData.resize_mode || DefaultControlNetUnitData.resize_mode
- dataitem.lowvram = presetData.lowvram || DefaultControlNetUnitData.lowvram
- dataitem.processor_res = presetData.processor_res || DefaultControlNetUnitData.processor_res
- dataitem.threshold_a = presetData.threshold_a || DefaultControlNetUnitData.threshold_a
- dataitem.threshold_b = presetData.threshold_b || DefaultControlNetUnitData.threshold_b
- dataitem.guidance_start = presetData.guidance_start || DefaultControlNetUnitData.guidance_start
- dataitem.guidance_end = presetData.guidance_end || DefaultControlNetUnitData.guidance_end
- dataitem.guessmode = presetData.guessmode || DefaultControlNetUnitData.guessmode
+ dataitem.weight =
+ presetData.weight || DefaultControlNetUnitData.weight
+ dataitem.resize_mode =
+ presetData.resize_mode || DefaultControlNetUnitData.resize_mode
+ dataitem.lowvram =
+ presetData.lowvram || DefaultControlNetUnitData.lowvram
+ dataitem.processor_res =
+ presetData.processor_res ||
+ DefaultControlNetUnitData.processor_res
+ dataitem.threshold_a =
+ presetData.threshold_a || DefaultControlNetUnitData.threshold_a
+ dataitem.threshold_b =
+ presetData.threshold_b || DefaultControlNetUnitData.threshold_b
+ dataitem.guidance_start =
+ presetData.guidance_start ||
+ DefaultControlNetUnitData.guidance_start
+ dataitem.guidance_end =
+ presetData.guidance_end ||
+ DefaultControlNetUnitData.guidance_end
+ dataitem.guessmode =
+ presetData.guessmode || DefaultControlNetUnitData.guessmode
- dataitem.control_mode = presetData.control_mode || DefaultControlNetUnitData.control_mode
- dataitem.pixel_perfect = presetData.pixel_perfect || DefaultControlNetUnitData.pixel_perfect
+ dataitem.control_mode =
+ presetData.control_mode ||
+ DefaultControlNetUnitData.control_mode
+ dataitem.pixel_perfect =
+ presetData.pixel_perfect ||
+ DefaultControlNetUnitData.pixel_perfect
})
}
- // function to update presetMenuChildren
- updatePresetMenuChildren(newChildren:any) {
- this.setState({ presetMenuChildren: newChildren });
- }
+ // function to update presetMenuChildren
+ updatePresetMenuChildren(newChildren: any) {
+ this.setState({ presetMenuChildren: newChildren })
+ }
async updatePresetMenuEvent() {
-
const custom_presets = await preset.getAllCustomPresetsSettings(
Enum.PresetTypeEnum['ControlNetPreset']
)
@@ -63,11 +88,26 @@ class ControlNetTab extends React.Component<{ appState: typeof ControlNetStore }
const presets_names = Object.keys(g_controlnet_presets)
// debugger;
- const presetMenuChildren = presets_names.map(preset_name => {
- if (preset_name == "Select CtrlNet Preset")
- return {preset_name}
+ const presetMenuChildren = presets_names.map((preset_name) => {
+ if (preset_name == 'Select CtrlNet Preset')
+ return (
+
+ {preset_name}
+
+ )
else
- return {preset_name}
+ return (
+
+ {preset_name}
+
+ )
})
this.updatePresetMenuChildren(presetMenuChildren)
}
@@ -75,7 +115,8 @@ class ControlNetTab extends React.Component<{ appState: typeof ControlNetStore }
async onSetAllControlImage() {
const selectionInfo = await selection.Selection.getSelectionInfoExe()
if (selectionInfo) {
- const base64_image = await g_generation_session.setControlNetImageHelper()
+ const base64_image =
+ await g_generation_session.setControlNetImageHelper()
ControlNetStore.controlNetUnitData.forEach(async (data) => {
data.input_image = base64_image
@@ -101,22 +142,23 @@ class ControlNetTab extends React.Component<{ appState: typeof ControlNetStore }
id="mControlNetPresetMenu"
value="Select CtrlNet Preset"
onChange={this.onPresetMenuChange.bind(this)}
- onUpdatePresetMenuEvent={this.updatePresetMenuEvent.bind(this)}
+ onUpdatePresetMenuEvent={this.updatePresetMenuEvent.bind(
+ this
+ )}
>
- {this.state.presetMenuChildren.map(child => child)}
+ {this.state.presetMenuChildren.map((child) => child)}
- {
- this.props.appState.maxControlNet == 0 && (
-
- The Controlnet Extension is missing from Automatic1111.
- Please install it to use it through the plugin.
- )
- }
+ {this.props.appState.maxControlNet == 0 && (
+
+ The Controlnet Extension is missing from Automatic1111.
+ Please install it to use it through the plugin.
+
+ )}
- Disable ControlNet Tab
+
+ Disable ControlNet Tab
+
-
- {
- Array(this.props.appState.maxControlNet * 2).fill(0).map((v, index) => {
- if (index % 2 == 0) {
- return
- }
- else {
- return
- }
- })
- }
+ {Array(this.props.appState.maxControlNet * 2)
+ .fill(0)
+ .map((v, index) => {
+ if (index % 2 == 0) {
+ return (
+
+
+
+
+
+ )
+ } else {
+ return (
+
+ )
+ }
+ })}
- );
+ )
}
}
-
-export default ControlNetTab;
+export default ControlNetTab
diff --git a/typescripts/controlnet/ControlNetUnit.tsx b/typescripts/controlnet/ControlNetUnit.tsx
index 5bd607f..ca1e938 100644
--- a/typescripts/controlnet/ControlNetUnit.tsx
+++ b/typescripts/controlnet/ControlNetUnit.tsx
@@ -1,107 +1,168 @@
-import { observer } from 'mobx-react';
-import React from 'react';
-import { MoveToCanvasSvg,ActionButtonSVG, SpCheckBox, SpMenu, SpSlider, Thumbnail, PenSvg, PreviewSvg } from '../util/elements';
-import ControlNetStore from './store';
-import { mapRange, versionCompare } from './util';
-import { note, selection, html_manip, psapi,api, general } from '../util/oldSystem';
-
-
-declare const g_generation_session: any;
-declare const io: any;
-declare const app: any;
-declare let g_sd_url: string;
+import { observer } from 'mobx-react'
+import React from 'react'
+import {
+ MoveToCanvasSvg,
+ ActionButtonSVG,
+ SpCheckBox,
+ SpMenu,
+ SpSlider,
+ Thumbnail,
+ PenSvg,
+ PreviewSvg,
+} from '../util/elements'
+import ControlNetStore from './store'
+import { mapRange, versionCompare } from './util'
+import {
+ note,
+ selection,
+ html_manip,
+ psapi,
+ api,
+ general,
+} from '../util/oldSystem'
+declare const g_generation_session: any
+declare const io: any
+declare const app: any
+declare let g_sd_url: string
@observer
-export default class ControlNetUnit extends React.Component<{ index: number, appState: typeof ControlNetStore }, {}> {
-
+export default class ControlNetUnit extends React.Component<
+ { index: number; appState: typeof ControlNetStore },
+ {}
+> {
onEnableChange(event: any) {
event.preventDefault()
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.enabled = !storeData.enabled;
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.enabled = !storeData.enabled
}
onLowVRamChange(event: any) {
event.preventDefault()
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.lowvram = !storeData.lowvram;
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.lowvram = !storeData.lowvram
}
onGuessModeChange(event: any) {
event.preventDefault()
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.guessmode = !storeData.guessmode;
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.guessmode = !storeData.guessmode
}
onPixelPerfectChange(event: any) {
event.preventDefault()
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- console.log('onPixelPerfectChange', storeData.pixel_perfect);
- storeData.pixel_perfect = !storeData.pixel_perfect;
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ console.log('onPixelPerfectChange', storeData.pixel_perfect)
+ storeData.pixel_perfect = !storeData.pixel_perfect
}
onWeightMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.weight = +mapRange(event.target.value, 0, 200, 0, 2, 0.01).toFixed(2);
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.weight = +mapRange(
+ event.target.value,
+ 0,
+ 200,
+ 0,
+ 2,
+ 0.01
+ ).toFixed(2)
}
onGuidanceStartMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.guidance_start = +mapRange(event.target.value, 0, 10, 0, 1, 0.1).toFixed(1);
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.guidance_start = +mapRange(
+ event.target.value,
+ 0,
+ 10,
+ 0,
+ 1,
+ 0.1
+ ).toFixed(1)
}
onGuidanceEndMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- storeData.guidance_end = +mapRange(event.target.value, 0, 10, 0, 1, 0.1).toFixed(1);
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ storeData.guidance_end = +mapRange(
+ event.target.value,
+ 0,
+ 10,
+ 0,
+ 1,
+ 0.1
+ ).toFixed(1)
}
- onPreprocsesorChange(event: any, { index, item }: { index: number, item: string }) {
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
+ onPreprocsesorChange(
+ event: any,
+ { index, item }: { index: number; item: string }
+ ) {
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
storeData.module = item
}
- onModelChange(event: any, { index, item }: { index: number, item: string }) {
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
+ onModelChange(
+ event: any,
+ { index, item }: { index: number; item: string }
+ ) {
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
storeData.model = item
}
onResolutionMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- let resolutionConfig = this.props.appState.preprocessorDetail[storeData.module] || {};
- let sliderConfig = resolutionConfig.sliders[0];
- storeData.processor_res = +(event.target.value * (sliderConfig.step || 1));
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ let resolutionConfig =
+ this.props.appState.preprocessorDetail[storeData.module] || {}
+ let sliderConfig = resolutionConfig.sliders[0]
+ storeData.processor_res = +(
+ event.target.value * (sliderConfig.step || 1)
+ )
}
onThresholdAMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- let resolutionConfig = this.props.appState.preprocessorDetail[storeData.module] || {};
- let sliderConfig = resolutionConfig.sliders[1];
- storeData.threshold_a = +(event.target.value * (sliderConfig.step || 1));
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ let resolutionConfig =
+ this.props.appState.preprocessorDetail[storeData.module] || {}
+ let sliderConfig = resolutionConfig.sliders[1]
+ storeData.threshold_a = +(event.target.value * (sliderConfig.step || 1))
}
onThresholdBMove(event: any) {
event.preventDefault()
- if (event.target.tagName != 'SP-SLIDER') return;
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- let resolutionConfig = this.props.appState.preprocessorDetail[storeData.module] || {};
- let sliderConfig = resolutionConfig.sliders[2];
- storeData.threshold_b = +(event.target.value * (sliderConfig.step || 1));
+ if (event.target.tagName != 'SP-SLIDER') return
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ let resolutionConfig =
+ this.props.appState.preprocessorDetail[storeData.module] || {}
+ let sliderConfig = resolutionConfig.sliders[2]
+ storeData.threshold_b = +(event.target.value * (sliderConfig.step || 1))
}
async onSetImageButtonClick() {
const selectionInfo = await selection.Selection.getSelectionInfoExe()
if (selectionInfo) {
- const base64_image = await g_generation_session.setControlNetImageHelper()
+ const base64_image =
+ await g_generation_session.setControlNetImageHelper()
- this.props.appState.controlNetUnitData[this.props.index].input_image = base64_image
+ this.props.appState.controlNetUnitData[
+ this.props.index
+ ].input_image = base64_image
} else {
await note.Notification.inactiveSelectionArea()
}
}
async onMaskButtonClick() {
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- if (
- g_generation_session.control_net_selection_info &&
- storeData.mask
- ) {
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ if (g_generation_session.control_net_selection_info && storeData.mask) {
const selection_info =
g_generation_session.control_net_selection_info
const layer = await io.IO.base64ToLayer(
@@ -119,11 +180,11 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
}
async requestControlNetDetectMap(
- controlnet_init_image:string,
- _module:string,
- processor_res:number,
- threshold_a:number,
- threshold_b:number
+ controlnet_init_image: string,
+ _module: string,
+ processor_res: number,
+ threshold_a: number,
+ threshold_b: number
) {
try {
const payload = {
@@ -134,9 +195,9 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
controlnet_threshold_b: threshold_b,
}
const full_url = `${g_sd_url}/controlnet/detect`
-
+
const response_data = await api.requestPost(full_url, payload)
-
+
// update the mask preview with the new detectMap
if (response_data['images'].length === 0) {
app.showAlert(response_data['info'])
@@ -146,19 +207,18 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
console.warn('requestControlNetDetectMap(): ', _module, e)
}
}
-
- async previewAnnotator() {
+ async previewAnnotator() {
const index = this.props.index
try {
- const storeData = this.props.appState.controlNetUnitData[index];
-
+ const storeData = this.props.appState.controlNetUnitData[index]
+
const controlnet_init_image = storeData.input_image
-
- const _module = storeData.module || 'none';
- const processor_res = storeData.processor_res
- const threshold_a = storeData.threshold_a
- const threshold_b = storeData.threshold_b
+
+ const _module = storeData.module || 'none'
+ const processor_res = storeData.processor_res
+ const threshold_a = storeData.threshold_a
+ const threshold_b = storeData.threshold_b
if (!controlnet_init_image) {
const error = 'ControlNet initial image is empty'
@@ -170,7 +230,7 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
app.showAlert(error)
throw error
}
-
+
const detect_map = await this.requestControlNetDetectMap(
controlnet_init_image,
_module,
@@ -178,19 +238,18 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
threshold_a,
threshold_b
)
-
+
const rgb_detect_map_url =
await io.convertBlackAndWhiteImageToRGBChannels3(detect_map)
const rgb_detect_map = general.base64UrlToBase64(rgb_detect_map_url)
g_generation_session.controlNetMask[index] = rgb_detect_map
-
+
storeData.mask = rgb_detect_map
-
} catch (e) {
console.warn('PreviewAnnotator click(): index: ', index, e)
}
}
- async toCanvas() {
+ async toCanvas() {
if (
g_generation_session.control_net_preview_selection_info &&
g_generation_session.controlNetMask[this.props.index]
@@ -211,8 +270,10 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
}
}
async toControlNetInitImage() {
- const preview_result_base64 = g_generation_session.controlNetMask[this.props.index]
- g_generation_session.controlNetImage[this.props.index] = preview_result_base64
+ const preview_result_base64 =
+ g_generation_session.controlNetMask[this.props.index]
+ g_generation_session.controlNetImage[this.props.index] =
+ preview_result_base64
g_generation_session.control_net_selection_info =
g_generation_session.control_net_preview_selection_info
@@ -224,36 +285,40 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
// g_generation_session.controlNetMask[index] = rgb_detect_map
// html_manip.setControlImageSrc(rgb_detect_map_url, this.props.index)
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
-
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+
storeData.input_image = storeData.mask
}
- async previewAnnotatorFromCanvas() {
+ async previewAnnotatorFromCanvas() {
try {
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- const _module = storeData.module || 'none';
-
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ const _module = storeData.module || 'none'
+
const width = html_manip.getWidth()
const height = html_manip.getHeight()
const selectionInfo = await psapi.getSelectionInfoExe()
- g_generation_session.control_net_preview_selection_info = selectionInfo
- const base64 = await io.IO.getSelectionFromCanvasAsBase64Interface_New(
- width,
- height,
- selectionInfo,
- true
- )
-
+ g_generation_session.control_net_preview_selection_info =
+ selectionInfo
+ const base64 =
+ await io.IO.getSelectionFromCanvasAsBase64Interface_New(
+ width,
+ height,
+ selectionInfo,
+ true
+ )
+
if (!_module || _module === 'none') {
const error = 'select a valid controlnet module (preprocessor)'
app.showAlert(error)
throw error
}
-
+
const processor_res = storeData.processor_res
const threshold_a = storeData.threshold_a
const threshold_b = storeData.threshold_b
-
+
const detect_map = await this.requestControlNetDetectMap(
base64,
_module,
@@ -261,203 +326,341 @@ export default class ControlNetUnit extends React.Component<{ index: number, app
threshold_a,
threshold_b
)
-
+
const rgb_detect_map_url =
await io.convertBlackAndWhiteImageToRGBChannels3(detect_map)
g_generation_session.controlNetMask[this.props.index] = detect_map
-
+
storeData.mask = general.base64UrlToBase64(rgb_detect_map_url)
} catch (e) {
- console.warn('PreviewAnnotator click(): index: ', this.props.index, e)
+ console.warn(
+ 'PreviewAnnotator click(): index: ',
+ this.props.index,
+ e
+ )
}
}
render() {
- const storeData = this.props.appState.controlNetUnitData[this.props.index];
- const pd = this.props.appState.preprocessorDetail[storeData.module] || {};
- const ppSlider = pd.sliders || [];
+ const storeData =
+ this.props.appState.controlNetUnitData[this.props.index]
+ const pd =
+ this.props.appState.preprocessorDetail[storeData.module] || {}
+ const ppSlider = pd.sliders || []
- console.log("pixel_perfect:" + storeData.pixel_perfect);
+ console.log('pixel_perfect:' + storeData.pixel_perfect)
- return