
    >i                        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 erd dlmZ d d	lmZ  ej"                  e      Z G d
 de
      Zy)    )annotationsN)TYPE_CHECKING)DomCommands)ConnectionHandler)FindElementsMixin)ShadowRootType)
WebElement)GetOuterHTMLResponsec                      e Zd ZdZdZej                  df	 	 	 	 	 	 	 d
dZedd       Z	edd       Z
edd       ZddZdd	Zy)
ShadowRootu  
    Shadow root wrapper for shadow DOM traversal.

    Provides element finding capabilities within shadow DOM boundaries
    using query() with CSS selectors. Use query() instead of find() —
    find() and XPath are not supported inside shadow roots.

    Usage:
        shadow_host = await tab.find(id='my-component')
        shadow_root = await shadow_host.get_shadow_root()
        button = await shadow_root.query('#internal-button')
        await button.click()
    TNc                B   || _         || _        || _        || _        |rHt	        |dd      | _        t	        |dd      | _        t	        |dd      | _        t	        |dd      | _        t        j                  d| j                    d| j                  j                          y)aF  
        Initialize shadow root wrapper.

        Args:
            object_id: CDP object ID for the shadow root node.
            connection_handler: Browser connection for CDP commands.
            mode: Shadow root mode (open, closed, or user-agent).
            host_element: Reference to the shadow host element.
        _iframe_contextN_routing_session_handler_routing_session_id_routing_parent_frame_idz"ShadowRoot initialized: object_id=z, mode=)
_object_id_connection_handler_mode_host_elementgetattrr   r   r   r   loggerdebugvalue)self	object_idconnection_handlermodehost_elements        a/var/www/python/tenders/Scrapper/venv/lib/python3.12/site-packages/pydoll/elements/shadow_root.py__init__zShadowRoot.__init__#   s      $#5 
) #*<9JD#QD ,3LB\^b,cD)'.|=RTX'YD$,3LB\^b,cD)00AIYIYHZ[	
    c                    | j                   S )z/Shadow root mode (open, closed, or user-agent).)r   r   s    r   r   zShadowRoot.modeC   s     zzr!   c                    | j                   S )z3Reference to the shadow host element, if available.)r   r#   s    r   r   zShadowRoot.host_elementH   s     !!!r!   c                   K   | j                  t        j                  | j                               d{   }|d   d   S 7 w)z HTML content of the shadow root.)r   Nresult	outerHTML)_execute_commandr   get_outer_htmlr   )r   responses     r   
inner_htmlzShadowRoot.inner_htmlM   sF      04/D/D&&A0
 *
 !+..*
s   3AAAc                P    d| j                   j                   d| j                   dS )NzShadowRoot(mode=z, object_id=))r   r   r   r#   s    r   __repr__zShadowRoot.__repr__U   s(    !$**"2"2!3<?PPQRRr!   c                6    d| j                   j                   dS )NzShadowRoot(r-   )r   r   r#   s    r   __str__zShadowRoot.__str__X   s    TZZ--.a00r!   )r   strr   r   r   r   r   WebElement | None)returnr   )r3   r2   )r3   r1   )__name__
__module____qualname____doc__	_css_onlyr   OPENr    propertyr   r   r+   r.   r0    r!   r   r   r      s     I  .22*.

 .
 	

 (
@   " " / /S1r!   r   )
__future__r   loggingtypingr   pydoll.commandsr   pydoll.connectionr   pydoll.elements.mixinsr   pydoll.protocol.dom.typesr   pydoll.elements.web_elementr	   pydoll.protocol.dom.methodsr
   	getLoggerr4   r   r   r;   r!   r   <module>rF      sD    "    ' / 4 46@			8	$G1" G1r!   