113 lines
3.3 KiB
JavaScript
113 lines
3.3 KiB
JavaScript
import { SettingUtils } from './sn0w.js';
|
|
import { app } from '../../../scripts/app.js';
|
|
import { api } from '../../../scripts/api.js';
|
|
|
|
async function fetchExtensionSettings() {
|
|
return SettingUtils.fetchApi("/extensions/ComfyUI-Sn0w-Scripts/settings/sn0w_settings.json");
|
|
}
|
|
|
|
const sn0wSettings = await fetchExtensionSettings();
|
|
|
|
/*
|
|
const settingUtils = new SettingUtils();
|
|
|
|
function updateLoraSorting(graphCanvas) {
|
|
setTimeout(() => {
|
|
let loraLoaders = sn0wSettings['loraLoaders'];
|
|
loraLoaders.forEach((loraLoader) => {
|
|
let node = null;
|
|
for (const graphNode of Object.values(graphCanvas.graph._nodes)) {
|
|
if (graphNode.type === loraLoader) {
|
|
node = graphNode;
|
|
break;
|
|
}
|
|
}
|
|
if (node) {
|
|
settingUtils.refreshComboInSingleNode(graphCanvas, loraLoader);
|
|
}
|
|
})
|
|
}, 50);
|
|
}
|
|
*/
|
|
|
|
const defaultValue = 'ExampleName1:Value1\nExampleName2:Value2';
|
|
const tooltip = 'Enter each name-value pair on a new line, separated by a colon (:).';
|
|
|
|
const settingsMap = {
|
|
'sn0w.CustomLoraLoaders1.5': 'loras_15',
|
|
'sn0w.CustomLoraLoadersXL': 'loras_xl',
|
|
'sn0w.CustomLoraLoaders3': 'loras_3',
|
|
};
|
|
|
|
const loraLoadersSettingsDefinitions = [
|
|
{
|
|
id: 'sn0w.CustomLoraLoadersXL',
|
|
name: '[Sn0w] Custom Lora Loaders SDXL',
|
|
type: SettingUtils.createMultilineSetting,
|
|
defaultValue: defaultValue,
|
|
attrs: { tooltip: tooltip },
|
|
},
|
|
{
|
|
id: 'sn0w.CustomLoraLoaders1.5',
|
|
name: '[Sn0w] Custom Lora Loaders SD 1.5',
|
|
type: SettingUtils.createMultilineSetting,
|
|
defaultValue: defaultValue,
|
|
attrs: { tooltip: tooltip },
|
|
},
|
|
{
|
|
id: 'sn0w.CustomLoraLoaders3',
|
|
name: '[Sn0w] Custom Lora Loaders SD3',
|
|
type: SettingUtils.createMultilineSetting,
|
|
defaultValue: defaultValue,
|
|
attrs: { tooltip: tooltip },
|
|
},
|
|
];
|
|
|
|
const loraSettingsDefinitions = [
|
|
{
|
|
id: 'sn0w.SortLorasBy',
|
|
name: '[Sn0w] Sort Loras By',
|
|
defaultValue: "alphabetical",
|
|
options: [
|
|
{ text: 'Alphabetical', value: 'alphabetical' },
|
|
{ text: 'Last Changed', value: 'last_changed' },
|
|
],
|
|
type: 'combo',
|
|
},
|
|
{
|
|
id: 'sn0w.RemoveLoraPath',
|
|
name: '[Sn0w] Remove Lora Path',
|
|
defaultValue: false,
|
|
type: 'boolean',
|
|
},
|
|
]
|
|
|
|
const registerSetting = (settingDefinition) => {
|
|
const extension = {
|
|
name: settingDefinition.id,
|
|
init() {
|
|
const setting = app.ui.settings.addSetting({
|
|
id: settingDefinition.id,
|
|
name: settingDefinition.name,
|
|
type: settingDefinition.type,
|
|
defaultValue: settingDefinition.defaultValue,
|
|
attrs: settingDefinition.attrs,
|
|
options: settingDefinition.options,
|
|
onChange: settingDefinition.onChange,
|
|
});
|
|
},
|
|
};
|
|
app.registerExtension(extension);
|
|
};
|
|
|
|
// Register settings
|
|
loraLoadersSettingsDefinitions.forEach((setting) => {
|
|
if (sn0wSettings['loaders_enabled'].includes(settingsMap[setting.id])) {
|
|
registerSetting(setting);
|
|
}
|
|
});
|
|
|
|
loraSettingsDefinitions.forEach((setting) => {
|
|
registerSetting(setting);
|
|
});
|