
    AF[i;                        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
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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_selfvalueinputsvariantsizeiconlinklink_target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#   r$   	__class__s                      k/var/www/html/chatbot/moweb-chatbot/venv/lib/python3.12/site-packages/gradio/components/deep_link_button.pyr)   zDeepLinkButton.__init__    s    6 )##//?@%-# 	 	
& 	!MMO      c                      j                   j                   j                        } j                  dg  g|d        j                   fdg  gdd       y)z.Attach the click event to copy the share link.Nprivate)fnr   outputsjsapi_visibilityc                 J    t        j                  d      xs  j                  S )Nr&   )timesleepr   )r,   s   r.   <lambda>z)DeepLinkButton.activate.<locals>.<lambda>[   s    tzz!}2

 r/   Fundocumented)r2   r   r3   queuer5   )get_share_linkr   r'   click)r,   _jss   ` r.   r+   zDeepLinkButton.activateT   s[    !!$**d.?.?@ 	

d2v#i
X

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.   r<   zDeepLinkButton.get_share_linkb   ss     <A??;L7RT 	   && 
'	!4 G*E277%|47
< '$
%=	&r/   )zShare via LinkzLink Copied!)$r   strr'   rI   r   z7Component | Sequence[Component] | set[Component] | Noner   zLiteral['primary', 'secondary']r   zLiteral['sm', 'md', 'lg']r   zstr | Path | Noner   
str | Noner   z-Literal['_self', '_blank', '_parent', '_top']r   zbool | Literal['hidden']r   boolr   rJ   r   list[str] | str | Noner   rK   r    z(int | str | tuple[int | str, ...] | Noner!   rL   r"   
int | Noner#   rM   r$   zTimer | float | None)r   rI   r'   rI   )__name__
__module____qualname____doc__is_templater*   r	   get_icon_pathr)   r+   r<   __classcell__)r-   s   @r.   r   r      s=   
 KI &*2
 KO3>*."5%"5"5j"AEL,0 "/38<3:  $&*)22 2
 H2 12 (2  2 2 C2 *2 2 2 -2 2  6!2" 1#2$ %2& '2( $)2h
 BP$&$&;>$&r/   r   )rQ   
__future__r   rE   r7   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  , + -' 
o&V o& o&r/   