Ë
    V.j@K  ã                  ó°   — 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
 ddlmZmZ ddlmZmZmZmZ dd	lmZmZ dd
lmZmZmZ dgZdZ G d„ de«      Zy)é    )Úannotations)ÚPoint)ÚFilterOrBoolÚ	to_filter)ÚKeyBindingsBase)Ú
MouseEventé   )Ú	ContainerÚScrollOffsets)ÚAnyDimensionÚ	DimensionÚsum_layout_dimensionsÚto_dimension)ÚMouseHandlerÚMouseHandlers)ÚCharÚScreenÚWritePositionÚScrollablePanei'  c            
      óP  — e Zd ZdZdddeddddddf
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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	 	 	 	 	 	 	 	 dd„Zdd„Zd d„Zd!d„Z	 	 	 	 	 	 	 	 	 	 d"d„Z	 	 	 	 	 	 	 	 d#d„Zy)$r   aK  
    Container widget that exposes a larger virtual screen to its content and
    displays it in a vertical scrollbale region.

    Typically this is wrapped in a large `HSplit` container. Make sure in that
    case to not specify a `height` dimension of the `HSplit`, so that it will
    scale according to the content.

    .. note::

        If you want to display a completion menu for widgets in this
        `ScrollablePane`, then it's still a good practice to use a
        `FloatContainer` with a `CompletionsMenu` in a `Float` at the top-level
        of the layout hierarchy, rather then nesting a `FloatContainer` in this
        `ScrollablePane`. (Otherwise, it's possible that the completion menu
        is clipped.)

    :param content: The content container.
    :param scrolloffset: Try to keep the cursor within this distance from the
        top/bottom (left/right offset is not used).
    :param keep_cursor_visible: When `True`, automatically scroll the pane so
        that the cursor (of the focused window) is always visible.
    :param keep_focused_window_visible: When `True`, automatically scroll the
        pane so that the focused window is visible, or as much visible as
        possible if it doesn't completely fit the screen.
    :param max_available_height: Always constraint the height to this amount
        for performance reasons.
    :param width: When given, use this width instead of looking at the children.
    :param height: When given, use this height instead of looking at the children.
    :param show_scrollbar: When `True` display a scrollbar on the right.
    NTÚ^Úvc                ó  — || _         |xs t        dd¬«      | _        t        |«      | _        t        |«      | _        || _        || _        || _        t        |«      | _	        t        |	«      | _
        |
| _        || _        d| _        y )Nr	   )ÚtopÚbottomr   )Úcontentr   Úscroll_offsetsr   Úkeep_cursor_visibleÚkeep_focused_window_visibleÚmax_available_heightÚwidthÚheightÚshow_scrollbarÚdisplay_arrowsÚup_arrow_symbolÚdown_arrow_symbolÚvertical_scroll)Úselfr   r   r   r   r    r!   r"   r#   r$   r%   r&   s               úgC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/layout/scrollable_pane.pyÚ__init__zScrollablePane.__init__4   sƒ   € ð ˆŒØ,ÒN´À!ÈAÔ0NˆÔÜ#,Ð-@Ó#AˆÔ Ü+4Ð5PÓ+QˆÔ(Ø$8ˆÔ!ØˆŒ
ØˆŒÜ'¨Ó7ˆÔÜ'¨Ó7ˆÔØ.ˆÔØ!2ˆÔà ˆÕó    c                ó"   — d| j                   ›d�S )NzScrollablePane(Ú)©r   ©r(   s    r)   Ú__repr__zScrollablePane.__repr__P   s   € Ø  §¡Ð 0°Ð2Ð2r+   c                ó8   — | j                   j                  «        y ©N)r   Úresetr/   s    r)   r3   zScrollablePane.resetS   s   € Ø�‰×ÑÕr+   c                óÞ   — | j                   �t        | j                   «      S | j                  j                  |«      }| j	                  «       r t        t        j                  d«      |g«      S |S )Nr	   )r!   r   r   Úpreferred_widthr#   r   r   Úexact)r(   Úmax_available_widthÚcontent_widths      r)   r5   zScrollablePane.preferred_widthV   s_   € Ø�:‰:Ð!Ü §
¡
Ó+Ð+ð Ÿ™×4Ñ4Ð5HÓIˆð ×ÑÔ Ü(¬)¯/©/¸!Ó*<¸mÐ)LÓMÐMàÐr+   c                óè   — | j                   �t        | j                   «      S | j                  «       r|dz  }| j                  j	                  || j
                  «      }t        d|j                  ¬«      S )Nr	   r   )ÚminÚ	preferred)r"   r   r#   r   Úpreferred_heightr    r   r;   )r(   r!   r    Ú	dimensions       r)   r<   zScrollablePane.preferred_heightd   sc   € Ø�;‰;Ð"Ü §¡Ó,Ð,ð ×ÑÔ à�Q‰JˆEà—L‘L×1Ñ1°%¸×9RÑ9RÓSˆ	ô ˜Q¨)×*=Ñ*=Ô>Ð>r+   c                óÔ  — | j                  «       }|r|j                  dz
  }n|j                  }| j                  j                  || j                  «      j
                  }	t        |	|j                  «      }	t        |	| j                  «      }	t        t        d|¬«      ¬«      }
