o
    찓i@                     @  s
  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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 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* edee dZ+G dd dZ,dS )    )annotations)AnyDictOptionalTypeTypeVarUnion)Color)ConsoleConsoleRenderableGroupRenderableType)Text)Theme)Literal)Button)	Container)CursorOffsetElement)Input)Menu)ProgressProgressLine)Spacer)	fade_textget_terminal_background_colorget_terminal_text_colorlightenConsoleRenderableClass)boundc                   @  sV  e Zd ZdZdddddddddddd	d
dZdZ			didjddZdkddZ			dldmd'd(Zdndod,d-Z		dpdqd3d4Z
			drdsd8d9Z			drdtd;d<Z			drdud>d?Zdkd@dAZ			drdvdDdEZ			drdwdGdHZdxdKdLZ			dydzdOdPZ		d{d|dRdSZd}dWdXZd~dZd[Z			drdd\d]Z			drdd_d`Z	a	a	dddgdhZdS )	BaseStyle皙?boldz#ffffffgreenwhitez
on #893AE3redz
red italicgrey62zindian_red strike)z	tag.titletagtextselectedresultprogresserror	cancelledactiveztitle.errorztitle.cancelledplaceholderzplaceholder.cancelledTN#000000#FFFFFFthemeOptional[Dict[str, str]]background_colorstr
text_colorc                 C  sL   t || _t|| _d| _t| j}t|d| _|r$| j	t| d S d S )Nr   )r2   )
r   r4   r   r6   animation_counterr   
base_themer
   console
push_theme)selfr2   r4   r6   r8    r<   L/home/ubuntu/.local/lib/python3.10/site-packages/rich_toolkit/styles/base.py__init__5   s   


zBaseStyle.__init__returnr   c                 C     dS )N r<   r;   r<   r<   r=   
empty_lineE      zBaseStyle.empty_line   Fstartedstepsintbreatheboolanimation_status&Literal['started', 'stopped', 'error']metadatar   list[Color]c                   s   |dk}|dkrj dj  d u rtd nj dj  s)tddd |r/|d }|rD jd urD fddtd	|D }n g| }|rT||d d d
  }|S )NrF   r,   r%   r+         c                   s   g | ]
}t  j| qS r<   )r   brightness_multiplier).0i
base_colorr;   r<   r=   
<listcomp>a   s    z3BaseStyle._get_animation_colors.<locals>.<listcomp>r   )	r9   	get_stylecolorr	   parsebgcolorfrom_rgbtripletrange)r;   rG   rI   rK   rM   animatedcolorsr<   rT   r=   _get_animation_colorsH   s&   

zBaseStyle._get_animation_colorsr   labeldecoration_widthc                 C  sT   | j j| }|dkrdS t|trt|n|}| j j|| j j|dd}t	|S )Nr      F)pad)
r9   width
isinstancer5   r   from_markuprender_linesoptionsupdate_widthlen)r;   rb   rc   available_width
renderablelinesr<   r<   r=   _count_label_linesn   s   zBaseStyle._count_label_lineselementr   parentOptional[Element]r   c                 C  s>   |j }t|tr|js|jr| |j}t|d |jdS |S )Nrd   )topleft)cursor_offsetrg   r   inlinerb   rp   r   ru   )r;   rq   rr   offsetlabel_linesr<   r<   r=   get_cursor_offset_for_elementz   s
   z'BaseStyle.get_cursor_offset_for_element	is_activedonekwargsc              	   K  s  t |tr| ||||S t |tr| ||||S t |tr'| ||||S t |tr4| ||||S t |t	rA| 
||||S t |trU|  jd7  _| ||||S t |trq| j|j||dd|dd|dddS t |trz|  S t |tr|S tdt| )	Nrd   indexr   	max_linesrW   total_lines)rr   r~   r   r   zUnknown element type: )rg   r5   render_stringr   render_buttonr   render_containerr   render_inputr   render_menur   r7   render_progressr   render_progress_log_liner(   getr   render_spacerr   
ValueErrortype)r;   rq   r{   r|   rr   r}   r<   r<   r=   render_element   s4   











zBaseStyle.render_elementstringc                 C  s   |S Nr<   )r;   r   r{   r|   rr   r<   r<   r=   r      s   zBaseStyle.render_stringr   c                 C  s"   |rdnd}t d|j d|dS )Nzblack on bluezwhite on blackrA   style)r   rb   )r;   rq   r{   r|   rr   r   r<   r<   r=   r      s   zBaseStyle.render_buttonc                 C  r@   )N r<   rB   r<   r<   r=   r      rD   zBaseStyle.render_spacer	containerr   c              	   C  sV   g }t |jD ]\}}|| j|||jk||d qtg ||s&dR  S dR  S )N)r{   r|   rr   
r   )	enumerateelementsappendr   active_element_indexr   )r;   r   r{   r|   rr   contentrS   rq   r<   r<   r=   r      s    	zBaseStyle.render_containerr   c           	      C  s   | j |||d}| j||||d}g }|js|r3|r$|jr$dt|j }|r-| d| }|| n|r:|| || | | }rK|| t||_	t
| S )Nr{   rr   )r{   rr   r|   *rA   )render_input_labelrender_input_valuerw   passwordrl   r(   r   render_validation_messageextend_heightr   )	r;   rq   r{   r|   rr   rb   r(   contentsvalidation_messager<   r<   r=   r      s$   





zBaseStyle.render_inputUnion[Input, Menu]Optional[list[RenderableType]]c                 C  s6   |j r	tddgS |jdu rtdd|j dgS d S )Nr   z[cancelled]Cancelled.[/]F[error][/])
_cancelledr   validr   )r;   rq   r<   r<   r=   r      s
   
z#BaseStyle.render_validation_messageinputUnion[Menu, Input]c                 C  s   |j }t|tr|jr|rdt| }|jr |sdS d| dS |r8|s2t|tr2|jr2|jr2|j}d| dS |sNt|trB|jnd}|pGd}d| dS d| dS )	Nr   r   z[placeholder.cancelled]r   z[result]u   ​z[placeholder]z[text])	r(   rg   r   r   rl   r   default_as_placeholderdefaultr/   )r;   r   r{   rr   r|   r(   r/   r<   r<   r=   r     s.   zBaseStyle.render_input_valueUnion[str, Text, None]c                 C  sT   ddl m} d }|jr(|j}t||r(|rd| d}|S |jdu r(d| d}|S )Nr   )Formz[active]r   Fr   )rich_toolkit.formr   rb   rg   r   )r;   r   r{   rr   r   rb   r<   r<   r=   r   )  s   

zBaseStyle.render_input_labelr   	separatorr   c              	   C  sr  t dd}t |jd }t |jd }|j\}}|j|| }| }	|	rC|jr5|t |jd dd n|t dt	|j d  t
|D ]B\}
}||
 }||jk}|jr]||}n|}|rc|n|}| j|rldnd}|
t	|d	 k}|t j||d
 |s|nd|d qG|	r|jr|t d|j dd n|t ddt	|j   |jst d| jdd}|S )zBBuild the menu Text containing scroll indicators and option items.ru   )justifyrA   r   dimr   r)   r(   rd   namer   zNo results found)r   active_prefixinactive_prefixvisible_options_rangerj   _needs_scrollinghas_more_abover   MORE_ABOVE_INDICATORrl   r   r)   multipleis_option_checked_by_refr9   rX   assemblehas_more_belowMORE_BELOW_INDICATOR)r;   rq   r   menuchecked_prefixunchecked_prefixstartendvisible_optionsneeds_scrollingidxoption
actual_idxis_at_cursor	is_markedprefixr   is_lastr<   r<   r=   _build_menu_options>  sD   



	zBaseStyle._build_menu_optionslist[RenderableType]c                 C  sl   |j sg S g }t|j| jdf|j| jdf}|j }r*|jd| dd |d || |S )Nr(   rA   r   r   r   )	allow_filteringr   r   filter_promptr9   rX   r(   selection_count_hintr   )r;   rq   filter_partsfilter_linehintr<   r<   r=   _build_filter_partst  s   


zBaseStyle._build_filter_partsc                 C  s  | j |||d}|rQt }|r|| |d |j}|js4d|j  ko,t|jk n  }|p3| }|rC|jd| j	dd |S |j|j
| j	dd |S t|jrWdnd	}	| ||	}
| |}g }|rn|| || ||
 | | }r|| t| S )
Nr   rA   r   z
Cancelled.r-   r   r*   z  r   )r   r   r   r   r   r)   rl   rj   r9   rX   result_display_namerw   r   r   r   r   r   )r;   rq   r{   r|   rr   rb   result_contentshould_show_cancelledselection_is_validr   r   r   r   messager<   r<   r=   r     s@   

 








zBaseStyle.render_menur   c                   sr    j } jr7 jr7 jdkr j j d  n j} jdg}js$g }tg | fddt|D R  }|S )Nr   r   c              	     s,   g | ]\}}j || jt j d qS ))r~   r   r   rr   )r   lines_to_showrl   logs)rR   r~   linerq   r;   r<   r=   rV     s    z-BaseStyle.render_progress.<locals>.<listcomp>)current_messager   _inline_logsr   title_should_show_progress_titler   r   )r;   rq   r{   r|   rr   r   r   start_contentr<   r   r=   r     s"   

zBaseStyle.render_progressrW   r   
str | Textr~   r   r   c           
      C  s   t |tr
t|n|}|dkr|S t||}d}|t|| d  }tt||d}|d | d|  | }	t|t	| j
| j|	dS )NrW   g?r!   g      ?rd   )r6   r4   rQ   )rg   r5   r   rh   minabsmaxr   r	   rZ   r6   r4   )
r;   r   r~   r   r   rr   shown_linesmin_brightnesscurrent_min_brightnessrQ   r<   r<   r=   r     s$   



z"BaseStyle.render_progress_log_line)Nr0   r1   )r2   r3   r4   r5   r6   r5   )r?   r   )rE   FrF   )
rG   rH   rI   rJ   rK   rL   rM   r   r?   rN   )r   )rb   r5   rc   rH   r?   rH   r   )rq   r   rr   rs   r?   r   )FFN)rq   r   r{   rJ   r|   rJ   rr   rs   r}   r   r?   r   )
r   r5   r{   rJ   r|   rJ   rr   rs   r?   r   )
rq   r   r{   rJ   r|   rJ   rr   rs   r?   r   )
r   r   r{   rJ   r|   rJ   rr   rs   r?   r   )
rq   r   r{   rJ   r|   rJ   rr   rs   r?   r   )rq   r   r?   r   )FNF)
r   r   r{   rJ   rr   rs   r|   rJ   r?   r   )FN)r   r   r{   rJ   rr   rs   r?   r   )rq   r   r   r   r?   r   )rq   r   r?   r   )
rq   r   r{   rJ   r|   rJ   rr   rs   r?   r   )
rq   r   r{   rJ   r|   rJ   rr   rs   r?   r   )rW   rW   N)r   r   r~   rH   r   rH   r   rH   rr   rs   r?   r   )__name__
__module____qualname__rQ   r8   r   r>   rC   ra   rp   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r<   r<   r=   r       s    
&(


#*

68)r    N)-
__future__r   typingr   r   r   r   r   r   
rich.colorr	   rich.consoler
   r   r   r   	rich.textr   
rich.themer   typing_extensionsr   rich_toolkit.buttonr   rich_toolkit.containerr   rich_toolkit.elementr   r   rich_toolkit.inputr   rich_toolkit.menur   rich_toolkit.progressr   r   rich_toolkit.spacerr   rich_toolkit.utils.colorsr   r   r   r   r   r    r<   r<   r<   r=   <module>   s&     