Ë
    V.j;j  ã                  óè  — d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZ d dlmZmZmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 erd dl6m7Z7m8Z8 ddgZ9e!Z: G d„ de1«      Z;	 d"	 	 	 	 	 	 	 	 	 d#d„Z<	 	 	 	 	 	 d$d„Z= G d„ de*«      Z> G d„ de1«      Z? G d„ de+«      Z@ G d „ d!e1«      ZAy)%é    )Ú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                  óŒ   — e Zd ZdZdZdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	dd„Z
	 	 	 	 	 	 dd	„Z	 	 	 	 	 	 	 	 dd
„Zdd„Zy)ÚCompletionsMenuControlaJ  
    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                 ó   — y©NF© ©Úselfs    ú]C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/layout/menus.pyÚ	has_focusz CompletionsMenuControl.has_focus@   ó   € Øó    c                ó–   — t        «       j                  j                  }|r)| j                  d|«      }| j	                  d|«      }||z   S y)Niô  r   )r   Úcurrent_bufferÚcomplete_stateÚ_get_menu_widthÚ_get_menu_meta_width)r2   Úmax_available_widthr9   Ú
menu_widthÚmenu_meta_widths        r3   Úpreferred_widthz&CompletionsMenuControl.preferred_widthC   sJ   € Ü ›×1Ñ1×@Ñ@ˆÙØ×-Ñ-¨c°>ÓBˆJØ"×7Ñ7¸¸^ÓLˆOà Ñ/Ð/àr6   c                ón   — t        «       j                  j                  }|rt        |j                  «      S y©Nr   )r   r8   r9   ÚlenÚcompletions)r2   ÚwidthÚmax_available_heightÚ
wrap_linesÚget_line_prefixr9   s         r3   Úpreferred_heightz'CompletionsMenuControl.preferred_heightM   s.   € ô !›×1Ñ1×@Ñ@ˆÙÜ�~×1Ñ1Ó2Ð2àr6   c                ód  ‡ ‡‡‡‡‡	— t        «       j                  j                  }|r�|j                  Š|j                  Š‰ j                  ||«      Š‰ j                  |‰z
  |«      Š‰ j                  |«      Š	dˆˆˆˆˆ ˆ	fd„}t        |t        d‰xs d¬«      t        ‰«      ¬«      S t        «       S )z=
        Create a UIContent object for this control.
        c                ój   •— ‰|    }| ‰k(  }t        ||‰d¬«      }‰	r|‰j                  ||‰«      z  }|S )NT©Úspace_after)Ú_get_menu_item_fragmentsÚ_get_menu_item_meta_fragments)
ÚiÚcÚis_current_completionÚresultrC   Úindexr>   r=   r2   Ú	show_metas
       €€€€€€r3   Úget_linez7CompletionsMenuControl.create_content.<locals>.get_linej   sU   ø€ Ø ‘N�Ø()¨U©
