o
    &zh                     @  sR   d dl mZ d dlmZmZmZ d dlmZ erd dlm	Z	 G dd dej
ZdS )    )annotations)TYPE_CHECKINGCallableClassVar)css)Selfc                   @  s   e Zd ZU dZdZdd dd dd dd dd d	d d
Zded< d,d-ddZdd Zdd Z	e
fddZdd Zdd Zdd Zd.ddZd d!d"d#Zd$d% Zd&d' Zd(d) Zd*d+ ZdS )/CSSDOMElementInterfacezOAn implementation of css.CSSElementInterfaceAbstract for xml.dom Element Nodes.Nc                 C     t |   S NboolgetPreviousSiblingself r   _/var/www/html/kangema/venv/lib/python3.10/site-packages/xhtml2pdf/w3c/cssDOMElementInterface.py<lambda>"       zCSSDOMElementInterface.<lambda>c                 C     t |  S r
   r   r   r   r   r   r   #       c                 C  r	   r
   r   getNextSiblingr   r   r   r   r   $   r   c                 C  r   r
   r   r   r   r   r   r   %   r   c                 C  s   t |   ot |   S r
   r   r   r   r   r   r   r   r   &   s    c                 C  s   t |  pt |  S r
   r   r   r   r   r   r   (   s    )zfirst-childznot-first-childz
last-childznot-last-childzmiddle-childznot-middle-childz+ClassVar[dict[str, Callable[[Self], bool]]]_pseudoStateHandlerLookupreturnNonec                 C  s    || _ |d ur| | d S d S r
   )
domElementonCSSParserVisit)r   r   	cssParserr   r   r   __init__1   s   zCSSDOMElementInterface.__init__c                 C  s(   |   }|r||}| | d S d S r
   )getStyleAttrparseInlinesetInlineStyle)r   r   styleSrcstyler   r   r   r   7   s
   
z'CSSDOMElementInterface.onCSSParserVisitc                 C  s4   |\}}|d| j jhvrdS |dv rdS || j jkS )N*F>   N r%   T)r   tagNamenamespaceURI)r   namespace_tagName	namespacer'   r   r   r   matchesNode?   s   z"CSSDOMElementInterface.matchesNodec                 C  s    | j j|}|d ur|jS |S r
   )r   
attributesgetvalue)r   namedefault
attr_valuer   r   r   getAttrI   s   zCSSDOMElementInterface.getAttrc                 C     |  ddS )Nidr&   r2   r   r   r   r   	getIdAttrO      z CSSDOMElementInterface.getIdAttrc                 C  r3   )Nclassr&   r5   r   r   r   r   getClassAttrR   r7   z#CSSDOMElementInterface.getClassAttrc                 C  s   |  dd S )Nr$   r5   r   r   r   r   r    U   r7   z#CSSDOMElementInterface.getStyleAttrr   c                 C  s   | j |dd }|| S )Nc                 S  s   dS )NFr   )_r   r   r   r   Y   s    z6CSSDOMElementInterface.inPseudoState.<locals>.<lambda>)r   r-   )r   r/   paramshandlerr   r   r   inPseudoStateX   s   z$CSSDOMElementInterface.inPseudoStateF)includeSelfc                c  sb    t | }| j}|s|j}|d ur+|j|jkr/||V  |j}|d ur-|j|jksd S d S d S d S r
   )typer   
parentNodenodeTypeELEMENT_NODE)r   r>   klasscurrentr   r   r   iterXMLParents\   s   
$z%CSSDOMElementInterface.iterXMLParentsc                 C  *   | j j}|r|j|jkr|S |j}|sd S r
   )r   previousSiblingrA   rB   r   siblingr   r   r   r   e      z)CSSDOMElementInterface.getPreviousSiblingc                 C  rF   r
   )r   nextSiblingrA   rB   rH   r   r   r   r   m   rJ   z%CSSDOMElementInterface.getNextSiblingc                 C  s   | j S r
   r$   r   r   r   r   getInlineStyleu   s   z%CSSDOMElementInterface.getInlineStylec                 C  s
   || _ d S r
   rL   )r   r$   r   r   r   r"   x   s   
z%CSSDOMElementInterface.setInlineStyler
   )r   r   )r   )__name__
__module____qualname____doc__r$   r   __annotations__r   r   r+   NotImplementedr2   r6   r9   r    r=   rE   r   r   rM   r"   r   r   r   r   r      s.   
 

	r   N)
__future__r   typingr   r   r   xhtml2pdf.w3cr   typing_extensionsr   CSSElementInterfaceAbstractr   r   r   r   r   <module>   s   	