
    +j                        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 ddlmZ ddZ e             G d de                      ZdS )zgr.BrowserState() component.    )annotationsN)Any)document)	BaseModel)	Component)Eventsvaluer   returnc                X    t          | t                    r|                                 S | S )zConvert a value to a JSON-serializable form.

    Pydantic BaseModel instances are converted to dicts via model_dump(),
    since they cannot be directly serialized by orjson and would otherwise
    fall back to str() representation.
    )
isinstancePydanticBaseModel
model_dump)r	   s    c/home/wildlama/visual-decline/.venv/lib/python3.11/site-packages/gradio/components/browser_state.py_to_json_serializabler      s.     %*++ "!!!L    c                  p     e Zd Zej        gZ	 	 dddddd fdZddZddZddZ	ddZ
ddZddZ xZS )BrowserStateNT)storage_keysecretrenderdefault_valuer   r   
str | Noner   r   boolc               N   t          |          | _        |p+d                    d t          d          D                       | _        |p+d                    d t          d          D                       | _        d| _        t                                          |           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              3  l   K   | ]/}t          j        t          j        t          j        z             V  0d S Nsecretschoicestringascii_lettersdigits.0_s     r   	<genexpr>z(BrowserState.__init__.<locals>.<genexpr>3   sG       (
 (
EFGN6/&-?@@(
 (
 (
 (
 (
 (
r      c              3  l   K   | ]/}t          j        t          j        t          j        z             V  0d S r   r   r$   s     r   r'   z(BrowserState.__init__.<locals>.<genexpr>6   sG       2
 2
EFGN6/&-?@@2
 2
 2
 2
 2
 2
r   any json-serializable value)r   N)	r   r   joinranger   r   _value_descriptionsuper__init__)selfr   r   r   r   	__class__s        r   r/   zBrowserState.__init__#   s     3=AA 
 (
 (
JOPR))(
 (
 (
 !
 !
 ' 
"'' 2
 2
JOPR))2
 2
 2
 +
 +
 #@'''''r   payloadr
   c                    || j         S |S )z
        Parameters:
            payload: Value from local storage
        Returns:
            Passes value through unchanged
        )r   )r0   r2   s     r   
preprocesszBrowserState.preprocess=   s     ?%%r   r	   c                     t          |          S )z
        Parameters:
            value: Value to store in local storage
        Returns:
            Passes value through unchanged, converting Pydantic models to dicts
        )r   )r0   r	   s     r   postprocesszBrowserState.postprocessH   s     %U+++r   dict[str, Any]c                    i ddS )Nr*   )typedescription r0   s    r   api_infozBrowserState.api_infoQ   s    +HIIIr   c                    dS Ntestr;   r<   s    r   example_payloadzBrowserState.example_payloadT       vr   c                    dS r?   r;   r<   s    r   example_valuezBrowserState.example_valueW   rB   r   c                    dS )zABrowserState components should not break wrapper grouping chains.Fr;   r<   s    r   breaks_groupingzBrowserState.breaks_groupingZ   s    ur   r   )r   r   r   r   r   r   r   r   )r2   r   r
   r   r	   r   r
   r   )r
   r7   )r
   r   )r
   r   )__name__
__module____qualname__r   changeEVENTSr/   r4   r6   r=   rA   rD   rF   __classcell__)r1   s   @r   r   r      s        m_F "( #'!( ( ( ( ( ( ( (4	 	 	 	, , , ,J J J J             r   r   rG   )__doc__
__future__r   r   r!   typingr   gradio_client.documentationr   pydanticr   r   gradio.components.baser   gradio.eventsr   r   r   r;   r   r   <module>rU      s    " " " " " " " "         0 0 0 0 0 0 3 3 3 3 3 3 , , , , , ,            	 	 	 	 
? ? ? ? ?9 ? ? ? ? ?r   