
    +dq                     V    d dl ZddlmZmZ  G d de          Z G d de          ZdS )    N   )	MAX_WIDTHBasec                        e Zd ZdZ fdZd Zed             Zej        d             Zed             Z	e	j        d             Z	d Z
d	 Z xZS )
SearchInputsa]  Input areas to control search parameters

    Attributes
    ----------
    text: str
        text to use in search. Displayed in text_widget
    depth: int or 'All'
        depth of nestedness to use in search. Displayed in depth_widget.
    children: list of panel objects
        children that will be used to populate the panel when visible
    panel: panel layout object
        instance of a panel layout (row or column) that contains children
        when visible
    watchers: list of param watchers
        watchers that are set on children - cleaned up when visible
        is set to false.
    c                 r    t          j        ddd          | _         t                      j        di | d S )NzSearch Inputsminr   )nameheight_policymargin )pnRowpanelsuper__init__)selfkwargs	__class__s     ?lib/python3.11/site-packages/intake/interface/catalog/search.pyr   zSearchInputs.__init__   s>    VaPPP
""6"""""    c                 V   t           j                            dd          }t           j                            dd          }t           j                            ddd          | _        t           j                            g dd	d
d          | _        || j        || j        g| _        d S )NzSearch Text:center)alignzDepth:zSet of wordsmax)placeholderwidth_policyr   )12345AllP      )optionswidthheightr   )	r   paneMarkdownwidgets	TextInputtext_widgetSelectdepth_widgetchildren)r   
text_labeldepth_labels      r   setupzSearchInputs.setup#   s    W%%nH%EE
g&&xx&@@://NY^fn/ooJ--6V6V6V^`iks{-||#T%5{DDUVr   c                     | j         j        S )z/Text to use in search. Displayed in text_widgetr-   valuer   s    r   textzSearchInputs.text+   s     %%r   c                     || j         _        d S Nr5   )r   r8   s     r   r8   zSearchInputs.text0   s    !%r   c                 X    | j         j        dk    rt          | j         j                  ndS )z?Depth of nestedness to use in search. Displayed in depth_widgetr#   c   )r/   r6   intr7   s    r   depthzSearchInputs.depth4   s.     04/@/F%/OWs4$*+++UWWr   c                 v    t          |t                    r|dk    rt          |          nd}|| j        _        d S )N   r#   )
isinstancer=   strr/   r6   )r   r>   s     r   r>   zSearchInputs.depth9   s=    eS!! 	8"'1*7CJJJ%E"'r   c                      | j         | j        dS )z)Serialize the current state of the objectr8   r>   rD   r7   s    r   __getstate__zSearchInputs.__getstate__?   s     IZ
 
 	
r   c                 :    |d         | _         |d         | _        | S )Set the current state of the object from the serialized version.
        Works inplace. See ``__getstate__`` to get serialized version and
        ``from_state`` to create a new object.r8   r>   rD   r   states     r   __setstate__zSearchInputs.__setstate__F   s     &M	7^
r   )__name__
__module____qualname____doc__r   r3   propertyr8   setterr>   rE   rJ   __classcell__r   s   @r   r   r      s         $# # # # #W W W & & X& 
[& & [& X X XX \( ( \(

 
 
      r   r   c                   @     e Zd ZdZd	 fd	Zd Zd	dZd
dZd Z xZ	S )Searcha  Search panel for searching a list of catalogs

    Parameters
    ----------
    cats: list of catalogs
        catalogs that will be searched
    done_callback: function with cats as input
        function that is called when new cats have been generated
        via the search functionality

    Attributes
    ----------
    children: list of panel objects
        children that will be used to populate the panel when visible
    panel: panel layout object
        instance of a panel layout (row or column) that contains children
        when visible
    watchers: list of param watchers
        watchers that are set on children - cleaned up when visible
        is set to false.
    Nc                     || _         || _        t          j        dddt          d          | _        t                      | _         t                      j	        di | d S )NrT   r	   r   r   )r
   r   r   	max_widthr   r   )
catsdone_callbackr   r   r   r   r   inputsr   r   )r   rW   rX   r   r   s       r   r   zSearch.__init__f   s^    	*VU^gpqrrr
"nn""6"""""r   c                     t           j                            ddd          | _        | j        j                            | j        d          g| _        | j        j	        | j        g| _
        d S )Nu   🔍2   r   )r
   r'   r   clicks)r   r+   Buttonwidgetparamwatch	do_searchwatchersrY   r   r0   r7   s    r   r3   zSearch.setupm   sX    j''V2X'NN*00JJK*DK8r   c                 @   g }| j         D ]b}|                    | j        j        | j        j                  }t          t          |                    dk    r|                    |           ct          |          dk    r|                     |           d| _	        dS dS )zDo search and close panel)r>   r   FN)
rW   searchrY   r8   r>   lenlistappendrX   visible)r   argnew_catscatnew_cats        r   ra   zSearch.do_searcht   s    9 	) 	)Cjj!19JjKKG4==!!A% )(((x==1 	!x((( DLLL	! 	!r   Tc                 t    | j         | j                                        d}|rd | j        D             |d<   |S )zSerialize the current state of the object. Set include_cats
        to False when using with another panel that will include cats.)rh   rY   c                 6    g | ]}|                                 S r   )rE   ).0rk   s     r   
<listcomp>z'Search.__getstate__.<locals>.<listcomp>   s$    EEECS--//EEEr   rW   )rh   rY   rE   rW   )r   include_catsrI   s      r   rE   zSearch.__getstate__   sH     !LDK4L4L4N4NOO 	FEE49EEEE&Mr   c                     d|v r|d         | _         |                    dd          | _        | j                            |d                    | S )rG   rW   rh   TrY   )rW   getrh   rY   rJ   rH   s     r   rJ   zSearch.__setstate__   sO     U? 	&fDIyyD11  x111r   r:   )T)
rK   rL   rM   rN   r   r3   ra   rE   rJ   rQ   rR   s   @r   rT   rT   O   s         ,# # # # # #9 9 9	! 	! 	! 	!         r   rT   )r   r   baser   r   r   rT   r   r   r   <module>ru      s        " " " " " " " "@ @ @ @ @4 @ @ @F@ @ @ @ @T @ @ @ @ @r   