ó
    Ãu„jÛ¬  ã                  ó’  • % S r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJr  SSKrSSKJrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#J$r$J%r%J&r&J'r'  SSK(J)r)  SSK*J+r+J,r,  SSK-J.r.  \(       a  SSK/J0r0  SSK1J2r2   " S S\
5      r3Sr4S\5S'    " S S5      r6\Rn                  Rq                  SS9 " S S\65      5       r9\Rn                  Rq                  SS9 " S S \65      5       r:\Rn                  Rq                  SS9 " S! S"\65      5       r;\Rn                  Rq                  SS9 " S# S$5      5       r<g)%aÅ  

The compositor handles combining widgets into a single screen (i.e. compositing).

It also stores the results of that process, so that Textual knows the widgets on
the screen and their locations. The compositor uses this information to answer
queries regarding the widget under an offset, or the style under an offset.

Additionally, the compositor can render portions of the screen which may have updated,
without having to render the entire screen.
é    )Úannotations)Ú
itemgetter)ÚTYPE_CHECKINGÚCallableÚIterableÚMappingÚ
NamedTupleÚSequenceÚcastN)ÚConsoleÚConsoleOptionsÚRenderableTypeÚRenderResult)ÚControl)ÚSegment)ÚStyle)Úerrors)Úcell_len)Úvisible_screen_stack)Ú	loop_last)ÚNULL_SPACINGÚOffsetÚRegionÚSizeÚSpacing)ÚMapGeometry)ÚStripÚStripRenderable)ÚWidget)Ú	TypeAlias)ÚScreenc                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   Srg)	ÚReflowResulté/   zCThe result of a reflow operation. Describes the chances to widgets.úset[Widget]ÚhiddenÚshownÚresized© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r)   ó    Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\textual/_compositor.pyr#   r#   /   s   ‡ ÙMàÓØÓØÖr1   r#   zdict[Widget, MapGeometry]r    ÚCompositorMapc                  ó"   • \ rS rSrSrSS jrSrg)ÚCompositorUpdateé;   zQAn update generated by the compositor, which also doubles as console renderables.c                ó   • g)ú•Render the update to raw data, suitable for writing to terminal.

Args:
    console: Console instance.

Returns:
    Raw data with escape sequences.
Ú r)   )ÚselfÚconsoles     r2   Úrender_segmentsÚ CompositorUpdate.render_segments>   s   € ð r1   r)   N©r;   r   ÚreturnÚstr)r*   r+   r,   r-   r.   r<   r0   r)   r1   r2   r5   r5   ;   s
   † Ù[÷	r1   r5   T)Úangularc                  óL   • \ rS rSrSrS	S jr      S
