
    AHj:                        d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d	Zd
ZdZdZdZej,                  j.                   G d d             ZddZy)    )annotations)IterableN)group)Padding)Table)Text)WHITEColor   z#121212z#1e1e1ez#f5f5f5z#efefefc                      e Zd ZdZg dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	dZed
d       ZddZddZ	y)ColorSystemzDefines a standard set of colors and variations for building a UI.

    Primary is the main theme color
    Secondary is a second theme color
    )primary	secondary
backgroundprimary-backgroundsecondary-backgroundsurfacepanelboostwarningerrorsuccessaccentNc                   dd}t        j                  |      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _	         ||	      | _
         ||
      | _         ||      | _        || _        || _        || _        |xs i | _        y )Nc                2    | y t        j                  |       S )N)r
   parse)colors    F/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/design.pyr   z#ColorSystem.__init__.<locals>.parseA   s    };;u%%    )r   
str | NonereturnzColor | None)r
   r   r   r   r   r   r   r   
foregroundr   r   r   r   darkluminosity_spread
text_alpha	variables)selfr   r   r   r   r   r   r"   r   r   r   r   r#   r$   r%   r&   r   s                    r   __init__zColorSystem.__init__/   s    $	&
 {{7+y)W~5\
W~Fm
+
+W~5\
5\
	!2$"b/r   c              #     K   | j                   D ]J  }t        t         t        dz         D ]-  }|dk  r| dt        |        |dkD  r
| d|  *| / L yw)z+The names of the colors and derived shades.   r   z-darken-z	-lighten-N)COLOR_NAMESrangeNUMBER_OF_SHADESabs)r'   r   shade_numbers      r   shadeszColorSystem.shadesW   sz      %% 	 E %'7&79IA9M N  !#"G8C,=+>??!A%"G9\N;;K 	 s   AAc                :    | j                   j                  ||      S )zCGet the value of a color variable, or the default value if not set.)r&   get)r'   namedefaults      r   get_or_defaultzColorSystem.get_or_defaultc   s    ~~!!$00r   c                   | j                   }| j                  xs |}| j                  xs |}| j                  xs |}| j                  xs |}| j
                  xs |}| j                  }| j                  }i }	|rO| j                  xs t        j                  t              }
| j                  xs t        j                  t              }nN| j                  xs t        j                  t              }
| j                  xs t        j                  t              }| j                   xs |
j"                  }|
j%                  d      }| j&                  xs |j)                  d      }|j+                  |j)                  d            j,                  |	d<   |j+                  |j)                  d            j,                  |	d<   |j+                  |j)                  d            j,                  |	d<   |j+                  |j)                  d            j,                  |	d<   |j+                  |j)                  d            j,                  |	d<   |j+                  |j)                  d            j,                  |	d	<   | j.                  |j1                  |d
d      }|r||z  }n| j.                  }dtd}d|fd|fd|fd|fd|
fd|fd|fd|fd|fd|fd|fd|fd|fg}ddh}| j2                  }|D ]  \  }}|xr ||v }|} ||      D ]  \  }}| | }|j4                  |j,                  |	|<   (|rj|
j1                  |dd      }|| j6                  vr5|j1                  t8        ||z   d      j:                  }|j,                  |	|<   | j6                  |   |	|<    |||j=                  |      j,                        |	|<     |j4                  % |dd      |	d<    |dd      |	d<    |d d!      |	d <   nd"|	d<   d"|	d<   d"|	d <    |d#|j1                  |
d$      j,                        |	d#<    |d%|j1                  |
d$      j,                        |	d%<    |d&|j1                  |
d$      j,                        |	d&<    |d'|j1                  |
d$      j,                        |	d'<    |d(|j1                  |
d$      j,                        |	d(<    |d)|j1                  |
d$      j,                        |	d)<    |d*|j)                  d+      j,                        |	d*<    |d,|j)                  d-      j,                        |	d,<    |d.|	d         |	d.<    |d/|j,                        |	d/<    |d0d1      |	d0<    |d2|j,                        |	d2<    |d3|j)                  d4      j,                        |	d3<    |d5d6      |	d5<    |d7|j)                  d
      j,                        |	d7<    |d8|j,                        |	d8<    |d9|j?                  d:      j,                        |	d9<    |d;|j=                  | j                  d<z        j,                        |	d;<    |d=t        j                  |	d>         |j)                  d?      z   j,                        |	d=<    |d@t        j                  |	d>         |j)                  dA      z   j,                        |	d@<    |dB|j,                        |	dB<    |dC|	d>         |	dC<    |dD|	dC         |	dD<    |dE|	dC         |	dE<    |dF|	dC         |	dF<    |dGdH      |	dG<    |dI|j,                        |	dI<    |dJ|	d         |	dJ<    |dKdL      |	dK<    |dM|	d         |	dM<    |dNdO      |	dN<    |dP|j,                        |	dP<    |dQ|j,                        |	dQ<    |dR|j,                        |	dR<    |dSdT      |	dS<    |dU|j,                        |	dU<    |dVdT      |	dV<    |dWdT      |	dW<    |dX|j,                        |	dX<    |dY|
