import os import gradio as gr from modules import localization, shared, scripts from modules.paths import script_path, data_path, cwd def webpath(fn): if fn.startswith(cwd): web_path = os.path.relpath(fn, cwd) else: web_path = os.path.abspath(fn) return f'file={web_path}?{os.path.getmtime(fn)}' def javascript_html(): # Ensure localization is in `window` before scripts head = f'\n' script_js = os.path.join(script_path, "script.js") head += f'\n' for script in scripts.list_scripts("javascript", ".js"): head += f'\n' for script in scripts.list_scripts("javascript", ".mjs"): head += f'\n' if shared.cmd_opts.theme: head += f'\n' return head def css_html(): head = "" def stylesheet(fn): return f'' for cssfile in scripts.list_files_with_name("style.css"): if not os.path.isfile(cssfile): continue head += stylesheet(cssfile) if os.path.exists(os.path.join(data_path, "user.css")): head += stylesheet(os.path.join(data_path, "user.css")) return head def reload_javascript(): js = javascript_html() css = css_html() def template_response(*args, **kwargs): res = shared.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 if not hasattr(shared, 'GradioTemplateResponseOriginal'): shared.GradioTemplateResponseOriginal = gr.routes.templates.TemplateResponse