U
    ꥡc_                     @   s   d dl Z d dlZd dlmZmZmZ d dlZd dlZd dlZd dl	Z	d dl
Z
ddlmZ dd Zdd Zd	ejkZejejejed
Ze
eZe
jeddZdeZdddZdddZdd ZdddZdd Zd ddZ dS )!    N)realpathjoindirname   )DECKGL_SEMVERc                  C   s.   zt  } | dW S  tk
r(   Y dS X d S )NkernelF)Zget_ipythonZ	has_trait	NameError)ip r
   2/tmp/pip-unpacked-wheel-srr0x9ui/pydeck/io/html.py
in_jupyter   s
    r   c                 C   s   t | tkr| S | rdS dS )Ntruefalse)typebool)Zpy_boolr
   r
   r   convert_js_bool   s    r   zgoogle.colabz./templates/T)loaderZtrim_blockszEhttps://cdn.jsdelivr.net/npm/@deck.gl/jupyter-widget@{}/dist/index.jsFc              	   C   sp   t d}|r(td| dj|dS | rfd}tttt|ddd}| }W 5 Q R X d	|S d
t	S )NZPYDECK_DEV_PORTzRpydeck running in development mode, expecting @deck.gl/jupyter-widget served at {}z<script type='text/javascript' src='http://localhost:{dev_port}/dist/index.js'></script>
<script type='text/javascript' src='http://localhost:{dev_port}/dist/index.js.map'></script>
)dev_portz../nbextension/static/index.jsrutf-8encodingz*<script type='text/javascript'>{}</script>z<script src='{}'></script>)
osgetenvprintformatopenr   r   __file__readCDN_URL)offliner   ZRELPATH_TO_BUNDLEfilejsr
   r
   r   
cdn_picker&   s    

r#   c              
   C   sH   t d}t d}	|	j|d}
|j||| t|dt||
||d}|S )Nzindex.j2zstyle.j2)css_background_color)r    )
mapbox_keygoogle_maps_key
json_inputZdeckgl_jupyter_widget_bundletooltipcss_textcustom_librariesconfiguration)j2_envZget_templaterenderr#   r   )r'   r%   r&   r(   r$   r*   r+   r    r"   cssr)   html_strr
   r
   r   render_json_to_html8   s    



r0   c                 C   s"   d | }td t| dS )zGConverts HTML into a temporary file and opens it in the system browser.z	file://{}g      ?N)r   timesleep
webbrowserr   )filenameurlr
   r
   r   display_htmlR   s    

r6   100%  c              
   C   s~   t |trd| d}t| }d| d| d| d}ddlm} t ( d}tjd	|d
 ||W  5 Q R  S Q R X d S )N"z#
        <iframe
            width=z
            height=z1
            frameborder="0"
            srcdoc="z"
        ></iframe>
    r   )HTMLz-Consider using IPython.display.IFrame insteadignore)message)	
isinstancestrhtmlescapeIPython.displayr:   warningscatch_warningsfilterwarnings)r/   widthheightZsrcdociframer:   msgr
   r
   r   iframe_with_srcdocZ   s    

	
rI   c                 C   s>   ddl m}m} d| d| d}t|| t||  d S )Nr   )r:   
Javascriptz$google.colab.output.setIframeHeight(z, true, {minHeight: z}))rA   r:   rJ   Zdisplay)r/   iframe_heightr:   rJ   Zjs_height_snippetr
   r
   r   render_for_colabp   s    rL   c              
   C   s   t | |||	||
||d}|rRt|ddd}|| W 5 Q R X |rRtt|j |dkr`t }trrt|| dS |s~|r~|S |rt	|||S dS )z,Converts deck.gl format JSON to an HTML page)r%   r&   r(   r$   r*   r+   r    zw+r   r   N)
r0   r   writer6   r   namer   in_google_colabrL   rI   )Z	deck_jsonr%   r&   r4   Zopen_browserZnotebook_displayr$   rK   Ziframe_widthr(   r*   r+   	as_stringr    r/   fr
   r
   r   deck_to_htmlx   s0    
rR   )F)NNTNNNF)r7   r8   )NNNFNNr8   r7   TNNFF)!r?   r   os.pathr   r   r   sysr1   rB   r3   Zjinja2Zfrontend_semverr   r   r   modulesrO   pathabspathr   ZTEMPLATES_PATHZFileSystemLoaderZ	j2_loaderEnvironmentr,   r   r   r#   r0   r6   rI   rL   rR   r
   r
   r
   r   <module>   sR   	



       


             