j,                        |	dY<    |dZd6      |	dZ<    |d[t        j                  |	d\         j)                  d?      j,                        |	d[<    |d]|j,                        |	d]<    |d^dT      |	d^<    |d_d1      |	d_<    |d`|j,                        |	d`<    |dadT      |	da<    |dbdL      |	db<    |dc|j,                        |	dc<    |dddT      |	dd<    |ded1      |	de<    |df|j,                        |	df<    |dgdT      |	dg<    |dhdi      |	dh<    |dj|j,                        |	dj<    |dkdT      |	dk<    |dld1      |	dl<    |dm|	d*         |	dm<    |dndT      |	dn<    |dod1      |	do<    |dp|j,                        |	dp<    |dq|	d         |	dq<    |drds      |	dr<   |	S )uzGenerate a mapping of color name on to a CSS color.

        Returns:
            A mapping of color name on to a CSS-style encoded color
              ?g{Gz?gQ?ztext-primaryztext-secondaryztext-warningz
text-errorztext-successztext-accentg?r*   )alphac              3     K   | dz  }t        t         t        dz         D ]:  }|dk  rd}n
|dkD  rd}nd}| |rdt        t        |            z   nd ||z  f < yw)	zGet the range of shades from darken2 to lighten2.

            Returns:
                Iterable of tuples (<SHADE SUFFIX, LUMINOSITY DELTA>)
               r*   r   z-darkenz-lighten -N)r,   r-   strr.   )spreadluminosity_stepnlabels       r   luminosity_rangez.ColorSystem.generate.<locals>.luminosity_range   s~      %qjO,,/?.?!.CD Xq5%EU&EEas3q6{!2R @AADWWWXs   AAr   r   r   r   r   r"   r   r   r   r   r   r   r   333333?textzauto 87%z
text-mutedzauto 60%ztext-disabledzauto 38%ansi_defaultzprimary-mutedgffffff?zsecondary-mutedzaccent-mutedzwarning-mutedzerror-mutedzsuccess-mutedzforeground-mutedg333333?zforeground-disabledgRQ?zblock-cursor-foregroundzblock-cursor-backgroundzblock-cursor-text-styleboldzblock-cursor-blurred-foregroundzblock-cursor-blurred-backgroundg333333?zblock-cursor-blurred-text-stylenonezblock-hover-backgroundborderzborder-blurredg?zsurface-activeg      @	scrollbarzbackground-darken-1g?zscrollbar-hoverg      ?zscrollbar-activezscrollbar-backgroundzscrollbar-corner-colorzscrollbar-background-hoverzscrollbar-background-activezlink-backgroundinitialzlink-background-hoverz
link-colorz
link-style	underlinezlink-color-hoverzlink-style-hoverzbold not underlinezfooter-foregroundzfooter-backgroundzfooter-key-foregroundzfooter-key-backgroundtransparentzfooter-description-foregroundzfooter-description-backgroundzfooter-item-backgroundzinput-cursor-backgroundzinput-cursor-foregroundzinput-cursor-text-stylezinput-selection-backgroundzprimary-lighten-1zmarkdown-h1-colorzmarkdown-h1-backgroundzmarkdown-h1-text-stylezmarkdown-h2-colorzmarkdown-h2-backgroundzmarkdown-h2-text-stylezmarkdown-h3-colorzmarkdown-h3-backgroundzmarkdown-h3-text-stylezmarkdown-h4-colorzmarkdown-h4-backgroundzmarkdown-h4-text-stylezbold underlinezmarkdown-h5-colorzmarkdown-h5-backgroundzmarkdown-h5-text-stylezmarkdown-h6-colorzmarkdown-h6-backgroundzmarkdown-h6-text-stylezbutton-foregroundzbutton-color-foregroundzbutton-focus-text-stylez	b reverse)r>   floatr!   zIterable[tuple[str, float]]) r   r   r   r   r   r   r#   r$   r   r
   r   DEFAULT_DARK_BACKGROUNDr   DEFAULT_DARK_SURFACEDEFAULT_LIGHT_BACKGROUNDDEFAULT_LIGHT_SURFACEr"   inverseget_contrast_textr   
with_alphatinthexr   blendr5   ansir&   r	   clampedlightendarken)r'   r   r   r   r   r   r   r#   r$   colorsr   r   r"   contrast_textr   r   rB   COLORSDARK_SHADESr2   r3   r   is_dark_shader>   
shade_nameluminosity_deltakeydark_backgroundshade_colors                                r   generatezColorSystem.generateg   s
    ,,NN-g	,,)'

