+
    Ri;j                       ^ RI Ht ^ RIt^ RIHt ^ RIHtHtHtH	t	H
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHtHtHt ^ RIHtHtHt ^ RI H!t! ^ RI"H#t# ^ RI$H%t%H&t& ^ RI'H(t( ^RI)H*t*H+t+H,t,H-t- ^RI.H/t/H0t0H1t1 ^RI2H3t3 ^RI4H5t5 ]'       d	   ^ RI6H7t7H8t8 RR.t9]!t: ! R R]14      t;R#R R llt<R R lt= ! R R]*4      t> ! R R]14      t? ! R  R]+4      t@ ! R! R"]14      tAR# )$    )annotationsN)zip_longest)TYPE_CHECKINGCallableIterableSequenceTypeVarcast)WeakKeyDictionary)get_app)CompletionState)
Completion)Point)	ConditionFilterOrBoolhas_completionsis_done	to_filter)StyleAndTextTuplesfragment_list_widthto_formatted_text)KeyPressEvent)explode_text_fragments)
MouseEventMouseEventType)
get_cwidth)ConditionalContainerHSplitScrollOffsetsWindow)GetLinePrefixCallable	UIContent	UIControl)	Dimension)ScrollbarMargin)KeyBindingsNotImplementedOrNoneCompletionsMenuMultiColumnCompletionsMenuc                      ] tR t^1tRt^tR R ltR R ltR R ltR R	 lt	R
 R lt
R R ltR R ltR R ltR R ltRtR# )CompletionsMenuControla2  
Helper for drawing the complete menu to the screen.

:param scroll_offset: Number (integer) representing the preferred amount of
    completions to be displayed before and after the current one. When this
    is a very high number, the current completion will be shown in the
    middle most of the time.
c                   V ^8  d   QhRR/#    returnbool )formats   "Z/home/ubuntu/hermes-agent/venv/lib/python3.14/site-packages/prompt_toolkit/layout/menus.py__annotate__#CompletionsMenuControl.__annotate__@         4     c                	    R # Fr1   selfs   &r3   	has_focus CompletionsMenuControl.has_focus@       r7   c                    V ^8  d   QhRRRR/# r.   max_available_widthintr/   
int | Noner1   )r2   s   "r3   r4   r5   C   s      3 : r7   c                	    \        4       P                  P                  pV'       d-   V P                  R V4      pV P	                  R V4      pW4,           # ^ # )i  )r   current_buffercomplete_state_get_menu_width_get_menu_meta_width)r;   rA   rF   
menu_widthmenu_meta_widths   &&   r3   preferred_width&CompletionsMenuControl.preferred_widthC   sH     11@@--c>BJ"77^LO//r7   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r.   widthrB   max_available_height
wrap_linesr0   get_line_prefixzGetLinePrefixCallable | Noner/   rC   r1   )r2   s   "r3   r4   r5   M   s<       " 	
 6 
r7   c                	|    \        4       P                  P                  pV'       d   \        VP                  4      # ^ # )r   )r   rE   rF   lencompletions)r;   rO   rP   rQ   rR   rF   s   &&&&& r3   preferred_height'CompletionsMenuControl.preferred_heightM   s.     !11@@~1122r7   c               $    V ^8  d   QhRRRRRR/# r.   rO   rB   heightr/   r"   r1   )r2   s   "r3   r4   r5   Z   s!     # #C # # #r7   c                  a aaaaa	 \        4       P                  P                  pV'       d   VP                  oVP                  oS P                  W4      oS P                  VS,
          V4      oS P                  V4      o	R VVVVV V	3R llp\        T\        ^ S;'       g    ^ R7      \        S4      R7      # \        4       # )z-
Create a UIContent object for this control.
c                    V ^8  d   QhRRRR/# r.   irB   r/   r   r1   )r2   s   "r3   r4   ;CompletionsMenuControl.create_content.<locals>.__annotate__j   s      C $6 r7   c                   < SV ,          pV S8H  p\        WSR R7      pS	'       d   VSP                  WS4      ,          pV# )Tspace_after)_get_menu_item_fragments_get_menu_item_meta_fragments)
r^   cis_current_completionresultrU   indexrJ   rI   r;   	show_metas
   &   r3   get_line7CompletionsMenuControl.create_content.<locals>.get_linej   sO    N()U