Ð%Ü1ØÐ,¨jÀdô�ñ Ø˜d×@Ñ@ØÐ0°/óñ �Fð �r6   r   )ÚxÚy)rU   Úcursor_positionÚ
line_count©rO   ÚintÚreturnr   )r   r8   r9   rC   Úcomplete_indexr:   r;   Ú
_show_metar#   r   rB   )
r2   rD   Úheightr9   rU   rC   rS   r>   r=   rT   s
   `    @@@@@r3   Úcreate_contentz%CompletionsMenuControl.create_contentZ   s«   ý€ ô !›×1Ñ1×@Ñ@ˆÙØ(×4Ñ4ˆKØ"×1Ñ1ˆEð ×-Ñ-¨e°^ÓDˆJØ"×7Ñ7Ø˜
Ñ" NóˆOð Ÿ™¨Ó7ˆI÷ò ô Ø!Ü %¨¨UªZ°aÔ 8Ü˜{Ó+ôð ô ‹{Ðr6   c                ó:   — t        d„ |j                  D «       «      S )zT
        Return ``True`` if we need to show a column with meta information.
        c              3  ó4   K  — | ]  }|j                   –— Œ y ­w©N)Údisplay_meta_text©Ú.0rP   s     r3   Ú	<genexpr>z4CompletionsMenuControl._show_meta.<locals>.<genexpr>ƒ   s   è ø€ ÐKÑ0J¨1�1×&Õ&Ñ0Jùó   ‚)ÚanyrC   )r2   r9   s     r3   r^   z!CompletionsMenuControl._show_meta   s   € ô ÑK°×0JÒ0JÓKÓKÐKr6   c           
     ó|   — t        |t        | j                  t        d„ |j                  D «       «      dz   «      «      S )z6
        Return the width of the main column.
        c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wrc   ©r   Údisplay_textre   s     r3   rg   z9CompletionsMenuControl._get_menu_width.<locals>.<genexpr>�   s   è ø€ ÐSÑ8R°1”J˜qŸ~™~×.Ñ8Rùó   ‚!é   )ÚminÚmaxÚ	MIN_WIDTHrC   )r2   Ú	max_widthr9   s      r3   r:   z&CompletionsMenuControl._get_menu_width…   s=   € ô ØÜØ—‘ÜÑS¸×8RÒ8RÓSÓSÐVWÑWóó
ð 	
r6   c                ó°   ‡— dd„Š| j                  |«      r@|j                  }t        |«      dkD  r|dd }t        |t	        ˆfd„|D «       «      dz   «      S y)z6
        Return the width of the meta column.
        c                ó,   — t        | j                  «      S rc   ©r   rd   )Ú
completions    r3   Ú
meta_widthz?CompletionsMenuControl._get_menu_meta_width.<locals>.meta_width˜   s   € Ü˜j×:Ñ:Ó;Ð;r6   éÈ   Nc              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wrc   r0   )rf   rP   rx   s     €r3   rg   z>CompletionsMenuControl._get_menu_meta_width.<locals>.<genexpr>¢   s   øè ø€ Ð%I¹[¸¡j°§m¹[ùs   ƒro   r   )rw   r   r\   r[   )r^   rC   rB   rp   rq   )r2   rs   r9   rC   rx   s       @r3   r;   z+CompletionsMenuControl._get_menu_meta_width‘   s\   ø€ ó	<ð �?‰?˜>Ô*ð )×4Ñ4ˆKÜ�;Ó #Ò%Ø)¨$¨3Ð/�ä�y¤#Ó%I¹[Ó%IÓ"IÈAÑ"MÓNÐNàr6   c                ó®   — |rd}nd}t        |j                  |dz
  «      \  }}d|dz
  |z
  z  }t        t        t        g «      dgz   |z   d|fgz   |¬«      S )	Nz-class:completion-menu.meta.completion.currentz%class:completion-menu.meta.completionro   Ú r   ©Ú r|   r~   ©Ústyle)Ú_trim_formatted_textÚdisplay_metar   r
   r   )r2   rw   rQ   rD   Ú	style_strÚtextÚtwÚpaddings           r3   rN   z4CompletionsMenuControl._get_menu_item_meta_fragments¦   so   € ñ !ØG‰Ià?ˆIä'¨
×(?Ñ(?ÀÈÁÓK‰ˆˆbØ˜ ™ R™Ñ(ˆä ÜÔ# RÓ(¨I¨;Ñ6¸Ñ=À"ÀgÀÀÑOØô
ð 	
r6   c                ó‚  — t        «       j                  }|j                  t        j                  k(  r-|j                  |j                  j                  «       d|_        y|j                  t        j                  k(  r|j                  dd¬«       y|j                  t        j                  k(  r|j                  dd¬«       y)z>
        Handle mouse events: clicking and scrolling.
        Né   T©ÚcountÚdisable_wrap_around)r   r8   Ú
event_typer   ÚMOUSE_UPÚgo_to_completionÚpositionrW   r9   ÚSCROLL_DOWNÚcomplete_nextÚ	SCROLL_UPÚcomplete_previous)r2   Úmouse_eventÚbs      r3   Úmouse_handlerz$CompletionsMenuControl.mouse_handler¶   s£   € ô ‹I×$Ñ$ˆà×!Ñ!¤^×%<Ñ%<Ò<à×Ñ˜{×3Ñ3×5Ñ5Ô6Ø#ˆAÔð ð ×#Ñ#¤~×'AÑ'AÒAà�O‰O !¸ˆOÔ>ð ð	 ×#Ñ#¤~×'?Ñ'?Ò?à×Ñ a¸TÐÔBàr6   N©r\   Úbool©r<   r[   r\   ú
int | None©
rD   r[   rE   r[   rF   r˜   rG   zGetLinePrefixCallable | Noner\   rš   ©rD   r[   r_   r[   r\   r#   )r9   r   r\   r˜   )rs   r[   r9   r   r\   r[   )rw   r   rQ   r˜   rD   r[   r\   r   ©r”   r   r\   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rr   r4   r?   rH   r`   r^   r:   r;   rN   r–   r0   r6   r3   r,   r,   1   s¥   „ ñð €Ióóðàðð "ðð ð	ð
 6ðð 
