ó
    Ãu„j]h  ã                  óH  • S r SSKJr  SSKJr  SSKJrJrJrJ	r	  SSK
rSSKJrJr  SSKJr  SSKJrJrJr  SS	KJr  SS
KJr  SSKJrJr  SSKJrJr  SSKJ r   SSK!J"r"  SSK#J$r$J%r%  SSK&J'r'  / SQr(SS jr) " S S5      r*\RV                  RX                   " S S5      5       r-g)z²
This module contains the `Strip` class and related objects.

A `Strip` contains the result of rendering a widget.
See [Line API](/guide/widgets#line-api) for how to use Strips.
é    )Úannotations)Ú	lru_cache)ÚAnyÚIterableÚIteratorÚSequenceN)Úcell_lenÚset_cell_size)ÚColorSystem)ÚConsoleÚConsoleOptionsÚRenderResult)ÚMeasurement)ÚSegment)ÚStyleÚ	StyleType)Úindex_to_cell_positionÚline_pad)Ú	FIFOCache)ÚColor)ÚAlignHorizontalÚAlignVertical)Ú
LineFilter)Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú21Ú51Ú52Ú53c           
     ó~   • [         n[        U  VVVs/ s H  u  p#oD(       a  M  U" U5      PM     snnn5      $ s  snnnf )z†Get the line length (total length of all segments).

Args:
    segments: Iterable of segments.

Returns:
    Length of line in cells.
)r	   Úsum)ÚsegmentsÚ	_cell_lenÚtextÚ_Úcontrols        Ú›C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\textual/strip.pyÚget_line_lengthr/      s3   € ô €IÜ¹ÕPºÑ$4 D¨WË“‘	˜$–¹ÓPÓQÐQùÔPs   ’8£8c                  óR   • \ rS rSrSrSS	S jjr      S
S jr      SS jrSrg)ÚStripRenderableé+   z7A renderable which renders a list of strips into lines.Nc                ó   • Xl         X l        g ©N©Ú_stripsÚ_width)ÚselfÚstripsÚwidths      r.   Ú__init__ÚStripRenderable.__init__.   s   € ØŒØ�ó    c              #  ó|   #   • [         R                  " 5       nU R                   H  nU S h  v•N   Uv •  M     g  N7fr4   )r   Úliner6   )r8   ÚconsoleÚoptionsÚnew_lineÚstrips        r.   Ú__rich_console__Ú StripRenderable.__rich_console__2   s1   é € ô —<’<“>ˆØ—\”\ˆEØ×ÐØŒNò "Ùùs   ‚*<¬:­<c                ó„   • U R                   c  [        S U R                   5       5      nOU R                   n[        X35      $ )Nc              3  ó8   #   • U  H  oR                   v •  M     g 7fr4   )Úcell_length©Ú.0rC   s     r.   Ú	<genexpr>Ú3StripRenderable.__rich_measure__.<locals>.<genexpr>>   s   é € ÐD²|¨e×)Ö)²|ùó   ‚)r7   Úmaxr6   r   )r8   r@   rA   r:   s       r.   Ú__rich_measure__Ú StripRenderable.__rich_measure__:   s6   € ð �;‰;ÑÜÑD°t·|²|ÓDÓD‰Eà—K‘KˆEÜ˜5Ó(Ð(r=   r5   r4   )r9   úlist[Strip]r:   ú
int | NoneÚreturnÚNone)r@   r   rA   r   rS   r   )r@   z	'Console'rA   z'ConsoleOptions'rS   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r;   rD   rO   Ú__static_attributes__© r=   r.   r1   r1   +   sD   † ÙAöðØðØ)7ðà	ôð)Ø ð)Ø+;ð)à	÷)r=   r1   c                  ó\  • \ rS rSrSr/ SQr S-     S.S jjrS/S jr\S0S j5       r	\S1S j5       r
\\" S	S
9S-S2S jj5       5       r\ S-     S3S jj5       r\              S4S j5       rS5S jr\S6S j5       r\S7S j5       rS8S jrS9S jrS:S jrS:S jrS6S jrS;S jrS<S jr\S6S j5       rS-S=S jjrS-S=S jjrS>S jrS>S jrS?S jrS@S jr SAS jr!S-SBS  jjr"SCS! jr#SDS" jr$SES# jr%SFS$ jr&\\" S%S
9SGS& j5       5       r'\SHS' j5       r(SIS( jr)SJS) jr*SKS* jr+SLS+ jr,S,r-g)MÚStripéD   a  Represents a 'strip' (horizontal line) of a Textual Widget.

A Strip is like an immutable list of Segments. The immutability allows for effective caching.

