160 lines
6.0 KiB
JavaScript
160 lines
6.0 KiB
JavaScript
import { SettingsHelper, UiHelper } from "./settings/ComfyHelper.js";
|
|
|
|
export const API_PREFIX = "/SyntaxHighlighting";
|
|
export const settingsHelper = new SettingsHelper("SyntaxHighlighting");
|
|
const settingsDefinitions = [
|
|
{
|
|
name: "Textbox Colors",
|
|
category: ["Syntax Highlighting", "Textbox", "TextboxColors"],
|
|
defaultValue: "#559c22\n#229c57\n#229c8b\n#226f9c\n#22479c",
|
|
tooltip: "A list of either rgb or hex colors, one color per line.",
|
|
type: SettingsHelper.ST.MULTILINE,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Textbox Highlight Type",
|
|
category: ["Syntax Highlighting", "Textbox", "TextboxHighlightType"],
|
|
defaultValue: "strength",
|
|
tooltip:
|
|
"If strength, only the first and last colors will be used. If nesting, all colors will be used.",
|
|
type: SettingsHelper.ST.COMBO(
|
|
{ text: "Strength", value: "strength" },
|
|
{ text: "Nesting", value: "nesting" }
|
|
),
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Wildcard Highlighting",
|
|
category: ["Syntax Highlighting", "Textbox", "WildcardHighlighting"],
|
|
defaultValue: true,
|
|
tooltip: "Highlight wildcard sets enclosed in {} (e.g. Impact Pack wildcards).",
|
|
type: SettingsHelper.ST.BOOLEAN,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Wildcard Color",
|
|
category: ["Syntax Highlighting", "Textbox", "WildcardColor"],
|
|
defaultValue: "#c47900",
|
|
type: SettingsHelper.ST.COLORPICKER,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Comment Highlighting",
|
|
category: ["Syntax Highlighting", "Textbox", "CommentHighlighting"],
|
|
defaultValue: true,
|
|
tooltip: "Highlight lines starting with '#' as comments (e.g. Impact Pack comment syntax). Suppresses all other highlighting on that line.",
|
|
type: SettingsHelper.ST.BOOLEAN,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Comment Color",
|
|
category: ["Syntax Highlighting", "Textbox", "CommentColor"],
|
|
defaultValue: "#6a9955",
|
|
type: SettingsHelper.ST.COLORPICKER,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Tag Tooltips",
|
|
category: ["Syntax Highlighting", "Textbox", "TextboxTooltips"],
|
|
defaultValue: false,
|
|
tooltip:
|
|
"When hovering over a tag in a textbox, show the tag's tooltip.",
|
|
type: SettingsHelper.ST.BOOLEAN,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Favorite On Top",
|
|
category: ["Syntax Highlighting", "Combo", "FavoriteOnTop"],
|
|
defaultValue: true,
|
|
tooltip: "Put favorite items over all other items.",
|
|
type: SettingsHelper.ST.BOOLEAN,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Combo Highlight Color",
|
|
category: ["Syntax Highlighting", "Combo", "ComboHighlightColor"],
|
|
defaultValue: "#008000",
|
|
type: SettingsHelper.ST.COLORPICKER,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Preview Image Save Path",
|
|
category: [
|
|
"Syntax Highlighting",
|
|
"Preview Image",
|
|
"PreviewImageSavePath",
|
|
],
|
|
defaultValue: "./web/images",
|
|
type: SettingsHelper.ST.TEXT,
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Preview Image Hover Delay",
|
|
category: ["Syntax Highlighting", "Preview Image", "PreviewImageDelay"],
|
|
defaultValue: 200,
|
|
type: SettingsHelper.ST.SLIDER(0, 1000, 1),
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Preview Image Padding",
|
|
category: [
|
|
"Syntax Highlighting",
|
|
"Preview Image",
|
|
"PreviewImagePadding",
|
|
],
|
|
defaultValue: 20,
|
|
type: SettingsHelper.ST.SLIDER(0, 100, 1),
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Preview Image Side",
|
|
category: ["Syntax Highlighting", "Preview Image", "PreviewImageSide"],
|
|
defaultValue: "left",
|
|
type: SettingsHelper.ST.COMBO(
|
|
{ text: "Left", value: "left" },
|
|
{ text: "Right", value: "right" }
|
|
),
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Preview Image Size",
|
|
category: ["Syntax Highlighting", "Preview Image", "PreviewImageSize"],
|
|
defaultValue: 300,
|
|
type: SettingsHelper.ST.SLIDER(100, 1000, 10),
|
|
onChange: () => SettingsHelper.PresetOnChange.reloadSettings(),
|
|
},
|
|
{
|
|
name: "Index Images",
|
|
category: ["Syntax Highlighting", "Preview Image", "IndexImages"],
|
|
type: SettingsHelper.ST.BUTTON("Index Images", async () => {
|
|
const response = await fetch(`${API_PREFIX}/index`);
|
|
if (!response.ok) {
|
|
settingsHelper.uiHelper.addToast(
|
|
UiHelper.Severity.ERROR,
|
|
"Indexing Images Failed",
|
|
"",
|
|
5000
|
|
);
|
|
return;
|
|
}
|
|
|
|
const data = await response.json();
|
|
settingsHelper.uiHelper.addToast(
|
|
UiHelper.Severity.INFO,
|
|
"Indexing Images",
|
|
`Indexed ${data.count} images.`,
|
|
5000
|
|
);
|
|
SettingsHelper.PresetOnChange.reloadSettings();
|
|
}),
|
|
tooltip: "Update images available for preview.",
|
|
},
|
|
];
|
|
settingsHelper.addSettings(settingsDefinitions);
|
|
|
|
if (localStorage.getItem("SyntaxHighlighting.dev") === "true") {
|
|
const markdownTable =
|
|
settingsHelper.generateSettingsMarkdownTable(settingsDefinitions);
|
|
console.log(markdownTable);
|
|
}
|