ó
    Ãu„jë&  ã                  ó  • % S SK Jr  S SKJrJr  S SKJr  S SK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JrJrJr  S SKJr  \(       a  S S	KJr  S S
KJr  SrS\S'   \ " S S5      5       r " S S\5      r " S S\5      r g)é    )Úannotations)ÚABCÚabstractmethod)Ú	dataclass)ÚTYPE_CHECKINGÚClassVarÚIterableÚ
NamedTuple)Ú
SpatialMap)ÚCanvasÚ	Rectangle)ÚOffsetÚRegionÚSizeÚSpacing)ÚStripRenderable)Ú	TypeAlias)ÚWidgetúlist[WidgetPlacement]r   ÚArrangeResultc                  ó€   • \ rS rSr% SrS\S'    S\S'    S\S'    S	rS
\S'    \SS j5       r\SS j5       r	SS jr
Srg	)ÚDockArrangeResulté   z:Result of [Layout.arrange][textual.layout.Layout.arrange].r   Ú
placementszset[Widget]Úwidgetsr   Úscroll_spacingNz"SpatialMap[WidgetPlacement] | NoneÚ_spatial_mapc                óª   • U R                   c;  [        5       U l         U R                   R                  S U R                   5       5        U R                   $ )zA lazy-calculated spatial map.c              3  ó²   #   • U  HM  nUR                   R                  UR                  5      UR                  UR                  UR
                  U4v •  MO     g 7f©N)ÚregionÚgrowÚmarginÚoffsetÚfixedÚoverlay)Ú.0Ú	placements     ÚœC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\textual/layout.pyÚ	<genexpr>Ú0DockArrangeResult.spatial_map.<locals>.<genexpr>'   sS   é € ð 	%ò "1�Ið ×$Ñ$×)Ñ)¨)×*:Ñ*:Ó;Ø×$Ñ$Ø—O‘OØ×%Ñ%Øõò "1ùs   ‚AA)r   r   Úinsertr   ©Úselfs    r)   Úspatial_mapÚDockArrangeResult.spatial_map"   sO   € ð ×ÑÑ$Ü *£ˆDÔØ×Ñ×$Ñ$ñ 	%ð "&§¢ó	%ô 	ð × Ñ Ð ó    c                óp   • U R                   u  pp4U R                  R                  R                  SX#S45      $ )zDThe total area occupied by the arrangement.

Returns:
    A Region.