|j                  |
_        t        dd||	¬«      }t        «       }| j                  j                  |
|||||«       |
j                  «        ddlm}  |«       j$                  j&                  }	 |
j(                  |   }| j+                  |j                  |	||
j,                  j/                  |«      «       | j3                  ||
||«       | j5                  ||||«       |j6                  }|j8                  }t        |j                  ||z   «      |_        t        |j                  ||j                  z   «      |_        | j;                  ||
|«       |
j                  rd|_        |
j,                  j=                  «       D ]£  \  }}d|j>                  cxk  r|j                  k  sŒ&n Œ)| j@                  |jB                  cxk  r|j                  | j@                  z   k  sŒ`n ŒctE        |j>                  |z   |jB                  |z   | j@                  z
  ¬	«      |j,                  |<   Œ¥ |
jF                  j=                  «       D ]V  \  }}| jI                  tE        |j>                  |z   |jB                  |z   | j@                  z
  ¬	«      |«      |jF                  |<   ŒX |r| jK                  ||	|«       y
y
# t0        $ r Y �Œw xY w)z˜
        Render scrollable pane content.

        This works by rendering on an off-screen canvas, and copying over the
        visible region.
        r	   Ú )ÚcharÚstyle)Údefault_charr   )ÚxposÚyposr!   r"   )Úget_appT©ÚxÚyN)&r#   r!   r   r<   r    r;   Úmaxr"   r:   r   r   Úshow_cursorr   r   Úwrite_to_screenÚdraw_all_floatsÚprompt_toolkit.applicationrE   ÚlayoutÚcurrent_windowÚ"visible_windows_to_write_positionsÚ_make_window_visibleÚcursor_positionsÚgetÚKeyErrorÚ_copy_over_screenÚ_copy_over_mouse_handlersrD   rC   Ú_copy_over_write_positionsÚitemsrG   r'   rH   r   Úmenu_positionsÚ_clip_point_to_visible_areaÚ_draw_scrollbar)r(   ÚscreenÚmouse_handlersÚwrite_positionÚparent_styleÚerase_bgÚz_indexr#   Úvirtual_widthÚvirtual_heightÚtemp_screenÚtemp_write_positionÚtemp_mouse_handlersrE   Úfocused_windowÚvisible_win_write_posrD   rC   ÚwindowÚpoints                       r)   rK   zScrollablePane.write_to_screens   s*  € ð ×,Ñ,Ó.ˆáØ*×0Ñ0°1Ñ4‰Mà*×0Ñ0ˆMð Ÿ™×6Ñ6Ø˜4×4Ñ4ó
ç
‰)ð 	ô
 ˜^¨^×-BÑ-BÓCˆÜ˜^¨T×-FÑ-FÓGˆô ¬$°C¸|Ô*LÔMˆØ"(×"4Ñ"4ˆÔÜ+Ø˜ -¸ô
Ðô ,›oÐà�‰×$Ñ$ØØØØØØô	
ð 	×#Ñ#Ô%õ 	7á ›×)Ñ)×8Ñ8ˆð	Ø$/×$RÑ$RØñ%Ð!ð ×%Ñ%Ø×%Ñ%ØØ%Ø×,Ñ,×0Ñ0°Ó@ô	ð 	×Ñ˜v {°NÀMÔRð 	×&Ñ&ØÐ/°Àô	
ð
 ×"Ñ"ˆØ×"Ñ"ˆä˜6Ÿ<™<¨°Ñ)=Ó>ˆŒÜ˜FŸM™M¨4°.×2GÑ2GÑ+GÓHˆŒð 	×'Ñ'¨°¸^ÔLà×"Ò"Ø!%ˆFÔð )×9Ñ9×?Ñ?ÖA‰MˆF�Eà�U—W‘WÔ3˜~×3Ñ3Ö3Ø×(Ñ(Ø—7‘7ô?à ×'Ñ'¨$×*>Ñ*>Ñ>ö?ô 38Ø—g‘g ‘n¨¯©°$©¸×9MÑ9MÑ(Mô3�×'Ñ'¨Ò/ð Bð )×7Ñ7×=Ñ=Ö?‰MˆF�EØ,0×,LÑ,LÜ˜Ÿ™ $™¨%¯'©'°D©.¸4×;OÑ;OÑ*OÔPØó-ˆF×!Ñ! &Ò)ð @ñ Ø× Ñ ØØØõð øôi ò 	Úð	ús   ÄM Í	M'Í&M'c                ó"  — |j                   |j                  k  r|j                  |j                  ¬«      }|j                  |j                  k  r|j                  |j                  ¬«      }|j                   |j                  |j
                  z   k\  r,|j                  |j                  |j
                  z   dz
  ¬«      }|j                  |j                  |j                  z   k\  r,|j                  |j                  |j                  z   dz
  ¬«      }|S )zV
        Ensure that the cursor and menu positions always are always reported
        )rG   )rH   r	   )rG   rC   Ú_replacerH   rD   r!   r"   )r(   rj   r^   s      r)   rZ   z*ScrollablePane._clip_point_to_visible_areaê   sá   € ð �7‰7�^×(Ñ(Ò(Ø—N‘N ^×%8Ñ%8�NÓ9ˆEØ�7‰7�^×(Ñ(Ò(Ø—N‘N ^×%8Ñ%8�NÓ9ˆEØ�7‰7�n×)Ñ)¨N×,@Ñ,@Ñ@Ò@Ø—N‘N ^×%8Ñ%8¸>×;OÑ;OÑ%OÐRSÑ%S�NÓTˆEØ�7‰7�n×)Ñ)¨N×,AÑ,AÑAÒAØ—N‘N ^×%8Ñ%8¸>×;PÑ;PÑ%PÐSTÑ%T�NÓUˆEàˆr+   c                óv  — |j                   }|j                  }t        |j                  «      D ]‰  }|j                  || j
                  z      }|j                  ||z      }	|j                  || j
                  z      }
|j                  ||z      }t        |«      D ]  }||   |	||z   <   ||
v sŒ|
|   |||z   <   Œ Œ‹ y)zU
        Copy over visible screen content and "zero width escape sequences".
        N)rD   rC   Úranger"   Údata_bufferr'   Úzero_width_escapes)r(   r\   rd   r^   rb   rD   rC   rH   Útemp_rowÚrowÚtemp_zero_width_escapesrp   rG   s                r)   rU   z ScrollablePane._copy_over_screenû   sÑ   € ð ×"Ñ"ˆØ×"Ñ"ˆä�~×,Ñ,Ö-ˆAØ"×.Ñ.¨q°4×3GÑ3GÑ/GÑHˆHØ×$Ñ$ Q¨¡XÑ.ˆCØ&1×&DÑ&DØ�D×(Ñ(Ñ(ñ'Ð#ð "(×!:Ñ!:¸1¸t¹8Ñ!DÐä˜=Ö)�Ø (¨¡��A˜‘H‘àÐ/Ò/Ø3JÈ1Ñ3MÐ& q¨4¡xÒ0ñ	 *ñ .r+   c                ó@  ‡ ‡‡‡— |j                   Š|j                  Ši Šdˆˆ ˆˆfd„}|j                  }|j                  }t        |j                  «      D ]G  }||v sŒ||‰ j
                  z      }	||‰z      }
t        |«      D ]  }||	v sŒ ||	|   «      |
|‰z   <   Œ ŒI y)zá
        Copy over mouse handlers from virtual screen to real screen.

        Note: we take `virtual_width` because we don't want to copy over mouse
              handlers that we possibly have behind the scrollbar.
        c                ó4   •‡ — ‰ ‰vrdˆ ˆˆˆfd„}|‰‰ <   ‰‰    S )z:Wrap mouse handler. Translate coordinates in `MouseEvent`.c                óü   •— t        t        | j                  j                  ‰z
  | j                  j                  ‰j
                  z   ‰z
  ¬«      | j                  | j                  | j                  ¬«      } ‰|«       y )NrF   )ÚpositionÚ
event_typeÚbuttonÚ	modifiers)	r   r   rw   rG   rH   r'   rx   ry   rz   )ÚeventÚ	new_eventÚhandlerr(   rC   rD   s     €€€€r)   Únew_handlerzYScrollablePane._copy_over_mouse_handlers.<locals>.wrap_mouse_handler.<locals>.new_handler.  sg   ø€ Ü *Ü!&Ø#Ÿn™n×.Ñ.°Ñ5Ø#Ÿn™n×.Ñ.°×1EÑ1EÑEÈÑLô"ð $)×#3Ñ#3Ø$Ÿ|™|Ø"'§/¡/ô!�Iñ ˜IÕ&r+   )r{   r   ÚreturnÚNone© )r}   r~   Úmouse_handler_wrappersr(   rC   rD   s   ` €€€€r)   Úwrap_mouse_handlerzDScrollablePane._copy_over_mouse_handlers.<locals>.wrap_mouse_handler*  s.   ù€ àÐ4Ñ4÷
'ð 
'ð 3>Ð& wÑ/Ø)¨'Ñ2Ð2r+   N)r}   r   r   r   )rD   rC   r]   rn   r"   r'   )r(   r]   rf   r^   rb   rƒ   Úmouse_handlers_dictÚtemp_mouse_handlers_dictrH   Útemp_mouse_rowÚ	mouse_rowrG   r‚   rC   rD   s   `           @@@r)   rV   z(ScrollablePane._copy_over_mouse_handlers  sº   û€ ð ×"Ñ"ˆØ×"Ñ"ˆð DFÐ÷	3ð 	3ð( -×;Ñ;ÐØ#6×#EÑ#EÐ ä�~×,Ñ,Ö-ˆAØÐ,Ò,Ø!9¸!¸d×>RÑ>RÑ:RÑ!S�Ø/°°D±Ñ9�	Ü˜}Ö-�AØ˜NÒ*Ù.@ÀÐPQÑARÓ.S˜	 ! d¡(Ò+ñ .ñ	 .r+   c                ó&  — |j                   }|j                  }|j                  j                  «       D ]\  \  }}t	        |j                  |z   |j                   |z   | j
                  z
  |j                  |j                  ¬«      |j                  |<   Œ^ y)z3
        Copy over window write positions.
        )rC   rD   r"   r!   N)rD   rC   rP   rX   r   r'   r"   r!   )r(   r\   rd   r^   rD   rC   ÚwinÚ	write_poss           r)   rW   z)ScrollablePane._copy_over_write_positionsI  s‚   € ð ×"Ñ"ˆØ×"Ñ"ˆà)×LÑL×RÑRÖT‰NˆC�Ü=JØ—^‘^ dÑ*Ø—^‘^ dÑ*¨T×-AÑ-AÑAð !×'Ñ'Ø—o‘oô>ˆF×5Ñ5°cÒ:ñ Ur+   c                ó6   — | j                   j                  «       S r2   )r   Úis_modalr/   s    r)   rŒ   zScrollablePane.is_modal\  s   € Ø�|‰|×$Ñ$Ó&Ð&r+   c                ó6   — | j                   j                  «       S r2   )r   Úget_key_bindingsr/   s    r)   rŽ   zScrollablePane.get_key_bindings_  s   € Ø�|‰|×,Ñ,Ó.Ð.r+   c                ó   — | j                   gS r2   r.   r/   s    r)   Úget_childrenzScrollablePane.get_childrenb  s   € Ø—‘ˆ~Ðr+   c                óz  — d}||z
  }| j                  «       rh|�f| j                  }|j                  |z
  dz   |j                  z   }|j                  |j                  z
  }	t        ||«      }t        dt        ||	«      «      }| j                  «       rx|j                  |k  r)|j                  |j                  z   |z
  }
