o
    h?                     @   s   d dl Z d dlZd dl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 d dlmZ dd	 Zd
d Zdd Zdd Zdd Zdd ZG dd dZdS )    N)render_children)DOM)HTML)BLOCK_KEY_NAMEHtmlToContentStateHandler)features)	check_urlc                 C   sL   |  d}i }|durd|d< ||d< n	t|  d|d< td|| d S )	z:
    <a linktype="page" id="1">internal page link</a>
    idNpagelinktypeurlhrefachildren)getr   r   create_element)propsid_
link_props r   o/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/rich_text/converters/contentstate.pylink_entity   s   

r   c                 C   s"   | d d dkr| d S t dS )Nblocktypez
code-blockr   br)r   r   )r   r   r   r   r   !   s   
r   c                 C      | d d }t d|  d S )Nr   r   z(Missing config for "%s". Deleting block.)loggingerrorr   type_r   r   r   block_fallback(      r    c                 C   r   )Nentityr   z(Missing config for "%s". Deleting entityr   warningr   r   r   r   entity_fallback.   r!   r%   c                 C   s"   | d d }t d|  | d S )Ninline_style_rangestylez(Missing config for "%s". Deleting style.r   r#   r   r   r   r   style_fallback4   s   r(   c                    sZ   t | trdd |  D }| d | di ni }i |   fdd}||d< |S )Nc                 S   s   i | ]\}}|d v r||qS )>   wrapperwrapper_propsr   ).0keyvaluer   r   r   
<dictcomp>?   s
    z)persist_key_for_block.<locals>.<dictcomp>elementr   c              	      sd   t | d di}z | }|d ur|j| |W S  ty1   | t || d  Y S w )Nr   r,   r   )r   r   attrupdate	TypeErrorr   r   )r   added_propseltr/   element_propsr   r   element_with_uuidL   s   
z0persist_key_for_block.<locals>.element_with_uuid)
isinstancedictitemsr   )config
new_configr7   r   r5   r   persist_key_for_block:   s   

r=   c                   @   s&   e Zd ZdddZdd Zdd ZdS )	ContentstateConverterNc                 C   s   || _ t|| _tdttddtidtit	dt
dgtjd}| j D ]8}td|}|d ur]|d }|d	 d
d |d	i  D  |d |di  |d |di  q%t|| _d S )Np)unstyledatomicfallbackFALLBACKz\n)strategy	component)	block_map	style_mapentity_decoratorscomposite_decoratorsenginecontentstateto_database_formatrF   c                 S   s   i | ]	\}}|t |qS r   )r=   )r+   
block_typer;   r   r   r   r.   }   s    z2ContentstateConverter.__init__.<locals>.<dictcomp>rG   rH   )r   r   html_to_contentstate_handlerr=   r   r    r(   r%   recompiler   r   STRINGfeature_registryget_converter_ruler1   r   r:   HTMLExporterexporter)selfr   exporter_configfeaturerulefeature_configr   r   r   __init___   sD   


zContentstateConverter.__init__c                 C   s2   | j   | j | | j   | j jjdddS )N   ),z: )indent
separators)rN   resetfeedcloserK   as_json)rV   htmlr   r   r   from_database_format   s   

z*ContentstateConverter.from_database_formatc                 C   s   | j t|S N)rU   renderjsonloads)rV   contentstate_jsonr   r   r   rL      s   z(ContentstateConverter.to_database_formatrf   )__name__
__module____qualname__r[   re   rL   r   r   r   r   r>   ^   s    
,	r>   )rh   r   rO   draftjs_exporter.defaultsr   draftjs_exporter.domr   draftjs_exporter.htmlr   rT   7wagtail.admin.rich_text.converters.html_to_contentstater   r   wagtail.rich_textr   rR   wagtail.whitelistr   r   r   r    r%   r(   r=   r>   r   r   r   r   <module>   s     $