o
    ۷i~	                     @  sj   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
 ddlmZ e G dd	 d	e
ZdS )
zgr.BrowserState() component.    )annotationsN)Any)document)	Component)Eventsc                      sr   e Zd ZejgZ	 	dddddd fddZdddZd ddZd!ddZ	d"ddZ
d"ddZd#ddZ  ZS )$BrowserStateNT)storage_keysecretrenderdefault_valuer   r   
str | Noner	   r
   boolc                  sZ   || _ |pddd tdD | _|pddd tdD | _d| _t j|d dS )	a  
        Parameters:
            default_value: the default value that will be used if no value is found in localStorage. Should be a json-serializable value.
            storage_key: the key to use in localStorage. If None, a random key will be generated.
            secret: the secret key to use for encryption. If None, a random key will be generated (recommended).
            render: should always be True, is included for consistency with other components.
         c                 s  "    | ]}t tjtj V  qd S Nsecretschoicestringascii_lettersdigits.0_ r   U/home/ubuntu/vllm_env/lib/python3.10/site-packages/gradio/components/browser_state.py	<genexpr>&       
z(BrowserState.__init__.<locals>.<genexpr>   c                 s  r   r   r   r   r   r   r   r   )   r   any json-serializable value)r
   N)r   joinranger	   r   _value_descriptionsuper__init__)selfr   r   r	   r
   	__class__r   r   r$      s   

zBrowserState.__init__payloadreturnc                 C  s   |du r| j S |S )z
        Parameters:
            payload: Value from local storage
        Returns:
            Passes value through unchanged
        N)r   )r%   r(   r   r   r   
preprocess0   s   zBrowserState.preprocessvaluec                 C  s   |S )z
        Parameters:
            value: Value to store in local storage
        Returns:
            Passes value through unchanged
        r   )r%   r+   r   r   r   postprocess;   s   zBrowserState.postprocessdict[str, Any]c                 C  s
   i ddS )Nr   )typedescriptionr   r%   r   r   r   api_infoD   s   
zBrowserState.api_infoc                 C     dS Ntestr   r0   r   r   r   example_payloadG      zBrowserState.example_payloadc                 C  r2   r3   r   r0   r   r   r   example_valueJ   r6   zBrowserState.example_valuec                 C  r2   )zABrowserState components should not break wrapper grouping chains.Fr   r0   r   r   r   breaks_groupingM   s   zBrowserState.breaks_groupingr   )r   r   r   r   r	   r   r
   r   )r(   r   r)   r   )r+   r   r)   r   )r)   r-   )r)   r   )r)   r   )__name__
__module____qualname__r   changeEVENTSr$   r*   r,   r1   r5   r7   r8   __classcell__r   r   r&   r   r      s    


	

r   )__doc__
__future__r   r   r   typingr   gradio_client.documentationr   gradio.components.baser   gradio.eventsr   r   r   r   r   r   <module>   s    