behavior WordSelectorClose() on htmx:afterRequest from .word-selector remove .hidden from me end on click add .hidden to me put '' into #word-selector end end def clean_prompt(prompt) js(prompt) return prompt.replaceAll("\n", " ").replace(/,\s*,\s*/g, ',').replaceAll(" , ", ", ") end return it end behavior PromptBuilder() on refresh set value of #prompt to clean_prompt(my innerText) end on click set target to closest .word to event.target if target is null exit end if event.ctrlKey remove target set value of #prompt to clean_prompt(my innerText) trigger 'refresh' on #prompt-builder end end end behavior EditableWord() on click from .word-lib in me if event.ctrlKey or event.shiftKey or event.altKey or not closest #prompt-builder exit end add .hidden to it remove .hidden from .word-input in me focus_contenteditable_text(first .word-input in me) end on keyup[keyCode==13] from .word-input in me put value of it into innerText of .word-lib in me remove .hidden from .word-lib in me add .hidden to it wait 0.05s then send 'refresh' to #prompt-builder end on keyup[keyCode==27] from .word-input in me set value of it to innerText of .word-lib in me remove .hidden from .word-lib in me add .hidden to it end end behavior Gallery() on click from .result-img in me if closest #modal toggle .hidden on next .parameters from it else put my outerHTML into #modal-content add .{'h-[90vh]'} to .result-img in .image-item in #modal-content remove .hidden from .parameters in .image-item in #modal-content remove .hidden from #modal end end end behavior GenerateBtn() on htmx:beforeRequest set :doc_title to document.title hide me remove .{"!hidden"} from #interrupt-btn remove .{"opacity-0"} from #progress repeat until event htmx:afterRequest from e trigger 'poll' on #progress set document.title to first of innerHTML of .progress-bar in #progress wait 1s end show me add .{"!hidden"} to #interrupt-btn add .{"opacity-0"} to #progress set document.title to :doc_title fetch /instance/progress/reset then put it into #progress end end def enable_row(targ) add .selected to closest .preset-row to targ set checked of targ to true set preset_id to @preset-id of targ remove .disabled from #preset-del-bulk if not #{"delete-"+preset_id} set input_template to in #preset-delete-template set id of input_template to "delete-" + preset_id set value of input_template to preset_id put outerHTML of in #preset-delete-template at the end of #preset-delete end end def disable_row(targ) remove .selected from closest .preset-row to targ set checked of targ to false set targ_input to #{"delete-" + @preset-id of targ} if targ_input remove targ_input end if length of in #preset-delete <= 0 add .disabled to #preset-del-bulk end end behavior RowCheck() on change from in me if checked of it enable_row(it) else disable_row(it) end end end behavior RowCheckAll() on change from in me if checked of it for row in .preset-row if not row.classList.contains("!hidden") enable_row( in row) end end else for row in .preset-row disable_row( in row) end end end end def disable_inputs(targ) add @disabled to in targ add @disabled to in targ remove @disabled from to my.innerText end on update_input set @value of previous to my.innerText end end behavior SelectWarning() set :is_selected to false on htmx:afterRequest from previous .input for option in