
    Cj                    6   S SK Jr  S SK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JrJrJr  S SK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  S SK J!r!  S SK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJ  S SKKJLrLJMrMJNrN  S SKOJPrP  S SKQJRrR  S SKSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrc  S SKdJereJfrf  \(       a  S SKSJgrg  S SKhJiri  S SKjJkrk   " S S\SS9rl\m" \lR                  R                  5       5      rp\q" \p5      rr\	" \p6 rs " S S5      rt\R                  R                  \ " S S\t5      5       5       rw\R                  R                   " S S\t5      5       rxg)     )annotationsN)	dataclassfield)partial)
attrgetter)TYPE_CHECKINGAnyCallableIterableIteratorLiteralcast)Style)	TypedDict)DEFAULT_EASING
AnimatableBoundAnimatorEasingFunction)AnimationLevelCallbackType)Color)AlignPropertyBooleanPropertyBorderPropertyBoxPropertyColorPropertyDockPropertyFractionalPropertyHatchPropertyIntegerPropertyKeylinePropertyLayoutPropertyNameListPropertyNamePropertyOffsetPropertyOverflowPropertyScalarListPropertyScalarPropertyScrollbarColorPropertySpacingPropertySplitPropertyStringEnumPropertyStyleFlagsPropertyTransitionsProperty)VALID_ALIGN_HORIZONTALVALID_ALIGN_VERTICALVALID_BOX_SIZINGVALID_CONSTRAINVALID_DISPLAYVALID_EXPANDVALID_OVERFLOWVALID_OVERLAYVALID_POINTERVALID_POSITIONVALID_SCROLLBAR_GUTTERVALID_SCROLLBAR_VISIBILITYVALID_TEXT_ALIGNVALID_TEXT_OVERFLOWVALID_TEXT_WRAPVALID_VISIBILITY)ScalarScalarOffsetUnit)ScalarAnimation)
Transition)AlignHorizontalAlignVertical	BoxSizing	ConstrainDisplayExpandOverflowOverlayPointerShapeScrollbarGutterSpecificity3Specificity6	TextAlignTextOverflowTextWrap
Visibility)OffsetSpacing)CSSLocation)DOMNode)Layoutc                     \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S \S!'   S \S"'   S\S#'   S\S$'   S\S%'   S\S&'   S\S''   S(\S)'   S*\S+'   S*\S,'   S*\S-'   S*\S.'   S*\S/'   S*\S0'   S\S1'   S\S2'   S3\S4'   S3\S5'   S6\S7'   S\S8'   S9\S:'   S\S;'   S\S<'   S\S='   S\S>'   S\S?'   S\S@'   S\SA'   S\SB'   SC\SD'   SE\SF'   SE\SG'   SH\SI'   S \SJ'   SK\SL'   S \SM'   SK\SN'   SE\SO'   SE\SP'   SE\SQ'   SE\SR'   SS\ST'   SS\SU'   SE\SV'   SE\SW'   SX\SY'   S\SZ'   S	\S['   S\S\'   S\S]'   S\S^'   S	\S_'   S\S`'   S\Sa'   S	\Sb'   S\Sc'   S\Sd'   S\Se'   S	\Sf'   S\Sg'   S\Sh'   S\Si'   Sj\Sk'   Sl\Sm'   Sn\So'   Sn\Sp'   Sq\Sr'   Ss\St'   Su\Sv'   SE\Sw'   Sx\Sy'   Szrg{)|RulesMapX   zA typed dict for CSS rules.

Any key may be absent, indicating that rule has not been set.

Does not define composite rules, that is a rule that is made of a combination of other rules.
rH   displayrS   
visibilityz'Layout'layoutbool
auto_colorr   color
backgroundr   
text_stylebackground_tintfloatopacitytext_opacityrU   paddingmarginr@   offsetstrpositionztuple[str, Color]
border_topborder_rightborder_bottomborder_leftrD   border_title_alignborder_subtitle_alignoutline_topoutline_rightoutline_bottomoutline_leftkeylinerF   
box_sizingr?   widthheight	min_width
min_height	max_width
max_heightdocksplitrJ   
overflow_x
overflow_yztuple[str, ...]layerslayerzdict[str, Transition]transitionstintscrollbar_colorscrollbar_color_hoverscrollbar_color_activescrollbar_corner_colorscrollbar_backgroundscrollbar_background_hoverscrollbar_background_activerM   scrollbar_gutterintscrollbar_size_verticalscrollbar_size_horizontalScrollbarVisibilityscrollbar_visibilityalign_horizontalrE   align_verticalcontent_align_horizontalcontent_align_verticalgrid_size_rowsgrid_size_columnsgrid_gutter_horizontalgrid_gutter_verticalztuple[Scalar, ...]	grid_rowsgrid_columnsrow_spancolumn_spanrP   
text_align
link_colorauto_link_colorlink_background
link_stylelink_color_hoverauto_link_color_hoverlink_background_hoverlink_style_hoverauto_border_title_colorborder_title_colorborder_title_backgroundborder_title_styleauto_border_subtitle_colorborder_subtitle_colorborder_subtitle_backgroundborder_subtitle_stylez#tuple[str, Color] | Literal['none']hatchrK   overlayrG   constrain_xconstrain_yrR   	text_wraprQ   text_overflowrI   expandline_padrL   pointer N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       d/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/textual/css/styles.pyrZ   rZ   X   s    LNOM!!##$$""''**""$$%%##MN
IJJ&&
K  !!!! %%!&&%%  ""--%%!!--))!!$$M  !!"" $$   %%  ..NMr   rZ   F)totalc                  X   \ rS rSr% Sr1 Skr\" \SSSS9r \" \	SSS9r
 \" 5       r \" S	S