|j                  }n(|j                  }
|j                  |j                  z   |z
  }t        ||
«      }t        ||«      }||kD  r|}| j                  |kD  r|| _
        | j                  |k  r|| _
        yy)aÅ  
        Scroll the scrollable pane, so that this window becomes visible.

        :param visible_height: Height of this `ScrollablePane` that is rendered.
        :param virtual_height: Height of the virtual, temp screen.
        :param visible_win_write_pos: `WritePosition` of the nested window on the
            temp screen.
        :param cursor_position: The location of the cursor position of this
            window on the temp screen.
        r   Nr	   )r   r   rH   r   r   rI   r:   r   r"   rD   r'   )r(   Úvisible_heightrc   rh   Úcursor_positionÚ
min_scrollÚ
max_scrollÚoffsetsÚcpos_min_scrollÚcpos_max_scrollÚwindow_min_scrollÚwindow_max_scrolls               r)   rQ   z#ScrollablePane._make_window_visiblee  sb  € ð& ˆ
Ø# nÑ4ˆ
à×#Ñ#Ô%àÐ*Ø×-Ñ-�à#×%Ñ%¨Ñ6¸Ñ:¸W¿^¹^ÑKð  ð #2×"3Ñ"3°g·k±kÑ"A�Ü  ¨_Ó=�
Ü  ¤C¨
°OÓ$DÓE�
à×+Ñ+Ô-ð %×+Ñ+¨~Ò=à)×.Ñ.Ø+×2Ñ2ñ3à$ñ%ð "ð
 %:×$>Ñ$>Ñ!ð %:×$>Ñ$>Ð!à)×.Ñ.Ø+×2Ñ2ñ3à$ñ%ð "ô ˜ZÐ):Ó;ˆJÜ˜ZÐ):Ó;ˆJà˜