óó#óJLó

ðØðØ.=ðà	óð*
Ø$ð
Ø=Að
ØJMð
à	ó
ô r6   r,   c                ó
  — |rd| j                   › d| j                  › �}nd| j                   z   }t        | j                  |r|dz
  n|dz
  «      \  }}d|dz
  |z
  z  }t	        t        t        g «      dgz   |z   d|fgz   |¬«      S )	z_
    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 ro   r   r}   r~   r   )r€   Úselected_styler�   Údisplayr   r
   r   )rw   rQ   rD   rL   rƒ   r„   r…   r†   s           r3   rM   rM   Ì   s¤   € ñ Ø?À
×@PÑ@PÐ?QÐQRÐS]×SlÑSlÐRmÐn‰	à7¸*×:JÑ:JÑJˆ	ä#Ø×Ñ©+˜U QšY¸5À1¹9ó�H€Dˆ"ð �U˜Q‘Y ‘^Ñ$€GäÜÔ Ó$¨	 {Ñ2°TÑ9¸bÀ'¸]¸OÑKØôð r6   c                óÞ   — t        | «      }||kD  rZg }|dz
  }t        | «      D ]-  }t        |d   «      }||k  r|j                  |«       ||z  }Œ- n |j                  d«       |||z
  fS | |fS )zo
    Trim the text to `max_width`, append dots when the text is too long.
    Returns (text, width) tuple.
    rˆ   r   )r~   z...)r   r   r   Úappend)Úformatted_textrs   rD   rR   Úremaining_widthÚstyle_and_chÚch_widths          r3   r�   r�   ç   sŽ   € ô   Ó/€Eð ˆyÒØˆØ# a™-ˆä2°>ÖBˆLÜ! ,¨q¡/Ó2ˆHà˜?Ò*Ø—‘˜lÔ+Ø 8Ñ+‘áð Cð 	�‰�kÔ"à�y ?Ñ2Ð2Ð2à˜uÐ$Ð$r6   c                  óB   ‡ — e Zd Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )r)   c                óú   •— t        |«      }t        |«      }t        ‰| �	  t        t	        «       t        d¬«      t        d|¬«      t        ||¬«      t        |¬«      gdd|¬	«      |t        z  t         z  ¬
«       y )Né   ©rp   r   )rp   rq   )ÚtopÚbottom)Údisplay_arrowsTúclass:completion-menu)ÚcontentrD   r_   Úscroll_offsetsÚright_marginsÚdont_extend_widthr€   Úz_index©r³   Úfilter)
r   ÚsuperÚ__init__r!   r,   r%   r    r&   r   r   )r2   Ú
max_heightÚscroll_offsetÚextra_filterr±   r·   Ú	__class__s         €r3   r»   zCompletionsMenu.__init__	  sz   ø€ ô ! Ó.ˆÜ" >Ó2ˆä‰ÑÜÜ.Ó0Ü AÔ&Ü  Q¨JÔ7Ü,°À}ÔUÜ.¸nÔMÐNØ"&Ø-Øô	ð  ¤/Ñ1´W°HÑ<ð 	õ 	
r6   )Nr   TFé áõ)r¼   rš   r½   zint | Callable[[], int]r¾   r   r±   r   r·   r[   r\   ÚNone)rž   rŸ   r    r»   Ú__classcell__©r¿   s   @r3   r)   r)     sX   ø„ ð "&Ø12Ø%)Ø',Øð
àð
ð /ð
ð #ð	
ð
 %ð