9r \" \" SSS5      5      r \" \" SSSS5      5      r \" \" SSSS5      5      r \" 5       r \" SS9r \" 5       r \" 5       r \" 5       r \" 5       r \" \S5      r \ " SS9r! \"" \" SSS5      5      r# \"" \" SSS5      5      r$ \"" \" SSS5      5      r% \"" \" SSS5      5      r& \" \'S5      r( \" \'S5      r) \ " S	S9r* \"" \" SSS5      5      r+ \"" \" SSS5      5      r, \"" \" SSS5      5      r- \"" \" SSS5      5      r. \/" 5       r0 \" \1SSS9r2 \3" \4Rj                  S9r6 \3" \4Rn                  S9r8 \3" \4Rj                  S	S9r9 \3" \4Rn                  S	S9r: \3" \4Rj                  S	S9r; \3" \4Rn                  S	S9r< \=" 5       r> \?" 5       r@\A" \BS5      rC \A" \BS5      rD \E" 5       rF\G" 5       rH\I" 5       rJ\" S5      rK \L" S5      rM \L" S5      rN \L" S5      rO \L" S5      rP \L" S5      rQ \L" S5      rR \L" S5      rS \" \TSSSS9rU \V" SSS 9rW \V" S!SS 9rX \" \YSSS9rZ \" \'SSSS9r[\" \\S"SSS9r]\^" 5       r_\" \'S5      r`\" \\S"5      ra\^" 5       rb\c" \4Rn                  SS#9rd\c" \4Rj                  SS#9re\V" S!SSS$9rf\V" SSSS$9rg\V" SSSS$9rh\V" SSSS$9ri\V" S!SS 9rj\V" S!SS 9rk\" \lS%5      rmS&\nS''   \" S5      ro\" S	5      rp\" S5      rq\" 5       rr\" S5      rs\" S	5      rt\" S5      ru\" 5       rv\" S	S
9rw\" \" SSSS5      5      rx\" \" SSSS5      5      ry\" 5       rz\" S	S
9r{\" \" SSSS5      5      r|\" \" SSSS5      5      r}\" 5       r~\" 5       r \" \S(SSS)9r\" \S(5      rS*\nS+'   \" \S(5      rS*\nS,'   \" \S-5      rS.\nS/'   \" \S05      rS1\nS2'   \" \S35      rS4\nS5'   \V" SSS 9r \" \S6SS79rS8\nS9'    \ScS: j5       r  Sd                   SeS< jjrSfS= jrSgS> jrShSiS? jjrSjS@ jrSkSA jrSlSB jrSmSC jrSnSD jrSoSE jr\SpSF j5       r\SqSG j5       r\\4GR:                  \4GR<                  14SqSH jj5       r\\4GR:                  \4GR<                  14SqSI jj5       r\\4GRB                  4SqSJ jj5       r\\4GRB                  4SqSK jj5       r\\4GRB                  \4GR:                  \4GR<                  14 SqSL jj5       r\SqSM j5       r\SqSN j5       rSrSO jrSrSP jrSsSQ jrStSR jrShSuSS jjrS	S	S	SST.         SvSU jjrSwSV jrSxSW jrSySX jrSsSY jr\SzSZ j5       r\S;S[.       S{S\ jj5       rS|S] jrS}S^ jrS~S_ jrSS` jr\SSa j5       rSbrg;)
StylesBase   z/A common base class for Styles and RenderStyles>   r   ra   ry   rz   ri   rj   rf   rh   r   rl   r}   r{   r   r`   rb   r   r~   r|   rg   r   rd   r   r   r   r   r   r   r   r   r   r   blockT)r^   r\   visibler^   F)default   r   )childrenrelativeleftrightz
border-box)percent_unit)r   
allow_autohiddentransparentansi_bright_magentaansi_yellowansi_bright_yellowz#666666z#555555z#444444blackauto)r^   refresh_children   )r   r^      top)r   r   )r   r^   r   startzStringEnumProperty[TextAlign]r   none)r^   refresh_parentzStringEnumProperty[Constrain]r   r   wrapzStringEnumProperty[TextWrap]r   foldz StringEnumProperty[TextOverflow]r   greedyzStringEnumProperty[Expand]r   r   )r   z StringEnumProperty[PointerShape]r   c                    g)GThe DOM node the styles will be applied to, or `None` if it is not set.Nr   selfs    r   nodeStylesBase.node	  s     r   Nc
                   U R                   c  g [        U[        [        45      (       a  [        U[        [
        45      (       a)  [        U[        R                  [        R                  5      n[        U[        [        45      (       d  g SSKJ	n
  [        U R                   U
5      (       d   e[        U R                   U UUUUUUUb-  [        U R                   R                  R                  U5      U	S9
$ S U	S9
$ g )Nr   )Widget)durationspeedeasingon_completelevel)r   
isinstancer?   r@   r   re   rA   CELLStextual.widgetr   rB   r   app
call_later)r   	attributestart_valuevalue
start_timer   r   r   r   r   r   s              r   __textual_animation__ StylesBase.__textual_animation__  s     99 kFL#9::%#u..udjj$**= efl%;<<-dii0000"		! #. DIIMM44kB      r   c                z    [        U[        5      (       d  [        $ U R                  5       UR                  5       :H  $ )z*Check that Styles contains the same rules.)r   r   NotImplemented	get_rules)r   styless     r   __eq__StylesBase.__eq__<  s0    &*--!!~~6#3#3#555r   c                B    U[         ;  a  [        U5      e[        X5      $ N)RULE_NAMES_SETKeyErrorgetattrr   keys     r   __getitem__StylesBase.__getitem__B  s    n$3-t!!r   c                0    U[         ;   a  [        X5      $ U$ r  )r  r  )r   r  r   s      r   getStylesBase.getG  s    %(N%:wt!GGr   c                     [        [        5      $ r  )len
RULE_NAMESr   s    r   __len__StylesBase.__len__J  s    :r   c                     [        [        5      $ r  )iterr  r   s    r   __iter__StylesBase.__iter__M  s    Jr   c                    U[         ;   $ r  )r  r  s     r   __contains__StylesBase.__contains__P  s    n$$r   c                    [         $ r  )r  r   s    r   keysStylesBase.keysS  s    r   c              #  @   #    [          H  n[        X5      v   M     g 7fr  r  r  r  s     r   valuesStylesBase.valuesV  s     C$$$ s   c              #  D   #    [          H  nU[        X5      4v   M     g 7fr  r  r  s     r   itemsStylesBase.itemsZ  s     C*++ s    c                H    U R                   U R                  R                  -   $ )zDGet space around widget.

Returns:
    Space around widget content.
)rh   borderspacingr   s    r   gutterStylesBase.gutter^  s     ||dkk1111r   c                    U R                   nU" S5      =(       a    U R                  R                  =(       d%    U" S5      =(       a    U R                  R                  $ )z+Check if width or height are set to 'auto'.ry   rz   )has_rulery   is_autorz   )r   r*  s     r   auto_dimensionsStylesBase.auto_dimensionsg  sE     ==!8djj&8&8 
X64;;#6#6	
r   c                N    U R                   nUSL=(       a    UR                  U;   $ z$Does the node have a relative width?Nry   unit)r   _relative_unitsry   s      r   is_relative_widthStylesBase.is_relative_widtho  s&     

D BUZZ?%BBr   c                N    U R                   nUSL=(       a    UR                  U;   $ r/  rz   r1  )r   r2  rz   s      r   is_relative_heightStylesBase.is_relative_heightu  s&     T!Dfkk_&DDr   c                N    U R                   nUSL=(       a    UR                  U:H  $ )z#Does the node have automatic width?Nr0  )r   _autory   s      r   is_auto_widthStylesBase.is_auto_width{  s&     

D 8UZZ5%88r   c                N    U R                   nUSL=(       a    UR                  U:H  $ )z$Does the node have automatic height?Nr6  )r   r:  rz   s      r   is_auto_heightStylesBase.is_auto_height  s&     T!:fkkU&::r   c                N    U R                   nUSL=(       a    UR                  U;   $ )z0Does the node have a dynamic (not fixed) height?Nr6  )r   _dynamic_unitsrz   s      r   is_dynamic_heightStylesBase.is_dynamic_height  s&    
 T!Cfkk^&CCr   c                     U R                   S:g  $ )zIs the node docked?r   )r   r   s    r   	is_dockedStylesBase.is_docked  s     yyF""r   c                     U R                   S:g  $ )zIs the node split?r   )r   r   s    r   is_splitStylesBase.is_split  s     zzV##r   c                    [        5       e)zCheck if a rule is set on this Styles object.

Args:
    rule_name: Rule name.

Returns:
    ``True`` if the rules is present, otherwise ``False``.
NotImplementedErrorr   	rule_names     r   r*  StylesBase.has_rule       "##r   c                    [        5       e)zRemoves the rule from the Styles object, as if it had never been set.

Args:
    rule_name: Rule name.

Returns:
    ``True`` if a rule was cleared, or ``False`` if the rule is already not set.
rK  rM  s     r   
clear_ruleStylesBase.clear_rule  rP  r   c                    [        5       e)zDGet the rules in a mapping.

Returns:
    A TypedDict of the rules.
rK  r   s    r   r   StylesBase.get_rules  s     "##r   c                    [        5       e)zSet a rule.

Args:
    rule_name: Rule name.
    value: New rule value.

Returns:
    ``True`` if the rule changed, otherwise ``False``.
rK  r   rN  r   s      r   set_ruleStylesBase.set_rule       "##r   c                    [        5       e)zGet an individual rule.

Args:
    rule_name: Name of rule.
    default: Default if rule does not exists.

Returns:
    Rule value or default.
rK  r   rN  r   s      r   get_ruleStylesBase.get_rule  rZ  r   r^   r   parentrepaintc                   g)zMark the styles as requiring a refresh.

Args:
    layout: Also require a layout.
    children: Also refresh children.
    parent: Also refresh the parent.
    repaint: Repaint the widgets.
Nr   r   r^   r   r`  ra  s        r   refreshStylesBase.refresh      r   c                    g)!Reset the rules to initial state.Nr   r   s    r   resetStylesBase.reset  rf  r   c                    gEMerge values from another Styles.

