U
    =ßôg  ã                   @  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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  s   t |  ¡ ƒ S ©N©ÚboolÚgetPreviousSibling©Úself© r   úH/tmp/pip-unpacked-wheel-d1lgvatt/xhtml2pdf/w3c/cssDOMElementInterface.pyÚ<lambda>"   ó    zCSSDOMElementInterface.<lambda>c                 C  s   t |  ¡ ƒS r	   r
   r   r   r   r   r   #   r   c                 C  s   t |  ¡ ƒ S r	   ©r   ÚgetNextSiblingr   r   r   r   r   $   r   c                 C  s   t |  ¡ ƒS 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ÚNone)Úreturnc                 C  s   || _ |d k	r|  |¡ d S r	   )Ú
domElementÚonCSSParserVisit)r   r   Ú	cssParserr   r   r   Ú__init__1   s    zCSSDOMElementInterface.__init__c                 C  s$   |   ¡ }|r | |¡}|  |¡ d S r	   )ÚgetStyleAttrZparseInlineÚsetInlineStyle)r   r   ZstyleSrcÚstyler   r   r   r   7   s    
z'CSSDOMElementInterface.onCSSParserVisitc                 C  s4   |\}}|d| j jhkrdS |dkr(dS || j jkS )NÚ*F>   Ú Nr    T)r   ÚtagNameZnamespaceURI)r   Znamespace_tagNameÚ	namespacer"   r   r   r   ÚmatchesNode?   s    z"CSSDOMElementInterface.matchesNodec                 C  s    | j j |¡}|d k	r|jS |S r	   )r   Ú
attributesÚgetÚvalue)r   ÚnameÚdefaultÚ
attr_valuer   r   r   ÚgetAttrI   s    zCSSDOMElementInterface.getAttrc                 C  s   |   dd¡S )NÚidr!   ©r+   r   r   r   r   Ú	getIdAttrO   s    z CSSDOMElementInterface.getIdAttrc                 C  s   |   dd¡S )NÚclassr!   r-   r   r   r   r   ÚgetClassAttrR   s    z#CSSDOMElementInterface.getClassAttrc                 C  s   |   dd ¡S )Nr   r-   r   r   r   r   r   U   s    z#CSSDOMElementInterface.getStyleAttrr   c                 C  s   | j  |dd„ ¡}|| ƒS )Nc                 S  s   dS )NFr   )Ú_r   r   r   r   Y   r   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 k	r>|j|jkr>||ƒV  |j}qd S r	   )Útyper   Z
parentNodeÚnodeTypeÚELEMENT_NODE)r   r5   ÚklassÚcurrentr   r   r   ÚiterXMLParents\   s    
z%CSSDOMElementInterface.iterXMLParentsc                 C  s(   | j j}|r$|j|jkr|S |j}qd S r	   )r   ZpreviousSiblingr7   r8   ©r   Zsiblingr   r   r   r   e   s    z)CSSDOMElementInterface.getPreviousSiblingc                 C  s(   | j j}|r$|j|jkr|S |j}qd S r	   )r   ZnextSiblingr7   r8   r<   r   r   r   r   m   s    z%CSSDOMElementInterface.getNextSiblingc                 C  s   | j S r	   ©r   r   r   r   r   ÚgetInlineStyleu   s    z%CSSDOMElementInterface.getInlineStylec                 C  s
   || _ d S r	   r=   )r   r   r   r   r   r   x   s    z%CSSDOMElementInterface.setInlineStyle)N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   r$   ÚNotImplementedr+   r.   r0   r   r4   r;   r   r   r>   r   r   r   r   r   r      s,   
ù

	r   N)Ú
__future__r   Útypingr   r   r   Zxhtml2pdf.w3cr   Ztyping_extensionsr   ZCSSElementInterfaceAbstractr   r   r   r   r   Ú<module>
   s
   