
    /_i                        d dl mZ d dlmZmZmZ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 d dlmZ  ee      Z G d	 d
ed      Z	 	 d	 	 	 	 	 	 	 ddZy)    )annotations)TYPE_CHECKINGAny	TypedDictcast)Self)StreamlitAPIException)
get_logger)get_script_run_ctx)SessionState)WidgetValuePresenterc                  "    e Zd ZU ded<   ded<   y)_TriggerPayloadstreventobjectvalueN)__name__
__module____qualname____annotations__     c/var/www/html/land_sniper/venv/lib/python3.12/site-packages/streamlit/components/v2/presentation.pyr   r   !   s    JMr   r   F)totalNc                     d fd}|S )a  Return a presenter that merges trigger events into CCv2 state.

    This function returns a callable that takes a component's persistent state
    value and the current `SessionState` instance, and returns the user-visible
    value that should appear in `st.session_state`.

    The presenter is side-effect-free and does not mutate stored state or
    callback behavior. It is intended to be attached to the persistent state
    widget via the generic `presenter` hook.

    Parameters
    ----------
    aggregator_id
        The ID of the trigger aggregator widget that holds the event payloads.

    Returns
    -------
    WidgetValuePresenter
        A callable that merges the trigger event values into the component's
        base state for presentation in `st.session_state`.

    c                D   dfdd }t        | t              rt        d|       }|.	 j                  j                  j                        }||j                  dk7  r| S 	 j                     }|d }nZt        |t              r*|D cg c]  }t        |t              rt        d|        }}n t        |t              rt        d|      g}nd }i }|=|D ]8  }|j                  d      }	t        |	t              s%|j                  d      ||	<   : t        |      }
|
j                  |        G fddt        t        t        f         } ||
      S | S # t        $ r d }Y w xY wc c}w # t        $ r$}t        j                  d	||
       | cY d }~S d }~ww xY w)Nc           	         t               }|PMj                  j                        }|j                  v s||j                  v rt        d| d|  d| d      y y y )Nz`st.session_state..z3` cannot be modified after the component with key `z` is instantiated.)r   _key_id_mapperget_key_from_idwidget_ids_this_runform_ids_this_runr	   )kctxuser_keycomponent_idsession_states      r   _check_modificationzLmake_bidi_component_presenter.<locals>._present.<locals>._check_modificationC   s    $&C<#;(77GGU C$;$;;3#8#88/,XJas ;&&.Z/AC  9	 $<r   dict[str, object]json_trigger_valuer   r   r   c                  d     e Zd Zd fdZddZd	 fdZd
dZd fdZd fdZ xZ	S )Fmake_bidi_component_presenter.<locals>._present.<locals>._WriteThroughc                $    t         |   |       y N)super__init__)selfdata	__class__s     r   r1   zOmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__init__   s    (.r   c                $    | j                  |      S r/   )get)r2   names     r   __getattr__zRmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__getattr__   s    #xx~-r   c                R    |j                  d      rt        | 	  ||      S || |<   y )N)___)
startswithr0   __setattr__)r2   r7   r   r4   s      r   r=   zRmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__setattr__   s-    ??;7#(7#6tU#CC%*T
#r   c                "    | |t        |       <   | S r/   )id)r2   memos     r   __deepcopy__zSmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__deepcopy__   s    )-RX#r   c                     |       |vry t         |   ||       	 	}&|j                  j                  t	        |              y y # t
        $ r }t        j                  d|       Y d }~y d }~ww xY w)Nz'Failed to persist CCv2 state update: %s)r0   __setitem___new_widget_stateset_from_valuedict	Exception_LOGGERdebug)
r2   r$   vsser4   r)   allowed_state_keysr'   r(   s
        r   rC   zRmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__setitem__   s    +A. /: !); ; # +Aq1	X!.B+7 " 4 4 C C$0$t*!"  8  ) X#MM*SUVWWXs   )A 	A6A11A6c                     |       t         |   |       	 }&|j                  j                  t	        |              y y # t
        $ r }t        j                  d|       Y d }~y d }~ww xY w)Nz)Failed to persist CCv2 state deletion: %s)r0   __delitem__rD   rE   rF   rG   rH   rI   )r2   r$   rK   rL   r4   r)   r'   r(   s       r   rO   zRmake_bidi_component_presenter.<locals>._present.<locals>._WriteThrough.__delitem__   sr    +A.+A.	!.B+7 " 4 4 C C$0$t*!"  8  ) #MM KQ s   )A 	A.A))A.)r3   r*   returnNone)r7   r   rP   r   )r7   r   r   r   rP   rQ   )r@   zdict[int, Any]rP   r   )r$   r   rJ   r   rP   rQ   r$   r   rP   rQ   )
r   r   r   r1   r8   r=   rA   rC   rO   __classcell__)r4   r)   rM   r'   r(   s   @r   _WriteThroughr-      s-    /.$$
X X. r   rT   z7Failed to merge trigger events into component state: %s)exc_inforR   )
isinstancerF   r   rD   widget_metadatar6   
value_typeKeyErrorlistr   updater   rG   rH   rI   )
base_valuer(   base_mapagg_metaagg_payloads_objpayloads_listpevent_to_valpayloadevflatrT   rL   r)   aggregator_idrM   r'   s    `           @r   _presentz/make_bidi_component_presenter.<locals>._presentB   s   	 .2j$'/<Hk"(::JJNN! #x':':>R'R%%,'4'F'F}'U$
 $+$(M 0$7 "2%%a. .2%M %
   0$7%)*;=M%N$OM$(M24 ,#0 D$[[1%b#./6{{7/CL,D +/|*<H%6 6Df$5 6p %T** I   ,'+$,%f  "M  
 "!"sU   7E2 &E 5E2 #E-1AE2 ?AE2 E*'E2 )E**E2 2	F;FFF)r\   r   r(   r   rP   r   r   )rf   r'   rM   rg   s   ``` r   make_bidi_component_presenterrh   &   s    8BH Or   )NN)rf   r   r'   z
str | NonerM   zset[str] | NonerP   r   )
__future__r   typingr   r   r   r   typing_extensionsr   streamlit.errorsr	   streamlit.loggerr
   streamlit.runtime.scriptrunnerr   streamlit.runtime.stater   streamlit.runtime.state.commonr   r   rH   r   rh   r   r   r   <module>rq      su    # 6 6 " 2 ' =4C X
iu   $*.``` (` 	`r   