Args:
    segments: An iterable of segments.
    cell_length: The cell length if known, or None to calculate on demand.
)Ú	_segmentsÚ_cell_lengthÚ_divide_cacheÚ_crop_cacheÚ_style_cacheÚ_filter_cacheÚ_render_cacheÚ_line_length_cacheÚ_crop_extend_cacheÚ_offsets_cacheÚ	_link_idsÚ_cell_countNc                ó:  • [        U5      U l        X l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l	        [        S5      U l
        S U l        S U l        S U l        g )Né   é   )Úlistr_   r`   r   ra   rb   rc   rd   rf   rg   rh   re   ri   rj   )r8   r)   rH   s      r.   r;   ÚStrip.__init__^   s�   € ô ˜h›ˆŒØ'ÔÜFOÐPQÃlˆÔÜ>GÈ»mˆÔÜ5>¸r³]ˆÔÜIRÐSTËˆÔô �a‹Lð 	Ôô �a‹Lð 	Ôô BKÈ1ÃˆÔØ)-ˆÔØ*.ˆŒØ'+ˆÕr=   c              #  óf   #   •  U R                   v •  U R                  v •  g ! [         a     g f = f7fr4   )r_   rH   ÚAttributeError©r8   s    r.   Ú__rich_repr__ÚStrip.__rich_repr__t   s1   é € ð	Ø—.‘.Ò Ø×"Ñ"Ó"øÜó 	Ùð	üs   ‚1„!  1¡
.«1­.®1c                óF   • SR                  S U R                   5       5      $ )zSegment text.Ú c              3  ó8   #   • U  H  oR                   v •  M     g 7fr4   )r+   ©rJ   Úsegments     r.   rK   ÚStrip.text.<locals>.<genexpr>~   s   é € ÐB²>¨—|–|²>ùrM   )Újoinr_   rr   s    r.   r+   Ú
Strip.text{   s   € ð �w‰wÑB°4·>²>ÓBÓBÐBr=   c                óª   • U R                   c5  U R                   VVs1 s H  u  poc  M
  UR                  iM     snnU l         U R                   $ s  snnf )z$A set of the link ids in this Strip.)ri   r_   Ú_link_id)r8   r,   Ústyles      r.   Úlink_idsÚStrip.link_ids€   sH   € ð �>‰>Ñ!à26·.².ôÚ2@¡; 1¨Q“�—”±.òˆDŒNð �~‰~Ðùós
   �	AªAi   )Úmaxsizec                óŠ   • [        U[        5      (       a  [        R                  " U5      OUnU " [	        SU-  U5      /U5      $ )zwCreate a blank strip.

Args:
    cell_length: Desired cell length.
    style: Style of blank.

Returns:
    New strip.
Ú )Ú
isinstanceÚstrr   Úparser   )ÚclsrH   r   Úsegment_styles       r.   ÚblankÚStrip.blank‰   s<   € ô /9¸Ä×.DÑ.DœŸš EÔ*È%ˆÙ”G˜C +Ñ-¨}Ó=Ð>ÀÓLÐLr=   c                ó<   • U Vs/ s H
  o0" X25      PM     sn$ s  snf )zåConvert lines (lists of segments) to a list of Strips.

Args:
    lines: List of lines, where a line is a list of segments.
    cell_length: Cell length of lines (must be same) or None if not known.

Returns:
    List of strips.
r[   )rˆ   ÚlinesrH   r)   s       r.   Ú
from_linesÚStrip.from_lines˜   s"   € ñ <AÓAº5¨x��HÖ*¹5ÑAÐAùÒAs   …c           	   #  ó   ^ ^^#   • U(       d  gU Vs/ s H  owR                   PM     nn[        U5      n	[        U5      n
SU UU4S jjnS=pÍUbF  [        SXJ-
  5      nUS:X  a  UnOUS:X  a
  US-  nXì-
  nOUS:X  a  UnU(       a  U" U5       Sh  v•N   US:X  aQ  U HJ  nUR                   T:X  a  Uv •  M  [        [	        UR
                  STUR                   -
  T5      T5      v •  ML     O¿US	:X  af  [        STU	-
  5      S-  nU HM  nUR                   T:X  a  Uv •  M  [        [	        UR
                  UTUR                   -
  U-
  T5      T5      v •  MO     OSUS
:X  aM  U HG  nUR                   T:X  a  Uv •  M  T " [	        UR
                  TUR                   -
  ST5      T5      v •  MI     U(       a  U" U5       Sh  v•N   ggs  snf  GN9 N7f)ae  Align a list of strips on both axis.

Args:
    strips: A list of strips, such as from a render.
    style: The Rich style of additional space.
    width: Width of container.
    height: Height of container.
    horizontal: Horizontal alignment method.
    vertical: Vertical alignment method.

Returns:
    An iterable of strips, with additional padding.

Nc              3  óh   >#   • T" [        ST-  T5      /T5      n[        U 5       H  nUv •  M	     g7f)zoCreate blank lines.

Args:
    count: Desired number of blank lines.

Returns:
    An iterable of blank lines.
r„   N)r   Úrange)ÚcountrŠ   r,   rˆ   r   r:   s      €€€r.   Úblank_linesÚ Strip.align.<locals>.blank_linesÅ   s5   øé € ñ œ  u¡¨eÓ4Ð5°uÓ=ˆEÜ˜5–\�Ø”ò "ùs   ƒ/2r   ÚtopÚmiddleé   ÚbottomÚleftÚcenterÚright)r“   ÚintrS   úIterable[Strip])rH   rN   Úlenr]   r   r_   )rˆ   r9   r   r:   ÚheightÚ
horizontalÚverticalrC   Úline_lengthsÚshape_widthÚshape_heightr”   Útop_blank_linesÚbottom_blank_linesÚvertical_excess_spaceÚ
left_spaces   ` ``            r.   ÚalignÚStrip.align§   sô  úé € ö0 ØÙ7=Ó>²v¨e×)Ô)±vˆÐ>Ü˜,Ó'ˆÜ˜<Ó(ˆ÷	ñ 	ð 01Ð0ˆØÑÜ$'¨¨6Ñ+@Ó$AÐ!à˜5Ó Ø%:Ñ"Ø˜XÓ%Ø"7¸1Ñ"<�Ø%:Ñ%LÑ"Ø˜XÓ%Ø"7�æÙ& Ó7×7Ð7à˜ÓÛ�Ø×$Ñ$¨Ó-Ø”KäÜ  §¡°!°U¸U×=NÑ=NÑ5NÐPUÓVØóô ò	  ð ˜8Ó#Ü˜Q ¨Ñ 3Ó4¸Ñ9ˆJÛ�Ø×$Ñ$¨Ó-Ø”KäÜ Ø!ŸO™OØ&Ø! E×$5Ñ$5Ñ5¸
ÑBØ!ó	ð óô ò	  ð ˜7Ó"Û�Ø×$Ñ$¨Ó-Ø”KáÜ  §¡°%¸%×:KÑ:KÑ2KÈQÐPUÓVØóô ñ	  ö Ù"Ð#5Ó6×6Ñ6ð ùòG ?ò< 8ñL 7ùs/   …G’G§A)GÂG	ÂD,GÆ=GÆ>GÇGc                ó.   • [        U R                  U5      $ )a  Given a character index, return the cell position of that character.
This is the sum of the cell lengths of all the characters *before* the character
at `index`.

