{"version":3,"sources":["webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/ol/interaction/DragZoom.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/cloneDeep.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/ol/interaction/KeyboardZoom.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_baseAssignIn.js","webpack:///./node_modules/lodash/_copySymbolsIn.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/ol/render.js","webpack:///./node_modules/ol/renderer/Map.js","webpack:///./node_modules/ol/renderer/Composite.js","webpack:///./node_modules/lodash/_baseIsMap.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_getAllKeysIn.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./src/components/MapLayerAttributes.vue?ef71","webpack:///src/components/MapLayerAttributes.vue","webpack:///./src/components/MapLayerAttributes.vue?9b58","webpack:///./src/components/MapLayerAttributes.vue","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/ol/control/Attribution.js","webpack:///./node_modules/ol/control/Rotate.js","webpack:///./node_modules/ol/control/Zoom.js","webpack:///./node_modules/ol/control.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/ol/render/Box.js","webpack:///./node_modules/ol/interaction/DragBox.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseClone.js","webpack:///./node_modules/ol/control/Control.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/ol/ViewProperty.js","webpack:///./src/components/atlas/page-templates/Objects.vue?6936","webpack:///src/components/atlas/page-templates/Objects.vue","webpack:///./src/components/atlas/page-templates/Objects.vue?a3a5","webpack:///./src/components/atlas/page-templates/Objects.vue","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./src/components/atlas/map/MapTooltip.vue?8fa4","webpack:///./src/components/MapLayerAttributes.vue?5006","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./src/components/atlas/map/MyMap.vue?dcc9","webpack:///./node_modules/ol/Kinetic.js","webpack:///./node_modules/ol/interaction/DragPan.js","webpack:///./node_modules/ol/interaction/DragRotate.js","webpack:///./node_modules/ol/events/KeyCode.js","webpack:///./node_modules/ol/interaction/KeyboardPan.js","webpack:///./node_modules/ol/interaction/PinchRotate.js","webpack:///./node_modules/ol/interaction.js","webpack:///./node_modules/ol/Map.js","webpack:///./node_modules/proj4/lib/global.js","webpack:///./node_modules/proj4/lib/constants/values.js","webpack:///./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack:///./node_modules/proj4/lib/constants/units.js","webpack:///./node_modules/proj4/lib/match.js","webpack:///./node_modules/proj4/lib/projString.js","webpack:///./node_modules/wkt-parser/parser.js","webpack:///./node_modules/wkt-parser/process.js","webpack:///./node_modules/wkt-parser/index.js","webpack:///./node_modules/proj4/lib/defs.js","webpack:///./node_modules/proj4/lib/parseCode.js","webpack:///./node_modules/proj4/lib/extend.js","webpack:///./node_modules/proj4/lib/common/msfnz.js","webpack:///./node_modules/proj4/lib/common/sign.js","webpack:///./node_modules/proj4/lib/common/adjust_lon.js","webpack:///./node_modules/proj4/lib/common/tsfnz.js","webpack:///./node_modules/proj4/lib/common/phi2z.js","webpack:///./node_modules/proj4/lib/projections/merc.js","webpack:///./node_modules/proj4/lib/projections/longlat.js","webpack:///./node_modules/proj4/lib/projections.js","webpack:///./node_modules/proj4/lib/constants/Ellipsoid.js","webpack:///./node_modules/proj4/lib/deriveConstants.js","webpack:///./node_modules/proj4/lib/constants/Datum.js","webpack:///./node_modules/proj4/lib/datum.js","webpack:///./node_modules/proj4/lib/Proj.js","webpack:///./node_modules/proj4/lib/datumUtils.js","webpack:///./node_modules/proj4/lib/datum_transform.js","webpack:///./node_modules/proj4/lib/adjust_axis.js","webpack:///./node_modules/proj4/lib/common/toPoint.js","webpack:///./node_modules/proj4/lib/checkSanity.js","webpack:///./node_modules/proj4/lib/transform.js","webpack:///./node_modules/proj4/lib/core.js","webpack:///./node_modules/mgrs/mgrs.js","webpack:///./node_modules/proj4/lib/Point.js","webpack:///./node_modules/proj4/lib/common/pj_enfn.js","webpack:///./node_modules/proj4/lib/common/pj_mlfn.js","webpack:///./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack:///./node_modules/proj4/lib/projections/tmerc.js","webpack:///./node_modules/proj4/lib/common/sinh.js","webpack:///./node_modules/proj4/lib/common/hypot.js","webpack:///./node_modules/proj4/lib/common/log1py.js","webpack:///./node_modules/proj4/lib/common/asinhy.js","webpack:///./node_modules/proj4/lib/common/gatg.js","webpack:///./node_modules/proj4/lib/common/clens.js","webpack:///./node_modules/proj4/lib/common/cosh.js","webpack:///./node_modules/proj4/lib/common/clens_cmplx.js","webpack:///./node_modules/proj4/lib/projections/etmerc.js","webpack:///./node_modules/proj4/lib/common/adjust_zone.js","webpack:///./node_modules/proj4/lib/projections/utm.js","webpack:///./node_modules/proj4/lib/common/srat.js","webpack:///./node_modules/proj4/lib/projections/gauss.js","webpack:///./node_modules/proj4/lib/projections/sterea.js","webpack:///./node_modules/proj4/lib/projections/stere.js","webpack:///./node_modules/proj4/lib/projections/somerc.js","webpack:///./node_modules/proj4/lib/projections/omerc.js","webpack:///./node_modules/proj4/lib/projections/lcc.js","webpack:///./node_modules/proj4/lib/projections/krovak.js","webpack:///./node_modules/proj4/lib/common/mlfn.js","webpack:///./node_modules/proj4/lib/common/e0fn.js","webpack:///./node_modules/proj4/lib/common/e1fn.js","webpack:///./node_modules/proj4/lib/common/e2fn.js","webpack:///./node_modules/proj4/lib/common/e3fn.js","webpack:///./node_modules/proj4/lib/common/gN.js","webpack:///./node_modules/proj4/lib/common/adjust_lat.js","webpack:///./node_modules/proj4/lib/common/imlfn.js","webpack:///./node_modules/proj4/lib/projections/cass.js","webpack:///./node_modules/proj4/lib/common/qsfnz.js","webpack:///./node_modules/proj4/lib/projections/laea.js","webpack:///./node_modules/proj4/lib/common/asinz.js","webpack:///./node_modules/proj4/lib/projections/aea.js","webpack:///./node_modules/proj4/lib/projections/gnom.js","webpack:///./node_modules/proj4/lib/common/iqsfnz.js","webpack:///./node_modules/proj4/lib/projections/cea.js","webpack:///./node_modules/proj4/lib/projections/eqc.js","webpack:///./node_modules/proj4/lib/projections/poly.js","webpack:///./node_modules/proj4/lib/projections/nzmg.js","webpack:///./node_modules/proj4/lib/projections/mill.js","webpack:///./node_modules/proj4/lib/projections/sinu.js","webpack:///./node_modules/proj4/lib/projections/moll.js","webpack:///./node_modules/proj4/lib/projections/eqdc.js","webpack:///./node_modules/proj4/lib/projections/vandg.js","webpack:///./node_modules/proj4/lib/projections/aeqd.js","webpack:///./node_modules/proj4/lib/projections/ortho.js","webpack:///./node_modules/proj4/lib/projections/qsc.js","webpack:///./node_modules/proj4/lib/projections/robin.js","webpack:///./node_modules/proj4/lib/projections/geocent.js","webpack:///./node_modules/proj4/projs.js","webpack:///./node_modules/proj4/lib/index.js","webpack:///./node_modules/ol/proj/proj4.js","webpack:///./src/components/atlas/map/MapTooltip.vue?33ef","webpack:///src/components/atlas/map/MapTooltip.vue","webpack:///./src/components/atlas/map/MapTooltip.vue?ebf9","webpack:///./src/components/atlas/map/MapTooltip.vue","webpack:///./src/components/atlas/map/MapPopup.vue?c576","webpack:///src/components/atlas/map/MapPopup.vue","webpack:///./src/components/atlas/map/MapPopup.vue?e4c8","webpack:///./src/components/atlas/map/MapPopup.vue","webpack:///src/components/atlas/map/MyMap.vue","webpack:///./src/components/atlas/map/MyMap.vue?9f23","webpack:///./src/components/atlas/map/MyMap.vue","webpack:///./node_modules/lodash/_copySymbols.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/ol/MapEventType.js","webpack:///./src/components/atlas/map/MapPopup.vue?7ab3","webpack:///./node_modules/lodash/_baseAssign.js","webpack:///./node_modules/lodash/_cloneDataView.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/assets/identify-marker.png","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_cloneRegExp.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./src/components/atlas/map/MyMap.vue?80ec","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/ol/rotationconstraint.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/ol/interaction/MouseWheelZoom.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./src/components/atlas/page-templates/Objects.vue?b323","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_getSymbolsIn.js","webpack:///./node_modules/ol/centerconstraint.js","webpack:///./node_modules/ol/resolutionconstraint.js","webpack:///./node_modules/ol/View.js","webpack:///./node_modules/lodash/_cloneSymbol.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/elm-pep/dist/elm-pep.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_initCloneByTag.js","webpack:///./node_modules/lodash/_baseIsSet.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_initCloneArray.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/isMap.js","webpack:///./node_modules/ol/interaction/DoubleClickZoom.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isSet.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/ol/MapProperty.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/ol/interaction/PinchZoom.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/ol/pointer/EventType.js","webpack:///./node_modules/ol/MapBrowserEventHandler.js","webpack:///./node_modules/ol/structs/PriorityQueue.js","webpack:///./node_modules/ol/TileQueue.js","webpack:///./node_modules/ol/layer/Group.js","webpack:///./node_modules/ol/PluggableMap.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","__","this","constructor","create","DragZoom","_super","opt_options","_this","options","condition","className","minArea","onBoxEnd","duration_","duration","out_","out","map","getMap","view","getView","size","getSize","extent","getGeometry","getExtent","mapExtent","calculateExtentInternal","boxPixelExtent","getPixelFromCoordinateInternal","factor","getResolutionForExtentInternal","resolution","getConstrainedResolution","center","getConstrainedCenter","animateInternal","easing","isPrototype","nativeKeys","baseKeys","object","key","push","baseClone","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","cloneDeep","stubFalse","arrayPush","array","values","index","length","offset","baseIsNative","getValue","getNative","KeyboardZoom","handleEvent","condition_","delta_","delta","mapBrowserEvent","stopEvent","type","KEYDOWN","KEYPRESS","keyEvent","charCode","charCodeAt","preventDefault","freeExports","nodeType","freeModule","moduleExports","Buffer","root","nativeIsBuffer","isBuffer","copyObject","keysIn","baseAssignIn","source","getSymbolsIn","copySymbolsIn","isKeyable","isObjectLike","coreJsData","maskSrcKey","uid","exec","keys","IE_PROTO","isMasked","func","renderDeclutterItems","frameState","declutterTree","clear","items","declutterItems","z","item","zIndexItems","i","ii","renderDeclutter","opacity","MapRenderer","map_","declutterTree_","dispatchRenderEvent","calculateMatrices2D","viewState","coordinateToPixelTransform","pixelToCoordinateTransform","rotation","forEachFeatureAtCoordinate","coordinate","hitTolerance","checkWrapped","callback","thisArg","layerFilter","thisArg2","managed","feature","layer","projection","translatedCoordinate","slice","offsets","canWrapX","projectionExtent","worldWidth","declutteredFeatures","layerStates","layerStatesArray","numLayers","all","entry","tmpCoord","j","layerState","hasRenderer","layerRenderer","getRenderer","getSource","coordinates","getWrapX","callback_1","bind","forEachLayerAtPixel","pixel","hasFeatureAtCoordinate","hasFeature","renderFrame","scheduleExpireIconCache","canExpireCache","postRenderFunctions","expireIconCache","Disposable","expire","Map","CompositeMapRenderer","fontChangeListenerKey_","ObjectEventType","PROPERTYCHANGE","redrawText","element_","document","createElement","style","position","width","height","zIndex","container","getViewport","insertBefore","firstChild","children_","renderedVisible_","hasListener","event_1","dispatchEvent","disposeInternal","parentNode","removeChild","PRECOMPOSE","sort","a","previousElement","layerIndex","sourceState","READY","UNDEFINED","element","render","POSTCOMPOSE","display","data","getDataAtPixel","getTag","mapTag","baseIsMap","isObject","baseGetAllKeys","getAllKeysIn","Promise","_vm","_h","$createElement","_c","_self","staticClass","_l","attr","n","_v","_s","domProps","staticRenderFns","component","hashDelete","has","__data__","getMapData","mapCacheSet","set","Attribution","target","ulElement_","collapsed_","collapsed","overrideCollapsible_","collapsible","collapsible_","tipLabel","collapseLabel","collapseLabel_","textContent","label","label_","activeLabel","button","setAttribute","title","appendChild","addEventListener","EventType","CLICK","handleClick_","cssClasses","renderedAttributions_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","setCollapsible","isArray","jj","updateElement_","visible","innerHTML","event","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","Control","mapEvent","Rotate","add","callResetNorth_","resetNorth","autoHide_","autoHide","rotation_","resetNorth_","getRotation","Math","PI","animate","setRotation","transform","contains","remove","Zoom","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","getZoom","newZoom","getConstrainedZoom","getAnimating","cancelAnimations","zoom","setZoom","defaults","controls","Collection","zoomControl","zoomOptions","rotateControl","rotate","rotateOptions","attributionControl","attribution","attributionOptions","Uint8Array","mapCacheGet","get","nativeCreate","HASH_UNDEFINED","hashSet","baseGetTag","argsTag","baseIsArguments","RenderBox","geometry_","startPixel_","endPixel_","setMap","render_","startPixel","endPixel","px","left","min","top","abs","getOverlayContainer","setPixels","createOrUpdateGeometry","pixels","getCoordinateFromPixelInternal","setCoordinates","Polygon","DragBoxEventType","BOXSTART","BOXDRAG","BOXEND","DragBoxEvent","Event","DragBox","box_","minArea_","onBoxEnd_","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","handleDragEvent","handleUpEvent","handleDownEvent","Pointer","listCacheClear","objectToString","freeGlobal","freeSelf","self","Function","arrayFilter","predicate","resIndex","overArg","getPrototype","getPrototypeOf","stackDelete","isFunction","isLength","isArrayLike","baseAssignValue","eq","assignValue","objValue","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","toSource","reRegExpChar","reIsHostCtor","funcProto","funcToString","reIsNative","RegExp","replace","pattern","test","nullTag","undefinedTag","Stack","arrayEach","baseAssign","cloneBuffer","copyArray","copySymbols","getAllKeys","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","CLONE_FLAT_FLAG","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","cloneableTags","bitmask","customizer","stack","isDeep","isFlat","isFull","isArr","isFunc","stacked","forEach","subValue","keysFunc","props","target_","listenerKeys","setTarget","getOverlayContainerStopEvent","POSTRENDER","getElementById","WeakMap","defineProperty","nativeKeysIn","baseKeysIn","isProto","DataView","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","Ctor","ctorString","CENTER","RESOLUTION","ROTATION","attrs","content","VCard","hashClear","baseTimes","iteratee","ref","_e","Kinetic","decay","minVelocity","delay","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","begin","update","x","y","Date","now","end","lastIndex","firstIndex","dx","dy","atan2","sqrt","getDistance","getAngle","DragPan","stopDown","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","defaultCondition","noKinetic_","conditionInternal_","pass","getTargetElement","hasAttribute","beginInteraction","targetPointers","centroid","getResolution","adjustCenterInternal","originalEvent","distance","angle","getCenterInternal","centerpx","dest","cos","sin","endInteraction","DragRotate","lastAngle_","getConstraints","theta","adjustRotationInternal","LEFT","UP","RIGHT","DOWN","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","Interaction","keyCode","KeyCode","mapUnitsDelta","deltaX","deltaY","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","clientY","clientX","viewportPosition","getBoundingClientRect","handlingDownUpSequence","interactions","altShiftDragRotate","doubleClickZoom","DoubleClickZoom","zoomDelta","zoomDuration","dragPan","onFocusOnly","pinchRotate","pinchZoom","PinchZoom","keyboard","mouseWheelZoom","MouseWheelZoom","shiftDragZoom","createRenderer","Composite","PluggableMap","defs","WGS84","GOOGLE","PJD_3PARAM","PJD_7PARAM","PJD_WGS84","PJD_NODATUM","SEC_TO_RAD","HALF_PI","SIXTH","RA4","RA6","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","ft","to_meter","ignoredChar","match","obj","testkey","processedKey","lkey","toLowerCase","paramName","paramVal","paramOutname","paramObj","defData","split","v","trim","filter","reduce","params","proj","datum","rf","parseFloat","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","alpha","lonc","longc","x_0","x0","y_0","y0","k_0","k0","k","r_a","R_A","zone","parseInt","south","utmSouth","towgs84","datum_params","units","unit","from_greenwich","pm","nadgrids","datumCode","axis","legalAxis","indexOf","substr","NEUTRAL","KEYWORD","NUMBER","QUOTED","AFTERQUOTE","ENDED","whitespace","latin","keyword","endThings","digets","Parser","text","Error","level","place","currentObject","state","parseString","txt","parser","output","mapit","unshift","thing","newObj","sExpr","shift","name","convert","readCharicter","char","neutral","quoted","afterquote","number","word","afterItem","pop","newObjects","rename","outName","inName","d2r","input","cleanWKT","wkt","projName","local","PROJECTION","AXIS","axisOrder","descriptor","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","ratio","sphere","ellps","TOWGS84","isFinite","renamer","list","lisp","that","arguments","def","charAt","apply","EPSG","ESRI","IAU2000","console","log","global","testObj","code","testDef","codeWords","testWKT","some","codes","checkMercator","auth","checkProjStr","ext","testProj","parse","maybeProjStr","property","destination","con","eccent","sinphi","cosphi","sign","com","pow","tan","phi","dphi","eccnth","atan","ts","init","es","msfnz","forward","lon","lat","adjust_lon","tsfnz","inverse","exp","phi2z","names","identity","pt","projs","merc","longlat","projStore","len","start","ellipseName","eccentricity","a2","b2","ep2","ellipse","datum_type","wgs84","datumName","ch1903","ggrs87","nad83","nad27","potsdam","carthage","hermannskogel","osni52","ire65","rassadiran","nzgd49","osgb36","s_jtsk","beduaram","gunung_segara","rnb72","Projection","srsCode","error","json","parseCode","ourProj","projections","datumDef","sphere_","ecc","datumObj","extend","Proj","compareDatums","geodeticToGeocentric","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","Infinity","geocentricToGeodetic","P","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","genau","genau2","maxiter","X","Y","Z","geocentricToWgs84","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricFromWgs84","x_tmp","y_tmp","z_tmp","checkParams","point","t","xin","yin","zin","denorm","crs","m","checkCoord","num","Number","TypeError","checkNotWGS","toPoint","checkSanity","adjust_axis","datum_transform","transformer","from","to","coords","transformedArray","NaN","concat","splice","checkProj","oProj","fromProj","toProj","coord","single","NUM_100K_SETS","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","I","O","ll","accuracy","encode","LLtoUTM","mgrs","bbox","UTMtoLL","decode","toUpperCase","bottom","right","degToRad","deg","radToDeg","rad","LongOrigin","eccPrimeSquared","N","T","C","A","M","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","LongRad","floor","UTMEasting","UTMNorthing","northing","round","easting","zoneNumber","zoneLetter","getLetterDesignator","utm","N1","T1","C1","R1","D","mu","phi1Rad","e1","topRight","LetterDesignator","seasting","snorthing","get100kID","setParm","get100kSetForZone","setColumn","setRow","getLetter100kID","column","row","parm","colOrigin","rowOrigin","colInt","rowInt","rollover","twoLetter","String","fromCharCode","mgrsString","testChar","hunK","sb","substring","east100k","getEastingFromChar","north100k","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","curCol","eastingValue","rewindMarker","curRow","northingValue","Point","warn","fromMGRS","mgrsStr","toMGRS","C00","C02","C04","C06","C08","C22","C44","C46","C48","C66","C68","C88","en","cphi","sphi","MAX_ITER","arg","s","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","al","als","c","cs","tq","ml","acos","pj_inv_mlfn","tan_phi","ds","f","g","temp","h","asin","r","max","log1py","hypot","cos_2B","B","pp","h1","h2","hr","arg_r","hr1","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","sinh","arg_i","cosh_arg_i","cosh","hi1","hi","cgb","cbg","utg","gtu","np","Qn","gatg","Zb","clens","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","asinhy","tmp","clens_cmplx","dependsOn","adjust_zone","etmerc","esinp","rc","phic0","ratexp","K","srat","DEL_TOL","gauss","sinc0","cosc0","R2","sinc","cosc","cosl","rho","ssfn_","phit","eccen","coslat0","sinlat0","isNaN","cons","ms1","X0","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","ce","Chi","phy0","lambda0","sinPhy0","semiMajorAxis","invF","flattening","e2","R","b0","k1","k2","k3","Sa1","Sa2","S","rotI","rotB","lambda","phy","prevPhy","iteration","no_off","no_rot","bl","fl","gl","t0","dl","t1","t2","el","hl","jl","pl","dlon12","dlon10","gamma0","uc","us","vs","ql","sl","tl","vl","ul","POSITIVE_INFINITY","qp","sp","tp","vp","up","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","ns","f0","rh1","s45","s90","fi0","alfa","uq","u0","n0","s0","ro0","ad","gfi","u","deltav","eps","ro","czech","fi1","ok","e0","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","asq","cl","dd","ml1","phi1","imlfn","nl1","rl1","tl1","dsq","adjust_lat","S_POLE","N_POLE","EQUIT","OBLIQ","mode","qsfnz","mmf","apa","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","q","sinb","cosb","cCe","sCe","ab","cosz","sinz","authlat","P00","P01","P02","P10","P11","P20","APA","beta","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","qs","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","ksp","iqsfnz","dlat","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_re1","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_re1","z_n_im1","delta_x","delta_y","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","C_y","C_x","V","delta_theta","ml2","sinth","costh","gsq","msq","xx","yy","xys","c1","c2","c3","a1","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","G","H","GH","Hs","kp","cos_c","s2","s3","s4","s5","cosAz","Ee","F","sinpsi","FACE_ENUM","FRONT","BACK","TOP","BOTTOM","AREA_ENUM","AREA_0","AREA_1","AREA_2","AREA_3","face","one_minus_f","one_minus_f_squared","xy","area","sinlon","qsc_shift_lon_origin","qsc_fwd_equat_face_theta","nu","cosmu","tannu","tantheta","invert_sign","xa","lp","slon","COEFS_X","COEFS_Y","FXC","FYC","RC1","NODES","poly3_val","coefs","poly3_der","newton_rapshon","f_df","max_err","iters","upd","proj4","tmerc","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","poly","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","defaultDatum","version","register","projCodes","axisOrientation","metersPerUnit","code1","proj1","code2","proj2","results","on","prev","activeItemNumber","next","hidePopup","activeItem","service","html","VBtn","VIcon","VProgressCircular","VProgressLinear","stackHas","MOVESTART","MOVEEND","cloneArrayBuffer","cloneDataView","dataView","buffer","byteOffset","byteLength","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","webpackPolyfill","deprecate","paths","children","enumerable","l","assocIndexOf","arrayProto","reFlags","cloneRegExp","regexp","isArguments","isIndex","isTypedArray","arrayLikeKeys","inherited","isArg","isBuff","isType","skipIndexes","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","objectCreate","baseCreate","proto","hashHas","mapCacheClear","mapCacheDelete","mapCacheHas","MapCache","Hash","symbolsFunc","stackClear","stackGet","stackSet","disable","none","createSnapToN","opt_isMoving","createSnapToZero","opt_tolerance","tolerance","isNew","newValue","Mode","TRACKPAD","WHEEL","totalDelta_","lastDelta_","maxDelta_","maxDelta","timeout_","timeout","useAnchor_","useAnchor","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","getConstrainResolution","clearTimeout","setTimeout","adjustZoom","timeLeft","handleWheelZoom_","setMouseAnchor","asyncTag","proxyTag","other","freeProcess","process","types","require","binding","createExtent","onlyCenter","smooth","viewWidth","viewHeight","minX","maxX","minY","maxY","getViewportClampedResolution","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createSnapToResolutions","resolutions","opt_smooth","opt_maxExtent","opt_showFullExtent","direction","cappedMaxRes","capped","createSnapToPower","power","opt_minResolution","minZoomLevel","ceil","cappedZoomLevel","zoomLevel","newResolution","createMinMaxResolution","DEFAULT_MIN_ZOOM","View","hints_","animations_","updateAnimationKey_","projection_","viewportSize_","targetCenter_","targetResolution_","targetRotation_","cancelAnchor_","applyOptions_","properties","resolutionConstraintInfo","createResolutionConstraint","maxResolution_","minResolution_","zoomFactor_","zoomFactor","resolutions_","minZoom_","minZoom","centerConstraint","createCenterConstraint","resolutionConstraint","constraint","rotationConstraint","createRotationConstraint","constraints_","setCenterInternal","setResolution","setProperties","options_","getUpdatedOptions_","newOptions","var_args","isDef","resolveConstraints","args","getProjection","anchor","animationCount","animationCallback","series","animation","complete","sourceCenter","targetCenter","sourceResolution","targetResolution","getResolutionForZoom","sourceRotation","targetRotation","isNoopAnimation","setHint","ViewHint","ANIMATING","updateAnimations_","getInteracting","INTERACTING","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","x1","y1","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","Boolean","requestAnimationFrame","currentCenter","currentResolution","opt_rotation","w","setViewportSize","opt_size","getCenter","ViewProperty","constrainResolution","getHints","opt_hints","calculateExtent","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","maxZoom","getMinZoom","setMinZoom","setConstrainResolution","enabled","getResolutions","getResolutionForExtent","getResolutionForValueFunction","opt_power","getValueForResolutionFunction","logPower","getState","nearest","baseLevel","fit","geometryOrExtent","geometry","getSimplifiedGeometry","getType","GeometryType","CIRCLE","userProjection","clone","fitInternal","padding","getFlatCoordinates","cosAngle","sinAngle","minRotX","minRotY","maxRotX","maxRotY","stride","getStride","rotX","rotY","centerRotX","centerRotY","centerX","centerY","centerOn","centerOnInternal","adjustCenter","deltaCoordinates","setCenter","adjustResolution","opt_anchor","adjustResolutionInternal","isMoving","adjustRotation","newRotation","hint","changed","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","endInteractionInternal","opt_targetResolution","targetZoom","opt_direction","targetRes","returnValue","smoothExtentConstraint","constrainOnlyCenter","multiWorld","isGlobal","defaultMaxZoom","defaultZoomFactor","smoothResolutionConstraint","projExtent","Units","DEGREES","getMetersPerUnit","defaultMaxResolution","defaultMinResolution","enableRotation","constrainRotation","symbolProto","symbolValueOf","valueOf","cloneSymbol","primaryTouchId","mouseCaptureTarget","definePointerCapture","Element","setPointerCapture","setCapture","releasePointerCapture","releaseCapture","addMouseToPointerListener","mouseType","pointerType","mouseEvent","pointerEvent","MouseEvent","pointerId","isPrimary","tiltX","tiltY","buttons","pressure","defaultPrevented","addTouchToPointerListener","touchType","touchEvent","changedTouches","nbTouches","CustomEvent","bubbles","cancelable","ctrlKey","shiftKey","altKey","metaKey","touch","screenX","screenY","pageX","pageY","rect","offsetX","offsetY","identifier","movementX","movementY","region","relatedTarget","window","MAX_SAFE_INTEGER","hashGet","reIsUint","cloneTypedArray","baseIsSet","typedArray","nodeIsMap","DBLCLICK","browserEvent","LARGE_ARRAY_SIZE","pairs","nodeIsSet","allocUnsafe","copy","LAYERGROUP","SIZE","TARGET","VIEW","lastDistance_","lastScaleDelta_","scaleDelta","arrayBuffer","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserEventHandler","moveTolerance","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","TOUCHMOVE","passive","emulateClick_","newEvent","MapBrowserPointerEvent","MapBrowserEventType","SINGLECLICK","updateActivePointers_","handlePointerUp_","propagationStopped","isMouseActionButton_","handlePointerMove_","isMoving_","POINTERDRAG","dragging","removeEventListener","DROP","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","enqueue","priority","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isEmpty","isKeyQueued","isQueued","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","getKey","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","tile","CHANGE","getTilesLoading","hifi","TileState","LOADED","ERROR","EMPTY","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","IDLE","load","getTilePriority","tileSourceKey","tileCenter","tileResolution","wantedTiles","Property","LAYERS","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","unique","getArray","setLayers","handleLayerChange_","getLayers","id","CollectionEventType","ADD","handleLayersAdd_","REMOVE","handleLayersRemove_","layersArray","collectionEvent","getLayersArray","opt_array","getLayerStatesArray","opt_states","states","pos","ownLayerState","getLayerState","getSourceState","Base","optionsInternal","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","pixelRatio_","pixelRatio","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyboardEventTarget","keyHandlerKeys_","CONTEXTMENU","overlays_","overlays","overlayIdIndex_","renderer_","handleResize_","postRenderFunctions_","tileQueue_","handleTileChange_","MapProperty","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","control","interaction","addOverlayInternal_","overlay","getId","addControl","getControls","addInteraction","getInteractions","addLayer","getLayerGroup","addOverlay","getOverlays","dispose","RESIZE","forEachFeatureAtPixel","getFeaturesAtPixel","features","hasFeatureAtPixel","getEventCoordinate","getCoordinateFromPixel","getEventPixel","getEventCoordinateInternal","eventPosition","getTarget","getOverlayById","getLoading","loading","getPixelFromCoordinate","viewCoordinate","opt_type","MapBrowserEvent","body","getRootNode","interactionsArray","getActive","cont","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","time","RENDERCOMPLETE","targetElement","updateSize","handleViewPropertyChanged_","updateViewportSize_","layerGroup","isRendered","renderSync","handleFontsChanged","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","usedTiles","moveStart","MapEvent","MapEventType","idle","setLayerGroup","setSize","setView","computedStyle","getComputedStyle","offsetWidth","offsetHeight"],"mappings":"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ACA,iBACA,sBACA,gBACA,sBACA,cAGA,kCACA,gCACA,sEACA,qCACA,SACA,uBACA,MAEA,EACA,EAFA,KAGA,aAEA,yBACA,uCACA,0BACA,4BACA,cACA,IACA,0BAGA,0EACA,GACA,SACA,YACA,sBACA,sCACA,iCACA,yCACA,qEAEA,EACA,kBAEA,iCACA,KACA,uCACA,2DACA,gBAGA,WACA,8BAIA,4EACA,gBACA,aACA,SACA,qCAEA,kBACA,iBACA,gBAEA,OAEA,iBACA,MACA,KACA,IACA,oBACA,eACA,aAEA,UAIA,EACA,GACA,QACA,UAGA,KAEA,uBACA,WAEA,WACA,oEACA,8BAEA,6BAEA,0BACA,4BACA,cACA,IACA,sBAGA,uHACA,wBACA,+BACA,gBACA,eACA,kBACA,iBACA,gBAEA,OAEA,iBACA,GACA,QACA,UAEA,uBACA,aAIA,SAGA,KAEA,YACA,UAEA,gBACA,8BACA,MACA,yBAEA,yBAEA,gBACA,8BACA,yBACA,KAEA,yBAEA,wBACA,MAQA,GAPA,QACA,uBACA,QACA,uBACA,WACA,0BAEA,GACA,mBACA,aAEA,qBACA,gCACA,mBACA,cAEA,uCAEA,gDAIA,OACA,GACA,aACA,oBACA,MACA,4BACA,iDAEA,yCACA,mBACA,mBACA,cACA,2BACA,cACA,wBACA,4BAGA,cAEA,gDAEA,mBACA,sCAEA,cACA,gBACA,yCACA,uBAEA,6BACA,kDAKA,kBACA,aACA,oBACA,gCACA,mCAIA,YACA,aACA,oBACA,oBACA,uCAEA,GACA,yBACA,sCC5Wib,M,2ECQ7a,GAAY,gBACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIa,MAAiB,QAOhC,KAAkB,GAAW,CAAC67B,QAAA,KAAKC,SAAA,KAAMC,qBAAA,OCWzC,QACA,OACA,eACA,4BACA,kBAEA,gBACA,OACA,WACA,uBACA,UAEA,UAEA,YACA,cACA,aAEA,UACA,WACA,eACA,uBAIA,QAzBA,WA0BA,iBACA,yIACA,OACA,OACA,kCACA,oCACA,kBACA,uBACA,8BACA,cAEA,0BACA,0CAEA,gBACA,sBACA,uCAEA,0CACA,MACA,8BACA,wBACA,gCACA,8BACA,YACA,8BACA,8BACA,YACA,gCACA,8BACA,aAEA,oBACA,wBACA,iCAEA,8BACA,YACA,+BAEA,8BACA,YACA,iCAEA,8BACA,cAGA,YACA,sCAsBA,GArBA,2DAGA,uCAEA,gBACA,sBACA,WACA,uCACA,uCACA,0BACA,sCACA,SACA,WACA,yBAKA,wCAEA,0BACA,oCACA,QACA,yCACA,oDACA,QACA,yCAEA,mEACA,sBACA,KACA,MAEA,iBACA,qDAGA,YAEA,kBACA,YAEA,6CACA,mEAGA,gCACA,wBACA,oBAEA,YACA,iBACA,YACA,2CACA,gEAEA,iDAEA,yBACA,yCACA,kDAEA,SACA,qBACA,6BACA,cACA,iCAEA,gEACA,MACA,EACA,WACA,yBACA,gCACA,2BAEA,gCACA,2BAEA,+BACA,4BACA,kBAGA,qBACA,MAGA,2BAEA,YACA,cAEA,8BACA,sBACA,YACA,eAEA,yCACA,8BACA,aAEA,yBACA,gCAEA,OADA,8EACA,GAEA,uBACA,6BACA,uBAGA,sBACA,IAGA,EAHA,KACA,KACA,KAcA,gBACA,WASA,OAtBA,UACA,0CACA,YACA,gBACA,MACA,8CAEA,OACA,cAOA,UACA,uBACA,gBAEA,GACA,YAEA,GAEA,wBAEA,OADA,kBACA,gBAEA,uBACA,SACA,UACA,4CACA,8BACA,SACA,iDACA,6BAEA,GACA,cAKA,UACA,GACA,yBACA,UAEA,4CAEA,2CAIA,qBACA,eAEA,OACA,2BACA,aACA,oBAEA,GADA,kBACA,SACA,KACA,wBACA,CACA,+BACA,yBC1S8a,M,yBCQ1a,GAAY,gBACd,GACAluC,EACAwB,GACA,EACA,KACA,WACA,MAIa,UAAiB,QAMhC,KAAkB,GAAW,CAAC0sC,qBAAA,KAAkBC,mBAAA,Q,uBCzBhD,IAAI11C,EAAa,EAAQ,QACrBwT,EAAa,EAAQ,QAUzB,SAASmB,EAAYxU,EAAQ1C,GAC3B,OAAOuC,EAAWG,EAAQqT,EAAWrT,GAAS1C,GAGhDnD,EAAOC,QAAUoa,G,qBCNjB,SAASghC,EAASj4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","file":"js/chunk-19cf4502.686b9678.js","sourcesContent":["var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragZoom\n */\nimport { easeOut } from '../easing.js';\nimport { shiftKeyOnly } from '../events/condition.js';\nimport { createOrUpdateFromCoordinates, getBottomLeft, getCenter, getTopRight, scaleFromCenter } from '../extent.js';\nimport DragBox from './DragBox.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nvar DragZoom = /** @class */ (function (_super) {\n __extends(DragZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var condition = options.condition ? options.condition : shiftKeyOnly;\n _this = _super.call(this, {\n condition: condition,\n className: options.className || 'ol-dragzoom',\n minArea: options.minArea,\n onBoxEnd: onBoxEnd\n }) || this;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 200;\n /**\n * @private\n * @type {boolean}\n */\n _this.out_ = options.out !== undefined ? options.out : false;\n return _this;\n }\n return DragZoom;\n}(DragBox));\n/**\n * @this {DragZoom}\n */\nfunction onBoxEnd() {\n var map = this.getMap();\n var view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n var size = /** @type {!import(\"../size.js\").Size} */ (map.getSize());\n var extent = this.getGeometry().getExtent();\n if (this.out_) {\n var mapExtent = view.calculateExtentInternal(size);\n var boxPixelExtent = createOrUpdateFromCoordinates([\n map.getPixelFromCoordinateInternal(getBottomLeft(extent)),\n map.getPixelFromCoordinateInternal(getTopRight(extent))\n ]);\n var factor = view.getResolutionForExtentInternal(boxPixelExtent, size);\n scaleFromCenter(mapExtent, 1 / factor);\n extent = mapExtent;\n }\n var resolution = view.getConstrainedResolution(view.getResolutionForExtentInternal(extent, size));\n var center = view.getConstrainedCenter(getCenter(extent), resolution);\n view.animateInternal({\n resolution: resolution,\n center: center,\n duration: this.duration_,\n easing: easeOut\n });\n}\nexport default DragZoom;\n//# sourceMappingURL=DragZoom.js.map","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport { targetNotEditable } from '../events/condition.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~targetNotEditable}.\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nvar KeyboardZoom = /** @class */ (function (_super) {\n __extends(KeyboardZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function KeyboardZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : targetNotEditable;\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 100;\n return _this;\n }\n return KeyboardZoom;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n * key pressed was '+' or '-').\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN ||\n mapBrowserEvent.type == EventType.KEYPRESS) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var charCode = keyEvent.charCode;\n if (this.condition_(mapBrowserEvent) &&\n (charCode == '+'.charCodeAt(0) || charCode == '-'.charCodeAt(0))) {\n var map = mapBrowserEvent.map;\n var delta = (charCode == '+'.charCodeAt(0)) ? this.delta_ : -this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, undefined, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n}\nexport default KeyboardZoom;\n//# sourceMappingURL=KeyboardZoom.js.map","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * @module ol/render\n */\nimport { DEVICE_PIXEL_RATIO } from './has.js';\nimport { apply as applyTransform, create as createTransform, multiply as multiplyTransform, scale as scaleTransform } from './transform.js';\nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';\nimport { getSquaredTolerance } from './renderer/vector.js';\nimport { getUserProjection, getTransformFromProjections } from './proj.js';\n/**\n * @typedef {Object} State\n * @property {CanvasRenderingContext2D} context Canvas context that the layer is being rendered to.\n * @property {import(\"./Feature.js\").FeatureLike} feature\n * @property {import(\"./geom/SimpleGeometry.js\").default} geometry\n * @property {number} pixelRatio Pixel ratio used by the layer renderer.\n * @property {number} resolution Resolution that the render batch was created and optimized for.\n * This is not the view's resolution that is being rendered.\n * @property {number} rotation Rotation of the rendered layer in radians.\n */\n/**\n * A function to be used when sorting features before rendering.\n * It takes two instances of {@link module:ol/Feature} or\n * {@link module:ol/render/Feature} and returns a `{number}`.\n *\n * @typedef {function(import(\"./Feature.js\").FeatureLike, import(\"./Feature.js\").FeatureLike):number} OrderFunction\n */\n/**\n * @typedef {Object} ToContextOptions\n * @property {import(\"./size.js\").Size} [size] Desired size of the canvas in css\n * pixels. When provided, both canvas and css size will be set according to the\n * `pixelRatio`. If not provided, the current canvas and css sizes will not be\n * altered.\n * @property {number} [pixelRatio=window.devicePixelRatio] Pixel ratio (canvas\n * pixel to css pixel ratio) for the canvas.\n */\n/**\n * Binds a Canvas Immediate API to a canvas context, to allow drawing geometries\n * to the context's canvas.\n *\n * The units for geometry coordinates are css pixels relative to the top left\n * corner of the canvas element.\n * ```js\n * import {toContext} from 'ol/render';\n * import Fill from 'ol/style/Fill';\n * import Polygon from 'ol/geom/Polygon';\n *\n * var canvas = document.createElement('canvas');\n * var render = toContext(canvas.getContext('2d'),\n * { size: [100, 100] });\n * render.setFillStrokeStyle(new Fill({ color: blue }));\n * render.drawPolygon(\n * new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));\n * ```\n *\n * @param {CanvasRenderingContext2D} context Canvas context.\n * @param {ToContextOptions=} opt_options Options.\n * @return {CanvasImmediateRenderer} Canvas Immediate.\n * @api\n */\nexport function toContext(context, opt_options) {\n var canvas = context.canvas;\n var options = opt_options ? opt_options : {};\n var pixelRatio = options.pixelRatio || DEVICE_PIXEL_RATIO;\n var size = options.size;\n if (size) {\n canvas.width = size[0] * pixelRatio;\n canvas.height = size[1] * pixelRatio;\n canvas.style.width = size[0] + 'px';\n canvas.style.height = size[1] + 'px';\n }\n var extent = [0, 0, canvas.width, canvas.height];\n var transform = scaleTransform(createTransform(), pixelRatio, pixelRatio);\n return new CanvasImmediateRenderer(context, pixelRatio, extent, transform, 0);\n}\n/**\n * Gets a vector context for drawing to the event's canvas.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @returns {CanvasImmediateRenderer} Vector context.\n * @api\n */\nexport function getVectorContext(event) {\n var frameState = event.frameState;\n var transform = multiplyTransform(event.inversePixelTransform.slice(), frameState.coordinateToPixelTransform);\n var squaredTolerance = getSquaredTolerance(frameState.viewState.resolution, frameState.pixelRatio);\n var userTransform;\n var userProjection = getUserProjection();\n if (userProjection) {\n userTransform = getTransformFromProjections(userProjection, frameState.viewState.projection);\n }\n return new CanvasImmediateRenderer(event.context, frameState.pixelRatio, frameState.extent, transform, frameState.viewState.rotation, squaredTolerance, userTransform);\n}\n/**\n * Gets the pixel of the event's canvas context from the map viewport's CSS pixel.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @param {import(\"./pixel.js\").Pixel} pixel CSS pixel relative to the top-left\n * corner of the map viewport.\n * @returns {import(\"./pixel.js\").Pixel} Pixel on the event's canvas context.\n * @api\n */\nexport function getRenderPixel(event, pixel) {\n var result = pixel.slice(0);\n applyTransform(event.inversePixelTransform.slice(), result);\n return result;\n}\n/**\n * @param {import(\"./PluggableMap.js\").FrameState} frameState Frame state.\n * @param {?} declutterTree Declutter tree.\n * @returns {?} Declutter tree.\n */\nexport function renderDeclutterItems(frameState, declutterTree) {\n if (declutterTree) {\n declutterTree.clear();\n }\n var items = frameState.declutterItems;\n for (var z = items.length - 1; z >= 0; --z) {\n var item = items[z];\n var zIndexItems = item.items;\n for (var i = 0, ii = zIndexItems.length; i < ii; i += 3) {\n declutterTree = zIndexItems[i].renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], item.opacity, declutterTree);\n }\n }\n items.length = 0;\n return declutterTree;\n}\n//# sourceMappingURL=render.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport { abstract } from '../util.js';\nimport Disposable from '../Disposable.js';\nimport { getWidth } from '../extent.js';\nimport { TRUE } from '../functions.js';\nimport { inView } from '../layer/Layer.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { renderDeclutterItems } from '../render.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n /**\n * @private\n */\n _this.declutterTree_ = null;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: S, import(\"../Feature.js\").FeatureLike,\n * import(\"../layer/Layer.js\").default): T} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {?} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer) {\n return callback.call(thisArg, feature, managed ? layer : null);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var declutteredFeatures;\n if (this.declutterTree_) {\n declutteredFeatures = this.declutterTree_.all().map(function (entry) {\n return entry.value;\n });\n }\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer);\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX() ? translatedCoordinate : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, declutteredFeatures);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(this: S, import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { inView } from '../layer/Layer.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport MapRenderer from './Map.js';\nimport SourceState from '../source/State.js';\nimport { replaceChildren } from '../dom.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport ObjectEventType from '../ObjectEventType.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @inheritDoc\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY && layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n }\n _super.prototype.renderFrame.call(this, frameState);\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @inheritDoc\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"table-wrapper\"},[_c('table',{staticClass:\"mt-3 body-2\"},[_vm._l((_vm.attributes),function(attr,n){return [_c('tr',{key:n},[_c('th',{staticClass:\"pa-1\"},[_vm._v(_vm._s(attr.key))]),_c('td',{staticClass:\"pa-1\",domProps:{\"innerHTML\":_vm._s(attr.value)}})])]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapLayerAttributes.vue?vue&type=template&id=e37f168e&scoped=true&\"\nimport script from \"./MapLayerAttributes.vue?vue&type=script&lang=js&\"\nexport * from \"./MapLayerAttributes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e37f168e\",\n null\n \n)\n\nexport default component.exports","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport { equals } from '../array.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';\nimport { removeChildren, replaceNode } from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport { inView } from '../layer/Layer.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = (_this.collapsible_ && !_this.collapsed_) ?\n _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n return Attribution;\n}(Control));\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\nimport EventType from '../events/EventType.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n return Rotate;\n}(Control));\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/control\n */\nimport Collection from './Collection.js';\nimport Attribution from './control/Attribution.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./control/Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * @module ol/render/Box\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\nvar RenderBox = /** @class */ (function (_super) {\n __extends(RenderBox, _super);\n /**\n * @param {string} className CSS class name.\n */\n function RenderBox(className) {\n var _this = _super.call(this) || this;\n /**\n * @type {import(\"../geom/Polygon.js\").default}\n * @private\n */\n _this.geometry_ = null;\n /**\n * @type {HTMLDivElement}\n * @private\n */\n _this.element_ = document.createElement('div');\n _this.element_.style.position = 'absolute';\n _this.element_.className = 'ol-box ' + className;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.endPixel_ = null;\n return _this;\n }\n /**\n * @inheritDoc\n */\n RenderBox.prototype.disposeInternal = function () {\n this.setMap(null);\n };\n /**\n * @private\n */\n RenderBox.prototype.render_ = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var px = 'px';\n var style = this.element_.style;\n style.left = Math.min(startPixel[0], endPixel[0]) + px;\n style.top = Math.min(startPixel[1], endPixel[1]) + px;\n style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n };\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n RenderBox.prototype.setMap = function (map) {\n if (this.map_) {\n this.map_.getOverlayContainer().removeChild(this.element_);\n var style = this.element_.style;\n style.left = 'inherit';\n style.top = 'inherit';\n style.width = 'inherit';\n style.height = 'inherit';\n }\n this.map_ = map;\n if (this.map_) {\n this.map_.getOverlayContainer().appendChild(this.element_);\n }\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n */\n RenderBox.prototype.setPixels = function (startPixel, endPixel) {\n this.startPixel_ = startPixel;\n this.endPixel_ = endPixel;\n this.createOrUpdateGeometry();\n this.render_();\n };\n /**\n * Creates or updates the cached geometry.\n */\n RenderBox.prototype.createOrUpdateGeometry = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var pixels = [\n startPixel,\n [startPixel[0], endPixel[1]],\n endPixel,\n [endPixel[0], startPixel[1]]\n ];\n var coordinates = pixels.map(this.map_.getCoordinateFromPixelInternal, this.map_);\n // close the polygon\n coordinates[4] = coordinates[0].slice();\n if (!this.geometry_) {\n this.geometry_ = new Polygon([coordinates]);\n }\n else {\n this.geometry_.setCoordinates([coordinates]);\n }\n };\n /**\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n */\n RenderBox.prototype.getGeometry = function () {\n return this.geometry_;\n };\n return RenderBox;\n}(Disposable));\nexport default RenderBox;\n//# sourceMappingURL=Box.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport { mouseActionButton } from '../events/condition.js';\nimport { VOID } from '../functions.js';\nimport PointerInteraction from './Pointer.js';\nimport RenderBox from '../render/Box.js';\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default)} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n/**\n * @enum {string}\n */\nvar DragBoxEventType = {\n /**\n * Triggered upon drag box start.\n * @event DragBoxEvent#boxstart\n * @api\n */\n BOXSTART: 'boxstart',\n /**\n * Triggered on drag when box is active.\n * @event DragBoxEvent#boxdrag\n * @api\n */\n BOXDRAG: 'boxdrag',\n /**\n * Triggered upon drag box end.\n * @event DragBoxEvent#boxend\n * @api\n */\n BOXEND: 'boxend'\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nvar DragBoxEvent = /** @class */ (function (_super) {\n __extends(DragBoxEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n */\n function DragBoxEvent(type, coordinate, mapBrowserEvent) {\n var _this = _super.call(this, type) || this;\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n _this.coordinate = coordinate;\n /**\n * @const\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n _this.mapBrowserEvent = mapBrowserEvent;\n return _this;\n }\n return DragBoxEvent;\n}(Event));\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nvar DragBox = /** @class */ (function (_super) {\n __extends(DragBox, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragBox(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"../render/Box.js\").default}\n * @private\n */\n _this.box_ = new RenderBox(options.className || 'ol-dragbox');\n /**\n * @type {number}\n * @private\n */\n _this.minArea_ = options.minArea !== undefined ? options.minArea : 64;\n /**\n * Function to execute just before `onboxend` is fired\n * @type {function(this:DragBox, import(\"../MapBrowserEvent.js\").default): void}\n * @private\n */\n _this.onBoxEnd_ = options.onBoxEnd ? options.onBoxEnd : VOID;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : mouseActionButton;\n /**\n * @private\n * @type {EndCondition}\n */\n _this.boxEndCondition_ = options.boxEndCondition ?\n options.boxEndCondition : _this.defaultBoxEndCondition;\n return _this;\n }\n /**\n * The default condition for determining whether the boxend event\n * should fire.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n * leading to the box end.\n * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n * @return {boolean} Whether or not the boxend condition should be fired.\n */\n DragBox.prototype.defaultBoxEndCondition = function (mapBrowserEvent, startPixel, endPixel) {\n var width = endPixel[0] - startPixel[0];\n var height = endPixel[1] - startPixel[1];\n return width * width + height * height >= this.minArea_;\n };\n /**\n * Returns geometry of last drawn box.\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n * @api\n */\n DragBox.prototype.getGeometry = function () {\n return this.box_.getGeometry();\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleDragEvent = function (mapBrowserEvent) {\n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXDRAG, mapBrowserEvent.coordinate, mapBrowserEvent));\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleUpEvent = function (mapBrowserEvent) {\n this.box_.setMap(null);\n if (this.boxEndCondition_(mapBrowserEvent, this.startPixel_, mapBrowserEvent.pixel)) {\n this.onBoxEnd_(mapBrowserEvent);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXEND, mapBrowserEvent.coordinate, mapBrowserEvent));\n }\n return false;\n };\n /**\n * @inheritDoc\n */\n DragBox.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.condition_(mapBrowserEvent)) {\n this.startPixel_ = mapBrowserEvent.pixel;\n this.box_.setMap(mapBrowserEvent.map);\n this.box_.setPixels(this.startPixel_, this.startPixel_);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXSTART, mapBrowserEvent.coordinate, mapBrowserEvent));\n return true;\n }\n else {\n return false;\n }\n };\n return DragBox;\n}(PointerInteraction));\nexport default DragBox;\n//# sourceMappingURL=DragBox.js.map","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport { VOID } from '../functions.js';\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport { removeNode } from '../dom.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = options.element ? options.element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n /**\n * @private\n * @type {function(import(\"../MapEvent.js\").default): void}\n */\n _this.render_ = options.render ? options.render : VOID;\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * @inheritDoc\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) {\n this.render_.call(this, mapEvent);\n };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n//# sourceMappingURL=ViewProperty.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"tile\":\"\",\"outlined\":\"\"}},[_c('MyMap',{attrs:{\"content\":_vm.content,\"setActiveWhenLoaded\":true}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Objects.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Objects.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Objects.vue?vue&type=template&id=44fed4b0&scoped=true&\"\nimport script from \"./Objects.vue?vue&type=script&lang=js&\"\nexport * from \"./Objects.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Objects.vue?vue&type=style&index=0&id=44fed4b0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44fed4b0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard})\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerAttributes.vue?vue&type=style&index=0&id=e37f168e&scoped=true&lang=css&\"","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"map\",staticClass:\"map-cont\"},[(_vm.loading)?[_c('v-progress-circular',{staticClass:\"ma-2\",attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"size\":30,\"width\":\"2\"}})]:_vm._e(),(_vm.layersLoadingCounter)?[_c('v-progress-linear',{staticClass:\"layer-loading-indicator\",attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"height\":\"2\"}})]:_vm._e(),(_vm.map)?_c('MapPopup',{attrs:{\"map\":_vm.map}}):_vm._e(),_c('MapTooltip',{ref:\"tooltip\"})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n var delay = Date.now() - this.delay_;\n var lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n };\n /**\n * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragPan\n */\nimport { scale as scaleCoordinate, rotate as rotateCoordinate } from '../coordinate.js';\nimport { easeOut } from '../easing.js';\nimport { noModifierKeys, primaryAction, focus } from '../events/condition.js';\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~noModifierKeys} and {@link module:ol/events/condition~primaryAction}.\n * In addition, if there is a `tabindex` attribute on the map element,\n * {@link module:ol/events/condition~focus} will also be applied.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nvar DragPan = /** @class */ (function (_super) {\n __extends(DragPan, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragPan(opt_options) {\n var _this = _super.call(this, {\n stopDown: FALSE\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../Kinetic.js\").default|undefined}\n */\n _this.kinetic_ = options.kinetic;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.lastCentroid = null;\n /**\n * @type {number}\n */\n _this.lastPointersCount_;\n /**\n * @type {boolean}\n */\n _this.panning_ = false;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : defaultCondition;\n /**\n * @private\n * @type {boolean}\n */\n _this.noKinetic_ = false;\n return _this;\n }\n /**\n * @private\n * @param {import(\"../MapBrowserEvent\").default} mapBrowserEvent Event.\n * @return {boolean} Condition passes.\n */\n DragPan.prototype.conditionInternal_ = function (mapBrowserEvent) {\n var pass = true;\n if (mapBrowserEvent.map.getTargetElement().hasAttribute('tabindex')) {\n pass = focus(mapBrowserEvent);\n }\n return pass && this.condition_(mapBrowserEvent);\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!this.panning_) {\n this.panning_ = true;\n this.getMap().getView().beginInteraction();\n }\n var targetPointers = this.targetPointers;\n var centroid = centroidFromPointers(targetPointers);\n if (targetPointers.length == this.lastPointersCount_) {\n if (this.kinetic_) {\n this.kinetic_.update(centroid[0], centroid[1]);\n }\n if (this.lastCentroid) {\n var delta = [\n this.lastCentroid[0] - centroid[0],\n centroid[1] - this.lastCentroid[1]\n ];\n var map = mapBrowserEvent.map;\n var view = map.getView();\n scaleCoordinate(delta, view.getResolution());\n rotateCoordinate(delta, view.getRotation());\n view.adjustCenterInternal(delta);\n }\n }\n else if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger down, tiny drag, second finger down\n this.kinetic_.begin();\n }\n this.lastCentroid = centroid;\n this.lastPointersCount_ = targetPointers.length;\n mapBrowserEvent.originalEvent.preventDefault();\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleUpEvent = function (mapBrowserEvent) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (this.targetPointers.length === 0) {\n if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n var distance = this.kinetic_.getDistance();\n var angle = this.kinetic_.getAngle();\n var center = view.getCenterInternal();\n var centerpx = map.getPixelFromCoordinateInternal(center);\n var dest = map.getCoordinateFromPixelInternal([\n centerpx[0] - distance * Math.cos(angle),\n centerpx[1] - distance * Math.sin(angle)\n ]);\n view.animateInternal({\n center: view.getConstrainedCenter(dest),\n duration: 500,\n easing: easeOut\n });\n }\n if (this.panning_) {\n this.panning_ = false;\n view.endInteraction();\n }\n return false;\n }\n else {\n if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger up, tiny drag, second finger up\n this.kinetic_.begin();\n }\n this.lastCentroid = null;\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n DragPan.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length > 0 && this.conditionInternal_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n this.lastCentroid = null;\n // stop any current animation\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n if (this.kinetic_) {\n this.kinetic_.begin();\n }\n // No kinetic as soon as more than one pointer on the screen is\n // detected. This is to prevent nasty pans after pinch.\n this.noKinetic_ = this.targetPointers.length > 1;\n return true;\n }\n else {\n return false;\n }\n };\n return DragPan;\n}(PointerInteraction));\n/**\n * @param {import(\"../MapBrowserPointerEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\nfunction defaultCondition(mapBrowserEvent) {\n return noModifierKeys(mapBrowserEvent) && primaryAction(mapBrowserEvent);\n}\nexport default DragPan;\n//# sourceMappingURL=DragPan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DragRotate\n */\nimport { disable } from '../rotationconstraint.js';\nimport { altShiftKeysOnly, mouseOnly, mouseActionButton } from '../events/condition.js';\nimport { FALSE } from '../functions.js';\nimport PointerInteraction from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition~altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nvar DragRotate = /** @class */ (function (_super) {\n __extends(DragRotate, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DragRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n stopDown: FALSE\n }) || this;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n var size = map.getSize();\n var offset = mapBrowserEvent.pixel;\n var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n if (this.lastAngle_ !== undefined) {\n var delta = theta - this.lastAngle_;\n view.adjustRotationInternal(-delta);\n }\n this.lastAngle_ = theta;\n };\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return true;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n };\n /**\n * @inheritDoc\n */\n DragRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return false;\n }\n if (mouseActionButton(mapBrowserEvent) && this.condition_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n map.getView().beginInteraction();\n this.lastAngle_ = undefined;\n return true;\n }\n else {\n return false;\n }\n };\n return DragRotate;\n}(PointerInteraction));\nexport default DragRotate;\n//# sourceMappingURL=DragRotate.js.map","/**\n * @module ol/events/KeyCode\n */\n/**\n * @enum {number}\n * @const\n */\nexport default {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\n//# sourceMappingURL=KeyCode.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/KeyboardPan\n */\nimport { rotate as rotateCoordinate } from '../coordinate.js';\nimport EventType from '../events/EventType.js';\nimport KeyCode from '../events/KeyCode.js';\nimport { noModifierKeys, targetNotEditable } from '../events/condition.js';\nimport Interaction, { pan } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~noModifierKeys} and\n * {@link module:ol/events/condition~targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nvar KeyboardPan = /** @class */ (function (_super) {\n __extends(KeyboardPan, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function KeyboardPan(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options || {};\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n _this.defaultCondition_ = function (mapBrowserEvent) {\n return noModifierKeys(mapBrowserEvent) &&\n targetNotEditable(mapBrowserEvent);\n };\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition !== undefined ?\n options.condition : _this.defaultCondition_;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 100;\n /**\n * @private\n * @type {number}\n */\n _this.pixelDelta_ = options.pixelDelta !== undefined ?\n options.pixelDelta : 128;\n return _this;\n }\n return KeyboardPan;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n * pressed).\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardPan}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var keyCode = keyEvent.keyCode;\n if (this.condition_(mapBrowserEvent) &&\n (keyCode == KeyCode.DOWN ||\n keyCode == KeyCode.LEFT ||\n keyCode == KeyCode.RIGHT ||\n keyCode == KeyCode.UP)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n var deltaX = 0, deltaY = 0;\n if (keyCode == KeyCode.DOWN) {\n deltaY = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.LEFT) {\n deltaX = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.RIGHT) {\n deltaX = mapUnitsDelta;\n }\n else {\n deltaY = mapUnitsDelta;\n }\n var delta = [deltaX, deltaY];\n rotateCoordinate(delta, view.getRotation());\n pan(view, delta, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n}\nexport default KeyboardPan;\n//# sourceMappingURL=KeyboardPan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/PinchRotate\n */\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\nimport { disable } from '../rotationconstraint.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchRotate = /** @class */ (function (_super) {\n __extends(PinchRotate, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PinchRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.rotating_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.rotationDelta_ = 0.0;\n /**\n * @private\n * @type {number}\n */\n _this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n var rotationDelta = 0.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n // angle between touches\n var angle = Math.atan2(touch1.clientY - touch0.clientY, touch1.clientX - touch0.clientX);\n if (this.lastAngle_ !== undefined) {\n var delta = angle - this.lastAngle_;\n this.rotationDelta_ += delta;\n if (!this.rotating_ &&\n Math.abs(this.rotationDelta_) > this.threshold_) {\n this.rotating_ = true;\n }\n rotationDelta = delta;\n }\n this.lastAngle_ = angle;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n // rotate anchor point.\n // FIXME: should be the intersection point between the lines:\n // touch0,touch1 and previousTouch0,previousTouch1\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // rotate\n if (this.rotating_) {\n map.render();\n view.adjustRotationInternal(rotationDelta, this.anchor_);\n }\n };\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n PinchRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastAngle_ = undefined;\n this.rotating_ = false;\n this.rotationDelta_ = 0.0;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchRotate;\n}(PointerInteraction));\nexport default PinchRotate;\n//# sourceMappingURL=PinchRotate.js.map","/**\n * @module ol/interaction\n */\nimport Collection from './Collection.js';\nimport Kinetic from './Kinetic.js';\nimport DoubleClickZoom from './interaction/DoubleClickZoom.js';\nimport DragPan from './interaction/DragPan.js';\nimport DragRotate from './interaction/DragRotate.js';\nimport DragZoom from './interaction/DragZoom.js';\nimport KeyboardPan from './interaction/KeyboardPan.js';\nimport KeyboardZoom from './interaction/KeyboardZoom.js';\nimport MouseWheelZoom from './interaction/MouseWheelZoom.js';\nimport PinchRotate from './interaction/PinchRotate.js';\nimport PinchZoom from './interaction/PinchZoom.js';\nimport { focus } from './events/condition.js';\nexport { default as DoubleClickZoom } from './interaction/DoubleClickZoom.js';\nexport { default as DragAndDrop } from './interaction/DragAndDrop.js';\nexport { default as DragBox } from './interaction/DragBox.js';\nexport { default as DragPan } from './interaction/DragPan.js';\nexport { default as DragRotate } from './interaction/DragRotate.js';\nexport { default as DragRotateAndZoom } from './interaction/DragRotateAndZoom.js';\nexport { default as DragZoom } from './interaction/DragZoom.js';\nexport { default as Draw } from './interaction/Draw.js';\nexport { default as Extent } from './interaction/Extent.js';\nexport { default as Interaction } from './interaction/Interaction.js';\nexport { default as KeyboardPan } from './interaction/KeyboardPan.js';\nexport { default as KeyboardZoom } from './interaction/KeyboardZoom.js';\nexport { default as Modify } from './interaction/Modify.js';\nexport { default as MouseWheelZoom } from './interaction/MouseWheelZoom.js';\nexport { default as PinchRotate } from './interaction/PinchRotate.js';\nexport { default as PinchZoom } from './interaction/PinchZoom.js';\nexport { default as Pointer } from './interaction/Pointer.js';\nexport { default as Select } from './interaction/Select.js';\nexport { default as Snap } from './interaction/Snap.js';\nexport { default as Translate } from './interaction/Translate.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed. If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction} instances and insert\n * them into a {@link module:ol/Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * * {@link module:ol/interaction/DragRotate~DragRotate}\n * * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * * {@link module:ol/interaction/DragPan~DragPan}\n * * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions=} opt_options Defaults options.\n * @return {import(\"./Collection.js\").default}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var interactions = new Collection();\n var kinetic = new Kinetic(-0.005, 0.05, 100);\n var altShiftDragRotate = options.altShiftDragRotate !== undefined ?\n options.altShiftDragRotate : true;\n if (altShiftDragRotate) {\n interactions.push(new DragRotate());\n }\n var doubleClickZoom = options.doubleClickZoom !== undefined ?\n options.doubleClickZoom : true;\n if (doubleClickZoom) {\n interactions.push(new DoubleClickZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration\n }));\n }\n var dragPan = options.dragPan !== undefined ? options.dragPan : true;\n if (dragPan) {\n interactions.push(new DragPan({\n condition: options.onFocusOnly ? focus : undefined,\n kinetic: kinetic\n }));\n }\n var pinchRotate = options.pinchRotate !== undefined ? options.pinchRotate :\n true;\n if (pinchRotate) {\n interactions.push(new PinchRotate());\n }\n var pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n if (pinchZoom) {\n interactions.push(new PinchZoom({\n duration: options.zoomDuration\n }));\n }\n var keyboard = options.keyboard !== undefined ? options.keyboard : true;\n if (keyboard) {\n interactions.push(new KeyboardPan());\n interactions.push(new KeyboardZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration\n }));\n }\n var mouseWheelZoom = options.mouseWheelZoom !== undefined ?\n options.mouseWheelZoom : true;\n if (mouseWheelZoom) {\n interactions.push(new MouseWheelZoom({\n condition: options.onFocusOnly ? focus : undefined,\n duration: options.zoomDuration\n }));\n }\n var shiftDragZoom = options.shiftDragZoom !== undefined ?\n options.shiftDragZoom : true;\n if (shiftDragZoom) {\n interactions.push(new DragZoom({\n duration: options.zoomDuration\n }));\n }\n return interactions;\n}\n//# sourceMappingURL=interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Map\n */\nimport PluggableMap from './PluggableMap.js';\nimport { defaults as defaultControls } from './control.js';\nimport { defaults as defaultInteractions } from './interaction.js';\nimport { assign } from './obj.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map';\n * import View from 'ol/View';\n * import TileLayer from 'ol/layer/Tile';\n * import OSM from 'ol/source/OSM';\n *\n * var map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM()\n * })\n * ],\n * target: 'map'\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~Group}\n * is a subclass of {@link module:ol/layer/Base}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @api\n */\nvar Map = /** @class */ (function (_super) {\n __extends(Map, _super);\n /**\n * @param {import(\"./PluggableMap.js\").MapOptions} options Map options.\n */\n function Map(options) {\n var _this = this;\n options = assign({}, options);\n if (!options.controls) {\n options.controls = defaultControls();\n }\n if (!options.interactions) {\n options.interactions = defaultInteractions();\n }\n _this = _super.call(this, options) || this;\n return _this;\n }\n Map.prototype.createRenderer = function () {\n return new CompositeMapRenderer(this);\n };\n return Map;\n}(PluggableMap));\nexport default Map;\n//# sourceMappingURL=Map.js.map","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = wkt.AXIS[i];\n var descriptor = axis[0].toLowerCase();\n if (descriptor.indexOf('north') !== -1) {\n axisOrder += 'n';\n } else if (descriptor.indexOf('south') !== -1) {\n axisOrder += 's';\n } else if (descriptor.indexOf('east') !== -1) {\n axisOrder += 'e';\n } else if (descriptor.indexOf('west') !== -1) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\n var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calulated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_NODATUM} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n\n // Do we need to go through geocentric coordinates?\n if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source.es, source.a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n return geocentricToGeodetic(point, dest.es, dest.a, dest.b);\n\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n case 'w':\n case 'n':\n case 's':\n out[t] = v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function (coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (this.es === undefined || this.es <= 0) {\n throw new Error('incorrect elliptical usage');\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {EPSLN, HALF_PI, FORTPI} from '../constants/values';\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n}\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n}\n\nexport function inverse(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","/**\n * @module ol/proj/proj4\n */\nimport { addCoordinateTransforms, addProjection, addEquivalentProjections, get } from '../proj.js';\nimport { get as getTransform } from './transforms.js';\nimport Projection from './Projection.js';\n/**\n * Make projections defined in proj4 (with `proj4.defs()`) available in\n * OpenLayers.\n *\n * This function should be called whenever changes are made to the proj4\n * registry, e.g. after calling `proj4.defs()`. Existing transforms will not be\n * modified by this function.\n *\n * @param {?} proj4 Proj4.\n * @api\n */\nexport function register(proj4) {\n var projCodes = Object.keys(proj4.defs);\n var len = projCodes.length;\n var i, j;\n for (i = 0; i < len; ++i) {\n var code = projCodes[i];\n if (!get(code)) {\n var def = proj4.defs(code);\n addProjection(new Projection({\n code: code,\n axisOrientation: def.axis,\n metersPerUnit: def.to_meter,\n units: def.units\n }));\n }\n }\n for (i = 0; i < len; ++i) {\n var code1 = projCodes[i];\n var proj1 = get(code1);\n for (j = 0; j < len; ++j) {\n var code2 = projCodes[j];\n var proj2 = get(code2);\n if (!getTransform(code1, code2)) {\n if (proj4.defs[code1] === proj4.defs[code2]) {\n addEquivalentProjections([proj1, proj2]);\n }\n else {\n var transform = proj4(code1, code2);\n addCoordinateTransforms(proj1, proj2, transform.forward, transform.inverse);\n }\n }\n }\n }\n}\n//# sourceMappingURL=proj4.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"tooltip\",staticClass:\"tooltip\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapTooltip.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapTooltip.vue?vue&type=template&id=36135895&scoped=true&\"\nimport script from \"./MapTooltip.vue?vue&type=script&lang=js&\"\nexport * from \"./MapTooltip.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapTooltip.vue?vue&type=style&index=0&id=36135895&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36135895\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.e)?_c('div',{staticClass:\"popup\"},[_c('div',{staticClass:\"header d-flex align-center\"},[_c('span',{staticClass:\"flex-grow-1 pa-2\"},[(_vm.activeItem)?[(_vm.results.length > 1)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":_vm.prev}},[_c('v-icon',{attrs:{\"title\":\"Ankstesnis\"}},[_vm._v(\" mdi-chevron-left \")])],1):_vm._e(),_vm._v(\" \"+_vm._s(_vm.activeItemNumber + 1)+\" iš \"+_vm._s(_vm.results.length)+\" \"),(_vm.results.length > 1)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":_vm.next}},[_c('v-icon',{attrs:{\"title\":\"Kitas\"}},[_vm._v(\" mdi-chevron-right \")])],1):_vm._e()]:[_vm._v(\" Identifikavimo rezultatai \")]],2),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.hidePopup}},[_c('v-icon',{attrs:{\"size\":\"20\",\"title\":\"Uždaryti\"}},[_vm._v(\"mdi-close-circle\")])],1)],1),_c('div',{staticClass:\"pa-2 content\"},[(_vm.loading)?[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"size\":20,\"width\":\"2\"}})]:(_vm.results)?[(_vm.results == 'error')?[_vm._v(\" Atsiprašome, įvyko nenumatyta klaida... \")]:(_vm.activeItem)?[_vm._v(\" Sluoksnis: \"+_vm._s(_vm.activeItem.layer.service.title)+\" \"),(_vm.activeItem.item)?[(_vm.activeItem.item.value)?_c('div',{staticClass:\"body-2\"},[_vm._v(_vm._s(_vm.activeItem.item.value))]):_vm._e(),_c('MapLayerAttributes',{staticClass:\"mt-n2\",attrs:{\"meta\":_vm.activeItem.item}})]:(_vm.activeItem.html)?[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.activeItem.html)}})]:_vm._e()]:[_vm._v(\" Rezultatų nėra \")]]:_vm._e()],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MapPopup.vue?vue&type=template&id=4edad122&scoped=true&\"\nimport script from \"./MapPopup.vue?vue&type=script&lang=js&\"\nexport * from \"./MapPopup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4edad122\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VBtn,VIcon,VProgressCircular})\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MyMap.vue?vue&type=template&id=ad3327f6&scoped=true&\"\nimport script from \"./MyMap.vue?vue&type=script&lang=js&\"\nexport * from \"./MyMap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ad3327f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\ninstallComponents(component, {VProgressCircular,VProgressLinear})\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n};\n//# sourceMappingURL=MapEventType.js.map","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapPopup.vue?vue&type=style&index=0&id=4edad122&scoped=true&lang=css&\"","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAaCAYAAABCfffNAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAABQ9JREFUSEuVVn9MlHUc1n4Hk7ArwMTc7A+jqM3VCJr9QQluggbmgGoo0wGbChZJc7Kc0OaK6TRtCpoKhgjWHedA7jAvftlxcIlg3DHjsIxckC6HQnrt4unzvLzvdSen2bs9e399Pp/n+3x+fN93+rS7H9N9XvPa9157BbkgfO//I+zkay3gfXL9gOAhwSOCIEGwD3jP53xPO9rfaTF+xDTSgj+sBg6Rs04QJogQzFLPvOdzvich7X3JAirSCB6Ut4/SOSYmZn5aWtrGlStX1q9Zs+ZSdna2Z/Xq1b9kZmY2pqamFkVFRb0sdrMFT6hk9KO/piqgAhpwVaEpKSlv5+fnY9eundB/XYuWllOwfteChno9vjiwFyUlW7Bu7VokJibmiv08VWGo6h+QiCoolSsJTU9Pf6+kpFgCGuF09uKH82fRfdYGm7UFLc1mmBvrYKyrxp7PtuPDwgIkJydvFb/5gqfor8ZhPG+zaGliTkOooLh4Kyynm3DW3oEuWzu6OttRXl4OPufZZBISQzVqaw7j4IHPsWlTIeLj4zeoRKwZ68R4TJtyaCqCWIO8vDwY9MfxfZd1kkAFCTSYGg04YTwmSo+LKgMqDpVh/fp1mDt3boKaOtaIaacaLwnbMIRFLi39RAKf8SM42aD3U1JnOArLNw1oazVLnSzosFpQWroNixcv3i5xogVsBqphXOWgJPa7jl1UcXi/5L5VJWlTziaTAVw908Rrs9mITlsrznVb0Xfejn5nt6ivhtSyTeLEqGrY3oyrHPer0sLYprU1lUoKOs40K0VmUK0eWk1I3N3dAXtXOy79fAG/Dg2g55wNWVlZwxLrNQGbgHPElHlJOMkRnIPaY4eg/+pLpbDK6lX4ErlcfRgcdGJgwIFrf/yO8fHruHplCPSXOK8Lnmc8AeP6kczioO0v34XaYwdRp69SCCyWk+jt6fRT45Lgg4P9uHlzDBMTHng8blweuohVq1aNSMRFKgm7bApJBCd5z+5SnKg7iiZJk9PZA4ejBy6Xw49k4EIfrl27AsCj4NatG1KjdqxYscJ2NyXMXRi3io9lkpvMBukcEwZdTmXFPPumi4GpYJLkbwFQWXmIs1J+p5p4u4t7Efu96sgB6apmCe7ARSHo7LR6Z4TF/zc4SSBqHSgoeB/h4eGZQhKwuziMypwIZnMv2vJRkcxBPQZ+7MWppnrvpPurmVAIRkZGsGPHDsTFxe0U/zcELwgiBY+pcZXCeyderjmp85YtW/Zp8dYt+NbSiJHhnzB24wr+co9KSLdgMjiP/v5+hSAhIaFG/JJVFc/I+UnBlIlnypS9S8CueFYcizbILny0qgK/Xb6ICc+4l2B0dBRGo1FSVIDY2Nh9Yv+m4FX6qf5T9i5fNcouzLQJnouMjExeunRp9e7dOzE+dlWphdvtRllZGbd4k06ny1cJFtJe9aM/4/jtwhoJ1Wjfk5lyzbxyqBZmZGS0n2k7LZn6E3Z7F1vVLs/fVVNEAtrRnn5M0z1/uLxES5Ys2bZv7x5cHx3GEWlVSSVTlCiIUwnm3AsB1fgq0j5gj8vDOQsWLFi0cWMBXAO92Lx5E6Kjo6niJQFrQALaaSkK+OnVCHyJfDtOFxQU9HROTo58DWuQm5uL4ODgF8WYXcTacbfVOume/lZuJ+L8cP+ZuXz58rcKCz9AUlLSO2r+ucsypXxPu/9FcLsy7ddohnTaK+rKGXyGqkD7FQr08zftH86LEbL35rZnAAAAAElFTkSuQmCC\"","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyMap.vue?vue&type=style&index=0&id=ad3327f6&scoped=true&lang=css&\"","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport { always, focus } from '../events/condition.js';\nimport EventType from '../events/EventType.js';\nimport { DEVICE_PIXEL_RATIO, FIREFOX } from '../has.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport { clamp } from '../math.js';\n/**\n * @enum {string}\n */\nexport var Mode = {\n TRACKPAD: 'trackpad',\n WHEEL: 'wheel'\n};\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition~always}.\n * In addition, if there is a `tabindex` attribute on the map element,\n * {@link module:ol/events/condition~focus} will also be applied.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nvar MouseWheelZoom = /** @class */ (function (_super) {\n __extends(MouseWheelZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function MouseWheelZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n /**\n * @private\n * @type {number}\n */\n _this.totalDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.lastDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @private\n * @type {number}\n */\n _this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n /**\n * @private\n * @type {boolean}\n */\n _this.useAnchor_ = options.useAnchor !== undefined ? options.useAnchor : true;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : always;\n /**\n * @private\n * @type {?import(\"../coordinate.js\").Coordinate}\n */\n _this.lastAnchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.startTime_ = undefined;\n /**\n * @private\n * @type {?}\n */\n _this.timeoutId_;\n /**\n * @private\n * @type {Mode|undefined}\n */\n _this.mode_ = undefined;\n /**\n * Trackpad events separated by this delay will be considered separate\n * interactions.\n * @type {number}\n */\n _this.trackpadEventGap_ = 400;\n /**\n * @type {?}\n */\n _this.trackpadTimeoutId_;\n /**\n * The number of delta values per zoom level\n * @private\n * @type {number}\n */\n _this.deltaPerZoom_ = 300;\n return _this;\n }\n /**\n * @private\n * @param {import(\"../MapBrowserEvent\").default} mapBrowserEvent Event.\n * @return {boolean} Condition passes.\n */\n MouseWheelZoom.prototype.conditionInternal_ = function (mapBrowserEvent) {\n var pass = true;\n if (mapBrowserEvent.map.getTargetElement().hasAttribute('tabindex')) {\n pass = focus(mapBrowserEvent);\n }\n return pass && this.condition_(mapBrowserEvent);\n };\n /**\n * @private\n */\n MouseWheelZoom.prototype.endInteraction_ = function () {\n this.trackpadTimeoutId_ = undefined;\n var view = this.getMap().getView();\n view.endInteraction(undefined, this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0, this.lastAnchor_);\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n * zooms the map.\n * @override\n */\n MouseWheelZoom.prototype.handleEvent = function (mapBrowserEvent) {\n if (!this.conditionInternal_(mapBrowserEvent)) {\n return true;\n }\n var type = mapBrowserEvent.type;\n if (type !== EventType.WHEEL) {\n return true;\n }\n mapBrowserEvent.preventDefault();\n var map = mapBrowserEvent.map;\n var wheelEvent = /** @type {WheelEvent} */ (mapBrowserEvent.originalEvent);\n if (this.useAnchor_) {\n this.lastAnchor_ = mapBrowserEvent.coordinate;\n }\n // Delta normalisation inspired by\n // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n var delta;\n if (mapBrowserEvent.type == EventType.WHEEL) {\n delta = wheelEvent.deltaY;\n if (FIREFOX &&\n wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n delta /= DEVICE_PIXEL_RATIO;\n }\n if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n delta *= 40;\n }\n }\n if (delta === 0) {\n return false;\n }\n else {\n this.lastDelta_ = delta;\n }\n var now = Date.now();\n if (this.startTime_ === undefined) {\n this.startTime_ = now;\n }\n if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n this.mode_ = Math.abs(delta) < 4 ?\n Mode.TRACKPAD :\n Mode.WHEEL;\n }\n var view = map.getView();\n if (this.mode_ === Mode.TRACKPAD && !view.getConstrainResolution()) {\n if (this.trackpadTimeoutId_) {\n clearTimeout(this.trackpadTimeoutId_);\n }\n else {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.beginInteraction();\n }\n this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_);\n view.adjustZoom(-delta / this.deltaPerZoom_, this.lastAnchor_);\n this.startTime_ = now;\n return false;\n }\n this.totalDelta_ += delta;\n var timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n clearTimeout(this.timeoutId_);\n this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, map), timeLeft);\n return false;\n };\n /**\n * @private\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n MouseWheelZoom.prototype.handleWheelZoom_ = function (map) {\n var view = map.getView();\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n var delta = -clamp(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_;\n if (view.getConstrainResolution()) {\n // view has a zoom constraint, zoom by 1\n delta = delta ? delta > 0 ? 1 : -1 : 0;\n }\n zoomByDelta(view, delta, this.lastAnchor_, this.duration_);\n this.mode_ = undefined;\n this.totalDelta_ = 0;\n this.lastAnchor_ = null;\n this.startTime_ = undefined;\n this.timeoutId_ = undefined;\n };\n /**\n * Enable or disable using the mouse's location as an anchor when zooming\n * @param {boolean} useAnchor true to zoom to the mouse's location, false\n * to zoom to the center of the map\n * @api\n */\n MouseWheelZoom.prototype.setMouseAnchor = function (useAnchor) {\n this.useAnchor_ = useAnchor;\n if (!useAnchor) {\n this.lastAnchor_ = null;\n }\n };\n return MouseWheelZoom;\n}(Interaction));\nexport default MouseWheelZoom;\n//# sourceMappingURL=MouseWheelZoom.js.map","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Objects.vue?vue&type=style&index=0&id=44fed4b0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Objects.vue?vue&type=style&index=0&id=44fed4b0&scoped=true&lang=css&\"","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y += -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { linearFindNearest } from './array.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { clamp } from './math.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { VOID } from './functions.js';\nimport { createExtent, none as centerNone } from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport { createSnapToResolutions, createSnapToPower } from './resolutionconstraint.js';\nimport { createSnapToZero, createSnapToN, none as rotationNone, disable } from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { linearFindNearest } from './array.js';\nimport { assert } from './asserts.js';\nimport { add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual } from './coordinate.js';\nimport { inAndOut } from './easing.js';\nimport { getForViewAndSize, getCenter, getHeight, getWidth, isEmpty } from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\nimport { clamp, modulo } from './math.js';\nimport { assign } from './obj.js';\nimport { createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';\nimport Units from './proj/Units.js';\nimport { equals } from './coordinate.js';\nimport { easeOut } from './easing.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean)} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n var rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation))\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size) ? opt_size.slice() : [100, 100];\n this.resolveConstraints(0);\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / logPower) / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n }\n else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent.clone().transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return { constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\nexport default View;\n//# sourceMappingURL=View.js.map","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/\n// Variable to hold current primary touch event identifier.\n// iOS needs this since it does not attribute\n// identifier 0 to primary touch event.\nvar primaryTouchId = null;\n// Variable to hold mouse pointer captures.\nvar mouseCaptureTarget = null;\nif (!(\"PointerEvent\" in window)) {\n // Define {set,release}PointerCapture\n definePointerCapture();\n // Create Pointer polyfill from mouse events only on non-touch device\n if (!(\"TouchEvent\" in window)) {\n addMouseToPointerListener(document, \"mousedown\", \"pointerdown\");\n addMouseToPointerListener(document, \"mousemove\", \"pointermove\");\n addMouseToPointerListener(document, \"mouseup\", \"pointerup\");\n }\n // Define Pointer polyfill from touch events\n addTouchToPointerListener(document, \"touchstart\", \"pointerdown\");\n addTouchToPointerListener(document, \"touchmove\", \"pointermove\");\n addTouchToPointerListener(document, \"touchend\", \"pointerup\");\n}\n// Function defining {set,release}PointerCapture from {set,releas}Capture\nfunction definePointerCapture() {\n Element.prototype.setPointerCapture = Element.prototype.setCapture;\n Element.prototype.releasePointerCapture = Element.prototype.releaseCapture;\n}\n// Function converting a Mouse event to a Pointer event.\nfunction addMouseToPointerListener(target, mouseType, pointerType) {\n target.addEventListener(mouseType, function (mouseEvent) {\n var pointerEvent = new MouseEvent(pointerType, mouseEvent);\n pointerEvent.pointerId = 1;\n pointerEvent.isPrimary = true;\n pointerEvent.pointerType = \"mouse\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n // pressure is 0.5 if a button is holded\n \"buttons\" in mouseEvent && mouseEvent.buttons !== 0\n ? (pointerEvent.pressure = 0.5)\n : (pointerEvent.pressure = 0);\n // if already capturing mouse event, transfer target\n // and don't forget implicit release on mouseup.\n var target = mouseEvent.target;\n if (mouseCaptureTarget !== null) {\n target = mouseCaptureTarget;\n if (mouseType === \"mouseup\") {\n mouseCaptureTarget = null;\n }\n }\n target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n mouseEvent.preventDefault();\n }\n });\n}\n// Function converting a Touch event to a Pointer event.\nfunction addTouchToPointerListener(target, touchType, pointerType) {\n target.addEventListener(touchType, function (touchEvent) {\n var changedTouches = touchEvent.changedTouches;\n var nbTouches = changedTouches.length;\n for (var t = 0; t < nbTouches; t++) {\n var pointerEvent = new CustomEvent(pointerType, {\n bubbles: true,\n cancelable: true\n });\n pointerEvent.ctrlKey = touchEvent.ctrlKey;\n pointerEvent.shiftKey = touchEvent.shiftKey;\n pointerEvent.altKey = touchEvent.altKey;\n pointerEvent.metaKey = touchEvent.metaKey;\n var touch = changedTouches.item(t);\n pointerEvent.clientX = touch.clientX;\n pointerEvent.clientY = touch.clientY;\n pointerEvent.screenX = touch.screenX;\n pointerEvent.screenY = touch.screenY;\n pointerEvent.pageX = touch.pageX;\n pointerEvent.pageY = touch.pageY;\n var rect = touch.target.getBoundingClientRect();\n pointerEvent.offsetX = touch.clientX - rect.left;\n pointerEvent.offsetY = touch.clientY - rect.top;\n pointerEvent.pointerId = 1 + touch.identifier;\n // Default values for standard MouseEvent fields.\n pointerEvent.button = 0;\n pointerEvent.buttons = 1;\n pointerEvent.movementX = 0;\n pointerEvent.movementY = 0;\n pointerEvent.region = null;\n pointerEvent.relatedTarget = null;\n pointerEvent.x = pointerEvent.clientX;\n pointerEvent.y = pointerEvent.clientY;\n // Pointer event details\n pointerEvent.pointerType = \"touch\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n pointerEvent.pressure = 1;\n // First touch is the primary pointer event.\n if (touchType === \"touchstart\" && primaryTouchId === null) {\n primaryTouchId = touch.identifier;\n }\n pointerEvent.isPrimary = touch.identifier === primaryTouchId;\n // If first touch ends, reset primary touch id.\n if (touchType === \"touchend\" && pointerEvent.isPrimary) {\n primaryTouchId = null;\n }\n touchEvent.target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n touchEvent.preventDefault();\n }\n }\n });\n}\n//# sourceMappingURL=elm-pep.js.map","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n return DoubleClickZoom;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {DoubleClickZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n//# sourceMappingURL=MapProperty.js.map","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/PinchZoom\n */\nimport { FALSE } from '../functions.js';\nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchZoom = /** @class */ (function (_super) {\n __extends(PinchZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PinchZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 400;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastDistance_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.lastScaleDelta_ = 1;\n return _this;\n }\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleDragEvent = function (mapBrowserEvent) {\n var scaleDelta = 1.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n var dx = touch0.clientX - touch1.clientX;\n var dy = touch0.clientY - touch1.clientY;\n // distance between touches\n var distance = Math.sqrt(dx * dx + dy * dy);\n if (this.lastDistance_ !== undefined) {\n scaleDelta = this.lastDistance_ / distance;\n }\n this.lastDistance_ = distance;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (scaleDelta != 1.0) {\n this.lastScaleDelta_ = scaleDelta;\n }\n // scale anchor point.\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // scale, bypass the resolution constraint\n map.render();\n view.adjustResolutionInternal(scaleDelta, this.anchor_);\n };\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n view.endInteraction(this.duration_, direction);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * @inheritDoc\n */\n PinchZoom.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastDistance_ = undefined;\n this.lastScaleDelta_ = 1;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchZoom;\n}(PointerInteraction));\nexport default PinchZoom;\n//# sourceMappingURL=PinchZoom.js.map","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport 'elm-pep';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\nimport EventType from './events/EventType.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ || this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n };\n /**\n * @inheritDoc\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < (count >> 1)) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return ( /** @type {import(\"./Tile.js\").default} */(element[0]).getKey());\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @inheritDoc\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n}\n//# sourceMappingURL=TileQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport { getUid } from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport { assert } from '../asserts.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getIntersection } from '../extent.js';\nimport BaseLayer from './Base.js';\nimport { assign, clear } from '../obj.js';\nimport SourceState from '../source/State.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers'\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS)));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport RenderEventType from './render/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { assert } from './asserts.js';\nimport { removeNode } from './dom.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';\nimport { TRUE } from './functions.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport { hasArea } from './size.js';\nimport { create as createTransform, apply as applyTransform } from './transform.js';\nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className = 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * @inheritDoc\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE)));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW)));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var target = /** @type {Node} */ (mapBrowserEvent.originalEvent.target);\n if (!mapBrowserEvent.dragging) {\n if (this.overlayContainerStopEvent_.contains(target) || !(document.body.contains(target) || this.viewport_.getRootNode && this.viewport_.getRootNode().contains(target))) {\n // Abort if the event target is a child of the container that doesn't allow\n // event propagation or is no longer in the page. It's possible for the target to no longer\n // be in the page if it has been removed in an event listener, this might happen in a Control\n // that recreates it's content based on user interaction either manually or via a render\n // in something like https://reactjs.org/\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this)\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10)\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map"],"sourceRoot":""}