Args:
    other: A Styles object.
Nr   r   others     r   mergeStylesBase.merge  rf  r   c                    g)z?Merge rules into Styles.

Args:
    rules: A mapping of rules.
Nr   r   ruless     r   merge_rulesStylesBase.merge_rules  rf  r   c                f    [        [        [        [        U 5      5      5      n[	        [
        U5      $ )zGet rules map with defaults.)dictzipr  _rule_getterr   rZ   rs  s     r   get_render_rulesStylesBase.get_render_rules  s'     S\$%789He$$r   c                    XR                   ;   $ )zCheck if a given rule may be animated.

Args:
    rule: Name of the rule.

Returns:
    ``True`` if the rule may be animated, otherwise ``False``.
)
ANIMATABLE)clsrules     r   is_animatableStylesBase.is_animatable  s     ~~%%r   )r   c               .    SSK Jn  U" X5      nX5l        U$ )zParse CSS and return a Styles object.

Args:
    css: Textual CSS.
    read_from: Location where the CSS was read from.
    node: Node to associate with the Styles.

Returns:
    A Styles instance containing result of parsing CSS.
r   )parse_declarations)textual.css.parser  r   )r  css	read_fromr   r  r   s         r   parseStylesBase.parse  s     	9#C3r   c                Z    XR                   ;   a  U R                  R                  US5      $ g)zsGet a transition.

Args:
    key: Transition key.

Returns:
    Transition object or None it no transition exists.
N)r~  r   r  r  s     r   _get_transitionStylesBase._get_transition  s*     //!##''T22r   c                T    SnU R                   nUS:w  a  US:X  a	  X!-
  S-  nU$ X!-
  nU$ )zAlign the width dimension.

