
    wi                        d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ e
rddlmZ  e             G d de                      ZdS )zGPredefined button to copy a shareable link to the current Gradio Space.    )annotationsN)Sequence)Path)TYPE_CHECKINGLiteral)document)utils)	Component)Button)get_blocks_context)Timerc                       e Zd ZdZdZdZ	 	 d*ddd ej        d	          dddddddd
ddddd+ fd'Zd( Z		 d*d,d)Z
 xZS )-DeepLinkButtonz
    Creates a button that copies a shareable link to the current Gradio Space.
    The link includes the current session hash as a query parameter.
    Tr   Share via LinkLink Copied!N	secondarylgzlink.svgvalueinputsvariantsizeiconlinkvisibleinteractiveelem_idelem_classesrenderkeypreserved_by_keyscale	min_widtheverystrcopied_valuer   7Component | Sequence[Component] | set[Component] | Noner   Literal['primary', 'secondary']r   Literal['sm', 'md', 'lg']r   str | Path | Noner   
str | Noner   boolr   r   r   list[str] | str | Noner   r    (int | str | tuple[int | str, ...] | Noner!   r"   
int | Noner#   r$   Timer | float | Nonec                   || _         t                                          ||||||||	d| j         |||||||           |  | xj        dz  c_        t	                      r|                                  dS dS )z
        Parameters:
            value: The text to display on the button.
            copied_value: The text to display on the button after the link has been copied.
        zgradio-share-link-button-r      N)r&   super__init__	n_createdr   activate)selfr   r&   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   	__class__s                     r/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/gradio/components/deep_link_button.pyr4   zDeepLinkButton.__init__    s    4 )#@@@%-! 	 	
 	
 	
$ 	! 	MMOOOOO	 	    c                                            j         j                  }                     dg  g|                                 fdg  gdd           dS )z.Attach the click event to copy the share link.N)fnr   outputsjsc                 :    t          j        d          p j        S )Nr2   )timesleepr   )r7   s   r9   <lambda>z)DeepLinkButton.activate.<locals>.<lambda>Y   s    tz!}}2
 r:   F)r<   r   r=   queueshow_api)get_share_linkr   r&   click)r7   _jss   ` r9   r6   zDeepLinkButton.activateR   sz    !!$*d.?@@ 	

d2v#
>>>

2222F 	 	
 	
 	
 	
 	
r:   c                    t          j                    rdnd}t          j        d| d                    d|                              d|                                        d| j                  S )Nz)currentUrl.searchParams.delete('__sign'); a  
        () => {
            const sessionHash = window.__gradio_session_hash__;
            fetch(`gradio_api/deep_link?session_hash=${sessionHash}`)
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Network response was not ok');
                    }
                    return response.text();
                })
                .then(data => {
                    const currentUrl = new URL(window.location.href);
                    const cleanData = data.replace(/^"|"$/g, '');
                    if (cleanData) {
                        currentUrl.searchParams.set('deep_link', cleanData);
                    }
                    a<  
                    navigator.clipboard.writeText(currentUrl.toString());
                })
                .catch(error => {
                    console.error('Error fetching deep link:', error);
                    return "Error";
                });

            return "BUTTON_COPIED_VALUE";
        }
        BUTTON_DEFAULT_VALUEBUTTON_COPIED_VALUEID)r	   	get_spacetextwrapdedentreplacer   )r7   r   r&   delete_sign_lines       r9   rE   zDeepLinkButton.get_share_link`   s     <A?;L;LT77RT 	   &!  4 G*E2277%|4 47
 
< '$
%
%=	&r:   )r   r   )"r   r%   r&   r%   r   r'   r   r(   r   r)   r   r*   r   r+   r   r,   r   r,   r   r+   r   r-   r   r,   r    r.   r!   r-   r"   r/   r#   r/   r$   r0   )r   r%   r&   r%   )__name__
__module____qualname____doc__is_templater5   r	   get_icon_pathr4   r6   rE   __classcell__)r8   s   @r9   r   r      s         
 KI &*0
 KO3>*."5%"5j"A"A "/38<3:  $&*'0 0 0 0 0 0 0 0d
 
 
 BP$& $& $& $& $& $& $& $& $&r:   r   )rU   
__future__r   rN   r@   collections.abcr   pathlibr   typingr   r   gradio_client.documentationr   gradior	   gradio.components.baser
   gradio.components.buttonr   gradio.contextr   gradio.componentsr   r    r:   r9   <module>rd      s/   M M " " " " " "   $ $ $ $ $ $       ) ) ) ) ) ) ) ) 0 0 0 0 0 0       , , , , , , + + + + + + - - - - - - ('''''' 
m& m& m& m& m&V m& m& m& m& m&r:   