gradio_ui_control.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. (function(){
  2. function module_init() {
  3. console.log("[lora-prompt-tool] load gradio UI Control module");
  4. function switch_to_helper_tab(){
  5. let tabs = lorahelper.gradioApp().querySelector('#tabs').querySelectorAll('button');
  6. let target_tab_name = lorahelper.my_getTranslation("LoRA prompt helper");
  7. if (!target_tab_name) {
  8. target_tab_name = "LoRA prompt helper";
  9. }
  10. let complete_flag = false;
  11. let tab_name = "";
  12. for (const tab of tabs) {
  13. tab_name = tab.innerHTML;
  14. if(tab_name.trim().indexOf(target_tab_name.trim()) > -1){
  15. tab.click();
  16. complete_flag = true;
  17. break;
  18. }
  19. }
  20. if(!complete_flag){
  21. target_tab_name = "LoRA prompt helper";
  22. for (const tab of tabs) {
  23. tab_name = tab.innerHTML;
  24. if(tab_name.trim().indexOf(target_tab_name.trim()) > -1){
  25. tab.click();
  26. break;
  27. }
  28. }
  29. }
  30. lorahelper.dataframe_focus_check();
  31. }
  32. function find_tag_by_innerHTML(parent, tagname, innerHTML){
  33. if(!lorahelper.is_nullptr(parent)){
  34. if(typeof(parent.querySelectorAll) === typeof(lorahelper.noop_func)){
  35. let tag_list = parent.querySelectorAll(tagname);
  36. let target_element_name = lorahelper.my_getTranslation(innerHTML);
  37. if (!target_element_name) {
  38. target_element_name = innerHTML;
  39. }
  40. let complete_flag = false;
  41. let element_name = "";
  42. for (const element of tag_list) {
  43. element_name = element.innerHTML;
  44. if(element_name.trim().indexOf(target_element_name.trim()) > -1 ){
  45. return element;
  46. }
  47. }
  48. if(!complete_flag){
  49. target_element_name = innerHTML;
  50. for (const element of tag_list) {
  51. element_name = element.innerHTML;
  52. if(element_name.trim().indexOf(target_element_name.trim()) > -1 ){
  53. return element;
  54. }
  55. }
  56. }
  57. }
  58. }
  59. }
  60. function get_tab_by_name(input_tab_name){
  61. let tabs = lorahelper.gradioApp().querySelector('#tabs').querySelectorAll('button');
  62. let target_tab_name = lorahelper.my_getTranslation(input_tab_name);
  63. if (!target_tab_name) {
  64. target_tab_name = input_tab_name;
  65. }
  66. let complete_flag = false;
  67. let tab_name = "";
  68. for (const tab of tabs) {
  69. tab_name = tab.innerHTML;
  70. if(tab_name.trim() == target_tab_name.trim()){
  71. return tab;
  72. }
  73. }
  74. if(!complete_flag){
  75. target_tab_name = input_tab_name;
  76. for (const tab of tabs) {
  77. tab_name = tab.innerHTML;
  78. if(tab_name.trim() == target_tab_name.trim()){
  79. return tab;
  80. }
  81. }
  82. }
  83. return null;
  84. }
  85. function lora_help_change_number_input(target, value){
  86. let input_eles = target.querySelectorAll("input");
  87. let value_changed = false;
  88. for(let input_ele of input_eles){
  89. if((''+input_ele.value) !== (''+value)){
  90. input_ele.value = value;
  91. value_changed = true;
  92. }
  93. }
  94. if(value_changed){
  95. for(let input_ele of input_eles) lorahelper.my_dispatchEvent(
  96. input_ele, new Event("input", {
  97. bubbles: true,
  98. cancelable: true,
  99. })
  100. );
  101. }
  102. }
  103. function is_dataframe_selected(){
  104. const cell_list = lorahelper.gradioApp().getElementById("lorahelp_js_trigger_words_dataframe").querySelector("table").querySelectorAll("td");
  105. for(const cell of cell_list){
  106. let select_flag = cell.contains(document.activeElement);
  107. if (lorahelper.gradio_no_select_event){
  108. select_flag = !cell.childNodes[0].classList.contains("border-transparent");
  109. }
  110. if (select_flag) {
  111. return true;
  112. }
  113. }
  114. return false;
  115. }
  116. function lorahelp_gradio_version(){
  117. let foot = lorahelper.gradioApp().getElementById("footer");
  118. if (!foot){return null;}
  119. let versions = foot.querySelector(".versions");
  120. if (!versions){return null;}
  121. if (versions.innerHTML.indexOf("gradio: 3.16.2")>0) {
  122. return "3.16.2";
  123. } else {
  124. return "3.23.0";
  125. }
  126. }
  127. function getActiveTabType() {
  128. if(typeof(get_uiCurrentTabContent) !== typeof(lorahelper.noop_func)) return null;
  129. const currentTab = get_uiCurrentTabContent();
  130. switch (currentTab?.id) {
  131. case "tab_txt2img":
  132. return "txt2img";
  133. case "tab_img2img":
  134. return "img2img";
  135. }
  136. return null;
  137. }
  138. function getActivePrompt() {
  139. if(typeof(get_uiCurrentTabContent) !== typeof(lorahelper.noop_func)) return null;
  140. const currentTab = get_uiCurrentTabContent();
  141. switch (currentTab?.id) {
  142. case "tab_txt2img":
  143. return lorahelper.txt2img_prompt;
  144. case "tab_img2img":
  145. return lorahelper.img2img_prompt;
  146. }
  147. return null;
  148. }
  149. function getActiveNegativePrompt() {
  150. if(typeof(get_uiCurrentTabContent) !== typeof(lorahelper.noop_func)) return null;
  151. const currentTab = get_uiCurrentTabContent();
  152. switch (currentTab?.id) {
  153. case "tab_txt2img":
  154. return lorahelper.neg_txt2img_prompt;
  155. case "tab_img2img":
  156. return lorahelper.neg_img2img_prompt;
  157. }
  158. return null;
  159. }
  160. lorahelper.switch_to_helper_tab = switch_to_helper_tab;
  161. lorahelper.lora_help_change_number_input = lora_help_change_number_input;
  162. lorahelper.is_dataframe_selected = is_dataframe_selected;
  163. lorahelper.lorahelp_gradio_version = lorahelp_gradio_version;
  164. lorahelper.getActiveTabType = getActiveTabType;
  165. lorahelper.getActivePrompt = getActivePrompt;
  166. lorahelper.getActiveNegativePrompt = getActiveNegativePrompt;
  167. lorahelper.get_tab_by_name = get_tab_by_name;
  168. lorahelper.find_tag_by_innerHTML = find_tag_by_innerHTML;
  169. }
  170. let module_loadded = false;
  171. document.addEventListener("DOMContentLoaded", () => {
  172. if (module_loadded) return;
  173. module_loadded = true;
  174. module_init();
  175. });
  176. document.addEventListener("load", () => {
  177. if (module_loadded) return;
  178. module_loadded = true;
  179. module_init();
  180. });
  181. })();