
    ;3h                        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y)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   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everyc                   || _         t        | 	  ||||||||	d| j                   |||||||       |  | xj                  dz  c_        t	               r| j                          yy)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)copied_valuesuper__init__	n_createdr   activate)selfr   r%   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   	__class__s                     b/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/gradio/components/deep_link_button.pyr'   zDeepLinkButton.__init__    s    4 )#//?@%-! 	 	
$ 	!MMO      c                      j                   j                   j                        } j                  dg  g|        j                   fdg  gdd       y)z.Attach the click event to copy the share link.N)fnr   outputsjsc                 J    t        j                  d      xs  j                  S )Nr$   )timesleepr   )r*   s   r,   <lambda>z)DeepLinkButton.activate.<locals>.<lambda>Y   s    tzz!}2

 r-   F)r/   r   r0   queueshow_api)get_share_linkr   r%   click)r*   _jss   ` r,   r)   zDeepLinkButton.activateR   sY    !!$**d.?.?@ 	

d2v#
>

2F 	 	
r-   c                    t        j                         rdnd}t        j                  d| dj	                  d|      j	                  d|            j	                  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,   r8   zDeepLinkButton.get_share_link`   ss     <A??;L7RT 	   && 
'	!4 G*E277%|47
< '$
%=	&r-   )zShare via LinkzLink Copied!)"r   strr%   rE   r   z7Component | Sequence[Component] | set[Component] | Noner   zLiteral['primary', 'secondary']r   zLiteral['sm', 'md', 'lg']r   zstr | Path | Noner   
str | Noner   boolr   rG   r   rF   r   list[str] | str | Noner   rG   r   z(int | str | tuple[int | str, ...] | Noner   rH   r    
int | Noner!   rI   r"   zTimer | float | None)r   rE   r%   rE   )__name__
__module____qualname____doc__is_templater(   r	   get_icon_pathr'   r)   r8   __classcell__)r+   s   @r,   r   r      s/   
 KI &*0
 KO3>*."5%"5"5j"A "/38<3:  $&*'00 0
 H0 10 (0  0 0 0 0 0 -0 0 60  1!0" #0$ %0& $'0d
 BP$&$&;>$&r-   r   )rM   
__future__r   rA   r3   collections.abcr   pathlibr   typingr   r   gradio_client.documentationr   gradior	   gradio.components.baser
   gradio.components.buttonr   gradio.contextr   gradio.componentsr   r    r-   r,   <module>r\      sO    M "   $  ) 0  , + -' 
m&V m& m&r-   