ð ð
ð 
÷
ñ 
r6   c                  ór   — e Zd ZdZdZddd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	dd„Z
dd	„Zdd
„Zdd„Zy)Ú MultiColumnCompletionMenuControla†  
    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.
    rˆ   c                ó¼   — |dk\  sJ ‚|| _         || _        d| _        t        «       | _        d| _        d| _        d| _        i | _        d| _	        d| _
        d| _        y )Nr   r   F)Úmin_rowsÚsuggested_max_column_widthÚscrollr   Ú"_column_width_for_completion_stateÚ_rendered_rowsÚ_rendered_columnsÚ_total_columnsÚ_render_pos_to_completionÚ_render_left_arrowÚ_render_right_arrowÚ_render_width)r2   rÇ   rÈ   s      r3   r»   z)MultiColumnCompletionMenuControl.__init__>  sn   € Ø˜1Š}Ðˆ}à ˆŒØ*DˆÔ'ØˆŒô Óð 	Ô/ð
  ˆÔØ!"ˆÔØˆÔØLNˆÔ&Ø"'ˆÔØ#(ˆÔ ØˆÕr6   c                ó   — d| _         y rA   )rÉ   r1   s    r3   Úresetz&MultiColumnCompletionMenuControl.resetX  s	   € Øˆ�r6   c                 ó   — yr/   r0   r1   s    r3   r4   z*MultiColumnCompletionMenuControl.has_focus[  r5   r6   c           	     ó€  — t        «       j                  j                  }|€y| j                  |«      }t	        |t        j                  t        |j                  «      t        | j                  «      z  «      z  «      }||kD  r/||| j                  z
  kD  r||z  }||kD  r||| j                  z
  kD  rŒ|| j                  z   S )z{
        Preferred width: prefer to use at least min_rows, but otherwise as much
        as possible horizontally.
        r   )r   r8   r9   Ú_get_column_widthr[   ÚmathÚceilrB   rC   ÚfloatrÇ   Ú_required_margin)r2   r<   r9   Úcolumn_widthrR   s        r3   r?   z0MultiColumnCompletionMenuControl.preferred_width^  sÁ   € ô
 !›×1Ñ1×@Ñ@ˆØÐ!Øà×-Ñ-¨nÓ=ˆÜØÜ�i‰iœ˜N×6Ñ6Ó7¼%ÀÇÁÓ:NÑNÓOñPó
ˆð �\Ò!ØÐ,¨t×/DÑ/DÑDÒDà�lÑ"ˆFð �\Ò!ØÐ,¨t×/DÑ/DÑDÓDð ˜×-Ñ-Ñ-Ð-r6   c                ó  — t        «       j                  j                  }|€y| j                  |«      }t	        d|| j
                  z
  |z  «      }t        t        j                  t        |j                  «      t        |«      z  «      «      S )z^
        Preferred height: as much as needed in order to display all the completions.
        r   r   )r   r8   r9   rÖ   rq   rÚ   r[   r×   rØ   rB   rC   rÙ   )r2   rD   rE   rF   rG   r9   rÛ   Úcolumn_counts           r3   rH   z1MultiColumnCompletionMenuControl.preferred_heightw  su   € ô !›×1Ñ1×@Ñ@ˆØÐ!Øà×-Ñ-¨nÓ=ˆÜ˜1˜u t×'<Ñ'<Ñ<ÀÑMÓNˆä”4—9‘9œS ×!;Ñ!;Ó<¼uÀ\Ó?RÑRÓSÓTÐTr6   c           	     ó¬  ‡‡‡— t        «       j                  j                  Š‰€
t        «       S | j	                  ‰«      }i | _        t        d«      }	 d	 	 	 	 	 	 	 dd„}dˆˆfd„}d}t        ||z
  |«      }|| j                  kD  r||| j                  z  z  }t        d|| j                  z
  |z  «      }t         ||‰j                  «      «      }	t        t        |	Ž «      }
‰j                  xs d|z  }t        |t        | j                  ||z
  dz   «      «      | _        | j                  dkD  }| j                  t!        |
d   «      |z
  k  }g Št#        |
«      D �]  \  }}g }|t!        |
«      dz  k(  }|r|j%                  d	|rd
ndf«       n|r|j%                  d«       t#        || j                  d d| «      D ]]  \  }Š‰�@|t'        ‰ |‰«      |d¬«      z  }t)        |«      D ]  }‰| j
                  ||z  |z   |f<   Œ ŒH|j%                  dd|z  f«       Œ_ |s|r|j%                  d«       |r|j%                  d	|rdndf«       n|r|j%                  d«       ‰j%                  t+        |d¬«      «       �Œ" || _        || _        t!        |	«      | _        || _        || _        ||z  |z   |z   dz   | _        dˆfd„}t        |t!        |
