@@ -211,6 +211,14 @@ class ModelBrowserWrapper {
211
211
else if ( this . subType == 'LoRA' ) {
212
212
isSelected = [ ...selectorElem . selectedOptions ] . map ( option => option . value ) . filter ( value => value == model . data . name ) . length > 0 ;
213
213
}
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
+ }
214
222
else {
215
223
isSelected = selectorElem . value == model . data . name ;
216
224
}
@@ -228,9 +236,42 @@ class ModelBrowserWrapper {
228
236
let sdModelBrowser = new ModelBrowserWrapper ( 'Stable-Diffusion' , 'model_list' , 'modelbrowser' , ( model ) => { directSetModel ( model . data ) ; } ) ;
229
237
let sdVAEBrowser = new ModelBrowserWrapper ( 'VAE' , 'vae_list' , 'sdvaebrowser' , ( vae ) => { directSetVae ( vae . data ) ; } ) ;
230
238
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 ) ; } ) ;
232
240
let sdControlnetBrowser = new ModelBrowserWrapper ( 'ControlNet' , 'controlnet_list' , 'sdcontrolnetbrowser' , ( controlnet ) => { setControlNet ( controlnet . data ) ; } ) ;
233
241
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
+
234
275
function setControlNet ( model ) {
235
276
let input = document . getElementById ( 'input_controlnetmodel' ) ;
236
277
if ( ! input ) {
0 commit comments