o
    h                     @   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 )    )OptionalTupleLiteral   )	loop_last)ConsoleConsoleOptionsRenderableTypeRenderResult)Control)ControlTypeSegment)	StyleType)Text)cropellipsisvisiblec                	   @   st   e Zd ZdZ		ddedededd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 )
LiveRenderzCreates 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   O/var/www/html/venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py__init__   s   
zLiveRender.__init__c                 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 )zGet 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_cursor)   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 )zGet 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_cursor>   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lastr6   r   r   r   __rich_console__L   s:   




zLiveRender.__rich_console__)r   r   )__name__
__module____qualname____doc__r	   r   VerticalOverflowMethodr   r   r   r&   r'   r   r   r
   r<   r   r   r   r   r      s.    

r   N)typingr   r   r   _loopr   r(   r   r   r	   r
   controlr   segmentr   r   r   r   textr   rA   r   r   r   r   r   <module>   s    