«      ¬«      S )z:
        Create a UIContent object for this menu.
        NÚ_Tc                ó6   — t        |«      g| z  }t        |d|iŽS )z*grouper(3, 'ABCDEFG', 'x') --> ABC DEF GxxÚ	fillvalue)Úiterr   )ÚnÚiterablerá   Úargss       r3   Úgrouperz@MultiColumnCompletionMenuControl.create_content.<locals>.grouper—  s%   € ô ˜“NÐ# aÑ'ˆDÜ°TÐ:¨Ñ:Ð:r6   c                óN   •— ‰duxr ‰j                   duxr ‰‰j                  k(  S )z@Returns True when this completion is the currently selected one.N)r]   Úcurrent_completion)rw   rP   r9   s    €€r3   rQ   zNMultiColumnCompletionMenuControl.create_content.<locals>.is_current_completionž  s8   ø€ ð  dÐ*ò ;Ø"×1Ñ1¸Ð=ò;à˜×:Ñ:Ñ:ðr6   rˆ   r   r   ro   zclass:scrollbarÚ<r|   r}   FrK   úclass:completion)rê   r|   Ú>r²   r   c                ó   •— ‰|    S rc   r0   )rO   Úfragments_for_lines    €r3   rU   zAMultiColumnCompletionMenuControl.create_content.<locals>.get_lineú  s   ø€ Ø% aÑ(Ð(r6   ©rU   rY   rc   )rã   r[   rä   zIterable[_T]rá   z	_T | Noner\   zIterable[Sequence[_T | None]])rw   r   r\   r˜   rZ   )r   r8   r9   r#   rÖ   rÎ   r	   rp   rÈ   rq   rÚ   ÚlistrC   Úzipr]   rÉ   rB   Ú	enumerater¦   rM   Úranger   rË   rÌ   rÍ   rÏ   rÐ   rÑ   )r2   rD   r_   rÛ   rß   ræ   rQ   ÚHORIZONTAL_MARGIN_REQUIREDÚvisible_columnsÚcolumns_Úrows_Úselected_columnÚrender_left_arrowÚrender_right_arrowÚ	row_indexÚrowÚ	fragmentsÚ
