
    tjE                     $    d dl mZ  G d d      Zy)   )	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")
    c                 f    t         |   d|       t         |   di        t         |   d|       y )N_server_vn_dict_vn_constructor)super__setattr__)selfservervn_constructor	__class__s      </DATA/.local/lib/python3.12/site-packages/trame_server/ui.py__init__zVirtualNodeManager.__init__   s1    Iv.J+-~>    c                 $    | j                  |      S N)__getattr__)r   names     r   __getitem__zVirtualNodeManager.__getitem__   s    %%r   c                     t        |      rt        | 	  |      S || j                  vr)| j	                  | j
                        | j                  |<   | j                  |   S )N)trame_server)r   r
   r   r   r	   r   )r   r   r   s     r   r   zVirtualNodeManager.__getattr__   sU    T?7&t,,t}}$"&"6"6DLL"6"QDMM$}}T""r   c                     || _         y)zShould not be called by userN)r	   )r   constructors     r   set_vn_constructorz%VirtualNodeManager.set_vn_constructor!   s
    *r   c                 b    | j                   j                         D ]  }|j                           y)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                 b    | j                   j                         D ]  }|j                           y)z3Push all VirtualNode contents to registered layoutsN)r   r   flush_contentr    s     r   r#   z VirtualNodeManager.flush_content-   s%    --&&(B )r   c                 b    | j                   j                         D ]  }|j                           y)zClear all VirtualNode contentsN)r   r   clearr    s     r   r%   zVirtualNodeManager.clear2   s"    --&&(BHHJ )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-      s    1 1r   