{"version":3,"sources":["webpack:///./node_modules/gatsby/node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/globals.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/react-map-gl/dist/esm/mapbox/mapbox.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_typed.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.string.sub.js","webpack:///./src/components/elements/seo.js","webpack:///./src/components/elements/contentWrapper.js","webpack:///./src/components/elements/card.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/style-utils.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/gl-matrix/esm/common.js","webpack:///./node_modules/gl-matrix/esm/vec4.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js","webpack:///./node_modules/gl-matrix/esm/mat4.js","webpack:///./node_modules/gl-matrix/esm/vec2.js","webpack:///./node_modules/gl-matrix/esm/vec3.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/assert.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/viewport.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/math-utils.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/assert.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/transition/transition-interpolator.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/transition/transition-utils.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/transition/viewport-fly-to-interpolator.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/transition/linear-interpolator.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/map-state.js","webpack:///./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/map-constraints.js","webpack:///./node_modules/react-map-gl/dist/esm/components/map-context.js","webpack:///./node_modules/react-map-gl/dist/esm/components/static-map.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/transition-manager.js","webpack:///./node_modules/mjolnir.js/dist/esm/utils/hammer-overrides.js","webpack:///./node_modules/mjolnir.js/dist/esm/utils/hammer.browser.js","webpack:///./node_modules/mjolnir.js/dist/esm/constants.js","webpack:///./node_modules/mjolnir.js/dist/esm/inputs/wheel-input.js","webpack:///./node_modules/mjolnir.js/dist/esm/inputs/move-input.js","webpack:///./node_modules/mjolnir.js/dist/esm/inputs/key-input.js","webpack:///./node_modules/mjolnir.js/dist/esm/inputs/contextmenu-input.js","webpack:///./node_modules/mjolnir.js/dist/esm/utils/event-utils.js","webpack:///./node_modules/mjolnir.js/dist/esm/utils/event-registrar.js","webpack:///./node_modules/mjolnir.js/dist/esm/event-manager.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/map-controller.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/debounce.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/deprecate-warn.js","webpack:///./node_modules/react-map-gl/dist/esm/components/interactive-map.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/deep-equal.js","webpack:///./node_modules/react-map-gl/dist/esm/components/source.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-map-gl/dist/esm/components/layer.js","webpack:///./node_modules/react-map-gl/dist/esm/components/base-control.js","webpack:///./node_modules/@babel/runtime/helpers/esm/get.js","webpack:///./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack:///./node_modules/react-map-gl/dist/esm/components/draggable-control.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/crisp-pixel.js","webpack:///./node_modules/react-map-gl/dist/esm/components/marker.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/dynamic-position.js","webpack:///./node_modules/react-map-gl/dist/esm/components/popup.js","webpack:///./node_modules/react-map-gl/dist/esm/components/fullscreen-control.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/geolocate-utils.js","webpack:///./node_modules/react-map-gl/dist/esm/components/geolocate-control.js","webpack:///./node_modules/react-map-gl/dist/esm/components/navigation-control.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/version.js","webpack:///./node_modules/react-map-gl/dist/esm/components/scale-control.js","webpack:///./node_modules/react-map-gl/dist/esm/overlays/canvas-overlay.js","webpack:///./node_modules/react-map-gl/dist/esm/overlays/html-overlay.js","webpack:///./node_modules/react-map-gl/dist/esm/overlays/svg-overlay.js","webpack:///./node_modules/react-map-gl/dist/esm/utils/set-rtl-text-plugin.js","webpack:///./src/components/elements/map.js","webpack:///./src/components/elements/fullHeightWrapper.js","webpack:///./src/components/elements/navLink.js","webpack:///./src/components/elements/index.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.math.log2.js","webpack:///./src/images/icons/location-marker.svg","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/mjolnir.js/dist/esm/utils/globals.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./src/images/icons/arrow-left.svg","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/react-helmet/es/Helmet.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/gatsby/node_modules/core-js/modules/es6.typed.float64-array.js"],"names":["$expm1","Math","expm1","module","exports","x","exp","_classCallCheck","instance","Constructor","TypeError","$export","S","cosh","window_","window","global","document_","document","createHTML","this","init","data","byteOffset","length","propTypes","container","object","gl","mapboxApiAccessToken","string","mapboxApiUrl","attributionControl","bool","preserveDrawingBuffer","reuseMaps","transformRequest","func","mapOptions","mapStyle","oneOfType","visible","asyncRender","onLoad","onError","width","number","height","viewState","longitude","latitude","zoom","bearing","pitch","altitude","defaultProps","body","accessToken","location","match","search","process","MapboxAccessToken","REACT_APP_MAPBOX_ACCESS_TOKEN","getAccessToken","event","console","error","checkPropTypes","props","component","arguments","undefined","debug","Mapbox","_this","type","target","_map","mapboxgl","Error","initialized","_checkStyleSheet","version","_initialize","key","value","_destroy","_update","resize","map","style","_frame","cancel","_render","savedMap","oldContainer","getContainer","newContainer","classList","add","childNodes","appendChild","_container","setStyle","diff","isStyleLoaded","_fireLoadEvent","once","_reuse","getContext","HTMLCanvasElement","prototype","center","maxZoom","interactive","trackResize","Map","Object","assign","on","remove","off","_this2","baseApiUrl","_create","defineProperty","get","canvas","getCanvas","outline","_updateMapViewport","_updateMapSize","oldProps","newProps","viewportChanged","sizeChanged","redraw","oldViewState","_getViewState","newViewState","jumpTo","_viewStateToMapboxProps","transform","_ref","_ref$pitch","_ref$bearing","_ref$altitude","mapboxVersion","testElement","createElement","className","display","append","isCssLoaded","getComputedStyle","position","link","setAttribute","concat","head","ex","React","React__default","_defineProperty","obj","enumerable","configurable","writable","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","state","mountedInstances","emitChange","SideEffect","_PureComponent","subClass","superClass","apply","create","constructor","__proto__","peek","rewind","recordedState","_proto","UNSAFE_componentWillMount","push","componentDidUpdate","componentWillUnmount","index","indexOf","splice","render","PureComponent","displayName","name","getDisplayName","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","e","call","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","i","title","browser","env","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","_isFinite","isFinite","it","tanh","a","b","Infinity","abs","hypot","value1","value2","arg","div","sum","aLen","larg","sqrt","isObject","meta","onFreeze","$freeze","$preventExtensions","fails","getTime","Date","$toISOString","toISOString","lz","num","NaN","RangeError","d","y","getUTCFullYear","m","getUTCMilliseconds","s","slice","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Typed","hide","uid","TYPED","VIEW","ABV","ArrayBuffer","DataView","CONSTR","TypedArrayConstructors","split","SEO","description","lang","keywords","site","metaDescription","siteMetadata","Helmet","htmlAttributes","titleTemplate","content","property","author","join","StyledWrapper","contentWrapper","children","StyledCard","p","first","Card","_extends","source","hasOwnProperty","_typeof","Symbol","iterator","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_setPrototypeOf","_inherits","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","forEach","getOwnPropertyDescriptors","defineProperties","refProps","normalizeStyle","toJS","layerIndex","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","layers","next","done","layer","id","err","layerRef","ref","normalizedLayer","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","propName","_arrayLikeToArray","arr","arr2","_slicedToArray","isArray","_arr","_n","_d","_e","_s","_i","minLen","n","toString","from","test","EPSILON","ARRAY_TYPE","Float32Array","random","PI","out","vec","transformVector","matrix","vector","result","z","w","mod","divisor","modulus","start","end","step","invert","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","b0","b1","b2","b3","v","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a14","a15","b4","b5","b6","b7","b8","b9","b12","b13","b14","b15","max","t","ax","ay","assert","condition","message","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","zoomToScale","pow","scaleToZoom","scale","log2","lngLatToWorld","_ref2","lng","lat","Number","phi2","log","tan","worldToLngLat","_ref3","_ref4","lambda2","atan","getDistanceScales","_ref6","_ref6$highPrecision","highPrecision","latCosine","cos","unitsPerDegreeY","altUnitsPerMeter","unitsPerMeter","metersPerUnit","unitsPerDegree","degreesPerUnit","latCosine2","unitsPerDegreeY2","altUnitsPerDegree2","altUnitsPerMeter2","unitsPerDegree2","unitsPerMeter2","getViewMatrix","_ref7","_ref7$center","vm","rad","sin","c","getProjectionMatrix","_ref9","_getProjectionParamet","_ref8","_ref8$altitude","_ref8$pitch","_ref8$nearZMultiplier","nearZMultiplier","_ref8$farZMultiplier","farZMultiplier","pitchRadians","halfFov","topHalfSurfaceDistance","fov","aspect","focalDistance","near","far","getProjectionParameters","fovy","nf","f","worldToPixels","xyz","pixelProjectionMatrix","_xyz2","_xyz2$","pixelsToWorld","pixelUnprojectionMatrix","targetZ","_xyz3","coord","coord0","coord1","z0","z1","IDENTITY","bounds","_ref$minExtent","minExtent","_ref$maxZoom","_ref$padding","padding","_ref$offset","offset","_bounds","_bounds$","west","south","_bounds$2","east","north","top","bottom","left","right","viewport","nw","project","se","size","targetSize","scaleX","scaleY","offsetX","offsetY","centerLngLat","unproject","min","_Viewport","WebMercatorViewport","_ref$latitude","_ref$longitude","_ref$zoom","_ref$nearZMultiplier","_ref$farZMultiplier","projectionMatrix","viewMatrix","freeze","lngLat","xy","fromLocation","pos","translate","getMapCenterByLngLatPosition","options","_fitBounds2","Viewport","_ref$viewMatrix","_ref$projectionMatrix","vpm","viewProjectionMatrix","mInverse","equals","bind","projectPosition","unprojectPosition","projectFlat","unprojectFlat","_ref2$topLeft","topLeft","worldPosition","_coord","y2","_ref3$topLeft","_xyz","targetZWorld","_this$unprojectPositi","_this$unprojectPositi2","X","Y","Z","_this$projectFlat2","_this$unprojectFlat2","VIEWPORT_TRANSITION_PROPS","DEFAULT_OPTS","curve","speed","getFlyToTransitionParams","startProps","endProps","opts","rho","startZoom","startCenter","startScale","endZoom","endCenter","startCenterXY","endCenterXY","uDelta","w0","w1","u1","_u1","rho2","r0","r1","isView","clamp","ai","TransitionInterpolator","currentProps","nextProps","propNames","transitionDuration","WRAPPED_ANGULAR_PROPS","isValid","prop","getEndValueByShortestPath","startValue","endValue","isWrappedAngularProp","REQUIRED_PROPS","LINEARLY_INTERPOLATED_PROPS","_TransitionInterpolat","ViewportFlyToInterpolator","startViewportProps","endViewportProps","_key","_startValue","_endValue","_getFlyToTransitionPa","u","sinh","scaleIncrement","newZoom","newCenterWorld","newCenter","flyToViewport","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","duration","_opts","screenSpeed","maxDuration","_getFlyToTransitionPa2","getFlyToDuration","LinearInterpolator","transitionProps","around","aroundLngLat","_getMapCenterByLngLat2","MAPBOX_LIMITS","minZoom","minPitch","maxPitch","DEFAULT_STATE","MapState","_ref$minZoom","_ref$maxPitch","_ref$minPitch","transitionEasing","transitionInterpolator","transitionInterruption","startPanLngLat","startZoomLngLat","startBearing","startPitch","_viewportProps","_applyConstraints","_interactiveState","_getUpdatedMapState","_unproject","startPos","_this$_calculateNewLn2","_calculateNewLngLat","_ref5","_ref5$deltaScaleX","deltaScaleX","_ref5$deltaScaleY","deltaScaleY","_this$_interactiveSta","_this$_calculateNewPi","_calculateNewPitchAndBearing","_this$_interactiveSta2","_calculateNewZoom","_zoomedViewport$getMa2","flatViewport","topY","bottomY","shiftY","normalizeViewportProps","_this$_viewportProps","_ref10","_this$_viewportProps2","decapitalize","toLowerCase","mapContainer","onViewportChange","onViewStateChange","eventManager","isDragging","NO_TOKEN_WARNING","CONTAINER_STYLE","overflow","onResize","preventStyleDiffing","disableTokenWarning","visibilityConstraints","StaticMap","_getPrototypeOf2","_len","accessTokenInvalid","geometry","queryRenderedFeatures","evt","status","setState","supported","_mapbox","_width","_height","_mapboxMapRef","current","_mapboxMapError","getMap","prevProps","_updateMapStyle","_updateMapProps","finalize","setProps","href","dimensions","_dimensions$width","_dimensions$height","Consumer","interactiveContext","context","_mapContainerRef","Provider","_this$props","mapContainerStyle","constraints","constraintName","checkVisibilityConstraints","visibility","disableWidth","disableHeight","_renderOverlays","_renderNoTokenWarning","TRANSITION_EVENTS","DEFAULT_PROPS","onTransitionStart","onTransitionInterrupt","onTransitionEnd","onStateChange","TransitionManager","_animationFrame","requestAnimationFrame","_onTransitionFrame","_updateViewport","time","now","propsInTransition","_shouldIgnoreViewportChange","_isTransitionEnabled","_isTransitionInProgress","interruption","currentTime","x0","startTime","easing","y0","cropEasingFunction","_triggerTransition","_endTransition","Boolean","interpolator","arePropsEqual","_isUpdateDueToCurrentTransition","cancelAnimationFrame","getDuration","initialProps","initializeProps","interactionState","inTransition","isZooming","isPanning","isRotating","animation","_this$state","shouldEnd","interpolateProps","mapState","getViewportProps","PointerEventInput","oldHandler","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","handler","ev","store","button","predict","some","pointerId","MouseInput","eventType","pressed","which","callback","manager","pointers","changedPointers","pointerType","srcEvent","Manager","RECOGNIZERS","Rotate","enable","Pinch","Swipe","Pan","threshold","Press","Tap","taps","RECOGNIZER_COMPATIBLE_MAP","rotate","pinch","pan","doubletap","anytap","RECOGNIZER_FALLBACK_MAP","BASIC_EVENT_ALIASES","pointerdown","pointermove","pointerup","touchstart","touchmove","touchend","INPUT_EVENT_TYPES","EVENT_RECOGNIZER_MAP","tap","press","pinchin","pinchout","pinchstart","pinchmove","pinchend","pinchcancel","rotatestart","rotatemove","rotateend","rotatecancel","panstart","panmove","panup","pandown","panleft","panright","panend","pancancel","swipe","swipeleft","swiperight","swipeup","swipedown","GESTURE_EVENT_ALIASES","click","anyclick","dblclick","mouseover","mouseout","mouseleave","firefox","WHEEL_EVENTS","WheelInput","element","events","handleEvent","addEventListener","passive","removeEventListener","enabled","deltaY","WheelEvent","deltaMode","DOM_DELTA_PIXEL","devicePixelRatio","DOM_DELTA_LINE","wheelPosition","clientX","clientY","floor","shiftKey","_onWheel","delta","MOUSE_EVENTS","MoveInput","enableMoveEvent","enableLeaveEvent","enableOutEvent","enableOverEvent","handleOverEvent","handleOutEvent","handleLeaveEvent","handleMoveEvent","KEY_EVENTS","KeyInput","enableDownEvent","enableUpEvent","tabIndex","targetElement","srcElement","tagName","ContextmenuInput","DEFAULT_OPTIONS","priority","EventRegistrar","handlers","handlersByElement","_active","entries","set","entry","insertPosition","isEmpty","mjolnirEvent","_normalizeEvent","rootElement","_emit","handled","parentNode","immediatePropagationStopped","stopPropagation","stopImmediatePropagation","entriesToRemove","_entries$i","_entriesToRemove$_i","_event$srcEvent","buttons","leftButton","middleButton","rightButton","whichButtons","rect","getBoundingClientRect","offsetWidth","offsetHeight","offsetCenter","clientLeft","clientTop","getOffsetPosition","recognizers","recognizerOptions","touchAction","EventManager","_onBasicInput","_onOtherEvent","setElement","destroy","ManagerClass","recognizerName","recognizer","otherName","recognizeWith","recognizerOption","wheelInput","moveInput","keyInput","contextmenuInput","_step$value","eventAlias","eventRegistrar","_toggleRecognizer","_addEventHandler","_removeEventHandler","fallbackRecognizers","otherRecognizer","requireFailure","dropRequireFailure","enableEventType","eventName","isRecognizerUsed","values","eh","alias","NO_TRANSITION_PROPS","LINEAR_TRANSITION_PROPS","EVENT_TYPES","MapController","newState","_state","_onWheelEnd","delay","_arguments","executeNow","debounce","getMapState","_onPanStart","_onPan","_onPanEnd","_onPinchStart","_onPinch","_onPinchEnd","_onDoubleTap","_onKeyDown","_event$offsetCenter","metaKey","altKey","ctrlKey","newMapState","extraProps","extraState","oldViewport","newViewport","viewStateChanged","getInteractiveState","overrides","mapStateProps","_options$eventManager","_options$isInteractiv","isInteractive","_options$scrollZoom","scrollZoom","_options$dragPan","dragPan","_options$dragRotate","dragRotate","_options$doubleClickZ","doubleClickZoom","_options$touchZoom","touchZoom","_options$touchRotate","touchRotate","_options$keyboard","keyboard","dimensionChanged","updateViewport","_transitionManager","processViewportChange","_events","toggleEvents","eventNames","getCenter","panStart","rotateStart","isFunctionKeyPressed","_onPanRotate","_onPanMove","panEnd","rotateEnd","deltaX","centerY","startY","_this$mapState$getVie","preventDefault","zoomStart","startPinchRotation","rotation","zoomEnd","isZoomOut","funcKey","keyCode","DEPRECATED_PROPS","old","getDeprecatedText","getNewText","checkDeprecatedProps","depProp","warnMessage","warn","onInteractionStateChange","onHover","onClick","onDblClick","onContextMenu","onMouseDown","onMouseMove","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","onMouseEnter","onMouseLeave","onMouseOut","onWheel","clickRadius","interactiveLayerIds","getCursor","controller","instanceOf","onNativeClick","isHovering","InteractiveMap","isLoaded","_staticMapRef","_interactionState$isD","_updateInteractiveContext","_setControllerProps","callbackName","_onEvent","features","_this$props2","_getFeatures","point","radius","isEntering","isExiting","_this$props3","callbacks","isDoubleClickEnabled","cb","_controller","_eventManager","_eventCanvasRef","_onPointerDown","_onPointerMove","_onPointerUp","pointerleave","_onClick","wheel","contextmenu","_onViewportChange","_onInteractionStateChange","setOptions","_interactiveContext","queryParams","bbox","updatedContext","_this$props4","eventCanvasStyle","cursor","_onResize","_onLoad","deepEqual","aKeys","bKeys","_aKeys","isRequired","sourceCounter","Source","_props","_assertThisInitialize","_assertThisInitialize2","sourceOptions","_sourceOptions","changedKey","changedKeyCount","getSource","setData","updateImage","url","coordinates","setCoordinates","_createSource","_updateSource","removeSource","_loaded","addSource","_this3","child","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","beforeId","layerCounter","Layer","layerOptions","_layerOptions","getLayer","_props$layout","layout","_props$paint","paint","minzoom","maxzoom","otherProps","moveLayer","setLayoutProperty","setPaintProperty","_key2","setFilter","setLayerZoomRange","setLayerProperty","diffLayerStyles","_createLayer","_updateLayer","removeLayer","addLayer","captureScroll","captureDrag","captureClick","captureDoubleClick","BaseControl","_containerRef","_context","_onScroll","_onDragStart","_onDblClick","watch","receiver","Reflect","base","desc","draggable","onDrag","onDragEnd","onDragStart","offsetLeft","offsetTop","_BaseControl","DraggableControl","dragPos","dragOffset","_getDragEventPosition","_getDragEventOffset","_setupDragEvents","callbackEvent","_getDragLngLat","_removeDragEvents","_dragEvents","_onDrag","_onDragEnd","_onDragCancel","_event$center","_this$_getDraggedPosi2","_getDraggedPosition","crispPixel","round","crispPercentage","el","percentage","dimension","origSize","_DraggableControl","Marker","_this$_context$viewpo2","_this$_getPosition2","_getPosition","_control","containerStyle","ANCHOR_POSITION","ANCHOR_TYPES","tipSize","closeButton","closeOnClick","anchor","oneOf","dynamicPosition","sortByDepth","onClose","Popup","forceUpdate","_contentRef","selfWidth","selfHeight","_ANCHOR_POSITION$anch","anchorX","anchorY","xStep","find","positionType","anchorPosition","getDynamicPosition","clientWidth","clientHeight","xPercentage","yPercentage","zIndex","borderWidth","_getContainerStyle","_renderTip","_renderContent","FullscreenControl","isFullscreen","showButton","nextState","_mapboxFullscreenControl","_fullscreen","_onClickFullscreen","_checkFullscreenSupport","_fullscreenchange","_onFullscreenChange","label","_renderButton","positionOptions","fitBoundsOptions","trackUserLocation","showUserLocation","onGeolocate","GeolocateControl","supportsGeolocation","markerPosition","controlOptions","control","_mapboxGeolocateControl","_watchState","_geolocateButton","_geolocateButtonRef","_updateMarker","_updateCamera","_setup","trigger","coords","LngLat","accuracy","toBounds","_ne","_sw","_getBounds","_fitBounds","fitBounds","Promise","resolve","navigator","permissions","query","then","geolocation","_setupMapboxGeolocateControl","geolocationWatchID","_geolocationWatchID","clearWatch","_renderMarker","_onClickGeolocate","showCompass","showZoom","zoomInLabel","zoomOutLabel","compassLabel","getUIVersion","version1","version2","v1","v2","part1","part2","compareVersions","NavigationControl","_uiVersion","_onZoomIn","_onZoomOut","_onResetNorth","_renderCompass","maxWidth","unit","ScaleControl","mapboxScaleControl","_mapboxScaleControl","_onMove","CanvasOverlay","ctx","_ctx","pixelRatio","save","_this$_context","restore","_canvas","_redraw","_this$_context$viewpo","HTMLOverlay","SVGOverlay","setRTLTextPlugin","MapWrapper","lon","actorsLocation","useState","setViewport","nextViewport","pointerEvents","localisation","fill","Wrapper","FullHeightWrapper","NavWrapper","NavLink","to","noArrow","Question","Hint","SubTitle","FlexWrapper","HalfCard","empty","LN2","LocationMarker","default","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toInteger","toLength","toIndex","toAbsoluteIndex","toPrimitive","has","classof","toObject","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","dP","gOPD","Uint8Array","ArrayProto","$ArrayBuffer","$DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","$map","O","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","validate","C","speciesFromList","list","fromList","addGetter","internal","$from","mapfn","mapping","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","every","callbackfn","predicate","findIndex","searchElement","includes","separator","reverse","middle","comparefn","subarray","begin","$begin","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","$iterators","isTAIndex","String","$getDesc","$setDesc","F","$TypedArrayPrototype$","KEY","wrapper","CLAMPED","NAME","GETTER","SETTER","TypedArray","Base","TAC","FORCED","TypedArrayPrototype","addElement","that","getter","setter","$offset","$length","byteLength","klass","$len","l","iter","Function","$nativeIterator","CORRECT_ITER_NAME","$iterator","G","W","of","P","userAgent","passiveSupported","$isFrozen","ArrowLeft","$isExtensible","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","regexpA","RegExp","regexpB","$$typeof","count","inc","createDetectElementResize","nonce","_window","raf","attachEvent","requestFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","cancelFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","scrollTop","scrollHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","doc","ownerDocument","elementStyle","getElementById","css","getElementsByTagName","styleSheet","cssText","createTextNode","createStyles","innerHTML","__animationListener__","removeResizeListener","detachEvent","removeChild","classCallCheck","createClass","descriptor","protoProps","staticProps","possibleConstructorReturn","AutoSizer","_React$PureComponent","_temp","defaultHeight","defaultWidth","_parentNode","_style","paddingLeft","parseInt","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","_setRef","autoSizer","_autoSizer","inherits","defaultView","HTMLElement","_detectElementResize","outerStyle","childParams","bailoutOnChildren","MAX_SAFE_INTEGER","$seal","clock","Component","_class","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","contenteditable","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","objectWithoutProperties","encodeSpecialCharacters","str","encode","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","msg","_helmetCallback","commitTagChanges","baseTag","bodyAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","removeAttribute","tags","headElement","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","existingTag","isEqualNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","noscript","script","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","shouldComponentUpdate","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","Children","_child$props","initAttributes","convertReactPropstoHtmlAttributes","arrayOf","node","defaultTitle","mappedState","renderStatic","defined","quot","p1","exec","DESCRIPTORS","setToStringTag","BaseBuffer","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","$isSealed","_defineProperties","_createClass","E","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","method","deprecationMessage","stack","output","nextKey","extend","dest","merge","inherit","properties","childP","baseP","_super","boolOrFn","val","ifUndefined","val1","val2","addEventListeners","types","splitStr","removeEventListeners","hasParent","parent","inStr","trim","inArray","findByKey","toArray","uniqueArray","results","prefixed","prefix","camelProp","toUpperCase","_uniqueId","getWindowForElement","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","inputTarget","domHandler","inputHandler","input","pointersLen","changedPointersLen","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getRotation","maxPointers","velocity","velocityX","velocityY","direction","last","lastInterval","computeIntervalInputData","computeInputData","recognize","p2","atan2","evEl","evTarget","evWin","POINTER_INPUT_MAP","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchcancel","SingleTouchInput","started","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","update","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","dropRecognizeWith","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","item","stop","force","stopped","curRecognizer","existing","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"],"mappings":"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","file":"a6ce4fe2ece4c98cc63408d9f6a4d5db57b98581-190def28ac912401e08d.js","sourcesContent":["// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","var window_ = typeof window !== 'undefined' ? window : global;\nvar global_ = typeof global !== 'undefined' ? global : window;\nvar document_ = typeof document !== 'undefined' ? document : {};\nexport { window_ as window, global_ as global, document_ as document };","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.regexp.search\";\nimport \"core-js/modules/es6.regexp.match\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport PropTypes from 'prop-types';\nimport { document } from '../utils/globals';\n\nfunction noop() {}\n\nfunction defaultOnError(event) {\n if (event) {\n console.error(event.error);\n }\n}\n\nvar propTypes = {\n container: PropTypes.object,\n gl: PropTypes.object,\n mapboxApiAccessToken: PropTypes.string,\n mapboxApiUrl: PropTypes.string,\n attributionControl: PropTypes.bool,\n preserveDrawingBuffer: PropTypes.bool,\n reuseMaps: PropTypes.bool,\n transformRequest: PropTypes.func,\n mapOptions: PropTypes.object,\n mapStyle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n visible: PropTypes.bool,\n asyncRender: PropTypes.bool,\n onLoad: PropTypes.func,\n onError: PropTypes.func,\n width: PropTypes.number,\n height: PropTypes.number,\n viewState: PropTypes.object,\n longitude: PropTypes.number,\n latitude: PropTypes.number,\n zoom: PropTypes.number,\n bearing: PropTypes.number,\n pitch: PropTypes.number,\n altitude: PropTypes.number\n};\nvar defaultProps = {\n container: document.body,\n mapboxApiAccessToken: getAccessToken(),\n mapboxApiUrl: 'https://api.mapbox.com',\n preserveDrawingBuffer: false,\n attributionControl: true,\n reuseMaps: false,\n mapOptions: {},\n mapStyle: 'mapbox://styles/mapbox/light-v8',\n visible: true,\n asyncRender: false,\n onLoad: noop,\n onError: defaultOnError,\n width: 0,\n height: 0,\n longitude: 0,\n latitude: 0,\n zoom: 0,\n bearing: 0,\n pitch: 0,\n altitude: 1.5\n};\nexport function getAccessToken() {\n var accessToken = null;\n\n if (typeof window !== 'undefined' && window.location) {\n var match = window.location.search.match(/access_token=([^&\\/]*)/);\n accessToken = match && match[1];\n }\n\n if (!accessToken && typeof process !== 'undefined') {\n accessToken = accessToken || process.env.MapboxAccessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN;\n }\n\n return accessToken || 'no-token';\n}\n\nfunction checkPropTypes(props) {\n var component = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'component';\n\n if (props.debug) {\n PropTypes.checkPropTypes(propTypes, props, 'prop', component);\n }\n}\n\nvar Mapbox = function () {\n function Mapbox(props) {\n var _this = this;\n\n _classCallCheck(this, Mapbox);\n\n _defineProperty(this, \"mapboxgl\", void 0);\n\n _defineProperty(this, \"props\", defaultProps);\n\n _defineProperty(this, \"_map\", null);\n\n _defineProperty(this, \"width\", 0);\n\n _defineProperty(this, \"height\", 0);\n\n _defineProperty(this, \"_fireLoadEvent\", function () {\n _this.props.onLoad({\n type: 'load',\n target: _this._map\n });\n });\n\n if (!props.mapboxgl) {\n throw new Error('Mapbox not available');\n }\n\n this.mapboxgl = props.mapboxgl;\n\n if (!Mapbox.initialized) {\n Mapbox.initialized = true;\n\n this._checkStyleSheet(this.mapboxgl.version);\n }\n\n this._initialize(props);\n }\n\n _createClass(Mapbox, [{\n key: \"finalize\",\n value: function finalize() {\n this._destroy();\n\n return this;\n }\n }, {\n key: \"setProps\",\n value: function setProps(props) {\n this._update(this.props, props);\n\n return this;\n }\n }, {\n key: \"resize\",\n value: function resize() {\n this._map.resize();\n\n return this;\n }\n }, {\n key: \"redraw\",\n value: function redraw() {\n var map = this._map;\n\n if (map.style) {\n if (map._frame) {\n map._frame.cancel();\n\n map._frame = null;\n }\n\n map._render();\n }\n }\n }, {\n key: \"getMap\",\n value: function getMap() {\n return this._map;\n }\n }, {\n key: \"_reuse\",\n value: function _reuse(props) {\n this._map = Mapbox.savedMap;\n\n var oldContainer = this._map.getContainer();\n\n var newContainer = props.container;\n newContainer.classList.add('mapboxgl-map');\n\n while (oldContainer.childNodes.length > 0) {\n newContainer.appendChild(oldContainer.childNodes[0]);\n }\n\n this._map._container = newContainer;\n Mapbox.savedMap = null;\n\n if (props.mapStyle) {\n this._map.setStyle(props.mapStyle, {\n diff: false\n });\n }\n\n if (this._map.isStyleLoaded()) {\n this._fireLoadEvent();\n } else {\n this._map.once('styledata', this._fireLoadEvent);\n }\n }\n }, {\n key: \"_create\",\n value: function _create(props) {\n if (props.reuseMaps && Mapbox.savedMap) {\n this._reuse(props);\n } else {\n if (props.gl) {\n var getContext = HTMLCanvasElement.prototype.getContext;\n\n HTMLCanvasElement.prototype.getContext = function () {\n HTMLCanvasElement.prototype.getContext = getContext;\n return props.gl;\n };\n }\n\n var mapOptions = {\n container: props.container,\n center: [0, 0],\n zoom: 8,\n pitch: 0,\n bearing: 0,\n maxZoom: 24,\n style: props.mapStyle,\n interactive: false,\n trackResize: false,\n attributionControl: props.attributionControl,\n preserveDrawingBuffer: props.preserveDrawingBuffer\n };\n\n if (props.transformRequest) {\n mapOptions.transformRequest = props.transformRequest;\n }\n\n this._map = new this.mapboxgl.Map(Object.assign({}, mapOptions, props.mapOptions));\n\n this._map.once('load', props.onLoad);\n\n this._map.on('error', props.onError);\n }\n\n return this;\n }\n }, {\n key: \"_destroy\",\n value: function _destroy() {\n if (!this._map) {\n return;\n }\n\n if (!Mapbox.savedMap) {\n Mapbox.savedMap = this._map;\n\n this._map.off('load', this.props.onLoad);\n\n this._map.off('error', this.props.onError);\n\n this._map.off('styledata', this._fireLoadEvent);\n } else {\n this._map.remove();\n }\n\n this._map = null;\n }\n }, {\n key: \"_initialize\",\n value: function _initialize(props) {\n var _this2 = this;\n\n props = Object.assign({}, defaultProps, props);\n checkPropTypes(props, 'Mapbox');\n this.mapboxgl.accessToken = props.mapboxApiAccessToken || defaultProps.mapboxApiAccessToken;\n this.mapboxgl.baseApiUrl = props.mapboxApiUrl;\n\n this._create(props);\n\n var _props = props,\n container = _props.container;\n Object.defineProperty(container, 'offsetWidth', {\n get: function get() {\n return _this2.width;\n }\n });\n Object.defineProperty(container, 'clientWidth', {\n get: function get() {\n return _this2.width;\n }\n });\n Object.defineProperty(container, 'offsetHeight', {\n get: function get() {\n return _this2.height;\n }\n });\n Object.defineProperty(container, 'clientHeight', {\n get: function get() {\n return _this2.height;\n }\n });\n\n var canvas = this._map.getCanvas();\n\n if (canvas) {\n canvas.style.outline = 'none';\n }\n\n this._updateMapViewport({}, props);\n\n this._updateMapSize({}, props);\n\n this.props = props;\n }\n }, {\n key: \"_update\",\n value: function _update(oldProps, newProps) {\n if (!this._map) {\n return;\n }\n\n newProps = Object.assign({}, this.props, newProps);\n checkPropTypes(newProps, 'Mapbox');\n\n var viewportChanged = this._updateMapViewport(oldProps, newProps);\n\n var sizeChanged = this._updateMapSize(oldProps, newProps);\n\n if (!newProps.asyncRender && (viewportChanged || sizeChanged)) {\n this.redraw();\n }\n\n this.props = newProps;\n }\n }, {\n key: \"_updateMapSize\",\n value: function _updateMapSize(oldProps, newProps) {\n var sizeChanged = oldProps.width !== newProps.width || oldProps.height !== newProps.height;\n\n if (sizeChanged) {\n this.width = newProps.width;\n this.height = newProps.height;\n this.resize();\n }\n\n return sizeChanged;\n }\n }, {\n key: \"_updateMapViewport\",\n value: function _updateMapViewport(oldProps, newProps) {\n var oldViewState = this._getViewState(oldProps);\n\n var newViewState = this._getViewState(newProps);\n\n var viewportChanged = newViewState.latitude !== oldViewState.latitude || newViewState.longitude !== oldViewState.longitude || newViewState.zoom !== oldViewState.zoom || newViewState.pitch !== oldViewState.pitch || newViewState.bearing !== oldViewState.bearing || newViewState.altitude !== oldViewState.altitude;\n\n if (viewportChanged) {\n this._map.jumpTo(this._viewStateToMapboxProps(newViewState));\n\n if (newViewState.altitude !== oldViewState.altitude) {\n this._map.transform.altitude = newViewState.altitude;\n }\n }\n\n return viewportChanged;\n }\n }, {\n key: \"_getViewState\",\n value: function _getViewState(props) {\n var _ref = props.viewState || props,\n longitude = _ref.longitude,\n latitude = _ref.latitude,\n zoom = _ref.zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing,\n _ref$altitude = _ref.altitude,\n altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude;\n\n return {\n longitude: longitude,\n latitude: latitude,\n zoom: zoom,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude\n };\n }\n }, {\n key: \"_checkStyleSheet\",\n value: function _checkStyleSheet() {\n var mapboxVersion = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0.47.0';\n\n if (typeof document === 'undefined') {\n return;\n }\n\n try {\n var testElement = document.createElement('div');\n testElement.className = 'mapboxgl-map';\n testElement.style.display = 'none';\n document.body.append(testElement);\n var isCssLoaded = window.getComputedStyle(testElement).position !== 'static';\n\n if (!isCssLoaded) {\n var link = document.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n link.setAttribute('href', \"https://api.tiles.mapbox.com/mapbox-gl-js/v\".concat(mapboxVersion, \"/mapbox-gl.css\"));\n document.head.append(link);\n }\n } catch (error) {}\n }\n }, {\n key: \"_viewStateToMapboxProps\",\n value: function _viewStateToMapboxProps(viewState) {\n return {\n center: [viewState.longitude, viewState.latitude],\n zoom: viewState.zoom,\n bearing: viewState.bearing,\n pitch: viewState.pitch\n };\n }\n }]);\n\n return Mapbox;\n}();\n\n_defineProperty(Mapbox, \"initialized\", false);\n\n_defineProperty(Mapbox, \"propTypes\", propTypes);\n\n_defineProperty(Mapbox, \"defaultProps\", defaultProps);\n\n_defineProperty(Mapbox, \"savedMap\", null);\n\nexport { Mapbox as default };","'use strict';\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nfunction _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}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\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","// 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","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\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","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {Helmet} from 'react-helmet';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nfunction SEO({ description, lang, meta, keywords, title }) {\n const { site } = useStaticQuery(DetailsQuery);\n const metaDescription = description || site.siteMetadata.description;\n\n return (\n 0\n ? {\n name: `keywords`,\n content: keywords.join(`, `),\n }\n : []\n )\n .concat(meta)}\n />\n );\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n keywords: [],\n};\n\nSEO.propTypes = {\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n lang: PropTypes.string,\n meta: PropTypes.array,\n keywords: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default SEO;\n\nconst DetailsQuery = graphql`\n query DefaultSEOQuery {\n site {\n siteMetadata {\n title\n description\n author\n }\n }\n }\n`;\n","import React from 'react';\nimport styled from '@emotion/styled';\n\nconst StyledWrapper = styled.div`\n ${tw`max-w-4xl mx-auto p-2 self-center relative`};\n`;\n\nexport default function contentWrapper({ children }) {\n return {children};\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\n\nconst StyledCard = styled.div`\n ${tw`relative flex flex-col shadow-md rounded-lg mb-3 mt-3 bg-beige text-lg`};\n padding: 0 1rem 1rem 1rem;\n ${p => p.first && tw`mt-12`}\n h1{\n ${tw`font-title text-xl`}\n }\n h3 {\n ${tw`mb-5 text-md `};\n }\n .citation{\n ${tw`italic`}\n }\n .author{\n &:before{\n content: '- '\n }\n ${tw`block text-sm pt-4`}\n }\n`;\n\nexport default function Card({ title, children, className, first }) {\n return (\n \n {title &&

{title}

}\n {children}\n
\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}","export default function _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}","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}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _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}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _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}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\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 _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\nexport function normalizeStyle(style) {\n if (!style) {\n return null;\n }\n\n if (typeof style === 'string') {\n return style;\n }\n\n if (style.toJS) {\n style = style.toJS();\n }\n\n var layerIndex = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = style.layers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var layer = _step.value;\n layerIndex[layer.id] = layer;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var layers = style.layers.map(function (layer) {\n var layerRef = layerIndex[layer.ref];\n var normalizedLayer = null;\n\n if ('interactive' in layer) {\n normalizedLayer = _objectSpread({}, layer);\n delete normalizedLayer.interactive;\n }\n\n if (layerRef) {\n normalizedLayer = normalizedLayer || _objectSpread({}, layer);\n delete normalizedLayer.ref;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = refProps[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var propName = _step2.value;\n\n if (propName in layerRef) {\n normalizedLayer[propName] = layerRef[propName];\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return normalizedLayer || layer;\n });\n return _objectSpread({}, style, {\n layers: layers\n });\n}","export default function _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}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _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}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _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}","export default function _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}","import \"core-js/modules/es6.math.hypot\";\nimport \"core-js/modules/es6.typed.float32-array\";\n\n/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import \"core-js/modules/es6.math.hypot\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {ReadonlyVec4} result the receiving vector\r\n * @param {ReadonlyVec4} U the first vector\r\n * @param {ReadonlyVec4} V the second vector\r\n * @param {ReadonlyVec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as vec4 from 'gl-matrix/vec4';\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function transformVector(matrix, vector) {\n var result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\nexport function mod(value, divisor) {\n var modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}","import \"core-js/modules/es6.math.hypot\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {ReadonlyMat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to translate\r\n * @param {ReadonlyVec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {ReadonlyQuat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyQuat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {ReadonlyMat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","import \"core-js/modules/es6.math.hypot\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {ReadonlyVec2} a The vec2 point to rotate\r\n * @param {ReadonlyVec2} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {ReadonlyVec2} a The first operand\r\n * @param {ReadonlyVec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import \"core-js/modules/es6.math.hypot\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {ReadonlyVec3} a The first operand\r\n * @param {ReadonlyVec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport \"core-js/modules/es6.math.log2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { createMat4, transformVector } from './math-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\nvar PI = Math.PI;\nvar PI_4 = PI / 4;\nvar DEGREES_TO_RADIANS = PI / 180;\nvar RADIANS_TO_DEGREES = 180 / PI;\nvar TILE_SIZE = 512;\nvar EARTH_CIRCUMFERENCE = 40.03e6;\nvar DEFAULT_ALTITUDE = 1.5;\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\nexport function lngLatToWorld(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n lng = _ref2[0],\n lat = _ref2[1];\n\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n var lambda2 = lng * DEGREES_TO_RADIANS;\n var phi2 = lat * DEGREES_TO_RADIANS;\n var x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n var y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nexport function worldToLngLat(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n x = _ref4[0],\n y = _ref4[1];\n\n var lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n var phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nexport function getMeterZoom(_ref5) {\n var latitude = _ref5.latitude;\n assert(Number.isFinite(latitude));\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nexport function getDistanceScales(_ref6) {\n var latitude = _ref6.latitude,\n longitude = _ref6.longitude,\n _ref6$highPrecision = _ref6.highPrecision,\n highPrecision = _ref6$highPrecision === void 0 ? false : _ref6$highPrecision;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n var result = {};\n var worldSize = TILE_SIZE;\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n var unitsPerDegreeX = worldSize / 360;\n var unitsPerDegreeY = unitsPerDegreeX / latCosine;\n var altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n if (highPrecision) {\n var latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n var unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n var altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n var altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n return result;\n}\nexport function addMetersToLngLat(lngLatZ, xyz) {\n var _lngLatZ = _slicedToArray(lngLatZ, 3),\n longitude = _lngLatZ[0],\n latitude = _lngLatZ[1],\n z0 = _lngLatZ[2];\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var _getDistanceScales = getDistanceScales({\n longitude: longitude,\n latitude: latitude,\n highPrecision: true\n }),\n unitsPerMeter = _getDistanceScales.unitsPerMeter,\n unitsPerMeter2 = _getDistanceScales.unitsPerMeter2;\n\n var worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n var newLngLat = worldToLngLat(worldspace);\n var newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nexport function getViewMatrix(_ref7) {\n var height = _ref7.height,\n pitch = _ref7.pitch,\n bearing = _ref7.bearing,\n altitude = _ref7.altitude,\n scale = _ref7.scale,\n _ref7$center = _ref7.center,\n center = _ref7$center === void 0 ? null : _ref7$center;\n var vm = createMat4();\n mat4.translate(vm, vm, [0, 0, -altitude]);\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\nexport function getProjectionParameters(_ref8) {\n var width = _ref8.width,\n height = _ref8.height,\n _ref8$altitude = _ref8.altitude,\n altitude = _ref8$altitude === void 0 ? DEFAULT_ALTITUDE : _ref8$altitude,\n _ref8$pitch = _ref8.pitch,\n pitch = _ref8$pitch === void 0 ? 0 : _ref8$pitch,\n _ref8$nearZMultiplier = _ref8.nearZMultiplier,\n nearZMultiplier = _ref8$nearZMultiplier === void 0 ? 1 : _ref8$nearZMultiplier,\n _ref8$farZMultiplier = _ref8.farZMultiplier,\n farZMultiplier = _ref8$farZMultiplier === void 0 ? 1 : _ref8$farZMultiplier;\n var pitchRadians = pitch * DEGREES_TO_RADIANS;\n var halfFov = Math.atan(0.5 / altitude);\n var topHalfSurfaceDistance = Math.sin(halfFov) * altitude / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n var farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\nexport function getProjectionMatrix(_ref9) {\n var width = _ref9.width,\n height = _ref9.height,\n pitch = _ref9.pitch,\n altitude = _ref9.altitude,\n nearZMultiplier = _ref9.nearZMultiplier,\n farZMultiplier = _ref9.farZMultiplier;\n\n var _getProjectionParamet = getProjectionParameters({\n width: width,\n height: height,\n altitude: altitude,\n pitch: pitch,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n }),\n fov = _getProjectionParamet.fov,\n aspect = _getProjectionParamet.aspect,\n near = _getProjectionParamet.near,\n far = _getProjectionParamet.far;\n\n var projectionMatrix = mat4.perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n var _xyz2 = _slicedToArray(xyz, 3),\n x = _xyz2[0],\n y = _xyz2[1],\n _xyz2$ = _xyz2[2],\n z = _xyz2$ === void 0 ? 0 : _xyz2$;\n\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix) {\n var targetZ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var _xyz3 = _slicedToArray(xyz, 3),\n x = _xyz3[0],\n y = _xyz3[1],\n z = _xyz3[2];\n\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n var coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n var coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n var coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n var z0 = coord0[2];\n var z1 = coord1[2];\n var t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport \"core-js/modules/es6.function.bind\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { createMat4 } from './math-utils';\nimport { worldToPixels, pixelsToWorld } from './web-mercator-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nvar IDENTITY = createMat4();\n\nvar Viewport = function () {\n function Viewport() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n scale = _ref.scale,\n _ref$viewMatrix = _ref.viewMatrix,\n viewMatrix = _ref$viewMatrix === void 0 ? IDENTITY : _ref$viewMatrix,\n _ref$projectionMatrix = _ref.projectionMatrix,\n projectionMatrix = _ref$projectionMatrix === void 0 ? IDENTITY : _ref$projectionMatrix;\n\n _classCallCheck(this, Viewport);\n\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n var vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n var m = createMat4();\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n mat4.multiply(m, m, this.viewProjectionMatrix);\n var mInverse = mat4.invert(createMat4(), m);\n\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n _createClass(Viewport, [{\n key: \"equals\",\n value: function equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return viewport.width === this.width && viewport.height === this.height && mat4.equals(viewport.projectionMatrix, this.projectionMatrix) && mat4.equals(viewport.viewMatrix, this.viewMatrix);\n }\n }, {\n key: \"project\",\n value: function project(xyz) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$topLeft = _ref2.topLeft,\n topLeft = _ref2$topLeft === void 0 ? true : _ref2$topLeft;\n\n var worldPosition = this.projectPosition(xyz);\n var coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n var _coord = _slicedToArray(coord, 2),\n x = _coord[0],\n y = _coord[1];\n\n var y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n }, {\n key: \"unproject\",\n value: function unproject(xyz) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$topLeft = _ref3.topLeft,\n topLeft = _ref3$topLeft === void 0 ? true : _ref3$topLeft,\n targetZ = _ref3.targetZ;\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var y2 = topLeft ? y : this.height - y;\n var targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n var coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n\n var _this$unprojectPositi = this.unprojectPosition(coord),\n _this$unprojectPositi2 = _slicedToArray(_this$unprojectPositi, 3),\n X = _this$unprojectPositi2[0],\n Y = _this$unprojectPositi2[1],\n Z = _this$unprojectPositi2[2];\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n }, {\n key: \"projectPosition\",\n value: function projectPosition(xyz) {\n var _this$projectFlat = this.projectFlat(xyz),\n _this$projectFlat2 = _slicedToArray(_this$projectFlat, 2),\n X = _this$projectFlat2[0],\n Y = _this$projectFlat2[1];\n\n var Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"unprojectPosition\",\n value: function unprojectPosition(xyz) {\n var _this$unprojectFlat = this.unprojectFlat(xyz),\n _this$unprojectFlat2 = _slicedToArray(_this$unprojectFlat, 2),\n X = _this$unprojectFlat2[0],\n Y = _this$unprojectFlat2[1];\n\n var Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"projectFlat\",\n value: function projectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }]);\n\n return Viewport;\n}();\n\nexport { Viewport as default };","import \"core-js/modules/es6.math.log2\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\nexport default function fitBounds(_ref) {\n var width = _ref.width,\n height = _ref.height,\n bounds = _ref.bounds,\n _ref$minExtent = _ref.minExtent,\n minExtent = _ref$minExtent === void 0 ? 0 : _ref$minExtent,\n _ref$maxZoom = _ref.maxZoom,\n maxZoom = _ref$maxZoom === void 0 ? 24 : _ref$maxZoom,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 0 : _ref$padding,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? [0, 0] : _ref$offset;\n\n var _bounds = _slicedToArray(bounds, 2),\n _bounds$ = _slicedToArray(_bounds[0], 2),\n west = _bounds$[0],\n south = _bounds$[1],\n _bounds$2 = _slicedToArray(_bounds[1], 2),\n east = _bounds$2[0],\n north = _bounds$2[1];\n\n if (Number.isFinite(padding)) {\n var p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n assert(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n }\n\n var viewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n var nw = viewport.project([west, north]);\n var se = viewport.project([east, south]);\n var size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n var targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n var scaleX = targetSize[0] / size[0];\n var scaleY = targetSize[1] / size[1];\n var offsetX = (padding.right - padding.left) / 2 / scaleX;\n var offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n var center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n var centerLngLat = viewport.unproject(center);\n var zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n assert(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom: zoom\n };\n}","import \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.freeze\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport Viewport from './viewport';\nimport { zoomToScale, pixelsToWorld, lngLatToWorld, worldToLngLat, getProjectionMatrix, getDistanceScales, getViewMatrix } from './web-mercator-utils';\nimport _fitBounds from './fit-bounds';\nimport * as vec2 from 'gl-matrix/vec2';\n\nvar WebMercatorViewport = function (_Viewport) {\n _inherits(WebMercatorViewport, _Viewport);\n\n function WebMercatorViewport() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$latitude = _ref.latitude,\n latitude = _ref$latitude === void 0 ? 0 : _ref$latitude,\n _ref$longitude = _ref.longitude,\n longitude = _ref$longitude === void 0 ? 0 : _ref$longitude,\n _ref$zoom = _ref.zoom,\n zoom = _ref$zoom === void 0 ? 0 : _ref$zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing,\n _ref$altitude = _ref.altitude,\n altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude,\n _ref$nearZMultiplier = _ref.nearZMultiplier,\n nearZMultiplier = _ref$nearZMultiplier === void 0 ? 0.02 : _ref$nearZMultiplier,\n _ref$farZMultiplier = _ref.farZMultiplier,\n farZMultiplier = _ref$farZMultiplier === void 0 ? 1.01 : _ref$farZMultiplier;\n\n _classCallCheck(this, WebMercatorViewport);\n\n width = width || 1;\n height = height || 1;\n var scale = zoomToScale(zoom);\n altitude = Math.max(0.75, altitude);\n var center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n var projectionMatrix = getProjectionMatrix({\n width: width,\n height: height,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n });\n var viewMatrix = getViewMatrix({\n height: height,\n scale: scale,\n center: center,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude\n });\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WebMercatorViewport).call(this, {\n width: width,\n height: height,\n scale: scale,\n viewMatrix: viewMatrix,\n projectionMatrix: projectionMatrix\n }));\n _this.latitude = latitude;\n _this.longitude = longitude;\n _this.zoom = zoom;\n _this.pitch = pitch;\n _this.bearing = bearing;\n _this.altitude = altitude;\n _this.center = center;\n _this.unitsPerMeter = getDistanceScales(_assertThisInitialized(_this)).unitsPerMeter[2];\n Object.freeze(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(WebMercatorViewport, [{\n key: \"projectFlat\",\n value: function projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n }, {\n key: \"getMapCenterByLngLatPosition\",\n value: function getMapCenterByLngLatPosition(_ref2) {\n var lngLat = _ref2.lngLat,\n pos = _ref2.pos;\n var fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n var toLocation = lngLatToWorld(lngLat);\n var translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n var newCenter = vec2.add([], this.center, translate);\n return worldToLngLat(newCenter, this.scale);\n }\n }, {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(_ref3) {\n var lngLat = _ref3.lngLat,\n pos = _ref3.pos;\n return this.getMapCenterByLngLatPosition({\n lngLat: lngLat,\n pos: pos\n });\n }\n }, {\n key: \"fitBounds\",\n value: function fitBounds(bounds) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = this.width,\n height = this.height;\n\n var _fitBounds2 = _fitBounds(Object.assign({\n width: width,\n height: height,\n bounds: bounds\n }, options)),\n longitude = _fitBounds2.longitude,\n latitude = _fitBounds2.latitude,\n zoom = _fitBounds2.zoom;\n\n return new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n }]);\n\n return WebMercatorViewport;\n}(Viewport);\n\nexport { WebMercatorViewport as default };","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.math.sinh\";\nimport \"core-js/modules/es6.math.tanh\";\nimport \"core-js/modules/es6.math.cosh\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport { lerp } from './math-utils';\nimport { scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nvar EPSILON = 0.01;\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nvar DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nexport default function flyToViewport(startProps, endProps, t) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var viewport = {};\n\n var _getFlyToTransitionPa = getFlyToTransitionParams(startProps, endProps, opts),\n startZoom = _getFlyToTransitionPa.startZoom,\n startCenterXY = _getFlyToTransitionPa.startCenterXY,\n uDelta = _getFlyToTransitionPa.uDelta,\n w0 = _getFlyToTransitionPa.w0,\n u1 = _getFlyToTransitionPa.u1,\n S = _getFlyToTransitionPa.S,\n rho = _getFlyToTransitionPa.rho,\n rho2 = _getFlyToTransitionPa.rho2,\n r0 = _getFlyToTransitionPa.r0;\n\n if (u1 < EPSILON) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = VIEWPORT_TRANSITION_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var startValue = startProps[key];\n var endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return viewport;\n }\n\n var s = t * S;\n var w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n var u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n var scaleIncrement = 1 / w;\n var newZoom = startZoom + scaleToZoom(scaleIncrement);\n var newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n var newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\nexport function getFlyToDuration(startProps, endProps) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n var _opts = opts,\n screenSpeed = _opts.screenSpeed,\n speed = _opts.speed,\n maxDuration = _opts.maxDuration;\n\n var _getFlyToTransitionPa2 = getFlyToTransitionParams(startProps, endProps, opts),\n S = _getFlyToTransitionPa2.S,\n rho = _getFlyToTransitionPa2.rho;\n\n var length = 1000 * S;\n var duration;\n\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n var rho = opts.curve;\n var startZoom = startProps.zoom;\n var startCenter = [startProps.longitude, startProps.latitude];\n var startScale = zoomToScale(startZoom);\n var endZoom = endProps.zoom;\n var endCenter = [endProps.longitude, endProps.latitude];\n var scale = zoomToScale(endZoom - startZoom);\n var startCenterXY = lngLatToWorld(startCenter);\n var endCenterXY = lngLatToWorld(endCenter);\n var uDelta = vec2.sub([], endCenterXY, startCenterXY);\n var w0 = Math.max(startProps.width, startProps.height);\n var w1 = w0 / scale;\n var u1 = vec2.length(uDelta) * startScale;\n\n var _u1 = Math.max(u1, EPSILON);\n\n var rho2 = rho * rho;\n var b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n var b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n var r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n var r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n var S = (r1 - r0) / rho;\n return {\n startZoom: startZoom,\n startCenterXY: startCenterXY,\n uDelta: uDelta,\n w0: w0,\n u1: u1,\n S: S,\n rho: rho,\n rho2: rho2,\n r0: r0,\n r1: r1\n };\n}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.is-array\";\nvar EPSILON = 1e-7;\n\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return Math.abs(a - b) <= EPSILON;\n}\nexport function clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map(function (ai, i) {\n return lerp(ai, b[i], t);\n });\n }\n\n return t * b + (1 - t) * a;\n}","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'react-map-gl: assertion failed.');\n }\n}","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { equals } from '../math-utils';\nimport assert from '../assert';\n\nvar TransitionInterpolator = function () {\n function TransitionInterpolator() {\n _classCallCheck(this, TransitionInterpolator);\n\n _defineProperty(this, \"propNames\", []);\n }\n\n _createClass(TransitionInterpolator, [{\n key: \"arePropsEqual\",\n value: function arePropsEqual(currentProps, nextProps) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (this.propNames || [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!equals(currentProps[key], nextProps[key])) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return true;\n }\n }, {\n key: \"initializeProps\",\n value: function initializeProps(startProps, endProps) {\n return {\n start: startProps,\n end: endProps\n };\n }\n }, {\n key: \"interpolateProps\",\n value: function interpolateProps(startProps, endProps, t) {\n assert(false, 'interpolateProps is not implemented');\n }\n }, {\n key: \"getDuration\",\n value: function getDuration(startProps, endProps) {\n return endProps.transitionDuration;\n }\n }]);\n\n return TransitionInterpolator;\n}();\n\nexport { TransitionInterpolator as default };","import \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nvar WRAPPED_ANGULAR_PROPS = {\n longitude: 1,\n bearing: 1\n};\nexport function mod(value, divisor) {\n var modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function isValid(prop) {\n return Number.isFinite(prop) || Array.isArray(prop);\n}\n\nfunction isWrappedAngularProp(propName) {\n return propName in WRAPPED_ANGULAR_PROPS;\n}\n\nexport function getEndValueByShortestPath(propName, startValue, endValue) {\n if (isWrappedAngularProp(propName) && Math.abs(endValue - startValue) > 180) {\n endValue = endValue < 0 ? endValue + 360 : endValue - 360;\n }\n\n return endValue;\n}","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\nimport { flyToViewport, getFlyToDuration } from 'viewport-mercator-project';\nimport { isValid, getEndValueByShortestPath } from './transition-utils';\nimport { lerp } from '../math-utils';\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nvar REQUIRED_PROPS = ['latitude', 'longitude', 'zoom', 'width', 'height'];\nvar LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch'];\nvar DEFAULT_OPTS = {\n speed: 1.2,\n curve: 1.414\n};\n\nvar ViewportFlyToInterpolator = function (_TransitionInterpolat) {\n _inherits(ViewportFlyToInterpolator, _TransitionInterpolat);\n\n function ViewportFlyToInterpolator() {\n var _this;\n\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, ViewportFlyToInterpolator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ViewportFlyToInterpolator).call(this));\n\n _defineProperty(_assertThisInitialized(_this), \"speed\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"propNames\", VIEWPORT_TRANSITION_PROPS);\n\n _defineProperty(_assertThisInitialized(_this), \"props\", void 0);\n\n _this.props = Object.assign({}, DEFAULT_OPTS, props);\n return _this;\n }\n\n _createClass(ViewportFlyToInterpolator, [{\n key: \"initializeProps\",\n value: function initializeProps(startProps, endProps) {\n var startViewportProps = {};\n var endViewportProps = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = REQUIRED_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var startValue = startProps[key];\n var endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), \"\".concat(key, \" must be supplied for transition\"));\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = LINEARLY_INTERPOLATED_PROPS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n var _startValue = startProps[_key] || 0;\n\n var _endValue = endProps[_key] || 0;\n\n startViewportProps[_key] = _startValue;\n endViewportProps[_key] = getEndValueByShortestPath(_key, _startValue, _endValue);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n }, {\n key: \"interpolateProps\",\n value: function interpolateProps(startProps, endProps, t) {\n var viewport = flyToViewport(startProps, endProps, t, this.props);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = LINEARLY_INTERPOLATED_PROPS[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return viewport;\n }\n }, {\n key: \"getDuration\",\n value: function getDuration(startProps, endProps) {\n var transitionDuration = endProps.transitionDuration;\n\n if (transitionDuration === 'auto') {\n transitionDuration = getFlyToDuration(startProps, endProps, this.props);\n }\n\n return transitionDuration;\n }\n }]);\n\n return ViewportFlyToInterpolator;\n}(TransitionInterpolator);\n\nexport { ViewportFlyToInterpolator as default };","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.is-array\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\nimport { isValid, getEndValueByShortestPath } from './transition-utils';\nimport { lerp } from '../math-utils';\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\n\nvar LinearInterpolator = function (_TransitionInterpolat) {\n _inherits(LinearInterpolator, _TransitionInterpolat);\n\n function LinearInterpolator() {\n var _this;\n\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, LinearInterpolator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LinearInterpolator).call(this));\n\n _defineProperty(_assertThisInitialized(_this), \"around\", void 0);\n\n if (Array.isArray(opts)) {\n opts = {\n transitionProps: opts\n };\n }\n\n _this.propNames = opts.transitionProps || VIEWPORT_TRANSITION_PROPS;\n\n if (opts.around) {\n _this.around = opts.around;\n }\n\n return _this;\n }\n\n _createClass(LinearInterpolator, [{\n key: \"initializeProps\",\n value: function initializeProps(startProps, endProps) {\n var startViewportProps = {};\n var endViewportProps = {};\n\n if (this.around) {\n startViewportProps.around = this.around;\n var aroundLngLat = new WebMercatorViewport(startProps).unproject(this.around);\n Object.assign(endViewportProps, endProps, {\n around: new WebMercatorViewport(endProps).project(aroundLngLat),\n aroundLngLat: aroundLngLat\n });\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.propNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var startValue = startProps[key];\n var endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), \"\".concat(key, \" must be supplied for transition\"));\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n }, {\n key: \"interpolateProps\",\n value: function interpolateProps(startProps, endProps, t) {\n var viewport = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = this.propNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (endProps.around) {\n var _getMapCenterByLngLat = new WebMercatorViewport(Object.assign({}, endProps, viewport)).getMapCenterByLngLatPosition({\n lngLat: endProps.aroundLngLat,\n pos: lerp(startProps.around, endProps.around, t)\n }),\n _getMapCenterByLngLat2 = _slicedToArray(_getMapCenterByLngLat, 2),\n longitude = _getMapCenterByLngLat2[0],\n latitude = _getMapCenterByLngLat2[1];\n\n viewport.longitude = longitude;\n viewport.latitude = latitude;\n }\n\n return viewport;\n }\n }]);\n\n return LinearInterpolator;\n}(TransitionInterpolator);\n\nexport { LinearInterpolator as default };","import \"core-js/modules/es6.math.log2\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport WebMercatorViewport, { normalizeViewportProps } from 'viewport-mercator-project';\nimport { TransitionInterpolator } from './transition';\nimport { clamp } from './math-utils';\nimport assert from './assert';\nexport var MAPBOX_LIMITS = {\n minZoom: 0,\n maxZoom: 24,\n minPitch: 0,\n maxPitch: 60\n};\nvar DEFAULT_STATE = {\n pitch: 0,\n bearing: 0,\n altitude: 1.5\n};\n\nvar MapState = function () {\n function MapState(_ref) {\n var width = _ref.width,\n height = _ref.height,\n latitude = _ref.latitude,\n longitude = _ref.longitude,\n zoom = _ref.zoom,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? DEFAULT_STATE.bearing : _ref$bearing,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? DEFAULT_STATE.pitch : _ref$pitch,\n _ref$altitude = _ref.altitude,\n altitude = _ref$altitude === void 0 ? DEFAULT_STATE.altitude : _ref$altitude,\n _ref$maxZoom = _ref.maxZoom,\n maxZoom = _ref$maxZoom === void 0 ? MAPBOX_LIMITS.maxZoom : _ref$maxZoom,\n _ref$minZoom = _ref.minZoom,\n minZoom = _ref$minZoom === void 0 ? MAPBOX_LIMITS.minZoom : _ref$minZoom,\n _ref$maxPitch = _ref.maxPitch,\n maxPitch = _ref$maxPitch === void 0 ? MAPBOX_LIMITS.maxPitch : _ref$maxPitch,\n _ref$minPitch = _ref.minPitch,\n minPitch = _ref$minPitch === void 0 ? MAPBOX_LIMITS.minPitch : _ref$minPitch,\n transitionDuration = _ref.transitionDuration,\n transitionEasing = _ref.transitionEasing,\n transitionInterpolator = _ref.transitionInterpolator,\n transitionInterruption = _ref.transitionInterruption,\n startPanLngLat = _ref.startPanLngLat,\n startZoomLngLat = _ref.startZoomLngLat,\n startBearing = _ref.startBearing,\n startPitch = _ref.startPitch,\n startZoom = _ref.startZoom;\n\n _classCallCheck(this, MapState);\n\n _defineProperty(this, \"_viewportProps\", void 0);\n\n _defineProperty(this, \"_interactiveState\", void 0);\n\n assert(Number.isFinite(width), '`width` must be supplied');\n assert(Number.isFinite(height), '`height` must be supplied');\n assert(Number.isFinite(longitude), '`longitude` must be supplied');\n assert(Number.isFinite(latitude), '`latitude` must be supplied');\n assert(Number.isFinite(zoom), '`zoom` must be supplied');\n this._viewportProps = this._applyConstraints({\n width: width,\n height: height,\n latitude: latitude,\n longitude: longitude,\n zoom: zoom,\n bearing: bearing,\n pitch: pitch,\n altitude: altitude,\n maxZoom: maxZoom,\n minZoom: minZoom,\n maxPitch: maxPitch,\n minPitch: minPitch,\n transitionDuration: transitionDuration,\n transitionEasing: transitionEasing,\n transitionInterpolator: transitionInterpolator,\n transitionInterruption: transitionInterruption\n });\n this._interactiveState = {\n startPanLngLat: startPanLngLat,\n startZoomLngLat: startZoomLngLat,\n startBearing: startBearing,\n startPitch: startPitch,\n startZoom: startZoom\n };\n }\n\n _createClass(MapState, [{\n key: \"getViewportProps\",\n value: function getViewportProps() {\n return this._viewportProps;\n }\n }, {\n key: \"getInteractiveState\",\n value: function getInteractiveState() {\n return this._interactiveState;\n }\n }, {\n key: \"panStart\",\n value: function panStart(_ref2) {\n var pos = _ref2.pos;\n return this._getUpdatedMapState({\n startPanLngLat: this._unproject(pos)\n });\n }\n }, {\n key: \"pan\",\n value: function pan(_ref3) {\n var pos = _ref3.pos,\n startPos = _ref3.startPos;\n\n var startPanLngLat = this._interactiveState.startPanLngLat || this._unproject(startPos);\n\n if (!startPanLngLat) {\n return this;\n }\n\n var _this$_calculateNewLn = this._calculateNewLngLat({\n startPanLngLat: startPanLngLat,\n pos: pos\n }),\n _this$_calculateNewLn2 = _slicedToArray(_this$_calculateNewLn, 2),\n longitude = _this$_calculateNewLn2[0],\n latitude = _this$_calculateNewLn2[1];\n\n return this._getUpdatedMapState({\n longitude: longitude,\n latitude: latitude\n });\n }\n }, {\n key: \"panEnd\",\n value: function panEnd() {\n return this._getUpdatedMapState({\n startPanLngLat: null\n });\n }\n }, {\n key: \"rotateStart\",\n value: function rotateStart(_ref4) {\n var pos = _ref4.pos;\n return this._getUpdatedMapState({\n startBearing: this._viewportProps.bearing,\n startPitch: this._viewportProps.pitch\n });\n }\n }, {\n key: \"rotate\",\n value: function rotate(_ref5) {\n var _ref5$deltaScaleX = _ref5.deltaScaleX,\n deltaScaleX = _ref5$deltaScaleX === void 0 ? 0 : _ref5$deltaScaleX,\n _ref5$deltaScaleY = _ref5.deltaScaleY,\n deltaScaleY = _ref5$deltaScaleY === void 0 ? 0 : _ref5$deltaScaleY;\n var _this$_interactiveSta = this._interactiveState,\n startBearing = _this$_interactiveSta.startBearing,\n startPitch = _this$_interactiveSta.startPitch;\n\n if (!Number.isFinite(startBearing) || !Number.isFinite(startPitch)) {\n return this;\n }\n\n var _this$_calculateNewPi = this._calculateNewPitchAndBearing({\n deltaScaleX: deltaScaleX,\n deltaScaleY: deltaScaleY,\n startBearing: startBearing || 0,\n startPitch: startPitch || 0\n }),\n pitch = _this$_calculateNewPi.pitch,\n bearing = _this$_calculateNewPi.bearing;\n\n return this._getUpdatedMapState({\n bearing: bearing,\n pitch: pitch\n });\n }\n }, {\n key: \"rotateEnd\",\n value: function rotateEnd() {\n return this._getUpdatedMapState({\n startBearing: null,\n startPitch: null\n });\n }\n }, {\n key: \"zoomStart\",\n value: function zoomStart(_ref6) {\n var pos = _ref6.pos;\n return this._getUpdatedMapState({\n startZoomLngLat: this._unproject(pos),\n startZoom: this._viewportProps.zoom\n });\n }\n }, {\n key: \"zoom\",\n value: function zoom(_ref7) {\n var pos = _ref7.pos,\n startPos = _ref7.startPos,\n scale = _ref7.scale;\n assert(scale > 0, '`scale` must be a positive number');\n var _this$_interactiveSta2 = this._interactiveState,\n startZoom = _this$_interactiveSta2.startZoom,\n startZoomLngLat = _this$_interactiveSta2.startZoomLngLat;\n\n if (!Number.isFinite(startZoom)) {\n startZoom = this._viewportProps.zoom;\n startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n }\n\n assert(startZoomLngLat, '`startZoomLngLat` prop is required ' + 'for zoom behavior to calculate where to position the map.');\n\n var zoom = this._calculateNewZoom({\n scale: scale,\n startZoom: startZoom || 0\n });\n\n var zoomedViewport = new WebMercatorViewport(Object.assign({}, this._viewportProps, {\n zoom: zoom\n }));\n\n var _zoomedViewport$getMa = zoomedViewport.getMapCenterByLngLatPosition({\n lngLat: startZoomLngLat,\n pos: pos\n }),\n _zoomedViewport$getMa2 = _slicedToArray(_zoomedViewport$getMa, 2),\n longitude = _zoomedViewport$getMa2[0],\n latitude = _zoomedViewport$getMa2[1];\n\n return this._getUpdatedMapState({\n zoom: zoom,\n longitude: longitude,\n latitude: latitude\n });\n }\n }, {\n key: \"zoomEnd\",\n value: function zoomEnd() {\n return this._getUpdatedMapState({\n startZoomLngLat: null,\n startZoom: null\n });\n }\n }, {\n key: \"_getUpdatedMapState\",\n value: function _getUpdatedMapState(newProps) {\n return new MapState(Object.assign({}, this._viewportProps, this._interactiveState, newProps));\n }\n }, {\n key: \"_applyConstraints\",\n value: function _applyConstraints(props) {\n var maxZoom = props.maxZoom,\n minZoom = props.minZoom,\n zoom = props.zoom;\n props.zoom = clamp(zoom, minZoom, maxZoom);\n var maxPitch = props.maxPitch,\n minPitch = props.minPitch,\n pitch = props.pitch;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n Object.assign(props, normalizeViewportProps(props));\n return props;\n }\n }, {\n key: \"_unproject\",\n value: function _unproject(pos) {\n var viewport = new WebMercatorViewport(this._viewportProps);\n return pos && viewport.unproject(pos);\n }\n }, {\n key: \"_calculateNewLngLat\",\n value: function _calculateNewLngLat(_ref8) {\n var startPanLngLat = _ref8.startPanLngLat,\n pos = _ref8.pos;\n var viewport = new WebMercatorViewport(this._viewportProps);\n return viewport.getMapCenterByLngLatPosition({\n lngLat: startPanLngLat,\n pos: pos\n });\n }\n }, {\n key: \"_calculateNewZoom\",\n value: function _calculateNewZoom(_ref9) {\n var scale = _ref9.scale,\n startZoom = _ref9.startZoom;\n var _this$_viewportProps = this._viewportProps,\n maxZoom = _this$_viewportProps.maxZoom,\n minZoom = _this$_viewportProps.minZoom;\n var zoom = startZoom + Math.log2(scale);\n return clamp(zoom, minZoom, maxZoom);\n }\n }, {\n key: \"_calculateNewPitchAndBearing\",\n value: function _calculateNewPitchAndBearing(_ref10) {\n var deltaScaleX = _ref10.deltaScaleX,\n deltaScaleY = _ref10.deltaScaleY,\n startBearing = _ref10.startBearing,\n startPitch = _ref10.startPitch;\n deltaScaleY = clamp(deltaScaleY, -1, 1);\n var _this$_viewportProps2 = this._viewportProps,\n minPitch = _this$_viewportProps2.minPitch,\n maxPitch = _this$_viewportProps2.maxPitch;\n var bearing = startBearing + 180 * deltaScaleX;\n var pitch = startPitch;\n\n if (deltaScaleY > 0) {\n pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n } else if (deltaScaleY < 0) {\n pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n }\n\n return {\n pitch: pitch,\n bearing: bearing\n };\n }\n }]);\n\n return MapState;\n}();\n\nexport { MapState as default };","import \"core-js/modules/es6.math.log2\";\nimport WebMercatorViewport from './web-mercator-viewport';\nimport { mod } from './math-utils';\nvar MAX_LATITUDE = 85.05113;\nvar MIN_LATITUDE = -85.05113;\nexport default function normalizeViewportProps(_ref) {\n var width = _ref.width,\n height = _ref.height,\n longitude = _ref.longitude,\n latitude = _ref.latitude,\n zoom = _ref.zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing;\n\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n var flatViewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n var topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n var bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n var shiftY = 0;\n\n if (bottomY - topY < height) {\n zoom += Math.log2(height / (bottomY - topY));\n flatViewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n }\n\n if (topY > 0) {\n shiftY = topY;\n } else if (bottomY < height) {\n shiftY = bottomY - height;\n }\n\n if (shiftY) {\n latitude = flatViewport.unproject([width / 2, height / 2 + shiftY])[1];\n }\n\n return {\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom,\n pitch: pitch,\n bearing: bearing\n };\n}","import { MAPBOX_LIMITS } from './map-state';\n\nfunction decapitalize(s) {\n return s[0].toLowerCase() + s.slice(1);\n}\n\nexport function checkVisibilityConstraints(props) {\n var constraints = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : MAPBOX_LIMITS;\n\n for (var constraintName in constraints) {\n var type = constraintName.slice(0, 3);\n var propName = decapitalize(constraintName.slice(3));\n\n if (type === 'min' && props[propName] < constraints[constraintName]) {\n return false;\n }\n\n if (type === 'max' && props[propName] > constraints[constraintName]) {\n return false;\n }\n }\n\n return true;\n}","import { createContext } from 'react';\nexport default createContext({\n viewport: null,\n map: null,\n mapContainer: null,\n onViewportChange: null,\n onViewStateChange: null,\n eventManager: null,\n isDragging: false\n});","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.number.is-finite\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.symbol\";\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 _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport { PureComponent, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { normalizeStyle } from '../utils/style-utils';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport Mapbox from '../mapbox/mapbox';\nimport mapboxgl from '../utils/mapboxgl';\nimport { checkVisibilityConstraints } from '../utils/map-constraints';\nimport { MAPBOX_LIMITS } from '../utils/map-state';\nimport MapContext from './map-context';\nvar TOKEN_DOC_URL = 'https://uber.github.io/react-map-gl/docs/get-started/mapbox-tokens';\nvar NO_TOKEN_WARNING = 'A valid API access token is required to use Mapbox data';\n\nfunction noop() {}\n\nvar UNAUTHORIZED_ERROR_CODE = 401;\nvar CONTAINER_STYLE = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n};\nvar propTypes = Object.assign({}, Mapbox.propTypes, {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onResize: PropTypes.func,\n preventStyleDiffing: PropTypes.bool,\n disableTokenWarning: PropTypes.bool,\n visible: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n visibilityConstraints: PropTypes.object\n});\nvar defaultProps = Object.assign({}, Mapbox.defaultProps, {\n preventStyleDiffing: false,\n disableTokenWarning: false,\n visible: true,\n onResize: noop,\n className: '',\n style: null,\n visibilityConstraints: MAPBOX_LIMITS\n});\n\nvar StaticMap = function (_PureComponent) {\n _inherits(StaticMap, _PureComponent);\n\n function StaticMap() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, StaticMap);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StaticMap)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n accessTokenInvalid: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_mapbox\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_map\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_mapboxMapRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_mapContainerRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_queryParams\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_width\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_height\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getMap\", function () {\n return _this._map;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"queryRenderedFeatures\", function (geometry) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _this._map.queryRenderedFeatures(geometry, options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_mapboxMapError\", function (evt) {\n var statusCode = evt.error && evt.error.status || evt.status;\n\n if (statusCode === UNAUTHORIZED_ERROR_CODE && !_this.state.accessTokenInvalid) {\n console.error(NO_TOKEN_WARNING);\n\n _this.setState({\n accessTokenInvalid: true\n });\n }\n\n _this.props.onError(evt);\n });\n\n return _this;\n }\n\n _createClass(StaticMap, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!StaticMap.supported()) {\n return;\n }\n\n var mapStyle = this.props.mapStyle;\n this._mapbox = new Mapbox(Object.assign({}, this.props, {\n mapboxgl: mapboxgl,\n width: this._width,\n height: this._height,\n container: this._mapboxMapRef.current,\n onError: this._mapboxMapError,\n mapStyle: normalizeStyle(mapStyle)\n }));\n this._map = this._mapbox.getMap();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this._mapbox) {\n this._updateMapStyle(prevProps, this.props);\n\n this._updateMapProps(this.props);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._mapbox) {\n this._mapbox.finalize();\n\n this._mapbox = null;\n this._map = null;\n }\n }\n }, {\n key: \"_updateMapSize\",\n value: function _updateMapSize(width, height) {\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n\n this._updateMapProps(this.props);\n }\n }\n }, {\n key: \"_updateMapStyle\",\n value: function _updateMapStyle(oldProps, newProps) {\n var mapStyle = newProps.mapStyle;\n var oldMapStyle = oldProps.mapStyle;\n\n if (mapStyle !== oldMapStyle && mapStyle) {\n this._map.setStyle(normalizeStyle(mapStyle), {\n diff: !this.props.preventStyleDiffing\n });\n }\n }\n }, {\n key: \"_updateMapProps\",\n value: function _updateMapProps(props) {\n if (!this._mapbox) {\n return;\n }\n\n this._mapbox.setProps(Object.assign({}, props, {\n width: this._width,\n height: this._height\n }));\n }\n }, {\n key: \"_renderNoTokenWarning\",\n value: function _renderNoTokenWarning() {\n if (this.state.accessTokenInvalid && !this.props.disableTokenWarning) {\n var style = {\n position: 'absolute',\n left: 0,\n top: 0\n };\n return React.createElement(\"div\", {\n key: \"warning\",\n id: \"no-token-warning\",\n style: style\n }, React.createElement(\"h3\", {\n key: \"header\"\n }, \"NO_TOKEN_WARNING\"), React.createElement(\"div\", {\n key: \"text\"\n }, \"For information on setting up your basemap, read\"), React.createElement(\"a\", {\n key: \"link\",\n href: TOKEN_DOC_URL\n }, \"Note on Map Tokens\"));\n }\n\n return null;\n }\n }, {\n key: \"_renderOverlays\",\n value: function _renderOverlays(dimensions) {\n var _this2 = this;\n\n var _dimensions$width = dimensions.width,\n width = _dimensions$width === void 0 ? Number(this.props.width) : _dimensions$width,\n _dimensions$height = dimensions.height,\n height = _dimensions$height === void 0 ? Number(this.props.height) : _dimensions$height;\n\n this._updateMapSize(width, height);\n\n return React.createElement(MapContext.Consumer, null, function (interactiveContext) {\n var context = _objectSpread({}, interactiveContext, {\n viewport: new WebMercatorViewport(_objectSpread({}, _this2.props, {}, _this2.props.viewState, {\n width: width,\n height: height\n })),\n map: _this2._map,\n mapContainer: interactiveContext.mapContainer || _this2._mapContainerRef.current\n });\n\n return React.createElement(MapContext.Provider, {\n value: context\n }, React.createElement(\"div\", {\n key: \"map-overlays\",\n className: \"overlays\",\n style: CONTAINER_STYLE\n }, _this2.props.children));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n width = _this$props.width,\n height = _this$props.height,\n style = _this$props.style,\n visibilityConstraints = _this$props.visibilityConstraints;\n var mapContainerStyle = Object.assign({\n position: 'relative'\n }, style, {\n width: width,\n height: height\n });\n var visible = this.props.visible && checkVisibilityConstraints(this.props.viewState || this.props, visibilityConstraints);\n var mapStyle = Object.assign({}, CONTAINER_STYLE, {\n visibility: visible ? 'inherit' : 'hidden'\n });\n return React.createElement(\"div\", {\n key: \"map-container\",\n style: mapContainerStyle,\n ref: this._mapContainerRef\n }, React.createElement(\"div\", {\n key: \"map-mapbox\",\n ref: this._mapboxMapRef,\n style: mapStyle,\n className: className\n }), React.createElement(AutoSizer, {\n key: \"autosizer\",\n disableWidth: Number.isFinite(width),\n disableHeight: Number.isFinite(height),\n onResize: this.props.onResize\n }, this._renderOverlays.bind(this)), this._renderNoTokenWarning());\n }\n }], [{\n key: \"supported\",\n value: function supported() {\n return mapboxgl && mapboxgl.supported();\n }\n }]);\n\n return StaticMap;\n}(PureComponent);\n\n_defineProperty(StaticMap, \"propTypes\", propTypes);\n\n_defineProperty(StaticMap, \"defaultProps\", defaultProps);\n\nexport { StaticMap as default };","import \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.date.now\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport assert from './assert';\nimport { TransitionInterpolator, LinearInterpolator } from './transition';\nimport MapState from './map-state';\n\nvar noop = function noop() {};\n\nexport function cropEasingFunction(easing, x0) {\n var y0 = easing(x0);\n return function (t) {\n return 1 / (1 - y0) * (easing(t * (1 - x0) + x0) - y0);\n };\n}\nexport var TRANSITION_EVENTS = {\n BREAK: 1,\n SNAP_TO_END: 2,\n IGNORE: 3,\n UPDATE: 4\n};\nvar DEFAULT_PROPS = {\n transitionDuration: 0,\n transitionEasing: function transitionEasing(t) {\n return t;\n },\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK,\n onTransitionStart: noop,\n onTransitionInterrupt: noop,\n onTransitionEnd: noop,\n onViewportChange: noop,\n onStateChange: noop\n};\n\nvar TransitionManager = function () {\n function TransitionManager(props, getTime) {\n var _this = this;\n\n _classCallCheck(this, TransitionManager);\n\n _defineProperty(this, \"props\", void 0);\n\n _defineProperty(this, \"state\", void 0);\n\n _defineProperty(this, \"time\", void 0);\n\n _defineProperty(this, \"_animationFrame\", null);\n\n _defineProperty(this, \"_onTransitionFrame\", function () {\n _this._animationFrame = requestAnimationFrame(_this._onTransitionFrame);\n\n _this._updateViewport();\n });\n\n if (props) {\n this.props = props;\n }\n\n this.time = getTime || Date.now;\n }\n\n _createClass(TransitionManager, [{\n key: \"getViewportInTransition\",\n value: function getViewportInTransition() {\n return this._animationFrame ? this.state.propsInTransition : null;\n }\n }, {\n key: \"processViewportChange\",\n value: function processViewportChange(nextProps) {\n var currentProps = this.props;\n this.props = nextProps;\n\n if (this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n return false;\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n var startProps = Object.assign({}, currentProps);\n var endProps = Object.assign({}, nextProps);\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n\n if (this.state.interruption === TRANSITION_EVENTS.SNAP_TO_END) {\n Object.assign(startProps, this.state.endProps);\n } else {\n Object.assign(startProps, this.state.propsInTransition);\n }\n\n if (this.state.interruption === TRANSITION_EVENTS.UPDATE) {\n var currentTime = this.time();\n var x0 = (currentTime - this.state.startTime) / this.state.duration;\n endProps.transitionDuration = this.state.duration - (currentTime - this.state.startTime);\n endProps.transitionEasing = cropEasingFunction(this.state.easing, x0);\n endProps.transitionInterpolator = startProps.transitionInterpolator;\n }\n }\n\n endProps.onTransitionStart();\n\n this._triggerTransition(startProps, endProps);\n\n return true;\n }\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n\n this._endTransition();\n }\n\n return false;\n }\n }, {\n key: \"_isTransitionInProgress\",\n value: function _isTransitionInProgress() {\n return Boolean(this._animationFrame);\n }\n }, {\n key: \"_isTransitionEnabled\",\n value: function _isTransitionEnabled(props) {\n var transitionDuration = props.transitionDuration,\n transitionInterpolator = props.transitionInterpolator;\n return (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator);\n }\n }, {\n key: \"_isUpdateDueToCurrentTransition\",\n value: function _isUpdateDueToCurrentTransition(props) {\n if (this.state.propsInTransition) {\n return this.state.interpolator.arePropsEqual(props, this.state.propsInTransition);\n }\n\n return false;\n }\n }, {\n key: \"_shouldIgnoreViewportChange\",\n value: function _shouldIgnoreViewportChange(currentProps, nextProps) {\n if (!currentProps) {\n return true;\n }\n\n if (this._isTransitionInProgress()) {\n return this.state.interruption === TRANSITION_EVENTS.IGNORE || this._isUpdateDueToCurrentTransition(nextProps);\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n }\n\n return true;\n }\n }, {\n key: \"_triggerTransition\",\n value: function _triggerTransition(startProps, endProps) {\n assert(this._isTransitionEnabled(endProps));\n\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n }\n\n var transitionInterpolator = endProps.transitionInterpolator;\n var duration = transitionInterpolator.getDuration ? transitionInterpolator.getDuration(startProps, endProps) : endProps.transitionDuration;\n\n if (duration === 0) {\n return;\n }\n\n var initialProps = endProps.transitionInterpolator.initializeProps(startProps, endProps);\n var interactionState = {\n inTransition: true,\n isZooming: startProps.zoom !== endProps.zoom,\n isPanning: startProps.longitude !== endProps.longitude || startProps.latitude !== endProps.latitude,\n isRotating: startProps.bearing !== endProps.bearing || startProps.pitch !== endProps.pitch\n };\n this.state = {\n duration: duration,\n easing: endProps.transitionEasing,\n interpolator: endProps.transitionInterpolator,\n interruption: endProps.transitionInterruption,\n startTime: this.time(),\n startProps: initialProps.start,\n endProps: initialProps.end,\n animation: null,\n propsInTransition: {},\n interactionState: interactionState\n };\n\n this._onTransitionFrame();\n\n this.props.onStateChange(interactionState);\n }\n }, {\n key: \"_endTransition\",\n value: function _endTransition() {\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n this._animationFrame = null;\n }\n\n this.props.onStateChange({\n inTransition: false,\n isZooming: false,\n isPanning: false,\n isRotating: false\n });\n }\n }, {\n key: \"_updateViewport\",\n value: function _updateViewport() {\n var currentTime = this.time();\n var _this$state = this.state,\n startTime = _this$state.startTime,\n duration = _this$state.duration,\n easing = _this$state.easing,\n interpolator = _this$state.interpolator,\n startProps = _this$state.startProps,\n endProps = _this$state.endProps;\n var shouldEnd = false;\n var t = (currentTime - startTime) / duration;\n\n if (t >= 1) {\n t = 1;\n shouldEnd = true;\n }\n\n t = easing(t);\n var viewport = interpolator.interpolateProps(startProps, endProps, t);\n var mapState = new MapState(Object.assign({}, this.props, viewport));\n this.state.propsInTransition = mapState.getViewportProps();\n this.props.onViewportChange(this.state.propsInTransition, this.state.interactionState, this.props);\n\n if (shouldEnd) {\n this._endTransition();\n\n this.props.onTransitionEnd();\n }\n }\n }]);\n\n return TransitionManager;\n}();\n\n_defineProperty(TransitionManager, \"defaultProps\", DEFAULT_PROPS);\n\nexport { TransitionManager as default };","var INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nfunction some(array, predict) {\n for (var i = 0; i < array.length; i++) {\n if (predict(array[i])) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function enhancePointerEventInput(PointerEventInput) {\n var oldHandler = PointerEventInput.prototype.handler;\n\n PointerEventInput.prototype.handler = function handler(ev) {\n var store = this.store;\n\n if (ev.button > 0) {\n if (!some(store, function (e) {\n return e.pointerId === ev.pointerId;\n })) {\n store.push(ev);\n }\n }\n\n oldHandler.call(this, ev);\n };\n}\nexport function enhanceMouseInput(MouseInput) {\n MouseInput.prototype.handler = function handler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n if (eventType & INPUT_START && ev.button >= 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which === 0) {\n eventType = INPUT_END;\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: 'mouse',\n srcEvent: ev\n });\n };\n}","import hammerjs from 'hammerjs';\nimport { enhancePointerEventInput, enhanceMouseInput } from './hammer-overrides';\nenhancePointerEventInput(hammerjs.PointerEventInput);\nenhanceMouseInput(hammerjs.MouseInput);\nexport var Manager = hammerjs.Manager;\nexport default hammerjs;","import Hammer from './utils/hammer';\nexport var RECOGNIZERS = Hammer ? [[Hammer.Rotate, {\n enable: false\n}], [Hammer.Pinch, {\n enable: false\n}], [Hammer.Swipe, {\n enable: false\n}], [Hammer.Pan, {\n threshold: 0,\n enable: false\n}], [Hammer.Press, {\n enable: false\n}], [Hammer.Tap, {\n event: 'doubletap',\n taps: 2,\n enable: false\n}], [Hammer.Tap, {\n event: 'anytap',\n enable: false\n}], [Hammer.Tap, {\n enable: false\n}]] : null;\nexport var RECOGNIZER_COMPATIBLE_MAP = {\n rotate: ['pinch'],\n pinch: ['pan'],\n pan: ['press', 'doubletap', 'anytap', 'tap'],\n doubletap: ['anytap'],\n anytap: ['tap']\n};\nexport var RECOGNIZER_FALLBACK_MAP = {\n doubletap: ['tap']\n};\nexport var BASIC_EVENT_ALIASES = {\n pointerdown: 'pointerdown',\n pointermove: 'pointermove',\n pointerup: 'pointerup',\n touchstart: 'pointerdown',\n touchmove: 'pointermove',\n touchend: 'pointerup',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup'\n};\nexport var INPUT_EVENT_TYPES = {\n KEY_EVENTS: ['keydown', 'keyup'],\n MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n WHEEL_EVENTS: ['wheel', 'mousewheel', 'DOMMouseScroll']\n};\nexport var EVENT_RECOGNIZER_MAP = {\n tap: 'tap',\n anytap: 'anytap',\n doubletap: 'doubletap',\n press: 'press',\n pinch: 'pinch',\n pinchin: 'pinch',\n pinchout: 'pinch',\n pinchstart: 'pinch',\n pinchmove: 'pinch',\n pinchend: 'pinch',\n pinchcancel: 'pinch',\n rotate: 'rotate',\n rotatestart: 'rotate',\n rotatemove: 'rotate',\n rotateend: 'rotate',\n rotatecancel: 'rotate',\n pan: 'pan',\n panstart: 'pan',\n panmove: 'pan',\n panup: 'pan',\n pandown: 'pan',\n panleft: 'pan',\n panright: 'pan',\n panend: 'pan',\n pancancel: 'pan',\n swipe: 'swipe',\n swipeleft: 'swipe',\n swiperight: 'swipe',\n swipeup: 'swipe',\n swipedown: 'swipe'\n};\nexport var GESTURE_EVENT_ALIASES = {\n click: 'tap',\n anyclick: 'anytap',\n dblclick: 'doubletap',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup',\n mouseover: 'pointerover',\n mouseout: 'pointerout',\n mouseleave: 'pointerleave'\n};","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.index-of\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { INPUT_EVENT_TYPES } from '../constants';\nimport { window, userAgent, passiveSupported } from '../utils/globals';\nvar firefox = userAgent.indexOf('firefox') !== -1;\nvar WHEEL_EVENTS = INPUT_EVENT_TYPES.WHEEL_EVENTS;\nvar EVENT_TYPE = 'wheel';\nvar WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nvar WHEEL_DELTA_PER_LINE = 40;\nvar SHIFT_MULTIPLIER = 0.25;\n\nvar WheelInput = function () {\n function WheelInput(element, callback) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, WheelInput);\n\n this.element = element;\n this.callback = callback;\n this.options = Object.assign({\n enable: true\n }, options);\n this.events = WHEEL_EVENTS.concat(options.events || []);\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(function (event) {\n return element.addEventListener(event, _this.handleEvent, passiveSupported ? {\n passive: false\n } : false);\n });\n }\n\n _createClass(WheelInput, [{\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n this.events.forEach(function (event) {\n return _this2.element.removeEventListener(event, _this2.handleEvent);\n });\n }\n }, {\n key: \"enableEventType\",\n value: function enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n var value = event.deltaY;\n\n if (window.WheelEvent) {\n if (firefox && event.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL) {\n value /= window.devicePixelRatio;\n }\n\n if (event.deltaMode === window.WheelEvent.DOM_DELTA_LINE) {\n value *= WHEEL_DELTA_PER_LINE;\n }\n }\n\n var wheelPosition = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n }\n\n if (event.shiftKey && value) {\n value = value * SHIFT_MULTIPLIER;\n }\n\n this._onWheel(event, -value, wheelPosition);\n }\n }, {\n key: \"_onWheel\",\n value: function _onWheel(srcEvent, delta, position) {\n this.callback({\n type: EVENT_TYPE,\n center: position,\n delta: delta,\n srcEvent: srcEvent,\n pointerType: 'mouse',\n target: srcEvent.target\n });\n }\n }]);\n\n return WheelInput;\n}();\n\nexport { WheelInput as default };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { INPUT_EVENT_TYPES } from '../constants';\nvar MOUSE_EVENTS = INPUT_EVENT_TYPES.MOUSE_EVENTS;\nvar MOVE_EVENT_TYPE = 'pointermove';\nvar OVER_EVENT_TYPE = 'pointerover';\nvar OUT_EVENT_TYPE = 'pointerout';\nvar LEAVE_EVENT_TYPE = 'pointerleave';\n\nvar MoveInput = function () {\n function MoveInput(element, callback) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, MoveInput);\n\n this.element = element;\n this.callback = callback;\n this.pressed = false;\n this.options = Object.assign({\n enable: true\n }, options);\n this.enableMoveEvent = this.options.enable;\n this.enableLeaveEvent = this.options.enable;\n this.enableOutEvent = this.options.enable;\n this.enableOverEvent = this.options.enable;\n this.events = MOUSE_EVENTS.concat(options.events || []);\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(function (event) {\n return element.addEventListener(event, _this.handleEvent);\n });\n }\n\n _createClass(MoveInput, [{\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n this.events.forEach(function (event) {\n return _this2.element.removeEventListener(event, _this2.handleEvent);\n });\n }\n }, {\n key: \"enableEventType\",\n value: function enableEventType(eventType, enabled) {\n if (eventType === MOVE_EVENT_TYPE) {\n this.enableMoveEvent = enabled;\n }\n\n if (eventType === OVER_EVENT_TYPE) {\n this.enableOverEvent = enabled;\n }\n\n if (eventType === OUT_EVENT_TYPE) {\n this.enableOutEvent = enabled;\n }\n\n if (eventType === LEAVE_EVENT_TYPE) {\n this.enableLeaveEvent = enabled;\n }\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n this.handleOverEvent(event);\n this.handleOutEvent(event);\n this.handleLeaveEvent(event);\n this.handleMoveEvent(event);\n }\n }, {\n key: \"handleOverEvent\",\n value: function handleOverEvent(event) {\n if (this.enableOverEvent) {\n if (event.type === 'mouseover') {\n this.callback({\n type: OVER_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n }, {\n key: \"handleOutEvent\",\n value: function handleOutEvent(event) {\n if (this.enableOutEvent) {\n if (event.type === 'mouseout') {\n this.callback({\n type: OUT_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n }, {\n key: \"handleLeaveEvent\",\n value: function handleLeaveEvent(event) {\n if (this.enableLeaveEvent) {\n if (event.type === 'mouseleave') {\n this.callback({\n type: LEAVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n }, {\n key: \"handleMoveEvent\",\n value: function handleMoveEvent(event) {\n if (this.enableMoveEvent) {\n switch (event.type) {\n case 'mousedown':\n if (event.button >= 0) {\n this.pressed = true;\n }\n\n break;\n\n case 'mousemove':\n if (event.which === 0) {\n this.pressed = false;\n }\n\n if (!this.pressed) {\n this.callback({\n type: MOVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n\n break;\n\n case 'mouseup':\n this.pressed = false;\n break;\n\n default:\n }\n }\n }\n }]);\n\n return MoveInput;\n}();\n\nexport { MoveInput as default };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { INPUT_EVENT_TYPES } from '../constants';\nvar KEY_EVENTS = INPUT_EVENT_TYPES.KEY_EVENTS;\nvar DOWN_EVENT_TYPE = 'keydown';\nvar UP_EVENT_TYPE = 'keyup';\n\nvar KeyInput = function () {\n function KeyInput(element, callback) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, KeyInput);\n\n this.element = element;\n this.callback = callback;\n this.options = Object.assign({\n enable: true\n }, options);\n this.enableDownEvent = this.options.enable;\n this.enableUpEvent = this.options.enable;\n this.events = KEY_EVENTS.concat(options.events || []);\n this.handleEvent = this.handleEvent.bind(this);\n element.tabIndex = options.tabIndex || 0;\n element.style.outline = 'none';\n this.events.forEach(function (event) {\n return element.addEventListener(event, _this.handleEvent);\n });\n }\n\n _createClass(KeyInput, [{\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n this.events.forEach(function (event) {\n return _this2.element.removeEventListener(event, _this2.handleEvent);\n });\n }\n }, {\n key: \"enableEventType\",\n value: function enableEventType(eventType, enabled) {\n if (eventType === DOWN_EVENT_TYPE) {\n this.enableDownEvent = enabled;\n }\n\n if (eventType === UP_EVENT_TYPE) {\n this.enableUpEvent = enabled;\n }\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var targetElement = event.target || event.srcElement;\n\n if (targetElement.tagName === 'INPUT' && targetElement.type === 'text' || targetElement.tagName === 'TEXTAREA') {\n return;\n }\n\n if (this.enableDownEvent && event.type === 'keydown') {\n this.callback({\n type: DOWN_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n\n if (this.enableUpEvent && event.type === 'keyup') {\n this.callback({\n type: UP_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n }\n }]);\n\n return KeyInput;\n}();\n\nexport { KeyInput as default };","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nvar EVENT_TYPE = 'contextmenu';\n\nvar ContextmenuInput = function () {\n function ContextmenuInput(element, callback) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, ContextmenuInput);\n\n this.element = element;\n this.callback = callback;\n this.options = Object.assign({\n enable: true\n }, options);\n this.handleEvent = this.handleEvent.bind(this);\n element.addEventListener('contextmenu', this.handleEvent);\n }\n\n _createClass(ContextmenuInput, [{\n key: \"destroy\",\n value: function destroy() {\n this.element.removeEventListener('contextmenu', this.handleEvent);\n }\n }, {\n key: \"enableEventType\",\n value: function enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n this.callback({\n type: EVENT_TYPE,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }]);\n\n return ContextmenuInput;\n}();\n\nexport { ContextmenuInput as default };","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.number.is-finite\";\nvar DOWN_EVENT = 1;\nvar MOVE_EVENT = 2;\nvar UP_EVENT = 4;\nvar MOUSE_EVENTS = {\n pointerdown: DOWN_EVENT,\n pointermove: MOVE_EVENT,\n pointerup: UP_EVENT,\n mousedown: DOWN_EVENT,\n mousemove: MOVE_EVENT,\n mouseup: UP_EVENT\n};\nvar MOUSE_EVENT_WHICH_LEFT = 1;\nvar MOUSE_EVENT_WHICH_MIDDLE = 2;\nvar MOUSE_EVENT_WHICH_RIGHT = 3;\nvar MOUSE_EVENT_BUTTON_LEFT = 0;\nvar MOUSE_EVENT_BUTTON_MIDDLE = 1;\nvar MOUSE_EVENT_BUTTON_RIGHT = 2;\nvar MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nvar MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nvar MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\nexport function whichButtons(event) {\n var eventType = MOUSE_EVENTS[event.srcEvent.type];\n\n if (!eventType) {\n return null;\n }\n\n var _event$srcEvent = event.srcEvent,\n buttons = _event$srcEvent.buttons,\n button = _event$srcEvent.button,\n which = _event$srcEvent.which;\n var leftButton = false;\n var middleButton = false;\n var rightButton = false;\n\n if (eventType === UP_EVENT || eventType === MOVE_EVENT && !Number.isFinite(buttons)) {\n leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n } else if (eventType === MOVE_EVENT) {\n leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n } else if (eventType === DOWN_EVENT) {\n leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n }\n\n return {\n leftButton: leftButton,\n middleButton: middleButton,\n rightButton: rightButton\n };\n}\nexport function getOffsetPosition(event, rootElement) {\n var srcEvent = event.srcEvent;\n\n if (!event.center && !Number.isFinite(srcEvent.clientX)) {\n return null;\n }\n\n var center = event.center || {\n x: srcEvent.clientX,\n y: srcEvent.clientY\n };\n var rect = rootElement.getBoundingClientRect();\n var scaleX = rect.width / rootElement.offsetWidth;\n var scaleY = rect.height / rootElement.offsetHeight;\n var offsetCenter = {\n x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n y: (center.y - rect.top - rootElement.clientTop) / scaleY\n };\n return {\n center: center,\n offsetCenter: offsetCenter\n };\n}","import \"core-js/modules/es6.array.some\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.function.bind\";\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.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { whichButtons, getOffsetPosition } from './event-utils';\nvar DEFAULT_OPTIONS = {\n srcElement: 'root',\n priority: 0\n};\n\nvar EventRegistrar = function () {\n function EventRegistrar(eventManager) {\n _classCallCheck(this, EventRegistrar);\n\n this.eventManager = eventManager;\n this.handlers = [];\n this.handlersByElement = new Map();\n this.handleEvent = this.handleEvent.bind(this);\n this._active = false;\n }\n\n _createClass(EventRegistrar, [{\n key: \"isEmpty\",\n value: function isEmpty() {\n return !this._active;\n }\n }, {\n key: \"add\",\n value: function add(type, handler, opts) {\n var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var handlers = this.handlers,\n handlersByElement = this.handlersByElement;\n\n if (opts && (_typeof(opts) !== 'object' || opts.addEventListener)) {\n opts = {\n srcElement: opts\n };\n }\n\n opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS;\n var entries = handlersByElement.get(opts.srcElement);\n\n if (!entries) {\n entries = [];\n handlersByElement.set(opts.srcElement, entries);\n }\n\n var entry = {\n type: type,\n handler: handler,\n srcElement: opts.srcElement,\n priority: opts.priority\n };\n\n if (once) {\n entry.once = true;\n }\n\n if (passive) {\n entry.passive = true;\n }\n\n handlers.push(entry);\n this._active = this._active || !entry.passive;\n var insertPosition = entries.length - 1;\n\n while (insertPosition >= 0) {\n if (entries[insertPosition].priority >= entry.priority) {\n break;\n }\n\n insertPosition--;\n }\n\n entries.splice(insertPosition + 1, 0, entry);\n }\n }, {\n key: \"remove\",\n value: function remove(type, handler) {\n var handlers = this.handlers,\n handlersByElement = this.handlersByElement;\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n var entry = handlers[i];\n\n if (entry.type === type && entry.handler === handler) {\n handlers.splice(i, 1);\n var entries = handlersByElement.get(entry.srcElement);\n entries.splice(entries.indexOf(entry), 1);\n\n if (entries.length === 0) {\n handlersByElement[\"delete\"](entry.srcElement);\n }\n }\n }\n\n this._active = handlers.some(function (entry) {\n return !entry.passive;\n });\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (this.isEmpty()) {\n return;\n }\n\n var mjolnirEvent = this._normalizeEvent(event);\n\n var target = event.srcEvent.target;\n\n while (target && target !== mjolnirEvent.rootElement) {\n this._emit(mjolnirEvent, target);\n\n if (mjolnirEvent.handled) {\n return;\n }\n\n target = target.parentNode;\n }\n\n this._emit(mjolnirEvent, 'root');\n }\n }, {\n key: \"_emit\",\n value: function _emit(event, srcElement) {\n var entries = this.handlersByElement.get(srcElement);\n\n if (entries) {\n var immediatePropagationStopped = false;\n\n var stopPropagation = function stopPropagation() {\n event.handled = true;\n };\n\n var stopImmediatePropagation = function stopImmediatePropagation() {\n event.handled = true;\n immediatePropagationStopped = true;\n };\n\n var entriesToRemove = [];\n\n for (var i = 0; i < entries.length; i++) {\n var _entries$i = entries[i],\n type = _entries$i.type,\n handler = _entries$i.handler,\n once = _entries$i.once;\n handler(Object.assign({}, event, {\n type: type,\n stopPropagation: stopPropagation,\n stopImmediatePropagation: stopImmediatePropagation\n }));\n\n if (once) {\n entriesToRemove.push(entries[i]);\n }\n\n if (immediatePropagationStopped) {\n break;\n }\n }\n\n for (var _i = 0; _i < entriesToRemove.length; _i++) {\n var _entriesToRemove$_i = entriesToRemove[_i],\n type = _entriesToRemove$_i.type,\n handler = _entriesToRemove$_i.handler;\n this.remove(type, handler);\n }\n }\n }\n }, {\n key: \"_normalizeEvent\",\n value: function _normalizeEvent(event) {\n var rootElement = this.eventManager.element;\n return Object.assign({}, event, whichButtons(event), getOffsetPosition(event, rootElement), {\n handled: false,\n rootElement: rootElement\n });\n }\n }]);\n\n return EventRegistrar;\n}();\n\nexport { EventRegistrar as default };","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\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.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.object.assign\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { Manager } from './utils/hammer';\nimport WheelInput from './inputs/wheel-input';\nimport MoveInput from './inputs/move-input';\nimport KeyInput from './inputs/key-input';\nimport ContextmenuInput from './inputs/contextmenu-input';\nimport EventRegistrar from './utils/event-registrar';\nimport { BASIC_EVENT_ALIASES, EVENT_RECOGNIZER_MAP, GESTURE_EVENT_ALIASES, RECOGNIZERS, RECOGNIZER_COMPATIBLE_MAP, RECOGNIZER_FALLBACK_MAP } from './constants';\nvar DEFAULT_OPTIONS = {\n events: null,\n recognizers: null,\n recognizerOptions: {},\n Manager: Manager,\n touchAction: 'none',\n tabIndex: 0\n};\n\nvar EventManager = function () {\n function EventManager() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, EventManager);\n\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n this.events = new Map();\n this._onBasicInput = this._onBasicInput.bind(this);\n this._onOtherEvent = this._onOtherEvent.bind(this);\n this.setElement(element);\n var events = options.events;\n\n if (events) {\n this.on(events);\n }\n }\n\n _createClass(EventManager, [{\n key: \"setElement\",\n value: function setElement(element) {\n var _this = this;\n\n if (this.element) {\n this.destroy();\n }\n\n this.element = element;\n\n if (!element) {\n return;\n }\n\n var options = this.options;\n var ManagerClass = options.Manager;\n this.manager = new ManagerClass(element, {\n touchAction: options.touchAction,\n recognizers: options.recognizers || RECOGNIZERS\n }).on('hammer.input', this._onBasicInput);\n\n if (!options.recognizers) {\n Object.keys(RECOGNIZER_COMPATIBLE_MAP).forEach(function (name) {\n var recognizer = _this.manager.get(name);\n\n if (recognizer) {\n RECOGNIZER_COMPATIBLE_MAP[name].forEach(function (otherName) {\n recognizer.recognizeWith(otherName);\n });\n }\n });\n }\n\n for (var recognizerName in options.recognizerOptions) {\n var recognizer = this.manager.get(recognizerName);\n\n if (recognizer) {\n var recognizerOption = options.recognizerOptions[recognizerName];\n delete recognizerOption.enable;\n recognizer.set(recognizerOption);\n }\n }\n\n this.wheelInput = new WheelInput(element, this._onOtherEvent, {\n enable: false\n });\n this.moveInput = new MoveInput(element, this._onOtherEvent, {\n enable: false\n });\n this.keyInput = new KeyInput(element, this._onOtherEvent, {\n enable: false,\n tabIndex: options.tabIndex\n });\n this.contextmenuInput = new ContextmenuInput(element, this._onOtherEvent, {\n enable: false\n });\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.events[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _step$value = _slicedToArray(_step.value, 2),\n eventAlias = _step$value[0],\n eventRegistrar = _step$value[1];\n\n if (!eventRegistrar.isEmpty()) {\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n\n this.manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.element) {\n this.wheelInput.destroy();\n this.moveInput.destroy();\n this.keyInput.destroy();\n this.contextmenuInput.destroy();\n this.manager.destroy();\n this.wheelInput = null;\n this.moveInput = null;\n this.keyInput = null;\n this.contextmenuInput = null;\n this.manager = null;\n this.element = null;\n }\n }\n }, {\n key: \"on\",\n value: function on(event, handler, opts) {\n this._addEventHandler(event, handler, opts, false);\n }\n }, {\n key: \"once\",\n value: function once(event, handler, opts) {\n this._addEventHandler(event, handler, opts, true);\n }\n }, {\n key: \"watch\",\n value: function watch(event, handler, opts) {\n this._addEventHandler(event, handler, opts, false, true);\n }\n }, {\n key: \"off\",\n value: function off(event, handler) {\n this._removeEventHandler(event, handler);\n }\n }, {\n key: \"_toggleRecognizer\",\n value: function _toggleRecognizer(name, enabled) {\n var manager = this.manager;\n\n if (!manager) {\n return;\n }\n\n var recognizer = manager.get(name);\n\n if (recognizer && recognizer.options.enable !== enabled) {\n recognizer.set({\n enable: enabled\n });\n var fallbackRecognizers = RECOGNIZER_FALLBACK_MAP[name];\n\n if (fallbackRecognizers && !this.options.recognizers) {\n fallbackRecognizers.forEach(function (otherName) {\n var otherRecognizer = manager.get(otherName);\n\n if (enabled) {\n otherRecognizer.requireFailure(name);\n recognizer.dropRequireFailure(otherName);\n } else {\n otherRecognizer.dropRequireFailure(name);\n }\n });\n }\n }\n\n this.wheelInput.enableEventType(name, enabled);\n this.moveInput.enableEventType(name, enabled);\n this.keyInput.enableEventType(name, enabled);\n this.contextmenuInput.enableEventType(name, enabled);\n }\n }, {\n key: \"_addEventHandler\",\n value: function _addEventHandler(event, handler, opts, once, passive) {\n if (typeof event !== 'string') {\n opts = handler;\n\n for (var eventName in event) {\n this._addEventHandler(eventName, event[eventName], opts, once, passive);\n }\n\n return;\n }\n\n var manager = this.manager,\n events = this.events;\n var eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n var eventRegistrar = events.get(eventAlias);\n\n if (!eventRegistrar) {\n eventRegistrar = new EventRegistrar(this);\n events.set(eventAlias, eventRegistrar);\n eventRegistrar.recognizerName = EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n\n if (manager) {\n manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n\n eventRegistrar.add(event, handler, opts, once, passive);\n\n if (!eventRegistrar.isEmpty()) {\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n }\n }\n }, {\n key: \"_removeEventHandler\",\n value: function _removeEventHandler(event, handler) {\n if (typeof event !== 'string') {\n for (var eventName in event) {\n this._removeEventHandler(eventName, event[eventName]);\n }\n\n return;\n }\n\n var events = this.events;\n var eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n var eventRegistrar = events.get(eventAlias);\n\n if (!eventRegistrar) {\n return;\n }\n\n eventRegistrar.remove(event, handler);\n\n if (eventRegistrar.isEmpty()) {\n var recognizerName = eventRegistrar.recognizerName;\n var isRecognizerUsed = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = events.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var eh = _step2.value;\n\n if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n isRecognizerUsed = true;\n break;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (!isRecognizerUsed) {\n this._toggleRecognizer(recognizerName, false);\n }\n }\n }\n }, {\n key: \"_onBasicInput\",\n value: function _onBasicInput(event) {\n var srcEvent = event.srcEvent;\n var alias = BASIC_EVENT_ALIASES[srcEvent.type];\n\n if (alias) {\n this.manager.emit(alias, event);\n }\n }\n }, {\n key: \"_onOtherEvent\",\n value: function _onOtherEvent(event) {\n this.manager.emit(event.type, event);\n }\n }]);\n\n return EventManager;\n}();\n\nexport { EventManager as default };","import \"core-js/modules/es6.array.for-each\";\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.some\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport MapState from './map-state';\nimport { LinearInterpolator } from './transition';\nimport TransitionManager, { TRANSITION_EVENTS } from './transition-manager';\nimport debounce from './debounce';\nvar NO_TRANSITION_PROPS = {\n transitionDuration: 0\n};\nexport var LINEAR_TRANSITION_PROPS = {\n transitionDuration: 300,\n transitionEasing: function transitionEasing(t) {\n return t;\n },\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK\n};\nvar PITCH_MOUSE_THRESHOLD = 5;\nvar PITCH_ACCEL = 1.2;\nvar ZOOM_ACCEL = 0.01;\nvar EVENT_TYPES = {\n WHEEL: ['wheel'],\n PAN: ['panstart', 'panmove', 'panend'],\n PINCH: ['pinchstart', 'pinchmove', 'pinchend', 'pinchcancel'],\n DOUBLE_TAP: ['doubletap'],\n KEYBOARD: ['keydown']\n};\n\nvar MapController = function () {\n function MapController() {\n var _this = this;\n\n _classCallCheck(this, MapController);\n\n _defineProperty(this, \"events\", []);\n\n _defineProperty(this, \"mapState\", void 0);\n\n _defineProperty(this, \"onViewportChange\", void 0);\n\n _defineProperty(this, \"onStateChange\", void 0);\n\n _defineProperty(this, \"mapStateProps\", void 0);\n\n _defineProperty(this, \"eventManager\", void 0);\n\n _defineProperty(this, \"scrollZoom\", true);\n\n _defineProperty(this, \"dragPan\", true);\n\n _defineProperty(this, \"dragRotate\", true);\n\n _defineProperty(this, \"doubleClickZoom\", true);\n\n _defineProperty(this, \"touchZoom\", true);\n\n _defineProperty(this, \"touchRotate\", false);\n\n _defineProperty(this, \"keyboard\", true);\n\n _defineProperty(this, \"_state\", {\n isDragging: false\n });\n\n _defineProperty(this, \"_events\", {});\n\n _defineProperty(this, \"_transitionManager\", new TransitionManager());\n\n _defineProperty(this, \"setState\", function (newState) {\n Object.assign(_this._state, newState);\n\n if (_this.onStateChange) {\n _this.onStateChange(_this._state);\n }\n });\n\n this.handleEvent = this.handleEvent.bind(this);\n this._onWheelEnd = debounce(this._onWheelEnd, 100);\n }\n\n _createClass(MapController, [{\n key: \"handleEvent\",\n value: function handleEvent(event) {\n this.mapState = this.getMapState();\n\n switch (event.type) {\n case 'panstart':\n return this._onPanStart(event);\n\n case 'panmove':\n return this._onPan(event);\n\n case 'panend':\n return this._onPanEnd(event);\n\n case 'pinchstart':\n return this._onPinchStart(event);\n\n case 'pinchmove':\n return this._onPinch(event);\n\n case 'pinchcancel':\n case 'pinchend':\n return this._onPinchEnd(event);\n\n case 'doubletap':\n return this._onDoubleTap(event);\n\n case 'wheel':\n return this._onWheel(event);\n\n case 'keydown':\n return this._onKeyDown(event);\n\n default:\n return false;\n }\n }\n }, {\n key: \"getCenter\",\n value: function getCenter(event) {\n var _event$offsetCenter = event.offsetCenter,\n x = _event$offsetCenter.x,\n y = _event$offsetCenter.y;\n return [x, y];\n }\n }, {\n key: \"isFunctionKeyPressed\",\n value: function isFunctionKeyPressed(event) {\n var srcEvent = event.srcEvent;\n return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n }\n }, {\n key: \"updateViewport\",\n value: function updateViewport(newMapState) {\n var extraProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var oldViewport = this.mapState ? this.mapState.getViewportProps() : {};\n var newViewport = Object.assign({}, newMapState.getViewportProps(), extraProps);\n var viewStateChanged = Object.keys(newViewport).some(function (key) {\n return oldViewport[key] !== newViewport[key];\n });\n\n if (viewStateChanged) {\n this.onViewportChange(newViewport, extraState, oldViewport);\n }\n\n this.setState(Object.assign({}, newMapState.getInteractiveState(), extraState));\n }\n }, {\n key: \"getMapState\",\n value: function getMapState(overrides) {\n return new MapState(Object.assign({}, this.mapStateProps, this._state, overrides));\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var onViewportChange = options.onViewportChange,\n onStateChange = options.onStateChange,\n _options$eventManager = options.eventManager,\n eventManager = _options$eventManager === void 0 ? this.eventManager : _options$eventManager,\n _options$isInteractiv = options.isInteractive,\n isInteractive = _options$isInteractiv === void 0 ? true : _options$isInteractiv,\n _options$scrollZoom = options.scrollZoom,\n scrollZoom = _options$scrollZoom === void 0 ? this.scrollZoom : _options$scrollZoom,\n _options$dragPan = options.dragPan,\n dragPan = _options$dragPan === void 0 ? this.dragPan : _options$dragPan,\n _options$dragRotate = options.dragRotate,\n dragRotate = _options$dragRotate === void 0 ? this.dragRotate : _options$dragRotate,\n _options$doubleClickZ = options.doubleClickZoom,\n doubleClickZoom = _options$doubleClickZ === void 0 ? this.doubleClickZoom : _options$doubleClickZ,\n _options$touchZoom = options.touchZoom,\n touchZoom = _options$touchZoom === void 0 ? this.touchZoom : _options$touchZoom,\n _options$touchRotate = options.touchRotate,\n touchRotate = _options$touchRotate === void 0 ? this.touchRotate : _options$touchRotate,\n _options$keyboard = options.keyboard,\n keyboard = _options$keyboard === void 0 ? this.keyboard : _options$keyboard;\n this.onViewportChange = onViewportChange;\n this.onStateChange = onStateChange;\n var dimensionChanged = !this.mapStateProps || this.mapStateProps.height !== options.height;\n this.mapStateProps = options;\n\n if (dimensionChanged) {\n this.updateViewport(new MapState(options));\n }\n\n this._transitionManager.processViewportChange(Object.assign({}, options, {\n onStateChange: this.setState\n }));\n\n if (this.eventManager !== eventManager) {\n this.eventManager = eventManager;\n this._events = {};\n this.toggleEvents(this.events, true);\n }\n\n this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && scrollZoom);\n this.toggleEvents(EVENT_TYPES.PAN, isInteractive && (dragPan || dragRotate));\n this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && (touchZoom || touchRotate));\n this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && doubleClickZoom);\n this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && keyboard);\n this.scrollZoom = scrollZoom;\n this.dragPan = dragPan;\n this.dragRotate = dragRotate;\n this.doubleClickZoom = doubleClickZoom;\n this.touchZoom = touchZoom;\n this.touchRotate = touchRotate;\n this.keyboard = keyboard;\n }\n }, {\n key: \"toggleEvents\",\n value: function toggleEvents(eventNames, enabled) {\n var _this2 = this;\n\n if (this.eventManager) {\n eventNames.forEach(function (eventName) {\n if (_this2._events[eventName] !== enabled) {\n _this2._events[eventName] = enabled;\n\n if (enabled) {\n _this2.eventManager.on(eventName, _this2.handleEvent);\n } else {\n _this2.eventManager.off(eventName, _this2.handleEvent);\n }\n }\n });\n }\n }\n }, {\n key: \"_onPanStart\",\n value: function _onPanStart(event) {\n var pos = this.getCenter(event);\n var newMapState = this.mapState.panStart({\n pos: pos\n }).rotateStart({\n pos: pos\n });\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isDragging: true\n });\n return true;\n }\n }, {\n key: \"_onPan\",\n value: function _onPan(event) {\n return this.isFunctionKeyPressed(event) || event.rightButton ? this._onPanRotate(event) : this._onPanMove(event);\n }\n }, {\n key: \"_onPanEnd\",\n value: function _onPanEnd(event) {\n var newMapState = this.mapState.panEnd().rotateEnd();\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false,\n isRotating: false\n });\n return true;\n }\n }, {\n key: \"_onPanMove\",\n value: function _onPanMove(event) {\n if (!this.dragPan) {\n return false;\n }\n\n var pos = this.getCenter(event);\n var newMapState = this.mapState.pan({\n pos: pos\n });\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isPanning: true\n });\n return true;\n }\n }, {\n key: \"_onPanRotate\",\n value: function _onPanRotate(event) {\n if (!this.dragRotate) {\n return false;\n }\n\n var deltaX = event.deltaX,\n deltaY = event.deltaY;\n\n var _this$getCenter = this.getCenter(event),\n _this$getCenter2 = _slicedToArray(_this$getCenter, 2),\n centerY = _this$getCenter2[1];\n\n var startY = centerY - deltaY;\n\n var _this$mapState$getVie = this.mapState.getViewportProps(),\n width = _this$mapState$getVie.width,\n height = _this$mapState$getVie.height;\n\n var deltaScaleX = deltaX / width;\n var deltaScaleY = 0;\n\n if (deltaY > 0) {\n if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n deltaScaleY = deltaY / (startY - height) * PITCH_ACCEL;\n }\n } else if (deltaY < 0) {\n if (startY > PITCH_MOUSE_THRESHOLD) {\n deltaScaleY = 1 - centerY / startY;\n }\n }\n\n deltaScaleY = Math.min(1, Math.max(-1, deltaScaleY));\n var newMapState = this.mapState.rotate({\n deltaScaleX: deltaScaleX,\n deltaScaleY: deltaScaleY\n });\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isRotating: true\n });\n return true;\n }\n }, {\n key: \"_onWheel\",\n value: function _onWheel(event) {\n if (!this.scrollZoom) {\n return false;\n }\n\n event.preventDefault();\n var pos = this.getCenter(event);\n var delta = event.delta;\n var scale = 2 / (1 + Math.exp(-Math.abs(delta * ZOOM_ACCEL)));\n\n if (delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n var newMapState = this.mapState.zoom({\n pos: pos,\n scale: scale\n });\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isZooming: true\n });\n\n this._onWheelEnd();\n\n return true;\n }\n }, {\n key: \"_onWheelEnd\",\n value: function _onWheelEnd() {\n this.setState({\n isZooming: false\n });\n }\n }, {\n key: \"_onPinchStart\",\n value: function _onPinchStart(event) {\n var pos = this.getCenter(event);\n var newMapState = this.mapState.zoomStart({\n pos: pos\n }).rotateStart({\n pos: pos\n });\n this._state.startPinchRotation = event.rotation;\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isDragging: true\n });\n return true;\n }\n }, {\n key: \"_onPinch\",\n value: function _onPinch(event) {\n if (!this.touchZoom && !this.touchRotate) {\n return false;\n }\n\n var newMapState = this.mapState;\n\n if (this.touchZoom) {\n var scale = event.scale;\n var pos = this.getCenter(event);\n newMapState = newMapState.zoom({\n pos: pos,\n scale: scale\n });\n }\n\n if (this.touchRotate) {\n var rotation = event.rotation;\n var startPinchRotation = this._state.startPinchRotation;\n newMapState = newMapState.rotate({\n deltaScaleX: -(rotation - startPinchRotation) / 180\n });\n }\n\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: this.touchZoom,\n isZooming: this.touchZoom,\n isRotating: this.touchRotate\n });\n return true;\n }\n }, {\n key: \"_onPinchEnd\",\n value: function _onPinchEnd(event) {\n var newMapState = this.mapState.zoomEnd().rotateEnd();\n this._state.startPinchRotation = 0;\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false,\n isZooming: false,\n isRotating: false\n });\n return true;\n }\n }, {\n key: \"_onDoubleTap\",\n value: function _onDoubleTap(event) {\n if (!this.doubleClickZoom) {\n return false;\n }\n\n var pos = this.getCenter(event);\n var isZoomOut = this.isFunctionKeyPressed(event);\n var newMapState = this.mapState.zoom({\n pos: pos,\n scale: isZoomOut ? 0.5 : 2\n });\n this.updateViewport(newMapState, Object.assign({}, LINEAR_TRANSITION_PROPS, {\n transitionInterpolator: new LinearInterpolator({\n around: pos\n })\n }), {\n isZooming: true\n });\n return true;\n }\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n if (!this.keyboard) {\n return false;\n }\n\n var funcKey = this.isFunctionKeyPressed(event);\n var mapStateProps = this.mapStateProps;\n var newMapState;\n\n switch (event.srcEvent.keyCode) {\n case 189:\n if (funcKey) {\n newMapState = this.getMapState({\n zoom: mapStateProps.zoom - 2\n });\n } else {\n newMapState = this.getMapState({\n zoom: mapStateProps.zoom - 1\n });\n }\n\n break;\n\n case 187:\n if (funcKey) {\n newMapState = this.getMapState({\n zoom: mapStateProps.zoom + 2\n });\n } else {\n newMapState = this.getMapState({\n zoom: mapStateProps.zoom + 1\n });\n }\n\n break;\n\n case 37:\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing - 15\n });\n } else {\n newMapState = this.mapState.pan({\n pos: [100, 0],\n startPos: [0, 0]\n });\n }\n\n break;\n\n case 39:\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing + 15\n });\n } else {\n newMapState = this.mapState.pan({\n pos: [-100, 0],\n startPos: [0, 0]\n });\n }\n\n break;\n\n case 38:\n if (funcKey) {\n newMapState = this.getMapState({\n pitch: mapStateProps.pitch + 10\n });\n } else {\n newMapState = this.mapState.pan({\n pos: [0, 100],\n startPos: [0, 0]\n });\n }\n\n break;\n\n case 40:\n if (funcKey) {\n newMapState = this.getMapState({\n pitch: mapStateProps.pitch - 10\n });\n } else {\n newMapState = this.mapState.pan({\n pos: [0, -100],\n startPos: [0, 0]\n });\n }\n\n break;\n\n default:\n return false;\n }\n\n return this.updateViewport(newMapState, LINEAR_TRANSITION_PROPS);\n }\n }]);\n\n return MapController;\n}();\n\nexport { MapController as default };","export default function debounce(func, delay) {\n var _this;\n\n var _arguments;\n\n var timeout;\n\n var executeNow = function executeNow() {\n timeout = null;\n return func.apply(_this, _arguments);\n };\n\n return function () {\n _this = this;\n _arguments = arguments;\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(executeNow, delay);\n };\n}","import \"core-js/modules/es6.array.for-each\";\nvar DEPRECATED_PROPS = [{\n old: 'onChangeViewport',\n \"new\": 'onViewportChange'\n}, {\n old: 'perspectiveEnabled',\n \"new\": 'dragRotate'\n}, {\n old: 'onHoverFeatures',\n \"new\": 'onHover'\n}, {\n old: 'onClickFeatures',\n \"new\": 'onClick'\n}, {\n old: 'touchZoomRotate',\n \"new\": 'touchZoom, touchRotate'\n}, {\n old: 'mapControls',\n \"new\": 'controller'\n}];\n\nfunction getDeprecatedText(name) {\n return \"react-map-gl: `\".concat(name, \"` is removed.\");\n}\n\nfunction getNewText(name) {\n return \"Use `\".concat(name, \"` instead.\");\n}\n\nexport default function checkDeprecatedProps() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n DEPRECATED_PROPS.forEach(function (depProp) {\n if (props.hasOwnProperty(depProp.old)) {\n var warnMessage = getDeprecatedText(depProp.old);\n\n if (depProp[\"new\"]) {\n warnMessage = \"\".concat(warnMessage, \" \").concat(getNewText(depProp[\"new\"]));\n }\n\n console.warn(warnMessage);\n }\n });\n}","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.object.assign\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { PureComponent, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport StaticMap from './static-map';\nimport { MAPBOX_LIMITS } from '../utils/map-state';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport TransitionManager from '../utils/transition-manager';\nimport MapContext from './map-context';\nimport { EventManager } from 'mjolnir.js';\nimport MapController from '../utils/map-controller';\nimport deprecateWarn from '../utils/deprecate-warn';\nvar propTypes = Object.assign({}, StaticMap.propTypes, {\n maxZoom: PropTypes.number,\n minZoom: PropTypes.number,\n maxPitch: PropTypes.number,\n minPitch: PropTypes.number,\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n onInteractionStateChange: PropTypes.func,\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n transitionInterpolator: PropTypes.object,\n transitionInterruption: PropTypes.number,\n transitionEasing: PropTypes.func,\n onTransitionStart: PropTypes.func,\n onTransitionInterrupt: PropTypes.func,\n onTransitionEnd: PropTypes.func,\n scrollZoom: PropTypes.bool,\n dragPan: PropTypes.bool,\n dragRotate: PropTypes.bool,\n doubleClickZoom: PropTypes.bool,\n touchZoom: PropTypes.bool,\n touchRotate: PropTypes.bool,\n keyboard: PropTypes.bool,\n onHover: PropTypes.func,\n onClick: PropTypes.func,\n onDblClick: PropTypes.func,\n onContextMenu: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchStart: PropTypes.func,\n onTouchMove: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOut: PropTypes.func,\n onWheel: PropTypes.func,\n touchAction: PropTypes.string,\n clickRadius: PropTypes.number,\n interactiveLayerIds: PropTypes.array,\n getCursor: PropTypes.func,\n controller: PropTypes.instanceOf(MapController)\n});\n\nvar getDefaultCursor = function getDefaultCursor(_ref) {\n var isDragging = _ref.isDragging,\n isHovering = _ref.isHovering;\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab';\n};\n\nvar defaultProps = Object.assign({}, StaticMap.defaultProps, MAPBOX_LIMITS, TransitionManager.defaultProps, {\n onViewStateChange: null,\n onViewportChange: null,\n onClick: null,\n onNativeClick: null,\n onHover: null,\n onContextMenu: function onContextMenu(event) {\n return event.preventDefault();\n },\n scrollZoom: true,\n dragPan: true,\n dragRotate: true,\n doubleClickZoom: true,\n touchZoom: true,\n touchRotate: false,\n keyboard: true,\n touchAction: 'none',\n clickRadius: 0,\n getCursor: getDefaultCursor\n});\n\nvar InteractiveMap = function (_PureComponent) {\n _inherits(InteractiveMap, _PureComponent);\n\n _createClass(InteractiveMap, null, [{\n key: \"supported\",\n value: function supported() {\n return StaticMap.supported();\n }\n }]);\n\n function InteractiveMap(props) {\n var _this;\n\n _classCallCheck(this, InteractiveMap);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InteractiveMap).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isLoaded: false,\n isDragging: false,\n isHovering: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_controller\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_eventManager\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_interactiveContext\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_width\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_height\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_eventCanvasRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_staticMapRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"getMap\", function () {\n return _this._staticMapRef.current ? _this._staticMapRef.current.getMap() : null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"queryRenderedFeatures\", function (geometry) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var map = _this.getMap();\n\n return map && map.queryRenderedFeatures(geometry, options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onInteractionStateChange\", function (interactionState) {\n var _interactionState$isD = interactionState.isDragging,\n isDragging = _interactionState$isD === void 0 ? false : _interactionState$isD;\n\n if (isDragging !== _this.state.isDragging) {\n _this._updateInteractiveContext({\n isDragging: isDragging\n });\n\n _this.setState({\n isDragging: isDragging\n });\n }\n\n var onInteractionStateChange = _this.props.onInteractionStateChange;\n\n if (onInteractionStateChange) {\n onInteractionStateChange(interactionState);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n _this._width = width;\n _this._height = height;\n\n _this._setControllerProps(_this.props);\n\n _this.props.onResize({\n width: width,\n height: height\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onViewportChange\", function (viewState, interactionState, oldViewState) {\n var _this$props = _this.props,\n onViewStateChange = _this$props.onViewStateChange,\n onViewportChange = _this$props.onViewportChange;\n\n if (onViewStateChange) {\n onViewStateChange({\n viewState: viewState,\n interactionState: interactionState,\n oldViewState: oldViewState\n });\n }\n\n if (onViewportChange) {\n onViewportChange(viewState, interactionState, oldViewState);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onLoad\", function (event) {\n _this.setState({\n isLoaded: true\n });\n\n _this.props.onLoad(event);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onEvent\", function (callbackName, event) {\n var func = _this.props[callbackName];\n\n if (func) {\n func(_this._normalizeEvent(event));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onPointerDown\", function (event) {\n switch (event.pointerType) {\n case 'touch':\n _this._onEvent('onTouchStart', event);\n\n break;\n\n default:\n _this._onEvent('onMouseDown', event);\n\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onPointerUp\", function (event) {\n switch (event.pointerType) {\n case 'touch':\n _this._onEvent('onTouchEnd', event);\n\n break;\n\n default:\n _this._onEvent('onMouseUp', event);\n\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onPointerMove\", function (event) {\n switch (event.pointerType) {\n case 'touch':\n _this._onEvent('onTouchMove', event);\n\n break;\n\n default:\n _this._onEvent('onMouseMove', event);\n\n }\n\n if (!_this.state.isDragging) {\n var _this$props2 = _this.props,\n onHover = _this$props2.onHover,\n interactiveLayerIds = _this$props2.interactiveLayerIds;\n var features;\n event = _this._normalizeEvent(event);\n\n if (_this.state.isLoaded && (interactiveLayerIds || onHover)) {\n features = _this._getFeatures({\n pos: event.point,\n radius: _this.props.clickRadius\n });\n }\n\n if (onHover) {\n event.features = features;\n onHover(event);\n }\n\n var isHovering = Boolean(interactiveLayerIds && features && features.length > 0);\n var isEntering = isHovering && !_this.state.isHovering;\n var isExiting = !isHovering && _this.state.isHovering;\n\n if (isEntering) {\n _this._onEvent('onMouseEnter', event);\n }\n\n if (isExiting) {\n _this._onEvent('onMouseLeave', event);\n }\n\n if (isEntering || isExiting) {\n _this.setState({\n isHovering: isHovering\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onClick\", function (event) {\n var _this$props3 = _this.props,\n onClick = _this$props3.onClick,\n onNativeClick = _this$props3.onNativeClick,\n onDblClick = _this$props3.onDblClick,\n doubleClickZoom = _this$props3.doubleClickZoom;\n var callbacks = [];\n var isDoubleClickEnabled = onDblClick || doubleClickZoom;\n\n switch (event.type) {\n case 'anyclick':\n callbacks.push(onNativeClick);\n\n if (!isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n\n break;\n\n case 'click':\n if (isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n\n break;\n\n default:\n }\n\n callbacks = callbacks.filter(Boolean);\n\n if (callbacks.length) {\n event = _this._normalizeEvent(event);\n event.features = _this._getFeatures({\n pos: event.point,\n radius: _this.props.clickRadius\n });\n callbacks.forEach(function (cb) {\n return cb(event);\n });\n }\n });\n\n deprecateWarn(props);\n _this._controller = props.controller || new MapController();\n _this._eventManager = new EventManager(null, {\n touchAction: props.touchAction\n });\n\n _this._updateInteractiveContext({\n isDragging: false,\n eventManager: _this._eventManager\n });\n\n return _this;\n }\n\n _createClass(InteractiveMap, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var eventManager = this._eventManager;\n var mapContainer = this._eventCanvasRef.current;\n eventManager.setElement(mapContainer);\n eventManager.on({\n pointerdown: this._onPointerDown,\n pointermove: this._onPointerMove,\n pointerup: this._onPointerUp,\n pointerleave: this._onEvent.bind(this, 'onMouseOut'),\n click: this._onClick,\n anyclick: this._onClick,\n dblclick: this._onEvent.bind(this, 'onDblClick'),\n wheel: this._onEvent.bind(this, 'onWheel'),\n contextmenu: this._onEvent.bind(this, 'onContextMenu')\n });\n\n this._setControllerProps(this.props);\n\n this._updateInteractiveContext({\n mapContainer: mapContainer\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setControllerProps(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._eventManager.destroy();\n }\n }, {\n key: \"_setControllerProps\",\n value: function _setControllerProps(props) {\n props = Object.assign({}, props, props.viewState, {\n isInteractive: Boolean(props.onViewStateChange || props.onViewportChange),\n onViewportChange: this._onViewportChange,\n onStateChange: this._onInteractionStateChange,\n eventManager: this._eventManager,\n width: this._width,\n height: this._height\n });\n\n this._controller.setOptions(props);\n\n var context = this._interactiveContext;\n context.onViewportChange = props.onViewportChange;\n context.onViewStateChange = props.onViewStateChange;\n }\n }, {\n key: \"_getFeatures\",\n value: function _getFeatures(_ref3) {\n var pos = _ref3.pos,\n radius = _ref3.radius;\n var features;\n var queryParams = {};\n var map = this.getMap();\n\n if (this.props.interactiveLayerIds) {\n queryParams.layers = this.props.interactiveLayerIds;\n }\n\n if (radius) {\n var size = radius;\n var bbox = [[pos[0] - size, pos[1] + size], [pos[0] + size, pos[1] - size]];\n features = map && map.queryRenderedFeatures(bbox, queryParams);\n } else {\n features = map && map.queryRenderedFeatures(pos, queryParams);\n }\n\n return features;\n }\n }, {\n key: \"_updateInteractiveContext\",\n value: function _updateInteractiveContext(updatedContext) {\n this._interactiveContext = Object.assign({}, this._interactiveContext, updatedContext);\n }\n }, {\n key: \"_normalizeEvent\",\n value: function _normalizeEvent(event) {\n if (event.lngLat) {\n return event;\n }\n\n var _event$offsetCenter = event.offsetCenter,\n x = _event$offsetCenter.x,\n y = _event$offsetCenter.y;\n var pos = [x, y];\n var viewport = new WebMercatorViewport(Object.assign({}, this.props, {\n width: this._width,\n height: this._height\n }));\n event.point = pos;\n event.lngLat = viewport.unproject(pos);\n return event;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n width = _this$props4.width,\n height = _this$props4.height,\n style = _this$props4.style,\n getCursor = _this$props4.getCursor;\n var eventCanvasStyle = Object.assign({\n position: 'relative'\n }, style, {\n width: width,\n height: height,\n cursor: getCursor(this.state)\n });\n return React.createElement(MapContext.Provider, {\n value: this._interactiveContext\n }, React.createElement(\"div\", {\n key: \"event-canvas\",\n ref: this._eventCanvasRef,\n style: eventCanvasStyle\n }, React.createElement(StaticMap, _extends({}, this.props, {\n width: \"100%\",\n height: \"100%\",\n style: null,\n onResize: this._onResize,\n onLoad: this._onLoad,\n ref: this._staticMapRef\n }), this.props.children)));\n }\n }]);\n\n return InteractiveMap;\n}(PureComponent);\n\n_defineProperty(InteractiveMap, \"propTypes\", propTypes);\n\n_defineProperty(InteractiveMap, \"defaultProps\", defaultProps);\n\nexport { InteractiveMap as default };","import \"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.is-array\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport default function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!a || !b) {\n return false;\n }\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n } else if (Array.isArray(b)) {\n return false;\n }\n\n if (_typeof(a) === 'object' && _typeof(b) === 'object') {\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (var _i = 0, _aKeys = aKeys; _i < _aKeys.length; _i++) {\n var key = _aKeys[_i];\n\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.array.map\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { PureComponent, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\nvar propTypes = {\n type: PropTypes.string.isRequired,\n id: PropTypes.string\n};\nvar sourceCounter = 0;\n\nvar Source = function (_PureComponent) {\n _inherits(Source, _PureComponent);\n\n function Source(_props) {\n var _this;\n\n _classCallCheck(this, Source);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Source).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"type\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_map\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_sourceOptions\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_updateSource\", function () {\n var _assertThisInitialize = _assertThisInitialized(_this),\n type = _assertThisInitialize.type,\n map = _assertThisInitialize._map;\n\n if (!map) {\n return;\n }\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n sourceOptions = _assertThisInitialize2._sourceOptions,\n props = _assertThisInitialize2.props;\n\n assert(!props.id || props.id === _this.id, 'source id changed');\n assert(props.type === type, 'source type changed');\n var changedKey = '';\n var changedKeyCount = 0;\n\n for (var key in props) {\n if (key !== 'children' && key !== 'id' && !deepEqual(sourceOptions[key], props[key])) {\n sourceOptions[key] = props[key];\n changedKey = key;\n changedKeyCount++;\n }\n }\n\n var source = _this.getSource();\n\n if (!source) {\n _this._createSource(sourceOptions);\n\n return;\n }\n\n if (!changedKeyCount) {\n return;\n }\n\n if (type === 'geojson') {\n source.setData(sourceOptions.data);\n } else if (type === 'image') {\n source.updateImage({\n url: sourceOptions.url,\n coordinates: sourceOptions.coordinates\n });\n } else if ((type === 'canvas' || type === 'video') && changedKeyCount === 1 && changedKey === 'coordinates') {\n source.setCoordinates(sourceOptions.coordinates);\n } else {\n console.warn(\"Unable to update prop: \".concat(changedKey));\n }\n });\n\n _this.id = _props.id || \"jsx-source-\".concat(sourceCounter++);\n _this.type = _props.type;\n return _this;\n }\n\n _createClass(Source, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this2 = this;\n\n var map = this._map;\n\n if (map) {\n map.off('styledata', this._updateSource);\n\n if (map.style) {\n requestAnimationFrame(function () {\n return map.removeSource(_this2.id);\n });\n }\n }\n }\n }, {\n key: \"getSource\",\n value: function getSource() {\n var map = this._map;\n return map && map.style && map.getSource(this.id);\n }\n }, {\n key: \"_createSource\",\n value: function _createSource(sourceOptions) {\n var map = this._map;\n\n if (map.style && map.style._loaded) {\n map.addSource(this.id, sourceOptions);\n }\n }\n }, {\n key: \"_render\",\n value: function _render(context) {\n var _this3 = this;\n\n if (!this._map && context.map) {\n this._map = context.map;\n\n this._map.on('styledata', this._updateSource);\n }\n\n this._updateSource();\n\n return React.Children.map(this.props.children, function (child) {\n return cloneElement(child, {\n source: _this3.id\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(MapContext.Consumer, null, this._render.bind(this));\n }\n }]);\n\n return Source;\n}(PureComponent);\n\n_defineProperty(Source, \"propTypes\", propTypes);\n\nexport { Source as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\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}","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}","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.filter\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\nvar propTypes = {\n type: PropTypes.string.isRequired,\n id: PropTypes.string,\n source: PropTypes.string,\n beforeId: PropTypes.string\n};\n\nfunction diffLayerStyles(map, id, props, prevProps) {\n var _props$layout = props.layout,\n layout = _props$layout === void 0 ? {} : _props$layout,\n _props$paint = props.paint,\n paint = _props$paint === void 0 ? {} : _props$paint,\n filter = props.filter,\n minzoom = props.minzoom,\n maxzoom = props.maxzoom,\n beforeId = props.beforeId,\n otherProps = _objectWithoutProperties(props, [\"layout\", \"paint\", \"filter\", \"minzoom\", \"maxzoom\", \"beforeId\"]);\n\n if (beforeId !== prevProps.beforeId) {\n map.moveLayer(id, beforeId);\n }\n\n if (layout !== prevProps.layout) {\n for (var key in layout) {\n if (!deepEqual(layout[key], prevProps.layout[key])) {\n map.setLayoutProperty(id, key, layout[key]);\n }\n }\n }\n\n if (paint !== prevProps.paint) {\n for (var _key in paint) {\n if (!deepEqual(paint[_key], prevProps.paint[_key])) {\n map.setPaintProperty(id, _key, paint[_key]);\n }\n }\n }\n\n if (!deepEqual(filter, prevProps.filter)) {\n map.setFilter(id, filter);\n }\n\n if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n map.setLayerZoomRange(id, minzoom, maxzoom);\n }\n\n for (var _key2 in otherProps) {\n if (!deepEqual(otherProps[_key2], prevProps[_key2])) {\n map.setLayerProperty(id, _key2, otherProps[_key2]);\n }\n }\n}\n\nvar layerCounter = 0;\n\nvar Layer = function (_PureComponent) {\n _inherits(Layer, _PureComponent);\n\n function Layer(_props) {\n var _this;\n\n _classCallCheck(this, Layer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Layer).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"type\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_map\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_layerOptions\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_updateLayer\", function () {\n var map = _this._map;\n\n if (!map) {\n return;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props,\n layerOptions = _assertThisInitialize._layerOptions;\n\n assert(!props.id || props.id === _this.id, 'layer id changed');\n assert(props.type === _this.type, 'layer type changed');\n\n if (!_this.getLayer()) {\n _this._createLayer();\n\n return;\n }\n\n try {\n diffLayerStyles(map, _this.id, props, layerOptions);\n Object.assign(layerOptions, props);\n } catch (error) {\n console.warn(error);\n }\n });\n\n _this.id = _props.id || \"jsx-layer-\".concat(layerCounter++);\n _this.type = _props.type;\n return _this;\n }\n\n _createClass(Layer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._updateLayer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._updateLayer();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var map = this._map;\n\n if (map) {\n map.off('styledata', this._updateLayer);\n\n if (map.style) {\n map.removeLayer(this.id);\n }\n }\n }\n }, {\n key: \"getLayer\",\n value: function getLayer() {\n var map = this._map;\n return map && map.style && map.getLayer(this.id);\n }\n }, {\n key: \"_createLayer\",\n value: function _createLayer() {\n var map = this._map;\n\n if (map.style && map.style._loaded) {\n var options = Object.assign({}, this.props);\n options.id = this.id;\n delete options.beforeId;\n map.addLayer(options, this.props.beforeId);\n this._layerOptions = options;\n }\n }\n }, {\n key: \"_render\",\n value: function _render(context) {\n if (!this._map && context.map) {\n this._map = context.map;\n\n this._map.on('styledata', this._updateLayer);\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(MapContext.Consumer, null, this._render.bind(this));\n }\n }]);\n\n return Layer;\n}(PureComponent);\n\n_defineProperty(Layer, \"propTypes\", propTypes);\n\nexport { Layer as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { PureComponent, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport MapContext from './map-context';\nvar propTypes = {\n captureScroll: PropTypes.bool,\n captureDrag: PropTypes.bool,\n captureClick: PropTypes.bool,\n captureDoubleClick: PropTypes.bool\n};\nvar defaultProps = {\n captureScroll: false,\n captureDrag: true,\n captureClick: true,\n captureDoubleClick: true\n};\n\nvar BaseControl = function (_PureComponent) {\n _inherits(BaseControl, _PureComponent);\n\n function BaseControl() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, BaseControl);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(BaseControl)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_context\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_events\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_containerRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (evt) {\n if (_this.props.captureScroll) {\n evt.stopPropagation();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", function (evt) {\n if (_this.props.captureDrag) {\n evt.stopPropagation();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onDblClick\", function (evt) {\n if (_this.props.captureDoubleClick) {\n evt.stopPropagation();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onClick\", function (evt) {\n if (_this.props.captureClick) {\n evt.stopPropagation();\n }\n });\n\n return _this;\n }\n\n _createClass(BaseControl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var ref = this._containerRef.current;\n\n if (!ref) {\n return;\n }\n\n var eventManager = this._context.eventManager;\n\n if (eventManager) {\n this._events = {\n wheel: this._onScroll,\n panstart: this._onDragStart,\n anyclick: this._onClick,\n click: this._onClick,\n dblclick: this._onDblClick\n };\n eventManager.watch(this._events, ref);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var eventManager = this._context.eventManager;\n\n if (eventManager && this._events) {\n eventManager.off(this._events);\n }\n }\n }, {\n key: \"_render\",\n value: function _render() {\n throw new Error('_render() not implemented');\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(MapContext.Consumer, null, function (context) {\n _this2._context = context;\n return _this2._render();\n });\n }\n }]);\n\n return BaseControl;\n}(PureComponent);\n\n_defineProperty(BaseControl, \"propTypes\", propTypes);\n\n_defineProperty(BaseControl, \"defaultProps\", defaultProps);\n\nexport { BaseControl as default };","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import \"core-js/modules/es6.object.assign\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n draggable: PropTypes.bool,\n onDrag: PropTypes.func,\n onDragEnd: PropTypes.func,\n onDragStart: PropTypes.func,\n offsetLeft: PropTypes.number,\n offsetTop: PropTypes.number\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n draggable: false,\n offsetLeft: 0,\n offsetTop: 0\n});\n\nvar DraggableControl = function (_BaseControl) {\n _inherits(DraggableControl, _BaseControl);\n\n function DraggableControl() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, DraggableControl);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DraggableControl)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dragPos: null,\n dragOffset: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_dragEvents\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", function (event) {\n var _this$props = _this.props,\n draggable = _this$props.draggable,\n captureDrag = _this$props.captureDrag;\n\n if (draggable || captureDrag) {\n event.stopPropagation();\n }\n\n if (!draggable) {\n return;\n }\n\n var dragPos = _this._getDragEventPosition(event);\n\n var dragOffset = _this._getDragEventOffset(event);\n\n _this.setState({\n dragPos: dragPos,\n dragOffset: dragOffset\n });\n\n _this._setupDragEvents();\n\n var onDragStart = _this.props.onDragStart;\n\n if (onDragStart && dragOffset) {\n var callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = _this._getDragLngLat(dragPos, dragOffset);\n onDragStart(callbackEvent);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onDrag\", function (event) {\n event.stopPropagation();\n\n var dragPos = _this._getDragEventPosition(event);\n\n _this.setState({\n dragPos: dragPos\n });\n\n var onDrag = _this.props.onDrag;\n var dragOffset = _this.state.dragOffset;\n\n if (onDrag && dragOffset) {\n var callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = _this._getDragLngLat(dragPos, dragOffset);\n onDrag(callbackEvent);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", function (event) {\n var _this$state = _this.state,\n dragPos = _this$state.dragPos,\n dragOffset = _this$state.dragOffset;\n event.stopPropagation();\n\n _this.setState({\n dragPos: null,\n dragOffset: null\n });\n\n _this._removeDragEvents();\n\n var onDragEnd = _this.props.onDragEnd;\n\n if (onDragEnd && dragPos && dragOffset) {\n var callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = _this._getDragLngLat(dragPos, dragOffset);\n onDragEnd(callbackEvent);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragCancel\", function (event) {\n event.stopPropagation();\n\n _this.setState({\n dragPos: null,\n dragOffset: null\n });\n\n _this._removeDragEvents();\n });\n\n return _this;\n }\n\n _createClass(DraggableControl, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n _get(_getPrototypeOf(DraggableControl.prototype), \"componentWillUnmount\", this).call(this);\n\n this._removeDragEvents();\n }\n }, {\n key: \"_setupDragEvents\",\n value: function _setupDragEvents() {\n var eventManager = this._context.eventManager;\n\n if (!eventManager) {\n return;\n }\n\n this._dragEvents = {\n panmove: this._onDrag,\n panend: this._onDragEnd,\n pancancel: this._onDragCancel\n };\n eventManager.on(this._dragEvents);\n }\n }, {\n key: \"_removeDragEvents\",\n value: function _removeDragEvents() {\n var eventManager = this._context.eventManager;\n\n if (!eventManager || !this._dragEvents) {\n return;\n }\n\n eventManager.off(this._dragEvents);\n this._dragEvents = null;\n }\n }, {\n key: \"_getDragEventPosition\",\n value: function _getDragEventPosition(event) {\n var _event$offsetCenter = event.offsetCenter,\n x = _event$offsetCenter.x,\n y = _event$offsetCenter.y;\n return [x, y];\n }\n }, {\n key: \"_getDragEventOffset\",\n value: function _getDragEventOffset(event) {\n var _event$center = event.center,\n x = _event$center.x,\n y = _event$center.y;\n var container = this._containerRef.current;\n\n if (container) {\n var rect = container.getBoundingClientRect();\n return [rect.left - x, rect.top - y];\n }\n\n return null;\n }\n }, {\n key: \"_getDraggedPosition\",\n value: function _getDraggedPosition(dragPos, dragOffset) {\n return [dragPos[0] + dragOffset[0], dragPos[1] + dragOffset[1]];\n }\n }, {\n key: \"_getDragLngLat\",\n value: function _getDragLngLat(dragPos, dragOffset) {\n var _this$props2 = this.props,\n offsetLeft = _this$props2.offsetLeft,\n offsetTop = _this$props2.offsetTop;\n\n var _this$_getDraggedPosi = this._getDraggedPosition(dragPos, dragOffset),\n _this$_getDraggedPosi2 = _slicedToArray(_this$_getDraggedPosi, 2),\n x = _this$_getDraggedPosi2[0],\n y = _this$_getDraggedPosi2[1];\n\n return this._context.viewport.unproject([x - offsetLeft, y - offsetTop]);\n }\n }]);\n\n return DraggableControl;\n}(BaseControl);\n\n_defineProperty(DraggableControl, \"propTypes\", propTypes);\n\n_defineProperty(DraggableControl, \"defaultProps\", defaultProps);\n\nexport { DraggableControl as default };","var pixelRatio = typeof window !== 'undefined' && window.devicePixelRatio || 1;\nexport var crispPixel = function crispPixel(size) {\n return Math.round(size * pixelRatio) / pixelRatio;\n};\nexport var crispPercentage = function crispPercentage(el, percentage) {\n var dimension = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n\n if (el === null) {\n return percentage;\n }\n\n var origSize = dimension === 'x' ? el.offsetWidth : el.offsetHeight;\n return crispPixel(percentage / 100 * origSize) / origSize * 100;\n};","import \"core-js/modules/es6.object.assign\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport DraggableControl from './draggable-control';\nimport { crispPixel } from '../utils/crisp-pixel';\nvar propTypes = Object.assign({}, DraggableControl.propTypes, {\n className: PropTypes.string,\n longitude: PropTypes.number.isRequired,\n latitude: PropTypes.number.isRequired\n});\nvar defaultProps = Object.assign({}, DraggableControl.defaultProps, {\n className: ''\n});\n\nvar Marker = function (_DraggableControl) {\n _inherits(Marker, _DraggableControl);\n\n function Marker() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Marker);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Marker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_control\", null);\n\n return _this;\n }\n\n _createClass(Marker, [{\n key: \"_getPosition\",\n value: function _getPosition() {\n var _this$props = this.props,\n longitude = _this$props.longitude,\n latitude = _this$props.latitude,\n offsetLeft = _this$props.offsetLeft,\n offsetTop = _this$props.offsetTop;\n var _this$state = this.state,\n dragPos = _this$state.dragPos,\n dragOffset = _this$state.dragOffset;\n\n if (dragPos && dragOffset) {\n return this._getDraggedPosition(dragPos, dragOffset);\n }\n\n var _this$_context$viewpo = this._context.viewport.project([longitude, latitude]),\n _this$_context$viewpo2 = _slicedToArray(_this$_context$viewpo, 2),\n x = _this$_context$viewpo2[0],\n y = _this$_context$viewpo2[1];\n\n x += offsetLeft;\n y += offsetTop;\n return [x, y];\n }\n }, {\n key: \"_render\",\n value: function _render() {\n var _this$_getPosition = this._getPosition(),\n _this$_getPosition2 = _slicedToArray(_this$_getPosition, 2),\n x = _this$_getPosition2[0],\n y = _this$_getPosition2[1];\n\n var transform = \"translate(\".concat(crispPixel(x), \"px, \").concat(crispPixel(y), \"px)\");\n var div = this._containerRef.current;\n\n if (this._control && div) {\n div.style.transform = transform;\n } else {\n var _this$props2 = this.props,\n className = _this$props2.className,\n draggable = _this$props2.draggable;\n var dragPos = this.state.dragPos;\n var containerStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n transform: transform,\n cursor: draggable ? dragPos ? 'grabbing' : 'grab' : 'auto'\n };\n this._control = React.createElement(\"div\", {\n className: \"mapboxgl-marker \".concat(className),\n ref: this._containerRef,\n style: containerStyle\n }, this.props.children);\n }\n\n return this._control;\n }\n }, {\n key: \"render\",\n value: function render() {\n this._control = null;\n return _get(_getPrototypeOf(Marker.prototype), \"render\", this).call(this);\n }\n }]);\n\n return Marker;\n}(DraggableControl);\n\n_defineProperty(Marker, \"propTypes\", propTypes);\n\n_defineProperty(Marker, \"defaultProps\", defaultProps);\n\nexport { Marker as default };","import \"core-js/modules/es6.array.find\";\nimport \"core-js/modules/es6.string.anchor\";\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\";\nexport var ANCHOR_POSITION = {\n top: {\n x: 0.5,\n y: 0\n },\n 'top-left': {\n x: 0,\n y: 0\n },\n 'top-right': {\n x: 1,\n y: 0\n },\n bottom: {\n x: 0.5,\n y: 1\n },\n 'bottom-left': {\n x: 0,\n y: 1\n },\n 'bottom-right': {\n x: 1,\n y: 1\n },\n left: {\n x: 0,\n y: 0.5\n },\n right: {\n x: 1,\n y: 0.5\n }\n};\nvar ANCHOR_TYPES = Object.keys(ANCHOR_POSITION);\nexport function getDynamicPosition(_ref) {\n var x = _ref.x,\n y = _ref.y,\n width = _ref.width,\n height = _ref.height,\n selfWidth = _ref.selfWidth,\n selfHeight = _ref.selfHeight,\n anchor = _ref.anchor,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 0 : _ref$padding;\n var _ANCHOR_POSITION$anch = ANCHOR_POSITION[anchor],\n anchorX = _ANCHOR_POSITION$anch.x,\n anchorY = _ANCHOR_POSITION$anch.y;\n var top = y - anchorY * selfHeight;\n var bottom = top + selfHeight;\n var yStep = 0.5;\n\n if (top < padding) {\n while (top < padding && anchorY >= yStep) {\n anchorY -= yStep;\n top += yStep * selfHeight;\n }\n } else if (bottom > height - padding) {\n while (bottom > height - padding && anchorY <= 1 - yStep) {\n anchorY += yStep;\n bottom -= yStep * selfHeight;\n }\n }\n\n var left = x - anchorX * selfWidth;\n var right = left + selfWidth;\n var xStep = 0.5;\n\n if (anchorY === 0.5) {\n anchorX = Math.floor(anchorX);\n xStep = 1;\n }\n\n if (left < padding) {\n while (left < padding && anchorX >= xStep) {\n anchorX -= xStep;\n left += xStep * selfWidth;\n }\n } else if (right > width - padding) {\n while (right > width - padding && anchorX <= 1 - xStep) {\n anchorX += xStep;\n right -= xStep * selfWidth;\n }\n }\n\n return ANCHOR_TYPES.find(function (positionType) {\n var anchorPosition = ANCHOR_POSITION[positionType];\n return anchorPosition.x === anchorX && anchorPosition.y === anchorY;\n }) || anchor;\n}","import \"core-js/modules/es6.string.anchor\";\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.object.assign\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport { getDynamicPosition, ANCHOR_POSITION } from '../utils/dynamic-position';\nimport { crispPercentage, crispPixel } from '../utils/crisp-pixel';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n className: PropTypes.string,\n longitude: PropTypes.number.isRequired,\n latitude: PropTypes.number.isRequired,\n altitude: PropTypes.number,\n offsetLeft: PropTypes.number,\n offsetTop: PropTypes.number,\n tipSize: PropTypes.number,\n closeButton: PropTypes.bool,\n closeOnClick: PropTypes.bool,\n anchor: PropTypes.oneOf(Object.keys(ANCHOR_POSITION)),\n dynamicPosition: PropTypes.bool,\n sortByDepth: PropTypes.bool,\n onClose: PropTypes.func\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n altitude: 0,\n offsetLeft: 0,\n offsetTop: 0,\n tipSize: 10,\n anchor: 'bottom',\n dynamicPosition: true,\n sortByDepth: false,\n closeButton: true,\n closeOnClick: true,\n onClose: function onClose() {}\n});\n\nvar Popup = function (_BaseControl) {\n _inherits(Popup, _BaseControl);\n\n function Popup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Popup);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Popup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_closeOnClick\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_contentRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_onClick\", function (evt) {\n if (_this.props.captureClick) {\n evt.stopPropagation();\n }\n\n if (_this.props.closeOnClick || evt.target.className === 'mapboxgl-popup-close-button') {\n _this.props.onClose();\n\n var eventManager = _this._context.eventManager;\n\n if (eventManager) {\n eventManager.once('click', function (e) {\n return e.stopPropagation();\n }, evt.target);\n }\n }\n });\n\n return _this;\n }\n\n _createClass(Popup, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n _get(_getPrototypeOf(Popup.prototype), \"componentDidMount\", this).call(this);\n\n this.forceUpdate();\n }\n }, {\n key: \"_getPosition\",\n value: function _getPosition(x, y) {\n var viewport = this._context.viewport;\n var _this$props = this.props,\n anchor = _this$props.anchor,\n dynamicPosition = _this$props.dynamicPosition,\n tipSize = _this$props.tipSize;\n var content = this._contentRef.current;\n\n if (content) {\n return dynamicPosition ? getDynamicPosition({\n x: x,\n y: y,\n anchor: anchor,\n padding: tipSize,\n width: viewport.width,\n height: viewport.height,\n selfWidth: content.clientWidth,\n selfHeight: content.clientHeight\n }) : anchor;\n }\n\n return anchor;\n }\n }, {\n key: \"_getContainerStyle\",\n value: function _getContainerStyle(x, y, z, positionType) {\n var viewport = this._context.viewport;\n var _this$props2 = this.props,\n offsetLeft = _this$props2.offsetLeft,\n offsetTop = _this$props2.offsetTop,\n sortByDepth = _this$props2.sortByDepth;\n var anchorPosition = ANCHOR_POSITION[positionType];\n var left = x + offsetLeft;\n var top = y + offsetTop;\n var el = this._containerRef.current;\n var xPercentage = crispPercentage(el, -anchorPosition.x * 100);\n var yPercentage = crispPercentage(el, -anchorPosition.y * 100, 'y');\n var style = {\n position: 'absolute',\n transform: \"\\n translate(\".concat(xPercentage, \"%, \").concat(yPercentage, \"%)\\n translate(\").concat(crispPixel(left), \"px, \").concat(crispPixel(top), \"px)\\n \"),\n display: undefined,\n zIndex: undefined\n };\n\n if (!sortByDepth) {\n return style;\n }\n\n if (z > 1 || z < -1 || x < 0 || x > viewport.width || y < 0 || y > viewport.height) {\n style.display = 'none';\n } else {\n style.zIndex = Math.floor((1 - z) / 2 * 100000);\n }\n\n return style;\n }\n }, {\n key: \"_renderTip\",\n value: function _renderTip(positionType) {\n var tipSize = this.props.tipSize;\n return React.createElement(\"div\", {\n key: \"tip\",\n className: \"mapboxgl-popup-tip\",\n style: {\n borderWidth: tipSize\n }\n });\n }\n }, {\n key: \"_renderContent\",\n value: function _renderContent() {\n var _this$props3 = this.props,\n closeButton = _this$props3.closeButton,\n children = _this$props3.children;\n var onClick = this._context.eventManager ? null : this._onClick;\n return React.createElement(\"div\", {\n key: \"content\",\n ref: this._contentRef,\n className: \"mapboxgl-popup-content\",\n onClick: onClick\n }, closeButton && React.createElement(\"button\", {\n key: \"close-button\",\n className: \"mapboxgl-popup-close-button\",\n type: \"button\"\n }, \"\\xD7\"), children);\n }\n }, {\n key: \"_render\",\n value: function _render() {\n var _this$props4 = this.props,\n className = _this$props4.className,\n longitude = _this$props4.longitude,\n latitude = _this$props4.latitude,\n altitude = _this$props4.altitude;\n\n var _this$_context$viewpo = this._context.viewport.project([longitude, latitude, altitude]),\n _this$_context$viewpo2 = _slicedToArray(_this$_context$viewpo, 3),\n x = _this$_context$viewpo2[0],\n y = _this$_context$viewpo2[1],\n z = _this$_context$viewpo2[2];\n\n var positionType = this._getPosition(x, y);\n\n var containerStyle = this._getContainerStyle(x, y, z, positionType);\n\n return React.createElement(\"div\", {\n className: \"mapboxgl-popup mapboxgl-popup-anchor-\".concat(positionType, \" \").concat(className),\n style: containerStyle,\n ref: this._containerRef\n }, this._renderTip(positionType), this._renderContent());\n }\n }]);\n\n return Popup;\n}(BaseControl);\n\n_defineProperty(Popup, \"propTypes\", propTypes);\n\n_defineProperty(Popup, \"defaultProps\", defaultProps);\n\nexport { Popup as default };","import \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { document } from '../utils/globals';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport * as React from 'react';\nimport mapboxgl from '../utils/mapboxgl';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n className: PropTypes.string,\n container: PropTypes.object\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n container: null\n});\n\nvar FullscreenControl = function (_BaseControl) {\n _inherits(FullscreenControl, _BaseControl);\n\n function FullscreenControl() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, FullscreenControl);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(FullscreenControl)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isFullscreen: false,\n showButton: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_mapboxFullscreenControl\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_onFullscreenChange\", function () {\n var nextState = !_this._mapboxFullscreenControl._fullscreen;\n _this._mapboxFullscreenControl._fullscreen = nextState;\n\n _this.setState({\n isFullscreen: nextState\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onClickFullscreen\", function () {\n _this._mapboxFullscreenControl._onClickFullscreen();\n });\n\n return _this;\n }\n\n _createClass(FullscreenControl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var container = this.props.container || this._context.mapContainer;\n this._mapboxFullscreenControl = new mapboxgl.FullscreenControl({\n container: container\n });\n this.setState({\n showButton: this._mapboxFullscreenControl._checkFullscreenSupport()\n });\n document.addEventListener(this._mapboxFullscreenControl._fullscreenchange, this._onFullscreenChange);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener(this._mapboxFullscreenControl._fullscreenchange, this._onFullscreenChange);\n }\n }, {\n key: \"_renderButton\",\n value: function _renderButton(type, label, callback) {\n return React.createElement(\"button\", {\n key: type,\n className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-\".concat(type),\n type: \"button\",\n title: label,\n onClick: callback\n }, React.createElement(\"span\", {\n className: \"mapboxgl-ctrl-icon\",\n \"aria-hidden\": \"true\"\n }));\n }\n }, {\n key: \"_render\",\n value: function _render() {\n if (!this.state.showButton) {\n return null;\n }\n\n var className = this.props.className;\n var isFullscreen = this.state.isFullscreen;\n var type = isFullscreen ? 'shrink' : 'fullscreen';\n return React.createElement(\"div\", {\n className: \"mapboxgl-ctrl mapboxgl-ctrl-group \".concat(className),\n ref: this._containerRef\n }, this._renderButton(type, 'Toggle fullscreen', this._onClickFullscreen));\n }\n }]);\n\n return FullscreenControl;\n}(BaseControl);\n\n_defineProperty(FullscreenControl, \"propTypes\", propTypes);\n\n_defineProperty(FullscreenControl, \"defaultProps\", defaultProps);\n\nexport { FullscreenControl as default };","import \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nvar supported;\nexport function isGeolocationSupported() {\n if (supported !== undefined) {\n return Promise.resolve(supported);\n }\n\n if (window.navigator.permissions !== undefined) {\n return window.navigator.permissions.query({\n name: 'geolocation'\n }).then(function (p) {\n supported = p.state !== 'denied';\n return supported;\n });\n }\n\n supported = Boolean(window.navigator.geolocation);\n return Promise.resolve(supported);\n}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport mapboxgl from '../utils/mapboxgl';\nimport BaseControl from './base-control';\nimport Marker from './marker';\nimport MapState from '../utils/map-state';\nimport TransitionManager from '../utils/transition-manager';\nimport { isGeolocationSupported } from '../utils/geolocate-utils';\nvar LINEAR_TRANSITION_PROPS = Object.assign({}, TransitionManager.defaultProps, {\n transitionDuration: 500\n});\n\nvar noop = function noop() {};\n\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n className: PropTypes.string,\n style: PropTypes.object,\n label: PropTypes.string,\n positionOptions: PropTypes.object,\n fitBoundsOptions: PropTypes.object,\n trackUserLocation: PropTypes.bool,\n showUserLocation: PropTypes.bool,\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n onGeolocate: PropTypes.func\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n style: {},\n label: 'Geolocate',\n positionOptions: null,\n fitBoundsOptions: null,\n trackUserLocation: false,\n showUserLocation: true,\n onGeolocate: function onGeolocate() {}\n});\n\nvar GeolocateControl = function (_BaseControl) {\n _inherits(GeolocateControl, _BaseControl);\n\n function GeolocateControl() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, GeolocateControl);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(GeolocateControl)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n supportsGeolocation: false,\n markerPosition: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_mapboxGeolocateControl\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_geolocateButtonRef\", createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_setupMapboxGeolocateControl\", function (supportsGeolocation) {\n if (!supportsGeolocation) {\n console.warn('Geolocation support is not available, the GeolocateControl will not be visible.');\n return;\n }\n\n var controlOptions = {\n showUserLocation: false\n };\n ['positionOptions', 'fitBoundsOptions', 'trackUserLocation'].forEach(function (prop) {\n if (prop in _this.props && _this.props[prop] !== null) {\n controlOptions[prop] = _this.props[prop];\n }\n });\n var control = new mapboxgl.GeolocateControl(controlOptions);\n _this._mapboxGeolocateControl = control;\n control._watchState = 'OFF';\n control._geolocateButton = _this._geolocateButtonRef.current;\n\n if (control.options.trackUserLocation && control._geolocateButton) {\n control._geolocateButton.setAttribute('aria-pressed', 'false');\n }\n\n control._updateMarker = _this._updateMarker;\n control._updateCamera = _this._updateCamera;\n control._setup = true;\n var eventManager = _this._context.eventManager;\n\n if (control.options.trackUserLocation && eventManager) {\n eventManager.on('panstart', function () {\n if (control._watchState === 'ACTIVE_LOCK') {\n control._watchState = 'BACKGROUND';\n\n control._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n\n control._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n }\n });\n }\n\n control.on('geolocate', _this.props.onGeolocate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onClickGeolocate\", function () {\n var control = _this._mapboxGeolocateControl;\n control._map = _this._context.map;\n\n if (_this.props.showUserLocation) {\n control.on('geolocate', _this._updateMarker);\n control.on('trackuserlocationend', _this._updateMarker);\n }\n\n return _this._mapboxGeolocateControl.trigger();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateMarker\", function (position) {\n if (position) {\n _this.setState({\n markerPosition: position.coords\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_getBounds\", function (position) {\n var center = new mapboxgl.LngLat(position.coords.longitude, position.coords.latitude);\n var radius = position.coords.accuracy;\n var bounds = center.toBounds(radius);\n return [[bounds._ne.lng, bounds._ne.lat], [bounds._sw.lng, bounds._sw.lat]];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateCamera\", function (position) {\n var viewport = _this._context.viewport;\n\n var bounds = _this._getBounds(position);\n\n var _fitBounds = new WebMercatorViewport(viewport).fitBounds(bounds),\n longitude = _fitBounds.longitude,\n latitude = _fitBounds.latitude,\n zoom = _fitBounds.zoom;\n\n var newViewState = Object.assign({}, viewport, {\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n var mapState = new MapState(newViewState);\n var viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n var onViewportChange = _this.props.onViewportChange || _this._context.onViewportChange || noop;\n var onViewStateChange = _this.props.onViewStateChange || _this._context.onViewStateChange || noop;\n onViewStateChange({\n viewState: viewState\n });\n onViewportChange(viewState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderButton\", function (type, label, callback) {\n return React.createElement(\"button\", {\n key: type,\n className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-\".concat(type),\n ref: _this._geolocateButtonRef,\n type: \"button\",\n title: label,\n onClick: callback\n }, React.createElement(\"span\", {\n className: \"mapboxgl-ctrl-icon\",\n \"aria-hidden\": \"true\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderMarker\", function () {\n var markerPosition = _this.state.markerPosition;\n var showUserLocation = _this.props.showUserLocation;\n\n if (!markerPosition || !showUserLocation) {\n return null;\n }\n\n return React.createElement(Marker, {\n key: \"location-maker\",\n className: \"mapboxgl-user-location-dot\",\n longitude: markerPosition.longitude,\n latitude: markerPosition.latitude,\n onContextMenu: function onContextMenu(e) {\n return e.preventDefault();\n },\n captureDrag: false,\n captureDoubleClick: false\n });\n });\n\n return _this;\n }\n\n _createClass(GeolocateControl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n isGeolocationSupported().then(function (result) {\n _this2.setState({\n supportsGeolocation: result\n });\n\n _this2._setupMapboxGeolocateControl(result);\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._mapboxGeolocateControl) {\n var geolocationWatchID = this._mapboxGeolocateControl._geolocationWatchID;\n\n if (geolocationWatchID !== undefined) {\n window.navigator.geolocation.clearWatch(geolocationWatchID);\n this._mapboxGeolocateControl._geolocationWatchID = undefined;\n }\n }\n }\n }, {\n key: \"_render\",\n value: function _render() {\n if (!this.state.supportsGeolocation) {\n return null;\n }\n\n var _this$props = this.props,\n className = _this$props.className,\n style = _this$props.style,\n label = _this$props.label;\n return React.createElement(\"div\", null, this._renderMarker(), React.createElement(\"div\", {\n key: \"geolocate-control\",\n className: \"mapboxgl-ctrl mapboxgl-ctrl-group \".concat(className),\n ref: this._containerRef,\n style: style,\n onContextMenu: function onContextMenu(e) {\n return e.preventDefault();\n }\n }, this._renderButton('geolocate', label, this._onClickGeolocate)));\n }\n }]);\n\n return GeolocateControl;\n}(BaseControl);\n\n_defineProperty(GeolocateControl, \"propTypes\", propTypes);\n\n_defineProperty(GeolocateControl, \"defaultProps\", defaultProps);\n\nexport { GeolocateControl as default };","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport MapState from '../utils/map-state';\nimport { LINEAR_TRANSITION_PROPS } from '../utils/map-controller';\nimport deprecateWarn from '../utils/deprecate-warn';\nimport { compareVersions } from '../utils/version';\n\nvar noop = function noop() {};\n\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n className: PropTypes.string,\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n showCompass: PropTypes.bool,\n showZoom: PropTypes.bool,\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n compassLabel: PropTypes.string\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n className: '',\n showCompass: true,\n showZoom: true,\n zoomInLabel: 'Zoom In',\n zoomOutLabel: 'Zoom Out',\n compassLabel: 'Reset North'\n});\nvar VERSION_LEGACY = 1;\nvar VERSION_1_6 = 2;\n\nfunction getUIVersion(mapboxVersion) {\n return compareVersions(mapboxVersion, '1.6.0') >= 0 ? VERSION_1_6 : VERSION_LEGACY;\n}\n\nvar NavigationControl = function (_BaseControl) {\n _inherits(NavigationControl, _BaseControl);\n\n function NavigationControl(props) {\n var _this;\n\n _classCallCheck(this, NavigationControl);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NavigationControl).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_uiVersion\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onZoomIn\", function () {\n _this._updateViewport({\n zoom: _this._context.viewport.zoom + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onZoomOut\", function () {\n _this._updateViewport({\n zoom: _this._context.viewport.zoom - 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResetNorth\", function () {\n _this._updateViewport({\n bearing: 0,\n pitch: 0\n });\n });\n\n deprecateWarn(props);\n return _this;\n }\n\n _createClass(NavigationControl, [{\n key: \"_updateViewport\",\n value: function _updateViewport(opts) {\n var viewport = this._context.viewport;\n var mapState = new MapState(Object.assign({}, viewport, opts));\n var viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n var onViewportChange = this.props.onViewportChange || this._context.onViewportChange || noop;\n var onViewStateChange = this.props.onViewStateChange || this._context.onViewStateChange || noop;\n onViewStateChange({\n viewState: viewState\n });\n onViewportChange(viewState);\n }\n }, {\n key: \"_renderCompass\",\n value: function _renderCompass() {\n var bearing = this._context.viewport.bearing;\n var style = {\n transform: \"rotate(\".concat(-bearing, \"deg)\")\n };\n return this._uiVersion === VERSION_1_6 ? React.createElement(\"span\", {\n className: \"mapboxgl-ctrl-icon\",\n \"aria-hidden\": \"true\",\n style: style\n }) : React.createElement(\"span\", {\n className: \"mapboxgl-ctrl-compass-arrow\",\n style: style\n });\n }\n }, {\n key: \"_renderButton\",\n value: function _renderButton(type, label, callback, children) {\n return React.createElement(\"button\", {\n key: type,\n className: \"mapboxgl-ctrl-icon mapboxgl-ctrl-\".concat(type),\n type: \"button\",\n title: label,\n onClick: callback\n }, children || React.createElement(\"span\", {\n className: \"mapboxgl-ctrl-icon\",\n \"aria-hidden\": \"true\"\n }));\n }\n }, {\n key: \"_render\",\n value: function _render() {\n var _this$props = this.props,\n className = _this$props.className,\n showCompass = _this$props.showCompass,\n showZoom = _this$props.showZoom,\n zoomInLabel = _this$props.zoomInLabel,\n zoomOutLabel = _this$props.zoomOutLabel,\n compassLabel = _this$props.compassLabel;\n\n if (!this._uiVersion) {\n var map = this._context.map;\n this._uiVersion = getUIVersion(map && map.version);\n }\n\n return React.createElement(\"div\", {\n className: \"mapboxgl-ctrl mapboxgl-ctrl-group \".concat(className),\n ref: this._containerRef\n }, showZoom && this._renderButton('zoom-in', zoomInLabel, this._onZoomIn), showZoom && this._renderButton('zoom-out', zoomOutLabel, this._onZoomOut), showCompass && this._renderButton('compass', compassLabel, this._onResetNorth, this._renderCompass()));\n }\n }]);\n\n return NavigationControl;\n}(BaseControl);\n\n_defineProperty(NavigationControl, \"propTypes\", propTypes);\n\n_defineProperty(NavigationControl, \"defaultProps\", defaultProps);\n\nexport { NavigationControl as default };","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.map\";\nexport function compareVersions(version1, version2) {\n var v1 = (version1 || '').split('.').map(Number);\n var v2 = (version2 || '').split('.').map(Number);\n\n for (var i = 0; i < 3; i++) {\n var part1 = v1[i] || 0;\n var part2 = v2[i] || 0;\n\n if (part1 < part2) {\n return -1;\n }\n\n if (part1 > part2) {\n return 1;\n }\n }\n\n return 0;\n}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from './base-control';\nimport mapboxgl from '../utils/mapboxgl';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n maxWidth: PropTypes.number,\n unit: PropTypes.oneOf(['imperial', 'metric', 'nautical'])\n});\nvar defaultProps = Object.assign({}, BaseControl.defaultProps, {\n maxWidth: 100,\n unit: 'metric'\n});\n\nvar ScaleControl = function (_BaseControl) {\n _inherits(ScaleControl, _BaseControl);\n\n function ScaleControl() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScaleControl);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScaleControl)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_control\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_mapboxScaleControl\", null);\n\n return _this;\n }\n\n _createClass(ScaleControl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var mapboxScaleControl = new mapboxgl.ScaleControl();\n mapboxScaleControl._map = this._context.map;\n mapboxScaleControl._container = this._containerRef.current;\n this._mapboxScaleControl = mapboxScaleControl;\n\n this._update();\n }\n }, {\n key: \"_update\",\n value: function _update() {\n var mapboxScaleControl = this._mapboxScaleControl;\n\n if (mapboxScaleControl) {\n mapboxScaleControl.options = this.props;\n\n mapboxScaleControl._onMove();\n }\n }\n }, {\n key: \"_render\",\n value: function _render() {\n this._control = this._control || React.createElement(\"div\", {\n ref: this._containerRef,\n className: \"mapboxgl-ctrl mapboxgl-ctrl-scale\"\n });\n\n this._update();\n\n return this._control;\n }\n }]);\n\n return ScaleControl;\n}(BaseControl);\n\n_defineProperty(ScaleControl, \"propTypes\", propTypes);\n\n_defineProperty(ScaleControl, \"defaultProps\", defaultProps);\n\nexport { ScaleControl as default };","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\nimport { window } from '../utils/globals';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired\n});\nvar defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nvar CanvasOverlay = function (_BaseControl) {\n _inherits(CanvasOverlay, _BaseControl);\n\n function CanvasOverlay() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CanvasOverlay);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CanvasOverlay)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_canvas\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_ctx\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_redraw\", function () {\n var ctx = _this._ctx;\n\n if (!ctx) {\n return;\n }\n\n var pixelRatio = window.devicePixelRatio || 1;\n ctx.save();\n ctx.scale(pixelRatio, pixelRatio);\n var _this$_context = _this._context,\n viewport = _this$_context.viewport,\n isDragging = _this$_context.isDragging;\n\n _this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n ctx: ctx,\n isDragging: isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n });\n\n ctx.restore();\n });\n\n return _this;\n }\n\n _createClass(CanvasOverlay, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var canvas = this._containerRef.current;\n\n if (canvas) {\n this._canvas = canvas;\n this._ctx = canvas.getContext('2d');\n }\n\n this._redraw();\n }\n }, {\n key: \"_render\",\n value: function _render() {\n var pixelRatio = window.devicePixelRatio || 1;\n var _this$_context$viewpo = this._context.viewport,\n width = _this$_context$viewpo.width,\n height = _this$_context$viewpo.height;\n\n this._redraw();\n\n return React.createElement(\"canvas\", {\n ref: this._containerRef,\n width: width * pixelRatio,\n height: height * pixelRatio,\n style: {\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n position: 'absolute',\n left: 0,\n top: 0\n }\n });\n }\n }]);\n\n return CanvasOverlay;\n}(BaseControl);\n\n_defineProperty(CanvasOverlay, \"propTypes\", propTypes);\n\n_defineProperty(CanvasOverlay, \"defaultProps\", defaultProps);\n\nexport { CanvasOverlay as default };","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\nvar defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nvar HTMLOverlay = function (_BaseControl) {\n _inherits(HTMLOverlay, _BaseControl);\n\n function HTMLOverlay() {\n _classCallCheck(this, HTMLOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(HTMLOverlay).apply(this, arguments));\n }\n\n _createClass(HTMLOverlay, [{\n key: \"_render\",\n value: function _render() {\n var _this$_context = this._context,\n viewport = _this$_context.viewport,\n isDragging = _this$_context.isDragging;\n var style = Object.assign({\n position: 'absolute',\n left: 0,\n top: 0,\n width: viewport.width,\n height: viewport.height\n }, this.props.style);\n return React.createElement(\"div\", {\n ref: this._containerRef,\n style: style\n }, this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging: isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n }));\n }\n }]);\n\n return HTMLOverlay;\n}(BaseControl);\n\n_defineProperty(HTMLOverlay, \"propTypes\", propTypes);\n\n_defineProperty(HTMLOverlay, \"defaultProps\", defaultProps);\n\nexport { HTMLOverlay as default };","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.assign\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport BaseControl from '../components/base-control';\nvar propTypes = Object.assign({}, BaseControl.propTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\nvar defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false\n};\n\nvar SVGOverlay = function (_BaseControl) {\n _inherits(SVGOverlay, _BaseControl);\n\n function SVGOverlay() {\n _classCallCheck(this, SVGOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SVGOverlay).apply(this, arguments));\n }\n\n _createClass(SVGOverlay, [{\n key: \"_render\",\n value: function _render() {\n var _this$_context = this._context,\n viewport = _this$_context.viewport,\n isDragging = _this$_context.isDragging;\n var style = Object.assign({\n position: 'absolute',\n left: 0,\n top: 0\n }, this.props.style);\n return React.createElement(\"svg\", {\n width: viewport.width,\n height: viewport.height,\n ref: this._containerRef,\n style: style\n }, this.props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging: isDragging,\n project: viewport.project.bind(viewport),\n unproject: viewport.unproject.bind(viewport)\n }));\n }\n }]);\n\n return SVGOverlay;\n}(BaseControl);\n\n_defineProperty(SVGOverlay, \"propTypes\", propTypes);\n\n_defineProperty(SVGOverlay, \"defaultProps\", defaultProps);\n\nexport { SVGOverlay as default };","import mapboxgl from './mapboxgl';\nvar setRTLTextPlugin = mapboxgl ? mapboxgl.setRTLTextPlugin : function () {};\nexport default setRTLTextPlugin;","import React, {useState} from 'react'\nimport MapGL, {Marker} from 'react-map-gl'\nimport 'mapbox-gl/dist/mapbox-gl.css';\nimport styled from '@emotion/styled';\nimport LocationMarker from '../../images/icons/location-marker.svg';\n\nconst MapWrapper = styled.div`\n ${tw`h-64 w-full`}\n`\n\n\nexport default function Map ({lat, lon, actorsLocation}) {\n\n const [viewport, setViewport] = useState({\n width: '100%',\n height: '100%',\n latitude: lat,\n longitude: lon,\n zoom: 12,\n });\n \n return(\n \n \n setViewport(nextViewport)}\n mapboxApiAccessToken={process.env.GATSBY_MAPBOX_TOKEN}\n mapStyle=\"mapbox://styles/mapbox/streets-v11\"\n style={{pointerEvents: 'none'}}\n >\n {(actorsLocation.length > 0) ? \n actorsLocation.map(({localisation}, i) => {\n return(\n \n {\n (localisation.lon === lon && localisation.lat === lat) ?\n \n :\n \n }\n \n \n )\n }) : \n \n \n \n \n \n }\n \n \n \n )\n}\n\n","import React from 'react'\nimport styled from '@emotion/styled'\n\nconst Wrapper = styled.div`\n ${tw`min-h-screen flex flex-col py-0 px-2 justify-center relative`}\n`\nexport default function FullHeightWrapper({children}){\n return(\n \n {children}\n \n )\n}","import React from 'react'\nimport ArrowLeft from '../../images/icons/arrow-left.svg'\nimport styled from '@emotion/styled'\nimport {Link} from 'gatsby'\n\nconst NavWrapper = styled.span`\n ${tw`absolute p-2`}\n top: 0;\n a{\n ${tw`flex`}\n }\n span{\n ${tw`pl-2 font-bold`}\n }\n ${p => p.right && `right: 0;`}\n`\n\nexport default function NavLink({to, content, right, noArrow}){\n return(\n \n {!noArrow && } {content ?? \"Retour\"} \n \n )\n}","import styled from '@emotion/styled'\nimport Layout from './layout'\nimport SEO from './seo'\nimport ContentWrapper from './contentWrapper'\nimport Card from './card'\nimport Map from './map'\nimport FullHeightWrapper from './fullHeightWrapper'\nimport NavLink from './navLink'\n\nconst Question = styled.h1`\n ${tw`text-3xl font-title flex flex-col`}\n`\n\nconst Hint = styled.span`\n ${tw`text-xs italic`}\n`\n\nconst SubTitle = styled.h2`\n ${tw`text-xl font-title`}\n`\n\nconst List = styled.ul`\n && li{\n ${tw`list-disc list-inside`}\n }\n & > li{\n ${tw`list-disc list-inside`}\n }\n`\n\nconst FlexWrapper = styled.div`\n ${tw`flex flex-wrap overflow-hidden items-center`}\n`\n\nconst HalfCard = styled.div`\n ${tw`w-1/2 overflow-hidden`}\n a{\n ${p => p.empty && tw`text-gray cursor-default`}\n ${tw`h-12 mr-2 my-2 p-2 bg-beige block rounded-lg font-bold text-md shadow-md`}\n }\n`\nexport { \n Layout, \n SEO, \n ContentWrapper, \n Card, \n Map, \n FullHeightWrapper, \n Question, \n HalfCard, \n NavLink, \n Hint,\n List,\n FlexWrapper,\n SubTitle\n};\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","var React = require('react');\n\nfunction LocationMarker (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"d\":\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\",\"key\":1})]);\n}\n\nLocationMarker.defaultProps = {\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\",\"stroke\":\"currentColor\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = LocationMarker;\n\nLocationMarker.default = LocationMarker;\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'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","export var userAgent = typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\nvar window_ = typeof window !== 'undefined' ? window : global;\nvar global_ = typeof global !== 'undefined' ? global : window;\nvar document_ = typeof document !== 'undefined' ? document : {};\nexport { window_ as window, global_ as global, document_ as document };\nvar passiveSupported = false;\n\ntry {\n var options = {\n get passive() {\n passiveSupported = true;\n return true;\n }\n\n };\n window_.addEventListener('test', options, options);\n window_.removeEventListener('test', options, options);\n} catch (err) {}\n\nexport { passiveSupported };","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","var React = require('react');\n\nfunction ArrowLeft (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M10 19l-7-7m0 0l7-7m-7 7h18\"}));\n}\n\nArrowLeft.defaultProps = {\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":\"2\",\"stroke\":\"currentColor\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = ArrowLeft;\n\nArrowLeft.default = ArrowLeft;\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","'use strict';\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\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.array.is-array\");\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\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 (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // start react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // end react-fast-compare\n // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\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","// 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","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.index-of\";\nimport { createElement, PureComponent } from 'react';\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\nfunction createDetectElementResize(nonce) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '
' + '
';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _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\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var _height = _this._parentNode.offsetHeight || 0;\n\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({\n height: _height,\n width: _width\n });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {}; // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement('div', {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style)\n }, !bailoutOnChildren && children(childParams));\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\nexport default AutoSizer;","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","import \"core-js/modules/es6.array.some\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.date.now\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\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.map\";\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n \"class\": \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _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\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport { HelmetExport as Helmet };","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}","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\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","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\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}","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\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');","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n"],"sourceRoot":""}