
    Cj]5                        S SK Jr  S SK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JrJr  S SKJrJrJr  S SKJr  \(       a  S S	KJr   " S
 S\5      rg)    )annotations)Fraction)TYPE_CHECKINGIterable)resolve)Scalar)NULL_OFFSETRegionSizeSpacing)ArrangeResultLayoutWidgetPlacement)	visualize)Widgetc                  \    \ rS rSrSrSrS	S jr\S
S j5       r S         SS jjr	Sr
g)
GridLayout   z#Used to layout Widgets into a grid.gridc                    S U l          S U l         SU l         SU l         SU l         SU l         SU l         S U l        g )NF)min_column_widthmax_column_widthstretch_heightregularexpandshrinkauto_minimum
_grid_sizeselfs    f/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/textual/layouts/grid.py__init__GridLayout.__init__   sV    ,0H,0H$)B"@!D!C"'H260    c                    U R                   $ )z|The grid size after the last arrange call.

Returns:
    A tuple of (WIDTH, HEIGHT) or `None` prior to the first `arrange`.
)r   r   s    r!   	grid_sizeGridLayout.grid_size'   s     r$   c                v  ^^G UR                  U 5        UR                  nUR                  =(       dZ    TR                  (       a2  UR                  R                  (       d  [
        R                  " S5      /O[
        R                  " S5      /nUR                  =(       d    [
        R                  " S5      /nUR                  nUR                  n	[        SUR                  5      n
