a
    Df                     @  s   d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZ ddlZddlmZmZ ddlmZ ddlmZ d	d
lmZ erddlmZ ddlmZ dddddZG dd deZdS )zS
Renders objects representing equations including LaTeX strings and
SymPy objects.
    )annotationsN)TYPE_CHECKINGAnyClassVarDictListMappingType)CommJupyterComm   )CDN_DIST)	lazy_load   )	ModelPane)Document)Modelr   boolobjreturnc                 C  s8   dt jv r4dtt| jv r4ddl}t| |jr4dS dS )zATest for sympy.Expr types without usually needing to import sympysympyr   NTF)sysmodulesstrtype	__class__r   
isinstanceExpr)r   r    r   `/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/pane/equation.pyis_sympy_expr   s
    r!   c                      s   e Zd ZU dZejddddgddZdZded	< dd
dZ	ded< dZ
ded< e dgZded< edddddZdd fddZddddd d!Zd)d"d#d#ddd$d%d&Zdddd'd(Z  ZS )*LaTeXa  
    The `LaTeX` pane allows rendering LaTeX equations. It uses either
    `MathJax` or `KaTeX` depending on the defined renderer.

    By default it will use the renderer loaded in the extension
    (e.g. `pn.extension('katex')`), defaulting to `KaTeX`.

    Reference: https://panel.holoviz.org/reference/panes/LaTeX.html

    :Example:

    >>> pn.extension('katex')
    >>> LaTeX(
    ...     'The LaTeX pane supports two delimiters: $LaTeX$ and \(LaTeX\)',
    ...     styles={'font-size': '18pt'}, width=800
    ... )
    NTkatexmathjaxz=
        The JS renderer used to render the LaTeX expression.)defaultZ
allow_NoneZobjectsdoczClassVar[float | bool | None]prioritytext)rendererobjectz"ClassVar[Mapping[str, str | None]]_renamezClassVar[bool]_updateszcss/katex.csszClassVar[List[str]]_stylesheetsr   zfloat | bool | Noner   c                 C  s,   t |st|drdS t|tr$d S dS d S )N_repr_latex_g?F)r!   hasattrr   r   )clsr   r   r   r    appliesH   s
    
zLaTeX.applieszDict[str, Any])r   c                   s:   | j dkr.tdd|d }tdd||d< t |S )Nr$   z(\$\$)(.*?)(\$\$)z\[\2\]r*   z(\$)(.*?)(\$)z\(\2\))r)   resubsuper_process_param_change)selfparamsmsgr   r   r    r5   Q   s    
zLaTeX._process_param_changer   zComm | NonezType[Model])rootcommr   c                 C  sV   | j }|d u r,dtjv r(dtjvr(d}nd}|dkr8dnd}td| |t|t|S )Nzpanel.models.mathjaxzpanel.models.katexr$   r#   ZKaTeXZMathJaxzpanel.models.)r)   r   r   r   r   r   )r6   r:   r;   modulemodelr   r   r    _get_model_typeX   s    zLaTeX._get_model_typer   zModel | None)r&   r:   parentr;   r   c                 C  sD   |  ||| _| jf i | |}|p*|}||f| j|jd < |S )Nid)r>   Z_bokeh_modelZ_get_propertiesZ_modelsref)r6   r&   r:   r?   r;   r=   r   r   r    
_get_modelb   s
    zLaTeX._get_modelc                 C  sN   |d u rd}n6t |dr"| }n"t|rDdd l}d|| d }t|dS )N r.   r   $)r*   )r/   r.   r!   r   Zlatexdict)r6   r   r   r   r   r    _transform_objectl   s    

zLaTeX._transform_object)NNN)__name__
__module____qualname____doc__paramZObjectSelectorr)   r'   __annotations__r+   r,   r   r-   classmethodr1   r5   r>   rB   rF   __classcell__r   r   r9   r    r"   $   s$   
  
r"   )rJ   
__future__r   r2   r   typingr   r   r   r   r   r   r	   rK   Zpyviz_commsr
   r   Zio.resourcesr   utilr   baser   Zbokeh.documentr   Zbokeh.modelr   r!   r"   r   r   r   r    <module>   s   $	