%1jd d@@/ F r7   )xy)rj   cursor_position
line_count)r   rE   rF   rU   complete_indexrG   rH   
_show_metar"   r   rT   )
r;   rO   rZ   rF   rj   rU   rh   rJ   rI   ri   s
   f&&  @@@@@r3   create_content%CompletionsMenuControl.create_contentZ   s     !11@@(44K"11E --eDJ"77
"NO 7I  ! %UZZa 8{+  {r7   c                    V ^8  d   QhRRRR/# )r.   rF   r   r/   r0   r1   )r2   s   "r3   r4   r5      s     L L LT Lr7   c                    \         ;QJ d&    R VP                   4       F  '       g   K   R# 	  R# ! R VP                   4       4      # )zD
Return ``True`` if we need to show a column with meta information.
c              3  8   "   T F  qP                   x  K  	  R # 5iN)display_meta_text.0re   s   & r3   	<genexpr>4CompletionsMenuControl._show_meta.<locals>.<genexpr>   s     K0J1&&0J   TF)anyrU   )r;   rF   s   &&r3   rq   !CompletionsMenuControl._show_meta   s9     sK0J0JKssKsKsK0J0JKKKr7   c               $    V ^8  d   QhRRRRRR/# r.   	max_widthrB   rF   r   r/   r1   )r2   s   "r3   r4   r5      s"     

 

 

o 

RU 

r7   c           
         \        V\        V P                  \        R VP                   4       4      ^,           4      4      # )z&
Return the width of the main column.
c              3  L   "   T F  p\        VP                  4      x  K  	  R # 5irw   r   display_textry   s   & r3   r{   9CompletionsMenuControl._get_menu_width.<locals>.<genexpr>   s     S8R1Jq~~..8R   "$)minmax	MIN_WIDTHrU   )r;   r   rF   s   &&&r3   rG   &CompletionsMenuControl._get_menu_width   s=     S8R8RSSVWW
 	
r7   c               $    V ^8  d   QhRRRRRR/# r   r1   )r2   s   "r3   r4   r5      s$      .=	r7   c                   a R R loV P                  V4      '       dL   VP                  p\        V4      ^8  d
   VR,          p\        V\	        V3R lV 4       4      ^,           4      # ^ # )z&
Return the width of the meta column.
c                    V ^8  d   QhRRRR/# )r.   
completionr   r/   rB   r1   )r2   s   "r3   r4   ACompletionsMenuControl._get_menu_meta_width.<locals>.__annotate__   s     	< 	<: 	<# 	<r7   c                ,    \        V P                  4      # rw   r   rx   )r   s   &r3   
meta_width?CompletionsMenuControl._get_menu_meta_width.<locals>.meta_width   s    j::;;r7   :N   Nc              3  4   <"   T F  pS! V4      x  K  	  R # 5irw   r1   )rz   re   r   s   & r3   r{   >CompletionsMenuControl._get_menu_meta_width.<locals>.<genexpr>   s     %I[jmm[s   )rq   rU   rT   r   r   )r;   r   rF   rU   r   s   &&& @r3   rH   +CompletionsMenuControl._get_menu_meta_width   s]    	< ??>** )44K;#%)$/y#%I[%I"IA"MNNr7   c               (    V ^8  d   QhRRRRRRRR/# )	r.   r   r   rf   r0   rO   rB   r/   r   r1   )r2   s   "r3   r4   r5      s,     
 
$
=A
JM
	
r7   c                	    V'       d   R pMRp\        VP                  V^,
          4      w  rVRV^,
          V,
          ,          p\        \        \        . 4      R.,           V,           RV3.,           VR7      # )z-class:completion-menu.meta.completion.currentz%class:completion-menu.meta.completion  styler   r   )_trim_formatted_textdisplay_metar   r
   r   )r;   r   rf   rO   	style_strtexttwpaddings   &&&&    r3   rd   4CompletionsMenuControl._get_menu_item_meta_fragments   sm     !GI?I'
