o
    Þ­jÕC  ã                   @  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                   @  st  e Zd ZdZdddddddddddd	d
dœZdZ			dodpdd„Zdqdd„Z			drdsd'd(„Zdtdud,d-„Z		dvdwd3d4„Z
			dxdyd8d9„Z			dxdzd;d<„Z			dxd{d>d?„Zdqd@dA„Z			dxd|dDdE„Z			dxd}dGdH„Zd~dKdL„Z			dd€dOdP„Z		d�d‚dRdS„ZdƒdWdX„Zd„dZd[„Z			dxd…d\d]„Zd†d^d_„Zd‡dadb„Zdˆdcdd„Z			dxd‰dedf„Z	g	g	dŠd‹dmdn„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<   úU/var/www/html/CropPilot/venv/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s·t 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   ú
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_menuc                 C  s   t d| j d¡d�S )Nr×   r-   r�   )r   r9   rX   rB   r<   r<   r=   Ú"_render_cancelled_progress_message¼  s   z,BaseStyle._render_cancelled_progress_messager   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    ùûÿz6BaseStyle._render_progress_content.<locals>.<listcomp>)Úcurrent_messagerß   Ú_inline_logsrÞ   ÚtitleÚ_should_show_progress_titler   r”   )r;   rq   r˜   rÞ   Ústart_contentr<   rá   r=   Ú_render_progress_content¿  s"   
ÿý
ÿøþz"BaseStyle._render_progress_contentc                 C  s6   |j r|jrdS t|jtƒr|jj|jkS |j|jkS )NT)rß   rã   rg   râ   r   Úplainrä   r©   r<   r<   r=   Ú"_progress_has_content_beyond_titleÞ  s
   z,BaseStyle._progress_has_content_beyond_titlec                 C  s&   |   |¡}|r|jrt||  ¡ ƒS |S rŽ   )rç   r§   r   rÝ   )r;   rq   r{   r|   rr   r˜   r<   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   )r?   r   )rq   r   r?   r   )rq   r   r?   rJ   )
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<   r<   r=   r       s–    ñü
ü&ÿû(ûû

ûû
#û*ü

6û
5

ûú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&     ÿ