
    <9j                         d dl mZmZmZmZ d dlmZ d dlmZ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  G d d      Z  G d de      Z!y)    )AnyDictListOptional)loop_first_last)ConsoleConsoleOptionsGroupRenderableTypeRenderResult)Segment)StyleText)Literal)	Container)CursorOffsetElement)Form)Progress)	BaseStylec                       e Zd Z	 	 	 	 	 ddededee   deeeef      dee	   dee
   de	d	dfd
Zdded	efdZdeee      d	eee      fdZ	 	 	 	 	 	 ddZy)
FancyPanelN
renderablestyletitlemetadatais_animatedanimation_counterdonereturnc                     || _         || _        |xs i | _        d | _        d| _        || _        |xs d| _        || _        || _        y )NTr   )	r   _titler   widthexpandr   counterr   r    )selfr   r   r   r   r   r   r    s           Y/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/rich_toolkit/styles/fancy.py__init__zFancyPanel.__init__   sM     % B
&(-A
	    suffixc                 $   | j                   j                  d      rdnd}| j                   xr | j                  }|rdnd}| j                  j                  dd|      | j                  dz     }t        ||z   t        j                  |      	      S )
Nr   u   ┌u   ◆startedstopped   T)stepsbreatheanimation_statusr   )
r   getr    r   r   _get_animation_colorsr&   r   r   
from_color)r'   r+   charanimatedr2   colors         r(   _get_decorationzFancyPanel._get_decoration&   s    ))'2uyy=5T%5%5 "Iy 	 

00d5E 1 

,,
 tf}E,<,<U,CDDr*   linesc                     |r=t        d |d   D              r(|j                          |rt        d |d   D              r(|S )Nc              3   V   K   | ]!  }|j                   j                         d k(   # yw) N)textstrip).0segments     r(   	<genexpr>z6FancyPanel._strip_trailing_newlines.<locals>.<genexpr>:   s"     P7GLL..0B6Ps   '))allpop)r'   r;   s     r(   _strip_trailing_newlinesz#FancyPanel._strip_trailing_newlines5   s>    
 PeBiPPIIK PeBiPP r*   c              #     K   | j                   }|j                  ||j                  |j                  dz
              }| j	                  |      }| j                         }t        j                         }| j                  .| t        d       t        | j                         |r| t        |      D ]  \  }}}	|rF| j                  s:| j                  j                  dd      rt        d      n| j                  d      }
n5|r(| j                  j                  dd      rt        d	      }
nt        d
      }
|
 |	E d {    |r|  y 7 w)N    r   Fu   ┌ )r+   r-   Tu   └ u   │ )r   render_linesupdate_width	max_widthrG   r:   r   liner#   r   r   r4   )r'   consoleoptionsr   r;   
line_startnew_linefirstlastrN   
decorations              r(   __rich_console__zFancyPanel.__rich_console__?   s5     __
$$,,W->->-BC
 --e4))+
<<>;;"#,$++&&!0!7 	E4T[[ }}((%8 FO--S-9 
 $--++It<$V_
$V_
OO!	 s   EEEEE)NNNNF)r>   )rO   r   rP   r	   r!   r   )__name__
__module____qualname__r   r   r   strr   r   boolintr)   r   r:   r   rG   rV    r*   r(   r   r      s    
  $-1&*+/"  }	
 4S>* d^ $C=  
(Ec E7 E$w-(	d7m	% %+;%	%r*   r   c                        e Zd ZdZd fdZddedee   defdZ		 	 	 ddedededee   d	ede
f fd
Z	 	 	 ddedededee   de
f
 fdZdefdZ	 ddedee   defdZ xZS )
FancyStyleFr!   c                 @    t        |   |i | d| _        d| _        y )NrI   )superr)   cursor_offsetdecoration_size)r'   argskwargs	__class__s      r(   r)   zFancyStyle.__init__j   s%    $)&) r*   elementparentc                 0    t        |t        t        f       S N)
isinstancer   r   )r'   rg   rh   s      r(   _should_decoratezFancyStyle._should_decoratep   s    fx&;<<<r*   	is_activer    r   c           	          d }d}t        |t              r|j                  }d}t        	|   d||||d|}| j                  ||      rt        |||||| j                  |       }|S )NFT)rg   rm   r    rh   )r   r   r   r    r   r   r]   )rk   r   r   ra   render_elementrl   r   r   )
r'   rg   rm   r    rh   r   r   r   renderedrf   s
            r(   ro   zFancyStyle.render_elements   s      $gx(MMEK7) 
ytF
NV
   &1!!'"&"8"8H r*   c                     |rV|j                   rJ| j                  |      r)t        | j                  |      | j	                               S | j	                         S t
        |   ||||      S rj   )
_cancelled"_progress_has_content_beyond_titler
   _render_progress_content"_render_cancelled_progress_messagera   render_progress)r'   rg   rm   r    rh   rf   s        r(   rv   zFancyStyle.render_progress   sl     G&&66w?11':;;= 
 ::<<w&w	4HHr*   c                     t        dd      S )zuReturn an empty line with decoration.

        Returns:
            A text object representing an empty line
        u   │zfancy.normalr3   r   )r'   s    r(   
empty_linezFancyStyle.empty_line   s     E00r*   c                 ^   ddl m} t        |t              r|j                  S |j                  }|j
                  }t        ||      rD|j                  s8|j                  r,| j                  |j                  | j                        }|dz   }t        || j                  |j                  z         S )zGet the cursor offset for an element.

        Args:
            element: The element to get the cursor offset for

        Returns:
            The cursor offset
        r   )Input)decoration_width   )topleft)rich_toolkit.inputrz   rk   r   rb   r}   inlinelabel_count_label_linesrc   r   r~   )r'   rg   rh   rz   offsetr}   label_liness          r(   get_cursor_offset_for_elementz(FancyStyle.get_cursor_offset_for_element   s     	-gt$(((&&jjgu%gnn110D0D 2 K /C%%3
 	
r*   )r!   Nrj   )FFN)rW   rX   rY   _should_show_progress_titler)   r   r   r   r[   rl   r   ro   r   rv   r   rx   r   r   __classcell__)rf   s   @r(   r_   r_   g   s    "'!= =Xg5F =RV =  $(  	
 !  
H  $(II I 	I
 !I 
I$1D 1 =A

(0(9
	
r*   r_   N)"typingr   r   r   r   
rich._loopr   rich.consoler   r	   r
   r   r   rich.segmentr   
rich.styler   	rich.textr   typing_extensionsr   rich_toolkit.containerr   rich_toolkit.elementr   r   rich_toolkit.formr   rich_toolkit.progressr   rich_toolkit.styles.baser   r   r_   r]   r*   r(   <module>r      sJ    , , & U U     % , 6 " * .S Slc
 c
r*   