(?(?KR( #R(I;6="gO
 	
r7   c                    V ^8  d   QhRRRR/# r.   mouse_eventr   r/   r'   r1   )r2   s   "r3   r4   r5      s       8L r7   c                   \        4       P                  pVP                  \        P                  8X  d/   VP                  VP                  P                  4       RVn        R# VP                  \        P                  8X  d   VP                  ^RR7       R# VP                  \        P                  8X  d   VP                  ^RR7       R# )z.
Handle mouse events: clicking and scrolling.
NTcountdisable_wrap_around)r   rE   
event_typer   MOUSE_UPgo_to_completionpositionrm   rF   SCROLL_DOWNcomplete_next	SCROLL_UPcomplete_previous)r;   r   bs   && r3   mouse_handler$CompletionsMenuControl.mouse_handler   s     I$$!!^%<%<<{33556#A  ##~'A'AAOO!O> 	 ##~'?'??aTBr7   r1   N)__name__
__module____qualname____firstlineno____doc__r   r<   rK   rV   rr   rq   rG   rH   rd   r   __static_attributes__r1   r7   r3   r+   r+   1   sB     I#JL

*
  r7   r+   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r.   r   r   rf   r0   rO   rB   rb   r/   r   r1   )r2   s   "r3   r4   r4      s:        	
 r7   c                h   V'       d   RV P                    RV P                   2pMRV P                   ,           p\        V P                  V'       d
   V^,
          MV^,
          4      w  rVRV^,
          V,
          ,          p\	        \        \        . 4      R.,           V,           RV3.,           VR7      # )zS
Get the style/text tuples for a menu item, styled and trimmed to the given
width.
z)class:completion-menu.completion.current r   z!class:completion-menu.completion r   r   r   )r   selected_styler   displayr   r
   r   )r   rf   rO   rb   r   r   r   r   s   &&&&    r3   rc   rc      s     ?
@P@P?QQRS]SlSlRmn	7*:J:JJ	#+UQY519HD UQY^$G$	{2T9b']OK r7   c               $    V ^8  d   QhRRRRRR/# )r.   formatted_textr   r   rB   r/   ztuple[StyleAndTextTuples, int]r1   )r2   s   "r3   r4   r4      s$     % %&%36%#%r7   c                    \        V 4      pW!8  dl   . pV^,
          p\        V 4       F6  p\        V^,          4      pWd8:  d   VP                  V4       WF,          pK6   M	  VP                  R4       W1V,
          3# W3# )zc
Trim the text to `max_width`, append dots when the text is too long.
Returns (text, width) tuple.
)r   z...)r   r   r   append)r   r   rO   rg   remaining_widthstyle_and_chch_widths   &&     r3   r   r      s      /E #a-2>BL!,q/2H*l++ C 	k"?222$$r7   c                  2   a  ] tR tRtRR V 3R llltRtV ;t# )r(   i  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r.   
max_heightrC   scroll_offsetzint | Callable[[], int]extra_filterr   display_arrowsz_indexrB   r/   Noner1   )r2   s   "r3   r4   CompletionsMenu.__annotate__	  sF     
 

 /
 #	

 %
 
 

