Ë
    êñi>.  ã                   ó¸   — 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	 ddl
mZ dd	lmZ dd
lmZ ddlmZmZmZ dZd„ Zdej,                  v Z G d„ de«      Zy)é    Né   )Ú	JSONMixin)ÚLayeré   )Údeck_to_html)Úsettings)ÚView)Ú	ViewState)ÚBaseMapProvider)ÚDARKÚget_from_map_identifierÚget_default_map_identifierÚ__MAP_STYLE__c                  óJ   — 	 ddl m}   | «        y# t        t        f$ r Y yw xY w)Nr   ©ÚDeckGLWidgetTF)Úwidgetr   ÚImportErrorÚNotImplementedErrorr   s    úV/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/pydeck/bindings/deck.pyÚhas_jupyter_extrar      s*   € ðÝ)áŒØøÜÔ,Ð-ò Ùðús   ‚ �"¡"zgoogle.colabc                   ó2  — e Zd Zd edd¬«      ged eddd¬«      dd	dddej                  j                  ddd
dfd„Z	e
d„ «       Zej                  ddgej                  ddgej                  dgej                  g iZddefd„Zd„ Zd„ Z	 	 	 	 	 	 	 dd„Zd„ Zy)ÚDeckNÚMapViewT)ÚtypeÚ
controllerr   r   )ÚlatitudeÚ	longitudeÚzoomú100%éô  Fc                 ó„  — g | _         t        |t        «      r| j                   j                  |«       n|xs g | _         || _        || _        || _        |xs i }|	| _        |
| _        |rt        |«      j                  «       nd| _        || _        || _        || _        t        «       r”ddlm}  |«       | _        t&        j(                  | j$                  _        t&        j*                  | j$                  _        || j$                  _        || j$                  _        || j$                  _        || j$                  _        | j3                  |«       d}t        |t4        «      r3|t6        j8                  j:                  k(  sJ |«       ‚|| _        || _"        y|r|t>        k(  rtA        |«      }tC        ||«      | _        || _"        y)aÑ  This is the renderer and configuration for a deck.gl visualization, similar to the
        `Deck <https://deck.gl/docs/api-reference/core/deck>`_ class from deck.gl.
        Pass `Deck` a Mapbox API token to display a basemap; see the notes below.

        Parameters
        ----------

        layers : pydeck.Layer or list of pydeck.Layer, default None
            List of :class:`pydeck.bindings.layer.Layer` layers to render.
        views : list of pydeck.View, default ``[pydeck.View(type="MapView", controller=True)]``
            List of :class:`pydeck.bindings.view.View` objects to render.
        api_keys : dict, default None
            Dictionary of geospatial API service providers, where the keys are ``mapbox``, ``google_maps``, or ``carto``
            and the values are the API key. Defaults to None if not set. Environment variables are checked automatically:
            for Mapbox, ``MapboxAccessToken`` (deck.gl convention) or ``MAPBOX_API_KEY``; for Google Maps,
            ``GoogleMapsAPIKey`` (deck.gl convention) or ``GOOGLE_MAPS_API_KEY``; for Carto, ``CARTO_API_KEY``.
            The deck.gl convention is checked first, so if you already have ``MapboxAccessToken`` set for other
            deck.gl projects, pydeck will pick it up.
        map_provider : str, default 'carto'
            If multiple API keys are set (e.g., both Mapbox and Google Maps), inform pydeck which basemap provider to prefer.
            Values can be ``carto``, ``mapbox``, ``google_maps``, or ``maplibre``.
        map_style : str or dict, default 'dark'
            One of 'light', 'dark', 'road', 'satellite', 'dark_no_labels', and 'light_no_labels', a URI for a basemap
            style, which varies by provider, or a dict that follows the Mapbox style `specification <https://docs.mapbox.com/mapbox-gl-js/style-spec/>`_.
            If ``map_provider='google_maps'``, the default is the ``roadmap`` map type.
            if ``map_provider='mapbox'``, the default is `Mapbox Dark <https://www.mapbox.com/maps/dark>`_ style.
            Otherwise, the default is Carto's Dark Matter map.
            For Mapbox examples, see  Mapbox's `gallery <https://www.mapbox.com/gallery/>`_.
            If not using a basemap, set ``map_provider=None``.
        initial_view_state : pydeck.ViewState, default ``pydeck.ViewState(latitude=0, longitude=0, zoom=1)``
            Initial camera angle relative to the map, defaults to a fully zoomed out 0, 0-centered map
            To compute a viewport from data, see :func:`pydeck.data_utils.viewport_helpers.compute_view`
        height : int, default 500
            Height of Jupyter notebook cell, in pixels.
        width : int` or string, default '100%'
            Width of visualization, in pixels (if a number) or as a CSS value string.
        tooltip : bool or dict of {str: str}, default True
            If ``True``/``False``, toggles a default tooltip on visualization hover.
            Layers must have ``pickable=True`` set in order to display a tooltip.
            For more advanced usage, the user can pass a dict to configure more custom tooltip features.
            Further documentation is `here <tooltip.html>`_.
        show_error : bool, default False
            If ``True``, will display the error in the rendered output.
            Otherwise, will only show error in browser console.
        map_projection : str, default None
            Map projection to use with ``map_provider='maplibre'``.
            Values can be ``'globe'`` or ``'mercator'``. Defaults to ``'mercator'`` if not specified.
            Only supported with ``map_provider='maplibre'``.

        .. _Deck:
            https://deck.gl/docs/api-reference/core/deck
        .. _gallery:
            https://www.mapbox.com/gallery/
        Nr   r   zQThe map_provider parameter must be 'mapbox' when map_style is provided as a dict.)#ÚlayersÚ
isinstancer   ÚappendÚviewsÚwidgetsÚinitial_view_stateÚdescriptionÚeffectsÚstrÚlowerÚmap_providerÚmap_projectionÚ_tooltipÚ_show_errorr   r   r   Údeck_widgetÚpydeck_settingsÚcustom_librariesÚconfigurationÚheightÚwidthÚtooltipÚ_set_api_keysÚdictr   ÚMAPBOXÚvalueÚ	map_styleÚ_DEFAULT_MAP_STYLE_SENTINELr   r   Ú
parameters)Úselfr#   r&   r<   Úapi_keysr(   r6   r5   r7   r)   r*   r-   r>   r'   Ú
show_errorr.   r   Úcustom_map_style_errors                     r   Ú__init__zDeck.__init__   s  € ðP ˆŒÜ�fœeÔ$Ø�K‰K×Ñ˜vÕ&à š, BˆDŒKØˆŒ
ØˆŒà"4ˆÔà’>˜rˆà&ˆÔØˆŒÙ9EœC Ó-×3Ñ3Ô5È4ˆÔØ,ˆÔØˆŒØ%ˆÔäÔÝ-á+›~ˆDÔÜ0?×0PÑ0PˆD×ÑÔ-Ü-<×-JÑ-JˆD×ÑÔ*à&,ˆD×ÑÔ#Ø%*ˆD×ÑÔ"Ø'.ˆD×ÑÔ$Ø,8ˆD×ÑÔ)à×Ñ˜8Ô$à!tÐä�i¤Ô&Ø¤?×#9Ñ#9×#?Ñ#?Ò?ÐWÐAWÓWÐ?Ø&ˆDŒNð %ˆ�ñ	  	Ô-HÒ HÜ6°|ÓD�	Ü4°YÀÓMˆDŒNà$ˆ�ó    c                 ó\   — | j                   j                  sy | j                   j                  S ©N)r1   Úselected_data©r?   s    r   rG   zDeck.selected_data”   s&   € à×Ñ×-Ò-ØØ×Ñ×-Ñ-Ð-rD   ÚMapboxAccessTokenÚMAPBOX_API_KEYÚGoogleMapsAPIKeyÚGOOGLE_MAPS_API_KEYÚCARTO_API_KEYr@   c                 óp  — |D ]  }|xr t        |«       Œ t         D ]—  }|j                  › d�}|j                  |j                  «      }|s:| j                  j                  |g «      D ]  }t	        j
                  |«      }|sŒ n t        | ||«       t        «       sŒ�t        | j                  ||«       Œ™ y)zQSets API key for base map provider for both HTML embedding and the Jupyter widgetÚ_keyN)	r   r;   ÚgetÚ_PROVIDER_ENV_VARSÚosÚgetenvÚsetattrr   r1   )r?   r@   ÚkÚproviderÚ	attr_nameÚ
attr_valueÚenv_vars          r   r8   zDeck._set_api_keys£   s²   € àò 	%ˆAØÒ$”/ !Ó$ùð	%ä'ò 
	AˆHØ#Ÿ>™>Ð*¨$Ð/ˆIØ!Ÿ™ h§n¡nÓ5ˆJÙØ#×6Ñ6×:Ñ:¸8ÀRÓHò �GÜ!#§¡¨7Ó!3�JÚ!Ùðô �D˜) ZÔ0Ü Õ"Ü˜×(Ñ(¨)°ZÕ@ñ
	ArD   c                 ó&   — | j                  d¬«      S )z2Display current Deck object for a Jupyter notebookT©Únotebook_display)Úto_htmlrH   s    r   Úshowz	Deck.show³   s   € ð �|‰|¨Tˆ|Ó2Ð2rD   c                 ó   — t        d«      ‚)a  Update a deck.gl map to reflect the current configuration

        For example, if you've modified data passed to Layer and rendered the map using `.show()`,
        you can call `update` to change the data on the map.

        Intended for use in a Jupyter environment.
        zAJupyter-specific features not currently supported in pydeck v0.9.)r   rH   s    r   ÚupdatezDeck.update½   s   € ô, "Ð"eÓfÐfrD   c                 óâ   — | j                  «       }	t        |	f| j                  | j                  |||||| j                  t
        j                  t
        j                  ||| j                  dœ|¤Ž}
|
S )a„  Write a file and loads it to an iframe, if in a Jupyter environment;
        otherwise, write a file and optionally open it in a web browser

        Parameters
        ----------
        filename : str, default None
            Name of the file.
        open_browser : bool, default False
            Whether a browser window will open or not after write.
        notebook_display : bool, default None
            Display the HTML output in an iframe if True. Set to True automatically if rendering in Jupyter.
        iframe_width : str or int, default '100%'
            Width of Jupyter notebook iframe in pixels, if rendered in a Jupyter environment.
        iframe_height : int, default 500
            Height of Jupyter notebook iframe in pixels, if rendered in Jupyter or Colab.
        as_string : bool, default False
            Returns HTML as a string, if True and ``filename`` is None.
        css_background_color : str, default None
            Background color for visualization, specified as a string in any format accepted for CSS colors.

        Returns
        -------
        str
            Returns absolute path of the file
        )Ú
mapbox_keyÚgoogle_maps_keyÚfilenameÚopen_browserr\   Úiframe_heightÚiframe_widthr7   r3   r4   Ú	as_stringÚofflinerA   )	Úto_jsonr   rb   rc   r/   r2   r3   r4   r0   )r?   rd   re   r\   rg   rf   rh   ri   ÚkwargsÚ	deck_jsonÚfs              r   r]   zDeck.to_htmlÕ   sz   € ðH —L‘L“Nˆ	ÜØð
à—‘Ø ×0Ñ0ØØ%Ø-Ø'Ø%Ø—M‘MÜ,×=Ñ=Ü)×7Ñ7ØØØ×'Ñ'ñ
ð ñ
ˆð" ˆrD   c                 ó@   — | j                  d¬«      }t        |dd«      S )NTr[   ÚdataÚ )r]   Úgetattr)r?   Úhtmls     r   Ú_repr_html_zDeck._repr_html_  s#   € ð �|‰|¨Tˆ|Ó2ˆÜ�t˜V RÓ(Ð(rD   rF   )NFNr    r!   FF)Ú__name__Ú
__module__Ú__qualname__r	   r=   r
   r   ÚCARTOr;   rC   ÚpropertyrG   r:   ÚGOOGLE_MAPSÚMAPLIBRErQ   r9   r8   r^   r`   r]   rs   © rD   r   r   r      sí   „ ð Ù˜¨tÔ4Ð5Ø-ØÙ$¨a¸1À1ÔEØØØØØØ$×*Ñ*×0Ñ0ØØØØó!s%ðj ñ.ó ð.ð 	×ÑÐ!4Ð6FÐ GØ×#Ñ#Ð&8Ð:OÐ%PØ×Ñ Ð0Ø× Ñ  "ð	ÐñA dó Aò 3ògð4 ØØØØØØó6óp)rD   r   )rR   ÚsysÚ
json_toolsr   Úlayerr   Úio.htmlr   r   r2   Úviewr	   Ú
view_stater
   Úbase_map_providerr   Ú
map_stylesr   r   r   r=   r   ÚmodulesÚin_google_colabr   r{   rD   r   ú<module>r†      sQ   ðÛ 	Û 
å !Ý Ý "Ý 2Ý Ý !Ý .ß QÑ Qð .Ð òð ! C§K¡KÐ/€ôs)ˆ9õ s)rD   