
    ~-h,                        d dl mZ d dlmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZmZmZ ddlmZ dd	lmZmZ erdd
lmZ  ed      Z G d deee         Z G d dee   ee      Zy)    )annotations)TYPE_CHECKINGGenericListOptionalTypeVarN)RenderableType)Text)AnyLiteral	TypedDict   )TextInputHandler)CursorOffsetElement)	BaseStyleReturnValuec                  "    e Zd ZU ded<   ded<   y)Optionstrnamer   valueN)__name__
__module____qualname____annotations__     W/var/www/core.comfia.cic-ware.com/crm/lib/python3.12/site-packages/rich_toolkit/menu.pyr   r      s    
Ir   r   c                  \    e Zd Zej                  dgZej                  dgZej                  dgZ	ej                  dgZdZdZdZ	 	 ddd	d
	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZddZedd       ZddZddZd dZd dZd! fdZd"dZedd       Zd Zd Zed"d       Zd#dZed$d       Z xZS )%Menujkhlu   ●u   ○zFilter: Nr   )stylecursor_offsetc                  t        j                  |      | _        || _        || _        d| _        || _        || _        d| _        d | _	        |t        | j                        z   }t        j                  | ||       t        | 5          y )Nr   r   r&   metadata)r
   from_markuplabelinlineallow_filteringselectedr*   _options_padding_bottomvalidlenfilter_promptr   __init__super)	selfr,   optionsr-   r.   r&   r'   r*   	__class__s	           r   r5   zMenu.__init__"   s|     %%e,
.  
%D,>,>(??UX>r   c                   t        j                         }|dk(  ry| j                  r;| j                  g| j                  gg\  }}| j
                  g| j                  gg\  }}n0| j                  | j                  }}| j                  | j                  }}| j                  r||fn||f\  }}||v ry||v ry| j                  r|S y )Nenternextprev)clickgetcharr.   LEFT_KEY	RIGHT_KEYDOWN_KEYUP_KEY	LEFT_KEYS
RIGHT_KEYS	DOWN_KEYSUP_KEYSr-   )r7   char	left_keys
right_keys	down_keysup_keys	next_keys	prev_keyss           r   get_keyzMenu.get_key?   s    }}4<&*mm_t~~6F$G!Iz#'==/DKK=!AIw$(NNDOOzI!%wI (,{{Z#G8L 		9 99Kr   c                    | j                   rG| j                  D cg c]1  }| j                  j                         |d   j                         v r|3 c}S | j                  S c c}w )Nr   )r.   r0   textlower)r7   options     r   r8   zMenu.optionsZ   s]     #mm99??$v(<(<(>>   }}s   6A c                   |dk(  r| xj                   dz  c_         n|dk(  r| xj                   dz  c_         | j                   dk  rt        | j                        dz
  | _         | j                   t        | j                        k\  rd| _         y y )Nr=   r   r>   r   )r/   r3   r8   )r7   keys     r   _update_selectionzMenu._update_selectione   sn    &=MMQMF]MMQM==1-1DM==C--DM .r   c                    t               }|j                  | j                         |j                  d       |j                  | j                  | j                     d   | j
                  j                  d             |S )N r   result)r&   )r
   appendr,   r8   r/   console	get_style)r7   result_texts     r   render_resultzMenu.render_resultq   sk    f4::&3LL'/,,((2 	 	

 r   c                v    | j                   r| j                  n| j                  }| j                  r|d   g}||v S Nr   )r-   rF   rG   r.   r7   rV   keyss      r   is_next_keyzMenu.is_next_key}   s5    "&++t4>>G9Dd{r   c                v    | j                   r| j                  n| j                  }| j                  r|d   g}||v S ra   )r-   rE   rH   r.   rb   s      r   is_prev_keyzMenu.is_prev_key   s5    !%t~~$,,G9Dd{r   c                j   d | j                  |      r| j                  d       nZ| j                  |      r| j                  d       n7| j                  r| j                  | j                     d   t
        |   |       r0t        fdt        | j                        D        d      }|| _        y y )Nr=   r>   r   c              3  8   K   | ]  \  }}|d    k(  r|  yw)r   Nr   ).0indexrT   current_selections      r   	<genexpr>z"Menu.handle_key.<locals>.<genexpr>   s*      %vf~):: s   r   )	rd   rW   rf   r8   r/   r6   
handle_keyr=   	enumerate)r7   rV   matching_indexrk   r9   s      @r   rm   zMenu.handle_key   s    +/C ""6*c"""6*||$(LL$?$G!Gs#!)24<<)@
 N +DM r   c                f    | j                   r%| j                  rt        | j                        dk(  ryy)Nr   FT)r.   rR   r3   r8   r7   s    r   _handle_enterzMenu._handle_enter   s'    DII#dll2Cq2Hr   c                "    | j                   du ryy )NFzThis field is required)r2   rq   s    r   validation_messagezMenu.validation_message   s    ::+r   c                $    | j                          y N)on_validaterq   s    r   on_blurzMenu.on_blur   s    r   c                >    t        | j                        dkD  | _        y ra   )r3   r8   r2   rq   s    r   rw   zMenu.on_validate   s    &*
r   c                    | j                   S rv   )r.   rq   s    r   should_show_cursorzMenu.should_show_cursor   s    ###r   c                    ddl m}  || j                  | j                        }| g|_        |j                          | j                  | j                     d   S )Nr   )	Containerr)   r   )	containerr}   r&   r*   elementsrunr8   r/   )r7   r}   r~   s      r   askzMenu.ask   sD    (DJJG	"V	||DMM*733r   c                d    d}t        | j                        | j                  z   }t        ||      S )N   )topleft)r3   r4   cursor_leftr   )r7   r   left_offsets      r   r'   zMenu.cursor_offset   s/    $,,-0@0@@+66r   )FF)r,   r   r8   List[Option[ReturnValue]]r-   boolr.   r   r&   zOptional[BaseStyle]r'   intr*   r   )returnzOptional[str])r   r   )rV   zLiteral['next', 'prev']r   None)r   r	   )rV   r   r   r   )rV   r   r   r   )r   r   )r   r   )r   r   ) r   r   r   r   rC   rG   rD   rH   rA   rE   rB   rF   current_selection_charselection_charr4   r5   rP   propertyr8   rW   r_   rd   rf   rm   rr   rt   rx   rw   r{   r   r'   __classcell__)r9   s   @r   r!   r!      s3   !**C0I&&,G!**C0I",,c2J"NM  % &* + 	
  #  :6  

+2  + $ $	4 7 7r   r!   )
__future__r   typingr   r   r   r   r   r?   rich.consoler	   	rich.textr
   typing_extensionsr   r   r   _input_handlerr   elementr   r   styles.baser   r   r   r!   r   r   r   <module>r      s^    " B B  '  5 5 , *&m$Y, 
v77;!17 v7r   