
    Pi;                        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d/ fd+Zd, Z		 d.d0d-Z
 xZS )1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_selfvalueinputsvariantsizeiconlinklink_target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   -Literal['_self', '_blank', '_parent', '_top']r   bool | Literal['hidden']r   boolr   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%   r&   	__class__s                      v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gradio/components/deep_link_button.pyr8   zDeepLinkButton.__init__    s    6 )##@@@%-# 	 	
 	
 	
& 	! 	MMOOOOO	 	    c                                            j         j                  }                     dg  g|d                                 fdg  gdd           dS )z.Attach the click event to copy the share link.Nprivate)fnr   outputsjsapi_visibilityc                 :    t          j        d          p j        S )Nr6   )timesleepr   )r;   s   r=   <lambda>z)DeepLinkButton.activate.<locals>.<lambda>[   s    tz!}}2
 r>   Fundocumented)rA   r   rB   queuerD   )get_share_linkr   r(   click)r;   _jss   ` r=   r:   zDeepLinkButton.activateT   s|    !!$*d.?@@ 	

d2v#i
XXX

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   )r;   r   r(   delete_sign_lines       r=   rK   zDeepLinkButton.get_share_linkb   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   r0   r   r-   r    r1   r!   r0   r"   r2   r#   r1   r$   r3   r%   r3   r&   r4   )r   r'   r(   r'   )__name__
__module____qualname____doc__is_templater9   r	   get_icon_pathr8   r:   rK   __classcell__)r<   s   @r=   r   r      s         
 KI &*2
 KO3>*."5%"5j"A"AEL,0 "/38<3:  $&*)2 2 2 2 2 2 2 2h
 
 
 BP$& $& $& $& $& $& $& $& $&r>   r   )r[   
__future__r   rT   rF   collections.abcr   pathlibr   typingr   r   gradio_client.documentationr   gradior	   gradio.components.baser
   gradio.components.buttonr   gradio.contextr   gradio.componentsr   r    r>   r=   <module>rj      s/   M M " " " " " "   $ $ $ $ $ $       ) ) ) ) ) ) ) ) 0 0 0 0 0 0       , , , , , , + + + + + + - - - - - - ('''''' 
o& o& o& o& o&V o& o& o& o& o&r>   