r7   c                	
  < \        V4      p\        V4      p\        SV `	  \        \	        4       \        ^R7      \        ^VR7      \        W"R7      \        VR7      .RRVR7      V\        ,          \        ( ,          R7       R	# )
   r   )r   r   )topbottom)r   Tclass:completion-menu)contentrO   rZ   scroll_offsetsright_marginsdont_extend_widthr   r   r   filterN)
r   super__init__r    r+   r$   r   r%   r   r   )r;   r   r   r   r   r   	__class__s   &&&&&&r3   r   CompletionsMenu.__init__	  sx     !.">2.0A& QJ7,U.nMN"&-	  /1WH< 	 	
r7   r1   )Nr   TF )r   r   r   r   r   r   __classcell__r   s   @r3   r(   r(     s    
 
 
r7   c                      ] tR tRtRt^tRR R lltR R ltR R ltR	 R
 lt	R R lt
R R ltR R ltR R ltR R ltRtR# ) MultiColumnCompletionMenuControli%  a>  
Completion menu that displays all the completions in several columns.
When there are more completions than space for them to be displayed, an
arrow is shown on the left or right side.

`min_rows` indicates how many rows will be available in any possible case.
When this is larger than one, it will try to use less columns and more
rows until this value is reached.
Be careful passing in a too big value, if less than the given amount of
rows are available, more columns would have been required, but
`preferred_width` doesn't know about that and reports a too small value.
This results in less completions displayed and additional scrolling.
(It's a limitation of how the layout engine currently works: first the
widths are calculated, then the heights.)

:param suggested_max_column_width: The suggested max width of a column.
    The column can still be bigger than this, but if there is place for two
    columns of this width, we will display two columns. This to avoid that
    if there is one very wide completion, that it doesn't significantly
    reduce the amount of columns.
c               $    V ^8  d   QhRRRRRR/# )r.   min_rowsrB   suggested_max_column_widthr/   r   r1   )r2   s   "r3   r4   -MultiColumnCompletionMenuControl.__annotate__>  s"       c SW r7   c                	    V^8  g   Q hWn         W n        ^ V n        \        4       V n        ^ V n        ^ V n        ^ V n        / V n        RV n	        RV n
        ^ V n        R# )   FN)r   r   scrollr   "_column_width_for_completion_state_rendered_rows_rendered_columns_total_columns_render_pos_to_completion_render_left_arrow_render_right_arrow_render_width)r;   r   r   s   &&&r3   r   )MultiColumnCompletionMenuControl.__init__>  sj    1}} *D'  	/
  !"LN&"'#( r7   c                   V ^8  d   QhRR/# r.   r/   r   r1   )r2   s   "r3   r4   r   X  s      t r7   c                	    ^ V n         R# )r   N)r   r:   s   &r3   reset&MultiColumnCompletionMenuControl.resetX  s	    r7   c                   V ^8  d   QhRR/# r-   r1   )r2   s   "r3   r4   r   [  r6   r7   c                	    R # r9   r1   r:   s   &r3   r<   *MultiColumnCompletionMenuControl.has_focus[  r>   r7   c                    V ^8  d   QhRRRR/# r@   r1   )r2   s   "r3   r4   r   ^  s     . .3 .: .r7   c           	        \        4       P                  P                  pVf   ^ # V P                  V4      p\	        V\
        P                  ! \        VP                  4      \        V P                  4      ,          4      ,          4      pWC8  d"   WAV P                  ,
          8  d   WC,          pK'  W@P                  ,           # )zc
Preferred width: prefer to use at least min_rows, but otherwise as much
as possible horizontally.
)r   rE   rF   _get_column_widthrB   mathceilrT   rU   floatr   _required_margin)r;   rA   rF   column_widthrg   s   &&   r3   rK   0MultiColumnCompletionMenuControl.preferred_width^  s    
 !11@@!--n=iiN667%:NNOP
 !t/D/DDD"F----r7   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rN   r1   )r2   s   "r3   r4   r   w  sC     U UU "U 	U
 6U 
Ur7   c                6   \        4       P                  P                  pVf   ^ # V P                  V4      p\	        ^WP
                  ,
          V,          4      p\        \        P                  ! \        VP                  4      \        V4      ,          4      4      # )zN
Preferred height: as much as needed in order to display all the completions.
)r   rE   rF   r  r   r  rB   r  r  rT   rU   r  )r;   rO   rP   rQ   rR   rF   r  column_counts   &&&&&   r3   rV   1MultiColumnCompletionMenuControl.preferred_heightw  ss     !11@@!--n=1u'<'<<MN499S!;!;<u\?RRSTTr7   c               $    V ^8  d   QhRRRRRR/# rY   r1   )r2   s   "r3   r4   r     s+     sC sCC sC sC sCr7   c           
       aaa \        4       P                  P                  oSf   \        4       # V P	                  S4      p/ V n        \        R4      pRR R llpR VV3R llp^p\        W,
          V4      pW0P                  8  d   W3V P                  ,          ,          p\        ^WP                  ,
          V,          4      p\        V! VSP                  4      4      p	\        \        V	!  4      p
SP                  ;'       g    ^ V,          p\        V\        V P                  W,
          ^,           4      4      V n        V P                  ^ 8  pV P                  \!        V
^ ,          4      V,
          8  p. o\#        V
4       EFi  w  r. pV\!        V
4      ^,          8H  pV'       d   TP%                  RV'       d   RMR	34       MV'       d   VP%                  R4       \#        WP                  R RV 4       Fs  w  poSeP   V\'        SV! S4      VR
R7      ,          p\)        V4       F"  pSV P
                  VV,          V,           V3&   K$  	  KY  VP%                  RR	V,          34       Ku  	  V'       g	   V'       d   VP%                  R4       V'       d   TP%                  RV'       d   RMR	34       MV'       d   VP%                  R4       SP%                  \+        VRR7      4       EKl  	  W n        Wn        \!        V	4      V n        Wn        Wn        W8,          V,           V,           ^,           V n        R V3R llp\        V\!        V
4      R7      # )z*
Create a UIContent object for this menu.
N_Tc               (    V ^8  d   QhRRRRRRRR/# )	r.   nrB   iterablezIterable[_T]	fillvaluez	_T | Noner/   zIterable[Sequence[_T | None]]r1   )r2   s   "r3   r4   EMultiColumnCompletionMenuControl.create_content.<locals>.__annotate__  s,     	; 	;	;*	;7@	;*	;r7   c                >    \        V4      .V ,          p\        VRV/ # )z*grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxxr  )iterr   )r  r  r  argss   &&& r3   grouper@MultiColumnCompletionMenuControl.create_content.<locals>.grouper  s%     N#a'DT:::r7   c                    V ^8  d   QhRRRR/# )r.   r   r   r/   r0   r1   )r2   s   "r3   r4   r    s     	 	j 	T 	r7   c                f   < SRJ;'       d&    SP                   RJ;'       d    SSP                  8H  # )z@Returns True when this completion is the currently selected one.N)rp   current_completion)r   re   rF   s   &r3   rf   NMultiColumnCompletionMenuControl.create_content.<locals>.is_current_completion  sB     d* ; ;"11=; ;:::r7   zclass:scrollbar<r   Fra   class:completion>r   r   c                    V ^8  d   QhRRRR/# r]   r1   )r2   s   "r3   r4   r    s     	) 	) 	) 2 	)r7   c                   < SV ,          # rw   r1   )r^   fragments_for_lines   &r3   rj   AMultiColumnCompletionMenuControl.create_content.<locals>.get_line  s    %a((r7   rj   ro   rw   r   )r   r   )r   rE   rF   r"   r  r   r	   r   r   r   r  listrU   ziprp   r   rT   	enumerater   rc   ranger   r   r   r   r   r   r   )r;   rO   rZ   r  r  r  rf   HORIZONTAL_MARGIN_REQUIREDvisible_columnscolumns_rows_selected_columnrender_left_arrowrender_right_arrow	row_indexrow	fragments
middle_rowcolumn_indexrl   rj   re   rF   r$  s   &&&                  @@@r3   rr   /MultiColumnCompletionMenuControl.create_content  s    !11@@!;--n=)+&T]	;	 	 &'" 5=|L 999 T-L-LLLLa%*?*?"?L!PQ(B(BCDS(^$ *88==A&HSo.ORS.ST
 !KK!O![[3uQx=?+JJ  '.NI,.I"c%jAo5J !  "3JSC!PQ#   + $-S-?@P-Q#Ra=!903\u" I
 #<0  66)L81<iH 1
 $$&8#:L%MN $S  !$6  !:; "  "3JSC!PQ"  !:; %%!)3JKO /V %!0!(m"3#5 *->>ASSVWW 		) 	) (s5zBBr7   c                    V ^8  d   QhRRRR/# )r.   completion_stater   r/   rB   r1   )r2   s   "r3   r4   r     s      / c r7   c                &    V P                   V,          w  r#V\        VP                  4      8w  d   \        hV#   \         dM    \	        R TP                   4       4      ^,           p\        TP                  4      T3T P                   T&   Tu # i ; i)z"
Return the width of each column.
c              3  L   "   T F  p\        VP                  4      x  K  	  R # 5irw   r   ry   s   & r3   r{   EMultiColumnCompletionMenuControl._get_column_width.<locals>.<genexpr>  s     U8T1Jq~~..8Tr   )r   rT   rU   KeyErrorr   )r;   r9  r   rO   rg   s   &&   r3   r  2MultiColumnCompletionMenuControl._get_column_width  s    	BBCSTLE,8899L 		U8H8T8TUU 
 $001ID334DE M		s   69 ABBc                    V ^8  d   QhRRRR/# r   r1   )r2   s   "r3   r4   r     s     * * *8L *r7   c                  a a \        4       P                  oR VV 3R llpR VV 3R llpVP                  \        P                  8X  d
   V! 4        R# VP                  \        P
                  8X  d
   V! 4        R# VP                  \        P                  8X  d   VP                  P                  pVP                  P                  pV^ 8X  d   S P                  '       d   V! 4        R# VS P                  ^,
          8X  d   S P                  '       d   V! 4        R# S P                  P                  WE34      pV'       d   SP                  V4       R# )z!
Handle scroll and click events.
c                   V ^8  d   QhRR/# r   r1   )r2   s   "r3   r4   DMultiColumnCompletionMenuControl.mouse_handler.<locals>.__annotate__  s     	2 	2T 	2r7   c                    < S P                  SP                  R R7       \        ^ SP                  ^,
          4      Sn        R# Tr   N)r   r   r   r   r   r;   s   r3   scroll_leftCMultiColumnCompletionMenuControl.mouse_handler.<locals>.scroll_left  s2    d&9&9tTaq1DKr7   c                   V ^8  d   QhRR/# r   r1   )r2   s   "r3   r4   rB    s     	 	d 	r7   c                    < S P                  SP                  R R7       \        SP                  SP                  ,
          SP
                  ^,           4      Sn        R# rD  )r   r   r   r   r   r   rE  s   r3   scroll_rightDMultiColumnCompletionMenuControl.mouse_handler.<locals>.scroll_right  sC    OO$"5"54OP##d&<&<<dkkAoDKr7   N)r   rE   r   r   r   r   r   r   rl   rm   r   r   r   r   getapply_completion)r;   r   rF  rJ  rl   rm   r   r   s   f&     @r3   r   .MultiColumnCompletionMenuControl.mouse_handler  s    I$$	2 	2	 	 !!^%?%??N2 / ##~'?'??M, ) ##~'>'>>$$&&A$$&&A Av***M  d((1,,+++ N 	 ";;??G
&&z2r7   c                   V ^8  d   QhRR/# )r.   r/   r&   r1   )r2   s   "r3   r4   r   @  s     0 0+ 0r7   c                   a a ^ RI Hp V! 4       p\        R V 3R ll4       pRR V 3R llloVP                  RRVR7      R	 V3R
 ll4       pVP                  RRVR7      R V3R ll4       pV# )zW
Expose key bindings that handle the left/right arrow keys when the menu
is displayed.
)r&   c                   V ^8  d   QhRR/# r-   r1   )r2   s   "r3   r4   GMultiColumnCompletionMenuControl.get_key_bindings.<locals>.__annotate__J  s     
	X 
	X 
	Xr7   c                 0  < \        4       p V P                  P                  pVe   VP                  f   R# \        ;QJ d3    V3R lV P
                  P                   4       F  '       g   K   R# 	  R# ! V3R lV P
                  P                   4       4      # )z1Only handle key bindings if this menu is visible.Fc              3  @   <"   T F  qP                   S8H  x  K  	  R # 5irw   r   )rz   windowr;   s   & r3   r{   TMultiColumnCompletionMenuControl.get_key_bindings.<locals>.filter.<locals>.<genexpr>T  s     W<V&~~-<Vs   T)r   rE   rF   rp   r~   layoutvisible_windows)apprF   r;   s     r3   r   AMultiColumnCompletionMenuControl.get_key_bindings.<locals>.filterI  sr     )C //>>N %)F)F)N 3WCJJ<V<VW33W3W3WCJJ<V<VWWWr7   c                    V ^8  d   QhRRRR/# )r.   rightr0   r/   r   r1   )r2   s   "r3   r4   rR  V  s     	5 	5 	5 	5r7   c                \  < \        4       P                  pVP                  pVe   VP                  ew   VP                  pV '       d   VSP                  ,          pMVSP                  ,          p^ Tu;8:  d   \        VP                  4      8  d   M R # VP                  V4       R # R # R # R # rw   )r   rE   rF   rp   r   rT   rU   r   )r]  buffrF   	new_indexr;   s   &   r3   move?MultiColumnCompletionMenuControl.get_key_bindings.<locals>.moveV  s    9++D!00N)n.K.K.W*99	!4!44I!4!44I	CC(B(B$CCC)))4 D /X)r7   leftT)	is_globalr   c                    V ^8  d   QhRRRR/# r.   eventEr/   r   r1   )r2   s   "r3   r4   rR  i  s     	 	 	t 	r7   c                   < S! 4        R # rw   r1   rg  ra  s   &r3   _left@MultiColumnCompletionMenuControl.get_key_bindings.<locals>._lefth  s    Fr7   r]  c                    V ^8  d   QhRRRR/# rf  r1   )r2   s   "r3   r4   rR  m  s     	 	! 	 	r7   c                   < S! R 4       R# )TNr1   rj  s   &r3   _rightAMultiColumnCompletionMenuControl.get_key_bindings.<locals>._rightl  s
    Jr7   r9   )'prompt_toolkit.key_binding.key_bindingsr&   r   add)r;   r&   kbr   rk  ro  ra  s   f     @r3   get_key_bindings1MultiColumnCompletionMenuControl.get_key_bindings@  s{    
 	H]	
	X 

	X	5 	5$ 
$v	6	 
7	 
4	7	 
8	 	r7   )r   r   r   r   r   r   r   r   r   r   r   N)      )r   r   r   r   r   r  r   r   r<   rK   rV   rr   r  r   rt  r   r1   r7   r3   r   r   %  sF    , 4.2U&sCj**X0 0r7   r   c                  6   a  ] tR tRtRtRR V 3R llltRtV ;t# )r)   is  z
Container that displays the completions in several columns.
When `show_meta` (a :class:`~prompt_toolkit.filters.Filter`) evaluates
to True, it shows the meta information at the bottom.
c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r.   r   rB   r   ri   r   r   r   r/   r   r1   )r2   s   "r3   r4   'MultiColumnCompletionsMenu.__annotate__z  sN     .M .M.M %(.M  	.M
 #.M .M 
.Mr7   c           
     	p  < \        V4      p\        V4      pV\        ,          \        ( ,          p\        R  R l4       p\	        \        \        VVR7      \        ^R7      \        ^R7      R7      VR7      p\	        \        \        4       R7      Wc,          V,          R7      p	\        S
V `)  W.VR7       R# )	c                   V ^8  d   QhRR/# r-   r1   )r2   s   "r3   r4   9MultiColumnCompletionsMenu.__init__.<locals>.__annotate__  s     	 	 	r7   c                     \        4       P                  P                  p V R J;'       dI    \        ;QJ d&    R V P                   4       F  '       g   K   R# 	  R# ! R V P                   4       4      # )Nc              3  8   "   T F  qP                   x  K  	  R # 5irw   )r   ry   s   & r3   r{   WMultiColumnCompletionsMenu.__init__.<locals>.any_completion_has_meta.<locals>.<genexpr>  s      6(B1(Br}   TF)r   rE   rF   r~   rU   )rF   s    r3   any_completion_has_metaDMultiColumnCompletionsMenu.__init__.<locals>.any_completion_has_meta  sm    $Y55DDN!-  ## 6(6(B(B6## # # 6(6(B(B6 3 r7   )r   r   r   )r   rO   rZ   r   rU  )r   N)r   r   r   r   r   r    r   r$   _SelectedCompletionMetaControlr   r   )r;   r   r   ri   r   r   full_filterr  completions_windowmeta_windowr   s   &&&&&&    r3   r   #MultiColumnCompletionsMenu.__init__z  s     i(	 . #_4x?		 
	 28%/I  A& Q' 

 +#A#CD*-DD
 	,:GLr7   r1   )rv  rw  TTr   )r   r   r   r   r   r   r   r   r   s   @r3   r)   r)   s  s    .M .M .Mr7   c                  J    ] tR tRtRtR R ltR R ltR R ltR	 R
 ltRt	R# )r  i  zE
