Skip to content

Commit 1765c05

Browse files
committed
clickable embeddings
1 parent b5fb7ee commit 1765c05

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

src/wwwroot/js/genpage/main.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,7 @@ function pageSizer() {
868868
}
869869
setCookie(`lastparam_input_prompt`, altText.value, 0.25);
870870
textPromptDoCount(altText);
871+
monitorPromptChangeForEmbed(altText.value, 'positive');
871872
});
872873
altText.addEventListener('input', () => {
873874
setCookie(`lastparam_input_prompt`, altText.value, 0.25);

src/wwwroot/js/genpage/models.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,14 @@ class ModelBrowserWrapper {
211211
else if (this.subType == 'LoRA') {
212212
isSelected = [...selectorElem.selectedOptions].map(option => option.value).filter(value => value == model.data.name).length > 0;
213213
}
214+
else if (this.subType == 'Embedding') {
215+
let promptBox = getRequiredElementById('alt_prompt_textbox');
216+
isSelected = promptBox.value.includes(`<embed:${model.data.name}>`);
217+
let negativePrompt = document.getElementById('input_negativeprompt');
218+
if (negativePrompt) {
219+
isSelected = isSelected || negativePrompt.value.includes(`<embed:${model.data.name}>`);
220+
}
221+
}
214222
else {
215223
isSelected = selectorElem.value == model.data.name;
216224
}
@@ -228,9 +236,42 @@ class ModelBrowserWrapper {
228236
let sdModelBrowser = new ModelBrowserWrapper('Stable-Diffusion', 'model_list', 'modelbrowser', (model) => { directSetModel(model.data); });
229237
let sdVAEBrowser = new ModelBrowserWrapper('VAE', 'vae_list', 'sdvaebrowser', (vae) => { directSetVae(vae.data); });
230238
let sdLoraBrowser = new ModelBrowserWrapper('LoRA', 'lora_list', 'sdlorabrowser', (lora) => { toggleSelectLora(lora.data.name); });
231-
let sdEmbedBrowser = new ModelBrowserWrapper('Embedding', 'embedding_list', 'sdembedbrowser', (embed) => {});
239+
let sdEmbedBrowser = new ModelBrowserWrapper('Embedding', 'embedding_list', 'sdembedbrowser', (embed) => { selectEmbedding(embed.data); });
232240
let sdControlnetBrowser = new ModelBrowserWrapper('ControlNet', 'controlnet_list', 'sdcontrolnetbrowser', (controlnet) => { setControlNet(controlnet.data); });
233241

242+
function selectEmbedding(model) {
243+
let promptBox = getRequiredElementById('alt_prompt_textbox');
244+
let chunk = `<embed:${model.name}>`;
245+
if (promptBox.value.endsWith(chunk)) {
246+
promptBox.value = promptBox.value.substring(0, promptBox.value.length - chunk.length).trim();
247+
}
248+
else {
249+
promptBox.value += ` ${chunk}`;
250+
}
251+
triggerChangeFor(promptBox);
252+
sdEmbedBrowser.browser.rerender();
253+
}
254+
255+
let lastPromptForEmbedMonitor = {};
256+
257+
function monitorPromptChangeForEmbed(promptText, type) {
258+
let last = lastPromptForEmbedMonitor[type];
259+
if (!last) {
260+
last = "";
261+
}
262+
console.log(`changed from ${last} to ${promptText} for ${type}`)
263+
if (promptText == last) {
264+
return;
265+
}
266+
lastPromptForEmbedMonitor[type] = promptText;
267+
let countNew = promptText.split(`<embed:`).length - 1;
268+
let countOld = last.split(`<embed:`).length - 1;
269+
if (countNew == countOld) {
270+
return;
271+
}
272+
sdEmbedBrowser.browser.rerender();
273+
}
274+
234275
function setControlNet(model) {
235276
let input = document.getElementById('input_controlnetmodel');
236277
if (!input) {

src/wwwroot/js/genpage/params.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,12 @@ function genInputs(delay_final = false) {
290290
else {
291291
altPromptArea.style.display = 'block';
292292
}
293+
let inputNegativePrompt = document.getElementById('input_negativeprompt');
294+
if (inputNegativePrompt) {
295+
inputNegativePrompt.addEventListener('input', () => {
296+
monitorPromptChangeForEmbed(inputNegativePrompt.value, 'negative');
297+
});
298+
}
293299
let inputLoras = document.getElementById('input_loras');
294300
if (inputLoras) {
295301
inputLoras.addEventListener('change', () => {

0 commit comments

Comments
 (0)