'i,,+)'yy 22!#PEKK8O,PJllGekk2F&GGQEKK8P,QJllHekk2G&HG__<););
"44S9

<m66t< "/!3!3G4F4Ft4L!M!Q!Q~#0#5#5i6J6J46P#Q#U#U !.!3!3G4F4Ft4L!M!Q!Q~,11%2B2B42HIMM|!.!3!3G4F4Ft4L!M!Q!Q~ - 2 263D3DT3J K O O}::MM'3aM8EJJE	X$  )$!7+#Y/:&:&ee  e v+
" ,-CD!!! 	PKD% 8T[%8M&F0@0H P,
,zl+::)"'))F3K"&0&6&6ud#&6&NO$..0&5&;&;!6,<#<C '< '!' $ '2oos&*nnS&9s"%c5==9I+J+N+N"OF3KP	P& ??" 4F6N#&|Z#@F< &)/:&FF?#+F6N#1F< &4F?# #&W]]:s;??#
 %(yz3?CC%
 ! "%^V\\*c5R5V5V!W~"%W]]:s;??#
 !$M5;;z33O3S3S T}"%W]]:s;??#

 &)
 5 5c : > >&
!" ),!:#8#8#>#B#B)
$%
 -0%vf~-
() -00I7;;,W(),/0I6,R()47-z~~5
01 58-w/A/A#/F/J/J5
01 58-v5
01 ,/$e&6&6s&;&?&?,
'(
 x5x#&'79N9R9R#S  $'good.D.Ds.JKOO$
 
 "[[ 567':L:LS:QQVV
{ %([[ 567':L:LS:QQVV%
 !
 &));W[[%I!"),"F+@$A*
%& ,/$f-C&D,
'( 03(&1G*H0
+, 14)62H+I1
,-
 %((99$E !*-.Ew{{*S&'"<@|"<=|%();VF^%L!"%();=Q%R!"&)*=z~~&N"#&)*=uyy&I"#*-.Evzz*R&'*-.E}*U&'25+Z^^3
./ 36+]3
./ ,//G+W'(,/%z~~-
() -0%z~~-
() -00I6,R()/2(KK234??DHH0
+, '**=w{{&K"#+./G+W'(+./G+P'(&)*=w{{&K"#+./G+W'(+./G+U'(&)*=w{{&K"#+./G+W'(+./G+P'(&)*=z~~&N"#+./G+W'(+.$&6,
'( '**=z~~&N"#+./G+W'(+./G+P'(&)(:!;'
"# ,//G+W'(+./G+P'(&)*=z~~&N"#,/%vf~-
() -00I;,W()r   )NNNNNNNNNNFrC   gffffff?N)r   r=   r   r    r   r    r   r    r   r    r   r    r"   r    r   r    r   r    r   r    r   r    r#   boolr$   rM   r%   rM   r&   zdict[str, str] | None)r!   zIterable[str])r3   r=   r4   r=   r!   r=   )r!   zdict[str, str])
__name__
__module____qualname____doc__r+   r(   propertyr0   r5   rf    r   r   r   r      s    K$ !%" "!!%!%"  #' +/!&0&0 &0 	&0
 &0 &0 &0 &0 &0 &0 &0 &0 &0 !&0 &0  )!&0P 	  	 1Ar   r   c                    t               d	d       }t        dd      }|j                  dd       |j                  dd       |j                   ||        ||             |S )
zGenerate a renderable to show color systems.

    Args:
        light: Light ColorSystem.
        dark: Dark ColorSystem

    Returns:
        Table showing all colors.
    c              3  2  K   | j                         }| j                  D ]t  }t        j                  ||         j	                  d      }||j                  d      z   }t        d|       }t        |d|j                   d|j                          v y w)Nr7   g?$r*   z on )style)	rf   r0   r
   r   rT   rS   r   r   hex6)systemr\   r3   r   r"   rD   s         r   make_shadesz show_design.<locals>.make_shadesv  s     "MM 	TDVD\2==cBJ#j&B&B3&GGJ!D6
#D$JOO+<D@Q)RSS	Ts   BBNT)boxexpandLightcenter)justifyDark)rs   r   )r   r   
add_columnadd_row)lightr#   rt   tables       r   show_designr   k  sk     WT T d4(E	Wh/	VX.	MM+e$k$&78Lr   )r}   r   r#   r   r!   r   )
__future__r   typingr   	rich.reprrichrich.consoler   rich.paddingr   
rich.tabler   	rich.textr   textual.colorr	   r
   r-   rN   rO   rQ   rP   reprautor   r   rm   r   r   <module>r      sg    "        &  $   ! $  O O Od
r   