# AUTO GENERATED FILE - DO NOT EDIT

from dash.development.base_component import Component, _explicitize_args


class Map(Component):
    """A Map component.
Map is a wrapper of Map in react-leaflet.
It takes similar properties to its react-leaflet counterpart.

Keyword arguments:
- children (a list of or a singular dash component, string or number; optional): The children of this component (dynamic)
- animate (boolean; optional): If true, panning will always be animated if possible. If false, it will not 
animate panning, either resetting the map view if panning more than a screen
away, or just setting a new offset for the map pane (except for panBy which 
always does the latter).
- duration (number; optional): Duration of animated panning, in seconds.
- easeLinearity (number; optional): Easing of the inertia
- noMoveStart (boolean; optional): If true, panning won't fire movestart event on start (used internally for panning 
inertia).
- bounds (list of list of numberss; optional): Sets a map view that contains the given geographical bounds with the maximum zoom 
level possible.
- boundsOptions (dict; optional): Object with the following entries:

paddingTopLeft: Sets the amount of padding in the top left corner of a map container 
                that shouldn't be accounted for when setting the view to fit bounds. 
                Useful if you have some control overlays on the map like a sidebar 
                and you don't want them to obscure objects you're zooming to.
paddingBottomRight: The same for the bottom right corner of the map.
padding: Equivalent of setting both top left and bottom right padding to the same value.
maxZoom: The maximum possible zoom to use.
- boxZoom (boolean; optional): Whether the map can be zoomed to a rectangular area specified by dragging 
the mouse while pressing the shift key.
- center (list of numbers; default [56, 10]): Sets the geographic center of the map
- doubleClickZoom (boolean | string; optional): Whether the map can be zoomed in by double clicking on it and zoomed out by 
double clicking while holding shift. If passed 'center', double-click zoom 
will zoom to the center of the view regardless of where the mouse was.
Defaults to true.
- dragging (boolean; optional): Whether the map be draggable with mouse/touch or not.
- keyboard (boolean; optional): Makes the map focusable and allows users to navigate the map with keyboard 
arrows and +/- keys.
- maxBounds (list of list of numberss; optional): When this option is set, the map restricts the view to the given geographical bounds, 
bouncing the user back if the user tries to pan outside the view. To set the 
restriction dynamically, use setMaxBounds method.
- scrollWheelZoom (boolean | string; optional): Whether the map can be zoomed by using the mouse wheel. If passed 'center', 
it will zoom to the center of the view regardless of where the mouse was.
- useFlyTo (boolean; optional): Boolean to control whether to use flyTo functions for bounds and center. 
If false map.fitBounds and map.setView will be used. If true map.flyToBounds 
and map.flyTo will be used. Defaults to false.
- tap (boolean; optional): Enables mobile hacks for supporting instant taps (fixing 200ms click delay on 
iOS/Android) and touch holds (fired as contextmenu events).
- touchZoom (dict; optional): Whether the map can be zoomed by touch-dragging with two fingers. If passed 
'center', it will zoom to the center of the view regardless of where the touch 
events (fingers) were. Enabled for touch-capable web browsers except for old 
Androids.
- viewport (dict; optional): Sets the viewport, which is an object containing 'center' and 'zoom'.
- zoom (number; default 6): Sets the map zoom level
- preferCanvas (boolean; optional): Whether Paths should be rendered on a Canvas renderer. By default,
all Paths are rendered in a SVG renderer.
- attributionControl (boolean; optional): Whether a attribution control is added to the map by default.
- zoomControl (boolean; optional): Whether a zoom control is added to the map by default.
- closePopupOnClick (boolean; optional): Set it to false if you don't want popups to close when user clicks the map.
- zoomSnap (number; optional): Forces the map's zoom level to always be a multiple of this, particularly
right after a fitBounds() or a pinch-zoom. By default, the zoom level 
snaps to the nearest integer; lower values (e.g. 0.5 or 0.1) allow for 
greater granularity. A value of 0 means the zoom level will not be snapped 
after fitBounds or a pinch-zoom.
- zoomDelta (number; optional): Controls how much the map's zoom level will change after a zoomIn(), 
zoomOut(), pressing + or - on the keyboard, or using the zoom controls. 
Values smaller than 1 (e.g. 0.5) allow for greater granularity.
- trackResize (boolean; optional): Whether the map automatically handles browser window resize to update itself.
- crs (dict; optional): The Coordinate Reference System to use. Don't change this if you're not sure 
what it means.
- minZoom (number; optional): Minimum zoom level of the map. If not specified and at least one GridLayer or 
TileLayer is in the map, the lowest of their minZoom options will be used instead.
- maxZoom (number; optional): Maximum zoom level of the map. If not specified and at least one GridLayer or 
TileLayer is in the map, the highest of their maxZoom options will be used instead.
- renderer (dict; optional): The default method for drawing vector layers on the map. L.SVG or L.Canvas by default 
depending on browser support.
- zoomAnimation (boolean; optional): Whether the map zoom animation is enabled. By default it's enabled in all browsers 
that support CSS3 Transitions except Android.
- zoomAnimationThreshold (number; optional): Won't animate zoom if the zoom difference exceeds this value.
- fadeAnimation (boolean; optional): Whether the tile fade animation is enabled. By default it's enabled in all browsers 
that support CSS3 Transitions except Android.
- markerZoomAnimation (boolean; optional): Whether markers animate their zoom with the zoom animation, if disabled they will 
disappear for the length of the animation. By default it's enabled in all browsers 
that support CSS3 Transitions except Android.
- transform3DLimit (number; optional): Defines the maximum size of a CSS translation transform. The default value should 
not be changed unless a web browser positions layers in the wrong place after doing 
a large panBy.
- inertia (boolean; optional): If enabled, panning of the map will have an inertia effect where the map builds 
momentum while dragging and continues moving in the same direction for some time. 
Feels especially nice on touch devices. Enabled by default unless running on old 
Android devices.
- inertiaDeceleration (number; optional): The rate with which the inertial movement slows down, in pixels/second.
- inertiaMaxSpeed (number; optional): Max speed of the inertial movement, in pixels/second.
- worldCopyJump (boolean; optional): With this option enabled, the map tracks when you pan to another "copy" of 
the world and seamlessly jumps to the original one so that all overlays like 
markers and vector layers are still visible.
- maxBoundsViscosity (number; optional): If maxBounds is set, this option will control how solid the bounds are when 
dragging the map around. The default value of 0.0 allows the user to drag 
outside the bounds at normal speed, higher values will slow down map dragging 
outside bounds, and 1.0 makes the bounds fully solid, preventing the user from 
dragging outside the bounds.
- keyboardPanDelta (number; optional): Amount of pixels to pan when pressing an arrow key.
- wheelDebounceTime (number; optional): Limits the rate at which a wheel can fire (in milliseconds). By default user 
can't zoom via wheel more often than once per 40 ms.
- wheelPxPerZoomLevel (number; optional): How many scroll pixels (as reported by L.DomEvent.getWheelDelta) mean a change
of one full zoom level. Smaller values will make wheel-zooming faster (and vice 
versa).
- tapTolerance (number; optional): The max number of pixels a user can shift his finger during touch for it to 
be considered a valid tap.
- bounceAtZoomLimits (boolean; optional): Set it to false if you don't want the map to zoom beyond min/max zoom and then 
bounce back when pinch-zooming.
- id (string; optional): The ID used to identify this component in Dash callbacks (dynamic)
- style (dict; default {'width': "100%", 'height': "100%", "position": "relative"}): The CSS style of the component (dynamic)
- className (string; optional): The class name of the component (dynamic)
- attribution (string; optional): The attribution string for the component (dynamic)
- click_lat_lng (list of numbers; optional): Dash callback property. Receives [lat, lng] upon click.
- dbl_click_lat_lng (list of numbers; optional): Dash callback property. Receives [lat, lng] upon double click.
- location_lat_lon_acc (list of numbers; optional): Dash callback property. Receives [lat, lng, accuracy] when user location is found."""
    @_explicitize_args
    def __init__(self, children=None, animate=Component.UNDEFINED, duration=Component.UNDEFINED, easeLinearity=Component.UNDEFINED, noMoveStart=Component.UNDEFINED, bounds=Component.UNDEFINED, boundsOptions=Component.UNDEFINED, boxZoom=Component.UNDEFINED, center=Component.UNDEFINED, doubleClickZoom=Component.UNDEFINED, dragging=Component.UNDEFINED, keyboard=Component.UNDEFINED, maxBounds=Component.UNDEFINED, scrollWheelZoom=Component.UNDEFINED, useFlyTo=Component.UNDEFINED, tap=Component.UNDEFINED, touchZoom=Component.UNDEFINED, viewport=Component.UNDEFINED, zoom=Component.UNDEFINED, preferCanvas=Component.UNDEFINED, attributionControl=Component.UNDEFINED, zoomControl=Component.UNDEFINED, closePopupOnClick=Component.UNDEFINED, zoomSnap=Component.UNDEFINED, zoomDelta=Component.UNDEFINED, trackResize=Component.UNDEFINED, crs=Component.UNDEFINED, minZoom=Component.UNDEFINED, maxZoom=Component.UNDEFINED, renderer=Component.UNDEFINED, zoomAnimation=Component.UNDEFINED, zoomAnimationThreshold=Component.UNDEFINED, fadeAnimation=Component.UNDEFINED, markerZoomAnimation=Component.UNDEFINED, transform3DLimit=Component.UNDEFINED, inertia=Component.UNDEFINED, inertiaDeceleration=Component.UNDEFINED, inertiaMaxSpeed=Component.UNDEFINED, worldCopyJump=Component.UNDEFINED, maxBoundsViscosity=Component.UNDEFINED, keyboardPanDelta=Component.UNDEFINED, wheelDebounceTime=Component.UNDEFINED, wheelPxPerZoomLevel=Component.UNDEFINED, tapTolerance=Component.UNDEFINED, bounceAtZoomLimits=Component.UNDEFINED, id=Component.UNDEFINED, style=Component.UNDEFINED, className=Component.UNDEFINED, attribution=Component.UNDEFINED, click_lat_lng=Component.UNDEFINED, dbl_click_lat_lng=Component.UNDEFINED, location_lat_lon_acc=Component.UNDEFINED, **kwargs):
        self._prop_names = ['children', 'animate', 'duration', 'easeLinearity', 'noMoveStart', 'bounds', 'boundsOptions', 'boxZoom', 'center', 'doubleClickZoom', 'dragging', 'keyboard', 'maxBounds', 'scrollWheelZoom', 'useFlyTo', 'tap', 'touchZoom', 'viewport', 'zoom', 'preferCanvas', 'attributionControl', 'zoomControl', 'closePopupOnClick', 'zoomSnap', 'zoomDelta', 'trackResize', 'crs', 'minZoom', 'maxZoom', 'renderer', 'zoomAnimation', 'zoomAnimationThreshold', 'fadeAnimation', 'markerZoomAnimation', 'transform3DLimit', 'inertia', 'inertiaDeceleration', 'inertiaMaxSpeed', 'worldCopyJump', 'maxBoundsViscosity', 'keyboardPanDelta', 'wheelDebounceTime', 'wheelPxPerZoomLevel', 'tapTolerance', 'bounceAtZoomLimits', 'id', 'style', 'className', 'attribution', 'click_lat_lng', 'dbl_click_lat_lng', 'location_lat_lon_acc']
        self._type = 'Map'
        self._namespace = 'dash_leaflet'
        self._valid_wildcard_attributes =            []
        self.available_properties = ['children', 'animate', 'duration', 'easeLinearity', 'noMoveStart', 'bounds', 'boundsOptions', 'boxZoom', 'center', 'doubleClickZoom', 'dragging', 'keyboard', 'maxBounds', 'scrollWheelZoom', 'useFlyTo', 'tap', 'touchZoom', 'viewport', 'zoom', 'preferCanvas', 'attributionControl', 'zoomControl', 'closePopupOnClick', 'zoomSnap', 'zoomDelta', 'trackResize', 'crs', 'minZoom', 'maxZoom', 'renderer', 'zoomAnimation', 'zoomAnimationThreshold', 'fadeAnimation', 'markerZoomAnimation', 'transform3DLimit', 'inertia', 'inertiaDeceleration', 'inertiaMaxSpeed', 'worldCopyJump', 'maxBoundsViscosity', 'keyboardPanDelta', 'wheelDebounceTime', 'wheelPxPerZoomLevel', 'tapTolerance', 'bounceAtZoomLimits', 'id', 'style', 'className', 'attribution', 'click_lat_lng', 'dbl_click_lat_lng', 'location_lat_lon_acc']
        self.available_wildcard_properties =            []

        _explicit_args = kwargs.pop('_explicit_args')
        _locals = locals()
        _locals.update(kwargs)  # For wildcard attrs
        args = {k: _locals[k] for k in _explicit_args if k != 'children'}

        for k in []:
            if k not in args:
                raise TypeError(
                    'Required argument `' + k + '` was not specified.')
        super(Map, self).__init__(children=children, **args)
