o
    hl                     @   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/html/ndineBlogger/venv/lib/python3.10/site-packages/draftjs_exporter/entity_state.pyr      s    r   c                   @   s   e Zd ZdZdededdfddZdeddfd	d
Zde	e
 fddZdefddZde
defddZdededee defddZdS )EntityStateentity_options
entity_mapentity_stackcompleted_entityelement_stackr   r   returnNc                 C   s"   || _ || _g | _d | _g | _d S Nr   )selfr   r   r   r   r   __init__   s
   
zEntityState.__init__commandc                 C   sd   |j dkr| j|j d S |j dkr0| jd }|j|kr(td| d|j | j | _d S d S )Nstart_entitystop_entityz	Expected z, got )namer   appenddatar   popr   )r   r!   expected_entityr   r   r   apply&   s   



zEntityState.applyc                 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_keyc                 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blocksc           	      C   s   | j d urh| | j }t| j|d tj}|d  }|d d|v r'|d nd ||d| j id|d< t| j	dkr@| j	d }nt
 }| j	D ]}t
|| qGd | _ g | _	|  r`| j	| t
|j||S |  rt| j	| d S |S )	Ntyper'   
mutabilitykey)r6   r7   r4   r5   entity_rangeentity   r   )r   r2   r	   r0   r   r   FALLBACKcopylenr   r   create_elementappend_childr-   r&   element)	r   r3   r4   r5   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   r2   r   r   r   rG   r   r   r   r   r      s     
r   N)typingr   r   r   draftjs_exporter.commandr   draftjs_exporter.constantsr   draftjs_exporter.domr   draftjs_exporter.errorr   draftjs_exporter.optionsr	   r
   draftjs_exporter.typesr   r   r   r   r   r   r   r   r   r   r   <module>   s    	