ó
    Ãu„j*+  ã                  ó$  • 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
  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  \(       a  S S
KJr  SSSS.                 SS jjr S           SS jjr  S               SS jjrg)é    )Úannotations)ÚFraction)Ú
accumulate)ÚTYPE_CHECKINGÚIterableÚSequenceÚcast)ÚLiteral)ÚBoxModel)ÚScalar)ÚRenderStyles)ÚSize)ÚWidgetFN)ÚexpandÚshrinkÚminimumsc          
     óþ  ^!• U  Vs/ s H*  nUR                   (       a  US4OXˆR                  X45      4PM,     n	n[        R                  n
U
" [	        U	 VVs/ s H  u  p‹Ub  M
  UR
                  PM     snn5      5      nU[        U 5      S-
  -  nU(       aƒ  [	        U	 VVs/ s H  u  pëUc  M
  UPM     snn5      n[        [        S5      [        X-
  5      U-
  5      n[        UU5      nU	 VVs/ s H  u  p‹Uc  U
" UR
                  5      U-  OUPM!     nnnO![        SU	 VVs/ s H  u  pëUPM	     snn5      n[        U5      m!U(       d  U(       Ga  X-
  n[	        U5      nU(       a-  UU-
  nUS:”  a"  U Vs/ s H  nU[        UU5      U-  -   PM     nnU(       aÃ  [        S5      nUU-
  nUbˆ  US:”  a‚  [        [        [        [        U5      U5      5       HK  u  nu  nn[        [        UU5      U5      U-  n[        UUU-
  5      nUUU'   UU-
  U-   nUU-
  nUS::  d  MK    O   [	        U5      nUU-
  nUS:”  a"  U Vs/ s H  nU[        UU5      U-  -
  PM     nnS/[        U!4S jU 5       5       Vs/ s H  nUR                  5       PM     sn-   n[        USSS2   USSS2   5       VVs/ s H  u  nnUUU-
  4PM     n nnU $ s  snf s  snnf s  snnf s  snnf s  snnf s  snf s  snf s  snf s  snnf )a
  Resolve a list of dimensions.

Args:
    dimensions: Scalars for column / row sizes.
    total: Total space to divide.
    gutter: Gutter between rows / columns.
    size: Size of container.
    viewport: Size of viewport.

Returns:
    List of (<OFFSET>, <LENGTH>)
Né   r   zlist[Fraction]c              3  ó@   >#   • U  H  nUT4  H  nUv •  M	     M     g 7f©N© )Ú.0ÚfractionÚvalueÚfraction_gutters      €ÚžC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\textual/_resolve.pyÚ	<genexpr>Úresolve.<locals>.<genexpr>k   s*   øé € ð #
â.�Ø" OÔ4�õ á4ñ Ú.ùs   ƒé   )Úis_fractionÚresolver   Ú
from_floatÚsumr   ÚlenÚmaxr	   Ú	enumerateÚzipÚmapr   Ú	__floor__)"Ú
dimensionsÚtotalÚgutterÚsizeÚviewportr   r   r   ÚscalarÚresolvedr"   r   Útotal_fractionÚtotal_gutterÚ_ÚconsumedÚ	remainingÚfraction_unitÚresolved_fractionsÚtotal_spaceÚ
used_spaceÚremaining_spaceÚwidthÚoneÚexcess_spaceÚindexÚminimum_widthÚremove_spaceÚupdated_widthÚoffsetsÚoffset1Úoffset2Úresultsr   s"                                    @r   r!   r!      sy  ø€ ñ: !ó6ò !ˆFð ×!×!ð �T‰NàŸ.™.¨Ó8Ð9ò:ñ !ð ð 6ô ×$Ñ$€JÙÜ±(ÔO²(Ñ.˜f¸h‹\ˆV�\Œ\±(ÒOÓPó€Nð œS ›_¨qÑ0Ñ1€LÞÜ±HÔU²H¡[ QÀŸ±HÒUÓVˆÜœ ›¤X¨eÑ.BÓ%CÀhÑ%NÓOˆ	Ü  ¨NÓ;ˆñ %-ô
â$,Ñ �ð 9AÑ8H‰J�v—|‘|Ó$ }Ò4ÈhÒVÙ$,ð 	ñ 
Ðô
 "Ø¹8ÔDº8©K¨A›x¹8ÒDó
Ðô ˜vÓ&€Oæ—ØÑ*ˆÜÐ+Ó,ˆ
ÞØ)¨JÑ6ˆOØ Ó"ñ "4ó&â!3˜ð œH U¨JÓ7¸/ÑIÔIÙ!3ð #ð &ö Ü˜1“+ˆCØ%¨Ñ3ˆLØÑ#¨°qÓ(8Ü5>ÜœœH hÓ/Ð1CÓDö6Ñ1�EÑ1˜M¨5ô $'¤x°°zÓ'BÀCÓ#HÈ<Ñ#W�LÜ$'¨°u¸|Ñ7KÓ$L�MØ0=Ð& uÑ-Ø!+¨eÑ!3°mÑ!C�JØ#-°Ñ#;�LØ# qÕ(Ùñ6ô !Ð!3Ó4�
Ø)¨KÑ7�à˜aÓñ "4ó&â!3˜ð œH U¨JÓ7¸,ÑFÔFÙ!3ð #ð &ð
 ˆcä"ô #
á.ó#
ô 
óò
ˆHð 	×ÑÖñ
ññ €Gô !$ G©C¨a¨C¡L°'¸!¸$¸Q¸$±-Ô @ôâ @ÑˆG�Wð 
�'˜GÑ#Ó$Ù @ð ñ ð
 €Nùò[6ùó Pùó
 Vùó
ùó Eùò&ùò.&ùò
ùósA   †1KÁ	KÁ"KÂ 	K
Â-K
Ã/&KÄ$K$Å9K*ÉK/É:K4Ê4K9c                óè  ^^• [         nU(       a  U (       d  U" S5      $ Un[        S5      4     S
UU4S jjjn/ nUS:X  a`  U  V	s/ s HR  n	U	R                  S:w  d  M  [        [        U	R                  5      U" U	R
                  5      U" U	R                  5      4PMT     nn	O_U  V	s/ s HR  n	U	R                  S:w  d  M  [        [        U	R                  5      U" U	R                  5      U" U	R                  5      4PMT     nn	S/[        U5      -  n
[        [        S U 5       5      5      nUS:”  a¥  SnU" X;5      n[        U5       H|  u  nu  nnnX®   nUb  M  UR                  TTU5      nUb'  UU:  a!  UU-  nXµ" UR                  5      -  nUX®'   S	nMP  Uc  MU  UU:”  d  M]  UU-  nXµ" UR                  5      -  nUX®'   S	nM~     U(       d  OUS:”  a  M¥  US:”  a  [        X;5      $ U$ s  sn	f s  sn	f )a  Calculate the fraction.

Args:
    widget_styles: Styles for widgets with fraction units.
    size: Container size.
    viewport_size: Viewport size.
    remaining_space: Remaining space for fr units.
    resolve_dimension: Which dimension to resolve.

Returns:
    The value of 1fr.
r   c                ó4   >• U c  S$ U R                  TTU5      $ )z§Resolve a scalar if it is not None.

Args:
    scalar: Optional scalar to resolve.
    fraction_unit: Size of 1fr.

Returns:
    Fraction if resolved, otherwise None.
N)r!   )r/   r6   r-   Úviewport_sizes     €€r   Úresolve_scalarÚ-resolve_fraction_unit.<locals>.resolve_scalar’   s+   ø€ ð ‰~ð ð	
ð —‘  m°]ÓCð	
ó    r;   ÚscreenNc              3  ó@   #   • U  H  u  n  o!R                   v •  M     g 7fr   )r   )r   r/   r3   s      r   r   Ú(resolve_fraction_unit.<locals>.<genexpr>¼   s   é € Ð%OÂw±|°v¸qÀ!§l¦lÂwùs   ‚r   FT)r/   zScalar | Noner6   r   ÚreturnzFraction | None)r   Úoverlayr	   r   r;   Ú	min_widthÚ	max_widthÚheightÚ
min_heightÚ
max_heightr$   r#   r&   r!   r   )Úwidget_stylesr-   rH   r:   Úresolve_dimensionÚ	_FractionÚinitial_spacerI   r!   Ústylesr0   Úremaining_fractionÚremaining_space_changedÚresolve_fractionr>   r/   Ú	min_valueÚ	max_valuer   Úresolved_scalars    ``                 r   Úresolve_fraction_unitra   y   sK  ù€ ô& €IÞ¦-Ù˜‹|Ðà#€Mô :BÀ!»ð
Øð
Ø.6ð
à	÷
ñ 
ð$ FH€Gà˜GÓ#ñ (ó
ò (�Ø�~‰~ Ñ)óÜ”V˜VŸ\™\Ó*Ù˜v×/Ñ/Ó0Ù˜v×/Ñ/Ó0óñ
 (ð 	ð 
ˆñ  (ó
ò (�Ø�~‰~ Ñ)óÜ”V˜VŸ]™]Ó+Ù˜v×0Ñ0Ó1Ù˜v×0Ñ0Ó1óñ
 (ð 	ð 
ð (, f¬s°7«|Ñ&;€HÜ!¤#Ñ%OÁwÓ%OÓ"OÓPÐà
˜qÓ
 Ø"'ÐÙ$ _ÓIÐÜ5>¸wÖ5GÑ1ˆEÑ1�F˜I yØ‘OˆEØ‹}Ø"(§.¡.°°}ÐFVÓ"W�ØÑ(¨_¸yÓ-HØ# yÑ0�OØ&¨)°F·L±LÓ*AÑAÐ&Ø&/�H‘OØ.2Ò+ØÓ*¨ÀÕ/JØ# yÑ0�OØ&¨)°F·L±LÓ*AÑAÐ&Ø&/�H‘OØ.2Ò+ñ 6Hö 'Øð' ˜qÕ
 ð.  Ó!ô 	�Ó5ðð ðùòY
ùò
s   ÁG*ÁAG*Â'G/Â?AG/c                ó  • Uu  px[        UR                  5      n	[        UR                  5      n
[        S5      nX$-
  nU Vs/ s H"  oÝR                  R                  R
                  PM$     nn[        XU5       VVVVs/ s HI  u  pýu  pxUb  UR                  (       a  SO*UR                  UUX—-
  =nS:  a  UOUX¨-
  =nS:  a  UOUUS9PMK     nnnnnSU;  a  [        SU5      $ U Vs/ s H  oÝR                  PM     nnUS:X  Ga  [        [        [        UU5       VVs/ s H3  u  nnUc  M  UR                  R                  S:w  d  M'  UR                  PM5     snn5      5      n[        [        SUR                  U-
  W-
  5      5      n[        U Vs/ s HC  nUR                  c  M  UR                  R                  (       d  M/  UR                  S:w  d  MA  UPME     snUU[        U5      U5      nUn[        UR                  5      nGO[        [        [        UU5       VVs/ s H3  u  nnUc  M  UR                  R                  S:w  d  M'  UR                  PM5     snn5      5      n[        [        SUR                  U-
  W-
  5      5      n[        U Vs/ s HC  nUR                  c  M  UR                  R                  (       d  M/  UR                  S:w  d  MA  UPME     snUU[        U5      U5      n[        UR                  5      nUn[        UU5       VVs/ s H!  u  nnU=(       d    UR                  X#UUUS9PM#     nnn[        SU5      $ s  snf s  snnnnf s  snf s  snnf s  snf s  snnf s  snf s  snnf )a[  Resolve box models for a list of dimensions

Args:
    dimensions: A list of Scalars or Nones for each dimension.
    widgets: Widgets in resolve.
    size: Size of container.
    viewport_size: Viewport size.
    margin: Total space occupied by margin
    resolve_dimension: Which dimension to resolve.

Returns:
    List of resolved box models.
r   N)Úgreedyúlist[BoxModel]r;   rL   )r   r;   rS   rZ   ÚmarginÚtotalsr'   r    Ú_get_box_modelr	   Úintr#   rP   r%   ra   )r*   Úwidgetsr-   rH   re   rW   rc   Úmargin_widthÚmargin_heightÚfraction_widthÚfraction_heightÚfraction_zeroÚmargin_sizeÚwidgetÚmarginsÚ
_dimensionÚ_widthÚ_heightÚ
box_modelsrV   Ú	box_modelÚtotal_remainingr:   rZ   r6   Úwidth_fractionÚheight_fractions                              r   Úresolve_box_modelsrz   Ú   s¾  € ð. #)Ñ€LÜ˜dŸj™jÓ)€NÜ˜tŸ{™{Ó+€OÜ˜Q“K€MØ‘-€Ká9@ÓAº¨v�}‰}×#Ñ#×*Ô*¹€GÐAô. DGØ ôD
ö))ò(D
Ñ?ˆZÑ!> ,ð# Ñ%¨*×*@×*@ñ à×&Ñ&ØØð #1Ñ"?Ð?˜À1ÓDñ "àð $3Ñ#BÐB˜ÀaÓGñ "à àð 'ð òñ$D
ð) ó )ð2 �:ÓäÐ$ jÓ1Ð1ñ 29Ó9² v—]”]±€MÐ9Ø˜GÔ#ÜÜô .1°¸*Ô-Eôâ-EÑ)˜ 	Ø!ó $à28·-±-×2GÑ2GÈ8Ñ2Só $�I—O”OÙ-Eòóó
ˆô œc ! T§Z¡Z°/Ñ%AÀLÑ%PÓQÓRˆÜ-ñ ,óâ+�FØ—<‘<ó ð —L‘L×,Õ,ó ð —N‘N hÑ.÷	 Ù+ñð ØÜ�_Ó%Øó
ˆð 'ˆÜ" ;×#5Ñ#5Ó6ŠäÜô .1°¸*Ô-Eôâ-EÑ)˜ 	Ø!ó %à28·-±-×2GÑ2GÈ8Ñ2Só %�I×$Ô$Ù-Eòóó
ˆô œc ! T§[¡[°?Ñ%BÀ]Ñ%RÓSÓTˆä-ñ ,óâ+�Fà—M‘Mó ð Ÿ™×1Õ1ó	 ð
 Ÿ™¨(Ñ2÷ Ù+ñð ØÜ�_Ó%Øó
ˆô " +×"3Ñ"3Ó4ˆØ'ˆô "% W¨jÔ!9ôò
 ":ÑˆF�Ið	 	÷ 	
Ø× Ñ Ø °Èð !ð 
ò	
ñ ":ð ñ ô Ð  *Ó-Ð-ùòI Bùõ)ùò< :ùóùòùó"ùòùó"sm   Á)MÁ>AM
Ã)M Ä 
M%Ä.M%Å
M%ÆM+Æ)M+ÇM+ÇM+È$
M0È2M0ÉM0ÊM6Ê-M6Ë
M6ËM6Ì(M;)r*   zSequence[Scalar]r+   rh   r,   rh   r-   r   r.   r   r   Úboolr   r{   r   zlist[int] | NonerO   zlist[tuple[int, int]])r;   )rV   zIterable[RenderStyles]r-   r   rH   r   r:   r   rW   úLiteral['width', 'height']rO   r   )r;   T)r*   zlist[Scalar | None]ri   zlist[Widget]r-   r   rH   r   re   r   rW   r|   rc   r{   rO   rd   )Ú
__future__r   Ú	fractionsr   Ú	itertoolsr   Útypingr   r   r   r	   Útyping_extensionsr
   Útextual.box_modelr   Útextual.css.scalarr   Útextual.css.stylesr   Útextual.geometryr   Útextual.widgetr   r!   ra   rz   r   rK   r   Ú<module>r‡      sF  ðÝ "å Ý  ß :Ó :å %å &Ý %Ý +Ý !æÝ%ð ØØ!%ñdØ ðdàðdð ðdð ð	dð
 ðdð ðdð ðdð ðdð õdðX 5<ð^Ø)ð^à
ð^ð ð^ð ð	^ð
 2ð^ð õ^ðN 5<ØðA.Ø#ðA.àðA.ð ðA.ð ð	A.ð
 ðA.ð 2ðA.ð ðA.ð öA.rK   