@@ -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 {
228236let sdModelBrowser = new ModelBrowserWrapper ( 'Stable-Diffusion' , 'model_list' , 'modelbrowser' , ( model ) => { directSetModel ( model . data ) ; } ) ;
229237let sdVAEBrowser = new ModelBrowserWrapper ( 'VAE' , 'vae_list' , 'sdvaebrowser' , ( vae ) => { directSetVae ( vae . data ) ; } ) ;
230238let 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 ) ; } ) ;
232240let 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+
234275function setControlNet ( model ) {
235276 let input = document . getElementById ( 'input_controlnetmodel' ) ;
236277 if ( ! input ) {
0 commit comments