Ò"Ø#ˆJð ×Ñ *Ò,Ø#-ˆDÔ Ø×Ñ *Ò,Ø#-ˆDÕ ð -r+   c           
     óÜ  ‡‡— |j                   }| j                  «       }|r|dz  }	 |j                   t        |«      z  }| j                  t        |«      z  }t	        t        |t        d||z  «      «      «      Št	        ||z  «      Šdˆˆfd„}|j                  |j                  z   dz
  }	|j                  }
|j                  }|r!t        | j                  d«      ||
   |	<   |
dz  }
d}d}d}d}t        |«      D ]D  }d	} ||«      r ||dz   «      s|}n|}n ||dz   «      r|}n|}t        d
|«      ||
   |	<   |
dz  }
ŒF |rt        | j                  d«      ||
   |	<   yy# t        $ r Y yw xY w)zš
        Draw the scrollbar on the screen.

        Note: There is some code duplication with the `ScrollbarMargin`
              implementation.
        é   r	   c                ó*   •— ‰| cxk  xr ‰‰z   k  S c S )z/True if we should display a button on this row.r�   )rr   Úscrollbar_heightÚscrollbar_tops    €€r)   Úis_scroll_buttonz8ScrollablePane._draw_scrollbar.<locals>.is_scroll_buttonÃ  s   ø€ à$¨ÖO¨}Ð?OÑ/OÑOÐOÑOÐOr+   zclass:scrollbar.arrowzclass:scrollbar.backgroundz*class:scrollbar.background,scrollbar.startzclass:scrollbar.buttonz$class:scrollbar.button,scrollbar.endÚ r?   N)rr   Úintr   Úbool)r"   r$   Úfloatr'   r¢   r:   rI   rC   r!   rD   ro   r   r%   rn   r&   ÚZeroDivisionError)r(   r^   Úcontent_heightr\   Úwindow_heightr$   Úfraction_visibleÚfraction_abover    rC   rD   ro   Úscrollbar_backgroundÚscrollbar_background_startÚscrollbar_buttonÚscrollbar_button_endÚirA   rž   rŸ   s                     @@r)   r[   zScrollablePane._draw_scrollbar§  sº  ù€ ð '×-Ñ-ˆØ×,Ñ,Ó.ˆáØ˜QÑˆMð7	Ø-×4Ñ4´u¸^Ó7LÑLÐØ!×1Ñ1´E¸.Ó4IÑIˆNä"Ü�M¤3 q¨-Ð:JÑ*JÓ#KÓLó Ðô   °Ñ >Ó?ˆMö