Args:
    index: The index to convert.

Returns:
    The cell position of the character at `index`.
)r   r_   ©r8   Úindexs     r.   r   ÚStrip.index_to_cell_position  s   € ô & d§n¡n°eÓ<Ð<r=   c                óh   • U R                   c  [        U R                  5      U l         U R                   $ )z7Get the number of cells required to render this object.)r`   r/   r_   rr   s    r.   rH   ÚStrip.cell_length  s-   € ð ×ÑÑ$Ü /°·±Ó ?ˆDÔØ× Ñ Ð r=   c                ó4  • U Vs/ s H  o"c  M  UR                   (       d  M  UPM     nnU VVs/ s H  o"R                    H  oDPM     M     nnnSn[        U Vs/ s H  o"R                  SL PM     sn5      (       a  SnO.[	        U Vs/ s H  o"R                  =(       d    SPM     sn5      nU " XV5      n[        S U 5       5      (       a0  SR                  U Vs/ s H  o"R                  PM     sn5      Ul        U$ s  snf s  snnf s  snf s  snf s  snf )zpJoin a number of strips into one.

Args:
    strips: An iterable of Strips.

Returns:
    A new combined strip.
Nr   c              3  ó<   #   • U  H  oR                   S Lv •  M     g 7fr4   )re   rI   s     r.   rK   ÚStrip.join.<locals>.<genexpr>0  s   é € ÐHºK°5×"Ñ"¨$Õ.ºKùs   ‚rv   )Ú
cell_countr_   Úanyr`   r(   Úallr{   re   )rˆ   r9   rC   Újoin_stripsry   r)   rH   Újoined_strips           r.   r{   Ú
Strip.join  sÿ   € ñ  &ó
Ú%�e‹E¸u×?OÕ?O�E™vð 	ð 
ñ *5ÔTª ÇOÅO¸’GÁO‘G©ˆÑTØ"&ˆÜ¹ÓDº¨u×"Ñ" dÓ*¹ÑD×EÑEØ‰KäÁKÓPÂK¸5×1Ñ1×6°QÒ6ÁKÑPÓQˆKÙ˜8Ó1ˆÜÑH¹KÓH×HÑHØ)+¯©Ù2=Ó>²+¨×$Ô$±+Ñ>ó*ˆLÔ&ð Ðùò
ùó UùâDùò Qùò ?s&   …D �D ¢D ¯DÁDÂ
DÃDc                ó.   • [         R                  X/5      $ r4   )r]   r{   )r8   Úothers     r.   Ú__add__ÚStrip.__add__6  s   € Ü�z‰z˜4˜-Ó(Ð(r=   c                ó"   • U R                   (       $ r4   )r_   rr   s    r.   Ú__bool__ÚStrip.__bool__9  s   € Ø—~‘~Ó%Ð%r=   c                ó,   • [        U R                  5      $ r4   )Úiterr_   rr   s    r.   Ú__iter__ÚStrip.__iter__<  s   € Ü�D—N‘NÓ#Ð#r=   c                ó,   • [        U R                  5      $ r4   )Úreversedr_   rr   s    r.   Ú__reversed__ÚStrip.__reversed__?  s   € Ü˜Ÿ™Ó'Ð'r=   c                ó,   • [        U R                  5      $ r4   )rŸ   r_   rr   s    r.   Ú__len__ÚStrip.__len__B  s   € Ü�4—>‘>Ó"Ð"r=   c                ób   • [        U[        5      =(       a    U R                  UR                  :H  $ r4   )r…   r]   r_   )r8   rC   s     r.   Ú__eq__ÚStrip.__eq__E  s!   € Ü˜%¤Ó'×O¨T¯^©^¸u¿¹Ñ-NÐOr=   c                óÎ   • [        U[        5      (       a  [        XS-   5      nU R                  UR                  UR
                  c  U R                  5      $ UR
                  5      $ )Né   )r…   r�   ÚsliceÚcropÚstartÚstoprµ   r­   s     r.   Ú__getitem__ÚStrip.__getitem__H  sU   € Ü�eœS×!Ñ!Ü˜%¨¡Ó+ˆEØ�y‰yØ�K‰K¨E¯J©JÑ,>˜Ÿ™ó
