o
    hJ                     @   sn   d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ e dZe dZG dd	 d	ZdS )
    N)AnyOptional)	DOMEngine)HTMLElementPropsRenderableType)import_stringz(.)([A-Z][a-z]+)z([a-z0-9])([A-Z])c                
   @   s   e Zd ZU dZdZdZdZdZdZe	e
d< eded	efd
dZeded	dfddZe		ddedee dee d	efddZeded	efddZededed	efddZeded	efddZeded	efddZdS ) DOMzE
    Component building API, abstracting the DOM implementation.
    z.draftjs_exporter.engines.html5lib.DOM_HTML5LIBz&draftjs_exporter.engines.lxml.DOM_LXMLz)draftjs_exporter.engines.string.DOMStringz6draftjs_exporter.engines.string_compat.DOMStringCompatNdomcamel_cased_strreturnc                 C   s(   t d| }td| }|ddS )Nz\1-\2z---)_first_cap_resub_all_cap_relowerreplace)r   sub2dashed_case_str r   T/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/draftjs_exporter/dom.pycamel_to_dash   s   zDOM.camel_to_dashenginec                 C   s   t || _dS )z9
        Choose which DOM implementation to use.
        N)r	   r   )clsr   r   r   r   use   s   zDOM.usetype_propselt_childrenc           
      G   s~  |s| j dS |du ri }t|r t|d ttfr |d }n|}t|dkr,|d n||d< t|r9||}nzi }|dd |dd |dd |dd |d	d d
|v rvt|d
 trvdd |d
 	 D }d
||d
< |D ]$}|| du rd||< || du rd||< || durt|| ||< qx| j ||}|D ]}	|	dvr| ||	 q|dv r| j d}|S )a  
        Signature inspired by React.createElement.
        createElement(
          string/Component type,
          [dict props],
          [children ...]
        )
        https://facebook.github.io/react/docs/top-level-api.html#react.createelement
        fragmentNr      childrenblockblocksentityinline_style_rangestylec                 S   s&   g | ]\}}t | d | dqS )z: ;)r
   r   ).0svr   r   r   
<listcomp>V   s    z&DOM.create_element.<locals>.<listcomp> FfalseTtrue)Nr,   )r   
create_taglen
isinstancelisttuplecallablepopdictitemsjoinstrappend_child)
r   r   r   r   r!   elt
attributesruleskeychildr   r   r   create_element&   sJ   


zDOM.create_elementmarkupc                 C      | j |S N)r   
parse_html)r   rA   r   r   r   rD   s      zDOM.parse_htmlr;   r?   c                 C   s   | j ||S rC   )r   r:   )r   r;   r?   r   r   r   r:   w   s   zDOM.append_childc                 C   rB   rC   )r   renderr   r;   r   r   r   rF   {   rE   z
DOM.renderc                 C   rB   rC   )r   render_debugrG   r   r   r   rH      rE   zDOM.render_debug)NN)__name__
__module____qualname____doc__HTML5LIBLXMLSTRINGSTRING_COMPATr   r   __annotations__staticmethodr9   r   classmethodr   r   r   r   r   r@   r   rD   r   r:   rF   rH   r   r   r   r   r
      s>   
 Lr
   )retypingr   r   draftjs_exporter.engines.baser   draftjs_exporter.typesr   r   r   r   %draftjs_exporter.utils.module_loadingr	   compiler   r   r
   r   r   r   r   <module>   s    

