
    g                        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 Zd Zdej                  v Zej"                  j	                  ej"                  j                  ej"                  j%                  e            d      Z e
j*                  e      Z e
j.                  ed	
      Zdj3                  e      ZddZ	 	 	 	 	 	 	 ddZd ZddZd Z	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ y)    N)realpathjoindirname   )DECKGL_SEMVERc                  X    	 t               } | j                  d      S # t        $ r Y yw xY w)NkernelF)get_ipython	has_trait	NameError)ips    C/var/www/openai/venv/lib/python3.12/site-packages/pydeck/io/html.py
in_jupyterr      s/    ]||H%% s    	))c                 4    t        |       t        ur| S | rdS dS )zOSerializes Python booleans to JavaScript. Returns non-boolean values unchanged.truefalse)typebool)py_bools    r   convert_js_boolr      s     G}D 6)')    zgoogle.colabz./templates/T)loadertrim_blockszEhttps://cdn.jsdelivr.net/npm/@deck.gl/jupyter-widget@{}/dist/index.jsc                 p   t        j                  d      }|r,t        dj                  |             dj                  |      S | rQd}t	        t        t        t              |      dd      5 }|j                         }d d d        d	j                        S d
j                  t              S # 1 sw Y   /xY w)N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   RELPATH_TO_BUNDLEfilejss        r   
cdn_pickerr-   '   s    yy*+Hbiijrstm
&(&
#	$ <$wx(*;<cGTX\B U;BB2FF'..w77	 UTs   -B,,B5c           
          t         j                  d      }t         j                  d      }	|	j                  |      }
|j                  ||| t        |      t	        |      |
||      }|S )Nzindex.j2zstyle.j2)css_background_color)r)   )
mapbox_keygoogle_maps_key
json_inputdeckgl_jupyter_widget_bundletooltipcss_textcustom_librariesconfiguration)j2_envget_templaterenderr-   r   )r2   r0   r1   r4   r/   r6   r7   r)   r,   cssr5   html_strs               r   render_json_to_htmlr=   9   sq     
		Z	(B


j
)Czz/CzDHyy'%/%@()#  	H Or   c                 z    dj                  |       }t        j                  d       t        j                  |       y)zGConverts HTML into a temporary file and opens it in the system browser.z	file://{}g      ?N)r$   timesleep
webbrowserr%   )filenameurls     r   display_htmlrD   S   s)    


X
&CJJsOOOCr   c                    t        |t              rd| d}t        j                  |       }d| d| d| d}ddlm} t        j                         5  d}t        j                  d	|
        ||      cd d d        S # 1 sw Y   y xY w)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.displayrG   warningscatch_warningsfilterwarnings)r<   widthheightsrcdociframerG   msgs          r   iframe_with_srcdocrW   [   s    %E7![["F' 8 H F %		 	 	"=#6F| 
#	"	"s   !A==Bc                 p    ddl m}m} d| d| d| d}t         ||             t         ||              y )Nr   )rG   
Javascriptz$google.colab.output.setIframeHeight(z, true, {minHeight: z, maxHeight: z}))rN   rG   rY   display)r<   iframe_heightrG   rY   js_height_snippets        r   render_for_colabr]   q   sP    0>}oMbcpbqq~  @M  N  NQ  RJ()*DNr   c           
      >   t        | |||	||
||      }|rHt        |dd      5 }|j                  |       ddd       |rt        t	        j
                               |
t               }t        rt        ||       y|s|r|S |rt        |||      S y# 1 sw Y   ^xY w)z,Converts deck.gl format JSON to an HTML page)r0   r1   r4   r/   r6   r7   r)   zw+r   r   N)
r=   r%   writerD   r   namer   in_google_colabr]   rW   )	deck_jsonr0   r1   rB   open_browsernotebook_displayr/   r[   iframe_widthr4   r6   r7   	as_stringr)   r<   fs                   r   deck_to_htmlrh   y   s    " #'1)#	H (D73qGGH 4 !&&)*%<=1)	!(L-HH 
 43s   BB)F)NNTNNNF)100%  )NNNFNNrj   ri   TNNFF)!rL   r!   os.pathr   r   r   sysr?   rO   rA   jinja2frontend_semverr   r   r   modulesra   pathabspathr&   TEMPLATES_PATHFileSystemLoader	j2_loaderEnvironmentr8   r$   r(   r-   r=   rD   rW   r]   rh    r   r   <module>rw      s    	 + + 
     +* !CKK/ bggoobggooh.GH.Y#F##N3				9$	?
Q
X
XYf
g8( 4, ,Ir   