ð 	
ØDIÇJÁJó
ð 	
r=   c                óv   • U R                   c!  [        S U R                   5       5      U l         U R                   $ )zNumber of cells in the stripc              3  óL   #   • U  H  n[        UR                  5      v •  M     g 7fr4   )rŸ   r+   rx   s     r.   rK   Ú#Strip.cell_count.<locals>.<genexpr>S  s   é € Ð"SÂN¸¤3 w§|¡|×#4Ð#4ÂNùs   ‚"$)rj   r(   r_   rr   s    r.   rµ   ÚStrip.cell_countO  s3   € ð ×ÑÑ#Ü"Ñ"SÀDÇNÂNÓ"SÓSˆDÔØ×ÑÐr=   c                ó’   • U R                   U:  a6  XR                   -
  nU R                  [        SU-  U5      /-   n[        XA5      $ U $ )zÉExtend the cell length if it is less than the given value.

Args:
    cell_length: Required minimum cell length.
    style: Style for padding if the cell length is extended.

Returns:
    A new Strip.
r„   )rH   r_   r   r]   )r8   rH   r   Úmissing_spacer)   s        r.   Úextend_cell_lengthÚStrip.extend_cell_lengthV  sM   € ð ×Ñ˜kÓ)Ø'×*:Ñ*:Ñ:ˆMØ—~‘~¬°°}Ñ1DÀeÓ)LÐ(MÑMˆHÜ˜Ó/Ð/àˆKr=   c                óì  • U R                   U:X  a  U $ X4nU R                  R                  U5      nUb  U$ U R                  nU R                   n[        nXa:  a  UU" SX-
  -  U5      /-   n[        X�5      n	OoXa:”  ah  / nUR                  n
SnU HF  nUR                   nX½-   U:  a  U
" U5        X½-  nM%  Uu  pïn[        XáU-
  5      nU
" U" Xï5      5          O   [        X�5      n	OU n	X�R                  U'   U	$ )zÐAdjust the cell length, possibly truncating or extending.

Args:
    cell_length: New desired cell length.
    style: Style when extending, or `None`.

Returns:
    A new strip with the supplied cell length.
r„   r   )rH   rf   Úgetr_   r   r]   Úappendr
   )r8   rH   r   Ú	cache_keyÚcached_stripr?   Úcurrent_cell_lengthÚ_SegmentrB   rC   râ   Úline_lengthry   Úsegment_lengthr+   r‰   r,   s                    r.   Úadjust_cell_lengthÚStrip.adjust_cell_lengthg  s'  € ð ×Ñ˜{Ó*ØˆKà Ð(ˆ	Ø×.Ñ.×2Ñ2°9Ó=ˆØÑ#ØÐð �~‰~ˆØ"×.Ñ.ÐäˆàÓ,àÙ˜ Ñ AÑBÀEÓJðñ ˆHô ˜(Ó0‰Eà Ó.àˆHØ—_‘_ˆFØˆKÛ�Ø!(×!4Ñ!4�ØÑ/°+Ó=Ù˜7”OØÑ1’Kà-4Ñ*�D¨Ü(¨¸[Ñ/HÓI�DÙ™8 DÓ8Ô9Ùñ  ô ˜(Ó0‰Eð ˆEà-2×Ñ 	Ñ*Øˆr=   c                ón   • [        [        R                  " U R                  5      U R                  5      nU$ )zPSimplify the segments (join segments with same style).

