
    Be                        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rddlmZ ddlmZ ddZ G 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)Modelobjr   returnboolc                    dt           j        v r>dt          t          |           j                  v rddl}t          | |j                  rd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   s     3lib/python3.11/site-packages/panel/pane/equation.pyis_sympy_exprr!      sQ    #+'Sc1D-E-E"E"Ec5:&& 	45    c                       e Zd ZU dZ ej        ddddg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            Zd' fdZd(dZ	 	 d)d*d$Zd+d%Z x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.)default
allow_None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   r   r   float | bool | Nonec                v    t          |          st          |d          rdS t          |t                    rd S dS )N_repr_latex_g?F)r!   hasattrr   r   )clsr   s     r    applieszLaTeX.appliesH   sD     	n!=!= 	4S!! 	45r"   Dict[str, Any]c                    | j         dk    r5t          j        dd|d                   }t          j        dd|          |d<   t                                          |          S )Nr&   z(\$\$)(.*?)(\$\$)z\[\2\]r.   z(\$)(.*?)(\$)z\(\2\))r-   resubsuper_process_param_change)selfparamsmsgr   s      r    r=   zLaTeX._process_param_changeQ   sZ    =I%%&-y&:JKKC!v&6	3GGF8ww,,V444r"   rootr   commComm | NoneType[Model]c                    | j         }|!dt          j        v rdt          j        vrd}nd}|dk    rdnd}t          d| |t	          |t
                    |          S )Nzpanel.models.mathjaxzpanel.models.katexr&   r%   KaTeXMathJaxzpanel.models.)r-   r   r   r   r   r   )r>   rA   rB   modulemodels        r    _get_model_typezLaTeX._get_model_typeX   sq    >%449MUXU`9`9`" !W,,)1115*T;:W:WY]^^^r"   r*   r   Model | Noneparentc                    |                      ||          | _         | j        di |                     |          }|p|}||f| j        |j        d         <   |S )Nid )rJ   _bokeh_model_get_properties_modelsref)r>   r*   rA   rL   rB   rI   s         r    
_get_modelzLaTeX._get_modelb   sf     !00t<<!!>>D$8$8$=$=>>}u(-vTXd^$r"   c                    |d}nSt          |d          r|                                }n.t          |          rdd l}d|                    |          z   dz   }t          |          S )N r4   r   $)r.   )r5   r4   r!   r   latexdict)r>   r   r   s      r    _transform_objectzLaTeX._transform_objectl   sx    ;CCS.)) 	,""$$CC3 	,LLLu{{3'''+C3r"   )r   r   r   r2   )r   r8   )rA   r   rB   rC   r   rD   )NNN)
r*   r   rA   rK   rL   rK   rB   rC   r   r   )r   r   r   r8   )__name__
__module____qualname____doc__paramObjectSelectorr-   r+   __annotations__r/   r0   r   r1   classmethodr7   r=   rJ   rT   rZ   __classcell__)r   s   @r    r$   r$   $   s]         $ $u#DT-4i,@ G@A A AH
 /3H2222 F3 3G      $H#### """)L        [5 5 5 5 5 5_ _ _ _ 379=                   r"   r$   )r   r   r   r   )r^   
__future__r   r:   r   typingr   r   r   r   r   r	   r
   r_   pyviz_commsr   r   io.resourcesr   utilr   baser   bokeh.documentr   bokeh.modelr   r!   r$   rO   r"   r    <module>rl      sf    # " " " " " 				 



                   ) ) ) ) ) ) ) ) # # # # # #             "''''''!!!!!!   P  P  P  P  P I P  P  P  P  P r"   