
    Cj*+                    $   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XR                  X45      4PM,     n	n[        R                  n
U
" [	        U	 VVs/ s H  u  pU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  pU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  pUc  U
" UR
                  5      U-  OUPM!     nnnO![        SU	 VVs/ s H  u  pU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      b/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/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 !! TN..89: !  6 $$J(O(.fh\V\\(OPN S_q01LHUH[QHUVXe.B%Ch%NO	 N; %-
$,  9A8HJv||$}4hV$, 	 

 "8D8KAx8D
 v&O*+,
)J6O" "4&!3 HUJ7/II!3 # & 1+C%3L#q(85>Hh/1CD61E1M5 $'xz'BC#H<#WL$'u|7K$LM0=&u-!+e!3m!CJ#-#;L#q(6 !!34
)K7a "4&!3 HUJ7,FF!3 # &
 c" #
.#
 

H 	
 G !$GCaCL'!$Q$- @ @GW 
'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      $ )zResolve 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     %Ow|vq!llws   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# (
 (~~)VV\\*v//0v//0
 ( 	 
  (
 (~~)VV]]+v001v001
 ( 	 
 (,fs7|&;H!#%Ow%O"OP
q
 "'$_I5>w5G1E1FIyOE}"(..}FV"W(_y-H#y0O&)FLL*AA&&/HO.2+*/J#y0O&)FLL*AA&&/HO.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"  oR                  R                  R
                  PM$     nn[        XU5       VVVVs/ s HI  u  pu  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  oR                  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djj)Nt{{+OQKM-K9@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--2G2G82S $IOO-E
 c!TZZ/%AL%PQR- ,+F<<  LL,,  NNh.	 + _%
 '";#5#56 .1*-E-E)	! %28--2G2G82S %I$$-E
 c!T[[?%B]%RST- ,+FMM  11	 
 (2 + _%
 "+"3"34' "%Wj!9
 ":FI	 	 	
   ! 
	
 ":    *--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   