a
    Cg,                     @   sj   d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZmZ dZG dd dZG dd	 d	e	Zd
S )    escape)ListOptionalSequenceUnion)Attr	DOMEngine)HTMLTag)areabasebrcolembedhrimginputlinkmetaparamsourcetrackwbrc                   @   s@   e Zd ZdZdZdeee edddZ	e
ed ddd	Zd
S )Eltz
    A DOM element that the string engine manipulates.
    This class doesn't do much, but the exporter relies on
    comparing elements by reference so it's useful nonetheless.
    typeattrchildrenmarkup )type_r   r   c                 C   s   || _ || _g | _|| _d S Nr   )selfr!   r   r    r$   ^/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/draftjs_exporter/engines/string.py__init__$   s    zElt.__init__r   returnc                 C   s   t dd | S )Nescaped_htmlr   r   r$   r$   r%   	from_html*   s    zElt.from_htmlN)r    )__name__
__module____qualname____doc__	__slots__r   r   r   r
   r&   staticmethodr,   r$   r$   r$   r%   r      s
   r   c                   @   s   e Zd ZdZedeee edddZ	ee
edddZeeedd	d
dZeeedddZeeee
ef  e
dddZeee
dddZeee
dddZdS )	DOMStringz=
    String concatenation implementation of the DOM API.
    N)r!   r   r(   c                 C   s
   t | |S r"   r*   )r!   r   r$   r$   r%   
create_tag4   s    zDOMString.create_tagr'   c                 C   s
   t | S )z
        Allows inserting arbitrary HTML into the exporter output.
        Treats the HTML as if it had been escaped and was safe already.
        )r   r,   r+   r$   r$   r%   
parse_html8   s    zDOMString.parse_html)eltchildr(   c                 C   s(   || j v ot|t}|s$| j | d S r"   )r   
isinstancer   append)r6   r7   Zis_existing_refr$   r$   r%   append_child@   s    zDOMString.append_child)r   r(   c                 C   s   dd |   D }d|S )Nc                 S   s&   g | ]\}}d | dt | dqS ) z=""r   ).0kvr$   r$   r%   
<listcomp>K       z*DOMString.render_attrs.<locals>.<listcomp>r    )itemsjoin)r   attrsr$   r$   r%   render_attrsI   s    zDOMString.render_attrs)r   r(   c                 C   s   d dd | D S )Nr    c                 S   s,   g | ]$}t |trt|n
t|d dqS )F)quote)r8   r   r3   renderr   )r=   cr$   r$   r%   r@   Q   s   z-DOMString.render_children.<locals>.<listcomp>)rC   )r   r$   r$   r%   render_childrenN   s
    zDOMString.render_children)r6   r(   c                 C   s   | j }| jrt| jnd}| jr.t| jnd}|dkr>|S |tv rVd| | dS |dkrd| jS d| | d| d| dS )Nr    fragment</>r)   ></r   r   r3   rE   r   rI   VOID_ELEMENTSr   r6   r!   r   r   r$   r$   r%   rG   W   s    zDOMString.renderc                 C   st   | j }| jrt| jnd}| jr.t| jnd}|tv rJd| | dS |dkrX| jS d| | d| d| dS )Nr    rK   rL   r)   rM   rN   rO   rQ   r$   r$   r%   render_debugh   s    zDOMString.render_debug)N)r-   r.   r/   r0   r2   r   r   r   r   r4   r
   r5   r:   strrE   r   r   rI   rG   rR   r$   r$   r$   r%   r3   /   s   r3   N)htmlr   typingr   r   r   r   Zdraftjs_exporter.engines.baser   r	   Zdraftjs_exporter.typesr
   r   rP   r   r3   r$   r$   r$   r%   <module>   s   