Control that shows the meta information of the selected completion.
c                    V ^8  d   QhRRRR/# r@   r1   )r2   s   "r3   r4   +_SelectedCompletionMetaControl.__annotate__  s      3 : r7   c                
   \        4       pVP                  P                  '       d]   VP                  P                  p\        VP                  4      ^8  d   V# ^\        R VP                  R,           4       4      ,           # ^ # )a  
Report the width of the longest meta text as the preferred width of this control.

It could be that we use less width, but this way, we're sure that the
layout doesn't change when we select another completion (E.g. that
completions are suddenly shown in more or fewer columns.)
c              3  L   "   T F  p\        VP                  4      x  K  	  R # 5irw   r   ry   s   & r3   r{   A_SelectedCompletionMetaControl.preferred_width.<locals>.<genexpr>  s"      9PA
1..//9Pr   :Nd   N)r   rE   rF   rT   rU   r   )r;   rA   rZ  states   &&  r3   rK   ._SelectedCompletionMetaControl.preferred_width  sz     i,,,&&55E5$$%+ +*s 9>9J9J49P    r7   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# rN   r1   )r2   s   "r3   r4   r    s<       " 	
 6 
r7   c                	    ^# )r   r1   )r;   rO   rP   rQ   rR   s   &&&&&r3   rV   /_SelectedCompletionMetaControl.preferred_height  s     r7   c               $    V ^8  d   QhRRRRRR/# rY   r1   )r2   s   "r3   r4   r    s&     N NC N N Nr7   c                	n   a V P                  4       oR  V3R llp\        TS'       d   ^R7      # ^ R7      # )c                    V ^8  d   QhRRRR/# r]   r1   )r2   s   "r3   r4   C_SelectedCompletionMetaControl.create_content.<locals>.__annotate__  s     	 	 	 2 	r7   c                   < S# rw   r1   )r^   r4  s   &r3   rj   ?_SelectedCompletionMetaControl.create_content.<locals>.get_line  s	    r7   r&  )_get_text_fragmentsr"   )r;   rO   rZ   rj   r4  s   &&& @r3   rr   -_SelectedCompletionMetaControl.create_content  s4    ,,.		 	 (IqMM1MMr7   c                   V ^8  d   QhRR/# )r.   r/   r   r1   )r2   s   "r3   r4   r    s      %7 r7   c                	0   R p\        4       P                  P                  pV'       dn   VP                  '       d\   VP                  P                  '       d@   \        \        \        R.4      VP                  P                  ,           R.,           VR7      # . # )z'class:completion-menu.multi-column-metar   r   )	r   rE   rF   r  rx   r   r
   r   r   )r;   r   r  s   &  r3   r  2_SelectedCompletionMetaControl._get_text_fragments  s    9	((77 (((((:::$')5**778+ 	  	r7   r1   N)
r   r   r   r   r   rK   rV   rr   r  r   r1   r7   r3   r  r    s!    6N r7   r  r9   )B
__future__r   r  	itertoolsr   typingr   r   r   r   r	   r
   weakrefr   "prompt_toolkit.application.currentr   prompt_toolkit.bufferr   prompt_toolkit.completionr   prompt_toolkit.data_structuresr   prompt_toolkit.filtersr   r   r   r   r   prompt_toolkit.formatted_textr   r   r   (prompt_toolkit.key_binding.key_processorr   prompt_toolkit.layout.utilsr   prompt_toolkit.mouse_eventsr   r   prompt_toolkit.utilsr   
containersr   r   r   r    controlsr!   r"   r#   	dimensionr$   marginsr%   rq  r&   r'   __all__rh  r+   rc   r   r(   r   r)   r  r1   r7   r3   <module>r     s    "  ! M M % 6 1 0 0  
 C > B + K K A A   $  
 XY Xv6%<
* 
@Ky K\
5M 5MpAY Ar7   