Returns:
    New strip.
)r]   r   Úsimplifyr_   r`   )r8   r?   s     r.   rì   ÚStrip.simplifyž  s0   € ô Ü×Ò˜TŸ^™^Ó,Ø×Ñó
ˆð ˆr=   c                ó‚   • SS jn[        U R                   Vs/ s H
  o!" U5      PM     snU R                  5      $ s  snf )z8Remove all meta from segments.

Returns:
    New strip.
c                ó\   • U u  pnUc  U $ UR                  5       nSUl        [        XU5      $ )z]Build a Segment with no meta.

Args:
    segment: Segment.

Returns:
    Segment, sans meta.
N)ÚcopyÚ_metar   )ry   r+   r   r-   s       r.   Úremove_meta_from_segmentÚ4Strip.discard_meta.<locals>.remove_meta_from_segment±  s7   € ð $+Ñ ˆD˜Ø‰}Ø�Ø—J‘J“LˆEØˆEŒKÜ˜4¨Ó0Ð0r=   )ry   r   rS   r   )r]   r_   r`   )r8   rò   ry   s      r.   Údiscard_metaÚStrip.discard_metaª  s>   € ô	1ô  Ø>B¿nºnÓMºn°7Ð% gÖ.¹nÑMØ×Ñó
ð 	
ùÚMs   ™<c                óÂ   • U R                   R                  X45      nUc?  [        UR                  U R                  U5      U R
                  5      nX0R                   X4'   U$ )zqApply a filter to all segments in the strip.

Args:
    filter: A line filter object.

Returns:
    A new Strip.
)rd   rá   r]   Úapplyr_   r`   )r8   ÚfilterÚ
backgroundrä   s       r.   Úapply_filterÚStrip.apply_filterÆ  sa   € ð ×)Ñ)×-Ñ-¨vÐ.BÓCˆØÑÜ Ø—‘˜TŸ^™^¨ZÓ8¸$×:KÑ:KóˆLð 8D×Ñ Ð3Ñ4ØÐr=   c           
     ó   • [         nXR                  ;  a  U $ U R                   VVVs/ s HA  u  pEnU" UU(       a*  UR                  (       d  UR                  U:X  a	  Ub  XR-   OSOUU5      PMC     nnnn[        XpR                  5      $ s  snnnf )z¨Apply a style to Segments with the given link_id.

Args:
    link_id: A link id.
    link_style: Style to apply.

Returns:
    New strip (or same Strip if no changes).
N)r   r€   r_   Ú_nullr~   r]   r`   )r8   Úlink_idÚ
link_styleræ   r+   r   r-   r)   s           r.   Ústyle_linksÚStrip.style_links×  s’   € ô ˆØŸ-™-Ó'ØˆKð )-¯ªõ
ò )7Ñ$�˜Wñ Øö  e§k§k°e·n±nÈÓ6Oð ,1Ñ+<�UÒ'Á$ààöñ )7ð 	ò 
ô �X×0Ñ0Ó1Ð1ùô
s   ¨AB	c                óª   • XU4nU R                   R                  U5      nUb  U$ U R                  X#5      R                  X5      nX`R                   U'   U$ )zÉCrop between two points, extending the length if required.

Args:
    start: Start offset of crop.
    end: End offset of crop.
    style: Style of additional padding.