Args:
    width: Width of the content.
    parent_width: Width of the parent container.

Returns:
    An offset to add to the X coordinate.
r   r   centerr   )r   )r   ry   parent_widthoffset_xr   s        r   _align_widthStylesBase._align_width%  sH     00v%8+(0Q6  (/r   c                T    SnU R                   nUS:w  a  US:X  a	  X!-
  S-  nU$ X!-
  nU$ )zAlign the height dimensions

Args:
    height: Height of the content.
    parent_height: Height of the parent container.

Returns:
    An offset to add to the Y coordinate.
r   r   middler   )r   )r   rz   parent_heightoffset_yr   s        r   _align_heightStylesBase._align_height9  sG     ,,U"))2q8  )1r   c                f    Uu  p4Uu  pV[        U R                  X55      U R                  XF5      5      $ )zAlign a size according to alignment rules.

Args:
    child: The size of the child (width, height)
    parent: The size of the parent (width, height)

Returns:
    Offset required to align the child.
)rT   r  r  )r   childr`  ry   rz   r  r  s          r   _align_sizeStylesBase._align_sizeL  s<     &,#e2v5
 	
r   c                N   [        U R                  S5      (       a0  U R                  R                  S:  a  U R                  R                  OSU R                  S5      (       a0  U R
                  R                  S:  a  U R
                  R                  OSS9nXR                  -  nU$ )z}Get the style properties associated with this node only (not including parents in the DOM).

Returns:
    Rich Style object.
ra   r   Nrb   )ra   bgcolor)r   r*  ra   a
rich_colorrb   rc   )r   styles     r   partial_rich_styleStylesBase.partial_rich_style]  s      ==))djjllQ.> 

%% ==..4??3D3Dq3H **
 	 r   r   returnDOMNode | None)Nfull)r   rk   r   objectr   r  r   re   r   float | Noner   r  r   r   r   CallbackType | Noner   r   r  zScalarAnimation | None)r   r  r  r_   )r  rk   r  r  r  )r  rk   r   object | Noner  r  r  r   )r  zIterator[str])r  r  r  r_   )r  zIterable[str])r  zIterable[object])r  zIterable[tuple[str, object]]r  rU   )r  r_   rN  rk   r  r_   r  rZ   rN  rk   r   r  r  r_   rN  rk   r   r  r  r  
r^   r_   r   r_   r`  r_   ra  r_   r  Noner  r  ro  r   r  r  rt  rZ   r  r  )r  rk   r  r_   )r  rk   r  rV   r   r  r  Styles)r  rk   r  zTransition | None)ry   r   r  r   r  r   )rz   r   r  r   r  r   )r  tuple[int, int]r`  r  r  rT   r  r   )r   r   r   r   r   r~  r,   r3   r\   r>   r]   r"   r^   r   r`   r   r   ra   rb   rd   r-   rc   r   rf   rg   r*   rh   ri   r%   rj   r8   rl   r   r%  r   rm   rn   ro   rp   r/   rq   rr   outliners   rt   ru   rv   r!   rw   r1   rx   r(   rA   WIDTHry   HEIGHTrz   r{   r|   r}   r~   r   r   r+   r   r&   r5   r   r   r$   r   r#   r   r.   r   r   r)   r   r   r   r   r   r   r   r9   r   r    r   r   r:   r   r   r0   r   r   alignr   r   content_alignr'   r   r   r   r   r   r   r   r   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   r   r2   r   r   r=   r   r<   r   r4   r   r   r7   r   propertyr   r   r   r	  r  r  r  r  r  r  r"  r'  r,  FRACTIONPERCENTr3  r7  AUTOr;  r>  rB  rE  rH  r*  rR  r   rX  r]  rd  ri  rp  ru  r{  classmethodr  r  r  r  r  r  r  r   r   r   r   r   r      s   9 JD !dSG
 $$4iMJ F !/J=%S#./E uQ1a01J $E!Q1$56O $%J !$/GP%'L[GMFDFV!.*=Hm4(FIU1c1-.JMuQQ/0LOaa 01MPeAsA./KN+,BFK1./EwO4E*G eAsA./KNaa 01MP q#q!12NQuQQ/0LOG#$4l4PJ;

3E&5F'DJJ5II.T[[UKJ/DJJ5II.T[[UKJ/>DOE!.(;J
 ".(;J
 NEF%'K'D --BCO72=AD34HIS3I>T1)<X!7	!BA"8"AP)td .aEF /$ GI-"Id 0)td (eD4N OE12H&Q/0DeL!OM"dSI%4::PTUL'$QUV$QtdSN,$ +$ q6H!!D9K0B'1J-  }-J%e,O#M2O#%J$]3+E2)-8)+-e<&uS#sA'>?+E!Q1,=>+-!0!?)%S#q*AB!.uQ1a/@!A.0OE !vd4G 2D2K.  2D2K.  /A/I+  7IV7M3  *<L()SF&Sq6H30By$1G-    ,0 &,, , 	,
 , , , , ), , 
 ,\6"
H %%, 2 2 
 
 150M C C
 26--1N E E
 "&)) 9 9
 #'99 ; ;
 "iiED	D D # # $ $	$	$$
$
$   	
   
