import gradio as gr import modelscope_studio.components.antd as antd import modelscope_studio.components.antdx as antdx import modelscope_studio.components.base as ms def upload_file(attachments_value): print(attachments_value) default_fullscreen_drop = False with gr.Blocks() as demo: with ms.Application(): with antdx.XProvider(): with antd.Flex(vertical=True, gap="middle", align="flex-start", elem_id="attachments-container"): fullscreen_drop_switch = antd.Switch( value=default_fullscreen_drop, checked_children="Full screen drop", un_checked_children="Full screen drop") with antdx.Sender(): with ms.Slot("prefix"): with antdx.Attachments( placeholder=dict( title="Drag & Drop files here", description= "Support file type: image, video, audio, document, etc." ), get_drop_container= "() => document.querySelector('#attachments-container')", ) as attachments: with antd.Button(value=None, type="text"): with ms.Slot("icon"): antd.Icon("LinkOutlined") with ms.Slot("placeholder.icon"): antd.Icon("CloudUploadOutlined") attachments.change(fn=upload_file, inputs=[attachments]) fullscreen_drop_switch.change(fn=lambda x: gr.update( get_drop_container="() => document.body" if x else "() => document.querySelector('#attachments-container')", ), inputs=[fullscreen_drop_switch], outputs=[attachments]) if __name__ == "__main__": demo.queue().launch()