Returns:
    New cropped Strip.
)rg   rá   rÞ   rÓ   )r8   rÔ   Úendr   rã   Úcached_resultrC   s          r.   Úcrop_extendÚStrip.crop_extendó  s^   € ð  Ð'ˆ	Ø×/Ñ/×3Ñ3°IÓ>ˆØÑ$Ø Ð Ø×'Ñ'¨Ó3×8Ñ8¸ÓDˆØ-2×Ñ 	Ñ*Øˆr=   c                ó~  • [        SU5      nUc  U R                  O[        U R                  U5      nUS:X  a  X R                  :X  a  U $ X!::  a  [        / S5      $ X4nU R                  R                  U5      nUb  U$ [        nSn/ nUR                  n[        U R                  5      n	Sn
XR                  :¼  a  [        / S5      nOéU	 H6  n
Xe" U
R                  5      -   nXÁ:”  a  U
R                  X-
  5      S   n
  OUnM8     X R                  :¼  a9  U
(       a  U" U
5        UR                  U	5        [        XpR                  U-
  5      nOeUnU
bR  Xe" U
R                  5      -   nXÂ:  a	  U" U
5        OU" U
R                  X&-
  5      S   5        OUn[        U	S5      n
U
b  MR  [        XrU-
  5      nX°R                  U'   U$ )z§Crop a strip between two cell positions.

Args:
    start: The start cell position (inclusive).
    end: The end cell position (exclusive).

Returns:
    A new Strip.
r   NrÑ   )rN   rH   Úminr]   rb   rá   r	   râ   rÃ   r_   r+   Úsplit_cellsÚextendÚnext)r8   rÔ   r  rã   Úcachedr*   ÚposÚoutput_segmentsÚadd_segmentÚiter_segmentsry   rC   Úend_poss                r.   rÓ   Ú
Strip.crop  sÂ  € ô �A�u“ˆØ"%¡+ˆd×Ò´3°t×7GÑ7GÈÓ3MˆØ�A‹:˜#×!1Ñ!1Ó1ØˆKØ‹<Ü˜˜Q“<ÐØ�Lˆ	Ø×!Ñ!×%Ñ% iÓ0ˆØÑØˆMÜˆ	ØˆØ)+ˆØ%×,Ñ,ˆÜ˜TŸ^™^Ó,ˆØ"&ˆØ×$Ñ$Ó$Ü˜"˜a“L‰Eã(�Ø 	¨'¯,©,Ó 7Ñ7�Ø“?Ø%×1Ñ1°%±+Ó>¸qÑA�GÙØ’ñ )ð ×&Ñ&Ó&æÙ Ô(Ø×&Ñ& }Ô5Ü˜o×/?Ñ/?À%Ñ/GÓH‘à�ØÑ)Ø! I¨g¯l©lÓ$;Ñ;�GØ“}Ù# GÕ,á# G×$7Ñ$7¸¹	Ó$BÀ1Ñ$EÔFØØ!�CÜ" =°$Ó7�Gð Ó)ô ˜o°U©{Ó;�Ø&+×Ñ˜Ñ#Øˆr=   c                ó”  • SnU R                   nU Vs/ s H  oDU::  d  M
  UPM     nn[        U5      nU R                  R                  U5      =nb  U$ X/:X  a  U /nOX/ nUR                  n[        [        R                  " U R                  U5      U5       H  u  p”U" [        X”U-
  5      5        UnM     XpR                  U'   U$ s  snf )z®Divide the strip into multiple smaller strips by cutting at given (cell) indices.

Args:
    cuts: An iterable of cell positions as ints.

Returns:
    A new list of strips.
r   )
rH   Útuplera   rá   râ   Úzipr   Údivider_   r]   )
r8   Úcutsr  rH   Úcutrã   r  r9   Ú	add_stripr)   s
             r.   r  ÚStrip.divide@  sÉ   € ð ˆØ×&Ñ&ˆÙ#Ó:št˜¨kÑ'9—™tˆÐ:Ü˜$“Kˆ	Ø×(Ñ(×,Ñ,¨YÓ7Ð7ˆFÑDØˆMð �=Ó Ø�V‰FàˆFØŸ™ˆIÜ!$¤W§^¢^°D·N±NÀDÓ%IÈ4Ö!P‘�Ùœ% °©)Ó4Ô5Ø’ñ "Qð )/×Ñ˜9Ñ%Øˆùò! ;s
   “	C Cc                óÌ   • U R                   R                  U5      nUb  U$ [        [        R                  " U R
                  U5      U R                  5      nX0R                   U'   U$ )zWApply a style to the Strip.

Args:
    style: A Rich style.

Returns:
    A new strip.
)rc   rá   r]   r   Úapply_styler_   rH   )r8   r   r  Ústyled_strips       r.   r  ÚStrip.apply_style^  sa   € ð ×"Ñ"×&Ñ& uÓ-ˆØÑØˆMÜÜ×Ò §¡°Ó6¸×8HÑ8Hó
ˆð $0×Ñ˜%Ñ ØÐr=   c                óP   • [         R                  " U5      nU R                  U5      $ )zeApply meta to all segments.

Args:
    meta: A dict of meta information.

Returns:
    A new strip.

)r   Ú	from_metar  )r8   ÚmetaÚ
meta_styles      r.   Ú
apply_metaÚStrip.apply_metap  s#   € ô —_’_ TÓ*ˆ
Ø×Ñ 
Ó+Ð+r=   c           
     ó  • U R                   n[        nU VVVs/ s HB  u  pEnU(       a-  U" UUR                  c  UOSUR                  ;   a  XQ-   OUU5      OU" U5      PMD     nnnn[	        X R
                  5      $ s  snnnf )Nz@click)r_   r   rñ   r!  r]   r`   )r8   rÿ   r)   ræ   r+   r   r-   s          r.   Ú_apply_link_styleÚStrip._apply_link_style}  s–   € Ø—>‘>ˆÜˆñ )1õ
ò )1Ñ$�˜Wö ñ Øð !Ÿ;™;Ñ.ñ à4<ÀÇ
Á
Ó4J˜eÒ0ÐPUàôñ ˜d“^ò
$ñ )1ð 	ò 
ô  �X×0Ñ0Ó1Ð1ùô!
s   ™A	A;i @  c                óú  • UR                   UR                  -  =n(       aA  [        n[        UR	                  5       5       Vs/ s H  nUSU-  -  (       d  M  XE   PM     nnO/ nUR
                  =nb.  UR                  UR                  U5      R                  5       5        UR                  =nb/  UR                  UR                  U5      R                  S5      5        SR                  U5      =o‘l        U	$ s  snf )zµRender ANSI codes for a give style.

Args:
    style: A Rich style.
    color_system: Color system enumeration.

Returns:
    A string of ANSI escape sequences to render the style.
rÑ   FÚ;)Ú_attributesÚ_set_attributesÚ
SGR_STYLESr’   Ú
bit_lengthÚ_colorr
  Ú	downgradeÚget_ansi_codesÚ_bgcolorr{   Ú_ansi)
rˆ   r   Úcolor_systemÚ
attributesÚ
_style_mapÚ
bit_offsetÚsgrÚcolorÚbgcolorÚansis
             r.   Úrender_ansiÚStrip.render_ansi’  sé   € ð ×*Ñ*¨U×-BÑ-BÑBÐBˆ:ÕBÜ#ˆJô #(¨
×(=Ñ(=Ó(?Ô"@óâ"@�JØ  j¡Õ1ó '�
Ô&Ù"@ð ð ˆCð ˆCØ—\‘\Ð!ˆEÑ.Ø�J‰J�u—‘ |Ó4×CÑCÓEÔFØ—~‘~Ð%ˆGÑ2Ø�J‰J�w×(Ñ(¨Ó6×EÑEÀeÓLÔMØ ŸX™X c›]Ð*ˆŒ{Øˆùòs   ÁC8ÁC8c                óÌ   • UR                   =nc  U R                  X5      nU(       a	  SU SU S3OUnUR                  (       a   SUR                   SUR                   SU S3nU$ )z¶Render a Rich style and text.

Args:
    style: Style to render.
    text: Content string.
    color_system: Color system enumeration.

Returns:
    Text with ANSI escape sequences.
z[Úmz[0mz]8;id=r)  z\z]8;;\)r2  r;  Ú_linkr~   )rˆ   r   r+   r3  r:  Úoutputs         r.   Úrender_styleÚStrip.render_style¯  sm   € ð —K‘KÐˆDÑ(Ø—?‘? 5Ó7ˆDÞ15�5˜˜˜a ˜v WÑ-¸4ˆØ�;�;à˜UŸ^™^Ð,¨A¨e¯k©k¨]¸&ÀÀÈÐWð ð ˆr=   c                ó$  • U R                   cq  UR                  =(       d    [        R                  nU R                  nSR                  U R                   VVVs/ s H  u  pEnUc  UOU" XTUS9PM     snnn5      U l         U R                   $ s  snnnf )zrRender the strip into terminal sequences.

Args:
    console: Console instance.

Returns:
    Rendered sequences.
rv   )r3  )re   Ú_color_systemr   Ú	TRUECOLORrA  r{   r_   )r8   r@   r3  Úrenderr+   r   r,   s          r.   rF  ÚStrip.renderÄ  s•   € ð ×ÑÑ%Ø"×0Ñ0×I´K×4IÑ4IˆLØ×&Ñ&ˆFØ!#§¡ð +/¯.ª.õò +9™˜ Qð !™=ñ á# E¸lÑKòLñ +9óó	"ˆDÔð ×!Ñ!Ð!ùôs   ÁBc                óT  • XR                   :w  a  U R                  X5      nOU nU(       d	  U(       d  U$ UR                  R                  5       nU(       a  UR	                  S[        SU-  U5      5        U(       a  UR                  [        SU-  U5      5        [        XaU-   U-   5      $ )a  Crop the strip to `cell_length`, and add optional padding.

Args:
    cell_length: Cell length of strip prior to padding.
    left: Additional padding on the left.
    right: Additional padding on the right.
    style: Style of any padding.

Returns:
    Cropped and padded strip.
r   r„   )rH   ré   r_   rð   Úinsertr   râ   r]   )r8   rH   rš   rœ   r   rC   r)   s          r.   Úcrop_padÚStrip.crop_padÝ  sŒ   € ð ×*Ñ*Ó*Ø×+Ñ+¨KÓ?‰EàˆEÞžØˆLØ—?‘?×'Ñ'Ó)ˆÞØ�O‰O˜Aœw s¨T¡z°5Ó9Ô:ÞØ�O‰OœG C¨%¡K°Ó7Ô8Ü�X¨TÑ1°EÑ9Ó:Ð:r=   c           	     óV  • US:X  aS  U R                   U:X  a  U $ [        [        U R                  SXR                   -
  [        R
                  " 5       5      U5      $ US:X  aq  [        SXR                   -
  5      S-  nU R                   U:X  a  U $ [        [        U R                  UXR                   -
  U-
  [        R
                  " 5       5      U5      $ US:X  aS  U R                   U:X  a  U $ [        [        U R                  XR                   -
  S[        R
                  " 5       5      U5      $ g )Nrš   r   r›   r˜   rœ   )rH   r]   r   r_   r   ÚnullrN   )r8   r:   rª   r©   s       r.   Ú
text_alignÚStrip.text_alignö  s  € Ø�F‹?Ø×Ñ 5Ó(Ø�äÜ˜TŸ^™^¨Q°×8HÑ8HÑ0HÌ%Ï*Ê*Ë,ÓWØóð ð �hÓÜ˜Q ×(8Ñ(8Ñ 8Ó9¸QÑ>ˆJà×Ñ 5Ó(Ø�äÜØŸ™Ø"Ø× 0Ñ 0Ñ0°:Ñ=ÜŸ
š
›ó	ð óð ð �gÓØ×Ñ 5Ó(Ø�äÜ˜TŸ^™^¨U×5EÑ5EÑ-EÀqÌ%Ï*Ê*Ë,ÓWØóð ð	 r=   c                ó˜  • X4nU R                   R                  U5      =nb  U$ U R                  n/ nU H^  nUu  p‰n
[        R                  " SX405      nUR                  [        X‰(       a  X›-   OU5      5        U[        UR                  5      -  nM`     [        X`R                  5      nU R                  Ul        XÀR                   U'   U$ )z‡Apply offsets used in text selection.

Args:
    x: Offset on X axis (column).
    y: Offset on Y axis (row).

Returns:
    New strip.
Úoffset)rh   rá   r_   r   r   râ   r   rŸ   r+   r]   r`   re   )r8   ÚxÚyrã   rä   r)   Ústrip_segmentsry   r+   r   r,   Úoffset_stylerC   s                r.   Úapply_offsetsÚStrip.apply_offsets  sÊ   € ð �Fˆ	Ø ×/Ñ/×3Ñ3°IÓ>Ð>ˆLÑKØÐØ—>‘>ˆØ(*ˆÛˆGØ$‰NˆD˜Ü Ÿ?š?¨H°q°fÐ+=Ó>ˆLØ×!Ñ!Ü˜µe˜eÒ2ÀÓNôð ”�W—\‘\Ó"Ñ"ŠAñ  ô �n×&7Ñ&7Ó8ˆØ"×0Ñ0ˆÔØ).×Ñ˜IÑ&Øˆr=   )rj   r`   rb   rg   ra   rd   rf   ri   rh   re   r_   rc   r4   )r)   úIterable[Segment]rH   rR   rS   rT   )rS   zrich.repr.Result)rS   r†   )rS   zset[str])rH   r�   r   zStyleType | NonerS   r]   )r�   zlist[list[Segment]]rH   rR   rS   rQ   )r9   rQ   r   r   r:   r�   r    rR   r¡   r   r¢   r   rS   rž   )r®   r�   rS   r�   )rS   r�   )r9   zIterable[Strip | None]rS   r]   )r¼   r]   rS   r]   )rS   Úbool)rS   zIterator[Segment])rC   ÚobjectrS   rY  )r®   zint | slicerS   r]   )rH   r�   r   úStyle | NonerS   r]   )rS   r]   )rø   r   rù   r   rS   r]   )rþ   r†   rÿ   r   rS   r]   )rÔ   r�   r  r�   r   r[  rS   r]   )rÔ   r�   r  rR   rS   r]   )r  zIterable[int]rS   zSequence[Strip])r   r   rS   r]   )r!  zdict[str, Any]rS   r]   )rÿ   r   rS   r]   )r   r   r3  r   rS   r†   )r   r   r+   r†   r3  r   rS   r†   )r@   r   rS   r†   )
rH   r�   rš   r�   rœ   r�   r   r   rS   r]   )r:   r�   rª   r   rS   r]   )rR  r�   rS  r�   rS   r]   ).rU   rV   rW   rX   rY   Ú	__slots__r;   rs   Úpropertyr+   r€   Úclassmethodr   rŠ   rŽ   rª   r   rH   r{   r½   rÀ   rÄ   rÈ   rË   rÎ   rÖ   rµ   rÞ   ré   rì   rô   rú   r   r  rÓ   r  r  r#  r&  r;  rA  rF  rJ  rN  rV  rZ   r[   r=   r.   r]   r]   D   s  † ñò€Ið  FJð,Ø)ð,Ø8Bð,à	õ,ô,ð óCó ðCð óó ðð Ù�tÑõMó ó ðMð àCGðBØ'ðBØ6@ðBà	ôBó ðBð ð]7àð]7ð ð]7ð ð	]7ð
 ð]7ð $ð]7ð  ð]7ð 
ó]7ó ð]7ô~=ð ó!ó ð!ð óó ðô2)ô&ô$ô(ô#ôPô
ð ó ó ð öö"5ôn
ô
ô8ô"2ô8ö&8ôtô<ô$,ô2ð* Ù�uÑóó ó ðð6 óó ðô("ô2;ô2 ÷Dr=   r]   )r)   rX  rS   r�   ).rY   Ú
__future__r   Ú	functoolsr   Útypingr   r   r   r   Ú	rich.reprÚrichÚ
rich.cellsr	   r
   Ú
rich.colorr   Úrich.consoler   r   r   Úrich.measurer   Úrich.segmentr   Ú
rich.styler   r   Útextual._segment_toolsr   r   Útextual.cacher   Útextual.colorr   Útextual.css.typesr   r   Útextual.filterr   r,  r/   r1   ÚreprÚautor]   r[   r=   r.   Ú<module>rq     sx   ðñõ #å ß 4Ó 4ã ß .Ý "ß >Ñ >Ý $Ý  ß 'ç CÝ #Ý ß <Ý %âR€
ô
R÷)ñ )ð2 ‡�‡�÷lð ló ñlr=   