
    CjV	                    b    S SK Jr  S SKJrJr  S SKJrJrJr  \(       a  S SK	J
r
  SS jrS	S jrg)
    )annotations)TYPE_CHECKINGIterable)CombinatorTypeSelectorSelectorSet)DOMNodec                .   ^ [        U4S jU  5       5      $ )zCheck if a given node matches any of the given selector sets.

Args:
    selector_sets: Iterable of selector sets.
    node: DOM node.

Returns:
    True if the node matches the selector, otherwise False.
c              3  d   >#    U  H%  n[        UR                  TR                  5      v   M'     g 7f)N)_check_selectors	selectorscss_path_nodes).0selector_setnodes     c/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/textual/css/match.py	<genexpr>match.<locals>.<genexpr>   s.      )L 	//1D1DEE)s   -0)any)selector_setsr   s    `r   matchr      s      )      c                8   [         R                  nUS   n[        U5      n[        U 5      nS/nUR                  nUR                  nSn	U(       a  US   u  pX:X  d  X:X  a  U" 5         OX   nX	   nUR
                  U:X  aP  UR                  U5      (       a0  XL a	  XS-
  :X  a  gU	S-   XR                  -   4US'   U" XS-   45        OKXS-   4US'   OAUR                  U5      (       a$  XL a	  XS-
  :X  a  gU	S-   XR                  -   4US'   OU" 5         U(       a  M  g)zMatch a list of selectors against DOM nodes.

Args:
    selectors: A list of selectors.
    css_path_nodes: The DOM nodes to check the selectors against.

Returns:
    True if any node in css_path_nodes matches a selector.
)r   r   r      TF)r   
DESCENDENTlenappendpop
combinatorcheckadvance)r   r   r   r   
path_countselector_countstackpushr   selector_index
node_index	path_nodeselectors                r   r   r      s7     **J"D^$J^N$*8E<<D
))CN
%*2Y"+z/GE&2I 0H""j0>>),, (^PQ?Q-Q#!/!!3ZBRBR5R SE"I.q.9:!/a @E"I >>),, (^PQ?Q-Q#!/!!3ZBRBR5R SE"IE/ %0 r   N)r   zIterable[SelectorSet]r   r	   returnbool)r   zlist[Selector]r   zlist[DOMNode]r+   r,   )
__future__r   typingr   r   textual.css.modelr   r   r   textual.domr	   r   r    r   r   <module>r2      s!    " * C C# /r   