Spaces:
Running
Running
| import gradio as gr | |
| import modelscope_studio.components.antdx as antdx | |
| import modelscope_studio.components.base as ms | |
| items = [ | |
| { | |
| "label": 'Write a report', | |
| "value": 'report' | |
| }, | |
| { | |
| "label": 'Draw a picture', | |
| "value": 'draw' | |
| }, | |
| { | |
| "label": 'Check some knowledge', | |
| "value": 'knowledge', | |
| "extra": 'Extra Info', | |
| }, | |
| ] | |
| def select_suggestion(e: gr.EventData): | |
| return gr.update(value=e._data["payload"][0]), gr.update(open=False) | |
| def change_sender(sender_value: str): | |
| splitted_value = sender_value.split("/") | |
| command = sender_value.split("/")[-1] | |
| if len(splitted_value) > 1: | |
| filtered_items = [ | |
| item for item in items | |
| if item["label"].upper().find(command.upper()) != -1 | |
| and not command.startswith(item["value"]) | |
| ] | |
| if len(filtered_items) > 0: | |
| return gr.update(open=True, items=filtered_items) | |
| return gr.update(open=False) | |
| with gr.Blocks() as demo: | |
| with ms.Application(): | |
| with antdx.XProvider(): | |
| with antdx.Suggestion(open=False) as suggestion: | |
| with ms.Slot("children"): | |
| sender = antdx.Sender( | |
| placeholder="Enter / to get suggestions") | |
| sender.change(fn=change_sender, | |
| inputs=[sender], | |
| outputs=[suggestion]) | |
| suggestion.select(fn=select_suggestion, | |
| outputs=[sender, suggestion]) | |
| if __name__ == "__main__": | |
| demo.queue().launch() | |