"0% 	& 	& IM"-8F	 &(&
"  r   r   c                  <   \ rS rSr% SrS\S'   \" \S9rS\S'   Sr	S	\S
'   \" \
S9rS\S'   SS jrS S jrS!S jrS"S jrS#S jrSSSSS.       S$S jjrSS jrS%S jrS&S jr  S'       S(S jjrS)S jr      S*S jr\S+S j5       r\S,S j5       rSrg)-r  it  Nr  r   )default_factoryrZ   _rulesr   r   _updateszset[str]	importantc                p    U R                   R                  U l        U R                   R                  U l        g r  )r  r  r]  r  r*  r   s    r   __post_init__Styles.__post_init__}  s"    9=/3{{/G/Gr   c                \    [        U R                  U R                  5       U R                  S9$ )z!Get a copy of this Styles object.)r   r  r  )r  r   r   r  r   s    r   copyStyles.copy  s'    >>#nn
 	
r   c                z    U R                   R                  US5      SLnU(       a  U =R                  S-  sl        U$ )zRemoves the rule from the Styles object, as if it had never been set.

Args:
    rule_name: Rule name.

Returns:
    ``True`` if a rule was cleared, or ``False`` if it was already not set.
Nr   )r  popr  )r   rN  changeds      r   rR  Styles.clear_rule  s3     ++//)T2$>MMQMr   c                6    U R                   R                  5       $ r  )r  r  r   s    r   r   Styles.get_rules  s    {{!!r   c                   Uc<  U R                   R                  US5      SLnU(       a  U =R                  S-  sl        U$ U R                   R                  U5      nX R                   U'   XB:g  nU(       a  U =R                  S-  sl        U$ )zSet a rule.

Args:
    rule: Rule name.
    value: New rule value.

Returns:
    ``True`` if the rule changed, otherwise ``False``.