middle_rowÚcolumn_indexrV   rU   rP   r9   rí   s                        @@@r3   r`   z/MultiColumnCompletionMenuControl.create_contentŠ  s5  ú€ ô !›×1Ñ1×@Ñ@ˆØÐ!Ü“;Ðà×-Ñ-¨nÓ=ˆØ)+ˆÔ&ä�T‹]ˆð DHð	;Øð	;Ø*ð	;Ø7@ð	;à*ó	;ö	ð &'Ð"ô ˜5Ð#=Ñ=¸|ÓLˆð ˜$×9Ñ9Ò9ð ˜\¨T×-LÑ-LÑLÑLˆLä˜a %¨$×*?Ñ*?Ñ"?ÀLÑ!PÓQˆä™ ¨×(BÑ(BÓCÓDˆÜ”S˜(�^Ó$ˆð *×8Ñ8Ò=¸AÀ&ÑHˆÜØœS §¡¨oÀÑ.OÐRSÑ.SÓTó
ˆŒð !ŸK™K¨!™OÐØ!Ÿ[™[¬3¨u°Q©x«=¸?Ñ+JÑJÐð  Ðä'¨×.‰NˆI�sØ,.ˆIØ"¤c¨%£j°A¡oÑ5ˆJñ !Ø× Ñ Ð"3¹J±SÈCÐ!PÕQÙ#ð × Ñ  Ô+ô $-¨S°·±°Ð-?Ð@PÀÐ-QÖ#R‘�˜aØ�=ØÔ!9ØÑ0°Ó3°\Èuô"ñ �Iô
 # <Ö0˜ð ð ×6Ñ6Ø)¨LÑ8¸1Ñ<¸iÐHòñ 1ð
 ×$Ñ$Ð&8¸#ÀÑ:LÐ%MÕNð $Sñ  !Ñ$6Ø× Ñ Ð!:Ô;ñ "Ø× Ñ Ð"3¹J±SÈCÐ!PÕQÙ"Ø× Ñ Ð!:Ô;ð ×%Ñ%Ü! )Ð3JÔKöðO /ðV %ˆÔØ!0ˆÔÜ! (›mˆÔØ"3ˆÔØ#5ˆÔ à˜?Ñ*Ð->Ñ>ÐASÑSÐVWÑWð 	Ôõ	)ô  (´s¸5³zÔBÐBr6   c                ó  — 	 | j                   |   \  }}|t        |j                  «      k7  rt        ‚|S # t        $ rH t	        d„ |j                  D «       «      dz   }t        |j                  «      |f| j                   |<   |cY S w xY w)z2
        Return the width of each column.
        c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wrc   rl   re   s     r3   rg   zEMultiColumnCompletionMenuControl._get_column_width.<locals>.<genexpr>  s   è ø€ ÐUÑ8T°1”J˜qŸ~™~×.Ñ8Tùrn   r   )rÊ   rB   rC   ÚKeyErrorrq   )r2   Úcompletion_staterŠ   rD   rR   s        r3   rÖ   z2MultiColumnCompletionMenuControl._get_column_widthÿ  sš   € ð	Ø×BÑBÐCSÑT‰LˆE�5ØœÐ,×8Ñ8Ó9Ò9ä�ØˆLøÜò 		äÑUÐ8H×8TÒ8TÓUÓUØñð ô
 Ð$×0Ñ0Ó1ØðIˆD×3Ñ3Ð4DÑEð ŠMð		ús   ‚14 ´ABÂBc                óP  ‡ ‡— t        «       j                  Šdˆˆ fd„}dˆˆ fd„}|j                  t        j                  k(  r |«        y|j                  t        j
                  k(  r |«        y|j                  t        j                  k(  r›|j                  j                  }|j                  j                  }|dk(  r‰ j                  r |«        y|‰ j                  dz
  k(  r‰ j                  r |«        y‰ j                  j                  ||f«      }|r‰j                  |«       y)z1
        Handle scroll and click events.
        c                 ó|   •— ‰ j                  ‰j                  d¬«       t        d‰j                  dz
  «      ‰_        y )NTr‰   r   r   )r“   rË   rq   rÉ   ©r•   r2   s   €€r3   Úscroll_leftzCMultiColumnCompletionMenuControl.mouse_handler.<locals>.scroll_left  s2   ø€ Ø×Ñ d×&9Ñ&9ÈtÐÔTÜ˜a §¡¨q¡Ó1ˆD�Kr6   c                 óª   •— ‰ j                  ‰j                  d¬«       t        ‰j                  ‰j                  z
  ‰j
                  dz   «      ‰_        y )NTr‰   r   )r‘   rË   rp   rÍ   rÌ   rÉ   r  s   €€r3   Úscroll_rightzDMultiColumnCompletionMenuControl.mouse_handler.<locals>.scroll_right  sC   ø€ Ø�O‰O $×"5Ñ"5È4ˆOÔPÜØ×#Ñ# d×&<Ñ&<Ñ<¸d¿k¹kÈA¹oóˆD�Kr6   r   r   N©r\   rÁ   )r   r8   rŒ   r   r�   r’   r�   r�   rV   rW   rÏ   rÑ   rÐ   rÎ   ÚgetÚapply_completion)r2   r”   r  r  rV   rW   rw   r•   s   `      @r3   r–   z.MultiColumnCompletionMenuControl.mouse_handler  s  ù€ ô ‹I×$Ñ$ˆö	2ö	ð ×!Ñ!¤^×%?Ñ%?Ò?ÙŒNð2 ð/ ×#Ñ#¤~×'?Ñ'?Ò?ÙŒMð, ð) ×#Ñ#¤~×'>Ñ'>Ò>Ø×$Ñ$×&Ñ&ˆAØ×$Ñ$×&Ñ&ˆAð �AŠvØ×*Ò*Ù”Mð ð �d×(Ñ(¨1Ñ,Ò,Ø×+Ò+Ù ”Nð ð	 "×;Ñ;×?Ñ?ÀÀAÀÓG�
