Files

70 lines
2.6 KiB
JavaScript

import { app } from "../../../scripts/app.js";
import { settings } from "./state.js";
import { getWords } from "./state.js";
app.registerExtension({
name: "comfyui.prompt.snippets.settings",
async setup(app) {
const data = await getWords();
let categories = [];
if (data && data.categories && data.categories.length) {
categories = data.categories.sort((a, b) => b.localeCompare(a));
}
const setting_debug = app.ui.settings.addSetting({
id: "promptsnippets.debugOutput",
name: "CPS: Enable debug logging to console",
defaultValue: false,
type: "boolean",
onChange: (value) => {
settings.debugOutput = value;
},
});
const setting_trigger = app.ui.settings.addSetting({
id: "promptsnippets.triggerCharacter",
name: "CPS: Trigger character for autocomplete",
defaultValue: "@",
type: "text",
onChange: (value) => {
settings.triggerCharacter = value;
},
});
const disabledCategoriesSetting = app.ui.settings.addSetting({
id: "promptsnippets.disabledCategories",
name: "CPS: Disabled Categories",
defaultValue: [],
type: "hidden",
});
// Storing the initial values (these are already handled by onChange and defaultValue, but keeping for clarity)
settings.debugOutput = setting_debug.value;
settings.triggerCharacter = setting_trigger.value;
settings.disabledCategories = disabledCategoriesSetting.value;
for (const category of categories) {
app.ui.settings.addSetting({
id: `promptsnippets.category.${category}`,
name: `Category Toggle: ${category}`,
defaultValue: !settings.disabledCategories.includes(category),
type: "boolean",
onChange: (value) => {
const disabled = settings.disabledCategories;
const index = disabled.indexOf(category);
if (value) {
if (index > -1) {
disabled.splice(index, 1);
}
} else {
if (index === -1) {
disabled.push(category);
}
}
disabledCategoriesSetting.value = disabled;
settings.disabledCategories = disabled;
},
});
}
}
});