Nr   )r  r  r  r  )r   r  r   r  currents        r   rX  Styles.set_rule  st     =kkoodD1=G"N++//$'!D"MMQMr   FTr_  c                  U R                   nUb  UR                  (       d  g U(       a&  UR                  b  UR                  R                  US9  UR                  US9  U(       a'  UR	                  SSS9 H  nUR                  XS9  M     g g )N)ra  r   FT)	with_selfreverse)r^   ra  )r   _is_mounted_parentrd  walk_children)r   r^   r   r`  ra  r   r  s          r   rd  Styles.refresh  s}     yy<t//dll.LL   1F#++eT+JV= K r   c                b    U =R                   S-  sl         U R                  R                  5         grh  r   N)r  r  clearr   s    r   ri  Styles.reset  s     r   c                    U =R                   S-  sl         U R                  R                  UR                  5       5        g)rm  r   N)r  r  updater   rn  s     r   rp  Styles.merge  s+     	5??,-r   c                d    U =R                   S-  sl         U R                  R                  U5        g Nr   )r  r  r  rs  s     r   ru  Styles.merge_rules  s"    5!r   c           	         U R                   R                  nU(       a  SOSnU R                  R                  5        VVs/ s H   u  pgUUU" U5      (       a  SOS/UQUP7U4PM"     nnnU$ s  snnf )a  Extract rules from Styles object, and apply !important css specificity as
well as higher specificity of user CSS vs widget CSS.

Args:
    specificity: A node specificity.
    is_default_rules: True if the rules we're extracting are
        default (i.e. in Widget.DEFAULT_CSS) rules. False if they're from user defined CSS.

Returns:
    A list containing a tuple of <RULE NAME>, <SPECIFICITY> <RULE VALUE>.
r   r   )r  r  r  r"  )	r   specificityis_default_rulestie_breakeris_importantdefault_rulesrN  
rule_valuert  s	            r   extract_rulesStyles.extract_rules  s    " ~~22-1 *.):):)<6
 *=%	 !%i00Aa !  	 	 *= 	 6
 6
s   'A+c              #     #    U R                   n[         H!  nU" U5      (       d  M  U[        X5      4v   M#     U R                  (       a  SU R                  4v   g g 7f)Nr  )r*  r  r  r  )r   r*  names      r   __rich_repr__Styles.__rich_repr__  sN     ==D~~GD///  >>t~~-- s
   !A6Ac              #    #    UR                   nUR                  nU" U S35      nU" U S35      nU" U S35      nU" U S35      n[        XVXx45      (       d  g[        XVXx45      (       aY  U" U S35      n	U" U S35      n
U" U S35      nU" U S35      nX:X  a(  X:X  a#  X:X  a  X S3   u  pX- SUR                   34v   gU(       a!  X S3   u  pU S3U SUR                   34v   U(       a!  X S3   u  pU S3U SUR                   34v   U(       a!  X S3   u  pU S	3U SUR                   34v   U(       a"  X S3   u  pU S
3U SUR                   34v   gg7f)zGet pairs of strings containing <RULE NAME>, <RULE VALUE> for border css declarations.

Args:
    rules: A rules map.
    name: Name of rules (border or outline)

Returns:
    An iterable of CSS declarations.
_top_right_bottom_leftN z-topz-rightz-bottomz-left)r  r	  anyallhex)r   rt  r  r*  r]  has_top	has_right
has_bottomhas_leftr   r   bottomr   border_typeborder_colors                  r   _get_border_css_linesStyles._get_border_css_lines  s     %%$$dV4=)vV_-	g./
tfEN+G
=>>J9:: dV4=)CvV_-Eg./FtfEN+D|FN,1F$-,@)m1\-=-=,>??? (-dm(<%KF$-K=,2B2B1C!DDD(-fo(>%KF&/k]!L4D4D3E#FFF(-g.>(?%KF'"{m1\5E5E4F$GGG(-en(=%KF%.[M<3C3C2D"EEE s   E%E'c                  ^ ^ / nUR                   mSUU 4S jjnT R                  5       nUR                  nSU;   a  U" SUS   5        SU;   a  U" SUS   5        SU;   a  U" SUS   R                  5        SU;   a  U" SUS   R                  5        T R	                  US5       H  u  pVU" XV5        M     T R	                  US5       H  u  pVU" XV5        M     SU;   a  T R
                  u  pxU" SU S	U 35        S
U;   a  U" S
T R                  5        SU;   a  U" SUS   5        SU;   a  U" SUS   5        SU;   a"  U" SS	R                  T R                  5      5        SU;   a  U" ST R                  5        SU;   a,  T R                  c   eU" ST R                  R                  5        SU;   a  U" ST R                  R                  5        SU;   a  U" ST R                  R                  5        SU;   a  U" ST R                  R                  5        SU;   a  U" S[!        U" S5      5      5        SU;   a  U" ST R"                  R                  5        SU;   a  U" ST R$                  5        SU;   a  U" ST R&                  5        SU;   a  U" ST R(                  R                  5        SU;   a  U" ST R*                  R                  5        SU;   a  U" S T R,                  R                  5        S!U;   a  U" S"T R.                  R                  5        S#U;   a  U" S$T R0                  R                  5        S%U;   a  U" S&T R2                  R                  5        S'U;   a  U" S(T R4                  R                  5        S)U;   a  U" S*T R6                  5        S+U;   a#  U" S,T R8                   S	T R:                   35        ODS-U;   a  U" S.[!        T R8                  5      5        S/U;   a  U" S0[!        T R:                  5      5        S1U;   a  U" S2T R<                  5        S3U;   a  U" S4T R>                  5        S5U;   a  U" S5[!        T R@                  5      5        S6U;   a  U" S6[!        T RB                  5      5        S7U;   a  U" S8[!        T RD                  5      5        S9U;   a  U" S:[!        T RF                  5      5        S;U;   a  U" S<[!        T RH                  5      5        S=U;   a  U" S>[!        T RJ                  5      5        S?U;   a7  U" S@SAR                  SB T RL                  RO                  5        5       5      5        SCU;   a)  SDU;   a#  U" SET RP                   S	T RR                   35        O3SCU;   a  U" SFT RP                  5        OSDU;   a  U" SGT RR                  5        SHU;   a)  SIU;   a#  U" SJT RT                   S	T RV                   35        O3SHU;   a  U" SKT RT                  5        OSIU;   a  U" SLT RV                  5        SMU;   a  U" SNT RX                  5        SOU;   a  U" SPT RZ                  5        SQU;   a  U" SRT R\                  5        SSU;   a  U" SS[!        T R^                  5      5        STU;   a  U" SU[!        T R`                  5      5        SVU;   a2  U" SWS	R                  SX T Rb                  =(       d    SY 5       5      5        SZU;   a2  U" S[S	R                  S\ T Rd                  =(       d    SY 5       5      5        S]U;   a  U" S^[!        T Rf                  5      5        S_U;   a  U" S`[!        T Rh                  5      5        SaU;   a  U" Sb[!        T Rj                  5      5        ScU;   a  U" Sd[!        T Rl                  5      5        SeU;   a  U" Sf[!        T Rn                  5      5        SgU;   a  U" Sh[!        T Rp                  5      5        SiU;   a  U" SjT Rr                  R                  5        SkU;   a  U" SlT Rt                  R                  5        SmU;   a  U" Sn[!        T Rv                  5      5        SoU;   a  U" SpT Rx                  R                  5        SqU;   a  U" SrT Rz                  R                  5        SsU;   a  U" St[!        T R|                  5      5        SuU;   a  U" SvT R~                  R                  5        SwU;   a  U" SxT R                  R                  5        SyU;   a  U" Sz[!        T R                  5      5        S{U;   a  U" S|T R                  R                  5        S}U;   a  U" S~T R                  R                  5        SU;   a  U" S[!        T R                  5      5        SU;   a  U" S[!        T R                  5      5        SU;   aW  SU;   aQ  T R                  T R                  :X  a  U" ST R                  5        OVU" ST R                   S	T R                   35        O3SU;   a  U" ST R                  5        OSU;   a  U" ST R                  5        SU;   a,  T R                  u  pU	S:w  a  U" SU	 SAU
R                   35        SU;   a'  T R                  u  pU" SSU SUR                   35        SU;   a  U" ST R                  5        SU;   a  U" ST R                  5        SU;   a  U" ST R                  5        SU;   a  U" S[!        T R                  5      5        UR                  5         U$ )Nc                `   > U TR                   ;   a  T" U  SU S35        g T" U  SU S35        g )Nz: z !important;;)r  )r  r   appendr   s     r   append_declaration,Styles.css_lines.<locals>.append_declaration:  s9    t~~%$r%56$r%*+r   r\   r]   rh   ri   r%  r  rj   r  rl   r   r   r   r   r^   ra   rb   rd   zbackground-tintrc   z
text-styler   r   z
overflow-xr   z
overflow-yr   zscrollbar-colorr   zscrollbar-color-hoverr   zscrollbar-color-activer   zscrollbar-corner-colorr   zscrollbar-backgroundr   zscrollbar-background-hoverr   zscrollbar-background-activer   zscrollbar-gutterscrollbar_sizezscrollbar-sizer   zscrollbar-size-horizontalr   zscrollbar-size-verticalr   zscrollbar-visibilityrx   z
box-sizingry   rz   r{   z	min-widthr|   z
min-heightr}   z	max-widthr~   z
max-heightr   
transitionz, c              3  4   #    U  H  u  pU S U 3v   M     g7f)r  Nr   ).0r  r  s      r   	<genexpr>#Styles.css_lines.<locals>.<genexpr>  s%      ,D( fAj\*,Ds   r   r   r  zalign-horizontalzalign-verticalr   r   zcontent-alignzcontent-align-horizontalzcontent-align-verticalr   z
text-alignrq   zborder-title-alignrr   zborder-subtitle-alignrf   rg   ztext-opacityr   zgrid-columnsc              3  8   #    U  H  n[        U5      v   M     g 7fr  rk   r  scalars     r   r  r    s     K3JV3J   r   r   z	grid-rowsc              3  8   #    U  H  n[        U5      v   M     g 7fr  r  r  s     r   r  r    s     H3GV3Gr  r   zgrid-size-columnsr   zgrid-size-rowsr   zgrid-gutter-horizontalr   zgrid-gutter-verticalr   zrow-spanr   zcolumn-spanr   z
link-colorr   zlink-backgroundr   z
link-styler   zlink-color-hoverr   zlink-background-hoverr   zlink-style-hoverr   ztitle-colorr   ztitle-backgroundr   ztitle-text-styler   zsubtitle-colorr   zsubtitle-backgroundborder_subtitle_text_stylezsubtitle-text-styler   r   r   	constrainzconstrain-xzconstrain-yrw   r   r   "z" r   z	text-wrapr   ztext-overflowr   r   zline-pad)r  rk   r   rk   r  r  )Or  r   r  r  r  rj   rl   joinr   r   r^   r  ra   r  rb   rd   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   ry   rz   r{   r|   r}   r~   r   r"  r   r   r   r   r   rq   rr   rf   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   r   r   sort)r   linesr  rt  r]  r  r  xykeyline_typekeyline_colorhatch_characterhatch_colorr  s   `            @r   	css_linesStyles.css_lines5  sB
   	, 	,  99y%	*:;5 |U<-@Ay%	*:*>*>?uxx)<)<=44UHEJDt* F 44UIFJDt* G u;;DAxA3as4z4==9U?vuV}5ewg7ux$++)>?ew

