
    +jE                     ,    d dl mZ  G d d          ZdS )   )	is_dunderc                   L     e Zd ZdZd
 fd	Zd Z fdZd Zd Zd Z	d	 Z
 xZS )VirtualNodeManageraP  VirtualNodeManager acts as a container for VirtualNode

    It allows widgets to be passed around that are not yet defined,
    and can be defined or re-defined later. For example:

    >>> with layout:
    ...     ui.hello_widget(layout)  # widget is currently undefined
    >>> with ui.hello_widget:
    ...     html.Div("Hello")
    Nc                     t                                          d|           t                                          di            t                                          d|           d S )N_server_vn_dict_vn_constructor)super__setattr__)selfservervn_constructor	__class__s      I/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trame_server/ui.py__init__zVirtualNodeManager.__init__   sX    Iv...J+++-~>>>>>    c                 ,    |                      |          S N)__getattr__)r   names     r   __getitem__zVirtualNodeManager.__getitem__   s    %%%r   c                     t          |          r!t                                          |          S || j        vr#|                     | j                  | j        |<   | j        |         S )N)trame_server)r   r
   r   r   r	   r   )r   r   r   s     r   r   zVirtualNodeManager.__getattr__   sb    T?? 	-77&&t,,,t}$$"&"6"6DL"6"Q"QDM$}T""r   c                     || _         dS )zShould not be called by userN)r	   )r   constructors     r   set_vn_constructorz%VirtualNodeManager.set_vn_constructor!   s    *r   c                 f    | j                                         D ]}|                                 dS )zh
        Remove any reference to previously registered layouts
        across all VirutalNodes.
        N)r   valuesclear_layoutsr   vns     r   r   z VirtualNodeManager.clear_layouts%   s@    
 -&&(( 	 	B	 	r   c                 f    | j                                         D ]}|                                 dS )z3Push all VirtualNode contents to registered layoutsN)r   r   flush_contentr    s     r   r#   z VirtualNodeManager.flush_content-   s>    -&&(( 	 	B	 	r   c                 f    | j                                         D ]}|                                 dS )zClear all VirtualNode contentsN)r   r   clearr    s     r   r%   zVirtualNodeManager.clear2   s8    -&&(( 	 	BHHJJJJ	 	r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r#   r%   __classcell__)r   s   @r   r   r      s        	 	? ? ? ? ? ?
& & &# # # # #+ + +    
      r   r   N)utilsr   r    r   r   <module>r-      sI         1 1 1 1 1 1 1 1 1 1r   