o
    Ú­jÛ  ã                   @   s†   d dl mZ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 ddlmZmZ ddlmZ ddlmZ ed	 ZG d
d„ dƒZdS )é    )ÚLiteralÚOptionalÚTupleé   )Ú	loop_last)ÚConsoleÚConsoleOptionsÚRenderableTypeÚRenderResult)ÚControl)ÚControlTypeÚSegment)Ú	StyleType)ÚText)ÚcropÚellipsisÚvisiblec                	   @   s†   e Zd ZdZ		ddedededdfd	d
„Zede	fdd„ƒZ
deddfdd„Zdefdd„Zdefdd„Zdededefdd„ZdS )Ú
LiveRenderzØCreates a renderable that may be updated.

    Args:
        renderable (RenderableType): Any renderable object.
        style (StyleType, optional): An optional style to apply to the renderable. Defaults to "".
    Ú r   Ú
renderableÚstyleÚvertical_overflowÚreturnNc                 C   s   || _ || _|| _d | _d S )N)r   r   r   Ú_shape)Úselfr   r   r   © r   úM/var/www/html/CropPilot/venv/lib/python3.10/site-packages/rich/live_render.pyÚ__init__   s   
zLiveRender.__init__c                 C   s   | j du rdS | j d S )z�The number of lines in the last render (may be 0 if nothing was rendered).

        Returns:
            Height in lines
        Nr   r   )r   )r   r   r   r   Úlast_render_height    s   

zLiveRender.last_render_heightc                 C   s
   || _ dS )z|Set a new renderable.

        Args:
            renderable (RenderableType): Any renderable object, including str.
        N)r   )r   r   r   r   r   Úset_renderable+   s   
zLiveRender.set_renderablec                 C   sL   | j dur#| j \}}ttjtjdfgtjdftjdff|d  ¢R Ž S tƒ S )z•Get control codes to move cursor to beginning of live render.

        Returns:
            Control: A control instance that may be printed.
        Né   r   )r   r   r   ÚCARRIAGE_RETURNÚERASE_IN_LINEÚ	CURSOR_UP©r   Ú_Úheightr   r   r   Úposition_cursor3   s   

þþüüzLiveRender.position_cursorc                 C   s@   | j dur| j \}}ttjgtjdftjdff| ¢R Ž S tƒ S )z®Get control codes to clear the render and restore the cursor to its previous position.

        Returns:
            Control: A Control instance that may be printed.
        Nr   r    )r   r   r   r!   r#   r"   r$   r   r   r   Úrestore_cursorH   s   

ÿþzLiveRender.restore_cursorÚconsoleÚoptionsc                 c   sð   � | j }| | j¡}|j|||dd�}t |¡}|\}}||jjkr\| jdkr5|d |jj… }t |¡}n'| jdkr\|d |jjd … }t	ddddd	d
�}	| 
t| |	¡ƒ¡ t |¡}|| _t ¡ }
t|ƒD ]\}}|E d H  |su|
V  qgd S )NF)r   Úpadr   r   r   z...Úcenterr   zlive.ellipsis)ÚoverflowÚjustifyÚendr   )r   Ú	get_styler   Úrender_linesr   Ú	get_shapeÚsizer&   r   r   ÚappendÚlistÚrenderr   Úliner   )r   r)   r*   r   r   ÚlinesÚshaper%   r&   Úoverflow_textÚnew_lineÚlastr7   r   r   r   Ú__rich_console__V   s:   €


û

€ýzLiveRender.__rich_console__)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   ÚVerticalOverflowMethodr   ÚpropertyÚintr   r   r   r'   r(   r   r   r
   r=   r   r   r   r   r      s2    
üþýü
û
ÿÿþr   N)Útypingr   r   r   Ú_loopr   r)   r   r   r	   r
   Úcontrolr   Úsegmentr   r   r   r   Útextr   rB   r   r   r   r   r   Ú<module>   s    