Pð "×&Ñ&¨×)=Ñ)=Ñ=ÀÑAˆDØ!×&Ñ&ˆDØ ×,Ñ,ˆKñ Ü*.Ø×(Ñ(Ð*Aó+�˜DÑ! $Ñ'ð ˜‘	�ð $@Ð Ø)UÐ&Ø7ÐØ#IÐ ä˜=Ö)�Ø�Ù# AÔ&Ù+¨A°©EÔ2ð !5™à 0™á'¨¨A©Ô.Ø :™à 4˜ä*.¨s°EÓ*:�˜DÑ! $Ñ'Ø˜‘	‘ð! *ñ& Ü*.Ø×*Ñ*Ð,Có+�˜DÑ! $Ò'ð øôY !ò 	Ùð	ús   §A E Å	E+Å*E+)r   r
   r   zScrollOffsets | Noner   r   r   r   r    r¢   r!   r   r"   r   r#   r   r$   r   r%   Ústrr&   r¯   r   r€   )r   r¯   )r   r€   )r7   r¢   r   r   )r!   r¢   r    r¢   r   r   )r\   r   r]   r   r^   r   r_   r¯   r`   r£   ra   z
int | Noner   r€   )rj   r   r^   r   r   r   )
r\   r   rd   r   r^   r   rb   r¢   r   r€   )
r]   r   rf   r   r^   r   rb   r¢   r   r€   )r\   r   rd   r   r^   r   r   r€   )r   r£   )r   zKeyBindingsBase | None)r   zlist[Container])
r’   r¢   rc   r¢   rh   r   r“   zPoint | Noner   r€   )r^   r   r¦   r¢   r\   r   r   r€   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚMAX_AVAILABLE_HEIGHTr*   r0   r3   r5   r<   rK   rZ   rU   rV   rW   rŒ   rŽ   r�   rQ   r[   r�   r+   r)   r   r      s7  „ ñðF 04Ø,0Ø48Ø$8Ø"Ø#Ø'+Ø'+Ø"Ø!$ð!àð!ð -ð!ð *ð	!ð
 &2ð!ð "ð!ð ð!ð ð!ð %ð!ð %ð!ð ð!ð ð!ð 
ó!ó83óóó?ðuàðuð &ðuð &ð	uð
 ðuð ðuð ðuð 
óuðnØðØ,9ðà	óð"NàðNð ðNð &ð	Nð
 ðNð 
óNð61Tà%ð1Tð +ð1Tð &ð	1Tð
 ð1Tð 
ó1TðfØðØ+1ðØCPðà	óó&'ó/óð@.àð@.ð ð@.ð  -ð	@.ð
 &ð@.ð 
ó@.ðDGØ+ðGØ=@ðGØJPðGà	ôGr+   N)Ú
__future__r   Úprompt_toolkit.data_structuresr   Úprompt_toolkit.filtersr   r   Úprompt_toolkit.key_bindingr   Úprompt_toolkit.mouse_eventsr   Ú
containersr
   r   r=   r   r   r   r   r]   r   r   r\   r   r   r   Ú__all__r´   r   r�   r+   r)   Ú<module>r¼      sD   ðÝ "å 0ß :Ý 6Ý 2ç 0ß SÓ Sß 7ß /Ñ /àÐ
€ð Ð ô[�Yõ [r+   