U R                  nU R                  nTR                  nUb:  [        S[        [!        U5      X-  5      5      U-  n[#        UTR                  5      mUbr  [        SX-   X-   -  5      n
[        U
[!        U5      5      n
U R$                  (       a9  [!        U5      U
-  (       a&  U
S:  a   U
S-  n
[!        U5      U
-  (       a  U
S:  a  M   UR&                  nUR(                  R*                  mGUR,                  u  nnSnUS:X  a  S nOTS-  mSn[/        U	UU	U5      nSS jn          SS	 jnSS
 jn0 n0 n[1        U" U
5      5      R2                  nSnS=nnU H  nUR                  nUR4                  =(       d    SnUR6                  =(       d    Sn Uu  nnU" UUUU5      n UR9                  5       R;                  U 5      (       a#  U  H  n!UU!U:H  4UU!'   M     UUUS-
  US-
  4UU'   O	U" 5       nMa  U" 5       nM     U" Xz5      nU(       a  UOUS-   nU" Xn5      nX4U l        SUUG4S jjn"SUUG4S jjn#[?        U5       H  u  nn$U$R@                  (       d  M  Sn%[C        [!        U5      5       Hp  nUU4n! UU!   u  n&n'U&R                  R4                  S:w  a  M,  [        U%U"" U&U&RE                  TTG5      U&R                  RF                  R                  -   5      5      n%Mr     [
        RJ                  " U%5      UU'   M     S n(U RL                  (       a  U RN                  (       a  S/U
-  n([C        U
5       H  n)[C        [!        U5      5       H  n*URQ                  U)U*45      =n+ c  M  U+S   n&[        [S        U&U&RU                  5       5      RW                  U&R                  5      U&R                  RF                  R                  -   U(U)   5      U(U)'   M     M     [Y        UTR                  U	TTGU RZ                  U RN                  U(S9n,[?        U5       H  u  nn$U$R@                  (       d  M  Sn-[C        [!        U5      5       H  nUU4n! UU!   u  n&n'U&R                  R6                  S:w  a  M,  U,U   S   n.U&R                  RF                  R\                  u  n/n0U#" U&U&R_                  TTGU.U/-
  5      U0-   5      n1[        U-U15      n-M     [
        RJ                  " U-5      UU'   M     [Y        UTR                  UTTG5      n2/ n3[`        n4U3Rb                  n5[!        U,5      S-
  n6[!        U25      S-
  n7U Rd                  =(       a    [!        U5      S:  n8URg                  5        GH  u  n&u  nnnnU,U   S   n9UU7:  a    U3$ U2U   S   n:U,[        U6UU-   5         u  n;n<U2[        U7UU-   5         u  n=n>[#        U<U;-   U9-
  U>U=-   U:-
  5      n?U&Ri                  U?TG[k        U?R                  5      [k        U?R                  5      SUS9u  n@nAnBU8(       a%  WAU?R                  ::  a  [k        U?R                  5      nA[m        U9U:[o        W@WBR                  -   5      [o        WAUBR                  -   5      5      Rq                  U?5      RO                  UB5      U-   nCU&R                  nDUDRs                  S5      (       a  WDRt                  RY                  U?TG5      O[v        nEWDRs                  S5      =(       a    URx                  S:H  nFU5" U4" WCWEUc  WBOWBR{                  U5      U&WF5      5        GM     U3$ ! [H         a     GM  f = f! [H         a     GM  f = f)N1frauto   )r   r   none)   r-   )r+   r+   c              3  L   #    Sn [        U 5       H  nX!4v   M
     US-  nM  7f)zXIterate over table coordinates ad infinitum.

Args:
    column_count: Number of columns
r   r+   range)column_countrowcolumns      r!   cell_coords'GridLayout.arrange.<locals>.cell_coordsh   s4      C#L1F!-' 2q s   "$c           	     ~    [        X U-   5       VVs1 s H  n[        XU-   5        H  nXE4iM     M     snn$ s  snnf )zGet coords occupied by a cell.

Args:
    column_start: Start column.
    row_start: Start_row.
    columns: Number of columns.
    rows: Number of rows.

Returns:
    Set of coords.
r/   )column_start	row_startcolumnsrowsr3   r2   s         r!   widget_coords)GridLayout.arrange.<locals>.widget_coordst   sL      $L2HIIF ,<=C = I  s   #9c                    [        U 5      SS n[        U5      U:  a"  UR                  U 5        [        U5      U:  a  M"  USU $ )zRepeat an iterable of scalars as many times as required to return
a list of `count` values.

Args:
    scalars: Iterable of values.
    count: Number of values to return.

Returns:
    A list of values.
N)listlenextend)scalarscountlimited_valuess      r!   repeat_scalars*GridLayout.arrange.<locals>.repeat_scalars   sI     "']1-Nn%-%%g. n%-!&5))r$   r   Tc                8  > U R                   nUR                  b9  [        U[        UR                  R	                  TT[        U5      5      5      5      nUR                  b9  [        U[        UR                  R	                  TT[        U5      5      5      5      nU$ )zqApply min and max widths to dimension.

Args:
    widget: A Widget.
    width: A width.

Returns:
    New width.
)styles	min_widthmaxintr   r   	max_widthmin)widgetwidthrG   sizeviewports      r!   apply_width_limits.GridLayout.arrange.<locals>.apply_width_limits   s     ]]F+((00x%QR +((00x%QR Lr$   c                8  > U R                   nUR                  b9  [        U[        UR                  R	                  TT[        U5      5      5      5      nUR                  b9  [        U[        UR                  R	                  TT[        U5      5      5      5      nU$ )zuApply min and max height to a dimension.

Args:
    widget: A widget.
    height: A height.

Returns:
    New height
)rG   
min_heightrI   rJ   r   r   
max_heightrL   )rM   heightrG   rO   rP   s      r!   apply_height_limits/GridLayout.arrange.<locals>.apply_height_limits   s     ]]F  ,))11$(6BRST   ,))11$(6BRST Mr$   g        )r   r   minimums)constrain_widthgreedyoffsetpositionabsolute)r1   rJ   returnzIterable[tuple[int, int]])
r7   rJ   r8   rJ   r9   rJ   r:   rJ   r_   zset[tuple[int, int]])rA   zIterable[Scalar]rB   rJ   r_   zlist[Scalar])rM   r   rN   rJ   r_   rJ   )rM   r   rV   rJ   r_   rJ   )>
pre_layoutrG   	grid_rowsrV   is_auto_heightr   parsegrid_columnsgrid_gutter_horizontalgrid_gutter_verticalrI   grid_size_columnsr   r   rN   rL   r?   r   r   grid_size_rowsappviewport_sizekeyliner   iter__next__column_spanrow_spankeys
isdisjointr   	enumerateis_autor0   get_content_widthgutterKeyErrorfrom_numberr   r   getr   renderget_minimal_widthr   r   totalsget_content_heightr   appendr   items_get_box_modelr   r
   rJ   	crop_sizehas_ruler\   r	   r]   grow_maximum)Hr    parentchildrenrO   r[   rG   row_scalarscolumn_scalarsgutter_horizontalgutter_verticaltable_size_columnsr   r   container_widthtable_size_rowskeyline_style_keyline_colorr\   gutter_spacingr4   r;   rD   cell_mapcell_size_map
next_coord
cell_coordr3   r2   childchild_stylesrn   ro   coordscoordrQ   rW   scalarrN   rM   _column_minimumscolumn_index	row_index	cell_infor9   rV   column_widthgutter_widthgutter_heightwidget_heightr:   
placements_WidgetPlacementadd_placement
max_columnmax_rowr   xyx2
cell_widthy2cell_height	cell_size	box_width
box_heightmarginregionwidget_stylesplacement_offsetr^   rP   sH      `                                                                   @r!   arrangeGridLayout.arrange0   so    	$&& 
FMM$@$@ \\% !,,v&' 	
  ,,Ee1D0E"99 55 F$<$<=0000**'As3x=?+NPQ"#  5D'!$ 4$8:" "%%7X!G||(m&88=ORS=S&!+& (m&88=ORS=S !//::++(.%~F"!NFNDF$!!	N
			*-	8;	CF	!	(	*  @BAC+&89:CC

E <<L&227aK#,,1H (&vsKJ==?--f55!'+0%:2E*F "( #a 1	,M%( !+J#J- 0 (K-</#'$[B-?	 	.	 	0 (7NFF~~~ [!12C#SME$,UO	 "==449$ #!. & & 8 8x H"(--"6"6"<"<!=! 3" *0););E)Bv&) 8, -1 c$66O %&8 9!&s;'7!8I%-\\<2K%LL	!" "+18;%ffmmo>PP & %mm22889 ,L995 "9 !: JJ;;;;$	
 %[1KC~~~#C$78F#SME<$,UO	 "==11Q6$'.vq'96<mm6J6J6Q6Q3m(;""55 $ ( ,| ;
 ,,) "%V]!;) 9, $*#5#5f#=C 3 26 {DKK1BD(S,.
*"))\A%
d)a-,,BX1B<I<O<O<Q8F8VS+x"AW}d c S	!A$SVk5I%JKNB
"3wh#?@OBZ"_q0+2BQ2FGI,2,A,A)))* $ -B -)Iz6 *	0@0@"@%i&6&67
 q#i&,,67Z&--=W9X 9%F #MMM !))(33 $$,,YA   &&z2Tv*7T   $ *1 #00@
O =Rj M $ f $ s$   +`=`)
`&%`&)
`87`8)r   r   r   r   r   r   r   r   N)r_   None)r_   ztuple[int, int] | None)T)
r   r   r   zlist[Widget]rO   r   r[   boolr_   r   )__name__
__module____qualname____firstlineno____doc__namer"   propertyr&   r   __static_attributes__ r$   r!   r   r      sc    -D1$   RVHH(4H<@HJNH	H Hr$   r   N)
__future__r   	fractionsr   typingr   r   textual._resolver   textual.css.scalarr   textual.geometryr	   r
   r   r   textual.layoutr   r   r   textual.visualr   textual.widgetr   r   r   r$   r!   <module>r      s7    "  * $ % ? ? A A $%h hr$   