a
    Cgl                     @   s   d dl mZmZm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mZ d dlmZmZmZmZmZ G dd	 d	eZG d
d dZdS )    )ListOptionalSequence)Command)ENTITY_TYPES)DOM)ExporterException)Options
OptionsMap)BlockElementEntityDetails	EntityKey	EntityMapc                   @   s   e Zd ZdS )EntityExceptionN)__name__
__module____qualname__ r   r   \/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/draftjs_exporter/entity_state.pyr      s   r   c                   @   sz   e Zd ZdZeeddddZeddddZe	e
 d	d
dZed	ddZe
edddZeeee edddZdS )EntityStateentity_options
entity_mapentity_stackcompleted_entityelement_stackN)r   r   returnc                 C   s"   || _ || _g | _d | _g | _d S Nr   )selfr   r   r   r   r   __init__   s
    zEntityState.__init__)commandr   c                 C   s^   |j dkr| j|j n@|j dkrZ| jd }|j|krNtd| d|j | j | _d S )NZstart_entityZstop_entityz	Expected z, got )namer   appenddatar   popr   )r   r!   Zexpected_entityr   r   r   apply&   s    



zEntityState.apply)r   c                 C   s   | j S r   r   r   r   r   r   
has_entity1   s    zEntityState.has_entityc                 C   s   | j  S r   r(   r)   r   r   r   has_no_entity4   s    zEntityState.has_no_entity)
entity_keyr   c                 C   s(   | j |}|d u r$td| d|S )NzEntity "z!" does not exist in the entityMap)r   getr   )r   r,   detailsr   r   r   get_entity_details7   s    
zEntityState.get_entity_details)
style_nodeblockblocksr   c           	      C   s   | j d ur| | j }t| j|d tj}|d  }|d d|v rN|d nd ||d| j id|d< t| j	dkr| j	d }n t
 }| j	D ]}t
|| qd | _ g | _	|  r| j	| t
|j||S |  r| j	| d S |S )	Ntyper%   
mutabilitykey)r3   r4   r1   r2   Zentity_rangeentity   r   )r   r/   r	   r-   r   r   ZFALLBACKcopylenr   r   Zcreate_elementZappend_childr*   r$   element)	r   r0   r1   r2   Zentity_detailsoptionspropschildrennr   r   r   render_entitiesA   s<    




zEntityState.render_entities)r   r   r   	__slots__r
   r   r    r   r'   r   r   r*   boolr+   r   r/   r   r   r   r?   r   r   r   r   r      s   
r   N)typingr   r   r   Zdraftjs_exporter.commandr   Zdraftjs_exporter.constantsr   Zdraftjs_exporter.domr   Zdraftjs_exporter.errorr   Zdraftjs_exporter.optionsr	   r
   Zdraftjs_exporter.typesr   r   r   r   r   r   r   r   r   r   r   <module>   s   	