3u;;***x)9)9:ew

75 |T__-@-@A%0$2F2F2J2JK5 |S,1G-HIU?vtyy}}55 |T__=5 |T__=%0$2F2F2J2JK"e+68R8R8V8VW#u,($*E*E*I*I $u,($*E*E*I*I "U*5t7P7P7T7TU'50,d.M.M.Q.Q )E1-t/O/O/S/S &143H3HIu$ 112!D4P4P3QR
 +e3"/T5S5S1T )E1"-s43O3O/P "U*5t7P7PQ5 |T__=ewDJJ8uxT[[)9:%{C,?@5 |S-AB%{C,?@5 |S-ABE!		 ,0,<,<,B,B,D  &+;u+DD112!D4G4G3HI  5(143H3HI&/1D1DE%.3Ku3T00143N3N2OP (50*D,I,I &.79T9TU5 |T__=5(3T5L5LM"e+68R8RSy#dll*;<U"~s43D3D/EFU"K43D3D3J3JKK %H4>>3GR3GHH %'2C8N8N4OPu$/T5H5H1IJ#u,(#d.I.I*J "U*5s4;T;T7UVz3t}}+=>E!}c$2B2B.CD5 |T__-@-@A%0$2F2F2J2JK5 |S-AB&143H3H3L3LM"e+68R8R8V8VW&13t7L7L3MN5(}d.E.E.I.IJ$-143O3O3S3ST5(13t7N7N3OP"e+/1K1K1O1OP'50%t'F'F'J'J (504c$:T:T6UVy#dll*;<E!mu&<4#3#33";0@0@A"D$4$4#5Qt7G7G6H!I e#}d.>.>?e#}d.>.>?*.,,'Lv%"9bARAR@S.TUe+/::(Ow!O+<B{>O(PQ%{DNN;e#0B0BCux5z3t}}+=>

r   c                8    SR                  U R                  5      $ )N
)r  r&  r   s    r   r  
Styles.css0  s    yy((r   )r]  r*  r  r  r  r  r  )r  rk   r   r  r  r_   )r^   r_   r   r_   r`  r_   r  r  r  r  )Fr   )r  rN   r  r_   r  r   r  z#list[tuple[str, Specificity6, Any]]r  zrich.repr.Result)rt  rZ   r  rk   r  zIterable[tuple[str, str]])r  z	list[str]r  rk   )r   r   r   r   r   r   r   rZ   r  r  setr  r  r  rR  r   rX  rd  ri  rp  ru  r  r  r  r  r&  r  r   r   r   r   r  r  t  s      D.X6FH6Hc4Ix4H
"2 > > 	>
 > 
>$
." "'	!!! ! 	!
 
-!F.4F4F%(4F	"4Fl x xt ) )r   r  c                     \ rS rSrSrS"S jrS#S jrS$S jr\S%S j5       r	\S&S j5       r
\S'S j5       r\S'S	 j5       r\S(S
 j5       r\S)S j5       rSSSS\SSS.                   S*S jjrS+S jrSSSSS.         S,S jjrS-S jrS.S jrS/S jrS0S jrS1S jrS2S jrS3S4S jjrS0S jrS5S jr\S6S  j5       rS!rg)7RenderStylesi5  zOPresents a combined view of two Styles object: a base Styles and inline Styles.c                    [         R                  " U5      U l        X l        X0l        S U l        SU l        S U l        S U l        g )Nr   )	weakrefref_node_base_styles_inline_styles_animater  _rich_style_gutter)r   r   baseinline_styless       r   __init__RenderStyles.__init__9  s;    [[&
 +.25937r   c                :    [         R                  " U5      U l        g)zJUpdate the associated DOM node.

Args:
    node: New node for the styles.
N)r2  r3  r4  )r   r   s     r   _update_nodeRenderStyles._update_nodeB  s     [[&
r   c                    [        U[        5      (       aa  U R                  R                  UR                  R                  :H  =(       a-    U R                  R                  UR                  R                  :H  $ [
        $ r  )r   r0  r5  r  r6  r   rn  s     r   r   RenderStyles.__eq__J  sb    e\**!!((E,>,>,E,EE N''..%2F2F2M2MM r   c                v    U R                   U R                  R                   -   U R                  R                   -   $ )zVA cache key, that changes when any style is changed.

Returns:
    An opaque integer.
)r  r5  r6  r   s    r   
_cache_keyRenderStyles._cache_keyR  s0     }}t00999D<O<O<X<XXXr   c                "    U R                  5       $ )r   )r4  r   s    r   r   RenderStyles.node[  s     zz|r   c                    U R                   $ )z!Quick access to base (css) style.)r5  r   s    r   r:  RenderStyles.base`  s        r   c                    U R                   $ )z"Quick access to the inline styles.)r6  r   s    r   inlineRenderStyles.inlinee  s     """r   c                L    U R                   c   eU R                   R                  $ )z(Get a Rich style for this Styles object.)r   
rich_styler   s    r   rN  RenderStyles.rich_stylej  s$     yy$$$yy###r   c                    U R                   b  U R                   u  pXR                  :X  a  U$ U R                  U R                  R                  -   nU R                  U4U l         U$ )zVGet space around widget (padding + border)