S jrSS jrSS jrSr	g)ÚLayoutUpdateéJ   zBA renderable containing the result of a render for a given region.c                ó   • Xl         X l        g ©N)ÚstripsÚregion)r:   rG   rH   s      r2   Ú__init__ÚLayoutUpdate.__init__N   s   € ØŒØ�r1   c              #  ól  #   • U R                   R                  n[        R                  " 5       n[        R
                  n[        [        U R                  U R                   R                  5      5       H<  u  nu  pxU" X75      R                  v •  U H  n	U	 S h  v•N   M     U(       a  M8  Uv •  M>     g  N7frF   )rH   Úxr   Úliner   Úmove_tor   Ú	enumeraterG   ÚyÚsegment)
r:   r;   ÚoptionsrL   Únew_linerN   ÚlastrP   rM   Ústrips
             r2   Ú__rich_console__ÚLayoutUpdate.__rich_console__R   sƒ   é € ð �K‰K�M‰MˆÜ—<’<“>ˆÜ—/‘/ˆÜ(¬°4·;±;ÀÇÁÇÁÓ)NÖO‰OˆD‘)�1Ù˜!“-×'Ñ'Ò'Û�Ø × Ò ñ ç�4Ø”ò  Pñ !ùs   ‚BB4ÂB2ÂB4Â)
B4c           	     óà  • / nUR                   nUR                  nU R                  R                  n[        R
                  n[        [        U R                  U R                  R                  5      5       Hb  u  nu  p‰U" U" XX5      R                  R                  5        U" U	 V
s/ s H  oªR                  U5      PM     sn
5        U(       a  MZ  U" S5        Md     SR                  U5      $ s  sn
f )r8   Ú
r9   )ÚappendÚextendrH   rL   r   rN   r   rO   rG   rP   rQ   ÚtextÚrenderÚjoin)r:   r;   Ú	sequencesrZ   r[   rL   rN   rT   rP   rM   rU   s              r2   r<   ÚLayoutUpdate.render_segments_   s¶   € ð  "ˆ	Ø×!Ñ!ˆØ×!Ñ!ˆØ�K‰K�M‰MˆÜ—/‘/ˆÜ(¬°4·;±;ÀÇÁÇÁÓ)NÖO‰OˆD‘)�1Ù‘7˜1“=×(Ñ(×-Ñ-Ô.Ù±tÓ<²t¨e—L‘L Ö)±tÑ<Ô=ß�4Ù�t–ñ	  Pð
 �w‰w�yÓ!Ð!ùò =s   Â$C+
c              #  ó(   #   • U R                   v •  g 7frF   )rH   ©r:   s    r2   Ú__rich_repr__ÚLayoutUpdate.__rich_repr__t   s   é € Ø�k‰kÓùs   ‚)rH   rG   N)rG   zlist[Iterable[Strip]]rH   r   r?   ÚNone©r;   r   rR   r   r?   r   r>   ©r?   zrich.repr.Result©
r*   r+   r,   r-   r.   rI   rV   r<   rc   r0   r)   r1   r2   rC   rC   J   s1   † áLôðØðØ)7ðà	ôô"÷*r1   rC   c                  óF   • \ rS rSrSrSS	S jjr      S
S jrSS jrSrg)ÚInlineUpdateéx   z'A renderable to write an inline update.c                ó   • Xl         X l        g rF   )rG   Úclear)r:   rG   rm   s      r2   rI   ÚInlineUpdate.__init__|   s   € ØŒØ�
r1   c              #  ó¤   #   • [         R                  " 5       n[        U R                  5       H  u  pEU S h  v•N   U(       a  M  Uv •  M     g  N7frF   )r   rM   r   rG   )r:   r;   rR   rS   rT   rM   s         r2   rV   ÚInlineUpdate.__rich_console__€   s;   é € ô —<’<“>ˆÜ# D§K¡KÖ0‰JˆDØ�OˆOß�4Ø”ò 1Ùùs   ‚5A·A¸	AÁ
Ac                ó(  • / nUR                   n[        U R                  5       H-  u  pEU" UR                  U5      5        U(       a  M%  U" S5        M/     U R                  (       a)  [        U R                  5      S:”  a  U" S5        U" S5        [        U R                  5      S:”  aK  U R                  (       a  [        U R                  5      O[        U R                  5      S-
  nU" SU S35        OU" S5        U" S5        SR                  U5      $ )	r8   rY   é   z[Jz[zAÚz[6nr9   )rZ   r   rG   r]   rm   Úlenr^   )r:   r;   r_   rZ   rT   rU   Ú
back_liness          r2   r<   ÚInlineUpdate.render_segments‰   sÔ   € ð  "ˆ	Ø×!Ñ!ˆÜ$ T§[¡[Ö1‰KˆDÙ�5—<‘< Ó(Ô)ß�4Ù�t–ñ 2ð �:�:Ü�4—;‘;Ó !Ó#Ù�t”Ù�8ÔÜˆt�{‰{Ó˜aÓØ-1¯Z¯Zœ˜TŸ[™[Ô)¼SÀÇÁÓ=MÐPQÑ=QˆJÙ�U˜:˜, cÐ*Õ+á�4ŒLÙˆyÔØ�w‰w�yÓ!Ð!r1   )rm   rG   N©F)rG   úlist[Strip]rm   Úboolr?   re   rf   r>   )	r*   r+   r,   r-   r.   rI   rV   r<   r0   r)   r1   r2   rj   rj   x   s,   † á1öðØðØ)7ðà	ô÷"r1   rj   c                  ó\   • \ rS rSrSr        S	S jr      S
S jrSS jrSS jrSr	g)ÚChopsUpdateé¥   z6A renderable that applies updated spans to the screen.c                ó(   • Xl         X l        X0l        g)zÜA renderable which updates chops (fragments of lines).

Args:
    chops: A mapping of offsets to list of segments, per line.
    crop: Region to restrict update to.
    chop_ends: A list of the end offsets for each line
N)ÚchopsÚspansÚ	chop_ends)r:   r~   r   r€   s       r2   rI   ÚChopsUpdate.__init__©   s   € ð Œ
ØŒ
Ø"�r1   c              #  ó(  #   • [         R                  n[        R                  " 5       nU R                  nU R
                  nU R                  S   S   n[        nU R                   GH$  u  pšnXY   nXi   n[        XÜR                  5       5       Hì  u  nu  nnUc  M  Xû:”  d  Xê::  a  M  X¿s=:”  a  U
:¼  a(  O  O%Xë::  a   U" Xù5      R                  v •  U S h  v•N   MN  [        U5      nXú:  a@  U H9  nXø" UR                  5      -   nUU
:”  a  U" Xù5      R                  v •  Uv •    OUnM;     OU" Xù5      R                  v •  Xë::  a  U S h  v•N   MÃ  U H#  nXû:¼  a    MÐ  Uv •  Xø" UR                  5      -  nM%     Mî     X—:w  d  GM   Uv •  GM'     g  Nº NG7f)Néÿÿÿÿr   )r   rN   r   rM   r~   r€   r   r   ÚzipÚitemsrQ   Úiterr\   )r:   r;   rR   rN   rS   r~   r€   Úlast_yÚ	_cell_lenrP   Úx1Úx2rM   ÚendsÚendrL   rU   Úiter_segmentsrQ   Únext_xs                       r2   rV   ÚChopsUpdate.__rich_console__º   so  é € ô —/‘/ˆÜ—<’<“>ˆØ—
‘
ˆØ—N‘Nˆ	Ø—‘˜B‘ Ñ"ˆäˆ	ØŸ�‰IˆA�2Ø‘8ˆDØ‘<ˆDÜ#& t¯Z©Z«\Ö#:‘�‘Z�a˜à‘=Ùà“6˜S›YÙà•<˜R–< C£IÙ! !›-×/Ñ/Ò/Ø$×$Ð$Ùä $ U£�Ø“6Û#0˜Ø!" Y¨w¯|©|Ó%<Ñ!<˜Ø! B›;Ù")¨!£-×"7Ñ"7Ò7Ø")šMÙ!Ø"šò $1ñ " !›-×/Ñ/Ò/Ø“9Ø,×,Ò,ã#0˜Ø›7Ú!Ø%šØ˜Y w§|¡|Ó4Ñ4šó	 $1ñ7 $;ðB Ž{Ø•òK $ñ %ñ -ùs+   ‚CFÃFÃA4FÅFÅ	6FÆFÆFc           	     óÊ  • / nUR                   n[        R                  nU R                  nU R                  nU R
                  S   S   nU R
                   Hù  u  p‰n
XX   nXh   n[        XËR                  5       5       H¿  u  nu  pïUc  M  Xê:”  d  XÙ::  a  M  X®s=:”  a  U	:¼  aC  O  O@XÚ::  a;  U" U" Xè5      R                  R                  5        U" UR                  U5      5        Mh  UR                  S[        XÚ5      U-
  5      nU" U" Xè5      R                  R                  5        U" UR                  U5      5        MÁ     X‡:w  d  Mñ  U" S5        Mû     SR                  U5      nU$ )r8   rƒ   r   rY   r9   )rZ   r   rN   r~   r€   r   r„   r…   rQ   r\   r]   ÚcropÚminr^   )r:   r;   r_   rZ   rN   r~   r€   r‡   rP   r‰   rŠ   rM   r‹   rŒ   rL   rU   Úterminal_sequencess                    r2   r<   ÚChopsUpdate.render_segmentsë   s0  € ð  "ˆ	Ø×!Ñ!ˆä—/‘/ˆØ—
‘
ˆØ—N‘Nˆ	Ø—‘˜B‘ Ñ"ˆàŸœ‰IˆA�2Ø‘8ˆDØ‘<ˆDÜ#& t¯Z©Z«\Ö#:‘�‘Z�aØ‘=Ùà“6˜S›YÙà•<˜R–< C£IÙ™7 1›=×0Ñ0×5Ñ5Ô6Ù˜5Ÿ<™<¨Ó0Ô1ÙàŸ
™
 1¤c¨#£l°QÑ&6Ó7�Ù‘w˜q“}×,Ñ,×1Ñ1Ô2Ù�u—|‘| GÓ,Ö-ñ $;ð  �{Ù�t–ñ) $ð,  ŸW™W YÓ/ÐØ!Ð!r1   c              #  ó$   #   • S S h  v•N   g  N7f)Nr)   r)   rb   s    r2   rc   ÚChopsUpdate.__rich_repr__  s   é € Ø�‹ùs   ‚ˆ‰)r€   r~   r   N)r~   z$Sequence[Mapping[int, Strip | None]]r   zlist[tuple[int, int, int]]r€   úlist[list[int]]r?   re   rf   r>   rg   rh   r)   r1   r2   r{   r{   ¥   sY   † á@ð#à3ð#ð *ð#ð #ð	#ð
 
ô#ð"/Øð/Ø)7ð/à	ô/ôb("÷Tr1   r{   c                  óâ  • \ rS rSrSrS!S jrS!S jr\    S"S j5       rS#S jr	S$S jr
S%S jr\S&S	 j5       r\S'S
 j5       r S(       S)S jjr\S*S j5       r\S+S j5       rS,S jrS-S jrS.S jrS/S jrS0S jr      S1S jrS2S jr\S3S j5       r S4   S5S jjr   S6       S7S jjr  S8       S9S jjrS:S;S jjrS<S jrS4S=S jjr      S>S jr S?S jr!S@S jr"S r#g)AÚ
Compositori  zcResponsible for storing information regarding the relative positions of Widgets and rendering them.c                óÒ   • 0 U l         SU l        S U l        S U l        [	        5       U l        S U l        S U l        [        SS5      U l	        S U l
        [	        5       U l        S U l        g )NTr   )Ú	_full_mapÚ_full_map_invalidatedÚ_visible_mapÚ_layersÚsetÚwidgetsÚ_visible_widgetsÚrootr   ÚsizeÚ_cutsÚ_dirty_regionsÚ_layers_visiblerb   s    r2   rI   ÚCompositor.__init__  sp   € à(*ˆŒØ%)ˆÔ"Ø26ˆÔØ@DˆŒô %(£EˆŒð MQˆÔð $(ˆŒ	ô ˜˜A“JˆŒ	ð .2ˆŒ
ô ,/«5ˆÔð RVˆÕr1   c                ó¤   • U R                   R                  5         SU l        SU l        U R                  R                  5         SU l        SU l        g)z?Remove all references to widgets (used when the screen closes).N)r›   rm   r�   rž   r    r¡   r¦   rb   s    r2   rm   ÚCompositor.clear:  sA   € à�‰×ÑÔØ ˆÔØˆŒØ�‰×ÑÔØ $ˆÔØ#ˆÕr1   c              #  óÂ  #   • 0 nUR                   nU H9  u  pEpgXDU-   4n[        XUU-   5       H  n	U" U	/ 5      R                  U5        M     M;     [        SS5      n
[	        UR                  5       5       He  u  p›[        U5      S:X  a  U	/US   Q7v •  M!  UR                  5         US   u  pÍXº    H  u  pïXí::  a  Xý:”  a  UnM  M  XœU4v •  UnUnM!     XœU4v •  Mg     g7f)zåConverts the regions to horizontal spans. Spans will be combined if they overlap
or are contiguous to produce optimal non-overlapping spans.

Args:
    regions: An iterable of Regions.

Returns:
    Yields tuples of (Y, X1, X2).
rr   Nr   )Ú
setdefaultÚrangerZ   ÚsliceÚsortedr…   rt   Úsort)ÚclsÚregionsÚinline_rangesr«   Úregion_xÚregion_yÚwidthÚheightÚspanrP   Úslice_remainingÚrangesr‰   rŠ   Únext_x1Únext_x2s                   r2   Ú_regions_to_spansÚCompositor._regions_to_spansC  sú   é € ð ;=ˆØ"×-Ñ-ˆ
Û18Ñ-ˆH Ø¨Ñ.Ð/ˆDÜ˜8°Ñ%6Ö7�Ù˜1˜bÓ!×(Ñ(¨Ö.ó 8ñ 29ô
    4›.ˆÜ × 3Ñ 3Ó 5Ö6‰IˆAÜ�6‹{˜aÓà�o˜6 !™9‘oÔ%à—‘”Ø ™‘�Ø(.Ô(?Ñ$�GØ“}Ø"›<Ø!(šBñ (ð  ! b˜kÒ)Ø$˜Ø$šñ )@ð ˜b�kÔ!ò 7ùs   ‚CCc              #  óL   #   • SU R                   4v •  SU R                  4v •  g 7f)Nr£   r    )r£   r    rb   s    r2   rc   ÚCompositor.__rich_repr__i  s#   é € Ø�d—i‘iÐÒØ˜Ÿ™Ð%Ó%ùs   ‚"$c                óÖ  • SU l         SU l        SU l        SU l        SU l        Xl        X l        U R                  nUR                  5       nU R                  XSS9u  pVUR                  5       nXt-
  nU R                  U-
  n	XPl        X`l
        UR                  5       UR                  5       -  n
XG-  nUR                  nXÀR                  ;  a=  S U
 5        Vs1 s H  nU(       d  M  UiM     nnU R                  R                  U5        U
 VVVs1 s H9  u  ntnnXû;   d  M  X?   R                  R                  UR                  :w  d  M7  UiM;     nnnn[        U	UUS9$ s  snf s  snnnf )z¨Reflow (layout) widget and its children.

Args:
    parent: The root widget.
    size: Size of the area to be filled.

Returns:
    Hidden, shown, and resized widgets.
NF©Úvisible_onlyc              3  óp   #   • U  H,  u  pUR                   R                  UR                  5      v •  M.     g 7frF   ©ÚclipÚintersectionrH   ©Ú.0Ú_Úmap_geometrys      r2   Ú	<genexpr>Ú$Compositor.reflow.<locals>.<genexpr>œ  ó3   é € ð â+2™˜ð !×%Ñ%×2Ñ2°<×3FÑ3F×GÐGÚ+2ùó   ‚46)r&   r'   r(   )r¤   rž   r¦   r¡   r�   r¢   r£   r›   ÚkeysÚ_arrange_rootr    r…   rH   r¥   Úupdater#   )r:   Úparentr£   Úold_mapÚold_widgetsÚmapr    Únew_widgetsÚshown_widgetsÚhidden_widgetsÚchangesÚcommon_widgetsÚscreen_regionrH   r±   ÚwidgetrÉ   Úresized_widgetss                     r2   ÚreflowÚCompositor.reflowm  s†  € ð ˆŒ
ØˆŒØ#ˆÔØ $ˆÔØ ˆÔØŒ	ØŒ	ð —.‘.ˆØ—l‘l“nˆà×)Ñ)¨&ÀUÐ)ÐK‰ˆà—h‘h“jˆð $Ñ1ˆð Ÿ™¨Ñ/ˆð ŒØŒð —)‘)“+ §¡£Ñ/ˆð %Ñ2ˆð Ÿ™ˆØ× 3Ñ 3Ó3ñá+2ôóò�Fô ÷ ñð ð ð ×Ñ×&Ñ& wÔ/ñ )0õ
â(/Ñ$�˜˜ !ØÑ(ó à-4©_×-CÑ-C×-HÑ-HÈFÏKÉKÑ-W÷ Ù(/ð 	ò 
ô
 Ø!ØØ#ñ
ð 	
ùòùô
s   ÃEÃ'EÄE$Ä"$E$Å
E$c                ó  • SU l         SU l        SU l        SU l        SU l        Xl        X l        U R                  =(       d    0 nU R                  XSS9u  pEX@l        XPl	        UR                  5       UR                  5       -
  nUR                  5       UR                  5       -  nUR                  nX€R                  ;  a=  S U 5        V	s1 s H  n	U	(       d  M  U	iM     n
n	U R                  R                  U
5        U$ s  sn	f )zÑReflow only the visible children.

This is a fast-path for scrolling.

Args:
    parent: The root widget.
    size: Size of the area to be filled.

Returns:
    Set of widgets that were exposed by the scroll.
NTrÁ   c              3  óp   #   • U  H,  u  pUR                   R                  UR                  5      v •  M.     g 7frF   rÄ   rÇ   s      r2   rË   Ú,Compositor.reflow_visible.<locals>.<genexpr>Õ  rÍ   rÎ   )r¤   rž   r¦   r¡   rœ   r¢   r£   r�   rÐ   r    rÏ   r…   rH   r¥   rÑ   )r:   rÒ   r£   rÓ   rÕ   r    Úexposed_widgetsrÙ   rÛ   rH   r±   s              r2   Úreflow_visibleÚCompositor.reflow_visible¯  s  € ð ˆŒ
ØˆŒØ#ˆÔØ $ˆÔØ%)ˆÔ"ØŒ	ØŒ	ð ×#Ñ#×) rˆØ×)Ñ)¨&ÀTÐ)ÐJ‰ˆð  ÔØŒàŸ(™(›* w§|¡|£~Ñ5ˆð —)‘)“+ §¡£Ñ/ˆð Ÿ™ˆØ× 3Ñ 3Ó3ñá+2ôóò�Fô ÷ ñð ð ð ×Ñ×&Ñ& wÔ/àÐùòs   ÃC?ÃC?c                óÞ   • U R                   c  0 $ U R                  (       aB  SU l        U R                  U R                   U R                  SS9u  pXl        SU l        SU l        U R                  $ )z4Lazily built compositor map that covers all widgets.NFrÁ   )r¢   rœ   rÐ   r£   r›   r¡   r�   )r:   rÕ   Ú_widgetss      r2   Úfull_mapÚCompositor.full_mapß  se   € ð �9‰9ÑØˆIØ×%×%Ø).ˆDÔ&Ø ×.Ñ.¨t¯y©y¸$¿)¹)ÐRWÐ.ÐX‰MˆCà ŒNØ$(ˆDÔ!Ø $ˆDÔà�~‰~Ðr1   c                ó2  • U R                   cî  U R                  b  U R                  OU R                  =(       d    0 nU R                  R                  nUR
                  n[        R
                  nUR                  5        VVVVV	s/ s H/  u  nu  pgn      n	U" U5      (       d  M  U" X†5      (       d  M+  XuXh4PM1     n
nnnnn	U
R                  [        S5      SS9  U
 V	VVVs0 s H
  u  p•phXVU4_M     snnnn	U l         U R                   $ s  sn	nnnnf s  snnnn	f )zVGet a mapping of widgets on to region and clip.

Returns:
    Visible widget mapping.
r   T©ÚkeyÚreverse)
r¡   r�   r›   r£   rH   Úoverlapsr   r…   r¯   r   )r:   rÕ   ÚscreenÚ	in_screenrî   rÜ   rH   ÚorderrÅ   rÉ   Úvisible_widgetss              r2   rò   ÚCompositor.visible_widgetsï  s  € ð × Ñ Ñ(ð ×$Ñ$Ñ0ð ×!Ò!à—n‘n×*¨ð ð
 —Y‘Y×%Ñ%ˆFØŸ™ˆIÜ—‘ˆHð
 BEÇÁÄ÷âALÑ=�FÑ=˜V¨D°!°Q¸¸1Ù˜V×$ó .á)1°$×)?ó .� Ó-ÙALð ô ð
 × Ñ ¤Z°£]¸DÐ ÑAáFUö%ÚFUÑ+B¨1°f� ˜Ò&Áoô%ˆDÔ!ð ×$Ñ$Ð$ùöùõ%s   ÂDÂ#DÂ2DÃ D
c           
     óP  ^^^^^^	^
^• 0 m	[        5       mTR                  m[        5       nUR                  mSnTR                  m
[        4                   SUUUU	U
UUU4S jjjmT" UTR                  TR                  SUTR                  S[        5        TU-  mT	T4$ )zûArrange a widget's children based on its layout attribute.

Args:
    root: Top level widget.
    size: Size of visible area (screen).
    visible_only: Only update visible widgets (used in scrolling).

Returns:
    Compositor map and set of widgets.
r   c	                óŒ	  >• U R                   (       d  gU R                  n	U	R                  S5      =n
b  U
S:H  nU(       a	  T)" U 5        OT(" U 5        UR                  U	R                  5      nUR
                  nU R                  (       Ga  U R                  (       a  UOU R                  U5      nUR                  nU R                  (       Gaº  U R                  UR
                  5      nUR                  nT/R                  U5        UR                  U5      nU R                  (       a¦  U R                   (       d•  UR"                  R$                  R&                  U R(                  R*                  U R,                  -
  -
  nU R/                  [0        R2                  U5        U R/                  [0        R4                  U5        UU R6                  l        T.(       a,  UR;                  UUR<                  -
  U R>                  -   5      nOUR@                  nURC                  UR$                  5      nUR<                  nUU R>                  -
  nU Vs/ s H  nURE                  T-RF                  U5      PM!     nn[I        U RJ                  5       VVs0 s H	  u  nnUU_M     nnnURL                  nU RN                  bH  U" UR                  U R                  R                  5      UUUR
                  UUU5      T+U RN                  '   [Q        U5       H}  u  nnnnnn n!n"U" URR                  S5      n#U (       a	  UU-   U-   n$OUU-   U-   n$UU#UU44-   n%U RN                  c+  T*" UUU$U!(       a  SOU%UU!(       a  T,OUUURT                  5        US-  nM     O{U R                  (       aj  U R                   (       dY  U RV                  R*                  U R(                  R*                  U R,                  -
  -
  nUU l        UU l        UU R6                  l,        U(       a„  U RZ                  (       d  U R\                  (       a<  U	R^                  S:X  a,  U Ra                  U5       H  u  n&n'U" U'UUUUU'U5      T+U&'   M     U" UUUUR
                  UUU5      T+U Rb                  '   ggU(       a&  U" UUUUR
                  UUU5      T+U Rb                  '   ggs  snf s  snnf )aö  Called recursively to place a widget and its children in the map.

Args:
    widget: The widget to add.
    virtual_region: The Widget region relative to its container.
    region: The region the widget will occupy.
    order: Painting order information.
    layer_order: The order of the widget in its layer.
    clip: The clipping region (i.e. the viewport which contains it).
    visible: Whether the widget should be visible by default.
        This may be overridden by the CSS rule `visibility`.
NÚ
visibilityÚvisibler   ))rr   r   r   rr   )2Ú_is_mountedÚstylesÚget_ruleÚshrinkÚgutterr£   Úis_scrollableÚloadingÚ_get_scrollable_regionÚreset_offsetÚis_containerÚarranger    rÑ   rÆ   Ú	_anchoredÚ_anchor_releasedÚspatial_mapÚtotal_regionÚbottomÚcontainer_sizer¶   Úscrollbar_size_horizontalÚset_reactiver   Úscroll_yÚscroll_target_yÚvertical_scrollbarÚ_reactive_positionÚget_visible_placementsÚoffsetÚscroll_offsetÚ
placementsÚunionÚprocess_offsetrH   rO   ÚlayersÚgetÚ_cover_widgetÚreversedÚlayerÚscroll_spacingÚvirtual_sizeÚpositionÚshow_vertical_scrollbarÚshow_horizontal_scrollbarÚscrollbar_visibilityÚ_arrange_scrollbarsÚ_render_widget)0rÜ   Úvirtual_regionrH   rñ   Úlayer_orderrÅ   r÷   Údock_gutterÚ_MapGeometryrù   rö   Úcontainer_regionr  Úchild_regionr  Úarrange_resultÚarranged_widgetsÚsub_clipÚnew_scroll_yr  Úplacement_offsetÚplacement_scroll_offsetÚ	placementÚindexÚ
layer_nameÚlayers_to_indexÚget_layer_indexÚ
sub_regionÚsub_region_offsetrÉ   Ú
sub_widgetÚzÚfixedÚoverlayÚabsoluteÚlayer_indexÚwidget_regionÚwidget_orderÚchrome_widgetÚchrome_regionÚadd_new_invisible_widgetÚadd_new_widgetÚ
add_widgetrÕ   Úno_clipr£   rÂ   r    s0                                           €€€€€€€€r2   rA  Ú,Compositor._arrange_root.<locals>.add_widget$  sº  ø€ ð. ×%×%ØØ—]‘]ˆFà$Ÿo™o¨lÓ;Ð;�
ÑHØ$¨	Ñ1�æÙ˜vÕ&á(¨Ô0ð  &Ÿ}™}¨V¯]©]Ó;ÐØ-×2Ñ2ˆNð ×#×#Ð#ð —~—~ñ %à×6Ñ6Ð7GÓHð ð  ,×8Ñ8�à×&×&Ð&à%+§^¡^°L×4EÑ4EÓ%F�Nà'5×'=Ñ'=Ð$Ø—N‘NÐ#3Ô4ð  $×0Ñ0°Ó>�Hà×'×'°×0G×0Gà*×6Ñ6×CÑC×JÑJà &× 5Ñ 5× <Ñ <Ø"(×"BÑ"Bñ!Cñð %ð ×+Ñ+¬F¯O©O¸\ÔJØ×+Ñ+¬F×,BÑ,BÀLÔQØGS˜×1Ñ1ÔDæ#Ø%3×%JÑ%JØ$ |×':Ñ':Ñ:¸V×=QÑ=QÑQó&™
ð &4×%>Ñ%>˜
Ø#/×#5Ñ#5°n×6QÑ6QÓ#R�Lð (8×'>Ñ'>Ð$Ø.>À×AUÑAUÑ.UÐ+ñ *4ó"â)3˜Ið "×0Ñ0°·±Ð>UÖVÙ)3ð ð "ô 2;¸6¿=¹=Ô1Iô'â1IÑ-˜E :ð # EÒ)Ù1Ið $ñ 'ð
 '6×&9Ñ&9�Oà×+Ñ+Ñ7Ù4@Ø"ŸM™M¨&¯-©-×*>Ñ*>Ó?Ø!Ø Ø"ŸK™KØ*Ø*Ø'ó5˜˜F×0Ñ0Ñ1ô( " *Ö-ñ	Ø"Ø)ØØ"ØØØØ á&5°j×6FÑ6FÈÓ&J˜æ à *Ð->Ñ >ÐAQÑ Qñ *ð
 !+Ð->Ñ >ÐAXÑ Xð *ð (-°¸aÀÐ0MÐ/OÑ'O˜à!×/Ñ/Ñ7Ù&Ø *Ø *Ø -Þ07¡¸\Ø +Þ+2¡¸Ø 'Ø .× =Ñ =ô	ð $ qÑ(šò3 .ð6 ×'×'°×0G×0GØ'-×':Ñ':×'AÑ'AØ"×1Ñ1×8Ñ8Ø$×>Ñ>ñ?ñ(˜ð +7˜œØ1=˜Ô.Ø=I˜×1Ñ1Ô:æð ×6×6Ø!×;×;Ø ×5Ñ5¸ÓBØ<B×<VÑ<VØ,ö=Ñ8˜M¨=ñ 2>Ø -Ø %Ø $Ø .Ø .Ø -Ø +ó2˜C Ó.ñ=ñ 2>ØØØØ$×)Ñ)Ø&Ø&Ø#ó2�C˜×-Ñ-Ò.ð' ö: á-9ØØØØ—K‘KØ"Ø"Øó.��F×)Ñ)Ò*ð ùòE"ùó
's   É&R;ÊS ))r   r   r   T)rÜ   r   r"  r   rH   r   rñ   z tuple[tuple[int, int, int], ...]r#  ÚintrÅ   r   r÷   ry   r$  r   r%  ztype[MapGeometry]r?   re   )rŸ   ÚaddrH   r   r   )r:   r¢   r£   rÂ   Úinvisible_widgetsr#  r?  r@  rA  rÕ   rB  r    s     ``  @@@@@@r2   rÐ   ÚCompositor._arrange_root  sý   ÿ€ ð  ˆÜ"›uˆØ Ÿ™ˆÜ),«ÐØ#4×#8Ñ#8Ð Øˆà—+‘+ˆô /:ðA	ØðA	à"ðA	ð ðA	ð 4ð	A	ð
 ðA	ð ðA	ð ðA	ð !ðA	ð ,ðA	ð ÷A	÷ A	ñH 	ØØ�K‰KØ�K‰KØØØ�K‰KØÜô		
ð 	Ð$Ñ$ˆØ�Gˆ|Ðr1   c                ó¼   • U R                   b  U R                   OU R                  nU R                  c  [        UR	                  5       S SS9U l        U R                  $ )z(Get widgets and geometry in layer order.c                ó    • U S   R                   $ )Nrr   )rñ   )Úitems    r2   Ú<lambda>Ú#Compositor.layers.<locals>.<lambda>û  s   € ¨d°1©g¯mªmr1   Trë   )r�   r›   rž   r®   r…   )r:   rÕ   s     r2   r  ÚCompositor.layersõ  sP   € ð $(×#4Ñ#4Ñ#@ˆd×ÒÀdÇnÁnˆØ�<‰<ÑÜ!Ø—	‘	“Ñ!;ÀTñˆDŒLð �|‰|Ðr1   c                óÌ  • U R                   cÂ  [        U R                  R                  5       Vs/ s H  n/ PM     nnU Vs/ s H  o3R                  PM     nn[
        R                  n[        nU R                  R                  5        H>  u  nu  p‰U" X‰5      n
U
u  p¼pÞU(       d  M  XzU4nU" XÌU-   5       H  nXA   " U5        M     M@     X l         U R                   $ s  snf s  snf )zÒVisible widgets and regions in layers order.

Returns:
    Lists visible widgets per layer. Widgets are give as a tuple of
    (WIDGET, CROPPED_REGION, REGION). CROPPED_REGION is clipped by
    the container.

)	r¦   r¬   r£   r¶   rZ   r   rÆ   rò   r…   )r:   rP   Úlayers_visibler  Úlayers_visible_appendsrÆ   Ú_rangerÜ   rH   rÅ   Úcropped_regionÚ_xr´   Ú_widthÚregion_heightÚwidget_locations                   r2   rO  ÚCompositor.layers_visibleÿ  sÝ   € ð ×ÑÑ'ä*/°·	±	×0@Ñ0@Ô*AÓBÒ*A Q›bÑ*AˆNÐBÙ@NÓ%OÂ°u§l¤lÁÐ"Ð%OÜ!×.Ñ.ˆLÜˆFØ*.×*>Ñ*>×*DÑ*DÖ*FÑ&�™˜Ù!-¨fÓ!;�Ø6DÑ3�˜fß �=Ø'-¸vÐ&F�OÙ# H¸Ñ.FÖG˜Ø.Ò1°/ÖBó Hñ +Gð $2Ô Ø×#Ñ#Ð#ùò CùÚ%Os   ¯CÁC!c                óœ   • XR                   ;   =(       d8    U R                  SL=(       a    XR                  ;   =(       d    XR                  ;   $ )z§Check if the widget was included in the last update.

Args:
    widget: A widget.

Returns:
    `True` if the widget was in the last refresh, or `False` if it wasn't.
N)r    r�   rè   ©r:   rÜ   s     r2   Ú__contains__ÚCompositor.__contains__  sC   € ð —l‘lÑ"÷ 'Ø×!Ñ!¨Ð-×M°&×<MÑ<MÑ2M÷'àŸ™Ñ&ð	
r1   c                ó  •  U R                   b$   U R                   U   R                  R                  $ U R                  U   R                  R                  $ ! [         a     N/f = f! [         a    [
        R                  " S5      ef = f)z`Get the offset of a widget.

Args:
    widget: Widget to query.

Returns:
    Offset of widget.
úWidget is not in layout)r�   rH   r  ÚKeyErrorrè   r   ÚNoWidgetrY  s     r2   Ú
get_offsetÚCompositor.get_offset*  s†   € ð	=Ø× Ñ Ñ,ðØ×,Ñ,¨VÑ4×;Ñ;×BÑBÐBð —=‘= Ñ(×/Ñ/×6Ñ6Ð6øô  ó Ùðûô ó 	=Ü—/’/Ð";Ó<Ð<ð	=ús-   ‚A& �"A ³"A& Á
A#Á A& Á"A#Á#A& Á&!Bc                ó2  • [         R                  n[        U R                  5      Us=:”  a  S:¼  aK  O  OHU R                  [	        U5          H,  u  pEnU" XQU5      (       d  M  UR
                  (       d  M)  XF4s  $    [        R                  " SU SU S35      e)zÖGet the widget under a given coordinate.

Args:
    x: X Coordinate.
    y: Y Coordinate.

Raises:
    errors.NoWidget: If there is not widget underneath (x, y).

Returns:
    A tuple of the widget and its region.
r   z#No widget under screen coordinate (z, Ú))r   Úcontainsrt   rO  rD  r÷   r   r_  ©r:   rL   rP   rd  rÜ   rR  rH   s          r2   Úget_widget_atÚCompositor.get_widget_at=  s‚   € ô —?‘?ˆÜˆt×"Ñ"Ó# aÕ,¨1Ö,Ø26×2EÑ2EÄcÈ!ÃfÔ2MÑ.�¨Ù˜N¨q×1Ó1°f·n·n±nØ!˜>Ò)ñ 3Nô �oŠoÐ CÀAÀ3ÀbÈÈÈ1ÐMÓNÐNr1   c              #  óö   #   • [         R                  n[        U R                  5      Us=:”  a  S:¼  aE  O  gU R                  U    H.  u  pEnU" XQU5      (       d  M  UR                  (       d  M)  XF4v •  M0     gg7f)zŽGet all widgets under a given coordinate.

Args:
    x: X coordinate.
    y: Y coordinate.

Returns:
    Sequence of (WIDGET, REGION) tuples.
r   N)r   rd  rt   rO  r÷   re  s          r2   Úget_widgets_atÚCompositor.get_widgets_atR  se   é € ô —?‘?ˆÜˆt×"Ñ"Ó# aÕ,¨1Ö,Ø26×2EÑ2EÀaÔ2HÑ.�¨Ù˜N¨q×1Ó1°f·n·n±nØ ˜.Ô(ò 3Ið -ùs   ‚AA9ÁA9Á.A9c                ó   •  U R                  X5      u  p4X0R
                  ;  a  [        R                  " 5       $ XR                  -  nX$R                  -  n[        R                  " UR                  R                  5        UR                  [        SX$R                  S5      5      nU(       d  [        R                  " 5       $ SnUS    H@  nXgR                  -  nX:  d  M  UR                   =(       d    [        R                  " 5       s  $    [        R                  " 5       $ ! [        R                   a    [        R                  " 5       s $ f = f)z¿Get the Style at the given cell or Style.null()

Args:
    x: X position within the Layout.
    y: Y position within the Layout.

Returns:
    The Style at the cell (x, y) within the Layout.
r   rr   )rf  r   r_  r   Únullrò   rL   rP   r   rŸ   ÚappÚ_background_screensÚrender_linesr   rµ   Úcell_lengthÚstyle)r:   rL   rP   rÜ   rH   ÚlinesrŒ   rQ   s           r2   Úget_style_atÚCompositor.get_style_atb  s÷   € ð	 Ø!×/Ñ/°Ó5‰NˆFð ×-Ñ-Ó-Ü—:’:“<Ðà	�X‰X‰ˆØ	�X‰X‰ˆä× Ò  §¡×!?Ñ!?Ô@Ø×#Ñ#¤F¨1¨a·±¸qÓ$AÓBˆæÜ—:’:“<ÐØˆà˜Q”xˆGØ×&Ñ&Ñ&ˆCØ�wØ—}‘}×4¬¯
ª
«Ò4ñ  ô
 �zŠz‹|Ðøô) �‰ó 	 Ü—:’:“<Òð	 ús   ‚D! Ä!)EÅEc                óä  •  U R                  X5      u  p4X0R                  ;  a  gX#R                  R
                  :¼  a  UR                  R                  u  pUR                  R                  u  pVXR                  U-   -  nX$R                  U-   -  nUS:  d  US:  a"  U[        [        SU5      [        SU5      5      4$ [        R                  " UR                  R                   5        UR#                  U5      nSnSn	Sn
SnSnSSKJn  SnU H³  nX�R(                  -  nUR*                  nUb‘  UR,                  b„  UR.                  nSU;   ar  US   u  pºU
c  MK  U[1        UR2                  5      -   nX:  aI  X:¼  aD  SnX-
  nSnUR2                   H  nUU:¼  a    OUU" U5      -  nUS-  nM     [        UU-   U
5      n  OUn	Mµ     Uc  U
b  [        XÊ5      nX>4$ ! [        R                   a     gf = f)záGet the Style at the given cell, the offset within the content.

Args:
    x: X position within the Layout.
    y: Y position within the Layout.

Returns:
    A tuple of the widget at (x, y) and the offset within the widget.
)NNr   N)Úget_character_cell_sizer  rr   )rf  r   r_  rò   Úcontent_regionr  Úbottom_right_inclusiverü   Útop_leftrL   rP   r   Úmaxr   rŸ   rm  rn  Úrender_lineÚ
rich.cellsrv  rp  rq  Ú_metaÚmetart   r\   )r:   rL   rP   rÜ   rH   Úgutter_leftÚgutter_rightrM   rŒ   ÚstartÚoffset_yÚoffset_xÚ	offset_x2rv  r  rQ   rq  r~  Úsegment_cell_lengthÚcell_cutÚsegment_offsetÚ	characters                         r2   Úget_widget_and_offset_atÚ#Compositor.get_widget_and_offset_at„  s  € ð	Ø!×/Ñ/°Ó5‰NˆFð ×-Ñ-Ó-Øà×%Ñ%×,Ñ,Ó,Ø×(Ñ(×?Ñ?‰DˆAà$*§M¡M×$:Ñ$:Ñ!ˆØ	�X‰X˜Ñ#Ñ#ˆØ	�X‰X˜Ñ$Ñ$ˆàˆq‹5�A˜“EØœ6¤# a¨£)¬S°°A«YÓ7Ð7Ð7ä× Ò  §¡×!?Ñ!?Ô@Ø×!Ñ! !Ó$ˆàˆØˆØ#ˆØˆØˆ	å6à $ˆÛˆGØ×&Ñ&Ñ&ˆCØ—M‘MˆEØÑ  U§[¡[Ñ%<Ø—z‘z�Ø˜tÓ#Ø)-¨h©Ñ&�HØÑ'Ù Ø (¬3¨w¯|©|Ó+<Ñ <�Ià“w 1£:Ø./Ð+Ø#$¡9˜Ø)*˜Ø)0¯¬˜IØ2°hÓ>Ù %Ø/Ñ3JÈ9Ó3UÑUÐ/Ø*¨aÑ/šNñ	 *6ô "(¨°>Ñ(AÀ8Ó!L˜ÙØŠEñ/ ð2 ‰>˜hÑ2Ü˜IÓ0ˆFØˆ~Ðøôm �‰ó 	Ùð	ús   ‚G ÇG/Ç.G/c                óp  • U R                   c  [        R                  " S5      e U R                  (       d   U R                  U   $ U R                  b   U R                  U   $ U R                  U   nU$ ! [
         a     N:f = f! [
         a     N-f = f! [
         a    [        R                  " S5      ef = f)a  Get information regarding the relative position of a widget in the Compositor.

Args:
    widget: The Widget in this layout you wish to know the Region of.

Raises:
    NoWidget: If the Widget is not contained in this Layout.

Returns:
    Widget's composition information.
r]  )r¢   r   r_  rœ   r›   r^  r�   rè   )r:   rÜ   rH   s      r2   Úfind_widgetÚCompositor.find_widgetÊ  sÂ   € ð �9‰9ÑÜ—/’/Ð";Ó<Ð<ð	Ø×-×-ðØŸ>™>¨&Ñ1Ð1ð × Ñ Ñ,ðØ×,Ñ,¨VÑ4Ð4ð —]‘] 6Ñ*ˆFð ˆMøô  ó Ùðûô
  ó Ùðûô ó 	=Ü—/’/Ð";Ó<Ð<ð	=úsR   ¥B ·A4 ÁB ÁB Á#B Á4
BÁ>B Â BÂB Â
BÂB ÂBÂB Â!B5c                ó   • U R                   b  U R                   $ U R                  u  p[        U5       Vs/ s H  nSU/PM	     nn[        R                  n[
        R                  nU R                  R                  5        H=  u  pxU" Xx5      u  pšp¼U(       d  M  U(       d  M"  X™U-   4nXJX¬-     H  nU" Xí5        M     M?     U Vs/ s H  n[        [        U5      5      PM     snU l         U R                   $ s  snf s  snf )zGet vertical cuts.

A cut is every point on a line where a widget starts or ends.

Returns:
    A list of cuts for every line.
r   )r¤   r£   r¬   r   rÆ   Úlistr[   rò   Úvaluesr®   rŸ   )r:   rµ   r¶   rÉ   ÚcutsrÆ   r[   rH   rÅ   rL   rP   Úregion_widthrU  Úregion_cutsÚcutÚ	line_cutss                   r2   r‘  ÚCompositor.cutsé  sä   € ð �:‰:Ñ!Ø—:‘:ÐàŸ	™	‰ˆÜ$)¨&¤MÓ2¢M˜q��E“
¡MˆÐ2ä×*Ñ*ˆÜ—‘ˆà ×0Ñ0×7Ñ7Ö9‰LˆFÙ0<¸VÓ0JÑ-ˆA�,ßˆ|§ Ø  lÑ"2Ð3�Ø AÑ$5Ó6�CÙ˜3Ö,ó 7ñ	 :ñ ?CÓCºd°”fœS ›^Ö,¹dÑCˆŒ
à�z‰zÐùò 3ùò Ds   µC6ÃC;Nc              #  ó¶  #   • Sn[         nU R                  nU(       aG  UR                  nUR                  5        VVVs/ s H  u  nu  pxU" U5      (       d  M  XgU4PM     n	nnnO+UR                  5        VVVs/ s H  u  nu  pxXgU4PM     n	nnnUR                  n
UR
                  nU	 Hœ  u  pgnU" X‡5      (       a5  UUUR                  U" SSUR                  UR                  5      5      4v •  MH  U
" Xx5      u  pÍpïU(       d  M\  U(       d  Me  UUUR                  U" XÇR                  -
  X×R                  -
  UU5      5      4v •  Mž     gs  snnnf s  snnnf 7f)zÁGet rendered widgets (lists of segments) in the composition.

Args:
    crop: Region to crop to, or `None` for entire screen.

Returns:
    An iterable of <region>, <clip region>, and <strips>
Tr   N)r   rò   rî   r…   rÆ   Úcontains_regionro  rµ   r¶   rL   rP   )r:   r‘   Ú_rich_traceback_guardÚ_Regionrò   Úcrop_overlapsrÜ   rH   rÅ   Úwidget_regionsrÆ   r˜  Únew_xÚnew_yÚ	new_widthÚ
new_heights                   r2   Ú_get_rendersÚCompositor._get_renders  st  é € ð !%Ðäˆà×.Ñ.ˆæØ ŸM™MˆMð />×.CÑ.CÔ.Eõâ.EÑ*�F™N˜VÙ  ×&ó '� Ó&Ù.Eð ò ˆNð />×.CÑ.CÔ.Eõâ.EÑ*�F™N˜Vð  Ó&Ù.Eð ò ð
 ×+Ñ+ˆØ!×1Ñ1ˆã$2Ñ ˆF˜DÙ˜t×,Ñ,àØØ×'Ñ'ÙØØØ"ŸL™LØ"ŸM™Mó	óðô ñ 7CÀ6Ó6PÑ3�˜iß�9§ àØØ×+Ñ+Ù#Ø %¯©Ñ 0Ø %¯©Ñ 0Ø )Ø *ó	óðô ò# %3ùôùôùs0   ‚<E¾EÁEÁ EÁ9EÂA6EÄEÄA
Ec                óÎ   • [         R                  " Uc  / OU5        U R                  R                  nU(       d  X@R                  ;   a  U R                  US9$ U R                  5       $ )a  Render an update renderable.

Args:
    full: Perform a full update if `True`, otherwise a partial update.
    screen_stack: Screen stack list. Defaults to None.
    simplify: Simplify segments.

Returns:
    A renderable for the update, or `None` if no update was required.
)Úsimplify)r   rŸ   r£   rH   r¥   Úrender_full_updateÚrender_partial_update)r:   ÚfullÚscreen_stackr¤  rÛ   s        r2   Úrender_updateÚCompositor.render_updateH  sY   € ô" 	× Ò  |Ñ';¡ÀÔNØŸ	™	×(Ñ(ˆÞ�=×$7Ñ$7Ó7Ø×*Ñ*°HÐ*Ð=Ð=à×-Ñ-Ó/Ð/r1   c                ól   • [         R                  " Uc  / OU5        U R                  U5      n[        XCS9$ )zÓRender an inline update.

Args:
    size: Inline size.
    screen_stack: Screen stack list. Defaults to None.
    clear: Also clear below the inline update (set when size decreases).

Returns:
    A renderable.
)rm   )r   rŸ   Úrender_stripsrj   )r:   r£   r¨  rm   rG   s        r2   Úrender_inlineÚCompositor.render_inline`  s4   € ô  	× Ò  |Ñ';¡ÀÔNØ×#Ñ# DÓ)ˆÜ˜FÑ0Ð0r1   c                ó¦  • U R                   R                  nU R                  R                  5         UnU R	                  US 5      nU(       aR  U Vs/ s HD  n[
        R                  " UR                  5       5      R                  5       R                  5       /PMF     nnOU Vs/ s H  oUR                  5       PM     nn[        Xb5      $ s  snf s  snf )z‰Render a full update.

Args:
    simplify: Simplify the segments (combine contiguous segments).

Returns:
    A LayoutUpdate renderable.
c                ó   • g©NTr)   ©rP   s    r2   rK  Ú/Compositor.render_full_update.<locals>.<lambda>€  s   € °4r1   )r£   rH   r¥   rm   Ú_render_chopsr   r^   r�  r¤  Údiscard_metarC   )r:   r¤  rÛ   r‘   r~   Úchopr¬  s          r2   r¥  ÚCompositor.render_full_updatet  sµ   € ð Ÿ	™	×(Ñ(ˆØ×Ñ×!Ñ!Ô#ØˆØ×"Ñ" 4©Ó8ˆæñ SXóÚRWÈ$”—’˜DŸK™K›MÓ*×3Ñ3Ó5×BÑBÓDÓEÑRWð ð ˆMñ 8=Ó=²u¨tŸ[™[ž]±uˆMÐ=ä˜MÓ9Ð9ùòùò >s   ÁAC	Â#Cc                óö  • U R                   R                  nU R                  R                  5       nU R                  R	                  5         U(       ab  [
        R                  " U5      R                  U5      n[        U R                  U5      5      nU VVs1 s H  u  n  oeiM
     snnR                  nOgU R                  X75      nU R                   V	s/ s H  o™SS PM	     n
n	[        X„U
5      $ s  snnf s  sn	f )zgRender a partial update.

Returns:
    A ChopsUpdate if there is anything to update, otherwise `None`.
Nrr   )r£   rH   r¥   Úcopyrm   r   Ú
from_unionrÆ   r�  r¼   rZ  r´  r‘  r{   )r:   rÛ   Úupdate_regionsr‘   r   rP   rÉ   Úis_rendered_liner~   Úcut_setr€   s              r2   r¦  Ú Compositor.render_partial_update�  sÓ   € ð Ÿ	™	×(Ñ(ˆØ×,Ñ,×1Ñ1Ó3ˆØ×Ñ×!Ñ!Ô#Þä×$Ò$ ^Ó4×AÑAÀ-ÓPˆDÜ˜×/Ñ/°Ó?Ó@ˆEÙ16Ô7²¡g a¨¨A¢±Ò7×DÑDÑàØ×"Ñ" 4Ó:ˆØ04·	²	Ó:²	 W˜Q˜R“[±	ˆ	Ð:Ü˜5¨Ó3Ð3ùó  8ùò ;s   ÂC0ÃC6c                óê   • Uc  U R                   nU R                  UR                  S 5      nUSUR                    Vs/ s H'  n[        R
                  " UR                  5       5      PM)     nnU$ s  snf )zuRender to a list of strips.

Args:
    size: Size of render.

Returns:
    A list of strips with the screen content.
Nc                ó   • gr±  r)   r²  s    r2   rK  Ú*Compositor.render_strips.<locals>.<lambda>¬  s   € ¸$r1   )r£   r´  rH   r¶   r   r^   r�  )r:   r£   r~   r¶  r¬  s        r2   r¬  ÚCompositor.render_strips¡  sd   € ð ‰<Ø—9‘9ˆDØ×"Ñ" 4§;¡;±Ó?ˆØ?DÀ]ÀtÇ{Á{Ñ?SÓTÒ?S°tœŸš D§K¡K£MÖ2Ñ?SˆÐTØÐùò Us   ¾.A0c           	     óÂ  • U R                   n[        S[        R                  5      nU Vs/ s H  oT" USS 5      PM     nnU R	                  U5      n[
        R                  nU HÞ  u  pšnU" Xš5      nUR                  nUR                  u  pï[        UR                  U5       Hœ  u  nnU" U5      (       d  M  UU   nUU    Vs/ s H  nUUs=:¼  a  U:¼  d  M  O  M  UPM     nnUR                  USS  Vs/ s H  nUU-
  PM
     sn5      nUR                  n[        UU5       H  u  nnU" U5      b  M  UUU'   M     Mž     Mà     [        SU5      $ s  snf s  snf s  snf )zžRender update 'chops'.

Args:
    crop: Region to crop to.
    is_rendered_line: Callable to check if line should be rendered.

Returns:
    Chops structure.
z.Callable[[list[int]], dict[int, Strip | None]]Nrƒ   rr   úSequence[Mapping[int, Strip]])r‘  r   ÚdictÚfromkeysr¡  r   rÆ   rL   Úcolumn_spanr„   Ú
line_rangeÚdivider  )r:   r‘   r¼  r‘  rÆ  r½  r~   ÚrendersrÆ   rH   rÅ   rG   Úrender_regionÚrender_xÚ	first_cutÚlast_cutrP   rU   Ú
chops_liner”  Ú
final_cutsÚ
cut_stripsÚget_chops_lines                          r2   r´  ÚCompositor._render_chops°  sa  € ð �y‰yˆÜÐHÌ$Ï-É-ÓXˆá7;Ó<²t¨G�˜' # 2˜,Ö'±tˆÐ<ð
 ×#Ñ# DÓ)ˆÜ×*Ñ*ˆã$+Ñ ˆF˜&Ù(¨Ó6ˆMØ$—‘ˆHØ"/×";Ñ";ÑˆIä × 8Ñ 8¸&ÖA‘��5Ù'¨×*Ñ*Ùà" 1™X�
Ø-1°!ªWÓWªW c¸ÀSÕ9UÈIÑ9U›cÑ9U�c©W�
ÐWØ"Ÿ\™\ÀZÐPQÐPRÁ^Ó*TÂ^¸c¨3°¬>Á^Ñ*TÓU�
ð ",§¡�Ü"% j°*Ö"=‘J�C˜Ù% cÓ*Ó2Ø*/˜
 3›ó #>ó Bñ %,ô$ Ð3°UÓ;Ð;ùò5 =ùò$ XùÚ*Ts   «EÃEÃEÃEÃ6Ec                ó4   • [        U R                  5       5      $ rF   )r   r¬  rb   s    r2   Ú__rich__ÚCompositor.__rich__Ý  s   € Ü˜t×1Ñ1Ó3Ó4Ð4r1   c                ó  • U R                   (       d5  UR                  U R                  R                  5       5      (       d  SU l         / nUR                  nU R                  R
                  nU R                  R                  5       U-   Hd  nU" U5      u  pgUR                  nUR                  n	UR                  5        H+  n
U	" U
R                  U5      5      =n(       d  M#  U" U5        M-     Mf     U R                  R                  U5        g)z[Update the given widgets in the composition.

Args:
    widgets: Set of Widgets to update.
TN)rœ   Úissubsetrò   rÏ   rZ   Ú__getitem__r  rÆ   Ú_exchange_repaint_regionsÚ	translater¥   rÑ   )r:   r    r±   Ú
add_regionÚ
get_widgetrÜ   rH   rÅ   r  rÆ   Údirty_regionÚupdate_regions               r2   Úupdate_widgetsÚCompositor.update_widgetsà  så   € ð ×)×)°'×2BÑ2BØ× Ñ ×%Ñ%Ó'÷3
ñ 3
ð *.ˆDÔ&à "ˆØ—^‘^ˆ
Ø×)Ñ)×5Ñ5ˆ
Ø×*Ñ*×/Ñ/Ó1°GÔ;ˆFÙ% fÓ-‰LˆFØ—]‘]ˆFØ×,Ñ,ˆLØ &× @Ñ @Ö B�Ù$0°×1GÑ1GÈÓ1OÓ$PÐP�=×PÙ˜}Ö-ó !Cñ	 <ð 	×Ñ×"Ñ" 7Õ+r1   )r¤   r¥   r›   rœ   rž   r¦   r�   r¡   r¢   r£   r    )r?   re   )r±   zIterable[Region]r?   zIterable[tuple[int, int, int]]rg   )rÒ   r   r£   r   r?   r#   )rÒ   r   r£   r   r?   r%   )r?   r3   )r?   z#dict[Widget, tuple[Region, Region]])T)r¢   r   r£   r   rÂ   ry   r?   z!tuple[CompositorMap, set[Widget]])r?   z list[tuple[Widget, MapGeometry]])r?   z)list[list[tuple[Widget, Region, Region]]])rÜ   r   r?   ry   )rÜ   r   r?   r   )rL   rD  rP   rD  r?   ztuple[Widget, Region])rL   rD  rP   rD  r?   zIterable[tuple[Widget, Region]])rL   rD  rP   rD  r?   r   )rL   rD  rP   rD  r?   z#tuple[Widget | None, Offset | None])rÜ   r   r?   r   )r?   r—   rF   )r‘   zRegion | Noner?   z,Iterable[tuple[Region, Region, list[Strip]]])FNF)r§  ry   r¨  úlist[Screen] | Noner¤  ry   r?   zRenderableType | None)NF)r£   r   r¨  râ  rm   ry   r?   r   rw   )r¤  ry   r?   rC   )r?   zChopsUpdate | None)r£   zSize | Noner?   rx   )r‘   r   r¼  zCallable[[int], bool]r?   rÄ  )r?   r   )r    r%   r?   re   )$r*   r+   r,   r-   r.   rI   rm   Úclassmethodr¼   rc   rÞ   rä   Úpropertyrè   rò   rÐ   r  rO  rZ  r`  rf  ri  rs  r‰  rŒ  r‘  r¡  r©  r­  r¥  r¦  r¬  r´  rÕ  rà  r0   r)   r1   r2   r™   r™     sÝ  † ámôVô:$ð ð#"Ø&ð#"à	'ó#"ó ð#"ôJ&ô@
ôD.ð` óó ðð ó%ó ð%ð< >BðfØðfØ"&ðfØ6:ðfà	*õfðP óó ðð ó$ó ð$ô4
ô =ô&Oô*)ô  ðDDØðDØðDà	,ôDôLð> óó ðð< %)ð?Ø!ð?à	5õ?ðF Ø,0Øð	0àð0ð *ð0ð ð	0ð
 
õ0ð6 -1Øð	1àð1ð *ð1ð ð	1ð
 
õ1ö(:ô24ö(ð+<àð+<ð 0ð+<ð 
'ô	+<ôZ5÷,r1   r™   )=r.   Ú
__future__r   Úoperatorr   Útypingr   r   r   r   r	   r
   r   Ú	rich.reprÚrichÚrich.consoler   r   r   r   Úrich.controlr   Úrich.segmentr   Ú
rich.styler   Útextualr   Útextual._cellsr   Útextual._contextr   Útextual._loopr   Útextual.geometryr   r   r   r   r   Útextual.map_geometryr   Útextual.stripr   r   Útextual.widgetr   Útyping_extensionsr    Útextual.screenr!   r#   r3   r/   r5   ÚreprÚautorC   rj   r{   r™   r)   r1   r2   Ú<module>rú     s-  ðò
õ #å ÷÷ ñ ó ß NÓ NÝ  Ý  Ý å Ý #Ý 1Ý #ß HÕ HÝ ,ß 0Ý !æÝ+å%ô�:ô ð 7€ˆyÓ 6÷ñ ð ‡�‡�˜€Ðô*Ð#ó *ó ð*ðZ ‡�‡�˜€Ðô)"Ð#ó )"ó ð)"ðX ‡�‡�˜€ÐôpÐ"ó pó ðpðf ‡�‡�˜€Ð÷^,ð ^,ó ñ^,r1   