import { ComfyApp, app } from "../../scripts/app.js"; app.registerExtension({ name: "Comfy.Inspire.LBW", nodeCreated(node, app) { if(node.comfyClass == "LoraLoaderBlockWeight //Inspire") { // category filter const lora_names_widget = node.widgets[node.widgets.findIndex(obj => obj.name === 'lora_name')]; var full_lora_list = lora_names_widget.options.values; const category_filter_widget = node.widgets[node.widgets.findIndex(obj => obj.name === 'category_filter')]; Object.defineProperty(lora_names_widget.options, "values", { set: (x) => { full_lora_list = x; }, get: () => { if(category_filter_widget.value == 'All') return full_lora_list; let l = full_lora_list.filter(x => x.startsWith(category_filter_widget.value)); return l; } }); // vector selector let preset_i = 9; let vector_i = 10; node._value = "Preset"; Object.defineProperty(node.widgets[preset_i], "value", { set: (value) => { const stackTrace = new Error().stack; if(stackTrace.includes('inner_value_change')) { if(value != "Preset") { node.widgets[vector_i].value = value.split(':')[1]; if(node.widgets_values) { node.widgets_values[vector_i] = node.widgets[preset_i].value; } } } node._value = value; }, get: () => { return node._value; } }); } if(node.comfyClass == "XY Input: Lora Block Weight //Inspire") { // category filter const lora_names_widget = node.widgets[node.widgets.findIndex(obj => obj.name === 'lora_name')]; var full_lora_list = lora_names_widget.options.values; const category_filter_widget = node.widgets[node.widgets.findIndex(obj => obj.name === 'category_filter')]; Object.defineProperty(lora_names_widget.options, "values", { set: (x) => { full_lora_list = x; }, get: () => { if(category_filter_widget.value == 'All') return full_lora_list; let l = full_lora_list.filter(x => x.startsWith(category_filter_widget.value)); return l; } }); // vector selector let preset_i = 9; let vector_i = 10; node._value = "Preset"; Object.defineProperty(node.widgets[preset_i], "value", { set: (value) => { const stackTrace = new Error().stack; if(stackTrace.includes('inner_value_change')) { if(value != "Preset") { if(!value.startsWith('@') && node.widgets[vector_i].value != "") node.widgets[vector_i].value += "\n"; if(value.startsWith('@')) { let spec = value.split(':')[1]; var n; var sub_n = null; var block = null; if(isNaN(spec)) { let sub_spec = spec.split(','); if(sub_spec.length != 3) { node.widgets_values[vector_i] = '!! SPEC ERROR !!'; node._value = ''; return; } n = parseInt(sub_spec[0].trim()); sub_n = parseInt(sub_spec[1].trim()); block = parseInt(sub_spec[2].trim()); } else { n = parseInt(spec.trim()); } node.widgets[vector_i].value = ""; if(sub_n == null) { for(let i=1; i<=n; i++) { var temp = ""; for(let j=1; j<=n; j++) { if(temp!='') temp += ','; if(j==i) temp += 'A'; else temp += '0'; } node.widgets[vector_i].value += `B${i}:${temp}\n`; } } else { for(let i=1; i<=sub_n; i++) { var temp = ""; for(let j=1; j<=n; j++) { if(temp!='') temp += ','; if(block!=j) temp += '0'; else { temp += ' '; for(let k=1; k<=sub_n; k++) { if(k==i) temp += 'A '; else temp += '0 '; } } } node.widgets[vector_i].value += `B${block}.SUB${i}:${temp}\n`; } } } else { node.widgets[vector_i].value += `${value}/${value.split(':')[0]}`; } if(node.widgets_values) { node.widgets_values[vector_i] = node.widgets[preset_i].value; } } } node._value = value; }, get: () => { return node._value; } }); } } });