ui.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import gradio as gr
  2. refresh_symbol = '\U0001f504' # 🔄
  3. css = """
  4. .tabs.svelte-710i53 {
  5. margin-top: 0
  6. }
  7. .py-6 {
  8. padding-top: 2.5rem
  9. }
  10. .dark #refresh-button {
  11. background-color: #ffffff1f;
  12. }
  13. #refresh-button {
  14. flex: none;
  15. margin: 0;
  16. padding: 0;
  17. min-width: 50px;
  18. border: none;
  19. box-shadow: none;
  20. border-radius: 10px;
  21. background-color: #0000000d;
  22. }
  23. #download-label, #upload-label {
  24. min-height: 0
  25. }
  26. #accordion {
  27. background-color: transparent;
  28. }
  29. """
  30. chat_css = """
  31. .h-\[40vh\], .wrap.svelte-byatnx.svelte-byatnx.svelte-byatnx {
  32. height: 66.67vh
  33. }
  34. .gradio-container {
  35. max-width: 800px;
  36. margin-left: auto;
  37. margin-right: auto
  38. }
  39. .w-screen {
  40. width: unset
  41. }
  42. div.svelte-362y77>*, div.svelte-362y77>.form>* {
  43. flex-wrap: nowrap
  44. }
  45. /* fixes the API documentation in chat mode */
  46. .api-docs.svelte-1iguv9h.svelte-1iguv9h.svelte-1iguv9h {
  47. display: grid;
  48. }
  49. """
  50. class ToolButton(gr.Button, gr.components.FormComponent):
  51. """Small button with single emoji as text, fits inside gradio forms"""
  52. def __init__(self, **kwargs):
  53. super().__init__(variant="tool", **kwargs)
  54. def get_block_name(self):
  55. return "button"
  56. def create_refresh_button(refresh_component, refresh_method, refreshed_args, elem_id):
  57. def refresh():
  58. refresh_method()
  59. args = refreshed_args() if callable(refreshed_args) else refreshed_args
  60. for k, v in args.items():
  61. setattr(refresh_component, k, v)
  62. return gr.update(**(args or {}))
  63. refresh_button = ToolButton(value=refresh_symbol, elem_id=elem_id)
  64. refresh_button.click(
  65. fn=refresh,
  66. inputs=[],
  67. outputs=[refresh_component]
  68. )
  69. return refresh_button