r   )r   r/   Útotal_regionr"   )r.   Ú_topÚrightÚbottomÚ_lefts        r)   r3   ÚDockArrangeResult.total_region4   s8   € ð &*×%8Ñ%8Ñ"ˆ�VØ×Ñ×,Ñ,×1Ñ1°1°eÀQÐ2GÓHÐHr1   c                ó(  • U R                   U;   a  U R                  $ U R                  R                  U5      nUR                  nU Vs/ s H<  nUR
                  (       d&  U" UR                  UR                  -   5      (       d  M:  UPM>     nnU$ s  snf )zrGet the placements visible within the given region.

Args:
    region: A region.

Returns:
    Set of placements.
)r3   r   r/   Úget_values_in_regionÚoverlapsr%   r!   r$   )r.   r!   Úvisible_placementsr;   r(   Úculled_placementss         r)   Úget_visible_placementsÚ(DockArrangeResult.get_visible_placements>   sŠ   € ð ×Ñ Ó&à—?‘?Ð"Ø!×-Ñ-×BÑBÀ6ÓJÐØ—?‘?ˆñ 0ó
â/�	Ø��¡(¨9×+;Ñ+;¸i×>NÑ>NÑ+N×"O÷ Ù/ð 	ð 
ð
 !Ð ùò
s   Á9BÂB)r   )ÚreturnzSpatialMap[WidgetPlacement])r@   r   )r!   r   r@   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   Úpropertyr/   r3   r>   Ú__static_attributes__© r1   r)   r   r      s[   ‡ áDà%Ó%ØRØÓØ.ØÓØ,à7;€LÐ4Ó;Ø3àó!ó ð!ð" óIó ðI÷!r1   r   c                  óì   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   SrS\S'   SrS\S'   SrS\S'   Sr	S\S'   \
SS j5       r\      SS j5       r\SS j5       r\SS j5       r      SS jrSrg)ÚWidgetPlacementéT   zEThe position, size, and relative order of a widget within its parent.r   r!   r   r$   r   r#   r   Úwidgetr   ÚintÚorderFÚboolr%   r&   Úabsolutec                óH   • U R                  U R                  R                  S9$ )z7Reset the origin in the placement (moves it to (0, 0)).)r!   )Ú_replacer!   Úreset_offsetr-   s    r)   Úreset_originÚWidgetPlacement.reset_origin`   s   € ð �}‰} D§K¡K×$<Ñ$<ˆ}Ð=Ð=r1   c                ó´   • U(       aD  U VVVVVVV	V
s	/ s H(  u  p4pVpxpšU " UR                   c  X2-   OUUUUUUU	U
5      PM*     s	n
n	nnnnnn$ U$ s  s	n
n	nnnnnnf )zÛMove all non-absolute placements by a given offset.

Args:
    placements: List of placements.
    offset: Offset to add to placements.

Returns:
    Placements with adjusted region, or same instance if offset is null.
)Úabsolute_offset)Úclsr   Útranslate_offsetr!   r$   r#   Úlayout_widgetrO   r%   r&   rQ   s              r)   Ú	translateÚWidgetPlacement.translatee   s‹   € ö ñ  _i÷ò ò _iÑZ�F F¸5Èñ ð )×8Ñ8Ñ@ð Ò1à#àØØ!ØØØØöñ _i÷ð ð ð" Ðù÷#ñ s   “/Ac                ón   • [        U5       H&  u  p#UR                  (       d  M  UR                  X'   M(     g)zRApplies absolute offsets (in place).

Args:
    placements: A list of placements.
N)Ú	enumeraterQ   rU   )rY   r   Úindexr(   s       r)   Úapply_absoluteÚWidgetPlacement.apply_absolute†   s0   € ô !*¨*Ö 5ÑˆEØ×!×!Ñ!Ø$-×$:Ñ$:�
Ó!ò !6r1   c                ó¢   • [         R                  " U Vs/ s H'  o"R                  R                  UR                  5      PM)     sn5      nU$ s  snf )z˜Get a bounding region around all placements.

Args:
    placements: A number of placements.

