# based on https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/v1.6.0/modules/ui_gradio_extensions.py import os from pathlib import Path import gradio as gr from modules import config from .localization import localization_js GradioTemplateResponseOriginal = gr.routes.templates.TemplateResponse WEBUI_DIR_PATH = Path(os.path.dirname(os.path.realpath(__file__))) def read_file(fp): with open(WEBUI_DIR_PATH / fp, "r") as f: return f.read() def javascript_html(): def s(text: str): return f'\n' def src(src: str): return f"\n" def sf(fp: str): return s(read_file(fp)) head = "" head += src("https://jsd.onmicrosoft.cn/npm/marked@12.0.2") head += s(localization_js(config.runtime_env_vars.language)) head += sf("js/index.js") head += sf("js/localization.js") if config.runtime_env_vars.theme: head += s(f"set_theme('{config.runtime_env_vars.theme}');") return head def css_html(): head = f'' return head def reload_javascript(): js = javascript_html() css = css_html() def template_response(*args, **kwargs): res = GradioTemplateResponseOriginal(*args, **kwargs) res.body = res.body.replace(b"", f"{js}".encode("utf8")) res.body = res.body.replace(b"", f"{css}".encode("utf8")) res.init_headers() return res gr.routes.templates.TemplateResponse = template_response