Peter-Young's picture
Upload folder using huggingface_hub
5193146 verified
import { app } from "../../../scripts/app.js";
import { $el } from "../../../scripts/ui.js";
import { ConfigSetting, addJNodesSetting } from "./common/SettingsManager.js"
class CustomizationConfigSetting extends ConfigSetting {
constructor(settingName, defaultValue) {
super("Customization." + settingName, defaultValue);
}
}
export let setting_FontSize = new CustomizationConfigSetting("MultilineText.Font.Size", 80);
export let setting_FontFamily = new CustomizationConfigSetting("MultilineText.Font.Family", 'monospace');
function setTextAreaFontSize(textarea, size) {
textarea.style.fontSize = size.toString() + "%";
}
function setTextAreaFontFamily(textarea, fontFamily) {
textarea.style.fontFamily = fontFamily;
}
function setFontOnGivenTextArea(textarea) {
setTextAreaFontSize(textarea,setting_FontSize.value);
setTextAreaFontFamily(textarea, setting_FontFamily.value);
}
function setFontOnAllTextAreas() {
const textareas = document.querySelectorAll('textarea');
for (const textarea of textareas) {
setFontOnGivenTextArea(textarea);
}
}
app.registerExtension({
name: "JNodes.Customization.MultilineText.Font",
async loadedGraphNode(node) {
for (const wid in node.widgets) {
if (node.widgets[wid]?.element?.type == 'textarea') {
setFontOnGivenTextArea(node.widgets[wid]?.element);
}
}
},
async setup() {
// Font Family Setting
{
const supportedTypefaces =
[
'monospace', 'Arial, sans-serif', 'Lora',
];
const labelWidget = $el("label", {
textContent: "Multiline Text Font Family:",
});
const settingWidget = $el(
"select",
{
oninput: (e) => {
setting_FontFamily.value = e.target.value;
setFontOnAllTextAreas();
},
},
supportedTypefaces.map((m) =>
$el("option", {
value: m,
textContent: m,
selected: setting_FontFamily.value === m,
})
)
);
const tooltip =
"The font typeface to use for multiline text boxes";
addJNodesSetting(labelWidget, settingWidget, tooltip);
}
// Font Size Setting
{
const labelWidget = $el("label", {
textContent: "Multiline Text Font Size (%):",
});
const settingWidget = $el("input", {
type: "number",
min: "1",
value: setting_FontSize.value,
oninput: (e) => {
let value = e.target.valueAsNumber;
if (value <= 1.0) { value = 1.0; }
setting_FontSize.value = value;
setFontOnAllTextAreas();
},
});
const tooltip =
"The font size (expressed as a percentage) to use for multiline text boxes";
addJNodesSetting(labelWidget, settingWidget, tooltip);
}
}
});