ÙØ×&Ñ& zÔ2àr6   c                óÄ   ‡ ‡— ddl m}  |«       }t        dˆ fd„«       }ddˆ fd„Š|j                  dd|¬«      dˆfd	„«       }|j                  dd|¬«      dˆfd
„«       }|S )zo
        Expose key bindings that handle the left/right arrow keys when the menu
        is displayed.
        r   )r'   c                 ó²   •— t        «       } | j                  j                  }|�|j                  €yt	        ˆfd„| j
                  j                  D «       «      S )z1Only handle key bindings if this menu is visible.Fc              3  ó<   •K  — | ]  }|j                   ‰k(  –— Œ y ­wrc   ©r³   )rf   Úwindowr2   s     €r3   rg   zTMultiColumnCompletionMenuControl.get_key_bindings.<locals>.filter.<locals>.<genexpr>T  s   øè ø€ ÐWÑ<V°&�v—~‘~¨Õ-Ñ<Vùs   ƒ)r   r8   r9   r]   ri   ÚlayoutÚvisible_windows)Úappr9   r2   s     €r3   r¹   zAMultiColumnCompletionMenuControl.get_key_bindings.<locals>.filterI  sP   ø€ ô “)ˆCØ ×/Ñ/×>Ñ>ˆNð Ð%¨×)FÑ)FÐ)NØô ÓW¸C¿J¹J×<VÒ<VÓWÓWÐWr6   Úrightc                ó&  •— t        «       j                  }|j                  }|�n|j                  �a|j                  }| r|‰j                  z  }n|‰j                  z  }d|cxk  rt        |j                  «      k  rn y |j                  |«       y y y y rA   )r   r8   r9   r]   rË   rB   rC   rŽ   )r  Úbuffr9   Ú	new_indexr2   s       €r3   Úmovez?MultiColumnCompletionMenuControl.get_key_bindings.<locals>.moveV  s�   ø€ Ü“9×+Ñ+ˆDØ!×0Ñ0ˆNàÐ)¨n×.KÑ.KÐ.Wà*×9Ñ9�	ÙØ ×!4Ñ!4Ñ4‘Ià ×!4Ñ!4Ñ4�Ià˜	ÔC¤C¨×(BÑ(BÓ$CÕCØ×)Ñ)¨)Õ4ð Dð /XÐ)r6   ÚleftT)Ú	is_globalr¹   c                ó   •—  ‰«        y rc   r0   ©Úeventr  s    €r3   Ú_leftz@MultiColumnCompletionMenuControl.get_key_bindings.<locals>._lefth  s   ø€ á�Fr6   c                ó   •—  ‰d«       y )NTr0   r  s    €r3   Ú_rightzAMultiColumnCompletionMenuControl.get_key_bindings.<locals>._rightl  s
   ø€ á��Jr6   r—   ©F)r  r˜   r\   rÁ   )r  ÚEr\   rÁ   )Ú'prompt_toolkit.key_binding.key_bindingsr'   r   Úadd)r2   r'   Úkbr¹   r  r   r  s   `     @r3   Úget_key_bindingsz1MultiColumnCompletionMenuControl.get_key_bindings@  sv   ù€ õ
 	Há‹]ˆä	ô
	Xó 
ð
	Xö	5ð$ 
�‰� $¨vˆÓ	6ô	ó 
7ð	ð 
�‰� 4°ˆÓ	7ô	ó 
8ð	ð ˆ	r6   N)rˆ   é   )rÇ   r[   rÈ   r[   r\   rÁ   r	  r—   r™   r›   rœ   )r  r   r\   r[   r�   )r\   r'   )rž   rŸ   r    r¡   rÚ   r»   rÓ   r4   r?   rH   r`   rÖ   r–   r&  r0   r6   r3   rÅ   rÅ   %  sv   „ ñð, Ðôó4óó.ð2UàðUð "ðUð ð	Uð
 6ðUð 
óUó&sCójó**ôX0r6   rÅ   c                  óF   ‡ — e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )r*   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           	     óN  •— t        |«      }t        |«      }|t        z  t         z  }t        d
d„«       }t	        t        t        ||¬«      t        d¬«      t        d¬«      ¬«      |¬«      }t	        t        t        «       ¬«      ||z  |z  ¬«      }	t        ‰
| �)  ||	g|¬	«       y )Nc                 ó‚   — t        «       j                  j                  } | d uxr t        d„ | j                  D «       «      S )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrc   )r‚   re   s     r3   rg   zWMultiColumnCompletionsMenu.__init__.<locals>.any_completion_has_meta.<locals>.<genexpr>Œ  s   è ø€ ð 6Ù(B 1�—•Ñ(Bùrh   )r   r8   r9   ri   rC   )r9   s    r3   Úany_completion_has_metazDMultiColumnCompletionsMenu.__init__.<locals>.any_completion_has_meta‰  sA   € ä$›Y×5Ñ5×DÑDˆNØ!¨Ð-ò ´#ñ 6Ø(6×(BÒ(Bó6ó 3ð r6   )rÇ   rÈ   r­   r®   r   )r³   rD   r_   r¸   r  )r·   r—   )r   r   r   r   r   r!   rÅ   r%   Ú_SelectedCompletionMetaControlrº   r»   )r2   rÇ   rÈ   rT   r¾   r·   Úfull_filterr,  Úcompletions_windowÚmeta_windowr¿   s             €r3   r»   z#MultiColumnCompletionsMenu.__init__z  s¸   ø€ ô ˜iÓ(ˆ	Ü  Ó.ˆð #¤_Ñ4¼°xÑ?ˆä	ò	ó 
ð	ô 2ÜÜ8Ø%Ø/Iôô   AÔ&Ü  QÔ'ôð ô