Returns:
    An optimal binding box around all placements.
)r   Ú
from_unionr!   r"   r#   )rY   r   r(   Úbounding_regions       r)   Ú
get_boundsÚWidgetPlacement.get_bounds‘   sI   € ô !×+Ò+ÙFPÓQÂj¸×Ñ×"Ñ" 9×#3Ñ#3Ö4ÁjÑQó
ˆð Ðùò Rs   •.Ac           
     óV  • U R                   nUR                  nUR                  (       d  UR                  SS5      (       d  U $ U R                  nU R
                  nUR                  b+  UR                  UR                  UR                  -   U-
  5      nUR                  U R                  5      R                  UR                  UR                  U R
                  X-
  5      nUR                  U R                  R                  -
  nXpR                  :w  a  U u  pXpcpšp¼[        XWXcXšX¼5      nU$ U $ )a%  Apply any absolute offset or constrain rules to the placement.

Args:
    constrain_region: The container region when applying constrain rules.
    absolute_offset: Default absolute offset that moves widget into screen coordinates.

Returns:
    Processes placement, may be the same instance.
Úconstrain_xÚconstrain_y)rM   ÚstylesrX   Úhas_any_rulesr!   r#   Ú	at_offsetÚtop_leftr\   r$   Ú	constrainri   rj   rK   )r.   Úconstrain_regionrX   rM   rk   r!   r#   r$   Ú_offsetrO   r%   r&   rQ   r(   s                 r)   Úprocess_offsetÚWidgetPlacement.process_offset    s  € ð —‘ˆØ—‘ˆØ×%×%¨f×.BÑ.BØ˜=÷/
ñ /
ð ˆKØ—‘ˆØ—‘ˆØ×!Ñ!Ñ-Ø×%Ñ%Ø×&Ñ&¨¯©Ñ8¸?ÑJóˆFð ×!Ñ! $§+¡+Ó.×8Ñ8Ø×ÑØ×ÑØ�K‰KØÑ.ó	
ˆð —‘ §¡×!3Ñ!3Ñ3ˆØ—[‘[Ó ØOSÑLˆF˜V¨U¸7Ü'Ø °¸góˆIð ÐØˆr1   rI   N)r@   rK   )r   r   rZ   r   r@   r   )r   r   r@   ÚNone)r   zIterable[WidgetPlacement]r@   r   )rp   r   rX   r   r@   rK   )rA   rB   rC   rD   rE   rF   rO   r%   r&   rQ   rG   rU   Úclassmethodr\   ra   rf   rr   rH   rI   r1   r)   rK   rK   T   sÄ   ‡ ÙOàƒNØƒNØƒOØƒNØ€Eˆ3ƒNØ€Eˆ4ÓØ€GˆTÓØ€HˆdÓàó>ó ð>ð ðØ.ðØBHðà	óó ðð@ ó;ó ð;ð óó ðð(Ø &ð(Ø9?ð(à	÷(r1   rK   c                  ó�   • \ rS rSr% SrSrS\S'   SS jr\ S         SS jj5       r	SS jr
          SS	 jrSS
 jrSrg)ÚLayoutéË   zNBase class of the object responsible for arranging Widgets within a container.Ú zClassVar[str]Únamec                ó"   • SU R                    S3$ )NÚ<Ú>)rz   r-   s    r)   Ú__repr__ÚLayout.__repr__Ð   s   € Ø�4—9‘9�+˜QÐÐr1   c                ó   • g)z¾Generate a layout map that defines where on the screen the widgets will be drawn.

Args:
    parent: Parent widget.
    size: Size of container.

Returns:
    An iterable of widget location
NrI   )r.   ÚparentÚchildrenÚsizeÚgreedys        r)   ÚarrangeÚLayout.arrangeÓ   s   � r1   c                óÊ   • UR                   (       d  SnU$ UR                  [        UR                  (       a  SOUR                  S5      SS9nUR
                  R                  nU$ )zÆGet the optimal content width by arranging children.

Args:
    widget: The container widget.
    container: The container size.
    viewport: The viewport size.

Returns:
    Width of the content.
r   T)Úoptimal)Ú_nodesr…   r   ÚshrinkÚwidthr3   r5   )r.   rM   Ú	containerÚviewportr‹   Úarrangements         r)   Úget_content_widthÚLayout.get_content_widthå   s]   € ð �}�}ØˆEð ˆð !Ÿ.™.Ü˜&Ÿ-Ÿ-‘Q¨Y¯_©_¸aÓ@Øð )ð ˆKð  ×,Ñ,×2Ñ2ˆEØˆr1   c                óT  • UR                   (       a”  UR                  R                  (       dF  [        S UR                   5       5      (       a%  UR                  [        XBR                  5      5      nOUR                  [        US5      5      nUR                  R                  nU$ SnU$ )zÇGet the content height.

Args:
    widget: The container widget.
    container: The container size.
    viewport: The viewport.
    width: The content width.

Returns:
    Content height (in lines).
c              3  óL   #   • U  H  oR                   R                  v •  M     g 7fr    )rk   Úis_dynamic_height)r'   Úchilds     r)   r*   Ú,Layout.get_content_height.<locals>.<genexpr>	  s   é € ð 3Ú<U°5—‘×.Ö.Ò<Uùs   ‚"$r   )	r‰   rk   Ú	is_dockedÚallÚdisplayed_childrenr…   r   Úheightr3   )r.   rM   rŒ   r�   r‹   rŽ   r™   s          r)   Úget_content_heightÚLayout.get_content_heightú   sŠ   € ð �=�=Ø—=‘=×*×*¬sñ 3Ø<B×<UÒ<Uó3÷ 0ñ 0ð %Ÿn™n¬T°%×9IÑ9IÓ-JÓK‘à$Ÿn™n¬T°%¸«^Ó<�Ø ×-Ñ-×4Ñ4ˆFð ˆð ˆFØˆr1   c                ó   ^	^
^• UR                   u  p#[        X#5      nUR                  R                  u  mm
T
(       a  UR                  S   T
-   m
UR
                  R                  m	SU	U
U4S jjnUR                   Vs/ s H(  nUR                  (       d  M  U" UR                  5      PM*     nnUR                  XqR                  5      nU$ s  snf )z�Render keylines around all widgets.

Args:
    container: The container widget.

Returns:
    A renderable to draw the keylines.
r   c                ól   >• U R                   T-
  S-
  nU R                  u  p#[        XS-   US-   TT5      $ )z‚Get a canvas Rectangle that wraps a region.

Args:
    region: Widget region.

Returns:
    A Rectangle that encloses the widget.
)é   rž   é   )r$   rƒ   r   )r!   r$   r‹   r™   Úcontainer_offsetÚkeyline_colorÚ
line_styles       €€€r)   Úget_rectangleÚ,Layout.render_keyline.<locals>.get_rectangle'  s=   ø€ ð —]‘]Ð%5Ñ5¸Ñ>ˆFØ"ŸK™K‰MˆEÜ˜V¨Q¡Y°¸±
¸MÈ:ÓVÐVr1   )r!   r   r@   r   )Ú
outer_sizer   rk   ÚkeylineÚbackground_colorsÚcontent_regionr$   r‚   Úvisibler!   ÚrenderÚ
rich_style)r.   rŒ   r‹   r™   Úcanvasr£   rM   Ú
primitivesÚcanvas_renderabler    r¡   r¢   s            @@@r)   Úrender_keylineÚLayout.render_keyline  sÄ   ú€ ð "×,Ñ,‰ˆÜ˜Ó&ˆà$-×$4Ñ$4×$<Ñ$<Ñ!ˆ
�MÞØ%×7Ñ7¸Ñ:¸]ÑJˆMà$×3Ñ3×:Ñ:Ð÷	Wñ 	Wð $×,Ò,ó
â,�Ø�~�~ó )‰M˜&Ÿ-™-Ö(Ù,ð 	ð 
ð
 #ŸM™M¨*×6JÑ6JÓKÐØ Ð ùò
s   Á=CÂCrI   N)r@   Ústr)T)
r�   r   r‚   zlist[Widget]rƒ   r   r„   rP   r@   r   )rM   r   rŒ   r   r�   r   r@   rN   )
rM   r   rŒ   r   r�   r   r‹   rN   r@   rN   )rŒ   r   r@   r   )rA   rB   rC   rD   rE   rz   rF   r~   r   r…   r�   rš   r¯   rH   rI   r1   r)   rw   rw   Ë   s”   ‡ ÙXà€Dˆ-Óô ð ð ðàðð ðð ð	ð
 ðð 
ôó ðô"ð*ØðØ)-ðØ9=ðØFIðà	ô÷6%!r1   rw   N)!Ú
__future__r   Úabcr   r   Údataclassesr   Útypingr   r   r	   r
   Útextual._spatial_mapr   Útextual.canvasr   r   Útextual.geometryr   r   r   r   Útextual.stripr   Útyping_extensionsr   Útextual.widgetr   r   rF   r   rK   rw   rI   r1   r)   Ú<module>r¼      sm   ðÞ "ç #Ý !ß @Ó @å +ß ,ß :Ó :Ý )æÝ+å%à2€ˆyÓ 2ð ÷<!ð <!ó ð<!ô~t�jô tôno!ˆSõ o!r1   