2023-01-21 22:02:46 -05:00
|
|
|
import gradio as gr
|
|
|
|
|
|
|
|
refresh_symbol = '\U0001f504' # 🔄
|
|
|
|
|
2023-02-16 19:55:20 -05:00
|
|
|
css = """
|
|
|
|
.tabs.svelte-710i53 {
|
|
|
|
margin-top: 0
|
|
|
|
}
|
|
|
|
.py-6 {
|
|
|
|
padding-top: 2.5rem
|
|
|
|
}
|
|
|
|
.dark #refresh-button {
|
2023-02-17 20:52:03 -05:00
|
|
|
background-color: #ffffff1f;
|
2023-02-16 19:55:20 -05:00
|
|
|
}
|
|
|
|
#refresh-button {
|
2023-02-17 14:18:01 -05:00
|
|
|
flex: none;
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
min-width: 50px;
|
|
|
|
border: none;
|
|
|
|
box-shadow: none;
|
|
|
|
border-radius: 10px;
|
|
|
|
background-color: #0000000d;
|
2023-02-16 19:55:20 -05:00
|
|
|
}
|
|
|
|
#download-label, #upload-label {
|
2023-02-17 14:18:01 -05:00
|
|
|
min-height: 0
|
2023-02-16 19:55:20 -05:00
|
|
|
}
|
|
|
|
#accordion {
|
|
|
|
}
|
2023-02-17 21:57:09 -05:00
|
|
|
.dark svg {
|
|
|
|
fill: white;
|
|
|
|
}
|
2023-02-17 22:18:39 -05:00
|
|
|
svg {
|
|
|
|
display: unset !important;
|
|
|
|
vertical-align: middle !important;
|
|
|
|
margin: 5px;
|
|
|
|
}
|
2023-02-25 15:19:31 -05:00
|
|
|
ol li p, ul li p {
|
|
|
|
display: inline-block;
|
|
|
|
}
|
2023-02-16 19:55:20 -05:00
|
|
|
"""
|
|
|
|
|
|
|
|
chat_css = """
|
|
|
|
.h-\[40vh\], .wrap.svelte-byatnx.svelte-byatnx.svelte-byatnx {
|
|
|
|
height: 66.67vh
|
|
|
|
}
|
|
|
|
.gradio-container {
|
2023-02-25 15:19:31 -05:00
|
|
|
max-width: 800px !important;
|
|
|
|
margin-left: auto !important;
|
|
|
|
margin-right: auto !important;
|
2023-02-16 19:55:20 -05:00
|
|
|
}
|
|
|
|
.w-screen {
|
|
|
|
width: unset
|
|
|
|
}
|
|
|
|
div.svelte-362y77>*, div.svelte-362y77>.form>* {
|
|
|
|
flex-wrap: nowrap
|
|
|
|
}
|
2023-02-16 23:56:51 -05:00
|
|
|
/* fixes the API documentation in chat mode */
|
|
|
|
.api-docs.svelte-1iguv9h.svelte-1iguv9h.svelte-1iguv9h {
|
|
|
|
display: grid;
|
|
|
|
}
|
2023-03-03 11:19:13 -05:00
|
|
|
.pending.svelte-1ed2p3z {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
2023-02-16 19:55:20 -05:00
|
|
|
"""
|
|
|
|
|
2023-01-21 22:02:46 -05:00
|
|
|
class ToolButton(gr.Button, gr.components.FormComponent):
|
|
|
|
"""Small button with single emoji as text, fits inside gradio forms"""
|
|
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
super().__init__(variant="tool", **kwargs)
|
|
|
|
|
|
|
|
def get_block_name(self):
|
|
|
|
return "button"
|
|
|
|
|
|
|
|
def create_refresh_button(refresh_component, refresh_method, refreshed_args, elem_id):
|
|
|
|
def refresh():
|
|
|
|
refresh_method()
|
|
|
|
args = refreshed_args() if callable(refreshed_args) else refreshed_args
|
|
|
|
|
|
|
|
for k, v in args.items():
|
|
|
|
setattr(refresh_component, k, v)
|
|
|
|
|
|
|
|
return gr.update(**(args or {}))
|
|
|
|
|
|
|
|
refresh_button = ToolButton(value=refresh_symbol, elem_id=elem_id)
|
|
|
|
refresh_button.click(
|
|
|
|
fn=refresh,
|
|
|
|
inputs=[],
|
|
|
|
outputs=[refresh_component]
|
|
|
|
)
|
|
|
|
return refresh_button
|