{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/react-leaflet/es/AttributionControl.js","webpack:///./node_modules/react-leaflet/es/Path.js","webpack:///./node_modules/react-leaflet/es/utils/pick.js","webpack:///./node_modules/react-leaflet/es/Circle.js","webpack:///./node_modules/react-leaflet/es/CircleMarker.js","webpack:///./node_modules/react-leaflet/es/DivOverlay.js","webpack:///./node_modules/react-leaflet/es/FeatureGroup.js","webpack:///./node_modules/react-leaflet/es/GeoJSON.js","webpack:///./node_modules/react-leaflet/es/GridLayer.js","webpack:///./node_modules/react-leaflet/es/ImageOverlay.js","webpack:///./node_modules/react-leaflet/es/LayerGroup.js","webpack:///./node_modules/react-leaflet/es/Pane.js","webpack:///./node_modules/react-leaflet/es/Polygon.js","webpack:///./node_modules/react-leaflet/es/Polyline.js","webpack:///./node_modules/react-leaflet/es/Popup.js","webpack:///./node_modules/react-leaflet/es/Rectangle.js","webpack:///./node_modules/react-leaflet/es/ScaleControl.js","webpack:///./node_modules/react-leaflet/es/SVGOverlay.js","webpack:///./node_modules/react-leaflet/es/TileLayer.js","webpack:///./node_modules/react-leaflet/es/Tooltip.js","webpack:///./node_modules/react-leaflet/es/VideoOverlay.js","webpack:///./node_modules/react-leaflet/es/WMSTileLayer.js","webpack:///./node_modules/react-leaflet/es/ZoomControl.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/images/marker-other-fires.svg","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./src/images/marker-bushfires.svg","webpack:///./src/images/marker-structure-fires.svg","webpack:///./node_modules/react-leaflet/es/MapControl.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/react-leaflet/es/utils/omit.js","webpack:///./src/components/incidents-map/CategoryRadio.js","webpack:///./src/components/incidents-map/Incidents.js","webpack:///./src/components/incidents-map/MapStyles.js","webpack:///./src/components/incidents-map/content/regions.js","webpack:///./src/components/incidents-map/IncidentsMap.js","webpack:///./src/pages/incidents.js","webpack:///./node_modules/react-leaflet/es/MapComponent.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js","webpack:///./node_modules/google-maps/lib/Google.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./src/images/marker-rfa.svg","webpack:///./node_modules/react-leaflet/es/context.js","webpack:///./node_modules/react-leaflet/es/Marker.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/react-leaflet-markercluster/dist/index.js","webpack:///./node_modules/fast-deep-equal/index.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./src/images/marker-false-alarms.svg","webpack:///./src/images/marker-rescues.svg","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./src/images sync ^\\.\\/marker\\-.*\\.svg$","webpack:///./node_modules/react-leaflet/es/LayersControl.js","webpack:///./src/images/marker-crashes.svg","webpack:///./node_modules/react-leaflet/es/MapEvented.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-leaflet/es/MapLayer.js","webpack:///./node_modules/react-leaflet/es/Map.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/react-leaflet-google-v2/dist/react-leaflet-google-v2.min.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/react-leaflet/es/utils/updateClassName.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"names":["$export","$entries","S","entries","it","_MapControl","AttributionControl","apply","this","arguments","prototype","createLeafletElement","props","Attribution","MapControl","OPTIONS","_MapLayer","Path","_this","call","contextValue","leaflet","popupContainer","leafletElement","_proto","componentDidUpdate","prevProps","setStyleIfChanged","getPathOptions","object","reduce","obj","key","setStyle","options","fromProps","toProps","nextStyle","MapLayer","_Path","Circle","center","radius","getOptions","updateLeafletElement","setLatLng","setRadius","CircleMarker","el","_MapComponent","DivOverlay","onClose","forceUpdate","onOpen","_props","Error","_prevProps","updateClassName","_container","className","isOpen","update","onRender","render","_contentNode","children","MapComponent","FeatureGroup","layerContainer","componentDidMount","GeoJSON","data","style","GridLayer","opacity","zIndex","setOpacity","setZIndex","map","maxZoom","minZoom","ImageOverlay","url","bounds","setUrl","setBounds","LayerGroup","idCounter","LEAFLET_PANES","PANE_RE","paneStyles","position","top","right","bottom","left","_Component","Pane","_len","length","args","Array","_key","concat","name","undefined","context","_temp","_ref","pane","getPane","state","Object","keys","forEach","createPane","removePane","componentWillUnmount","isDefault","indexOf","replace","isLeafletPane","getParentPane","setState","remove","_panes","omit","_paneRenderers","createElement","value","Polygon","positions","setLatLngs","Polyline","_DivOverlay","Popup","popup","_ref2","autoPan","_map","_panAnim","_adjustPan","_this$props$leaflet","on","popupopen","onPopupOpen","popupclose","onPopupClose","bindPopup","openOn","off","removeLayer","Rectangle","ScaleControl","Scale","setAttribute","removeAttribute","SVGOverlay","container","document","createElementNS","preserveAspectRatio","viewBox","addLayer","attribution","attributionControl","removeAttribution","addAttribution","get","_GridLayer","TileLayer","Tooltip","tooltip","tooltipopen","onTooltipOpen","tooltipclose","onTooltipClose","bindTooltip","unbindTooltip","VideoOverlay","play","getElement","pause","WMSTileLayer","params","_this$getOptions","WMS","prevUrl","_this$getOptions2","prevParams","_this$getOptions3","setParams","superOptions","test","ZoomControl","Zoom","warning","module","exports","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","i","descriptor","e","LIBRARY","global","fails","$typed","$buffer","ctx","anInstance","propertyDesc","hide","redefineAll","toInteger","toLength","toIndex","toAbsoluteIndex","toPrimitive","has","classof","isObject","toObject","isArrayIter","create","gOPN","f","getIterFn","uid","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","dP","gOPD","RangeError","TypeError","Uint8Array","ArrayProto","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","values","arrayKeys","arrayEntries","arrayLastIndexOf","lastIndexOf","arrayReduce","arrayReduceRight","reduceRight","arrayJoin","join","arraySort","sort","arraySlice","slice","arrayToString","toString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","O","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","set","toOffset","BYTES","offset","validate","C","speciesFromList","list","fromList","index","result","addGetter","internal","_d","$from","source","step","iterator","aLen","mapfn","mapping","iterFn","next","done","push","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","target","start","every","callbackfn","fill","filter","find","predicate","findIndex","searchElement","includes","separator","reverse","middle","Math","floor","some","comparefn","subarray","begin","end","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","len","$iterators","isTAIndex","String","$getDesc","$setDesc","desc","configurable","writable","enumerable","F","$TypedArrayPrototype$","constructor","KEY","wrapper","CLAMPED","NAME","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","that","v","o","getter","round","setter","$offset","$length","byteLength","klass","$len","b","l","iter","Function","$nativeIterator","CORRECT_ITER_NAME","$iterator","G","W","of","from","P","DESCRIPTORS","setToStringTag","Infinity","BaseBuffer","abs","pow","log","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","m","c","eLen","eMax","eBias","rt","s","unpackIEEE754","nBits","NaN","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","store","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","setPosition","addTo","number","Typed","TypedArrayConstructors","split","meta","onFreeze","$freeze","InternalMap","each","redefine","assign","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","getWeak","isExtensible","uncaughtFrozenStore","ufstore","methods","_i","def","$WeakMap","getConstructor","NEED","method","a","_f","keysToOmit","acc","CategoryRadio","label","id","activeCategory","onChange","count","toLowerCase","defaultChecked","htmlFor","Incidents","incidents","incidentIcon","L","Icon","iconUrl","require","iconCreateFunction","cluster","childCount","getChildCount","DivIcon","html","iconSize","Point","coords","Marker","icon","MapStyles","lat","lng","zoom","IncidentsMap","wa","regions","createRef","regionSelect","incidentTypeRadio","initialPosition","useState","incidentsData","initialZoom","controlsCollapsed","useRef","mapControls","toggleButton","useEffect","handleRegionChange","region","item","current","flyTo","animate","duration","typeChange","leafletCheckboxes","querySelectorAll","checked","click","addEventListener","window","hammer","Hammer","direction","DIRECTION_HORIZONTAL","ev","handleCollapse","removeEventListener","gsap","to","translateX","ease","scaleX","overflow","controlsWidth","offsetWidth","scrollTop","tabIndex","category","aria-hidden","ref","aria-label","onClick","Map","preferCanvas","zoomControl","LayersControl","googlekey","maptype","styles","Overlay","title","intro","mapView","_MapEvented","aFunction","anObject","bind","rConstruct","Reflect","construct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","instance","_assertThisInitialized","self","ReferenceError","MarkerClusterGroup","extend","maxClusterRadius","clusterPane","spiderfyOnMaxZoom","showCoverageOnHover","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animateAddingMarkers","spiderfyDistanceMultiplier","spiderLegPolylineOptions","weight","color","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","initialize","Util","setOptions","_defaultIconCreateFunction","_featureGroup","featureGroup","addEventParent","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_queue","_childMarkerEventHandlers","_childMarkerDragStart","_childMarkerMoved","_childMarkerDragEnd","DomUtil","TRANSITION","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","layer","addLayers","getLatLng","fire","hasLayer","_unspiderfy","_addLayer","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","visibleLayer","currentZoom","_zoom","__parent","contains","_animationAddLayer","_animationAddLayerNonAnimated","removeLayers","_unspiderfyLayer","_removeLayer","clusterShow","_arraySplice","latlng","_latlng","layersArray","skipLayerAddEvent","isArray","fg","npg","chunked","originalArray","started","Date","getTime","process","_extractNonGroupLayers","markers","getAllChildMarkers","otherMarker","_recursivelyAddChildrenToMap","setTimeout","needsClustering","layersArray2","l2","clearLayers","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","eachLayer","marker","_generateInitialClusters","getBounds","LatLngBounds","_bounds","thisNeedsRemoving","needsRemoving","getLayers","layers","getLayer","parseInt","stamp","anArray","_group","zoomToShowLayer","callback","showMarker","_icon","once","spiderfy","panTo","zoomToBounds","onAdd","isFinite","getMaxZoom","_maxLat","crs","projection","MAX_LATITUDE","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_moveEnd","_spiderfierOnAdd","_bindEvents","onRemove","_unbindEvents","_mapPane","_spiderfierOnRemove","_hideCoverage","getVisibleParent","vMarker","splice","_removeFromGridUnclustered","z","gridUnclustered","getMinZoom","removeObject","project","__dragStart","_ignoreMove","isPopupOpen","_popup","_moveChild","oldLatLng","openPopup","dragStart","removeFromDistanceGrid","dontUpdateMap","gridClusters","_markers","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","oel","parentNode","propagate","originalEvent","relatedTarget","listens","_zoomOrSpiderfy","_showCoverage","bottomCluster","keyCode","focus","_shownPolygon","_spiderfied","getConvexHull","_mergeSplitClusters","newBounds","_recursivelyRemoveChildrenFromMap","ceil","radiusFn","DistanceGrid","markerPoint","_overrideMarkerIcon","closest","getNearObject","_addChild","parent","newCluster","lastParent","_updateIcon","_enqueue","fn","_queueTimeout","_processQueue","clearTimeout","mapZoom","intersects","_animationStart","_animationZoomIn","_animationZoomOut","Browser","mobile","_checkBoundsMaxLat","pad","_mapBoundsInfinite","maxLat","getNorth","_northEast","getSouth","_southWest","_addToMap","group","output","include","LatLng","previousZoomLevel","newZoomLevel","_recursively","startPos","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","n","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","me","_setPos","latLngToLayerPoint","_recursivelyAnimateChildrenInAndAddSelfToMap","falseFn","body","markerClusterGroup","storageArray","ignoreDraggedMarker","fitBoundsOptions","childClusters","boundsZoom","getBoundsZoom","getZoom","newClusters","setView","fitBounds","setIcon","createIcon","_iconObj","createShadow","new1","isNotificationFromChild","_setClusterCenter","child","_resetBounds","childLatLng","latSum","lngSum","totalCount","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","cm","mapMinZoom","zoomLevel","nm","_restorePosition","k","previousBounds","exceptBounds","boundsToApplyTo","zoomLevelToStart","zoomLevelToStop","runAtEveryLevel","runAtBottomLevel","backup","cellSize","_cellSize","_sqCellSize","_grid","_objectPoint","point","x","_getCoord","y","grid","row","cell","updateObject","eachObject","dist","objectPoint","closestDistSq","_sqDist","coord","p","p2","dx","dy","QuickHull","getDistant","cpt","bl","vY","findMostDistantPointFromBaseLine","baseLine","latLngs","pt","d","maxD","maxPt","newPoints","maxPoint","buildConvexHull","convexHullBaseLines","t","minLat","maxLng","minLng","maxLatPt","minLatPt","maxLngPt","minLngPt","minPt","childMarkers","points","_2PI","PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","zoomDetails","_animationUnspiderfy","centerPt","angle","legLength","angleStep","res","max","cos","sin","_round","separation","lengthFactor","_preSpiderfyLatlng","setZIndexOffset","_spiderLeg","leg","newPos","legOptions","layerPointToLatLng","legPath","thisLayerLatLng","thisLayerPos","svg","SVG","finalLegOpacity","_path","getTotalLength","strokeDasharray","strokeDashoffset","nonAnimatable","_latLngToNewLayerPoint","closePopup","stillThereChildCount","_unspiderfyWrapper","zoomAnimation","_unspiderfyZoomStart","touch","getRenderer","_unspiderfyZoomAnim","hasClass","refreshClusters","_layers","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","directlyRefreshClusters","factory","script","google","loading","callbacks","onLoadEvents","originalCreateLoaderMethod","GoogleMapsLoader","VERSION","WINDOW_CALLBACK_NAME","_googleMockApiObject","load","ready","createLoader","createUrl","appendChild","isLoaded","URL","LIBRARIES","CLIENT","CHANNEL","LANGUAGE","REGION","release","parentElement","removeChild","onLoad","makeMock","init","endPos","getKeys","toIObject","isEnum","isEntries","leafletContext","useLeaflet","LeafletConsumer","Consumer","LeafletProvider","Provider","withLeaflet","WrappedComponent","WithLeafletComponent","LeafletComponent","zIndexOffset","draggable","dragging","enable","disable","forOf","$has","_l","UncaughtFrozenStore","findUncaughtFrozen","entry","IS_MAP","ADDER","iterable","_t","_reactLeaflet","_leaflet","__esModule","_typeof","Symbol","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_e","_s","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_classCallCheck","Constructor","_defineProperties","_possibleConstructorReturn","_isNativeReflectConstruct","sham","Proxy","_getPrototypeOf","setPrototypeOf","__proto__","_setPrototypeOf","subClass","superClass","_inherits","Derived","protoProps","staticProps","_super","Super","NewTarget","clusterProps","clusterEvents","_ref3","propName","prop","startsWith","_ref4","_ref5","eventAsProp","clusterEvent","substring","_default","equal","RegExp","flags","valueOf","hasOwnProperty","_inheritsLoose","trunc","webpackContext","req","webpackContextResolve","__webpack_require__","code","resolve","ControlledLayer","removeLayerControl","BaseLayer","_ControlledLayer","_this2","_this2$props","addBaseLayer","_ControlledLayer2","_this3","_this3$props","addOverlay","_this4","controlProps","_proto2","Layers","collapsed","collapse","expand","_this5","_this6","LayersControlExport","EVENTS_RE","MapEvented","_leafletEvents","extractLeafletEvents","bindLeafletEvents","match","prev","diff","fireLeafletEvent","g","h","q","r","w","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_fromProps","_toProps","OTHER_PROPS","normalizeCenter","pos","lon","getCenter","viewport","onViewportChange","_updating","onViewportChanged","boundsOptions","boxZoom","doubleClickZoom","keyboard","maxBounds","scrollWheelZoom","tap","touchZoom","useFlyTo","getZoomPanOptions","shouldUpdateCenter","setZoom","shouldUpdateBounds","setMaxBounds","flyToBounds","getFitBoundsOptions","easeLinearity","noMoveStart","zoomPanOptions","_ready","whenReady","_initEvents","_stop","equals","bindContainer","_defineProperty","toStringTag","WeakMap","GoogleLayer","gridLayer","googleMutant","string","isRequired","asclientid","bool","channel","resetWarningCache","array","func","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","GoogleMutant","Evented","tileSize","subdomains","errorTileUrl","continuousWorld","noWrap","maxNativeZoom","version","libraries","_type","_initMutant","_update","onAfterLoad","_tileCallbacks","_freshTiles","_imagesPerTile","createTile","_createMultiTile","_createSingleTile","_initMutantContainer","_reset","_handleZoomAnim","_resize","_controlCorners","bottomright","marginBottom","_mutantContainer","getAttribution","setElementSize","width","height","pointerEvents","getContainer","getSize","_attachObserver","_mutantCenter","maps","tilt","mapTypeId","MapTypeId","disableDefaultUI","keyboardShortcuts","disableDoubleClickZoom","scrollwheel","streetViewControl","backgroundColor","_mutant","mapObject","MutationObserver","_onMutations","observe","childList","subtree","addedNodes","HTMLImageElement","_onMutatedImage","HTMLElement","_roadRegexp","_satRegexp","_staticRegExp","_tileCoordsToKey","pop","replaceChild","requestAnimFrame","dataset","pending","_checkZoomLevels","_initContainer","setCenter","event","trigger","_removeTile","min","inc","_createClass","splitClassName","Boolean","addClassName","cls","addClass","removeClassName","removeClass","nextClassName","prevClassName","_extends","exportName","VENDOR_PREFIXES","TEST_ELEMENT","now","setTimeoutContext","timeout","bindFn","invokeArrayArg","arg","deprecate","message","deprecationMessage","stack","console","warn","nextKey","dest","merge","inherit","base","properties","childP","baseP","boolOrFn","val","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","removeEventListeners","hasParent","inStr","str","trim","inArray","findByKey","toArray","uniqueArray","results","prefixed","property","prefix","camelProp","toUpperCase","_uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","navigator","userAgent","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","timeStamp","deltaTime","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","last","lastInterval","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","clientX","clientY","p1","sqrt","atan2","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","isValid","threshold","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","add","stop","force","stopped","curRecognizer","existing","events","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press"],"mappings":"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","file":"component---src-pages-incidents-js-9809382184190a0a33cf.js","sourcesContent":["// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Control } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapControl from './MapControl';\n\nvar AttributionControl = /*#__PURE__*/function (_MapControl) {\n _inheritsLoose(AttributionControl, _MapControl);\n\n function AttributionControl() {\n return _MapControl.apply(this, arguments) || this;\n }\n\n var _proto = AttributionControl.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new Control.Attribution(props);\n };\n\n return AttributionControl;\n}(MapControl);\n\nexport default withLeaflet(AttributionControl);","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport isEqual from 'fast-deep-equal';\nimport MapLayer from './MapLayer';\nimport pick from './utils/pick';\nvar OPTIONS = ['stroke', 'color', 'weight', 'opacity', 'lineCap', 'lineJoin', 'dashArray', 'dashOffset', 'fill', 'fillColor', 'fillOpacity', 'fillRule', 'bubblingMouseEvents', 'renderer', 'className', // Interactive Layer\n'interactive', // Layer\n'pane', 'attribution'];\n\nvar Path = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(Path, _MapLayer);\n\n function Path(props) {\n var _this;\n\n _this = _MapLayer.call(this, props) || this;\n\n if (_this.contextValue == null) {\n _this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n popupContainer: _this.leafletElement\n });\n }\n\n return _this;\n }\n\n var _proto = Path.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n _MapLayer.prototype.componentDidUpdate.call(this, prevProps);\n\n this.setStyleIfChanged(prevProps, this.props);\n };\n\n _proto.getPathOptions = function getPathOptions(props) {\n return pick(props, OPTIONS);\n };\n\n _proto.setStyle = function setStyle(options) {\n if (options === void 0) {\n options = {};\n }\n\n this.leafletElement.setStyle(options);\n };\n\n _proto.setStyleIfChanged = function setStyleIfChanged(fromProps, toProps) {\n var nextStyle = this.getPathOptions(toProps);\n\n if (!isEqual(nextStyle, this.getPathOptions(fromProps))) {\n this.setStyle(nextStyle);\n }\n };\n\n return Path;\n}(MapLayer);\n\nexport { Path as default };","\"use strict\";\n\nimport \"core-js/modules/es6.array.reduce\";\nexport default function pick(object, keys) {\n return keys.reduce(function (obj, key) {\n if (typeof object[key] !== 'undefined') {\n obj[key] = object[key];\n }\n\n return obj;\n }, {});\n}","\"use strict\";\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Circle as LeafletCircle } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar Circle = /*#__PURE__*/function (_Path) {\n _inheritsLoose(Circle, _Path);\n\n function Circle() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = Circle.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var center = props.center,\n radius = props.radius,\n options = _objectWithoutPropertiesLoose(props, [\"center\", \"radius\"]);\n\n return new LeafletCircle(center, radius, this.getOptions(options));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.center !== fromProps.center) {\n this.leafletElement.setLatLng(toProps.center);\n }\n\n if (toProps.radius !== fromProps.radius) {\n this.leafletElement.setRadius(toProps.radius);\n }\n };\n\n return Circle;\n}(Path);\n\nexport default withLeaflet(Circle);","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { CircleMarker as LeafletCircleMarker } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar CircleMarker = /*#__PURE__*/function (_Path) {\n _inheritsLoose(CircleMarker, _Path);\n\n function CircleMarker() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = CircleMarker.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var el = new LeafletCircleMarker(props.center, this.getOptions(props));\n this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n popupContainer: el\n });\n return el;\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.center !== fromProps.center) {\n this.leafletElement.setLatLng(toProps.center);\n }\n\n if (toProps.radius !== fromProps.radius) {\n this.leafletElement.setRadius(toProps.radius);\n }\n };\n\n return CircleMarker;\n}(Path);\n\nexport default withLeaflet(CircleMarker);","\"use strict\";\n\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createPortal } from 'react-dom';\nimport MapComponent from './MapComponent';\nimport updateClassName from './utils/updateClassName';\n\nvar DivOverlay = /*#__PURE__*/function (_MapComponent) {\n _inheritsLoose(DivOverlay, _MapComponent);\n\n function DivOverlay(props) {\n var _this;\n\n _this = _MapComponent.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"onClose\", function () {\n if (_this.props.onClose) {\n _this.props.onClose();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onOpen\", function () {\n _this.forceUpdate(); // Re-render now that leafletElement is created\n\n\n if (_this.props.onOpen) {\n _this.props.onOpen();\n }\n });\n\n _this.leafletElement = _this.createLeafletElement(props);\n return _this;\n }\n\n var _proto = DivOverlay.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(_props) {\n throw new Error('createLeafletElement() must be implemented');\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(_prevProps, _props) {};\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n updateClassName(this.leafletElement._container, prevProps.className, this.props.className);\n this.updateLeafletElement(prevProps, this.props);\n\n if (this.leafletElement.isOpen()) {\n this.leafletElement.update();\n this.onRender();\n }\n };\n\n _proto.onRender = function onRender() {};\n\n _proto.render = function render() {\n if (this.leafletElement._contentNode) {\n return createPortal(this.props.children, this.leafletElement._contentNode);\n }\n\n return null;\n };\n\n return DivOverlay;\n}(MapComponent);\n\nexport { DivOverlay as default };","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { FeatureGroup as LeafletFeatureGroup } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar FeatureGroup = /*#__PURE__*/function (_Path) {\n _inheritsLoose(FeatureGroup, _Path);\n\n function FeatureGroup() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = FeatureGroup.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var el = new LeafletFeatureGroup(this.getOptions(props));\n this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n layerContainer: el,\n popupContainer: el\n });\n return el;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n _Path.prototype.componentDidMount.call(this);\n\n this.setStyle(this.props);\n };\n\n return FeatureGroup;\n}(Path);\n\nexport default withLeaflet(FeatureGroup);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { GeoJSON as LeafletGeoJSON } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar GeoJSON = /*#__PURE__*/function (_Path) {\n _inheritsLoose(GeoJSON, _Path);\n\n function GeoJSON() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = GeoJSON.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletGeoJSON(props.data, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (typeof toProps.style === 'function') {\n this.leafletElement.setStyle(toProps.style);\n } else {\n this.setStyleIfChanged(fromProps, toProps);\n }\n };\n\n return GeoJSON;\n}(Path);\n\nexport default withLeaflet(GeoJSON);","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { GridLayer as LeafletGridLayer } from 'leaflet';\nimport MapLayer from './MapLayer';\n\nvar GridLayer = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(GridLayer, _MapLayer);\n\n function GridLayer() {\n return _MapLayer.apply(this, arguments) || this;\n }\n\n var _proto = GridLayer.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletGridLayer(this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n var opacity = toProps.opacity,\n zIndex = toProps.zIndex;\n\n if (opacity !== fromProps.opacity) {\n this.leafletElement.setOpacity(opacity);\n }\n\n if (zIndex !== fromProps.zIndex) {\n this.leafletElement.setZIndex(zIndex);\n }\n };\n\n _proto.getOptions = function getOptions(props) {\n var options = _extends({}, _MapLayer.prototype.getOptions.call(this, props));\n\n var map = props.leaflet.map;\n\n if (map != null) {\n // $FlowFixMe: Object spread\n if (options.maxZoom == null && map.options.maxZoom != null) {\n // $FlowFixMe: Object spread\n options.maxZoom = map.options.maxZoom;\n } // $FlowFixMe: Object spread\n\n\n if (options.minZoom == null && map.options.minZoom != null) {\n // $FlowFixMe: Object spread\n options.minZoom = map.options.minZoom;\n }\n }\n\n return options;\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return GridLayer;\n}(MapLayer);\n\nexport { GridLayer as default };","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { ImageOverlay as LeafletImageOverlay, latLngBounds } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapLayer from './MapLayer';\n\nvar ImageOverlay = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(ImageOverlay, _MapLayer);\n\n function ImageOverlay() {\n return _MapLayer.apply(this, arguments) || this;\n }\n\n var _proto = ImageOverlay.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var el = new LeafletImageOverlay(props.url, props.bounds, this.getOptions(props));\n this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n popupContainer: el\n });\n return el;\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.url !== fromProps.url) {\n this.leafletElement.setUrl(toProps.url);\n }\n\n if (toProps.bounds !== fromProps.bounds) {\n this.leafletElement.setBounds(latLngBounds(toProps.bounds));\n }\n\n if (toProps.opacity !== fromProps.opacity) {\n this.leafletElement.setOpacity(toProps.opacity);\n }\n\n if (toProps.zIndex !== fromProps.zIndex) {\n this.leafletElement.setZIndex(toProps.zIndex);\n }\n };\n\n return ImageOverlay;\n}(MapLayer);\n\nexport default withLeaflet(ImageOverlay);","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { LayerGroup as LeafletLayerGroup } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapLayer from './MapLayer';\n\nvar LayerGroup = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(LayerGroup, _MapLayer);\n\n function LayerGroup() {\n return _MapLayer.apply(this, arguments) || this;\n }\n\n var _proto = LayerGroup.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var el = new LeafletLayerGroup([], this.getOptions(props));\n this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n layerContainer: el\n });\n return el;\n };\n\n return LayerGroup;\n}(MapLayer);\n\nexport default withLeaflet(LayerGroup);","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.index-of\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\"; // flowlint sketchy-null-string:off\n\nimport React, { Component } from 'react';\nimport warning from 'warning';\nimport { LeafletProvider, withLeaflet } from './context';\nimport { addClassName, removeClassName } from './utils/updateClassName';\nimport omit from './utils/omit';\nvar idCounter = 0;\n\nvar uniqueId = function uniqueId() {\n return ++idCounter;\n};\n\nvar LEAFLET_PANES = ['tile', 'shadow', 'overlay', 'map', 'marker', 'tooltip', 'popup'];\nvar PANE_RE = /-*pane/gi;\n\nvar isLeafletPane = function isLeafletPane(name) {\n return LEAFLET_PANES.indexOf(name.replace(PANE_RE, '')) !== -1;\n};\n\nvar paneStyles = {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar Pane = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Pane, _Component);\n\n function Pane() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n name: undefined,\n context: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setStyle\", function (_temp) {\n var _ref = _temp === void 0 ? _this.props : _temp,\n style = _ref.style,\n className = _ref.className;\n\n var pane = _this.getPane(_this.state.name);\n\n if (pane) {\n if (className) {\n addClassName(pane, className);\n }\n\n if (style) {\n // Without the cast, Flow throws this error:\n // Cannot assign style[key] to pane.style[key] because string\n // is incompatible with number.\n Object.keys(style).forEach(function (key) {\n pane.style[key] = style[key];\n });\n }\n }\n });\n\n return _this;\n }\n\n var _proto = Pane.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.createPane(this.props);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (!this.state.name) {\n // Do nothing if this.state.name is undefined due to errors or\n // an invalid props.name value\n return;\n } // If the 'name' prop has changed the current pane is unmounted and a new\n // pane is created.\n\n\n if (this.props.name !== prevProps.name) {\n this.removePane();\n this.createPane(this.props);\n } else {\n // Remove the previous css class name from the pane if it has changed.\n // setStyle() will take care of adding in the updated className\n if (prevProps.className && this.props.className !== prevProps.className) {\n var pane = this.getPane(this.state.name);\n\n if (pane != null && prevProps.className != null) {\n removeClassName(pane, prevProps.className);\n }\n } // Update the pane's DOM node style and class\n\n\n this.setStyle(this.props);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.removePane();\n };\n\n _proto.createPane = function createPane(props) {\n var map = props.leaflet.map;\n var name = props.name || \"pane-\" + uniqueId();\n\n if (map != null && map.createPane != null) {\n var isDefault = isLeafletPane(name);\n var existing = isDefault || this.getPane(name);\n\n if (existing == null) {\n map.createPane(name, this.getParentPane());\n } else {\n var message = isDefault ? \"You must use a unique name for a pane that is not a default leaflet pane (\" + name + \")\" : \"A pane with this name already exists. (\" + name + \")\";\n process.env.NODE_ENV !== \"production\" ? warning(false, message) : void 0;\n }\n\n this.setState({\n name: name,\n context: _extends(_extends({}, props.leaflet), {}, {\n pane: name\n })\n }, this.setStyle);\n }\n };\n\n _proto.removePane = function removePane() {\n // Remove the created pane\n var name = this.state.name;\n\n if (name != null) {\n var pane = this.getPane(name);\n if (pane != null && pane.remove) pane.remove();\n var map = this.props.leaflet.map;\n\n if (map != null && map._panes != null) {\n map._panes = omit(map._panes, name);\n map._paneRenderers = omit(map._paneRenderers, name);\n }\n }\n };\n\n _proto.getParentPane = function getParentPane() {\n return this.getPane(this.props.pane || this.props.leaflet.pane);\n };\n\n _proto.getPane = function getPane(name) {\n if (name != null && this.props.leaflet.map != null) {\n return this.props.leaflet.map.getPane(name);\n }\n };\n\n _proto.render = function render() {\n var context = this.state.context;\n return context ? /*#__PURE__*/React.createElement(LeafletProvider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: paneStyles\n }, this.props.children)) : null;\n };\n\n return Pane;\n}(Component);\n\nexport default withLeaflet(Pane);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Polygon as LeafletPolygon } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar Polygon = /*#__PURE__*/function (_Path) {\n _inheritsLoose(Polygon, _Path);\n\n function Polygon() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = Polygon.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletPolygon(props.positions, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.positions !== fromProps.positions) {\n this.leafletElement.setLatLngs(toProps.positions);\n }\n\n this.setStyleIfChanged(fromProps, toProps);\n };\n\n return Polygon;\n}(Path);\n\nexport default withLeaflet(Polygon);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Polyline as LeafletPolyline } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar Polyline = /*#__PURE__*/function (_Path) {\n _inheritsLoose(Polyline, _Path);\n\n function Polyline() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = Polyline.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletPolyline(props.positions, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.positions !== fromProps.positions) {\n this.leafletElement.setLatLngs(toProps.positions);\n }\n\n this.setStyleIfChanged(fromProps, toProps);\n };\n\n return Polyline;\n}(Path);\n\nexport default withLeaflet(Polyline);","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Popup as LeafletPopup } from 'leaflet';\nimport { withLeaflet } from './context';\nimport DivOverlay from './DivOverlay';\n\nvar Popup = /*#__PURE__*/function (_DivOverlay) {\n _inheritsLoose(Popup, _DivOverlay);\n\n function Popup() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _DivOverlay.call.apply(_DivOverlay, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupOpen\", function (_ref) {\n var popup = _ref.popup;\n\n if (popup === _this.leafletElement) {\n _this.onOpen();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupClose\", function (_ref2) {\n var popup = _ref2.popup;\n\n if (popup === _this.leafletElement) {\n _this.onClose();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRender\", function () {\n if (_this.props.autoPan !== false && _this.leafletElement.isOpen()) {\n if (_this.leafletElement._map && _this.leafletElement._map._panAnim) {\n _this.leafletElement._map._panAnim = undefined;\n }\n\n _this.leafletElement._adjustPan();\n }\n });\n\n return _this;\n }\n\n var _proto = Popup.prototype;\n\n _proto.getOptions = function getOptions(props) {\n return _extends(_extends({}, _DivOverlay.prototype.getOptions.call(this, props)), {}, {\n autoPan: false\n });\n };\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var options = this.getOptions(props);\n options.autoPan = props.autoPan !== false;\n return new LeafletPopup(options, props.leaflet.popupContainer);\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.position !== fromProps.position) {\n this.leafletElement.setLatLng(toProps.position);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var position = this.props.position;\n var _this$props$leaflet = this.props.leaflet,\n map = _this$props$leaflet.map,\n popupContainer = _this$props$leaflet.popupContainer;\n var el = this.leafletElement;\n\n if (map != null) {\n map.on({\n popupopen: this.onPopupOpen,\n popupclose: this.onPopupClose\n });\n }\n\n if (popupContainer) {\n // Attach to container component\n popupContainer.bindPopup(el);\n } else {\n // Attach to a Map\n if (position) {\n el.setLatLng(position);\n }\n\n el.openOn(map);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var map = this.props.leaflet.map;\n\n if (map != null) {\n map.off({\n popupopen: this.onPopupOpen,\n popupclose: this.onPopupClose\n });\n map.removeLayer(this.leafletElement);\n }\n\n _DivOverlay.prototype.componentWillUnmount.call(this);\n };\n\n return Popup;\n}(DivOverlay);\n\n_defineProperty(Popup, \"defaultProps\", {\n pane: 'popupPane'\n});\n\nexport default withLeaflet(Popup);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Rectangle as LeafletRectangle } from 'leaflet';\nimport { withLeaflet } from './context';\nimport Path from './Path';\n\nvar Rectangle = /*#__PURE__*/function (_Path) {\n _inheritsLoose(Rectangle, _Path);\n\n function Rectangle() {\n return _Path.apply(this, arguments) || this;\n }\n\n var _proto = Rectangle.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletRectangle(props.bounds, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.bounds !== fromProps.bounds) {\n this.leafletElement.setBounds(toProps.bounds);\n }\n\n this.setStyleIfChanged(fromProps, toProps);\n };\n\n return Rectangle;\n}(Path);\n\nexport default withLeaflet(Rectangle);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Control } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapControl from './MapControl';\n\nvar ScaleControl = /*#__PURE__*/function (_MapControl) {\n _inheritsLoose(ScaleControl, _MapControl);\n\n function ScaleControl() {\n return _MapControl.apply(this, arguments) || this;\n }\n\n var _proto = ScaleControl.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new Control.Scale(props);\n };\n\n return ScaleControl;\n}(MapControl);\n\nexport default withLeaflet(ScaleControl);","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, SVGOverlay as LeafletSVGOverlay } from 'leaflet';\nimport { createPortal } from 'react-dom';\nimport { withLeaflet } from './context';\nimport MapComponent from './MapComponent';\n\nfunction setAttribute(el, name, value) {\n if (value != null) {\n el.setAttribute(name, value);\n } else {\n el.removeAttribute(name);\n }\n}\n\nvar SVGOverlay = /*#__PURE__*/function (_MapComponent) {\n _inheritsLoose(SVGOverlay, _MapComponent);\n\n function SVGOverlay(props) {\n var _this;\n\n _this = _MapComponent.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"container\", void 0);\n\n _this.leafletElement = _this.createLeafletElement(props);\n return _this;\n }\n\n var _proto = SVGOverlay.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var container = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttribute(container, 'xmlns', 'http://www.w3.org/2000/svg');\n setAttribute(container, 'preserveAspectRatio', props.preserveAspectRatio);\n setAttribute(container, 'viewBox', props.viewBox);\n this.container = container;\n return new LeafletSVGOverlay(container, props.bounds, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.bounds !== fromProps.bounds) {\n this.leafletElement.setBounds(toProps.bounds);\n }\n\n if (toProps.opacity !== fromProps.opacity) {\n this.leafletElement.setOpacity(toProps.opacity);\n }\n\n if (this.container && toProps.preserveAspectRatio !== fromProps.preserveAspectRatio) {\n setAttribute(this.container, 'preserveAspectRatio', toProps.preserveAspectRatio);\n }\n\n if (this.container && toProps.viewBox !== fromProps.viewBox) {\n setAttribute(this.container, 'viewBox', toProps.viewBox);\n }\n\n if (toProps.zIndex !== fromProps.zIndex) {\n this.leafletElement.setZIndex(toProps.zIndex);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n _MapComponent.prototype.componentDidMount.call(this);\n\n this.layerContainer.addLayer(this.leafletElement);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n _MapComponent.prototype.componentDidUpdate.call(this, prevProps);\n\n if (this.props.attribution !== prevProps.attribution) {\n var map = this.props.leaflet.map;\n\n if (map != null && map.attributionControl != null) {\n map.attributionControl.removeAttribution(prevProps.attribution);\n map.attributionControl.addAttribution(this.props.attribution);\n }\n }\n\n this.updateLeafletElement(prevProps, this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n _MapComponent.prototype.componentWillUnmount.call(this);\n\n this.layerContainer.removeLayer(this.leafletElement);\n this.container = null;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n\n if (children == null || this.container == null) {\n return null;\n }\n\n return createPortal(children, this.container);\n };\n\n _createClass(SVGOverlay, [{\n key: \"layerContainer\",\n get: function get() {\n return this.props.leaflet.layerContainer || this.props.leaflet.map;\n }\n }]);\n\n return SVGOverlay;\n}(MapComponent);\n\nexport default withLeaflet(SVGOverlay);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { TileLayer as LeafletTileLayer } from 'leaflet';\nimport { withLeaflet } from './context';\nimport GridLayer from './GridLayer';\n\nvar TileLayer = /*#__PURE__*/function (_GridLayer) {\n _inheritsLoose(TileLayer, _GridLayer);\n\n function TileLayer() {\n return _GridLayer.apply(this, arguments) || this;\n }\n\n var _proto = TileLayer.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletTileLayer(props.url, this.getOptions(props));\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n _GridLayer.prototype.updateLeafletElement.call(this, fromProps, toProps);\n\n if (toProps.url !== fromProps.url) {\n this.leafletElement.setUrl(toProps.url);\n }\n };\n\n return TileLayer;\n}(GridLayer);\n\nexport default withLeaflet(TileLayer);","\"use strict\";\n\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Tooltip as LeafletTooltip } from 'leaflet';\nimport { withLeaflet } from './context';\nimport DivOverlay from './DivOverlay';\n\nvar Tooltip = /*#__PURE__*/function (_DivOverlay) {\n _inheritsLoose(Tooltip, _DivOverlay);\n\n function Tooltip() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _DivOverlay.call.apply(_DivOverlay, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"onTooltipOpen\", function (_ref) {\n var tooltip = _ref.tooltip;\n\n if (tooltip === _this.leafletElement) {\n _this.onOpen();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTooltipClose\", function (_ref2) {\n var tooltip = _ref2.tooltip;\n\n if (tooltip === _this.leafletElement) {\n _this.onClose();\n }\n });\n\n return _this;\n }\n\n var _proto = Tooltip.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletTooltip(this.getOptions(props), props.leaflet.popupContainer);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var popupContainer = this.props.leaflet.popupContainer;\n if (popupContainer == null) return;\n popupContainer.on({\n tooltipopen: this.onTooltipOpen,\n tooltipclose: this.onTooltipClose\n });\n popupContainer.bindTooltip(this.leafletElement);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var popupContainer = this.props.leaflet.popupContainer;\n if (popupContainer == null) return;\n popupContainer.off({\n tooltipopen: this.onTooltipOpen,\n tooltipclose: this.onTooltipClose\n });\n\n if (popupContainer._map != null) {\n popupContainer.unbindTooltip(this.leafletElement);\n }\n };\n\n return Tooltip;\n}(DivOverlay);\n\n_defineProperty(Tooltip, \"defaultProps\", {\n pane: 'tooltipPane'\n});\n\nexport default withLeaflet(Tooltip);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { VideoOverlay as LeafletVideoOverlay, latLngBounds } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapLayer from './MapLayer';\n\nvar VideoOverlay = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(VideoOverlay, _MapLayer);\n\n function VideoOverlay() {\n return _MapLayer.apply(this, arguments) || this;\n }\n\n var _proto = VideoOverlay.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new LeafletVideoOverlay(props.url, props.bounds, this.getOptions(props));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n _MapLayer.prototype.componentDidMount.call(this);\n\n if (this.props.play === true) {\n this.leafletElement.getElement().play();\n }\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.url !== fromProps.url) {\n this.leafletElement.setUrl(toProps.url);\n }\n\n if (toProps.bounds !== fromProps.bounds) {\n this.leafletElement.setBounds(latLngBounds(toProps.bounds));\n }\n\n if (toProps.opacity !== fromProps.opacity) {\n this.leafletElement.setOpacity(toProps.opacity);\n }\n\n if (toProps.zIndex !== fromProps.zIndex) {\n this.leafletElement.setZIndex(toProps.zIndex);\n } // flowlint-next-line sketchy-null-bool:off\n\n\n if (toProps.play === true && !fromProps.play) {\n this.leafletElement.getElement().play(); // flowlint-next-line sketchy-null-bool:off\n } else if (!toProps.play && fromProps.play === true) {\n this.leafletElement.getElement().pause();\n }\n };\n\n return VideoOverlay;\n}(MapLayer);\n\nexport default withLeaflet(VideoOverlay);","\"use strict\";\n\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.reduce\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { TileLayer } from 'leaflet';\nimport isEqual from 'fast-deep-equal';\nimport { withLeaflet } from './context';\nimport GridLayer from './GridLayer';\nimport { EVENTS_RE } from './MapEvented';\n\nvar WMSTileLayer = /*#__PURE__*/function (_GridLayer) {\n _inheritsLoose(WMSTileLayer, _GridLayer);\n\n function WMSTileLayer() {\n return _GridLayer.apply(this, arguments) || this;\n }\n\n var _proto = WMSTileLayer.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var url = props.url,\n params = _objectWithoutPropertiesLoose(props, [\"url\"]);\n\n var _this$getOptions = this.getOptions(params),\n _l = _this$getOptions.leaflet,\n options = _objectWithoutPropertiesLoose(_this$getOptions, [\"leaflet\"]);\n\n return new TileLayer.WMS(url, options);\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n _GridLayer.prototype.updateLeafletElement.call(this, fromProps, toProps);\n\n var prevUrl = fromProps.url,\n _po = fromProps.opacity,\n _pz = fromProps.zIndex,\n prevProps = _objectWithoutPropertiesLoose(fromProps, [\"url\", \"opacity\", \"zIndex\"]);\n\n var _this$getOptions2 = this.getOptions(prevProps),\n _pl = _this$getOptions2.leaflet,\n prevParams = _objectWithoutPropertiesLoose(_this$getOptions2, [\"leaflet\"]);\n\n var url = toProps.url,\n _o = toProps.opacity,\n _z = toProps.zIndex,\n props = _objectWithoutPropertiesLoose(toProps, [\"url\", \"opacity\", \"zIndex\"]);\n\n var _this$getOptions3 = this.getOptions(props),\n _l = _this$getOptions3.leaflet,\n params = _objectWithoutPropertiesLoose(_this$getOptions3, [\"leaflet\"]);\n\n if (url !== prevUrl) {\n this.leafletElement.setUrl(url);\n }\n\n if (!isEqual(params, prevParams)) {\n this.leafletElement.setParams(params);\n }\n };\n\n _proto.getOptions = function getOptions(params) {\n var superOptions = _GridLayer.prototype.getOptions.call(this, params);\n\n return Object.keys(superOptions).reduce(function (options, key) {\n if (!EVENTS_RE.test(key)) {\n options[key] = superOptions[key];\n }\n\n return options;\n }, {});\n };\n\n return WMSTileLayer;\n}(GridLayer);\n\nexport default withLeaflet(WMSTileLayer);","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Control } from 'leaflet';\nimport { withLeaflet } from './context';\nimport MapControl from './MapControl';\n\nvar ZoomControl = /*#__PURE__*/function (_MapControl) {\n _inheritsLoose(ZoomControl, _MapControl);\n\n function ZoomControl() {\n return _MapControl.apply(this, arguments) || this;\n }\n\n var _proto = ZoomControl.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n return new Control.Zoom(props);\n };\n\n return ZoomControl;\n}(MapControl);\n\nexport default withLeaflet(ZoomControl);","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function warning() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","'use strict';\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiM4OTRFMzAiLz4KPC9zdmc+Cg==\"","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiNBNjMwMjYiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiM1RDVFNjAiLz4KPC9zdmc+Cg==\"","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Control } from 'leaflet';\nimport { Component } from 'react';\n\nvar MapControl = /*#__PURE__*/function (_Component) {\n _inheritsLoose(MapControl, _Component);\n\n function MapControl(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n _this.leafletElement = _this.createLeafletElement(_this.props);\n return _this;\n }\n\n var _proto = MapControl.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(_props) {\n throw new Error('createLeafletElement() must be implemented');\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.position !== fromProps.position) {\n this.leafletElement.setPosition(toProps.position);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.leafletElement.addTo(this.props.leaflet.map);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n this.updateLeafletElement(prevProps, this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.leafletElement.remove();\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return MapControl;\n}(Component);\n\nexport { MapControl as default };","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","\"use strict\";\n\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.reduce\";\nexport default function omit(obj) {\n for (var _len = arguments.length, keysToOmit = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n keysToOmit[_key - 1] = arguments[_key];\n }\n\n return Object.keys(obj).reduce(function (acc, key) {\n if (keysToOmit.indexOf(key) === -1) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}","import React from 'react';\r\n\r\nexport const CategoryRadio = (props) => {\r\n const { label, id, value, onChange, activeCategory, count } = props;\r\n let className = `map-category map-category--${id.toLowerCase()}`;\r\n\r\n if (activeCategory === id) className += ' -active';\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport incidentsData from './content/incidents';\r\nimport { Marker } from 'react-leaflet';\r\nimport MarkerClusterGroup from 'react-leaflet-markercluster';\r\nimport L from 'leaflet';\r\n\r\nexport const Incidents = (props) => {\r\n const { label, incidents, id } = props;\r\n\r\n const createClusterCustom = (cluster) => {\r\n var childCount = cluster.getChildCount();\r\n\r\n return new L.DivIcon({\r\n html: '
' + childCount + '
',\r\n className: `marker-cluster marker-cluster--${id.toLowerCase()}`,\r\n iconSize: new L.Point(40, 40),\r\n });\r\n };\r\n\r\n const incidentIcon = new L.Icon({\r\n iconUrl: require(`../../images/marker-${id}.svg`),\r\n });\r\n\r\n return (\r\n \r\n {incidents.map((coords, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n","export const MapStyles = [\r\n {\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#f5f5f5\"\r\n }\r\n ]\r\n },\r\n {\r\n \"elementType\": \"labels.icon\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#616161\"\r\n }\r\n ]\r\n },\r\n {\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#f5f5f5\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#bdbdbd\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#eeeeee\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#757575\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e5e5e5\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#9e9e9e\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#ffffff\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.arterial\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#757575\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#dadada\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.highway\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#616161\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road.local\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#9e9e9e\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.line\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#e5e5e5\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"transit.station\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#eeeeee\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#c9c9c9\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#9e9e9e\"\r\n }\r\n ]\r\n }\r\n ];","export default [\r\n { label: 'Western Australia', lat: '-26.998542', lng: '116.041546', value: '10', zoom: '5' },\r\n { label: 'Perth Metropolitan', lat: '-31.664758', lng: '115.686856', value: '1', zoom: '9' },\r\n { label: 'Goldfields Midlands', lat: '-29.747658', lng: '119.065355', value: '2', zoom: '7' },\r\n { label: 'Kimberley', lat: '-15.466044', lng: '121.917047', value: '3', zoom: '7' },\r\n { label: 'Pilbara', lat: '-22.096284', lng: '114.960824', value: '4', zoom: '7' },\r\n { label: 'Midwest Gascoyne', lat: '-21.246860', lng: '114.015838', value: '5', zoom: '7' },\r\n { label: 'Great Southern', lat: '-33.010335', lng: '117.400508', value: '6', zoom: '8' },\r\n { label: 'South West', lat: '-32.894535', lng: '114.992566', value: '7', zoom: '9' },\r\n { label: 'Lower South West', lat: '-33.810951', lng: '114.917543', value: '8', zoom: '9' },\r\n { label: 'Upper Great Southern', lat: '-33.336976', lng: '117.943833', value: '9', zoom: '9' },\r\n];\r\n","import * as Icons from '../../constants/icons';\r\n\r\nimport { LayersControl, Map } from 'react-leaflet';\r\nimport React, { createRef, useEffect, useRef, useState } from 'react';\r\n\r\nimport { CategoryRadio } from './CategoryRadio';\r\nimport { GoogleLayer } from 'react-leaflet-google-v2';\r\nimport Hammer from 'hammerjs';\r\nimport { Incidents } from './Incidents';\r\nimport { MapStyles } from './MapStyles';\r\nimport gsap from 'gsap/gsap-core';\r\nimport incidentsData from './content/incidents';\r\nimport regions from './content/regions';\r\n\r\nconst key = 'AIzaSyDELI8qLOVLDKfM6XggxIgtxKL06Q_pzzA';\r\n\r\nexport const IncidentsMap = (props) => {\r\n const wa = regions[0];\r\n const map = createRef();\r\n const regionSelect = createRef();\r\n const incidentTypeRadio = createRef();\r\n const initialPosition = [wa.lat, wa.lng];\r\n const [activeCategory, setActiveCategory] = useState(incidentsData[0].id);\r\n // const [controlsCollapsed, setControlsCollapsed] = useState(false);\r\n const initialZoom = wa.zoom;\r\n const controlsCollapsed = useRef(false);\r\n const mapControls = createRef();\r\n const toggleButton = createRef();\r\n // console.log('activeCategory: ', activeCategory);\r\n\r\n useEffect(() => {\r\n //Region selectbox\r\n const handleRegionChange = (e) => {\r\n const region = regions.find((item) => item.value === e.target.value);\r\n map.current.leafletElement.flyTo([region.lat, region.lng], region.zoom, { animate: true, duration: 0.2 });\r\n };\r\n\r\n //Incident type radio\r\n const typeChange = (e) => {\r\n const value = e.target.value;\r\n const leafletCheckboxes = document.querySelectorAll('.leaflet-control-layers-overlays input[type=\"checkbox\"]');\r\n for (var index = 0; index < leafletCheckboxes.length; index++) {\r\n const el = leafletCheckboxes[index];\r\n if (el.checked) {\r\n el.click();\r\n }\r\n if (index == value) {\r\n el.click();\r\n }\r\n }\r\n };\r\n\r\n regionSelect.current.addEventListener('change', handleRegionChange);\r\n incidentTypeRadio.current.addEventListener('change', typeChange);\r\n\r\n if (typeof window !== 'undefined') {\r\n const hammer = new Hammer(mapControls.current);\r\n hammer.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL });\r\n\r\n hammer.on('swipeleft', function (ev) {\r\n if (!controlsCollapsed.current) {\r\n handleCollapse();\r\n }\r\n });\r\n hammer.on('swiperight', function (ev) {\r\n if (controlsCollapsed.current) {\r\n handleCollapse();\r\n }\r\n });\r\n }\r\n\r\n return () => {\r\n if (incidentTypeRadio.current && regionSelect.current) {\r\n incidentTypeRadio.current.removeEventListener('change', typeChange);\r\n regionSelect.current.removeEventListener('change', handleRegionChange);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleCollapse = (e) => {\r\n //Is collapsed\r\n if (!mapControls.current) return;\r\n if (controlsCollapsed.current) {\r\n gsap.to(mapControls.current, { translateX: 0, duration: 0.1, ease: 'power3.out' });\r\n gsap.set(toggleButton.current, { scaleX: 1 });\r\n gsap.set(mapControls.current, { overflow: 'auto' });\r\n } else {\r\n const controlsWidth = mapControls.current.offsetWidth;\r\n gsap.to(mapControls.current, { translateX: -controlsWidth + 30, duration: 0.1, ease: 'power3.out' });\r\n gsap.set(toggleButton.current, { scaleX: -1 });\r\n gsap.set(mapControls.current, { overflow: 'hidden' });\r\n mapControls.current.scrollTop = 0;\r\n }\r\n\r\n controlsCollapsed.current = !controlsCollapsed.current;\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n Incidents\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {incidentsData &&\r\n incidentsData.length > 0 &&\r\n incidentsData.map((category, index) => {\r\n // if (index > 1) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
Summary of incident types in WA
Incident typeIncident amount
{category.label}{category.incidents.length}
\r\n
\r\n
\r\n
\r\n

Incidents map

\r\n

\r\n Choose region\r\n

\r\n
\r\n \r\n \r\n
\r\n

Choose incident type

\r\n
\r\n {incidentsData &&\r\n incidentsData.length > 0 &&\r\n incidentsData.map((category, index) => {\r\n // if (index > 1) return null;\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {typeof window !== 'undefined' && }\r\n {incidentsData.map((category, index) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n {/* {MapContainer && (\r\n \r\n )} */}\r\n
\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Link } from 'gatsby';\r\n\r\nimport Layout from '../components/layout';\r\nimport SEO from '../components/seo';\r\nimport { IncidentsMap } from '../components/incidents-map/IncidentsMap';\r\n\r\nconst Incidents = () => (\r\n \r\n \r\n \r\n\r\n {/* Go back to the homepage */}\r\n \r\n);\r\n\r\nexport default Incidents;\r\n","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport MapEvented from './MapEvented';\n\nvar MapComponent = /*#__PURE__*/function (_MapEvented) {\n _inheritsLoose(MapComponent, _MapEvented);\n\n function MapComponent() {\n return _MapEvented.apply(this, arguments) || this;\n }\n\n var _proto = MapComponent.prototype;\n\n _proto.getOptions = function getOptions(props) {\n if (props.pane != null) {\n return props;\n }\n\n if (props.leaflet != null && props.leaflet.pane != null) {\n return _extends(_extends({}, props), {}, {\n pane: props.leaflet.pane\n });\n }\n\n return props;\n };\n\n return MapComponent;\n}(MapEvented);\n\nexport { MapComponent as default };","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\n/*\n * Leaflet.markercluster 1.4.1+master.94f9815,\n * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n * https://github.com/Leaflet/Leaflet.markercluster\n * (c) 2012-2017, Dave Leaver, smartrak\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = global.Leaflet.markercluster || {}));\n})(this, function (exports) {\n 'use strict';\n /*\r\n * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\r\n */\n\n var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({\n options: {\n maxClusterRadius: 80,\n //A cluster will cover at most this many pixels from its center\n iconCreateFunction: null,\n clusterPane: L.Marker.prototype.options.pane,\n spiderfyOnMaxZoom: true,\n showCoverageOnHover: true,\n zoomToBoundsOnClick: true,\n singleMarkerMode: false,\n disableClusteringAtZoom: null,\n // Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n // is the default behaviour for performance reasons.\n removeOutsideVisibleBounds: true,\n // Set to false to disable all animations (zoom and spiderfy).\n // If false, option animateAddingMarkers below has no effect.\n // If L.DomUtil.TRANSITION is falsy, this option has no effect.\n animate: true,\n //Whether to animate adding markers after adding the MarkerClusterGroup to the map\n // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n animateAddingMarkers: false,\n //Increase to increase the distance away that spiderfied markers appear from the center\n spiderfyDistanceMultiplier: 1,\n // Make it possible to specify a polyline options on a spider leg\n spiderLegPolylineOptions: {\n weight: 1.5,\n color: '#222',\n opacity: 0.5\n },\n // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n chunkedLoading: false,\n chunkInterval: 200,\n // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n chunkDelay: 50,\n // at the end of each interval, give n milliseconds back to system/browser\n chunkProgress: null,\n // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n //Options to pass to the L.Polygon constructor\n polygonOptions: {}\n },\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n\n if (!this.options.iconCreateFunction) {\n this.options.iconCreateFunction = this._defaultIconCreateFunction;\n }\n\n this._featureGroup = L.featureGroup();\n\n this._featureGroup.addEventParent(this);\n\n this._nonPointGroup = L.featureGroup();\n\n this._nonPointGroup.addEventParent(this);\n\n this._inZoomAnimation = 0;\n this._needsClustering = [];\n this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\n this._currentShownBounds = null;\n this._queue = [];\n this._childMarkerEventHandlers = {\n 'dragstart': this._childMarkerDragStart,\n 'move': this._childMarkerMoved,\n 'dragend': this._childMarkerDragEnd\n }; // Hook the appropriate animation methods.\n\n var animate = L.DomUtil.TRANSITION && this.options.animate;\n L.extend(this, animate ? this._withAnimation : this._noAnimation); // Remember which MarkerCluster class to instantiate (animated or not).\n\n this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n },\n addLayer: function addLayer(layer) {\n if (layer instanceof L.LayerGroup) {\n return this.addLayers([layer]);\n } //Don't cluster non point data\n\n\n if (!layer.getLatLng) {\n this._nonPointGroup.addLayer(layer);\n\n this.fire('layeradd', {\n layer: layer\n });\n return this;\n }\n\n if (!this._map) {\n this._needsClustering.push(layer);\n\n this.fire('layeradd', {\n layer: layer\n });\n return this;\n }\n\n if (this.hasLayer(layer)) {\n return this;\n } //If we have already clustered we'll need to add this one to a cluster\n\n\n if (this._unspiderfy) {\n this._unspiderfy();\n }\n\n this._addLayer(layer, this._maxZoom);\n\n this.fire('layeradd', {\n layer: layer\n }); // Refresh bounds and weighted positions.\n\n this._topClusterLevel._recalculateBounds();\n\n this._refreshClustersIcons(); //Work out what is visible\n\n\n var visibleLayer = layer,\n currentZoom = this._zoom;\n\n if (layer.__parent) {\n while (visibleLayer.__parent._zoom >= currentZoom) {\n visibleLayer = visibleLayer.__parent;\n }\n }\n\n if (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n if (this.options.animateAddingMarkers) {\n this._animationAddLayer(layer, visibleLayer);\n } else {\n this._animationAddLayerNonAnimated(layer, visibleLayer);\n }\n }\n\n return this;\n },\n removeLayer: function removeLayer(layer) {\n if (layer instanceof L.LayerGroup) {\n return this.removeLayers([layer]);\n } //Non point layers\n\n\n if (!layer.getLatLng) {\n this._nonPointGroup.removeLayer(layer);\n\n this.fire('layerremove', {\n layer: layer\n });\n return this;\n }\n\n if (!this._map) {\n if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n this._needsRemoving.push({\n layer: layer,\n latlng: layer._latlng\n });\n }\n\n this.fire('layerremove', {\n layer: layer\n });\n return this;\n }\n\n if (!layer.__parent) {\n return this;\n }\n\n if (this._unspiderfy) {\n this._unspiderfy();\n\n this._unspiderfyLayer(layer);\n } //Remove the marker from clusters\n\n\n this._removeLayer(layer, true);\n\n this.fire('layerremove', {\n layer: layer\n }); // Refresh bounds and weighted positions.\n\n this._topClusterLevel._recalculateBounds();\n\n this._refreshClustersIcons();\n\n layer.off(this._childMarkerEventHandlers, this);\n\n if (this._featureGroup.hasLayer(layer)) {\n this._featureGroup.removeLayer(layer);\n\n if (layer.clusterShow) {\n layer.clusterShow();\n }\n }\n\n return this;\n },\n //Takes an array of markers and adds them in bulk\n addLayers: function addLayers(layersArray, skipLayerAddEvent) {\n if (!L.Util.isArray(layersArray)) {\n return this.addLayer(layersArray);\n }\n\n var fg = this._featureGroup,\n npg = this._nonPointGroup,\n chunked = this.options.chunkedLoading,\n chunkInterval = this.options.chunkInterval,\n chunkProgress = this.options.chunkProgress,\n l = layersArray.length,\n offset = 0,\n originalArray = true,\n m;\n\n if (this._map) {\n var started = new Date().getTime();\n var process = L.bind(function () {\n var start = new Date().getTime();\n\n for (; offset < l; offset++) {\n if (chunked && offset % 200 === 0) {\n // every couple hundred markers, instrument the time elapsed since processing started:\n var elapsed = new Date().getTime() - start;\n\n if (elapsed > chunkInterval) {\n break; // been working too hard, time to take a break :-)\n }\n }\n\n m = layersArray[offset]; // Group of layers, append children to layersArray and skip.\n // Side effects:\n // - Total increases, so chunkProgress ratio jumps backward.\n // - Groups are not included in this group, only their non-group child layers (hasLayer).\n // Changing array length while looping does not affect performance in current browsers:\n // http://jsperf.com/for-loop-changing-length/6\n\n if (m instanceof L.LayerGroup) {\n if (originalArray) {\n layersArray = layersArray.slice();\n originalArray = false;\n }\n\n this._extractNonGroupLayers(m, layersArray);\n\n l = layersArray.length;\n continue;\n } //Not point data, can't be clustered\n\n\n if (!m.getLatLng) {\n npg.addLayer(m);\n\n if (!skipLayerAddEvent) {\n this.fire('layeradd', {\n layer: m\n });\n }\n\n continue;\n }\n\n if (this.hasLayer(m)) {\n continue;\n }\n\n this._addLayer(m, this._maxZoom);\n\n if (!skipLayerAddEvent) {\n this.fire('layeradd', {\n layer: m\n });\n } //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\n\n if (m.__parent) {\n if (m.__parent.getChildCount() === 2) {\n var markers = m.__parent.getAllChildMarkers(),\n otherMarker = markers[0] === m ? markers[1] : markers[0];\n\n fg.removeLayer(otherMarker);\n }\n }\n }\n\n if (chunkProgress) {\n // report progress and time elapsed:\n chunkProgress(offset, l, new Date().getTime() - started);\n } // Completed processing all markers.\n\n\n if (offset === l) {\n // Refresh bounds and weighted positions.\n this._topClusterLevel._recalculateBounds();\n\n this._refreshClustersIcons();\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n } else {\n setTimeout(process, this.options.chunkDelay);\n }\n }, this);\n process();\n } else {\n var needsClustering = this._needsClustering;\n\n for (; offset < l; offset++) {\n m = layersArray[offset]; // Group of layers, append children to layersArray and skip.\n\n if (m instanceof L.LayerGroup) {\n if (originalArray) {\n layersArray = layersArray.slice();\n originalArray = false;\n }\n\n this._extractNonGroupLayers(m, layersArray);\n\n l = layersArray.length;\n continue;\n } //Not point data, can't be clustered\n\n\n if (!m.getLatLng) {\n npg.addLayer(m);\n continue;\n }\n\n if (this.hasLayer(m)) {\n continue;\n }\n\n needsClustering.push(m);\n }\n }\n\n return this;\n },\n //Takes an array of markers and removes them in bulk\n removeLayers: function removeLayers(layersArray) {\n var i,\n m,\n l = layersArray.length,\n fg = this._featureGroup,\n npg = this._nonPointGroup,\n originalArray = true;\n\n if (!this._map) {\n for (i = 0; i < l; i++) {\n m = layersArray[i]; // Group of layers, append children to layersArray and skip.\n\n if (m instanceof L.LayerGroup) {\n if (originalArray) {\n layersArray = layersArray.slice();\n originalArray = false;\n }\n\n this._extractNonGroupLayers(m, layersArray);\n\n l = layersArray.length;\n continue;\n }\n\n this._arraySplice(this._needsClustering, m);\n\n npg.removeLayer(m);\n\n if (this.hasLayer(m)) {\n this._needsRemoving.push({\n layer: m,\n latlng: m._latlng\n });\n }\n\n this.fire('layerremove', {\n layer: m\n });\n }\n\n return this;\n }\n\n if (this._unspiderfy) {\n this._unspiderfy(); // Work on a copy of the array, so that next loop is not affected.\n\n\n var layersArray2 = layersArray.slice(),\n l2 = l;\n\n for (i = 0; i < l2; i++) {\n m = layersArray2[i]; // Group of layers, append children to layersArray and skip.\n\n if (m instanceof L.LayerGroup) {\n this._extractNonGroupLayers(m, layersArray2);\n\n l2 = layersArray2.length;\n continue;\n }\n\n this._unspiderfyLayer(m);\n }\n }\n\n for (i = 0; i < l; i++) {\n m = layersArray[i]; // Group of layers, append children to layersArray and skip.\n\n if (m instanceof L.LayerGroup) {\n if (originalArray) {\n layersArray = layersArray.slice();\n originalArray = false;\n }\n\n this._extractNonGroupLayers(m, layersArray);\n\n l = layersArray.length;\n continue;\n }\n\n if (!m.__parent) {\n npg.removeLayer(m);\n this.fire('layerremove', {\n layer: m\n });\n continue;\n }\n\n this._removeLayer(m, true, true);\n\n this.fire('layerremove', {\n layer: m\n });\n\n if (fg.hasLayer(m)) {\n fg.removeLayer(m);\n\n if (m.clusterShow) {\n m.clusterShow();\n }\n }\n } // Refresh bounds and weighted positions.\n\n\n this._topClusterLevel._recalculateBounds();\n\n this._refreshClustersIcons(); //Fix up the clusters and markers on the map\n\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n return this;\n },\n //Removes all layers from the MarkerClusterGroup\n clearLayers: function clearLayers() {\n //Need our own special implementation as the LayerGroup one doesn't work for us\n //If we aren't on the map (yet), blow away the markers we know of\n if (!this._map) {\n this._needsClustering = [];\n this._needsRemoving = [];\n delete this._gridClusters;\n delete this._gridUnclustered;\n }\n\n if (this._noanimationUnspiderfy) {\n this._noanimationUnspiderfy();\n } //Remove all the visible layers\n\n\n this._featureGroup.clearLayers();\n\n this._nonPointGroup.clearLayers();\n\n this.eachLayer(function (marker) {\n marker.off(this._childMarkerEventHandlers, this);\n delete marker.__parent;\n }, this);\n\n if (this._map) {\n //Reset _topClusterLevel and the DistanceGrids\n this._generateInitialClusters();\n }\n\n return this;\n },\n //Override FeatureGroup.getBounds as it doesn't work\n getBounds: function getBounds() {\n var bounds = new L.LatLngBounds();\n\n if (this._topClusterLevel) {\n bounds.extend(this._topClusterLevel._bounds);\n }\n\n for (var i = this._needsClustering.length - 1; i >= 0; i--) {\n bounds.extend(this._needsClustering[i].getLatLng());\n }\n\n bounds.extend(this._nonPointGroup.getBounds());\n return bounds;\n },\n //Overrides LayerGroup.eachLayer\n eachLayer: function eachLayer(method, context) {\n var markers = this._needsClustering.slice(),\n needsRemoving = this._needsRemoving,\n thisNeedsRemoving,\n i,\n j;\n\n if (this._topClusterLevel) {\n this._topClusterLevel.getAllChildMarkers(markers);\n }\n\n for (i = markers.length - 1; i >= 0; i--) {\n thisNeedsRemoving = true;\n\n for (j = needsRemoving.length - 1; j >= 0; j--) {\n if (needsRemoving[j].layer === markers[i]) {\n thisNeedsRemoving = false;\n break;\n }\n }\n\n if (thisNeedsRemoving) {\n method.call(context, markers[i]);\n }\n }\n\n this._nonPointGroup.eachLayer(method, context);\n },\n //Overrides LayerGroup.getLayers\n getLayers: function getLayers() {\n var layers = [];\n this.eachLayer(function (l) {\n layers.push(l);\n });\n return layers;\n },\n //Overrides LayerGroup.getLayer, WARNING: Really bad performance\n getLayer: function getLayer(id) {\n var result = null;\n id = parseInt(id, 10);\n this.eachLayer(function (l) {\n if (L.stamp(l) === id) {\n result = l;\n }\n });\n return result;\n },\n //Returns true if the given layer is in this MarkerClusterGroup\n hasLayer: function hasLayer(layer) {\n if (!layer) {\n return false;\n }\n\n var i,\n anArray = this._needsClustering;\n\n for (i = anArray.length - 1; i >= 0; i--) {\n if (anArray[i] === layer) {\n return true;\n }\n }\n\n anArray = this._needsRemoving;\n\n for (i = anArray.length - 1; i >= 0; i--) {\n if (anArray[i].layer === layer) {\n return false;\n }\n }\n\n return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n },\n //Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n zoomToShowLayer: function zoomToShowLayer(layer, callback) {\n if (typeof callback !== 'function') {\n callback = function callback() {};\n }\n\n var showMarker = function showMarker() {\n if ((layer._icon || layer.__parent._icon) && !this._inZoomAnimation) {\n this._map.off('moveend', showMarker, this);\n\n this.off('animationend', showMarker, this);\n\n if (layer._icon) {\n callback();\n } else if (layer.__parent._icon) {\n this.once('spiderfied', callback, this);\n\n layer.__parent.spiderfy();\n }\n }\n };\n\n if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n //Layer is visible ond on screen, immediate return\n callback();\n } else if (layer.__parent._zoom < Math.round(this._map._zoom)) {\n //Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n this._map.on('moveend', showMarker, this);\n\n this._map.panTo(layer.getLatLng());\n } else {\n this._map.on('moveend', showMarker, this);\n\n this.on('animationend', showMarker, this);\n\n layer.__parent.zoomToBounds();\n }\n },\n //Overrides FeatureGroup.onAdd\n onAdd: function onAdd(map) {\n this._map = map;\n var i, l, layer;\n\n if (!isFinite(this._map.getMaxZoom())) {\n throw \"Map has no maxZoom specified\";\n }\n\n this._featureGroup.addTo(map);\n\n this._nonPointGroup.addTo(map);\n\n if (!this._gridClusters) {\n this._generateInitialClusters();\n }\n\n this._maxLat = map.options.crs.projection.MAX_LATITUDE; //Restore all the positions as they are in the MCG before removing them\n\n for (i = 0, l = this._needsRemoving.length; i < l; i++) {\n layer = this._needsRemoving[i];\n layer.newlatlng = layer.layer._latlng;\n layer.layer._latlng = layer.latlng;\n } //Remove them, then restore their new positions\n\n\n for (i = 0, l = this._needsRemoving.length; i < l; i++) {\n layer = this._needsRemoving[i];\n\n this._removeLayer(layer.layer, true);\n\n layer.layer._latlng = layer.newlatlng;\n }\n\n this._needsRemoving = []; //Remember the current zoom level and bounds\n\n this._zoom = Math.round(this._map._zoom);\n this._currentShownBounds = this._getExpandedVisibleBounds();\n\n this._map.on('zoomend', this._zoomEnd, this);\n\n this._map.on('moveend', this._moveEnd, this);\n\n if (this._spiderfierOnAdd) {\n //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n this._spiderfierOnAdd();\n }\n\n this._bindEvents(); //Actually add our markers to the map:\n\n\n l = this._needsClustering;\n this._needsClustering = [];\n this.addLayers(l, true);\n },\n //Overrides FeatureGroup.onRemove\n onRemove: function onRemove(map) {\n map.off('zoomend', this._zoomEnd, this);\n map.off('moveend', this._moveEnd, this);\n\n this._unbindEvents(); //In case we are in a cluster animation\n\n\n this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n if (this._spiderfierOnRemove) {\n //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n this._spiderfierOnRemove();\n }\n\n delete this._maxLat; //Clean up all the layers we added to the map\n\n this._hideCoverage();\n\n this._featureGroup.remove();\n\n this._nonPointGroup.remove();\n\n this._featureGroup.clearLayers();\n\n this._map = null;\n },\n getVisibleParent: function getVisibleParent(marker) {\n var vMarker = marker;\n\n while (vMarker && !vMarker._icon) {\n vMarker = vMarker.__parent;\n }\n\n return vMarker || null;\n },\n //Remove the given object from the given array\n _arraySplice: function _arraySplice(anArray, obj) {\n for (var i = anArray.length - 1; i >= 0; i--) {\n if (anArray[i] === obj) {\n anArray.splice(i, 1);\n return true;\n }\n }\n },\n\n /**\r\n * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\r\n * @param marker to be removed from _gridUnclustered.\r\n * @param z integer bottom start zoom level (included)\r\n * @private\r\n */\n _removeFromGridUnclustered: function _removeFromGridUnclustered(marker, z) {\n var map = this._map,\n gridUnclustered = this._gridUnclustered,\n minZoom = Math.floor(this._map.getMinZoom());\n\n for (; z >= minZoom; z--) {\n if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n break;\n }\n }\n },\n _childMarkerDragStart: function _childMarkerDragStart(e) {\n e.target.__dragStart = e.target._latlng;\n },\n _childMarkerMoved: function _childMarkerMoved(e) {\n if (!this._ignoreMove && !e.target.__dragStart) {\n var isPopupOpen = e.target._popup && e.target._popup.isOpen();\n\n this._moveChild(e.target, e.oldLatLng, e.latlng);\n\n if (isPopupOpen) {\n e.target.openPopup();\n }\n }\n },\n _moveChild: function _moveChild(layer, from, to) {\n layer._latlng = from;\n this.removeLayer(layer);\n layer._latlng = to;\n this.addLayer(layer);\n },\n _childMarkerDragEnd: function _childMarkerDragEnd(e) {\n var dragStart = e.target.__dragStart;\n delete e.target.__dragStart;\n\n if (dragStart) {\n this._moveChild(e.target, dragStart, e.target._latlng);\n }\n },\n //Internal function for removing a marker from everything.\n //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n _removeLayer: function _removeLayer(marker, removeFromDistanceGrid, dontUpdateMap) {\n var gridClusters = this._gridClusters,\n gridUnclustered = this._gridUnclustered,\n fg = this._featureGroup,\n map = this._map,\n minZoom = Math.floor(this._map.getMinZoom()); //Remove the marker from distance clusters it might be in\n\n if (removeFromDistanceGrid) {\n this._removeFromGridUnclustered(marker, this._maxZoom);\n } //Work our way up the clusters removing them as we go if required\n\n\n var cluster = marker.__parent,\n markers = cluster._markers,\n otherMarker; //Remove the marker from the immediate parents marker list\n\n this._arraySplice(markers, marker);\n\n while (cluster) {\n cluster._childCount--;\n cluster._boundsNeedUpdate = true;\n\n if (cluster._zoom < minZoom) {\n //Top level, do nothing\n break;\n } else if (removeFromDistanceGrid && cluster._childCount <= 1) {\n //Cluster no longer required\n //We need to push the other marker up to the parent\n otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; //Update distance grid\n\n gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\n gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); //Move otherMarker up to parent\n\n\n this._arraySplice(cluster.__parent._childClusters, cluster);\n\n cluster.__parent._markers.push(otherMarker);\n\n otherMarker.__parent = cluster.__parent;\n\n if (cluster._icon) {\n //Cluster is currently on the map, need to put the marker on the map instead\n fg.removeLayer(cluster);\n\n if (!dontUpdateMap) {\n fg.addLayer(otherMarker);\n }\n }\n } else {\n cluster._iconNeedsUpdate = true;\n }\n\n cluster = cluster.__parent;\n }\n\n delete marker.__parent;\n },\n _isOrIsParent: function _isOrIsParent(el, oel) {\n while (oel) {\n if (el === oel) {\n return true;\n }\n\n oel = oel.parentNode;\n }\n\n return false;\n },\n //Override L.Evented.fire\n fire: function fire(type, data, propagate) {\n if (data && data.layer instanceof L.MarkerCluster) {\n //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n return;\n }\n\n type = 'cluster' + type;\n }\n\n L.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n },\n //Override L.Evented.listens\n listens: function listens(type, propagate) {\n return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n },\n //Default functionality\n _defaultIconCreateFunction: function _defaultIconCreateFunction(cluster) {\n var childCount = cluster.getChildCount();\n var c = ' marker-cluster-';\n\n if (childCount < 10) {\n c += 'small';\n } else if (childCount < 100) {\n c += 'medium';\n } else {\n c += 'large';\n }\n\n return new L.DivIcon({\n html: '
' + childCount + '
',\n className: 'marker-cluster' + c,\n iconSize: new L.Point(40, 40)\n });\n },\n _bindEvents: function _bindEvents() {\n var map = this._map,\n spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n showCoverageOnHover = this.options.showCoverageOnHover,\n zoomToBoundsOnClick = this.options.zoomToBoundsOnClick; //Zoom on cluster click or spiderfy if we are at the lowest level\n\n if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n this.on('clusterclick', this._zoomOrSpiderfy, this);\n } //Show convex hull (boundary) polygon on mouse over\n\n\n if (showCoverageOnHover) {\n this.on('clustermouseover', this._showCoverage, this);\n this.on('clustermouseout', this._hideCoverage, this);\n map.on('zoomend', this._hideCoverage, this);\n }\n },\n _zoomOrSpiderfy: function _zoomOrSpiderfy(e) {\n var cluster = e.layer,\n bottomCluster = cluster;\n\n while (bottomCluster._childClusters.length === 1) {\n bottomCluster = bottomCluster._childClusters[0];\n }\n\n if (bottomCluster._zoom === this._maxZoom && bottomCluster._childCount === cluster._childCount && this.options.spiderfyOnMaxZoom) {\n // All child markers are contained in a single cluster from this._maxZoom to this cluster.\n cluster.spiderfy();\n } else if (this.options.zoomToBoundsOnClick) {\n cluster.zoomToBounds();\n } // Focus the map again for keyboard users.\n\n\n if (e.originalEvent && e.originalEvent.keyCode === 13) {\n this._map._container.focus();\n }\n },\n _showCoverage: function _showCoverage(e) {\n var map = this._map;\n\n if (this._inZoomAnimation) {\n return;\n }\n\n if (this._shownPolygon) {\n map.removeLayer(this._shownPolygon);\n }\n\n if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n map.addLayer(this._shownPolygon);\n }\n },\n _hideCoverage: function _hideCoverage() {\n if (this._shownPolygon) {\n this._map.removeLayer(this._shownPolygon);\n\n this._shownPolygon = null;\n }\n },\n _unbindEvents: function _unbindEvents() {\n var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n showCoverageOnHover = this.options.showCoverageOnHover,\n zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n map = this._map;\n\n if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n this.off('clusterclick', this._zoomOrSpiderfy, this);\n }\n\n if (showCoverageOnHover) {\n this.off('clustermouseover', this._showCoverage, this);\n this.off('clustermouseout', this._hideCoverage, this);\n map.off('zoomend', this._hideCoverage, this);\n }\n },\n _zoomEnd: function _zoomEnd() {\n if (!this._map) {\n //May have been removed from the map by a zoomEnd handler\n return;\n }\n\n this._mergeSplitClusters();\n\n this._zoom = Math.round(this._map._zoom);\n this._currentShownBounds = this._getExpandedVisibleBounds();\n },\n _moveEnd: function _moveEnd() {\n if (this._inZoomAnimation) {\n return;\n }\n\n var newBounds = this._getExpandedVisibleBounds();\n\n this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n this._currentShownBounds = newBounds;\n return;\n },\n _generateInitialClusters: function _generateInitialClusters() {\n var maxZoom = Math.ceil(this._map.getMaxZoom()),\n minZoom = Math.floor(this._map.getMinZoom()),\n radius = this.options.maxClusterRadius,\n radiusFn = radius; //If we just set maxClusterRadius to a single number, we need to create\n //a simple function to return that number. Otherwise, we just have to\n //use the function we've passed in.\n\n if (typeof radius !== \"function\") {\n radiusFn = function radiusFn() {\n return radius;\n };\n }\n\n if (this.options.disableClusteringAtZoom !== null) {\n maxZoom = this.options.disableClusteringAtZoom - 1;\n }\n\n this._maxZoom = maxZoom;\n this._gridClusters = {};\n this._gridUnclustered = {}; //Set up DistanceGrids for each zoom\n\n for (var zoom = maxZoom; zoom >= minZoom; zoom--) {\n this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n } // Instantiate the appropriate L.MarkerCluster class (animated or not).\n\n\n this._topClusterLevel = new this._markerCluster(this, minZoom - 1);\n },\n //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n _addLayer: function _addLayer(layer, zoom) {\n var gridClusters = this._gridClusters,\n gridUnclustered = this._gridUnclustered,\n minZoom = Math.floor(this._map.getMinZoom()),\n markerPoint,\n z;\n\n if (this.options.singleMarkerMode) {\n this._overrideMarkerIcon(layer);\n }\n\n layer.on(this._childMarkerEventHandlers, this); //Find the lowest zoom level to slot this one in\n\n for (; zoom >= minZoom; zoom--) {\n markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n //Try find a cluster close by\n\n var closest = gridClusters[zoom].getNearObject(markerPoint);\n\n if (closest) {\n closest._addChild(layer);\n\n layer.__parent = closest;\n return;\n } //Try find a marker close by to form a new cluster with\n\n\n closest = gridUnclustered[zoom].getNearObject(markerPoint);\n\n if (closest) {\n var parent = closest.__parent;\n\n if (parent) {\n this._removeLayer(closest, false);\n } //Create new cluster with these 2 in it\n\n\n var newCluster = new this._markerCluster(this, zoom, closest, layer);\n gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n closest.__parent = newCluster;\n layer.__parent = newCluster; //First create any new intermediate parent clusters that don't exist\n\n var lastParent = newCluster;\n\n for (z = zoom - 1; z > parent._zoom; z--) {\n lastParent = new this._markerCluster(this, z, lastParent);\n gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n }\n\n parent._addChild(lastParent); //Remove closest from this zoom level and any above that it is in, replace with newCluster\n\n\n this._removeFromGridUnclustered(closest, zoom);\n\n return;\n } //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\n\n gridUnclustered[zoom].addObject(layer, markerPoint);\n } //Didn't get in anything, add us to the top\n\n\n this._topClusterLevel._addChild(layer);\n\n layer.__parent = this._topClusterLevel;\n return;\n },\n\n /**\r\n * Refreshes the icon of all \"dirty\" visible clusters.\r\n * Non-visible \"dirty\" clusters will be updated when they are added to the map.\r\n * @private\r\n */\n _refreshClustersIcons: function _refreshClustersIcons() {\n this._featureGroup.eachLayer(function (c) {\n if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n c._updateIcon();\n }\n });\n },\n //Enqueue code to fire after the marker expand/contract has happened\n _enqueue: function _enqueue(fn) {\n this._queue.push(fn);\n\n if (!this._queueTimeout) {\n this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n }\n },\n _processQueue: function _processQueue() {\n for (var i = 0; i < this._queue.length; i++) {\n this._queue[i].call(this);\n }\n\n this._queue.length = 0;\n clearTimeout(this._queueTimeout);\n this._queueTimeout = null;\n },\n //Merge and split any existing clusters that are too big or small\n _mergeSplitClusters: function _mergeSplitClusters() {\n var mapZoom = Math.round(this._map._zoom); //In case we are starting to split before the animation finished\n\n this._processQueue();\n\n if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) {\n //Zoom in, split\n this._animationStart(); //Remove clusters now off screen\n\n\n this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());\n\n this._animationZoomIn(this._zoom, mapZoom);\n } else if (this._zoom > mapZoom) {\n //Zoom out, merge\n this._animationStart();\n\n this._animationZoomOut(this._zoom, mapZoom);\n } else {\n this._moveEnd();\n }\n },\n //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n _getExpandedVisibleBounds: function _getExpandedVisibleBounds() {\n if (!this.options.removeOutsideVisibleBounds) {\n return this._mapBoundsInfinite;\n } else if (L.Browser.mobile) {\n return this._checkBoundsMaxLat(this._map.getBounds());\n }\n\n return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n },\n\n /**\r\n * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\r\n * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\r\n * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\r\n * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\r\n * making the user think that MCG \"eats\" them and never displays them again.\r\n * @param bounds L.LatLngBounds\r\n * @returns {L.LatLngBounds}\r\n * @private\r\n */\n _checkBoundsMaxLat: function _checkBoundsMaxLat(bounds) {\n var maxLat = this._maxLat;\n\n if (maxLat !== undefined) {\n if (bounds.getNorth() >= maxLat) {\n bounds._northEast.lat = Infinity;\n }\n\n if (bounds.getSouth() <= -maxLat) {\n bounds._southWest.lat = -Infinity;\n }\n }\n\n return bounds;\n },\n //Shared animation code\n _animationAddLayerNonAnimated: function _animationAddLayerNonAnimated(layer, newCluster) {\n if (newCluster === layer) {\n this._featureGroup.addLayer(layer);\n } else if (newCluster._childCount === 2) {\n newCluster._addToMap();\n\n var markers = newCluster.getAllChildMarkers();\n\n this._featureGroup.removeLayer(markers[0]);\n\n this._featureGroup.removeLayer(markers[1]);\n } else {\n newCluster._updateIcon();\n }\n },\n\n /**\r\n * Extracts individual (i.e. non-group) layers from a Layer Group.\r\n * @param group to extract layers from.\r\n * @param output {Array} in which to store the extracted layers.\r\n * @returns {*|Array}\r\n * @private\r\n */\n _extractNonGroupLayers: function _extractNonGroupLayers(group, output) {\n var layers = group.getLayers(),\n i = 0,\n layer;\n output = output || [];\n\n for (; i < layers.length; i++) {\n layer = layers[i];\n\n if (layer instanceof L.LayerGroup) {\n this._extractNonGroupLayers(layer, output);\n\n continue;\n }\n\n output.push(layer);\n }\n\n return output;\n },\n\n /**\r\n * Implements the singleMarkerMode option.\r\n * @param layer Marker to re-style using the Clusters iconCreateFunction.\r\n * @returns {L.Icon} The newly created icon.\r\n * @private\r\n */\n _overrideMarkerIcon: function _overrideMarkerIcon(layer) {\n var icon = layer.options.icon = this.options.iconCreateFunction({\n getChildCount: function getChildCount() {\n return 1;\n },\n getAllChildMarkers: function getAllChildMarkers() {\n return [layer];\n }\n });\n return icon;\n }\n }); // Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\n\n L.MarkerClusterGroup.include({\n _mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n });\n L.MarkerClusterGroup.include({\n _noAnimation: {\n //Non Animated versions of everything\n _animationStart: function _animationStart() {//Do nothing...\n },\n _animationZoomIn: function _animationZoomIn(previousZoomLevel, newZoomLevel) {\n this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); //We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\n\n this.fire('animationend');\n },\n _animationZoomOut: function _animationZoomOut(previousZoomLevel, newZoomLevel) {\n this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); //We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\n\n this.fire('animationend');\n },\n _animationAddLayer: function _animationAddLayer(layer, newCluster) {\n this._animationAddLayerNonAnimated(layer, newCluster);\n }\n },\n _withAnimation: {\n //Animated versions here\n _animationStart: function _animationStart() {\n this._map._mapPane.className += ' leaflet-cluster-anim';\n this._inZoomAnimation++;\n },\n _animationZoomIn: function _animationZoomIn(previousZoomLevel, newZoomLevel) {\n var bounds = this._getExpandedVisibleBounds(),\n fg = this._featureGroup,\n minZoom = Math.floor(this._map.getMinZoom()),\n i;\n\n this._ignoreMove = true; //Add all children of current clusters to map and remove those clusters from map\n\n this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n var startPos = c._latlng,\n markers = c._markers,\n m;\n\n if (!bounds.contains(startPos)) {\n startPos = null;\n }\n\n if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) {\n //Immediately add the new child and remove us\n fg.removeLayer(c);\n\n c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n } else {\n //Fade out old cluster\n c.clusterHide();\n\n c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n } //Remove all markers that aren't visible any more\n //TODO: Do we actually need to do this on the higher levels too?\n\n\n for (i = markers.length - 1; i >= 0; i--) {\n m = markers[i];\n\n if (!bounds.contains(m._latlng)) {\n fg.removeLayer(m);\n }\n }\n });\n\n this._forceLayout(); //Update opacities\n\n\n this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); //TODO Maybe? Update markers in _recursivelyBecomeVisible\n\n\n fg.eachLayer(function (n) {\n if (!(n instanceof L.MarkerCluster) && n._icon) {\n n.clusterShow();\n }\n }); //update the positions of the just added clusters/markers\n\n this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n c._recursivelyRestoreChildPositions(newZoomLevel);\n });\n\n this._ignoreMove = false; //Remove the old clusters and close the zoom animation\n\n this._enqueue(function () {\n //update the positions of the just added clusters/markers\n this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n fg.removeLayer(c);\n c.clusterShow();\n });\n\n this._animationEnd();\n });\n },\n _animationZoomOut: function _animationZoomOut(previousZoomLevel, newZoomLevel) {\n this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); //Need to add markers for those that weren't on the map before but are now\n\n\n this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); //Remove markers that were on the map before but won't be now\n\n\n this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());\n },\n _animationAddLayer: function _animationAddLayer(layer, newCluster) {\n var me = this,\n fg = this._featureGroup;\n fg.addLayer(layer);\n\n if (newCluster !== layer) {\n if (newCluster._childCount > 2) {\n //Was already a cluster\n newCluster._updateIcon();\n\n this._forceLayout();\n\n this._animationStart();\n\n layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\n layer.clusterHide();\n\n this._enqueue(function () {\n fg.removeLayer(layer);\n layer.clusterShow();\n\n me._animationEnd();\n });\n } else {\n //Just became a cluster\n this._forceLayout();\n\n me._animationStart();\n\n me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);\n }\n }\n }\n },\n // Private methods for animated versions.\n _animationZoomOutSingle: function _animationZoomOutSingle(cluster, previousZoomLevel, newZoomLevel) {\n var bounds = this._getExpandedVisibleBounds(),\n minZoom = Math.floor(this._map.getMinZoom()); //Animate all of the markers in the clusters to move to their cluster center point\n\n\n cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);\n\n var me = this; //Update the opacity (If we immediately set it they won't animate)\n\n this._forceLayout();\n\n cluster._recursivelyBecomeVisible(bounds, newZoomLevel); //TODO: Maybe use the transition timing stuff to make this more reliable\n //When the animations are done, tidy up\n\n\n this._enqueue(function () {\n //This cluster stopped being a cluster before the timeout fired\n if (cluster._childCount === 1) {\n var m = cluster._markers[0]; //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\n this._ignoreMove = true;\n m.setLatLng(m.getLatLng());\n this._ignoreMove = false;\n\n if (m.clusterShow) {\n m.clusterShow();\n }\n } else {\n cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {\n c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);\n });\n }\n\n me._animationEnd();\n });\n },\n _animationEnd: function _animationEnd() {\n if (this._map) {\n this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n }\n\n this._inZoomAnimation--;\n this.fire('animationend');\n },\n //Force a browser layout of stuff in the map\n // Should apply the current opacity and location to all elements so we can update them again for an animation\n _forceLayout: function _forceLayout() {\n //In my testing this works, infact offsetWidth of any element seems to work.\n //Could loop all this._layers and do this for each _icon if it stops working\n L.Util.falseFn(document.body.offsetWidth);\n }\n });\n\n L.markerClusterGroup = function (options) {\n return new L.MarkerClusterGroup(options);\n };\n\n var MarkerCluster = L.MarkerCluster = L.Marker.extend({\n options: L.Icon.prototype.options,\n initialize: function initialize(group, zoom, a, b) {\n L.Marker.prototype.initialize.call(this, a ? a._cLatLng || a.getLatLng() : new L.LatLng(0, 0), {\n icon: this,\n pane: group.options.clusterPane\n });\n this._group = group;\n this._zoom = zoom;\n this._markers = [];\n this._childClusters = [];\n this._childCount = 0;\n this._iconNeedsUpdate = true;\n this._boundsNeedUpdate = true;\n this._bounds = new L.LatLngBounds();\n\n if (a) {\n this._addChild(a);\n }\n\n if (b) {\n this._addChild(b);\n }\n },\n //Recursively retrieve all child markers of this cluster\n getAllChildMarkers: function getAllChildMarkers(storageArray, ignoreDraggedMarker) {\n storageArray = storageArray || [];\n\n for (var i = this._childClusters.length - 1; i >= 0; i--) {\n this._childClusters[i].getAllChildMarkers(storageArray);\n }\n\n for (var j = this._markers.length - 1; j >= 0; j--) {\n if (ignoreDraggedMarker && this._markers[j].__dragStart) {\n continue;\n }\n\n storageArray.push(this._markers[j]);\n }\n\n return storageArray;\n },\n //Returns the count of how many child markers we have\n getChildCount: function getChildCount() {\n return this._childCount;\n },\n //Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n zoomToBounds: function zoomToBounds(fitBoundsOptions) {\n var childClusters = this._childClusters.slice(),\n map = this._group._map,\n boundsZoom = map.getBoundsZoom(this._bounds),\n zoom = this._zoom + 1,\n mapZoom = map.getZoom(),\n i; //calculate how far we need to zoom down to see all of the markers\n\n\n while (childClusters.length > 0 && boundsZoom > zoom) {\n zoom++;\n var newClusters = [];\n\n for (i = 0; i < childClusters.length; i++) {\n newClusters = newClusters.concat(childClusters[i]._childClusters);\n }\n\n childClusters = newClusters;\n }\n\n if (boundsZoom > zoom) {\n this._group._map.setView(this._latlng, zoom);\n } else if (boundsZoom <= mapZoom) {\n //If fitBounds wouldn't zoom us down, zoom us down instead\n this._group._map.setView(this._latlng, mapZoom + 1);\n } else {\n this._group._map.fitBounds(this._bounds, fitBoundsOptions);\n }\n },\n getBounds: function getBounds() {\n var bounds = new L.LatLngBounds();\n bounds.extend(this._bounds);\n return bounds;\n },\n _updateIcon: function _updateIcon() {\n this._iconNeedsUpdate = true;\n\n if (this._icon) {\n this.setIcon(this);\n }\n },\n //Cludge for Icon, we pretend to be an icon for performance\n createIcon: function createIcon() {\n if (this._iconNeedsUpdate) {\n this._iconObj = this._group.options.iconCreateFunction(this);\n this._iconNeedsUpdate = false;\n }\n\n return this._iconObj.createIcon();\n },\n createShadow: function createShadow() {\n return this._iconObj.createShadow();\n },\n _addChild: function _addChild(new1, isNotificationFromChild) {\n this._iconNeedsUpdate = true;\n this._boundsNeedUpdate = true;\n\n this._setClusterCenter(new1);\n\n if (new1 instanceof L.MarkerCluster) {\n if (!isNotificationFromChild) {\n this._childClusters.push(new1);\n\n new1.__parent = this;\n }\n\n this._childCount += new1._childCount;\n } else {\n if (!isNotificationFromChild) {\n this._markers.push(new1);\n }\n\n this._childCount++;\n }\n\n if (this.__parent) {\n this.__parent._addChild(new1, true);\n }\n },\n\n /**\r\n * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\r\n * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\r\n * @private\r\n */\n _setClusterCenter: function _setClusterCenter(child) {\n if (!this._cLatLng) {\n // when clustering, take position of the first point as the cluster center\n this._cLatLng = child._cLatLng || child._latlng;\n }\n },\n\n /**\r\n * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\r\n * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\r\n * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\r\n * @private\r\n */\n _resetBounds: function _resetBounds() {\n var bounds = this._bounds;\n\n if (bounds._southWest) {\n bounds._southWest.lat = Infinity;\n bounds._southWest.lng = Infinity;\n }\n\n if (bounds._northEast) {\n bounds._northEast.lat = -Infinity;\n bounds._northEast.lng = -Infinity;\n }\n },\n _recalculateBounds: function _recalculateBounds() {\n var markers = this._markers,\n childClusters = this._childClusters,\n latSum = 0,\n lngSum = 0,\n totalCount = this._childCount,\n i,\n child,\n childLatLng,\n childCount; // Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\n if (totalCount === 0) {\n return;\n } // Reset rather than creating a new object, for performance.\n\n\n this._resetBounds(); // Child markers.\n\n\n for (i = 0; i < markers.length; i++) {\n childLatLng = markers[i]._latlng;\n\n this._bounds.extend(childLatLng);\n\n latSum += childLatLng.lat;\n lngSum += childLatLng.lng;\n } // Child clusters.\n\n\n for (i = 0; i < childClusters.length; i++) {\n child = childClusters[i]; // Re-compute child bounds and weighted position first if necessary.\n\n if (child._boundsNeedUpdate) {\n child._recalculateBounds();\n }\n\n this._bounds.extend(child._bounds);\n\n childLatLng = child._wLatLng;\n childCount = child._childCount;\n latSum += childLatLng.lat * childCount;\n lngSum += childLatLng.lng * childCount;\n }\n\n this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount); // Reset dirty flag.\n\n this._boundsNeedUpdate = false;\n },\n //Set our markers position as given and add it to the map\n _addToMap: function _addToMap(startPos) {\n if (startPos) {\n this._backupLatlng = this._latlng;\n this.setLatLng(startPos);\n }\n\n this._group._featureGroup.addLayer(this);\n },\n _recursivelyAnimateChildrenIn: function _recursivelyAnimateChildrenIn(bounds, center, maxZoom) {\n this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1, function (c) {\n var markers = c._markers,\n i,\n m;\n\n for (i = markers.length - 1; i >= 0; i--) {\n m = markers[i]; //Only do it if the icon is still on the map\n\n if (m._icon) {\n m._setPos(center);\n\n m.clusterHide();\n }\n }\n }, function (c) {\n var childClusters = c._childClusters,\n j,\n cm;\n\n for (j = childClusters.length - 1; j >= 0; j--) {\n cm = childClusters[j];\n\n if (cm._icon) {\n cm._setPos(center);\n\n cm.clusterHide();\n }\n }\n });\n },\n _recursivelyAnimateChildrenInAndAddSelfToMap: function _recursivelyAnimateChildrenInAndAddSelfToMap(bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {\n this._recursively(bounds, newZoomLevel, mapMinZoom, function (c) {\n c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n //As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\n\n if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n c.clusterShow();\n\n c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\n } else {\n c.clusterHide();\n }\n\n c._addToMap();\n });\n },\n _recursivelyBecomeVisible: function _recursivelyBecomeVisible(bounds, zoomLevel) {\n this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {\n c.clusterShow();\n });\n },\n _recursivelyAddChildrenToMap: function _recursivelyAddChildrenToMap(startPos, zoomLevel, bounds) {\n this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel, function (c) {\n if (zoomLevel === c._zoom) {\n return;\n } //Add our child markers at startPos (so they can be animated out)\n\n\n for (var i = c._markers.length - 1; i >= 0; i--) {\n var nm = c._markers[i];\n\n if (!bounds.contains(nm._latlng)) {\n continue;\n }\n\n if (startPos) {\n nm._backupLatlng = nm.getLatLng();\n nm.setLatLng(startPos);\n\n if (nm.clusterHide) {\n nm.clusterHide();\n }\n }\n\n c._group._featureGroup.addLayer(nm);\n }\n }, function (c) {\n c._addToMap(startPos);\n });\n },\n _recursivelyRestoreChildPositions: function _recursivelyRestoreChildPositions(zoomLevel) {\n //Fix positions of child markers\n for (var i = this._markers.length - 1; i >= 0; i--) {\n var nm = this._markers[i];\n\n if (nm._backupLatlng) {\n nm.setLatLng(nm._backupLatlng);\n delete nm._backupLatlng;\n }\n }\n\n if (zoomLevel - 1 === this._zoom) {\n //Reposition child clusters\n for (var j = this._childClusters.length - 1; j >= 0; j--) {\n this._childClusters[j]._restorePosition();\n }\n } else {\n for (var k = this._childClusters.length - 1; k >= 0; k--) {\n this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n }\n }\n },\n _restorePosition: function _restorePosition() {\n if (this._backupLatlng) {\n this.setLatLng(this._backupLatlng);\n delete this._backupLatlng;\n }\n },\n //exceptBounds: If set, don't remove any markers/clusters in it\n _recursivelyRemoveChildrenFromMap: function _recursivelyRemoveChildrenFromMap(previousBounds, mapMinZoom, zoomLevel, exceptBounds) {\n var m, i;\n\n this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1, function (c) {\n //Remove markers at every level\n for (i = c._markers.length - 1; i >= 0; i--) {\n m = c._markers[i];\n\n if (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n c._group._featureGroup.removeLayer(m);\n\n if (m.clusterShow) {\n m.clusterShow();\n }\n }\n }\n }, function (c) {\n //Remove child clusters at just the bottom level\n for (i = c._childClusters.length - 1; i >= 0; i--) {\n m = c._childClusters[i];\n\n if (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n c._group._featureGroup.removeLayer(m);\n\n if (m.clusterShow) {\n m.clusterShow();\n }\n }\n }\n });\n },\n //Run the given functions recursively to this and child clusters\n // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n // zoomLevelToStart: zoom level to start running functions (inclusive)\n // zoomLevelToStop: zoom level to stop running functions (inclusive)\n // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n _recursively: function _recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n var childClusters = this._childClusters,\n zoom = this._zoom,\n i,\n c;\n\n if (zoomLevelToStart <= zoom) {\n if (runAtEveryLevel) {\n runAtEveryLevel(this);\n }\n\n if (runAtBottomLevel && zoom === zoomLevelToStop) {\n runAtBottomLevel(this);\n }\n }\n\n if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {\n for (i = childClusters.length - 1; i >= 0; i--) {\n c = childClusters[i];\n\n if (c._boundsNeedUpdate) {\n c._recalculateBounds();\n }\n\n if (boundsToApplyTo.intersects(c._bounds)) {\n c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n }\n }\n }\n },\n //Returns true if we are the parent of only one cluster and that cluster is the same as us\n _isSingleParent: function _isSingleParent() {\n //Don't need to check this._markers as the rest won't work if there are any\n return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n }\n });\n /*\r\n * Extends L.Marker to include two extra methods: clusterHide and clusterShow.\r\n * \r\n * They work as setOpacity(0) and setOpacity(1) respectively, but\r\n * don't overwrite the options.opacity\r\n * \r\n */\n\n L.Marker.include({\n clusterHide: function clusterHide() {\n var backup = this.options.opacity;\n this.setOpacity(0);\n this.options.opacity = backup;\n return this;\n },\n clusterShow: function clusterShow() {\n return this.setOpacity(this.options.opacity);\n }\n });\n\n L.DistanceGrid = function (cellSize) {\n this._cellSize = cellSize;\n this._sqCellSize = cellSize * cellSize;\n this._grid = {};\n this._objectPoint = {};\n };\n\n L.DistanceGrid.prototype = {\n addObject: function addObject(obj, point) {\n var x = this._getCoord(point.x),\n y = this._getCoord(point.y),\n grid = this._grid,\n row = grid[y] = grid[y] || {},\n cell = row[x] = row[x] || [],\n stamp = L.Util.stamp(obj);\n\n this._objectPoint[stamp] = point;\n cell.push(obj);\n },\n updateObject: function updateObject(obj, point) {\n this.removeObject(obj);\n this.addObject(obj, point);\n },\n //Returns true if the object was found\n removeObject: function removeObject(obj, point) {\n var x = this._getCoord(point.x),\n y = this._getCoord(point.y),\n grid = this._grid,\n row = grid[y] = grid[y] || {},\n cell = row[x] = row[x] || [],\n i,\n len;\n\n delete this._objectPoint[L.Util.stamp(obj)];\n\n for (i = 0, len = cell.length; i < len; i++) {\n if (cell[i] === obj) {\n cell.splice(i, 1);\n\n if (len === 1) {\n delete row[x];\n }\n\n return true;\n }\n }\n },\n eachObject: function eachObject(fn, context) {\n var i,\n j,\n k,\n len,\n row,\n cell,\n removed,\n grid = this._grid;\n\n for (i in grid) {\n row = grid[i];\n\n for (j in row) {\n cell = row[j];\n\n for (k = 0, len = cell.length; k < len; k++) {\n removed = fn.call(context, cell[k]);\n\n if (removed) {\n k--;\n len--;\n }\n }\n }\n }\n },\n getNearObject: function getNearObject(point) {\n var x = this._getCoord(point.x),\n y = this._getCoord(point.y),\n i,\n j,\n k,\n row,\n cell,\n len,\n obj,\n dist,\n objectPoint = this._objectPoint,\n closestDistSq = this._sqCellSize,\n closest = null;\n\n for (i = y - 1; i <= y + 1; i++) {\n row = this._grid[i];\n\n if (row) {\n for (j = x - 1; j <= x + 1; j++) {\n cell = row[j];\n\n if (cell) {\n for (k = 0, len = cell.length; k < len; k++) {\n obj = cell[k];\n dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\n if (dist < closestDistSq || dist <= closestDistSq && closest === null) {\n closestDistSq = dist;\n closest = obj;\n }\n }\n }\n }\n }\n }\n\n return closest;\n },\n _getCoord: function _getCoord(x) {\n var coord = Math.floor(x / this._cellSize);\n return isFinite(coord) ? coord : x;\n },\n _sqDist: function _sqDist(p, p2) {\n var dx = p2.x - p.x,\n dy = p2.y - p.y;\n return dx * dx + dy * dy;\n }\n };\n /* Copyright (c) 2012 the authors listed at the following URL, and/or\r\n the authors of referenced articles or incorporated external code:\r\n http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\r\n \r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n \r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n \r\n Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\r\n */\n\n (function () {\n L.QuickHull = {\n /*\r\n * @param {Object} cpt a point to be measured from the baseline\r\n * @param {Array} bl the baseline, as represented by a two-element\r\n * array of latlng objects.\r\n * @returns {Number} an approximate distance measure\r\n */\n getDistant: function getDistant(cpt, bl) {\n var vY = bl[1].lat - bl[0].lat,\n vX = bl[0].lng - bl[1].lng;\n return vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng);\n },\n\n /*\r\n * @param {Array} baseLine a two-element array of latlng objects\r\n * representing the baseline to project from\r\n * @param {Array} latLngs an array of latlng objects\r\n * @returns {Object} the maximum point and all new points to stay\r\n * in consideration for the hull.\r\n */\n findMostDistantPointFromBaseLine: function findMostDistantPointFromBaseLine(baseLine, latLngs) {\n var maxD = 0,\n maxPt = null,\n newPoints = [],\n i,\n pt,\n d;\n\n for (i = latLngs.length - 1; i >= 0; i--) {\n pt = latLngs[i];\n d = this.getDistant(pt, baseLine);\n\n if (d > 0) {\n newPoints.push(pt);\n } else {\n continue;\n }\n\n if (d > maxD) {\n maxD = d;\n maxPt = pt;\n }\n }\n\n return {\n maxPoint: maxPt,\n newPoints: newPoints\n };\n },\n\n /*\r\n * Given a baseline, compute the convex hull of latLngs as an array\r\n * of latLngs.\r\n *\r\n * @param {Array} latLngs\r\n * @returns {Array}\r\n */\n buildConvexHull: function buildConvexHull(baseLine, latLngs) {\n var convexHullBaseLines = [],\n t = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n if (t.maxPoint) {\n // if there is still a point \"outside\" the base line\n convexHullBaseLines = convexHullBaseLines.concat(this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints));\n convexHullBaseLines = convexHullBaseLines.concat(this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints));\n return convexHullBaseLines;\n } else {\n // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n return [baseLine[0]];\n }\n },\n\n /*\r\n * Given an array of latlngs, compute a convex hull as an array\r\n * of latlngs\r\n *\r\n * @param {Array} latLngs\r\n * @returns {Array}\r\n */\n getConvexHull: function getConvexHull(latLngs) {\n // find first baseline\n var maxLat = false,\n minLat = false,\n maxLng = false,\n minLng = false,\n maxLatPt = null,\n minLatPt = null,\n maxLngPt = null,\n minLngPt = null,\n maxPt = null,\n minPt = null,\n i;\n\n for (i = latLngs.length - 1; i >= 0; i--) {\n var pt = latLngs[i];\n\n if (maxLat === false || pt.lat > maxLat) {\n maxLatPt = pt;\n maxLat = pt.lat;\n }\n\n if (minLat === false || pt.lat < minLat) {\n minLatPt = pt;\n minLat = pt.lat;\n }\n\n if (maxLng === false || pt.lng > maxLng) {\n maxLngPt = pt;\n maxLng = pt.lng;\n }\n\n if (minLng === false || pt.lng < minLng) {\n minLngPt = pt;\n minLng = pt.lng;\n }\n }\n\n if (minLat !== maxLat) {\n minPt = minLatPt;\n maxPt = maxLatPt;\n } else {\n minPt = minLngPt;\n maxPt = maxLngPt;\n }\n\n var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), this.buildConvexHull([maxPt, minPt], latLngs));\n return ch;\n }\n };\n })();\n\n L.MarkerCluster.include({\n getConvexHull: function getConvexHull() {\n var childMarkers = this.getAllChildMarkers(),\n points = [],\n p,\n i;\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n p = childMarkers[i].getLatLng();\n points.push(p);\n }\n\n return L.QuickHull.getConvexHull(points);\n }\n }); //This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n //Huge thanks to jawj for implementing it first to make my job easy :-)\n\n L.MarkerCluster.include({\n _2PI: Math.PI * 2,\n _circleFootSeparation: 25,\n //related to circumference of circle\n _circleStartAngle: 0,\n _spiralFootSeparation: 28,\n //related to size of spiral (experiment!)\n _spiralLengthStart: 11,\n _spiralLengthFactor: 5,\n _circleSpiralSwitchover: 9,\n //show spiral instead of circle from this marker count upwards.\n // 0 -> always spiral; Infinity -> always circle\n spiderfy: function spiderfy() {\n if (this._group._spiderfied === this || this._group._inZoomAnimation) {\n return;\n }\n\n var childMarkers = this.getAllChildMarkers(null, true),\n group = this._group,\n map = group._map,\n center = map.latLngToLayerPoint(this._latlng),\n positions;\n\n this._group._unspiderfy();\n\n this._group._spiderfied = this; //TODO Maybe: childMarkers order by distance to center\n\n if (childMarkers.length >= this._circleSpiralSwitchover) {\n positions = this._generatePointsSpiral(childMarkers.length, center);\n } else {\n center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\n positions = this._generatePointsCircle(childMarkers.length, center);\n }\n\n this._animationSpiderfy(childMarkers, positions);\n },\n unspiderfy: function unspiderfy(zoomDetails) {\n /// Argument from zoomanim if being called in a zoom animation or null otherwise\n if (this._group._inZoomAnimation) {\n return;\n }\n\n this._animationUnspiderfy(zoomDetails);\n\n this._group._spiderfied = null;\n },\n _generatePointsCircle: function _generatePointsCircle(count, centerPt) {\n var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n legLength = circumference / this._2PI,\n //radius from circumference\n angleStep = this._2PI / count,\n res = [],\n i,\n angle;\n legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.\n\n res.length = count;\n\n for (i = 0; i < count; i++) {\n // Clockwise, like spiral.\n angle = this._circleStartAngle + i * angleStep;\n res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n }\n\n return res;\n },\n _generatePointsSpiral: function _generatePointsSpiral(count, centerPt) {\n var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n legLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n separation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n angle = 0,\n res = [],\n i;\n res.length = count; // Higher index, closer position to cluster center.\n\n for (i = count; i >= 0; i--) {\n // Skip the first position, so that we are already farther from center and we avoid\n // being under the default cluster icon (especially important for Circle Markers).\n if (i < count) {\n res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n }\n\n angle += separation / legLength + i * 0.0005;\n legLength += lengthFactor / angle;\n }\n\n return res;\n },\n _noanimationUnspiderfy: function _noanimationUnspiderfy() {\n var group = this._group,\n map = group._map,\n fg = group._featureGroup,\n childMarkers = this.getAllChildMarkers(null, true),\n m,\n i;\n group._ignoreMove = true;\n this.setOpacity(1);\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n m = childMarkers[i];\n fg.removeLayer(m);\n\n if (m._preSpiderfyLatlng) {\n m.setLatLng(m._preSpiderfyLatlng);\n delete m._preSpiderfyLatlng;\n }\n\n if (m.setZIndexOffset) {\n m.setZIndexOffset(0);\n }\n\n if (m._spiderLeg) {\n map.removeLayer(m._spiderLeg);\n delete m._spiderLeg;\n }\n }\n\n group.fire('unspiderfied', {\n cluster: this,\n markers: childMarkers\n });\n group._ignoreMove = false;\n group._spiderfied = null;\n }\n }); //Non Animated versions of everything\n\n L.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n _animationSpiderfy: function _animationSpiderfy(childMarkers, positions) {\n var group = this._group,\n map = group._map,\n fg = group._featureGroup,\n legOptions = this._group.options.spiderLegPolylineOptions,\n i,\n m,\n leg,\n newPos;\n group._ignoreMove = true; // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n // The reverse order trick no longer improves performance on modern browsers.\n\n for (i = 0; i < childMarkers.length; i++) {\n newPos = map.layerPointToLatLng(positions[i]);\n m = childMarkers[i]; // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\n leg = new L.Polyline([this._latlng, newPos], legOptions);\n map.addLayer(leg);\n m._spiderLeg = leg; // Now add the marker.\n\n m._preSpiderfyLatlng = m._latlng;\n m.setLatLng(newPos);\n\n if (m.setZIndexOffset) {\n m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n }\n\n fg.addLayer(m);\n }\n\n this.setOpacity(0.3);\n group._ignoreMove = false;\n group.fire('spiderfied', {\n cluster: this,\n markers: childMarkers\n });\n },\n _animationUnspiderfy: function _animationUnspiderfy() {\n this._noanimationUnspiderfy();\n }\n }); //Animated versions here\n\n L.MarkerCluster.include({\n _animationSpiderfy: function _animationSpiderfy(childMarkers, positions) {\n var me = this,\n group = this._group,\n map = group._map,\n fg = group._featureGroup,\n thisLayerLatLng = this._latlng,\n thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n svg = L.Path.SVG,\n legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions),\n // Copy the options so that we can modify them for animation.\n finalLegOpacity = legOptions.opacity,\n i,\n m,\n leg,\n legPath,\n legLength,\n newPos;\n\n if (finalLegOpacity === undefined) {\n finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n }\n\n if (svg) {\n // If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n legOptions.opacity = 0; // Add the class for CSS transitions.\n\n legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n } else {\n // Make sure we have a defined opacity.\n legOptions.opacity = finalLegOpacity;\n }\n\n group._ignoreMove = true; // Add markers and spider legs to map, hidden at our center point.\n // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n // The reverse order trick no longer improves performance on modern browsers.\n\n for (i = 0; i < childMarkers.length; i++) {\n m = childMarkers[i];\n newPos = map.layerPointToLatLng(positions[i]); // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\n leg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n map.addLayer(leg);\n m._spiderLeg = leg; // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n // In our case the transition property is declared in the CSS file.\n\n if (svg) {\n legPath = leg._path;\n legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\n legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\n legPath.style.strokeDashoffset = legLength;\n } // If it is a marker, add it now and we'll animate it out\n\n\n if (m.setZIndexOffset) {\n m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n }\n\n if (m.clusterHide) {\n m.clusterHide();\n } // Vectors just get immediately added\n\n\n fg.addLayer(m);\n\n if (m._setPos) {\n m._setPos(thisLayerPos);\n }\n }\n\n group._forceLayout();\n\n group._animationStart(); // Reveal markers and spider legs.\n\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n newPos = map.layerPointToLatLng(positions[i]);\n m = childMarkers[i]; //Move marker to new position\n\n m._preSpiderfyLatlng = m._latlng;\n m.setLatLng(newPos);\n\n if (m.clusterShow) {\n m.clusterShow();\n } // Animate leg (animation is actually delegated to CSS transition).\n\n\n if (svg) {\n leg = m._spiderLeg;\n legPath = leg._path;\n legPath.style.strokeDashoffset = 0; //legPath.style.strokeOpacity = finalLegOpacity;\n\n leg.setStyle({\n opacity: finalLegOpacity\n });\n }\n }\n\n this.setOpacity(0.3);\n group._ignoreMove = false;\n setTimeout(function () {\n group._animationEnd();\n\n group.fire('spiderfied', {\n cluster: me,\n markers: childMarkers\n });\n }, 200);\n },\n _animationUnspiderfy: function _animationUnspiderfy(zoomDetails) {\n var me = this,\n group = this._group,\n map = group._map,\n fg = group._featureGroup,\n thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n childMarkers = this.getAllChildMarkers(null, true),\n svg = L.Path.SVG,\n m,\n i,\n leg,\n legPath,\n legLength,\n nonAnimatable;\n group._ignoreMove = true;\n\n group._animationStart(); //Make us visible and bring the child markers back in\n\n\n this.setOpacity(1);\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n m = childMarkers[i]; //Marker was added to us after we were spiderfied\n\n if (!m._preSpiderfyLatlng) {\n continue;\n } //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll\n\n\n m.closePopup(); //Fix up the location to the real one\n\n m.setLatLng(m._preSpiderfyLatlng);\n delete m._preSpiderfyLatlng; //Hack override the location to be our center\n\n nonAnimatable = true;\n\n if (m._setPos) {\n m._setPos(thisLayerPos);\n\n nonAnimatable = false;\n }\n\n if (m.clusterHide) {\n m.clusterHide();\n nonAnimatable = false;\n }\n\n if (nonAnimatable) {\n fg.removeLayer(m);\n } // Animate the spider leg back in (animation is actually delegated to CSS transition).\n\n\n if (svg) {\n leg = m._spiderLeg;\n legPath = leg._path;\n legLength = legPath.getTotalLength() + 0.1;\n legPath.style.strokeDashoffset = legLength;\n leg.setStyle({\n opacity: 0\n });\n }\n }\n\n group._ignoreMove = false;\n setTimeout(function () {\n //If we have only <= one child left then that marker will be shown on the map so don't remove it!\n var stillThereChildCount = 0;\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n m = childMarkers[i];\n\n if (m._spiderLeg) {\n stillThereChildCount++;\n }\n }\n\n for (i = childMarkers.length - 1; i >= 0; i--) {\n m = childMarkers[i];\n\n if (!m._spiderLeg) {\n //Has already been unspiderfied\n continue;\n }\n\n if (m.clusterShow) {\n m.clusterShow();\n }\n\n if (m.setZIndexOffset) {\n m.setZIndexOffset(0);\n }\n\n if (stillThereChildCount > 1) {\n fg.removeLayer(m);\n }\n\n map.removeLayer(m._spiderLeg);\n delete m._spiderLeg;\n }\n\n group._animationEnd();\n\n group.fire('unspiderfied', {\n cluster: me,\n markers: childMarkers\n });\n }, 200);\n }\n });\n L.MarkerClusterGroup.include({\n //The MarkerCluster currently spiderfied (if any)\n _spiderfied: null,\n unspiderfy: function unspiderfy() {\n this._unspiderfy.apply(this, arguments);\n },\n _spiderfierOnAdd: function _spiderfierOnAdd() {\n this._map.on('click', this._unspiderfyWrapper, this);\n\n if (this._map.options.zoomAnimation) {\n this._map.on('zoomstart', this._unspiderfyZoomStart, this);\n } //Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\n\n this._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n if (!L.Browser.touch) {\n this._map.getRenderer(this); //Needs to happen in the pageload, not after, or animations don't work in webkit\n // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\n }\n },\n _spiderfierOnRemove: function _spiderfierOnRemove() {\n this._map.off('click', this._unspiderfyWrapper, this);\n\n this._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\n this._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\n this._map.off('zoomend', this._noanimationUnspiderfy, this); //Ensure that markers are back where they should be\n // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\n\n this._noanimationUnspiderfy();\n },\n //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n //This means we can define the animation they do rather than Markers doing an animation to their actual location\n _unspiderfyZoomStart: function _unspiderfyZoomStart() {\n if (!this._map) {\n //May have been removed from the map by a zoomEnd handler\n return;\n }\n\n this._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n },\n _unspiderfyZoomAnim: function _unspiderfyZoomAnim(zoomDetails) {\n //Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n return;\n }\n\n this._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\n this._unspiderfy(zoomDetails);\n },\n _unspiderfyWrapper: function _unspiderfyWrapper() {\n /// _unspiderfy but passes no arguments\n this._unspiderfy();\n },\n _unspiderfy: function _unspiderfy(zoomDetails) {\n if (this._spiderfied) {\n this._spiderfied.unspiderfy(zoomDetails);\n }\n },\n _noanimationUnspiderfy: function _noanimationUnspiderfy() {\n if (this._spiderfied) {\n this._spiderfied._noanimationUnspiderfy();\n }\n },\n //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n _unspiderfyLayer: function _unspiderfyLayer(layer) {\n if (layer._spiderLeg) {\n this._featureGroup.removeLayer(layer);\n\n if (layer.clusterShow) {\n layer.clusterShow();\n } //Position will be fixed up immediately in _animationUnspiderfy\n\n\n if (layer.setZIndexOffset) {\n layer.setZIndexOffset(0);\n }\n\n this._map.removeLayer(layer._spiderLeg);\n\n delete layer._spiderLeg;\n }\n }\n });\n /**\r\n * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\r\n * markers' icon options and refreshing their icon and their parent clusters\r\n * accordingly (case where their iconCreateFunction uses data of childMarkers\r\n * to make up the cluster icon).\r\n */\n\n L.MarkerClusterGroup.include({\n /**\r\n * Updates the icon of all clusters which are parents of the given marker(s).\r\n * In singleMarkerMode, also updates the given marker(s) icon.\r\n * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\r\n * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\r\n * clusters need to be updated. If not provided, retrieves all child markers of this.\r\n * @returns {L.MarkerClusterGroup}\r\n */\n refreshClusters: function refreshClusters(layers) {\n if (!layers) {\n layers = this._topClusterLevel.getAllChildMarkers();\n } else if (layers instanceof L.MarkerClusterGroup) {\n layers = layers._topClusterLevel.getAllChildMarkers();\n } else if (layers instanceof L.LayerGroup) {\n layers = layers._layers;\n } else if (layers instanceof L.MarkerCluster) {\n layers = layers.getAllChildMarkers();\n } else if (layers instanceof L.Marker) {\n layers = [layers];\n } // else: must be an Array(L.Marker)|Map(L.Marker)\n\n\n this._flagParentsIconsNeedUpdate(layers);\n\n this._refreshClustersIcons(); // In case of singleMarkerMode, also re-draw the markers.\n\n\n if (this.options.singleMarkerMode) {\n this._refreshSingleMarkerModeMarkers(layers);\n }\n\n return this;\n },\n\n /**\r\n * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\r\n * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\r\n * @private\r\n */\n _flagParentsIconsNeedUpdate: function _flagParentsIconsNeedUpdate(layers) {\n var id, parent; // Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\n for (id in layers) {\n // Flag parent clusters' icon as \"dirty\", all the way up.\n // Dumb process that flags multiple times upper parents, but still\n // much more efficient than trying to be smart and make short lists,\n // at least in the case of a hierarchy following a power law:\n // http://jsperf.com/flag-nodes-in-power-hierarchy/2\n parent = layers[id].__parent;\n\n while (parent) {\n parent._iconNeedsUpdate = true;\n parent = parent.__parent;\n }\n }\n },\n\n /**\r\n * Re-draws the icon of the supplied markers.\r\n * To be used in singleMarkerMode only.\r\n * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\r\n * @private\r\n */\n _refreshSingleMarkerModeMarkers: function _refreshSingleMarkerModeMarkers(layers) {\n var id, layer;\n\n for (id in layers) {\n layer = layers[id]; // Make sure we do not override markers that do not belong to THIS group.\n\n if (this.hasLayer(layer)) {\n // Need to re-create the icon first, then re-draw the marker.\n layer.setIcon(this._overrideMarkerIcon(layer));\n }\n }\n }\n });\n L.Marker.include({\n /**\r\n * Updates the given options in the marker's icon and refreshes the marker.\r\n * @param options map object of icon options.\r\n * @param directlyRefreshClusters boolean (optional) true to trigger\r\n * MCG.refreshClustersOf() right away with this single marker.\r\n * @returns {L.Marker}\r\n */\n refreshIconOptions: function refreshIconOptions(options, directlyRefreshClusters) {\n var icon = this.options.icon;\n L.setOptions(icon, options);\n this.setIcon(icon); // Shortcut to refresh the associated MCG clusters right away.\n // To be used when refreshing a single marker.\n // Otherwise, better use MCG.refreshClusters() once at the end with\n // the list of modified markers.\n\n if (directlyRefreshClusters && this.__parent) {\n this.__parent._group.refreshClusters(this);\n }\n\n return this;\n }\n });\n exports.MarkerClusterGroup = MarkerClusterGroup;\n exports.MarkerCluster = MarkerCluster;\n});","(function (root, factory) {\n if (root === null) {\n throw new Error('Google-maps package can be used only in browser');\n }\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.GoogleMapsLoader = factory();\n }\n})(typeof window !== 'undefined' ? window : null, function () {\n 'use strict';\n\n var googleVersion = '3.31';\n var script = null;\n var google = null;\n var loading = false;\n var callbacks = [];\n var onLoadEvents = [];\n var originalCreateLoaderMethod = null;\n var GoogleMapsLoader = {};\n GoogleMapsLoader.URL = 'https://maps.googleapis.com/maps/api/js';\n GoogleMapsLoader.KEY = null;\n GoogleMapsLoader.LIBRARIES = [];\n GoogleMapsLoader.CLIENT = null;\n GoogleMapsLoader.CHANNEL = null;\n GoogleMapsLoader.LANGUAGE = null;\n GoogleMapsLoader.REGION = null;\n GoogleMapsLoader.VERSION = googleVersion;\n GoogleMapsLoader.WINDOW_CALLBACK_NAME = '__google_maps_api_provider_initializator__';\n GoogleMapsLoader._googleMockApiObject = {};\n\n GoogleMapsLoader.load = function (fn) {\n if (google === null) {\n if (loading === true) {\n if (fn) {\n callbacks.push(fn);\n }\n } else {\n loading = true;\n\n window[GoogleMapsLoader.WINDOW_CALLBACK_NAME] = function () {\n ready(fn);\n };\n\n GoogleMapsLoader.createLoader();\n }\n } else if (fn) {\n fn(google);\n }\n };\n\n GoogleMapsLoader.createLoader = function () {\n script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = GoogleMapsLoader.createUrl();\n document.body.appendChild(script);\n };\n\n GoogleMapsLoader.isLoaded = function () {\n return google !== null;\n };\n\n GoogleMapsLoader.createUrl = function () {\n var url = GoogleMapsLoader.URL;\n url += '?callback=' + GoogleMapsLoader.WINDOW_CALLBACK_NAME;\n\n if (GoogleMapsLoader.KEY) {\n url += '&key=' + GoogleMapsLoader.KEY;\n }\n\n if (GoogleMapsLoader.LIBRARIES.length > 0) {\n url += '&libraries=' + GoogleMapsLoader.LIBRARIES.join(',');\n }\n\n if (GoogleMapsLoader.CLIENT) {\n url += '&client=' + GoogleMapsLoader.CLIENT;\n }\n\n if (GoogleMapsLoader.CHANNEL) {\n url += '&channel=' + GoogleMapsLoader.CHANNEL;\n }\n\n if (GoogleMapsLoader.LANGUAGE) {\n url += '&language=' + GoogleMapsLoader.LANGUAGE;\n }\n\n if (GoogleMapsLoader.REGION) {\n url += '®ion=' + GoogleMapsLoader.REGION;\n }\n\n if (GoogleMapsLoader.VERSION) {\n url += '&v=' + GoogleMapsLoader.VERSION;\n }\n\n return url;\n };\n\n GoogleMapsLoader.release = function (fn) {\n var release = function release() {\n GoogleMapsLoader.KEY = null;\n GoogleMapsLoader.LIBRARIES = [];\n GoogleMapsLoader.CLIENT = null;\n GoogleMapsLoader.CHANNEL = null;\n GoogleMapsLoader.LANGUAGE = null;\n GoogleMapsLoader.REGION = null;\n GoogleMapsLoader.VERSION = googleVersion;\n google = null;\n loading = false;\n callbacks = [];\n onLoadEvents = [];\n\n if (typeof window.google !== 'undefined') {\n delete window.google;\n }\n\n if (typeof window[GoogleMapsLoader.WINDOW_CALLBACK_NAME] !== 'undefined') {\n delete window[GoogleMapsLoader.WINDOW_CALLBACK_NAME];\n }\n\n if (originalCreateLoaderMethod !== null) {\n GoogleMapsLoader.createLoader = originalCreateLoaderMethod;\n originalCreateLoaderMethod = null;\n }\n\n if (script !== null) {\n script.parentElement.removeChild(script);\n script = null;\n }\n\n if (fn) {\n fn();\n }\n };\n\n if (loading) {\n GoogleMapsLoader.load(function () {\n release();\n });\n } else {\n release();\n }\n };\n\n GoogleMapsLoader.onLoad = function (fn) {\n onLoadEvents.push(fn);\n };\n\n GoogleMapsLoader.makeMock = function () {\n originalCreateLoaderMethod = GoogleMapsLoader.createLoader;\n\n GoogleMapsLoader.createLoader = function () {\n window.google = GoogleMapsLoader._googleMockApiObject;\n window[GoogleMapsLoader.WINDOW_CALLBACK_NAME]();\n };\n };\n\n var ready = function ready(fn) {\n var i;\n loading = false;\n\n if (google === null) {\n google = window.google;\n }\n\n for (i = 0; i < onLoadEvents.length; i++) {\n onLoadEvents[i](google);\n }\n\n if (fn) {\n fn(google);\n }\n\n for (i = 0; i < callbacks.length; i++) {\n callbacks[i](google);\n }\n\n callbacks = [];\n };\n\n return GoogleMapsLoader;\n});","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiNGOTlEMUMiLz4KPC9zdmc+Cg==\"","\"use strict\";\n\nimport \"core-js/modules/es6.function.name\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport React, { createContext, forwardRef, useContext } from 'react';\nvar leafletContext = createContext({});\nexport var useLeaflet = function useLeaflet() {\n return useContext(leafletContext);\n};\nexport var LeafletConsumer = leafletContext.Consumer;\nexport var LeafletProvider = leafletContext.Provider;\nexport var withLeaflet = function withLeaflet(WrappedComponent) {\n var WithLeafletComponent = function WithLeafletComponent(props, ref) {\n return /*#__PURE__*/React.createElement(LeafletConsumer, null, function (leaflet) {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, {\n leaflet: leaflet,\n ref: ref\n }));\n });\n };\n\n var name = // flowlint-next-line sketchy-null-string:off\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n WithLeafletComponent.displayName = \"Leaflet(\" + name + \")\";\n var LeafletComponent = forwardRef(WithLeafletComponent);\n hoistNonReactStatics(LeafletComponent, WrappedComponent);\n return LeafletComponent;\n};","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Marker as LeafletMarker } from 'leaflet';\nimport React from 'react';\nimport { LeafletProvider, withLeaflet } from './context';\nimport MapLayer from './MapLayer';\n\nvar Marker = /*#__PURE__*/function (_MapLayer) {\n _inheritsLoose(Marker, _MapLayer);\n\n function Marker() {\n return _MapLayer.apply(this, arguments) || this;\n }\n\n var _proto = Marker.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var el = new LeafletMarker(props.position, this.getOptions(props));\n this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n popupContainer: el\n });\n return el;\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n if (toProps.position !== fromProps.position) {\n this.leafletElement.setLatLng(toProps.position);\n }\n\n if (toProps.icon !== fromProps.icon) {\n this.leafletElement.setIcon(toProps.icon);\n }\n\n if (toProps.zIndexOffset !== fromProps.zIndexOffset) {\n this.leafletElement.setZIndexOffset(toProps.zIndexOffset);\n }\n\n if (toProps.opacity !== fromProps.opacity) {\n this.leafletElement.setOpacity(toProps.opacity);\n }\n\n if (toProps.draggable !== fromProps.draggable) {\n if (toProps.draggable === true) {\n this.leafletElement.dragging.enable();\n } else {\n this.leafletElement.dragging.disable();\n }\n }\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return children == null || this.contextValue == null ? null : /*#__PURE__*/React.createElement(LeafletProvider, {\n value: this.contextValue\n }, children);\n };\n\n return Marker;\n}(MapLayer);\n\nexport default withLeaflet(Marker);","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","\"use strict\";\n\nrequire(\"core-js/modules/es6.string.starts-with\");\n\nrequire(\"core-js/modules/es7.object.entries\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.object.set-prototype-of\");\n\nrequire(\"core-js/modules/es6.reflect.construct\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.array.from\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _reactLeaflet = require(\"react-leaflet\");\n\nvar _leaflet = _interopRequireDefault(require(\"leaflet\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nrequire(\"leaflet.markercluster\");\n\nvar MarkerClusterGroup = function (_MapLayer) {\n _inherits(MarkerClusterGroup, _MapLayer);\n\n var _super = _createSuper(MarkerClusterGroup);\n\n function MarkerClusterGroup() {\n _classCallCheck(this, MarkerClusterGroup);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MarkerClusterGroup, [{\n key: \"createLeafletElement\",\n value: function createLeafletElement(_ref) {\n var children = _ref.children,\n map = _ref.leaflet.map,\n props = _objectWithoutProperties(_ref, [\"children\", \"leaflet\"]);\n\n var clusterProps = {};\n var clusterEvents = {};\n Object.entries(props).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n propName = _ref3[0],\n prop = _ref3[1];\n\n return propName.startsWith(\"on\") ? clusterEvents[propName] = prop : clusterProps[propName] = prop;\n });\n var markerClusterGroup = new _leaflet[\"default\"].markerClusterGroup(clusterProps);\n this.contextValue = {\n layerContainer: markerClusterGroup,\n map: map\n };\n Object.entries(clusterEvents).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n eventAsProp = _ref5[0],\n callback = _ref5[1];\n\n var clusterEvent = \"cluster\".concat(eventAsProp.substring(2).toLowerCase());\n markerClusterGroup.on(clusterEvent, callback);\n });\n return markerClusterGroup;\n }\n }]);\n\n return MarkerClusterGroup;\n}(_reactLeaflet.MapLayer);\n\nvar _default = (0, _reactLeaflet.withLeaflet)(MarkerClusterGroup);\n\nexports[\"default\"] = _default;","'use strict'; // do not edit .js files directly - edit src/index.jst\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.flags\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n } // true if both NaN, false otherwise\n\n\n return a !== a && b !== b;\n};","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiMyOTcwMkEiLz4KPC9zdmc+Cg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiMwODgwODIiLz4KPC9zdmc+Cg==\"","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var map = {\n\t\"./marker-bushfires.svg\": \"9NuM\",\n\t\"./marker-crashes.svg\": \"lJ0U\",\n\t\"./marker-false-alarms.svg\": \"cKbP\",\n\t\"./marker-other-fires.svg\": \"2nS3\",\n\t\"./marker-rescues.svg\": \"cPG6\",\n\t\"./marker-rfa.svg\": \"Uxp7\",\n\t\"./marker-structure-fires.svg\": \"A1nR\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"iXc8\";","\"use strict\";\n\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.map\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Control } from 'leaflet';\nimport React, { cloneElement, Component, Children, Fragment } from 'react';\nimport { LeafletProvider, withLeaflet } from './context';\nimport MapControl from './MapControl'; // Abtract class for layer container, extended by BaseLayer and Overlay\n\nexport var ControlledLayer = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ControlledLayer, _Component);\n\n function ControlledLayer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"contextValue\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"layer\", void 0);\n\n return _this;\n }\n\n var _proto = ControlledLayer.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(_ref) {\n var checked = _ref.checked;\n\n if (this.props.leaflet.map == null) {\n return;\n } // Handle dynamically (un)checking the layer => adding/removing from the map\n\n\n if (this.props.checked === true && (checked == null || checked === false)) {\n this.props.leaflet.map.addLayer(this.layer);\n } else if (checked === true && (this.props.checked == null || this.props.checked === false)) {\n this.props.leaflet.map.removeLayer(this.layer);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.props.removeLayerControl(this.layer);\n };\n\n _proto.addLayer = function addLayer() {\n throw new Error('Must be implemented in extending class');\n };\n\n _proto.removeLayer = function removeLayer(layer) {\n this.props.removeLayer(layer);\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return children ? /*#__PURE__*/React.createElement(LeafletProvider, {\n value: this.contextValue\n }, children) : null;\n };\n\n return ControlledLayer;\n}(Component);\n\nvar BaseLayer = /*#__PURE__*/function (_ControlledLayer) {\n _inheritsLoose(BaseLayer, _ControlledLayer);\n\n function BaseLayer(props) {\n var _this2;\n\n _this2 = _ControlledLayer.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this2), \"addLayer\", function (layer) {\n _this2.layer = layer; // Keep layer reference to handle dynamic changes of props\n\n var _this2$props = _this2.props,\n addBaseLayer = _this2$props.addBaseLayer,\n checked = _this2$props.checked,\n name = _this2$props.name;\n addBaseLayer(layer, name, checked);\n });\n\n _this2.contextValue = _extends(_extends({}, props.leaflet), {}, {\n layerContainer: {\n addLayer: _this2.addLayer.bind(_assertThisInitialized(_this2)),\n removeLayer: _this2.removeLayer.bind(_assertThisInitialized(_this2))\n }\n });\n return _this2;\n }\n\n return BaseLayer;\n}(ControlledLayer);\n\nvar Overlay = /*#__PURE__*/function (_ControlledLayer2) {\n _inheritsLoose(Overlay, _ControlledLayer2);\n\n function Overlay(props) {\n var _this3;\n\n _this3 = _ControlledLayer2.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this3), \"addLayer\", function (layer) {\n _this3.layer = layer; // Keep layer reference to handle dynamic changes of props\n\n var _this3$props = _this3.props,\n addOverlay = _this3$props.addOverlay,\n checked = _this3$props.checked,\n name = _this3$props.name;\n addOverlay(layer, name, checked);\n });\n\n _this3.contextValue = _extends(_extends({}, props.leaflet), {}, {\n layerContainer: {\n addLayer: _this3.addLayer.bind(_assertThisInitialized(_this3)),\n removeLayer: _this3.removeLayer.bind(_assertThisInitialized(_this3))\n }\n });\n return _this3;\n }\n\n return Overlay;\n}(ControlledLayer);\n\nvar LayersControl = /*#__PURE__*/function (_MapControl) {\n _inheritsLoose(LayersControl, _MapControl);\n\n function LayersControl(props) {\n var _this4;\n\n _this4 = _MapControl.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this4), \"controlProps\", void 0);\n\n _this4.controlProps = {\n addBaseLayer: _this4.addBaseLayer.bind(_assertThisInitialized(_this4)),\n addOverlay: _this4.addOverlay.bind(_assertThisInitialized(_this4)),\n leaflet: props.leaflet,\n removeLayer: _this4.removeLayer.bind(_assertThisInitialized(_this4)),\n removeLayerControl: _this4.removeLayerControl.bind(_assertThisInitialized(_this4))\n };\n return _this4;\n }\n\n var _proto2 = LayersControl.prototype;\n\n _proto2.createLeafletElement = function createLeafletElement(props) {\n var _children = props.children,\n options = _objectWithoutPropertiesLoose(props, [\"children\"]);\n\n return new Control.Layers(undefined, undefined, options);\n };\n\n _proto2.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n _MapControl.prototype.updateLeafletElement.call(this, fromProps, toProps);\n\n if (toProps.collapsed !== fromProps.collapsed) {\n if (toProps.collapsed === true) {\n this.leafletElement.collapse();\n } else {\n this.leafletElement.expand();\n }\n }\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n var _this5 = this;\n\n setTimeout(function () {\n _MapControl.prototype.componentWillUnmount.call(_this5);\n }, 0);\n };\n\n _proto2.addBaseLayer = function addBaseLayer(layer, name, checked) {\n if (checked === void 0) {\n checked = false;\n }\n\n if (checked && this.props.leaflet.map != null) {\n this.props.leaflet.map.addLayer(layer);\n }\n\n this.leafletElement.addBaseLayer(layer, name);\n };\n\n _proto2.addOverlay = function addOverlay(layer, name, checked) {\n if (checked === void 0) {\n checked = false;\n }\n\n if (checked && this.props.leaflet.map != null) {\n this.props.leaflet.map.addLayer(layer);\n }\n\n this.leafletElement.addOverlay(layer, name);\n };\n\n _proto2.removeLayer = function removeLayer(layer) {\n if (this.props.leaflet.map != null) {\n this.props.leaflet.map.removeLayer(layer);\n }\n };\n\n _proto2.removeLayerControl = function removeLayerControl(layer) {\n this.leafletElement.removeLayer(layer);\n };\n\n _proto2.render = function render() {\n var _this6 = this;\n\n var children = Children.map(this.props.children, function (child) {\n return child ? cloneElement(child, _this6.controlProps) : null;\n });\n return /*#__PURE__*/React.createElement(Fragment, null, children);\n };\n\n return LayersControl;\n}(MapControl);\n\nvar LayersControlExport = withLeaflet(LayersControl);\nLayersControlExport.BaseLayer = BaseLayer;\nLayersControlExport.Overlay = Overlay;\nexport default LayersControlExport;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMCAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiMwMDI5NEQiLz4KPC9zdmc+Cg==\"","\"use strict\";\n\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.for-each\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Component } from 'react';\nexport var EVENTS_RE = /^on(.+)$/i;\n\nvar MapEvented = /*#__PURE__*/function (_Component) {\n _inheritsLoose(MapEvented, _Component);\n\n function MapEvented(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_leafletEvents\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n _this._leafletEvents = _this.extractLeafletEvents(props);\n return _this;\n }\n\n var _proto = MapEvented.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.bindLeafletEvents(this._leafletEvents);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(_prevProps) {\n this._leafletEvents = this.bindLeafletEvents(this.extractLeafletEvents(this.props), this._leafletEvents);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this2 = this;\n\n var el = this.leafletElement;\n if (!el) return;\n Object.keys(this._leafletEvents).forEach(function (ev) {\n el.off(ev, _this2._leafletEvents[ev]);\n });\n };\n\n _proto.extractLeafletEvents = function extractLeafletEvents(props) {\n return Object.keys(props).reduce(function (res, prop) {\n if (EVENTS_RE.test(prop)) {\n if (props[prop] != null) {\n var _key = prop.replace(EVENTS_RE, function (match, p) {\n return p.toLowerCase();\n });\n\n res[_key] = props[prop];\n }\n }\n\n return res;\n }, {});\n };\n\n _proto.bindLeafletEvents = function bindLeafletEvents(next, prev) {\n if (next === void 0) {\n next = {};\n }\n\n if (prev === void 0) {\n prev = {};\n }\n\n var el = this.leafletElement;\n if (el == null || el.on == null) return {};\n\n var diff = _extends({}, prev);\n\n Object.keys(prev).forEach(function (ev) {\n if (next[ev] == null || prev[ev] !== next[ev]) {\n delete diff[ev];\n el.off(ev, prev[ev]);\n }\n });\n Object.keys(next).forEach(function (ev) {\n if (prev[ev] == null || next[ev] !== prev[ev]) {\n diff[ev] = next[ev];\n el.on(ev, next[ev]);\n }\n });\n return diff;\n };\n\n _proto.fireLeafletEvent = function fireLeafletEvent(type, data) {\n var el = this.leafletElement;\n if (el) el.fire(type, data);\n };\n\n return MapEvented;\n}(Component);\n\nexport { MapEvented as default };","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nvar b = \"function\" === typeof Symbol && Symbol[\"for\"],\n c = b ? Symbol[\"for\"](\"react.element\") : 60103,\n d = b ? Symbol[\"for\"](\"react.portal\") : 60106,\n e = b ? Symbol[\"for\"](\"react.fragment\") : 60107,\n f = b ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n g = b ? Symbol[\"for\"](\"react.profiler\") : 60114,\n h = b ? Symbol[\"for\"](\"react.provider\") : 60109,\n k = b ? Symbol[\"for\"](\"react.context\") : 60110,\n l = b ? Symbol[\"for\"](\"react.async_mode\") : 60111,\n m = b ? Symbol[\"for\"](\"react.concurrent_mode\") : 60111,\n n = b ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n p = b ? Symbol[\"for\"](\"react.suspense\") : 60113,\n q = b ? Symbol[\"for\"](\"react.suspense_list\") : 60120,\n r = b ? Symbol[\"for\"](\"react.memo\") : 60115,\n t = b ? Symbol[\"for\"](\"react.lazy\") : 60116,\n v = b ? Symbol[\"for\"](\"react.block\") : 60121,\n w = b ? Symbol[\"for\"](\"react.fundamental\") : 60117,\n x = b ? Symbol[\"for\"](\"react.responder\") : 60118,\n y = b ? Symbol[\"for\"](\"react.scope\") : 60119;\n\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n\n default:\n return u;\n }\n\n }\n\n case d:\n return u;\n }\n }\n}\n\nfunction A(a) {\n return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","\"use strict\";\n\nimport \"core-js/modules/es6.array.map\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Fragment } from 'react';\nimport { LeafletProvider } from './context';\nimport MapComponent from './MapComponent';\n\nvar MapLayer = /*#__PURE__*/function (_MapComponent) {\n _inheritsLoose(MapLayer, _MapComponent);\n\n function MapLayer(props) {\n var _this;\n\n _this = _MapComponent.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"contextValue\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n _this.leafletElement = _this.createLeafletElement(props);\n return _this;\n }\n\n var _proto = MapLayer.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(_props) {\n throw new Error('createLeafletElement() must be implemented');\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(_fromProps, _toProps) {};\n\n _proto.componentDidMount = function componentDidMount() {\n _MapComponent.prototype.componentDidMount.call(this);\n\n this.layerContainer.addLayer(this.leafletElement);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n _MapComponent.prototype.componentDidUpdate.call(this, prevProps);\n\n if (this.props.attribution !== prevProps.attribution) {\n var map = this.props.leaflet.map;\n\n if (map != null && map.attributionControl != null) {\n map.attributionControl.removeAttribution(prevProps.attribution);\n map.attributionControl.addAttribution(this.props.attribution);\n }\n }\n\n this.updateLeafletElement(prevProps, this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n _MapComponent.prototype.componentWillUnmount.call(this);\n\n this.layerContainer.removeLayer(this.leafletElement);\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n\n if (children == null) {\n return null;\n }\n\n return this.contextValue == null ? /*#__PURE__*/React.createElement(Fragment, null, children) : /*#__PURE__*/React.createElement(LeafletProvider, {\n value: this.contextValue\n }, children);\n };\n\n _createClass(MapLayer, [{\n key: \"layerContainer\",\n get: function get() {\n return this.props.leaflet.layerContainer || this.props.leaflet.map;\n }\n }]);\n\n return MapLayer;\n}(MapComponent);\n\nexport { MapLayer as default };","\"use strict\";\n\nimport \"core-js/modules/es6.array.is-array\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { latLngBounds, Map as LeafletMap } from 'leaflet';\nimport React from 'react';\nimport { LeafletProvider } from './context';\nimport MapEvented from './MapEvented';\nimport updateClassName from './utils/updateClassName';\nimport omit from './utils/omit';\nvar OTHER_PROPS = ['children', 'className', 'id', 'style', 'useFlyTo', 'whenReady'];\n\nvar normalizeCenter = function normalizeCenter(pos) {\n return Array.isArray(pos) ? [pos[0], pos[1]] : [pos.lat, pos.lon ? pos.lon : pos.lng];\n};\n\nvar Map = /*#__PURE__*/function (_MapEvented) {\n _inheritsLoose(Map, _MapEvented);\n\n function Map(props) {\n var _this;\n\n _this = _MapEvented.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"className\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextValue\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"container\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"viewport\", {\n center: undefined,\n zoom: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_ready\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_updating\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"onViewportChange\", function () {\n var center = _this.leafletElement.getCenter();\n\n _this.viewport = {\n center: center ? [center.lat, center.lng] : undefined,\n zoom: _this.leafletElement.getZoom()\n };\n\n if (_this.props.onViewportChange && !_this._updating) {\n _this.props.onViewportChange(_this.viewport);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onViewportChanged\", function () {\n if (_this.props.onViewportChanged && !_this._updating) {\n _this.props.onViewportChanged(_this.viewport);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"bindContainer\", function (container) {\n _this.container = container;\n });\n\n _this.className = props.className;\n return _this;\n }\n\n var _proto = Map.prototype;\n\n _proto.createLeafletElement = function createLeafletElement(props) {\n var viewport = props.viewport,\n options = _objectWithoutPropertiesLoose(props, [\"viewport\"]);\n\n if (viewport) {\n if (viewport.center) {\n options.center = viewport.center;\n }\n\n if (typeof viewport.zoom === 'number') {\n options.zoom = viewport.zoom;\n }\n }\n\n return new LeafletMap(this.container, options);\n };\n\n _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n this._updating = true;\n var bounds = toProps.bounds,\n boundsOptions = toProps.boundsOptions,\n boxZoom = toProps.boxZoom,\n center = toProps.center,\n className = toProps.className,\n doubleClickZoom = toProps.doubleClickZoom,\n dragging = toProps.dragging,\n keyboard = toProps.keyboard,\n maxBounds = toProps.maxBounds,\n scrollWheelZoom = toProps.scrollWheelZoom,\n tap = toProps.tap,\n touchZoom = toProps.touchZoom,\n useFlyTo = toProps.useFlyTo,\n viewport = toProps.viewport,\n zoom = toProps.zoom;\n updateClassName(this.container, fromProps.className, className);\n\n if (viewport && viewport !== fromProps.viewport) {\n var c = viewport.center ? viewport.center : center;\n var z = viewport.zoom == null ? zoom : viewport.zoom;\n\n if (useFlyTo === true) {\n this.leafletElement.flyTo(c, z, this.getZoomPanOptions(toProps));\n } else {\n this.leafletElement.setView(c, z, this.getZoomPanOptions(toProps));\n }\n } else if (center && this.shouldUpdateCenter(center, fromProps.center)) {\n if (useFlyTo === true) {\n this.leafletElement.flyTo(center, zoom, this.getZoomPanOptions(toProps));\n } else {\n this.leafletElement.setView(center, zoom, this.getZoomPanOptions(toProps));\n }\n } else if (typeof zoom === 'number' && zoom !== fromProps.zoom) {\n if (fromProps.zoom == null) {\n this.leafletElement.setView(center, zoom, this.getZoomPanOptions(toProps));\n } else {\n this.leafletElement.setZoom(zoom, this.getZoomPanOptions(toProps));\n }\n }\n\n if (maxBounds && this.shouldUpdateBounds(maxBounds, fromProps.maxBounds)) {\n this.leafletElement.setMaxBounds(maxBounds);\n }\n\n if (bounds && (this.shouldUpdateBounds(bounds, fromProps.bounds) || boundsOptions !== fromProps.boundsOptions)) {\n if (useFlyTo === true) {\n this.leafletElement.flyToBounds(bounds, this.getFitBoundsOptions(toProps));\n } else {\n this.leafletElement.fitBounds(bounds, this.getFitBoundsOptions(toProps));\n }\n }\n\n if (boxZoom !== fromProps.boxZoom) {\n if (boxZoom === true) {\n this.leafletElement.boxZoom.enable();\n } else {\n this.leafletElement.boxZoom.disable();\n }\n }\n\n if (doubleClickZoom !== fromProps.doubleClickZoom) {\n if (doubleClickZoom === true || typeof doubleClickZoom === 'string') {\n this.leafletElement.options.doubleClickZoom = doubleClickZoom;\n this.leafletElement.doubleClickZoom.enable();\n } else {\n this.leafletElement.doubleClickZoom.disable();\n }\n }\n\n if (dragging !== fromProps.dragging) {\n if (dragging === true) {\n this.leafletElement.dragging.enable();\n } else {\n this.leafletElement.dragging.disable();\n }\n }\n\n if (keyboard !== fromProps.keyboard) {\n if (keyboard === true) {\n this.leafletElement.keyboard.enable();\n } else {\n this.leafletElement.keyboard.disable();\n }\n }\n\n if (scrollWheelZoom !== fromProps.scrollWheelZoom) {\n if (scrollWheelZoom === true || typeof scrollWheelZoom === 'string') {\n this.leafletElement.options.scrollWheelZoom = scrollWheelZoom;\n this.leafletElement.scrollWheelZoom.enable();\n } else {\n this.leafletElement.scrollWheelZoom.disable();\n }\n }\n\n if (tap !== fromProps.tap) {\n if (tap === true) {\n this.leafletElement.tap.enable();\n } else {\n this.leafletElement.tap.disable();\n }\n }\n\n if (touchZoom !== fromProps.touchZoom) {\n if (touchZoom === true || typeof touchZoom === 'string') {\n this.leafletElement.options.touchZoom = touchZoom;\n this.leafletElement.touchZoom.enable();\n } else {\n this.leafletElement.touchZoom.disable();\n }\n }\n\n this._updating = false;\n };\n\n _proto.getZoomPanOptions = function getZoomPanOptions(props) {\n var animate = props.animate,\n duration = props.duration,\n easeLinearity = props.easeLinearity,\n noMoveStart = props.noMoveStart;\n return {\n animate: animate,\n duration: duration,\n easeLinearity: easeLinearity,\n noMoveStart: noMoveStart\n };\n };\n\n _proto.getFitBoundsOptions = function getFitBoundsOptions(props) {\n var zoomPanOptions = this.getZoomPanOptions(props);\n return _extends(_extends({}, zoomPanOptions), props.boundsOptions);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var props = omit.apply(void 0, [this.props].concat(OTHER_PROPS));\n this.leafletElement = this.createLeafletElement(props);\n this.leafletElement.on('move', this.onViewportChange);\n this.leafletElement.on('moveend', this.onViewportChanged);\n\n if (props.bounds != null) {\n this.leafletElement.fitBounds(props.bounds, this.getFitBoundsOptions(props));\n }\n\n this.contextValue = {\n layerContainer: this.leafletElement,\n map: this.leafletElement\n };\n\n _MapEvented.prototype.componentDidMount.call(this);\n\n this.forceUpdate(); // Re-render now that leafletElement is created\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this._ready === false) {\n this._ready = true;\n\n if (this.props.whenReady) {\n this.leafletElement.whenReady(this.props.whenReady);\n }\n }\n\n _MapEvented.prototype.componentDidUpdate.call(this, prevProps);\n\n this.updateLeafletElement(prevProps, this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n _MapEvented.prototype.componentWillUnmount.call(this);\n\n this.leafletElement.off('move', this.onViewportChange);\n this.leafletElement.off('moveend', this.onViewportChanged); // The canvas renderer uses requestAnimationFrame, making a deferred call to a deleted object\n // When preferCanvas is set, use simpler teardown logic\n\n if (this.props.preferCanvas === true) {\n this.leafletElement._initEvents(true);\n\n this.leafletElement._stop();\n } else {\n this.leafletElement.remove();\n }\n };\n\n _proto.shouldUpdateCenter = function shouldUpdateCenter(next, prev) {\n if (!prev) return true;\n next = normalizeCenter(next);\n prev = normalizeCenter(prev);\n return next[0] !== prev[0] || next[1] !== prev[1];\n };\n\n _proto.shouldUpdateBounds = function shouldUpdateBounds(next, prev) {\n return prev ? !latLngBounds(next).equals(latLngBounds(prev)) : true;\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: this.className,\n id: this.props.id,\n ref: this.bindContainer,\n style: this.props.style\n }, this.contextValue ? /*#__PURE__*/React.createElement(LeafletProvider, {\n value: this.contextValue\n }, this.props.children) : null);\n };\n\n return Map;\n}(MapEvented);\n\nexport { Map as default };","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","require(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.weak-map\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\n!function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e(require(\"leaflet\"), require(\"react\"), require(\"react-leaflet\"), require(\"google-maps\")) : \"function\" == typeof define && define.amd ? define([\"leaflet\", \"react\", \"react-leaflet\", \"google-maps\"], e) : \"object\" == typeof exports ? exports.ReactLeaflet = e(require(\"leaflet\"), require(\"react\"), require(\"react-leaflet\"), require(\"google-maps\")) : t.ReactLeaflet = e(t.L, t.React, t[void 0], t.GoogleMapsLoader);\n}(window, function (t, e, i, n) {\n return function (t) {\n var e = {};\n\n function i(n) {\n if (e[n]) return e[n].exports;\n var o = e[n] = {\n i: n,\n l: !1,\n exports: {}\n };\n return t[n].call(o.exports, o, o.exports, i), o.l = !0, o.exports;\n }\n\n return i.m = t, i.c = e, i.d = function (t, e, n) {\n i.o(t, e) || Object.defineProperty(t, e, {\n enumerable: !0,\n get: n\n });\n }, i.r = function (t) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n }, i.t = function (t, e) {\n if (1 & e && (t = i(t)), 8 & e) return t;\n if (4 & e && \"object\" == typeof t && t && t.__esModule) return t;\n var n = Object.create(null);\n if (i.r(n), Object.defineProperty(n, \"default\", {\n enumerable: !0,\n value: t\n }), 2 & e && \"string\" != typeof t) for (var o in t) {\n i.d(n, o, function (e) {\n return t[e];\n }.bind(null, o));\n }\n return n;\n }, i.n = function (t) {\n var e = t && t.__esModule ? function () {\n return t[\"default\"];\n } : function () {\n return t;\n };\n return i.d(e, \"a\", e), e;\n }, i.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, i.p = \"\", i(i.s = 3);\n }([function (t, e) {\n t.exports = function (t) {\n return t && t.__esModule ? t : {\n \"default\": t\n };\n };\n }, function (t, e, i) {\n var n = i(5);\n\n function o() {\n if (\"function\" != typeof WeakMap) return null;\n var t = new WeakMap();\n return o = function o() {\n return t;\n }, t;\n }\n\n t.exports = function (t) {\n if (t && t.__esModule) return t;\n if (null === t || \"object\" !== n(t) && \"function\" != typeof t) return {\n \"default\": t\n };\n var e = o();\n if (e && e.has(t)) return e.get(t);\n var i = {},\n r = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var a in t) {\n if (Object.prototype.hasOwnProperty.call(t, a)) {\n var s = r ? Object.getOwnPropertyDescriptor(t, a) : null;\n s && (s.get || s.set) ? Object.defineProperty(i, a, s) : i[a] = t[a];\n }\n }\n\n return i[\"default\"] = t, e && e.set(t, i), i;\n };\n }, function (e, i) {\n e.exports = t;\n }, function (t, e, i) {\n \"use strict\";\n\n var n = i(0);\n e.__esModule = !0, e.GoogleLayer = void 0;\n var o = n(i(4));\n e.GoogleLayer = o[\"default\"];\n }, function (t, e, i) {\n \"use strict\";\n\n var n = i(1),\n o = i(0);\n e.__esModule = !0, e[\"default\"] = void 0;\n var r = o(i(6)),\n a = o(i(7)),\n s = (o(i(8)), o(i(9))),\n l = n(i(2)),\n u = i(12);\n i(13);\n\n var c = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n (0, r[\"default\"])(e, t);\n var i = e.prototype;\n return i.createLeafletElement = function (t) {\n return this.leafletElement = new l.gridLayer.googleMutant(t), this.leafletElement;\n }, i.updateLeafletElement = function (t, e) {\n var i = e.opacity,\n n = e.zIndex;\n i !== t.opacity && this.leafletElement.setOpacity(i), n !== t.zIndex && this.leafletElement.setZIndex(n);\n }, e;\n }(u.GridLayer);\n\n (0, a[\"default\"])(c, \"propTypes\", {\n googlekey: s[\"default\"].string.isRequired,\n maptype: s[\"default\"].string,\n asclientid: s[\"default\"].bool,\n channel: s[\"default\"].string\n }), (0, a[\"default\"])(c, \"contextTypes\", u.GridLayer.contextTypes), (0, a[\"default\"])(c, \"childContextTypes\", u.GridLayer.childContextTypes);\n var p = (0, u.withLeaflet)(c);\n e[\"default\"] = p;\n }, function (t, e) {\n function i(t) {\n return (i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n })(t);\n }\n\n function n(e) {\n return \"function\" == typeof Symbol && \"symbol\" === i(Symbol.iterator) ? t.exports = n = function n(t) {\n return i(t);\n } : t.exports = n = function n(t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : i(t);\n }, n(e);\n }\n\n t.exports = n;\n }, function (t, e) {\n t.exports = function (t, e) {\n t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.__proto__ = e;\n };\n }, function (t, e) {\n t.exports = function (t, e, i) {\n return e in t ? Object.defineProperty(t, e, {\n value: i,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = i, t;\n };\n }, function (t, i) {\n t.exports = e;\n }, function (t, e, i) {\n t.exports = i(10)();\n }, function (t, e, i) {\n \"use strict\";\n\n var n = i(11);\n\n function o() {}\n\n function r() {}\n\n r.resetWarningCache = o, t.exports = function () {\n function t(t, e, i, o, r, a) {\n if (a !== n) {\n var s = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");\n throw s.name = \"Invariant Violation\", s;\n }\n }\n\n function e() {\n return t;\n }\n\n t.isRequired = t;\n var i = {\n array: t,\n bool: t,\n func: t,\n number: t,\n object: t,\n string: t,\n symbol: t,\n any: t,\n arrayOf: e,\n element: t,\n elementType: t,\n instanceOf: e,\n node: t,\n objectOf: e,\n oneOf: e,\n oneOfType: e,\n shape: e,\n exact: e,\n checkPropTypes: r,\n resetWarningCache: o\n };\n return i.PropTypes = i, i;\n };\n }, function (t, e, i) {\n \"use strict\";\n\n t.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n }, function (t, e) {\n t.exports = i;\n }, function (t, e, i) {\n \"use strict\";\n\n var n,\n o = i(1),\n r = i(0)(i(14)),\n a = o(i(2));\n a.GridLayer.GoogleMutant = a.GridLayer.extend({\n includes: a.Evented,\n options: {\n minZoom: 0,\n maxZoom: 21,\n tileSize: 256,\n subdomains: \"abc\",\n errorTileUrl: \"\",\n attribution: \"\",\n opacity: 1,\n continuousWorld: !1,\n noWrap: !1,\n type: \"HYBRID\",\n maxNativeZoom: 21\n },\n initialize: function initialize(t) {\n a.GridLayer.prototype.initialize.call(this, t);\n var e = this;\n r[\"default\"].VERSION = t.version || \"3.38\", t.asclientid ? r[\"default\"].CLIENT = t.googlekey : r[\"default\"].KEY = t.googlekey, r[\"default\"].LIBRARIES = t.libraries || [], t.channel && (r[\"default\"].CHANNEL = t.channel), e._type = t.maptype || \"SATELLITE\", r[\"default\"].load(function (i) {\n n = i, e._ready = !0, e._initMutant(), e._update(), t.onAfterLoad && t.onAfterLoad(n);\n }), this._tileCallbacks = {}, this._freshTiles = {}, this._imagesPerTile = \"HYBRID\" === e._type ? 2 : 1, this.createTile = \"HYBRID\" === e._type ? this._createMultiTile : this._createSingleTile;\n },\n onAdd: function onAdd(t) {\n a.GridLayer.prototype.onAdd.call(this, t), this._initMutantContainer(), r[\"default\"].load(function (e) {\n this._map = t, this._initMutant(), t.on(\"viewreset\", this._reset, this), t.on(\"move\", this._update, this), t.on(\"zoomend\", this._handleZoomAnim, this), t.on(\"resize\", this._resize, this), t._controlCorners && (t._controlCorners.bottomright.style.marginBottom = \"20px\"), this._reset(), this._update();\n }.bind(this));\n },\n onRemove: function onRemove(t) {\n a.GridLayer.prototype.onRemove.call(this, t), t._container.removeChild(this._mutantContainer), this._mutantContainer = void 0, t.off(\"viewreset\", this._reset, this), t.off(\"move\", this._update, this), t.off(\"zoomend\", this._handleZoomAnim, this), t.off(\"resize\", this._resize, this), t._controlCorners && (t._controlCorners.bottomright.style.marginBottom = \"0em\");\n },\n getAttribution: function getAttribution() {\n return this.options.attribution;\n },\n setOpacity: function setOpacity(t) {\n this.options.opacity = t, t < 1 && a.DomUtil.setOpacity(this._mutantContainer, t);\n },\n setElementSize: function setElementSize(t, e) {\n t.style.width = e.x + \"px\", t.style.height = e.y + \"px\";\n },\n _initMutantContainer: function _initMutantContainer() {\n this._mutantContainer || (this._mutantContainer = a.DomUtil.create(\"div\", \"leaflet-google-mutant leaflet-top leaflet-left\"), this._mutantContainer.id = \"_MutantContainer_\" + a.Util.stamp(this._mutantContainer), this._mutantContainer.style.pointerEvents = \"none\", this._map.getContainer().appendChild(this._mutantContainer)), this.setOpacity(this.options.opacity), this.setElementSize(this._mutantContainer, this._map.getSize()), this._attachObserver(this._mutantContainer);\n },\n _initMutant: function _initMutant() {\n if (this._ready && this._mutantContainer) {\n this._mutantCenter = new n.maps.LatLng(0, 0);\n var t = new n.maps.Map(this._mutantContainer, {\n center: this._mutantCenter,\n zoom: 0,\n tilt: 0,\n mapTypeId: n.maps.MapTypeId[this._type],\n disableDefaultUI: !0,\n keyboardShortcuts: !1,\n draggable: !1,\n disableDoubleClickZoom: !0,\n scrollwheel: !1,\n streetViewControl: !1,\n styles: this.options.styles || {},\n backgroundColor: \"transparent\"\n });\n this._mutant = t, this.fire(\"spawned\", {\n mapObject: t\n });\n }\n },\n _attachObserver: function _attachObserver(t) {\n new MutationObserver(this._onMutations.bind(this)).observe(t, {\n childList: !0,\n subtree: !0\n });\n },\n _onMutations: function _onMutations(t) {\n for (var e = 0; e < t.length; ++e) {\n for (var i = t[e], n = 0; n < i.addedNodes.length; ++n) {\n var o = i.addedNodes[n];\n o instanceof HTMLImageElement ? this._onMutatedImage(o) : o instanceof HTMLElement && Array.prototype.forEach.call(o.querySelectorAll(\"img\"), this._onMutatedImage.bind(this));\n }\n }\n },\n _roadRegexp: /!1i(\\d+)!2i(\\d+)!3i(\\d+)!/,\n _satRegexp: /x=(\\d+)&y=(\\d+)&z=(\\d+)/,\n _staticRegExp: /StaticMapService\\.GetMapImage/,\n _onMutatedImage: function _onMutatedImage(t) {\n var e,\n i,\n n,\n o = t.src.match(this._roadRegexp);\n\n if (o ? (e = {\n z: o[1],\n x: o[2],\n y: o[3]\n }, this._imagesPerTile > 1 && (t.style.zIndex = 1), i = 1) : ((o = t.src.match(this._satRegexp)) && (e = {\n x: o[1],\n y: o[2],\n z: o[3]\n }), i = 0), e) {\n var r = this._tileCoordsToKey(e);\n\n t.style.position = \"absolute\", this._imagesPerTile > 1 && (r += \"/\" + i), r in this._tileCallbacks && this._tileCallbacks[r] ? (this._tileCallbacks[r].pop()(t), this._tileCallbacks[r].length || delete this._tileCallbacks[r]) : ((n = t.parentNode) && (n.removeChild(t), n.removeChild = a.Util.falseFn), r in this._freshTiles ? this._freshTiles[r].push(t) : this._freshTiles[r] = [t]);\n } else t.src.match(this._staticRegExp) && (n = t.parentNode) && t.parentNode.replaceChild(a.DomUtil.create(\"img\"), t);\n },\n _createSingleTile: function _createSingleTile(t, e) {\n var i = this._tileCoordsToKey(t);\n\n if (i in this._freshTiles) {\n var n = this._freshTiles[i].pop();\n\n return this._freshTiles[i].length || delete this._freshTiles[i], a.Util.requestAnimFrame(e), n;\n }\n\n var o,\n r = a.DomUtil.create(\"div\");\n return this._tileCallbacks[i] = this._tileCallbacks[i] || [], this._tileCallbacks[i].push((o = r, function (t) {\n var i = t.parentNode;\n i && (i.removeChild(t), i.removeChild = a.Util.falseFn), o.appendChild(t), e();\n })), r;\n },\n _createMultiTile: function _createMultiTile(t, e) {\n var i = this._tileCoordsToKey(t),\n n = a.DomUtil.create(\"div\");\n\n n.dataset.pending = this._imagesPerTile;\n\n for (var o = 0; o < this._imagesPerTile; o++) {\n var r = i + \"/\" + o;\n r in this._freshTiles ? (n.appendChild(this._freshTiles[r].pop()), this._freshTiles[r].length || delete this._freshTiles[r], n.dataset.pending--) : (this._tileCallbacks[r] = this._tileCallbacks[r] || [], this._tileCallbacks[r].push(function (t) {\n return function (i) {\n var n = i.parentNode;\n n && (n.removeChild(i), n.removeChild = a.Util.falseFn), t.appendChild(i), t.dataset.pending--, parseInt(t.dataset.pending) || e();\n };\n }(n)));\n }\n\n return parseInt(n.dataset.pending) || a.Util.requestAnimFrame(e), n;\n },\n _checkZoomLevels: function _checkZoomLevels() {\n void 0 !== this._map.getZoom() && this._mutant.getZoom() !== this._map.getZoom() && this._map.setZoom(this._mutant.getZoom());\n },\n _reset: function _reset() {\n this._initContainer();\n },\n _update: function _update() {\n if (a.GridLayer.prototype._update.call(this), this._mutant) {\n var t = this._map.getCenter(),\n e = new n.maps.LatLng(t.lat, t.lng);\n\n this._mutant.setCenter(e), void 0 !== this._map.getZoom() && this._mutant.setZoom(Math.round(this._map.getZoom()));\n }\n },\n _resize: function _resize() {\n var t = this._map.getSize();\n\n this._mutantContainer.style.width === t.x && this._mutantContainer.style.height === t.y || (this.setElementSize(this._mutantContainer, t), this._mutant && n.maps.event.trigger(this._mutant, \"resize\"));\n },\n _handleZoomAnim: function _handleZoomAnim() {\n var t = this._map.getCenter(),\n e = new n.maps.LatLng(t.lat, t.lng);\n\n this._mutant.setCenter(e), this._mutant.setZoom(Math.round(this._map.getZoom()));\n },\n _removeTile: function _removeTile(t) {\n if (this._imagesPerTile > 1) for (var e = 0; e < this._imagesPerTile; e++) {\n var i = t + \"/\" + e;\n i in this._freshTiles && delete this._freshTiles[i];\n } else t in this._freshTiles && delete this._freshTiles[t];\n return a.GridLayer.prototype._removeTile.call(this, t);\n }\n }), a.gridLayer.googleMutant = function (t) {\n return new a.GridLayer.GoogleMutant(t);\n };\n }, function (t, e) {\n t.exports = n;\n }]);\n});","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","\"use strict\";\n\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.filter\";\nimport { DomUtil } from 'leaflet';\n\nvar splitClassName = function splitClassName(className) {\n if (className === void 0) {\n className = '';\n }\n\n return className.split(' ').filter(Boolean);\n};\n\nexport var addClassName = function addClassName(container, className) {\n splitClassName(className).forEach(function (cls) {\n DomUtil.addClass(container, cls);\n });\n};\nexport var removeClassName = function removeClassName(container, className) {\n splitClassName(className).forEach(function (cls) {\n DomUtil.removeClass(container, cls);\n });\n};\nexport default (function (container, prevClassName, nextClassName) {\n if (container != null && nextClassName !== prevClassName) {\n if (prevClassName != null && prevClassName.length > 0) {\n removeClassName(container, prevClassName);\n }\n\n if (nextClassName != null && nextClassName.length > 0) {\n addClassName(container, nextClassName);\n }\n }\n});","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","require(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.object.assign\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\n/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function (window, document, exportName, undefined) {\n 'use strict';\n\n var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\n var TEST_ELEMENT = document.createElement('div');\n var TYPE_FUNCTION = 'function';\n var round = Math.round;\n var abs = Math.abs;\n var now = Date.now;\n /**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\n\n function setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n }\n /**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\n\n\n function invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n\n return false;\n }\n /**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\n\n\n function each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n }\n /**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\n\n\n function deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function () {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '').replace(/^\\s+at\\s+/gm, '').replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n var log = window.console && (window.console.warn || window.console.log);\n\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n\n return method.apply(this, arguments);\n };\n }\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\n\n\n var assign;\n\n if (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n\n return output;\n };\n } else {\n assign = Object.assign;\n }\n /**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\n\n\n var extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n\n while (i < keys.length) {\n if (!merge || merge && dest[keys[i]] === undefined) {\n dest[keys[i]] = src[keys[i]];\n }\n\n i++;\n }\n\n return dest;\n }, 'extend', 'Use `assign`.');\n /**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\n\n var merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n }, 'merge', 'Use `assign`.');\n /**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\n\n function inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n }\n /**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\n\n\n function bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n }\n /**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\n\n\n function boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n\n return val;\n }\n /**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\n\n\n function ifUndefined(val1, val2) {\n return val1 === undefined ? val2 : val1;\n }\n /**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\n\n function addEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.addEventListener(type, handler, false);\n });\n }\n /**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\n\n\n function removeEventListeners(target, types, handler) {\n each(splitStr(types), function (type) {\n target.removeEventListener(type, handler, false);\n });\n }\n /**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\n\n\n function hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n }\n /**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\n\n\n function inStr(str, find) {\n return str.indexOf(find) > -1;\n }\n /**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\n\n\n function splitStr(str) {\n return str.trim().split(/\\s+/g);\n }\n /**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\n\n\n function inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n\n while (i < src.length) {\n if (findByKey && src[i][findByKey] == find || !findByKey && src[i] === find) {\n return i;\n }\n\n i++;\n }\n\n return -1;\n }\n }\n /**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\n\n\n function toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n }\n /**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\n\n\n function uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n }\n /**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\n\n\n function prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n var i = 0;\n\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = prefix ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n\n i++;\n }\n\n return undefined;\n }\n /**\n * get a unique id\n * @returns {number} uniqueId\n */\n\n\n var _uniqueId = 1;\n\n function uniqueId() {\n return _uniqueId++;\n }\n /**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\n\n\n function getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return doc.defaultView || doc.parentWindow || window;\n }\n\n var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n var SUPPORT_TOUCH = ('ontouchstart' in window);\n var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\n var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n var INPUT_TYPE_TOUCH = 'touch';\n var INPUT_TYPE_PEN = 'pen';\n var INPUT_TYPE_MOUSE = 'mouse';\n var INPUT_TYPE_KINECT = 'kinect';\n var COMPUTE_INTERVAL = 25;\n var INPUT_START = 1;\n var INPUT_MOVE = 2;\n var INPUT_END = 4;\n var INPUT_CANCEL = 8;\n var DIRECTION_NONE = 1;\n var DIRECTION_LEFT = 2;\n var DIRECTION_RIGHT = 4;\n var DIRECTION_UP = 8;\n var DIRECTION_DOWN = 16;\n var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\n var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\n var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n var PROPS_XY = ['x', 'y'];\n var PROPS_CLIENT_XY = ['clientX', 'clientY'];\n /**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\n\n function Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget; // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n\n this.domHandler = function (ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n }\n\n Input.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function handler() {},\n\n /**\n * bind the events\n */\n init: function init() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function destroy() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n };\n /**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\n\n function createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n\n return new Type(manager, inputHandler);\n }\n /**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\n\n\n function inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = eventType & INPUT_START && pointersLen - changedPointersLen === 0;\n var isFinal = eventType & (INPUT_END | INPUT_CANCEL) && pointersLen - changedPointersLen === 0;\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n } // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n\n\n input.eventType = eventType; // compute scale, rotation etc\n\n computeInputData(manager, input); // emit secret event\n\n manager.emit('hammer.input', input);\n manager.recognize(input);\n manager.session.prevInput = input;\n }\n /**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\n\n\n function computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length; // store the first input to calculate the distance and direction\n\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n } // to compute scale and rotation we need to store the multiple touches\n\n\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;\n computeIntervalInputData(session, input); // find the correct target\n\n var target = manager.element;\n\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n\n input.target = target;\n }\n\n function computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n }\n /**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\n\n\n function computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity,\n velocityX,\n velocityY,\n direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = abs(v.x) > abs(v.y) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n }\n /**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\n\n\n function simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n }\n /**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\n\n\n function getCenter(pointers) {\n var pointersLength = pointers.length; // no need to loop when only one touch\n\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0,\n y = 0,\n i = 0;\n\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n }\n /**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\n\n\n function getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n }\n /**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\n\n\n function getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n }\n /**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\n\n\n function getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.sqrt(x * x + y * y);\n }\n /**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\n\n\n function getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n }\n /**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\n\n\n function getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n }\n /**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\n\n\n function getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n }\n\n var MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n };\n var MOUSE_ELEMENT_EVENTS = 'mousedown';\n var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n /**\n * Mouse events input\n * @constructor\n * @extends Input\n */\n\n function MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n }\n\n inherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type]; // on start we want to have the left mouse button down\n\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n } // mouse must be down\n\n\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n });\n var POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n }; // in IE10 the pointer types is defined as an enum\n\n var IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n\n };\n var POINTER_ELEMENT_EVENTS = 'pointerdown';\n var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; // IE10 has prefixed support, and case-sensitive\n\n if (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n }\n /**\n * Pointer events input\n * @constructor\n * @extends Input\n */\n\n\n function PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n Input.apply(this, arguments);\n this.store = this.manager.session.pointerEvents = [];\n }\n\n inherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n var isTouch = pointerType == INPUT_TYPE_TOUCH; // get index of the event in the store\n\n var storeIndex = inArray(store, ev.pointerId, 'pointerId'); // start and mouse must be down\n\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n } // it not found, so the pointer hasn't been down (so it's probably a hover)\n\n\n if (storeIndex < 0) {\n return;\n } // update the event in the store\n\n\n store[storeIndex] = ev;\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n });\n var SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\n var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n /**\n * Touch events input\n * @constructor\n * @extends Input\n */\n\n function SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n Input.apply(this, arguments);\n }\n\n inherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; // should we handle the touch events?\n\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type); // when done, reset the started state\n\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n\n function normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n }\n\n var TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n };\n var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n /**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\n\n function TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n Input.apply(this, arguments);\n }\n\n inherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n });\n /**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\n\n function getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds; // when there is only one touch, the process can be simplified\n\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target; // get target touches from touches\n\n targetTouches = allTouches.filter(function (touch) {\n return hasParent(touch.target, target);\n }); // collect touches\n\n if (type === INPUT_START) {\n i = 0;\n\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n } // filter changed touches to only contain touches that exist in the collected target ids\n\n\n i = 0;\n\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n } // cleanup removed touches\n\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [// merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), changedTargetTouches];\n }\n /**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\n\n var DEDUP_TIMEOUT = 2500;\n var DEDUP_DISTANCE = 25;\n\n function TouchMouseInput() {\n Input.apply(this, arguments);\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n this.primaryTouch = null;\n this.lastTouches = [];\n }\n\n inherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = inputData.pointerType == INPUT_TYPE_TOUCH,\n isMouse = inputData.pointerType == INPUT_TYPE_MOUSE;\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n } // when we're in a touch event, record touches to de-dupe synthetic mouse event\n\n\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n });\n\n function recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n }\n\n function setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n\n var removeLastTouch = function removeLastTouch() {\n var i = lts.indexOf(lastTouch);\n\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n }\n\n function isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX,\n y = eventData.srcEvent.clientY;\n\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x),\n dy = Math.abs(y - t.y);\n\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n\n return false;\n }\n\n var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\n var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; // magical touchAction value\n\n var TOUCH_ACTION_COMPUTE = 'compute';\n var TOUCH_ACTION_AUTO = 'auto';\n var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\n\n var TOUCH_ACTION_NONE = 'none';\n var TOUCH_ACTION_PAN_X = 'pan-x';\n var TOUCH_ACTION_PAN_Y = 'pan-y';\n var TOUCH_ACTION_MAP = getTouchActionProps();\n /**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\n\n function TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n }\n\n TouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function set(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function update() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function compute() {\n var actions = [];\n each(this.manager.recognizers, function (recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function preventDefaults(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection; // if the touch action did prevented once this session\n\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone || hasPanY && direction & DIRECTION_HORIZONTAL || hasPanX && direction & DIRECTION_VERTICAL) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function preventSrc(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n };\n /**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\n\n function cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n } // pan-x OR pan-y\n\n\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n } // manipulation\n\n\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n }\n\n function getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function (val) {\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n }\n /**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\n\n\n var STATE_POSSIBLE = 1;\n var STATE_BEGAN = 2;\n var STATE_CHANGED = 4;\n var STATE_ENDED = 8;\n var STATE_RECOGNIZED = STATE_ENDED;\n var STATE_CANCELLED = 16;\n var STATE_FAILED = 32;\n /**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\n\n function Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n this.id = uniqueId();\n this.manager = null; // default is enable true\n\n this.options.enable = ifUndefined(this.options.enable, true);\n this.state = STATE_POSSIBLE;\n this.simultaneous = {};\n this.requireFail = [];\n }\n\n Recognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function set(options) {\n assign(this.options, options); // also update the touchAction, in case something changed about the directions/enabled state\n\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function recognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function dropRecognizeWith(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function requireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function dropRequireFailure(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function hasRequireFailures() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function canRecognizeWith(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function emit(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n } // 'panstart' and 'panmove'\n\n\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) {\n // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n } // panend and pancancel\n\n\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function tryEmit(input) {\n if (this.canEmit()) {\n return this.emit(input);\n } // it's failing anyway\n\n\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function canEmit() {\n var i = 0;\n\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n\n i++;\n }\n\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function recognize(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData); // is is enabled and allow recognizing?\n\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n } // reset when we've reached the end\n\n\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone); // the recognizer has recognized a gesture\n // so trigger an event\n\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function process(inputData) {},\n // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function getTouchAction() {},\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function reset() {}\n };\n /**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\n\n function stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n\n return '';\n }\n /**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\n\n\n function directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n\n return '';\n }\n /**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\n\n\n function getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n\n if (manager) {\n return manager.get(otherRecognizer);\n }\n\n return otherRecognizer;\n }\n /**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\n\n\n function AttrRecognizer() {\n Recognizer.apply(this, arguments);\n }\n\n inherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function attrTest(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function process(input) {\n var state = this.state;\n var eventType = input.eventType;\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input); // on cancel input and we've recognized before, return STATE_CANCELLED\n\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n\n return state | STATE_CHANGED;\n }\n\n return STATE_FAILED;\n }\n });\n /**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\n function PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n this.pX = null;\n this.pY = null;\n }\n\n inherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n getTouchAction: function getTouchAction() {\n var direction = this.options.direction;\n var actions = [];\n\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n\n return actions;\n },\n directionTest: function directionTest(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY; // lock to axis?\n\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = x === 0 ? DIRECTION_NONE : x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = y === 0 ? DIRECTION_NONE : y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n attrTest: function attrTest(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) && (this.state & STATE_BEGAN || !(this.state & STATE_BEGAN) && this.directionTest(input));\n },\n emit: function emit(input) {\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n\n this._super.emit.call(this, input);\n }\n });\n /**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\n\n function PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n\n inherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function attrTest(input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n emit: function emit(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n\n this._super.emit.call(this, input);\n }\n });\n /**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\n\n function PressRecognizer() {\n Recognizer.apply(this, arguments);\n this._timer = null;\n this._input = null;\n }\n\n inherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251,\n // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n\n },\n getTouchAction: function getTouchAction() {\n return [TOUCH_ACTION_AUTO];\n },\n process: function process(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n this._input = input; // we only allow little movement\n // and we've reached an end event, so a tap is possible\n\n if (!validMovement || !validPointers || input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n\n return STATE_FAILED;\n },\n reset: function reset() {\n clearTimeout(this._timer);\n },\n emit: function emit(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && input.eventType & INPUT_END) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n /**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\n\n function RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n\n inherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n getTouchAction: function getTouchAction() {\n return [TOUCH_ACTION_NONE];\n },\n attrTest: function attrTest(input) {\n return this._super.attrTest.call(this, input) && (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n });\n /**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\n\n function SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n }\n\n inherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n getTouchAction: function getTouchAction() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n attrTest: function attrTest(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) && direction & input.offsetDirection && input.distance > this.options.threshold && input.maxPointers == this.options.pointers && abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n emit: function emit(input) {\n var direction = directionStr(input.offsetDirection);\n\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n });\n /**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\n\n function TapRecognizer() {\n Recognizer.apply(this, arguments); // previous time and center,\n // used for tap counting\n\n this.pTime = false;\n this.pCenter = false;\n this._timer = null;\n this._input = null;\n this.count = 0;\n }\n\n inherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300,\n // max time between the multi-tap taps\n time: 250,\n // max time of the pointer to be down (like finger on the screen)\n threshold: 9,\n // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n\n },\n getTouchAction: function getTouchAction() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n process: function process(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n this.reset();\n\n if (input.eventType & INPUT_START && this.count === 0) {\n return this.failTimeout();\n } // we only allow little movement\n // and we've reached an end event, so a tap is possible\n\n\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? input.timeStamp - this.pTime < options.interval : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input; // if tap count matches we have recognized it,\n // else it has began recognizing...\n\n var tapCount = this.count % options.taps;\n\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n\n return STATE_FAILED;\n },\n failTimeout: function failTimeout() {\n this._timer = setTimeoutContext(function () {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n reset: function reset() {\n clearTimeout(this._timer);\n },\n emit: function emit() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n });\n /**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\n function Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n }\n /**\n * @const {string}\n */\n\n\n Hammer.VERSION = '2.0.7';\n /**\n * default settings\n * @namespace\n */\n\n Hammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [// RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {\n enable: false\n }], [PinchRecognizer, {\n enable: false\n }, ['rotate']], [SwipeRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }], [PanRecognizer, {\n direction: DIRECTION_HORIZONTAL\n }, ['swipe']], [TapRecognizer], [TapRecognizer, {\n event: 'doubletap',\n taps: 2\n }, ['tap']], [PressRecognizer]],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n };\n var STOP = 1;\n var FORCED_STOP = 2;\n /**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\n\n function Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n this.options.inputTarget = this.options.inputTarget || element;\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n toggleCssProps(this, true);\n each(this.options.recognizers, function (item) {\n var recognizer = this.add(new item[0](item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n }\n\n Manager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function set(options) {\n assign(this.options, options); // Options that need a little more setup\n\n if (options.touchAction) {\n this.touchAction.update();\n }\n\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function stop(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function recognize(inputData) {\n var session = this.session;\n\n if (session.stopped) {\n return;\n } // run the touch-action polyfill\n\n\n this.touchAction.preventDefaults(inputData);\n var recognizer;\n var recognizers = this.recognizers; // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n\n var curRecognizer = session.curRecognizer; // reset when the last recognizer is recognized\n // or when we're in a new session\n\n if (!curRecognizer || curRecognizer && curRecognizer.state & STATE_RECOGNIZED) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n\n while (i < recognizers.length) {\n recognizer = recognizers[i]; // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) {\n // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n } // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n\n\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function get(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function add(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n } // remove existing\n\n\n var existing = this.get(recognizer.options.event);\n\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function remove(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer); // let's make sure this recognizer exists\n\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function on(events, handler) {\n if (events === undefined) {\n return;\n }\n\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function off(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function (event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function emit(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n } // no handlers, so skip it all\n\n\n var handlers = this.handlers[event] && this.handlers[event].slice();\n\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n\n data.preventDefault = function () {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function destroy() {\n this.element && toggleCssProps(this, false);\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n };\n /**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\n\n function toggleCssProps(manager, add) {\n var element = manager.element;\n\n if (!element.style) {\n return;\n }\n\n var prop;\n each(manager.options.cssProps, function (value, name) {\n prop = prefixed(element.style, name);\n\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n\n if (!add) {\n manager.oldCssProps = {};\n }\n }\n /**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\n\n\n function triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n }\n\n assign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n }); // this prevents errors when Hammer is loaded in the presence of an AMD\n // style loader but by script tag, not by the loader.\n\n var freeGlobal = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}; // jshint ignore:line\n\n freeGlobal.Hammer = Hammer;\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Hammer;\n });\n } else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n } else {\n window[exportName] = Hammer;\n }\n})(window, document, 'Hammer');","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}"],"sourceRoot":""}