Returns:
    Space around widget content.
)r9  rD  rh   r%  r&  )r   	cache_keyr'  s      r   r'  RenderStyles.gutterp  sV     <<# $IOO+ 3 330r   .Ng        r  final_valuer   r   delayr   r   r   c                   U R                   cC  U R                  c   eU R                  R                  R                  R	                  U 5      U l         U R                   c   eU R                  UUUUUUUUU	S9	  g)a  Animate an attribute.

Args:
    attribute: Name of the attribute to animate.
    value: The value to animate to.
    final_value: The final value of the animation. Defaults to `value` if not set.
    duration: The duration (in seconds) of the animation.
    speed: The speed of the animation.
    delay: A delay (in seconds) before the animation starts.
    easing: An easing method.
    on_complete: A callable to invoke when the animation is finished.
    level: Minimum level required for the animation to take place (inclusive).
NrS  )r7  r   r   animatorbind)
r   r   r   rT  r   r   rU  r   r   r   s
             r   animateRenderStyles.animate  sz    4 == 99((( IIMM2277=DM}}(((## 	 
	
r   c              #     #    U R                   v   [         H*  nU R                  U5      (       d  M  U[        X5      4v   M,     g 7fr  )r   r  r*  r  rM  s     r   r  RenderStyles.__rich_repr__  s7     ii#I}}Y''!999 $s
   ,AAFTr_  c               8    U R                   R                  XX4S9  g )Nr_  )r6  rd  rc  s        r   rd  RenderStyles.refresh  s"     	##V 	$ 	
r   c                :    U R                   R                  U5        grl  )r6  rp  rn  s     r   rp  RenderStyles.merge  s     	!!%(r   c                d    U R                   R                  U5        U =R                  S-  sl        g r  )r6  ru  r  rs  s     r   ru  RenderStyles.merge_rules  s$    ''.r   c                b    U R                   R                  5         U =R                  S-  sl        gr  )r6  ri  r  r   s    r   ri  RenderStyles.reset  s"    !!#r   c                |    U R                   R                  U5      =(       d    U R                  R                  U5      $ )zCheck if a rule has been set.)r6  r*  r5  rM  s     r   r*  RenderStyles.has_rule  s6    ""++I6 
$:K:K:T:T;
 	
r   c                   ^^ U R                   R                  mU R                  R                  m[        UU4S jU 5       5      $ )zCheck if any of the supplied rules have been set.

Args:
    rule_names: Number of rules.

Returns:
    `True` if any of the supplied rules have been set, `False` if none have.
c              3  R   >#    U  H  nT" U5      =(       d    T" U5      v   M     g 7fr  r   )r  r  base_has_ruleinline_has_rules     r   r  -RenderStyles.has_any_rules.<locals>.<genexpr>  s#     WJD?4(?M$,??Js   $')r6  r*  r5  r  )r   
rule_namesri  rj  s     @@r   has_any_rulesRenderStyles.has_any_rules  s8     --66))22WJWWWr   c                8    U R                   R                  X5      $ r  )r6  rX  rW  s      r   rX  RenderStyles.set_rule  s    ""++I==r   c                    U R                   R                  U5      (       a  U R                   R                  X5      $ U R                  R                  X5      $ r  )r6  r*  r]  r5  r\  s      r   r]  RenderStyles.get_rule  sG    ''	22&&//	CC  )))==r   c                8    U R                   R                  U5      $ )zClear a rule (from inline).)r6  rR  rM  s     r   rR  RenderStyles.clear_rule  s    ""--i88r   c                ~    0 U R                   R                  EU R                  R                  En[        [        U5      $ )zGet rules as a dictionary)r5  r  r6  r   rZ   rs  s     r   r   RenderStyles.get_rules  s6    J4$$++Jt/B/B/I/IJHe$$r   c                    [        5       nUR                  U R                  5        UR                  U R                  5        UR                  nU$ )z$Get the CSS for the combined styles.)r  rp  r5  r6  r  )r   r   combined_csss      r   r  RenderStyles.css  s>     T&&'T(()zzr   )r7  r5  r9  r6  r4  r8  r  )r   rW   r:  r  r;  r  r  r  )r   rW   r  r  )ro  r  r  r_   r  r  r+  r  r  )r   rk   r   zstr | float | AnimatablerT  r  r   r  r   r  rU  re   r   zEasingFunction | strr   r  r   r   r  r  r,  r  r  r  r  r  )rl  rk   r  r_   r  r  r  r  r-  )r   r   r   r   r   r<  r?  r   r  rD  r   r:  rK  rN  r'  r   rY  r  rd  rp  ru  ri  r*  rm  rX  r]  rR  r   r  r   r   r   r   r0  r0  5  s   Y8' Y Y   ! ! # # $ $
  ( "!%"'5+/ &(
(
 ((

 (
 (
 (
 (
 %(
 )(
 (
 
(
T: 

 

 	


 

 

 


)

X>>
9%
  r   r0  )y
__future__r   r2  dataclassesr   r   	functoolsr   operatorr   typingr   r	   r
   r   r   r   r   	rich.reprrich
rich.styler   typing_extensionsr   textual._animatorr   r   r   r   textual._typesr   r   textual.colorr   textual.css._style_propertiesr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   textual.css.constantsr/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   textual.css.scalarr?   r@   rA   textual.css.scalar_animationrB   textual.css.transitionrC   textual.css.typesrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   textual.geometryrT   rU   rV   textual.domrW   textual.layoutrX   rZ   listr   r  r  	frozensetr  rz  r   reprr   r  r0  r   r   r   <module>r     sH   "  (   R R R   ' W W 7       2    $ : 9 8 -    $ --#%y D (**//12
:&:&R
 R
j 
|)Z |)  |)~ B: B Br   