Ðô +ÜÔ#AÓ#CÔDØ Ñ*Ð-DÑDô
ˆô 	‰ÑÐ,¨kÐ:ÀGÐÕLr6   )rˆ   r'  TTrÀ   )rÇ   r[   rÈ   r[   rT   r   r¾   r   r·   r[   r\   rÁ   )rž   rŸ   r    r¡   r»   rÂ   rÃ   s   @r3   r*   r*   s  se   ø„ ñð Ø*,Ø"&Ø%)Øð.Màð.Mð %(ð.Mð  ð	.Mð
 #ð.Mð ð.Mð 
÷.Mñ .Mr6   c                  óD   — e Zd ZdZdd„Z	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd
d„Zy)r-  zM
    Control that shows the meta information of the selected completion.
    c                óè   — t        «       }|j                  j                  rR|j                  j                  }t        |j                  «      dk\  r|S dt        d„ |j                  dd D «       «      z   S y)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.)
        r'  ro   c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wrc   rv   re   s     r3   rg   zA_SelectedCompletionMetaControl.preferred_width.<locals>.<genexpr>Å  s    è ø€ ð Ù9P°A”
˜1×.Ñ.×/Ñ9Pùrn   Néd   r   )r   r8   r9   rB   rC   rq   )r2   r<   r  Ústates       r3   r?   z._SelectedCompletionMetaControl.preferred_width°  sy   € ô ‹iˆØ×Ñ×,Ò,Ø×&Ñ&×5Ñ5ˆEä�5×$Ñ$Ó%¨Ò+ð +Ð*à”sñ Ø9>×9JÑ9JÈ4ÈCÑ9Póó ñ ð ð r6   c                 ó   — y)Nr   r0   )r2   rD   rE   rF   rG   s        r3   rH   z/_SelectedCompletionMetaControl.preferred_heightË  s   € ð r6   c                ó\   ‡— | j                  «       Šdˆfd„}t        |‰rd¬«      S d¬«      S )Nc                ó   •— ‰S rc   r0   )rO   rü   s    €r3   rU   z?_SelectedCompletionMetaControl.create_content.<locals>.get_line×  s	   ø€ ØÐr6   r   r   rî   rZ   )Ú_get_text_fragmentsr#   )r2   rD   r_   rU   rü   s       @r3   r`   z-_SelectedCompletionMetaControl.create_contentÔ  s/   ø€ Ø×,Ñ,Ó.ˆ	õ	ô  (¹I°qÔMÐMÈ1ÔMÐMr6   c                óü   — d}t        «       j                  j                  }|rY|j                  rM|j                  j                  r7t        t        t        dg«      |j                  j                  z   dgz   |¬«      S g S )Nz'class:completion-menu.multi-column-metar}   r   )	r   r8   r9   rè   rd   r   r
   r   r‚   )r2   r€   r5  s      r3   r9  z2_SelectedCompletionMetaControl._get_text_fragmentsÜ  s{   € Ø9ˆÜ“	×(Ñ(×7Ñ7ˆñ Ø×(Ò(Ø×(Ñ(×:Ò:ä$ÜÔ'¨)¨Ó5Ø×*Ñ*×7Ñ7ñ8à�+ñð ô	ð ð ˆ	r6   Nr™   r›   rœ   )r\   r   )rž   rŸ   r    r¡   r?   rH   r`   r9  r0   r6   r3   r-  r-  «  sL   „ ñóð6àðð "ðð ð	ð
 6ðð 
óóNôr6   r-  r!  )
rw   r   rQ   r˜   rD   r[   rL   r˜   r\   r   )r§   r   rs   r[   r\   ztuple[StyleAndTextTuples, int])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&   r#  r'   r(   Ú__all__r"  r,   rM   r�   r)   rÅ   r*   r-  r0   r6   r3   Ú<module>rN     s  ðÝ "ã Ý !ß M× MÝ %å 6Ý 1Ý 0Ý 0÷õ ÷ñ õ
 CÝ >ß BÝ +ç KÓ Kß AÑ AÝ  Ý $á÷ð Ø ð€ð
 €ôX˜Yô Xð~ ð	Øðàðð ðð ð	ð
 óð6%Ø&ð%Ø36ð%à#ó%ô<
Ð*ô 
ô@K yô Kô\
5M ô 5MôpA Yõ Ar6   